Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-1


					PAGE	,132								;AN000;
					TITLE	DOS - GRAPHICS Command  -	Command line parsing module	;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
				;; DOS - GRAPHICS Command
				;; (C) Copyright 1988 Microsoft
				;;										;AN000;
				;; File Name:  GRPARMS.ASM							;AN000;
				;; ----------									;AN000;
				;;										;AN000;
				;; Description: 								;AN000;
				;; ------------ 								;AN000;
				;;										;AN000;
				;;	 This file contains modules for parsing the GRAPHICS.COM		;AN000;
				;;	 command line; using the DOS PARSER.					;AN000;
				;;										;AN000;
				;;										;AN000;
				;; Documentation Reference:							;AN000;
				;; ------------------------							;AN000;
				;;	 OASIS High Level Design						;AN000;
				;;	 OASIS GRAPHICS I1 Overview						;AN000;
				;;	 DOS 3.3 Message Retriever Interface Supplement. 			;AN000;
				;;	 TUPPER I0 Document - PARSER HIGH LEVEL DESIGN REVIEW			;AN000;
				;;										;AN000;
				;; Procedures Contained in This File:						;AN000;
				;; ----------------------------------						;AN000;
				;;	 PARSE_PARMS	  - Parse the command line				;AN000;
				;;	 GET_R		  - Get /R						;AN000;
				;;	 GET_B		  - Get /B						;AN000;
				;;	 GET_LCD	  - Get /LCD						;AN000;
				;;	 GET_PRINTBOX	  - Get /PRINTBOX					;AN000;
				;;	 GET_PROFILE	  - Get the profile path and file name			;AN000;
				;;	 GET_TYPE	  - Get the printer type				;AN000;
				;;										;AN000;
				;; Include Files Required:							;AN000;
				;; -----------------------							;AN000;
				;;	 GRINST.EXT  - Externals for installation modules			;AN000;
				;;	 GRPARSE.EXT - Externals for the DOS parser code			;AN000;
				;;	 GRSHAR.STR  - Shared Data Area Structure				;AN000;
				;;	 GRMSG.EQU   - Equates for GRAPHICS.COM error messages			;AN000;
				;;	 STRUC.INC   - Macros for using structured assembly language		;AN000;
				;;										;AN000;
				;; External Procedure References:						;AN000;
				;; ------------------------------						;AN000;
				;;	 FROM FILE  GRINST.ASM: 						;AN000;
				;;	      GRAPHICS_INSTALL - Main module for the installation of GRAPHICS	;AN000;
				;;	 SYSPARSE - DOS system parser						;AN000;
				;;	 SYSDISPMSG - DOS message retriever					;AN000;
				;;										;AN000;
				;; Linkage Instructions:							;AN000;
				;; -------------------- 							;AN000;
				;;	 Refer to GRAPHICS.ASM							;AN000;
				;;										;AN000;
				;; Change History:								;AN000;
				;; ---------------								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-2


				;;										;AN000;
				;;										;AN000;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					;AN000;
 0000				CODE	SEGMENT PUBLIC 'CODE'                                                   ;AN000;
					ASSUME	CS:CODE,DS:CODE 						;AN000;
 0000				PARSE_PARMS PROC NEAR								;AN000;
 0000  E9 00A2 R			jmp	PARSE_PARMS_START						;AN000;
				PUBLIC PARSE_PARMS								;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;
 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;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-3


			     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;
			     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;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-4


 = 0001                      C	    ROTATE		EQU 1		;					;AN000;
				INCLUDE GRINST.EXT		; Include externals for the installation module ;AN000;
			     C	.LIST										;AN000;
				INCLUDE GRPARSE.EXT		; Include externals for the DOS parse code	;AN000;
			     C	.LIST										;AN000;
				INCLUDE STRUC.INC		; Include macros for using STRUCTURES		;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
 = 0003                      C	$LastLabelOrg = $
 = 0003                      C	$DefDist= $Short
			     C	$Push	%$NoType
				.LIST										;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-5


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PARSE_PARMS : PARSE THE COMMAND LINE PARAMETERS.				;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				;	INPUT:	DS,ES		= SEGMENT CONTAINING THE PROGRAM PREFIX SEGMENT ;AN000;(PSP)
				;										;AN000;
				;	OUTPUT: SWITCHES	= A bit mask in the shared data area indicating ;AN000;
				;				  which command line switches are set.		;AN000;
				;		PROFILE_PATH	= The profile file name and path (ASCIIZ string);AN000;
				;		PRINTBOX_ID_PTR = Offset of the printbox id (ASCIIZ string)	;AN000;
				;		PRINTER_TYPE_PARM = printer type (ASCIIZ string)		;AN000;
				;		CARRY FLAG IS SET if an error occurred				;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; DESCRIPTION: Call the DOS parser to parse the command line parameters 	;AN000;
				; of the GRAPHICS  command line which is obtained from the PSP (Program Segment ;AN000;
				; Prefix).									;AN000;
				;										;AN000;
				; The format of the command line is:						;AN000;
				;										;AN000;
				;										;AN000;
				;	GRAPHICS  {prt_type {profile}}	 {/R}  {/B}  {[/LCD | /PRINTBOX:id]}	;AN000;
				;										;AN000;
				;	(All arguments are optional, /PRINTBOX can be spelled /PB.)		;AN000;
				;										;AN000;
				; If no printer type is specified then, a null pointer is returned.		;AN000;
				; If no profile name is supplied then, a null string is returned.		;AN000;
				; If "/LCD" is specified then, a pointer to the printbox id: "LCD" is returned. ;AN000;
				;										;AN000;
				;										;AN000;
				; LOGIC:									;AN000;
				; Set addressibility to the command line parameters in the PSP			;AN000;
				; CALL SYSPARSE       ; Call the system parser					;AN000;
				; While not (End Of Line) AND no error						;AN000;
				;   IF argument is the profile name						;AN000;
				;   THEN Get the profile name							;AN000;
				;   IF argument is the printbox switch						;AN000;
				;   THEN Get the printbox id							;AN000;
				;   IF argument is a /r 							;AN000;
				;   THEN Get /r 								;AN000;
				;   IF argument is /b								;AN000;
				;   THEN Get /b 								;AN000;
				;   IF argument /lcd								;AN000;
				;   THEN Get /lcd								;AN000;
				;   CALL SYSPARSE								;AN000;
				; If error									;AN000;
				; Then display the appropriate error message					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; BIT MASK INDICATING THE COMMAND LINE SWITCHES PARSED SO FAR:			;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-6


				;-------------------------------------------------------------------------------;AN000;
 0003  00			SWITCH_PARSED DB   0								;AN000;
 = 0001				GOT_R	      EQU  1			; Found /R				;AN000;
 = 0002				GOT_B	      EQU  2			; Found /B				;AN000;
 = 0004				GOT_LCD       EQU  4			; Found /LCD				;AN000;
 = 0008				GOT_PRINTBOX  EQU  8			; Found /PB:id or /PRINTBOX:id		;AN000;
														;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; CONTROL BLOCK DEFINITIONS FOR THE PARSER:					;AN000;
				;										;AN000;
				;===============================================================================;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; PARMS INPUT BLOCK								;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0004				PARMS LABEL WORD								;AN000;
 0004  0007 R				DW	PARMSX			; Offset of parms extension block	;AN000;
 0006  00				DB	0			; No delimiters to define		;AN000;
									;  or end of line markers.		;AN000;
														;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; PARMS EXTENSION BLOCK : Describe what's on the command line                   ;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0007				PARMSX	LABEL BYTE								;AN000;
 0007  00 02				DB	0,2			; Max. 2 positional parameters		;AN000;
 0009  0017 R				DW	TYPE_CTL		; Offset of type control block		;AN000;
 000B  0029 R				DW	PROF_CTL		; Offset of profile control block	;AN000;
														;AN000;
 000D  04				DB	4			; Max. 4 switch types			;AN000;
 000E  0078 R				DW	PRINTBOX_CTL		; Offset of control for Printbox	;AN000;
 0010  003A R				DW	R_CTL			; Offset of control for /R		;AN000;
 0012  004E R				DW	B_CTL			; Offset of control for /B		;AN000;
 0014  0062 R				DW	LCD_CTL 		; Offset of control for /LCD		;AN000;
														;AN000;
 0016  00				DB	0			; No keywords				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the printer type parameter:						;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0017				TYPE_CTL LABEL	WORD								;AN000;
 0017  2001				DW	2001H		 ; Optional simple string			;AN000;
 0019  0002				DW	0002H		 ; Capitalize it				;AN000;
 001B  0021 R				DW	TYPE_RESULT	 ; Offset of result buffer for printer type	;AN000;
 001D  0020 R				DW	NO_VALUES	 ; No values (NOTE: The type returned is checked;AN000;
 001F  00				DB	0		 ;		   for validity by LOAD_PROFILE);AN000;
														;AN000;
 0020  00			NO_VALUES	DB	0							;AN000;
														;AN000;
 0021				TYPE_RESULT	LABEL BYTE							;AN000;
 0021  00				DB	?		; Type						;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-7


 0022  00				DB	?		; Item tag					;AN000;
 0023  0000				DW	?		; Offset of synomym				;AN000;
 0025  00000000				DD	?		; Pointer to string found			;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the format of the PROFILE parameter: 				;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
														;AN000;
 0029				PROF_CTL LABEL WORD								;AN000;
 0029  0201				DW	0201H		; File spec. - Optional 			;AN000;
 002B  0001				DW	0001h		; Capitalize					;AN000;
 002D  0032 R				DW	PROFILE_RESULT	; Offset of result buffer for Profile		;AN000;
 002F  0020 R				DW	NO_VALUES	; No values needed				;AN000;
 0031  00				DB	0								;AN000;
														;AN000;
														;AN000;
 0032				PROFILE_RESULT	LABEL BYTE							;AN000;
 0032  00				DB	?		; Type						;AN000;
 0033  00				DB	?		; Item tag					;AN000;
 0034  0000				DW	?		; Offset of synomym				;AN000;
 0036  00000000				DD	?		; Offset of string				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the format of /R							;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 003A				R_CTL	LABEL WORD								;AN000;
 003A  0000				DW	0		;						;AN000;
 003C  0000				DW	0		;						;AN000;
 003E  0046 R				DW	R_RESULT	; Offset of result buffer for a simple switch	;AN000;
 0040  0020 R				DW	NO_VALUES	; No values can be given with these switches.	;AN000;
 0042  01				DB	1		; 1 name for this switch			;AN000;
 0043  2F 52 00				DB	"/R",0          ;   Reverse                                     ;AN000;
														;AN000;
 0046				R_RESULT LABEL BYTE								;AN000;
 0046  00				DB	?		; Type						;AN000;
 0047  00				DB	?		; Item tag					;AN000;
 0048  0000				DW	?		; Offset of synomym				;AN000;
 004A  00000000				DD	?		; Offset of value				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the format of /B							;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 004E				B_CTL	LABEL WORD								;AN000;
 004E  0000				DW	0		;						;AN000;
 0050  0000				DW	0		;						;AN000;
 0052  005A R				DW	B_RESULT	; Offset of result buffer for a simple switch	;AN000;
 0054  0020 R				DW	NO_VALUES	; No values can be given with these switches.	;AN000;
 0056  01				DB	1		; 1 name allowed for this switch		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-8


 0057  2F 42 00				DB	"/B",0          ;   Background                                  ;AN000;
														;AN000;
 005A				B_RESULT LABEL BYTE								;AN000;
 005A  00				DB	?		; Type						;AN000;
 005B  00				DB	?		; Item tag					;AN000;
 005C  0000				DW	?		; Offset of synomym				;AN000;
 005E  00000000				DD	?		; Offset of value				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the format of /LCD							;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0062				LCD_CTL LABEL WORD								;AN000;
 0062  0000				DW	0		;						;AN000;
 0064  0000				DW	0		;						;AN000;
 0066  0070 R				DW	LCD_RESULT	; Offset of result buffer for a /LCD		;AN000;
 0068  0020 R				DW	NO_VALUES	; No values can be given with these switches.	;AN000;
 006A  01				DB	1		; 1 name:					;AN000;
 006B  2F 4C 43 44 00			DB	"/LCD",0        ;  /LCD                                         ;AN000;
														;AN000;
 0070				LCD_RESULT  LABEL BYTE								;AN000;
 0070  00				DB	?		; Type						;AN000;
 0071  00				DB	?		; Item tag					;AN000;
 0072  0000				DW	?		; Offset of synomym				;AN000;
 0074  00000000				DD	?		; Offset of value				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;										;AN000;
				; Describe the format of the PRINTBOX switch:					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0078				PRINTBOX_CTL LABEL WORD 							;AN000;
 0078  2001				DW	2001H		; Optional simple string			;AN000;
 007A  0001				DW	0001H		; Capitalize					;AN000;
 007C  008F R				DW	PRINTBOX_RESULT ; Offset of result buffer for Printbox		;AN000;
 007E  0020 R				DW	NO_VALUES	; Values will be validated when loading profile ;AN000;
 0080  02				DB	2		; 2 synomym for this switch:			;AN000;
 0081  2F 50 52 49 4E 54		DB	"/PRINTBOX",0   ;                                               ;AN000;
       42 4F 58 00		
 008B  2F 50 42 00			DB	"/PB",0                                                         ;AN000;
														;AN000;
 008F				PRINTBOX_RESULT LABEL BYTE							;AN000;
 008F  00				DB	?		; Type						;AN000;
 0090  00				DB	?		; Item tag					;AN000;
 0091  0000				DW	?		; Offset of synomym				;AN000;
 0093  00000000				DD	?		; Offset of value				;AN000;
														;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; DOS "MESSAGE RETRIEVER" Substitution list control block:                      ;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0097				SUBLIST        LABEL DWORD		   ; List for substitution:		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-9


 0097  0B				       DB	11		   ; Size of this list			;AN000;
 0098  00				       DB	0		   ; Reserved				;AN000;
 0099  00000000			SAVE_SI        DD	?		   ; Ptr to data item			;AN001;
 009D  01				       DB	1		   ; Variable to be substitued: %1	;AN000;
 009E  10				       DB	00010000B	   ; %1 is an ASCIIZ string left justifi;AN000;ed
 009F  00				       DB	0		   ; Unlimited size for %1		;AN000;
 00A0  01				       DB	1		   ; Minimum size is 1 character	;AN000;
 00A1  20				       DB	" "                ; Delimiter is "space"               ;AN000;
														;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; START OF EXECUTABLE CODE:							;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
														;AN000;
 00A2				PARSE_PARMS_START:								;AN000;
 00A2  50				PUSH	AX								;AN000;
 00A3  53				PUSH	BX								;AN000;
 00A4  51				PUSH	CX								;AN000;
 00A5  52				PUSH	DX								;AN000;
 00A6  56				PUSH	SI								;AN000;
 00A7  57				PUSH	DI								;AN000;
 00A8  06				PUSH	ES								;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Set up addressibility for the parser						;AN000;
				;-------------------------------------------------------------------------------;AN000;
 00A9  BE 0081				MOV	SI,81H			; DS:SI := Command line parameters	;AN000;
									;  to be parsed 			;AN000;
 00AC  0E				PUSH	CS								;AN000;
 00AD  07				POP	ES								;AN000;
 00AE  8D 3E 0004 R			LEA	DI,PARMS		; ES:DI := Parms control block		;AN000;
				;(deleted ;AN001;) XOR DX,DX		; CX,DX must be zero for the		;AN000;
 00B2  33 C9				XOR	CX,CX			; Initially, CX should be zero		;AN001;
 00B4  B8 0000				MOV	AX,0			; No error yet				;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Parse FIRST argument								;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;(deleted ;AN001;) CALL SYSPARSE	; Get one argument from the command line;AN000;
 00B7  E8 0162 R			CALL	CALL_SYSPARSE		; Get one argument from the command line;AN001;
				;(deleted ;AN001;) MOV BX,DX		; BX := Offset of result block		;AN000;
				.WHILE <AX EQ RC_NO_ERROR>		; While there is no error		;AN000;
 00BA                        2	$l1: 
 00BA  3D 0000               3						cmp AX,RC_NO_ERROR 
 00BD  75 4F                 6						jne $l2 
				;-------------------------------------------------------------------------------;AN000;
				; Get the argument:								;AN000;
				;-------------------------------------------------------------------------------;AN000;
				       .SELECT									;AN000;
				       .WHEN <BX EQ <OFFSET TYPE_RESULT>>					;AN000;
 00BF  81 FB 0021 R          3						cmp BX,OFFSET TYPE_RESULT 
 00C3  75 06                 6						jne $l5 
 00C5  E8 0193 R			  CALL	GET_TYPE							;AN000;
				       .WHEN <BX EQ <OFFSET PROFILE_RESULT>>					;AN000;
 00C8  EB 3D                 3						jmp short $l4 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-10


 00CA  90                    3						nop 
 00CB                        2	$l5: 
 00CB  81 FB 0032 R          3						cmp BX,OFFSET PROFILE_RESULT 
 00CF  75 06                 6						jne $l7 
 00D1  E8 016E R			  CALL	GET_PROFILE_NAME						;AN000;
				       .WHEN <BX EQ <OFFSET LCD_RESULT >>					;AN000;
 00D4  EB 31                 3						jmp short $l4 
 00D6  90                    3						nop 
 00D7                        2	$l7: 
 00D7  81 FB 0070 R          3						cmp BX,OFFSET LCD_RESULT  
 00DB  75 06                 6						jne $l9 
 00DD  E8 01EF R			  CALL	GET_LCD 							;AN000;
				       .WHEN <BX EQ <OFFSET R_RESULT>>						;AN000;
 00E0  EB 25                 3						jmp short $l4 
 00E2  90                    3						nop 
 00E3                        2	$l9: 
 00E3  81 FB 0046 R          3						cmp BX,OFFSET R_RESULT 
 00E7  75 06                 6						jne $l11 
 00E9  E8 01BD R			  CALL	GET_REVERSE							;AN000;
				       .WHEN <BX EQ <OFFSET B_RESULT>>						;AN000;
 00EC  EB 19                 3						jmp short $l4 
 00EE  90                    3						nop 
 00EF                        2	$l11: 
 00EF  81 FB 005A R          3						cmp BX,OFFSET B_RESULT 
 00F3  75 06                 6						jne $l13 
 00F5  E8 01D6 R			  CALL	GET_BACKGROUND							;AN000;
				       .WHEN <BX EQ <OFFSET PRINTBOX_RESULT>>					;AN000;
 00F8  EB 0D                 3						jmp short $l4 
 00FA  90                    3						nop 
 00FB                        2	$l13: 
 00FB  81 FB 008F R          3						cmp BX,OFFSET PRINTBOX_RESULT 
 00FF  75 05                 6						jne $l15 
 0101  E8 0216 R			  CALL	GET_PRINTBOX_ID 						;AN000;
				       .OTHERWISE								;AN000;
 0104  EB 01                 3						jmp short $l4 
 0106                        2	$l15: 
				;-------No result block was returned by the parser				;AN000;
 0106  F9				STC				; Set error				;AN000;
				       .ENDSELECT								;AN000;
 0107                        2	$l4: 
				       .LEAVE C 			; IF error occurred while parsing the	;AN000;
 0107  72 05                 5						jC $l2 
									;  previous argument, exit the loop:	;AN000;
									;   stop parsing the command line.	;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Parse next argument:								;AN000;
				;-------------------------------------------------------------------------------;AN000;
				;(deleted ;AN001;) XOR DX,DX		;					;AN000;
				;(deleted ;AN001;) CALL SYSPARSE	; Get one argument from the command line;AN000;
 0109  E8 0162 R			CALL	CALL_SYSPARSE		; Get one argument from the command line;AN001;
				;(deleted ;AN001;) MOV BX,DX		; ES:BX := Offset of result block	;AN000;
				.ENDWHILE									;AN000;
 010C  EB AC                 3						jmp $l1 
 010E                        2	$l2: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-11


				;-------------------------------------------------------------------------------;AN000;
				; Check for error, select and display an error message				;AN000;
				;-------------------------------------------------------------------------------;AN000;
				.IF <AL NE RC_EOL>			; IF an error occurred			;AN000;
 010E  3C FF                 3						cmp AL,RC_EOL 
 0110  74 48                 6						je $l19 
				.THEN					; then, display error message		;AN000;
 0112  B9 0000			    MOV 	CX,0			; Assume no substitutions		;AN000;
				   .SELECT				; (CX := Number of substitutions	;AN000;
				   .WHEN <AL EQ RC_TOO_MANY>		; When RC = Too many parameters 	;AN000;
 0115  3C 01                 3						cmp AL,RC_TOO_MANY 
 0117  75 06                 6						jne $l23 
 0119  B8 0003				MOV	AX,TOO_MANY_PARMS	;   (AL = Message number to display)	;AN000;
				   .WHEN <AL EQ RC_Not_In_Val>		; When RC = Not in value list provided	;AN000;
 011C  EB 38                 3						jmp short $l22 
 011E  90                    3						nop 
 011F                        2	$l23: 
 011F  3C 07                 3						cmp AL,RC_Not_In_Val 
 0121  75 06                 6						jne $l25 
 0123  B8 0004				MOV	AX,VALUE_NOT_ALLOWED	;   (AL = Message number to display)	;AN000;
				   .WHEN <AL EQ RC_Not_In_Sw>		; When RC = Not in switch list provided ;AN000;
 0126  EB 2E                 3						jmp short $l22 
 0128  90                    3						nop 
 0129                        2	$l25: 
 0129  3C 03                 3						cmp AL,RC_Not_In_Sw 
 012B  75 13                 6						jne $l27 
 012D  B9 0001				MOV	CX,1			;   1 substitution in this message	;AN000;
 0130  C6 04 00				MOV	BYTE PTR [SI],0 	; PUT NUL AT END OF THIS PARM		;AN001;
 0133  8D 36 0097 R			LEA	SI,SUBLIST		;   DS:[SI]:="Invalid parm" Substitution;AN000; list
				;(deleted ;AN001;) LES DX,ES:[BX+4]	;   ES:DX := Offset of offending parm.	;AN000;
				;(deleted ;AN001;) MOV [SI]+2,DX	;   Store offset to this offender in the;AN000;
 0137  8C 44 04				MOV	[SI]+4,ES		;    substitution list control block	;AN000;
 013A  B8 0005				MOV	AX,INVALID_PARM 	;   AL := 'Invalid parameter' msg number;AN000;
				   .WHEN <AL EQ RC_INVLD_COMBINATION>	; When RC = Invalid combination of parms;AN000;
 013D  EB 17                 3						jmp short $l22 
 013F  90                    3						nop 
 0140                        2	$l27: 
 0140  3C 63                 3						cmp AL,RC_INVLD_COMBINATION 
 0142  75 06                 6						jne $l29 
 0144  B8 0006				MOV	AX,INVALID_COMBINATION	;   (AL = Message number to display)	;AN000;
				   .WHEN <AL EQ RC_DUPLICATE_PARMS>	; When RC = Invalid combination of parms;AN000;
 0147  EB 0D                 3						jmp short $l22 
 0149  90                    3						nop 
 014A                        2	$l29: 
 014A  3C 64                 3						cmp AL,RC_DUPLICATE_PARMS 
 014C  75 05                 6						jne $l31 
 014E  B8 0007				MOV	AX,DUPLICATE_PARM	;   (AL = Message number to display)	;AN000;
				   .OTHERWISE				;					;AN000;
 0151  EB 03                 3						jmp short $l22 
 0153                        2	$l31: 
 0153  B8 0008				MOV	AX,FORMAT_NOT_CORRECT	; RC = Anything else, tell the user	;AN000;
									;	something is wrong with his	;AN000;
				   .ENDSELECT				;	 command line.			;AN000;
 0156                        2	$l22: 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-12


 0156  E8 0000 E		    CALL DISP_ERROR			; Display the selected error message	;AN000;
 0159  F9			    STC 				; Indicate parse error occurred 	;AN000;
				.ENDIF										;AN000;
 015A                        2	$l19: 
														;AN000;
 015A  07				POP	ES								;AN000;
 015B  5F				POP	DI								;AN000;
 015C  5E				POP	SI								;AN000;
 015D  5A				POP	DX								;AN000;
 015E  59				POP	CX								;AN000;
 015F  5B				POP	BX								;AN000;
 0160  58				POP	AX								;AN000;
 0161  C3				RET				; Return to GRAPHICS_INSTALL		;AN000;
														;AN000;
 0162				PARSE_PARMS ENDP								;AN000;
 0162				CALL_SYSPARSE PROC NEAR 		;COMMON INVOCATION OF SYSPARSE		;AN001;
				;INPUT: - CX=ORDINAL VALUE							;AN001;
				;	  DS:SI=WHERE COMMAND LINE IS, SAVED IN "SAVE_SI"                       ;AN001;
				;	  ES:DI=WHERE PARMS DESCRIPTOR BLOCK IS 				;AN001;
				;OUTPUT:  CX=NEW ORDINAL VALUE							;AN001;
				;	  BX=OFFSET OF RESULT BLOCK, IF ONE IS RETURNED 			;AN001;
				;	  SI=OFFSET OF CHAR BEYOND PARSED PARM IN COMMAND LINE			;AN001;
														;AN001;
 0162  33 D2				XOR	DX,DX			;CLEAR DX FOR PARSER			;AN001;
 0164  89 36 0099 R			MOV	WORD PTR SAVE_SI,SI	;REMEMBER WHERE TO START LOOKING	;AN001;
 0168  E8 0000 E			CALL	SYSPARSE		;GO PARSE THE NEXT PARM 		;AN001;
														;AN001;
 016B  8B DA				MOV	BX,DX			; BX := Offset of result block		;AN001;
 016D  C3				RET				;RETURN TO CALLER			;AN001;
 016E				CALL_SYSPARSE ENDP								;AN001;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-13


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_PROFILE							;AN000;
				;										;AN000;
				; INPUT:  ES:[BX] := Result block						;AN000;
				;										;AN000;
				; OUTPUT: PROFILE_PATH = The profile file name and path (ASCIIZ string) 	;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 016E				GET_PROFILE_NAME PROC								;AN000;
 016E  50				PUSH	AX								;AN000;
 016F  53				PUSH	BX								;AN000;
 0170  52				PUSH	DX								;AN000;
 0171  56				PUSH	SI								;AN000;
 0172  57				PUSH	DI								;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Get the name of the profile path found on the command line:			;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0173  26: 8B 7F 04			MOV	DI,ES:[BX+4]	; DI := Offset of filename found		;AN000;
 0177  33 DB				XOR	BX,BX		; BX := Byte index				;AN000;
 0179  BE 0000 E			MOV	SI,OFFSET PROFILE_PATH	; [BX][SI] := Where to store it 	;AN000;
														;AN000;
				.IF <<BYTE PTR [DI]> NE 0>	; Don't copy a NULL parm                        ;AN000;
 017C  80 3D 00              3						cmp BYTE PTR [DI],0 
 017F  74 0B                 6						je $l34 
				  .REPEAT			; While not end of path name (NULL terminated)	;AN000;
 0181                        2	$l37: 
 0181  8A 01				MOV	AL,[BX][DI]	; Copy the byte (including the NULL)		;AN000;
 0183  88 00				MOV	[BX][SI],AL							;AN000;
 0185  43				INC	BX		; Get next one					;AN000;
				  .UNTIL <<BYTE PTR [BX-1][DI]> EQ 0> ; 					;AN000;
 0186  80 79 FF 00           3						cmp BYTE PTR [BX-1][DI],0 
 018A  75 F5                 6						jne $l37 
				.ENDIF										;AN000;
 018C                        2	$l34: 
														;AN000;
 018C  5F				POP	DI								;AN000;
 018D  5E				POP	SI								;AN000;
 018E  5A				POP	DX								;AN000;
 018F  5B				POP	BX								;AN000;
 0190  58				POP	AX								;AN000;
 0191  F8				CLC									;AN000;
 0192  C3				RET									;AN000;
 0193				GET_PROFILE_NAME ENDP								;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-14


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_TYPE							;AN000;
				;										;AN000;
				; INPUT:  ES:[BX] := Result block						;AN000;
				;	  PRINTER_TYPE_LENGTH := Maximum length for the printer type string	;AN000;
				;										;AN000;
				; OUTPUT: PRINTER_TYPE_PARM = ASCIIZ string containing				;AN000;
				;			       the Printer type.				;AN000;
				;	  AX		    = Error code					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0193				GET_TYPE PROC									;AN000;
 0193  53				PUSH	BX								;AN000;
 0194  51				PUSH	CX								;AN000;
 0195  56				PUSH	SI								;AN000;
 0196  57				PUSH	DI								;AN000;
														;AN000;
				;---------------------------------------------------------------------- 	;AN000;
				; Overwrite the DEFAULT TYPE with the type found on the command line		;AN000;
				;---------------------------------------------------------------------- 	;AN000;
 0197  26: 8B 77 04		  MOV	  SI,ES:[BX+4]		       ; DS:SI := Offset of printer type found	;AN000;
				 .IF <<BYTE PTR [SI]> NE 0>	       ; Do not copy an empty string		;AN000;
 019B  80 3C 00              3						cmp BYTE PTR [SI],0 
 019E  74 18                 6						je $l39 
				 .THEN				       ;					;AN000;
 01A0  8A 0E 0000 E		    MOV     CL,PRINTER_TYPE_LENGTH     ; CX := Maximum number of bytes		;AN000;
 01A4  32 ED			    XOR     CH,CH		       ;	to copy 			;AN000;
 01A6  BF 0000 E		    MOV     DI,OFFSET PRINTER_TYPE_PARM; ES:DI := Where to store it		;AN000;
 01A9  F3/ A4			    REP     MOVSB		       ; Copy the string			;AN000;
				  ;----------------------------------------------------------------------	;AN000;
				  ; Verify that the string supplied is not too long:				;AN000;
				  ;----------------------------------------------------------------------	;AN000;
				   .IF	<<BYTE PTR [DI-1]> EQ 0>       ; If the last byte is a null		;AN000;
 01AB  80 7D FF 00           3						cmp BYTE PTR [DI-1],0 
 01AF  75 03                 6						jne $l43 
				   .THEN			       ; then, the string was not longer	;AN000;
								       ;       than the maximum 		;AN000;
 01B1  F8			      CLC			       ;   Clear the carry flag = No error	;AN000;
				   .ELSE			       ; else, string provided is too long	;AN000;
 01B2  EB 04                 3						jmp short $l39 
 01B4                        2	$l43: 
 01B4  B8 0003			      MOV  AX,RC_Not_In_Sw	       ;   Error := RC for Invalid parm 	;AN000;
 01B7  F9			      STC			       ; Set error				;AN000;
				   .ENDIF			       ; ENDIF string too long			;AN000;
				 .ENDIF 			       ; ENDIF string provided			;AN000;
 01B8                        2	$l39: 
														;AN000;
 01B8				GET_TYPE_END:									;AN000;
 01B8  5F				POP	DI								;AN000;
 01B9  5E				POP	SI								;AN000;
 01BA  59				POP	CX								;AN000;
 01BB  5B				POP	BX								;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-15


 01BC  C3				RET									;AN000;
 01BD				GET_TYPE  ENDP									;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-16


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_REVERSE							;AN000;
				;										;AN000;
				; INPUT:  ES:[BX]	:= Result block 					;AN000;
				;	  SWITCH_PARSED := The command line switches parsed so far (bit mask)	;AN000;
				;										;AN000;
				; OUTPUT: CS:[BP].SWITCHES (Bit mask in the Shared data area) is updated	;AN000;
				;			    with the value of the switch found. 		;AN000;
				;	  GOT_R is set in SWITCH_PARSED 					;AN000;
				;	  AX		:= Error message number.				;AN000;
				;	  CARRY FLAG IS SET IF ERROR FOUND					;AN000;
				;										;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01BD				GET_REVERSE	PROC								;AN000;
														;AN000;
 01BD  F6 06 0003 R 01			TEST	SWITCH_PARSED,GOT_R		; If already parsed this switch ;AN000;
 01C2  75 0D				JNZ	DUPLICATE_R			; then, error			;AN000;
 01C4  80 0E 0003 R 01			OR	SWITCH_PARSED,GOT_R		; else, say we parsed it.	;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Set the Reverse switch in the Shared data area				;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01C9  2E: 80 4E 02 01			OR	CS:[BP].SWITCHES,REVERSE_SW	; Set the command line switch	;AN000;
 01CE  F8				CLC					; Clear the error flag		;AN000;
 01CF  EB 04				JMP	SHORT GET_REVERSE_END		; Return			;AN000;
														;AN000;
 01D1				DUPLICATE_R:					; Already got this switch	;AN000;
 01D1  B8 0064				MOV	AX,RC_DUPLICATE_PARMS		; AX := error message number	;AN000;
 01D4  F9				STC					; SET ERROR			;AN000;
 01D5				GET_REVERSE_END:								;AN000;
														;AN000;
 01D5  C3				RET									;AN000;
 01D6				GET_REVERSE	ENDP								;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-17


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_BACKGROUND						;AN000;
				;										;AN000;
				; INPUT:  ES:[BX] := Result block						;AN000;
				;	  SWITCH_PARSED := The command line switches parsed so far (bit mask)	;AN000;
				;										;AN000;
				; OUTPUT: CS:[BP].SWITCHES (Bit mask in the Shared data area) is updated	;AN000;
				;			    with the value of the switch found. 		;AN000;
				;										;AN000;
				;	  GOT_B is set in SWITCH_PARSED 					;AN000;
				;	  AX		:= Error message number.				;AN000;
				;	  CARRY FLAG IS SET IF ERROR FOUND					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01D6				GET_BACKGROUND	PROC								;AN000;
														;AN000;
 01D6  F6 06 0003 R 02			TEST	SWITCH_PARSED,GOT_B		; If already parsed this switch ;AN000;
 01DB  75 0D				JNZ	DUPLICATE_B			; then, error			;AN000;
 01DD  80 0E 0003 R 02			OR	SWITCH_PARSED,GOT_B		; else, say we parsed it.	;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Set the switch in the Shared data area					;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01E2  2E: 80 4E 02 02			OR	CS:[BP].SWITCHES,BACKGROUND_SW	; Set the command line switch	;AN000;
 01E7  F8				CLC					; Clear the error flag		;AN000;
 01E8  EB 04				JMP	SHORT GET_BACKGROUND_END	; Return			;AN000;
														;AN000;
 01EA				DUPLICATE_B:					; Already got this switch	;AN000;
 01EA  B8 0064				MOV	AX,RC_DUPLICATE_PARMS		; AX := error message number	;AN000;
 01ED  F9				STC					; SET ERROR			;AN000;
														;AN000;
 01EE				GET_BACKGROUND_END:								;AN000;
 01EE  C3				RET									;AN000;
 01EF				GET_BACKGROUND	ENDP								;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-18


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_LCD							;AN000;
				;										;AN000;
				; INPUT:  SWITCH_PARSED   := The command line switches parsed so far (bit mask) ;AN000;
				;										;AN000;
				; OUTPUT: PRINTBOX_ID_PTR := Point to /LCD ASCIIZ string.			;AN000;
				;	  GOT_B is set in SWITCH_PARSED 					;AN000;
				;	  AX		  := Error message number.				;AN000;
				;	  CARRY FLAG IS SET IF ERROR FOUND					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Data Referenced:								;AN000;
				;										;AN000;
				;	  LCD_BOX = An ASCIIZ string representing the LCD printbox id.		;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01EF				GET_LCD PROC									;AN000;
														;AN000;
 01EF  F6 06 0003 R 04			TEST	SWITCH_PARSED,GOT_LCD	   ; If already parsed this switch	;AN000;
 01F4  75 15				JNZ	DUPLICATE_LCD		   ; then, error: Duplicate switch	;AN000;
 01F6  F6 06 0003 R 08			TEST	SWITCH_PARSED,GOT_PRINTBOX ; If printbox already mentioned	;AN000;
 01FB  75 14				JNZ	BAD_COMBINATION 	   ; then, error: Invalid combination	;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Set the pointer to the print box id to "LCD"                                  ;AN000;
				;-------------------------------------------------------------------------------;AN000;
 01FD  B8 0000 E			MOV	AX,OFFSET LCD_BOX	   ; PRINTBOX id := LCD 		;AN000;
 0200  A3 0000 E			MOV	PRINTBOX_ID_PTR,AX	   ; Save pointer to this printbox id.	;AN000;
 0203  80 0E 0003 R 04			OR	SWITCH_PARSED,GOT_LCD	   ; Say we found this switch		;AN000;
 0208  F8				CLC				   ; Clear the error flag		;AN000;
 0209  EB 0A				JMP	SHORT GET_LCD_END	   ; Return				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; /LCD was already parsed:							;AN000;
				;-------------------------------------------------------------------------------;AN000;
 020B				DUPLICATE_LCD:				   ; Already got this switch		;AN000;
 020B  B8 0064				MOV	AX,RC_DUPLICATE_PARMS	   ; AX := error message number 	;AN000;
 020E  F9				STC				   ; SET ERROR				;AN000;
 020F  EB 04				JMP	SHORT GET_LCD_END	   ; Return				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; /PRINTBOX was already parsed: 						;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0211				BAD_COMBINATION:			   ; /LCD and /PRINTBOX invalid at same ;AN000;
 0211  B8 0063				MOV	AX,RC_INVLD_COMBINATION    ;  time, Set the error flag		;AN000;
 0214  F9				STC				   ;   AX := Error code 		;AN000;
														;AN000;
 0215				GET_LCD_END:									;AN000;
 0215  C3				RET									;AN000;
 0216				GET_LCD 	ENDP								;AN000;
														;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-19


				PAGE										;AN000;
				;===============================================================================;AN000;
				;										;AN000;
				; PROCEDURE_NAME: GET_PRINTBOX							;AN000;
				;										;AN000;
				; INPUT:  ES:[BX]	:= Result block 					;AN000;
				;	  SWITCH_PARSED := The command line switches parsed so far (bit mask)	;AN000;
				;										;AN000;
				; OUTPUT: DEFAULT_BOX	:= Is overwritten to contain the printbox id. found on	;AN000;
				;			    the command line.					;AN000;
				;	  GOT_PRINTBOX is set in SWITCH_PARSED					;AN000;
				;	  AX		:= Error message number.				;AN000;
				;	  CARRY FLAG IS SET IF ERROR FOUND					;AN000;
				;										;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0216				GET_PRINTBOX_ID PROC								;AN000;
														;AN000;
 0216  51				PUSH	CX								;AN000;
 0217  56				PUSH	SI								;AN000;
 0218  57				PUSH	DI								;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; Test for error in the printbox statement:					;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0219  F6 06 0003 R 04			TEST	SWITCH_PARSED,GOT_LCD	    ; If /LCD	  already mentioned	;AN000;
 021E  75 3D				JNZ	BAD_COMBINATION2	    ; then, error: Invalid combination	;AN000;
 0220  F6 06 0003 R 08			TEST	SWITCH_PARSED,GOT_PRINTBOX  ; If already parsed this switch	;AN000;
 0225  75 30				JNZ	DUPLICATE_PRINTBOX	    ; then, error: Duplicate switch	;AN000;
														;AN000;
 0227  26: 8B 7F 04			MOV	DI,ES:[BX+4]		    ; DI := Offset of switch VALUE found;AN000;
														;AN000;
				       .IF <<BYTE PTR [DI]> EQ 0>	    ; IF no printbox id 		;AN000;
 022B  80 3D 00              3						cmp BYTE PTR [DI],0 
 022E  75 06                 6						jne $l47 
				       .THEN				    ; then,				;AN000;
					 ;----------------------------------------------------------------------;AN000;
					 ; No printbox id. was found:						;AN000;
					 ;----------------------------------------------------------------------;AN000;
 0230  B8 0008				  MOV	  AX,FORMAT_NOT_CORRECT     ;	AX := Error code		;AN000;
 0233  F9				  STC				    ;	Set the error flag		;AN000;
				       .ELSE				    ; else,				;AN000;
 0234  EB 1F                 3						jmp short $l46 
 0236                        2	$l47: 
 0236  80 0E 0003 R 08			  OR	  SWITCH_PARSED,GOT_PRINTBOX;	Say we found this switch	;AN000;
					 ;----------------------------------------------------------------------;AN000;
					 ; Overwrite DEFAULT_BOX with the Printbox id. found			;AN000;
					 ;----------------------------------------------------------------------;AN000;
 023B  8A 0E 0000 E			  MOV	  CL,PRINTBOX_ID_LENGTH     ;	  CX := Maximum number of bytes ;AN000;
 023F  32 ED				  XOR	  CH,CH 		    ;		 to copy		;AN000;
 0241  8B F7				  MOV	  SI,DI 		    ;	  [DS][SI] :=  Value found	;AN000;
 0243  BF 0000 E			  MOV	  DI,OFFSET DEFAULT_BOX     ;	  [ES][DI] :=  Default value	;AN000;
 0246  F3/ A4				  REP	  MOVSB 		    ;	  Copy the string		;AN000;
					 ;----------------------------------------------------------------------;AN000;
					 ; Verify that the Printbox id. string is not too long: 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Page     1-20


					 ;----------------------------------------------------------------------;AN000;
					 .IF  <<BYTE PTR [DI-1]> EQ 0>	    ; If the last byte is a null	;AN000;
 0248  80 7D FF 00           3						cmp BYTE PTR [DI-1],0 
 024C  75 03                 6						jne $l51 
					 .THEN				    ; then, the string was not longer	;AN000;
									    ;	    than the maximum		;AN000;
 024E  F8				    CLC 			    ;	Clear the carry flag = No error ;AN000;
					 .ELSE				    ; else, string provided is too long ;AN000;
 024F  EB 04                 3						jmp short $l46 
 0251                        2	$l51: 
 0251  B8 0003				    MOV  AX,RC_Not_In_Sw	    ;	Error := RC for Invalid parm	;AN000;
 0254  F9				    STC 			    ; Set error 			;AN000;
					 .ENDIF 			    ; ENDIF printbox id. too long	;AN000;
				       .ENDIF				    ; ENDIF printbox id. provided	;AN000;
 0255                        2	$l46: 
														;AN000;
 0255  EB 0A				JMP	SHORT GET_PRINTBOX_END	    ; Return				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; /PRINTBOX was already parsed: 						;AN000;
				;-------------------------------------------------------------------------------;AN000;
 0257				DUPLICATE_PRINTBOX:			    ; Already got this switch		;AN000;
 0257  B8 0064				MOV	AX,RC_DUPLICATE_PARMS	    ; AX := error message number	;AN000;
 025A  F9				STC				    ; SET ERROR 			;AN000;
 025B  EB 04				JMP	SHORT GET_PRINTBOX_END	    ; Return				;AN000;
														;AN000;
				;-------------------------------------------------------------------------------;AN000;
				; /LCD was already parsed:							;AN000;
				;-------------------------------------------------------------------------------;AN000;
 025D				BAD_COMBINATION2:			    ; /LCD and /PRINTBOX invalid at same;AN000;
 025D  B8 0063				MOV	AX,RC_INVLD_COMBINATION     ;  time, Set the error flag 	;AN000;
 0260  F9				STC				    ;	AX := Error code		;AN000;
														;AN000;
 0261				GET_PRINTBOX_END:								;AN000;
 0261  5F				POP	DI								;AN000;
 0262  5E				POP	SI								;AN000;
 0263  59				POP	CX								;AN000;
 0264  C3				RET									;AN000;
 0265				GET_PRINTBOX_ID ENDP								;AN000;
														;AN000;
 0265				CODE  ENDS									;AN000;
					END									;AN000;

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Symbols-1


Macros:

		N a m e			Lines

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

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

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


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

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CODE . . . . . . . . . . . . . .  	0265	PARA	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

BACKGROUND_SW  . . . . . . . . .  	NUMBER	0002	
BAD_COMBINATION  . . . . . . . .  	L NEAR	0211	CODE
BAD_COMBINATION2 . . . . . . . .  	L NEAR	025D	CODE
BLACK_WHITE  . . . . . . . . . .  	NUMBER	0002	
B_CTL  . . . . . . . . . . . . .  	L WORD	004E	CODE
B_RESULT . . . . . . . . . . . .  	L BYTE	005A	CODE

CALL_SYSPARSE  . . . . . . . . .  	N PROC	0162	CODE	Length = 000C
COLOR  . . . . . . . . . . . . .  	NUMBER	0001	

DEFAULT_BOX  . . . . . . . . . .  	V BYTE	0000	CODE	External
DISP_ERROR . . . . . . . . . . .  	L NEAR	0000	CODE	External
DUPLICATE_B  . . . . . . . . . .  	L NEAR	01EA	CODE
DUPLICATE_LCD  . . . . . . . . .  	L NEAR	020B	CODE
DUPLICATE_PARM . . . . . . . . .  	NUMBER	0007	
DUPLICATE_PRINTBOX . . . . . . .  	L NEAR	0257	CODE
DUPLICATE_R  . . . . . . . . . .  	L NEAR	01D1	CODE

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

FILE_ERRORS  . . . . . . . . . .  	NUMBER	000D	
FORMAT_NOT_CORRECT . . . . . . .  	NUMBER	0008	

GET_BACKGROUND . . . . . . . . .  	N PROC	01D6	CODE	Length = 0019
GET_BACKGROUND_END . . . . . . .  	L NEAR	01EE	CODE
GET_LCD  . . . . . . . . . . . .  	N PROC	01EF	CODE	Length = 0027
GET_LCD_END  . . . . . . . . . .  	L NEAR	0215	CODE
GET_PRINTBOX_END . . . . . . . .  	L NEAR	0261	CODE
GET_PRINTBOX_ID  . . . . . . . .  	N PROC	0216	CODE	Length = 004F
GET_PROFILE_NAME . . . . . . . .  	N PROC	016E	CODE	Length = 0025
GET_REVERSE  . . . . . . . . . .  	N PROC	01BD	CODE	Length = 0019
GET_REVERSE_END  . . . . . . . .  	L NEAR	01D5	CODE
GET_TYPE . . . . . . . . . . . .  	N PROC	0193	CODE	Length = 002A
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Symbols-3


GET_TYPE_END . . . . . . . . . .  	L NEAR	01B8	CODE
GOT_B  . . . . . . . . . . . . .  	NUMBER	0002	
GOT_LCD  . . . . . . . . . . . .  	NUMBER	0004	
GOT_PRINTBOX . . . . . . . . . .  	NUMBER	0008	
GOT_R  . . . . . . . . . . . . .  	NUMBER	0001	
GRAPHICS_INSTALL . . . . . . . .  	L NEAR	0000	CODE	External

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

LCD_BOX  . . . . . . . . . . . .  	V BYTE	0000	CODE	External
LCD_CTL  . . . . . . . . . . . .  	L WORD	0062	CODE
LCD_RESULT . . . . . . . . . . .  	L BYTE	0070	CODE

MISSING_STMT . . . . . . . . . .  	NUMBER	000A	

NB_FREE_BYTES  . . . . . . . . .  	V WORD	0000	CODE	External
NO_MEMORY  . . . . . . . . . . .  	NUMBER	0002	
NO_VALUES  . . . . . . . . . . .  	L BYTE	0020	CODE

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

PALACE . . . . . . . . . . . . .  	NUMBER	0001	
PARMS  . . . . . . . . . . . . .  	L WORD	0004	CODE
PARMSX . . . . . . . . . . . . .  	L BYTE	0007	CODE
PARSE_PARMS  . . . . . . . . . .  	N PROC	0000	CODE	Global	Length = 0162
PARSE_PARMS_START  . . . . . . .  	L NEAR	00A2	CODE
PC_CONVERTIBLE . . . . . . . . .  	NUMBER	0008	
PRINTBOX_CTL . . . . . . . . . .  	L WORD	0078	CODE
PRINTBOX_ID_LENGTH . . . . . . .  	V BYTE	0000	CODE	External
PRINTBOX_ID_PTR  . . . . . . . .  	V WORD	0000	CODE	External
PRINTBOX_RESULT  . . . . . . . .  	L BYTE	008F	CODE
PRINTER_TYPE_LENGTH  . . . . . .  	V BYTE	0000	CODE	External
PRINTER_TYPE_PARM  . . . . . . .  	V BYTE	0000	CODE	External
PROFILE_NOT_FOUND  . . . . . . .  	NUMBER	0009	
PROFILE_PATH . . . . . . . . . .  	V BYTE	0000	CODE	External
PROFILE_RESULT . . . . . . . . .  	L BYTE	0032	CODE
PROF_CTL . . . . . . . . . . . .  	L WORD	0029	CODE

RC_DUPLICATE_PARMS . . . . . . .  	NUMBER	0064	
RC_EOL . . . . . . . . . . . . .  	NUMBER	-0001	
RC_INVLD_COMBINATION . . . . . .  	NUMBER	0063	
RC_NOT_IN_STR  . . . . . . . . .  	NUMBER	0008	
RC_NOT_IN_SW . . . . . . . . . .  	NUMBER	0003	
RC_NOT_IN_VAL  . . . . . . . . .  	NUMBER	0007	
RC_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
RC_TOO_MANY  . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Symbols-4


RESIDENT_SHARED_DATA_SIZE  . . .  	V WORD	0000	CODE	External
REVERSE_SW . . . . . . . . . . .  	NUMBER	0001	
ROTATE . . . . . . . . . . . . .  	NUMBER	0001	
ROUNDUP  . . . . . . . . . . . .  	NUMBER	0002	
R_CTL  . . . . . . . . . . . . .  	L WORD	003A	CODE
R_RESULT . . . . . . . . . . . .  	L BYTE	0046	CODE

SAVE_SI  . . . . . . . . . . . .  	L DWORD	0099	CODE
STDERR . . . . . . . . . . . . .  	NUMBER	0000		Communal
STDOUT . . . . . . . . . . . . .  	NUMBER	0000		Communal
SUBLIST  . . . . . . . . . . . .  	L DWORD	0097	CODE
SWITCH_PARSED  . . . . . . . . .  	L BYTE	0003	CODE
SYNTAX_ERRORS  . . . . . . . . .  	NUMBER	000E	
SYSDISPMSG . . . . . . . . . . .  	L NEAR	0000	CODE	External
SYSPARSE . . . . . . . . . . . .  	L NEAR	0000	CODE	External

TEMP_SHARED_DATA_PTR . . . . . .  	V WORD	0000	CODE	External
TOO_MANY_PARMS . . . . . . . . .  	NUMBER	0003	
TYPE_CTL . . . . . . . . . . . .  	L WORD	0017	CODE
TYPE_RESULT  . . . . . . . . . .  	L BYTE	0021	CODE

UNABLE_RELOAD  . . . . . . . . .  	NUMBER	0012	

VALUE_NOT_ALLOWED  . . . . . . .  	NUMBER	0004	

$L1  . . . . . . . . . . . . . .  	L NEAR	00BA	CODE
$L11 . . . . . . . . . . . . . .  	L NEAR	00EF	CODE
$L13 . . . . . . . . . . . . . .  	L NEAR	00FB	CODE
$L15 . . . . . . . . . . . . . .  	L NEAR	0106	CODE
$L19 . . . . . . . . . . . . . .  	L NEAR	015A	CODE
$L2  . . . . . . . . . . . . . .  	L NEAR	010E	CODE
$L22 . . . . . . . . . . . . . .  	L NEAR	0156	CODE
$L23 . . . . . . . . . . . . . .  	L NEAR	011F	CODE
$L25 . . . . . . . . . . . . . .  	L NEAR	0129	CODE
$L27 . . . . . . . . . . . . . .  	L NEAR	0140	CODE
$L29 . . . . . . . . . . . . . .  	L NEAR	014A	CODE
$L31 . . . . . . . . . . . . . .  	L NEAR	0153	CODE
$L34 . . . . . . . . . . . . . .  	L NEAR	018C	CODE
$L37 . . . . . . . . . . . . . .  	L NEAR	0181	CODE
$L39 . . . . . . . . . . . . . .  	L NEAR	01B8	CODE
$L4  . . . . . . . . . . . . . .  	L NEAR	0107	CODE
$L43 . . . . . . . . . . . . . .  	L NEAR	01B4	CODE
$L46 . . . . . . . . . . . . . .  	L NEAR	0255	CODE
$L47 . . . . . . . . . . . . . .  	L NEAR	0236	CODE
$L5  . . . . . . . . . . . . . .  	L NEAR	00CB	CODE
$L51 . . . . . . . . . . . . . .  	L NEAR	0251	CODE
$L7  . . . . . . . . . . . . . .  	L NEAR	00D7	CODE
$L9  . . . . . . . . . . . . . .  	L NEAR	00E3	CODE
$LL19  . . . . . . . . . . . . .  	NUMBER	0013	
$LL34  . . . . . . . . . . . . .  	NUMBER	0022	
$LL39  . . . . . . . . . . . . .  	NUMBER	0027	
$LL46  . . . . . . . . . . . . .  	NUMBER	002E	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  grparms		
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:37
DOS - GRAPHICS Command  -	Command line parsing module	;AN000Symbols-5


@VERSION . . . . . . . . . . . .  	TEXT  510		


   1697 Source  Lines
   9548 Total   Lines
    313 Symbols

  46504 + 176935 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
