Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-1


					PAGE	,132								;AN000;
					TITLE	DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;
														;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;; DOS - GRAPHICS Command
				;; (C) Copyright 1988 Microsoft
				;;										;AN000;
				;; File Name:  GRLOAD.ASM							;AN000;
				;; ----------									;AN000;
				;;										;AN000;
				;; Description: 								;AN000;
				;; ------------ 								;AN000;
				;;   This file contains the modules used to load the				;AN000;
				;;   GRAPHICS profile into resident memory.					;AN000;
				;;										;AN000;
				;;   ************* The EGA Dynamic Save Area will be built (by			;AN000;
				;;   **  NOTE	** CHAIN_INTERRUPTS in file GRINST.ASM) over top of these	;AN000;
				;;   ************* modules to avoid having to relocate this save just before	;AN000;
				;;   terminating.  This is safe since the maximum memory used is		;AN000;
				;;   288 bytes and the profile loading modules are MUCH larger than		;AN000;
				;;   this.  So GRLOAD.ASM MUST be linked before GRINST.ASM and after		;AN000;
				;;   GRPRINT.ASM.								;AN000;
				;;										;AN000;
				;;										;AN000;
				;; Documentation Reference:							;AN000;
				;; ------------------------							;AN000;
				;;	 PLACID Functional Specifications					;AN000;
				;;	 OASIS High Level Design						;AN000;
				;;	 OASIS GRAPHICS I1 Overview						;AN000;
				;;										;AN000;
				;; Procedures Contained in This File:						;AN000;
				;; ----------------------------------						;AN000;
				;;	 LOAD_PROFILE - Main module for profile loading 			;AN000;
				;;										;AN000;
				;; Include Files Required:							;AN000;
				;; -----------------------							;AN000;
				;;	 ?????????? - Externals for profile loading modules			;AN000;
				;;										;AN000;
				;; External Procedure References:						;AN000;
				;; ------------------------------						;AN000;
				;;	 None									;AN000;
				;;										;AN000;
				;; Linkage Instructions:							;AN000;
				;; ---------------------							;AN000;
				;;	 Refer to GRAPHICS.ASM							;AN000;
				;;										;AN000;
				;; Change History:								;AN000;
				;; ---------------								;AN000;
				;;										;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 0000				CODE	SEGMENT PUBLIC 'CODE' BYTE     ;;                                       ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-2


								       ;;					;AN000;
					INCLUDE STRUC.INC	       ;;					;AN000;
			     C	;;STRUC--Stucture Macro Library
			     C	;;Optimizing Version 2.30  03/31/87
			     C	
			     C	else	       ;else for if1
			     C	$Pop	$Temp
			     C	;;if	   $Temp ne $NoType
			     C	.xcref $NoConj,$And,$Or,$Short,$Near,$NearToShort,$AndOr,$Temp,$Temp2,$Dist
			     C	.xcref $NoType,$ConjIfType,$IfType,$ElseType,$WhileType,$ConjWhileType
			     C	.xcref $RepeatType,$ConjUntilType,$ForType,$ConjLeaveType,jncxz
			     C	.xcref $SelectType,$WhenType,$OtherwiseType,$ConjWhenType
			     C	.xcref jeq,jgt,jlt,jneq,jngt,jnlt,jnna,jnnae,jnnb,jnnbe,jnnc,jnncxz
			     C	.xcref jnne,jnng,jnnge,jnnl,jnnle,jnno,jnnp,jnns,jnnz,jnpe,jnpo,$BuildJump
			     C	.xcref $GetConj,$GetDist,$Poke,$Peek,$Push,$Pop,$Label,$CondJump,$CondLoop,$Test
			     C	.xcref $TopTest,$leave2,$until2,$StrucError,j,jn,jand,jnand,jnnand
			     C	.xcref jnnonzero,jnonzero,jnzero,jzero
			     C	.xcref $st,$sn,$OrFound,$LoopEnd,$LeaveFound,$DefDist
			     C	.xcref $LastLabel,$LastLabelOrg,$EquateLabel,$TraceLabel,$CondJump2,$ncxz
			     C	endif
			     C	
			     C	
 = 0000                      C	$st	= 0
 = 0000                      C	$sn	= 0
 = 0000                      C	$OrFound = 0
 = 0000                      C	$LoopEnd = 0
 = 0000                      C	$LeaveFound = 0
 =-0001                      C	$LastLabel = -1
 = 0000                      C	$LastLabelOrg = $
 = 0003                      C	$DefDist= $Short
			     C	$Push	%$NoType
					INCLUDE GRINST.EXT	       ;; Bring in external declarations	;AN000;
			     C	.LIST										;AN000;
								       ;;  for transient command processing	;AN000;
					INCLUDE GRSHAR.STR	       ;;					;AN000;
			     C	.LIST										;AN000;
			     C						;					;AN000;
			     C	SHARED_DATA_AREA_STR STRUC		;					;AN000;
 0000  0000                  C	  SD_TOTAL_SIZE       DW    ?		; Total # bytes ALLOCATED to the	;AN000;
			     C						;  the Shared Data Area.		;AN000;
			     C	  ;;;;;;;;;;;; Environment ;;;;;;;;;;;;;;					;AN000;
 0002  00                    C	  SWITCHES	      DB    0		; Command line switches 		;AN000;
 0003  00                    C	  HARDWARE_CONFIG     DB    ?		; Type of video hardware		;AN000;
 0004  00                    C	  PRINTER_TYPE	      DB    ?		; Type of printer attached		;AN000;
			     C						;					;AN000;
			     C	  ;;;;;;;;;;;; Profile Data ;;;;;;;;;;;;;					;AN000;
 0005  00                    C	  DARKADJUST_VALUE    DB    0		; Darkness adjustment value		;AN000;
			     C						;					;AN000;
 0006  00                    C	  NUM_PRT_COLOR       DB    ?		; Number of print colors		;AN000;
 0007  0000                  C	  COLORPRINT_PTR      DW    ?		; Pointer to COLORPRINT info		;AN000;
			     C						;					;AN000;
 0009  00                    C	  NUM_PRT_BANDS       DB    ?		; Number of selectable print bands	;AN000;
 000A  0000                  C	  COLORSELECT_PTR     DW    ?		; Pointer to COLORSELECT info		;AN000;
			     C						;  bands				;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-3


 000C  0000                  C	  DISPLAYMODE_PTR     DW  ?		; Pointer to start of DISPLAYMODE	;AN000;
			     C						;  info 				;AN000;
 000E                        C	SHARED_DATA_AREA_STR ENDS	       ;;					;AN000;
			     C											;AN000;
			     C											;AN000;
			     C	;;;;;;;;; COLORSELECT info structure ;;;;					;AN000;
			     C						;					;AN000;
			     C	COLORSELECT_STR  STRUC			;					;AN000;
 0000  00                    C	  NUM_SELECT_ESC    DB	?		; number of escape bytes to		;AN000;
			     C						;  select this band			;AN000;
 0001  00                    C	  SELECT_ESC	    DB	?		; Escape bytes to select band		;AN000;
 0002                        C	COLORSELECT_STR  ENDS		       ;;					;AN000;
			     C											;AN000;
			     C											;AN000;
			     C											;AN000;
			     C	;;;;;;;;; COLORPRINT info structure ;;;;;					;AN000;
			     C						;					;AN000;
			     C	COLORPRINT_STR	STRUC			;					;AN000;
 0000  00                    C	  RED		    DB	?		; RGB value				;AN000;
 0001  00                    C	  GREEN 	    DB	?		;					;AN000;
 0002  00                    C	  BLUE		    DB	?		;					;AN000;
			     C						; Bit mask indicating color		;AN000;
 0003  00                    C	  SELECT_MASK	    DB	?		;  bands required:			;AN000;
			     C						;  Bit 0: first band in table		;AN000;
 0004                        C	COLORPRINT_STR	ENDS		       ;;  Bit 1: second band...		;AN000;
			     C											;AN000;
			     C											;AN000;
			     C	;;;;;;;;; DISPLAYMODE info structure ;;;;					;AN000;
			     C						; A new block is built when a		;AN000;
			     C	DISPLAYMODE_STR STRUC			;  DISPLAYMODE statement is		;AN000;
			     C						;   found				;AN000;
 0000  0000                  C	  NEXT_DISP_MODE    DW	?		; Pointer to info for next		;AN000;
			     C						;  display mode; -1 if last		;AN000;
 0002  00                    C	  NUM_DISP_MODE     DB	?		; Number of display modes for		;AN000;
 0003  0000                  C	  DISP_MODE_LIST_PTR DW ?		;  this record - list of them		;AN000;
			     C						;					;AN000;
 0005  00                    C	  BOX_WIDTH	    DB	?		; Print box size - horizontal		;AN000;
 0006  00                    C	  BOX_HEIGHT	    DB	?		; Print box size - vertical		;AN000;
			     C						;					;AN000;
 0007  00                    C	  NUM_PATTERNS	    DB	?		; Number of grey patterns for		;AN000;
			     C						;  this box size			;AN000;
 0008  0000                  C	  PATTERN_TAB_PTR   DW	?		; pointer to grey pattern table 	;AN000;
			     C						;  for this display mode		;AN000;
 000A  00                    C	  NUM_GRAPHICS_ESC  DB	?		; # of escape byte for GRAPHICS 	;AN000;
 000B  0000                  C	  GRAPHICS_ESC_PTR  DW	?		; pointer to GRAPHICS escape		;AN000;
 000D  0000                  C	  LOW_BYT_COUNT_PTR DW	?		; pointers to number of bytes sent	;AN000;
 000F  0000                  C	  HGH_BYT_COUNT_PTR DW	?		;  to the printer (1 word holds this	;AN000;
			     C						;    number but, must be send 1 byte	;AN000;
			     C						;     at a time).			;AN000;
 0011  00                    C	  NUM_SETUP_ESC     DB	?		; # of escape byte for SETUP		;AN000;
 0012  0000                  C	  SETUP_ESC_PTR     DW	?		; pointer to SETUP escape seq		;AN000;
			     C						;  for this display mode		;AN000;
 0014  00                    C	  NUM_RESTORE_ESC   DB	?		; # of escape byte for RESTORE		;AN000;
 0015  0000                  C	  RESTORE_ESC_PTR   DW	?		; pointer to RESTORE escape		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-4


			     C						;  seq for this display mode		;AN000;
 0017  00                    C	  PRINT_OPTIONS     DB	?		;					;AN000;
			     C						;					;AN000;
 0018                        C	DISPLAYMODE_STR ENDS		       ;;					;AN000;
			     C											;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
			     C	;;										;AN000;
			     C	;; SHARED DATA AREA  -	EQUATES 						;AN000;
			     C	;;										;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
			     C											;AN000;
			     C	; SWITCHES	      DB    <bit mask>	; Command line switches:		;AN000;
 = 0001                      C	    REVERSE_SW		EQU 1		;   /R					;AN000;
 = 0002                      C	    BACKGROUND_SW	EQU 2		;   /B					;AN000;
			     C						;					;AN000;
			     C	; HARDWARE_CONFIG     DB    <bit mask>	; Type of video hardware		;AN000;
 = 0001                      C	    PALACE		EQU 1		;  attached				;AN000;
 = 0002                      C	    ROUNDUP		EQU 2		; PS 2 MODEL 50 60 AND 80		;AN000;
 = 0004                      C	    EGA 		EQU 4		; Enhance Graphics Adapter		;AN000;
 = 0008                      C	    PC_CONVERTIBLE	EQU 8		; PC Convertible LCD			;AN000;
 = 0010                      C	    OLD_ADAPTER 	EQU 16		; Color Graph. Adater or MONO		;AN000;
			     C						;					;AN000;
			     C	; PRINTER_TYPE	      DB    <bit mask>	; Type of printer attached		;AN000;
 = 0001                      C	    COLOR		EQU 1		;					;AN000;
 = 0002                      C	    BLACK_WHITE 	EQU 2		;					;AN000;
			     C						;					;AN000;
			     C	; PRINT_OPTIONS       DB  <bit mask>	;					;AN000;
 = 0001                      C	    ROTATE		EQU 1		;					;AN000;
					INCLUDE GRPARSE.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRLOAD2.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRLOAD3.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRMSG.EQU	       ;;					;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
			     C	;; DOS - GRAPHICS Command
			     C	;; (c) Copyright 1988 Microsoft
			     C	;;										;AN000;
			     C	;; File Name:  GRMSG.EQU							;AN000;
			     C	;; ----------									;AN000;
			     C	;;										;AN000;
			     C	;; DOS GRAPHICS Command	-  Message number AN000;equates
			     C	;;										;AN000;
			     C	;; Description: 								;AN000;
			     C	;; ------------ 								;AN000;
			     C	;; This file contains the numbers assigned to the error messages		;AN000;
			     C	;; issued by GRAPHICS.COM							;AN000;
			     C	;;										;AN000;
			     C	;; These messages are defined in GRAPHICS.MSG					;AN000;
			     C	;; (The message skeleton file for GRAPHICS.COM) 				;AN000;
			     C	;;										;AN000;
			     C	;; This file also contains equates for the error codes returned by		;AN000;
			     C	;; the DOS parser.								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-5


			     C	;;										;AN000;
			     C	;; Documentation Reference:							;AN000;
			     C	;; ------------------------							;AN000;
			     C	;;										;AN000;
			     C	;;	 DOS 3.3 Message Retriever Interface Supplement. 			;AN000;
			     C	;;										;AN000;
			     C	;; External Procedure References:						;AN000;
			     C	;; ------------------------------						;AN000;
			     C	;;	 FROM FILE  GRINST.ASM: 						;AN000;
			     C	;;	      GRAPHICS_INSTALL - Main module for GRAPHICS install.		;AN000;
			     C	;;	      PARSE_PARMS      - Parse the command line parameters.		;AN000;
			     C	;;	 FROM FILE GRLOAD.ASM AND GRLOAD2.ASM					;AN000;
			     C	;;	      All modules							;AN000;
			     C	;;										;AN000;
			     C	;; Change History:								;AN000;
			     C	;; ---------------								;AN000;
			     C	;;										;AN000;
			     C	;;										;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
			     C											;AN000;
			     C	;-------------------------------------------------------------------------------;AN000;
			     C	; GRAPHICS MESSAGE NUMBERS							;AN000;
			     C	;-------------------------------------------------------------------------------;AN000;
			     C											;AN000;
			     C	; Class A messages:								;AN000;
 = 0001                      C	INCORRECT_DOS EQU 1		; 'Incorrect DOS version'                       ;AN000;
 = 0002                      C	NO_MEMORY     EQU 2		; 'Insufficient memory'                         ;AN000;
			     C											;AN000;
			     C	; Class B messages: (Profile loading)						;AN000;
 = 0009                      C	PROFILE_NOT_FOUND EQU  9	; 'Cannot find GRAPHICS profile'                ;AN000;
 = 000A                      C	MISSING_STMT	  EQU 10	; 'Required profile statement missing           ;AN000;
			     C					;   before line %1'                             ;AN000;
 = 000B                      C	INVALID_STMT	  EQU 11	; 'Invalid profile statement on line %1'        ;AN000;
 = 000C                      C	OUT_SEQ_STMT	  EQU 12	; 'Profile statement out of sequence on line %1';AN000;
 = 000D                      C	FILE_ERRORS	  EQU 13	; 'Error reading GRAPHICS profile'              ;AN000;
 = 000E                      C	SYNTAX_ERRORS	  EQU 14	; 'Syntax errors in GRAPHICS profile'           ;AN000;
 = 000F                      C	INVALID_PB	  EQU 15	; 'PRINTBOX id not in GRAPHICS profile'         ;AN000;
 = 0010                      C	INVALID_PRT	  EQU 16	; 'Printer type not in GRAPHICS profile'        ;AN000;
			     C											;AN000;
			     C	; Class C messages: (Command line parsing)					;AN000;
 = 0003                      C	TOO_MANY_PARMS	    EQU 3	; 'Too many parameters'                         ;AN000;
 = 0004                      C	VALUE_NOT_ALLOWED   EQU 4	; 'Parameter value not allowed'                 ;AN000;
 = 0005                      C	INVALID_PARM	    EQU 5	; 'Invalid parameter %1'                        ;AN000;
 = 0006                      C	INVALID_COMBINATION EQU 6	; 'Invalid parameter combination'               ;AN000;
 = 0007                      C	DUPLICATE_PARM	    EQU 7	; 'Duplicate parameters not allowed'            ;AN000;
 = 0008                      C	FORMAT_NOT_CORRECT  EQU 8	; 'Parameter format not correct'                ;AN000;
 = 0011                      C	INVALID_B_SWITCH    EQU 17	; '/B invalid with a Black and White printer'   ;AN000;
 = 0012                      C	UNABLE_RELOAD	    EQU 18	; 'Unable to reload with profile supplied'      ;AN000;
			     C											;AN000;
			     C											;AN000;
			     C											;AN000;
			     C	;-------------------------------------------------------------------------------;AN000;
			     C	; PARSER ERROR CODES	AND    OUR OWN PARSING ERROR CODES			;AN000;
			     C	;			***							;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-6


			     C	;-------------------------------------------------------------------------------;AN000;
			     C											;AN000;
 = 0000                      C	RC_NO_ERROR	     EQU     0							;AN000;
 =-0001                      C	RC_EOL		     EQU    -1							;AN000;
 = 0001                      C	RC_TOO_MANY	     EQU     1							;AN000;
 = 0003                      C	RC_NOT_IN_SW	     EQU     3							;AN000;
 = 0007                      C	RC_NOT_IN_VAL	     EQU     7							;AN000;
 = 0008                      C	RC_NOT_IN_STR	     EQU     8							;AN000;
			     C											;AN000;
 = 0063                      C	RC_INVLD_COMBINATION EQU     99 						;AN000;
 = 0064                      C	RC_DUPLICATE_PARMS   EQU    100 						;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Public Symbols								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
				   PUBLIC  LOAD_PROFILE 							;AN000;
				   PUBLIC  GROW_SHARED_DATA							;AN000;
				   PUBLIC  BLOCK_START								;AN000;
				   PUBLIC  BLOCK_END								;AN000;
				   PUBLIC  FIRST_BLOCK								;AN000;
				   PUBLIC  MAX_BLOCK_END							;AN000;
				   PUBLIC  GROUPS_DONE								;AN000;
				   PUBLIC  STMTS_DONE								;AN000;
				   PUBLIC  STMTS_DONE								;AN000;
				   PUBLIC  PTD_FOUND								;AN000;
				   PUBLIC  BUILD_STATE								;AN000;
				   PUBLIC  STMT_ERROR								;AN000;
				   PUBLIC  FILE_ERROR								;AN000;
				   PUBLIC  PARSE_ERROR								;AN000;
				   PUBLIC  END_OF_FILE								;AN000;
				   PUBLIC  MEM_OVERFLOW 							;AN000;
				   PUBLIC  STMT_BUFFER								;AN000;
				   PUBLIC  CUR_STMT								;AN000;
				   PUBLIC  PREV_STMT								;AN000;
				   PUBLIC  PRT_BOX_ERROR							;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
					ASSUME	CS:CODE,DS:CODE        ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Profile Load Variables							;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 = 0000				NO	      EQU   0		       ;;					;AN000;
 = 0001				YES	      EQU   1		       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-7


								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   LOAD_PROFILE								;AN000;
				;;										;AN000;
				;; Input Parameters:								;AN000;
				;;   DS,ES,SS - points to our transient segment 				;AN000;
				;;										;AN000;
				;; Output Parameters:								;AN000;
				;;   Temporary Shared Data Area 						;AN000;
				;;   Carry flag set if errors in profile.					;AN000;
				;;										;AN000;
				;; Data Structures Referenced:							;AN000;
				;;   Shared Data Area								;AN000;
				;;   Profile Load Variables							;AN000;
				;;										;AN000;
				;; Description: 								;AN000;
				;;   Build the profile information in the Temporary Shared Data Area.		;AN000;
				;;   The information will be built for the printer type parsed off		;AN000;
				;;   the command line.	ALL Printer Type Descriptions will be			;AN000;
				;;   parsed to issue error messages and determine the maximum			;AN000;
				;;   amount of resident memory required for initial load.			;AN000;
				;;   The Shared Data Area begins with a fixed length section			;AN000;
				;;   and then has several variable length sections.  PROFILE_BUILD_PTR		;AN000;
				;;   is used to build the variable length sections by serving			;AN000;
				;;   as a running pointer to the sections as they are built.			;AN000;
				;;										;AN000;
				;; Register Usage:								;AN000;
				;;   BP - points to beginning of Temp Shared Data				;AN000;
				;;										;AN000;
				;; Called By:									;AN000;
				;;   GRAPHICS_INSTALL								;AN000;
				;;										;AN000;
				;; External Calls:								;AN000;
				;;   PARSE_PRINTER, PARSE_DISPLAYMODE, PARSE_SETUP, PARSE_RESTORE		;AN000;
				;;   PARSE_PRINTBOX, PARSE_GRAPHICS, PARSE_COLORSELECT, 			;AN000;
				;;   PARSE_COLORPRINT, GET_STATEMENT						;AN000;
				;;   SYSPARSE									;AN000;
				;;										;AN000;
				;; Logic:									;AN000;
				;;   IF profile path not specified  THEN					;AN000;
				;;	PROFILE_PATH := "GRAPHICS.PRO"  /* Current directory */                 ;AN000;
				;;	Open profile using PROFILE_PATH 					;AN000;
				;;	IF error during open THEN						;AN000;
				;;	   PROFILE_PATH := ARG(V0) with "GRAPHICS.COM" replaced                 ;AN000;
				;;	     by "GRAPHICS.PRO"                                                  ;AN000;
				;;	   Open profile using PROFILE_PATH					;AN000;
				;;	   IF error during open THEN						;AN000;
				;;	      Issue "Cannot find profile" msg                                   ;AN000;
				;;	      Set carry flag							;AN000;
				;;	      RETURN								;AN000;
				;;	   ENDIF								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-8


				;;	ENDIF									;AN000;
				;;   ELSE									;AN000;
				;;	Open profile using specified path					;AN000;
				;;	IF error during open THEN						;AN000;
				;;	   Issue "Cannot find profile" msg                                      ;AN000;
				;;	   Set carry flag							;AN000;
				;;	   RETURN								;AN000;
				;;	ENDIF									;AN000;
				;;   ENDIF									;AN000;
				;;   /* don't start building until we find our printer type*/                   ;AN000;
				;;   PARSE_MODE := NOBUILD							;AN000;
				;;   MAX_BUILD_PTR := 0 							;AN000;
				;;   CALL GROW_SHARED_DATA(PROFILE-BUILD_PTR,size of FIXED PART 		;AN000;
				;;     of Shared Data Area)							;AN000;
				;;   WHILE (not end of file) AND (no I/O error) DO				;AN000;
				;;	CALL GET_STATEMENT							;AN000;
				;;	IF I/O error THEN							;AN000;
				;;	   Issue error message							;AN000;
				;;	ELSE									;AN000;
				;;	   CALL SYSPARSE to parse the statement verb				;AN000;
				;;	   IF verb found THEN							;AN000;
				;;	      IF invalid verb THEN						;AN000;
				;;		 Issue error message						;AN000;
				;;		 PARSE_MODE := ERROR						;AN000;
				;;	      ELSE								;AN000;
				;;		 CASE statement verb						;AN000;
				;;		    PRINTER:							;AN000;
				;;		       CALL PARSE_PRINTER					;AN000;
				;;		    DISPLAYMODE:						;AN000;
				;;		       CALL PARSE_DISPLAYMODE					;AN000;
				;;		    PRINTBOX:							;AN000;
				;;		       CALL PARSE_PRINTBOX					;AN000;
				;;		    SETUP:							;AN000;
				;;		       CALL PARSE_SETUP 					;AN000;
				;;		    RESTORE:							;AN000;
				;;		       CALL PARSE_RESTORE					;AN000;
				;;		    GRAPHICS:							;AN000;
				;;		       CALL PARSE_GRAPHICS					;AN000;
				;;		    COLORPRINT: 						;AN000;
				;;		       CALL PARSE_COLORPRINT					;AN000;
				;;		    COLORSELECT:						;AN000;
				;;		       CALL PARSE_COLORSELECT					;AN000;
				;;		 ENDCASE							;AN000;
				;;		 IF error on statement THEN					;AN000;
				;;		    IF OVERFLOW bit set in RETURN_CODE THEN			;AN000;
				;;		       Issue "Insufficient memory" message                      ;AN000;
				;;		       RETURN to caller 					;AN000;
				;;		    ELSE							;AN000;
				;;		       IF MISSING bit set in RETURN_CODE THEN			;AN000;
				;;			  Issue "required statement missing" message            ;AN000;
				;;		       ENDIF							;AN000;
				;;		       IF INVALID bit set in RETURN_CODE THEN			;AN000;
				;;			  Issue "statement invalid" message                     ;AN000;
				;;		       ENDIF							;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-9


				;;		       IF SEQUENCE bit set in RETURN_CODE THEN			;AN000;
				;;			  Issue "out of sequence" message                       ;AN000;
				;;		       ENDIF							;AN000;
				;;		       display the statement in error				;AN000;
				;;		    ENDIF							;AN000;
				;;		    PARSE_MODE := ERROR 					;AN000;
				;;		 ENDIF								;AN000;
				;;	      ENDIF								;AN000;
				;;	   ENDIF								;AN000;
				;;	ENDIF									;AN000;
				;;   ENDWHILE									;AN000;
				;;										;AN000;
				;;   /* Check length of last PTD */						;AN000;
				;;   IF PROFILE_BUILD_PTR > MAX_BUILD_PTR THEN					;AN000;
				;;	MAX_BUILD_PTR := PROFILE_BUILD_PTR					;AN000;
				;;   ENDIF									;AN000;
				;;										;AN000;
				;;   /* Make sure all required statements were in previous */			;AN000;
				;;   /* Printer Type Description */						;AN000;
				;;   /* Must have completed PRINTER, DISPLAYMODE, PRINTBOX and */		;AN000;
				;;   /* GRAPHICS statements */							;AN000;
				;;   IF PRT+DISP+BOX+GR bits not all set in STMTS_DONE THEN			;AN000;
				;;	Issue "required statement missing" message                              ;AN000;
				;;	Display "END OF FILE."                                                  ;AN000;
				;;   ENDIF									;AN000;
				;;										;AN000;
				;;   IF errors during build THEN						;AN000;
				;;	set carry flag								;AN000;
				;;   ELSE									;AN000;
				;;	SD_TOTAL_SIZE := MAX_BUILD_PTR - TEMP_SHARED_DATA_PTR			;AN000;
				;;   ENDIF									;AN000;
				;;   RETURN									;AN000;
				;;										;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 = 0002				FILE_NOT_FOUND	EQU  2		       ;; DOS Int21H error codes		;AN000;
 = 0003				PATH_NOT_FOUND	EQU  3		       ;;					;AN000;
								       ;;					;AN000;
 0000				SUBLIST     LABEL  BYTE 	       ;; Message substituion list for stmt #	;AN000;
 0000  0B				    DB	11		       ;; sublist size				;AN000;
 0001  00				    DB	0		       ;;					;AN000;
 0002  000B R				    DW	STMT_NUM	       ;; \ Dword pointer to item		;AN000;
 0004  0000			SUBLIST_SEG DW	?		       ;; /					;AN000;
 0006  01				    DB	1		       ;; Substitution #			;AN000;
				;; Flag format	a0sstttt	       ;;					;AN000;
 0007  21				    DB	00100001B	       ;; Unsigned binary word - left align	;AN000;
				;;;;	    DB	00000000B	       ;; charcater				;AN000;
 0008  00				    DB	0		       ;; max field width			;AN000;
 0009  01				    DB	1		       ;; min width width			;AN000;
 000A  20				    DB	' '                    ;; pad characeter                        ;AN000;
								       ;;					;AN000;
 000B  0000			STMT_NUM    DW	0		       ;;					;AN000;
								       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-10


								       ;;					;AN000;
 000D  00			FILE_ERROR  DB	0		       ;; Error opening or reading PROFILE	;AN000;
 000E  00			PARSE_ERROR DB	0		       ;; Syntax errors in PROFILE		;AN000;
 000F  00			END_OF_FILE	DB  0		       ;; 1 if end of file			;AN000;
 0010  00			MEM_OVERFLOW  DB  0		       ;; 1 if insufficient memory		;AN000;
								       ;;					;AN000;
 0011  00			STMT_ERROR  DB	0		       ;; Error flag for individual stmt errors ;AN000;
 = 0001				MISSING     EQU 1		       ;; Required statement missing		;AN000;
 = 0002				INVALID     EQU 2		       ;; Invalid statement format		;AN000;
 = 0004				SEQUENCE    EQU 4		       ;; Statement out of sequence		;AN000;
								       ;;					;AN000;
 0012  47 52 41 50 48 49	DEFAULT_PATH	  DB "GRAPHICS.PRO",0  ;;                                       ;AN000;
       43 53 2E 50 52 4F	
       00			
 001F  0040[			BUFFER	    DB	64 DUP("$")            ;;                                       ;AN000;
	   24			
			 ]	
				
								       ;;					;AN000;
 005F  0000			HANDLE	    DW	0		       ;; Profile handle			;AN000;
								       ;;					;AN000;
 0061  00			BUILD_STATE DB	0		       ;; 1 if we are currently building	;AN000;
								       ;;  data.  0 means syntax checking	;AN000;
								       ;;   only				;AN000;
								       ;;					;AN000;
								       ;; Keep track of whether this PTD	;AN000;
								       ;;  matches the type requested		;AN000;
 0062  00			PTD_FOUND   DB	0		       ;; Values are NO (0), YES (1) and	;AN000;
 = 0002				PROCESSED   EQU 2		       ;;  PROCESSED (2)			;AN000;
								       ;;					;AN000;
 0063  00			VERB	    DB	0		       ;; PTR into VERB_JMP_TAB 		;AN000;
								       ;;					;AN000;
 0064				VERB_JMP_TAB  LABEL WORD	       ;;					;AN000;
 0064  0000 E				DW  OFFSET PARSE_PRINTER       ;;					;AN000;
 0066  0000 E				DW  OFFSET PARSE_DISPLAYMODE   ;;					;AN000;
 0068  0000 E				DW  OFFSET PARSE_PRINTBOX      ;;					;AN000;
 006A  0000 E				DW  OFFSET PARSE_SETUP	       ;;					;AN000;
 006C  0000 E				DW  OFFSET PARSE_RESTORE       ;;					;AN000;
 006E  0000 E				DW  OFFSET PARSE_GRAPHICS      ;;					;AN000;
 0070  0000 E				DW  OFFSET PARSE_COLORPRINT    ;;					;AN000;
 0072  0000 E				DW  OFFSET PARSE_COLORSELECT   ;;					;AN000;
 0074  0000 E				DW  OFFSET PARSE_DARKADJUST    ;;					;AN000;
								       ;;					;AN000;
 0076  0000			STMTS_DONE   DW  0		       ;;					;AN000;
 0078  0000			GROUPS_DONE  DW  0		       ;;					;AN000;
 007A  0000			PREV_STMT    DW  0		       ;;					;AN000;
 007C  0000			CUR_STMT     DW  0		       ;;					;AN000;
								       ;;					;AN000;
 = 0001				PRT	EQU  1			       ;; Bit masks for STMTS_DONE and		;AN000;
 = 0002				DISP	EQU  2			       ;;  GROUPS_DONE.  There is one		;AN000;
 = 0004				BOX	EQU  4			       ;;   bit for each statement except	;AN000;
 = 0008				GR	EQU  8			       ;;    DARKADJUST 			;AN000;
 = 0010				SET	EQU  10H		       ;;					;AN000;
 = 0020				REST	EQU  20H		       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-11


 = 0040				COLS	EQU  40H		       ;;					;AN000;
 = 0080				COLP	EQU  80H		       ;;					;AN000;
 = 0100				DARK	EQU  100H		       ;;					;AN000;
								       ;;					;AN000;
 007E  0000			BLOCK_START  DW  ?		       ;; Extents of the variable size block	;AN000;
 0080  0000			BLOCK_END    DW  ?		       ;;  currently being built		;AN000;
								       ;; These are relative to the		;AN000;
								       ;;  start of the Shared Data Area	;AN000;
								       ;;   so the area can be relocated	;AN000;
 0082  0000			MAX_BLOCK_END	DW  0		       ;; End of largest PTD contained		;AN000;
								       ;;  in profile				;AN000;
 0084  0000			FIRST_BLOCK  DW  ?		       ;; Pointer to first variable block	;AN000;
								       ;;  (end of fixed part)			;AN000;
 0086  00			PRT_BOX_ERROR  DB  0		       ;;					;AN000;
								       ;;					;AN000;
 0087				LOAD_PROFILE  PROC NEAR 	       ;;					;AN000;
								       ;;					;AN000;
 0087  0E			  PUSH	CS			       ;;					;AN000;
 0088  8F 06 0004 R		  POP	SUBLIST_SEG		       ;; setup segment for message sublist	;AN000;
								       ;;					;AN000;
 008C  E8 0239 R		  CALL OPEN_FILE		       ;;					;AN000;
				 .IF <FILE_ERROR EQ YES>	       ;; Check for error during open		;AN000;
 008F  80 3E 000D R 01       3						cmp FILE_ERROR,YES 
 0094  75 02                 6						jne $l1 
 0096  F9			     STC			       ;;					;AN000;
 0097  C3			     RET			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0098                        2	$l1: 
								       ;;					;AN000;
 0098  8B 2E 0000 E		  MOV  BP,TEMP_SHARED_DATA_PTR	       ;; BP points to START of Shared Data	;AN000;
 009C  B8 000E			  MOV  AX,SIZE SHARED_DATA_AREA_STR    ;; size of fixed part of Shared Data	;AN000;
 009F  C7 06 0080 R 0000	  MOV  BLOCK_END,0		       ;; Initialize BLOCK_START,BLOCK_END	;AN000;
 00A5  C6 46 05 00		  MOV  [BP].DARKADJUST_VALUE,0	       ;; Init some values in the fixed 	;AN000;
 00A9  C6 46 06 00		  MOV  [BP].NUM_PRT_COLOR,0	       ;;  area 				;AN000;
 00AD  C7 46 07 FFFF		  MOV  [BP].COLORPRINT_PTR,-1	       ;;					;AN000;
 00B2  C6 46 09 00		  MOV  [BP].NUM_PRT_BANDS,0	       ;;					;AN000;
 00B6  C7 46 0A FFFF		  MOV  [BP].COLORSELECT_PTR,-1	       ;;					;AN000;
 00BB  C6 46 04 02		  MOV  [BP].PRINTER_TYPE,BLACK_WHITE   ;;					;AN000;
 00BF  E8 0736 R		  CALL GROW_SHARED_DATA 	       ;;  to the first byte after the		;AN000;
								       ;;   fixed part of Shared Data		;AN000;
 00C2  A1 0080 R		     MOV  AX,BLOCK_END		       ;; Variable size data will be built	;AN000;
 00C5  A3 007E R		     MOV  BLOCK_START,AX	       ;;  starting at BLOCK_START		;AN000;
 00C8  A3 0084 R		     MOV  FIRST_BLOCK,AX	       ;; Save start of variable data		;AN000;
								       ;;					;AN000;
 00CB  8B 36 0507 R		     MOV  SI,BUFFER_PTR 	       ;; Set up SI for GET_BYTE		;AN000;
 00CF  E8 06DB R		     CALL GET_BYTE		       ;; Get first byte from file		;AN000;
 00D2  A2 0306 R		     MOV  NEXT_BYTE,AL		       ;;  and store it 			;AN000;
 00D5  89 36 0507 R		     MOV  BUFFER_PTR,SI 	       ;; Save SI for next GET_BYTE		;AN000;
				    .WHILE <END_OF_FILE EQ NO> AND     ;; Keep parsing until end of file or	;AN000;
 00D9                        2	$l4: 
 00D9  80 3E 000F R 00       3						cmp END_OF_FILE,NO 
 00DE  75 54                 6						jne $l5 
				    .WHILE <FILE_ERROR EQ NO>	       ;;  file error occurs			;AN000;
 00E0  80 3E 000D R 00       3						cmp FILE_ERROR,NO 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-12


 00E5  75 4D                 6						jne $l5 
 00E7  C6 06 0011 R 00		       MOV STMT_ERROR,0 	       ;; Clear parse error flags		;AN000;
 00EC  E8 0610 R		       CALL GET_STATEMENT	       ;; Get next profile statement		;AN000;
 00EF  FF 06 000B R		       INC  STMT_NUM		       ;;					;AN000;
				      .IF NC			       ;; Carry flag set if get unsuccessful	;AN000;
 00F3  72 E4                 6						jc $l4 
 00F5  E8 0000 E			  CALL PARSE_VERB	       ;; Index into verb jump table returned	;AN000;
								       ;;  in BX				;AN000;
					 .IF <AX EQ 0> THEN	       ;; AX=0 if there is a recognized 	;AN000;
 00F8  3D 0000               3						cmp AX,0 
 00FB  75 0D                 6						jne $l11 
 00FD  A1 007C R			    MOV  AX,CUR_STMT	       ;;					;AN000;
 0100  A3 007A R			    MOV  PREV_STMT,AX	       ;; Save last statement verb		;AN000;
 0103  FF 97 0064 R			    CALL VERB_JMP_TAB[BX]      ;;  statement to parse			;AN000;
					 .ELSEIF <AX NE -1> THEN       ;;					;AN000;
 0107  EB 15                 3						jmp short $l10 
 0109  90                    3						nop 
 010A                        2	$l11: 
 010A  3D FFFF               3						cmp AX,-1 
 010D  74 0F                 6						je $l10 
 010F  80 0E 0011 R 02			    OR	 STMT_ERROR,INVALID    ;;					;AN000;
 0114  C6 06 000E R 01			    MOV  PARSE_ERROR,YES       ;;					;AN000;
 0119  C6 06 0061 R 00			    MOV  BUILD_STATE,NO        ;;					;AN000;
					 .ENDIF 		       ;;					;AN000;
 011E                        2	$l10: 
					 .IF <STMT_ERROR NE 0>	       ;; An error was detected 		;AN000;
 011E  80 3E 0011 R 00       3						cmp STMT_ERROR,0 
 0123  74 B4                 6						je $l4 
 0125  E8 01CE R			    CALL SHOW_PARSE_ERROR      ;;					;AN000;
 0128  C6 06 000E R 01			    MOV PARSE_ERROR,YES        ;;					;AN000;
 012D  C6 06 0011 R 00			    MOV STMT_ERROR,0	       ;;					;AN000;
					 .ENDIF 		       ;;					;AN000;
				      .ENDIF			       ;;					;AN000;
				    .ENDWHILE			       ;;					;AN000;
 0132  EB A5                 3						jmp $l4 
 0134                        2	$l5: 
								       ;;					;AN000;
				 .IF <BIT STMTS_DONE  AND PRT>	       ;; Must have at least one PRINTER	;AN000;
 0134  F7 06 0076 R 0001     3						test STMTS_DONE,PRT 
 013A  74 08                 6						jz $l19 
 013C  E8 0000 E		     CALL TERMINATE_DISPLAYMODE        ;; Terminate the last PRINTER and	;AN000;
 013F  E8 0000 E		     CALL TERMINATE_PRINTER	       ;;  DISPLAYMODE sections 		;AN000;
				 .ELSE				       ;;					;AN000;
 0142  EB 05                 3						jmp short $l18 
 0144                        2	$l19: 
 0144  80 0E 0011 R 01		     OR  STMT_ERROR,MISSING	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0149                        2	$l18: 
				 .IF <STMT_ERROR NE 0>		       ;;					;AN000;
 0149  80 3E 0011 R 00       3						cmp STMT_ERROR,0 
 014E  74 03                 6						je $l22 
 0150  E8 01CE R		     CALL  SHOW_PARSE_ERROR	       ;; Issue Profile syntax messages 	;AN000;
				 .ENDIF 			       ;;					;AN000;
 0153                        2	$l22: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-13


								       ;;					;AN000;
								       ;;					;AN000;
 0153  B8 3E00			  MOV  AX,3E00H 		       ;; Close the file			;AN000;
 0156  8B 1E 005F R		  MOV  BX,HANDLE		       ;;					;AN000;
 015A  CD 21			  INT  21H			       ;;					;AN000;
								       ;;					;AN000;
				 .IF <PARSE_ERROR EQ YES>	       ;;					;AN000;
 015C  80 3E 000E R 01       3						cmp PARSE_ERROR,YES 
 0161  75 09                 6						jne $l25 
 0163  B8 000E			      MOV  AX,SYNTAX_ERRORS	       ;; Issue "Syntax errors found in         ;AN000;
 0166  B9 0000			      MOV  CX,0 		       ;;  profile" message.                    ;AN000;
 0169  E8 0000 E		      CALL DISP_ERROR		       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 016C                        2	$l25: 
								       ;;					;AN000;
				 .IF <PTD_FOUND EQ NO>		       ;; Did we find the requested printer	;AN000;
 016C  80 3E 0062 R 00       3						cmp PTD_FOUND,NO 
 0171  75 0E                 6						jne $l28 
 0173  B8 0010			      MOV  AX,INVALID_PRT	       ;;  type?  If not issue error		;AN000;
 0176  B9 0000			      MOV  CX,0 		       ;;  message.				;AN000;
 0179  E8 0000 E		      CALL DISP_ERROR		       ;;					;AN000;
 017C  C6 06 000E R 01		      MOV  PARSE_ERROR,YES	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0181                        2	$l28: 
								       ;;					;AN000;
				 .IF <PARSE_ERROR EQ YES> OR	       ;;					;AN000;
 0181  80 3E 000E R 01       3						cmp PARSE_ERROR,YES 
 0186  74 0E                 6						je $l33 
				 .IF <PRT_BOX_ERROR EQ YES> OR	       ;;					;AN000;
 0188  80 3E 0086 R 01       3						cmp PRT_BOX_ERROR,YES 
 018D  74 07                 6						je $l33 
				 .IF <FILE_ERROR EQ YES>	       ;; Set carry flag if profile load	;AN000;
 018F  80 3E 000D R 01       3						cmp FILE_ERROR,YES 
 0194  75 03                 6						jne $l32 
 0196                        3	$l33: 
 0196  F9			     STC			       ;;  was unsuccessful			;AN000;
				 .ELSE				       ;;					;AN000;
 0197  EB 34                 3						jmp short $l31 
 0199                        2	$l32: 
				    .IF <MEM_OVERFLOW EQ YES>	       ;; Everthing else was OK BUT we ran	;AN000;
 0199  80 3E 0010 R 01       3						cmp MEM_OVERFLOW,YES 
 019E  75 26                 6						jne $l36 
					.IF <INSTALLED EQ YES>	       ;;  out of memory!!!			;AN000;
 01A0  80 3E 0000 E 01       3						cmp INSTALLED,YES 
 01A5  75 13                 6						jne $l39 
 01A7  A1 0000 E			    MOV   AX,NB_FREE_BYTES     ;;					;AN000;
					   .IF <AX LT RESIDENT_SHARED_DATA_SIZE>				;AN000;
 01AA  3B 06 0000 E          3						cmp AX,RESIDENT_SHARED_DATA_SIZE 
 01AE  7D 05                 6						jnl $l42 
 01B0  B8 0002				       MOV   AX,NO_MEMORY      ;; We ran out of physical memory!	;AN000;
					   .ELSE		       ;;					;AN000;
 01B3  EB 08                 3						jmp short $l38 
 01B5                        2	$l42: 
 01B5  B8 0012				       MOV   AX,UNABLE_RELOAD  ;; Allocated shared data is too small	;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-14


					   .ENDIF		       ;;					;AN000;
					.ELSE			       ;;					;AN000;
 01B8  EB 03                 3						jmp short $l38 
 01BA                        2	$l39: 
 01BA  B8 0002				    MOV   AX,NO_MEMORY	       ;; We ran out of physical memory 	;AN000;
					.ENDIF			       ;;					;AN000;
 01BD                        2	$l38: 
 01BD  B9 0000				 MOV   CX,0		       ;;					;AN000;
 01C0  E8 0000 E			 CALL  DISP_ERROR	       ;;					;AN000;
 01C3  F9				 STC			       ;; Indicate unsuccessful 		;AN000;
				    .ELSE			       ;;					;AN000;
 01C4  EB 07                 3						jmp short $l31 
 01C6                        2	$l36: 
 01C6  A1 0082 R			 MOV  AX,MAX_BLOCK_END	       ;; Extent of largest PRINTER section	;AN000;
 01C9  89 46 00				 MOV  [BP].SD_TOTAL_SIZE,AX    ;;  we parsed.				;AN000;
 01CC  F8				 CLC			       ;; SUCCESSFUL LOAD!!!!			;AN000;
				    .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 01CD                        2	$l31: 
								       ;;					;AN000;
 01CD  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 01CE				LOAD_PROFILE  ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   SHOW_PARSE_ERROR								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 = 000D				CARRAIGE_RET   EQU  13		       ;;					;AN000;
 = 000A				LINE_FEED      EQU  10		       ;;					;AN000;
								       ;;					;AN000;
 01CE				SHOW_PARSE_ERROR   PROC 	       ;;					;AN000;
								       ;;					;AN000;
 01CE  C7 06 0000 E 0000 E	  MOV  ERROR_DEVICE,STDOUT	       ;; profile syntax messages to STDOUT	;AN000;
								       ;;					;AN000;
				 .IF <BIT STMT_ERROR AND MISSING>						;AN000;
 01D4  F6 06 0011 R 01       3						test STMT_ERROR,MISSING 
 01D9  74 0E                 6						jz $l47 
 01DB  56			    PUSH SI		    ;;							;AN000;
 01DC  B8 000A			    MOV  AX,MISSING_STMT    ;;							;AN000;
 01DF  B9 0001			    MOV  CX,1		    ;;							;AN000;
 01E2  BE 0000 R		    MOV  SI,OFFSET SUBLIST  ;;							;AN000;
 01E5  E8 0000 E		    CALL DISP_ERROR	    ;;							;AN000;
 01E8  5E			    POP  SI		    ;;							;AN000;
				 .ENDIF 		    ;;							;AN000;
 01E9                        2	$l47: 
				 .IF <BIT STMT_ERROR AND INVALID>						;AN000;
 01E9  F6 06 0011 R 02       3						test STMT_ERROR,INVALID 
 01EE  74 0E                 6						jz $l50 
 01F0  56			    PUSH SI		    ;;							;AN000;
 01F1  B8 000B			    MOV  AX,INVALID_STMT    ;;							;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-15


 01F4  B9 0001			    MOV  CX,1									;AN000;
 01F7  BE 0000 R		    MOV  SI,OFFSET SUBLIST  ;;							;AN000;
 01FA  E8 0000 E		    CALL DISP_ERROR	    ;;							;AN000;
 01FD  5E			    POP  SI		    ;;							;AN000;
				 .ENDIF 		    ;;							;AN000;
 01FE                        2	$l50: 
				 .IF <BIT STMT_ERROR AND SEQUENCE>						;AN000;
 01FE  F6 06 0011 R 04       3						test STMT_ERROR,SEQUENCE 
 0203  74 0E                 6						jz $l53 
 0205  56			    PUSH SI		    ;;							;AN000;
 0206  B8 000C			    MOV  AX,OUT_SEQ_STMT    ;;							;AN000;
 0209  B9 0001			    MOV  CX,1									;AN000;
 020C  BE 0000 R		    MOV  SI,OFFSET SUBLIST  ;;							;AN000;
 020F  E8 0000 E		    CALL DISP_ERROR	    ;;							;AN000;
 0212  5E			    POP  SI		    ;;							;AN000;
				 .ENDIF 		    ;;							;AN000;
 0213                        2	$l53: 
								       ;;					;AN000;
 0213  8B 3E 060D R		  MOV  DI,STMT_END_INDEX  ;;							;AN000;
 0217  C6 85 050B R 24 90	  MOV  STMT_BUFFER[DI],'$'           ;; For display                             ;AN000;
 021D  B4 09			  MOV  AH,9			     ;; 					;AN000;
 021F  BA 050B R		  MOV  DX,OFFSET STMT_BUFFER							;AN000;
 0222  CD 21			  INT  21H			     ;; 					;AN000;
 0224  B2 0D 90 90		  MOV  DL,CARRIAGE_RET		     ;; 					;AN000;
 0228  B4 02			  MOV  AH,2			     ;; 					;AN000;
 022A  CD 21			  INT  21H			     ;; 					;AN000;
 022C  B2 0A			  MOV  DL,LINE_FEED		     ;; 					;AN000;
 022E  B4 02			  MOV  AH,2			     ;; 					;AN000;
 0230  CD 21			  INT  21H			     ;; 					;AN000;
								       ;;					;AN000;
 0232  C7 06 0000 E 0000 E	  MOV  ERROR_DEVICE,STDERR	       ;; reset to STDERR			;AN000;
								       ;;					;AN000;
 0238  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 0239				SHOW_PARSE_ERROR   ENDP 	       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   OPEN_FILE									;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 0239				OPEN_FILE     PROC NEAR 	       ;;					;AN000;
								       ;;					;AN000;
				 .IF <PROFILE_PATH NE 0>	       ;; If a path was specified then		;AN000;
 0239  80 3E 0000 E 00       3						cmp PROFILE_PATH,0 
 023E  74 2E                 6						je $l57 
 0240  BA 0000 E		     MOV  DX,OFFSET PROFILE_PATH       ;;  try and open it			;AN000;
 0243  B8 3D00			     MOV  AX,3D00H		       ;;					;AN000;
 0246  CD 21			     INT  21H			       ;; Open it				;AN000;
				    .IF C			       ;; Open error if carry flag set		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-16


 0248  73 1F                 5						jnC $l60 
				       .IF <AX EQ FILE_NOT_FOUND> OR   ;; Check for error other than		;AN000;
 024A  3D 0002               3						cmp AX,FILE_NOT_FOUND 
 024D  74 05                 6						je $l64 
				       .IF <AX EQ PATH_NOT_FOUND>      ;;  file not found			;AN000;
 024F  3D 0003               3						cmp AX,PATH_NOT_FOUND 
 0252  75 10                 6						jne $l63 
 0254                        3	$l64: 
 0254  B8 0009				   MOV	 AX,PROFILE_NOT_FOUND  ;;					;AN000;
 0257  B9 0000				   MOV	 CX,0		       ;;					;AN000;
 025A  E8 0000 E			   CALL  DISP_ERROR	       ;; Issue "File not found" common msg     ;AN000;
 025D  C6 06 000D R 01			   MOV	 FILE_ERROR,YES        ;;					;AN000;
				       .ELSE			       ;;					;AN000;
 0262  EB 57                 3						jmp short $l56 
 0264                        2	$l63: 
 0264  E8 02F6 R			   CALL  FILE_ERROR_PROC       ;; Issue "Open error"                    ;AN000;
				       .ENDIF			       ;;					;AN000;
				    .ELSE			       ;;					;AN000;
 0267  EB 52                 3						jmp short $l56 
 0269                        2	$l60: 
 0269  A3 005F R			MOV  HANDLE,AX		       ;;					;AN000;
				    .ENDIF			       ;; File opened OK			;AN000;
				 .ELSE				       ;; No path parameter			;AN000;
 026C  EB 4D                 3						jmp short $l56 
 026E                        2	$l57: 
 026E  BA 0012 R		     MOV  DX,OFFSET DEFAULT_PATH       ;; Try and open "GRAPHICS.PRO"           ;AN000;
 0271  B8 3D00			     MOV  AX,3D00H		       ;;					;AN000;
 0274  CD 21			     INT  21H			       ;; Open it				;AN000;
				    .IF C			       ;; Open error if carry flag set		;AN000;
 0276  73 40                 5						jnC $l69 
				       .IF <AX EQ FILE_NOT_FOUND> OR   ;; Check for file not found error	;AN000;
 0278  3D 0002               3						cmp AX,FILE_NOT_FOUND 
 027B  74 05                 6						je $l73 
				       .IF <AX EQ PATH_NOT_FOUND>      ;;					;AN000;
 027D  3D 0003               3						cmp AX,PATH_NOT_FOUND 
 0280  75 31                 6						jne $l72 
 0282                        3	$l73: 
 0282  E8 02BC R			   CALL COPY_ARGV0	       ;;					;AN000;
 0285  BA 0000 E			   MOV	DX,OFFSET PROFILE_PATH ;; Try and open "GRAPHICS.PRO" in        ;AN000;
 0288  B8 3D00				   MOV	AX,3D00H	       ;;  ARGV0 directory			;AN000;
 028B  CD 21				   INT	21H		       ;;					;AN000;
					  .IF C 		       ;; Issue "File not found" common msg     ;AN000;
 028D  73 1F                 5						jnC $l75 
					     .IF <AX EQ FILE_NOT_FOUND> OR					;AN000;
 028F  3D 0002               3						cmp AX,FILE_NOT_FOUND 
 0292  74 05                 6						je $l79 
					     .IF <AX EQ PATH_NOT_FOUND> 					;AN000;
 0294  3D 0003               3						cmp AX,PATH_NOT_FOUND 
 0297  75 10                 6						jne $l78 
 0299                        3	$l79: 
 0299  B8 0009					 MOV   AX,PROFILE_NOT_FOUND  ;; 				;AN000;
 029C  B9 0000					 MOV   CX,0		     ;; 				;AN000;
 029F  E8 0000 E				 CALL  DISP_ERROR	     ;; Issue "File not found"common MSG;AN000;
 02A2  C6 06 000D R 01				 MOV   FILE_ERROR,YES	     ;; 				;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-17


					     .ELSE		       ;;					;AN000;
 02A7  EB 12                 3						jmp short $l56 
 02A9                        2	$l78: 
 02A9  E8 02F6 R				 CALL  FILE_ERROR_PROC ;; Issue "Open error"                    ;AN000;
					     .ENDIF		       ;;					;AN000;
					  .ELSE 		       ;;					;AN000;
 02AC  EB 0D                 3						jmp short $l56 
 02AE                        2	$l75: 
 02AE  A3 005F R			      MOV  HANDLE,AX	       ;;					;AN000;
					  .ENDIF		       ;; File opened OK			;AN000;
				       .ELSE			       ;;					;AN000;
 02B1  EB 08                 3						jmp short $l56 
 02B3                        2	$l72: 
 02B3  E8 02F6 R			   CALL  FILE_ERROR_PROC       ;; Issue "Open error"                    ;AN000;
				       .ENDIF			       ;;					;AN000;
				    .ELSE			       ;;					;AN000;
 02B6  EB 03                 3						jmp short $l56 
 02B8                        2	$l69: 
 02B8  A3 005F R			MOV  HANDLE,AX		       ;;					;AN000;
				    .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 02BB                        2	$l56: 
								       ;;					;AN000;
 02BB  C3			  RET				       ;;					;AN000;
 02BC				OPEN_FILE     ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   COPY_ARGV0 								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 02BC				COPY_ARGV0  PROC		       ;;					;AN000;
								       ;;					;AN000;
 02BC  06			  PUSH	 ES			       ;;					;AN000;
 02BD  57			  PUSH	 DI			       ;;					;AN000;
 02BE  56			  PUSH	 SI			       ;;					;AN000;
								       ;;					;AN000;
 02BF  BF 002C			  MOV	 DI,2CH 		       ;; Locate environment string		;AN000;
 02C2  8E 05			  MOV	 ES,[DI]		       ;;					;AN000;
 02C4  33 F6			  XOR	 SI,SI			       ;;					;AN000;
				  .WHILE <<WORD PTR ES:[SI]> NE 0>     ;;					;AN000;
 02C6                        2	$l84: 
 02C6  26: 83 3C 00          3						cmp WORD PTR ES:[SI],0 
 02CA  74 03                 6						je $l85 
 02CC  46			     INC   SI			       ;;					;AN000;
				  .ENDWHILE			       ;;					;AN000;
 02CD  EB F7                 3						jmp $l84 
 02CF                        2	$l85: 
 02CF  83 C6 04			  ADD	 SI,4			       ;;					;AN000;
 02D2  8D 3E 0000 E		  LEA	 DI,PROFILE_PATH	       ;; Move string to work area		;AN000;
				  .REPEAT			       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-18


 02D6                        2	$l87: 
 02D6  26: 8A 04		     MOV    AL,ES:[SI]		       ;;					;AN000;
 02D9  88 05			     MOV    [DI],AL		       ;;					;AN000;
 02DB  46			     INC    SI			       ;;					;AN000;
 02DC  47			     INC    DI			       ;;					;AN000;
				  .UNTIL <<BYTE PTR ES:[SI]> EQ 0>     ;;					;AN000;
 02DD  26: 80 3C 00          3						cmp BYTE PTR ES:[SI],0 
 02E1  75 F3                 6						jne $l87 
 02E3  C6 05 00			  MOV	 BYTE PTR [DI],0	       ;;					;AN000;
 02E6  C6 45 FD 50		  MOV	 BYTE PTR [DI]-3,"P"           ;; Change COM to PRO                     ;AN000;
 02EA  C6 45 FE 52		  MOV	 BYTE PTR [DI]-2,"R"           ;;                                       ;AN000;
 02EE  C6 45 FF 4F		  MOV	 BYTE PTR [DI]-1,"O"           ;;                                       ;AN000;
								       ;;					;AN000;
 02F2  5E			  POP	    SI			       ;;					;AN000;
 02F3  5F			  POP	    DI			       ;;					;AN000;
 02F4  07			  POP	    ES			       ;;					;AN000;
 02F5  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 02F6				COPY_ARGV0  ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   FILE_ERROR_PROC								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 02F6				FILE_ERROR_PROC  PROC		       ;;					;AN000;
 02F6  B8 000D			  MOV	AX,FILE_ERRORS		       ;;					;AN000;
 02F9  B9 0000			  MOV	CX,0			       ;;					;AN000;
 02FC  E8 0000 E		  CALL	DISP_ERROR		       ;;					;AN000;
 02FF  C6 06 000D R 01		  MOV	FILE_ERROR,YES		       ;;					;AN000;
 0304  C3			  RET				       ;;					;AN000;
 0305				FILE_ERROR_PROC  ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   GET_STATEMENT								;AN000;
				;;										;AN000;
				;; Input Parameters:								;AN000;
				;;   NONE									;AN000;
				;;										;AN000;
				;; Output Parameters:								;AN000;
				;;   PROFILE_LINE								;AN000;
				;;   RETURN CODE : 0 - successfull read 					;AN000;
				;;		 : 1 - end of file						;AN000;
				;;		 : 2 - error during read					;AN000;
				;;										;AN000;
				;;										;AN000;
				;; Data Structures Referenced:							;AN000;
				;;										;AN000;
				;; Description: 								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-19


				;;   Get a statement from the profile.						;AN000;
				;;   The file read in 512 byte buffers and parsed into				;AN000;
				;;   lines by the presence of a carriage return at the end of each line.	;AN000;
				;;										;AN000;
				;; Called By:									;AN000;
				;;   LOAD_PROFILE								;AN000;
				;;										;AN000;
				;; External Calls:								;AN000;
				;;   NONE									;AN000;
				;;										;AN000;
				;; Logic:									;AN000;
				;;   FOUND := FALSE								;AN000;
				;;   RETURN_CODE := 0								;AN000;
				;;   WHILE NOT FOUND DO 							;AN000;
				;;	IF end of buffer THEN							;AN000;
				;;	   Read next profile record into buffer 				;AN000;
				;;	   IF successful read THEN						;AN000;
				;;	      point to first byte in buffer					;AN000;
				;;	   ELSE 								;AN000;
				;;	      IF end of file THEN						;AN000;
				;;		 Close profile							;AN000;
				;;		 RETURN_CODE := 1						;AN000;
				;;		 FOUND := TRUE							;AN000;
				;;	      ELSE								;AN000;
				;;		 RETURN_CODE := 2						;AN000;
				;;		 FOUND := TRUE							;AN000;
				;;	      ENDIF								;AN000;
				;;	   ENDIF								;AN000;
				;;	ENDIF									;AN000;
				;;	copy byte to PROFILE_LINE						;AN000;
				;;	IF byte in buffer is a CR THEN						;AN000;
				;;	   FOUND := TRUE							;AN000;
				;;	ENDIF									;AN000;
				;;   ENDWHILE									;AN000;
				;;   RETURN									;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 0305  00			FOUND  DB   0			       ;;					;AN000;
								       ;;					;AN000;
 = 000D				CARRIAGE_RET	EQU 13		       ;;					;AN000;
 = 000A				LINE_FEED	EQU 10		       ;;					;AN000;
 0306  00			NEXT_BYTE	DB  0		       ;; Save area for byte just read		;AN000;
 = 0200				BUFFER_SIZE	EQU 512 	       ;;					;AN000;
 0307  0200[			FILE_BUFFER	DB  512 DUP(0)	       ;;					;AN000;
	   00			
			 ]	
				
 0507  0200			BUFFER_PTR	DW  512 	       ;;					;AN000;
 0509  0200			BUFFER_END	DW  512 	       ;;					;AN000;
 050B  00FF[			STMT_BUFFER	DB  255 DUP(0)	       ;;					;AN000;
	   00			
			 ]	
				
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-20


 060A  00					DB  ?		       ;; In case we have to insert a CR	;AN000;
 060B  00					DB  ?		       ;;  and a LF				;AN000;
 060C  00					DB  ?		       ;; Too put the "$" for displaying the    ;AN000;
								       ;;  line.				;AN000;
								       ;;					;AN000;
 060D  0000			STMT_END_INDEX	DW  ?		       ;;					;AN000;
 = 00FF				MAX_STMT_LEN	EQU 255 	       ;;					;AN000;
 060F  00			CR_FOUND	DB  0		       ;; 1 if we found a line terminator	;AN000;
								       ;;					;AN000;
 0610				GET_STATEMENT PROC		       ;;					;AN000;
								       ;;					;AN000;
 0610  C6 06 0305 R 00		  MOV  FOUND,NO 		       ;;					;AN000;
 0615  C6 06 0011 R 00		  MOV  STMT_ERROR,0		       ;; Clear error flags			;AN000;
 061A  33 FF			  XOR  DI,DI			       ;; Index for extracted statement 	;AN000;
 061C  8B 36 0507 R		  MOV  SI,BUFFER_PTR		       ;; Init file buffer ptr			;AN000;
								       ;;					;AN000;
 0620  A0 0306 R		  MOV  AL,NEXT_BYTE		       ;; Restore current byte			;AN000;
 0623  C6 06 060F R 00		  MOV  CR_FOUND,NO		       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				 .WHILE <FOUND EQ NO> AND	       ;; Keep parsing until we find a stmt	;AN000;
 0628                        2	$l89: 
 0628  80 3E 0305 R 00       3						cmp FOUND,NO 
 062D  75 6C                 6						jne $l90 
				 .WHILE <FILE_ERROR EQ NO> AND	       ;;  or a file error occurs		;AN000;
 062F  80 3E 000D R 00       3						cmp FILE_ERROR,NO 
 0634  75 65                 6						jne $l90 
				 .WHILE <END_OF_FILE EQ NO>	       ;;   or we reach end of file		;AN000;
 0636  80 3E 000F R 00       3						cmp END_OF_FILE,NO 
 063B  75 5E                 6						jne $l90 
				   .IF <CR_FOUND EQ YES>	       ;;					;AN000;
 063D  80 3E 060F R 01       3						cmp CR_FOUND,YES 
 0642  75 2D                 6						jne $l93 
				      .IF <AL EQ LINE_FEED>	       ;; Return the line feed as well		;AN000;
 0644  3C 0A                 3						cmp AL,LINE_FEED 
 0646  75 1F                 6						jne $l95 
					 .IF <DI NA MAX_STMT_LEN>      ;; Truncate lines longer than MAX	;AN000;
 0648  81 FF 00FF            3						cmp DI,MAX_STMT_LEN 
 064C  77 07                 6						ja $l99 
 064E  88 85 050B R			     MOV  STMT_BUFFER[DI],AL   ;;  MOVE TO statement buffer		;AN000;
 0652  47				     INC  DI		       ;; Point to next byte in file buffr	;AN000;
					  .ELSE 		       ;;					;AN000;
 0653  EB 0F                 3						jmp short $l98 
 0655                        2	$l99: 
 0655  80 0E 0011 R 02			      OR   STMT_ERROR,INVALID  ;; Line has been truncated > ERROR	;AN000;
 065A  C6 06 000E R 01			      MOV  PARSE_ERROR,YES     ;;					;AN000;
 065F  C6 06 0061 R 00			      MOV  BUILD_STATE,NO      ;;					;AN000;
					 .ENDIF 		       ;;					;AN000;
 0664                        2	$l98: 
 0664  E8 06DB R			  CALL GET_BYTE 	       ;; Get the first byte of next statement	;AN000;
				      .ENDIF			       ;;					;AN000;
 0667                        2	$l95: 
 0667  C6 06 0305 R 01		       MOV  FOUND,YES		       ;; Time to leave this WHILE		;AN000;
 066C  A2 0306 R		       MOV  NEXT_BYTE,AL	       ;; Save the byte we just read		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-21


				   .ELSE			       ;;					;AN000;
 066F  EB B7                 3						jmp short $l89 
 0671                        2	$l93: 
				      .IF <DI NA MAX_STMT_LEN>	       ;; Truncate lines longer than MAX	;AN000;
 0671  81 FF 00FF            3						cmp DI,MAX_STMT_LEN 
 0675  77 07                 6						ja $l104 
 0677  88 85 050B R			  MOV  STMT_BUFFER[DI],AL      ;; move byte to statement buffer 	;AN000;
 067B  47				  INC  DI		       ;; Point to next byte in file buffer	;AN000;
				      .ELSE			       ;;					;AN000;
 067C  EB 0F                 3						jmp short $l103 
 067E                        2	$l104: 
 067E  80 0E 0011 R 02			  OR   STMT_ERROR,INVALID      ;; Line has been truncated > ERROR	;AN000;
 0683  C6 06 000E R 01			  MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0688  C6 06 0061 R 00			  MOV  BUILD_STATE,NO	       ;;					;AN000;
				      .ENDIF			       ;;					;AN000;
 068D                        2	$l103: 
				      .IF <AL EQ CARRIAGE_RET>	       ;; Found a line terminator		;AN000;
 068D  3C 0D                 3						cmp AL,CARRIAGE_RET 
 068F  75 05                 6						jne $l107 
 0691  C6 06 060F R 01			  MOV  CR_FOUND,YES	       ;; Indicate carriage return found	;AN000;
				      .ENDIF			       ;;  and go through once more to		;AN000;
 0696                        2	$l107: 
 0696  E8 06DB R		       CALL GET_BYTE		       ;;   check for a line feed		;AN000;
				   .ENDIF			       ;;					;AN000;
				 .ENDWHILE			       ;;					;AN000;
 0699  EB 8D                 3						jmp $l89 
 069B                        2	$l90: 
								       ;;					;AN000;
				 .IF <STMT_BUFFER[DI-1] NE CARRIAGE_RET> AND		 ;;			;AN000;
 069B  80 BD 050A R 0D       3						cmp STMT_BUFFER[DI-1],CARRIAGE_RET 
 06A0  74 13                 6						je $l110 
				 .IF <STMT_BUFFER[DI-1] NE LINE_FEED>		      ;;			;AN000;
 06A2  80 BD 050A R 0A       3						cmp STMT_BUFFER[DI-1],LINE_FEED 
 06A7  74 0C                 6						je $l110 
 06A9  C6 85 050B R 0D		     MOV  STMT_BUFFER[DI],CARRIAGE_RET ;;					;AN000;
 06AE  C6 85 050C R 0A		     MOV  STMT_BUFFER[DI+1],LINE_FEED  ;;					;AN000;
 06B3  47			     INC  DI			       ;;					;AN000;
 06B4  47			     INC  DI			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 06B5                        2	$l110: 
 06B5  89 3E 060D R		  MOV STMT_END_INDEX,DI 	       ;;					;AN000;
 06B9  89 36 0507 R		  MOV BUFFER_PTR,SI		       ;; Save buffer ptr for next time 	;AN000;
								       ;;					;AN000;
				 .IF <END_OF_FILE EQ YES>	       ;;					;AN000;
 06BD  80 3E 000F R 01       3						cmp END_OF_FILE,YES 
 06C2  75 0B                 6						jne $l114 
				     .IF <DI EQ 0>		       ;; Clear carry if we read something	;AN000;
 06C4  83 FF 00              3						cmp DI,0 
 06C7  75 03                 6						jne $l117 
 06C9  F9				STC			       ;;  and no file error occured otherwise	;AN000;
				     .ELSE			       ;;   set carry indicating unsuccessful	;AN000;
 06CA  EB 0E                 3						jmp short $l113 
 06CC                        2	$l117: 
 06CC  F8				CLC			       ;;    get.				;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-22


				     .ENDIF			       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 06CD  EB 0B                 3						jmp short $l113 
 06CF                        2	$l114: 
				     .IF <FILE_ERROR EQ YES>	       ;;					;AN000;
 06CF  80 3E 000D R 01       3						cmp FILE_ERROR,YES 
 06D4  75 03                 6						jne $l122 
 06D6  F9				 STC			       ;;					;AN000;
				     .ELSE			       ;;					;AN000;
 06D7  EB 01                 3						jmp short $l113 
 06D9                        2	$l122: 
 06D9  F8				 CLC			       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 06DA                        2	$l113: 
 06DA  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 06DB				GET_STATEMENT ENDP		       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   GET_BYTE									;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 06DB				GET_BYTE      PROC		       ;;					;AN000;
								       ;;					;AN000;
				 .IF <SI EQ BUFFER_END> 	       ;; If buffer empty do another read	;AN000;
 06DB  3B 36 0509 R          3						cmp SI,BUFFER_END 
 06DF  75 2E                 6						jne $l125 
 06E1  B4 3F			     MOV  AH,3FH		       ;;					;AN000;
 06E3  BA 0307 R		     MOV  DX,OFFSET FILE_BUFFER        ;;					;AN000;
 06E6  B9 0200			     MOV  CX,BUFFER_SIZE	       ;;					;AN000;
 06E9  8B 1E 005F R		     MOV  BX,HANDLE		       ;;					;AN000;
 06ED  CD 21			     INT  21H			       ;;					;AN000;
				    .IF C			       ;; Carry set by DOS if file error	;AN000;
 06EF  73 05                 5						jnC $l129 
 06F1  E8 02F6 R			CALL FILE_ERROR_PROC	       ;;					;AN000;
				    .ELSE			       ;;					;AN000;
 06F4  EB 19                 3						jmp short $l125 
 06F6                        2	$l129: 
				       .IF <AX EQ 0>		       ;; End of file if AX=0			;AN000;
 06F6  3D 0000               3						cmp AX,0 
 06F9  75 0F                 6						jne $l133 
 06FB  C6 06 000F R 01			   MOV	END_OF_FILE,YES        ;;					;AN000;
 0700  B4 3E				   MOV	AH,3EH		       ;; Close the file			;AN000;
 0702  8B 1E 005F R			   MOV	BX,HANDLE	       ;;					;AN000;
 0706  CD 21				   INT	21H		       ;;					;AN000;
				       .ELSE			       ;;					;AN000;
 0708  EB 05                 3						jmp short $l125 
 070A                        2	$l133: 
 070A  A3 0509 R			   MOV BUFFER_END,AX	       ;; Number of bytes read			;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-23


 070D  33 F6				   XOR SI,SI		       ;; Buffer pointer := 0			;AN000;
				       .ENDIF			       ;;					;AN000;
				    .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 070F                        2	$l125: 
								       ;;					;AN000;
				 .IF <FILE_ERROR EQ YES> OR	       ;;					;AN000;
 070F  80 3E 000D R 01       3						cmp FILE_ERROR,YES 
 0714  74 07                 6						je $l138 
				 .IF <END_OF_FILE EQ YES>	       ;;					;AN000;
 0716  80 3E 000F R 01       3						cmp END_OF_FILE,YES 
 071B  75 03                 6						jne $l137 
 071D                        3	$l138: 
 071D  F9			     STC			       ;; Unsuccessful get			;AN000;
				 .ELSE				       ;;					;AN000;
 071E  EB 15                 3						jmp short $l136 
 0720                        2	$l137: 
				    .IF <<FILE_BUFFER[SI]> EQ 1AH>	;; cHECK for EOF marker 		;AN000;
 0720  80 BC 0307 R 1A       3						cmp FILE_BUFFER[SI],1AH 
 0725  75 08                 6						jne $l141 
 0727  C6 06 000F R 01			MOV END_OF_FILE,YES	       ;;					;AN000;
 072C  F9				STC			       ;;					;AN000;
				    .ELSE			       ;;					;AN000;
 072D  EB 06                 3						jmp short $l136 
 072F                        2	$l141: 
 072F  8A 84 0307 R			MOV  AL,FILE_BUFFER[SI] 	  ;; Return byte in AL			;AN000;
 0733  46				INC  SI 			  ;;					;AN000;
 0734  F8				CLC				  ;; Successful get			;AN000;
				    .ENDIF				  ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0735                        2	$l136: 
 0735  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 0736				GET_BYTE      ENDP		       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   GROW_SHARED_DATA								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 0736				GROW_SHARED_DATA  PROC		       ;;					;AN000;
 0736  53			  PUSH BX			       ;;					;AN000;
 0737  01 06 0080 R		  ADD  BLOCK_END,AX		       ;; Grow the current block by AX		;AN000;
 073B  8B 1E 0080 R		  MOV  BX,BLOCK_END		       ;;					;AN000;
				 .IF <BX A NB_FREE_BYTES>	       ;; Check for overflow			;AN000;
 073F  3B 1E 0000 E          3						cmp BX,NB_FREE_BYTES 
 0743  76 0A                 5						jnA $l144 
 0745  C6 06 0061 R 00		     MOV  BUILD_STATE,NO	       ;; Stop building shared data		;AN000;
 074A  C6 06 0010 R 01		     MOV  MEM_OVERFLOW,YES	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 074F                        2	$l144: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Page     1-24


 074F  5B			  POP  BX			       ;;					;AN000;
 0750  C3			  RET				       ;;					;AN000;
 0751				GROW_SHARED_DATA  ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
														;AN000;
 0751				CODE	ENDS			       ;;					;AN000;
					END									;AN000;

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-1


