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


					PAGE	,132								;AN000;
					TITLE	DOS - GRAPHICS Command  -	Profile Load Modules #2 	;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:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;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:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;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:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;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 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;
			     C	;;										;AN000;
			     C	;; Documentation Reference:							;AN000;
			     C	;; ------------------------							;AN000;
			     C	;;										;AN000;
			     C	;;	 DOS 3.3 Message Retriever Interface Supplement. 			;AN000;
			     C	;;										;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-5


			     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;
			     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;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-6


 = 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;
					INCLUDE GRINST.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRLOAD.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRLOAD2.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRPARSE.EXT	       ;;					;AN000;
			     C	.LIST										;AN000;
					INCLUDE GRPATTRN.STR	       ;;					;AN000;
			     C	.LIST										;AN000;
			     C											;AN000;
			     C	TAB_ENTRY STRUC 	   ; TABLE DIRECTORY ENTRY USED TO LOCATED		;AN000;
			     C				   ;   WHAT TABLE OF PATTERNS TO USE			;AN000;
 0000  0000                  C	  TAB_OFFSET DW  ?	   ; ADDRESS OF THE PATTERN TABLE			;AN000;
 0002  0000                  C	  TAB_COPY   DW  ?	   ; ADDRESS OF PATTERN TABLE COPY IN SHARED DATA	;AN000;
 0004  0000                  C	  TAB_SIZE   DW  ?	   ; SIZE OF THE PATTERN TABLE				;AN000;
 0006  00                    C	  BOX_W_PAT  DB  ?	   ; BOX WIDTH	FOR PATTERNS IN THIS TABLE		;AN000;
 0007  00                    C	  BOX_H_PAT  DB  ?	   ; BOX HEIGHT FOR PATTERNS IN THIS TABLE		;AN000;
 0008  00                    C	  NB_INT     DB  ?	   ; NUMBER OF INTENSITIES IN THIS TABLE		;AN000;
 0009                        C	TAB_ENTRY ENDS									;AN000;
			     C											;AN000;
			     C	;-------------------------------------------------------------------------------;AN000;
			     C	; PATTERN TYPES:								;AN000;
			     C	;										;AN000;
			     C	;      The maximum intensity field represents the upper bound for using 	;AN000;
			     C	; a pattern (e.g.,  the acual intensity of a specific pattern may be		;AN000;
			     C	; 25 but, it will be used for printing intensities of up to 32).		;AN000;
			     C	; Intensities range from 0 = Black to 63 = White.				;AN000;
			     C	;										;AN000;
			     C	;      For example, a 4x2 structure represents the following pattern:		;AN000;
			     C	;		      ---							;AN000;
			     C	;										;AN000;
			     C	;		      BYTES:	C1_4X2	C2_4X2	C3_4X2	C4_4X2			;AN000;
			     C	;										;AN000;
			     C	;	Top dot to print ------>   0	   0	   0	   0			;AN000;
			     C	;										;AN000;
			     C	; Least significatnt bit ------>   0	   0	   0	   0			;AN000;
			     C	; of the byte is the dot							;AN000;
			     C	; printed below.								;AN000;
			     C	;										;AN000;
			     C	;-------------------------------------------------------------------------------;AN000;
			     C											;AN000;
			     C	PAT_4X2_STR STRUC			; PATTERN MADE OF 2X1 BOXES		;AN000;
 0000  00                    C	  MAX_4X2 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_4X2  DB	00B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_4X2  DB	00B			  ; Column 2				;AN000;
 0003  00                    C	  C3_4X2  DB	00B			  ; Column 3				;AN000;
 0004  00                    C	  C4_4X2  DB	00B			  ; Column 4 (Rightmost column) 	;AN000;
 0005                        C	PAT_4X2_STR ENDS								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-7


			     C											;AN000;
			     C	PAT_4X4_STR STRUC			; PATTERN MADE OF 2X2 BOXES		;AN000;
 0000  00                    C	  MAX_4X4 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_4X4  DB	0000B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_4X4  DB	0000B			  ; Column 2				;AN000;
 0003  00                    C	  C3_4X4  DB	0000B			  ; Column 3				;AN000;
 0004  00                    C	  C4_4X4  DB	0000B			  ; Column 4 (Rightmost column) 	;AN000;
 0005                        C	PAT_4X4_STR ENDS								;AN000;
			     C											;AN000;
			     C	PAT_6X2_STR STRUC			; PATTERN MADE OF 3X1 BOXES		;AN000;
 0000  00                    C	  MAX_6X2 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_6X2  DB	00B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_6X2  DB	00B			  ; Column 2				;AN000;
 0003  00                    C	  C3_6X2  DB	00B			  ; Column 3				;AN000;
 0004  00                    C	  C4_6X2  DB	00B			  ; Column 4				;AN000;
 0005  00                    C	  C5_6X2  DB	00B			  ; Column 5				;AN000;
 0006  00                    C	  C6_6X2  DB	00B			  ; Column 6 (Rightmost column) 	;AN000;
 0007                        C	PAT_6X2_STR ENDS								;AN000;
			     C											;AN000;
			     C	PAT_8X2_STR STRUC			; PATTERN MADE OF 4X1 BOXES		;AN000;
 0000  00                    C	  MAX_8X2 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_8X2  DB	00B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_8X2  DB	00B			  ; Column 2				;AN000;
 0003  00                    C	  C3_8X2  DB	00B			  ; Column 3				;AN000;
 0004  00                    C	  C4_8X2  DB	00B			  ; Column 4				;AN000;
 0005  00                    C	  C5_8X2  DB	00B			  ; Column 5				;AN000;
 0006  00                    C	  C6_8X2  DB	00B			  ; Column 6				;AN000;
 0007  00                    C	  C7_8X2  DB	00B			  ; Column 7				;AN000;
 0008  00                    C	  C8_8X2  DB	00B			  ; Column 8 (Rightmost column) 	;AN000;
 0009                        C	PAT_8X2_STR ENDS								;AN000;
			     C											;AN000;
			     C	PAT_8X4_STR STRUC			; PATTERN MADE OF 4X2 BOXES		;AN000;
 0000  00                    C	  MAX_8X4 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_8X4  DB	0000B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_8X4  DB	0000B			  ; Column 2				;AN000;
 0003  00                    C	  C3_8X4  DB	0000B			  ; Column 3				;AN000;
 0004  00                    C	  C4_8X4  DB	0000B			  ; Column 4				;AN000;
 0005  00                    C	  C5_8X4  DB	0000B			  ; Column 5				;AN000;
 0006  00                    C	  C6_8X4  DB	0000B			  ; Column 6				;AN000;
 0007  00                    C	  C7_8X4  DB	0000B			  ; Column 7				;AN000;
 0008  00                    C	  C8_8X4  DB	0000B			  ; Column 8 (Rightmost column) 	;AN000;
 0009                        C	PAT_8X4_STR ENDS								;AN000;
			     C											;AN000;
			     C	PAT_6X4_STR STRUC			; PATTERN MADE OF 3X2 BOXES		;AN000;
 0000  00                    C	  MAX_6X4 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_6X4  DB	0000B			  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_6X4  DB	0000B			  ; Column 2				;AN000;
 0003  00                    C	  C3_6X4  DB	0000B			  ; Column 3				;AN000;
 0004  00                    C	  C4_6X4  DB	0000B			  ; Column 4				;AN000;
 0005  00                    C	  C5_6X4  DB	0000B			  ; Column 5				;AN000;
 0006  00                    C	  C6_6X4  DB	0000B			  ; Column 6 (Rightmost column) 	;AN000;
 0007                        C	PAT_6X4_STR ENDS								;AN000;
			     C											;AN000;
			     C	PAT_8X6_STR STRUC			; PATTERN MADE OF 4X3 BOXES		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-8


 0000  00                    C	  MAX_8X6 DB	?			  ; Maximum intensity			;AN000;
 0001  00                    C	  C1_8X6  DB	000000B 		  ; Column 1 (Leftmost column)		;AN000;
 0002  00                    C	  C2_8X6  DB	000000B 		  ; Column 2				;AN000;
 0003  00                    C	  C3_8X6  DB	000000B 		  ; Column 3				;AN000;
 0004  00                    C	  C4_8X6  DB	000000B 		  ; Column 4				;AN000;
 0005  00                    C	  C5_8X6  DB	000000B 		  ; Column 5				;AN000;
 0006  00                    C	  C6_8X6  DB	000000B 		  ; Column 6				;AN000;
 0007  00                    C	  C7_8X6  DB	000000B 		  ; Column 7				;AN000;
 0008  00                    C	  C8_8X6  DB	000000B 		  ; Column 8 (Rightmost column) 	;AN000;
 0009                        C	PAT_8X6_STR ENDS								;AN000;
					INCLUDE GRPATTRN.EXT	       ;;					;AN000;
			     C	PAGE	,132									;AN000;
			     C	.LIST										;AN000;
			     C	EXTRN PAT_4X2:BYTE								;AN000;
			     C	EXTRN PAT_4X4:BYTE								;AN000;
			     C	EXTRN PAT_6X2:BYTE								;AN000;
			     C	EXTRN PAT_8X2:BYTE								;AN000;
			     C	EXTRN PAT_6X4:BYTE								;AN000;
			     C	EXTRN PAT_8X4:BYTE								;AN000;
			     C	EXTRN PAT_8X6:BYTE								;AN000;
			     C	EXTRN TAB_DIRECTORY:NEAR							;AN000;
			     C	EXTRN TAB_DIR_NB_ENTRIES:BYTE							;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Public Symbols								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
				   PUBLIC PARSE_GRAPHICS	       ;;					;AN000;
				   PUBLIC PARSE_COLORSELECT	       ;;					;AN000;
				   PUBLIC PARSE_COLORPRINT	       ;;					;AN000;
				   PUBLIC PARSE_DARKADJUST	       ;;					;AN000;
				   PUBLIC LIMIT 		       ;;					;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;
								       ;;					;AN000;
 0000				RESULT_BUFFER	LABEL BYTE	       ;; general purpose result buffer 	;AN000;
 0000  00					    DB	 ?	       ;; operand type				;AN000;
 0001  00			RESULT_TAG	    DB	 0	       ;; operand tag				;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-9


 0002  0000					    DW	 ?	       ;; pointer to synonym/keyword		;AN000;
 0004  00 00 00 00		RESULT_VAL	    DB	 ?,?,?,?       ;; returned numeric value		;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   PARSE_GRAPHICS								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 0008				GRAPHICS_PARSE_PARMS  LABEL WORD       ;; Parser control blocks 		;AN000;
 0008  000E R				    DW	 GRAPHICS_P	       ;;					;AN000;
 000A  02				    DB	 2		       ;; # of lists				;AN000;
 000B  00				    DB	 0		       ;; # items in delimeter list		;AN000;
 000C  01				    DB	 1		       ;; # items in end-of-line list		;AN000;
 000D  3B				    DB	 ';'                   ;; ';' used for comments                 ;AN000;
								       ;;					;AN000;
 000E  00 01			GRAPHICS_P   DB   0,1		       ;; Required, max parms			;AN000;
 0010  0014 R				    DW	 GRAPHICS_P1	       ;;					;AN000;
 0012  00				    DB	 0		       ;; # Switches				;AN000;
 0013  00				    DB	 0		       ;; # keywords				;AN000;
								       ;;					;AN000;
 0014  A000			GRAPHICS_P1 DW	 0A000H 	       ;; Numeric OR string			;AN000;
 0016  0002				    DW	 2		       ;; Capitalize				;AN000;
 0018  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 001A  001D R				    DW	 GRAPHICS_P1V	       ;; Value list				;AN000;
 001C  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 001D  03			GRAPHICS_P1V	DB   3		       ;; # of value lists			;AN000;
 001E  01				    DB	 1		       ;; # of range numerics			;AN000;
 001F  01				    DB	 1		       ;; tag					;AN000;
 0020  00000000 000000FF		    DD	 0,255		       ;; range 0..255				;AN000;
 0028  00				    DB	 0		       ;; 0 - no actual numerics		;AN000;
 0029  02				    DB	 2		       ;; 2 STRING VALUES			;AN000;
 002A  02				    DB	 2		       ;; tag					;AN000;
 002B  0030 R				    DW	 LOWCOUNT_STR	       ;; ptr					;AN000;
 002D  03				    DB	 3		       ;; tag					;AN000;
 002E  0039 R				    DW	 HIGHCOUNT_STR	       ;; ptr					;AN000;
								       ;;					;AN000;
 0030  4C 4F 57 43 4F 55	lowcount_str  db  'LOWCOUNT',0         ;;                                       ;AN000;
       4E 54 00			
 0039  48 49 47 48 43 4F	HIGHcount_str  db  'HIGHCOUNT',0       ;;                                       ;AN000;
       55 4E 54 00		
								       ;;					;AN000;
								       ;;					;AN000;
 0043  00			LOWCOUNT_FOUND	 DB  NO 	       ;;					;AN000;
 0044  00			HIGHCOUNT_FOUND  DB  NO 	       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 0045				PARSE_GRAPHICS	PROC		       ;;					;AN000;
								       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-10


 0045  C7 06 0000 E 0008	  MOV  CUR_STMT,GR		       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND DISP>        ;;					;AN000;
 004B  F7 06 0000 E 0002     3						test STMTS_DONE,DISP 
 0051  75 0F                 6						jnz $l1 
 0053  80 0E 0000 E 01		     OR  STMT_ERROR,MISSING	       ;;					;AN000;
 0058  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 005D  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0062                        2	$l1: 
								       ;;					;AN000;
				 .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 0062  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0067  75 0E                 6						jne $l4 
 0069  8B 3E 0000 E		     MOV  DI,BLOCK_START	       ;;					;AN000;
 006D  A1 0000 E		     MOV  AX,BLOCK_END		       ;;					;AN000;
 0070  89 43 0B			     MOV  [BP+DI].GRAPHICS_ESC_PTR,AX  ;; Set pointer to GRAPHICS seq		;AN000;
 0073  C6 43 0A 00		     MOV  [BP+DI].NUM_GRAPHICS_ESC,0   ;; Init sequence size			;AN000;
				 .ENDIF 			       ;;					;AN000;
 0077                        2	$l4: 
								       ;;					;AN000;
 0077  C6 06 0043 R 00		  MOV  LOWCOUNT_FOUND,NO	       ;; Flags to indicate whether the LOW	;AN000;
 007C  C6 06 0044 R 00		  MOV  HIGHCOUNT_FOUND,NO	       ;;  and HIGHCOUNT parms were found	;AN000;
								       ;;					;AN000;
 0081  83 0E 0000 E 08		  OR   STMTS_DONE,GR		       ;; Indicate GRAPHICS found		;AN000;
								       ;;					;AN000;
 0086  A1 0000 E		  MOV  AX,PREV_STMT		       ;; Terminate any preceeding groups	;AN000;
 0089  09 06 0000 E		  OR   GROUPS_DONE,AX		       ;;					;AN000;
								       ;;					;AN000;
 008D  BF 0008 R		  MOV  DI,OFFSET GRAPHICS_PARSE_PARMS  ;; parse parms				;AN000;
								       ;; SI => the line to parse		;AN000;
 0090  33 D2			  XOR  DX,DX			       ;;					;AN000;
				 .REPEAT			       ;;					;AN000;
 0092                        2	$l7: 
 0092  33 C9			    XOR  CX,CX			       ;;					;AN000;
 0094  E8 0000 E		    CALL SYSPARSE		       ;;					;AN000;
								       ;;					;AN000;
				   .IF <AX EQ 0> NEAR		       ;; If PARM is valid			;AN000;
 0097  3D 0000               3						cmp AX,0 
 009A  74 03                 6						je $+5 
 009C  E9 015F R             5						jmp $l10 
 009F  8A 1E 0001 R			MOV  BL,RESULT_TAG	       ;;					;AN000;
				       .SELECT			       ;;					;AN000;
				       .WHEN <BL EQ 1>		       ;; Escape byte				;AN000;
 00A3  80 FB 01              3						cmp BL,1 
 00A6  75 25                 6						jne $l13 
 00A8  50				  PUSH AX		       ;;					;AN000;
 00A9  B8 0001				  MOV	AX,1		       ;; Add a byte to the sequence		;AN000;
 00AC  E8 0000 E			  CALL	GROW_SHARED_DATA       ;; Update block end			;AN000;
					 .IF <BUILD_STATE EQ YES>      ;;					;AN000;
 00AF  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 00B4  75 13                 6						jne $l15 
 00B6  57				     PUSH DI		       ;;					;AN000;
 00B7  8B 3E 0000 E			     MOV  DI,BLOCK_START       ;;					;AN000;
 00BB  FE 43 0A				     INC  [BP+DI].NUM_GRAPHICS_ESC ;; Bump number of bytes in sequence	;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-11


 00BE  8B 3E 0000 E			     MOV  DI,BLOCK_END	       ;;					;AN000;
 00C2  A0 0004 R			     MOV  AL,RESULT_VAL        ;; Get esc byte from result buffer	;AN000;
 00C5  88 43 FF				     MOV  [BP+DI-1],AL	       ;; Store at end of sequence		;AN000;
 00C8  5F				     POP  DI		       ;;					;AN000;
					 .ENDIF 		       ;;					;AN000;
 00C9                        2	$l15: 
 00C9  58				  POP  AX		       ;;					;AN000;
				       .WHEN <BL EQ 2>		       ;; LOWCOUNT				;AN000;
 00CA  E9 0173 R             3						jmp $l9 
 00CD                        2	$l13: 
 00CD  80 FB 02              3						cmp BL,2 
 00D0  75 44                 6						jne $l18 
					  .IF <LOWCOUNT_FOUND EQ NO>   ;;					;AN000;
 00D2  80 3E 0043 R 00       3						cmp LOWCOUNT_FOUND,NO 
 00D7  75 2B                 6						jne $l21 
 00D9  C6 06 0043 R 01			       MOV   LOWCOUNT_FOUND,YES ;;					;AN000;
 00DE  50				       PUSH AX		       ;;					;AN000;
 00DF  B8 0001				       MOV   AX,1	       ;; Add a byte to the sequence		;AN000;
 00E2  E8 0000 E			       CALL  GROW_SHARED_DATA  ;; Update block end			;AN000;
					      .IF <BUILD_STATE EQ YES> ;;					;AN000;
 00E5  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 00EA  75 15                 6						jne $l23 
 00EC  57					  PUSH DI	       ;;					;AN000;
 00ED  8B 3E 0000 E				  MOV  DI,BLOCK_START  ;;					;AN000;
 00F1  FE 43 0A					  INC  [BP+DI].NUM_GRAPHICS_ESC ;; Bump number of bytes in seq. ;AN000;
 00F4  A1 0000 E				  MOV  AX,BLOCK_END    ;; Save pointer to low byte		;AN000;
 00F7  48					  DEC  AX	       ;;					;AN000;
 00F8  89 43 0D					  MOV  [BP+DI].LOW_BYT_COUNT_PTR,AX				;AN000;
 00FB  8B F8					  MOV  DI,AX	       ;;					;AN000;
 00FD  C6 03 00					  MOV  BYTE PTR[BP+DI],0 ;; Store 0 in place of count		;AN000;
 0100  5F					  POP  DI	       ;;					;AN000;
					      .ENDIF		       ;;					;AN000;
 0101                        2	$l23: 
 0101  58				       POP  AX		       ;;					;AN000;
								       ;;					;AN000;
					  .ELSE 		       ;;					;AN000;
 0102  EB 6F                 3						jmp short $l9 
 0104                        2	$l21: 
 0104  80 0E 0000 E 02			       OR  STMT_ERROR,INVALID  ;; Duplicate LOWCOUNT parms		;AN000;
 0109  C6 06 0000 E 01			       MOV  PARSE_ERROR,YES    ;;					;AN000;
 010E  C6 06 0000 E 00			       MOV  BUILD_STATE,NO     ;;					;AN000;
					  .ENDIF		       ;;					;AN000;
				       .WHEN <BL EQ 3>		       ;; HIGHCOUNT				;AN000;
 0113  EB 5E                 3						jmp short $l9 
 0115  90                    3						nop 
 0116                        2	$l18: 
 0116  80 FB 03              3						cmp BL,3 
 0119  75 58                 6						jne $l9 
					  .IF <HIGHCOUNT_FOUND EQ NO>  ;;					;AN000;
 011B  80 3E 0044 R 00       3						cmp HIGHCOUNT_FOUND,NO 
 0120  75 2B                 6						jne $l30 
 0122  C6 06 0044 R 01			      MOV   HIGHCOUNT_FOUND,YES ;;					;AN000;
 0127  50				      PUSH AX		       ;;					;AN000;
 0128  B8 0001				      MOV   AX,1	       ;; Add a byte to the sequence		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-12


 012B  E8 0000 E			      CALL  GROW_SHARED_DATA   ;; Update block end			;AN000;
					     .IF <BUILD_STATE EQ YES>  ;;					;AN000;
 012E  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0133  75 15                 6						jne $l32 
 0135  57					 PUSH DI	       ;;					;AN000;
 0136  8B 3E 0000 E				 MOV  DI,BLOCK_START   ;;					;AN000;
 013A  FE 43 0A					 INC  [BP+DI].NUM_GRAPHICS_ESC ;; Bump number of bytes in sequen;AN000;
 013D  A1 0000 E				 MOV  AX,BLOCK_END     ;; Save pointer to high byte		;AN000;
 0140  48					 DEC  AX	       ;; Block end always points 1 ahead	;AN000;
 0141  89 43 0F					 MOV  [BP+DI].HGH_BYT_COUNT_PTR,AX				;AN000;
 0144  8B F8					 MOV  DI,AX	       ;;					;AN000;
 0146  C6 03 00					 MOV  BYTE PTR[BP+DI],0 ;; Store 0 in place of count		;AN000;
 0149  5F					 POP  DI	       ;;					;AN000;
					     .ENDIF		       ;;					;AN000;
 014A                        2	$l32: 
 014A  58				      POP  AX		       ;;					;AN000;
					  .ELSE 		       ;;					;AN000;
 014B  EB 26                 3						jmp short $l9 
 014D                        2	$l30: 
 014D  80 0E 0000 E 02			       OR  STMT_ERROR,INVALID  ;; Duplicate HIGHCOUNT parms		;AN000;
 0152  C6 06 0000 E 01			       MOV  PARSE_ERROR,YES    ;;					;AN000;
 0157  C6 06 0000 E 00			       MOV  BUILD_STATE,NO     ;;					;AN000;
					  .ENDIF		       ;;					;AN000;
				       .ENDSELECT		       ;;					;AN000;
				   .ELSE NEAR			       ;;					;AN000;
 015C  EB 15                 3						jmp short $l9 
 015E  90                    3						nop 
 015F                        2	$l10: 
				      .IF <AX NE -1>		       ;;					;AN000;
 015F  3D FFFF               3						cmp AX,-1 
 0162  74 0F                 6						je $l9 
 0164  80 0E 0000 E 02			  OR   STMT_ERROR,INVALID      ;; parm is invalid			;AN000;
 0169  C6 06 0000 E 01			  MOV  PARSE_ERROR,YES	       ;;					;AN000;
 016E  C6 06 0000 E 00			  MOV  BUILD_STATE,NO	       ;;					;AN000;
				      .ENDIF			       ;;					;AN000;
				   .ENDIF			       ;;					;AN000;
 0173                        2	$l9: 
				 .UNTIL <AX EQ -1> NEAR 	       ;;					;AN000;
 0173  3D FFFF               3						cmp AX,-1 
 0176  74 03                 6						je $+5 
 0178  E9 0092 R             5						jmp $l7 
								       ;;					;AN000;
				 .IF  <LOWCOUNT_FOUND EQ NO> OR        ;;					;AN000;
 017B  80 3E 0043 R 00       3						cmp LOWCOUNT_FOUND,NO 
 0180  74 07                 6						je $l42 
				 .IF  <HIGHCOUNT_FOUND EQ NO>	       ;; Missing LOWCOUNT/HIGHCOUNT parms	;AN000;
 0182  80 3E 0044 R 00       3						cmp HIGHCOUNT_FOUND,NO 
 0187  75 0F                 6						jne $l40 
 0189                        3	$l42: 
 0189  80 0E 0000 E 02		      OR   STMT_ERROR,INVALID	       ;;					;AN000;
 018E  C6 06 0000 E 01		      MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0193  C6 06 0000 E 00		      MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0198                        2	$l40: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-13


								       ;;					;AN000;
 0198  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 0199				PARSE_GRAPHICS	ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   PARSE_COLORSELECT								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 0199				COLORSELECT_PARSE_PARMS  LABEL WORD    ;; Parser control blocks 		;AN000;
 0199  019F R				    DW	 COLORSELECT_P	       ;;					;AN000;
 019B  02				    DB	 2		       ;; # of lists				;AN000;
 019C  00				    DB	 0		       ;; # items in delimeter list		;AN000;
 019D  01				    DB	 1		       ;; # items in end-of-line list		;AN000;
 019E  3B				    DB	 ';'                   ;; ';' used for comments                 ;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 019F				COLORSELECT_P	   LABEL BYTE	       ;;					;AN000;
 019F  01 01			CS_NUM_REQ    DB   1,1		       ;; Required, max parms			;AN000;
 01A1				COLORSELECT_PARM   LABEL  WORD	       ;;					;AN000;
 01A1  0000			CS_POSITIONAL DW   ?		       ;; Pointer to our positional		;AN000;
 01A3  00				      DB   0		       ;; # Switches				;AN000;
 01A4  00				      DB   0		       ;; # keywords				;AN000;
								       ;;					;AN000;
 01A5  2000			COLORSELECT_P0	DW   2000H	       ;; sTRING - display type 		;AN000;
 01A7  0002				    DW	 2		       ;; Capitalize				;AN000;
 01A9  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 01AB  01AE R				    DW	 COLORSELECT_P0V       ;; Value list				;AN000;
 01AD  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
 01AE  00			COLORSELECT_P0V    DB	0		   ;; # of value lists			;AN000;
				;	    DB	 0		       ;; # of range numerics			;AN000;
				;	    DB	 0		       ;; # of discrete numerics		;AN000;
				;	    DB	 1		       ;; # of strings				;AN000;
				;	    DB	 1		       ;; tag					;AN000;
				;COLORSELECT_P0V1 DW   ?		   ;; string				;AN000;
								       ;;					;AN000;
 01AF  8001			COLORSELECT_P1	DW   8001H		  ;; Numeric - escape sequence byte	;AN000;
 01B1  0000				    DW	 0		       ;; No Capitalize 			;AN000;
 01B3  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 01B5  01B8 R				    DW	 COLORSELECT_P1V	  ;; Value list 			;AN000;
 01B7  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
 01B8  01			COLORSELECT_P1V    DB	1		  ;; # of value lists			;AN000;
 01B9  01				    DB	 1		       ;; # of range numerics			;AN000;
 01BA  01				    DB	 1		       ;; tag					;AN000;
 01BB  00000001 000000FF		    DD	 1,255		       ;; range 1..255				;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 01C3  0000			SEQ_LENGTH_PTR	DW   0		       ;; Number of colorselect statements	;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-14


								       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 01C5				PARSE_COLORSELECT  PROC 	       ;;					;AN000;
								      ;;					;AN000;
 01C5  C7 06 0000 E 0040	  MOV  CUR_STMT,COLS		       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND PRT>	       ;; PRINTER  statemnet must have been	;AN000;
 01CB  F7 06 0000 E 0001     3						test STMTS_DONE,PRT 
 01D1  75 0F                 6						jnz $l43 
 01D3  80 0E 0000 E 01		     OR  STMT_ERROR,MISSING	       ;;  processed				;AN000;
 01D8  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 01DD  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 01E2                        2	$l43: 
								       ;;					;AN000;
				 .IF <BIT STMTS_DONE AND DISP+COLP>    ;; DISDPLAYMODE and COLORPRINT  stmts	;AN000;
 01E2  F7 06 0000 E 0082     3						test STMTS_DONE,DISP+COLP 
 01E8  74 0F                 6						jz $l46 
 01EA  80 0E 0000 E 04		     OR  STMT_ERROR,SEQUENCE	       ;;  should NOT have been processed	;AN000;
 01EF  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 01F4  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 01F9                        2	$l46: 
								       ;;					;AN000;
				 .IF <BIT GROUPS_DONE AND COLS>        ;; Check for a previous group of 	;AN000;
 01F9  F7 06 0000 E 0040     3						test GROUPS_DONE,COLS 
 01FF  74 0F                 6						jz $l49 
 0201  80 0E 0000 E 04		     OR  STMT_ERROR,SEQUENCE	       ;;  COLORSELECTS within this PTD 	;AN000;
 0206  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 020B  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0210                        2	$l49: 
								       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND COLS>        ;; If first COLORSELECT...		;AN000;
 0210  F7 06 0000 E 0040     3						test STMTS_DONE,COLS 
 0216  75 17                 6						jnz $l52 
 0218  C6 06 035B R 00 90	      MOV  NUM_BANDS,0		       ;; Init number of COLORSELECT bands	;AN000;
				     .IF <BUILD_STATE EQ YES>	       ;; Update count and pointer in the	;AN000;
 021E  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0223  75 0A                 6						jne $l52 
 0225  A1 0000 E			 MOV  AX,BLOCK_END	       ;;  Shared Data Area header		;AN000;
 0228  89 46 0A				 MOV  [BP].COLORSELECT_PTR,AX  ;; Set pointer to COLORSELECT info	;AN000;
 022B  C6 46 09 00			 MOV  [BP].NUM_PRT_BANDS,0     ;; Init NUMBER OF COLORSELECTS		;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 022F                        2	$l52: 
								       ;;					;AN000;
 022F  83 0E 0000 E 40		  OR   STMTS_DONE,COLS		       ;; Indicate found			;AN000;
				 .IF <PREV_STMT NE COLS> THEN	       ;; Terminate any preceeding groups	;AN000;
 0234  83 3E 0000 E 40       3						cmp PREV_STMT,COLS 
 0239  74 07                 6						je $l58 
 023B  A1 0000 E		     MOV  AX,PREV_STMT		       ;;  except for COLORSELECT		;AN000;
 023E  09 06 0000 E		     OR   GROUPS_DONE,AX	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-15


 0242                        2	$l58: 
								       ;;					;AN000;
 0242  B8 0001			  MOV	AX,1			       ;; Make room for sequence length field	;AN000;
 0245  E8 0000 E		  CALL	GROW_SHARED_DATA	       ;;					;AN000;
				 .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 0248  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 024D  75 11                 6						jne $l61 
 024F  FE 46 09			     INC  [BP].NUM_PRT_BANDS	       ;; Inc number of selects 		;AN000;
 0252  8B 3E 0000 E		     MOV  DI,BLOCK_END		       ;;					;AN000;
 0256  C6 43 FF 00		     MOV  BYTE PTR [BP+DI-1],0	       ;; Init sequence length field		;AN000;
 025A  8D 45 FF			     LEA  AX,[DI-1]		       ;;					;AN000;
 025D  A3 01C3 R		     MOV  SEQ_LENGTH_PTR,AX	       ;; Save pointer to length of sequence	;AN000;
				 .ENDIF 			       ;;					;AN000;
 0260                        2	$l61: 
								       ;;					;AN000;
 0260  BF 0199 R		  MOV  DI,OFFSET COLORSELECT_PARSE_PARMS  ;; parse parms			;AN000;
 0263  C6 06 019F R 01		  MOV  CS_NUM_REQ,1		       ;; Change to 1 required parameters	;AN000;
 0268  B8 01A5 R		  MOV  AX,OFFSET COLORSELECT_P0        ;; Point to control block for the band	;AN000;
 026B  A3 01A1 R		  MOV  CS_POSITIONAL,AX 	       ;;  ID.	(Dealing with only 1 positional ;AN000;
								       ;;  parameter at a time was the only way ;AN000;
								       ;;   I could get SYSPARSE to handle	;AN000;
								       ;;    the COLORSELECT syntax!)		;AN000;
								       ;; SI => the line to parse		;AN000;
 026E  33 D2			  XOR  DX,DX			       ;;					;AN000;
 0270  33 C9			  XOR  CX,CX			       ;;					;AN000;
								       ;;					;AN000;
 0272  E8 0000 E		  CALL SYSPARSE 		       ;; PARSE the band ID			;AN000;
				 .IF <AX NE 0>			       ;;					;AN000;
 0275  3D 0000               3						cmp AX,0 
 0278  74 10                 6						je $l64 
 027A  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;					;AN000;
 027F  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0284  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
 0289  C3			     RET			       ;;  statement.				;AN000;
				 .ENDIF 			       ;;					;AN000;
 028A                        2	$l64: 
								       ;;					;AN000;
 028A  06			  PUSH	ES			       ;; We got a band id........		;AN000;
 028B  57			  PUSH	DI			       ;;					;AN000;
								       ;;					;AN000;
 028C  C4 3E 0004 R		  LES	DI,DWORD PTR RESULT_VAL        ;; Get pointer to the parsed band id	;AN000;
				 .IF <<BYTE PTR ES:[DI+1]> NE 0>       ;; Make sure the band id is only 	;AN000;
 0290  26: 80 7D 01 00       3						cmp BYTE PTR ES:[DI+1],0 
 0295  74 0F                 6						je $l67 
 0297  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;  one byte long			;AN000;
 029C  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 02A1  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 02A6                        2	$l67: 
								       ;;					;AN000;
 02A6  8A 1E 035B R		  MOV  BL,NUM_BANDS		       ;;					;AN000;
 02AA  32 FF			  XOR  BH,BH			       ;;					;AN000;
				 .IF <BX EQ MAX_BANDS> THEN	       ;; Watch out for too many COLORSELECTs	;AN000;
 02AC  81 FB 0008            3						cmp BX,MAX_BANDS 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-16


 02B0  75 11                 6						jne $l71 
 02B2  80 0E 0000 E 04		     OR  STMT_ERROR,SEQUENCE	       ;;					;AN000;
 02B7  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 02BC  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 02C1  EB 0D                 3						jmp short $l70 
 02C3                        2	$l71: 
 02C3  D1 E3			     SHL  BX,1			       ;; calc index to store band in value list;AN000;
 02C5  26: 8A 05		     MOV  AL,ES:[DI]		       ;; get BAND ID FROM PARSEr		;AN000;
 02C8  88 87 0374 R		     MOV  BAND_VAL_LIST[BX],AL	       ;;					;AN000;
 02CC  FE 06 035B R		     INC  NUM_BANDS		       ;; bump number of bands			;AN000;
				 .ENDIF 			       ;;					;AN000;
 02D0                        2	$l70: 
								       ;;					;AN000;
 02D0  5F			  POP  DI			       ;;					;AN000;
 02D1  07			  POP  ES			       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 02D2  B8 01AF R		  MOV  AX,OFFSET COLORSELECT_P1        ;; Switch to numeric positional parm!!!	;AN000;
 02D5  A3 01A1 R		  MOV  CS_POSITIONAL,AX 	       ;;					;AN000;
 02D8  C6 06 019F R 00		  MOV  CS_NUM_REQ,0		       ;; Change to 0 required parameters	;AN000;
 02DD  33 D2			  XOR  DX,DX			       ;; PARSE the sequence of escape bytes	;AN000;
				 .REPEAT			       ;;					;AN000;
 02DF                        2	$l74: 
 02DF  33 C9			    XOR  CX,CX			       ;;					;AN000;
 02E1  E8 0000 E		    CALL SYSPARSE		       ;;					;AN000;
				   .IF <AX EQ 0>		       ;; If esc byte is valid			;AN000;
 02E4  3D 0000               3						cmp AX,0 
 02E7  75 23                 6						jne $l77 
 02E9  50				  PUSH AX		       ;;					;AN000;
 02EA  B8 0001				  MOV	AX,1		       ;; Add a byte to the sequence		;AN000;
 02ED  E8 0000 E			  CALL	GROW_SHARED_DATA       ;; Update block end			;AN000;
					 .IF <BUILD_STATE EQ YES>      ;;					;AN000;
 02F0  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 02F5  75 12                 6						jne $l79 
 02F7  57				     PUSH DI		       ;;					;AN000;
 02F8  8B 3E 01C3 R			     MOV  DI,SEQ_LENGTH_PTR    ;;					;AN000;
 02FC  FE 03				     INC  byte ptr [BP+DI]     ;; Bump number of bytes in sequence	;AN000;
 02FE  8B 3E 0000 E			     MOV  DI,BLOCK_END	       ;;					;AN000;
 0302  A0 0004 R			     MOV  AL,RESULT_VAL        ;; Get esc byte from result buffer	;AN000;
 0305  88 43 FF				     MOV  [BP+DI-1],AL	       ;; Store at end of sequence		;AN000;
 0308  5F				     POP  DI		       ;;					;AN000;
					 .ENDIF 		       ;;					;AN000;
 0309                        2	$l79: 
 0309  58				  POP  AX		       ;;					;AN000;
				   .ELSE			       ;;					;AN000;
 030A  EB 14                 3						jmp short $l76 
 030C                        2	$l77: 
				      .IF <AX NE -1>		       ;;					;AN000;
 030C  3D FFFF               3						cmp AX,-1 
 030F  74 0F                 6						je $l76 
 0311  80 0E 0000 E 02			  OR   STMT_ERROR,INVALID      ;; parm is invalid			;AN000;
 0316  C6 06 0000 E 01			  MOV  PARSE_ERROR,YES	       ;;					;AN000;
 031B  C6 06 0000 E 00			  MOV  BUILD_STATE,NO	       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-17


				      .ENDIF			       ;;					;AN000;
				   .ENDIF			       ;;					;AN000;
 0320                        2	$l76: 
				 .UNTIL <AX EQ -1> NEAR 	       ;;					;AN000;
 0320  3D FFFF               3						cmp AX,-1 
 0323  75 BA                 6						jne $l74 
 0325  90                    6					nop 
 0326  90                    6					nop 
 0327  90                    6					nop 
								       ;;					;AN000;
								       ;;					;AN000;
 0328  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 0329				PARSE_COLORSELECT  ENDP 	       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   PARSE_COLORPRINT								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
 0329				COLORPRINT_PARSE_PARMS	LABEL WORD    ;; Parser control blocks			;AN000;
 0329  032F R				    DW	 COLORPRINT_P	      ;;					;AN000;
 032B  02				    DB	 2		       ;; # of lists				;AN000;
 032C  00				    DB	 0		       ;; # items in delimeter list		;AN000;
 032D  01				    DB	 1		       ;; # items in end-of-line list		;AN000;
 032E  3B				    DB	 ';'                   ;; ';' used for comments                 ;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 032F				COLORPRINT_P	  LABEL BYTE	       ;;					;AN000;
 032F  03 04				      DB   3,4		       ;; Required,MAX				;AN000;
 0331  033B R				      DW   COLORPRINT_P0       ;; Numeric: Red value			;AN000;
 0333  033B R				      DW   COLORPRINT_P0       ;; Green value				;AN000;
 0335  033B R				      DW   COLORPRINT_P0       ;; Blue value				;AN000;
 0337  034F R				      DW   COLORPRINT_P1       ;; Band ID ... REPEATING 		;AN000;
 0339  00				      DB   0		       ;; # Switches				;AN000;
 033A  00				      DB   0		       ;; # keywords				;AN000;
								       ;;					;AN000;
 033B  8000			COLORPRINT_P0  DW   8000H	       ;; Numeric - RGB value			;AN000;
 033D  0000				    DW	 0		       ;; No Capitalize 			;AN000;
 033F  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 0341  0344 R				    DW	 COLORPRINT_P0V        ;; Value list				;AN000;
 0343  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
 0344  01			COLORPRINT_P0V	 DB   1 	       ;; # of value lists			;AN000;
 0345  01				    DB	 1		       ;; # of range numerics			;AN000;
 0346  01				    DB	 1		       ;; tag					;AN000;
 0347  00000000 0000003F		    DD	 0,63		       ;; range 0..63				;AN000;
								       ;;					;AN000;
 034F  2001			COLORPRINT_P1  DW   2001H	       ;; sTRING - Band ID			;AN000;
 0351  0002				    DW	 2		       ;; Capitalize				;AN000;
 0353  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 0355  0358 R				    DW	 COLORPRINT_P1V        ;; Value list				;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-18


 0357  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
 0358  03			COLORPRINT_P1V	  DB   3	       ;; # of value lists			;AN000;
 0359  00				    DB	 0		       ;; 0 - no range numerics 		;AN000;
 035A  00				    DB	 0		       ;; 0 - no actual numerics		;AN000;
 035B  00			NUM_BANDS   DB	 0		       ;; number of band values 		;AN000;
 035C  01				    DB	 01H		       ;; tag: TAGS ARE BAND MASKS		;AN000;
 035D  0374 R				    DW	 BAND_PTR_1	       ;; ptr					;AN000;
 035F  02				    DB	 02H		       ;; tag					;AN000;
 0360  0376 R				    DW	 BAND_PTR_2	       ;; ptr					;AN000;
 0362  04				    DB	 04H		       ;; tag					;AN000;
 0363  0378 R				    DW	 BAND_PTR_3	       ;; ptr					;AN000;
 0365  08				    DB	 08H		       ;; tag					;AN000;
 0366  037A R				    DW	 BAND_PTR_4	       ;; ptr					;AN000;
 0368  10				    DB	 10H		       ;; tag					;AN000;
 0369  037C R				    DW	 BAND_PTR_5	       ;; ptr					;AN000;
 036B  20				    DB	 20H		       ;; tag					;AN000;
 036C  037E R				    DW	 BAND_PTR_6	       ;; ptr					;AN000;
 036E  40				    DB	 40H		       ;; tag					;AN000;
 036F  0380 R				    DW	 BAND_PTR_7	       ;; ptr					;AN000;
 0371  80				    DB	 80H		       ;; tag					;AN000;
 0372  0382 R				    DW	 BAND_PTR_8	       ;; ptr					;AN000;
								       ;;					;AN000;
 = 0008				MAX_BANDS   EQU  8		       ;;					;AN000;
								       ;;					;AN000;
 0374				BAND_VAL_LIST  LABEL BYTE	       ;;					;AN000;
 0374  00 00			BAND_PTR_1  DB	 ?,0		       ;;					;AN000;
 0376  00 00			BAND_PTR_2  DB	 ?,0		       ;;					;AN000;
 0378  00 00			BAND_PTR_3  DB	 ?,0		       ;;					;AN000;
 037A  00 00			BAND_PTR_4  DB	 ?,0		       ;;					;AN000;
 037C  00 00			BAND_PTR_5  DB	 ?,0		       ;;					;AN000;
 037E  00 00			BAND_PTR_6  DB	 ?,0		       ;;					;AN000;
 0380  00 00			BAND_PTR_7  DB	 ?,0		       ;;					;AN000;
 0382  00 00			BAND_PTR_8  DB	 ?,0		       ;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 0384				PARSE_COLORPRINT  PROC		       ;;					;AN000;
								       ;;					;AN000;
 0384  C7 06 0000 E 0080	  MOV  CUR_STMT,COLP		       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND PRT>	       ;; PRINTER  statemnet must have been	;AN000;
 038A  F7 06 0000 E 0001     3						test STMTS_DONE,PRT 
 0390  75 0F                 6						jnz $l86 
 0392  80 0E 0000 E 01		     OR  STMT_ERROR,MISSING	       ;;  processed				;AN000;
 0397  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 039C  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 03A1                        2	$l86: 
								       ;;					;AN000;
				 .IF <BIT STMTS_DONE AND DISP>	       ;; DISPLAYMODE stmts			;AN000;
 03A1  F7 06 0000 E 0002     3						test STMTS_DONE,DISP 
 03A7  74 0F                 6						jz $l89 
 03A9  80 0E 0000 E 04		     OR  STMT_ERROR,SEQUENCE	       ;;  should NOT have been processed	;AN000;
 03AE  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 03B3  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-19


				 .ENDIF 			       ;;					;AN000;
 03B8                        2	$l89: 
								       ;;					;AN000;
				 .IF <BIT GROUPS_DONE AND COLP>        ;; Check for a previous group of 	;AN000;
 03B8  F7 06 0000 E 0080     3						test GROUPS_DONE,COLP 
 03BE  74 0F                 6						jz $l92 
 03C0  80 0E 0000 E 04		     OR  STMT_ERROR,SEQUENCE	       ;;  COLORPRINTS within this PTD		;AN000;
 03C5  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 03CA  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 03CF                        2	$l92: 
								       ;;					;AN000;
 03CF  C6 06 0000 E 01		  MOV  CUR_PRINTER_TYPE,COLOR	       ;;					;AN000;
								       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND COLP>        ;; If first COLORPRINT...		;AN000;
 03D4  F7 06 0000 E 0080     3						test STMTS_DONE,COLP 
 03DA  75 15                 6						jnz $l95 
				     .IF <BUILD_STATE EQ YES>	       ;; Update count and pointer in the	;AN000;
 03DC  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 03E1  75 0E                 6						jne $l95 
 03E3  A1 0000 E			 MOV  AX,BLOCK_END	       ;;  Shared Data Area header		;AN000;
 03E6  89 46 07				 MOV  [BP].COLORPRINT_PTR,AX   ;; Set pointer to COLORPRINT info	;AN000;
 03E9  C6 46 04 01			 MOV  [BP].PRINTER_TYPE,COLOR  ;;					;AN000;
 03ED  C6 46 06 00			 MOV  [BP].NUM_PRT_COLOR,0     ;; Init NUMBER OF COLORPRINTS		;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 03F1                        2	$l95: 
								       ;;					;AN000;
				 .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 03F1  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 03F6  75 03                 6						jne $l101 
 03F8  FE 46 06			     INC  [BP].NUM_PRT_COLOR	       ;; Inc number of selects 		;AN000;
				 .ENDIF 			       ;;					;AN000;
 03FB                        2	$l101: 
								       ;;					;AN000;
 03FB  81 0E 0000 E 0080	  OR   STMTS_DONE,COLP		       ;; Indicate found			;AN000;
				 .IF <PREV_STMT NE COLP> THEN	       ;; Terminate any preceeding groups	;AN000;
 0401  81 3E 0000 E 0080     3						cmp PREV_STMT,COLP 
 0407  74 07                 6						je $l104 
 0409  A1 0000 E		     MOV  AX,PREV_STMT		       ;;  except for COLORPRINT		;AN000;
 040C  09 06 0000 E		     OR   GROUPS_DONE,AX	       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0410                        2	$l104: 
								       ;;					;AN000;
 0410  A1 0000 E		  MOV	AX,BLOCK_END		       ;; Start a new block			;AN000;
 0413  A3 0000 E		  MOV	BLOCK_START,AX		       ;;					;AN000;
 0416  B8 0004			  MOV	AX,SIZE COLORPRINT_STR	       ;; Make room for COLORPRINT info 	;AN000;
 0419  E8 0000 E		  CALL	GROW_SHARED_DATA	       ;;					;AN000;
								       ;;					;AN000;
 041C  BF 0329 R		  MOV  DI,OFFSET COLORPRINT_PARSE_PARMS  ;; parse parms 			;AN000;
								       ;; SI => the line to parse		;AN000;
 041F  33 D2			  XOR  DX,DX			       ;;					;AN000;
 0421  33 C9			  XOR  CX,CX			       ;;					;AN000;
								       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-20


 0423  E8 0000 E		  CALL SYSPARSE 		       ;; PARSE the RED value			;AN000;
				 .IF <AX NE 0>			       ;;					;AN000;
 0426  3D 0000               3						cmp AX,0 
 0429  74 11                 6						je $l108 
 042B  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;					;AN000;
 0430  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0435  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 043A  EB 12                 3						jmp short $l107 
 043C                        2	$l108: 
				     .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 043C  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0441  75 0B                 6						jne $l107 
 0443  57				 PUSH  DI		       ;;					;AN000;
 0444  8B 3E 0000 E			 MOV  DI,BLOCK_START	       ;;					;AN000;
 0448  A0 0004 R			 MOV  AL,RESULT_VAL	       ;; Store RED value in COLORPRINT info	;AN000;
 044B  88 03				 MOV  [BP+DI].RED,AL	       ;;					;AN000;
 044D  5F				 POP  DI		       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 044E                        2	$l107: 
								       ;;					;AN000;
 044E  E8 0000 E		  CALL SYSPARSE 		       ;; PARSE the GREEN value 		;AN000;
				 .IF <AX NE 0>			       ;;					;AN000;
 0451  3D 0000               3						cmp AX,0 
 0454  74 11                 6						je $l115 
 0456  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;					;AN000;
 045B  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0460  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 0465  EB 13                 3						jmp short $l114 
 0467                        2	$l115: 
				     .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 0467  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 046C  75 0C                 6						jne $l114 
 046E  57				 PUSH  DI		       ;;					;AN000;
 046F  8B 3E 0000 E			 MOV  DI,BLOCK_START	       ;;					;AN000;
 0473  A0 0004 R			 MOV  AL,RESULT_VAL	       ;; Store GREEN value in COLORPRINT info	;AN000;
 0476  88 43 01				 MOV  [BP+DI].GREEN,AL	       ;;					;AN000;
 0479  5F				 POP  DI		       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 047A                        2	$l114: 
								       ;;					;AN000;
 047A  E8 0000 E		  CALL SYSPARSE 		       ;; PARSE the BLUE value			;AN000;
				 .IF <AX NE 0>			       ;;					;AN000;
 047D  3D 0000               3						cmp AX,0 
 0480  74 11                 6						je $l122 
 0482  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;					;AN000;
 0487  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 048C  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 0491  EB 13                 3						jmp short $l121 
 0493                        2	$l122: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-21


				     .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 0493  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0498  75 0C                 6						jne $l121 
 049A  57				 PUSH  DI		       ;;					;AN000;
 049B  8B 3E 0000 E			 MOV  DI,BLOCK_START	       ;;					;AN000;
 049F  A0 0004 R			 MOV  AL,RESULT_VAL	       ;; Store BLUE value in COLORPRINT info	;AN000;
 04A2  88 43 02				 MOV  [BP+DI].BLUE,AL	       ;;					;AN000;
 04A5  5F				 POP  DI		       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 04A6                        2	$l121: 
								       ;;					;AN000;
				 .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 04A6  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 04AB  75 0A                 6						jne $l128 
 04AD  57			     PUSH  DI			       ;;					;AN000;
 04AE  8B 3E 0000 E		     MOV   DI,BLOCK_START	       ;;					;AN000;
 04B2  C6 43 03 00		     MOV   [BP+DI].SELECT_MASK,0       ;; Initialize band select mask		;AN000;
 04B6  5F			     POP   DI			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 04B7                        2	$l128: 
 04B7  33 D2			  XOR  DX,DX			       ;; For each band found "OR" the item     ;AN000;
				 .REPEAT			       ;;  tag into the select mask		;AN000;
 04B9                        2	$l131: 
 04B9  B9 0003			    MOV  CX,3			       ;; Avoid getting too many parms error	;AN000;
 04BC  E8 0000 E		    CALL SYSPARSE		       ;;  from parser				;AN000;
				   .IF <AX EQ 0>		       ;;					;AN000;
 04BF  3D 0000               3						cmp AX,0 
 04C2  75 15                 6						jne $l134 
				     .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 04C4  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 04C9  75 22                 6						jne $l133 
 04CB  57				  PUSH	DI		       ;;					;AN000;
 04CC  8B 3E 0000 E			  MOV	DI,BLOCK_START	       ;;					;AN000;
 04D0  A0 0001 R			  MOV	AL,RESULT_TAG	       ;;					;AN000;
 04D3  08 43 03				  OR	[BP+DI].SELECT_MASK,AL ;; OR the mask for this band into the	;AN000;
								       ;;  select mask for this color		;AN000;
 04D6  5F				  POP	DI		       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				   .ELSE			       ;;					;AN000;
 04D7  EB 14                 3						jmp short $l133 
 04D9                        2	$l134: 
				      .IF <AX NE -1>		       ;;					;AN000;
 04D9  3D FFFF               3						cmp AX,-1 
 04DC  74 0F                 6						je $l133 
 04DE  80 0E 0000 E 02			  OR   STMT_ERROR,INVALID      ;; parm is invalid			;AN000;
 04E3  C6 06 0000 E 01			  MOV  PARSE_ERROR,YES	       ;;					;AN000;
 04E8  C6 06 0000 E 00			  MOV  BUILD_STATE,NO	       ;;					;AN000;
				      .ENDIF			       ;;					;AN000;
				   .ENDIF			       ;;					;AN000;
 04ED                        2	$l133: 
				 .UNTIL <AX EQ -1> NEAR 	       ;;					;AN000;
 04ED  3D FFFF               3						cmp AX,-1 
 04F0  75 C7                 6						jne $l131 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-22


 04F2  90                    6					nop 
 04F3  90                    6					nop 
 04F4  90                    6					nop 
								       ;;					;AN000;
 04F5  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 04F6				PARSE_COLORPRINT  ENDP		       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;;										;AN000;
				;; Module Name: 								;AN000;
				;;   PARSE_DARKADJUST								;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
														;AN000;
 04F6				DARKADJUST_PARSE_PARMS	LABEL WORD    ;; Parser control blocks			;AN000;
 04F6  04FC R				    DW	 DARKADJUST_P	      ;;					;AN000;
 04F8  02				    DB	 2		       ;; # of lists				;AN000;
 04F9  00				    DB	 0		       ;; # items in delimeter list		;AN000;
 04FA  01				    DB	 1		       ;; # items in end-of-line list		;AN000;
 04FB  3B				    DB	 ';'                   ;; ';' used for comments                 ;AN000;
								       ;;					;AN000;
								       ;;					;AN000;
 04FC				DARKADJUST_P	  LABEL BYTE	       ;;					;AN000;
 04FC  01 01				      DB   1,1		       ;; Required,MAX				;AN000;
 04FE  0502 R				      DW   DARKADJUST_P0       ;; Numeric: adjust value 		;AN000;
 0500  00				      DB   0		       ;; # Switches				;AN000;
 0501  00				      DB   0		       ;; # keywords				;AN000;
								       ;;					;AN000;
 0502  4000			DARKADJUST_P0  DW   4000H	       ;; Signed Numeric - adjust value 	;AN000;
 0504  0000				    DW	 0		       ;; No Capitalize 			;AN000;
 0506  0000 R				    DW	 RESULT_BUFFER	       ;; Result buffer 			;AN000;
 0508  050B R				    DW	 DARKADJUST_P0V        ;; Value list				;AN000;
 050A  00				    DB	 0		       ;; Synomyms				;AN000;
								       ;;					;AN000;
 050B  01			DARKADJUST_P0V	 DB   1 	       ;; # of value lists			;AN000;
 050C  01				    DB	 1		       ;; # of range numerics			;AN000;
 050D  01				    DB	 1		       ;; tag					;AN000;
 050E  FFFFFFC1 0000003F		    DD	 -63,63 	       ;; range -63,63				;AN000;
				;;;;***********************************;;					;AN000;
								       ;;					;AN000;
														;AN000;
 0516				PARSE_DARKADJUST  PROC		       ;;					;AN000;
								       ;;					;AN000;
 0516  C7 06 0000 E 0100	  MOV  CUR_STMT,DARK		       ;;					;AN000;
				 .IF <BIT STMTS_DONE NAND PRT>	       ;; PRINTER  statemnet must have been	;AN000;
 051C  F7 06 0000 E 0001     3						test STMTS_DONE,PRT 
 0522  75 0F                 6						jnz $l143 
 0524  80 0E 0000 E 01		     OR  STMT_ERROR,MISSING	       ;;  processed				;AN000;
 0529  C6 06 0000 E 01			MOV  PARSE_ERROR,YES	       ;;					;AN000;
 052E  C6 06 0000 E 00			MOV  BUILD_STATE,NO	       ;;					;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Page     1-23


				 .ENDIF 			       ;;					;AN000;
 0533                        2	$l143: 
								       ;;					;AN000;
								       ;;					;AN000;
 0533  81 0E 0000 E 0100	  OR   STMTS_DONE,DARK		       ;; Indicate found			;AN000;
								       ;; Terminate any preceeding groups	;AN000;
 0539  A1 0000 E		  MOV  AX,PREV_STMT		       ;;					;AN000;
 053C  09 06 0000 E		  OR   GROUPS_DONE,AX		       ;;					;AN000;
								       ;;					;AN000;
 0540  BF 04F6 R		  MOV  DI,OFFSET DARKADJUST_PARSE_PARMS  ;; parse parms 			;AN000;
								       ;; SI => the line to parse		;AN000;
 0543  33 D2			  XOR  DX,DX			       ;;					;AN000;
 0545  33 C9			  XOR  CX,CX			       ;;					;AN000;
								       ;;					;AN000;
 0547  E8 0000 E		  CALL SYSPARSE 		       ;; PARSE the ADJUST VALUE		;AN000;
				 .IF <AX NE 0>			       ;;					;AN000;
 054A  3D 0000               3						cmp AX,0 
 054D  74 11                 6						je $l147 
 054F  80 0E 0000 E 02		     OR  STMT_ERROR,INVALID	       ;;					;AN000;
 0554  C6 06 0000 E 01		     MOV  PARSE_ERROR,YES	       ;;					;AN000;
 0559  C6 06 0000 E 00		     MOV  BUILD_STATE,NO	       ;;					;AN000;
				 .ELSE				       ;;					;AN000;
 055E  EB 24                 3						jmp short $l146 
 0560                        2	$l147: 
				     .IF <BUILD_STATE EQ YES>	       ;;					;AN000;
 0560  80 3E 0000 E 01       3						cmp BUILD_STATE,YES 
 0565  75 06                 6						jne $l150 
 0567  A0 0004 R			 MOV  AL,RESULT_VAL	       ;;					;AN000;
 056A  88 46 05				 MOV  [BP].DARKADJUST_VALUE,AL ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
 056D                        2	$l150: 
 056D  E8 0000 E		      CALL SYSPARSE		       ;; CHECK FOR EXTRA PARMS 		;AN000;
				     .IF <AX NE -1>		       ;;					;AN000;
 0570  3D FFFF               3						cmp AX,-1 
 0573  74 0F                 6						je $l146 
 0575  80 0E 0000 E 02			OR  STMT_ERROR,INVALID	       ;;					;AN000;
 057A  C6 06 0000 E 01			MOV PARSE_ERROR,YES	       ;;					;AN000;
 057F  C6 06 0000 E 00			MOV BUILD_STATE,NO	       ;;					;AN000;
				     .ENDIF			       ;;					;AN000;
				 .ENDIF 			       ;;					;AN000;
 0584                        2	$l146: 
								       ;;					;AN000;
 0584  C3			  RET				       ;;					;AN000;
								       ;;					;AN000;
 0585				PARSE_DARKADJUST  ENDP		       ;;					;AN000;
														;AN000;
 0585				LIMIT	LABEL NEAR		       ;;					;AN000;
 0585				CODE	ENDS			       ;;					;AN000;
					END									;AN000;

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;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
PAT_4X2_STR  . . . . . . . . . .  	0005	0005
  MAX_4X2  . . . . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-2


  C1_4X2 . . . . . . . . . . . .  	0001
  C2_4X2 . . . . . . . . . . . .  	0002
  C3_4X2 . . . . . . . . . . . .  	0003
  C4_4X2 . . . . . . . . . . . .  	0004
PAT_4X4_STR  . . . . . . . . . .  	0005	0005
  MAX_4X4  . . . . . . . . . . .  	0000
  C1_4X4 . . . . . . . . . . . .  	0001
  C2_4X4 . . . . . . . . . . . .  	0002
  C3_4X4 . . . . . . . . . . . .  	0003
  C4_4X4 . . . . . . . . . . . .  	0004
PAT_6X2_STR  . . . . . . . . . .  	0007	0007
  MAX_6X2  . . . . . . . . . . .  	0000
  C1_6X2 . . . . . . . . . . . .  	0001
  C2_6X2 . . . . . . . . . . . .  	0002
  C3_6X2 . . . . . . . . . . . .  	0003
  C4_6X2 . . . . . . . . . . . .  	0004
  C5_6X2 . . . . . . . . . . . .  	0005
  C6_6X2 . . . . . . . . . . . .  	0006
PAT_6X4_STR  . . . . . . . . . .  	0007	0007
  MAX_6X4  . . . . . . . . . . .  	0000
  C1_6X4 . . . . . . . . . . . .  	0001
  C2_6X4 . . . . . . . . . . . .  	0002
  C3_6X4 . . . . . . . . . . . .  	0003
  C4_6X4 . . . . . . . . . . . .  	0004
  C5_6X4 . . . . . . . . . . . .  	0005
  C6_6X4 . . . . . . . . . . . .  	0006