Macros:

		N a m e			Lines

.ELSE  . . . . . . . . . . . . .  	  21
.ELSEIF  . . . . . . . . . . . .  	  16
.ENDIF . . . . . . . . . . . . .  	  11
.ENDSELECT . . . . . . . . . . .  	  15
.ENDWHILE  . . . . . . . . . . .  	  10
.FOR . . . . . . . . . . . . . .  	  23
.IF  . . . . . . . . . . . . . .  	  13
.LEAVE . . . . . . . . . . . . .  	   1
.LOOP  . . . . . . . . . . . . .  	  12
.NEXT  . . . . . . . . . . . . .  	  20
.OTHERWISE . . . . . . . . . . .  	  21
.REPEAT  . . . . . . . . . . . .  	   9
.SELECT  . . . . . . . . . . . .  	   4
.THEN  . . . . . . . . . . . . .  	   6
.UNTIL . . . . . . . . . . . . .  	   1
.WHEN  . . . . . . . . . . . . .  	  24
.WHILE . . . . . . . . . . . . .  	  14

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

COLORPRINT_STR . . . . . . . . .  	0004	0004
  RED  . . . . . . . . . . . . .  	0000
  GREEN  . . . . . . . . . . . .  	0001
  BLUE . . . . . . . . . . . . .  	0002
  SELECT_MASK  . . . . . . . . .  	0003