PAT_8X2_STR  . . . . . . . . . .  	0009	0009
  MAX_8X2  . . . . . . . . . . .  	0000
  C1_8X2 . . . . . . . . . . . .  	0001
  C2_8X2 . . . . . . . . . . . .  	0002
  C3_8X2 . . . . . . . . . . . .  	0003
  C4_8X2 . . . . . . . . . . . .  	0004
  C5_8X2 . . . . . . . . . . . .  	0005
  C6_8X2 . . . . . . . . . . . .  	0006
  C7_8X2 . . . . . . . . . . . .  	0007
  C8_8X2 . . . . . . . . . . . .  	0008
PAT_8X4_STR  . . . . . . . . . .  	0009	0009
  MAX_8X4  . . . . . . . . . . .  	0000
  C1_8X4 . . . . . . . . . . . .  	0001
  C2_8X4 . . . . . . . . . . . .  	0002
  C3_8X4 . . . . . . . . . . . .  	0003
  C4_8X4 . . . . . . . . . . . .  	0004
  C5_8X4 . . . . . . . . . . . .  	0005
  C6_8X4 . . . . . . . . . . . .  	0006
  C7_8X4 . . . . . . . . . . . .  	0007
  C8_8X4 . . . . . . . . . . . .  	0008
PAT_8X6_STR  . . . . . . . . . .  	0009	0009
  MAX_8X6  . . . . . . . . . . .  	0000
  C1_8X6 . . . . . . . . . . . .  	0001
  C2_8X6 . . . . . . . . . . . .  	0002
  C3_8X6 . . . . . . . . . . . .  	0003
  C4_8X6 . . . . . . . . . . . .  	0004
  C5_8X6 . . . . . . . . . . . .  	0005
  C6_8X6 . . . . . . . . . . . .  	0006
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-3


  C7_8X6 . . . . . . . . . . . .  	0007
  C8_8X6 . . . . . . . . . . . .  	0008