COLORSELECT_STR  . . . . . . . .  	0002	0002
  NUM_SELECT_ESC . . . . . . . .  	0000
  SELECT_ESC . . . . . . . . . .  	0001
DISPLAYMODE_STR  . . . . . . . .  	0018	0010
  NEXT_DISP_MODE . . . . . . . .  	0000
  NUM_DISP_MODE  . . . . . . . .  	0002
  DISP_MODE_LIST_PTR . . . . . .  	0003
  BOX_WIDTH  . . . . . . . . . .  	0005
  BOX_HEIGHT . . . . . . . . . .  	0006
  NUM_PATTERNS . . . . . . . . .  	0007
  PATTERN_TAB_PTR  . . . . . . .  	0008
  NUM_GRAPHICS_ESC . . . . . . .  	000A
  GRAPHICS_ESC_PTR . . . . . . .  	000B
  LOW_BYT_COUNT_PTR  . . . . . .  	000D
  HGH_BYT_COUNT_PTR  . . . . . .  	000F
  NUM_SETUP_ESC  . . . . . . . .  	0011
  SETUP_ESC_PTR  . . . . . . . .  	0012
  NUM_RESTORE_ESC  . . . . . . .  	0014
  RESTORE_ESC_PTR  . . . . . . .  	0015
  PRINT_OPTIONS  . . . . . . . .  	0017