SHARED_DATA_AREA_STR . . . . . .  	000E	000A
  SD_TOTAL_SIZE  . . . . . . . .  	0000
  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
TAB_ENTRY  . . . . . . . . . . .  	0009	0006
  TAB_OFFSET . . . . . . . . . .  	0000
  TAB_COPY . . . . . . . . . . .  	0002
  TAB_SIZE . . . . . . . . . . .  	0004
  BOX_W_PAT  . . . . . . . . . .  	0006
  BOX_H_PAT  . . . . . . . . . .  	0007
  NB_INT . . . . . . . . . . . .  	0008

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CODE . . . . . . . . . . . . . .  	0585	BYTE	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

BACKGROUND_SW  . . . . . . . . .  	NUMBER	0002	
BAND_PTR_1 . . . . . . . . . . .  	L BYTE	0374	CODE
BAND_PTR_2 . . . . . . . . . . .  	L BYTE	0376	CODE
BAND_PTR_3 . . . . . . . . . . .  	L BYTE	0378	CODE
BAND_PTR_4 . . . . . . . . . . .  	L BYTE	037A	CODE
BAND_PTR_5 . . . . . . . . . . .  	L BYTE	037C	CODE
BAND_PTR_6 . . . . . . . . . . .  	L BYTE	037E	CODE
BAND_PTR_7 . . . . . . . . . . .  	L BYTE	0380	CODE
BAND_PTR_8 . . . . . . . . . . .  	L BYTE	0382	CODE
BAND_VAL_LIST  . . . . . . . . .  	L BYTE	0374	CODE
BLACK_WHITE  . . . . . . . . . .  	NUMBER	0002	
BLOCK_END  . . . . . . . . . . .  	V WORD	0000	CODE	External
BLOCK_START  . . . . . . . . . .  	V WORD	0000	CODE	External
BOX  . . . . . . . . . . . . . .  	NUMBER	0004	
BUILD_STATE  . . . . . . . . . .  	V BYTE	0000	CODE	External

COLOR  . . . . . . . . . . . . .  	NUMBER	0001	
COLORPRINT_P . . . . . . . . . .  	L BYTE	032F	CODE
COLORPRINT_P0  . . . . . . . . .  	L WORD	033B	CODE
COLORPRINT_P0V . . . . . . . . .  	L BYTE	0344	CODE
COLORPRINT_P1  . . . . . . . . .  	L WORD	034F	CODE
COLORPRINT_P1V . . . . . . . . .  	L BYTE	0358	CODE
COLORPRINT_PARSE_PARMS . . . . .  	L WORD	0329	CODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-4


COLORSELECT_P  . . . . . . . . .  	L BYTE	019F	CODE
COLORSELECT_P0 . . . . . . . . .  	L WORD	01A5	CODE
COLORSELECT_P0V  . . . . . . . .  	L BYTE	01AE	CODE
COLORSELECT_P1 . . . . . . . . .  	L WORD	01AF	CODE
COLORSELECT_P1V  . . . . . . . .  	L BYTE	01B8	CODE
COLORSELECT_PARM . . . . . . . .  	L WORD	01A1	CODE
COLORSELECT_PARSE_PARMS  . . . .  	L WORD	0199	CODE
COLP . . . . . . . . . . . . . .  	NUMBER	0080	
COLS . . . . . . . . . . . . . .  	NUMBER	0040	
CS_NUM_REQ . . . . . . . . . . .  	L BYTE	019F	CODE
CS_POSITIONAL  . . . . . . . . .  	L WORD	01A1	CODE
CUR_PRINTER_TYPE . . . . . . . .  	V BYTE	0000	CODE	External
CUR_STMT . . . . . . . . . . . .  	V WORD	0000	CODE	External