SHARED_DATA_AREA_STR . . . . . .  	000E	000A
  SD_TOTAL_SIZE  . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-2


  SWITCHES . . . . . . . . . . .  	0002
  HARDWARE_CONFIG  . . . . . . .  	0003
  PRINTER_TYPE . . . . . . . . .  	0004
  DARKADJUST_VALUE . . . . . . .  	0005
  NUM_PRT_COLOR  . . . . . . . .  	0006
  COLORPRINT_PTR . . . . . . . .  	0007
  NUM_PRT_BANDS  . . . . . . . .  	0009
  COLORSELECT_PTR  . . . . . . .  	000A
  DISPLAYMODE_PTR  . . . . . . .  	000C

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CODE . . . . . . . . . . . . . .  	0751	BYTE	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

BACKGROUND_SW  . . . . . . . . .  	NUMBER	0002	
BLACK_WHITE  . . . . . . . . . .  	NUMBER	0002	
BLOCK_END  . . . . . . . . . . .  	L WORD	0080	CODE	Global
BLOCK_START  . . . . . . . . . .  	L WORD	007E	CODE	Global
BOX  . . . . . . . . . . . . . .  	NUMBER	0004	
BUFFER . . . . . . . . . . . . .  	L BYTE	001F	CODE	Length = 0040
BUFFER_END . . . . . . . . . . .  	L WORD	0509	CODE
BUFFER_PTR . . . . . . . . . . .  	L WORD	0507	CODE
BUFFER_SIZE  . . . . . . . . . .  	NUMBER	0200	
BUILD_STATE  . . . . . . . . . .  	L BYTE	0061	CODE	Global