DARK . . . . . . . . . . . . . .  	NUMBER	0100	
DARKADJUST_P . . . . . . . . . .  	L BYTE	04FC	CODE
DARKADJUST_P0  . . . . . . . . .  	L WORD	0502	CODE
DARKADJUST_P0V . . . . . . . . .  	L BYTE	050B	CODE
DARKADJUST_PARSE_PARMS . . . . .  	L WORD	04F6	CODE
DEFAULT_BOX  . . . . . . . . . .  	V BYTE	0000	CODE	External
DISP . . . . . . . . . . . . . .  	NUMBER	0002	
DISP_ERROR . . . . . . . . . . .  	L NEAR	0000	CODE	External
DUPLICATE_PARM . . . . . . . . .  	NUMBER	0007	

EGA  . . . . . . . . . . . . . .  	NUMBER	0004	
END_OF_FILE  . . . . . . . . . .  	V BYTE	0000	CODE	External
ERROR_DEVICE . . . . . . . . . .  	V WORD	0000	CODE	External

FILE_ERROR . . . . . . . . . . .  	V BYTE	0000	CODE	External
FILE_ERRORS  . . . . . . . . . .  	NUMBER	000D	
FIRST_BLOCK  . . . . . . . . . .  	V WORD	0000	CODE	External
FORMAT_NOT_CORRECT . . . . . . .  	NUMBER	0008	