CARRAIGE_RET . . . . . . . . . .  	NUMBER	000D	
CARRIAGE_RET . . . . . . . . . .  	NUMBER	000D	
COLOR  . . . . . . . . . . . . .  	NUMBER	0001	
COLP . . . . . . . . . . . . . .  	NUMBER	0080	
COLS . . . . . . . . . . . . . .  	NUMBER	0040	
COPY_ARGV0 . . . . . . . . . . .  	N PROC	02BC	CODE	Length = 003A
CR_FOUND . . . . . . . . . . . .  	L BYTE	060F	CODE
CUR_PRINTER_TYPE . . . . . . . .  	V BYTE	0000	CODE	External
CUR_STMT . . . . . . . . . . . .  	L WORD	007C	CODE	Global

DARK . . . . . . . . . . . . . .  	NUMBER	0100	
DEFAULT_BOX  . . . . . . . . . .  	V BYTE	0000	CODE	External
DEFAULT_PATH . . . . . . . . . .  	L BYTE	0012	CODE
DISP . . . . . . . . . . . . . .  	NUMBER	0002	
DISP_ERROR . . . . . . . . . . .  	L NEAR	0000	CODE	External
DUPLICATE_PARM . . . . . . . . .  	NUMBER	0007	

EGA  . . . . . . . . . . . . . .  	NUMBER	0004	
END_OF_FILE  . . . . . . . . . .  	L BYTE	000F	CODE	Global
ERROR_DEVICE . . . . . . . . . .  	V WORD	0000	CODE	External

FILE_BUFFER  . . . . . . . . . .  	L BYTE	0307	CODE	Length = 0200
FILE_ERROR . . . . . . . . . . .  	L BYTE	000D	CODE	Global
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-3


FILE_ERRORS  . . . . . . . . . .  	NUMBER	000D	
FILE_ERROR_PROC  . . . . . . . .  	N PROC	02F6	CODE	Length = 000F
FILE_NOT_FOUND . . . . . . . . .  	NUMBER	0002	
FIRST_BLOCK  . . . . . . . . . .  	L WORD	0084	CODE	Global
FORMAT_NOT_CORRECT . . . . . . .  	NUMBER	0008	
FOUND  . . . . . . . . . . . . .  	L BYTE	0305	CODE

GET_BYTE . . . . . . . . . . . .  	N PROC	06DB	CODE	Length = 005B
GET_STATEMENT  . . . . . . . . .  	N PROC	0610	CODE	Length = 00CB
GR . . . . . . . . . . . . . . .  	NUMBER	0008	
GRAPHICS_INSTALL . . . . . . . .  	L NEAR	0000	CODE	External
GROUPS_DONE  . . . . . . . . . .  	L WORD	0078	CODE	Global
GROW_SHARED_DATA . . . . . . . .  	N PROC	0736	CODE	Global	Length = 001B