GR . . . . . . . . . . . . . . .  	NUMBER	0008	
GRAPHICS_INSTALL . . . . . . . .  	L NEAR	0000	CODE	External
GRAPHICS_P . . . . . . . . . . .  	L BYTE	000E	CODE
GRAPHICS_P1  . . . . . . . . . .  	L WORD	0014	CODE
GRAPHICS_P1V . . . . . . . . . .  	L BYTE	001D	CODE
GRAPHICS_PARSE_PARMS . . . . . .  	L WORD	0008	CODE
GROUPS_DONE  . . . . . . . . . .  	V WORD	0000	CODE	External
GROW_SHARED_DATA . . . . . . . .  	L NEAR	0000	CODE	External

HIGHCOUNT_FOUND  . . . . . . . .  	L BYTE	0044	CODE
HIGHCOUNT_STR  . . . . . . . . .  	L BYTE	0039	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	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-5



LCD_BOX  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
LIMIT  . . . . . . . . . . . . .  	L NEAR	0585	CODE	Global
LOAD_PROFILE . . . . . . . . . .  	L NEAR	0000	CODE	External
LOWCOUNT_FOUND . . . . . . . . .  	L BYTE	0043	CODE
LOWCOUNT_STR . . . . . . . . . .  	L BYTE	0030	CODE

MAX_BANDS  . . . . . . . . . . .  	NUMBER	0008	
MAX_BLOCK_END  . . . . . . . . .  	V WORD	0000	CODE	External
MEM_OVERFLOW . . . . . . . . . .  	V BYTE	0000	CODE	External
MISSING  . . . . . . . . . . . .  	NUMBER	0001	
MISSING_STMT . . . . . . . . . .  	NUMBER	000A	