HANDLE . . . . . . . . . . . . .  	L WORD	005F	CODE

INCORRECT_DOS  . . . . . . . . .  	NUMBER	0001	
INSTALLED  . . . . . . . . . . .  	V BYTE	0000	CODE	External
INVALID  . . . . . . . . . . . .  	NUMBER	0002	
INVALID_B_SWITCH . . . . . . . .  	NUMBER	0011	
INVALID_COMBINATION  . . . . . .  	NUMBER	0006	
INVALID_PARM . . . . . . . . . .  	NUMBER	0005	
INVALID_PB . . . . . . . . . . .  	NUMBER	000F	
INVALID_PRT  . . . . . . . . . .  	NUMBER	0010	
INVALID_STMT . . . . . . . . . .  	NUMBER	000B	

LCD_BOX  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
LIMIT  . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
LINE_FEED  . . . . . . . . . . .  	NUMBER	000A	
LOAD_PROFILE . . . . . . . . . .  	N PROC	0087	CODE	Global	Length = 0147

MAX_BLOCK_END  . . . . . . . . .  	L WORD	0082	CODE	Global
MAX_STMT_LEN . . . . . . . . . .  	NUMBER	00FF	
MEM_OVERFLOW . . . . . . . . . .  	L BYTE	0010	CODE	Global
MISSING  . . . . . . . . . . . .  	NUMBER	0001	
MISSING_STMT . . . . . . . . . .  	NUMBER	000A	