NB_FREE_BYTES  . . . . . . . . .  	V WORD	0000	CODE	External
NO . . . . . . . . . . . . . . .  	NUMBER	0000	
NO_MEMORY  . . . . . . . . . . .  	NUMBER	0002	
NUM_BANDS  . . . . . . . . . . .  	L BYTE	035B	CODE

OLD_ADAPTER  . . . . . . . . . .  	NUMBER	0010	
OUT_SEQ_STMT . . . . . . . . . .  	NUMBER	000C	

PALACE . . . . . . . . . . . . .  	NUMBER	0001	
PARSE_COLORPRINT . . . . . . . .  	N PROC	0384	CODE	Global	Length = 0172
PARSE_COLORSELECT  . . . . . . .  	N PROC	01C5	CODE	Global	Length = 0164
PARSE_DARKADJUST . . . . . . . .  	N PROC	0516	CODE	Global	Length = 006F
PARSE_DISPLAYMODE  . . . . . . .  	L NEAR	0000	CODE	External
PARSE_ERROR  . . . . . . . . . .  	V BYTE	0000	CODE	External
PARSE_GRAPHICS . . . . . . . . .  	N PROC	0045	CODE	Global	Length = 0154
PARSE_PRINTBOX . . . . . . . . .  	L NEAR	0000	CODE	External
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
PAT_4X2  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_4X4  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_6X2  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_6X4  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_8X2  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_8X4  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PAT_8X6  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
PC_CONVERTIBLE . . . . . . . . .  	NUMBER	0008	
PREV_STMT  . . . . . . . . . . .  	V WORD	0000	CODE	External
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  . . . . . . . . .  	V BYTE	0000	CODE	External
PTD_FOUND  . . . . . . . . . . .  	V BYTE	0000	CODE	External

RC_DUPLICATE_PARMS . . . . . . .  	NUMBER	0064	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-6


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	
RESULT_BUFFER  . . . . . . . . .  	L BYTE	0000	CODE
RESULT_TAG . . . . . . . . . . .  	L BYTE	0001	CODE
RESULT_VAL . . . . . . . . . . .  	L BYTE	0004	CODE
REVERSE_SW . . . . . . . . . . .  	NUMBER	0001	
ROTATE . . . . . . . . . . . . .  	NUMBER	0001	
ROUNDUP  . . . . . . . . . . . .  	NUMBER	0002	

SEQUENCE . . . . . . . . . . . .  	NUMBER	0004	
SEQ_LENGTH_PTR . . . . . . . . .  	L WORD	01C3	CODE
SET  . . . . . . . . . . . . . .  	NUMBER	0010	
STDERR . . . . . . . . . . . . .  	NUMBER	0000		Communal
STDOUT . . . . . . . . . . . . .  	NUMBER	0000		Communal
STMTS_DONE . . . . . . . . . . .  	V WORD	0000	CODE	External
STMT_BUFFER  . . . . . . . . . .  	V BYTE	0000	CODE	External
STMT_ERROR . . . . . . . . . . .  	V BYTE	0000	CODE	External
SYNTAX_ERRORS  . . . . . . . . .  	NUMBER	000E	
SYSDISPMSG . . . . . . . . . . .  	L NEAR	0000	CODE	External
SYSPARSE . . . . . . . . . . . .  	L NEAR	0000	CODE	External

TAB_DIRECTORY  . . . . . . . . .  	L NEAR	0000	CODE	External
TAB_DIR_NB_ENTRIES . . . . . . .  	V BYTE	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	

VALUE_NOT_ALLOWED  . . . . . . .  	NUMBER	0004	

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

$L1  . . . . . . . . . . . . . .  	L NEAR	0062	CODE
$L10 . . . . . . . . . . . . . .  	L NEAR	015F	CODE
$L101  . . . . . . . . . . . . .  	L NEAR	03FB	CODE
$L104  . . . . . . . . . . . . .  	L NEAR	0410	CODE
$L107  . . . . . . . . . . . . .  	L NEAR	044E	CODE
$L108  . . . . . . . . . . . . .  	L NEAR	043C	CODE
$L114  . . . . . . . . . . . . .  	L NEAR	047A	CODE
$L115  . . . . . . . . . . . . .  	L NEAR	0467	CODE
$L121  . . . . . . . . . . . . .  	L NEAR	04A6	CODE
$L122  . . . . . . . . . . . . .  	L NEAR	0493	CODE
$L128  . . . . . . . . . . . . .  	L NEAR	04B7	CODE
$L13 . . . . . . . . . . . . . .  	L NEAR	00CD	CODE
$L131  . . . . . . . . . . . . .  	L NEAR	04B9	CODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-7


$L133  . . . . . . . . . . . . .  	L NEAR	04ED	CODE
$L134  . . . . . . . . . . . . .  	L NEAR	04D9	CODE
$L143  . . . . . . . . . . . . .  	L NEAR	0533	CODE
$L146  . . . . . . . . . . . . .  	L NEAR	0584	CODE
$L147  . . . . . . . . . . . . .  	L NEAR	0560	CODE
$L15 . . . . . . . . . . . . . .  	L NEAR	00C9	CODE
$L150  . . . . . . . . . . . . .  	L NEAR	056D	CODE
$L18 . . . . . . . . . . . . . .  	L NEAR	0116	CODE
$L21 . . . . . . . . . . . . . .  	L NEAR	0104	CODE
$L23 . . . . . . . . . . . . . .  	L NEAR	0101	CODE
$L30 . . . . . . . . . . . . . .  	L NEAR	014D	CODE
$L32 . . . . . . . . . . . . . .  	L NEAR	014A	CODE
$L4  . . . . . . . . . . . . . .  	L NEAR	0077	CODE
$L40 . . . . . . . . . . . . . .  	L NEAR	0198	CODE
$L42 . . . . . . . . . . . . . .  	L NEAR	0189	CODE
$L43 . . . . . . . . . . . . . .  	L NEAR	01E2	CODE
$L46 . . . . . . . . . . . . . .  	L NEAR	01F9	CODE
$L49 . . . . . . . . . . . . . .  	L NEAR	0210	CODE
$L52 . . . . . . . . . . . . . .  	L NEAR	022F	CODE
$L58 . . . . . . . . . . . . . .  	L NEAR	0242	CODE
$L61 . . . . . . . . . . . . . .  	L NEAR	0260	CODE
$L64 . . . . . . . . . . . . . .  	L NEAR	028A	CODE
$L67 . . . . . . . . . . . . . .  	L NEAR	02A6	CODE
$L7  . . . . . . . . . . . . . .  	L NEAR	0092	CODE
$L70 . . . . . . . . . . . . . .  	L NEAR	02D0	CODE
$L71 . . . . . . . . . . . . . .  	L NEAR	02C3	CODE
$L74 . . . . . . . . . . . . . .  	L NEAR	02DF	CODE
$L76 . . . . . . . . . . . . . .  	L NEAR	0320	CODE
$L77 . . . . . . . . . . . . . .  	L NEAR	030C	CODE
$L79 . . . . . . . . . . . . . .  	L NEAR	0309	CODE
$L86 . . . . . . . . . . . . . .  	L NEAR	03A1	CODE
$L89 . . . . . . . . . . . . . .  	L NEAR	03B8	CODE
$L9  . . . . . . . . . . . . . .  	L NEAR	0173	CODE
$L92 . . . . . . . . . . . . . .  	L NEAR	03CF	CODE
$L95 . . . . . . . . . . . . . .  	L NEAR	03F1	CODE
$LL1 . . . . . . . . . . . . . .  	NUMBER	0001	
$LL101 . . . . . . . . . . . . .  	NUMBER	0065	
$LL104 . . . . . . . . . . . . .  	NUMBER	0068	
$LL107 . . . . . . . . . . . . .  	NUMBER	006B	
$LL114 . . . . . . . . . . . . .  	NUMBER	0072	
$LL121 . . . . . . . . . . . . .  	NUMBER	0079	
$LL128 . . . . . . . . . . . . .  	NUMBER	0080	
$LL133 . . . . . . . . . . . . .  	NUMBER	0085	
$LL143 . . . . . . . . . . . . .  	NUMBER	008F	
$LL146 . . . . . . . . . . . . .  	NUMBER	0092	
$LL15  . . . . . . . . . . . . .  	NUMBER	000F	
$LL150 . . . . . . . . . . . . .  	NUMBER	0096	
$LL23  . . . . . . . . . . . . .  	NUMBER	0017	
$LL32  . . . . . . . . . . . . .  	NUMBER	0020	
$LL4 . . . . . . . . . . . . . .  	NUMBER	0004	
$LL40  . . . . . . . . . . . . .  	NUMBER	0028	
$LL43  . . . . . . . . . . . . .  	NUMBER	002B	
$LL46  . . . . . . . . . . . . .  	NUMBER	002E	
$LL49  . . . . . . . . . . . . .  	NUMBER	0031	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:39
DOS - GRAPHICS Command  -	Profile Load Modules #2 	;AN000;  Symbols-8


$LL52  . . . . . . . . . . . . .  	NUMBER	0034	
$LL58  . . . . . . . . . . . . .  	NUMBER	003A	
$LL61  . . . . . . . . . . . . .  	NUMBER	003D	
$LL64  . . . . . . . . . . . . .  	NUMBER	0040	
$LL67  . . . . . . . . . . . . .  	NUMBER	0043	
$LL70  . . . . . . . . . . . . .  	NUMBER	0046	
$LL76  . . . . . . . . . . . . .  	NUMBER	004C	
$LL79  . . . . . . . . . . . . .  	NUMBER	004F	
$LL86  . . . . . . . . . . . . .  	NUMBER	0056	
$LL89  . . . . . . . . . . . . .  	NUMBER	0059	
$LL9 . . . . . . . . . . . . . .  	NUMBER	0009	
$LL92  . . . . . . . . . . . . .  	NUMBER	005C	
$LL95  . . . . . . . . . . . . .  	NUMBER	005F	
$NOPS  . . . . . . . . . . . . .  	NUMBER	0003	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  grload3		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   1995 Source  Lines
  19998 Total   Lines
    591 Symbols

  45346 + 157913 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