NB_FREE_BYTES  . . . . . . . . .  	V WORD	0000	CODE	External
NEXT_BYTE  . . . . . . . . . . .  	L BYTE	0306	CODE
NO . . . . . . . . . . . . . . .  	NUMBER	0000	
NO_MEMORY  . . . . . . . . . . .  	NUMBER	0002	

OLD_ADAPTER  . . . . . . . . . .  	NUMBER	0010	
OPEN_FILE  . . . . . . . . . . .  	N PROC	0239	CODE	Length = 0083
OUT_SEQ_STMT . . . . . . . . . .  	NUMBER	000C	

PALACE . . . . . . . . . . . . .  	NUMBER	0001	
PARSE_COLORPRINT . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_COLORSELECT  . . . . . . .  	L NEAR	0000	CODE	External
PARSE_DARKADJUST . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_DISPLAYMODE  . . . . . . .  	L NEAR	0000	CODE	External
PARSE_ERROR  . . . . . . . . . .  	L BYTE	000E	CODE	Global
PARSE_GRAPHICS . . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_PRINTBOX . . . . . . . . .  	L NEAR	0000	CODE	External
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-4


PARSE_PRINTER  . . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_RESTORE  . . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_SETUP  . . . . . . . . . .  	L NEAR	0000	CODE	External
PARSE_VERB . . . . . . . . . . .  	L NEAR	0000	CODE	External
PATH_NOT_FOUND . . . . . . . . .  	NUMBER	0003	
PC_CONVERTIBLE . . . . . . . . .  	NUMBER	0008	
PREV_STMT  . . . . . . . . . . .  	L WORD	007A	CODE	Global
PRINTBOX_ID_LENGTH . . . . . . .  	V BYTE	0000	CODE	External
PRINTBOX_ID_PTR  . . . . . . . .  	V WORD	0000	CODE	External
PRINTER_TYPE_LENGTH  . . . . . .  	V BYTE	0000	CODE	External
PRINTER_TYPE_PARM  . . . . . . .  	V BYTE	0000	CODE	External
PROCESSED  . . . . . . . . . . .  	NUMBER	0002	
PROFILE_NOT_FOUND  . . . . . . .  	NUMBER	0009	
PROFILE_PATH . . . . . . . . . .  	V BYTE	0000	CODE	External
PRT  . . . . . . . . . . . . . .  	NUMBER	0001	
PRT_BOX_ERROR  . . . . . . . . .  	L BYTE	0086	CODE	Global
PTD_FOUND  . . . . . . . . . . .  	L BYTE	0062	CODE	Global

RC_DUPLICATE_PARMS . . . . . . .  	NUMBER	0064	
RC_EOL . . . . . . . . . . . . .  	NUMBER	-0001	
RC_INVLD_COMBINATION . . . . . .  	NUMBER	0063	
RC_NOT_IN_STR  . . . . . . . . .  	NUMBER	0008	
RC_NOT_IN_SW . . . . . . . . . .  	NUMBER	0003	
RC_NOT_IN_VAL  . . . . . . . . .  	NUMBER	0007	
RC_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
RC_TOO_MANY  . . . . . . . . . .  	NUMBER	0001	
RESIDENT_SHARED_DATA_SIZE  . . .  	V WORD	0000	CODE	External
REST . . . . . . . . . . . . . .  	NUMBER	0020	
REVERSE_SW . . . . . . . . . . .  	NUMBER	0001	
ROTATE . . . . . . . . . . . . .  	NUMBER	0001	
ROUNDUP  . . . . . . . . . . . .  	NUMBER	0002	

SEQUENCE . . . . . . . . . . . .  	NUMBER	0004	
SET  . . . . . . . . . . . . . .  	NUMBER	0010	
SHOW_PARSE_ERROR . . . . . . . .  	N PROC	01CE	CODE	Length = 006B
STDERR . . . . . . . . . . . . .  	NUMBER	0000		Communal
STDOUT . . . . . . . . . . . . .  	NUMBER	0000		Communal
STMTS_DONE . . . . . . . . . . .  	L WORD	0076	CODE	Global
STMT_BUFFER  . . . . . . . . . .  	L BYTE	050B	CODE	Global	Length = 00FF
STMT_END_INDEX . . . . . . . . .  	L WORD	060D	CODE
STMT_ERROR . . . . . . . . . . .  	L BYTE	0011	CODE	Global
STMT_NUM . . . . . . . . . . . .  	L WORD	000B	CODE
SUBLIST  . . . . . . . . . . . .  	L BYTE	0000	CODE
SUBLIST_SEG  . . . . . . . . . .  	L WORD	0004	CODE
SYNTAX_ERRORS  . . . . . . . . .  	NUMBER	000E	
SYSDISPMSG . . . . . . . . . . .  	L NEAR	0000	CODE	External
SYSPARSE . . . . . . . . . . . .  	L NEAR	0000	CODE	External

TEMP_SHARED_DATA_PTR . . . . . .  	V WORD	0000	CODE	External
TERMINATE_DISPLAYMODE  . . . . .  	L NEAR	0000	CODE	External
TERMINATE_PRINTER  . . . . . . .  	L NEAR	0000	CODE	External
TOO_MANY_PARMS . . . . . . . . .  	NUMBER	0003	

UNABLE_RELOAD  . . . . . . . . .  	NUMBER	0012	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-5



VALUE_NOT_ALLOWED  . . . . . . .  	NUMBER	0004	
VERB . . . . . . . . . . . . . .  	L BYTE	0063	CODE
VERB_JMP_TAB . . . . . . . . . .  	L WORD	0064	CODE

YES  . . . . . . . . . . . . . .  	NUMBER	0001	

$L1  . . . . . . . . . . . . . .  	L NEAR	0098	CODE
$L10 . . . . . . . . . . . . . .  	L NEAR	011E	CODE
$L103  . . . . . . . . . . . . .  	L NEAR	068D	CODE
$L104  . . . . . . . . . . . . .  	L NEAR	067E	CODE
$L107  . . . . . . . . . . . . .  	L NEAR	0696	CODE
$L11 . . . . . . . . . . . . . .  	L NEAR	010A	CODE
$L110  . . . . . . . . . . . . .  	L NEAR	06B5	CODE
$L113  . . . . . . . . . . . . .  	L NEAR	06DA	CODE
$L114  . . . . . . . . . . . . .  	L NEAR	06CF	CODE
$L117  . . . . . . . . . . . . .  	L NEAR	06CC	CODE
$L122  . . . . . . . . . . . . .  	L NEAR	06D9	CODE
$L125  . . . . . . . . . . . . .  	L NEAR	070F	CODE
$L129  . . . . . . . . . . . . .  	L NEAR	06F6	CODE
$L133  . . . . . . . . . . . . .  	L NEAR	070A	CODE
$L136  . . . . . . . . . . . . .  	L NEAR	0735	CODE
$L137  . . . . . . . . . . . . .  	L NEAR	0720	CODE
$L138  . . . . . . . . . . . . .  	L NEAR	071D	CODE
$L141  . . . . . . . . . . . . .  	L NEAR	072F	CODE
$L144  . . . . . . . . . . . . .  	L NEAR	074F	CODE
$L18 . . . . . . . . . . . . . .  	L NEAR	0149	CODE
$L19 . . . . . . . . . . . . . .  	L NEAR	0144	CODE
$L22 . . . . . . . . . . . . . .  	L NEAR	0153	CODE
$L25 . . . . . . . . . . . . . .  	L NEAR	016C	CODE
$L28 . . . . . . . . . . . . . .  	L NEAR	0181	CODE
$L31 . . . . . . . . . . . . . .  	L NEAR	01CD	CODE
$L32 . . . . . . . . . . . . . .  	L NEAR	0199	CODE
$L33 . . . . . . . . . . . . . .  	L NEAR	0196	CODE
$L36 . . . . . . . . . . . . . .  	L NEAR	01C6	CODE
$L38 . . . . . . . . . . . . . .  	L NEAR	01BD	CODE
$L39 . . . . . . . . . . . . . .  	L NEAR	01BA	CODE
$L4  . . . . . . . . . . . . . .  	L NEAR	00D9	CODE
$L42 . . . . . . . . . . . . . .  	L NEAR	01B5	CODE
$L47 . . . . . . . . . . . . . .  	L NEAR	01E9	CODE
$L5  . . . . . . . . . . . . . .  	L NEAR	0134	CODE
$L50 . . . . . . . . . . . . . .  	L NEAR	01FE	CODE
$L53 . . . . . . . . . . . . . .  	L NEAR	0213	CODE
$L56 . . . . . . . . . . . . . .  	L NEAR	02BB	CODE
$L57 . . . . . . . . . . . . . .  	L NEAR	026E	CODE
$L60 . . . . . . . . . . . . . .  	L NEAR	0269	CODE
$L63 . . . . . . . . . . . . . .  	L NEAR	0264	CODE
$L64 . . . . . . . . . . . . . .  	L NEAR	0254	CODE
$L69 . . . . . . . . . . . . . .  	L NEAR	02B8	CODE
$L72 . . . . . . . . . . . . . .  	L NEAR	02B3	CODE
$L73 . . . . . . . . . . . . . .  	L NEAR	0282	CODE
$L75 . . . . . . . . . . . . . .  	L NEAR	02AE	CODE
$L78 . . . . . . . . . . . . . .  	L NEAR	02A9	CODE
$L79 . . . . . . . . . . . . . .  	L NEAR	0299	CODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Profile Load Modules		;AN000;     Symbols-6


$L84 . . . . . . . . . . . . . .  	L NEAR	02C6	CODE
$L85 . . . . . . . . . . . . . .  	L NEAR	02CF	CODE
$L87 . . . . . . . . . . . . . .  	L NEAR	02D6	CODE
$L89 . . . . . . . . . . . . . .  	L NEAR	0628	CODE
$L90 . . . . . . . . . . . . . .  	L NEAR	069B	CODE
$L93 . . . . . . . . . . . . . .  	L NEAR	0671	CODE
$L95 . . . . . . . . . . . . . .  	L NEAR	0667	CODE
$L98 . . . . . . . . . . . . . .  	L NEAR	0664	CODE
$L99 . . . . . . . . . . . . . .  	L NEAR	0655	CODE
$LL1 . . . . . . . . . . . . . .  	NUMBER	0001	
$LL103 . . . . . . . . . . . . .  	NUMBER	0067	
$LL107 . . . . . . . . . . . . .  	NUMBER	006B	
$LL110 . . . . . . . . . . . . .  	NUMBER	006E	
$LL113 . . . . . . . . . . . . .  	NUMBER	0071	
$LL125 . . . . . . . . . . . . .  	NUMBER	007D	
$LL136 . . . . . . . . . . . . .  	NUMBER	0088	
$LL144 . . . . . . . . . . . . .  	NUMBER	0090	
$LL18  . . . . . . . . . . . . .  	NUMBER	0012	
$LL22  . . . . . . . . . . . . .  	NUMBER	0016	
$LL25  . . . . . . . . . . . . .  	NUMBER	0019	
$LL28  . . . . . . . . . . . . .  	NUMBER	001C	
$LL31  . . . . . . . . . . . . .  	NUMBER	001F	
$LL38  . . . . . . . . . . . . .  	NUMBER	0026	
$LL47  . . . . . . . . . . . . .  	NUMBER	002F	
$LL50  . . . . . . . . . . . . .  	NUMBER	0032	
$LL53  . . . . . . . . . . . . .  	NUMBER	0035	
$LL56  . . . . . . . . . . . . .  	NUMBER	0038	
$LL95  . . . . . . . . . . . . .  	NUMBER	005F	
$LL98  . . . . . . . . . . . . .  	NUMBER	0062	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  grload		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   1879 Source  Lines
  22110 Total   Lines
    508 Symbols

  45776 + 167661 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
