home *** CD-ROM | disk | FTP | other *** search
- ;
- ; Z3LIB Module Name: Z3PRS1
- ; Author: Richard Conn
- ; Z3LIB Version Number: 1.0
- ; Module Version Number: 1.0
- ; Module Entry Points:
- ; ZPRSFN PARSER
- ; Module External References:
- ; GETDUOK GETMDISK GETMUSER GETNDR
- ; RETUD CAPSTR
- ;
-
- ;
- ; External References
- ;
- EXT RETUD,CAPSTR,GETDUOK,GETMDISK,GETMUSER,GETNDR
- ;
- ; Basic Equates
- ;
- CMDSEP equ ';' ;command separator
- TFCB equ 5CH ;FCB Buffer
- TFCB2 equ 6CH ;2nd FCB Buffer
- TBUFF equ 80H ;Temporary Buffer
-
- ;
- ; PARSE TOKEN PTED TO BY HL INTO FCB PTED TO BY DE
- ; ON INPUT,
- ; HL pts to token, ending in any valid delimiter
- ; DE pts to 36-byte FCB
- ; A = Flag:
- ; A = 0 if scan for DIR form before DU
- ; A = 1 if scan for DU form before DIR
- ; ON OUTPUT,
- ; HL pts to char following token
- ; A = Number of Question Marks in File Name and Zero Flag Set
- ; Accordingly
- ;
- ZPRSFN::
- PUSH B ;SAVE BC
- STA DUFIRST ;SET FLAG
- CALL CAPSTR ;CAPITALIZE INPUT
- PUSH D ;SAVE PTR TO FCB
- CALL INITFCB ;INIT IT
- POP D ;GET PTR BACK
- XRA A ;DON'T FLUSH ON SCANNER
- STA SCFLUSH
- PUSH D ;SAVE PTR AGAIN
- CALL SCANNER ;SCAN LINE
- POP D ;RESTORE PTR
- POP B ;RESTORE BC
- LDA QMCNT ;CHECK FOR QUESTION MARKS
- ORA A
- RET
-
- ;
- ; PARSE COMMAND LINE PTED TO BY HL (may be an element of an MCL)
- ; ON INPUT,
- ; HL pts to command line ending in 0
- ; A = Flag:
- ; A = 0 if scan for DIR form before DU
- ; A = 1 if scan for DU form before DIR
- ; ON OUTPUT,
- ; HL pts to next command in MCL
- ; DE pts to FCB containing command name (header.COM)
- ; A = Flag:
- ; A = 0 and Zero Flag Set if OK
- ; A = number of question marks and NZ if header
- ; contains one or more question marks
- ;
- PARSER::
- PUSH B ;SAVE BC
- CALL PARSE ;DO THE WORK
- LHLD TAILSV ;GET PTR TO COMMAND TAIL
- LXI D,TBUFF ;COPY TAIL INTO TBUFF
- MVI B,0 ;SET CHAR COUNT
- PUSH D ;SAVE PTR TO TBUFF
- INX D ;PT TO FIRST CHAR POSITION
- SVTAIL:
- MOV A,M ;GET NEXT CHAR
- CALL TSTEOL ;END OF LINE?
- JZ SVT1
- STAX D ;SAVE CHAR
- INX H ;PT TO NEXT
- INX D
- INR B ;INCREMENT CHAR COUNT
- JMP SVTAIL
- SVT1:
- XRA A ;STORE ENDING 0
- STAX D
- POP H ;GET PTR TO TBUFF
- MOV M,B ;SET CHAR COUNT
- POP B ;RESTORE BC
- LHLD NXTCHR ;PT TO NEXT CHAR IN HL
- LXI D,FCBDN ;PT TO FCB IN DE
- LDA ERRFLG ;GET ERROR FLAG IN A
- ORA A ;SET ZERO FLAG
- RET
- ;
- ; MAIN ROUTINE
- ;
- PARSE:
- ;
- ; SAVE DU/DIR ORDER FLAG AND CAPITALIZE INPUT LINE
- ;
- STA DUFIRST ;0=DIR FIRST, 0FFH=DU FIRST
- CALL CAPSTR ;CAPITALIZE LINE
- ;
- ; SET SCANNER FLUSH FLAG
- ;
- MVI A,0FFH
- STA SCFLUSH ;SET FLAG TO NZ (PERFORM FLUSH)
- ;
- ; INITIALIZE THE COMMAND AND TOKEN FCBS
- ;
- LXI D,FCBDN ;PT TO COMMAND FCB
- CALL INITFCB ;INIT IT
- LXI D,TFCB ;PT TO TOKEN FCB
- CALL INITFCB ;INIT TFCB and TFCB2
- ;
- ; EXTRACT COMMAND NAME
- ;
- LXI D,FCBDN ;PLACE COMMAND NAME INTO COMMAND FCB
- CALL SCANNER ;EXTRACT COMMAND NAME
- LDA QMCNT ;SET QUESTION MARK COUNT
- STA ERRFLG ;INTO ERROR FLAG
- ;
- ; SET TYPE OF COMMAND
- ;
- PUSH H ;SAVE PTR TO NEXT BYTE
- LXI H,COMMSG ;PLACE DEFAULT FILE TYPE (COM) INTO FCB
- LXI D,FCBFT ;PT TO FILE TYPE
- MVI B,3 ;3 BYTES
- CALL LDIR
- POP H ;GET PTR TO NEXT BYTE
- ;
- ; SET DIR: PREFIX FLAG
- ;
- LDA MYCOLON ;PREVIOUS TOKEN CONTAINED A COLON?
- STA COLON ;SET FLAG FOR DU: OR DIR: PREFIX
- ;
- ; SAVE POINTER TO COMMAND TAIL FOR LATER COPY INTO TBUFF AND FIND END OF
- ; COMMAND LINE
- ;
- SHLD TAILSV ;SAVE PTR TO COMMAND TAIL
- PUSH H ;SAVE PTR
- CTAIL:
- MOV A,M ;GET CHAR
- CALL TSTEOL ;AT EOL?
- JZ CTAIL1
- INX H ;PT TO NEXT
- JMP CTAIL
- CTAIL1:
- SHLD NXTCHR ;SAVE PTR TO NEXT LINE
- POP H ;GET PTR TO COMMAND TAIL
- ;
- ; EXTRACT FIRST TOKEN
- ;
- CALL SKSP ;SKIP OVER SPACES
- RZ ;DONE IF EOL OR END OF COMMAND
- LXI D,TFCB ;STORE FIRST TOKEN IN TFCB
- CALL SCANNER ;EXTRACT TOKEN
- ;
- ; EXTRACT SECOND TOKEN
- ;
- CALL SKSP ;SKIP OVER SPACES
- RZ ;DONE IF EOL OR END OF COMMAND
- LXI D,TFCB2 ;PT TO 2ND FCB AND FALL THRU TO SCANNER
- ;
- ; EXTRACT TOKEN FROM COMMAND LINE AND PLACE IT INTO FCB PTED TO BY DE
- ; FORMAT FCBDN FCB IF TOKEN RESEMBLES FILE NAME AND TYPE (FILENAME.TYP)
- ; ON INPUT, HL PTS TO NEXT CHAR AND DE PTS TO FCB
- ; ON OUTPUT, HL PTS TO DELIMITER AFTER TOKEN AND ZERO FLAG IS RESET
- ; IF '?' IS IN TOKEN
- ;
- ; ENTRY POINTS:
- ; SCANNER - LOAD TOKEN INTO FCB PTED TO BY DE
- ; ON EXIT, HL PTS TO ENDING DELIMITER
- ;
- SCANNER:
- XRA A ;A=0
- STAX D ;SET DEFAULT DRIVE
- STA MYCOLON ;SET NO COLON
- STA TEMPDR ;SET TEMPORARY DRIVE NUMBER TO DEFAULT
- STA QMCNT ;ZERO QUESTION MARK COUNTER
- CALL RETUD ;GET USER/DISK
- MOV A,C ;GET USER
- STA TEMPUSR ;SET TEMPUSR
- PUSH D ;SAVE PTR TO FIRST BYTE OF FCB
- MVI B,8 ;8 CHARS MAX
- CALL SCANF ;PLACE FIRST TOKEN INTO FILE NAME FIELD
- POP D ;GET PTR TO FIRST BYTE OF FCB
- MOV A,M ;GET TERMINATING CHAR
- STA ENDCHAR ;SET ENDING CHAR
- CPI ':' ;COLON?
- JNZ SCAN1 ;NO, WE HAVE A FILE NAME
- STA MYCOLON ;SET COLON
- INX H ;PT TO CHAR AFTER COLON
- ;
- ; CHECK FOR DU: FORM FIRST
- ;
- LDA DUFIRST ;CHECK DUFIRST FLAG
- ORA A
- JZ SCN1
- CALL DUSCAN ;CHECK FOR DU: FORM
- JZ SUD1 ;GOT IT
- ;
- ; CHECK FOR DIR: FORM SECOND OR FIRST
- ;
- SCN1:
- CALL DIRSCAN ;CHECK FOR DIR: FORM
- JZ SUD1 ;GOT IT
- ;
- ; CHECK FOR DU SCAN FOR DUSECOND
- ;
- LDA DUFIRST ;CHECK DU FLAG
- ORA A
- JNZ SUD1
- ;
- ; CHECK FOR DU: FORM SECOND
- ;
- CALL DUSCAN ;CHECK FOR DU: FORM
- ;
- ; WE HAVE A VALID DU OR DIR - TEMPDR/TEMPUSR CONTAIN DATA
- ;
- SUD1:
- LDA TEMPDR ;SET DRIVE
- STAX D ;... IN FCB
- ;
- ; REINIT FCB PTED TO BY DE
- ;
- PUSH D ;SAVE PTR
- INX D ;PT TO FN FIELD
- CALL IFCB ;ONLY PARTIAL INIT (17 BYTES TOTAL)
- POP D
- ;
- ; EXTRACT FILENAME FIELD
- ;
- XRA A
- STA QMCNT ;ZERO QUESTION MARK COUNTER
- PUSH D ;SAVE PTR TO FIRST BYTE OF FCB
- MVI B,8 ;8 CHARS MAX
- CALL SCANF ;STORE FILE NAME
- POP D ;GET PTR TO FIRST BYTE OF FCB
- MOV A,M ;GET OFFENDING CHAR
- STA ENDCHAR ;SET ENDING CHAR
- ;
- ; SKIP TO FILE TYPE FIELD
- ; HL PTS TO NEXT CHAR, DE PTS TO DN FIELD OF FCB
- ;
- SCAN1:
- LDA ENDCHAR ;GET ENDING CHAR
- XCHG
- LXI B,8 ;PT TO BEFORE FILE TYPE FIELD OF FCB
- DAD B
- XCHG
- ;
- ; EXTRACT FILETYPE FIELD
- ;
- MVI B,3 ;PREPARE TO EXTRACT FILE TYPE
- CPI '.' ;IF '.', WE HAVE A TYPE
- JNZ SCAN2
- INX H ;PT TO CHAR AFTER '.'
- PUSH D
- CALL SCANF ;GET FCB FILE TYPE
- POP D
- SCAN2:
- ;
- ; SET USER NUMBER REFERENCED
- ; HL PTS TO NEXT CHAR, DE PTS TO BEFORE FCB FT
- ;
- XCHG
- LXI B,5 ;PT TO S1 FIELD
- DAD B
- XCHG
- LDA TEMPUSR ;STORE USER NUMBER HERE
- STAX D
- LDA SCFLUSH ;FLUSH TO SPACE, ETC?
- ORA A ;0=NO
- JZ SCAN4
- ;
- ; SKIP TO SPACE, CHAR AFTER =, OR EOL
- ; HL PTS TO NEXT CHAR IN LINE
- ;
- SCAN3:
- MOV A,M ;GET NEXT CHAR
- CPI ' '+1 ;DONE IF LESS THAN SPACE
- JC SCAN4
- CALL TSTEOL ;EOL?
- JZ SCAN4
- INX H ;PT TO NEXT
- CPI '=' ;EQUATE?
- JNZ SCAN3
- ;
- ; SET ZERO FLAG TO INDICATE PRESENCE OF '?' IN DIR:FILENAME.TYP
- ;
- SCAN4:
- LDA QMCNT ;NUMBER OF QUESTION MARKS
- ORA A ;SET ZERO FLAG
- RET
- ;
- ; SCANF -- SCAN TOKEN PTED TO BY HL FOR A MAX OF B BYTES; PLACE IT INTO
- ; FILE NAME FIELD PTED TO BY DE; EXPAND AND INTERPRET WILD CARDS OF
- ; '*' AND '?'; ON EXIT, DE PTS TO TERMINATING DELIMITER
- ;
- SCANF:
- CALL SDELM ;DONE IF DELIMITER ENCOUNTERED
- RZ
- INX D ;PT TO NEXT BYTE IN FCB
- CPI '*' ;IS (DE) A WILD CARD?
- JNZ SCANF1 ;CONTINUE IF NOT
- ;
- ; HANDLE WILD FIELD
- ;
- MVI A,'?' ;PLACE '?' IN FCB AND DON'T ADVANCE HL IF SO
- STAX D
- CALL SCQ ;SCANNER COUNT QUESTION MARKS
- JMP SCANF2
- ;
- ; HANDLE NORMAL CHARS, INCL '?'
- ;
- SCANF1:
- STAX D ;STORE FILENAME CHAR IN FCB
- INX H ;PT TO NEXT CHAR IN COMMAND LINE
- CPI '?' ;CHECK FOR QUESTION MARK (WILD)
- CZ SCQ ;SCANNER COUNT QUESTION MARKS
- ;
- ; COUNT DOWN CHARS
- ;
- SCANF2:
- DCR B ;COUNT DOWN
- JNZ SCANF ;DECREMENT CHAR COUNT UNTIL 8 ELAPSED
- ;
- ; FLUSH TO NEXT DELIMITER
- ;
- SCANF3:
- CALL SDELM ;8 CHARS OR MORE - SKIP UNTIL DELIMITER
- RZ ;ZERO FLAG SET IF DELIMITER FOUND
- INX H ;PT TO NEXT CHAR IN COMMAND LINE
- JMP SCANF3
- ;
- ; INCREMENT QUESTION MARK COUNT FOR SCANNER
- ; THIS ROUTINE INCREMENTS THE COUNT OF THE NUMBER OF QUESTION MARKS IN
- ; THE CURRENT FCB ENTRY
- ;
- SCQ:
- PUSH H ;SAVE HL
- LXI H,QMCNT ;GET COUNT
- INR M ;INCREMENT
- POP H ;GET HL
- RET
- ;
- ; SCAN FOR AND EXTRACT DISK/USER INFO ASSUMING DU: FORM
- ; ON ENTRY, DE PTS TO FIRST BYTE OF FCB CONTAINING POSSIBLE DU FORM
- ; ON EXIT, ZERO FLAG SET MEAN OK AND TEMPDR AND TEMPUSR SET
- ;
- DUSCAN:
- PUSH H ;SAVE REGS
- PUSH D
- CALL DUS ;DO SCAN
- POP D ;RESTORE REGS
- POP H
- RET
- DUS:
- CALL GETDUOK ;OK FOR DU FORM?
- JZ DIRSERR ;ABORT IF NOT
- XCHG ;PTR IN HL
- INX H ;PT TO FIRST BYTE OF FN
- CALL GETMDISK ;GET MAX DISK
- MOV B,A ;... IN B
- INR B ;B=MAX DISK + 1
- MOV A,M ;GET FIRST CHAR
- CPI 'A' ;CONVERT POSSIBLE DRIVE SPEC TO NUMBER
- JC DUS1 ;IF LESS THAN 'A', MUST BE DIGIT
- ;
- ; SET DISK NUMBER (A=1)
- ;
- SUI 'A'-1 ;CONVERT DRIVE NUMBER TO 1-16
- CMP B ;COMPARE AGAINST MAX DISK + 1
- JNC DUSE1 ;INVALID DISK NUMBER
- STA TEMPDR ;SET TEMPORARY DRIVE NUMBER
- INX H ;PT TO NEXT CHAR
- MOV A,M ;SEE IF IT IS A SPACE
- CPI ' '
- RZ
- CALL DIGCK ;CHECK FOR DIGIT
- RC
- ;
- ; SET USER NUMBER
- ;
- DUS1:
- PUSH H ;SAVE PTR TO DIGITS
- MVI B,2 ;UP TO 2 DIGITS
- DUS1A:
- MOV A,M ;CHECK FOR DIGIT OR SPACE
- CPI ' ' ;IF SPACE, THEN NO DIGIT
- JZ DUS2
- CALL DIGCK ;CHECK FOR DIGIT
- JC DUSE
- INX H
- DCR B
- JNZ DUS1A ;COUNT DOWN
- MOV A,M ;3RD CHAR
- CPI ' ' ;MUST BE SPACE
- JNZ DUSE
- DUS2:
- POP H
- CALL GETMUSER ;GET MAX USER NUMBER
- MOV C,A ;... IN C
- INR C ;MAXUSR+1
- CALL NUM ;GET NUMBER
- CMP C ;COMPARE AGAINST MAXUSR+1
- JNC DUSE1
- STA TEMPUSR ;SAVE USER NUMBER
- XRA A ;SET OK
- RET
- DUSE:
- POP H ;CLEAR STACK
- DUSE1:
- XRA A
- DCR A
- RET
- ;
- ; SCAN FOR DIR FORM
- ; ON ENTRY, DE PTS TO FCB CONTAINING NAME TO CHECK FOR
- ; ON EXIT, IF FOUND, Z AND TEMPUSR AND TEMPDR SET
- ;
- DIRSCAN:
- PUSH H ;SAVE REGS
- PUSH D
- CALL DIRS ;DO SCAN
- POP D ;RESTORE REGS
- POP H
- RET
- DIRS:
- CALL GETNDR ;PT TO NAMED DIR
- JZ DIRSERR ;ABORT IF NONE
- XCHG ;PTR IN HL
- INX H ;PT TO FN
- DIRS1:
- LDAX D ;GET NEXT CHAR
- ORA A ;ZERO IF END OF DIR
- JZ DIRSERR
- INX D ;PT TO DIR NAME
- INX D
- PUSH H ;SAVE PTR TO FILE NAME
- PUSH D ;SAVE PTR TO DIR ENTRY
- MVI B,8 ;MATCH?
- DIRS2:
- LDAX D ;GET BYTE
- CMP M ;COMPARE
- JNZ DIRS3
- INX H ;PT TO NEXT
- INX D
- DCR B
- JNZ DIRS2 ;COUNT DOWN
- DIRS3:
- POP D ;RESTORE REGS
- POP H
- JZ DIRS4
- XCHG ;ADVANCE TO NEXT ENTRY
- LXI B,16 ;8 BYTES FOR NAME + 8 BYTES FOR PASSWORD
- DAD B
- XCHG
- JMP DIRS1
- ;
- ; NO DIR match
- ;
- DIRSERR:
- XRA A ;RETURN NZ
- DCR A
- RET
- ;
- ; DIR match
- ;
- DIRS4:
- DCX D ;PT TO USER
- LDAX D ;GET USER
- STA TEMPUSR
- DCX D ;PT TO DISK
- LDAX D ;GET IT
- STA TEMPDR ;A=1
- XRA A ;SET Z
- RET
-
- ;
- ; SKIP OVER SPACES PTED TO BY HL
- ; ON RETURN, ZERO FLAG SET MEANS WE HIT EOL OR CMDSEP
- ;
- SKSP:
- MOV A,M ;GET NEXT CHAR
- INX H ;PT TO NEXT
- CPI ' ' ;SPACE?
- JZ SKSP
- DCX H ;PT TO NON-SPACE
- RET
- ;
- ; CHECK TO SEE IF HL PTS TO DELIMITER; IF SO, RET W/ZERO FLAG SET
- ;
- SDELM:
- MOV A,M ;GET NEXT CHAR FROM LINE
- CPI ' '+1 ;DELIM IF <= <SP>
- JC ZERO
- CPI '=' ;'='=DELIMITER
- RZ
- CPI 5FH ;UNDERSCORE=DELIMITER
- RZ
- CPI '.' ;'.'=DELIMITER
- RZ
- CPI ':' ;':'=DELIMITER
- RZ
- CPI ',' ;','=DELIMITER
- RZ
- CPI '<' ;'<'=DELIMITER
- RZ
- CPI '>' ;'>'=DELIMITER
- RZ ;FALL THRU TO TSTEOL
- ;
- ; CHECK TO SEE IF CHAR IN A IS EOL OR CMDSEP
- ;
- TSTEOL:
- ORA A ;EOL?
- RZ ;RETURN WITH FLAG
- CPI CMDSEP ;COMMAND SEPARATOR?
- RET
- ;
- ; RETURN WITH A=0 AND Z
- ;
- ZERO:
- XRA A
- RET
-
- ;
- ; CONVERT NUMBER STRING PTED TO BY HL INTO A NUMBER IN A
- ;
- NUM:
- PUSH B
- LXI B,1100H ;C=ACCUMULATED VALUE, B=CHAR COUNT
- ; (C=0, B=11)
- NUM1:
- MOV A,M ;GET CHAR
- CALL SDELM ;DONE IF DELIMITER
- JZ NUM2
- INX H ;PT TO NEXT CHAR
- CALL DIGCK ;CHECK FOR DIGIT IN A
- JC NUMERR
- MOV D,A ;DIGIT IN D
- MOV A,C ;NEW VALUE = OLD VALUE * 10
- RLC ;*2
- JC NUMERR
- RLC ;*4
- JC NUMERR
- ADD C ;*5
- JC NUMERR
- RLC ;*10
- JC NUMERR
- ADD D ;NEW VALUE = OLD VALUE * 10 + DIGIT
- JC NUMERR ;CHECK FOR RANGE ERROR
- MOV C,A ;SET NEW VALUE
- DCR B
- JNZ NUM1 ;COUNT DOWN
- ;
- ; RETURN FROM NUMBER
- ;
- NUM2:
- MOV A,C ;GET ACCUMULATED VALUE
- POP B
- ORA A ;CLEAR CARRY
- RET
- ;
- ; RESTORE STACK AND RETURN WITH CARRY SET
- ;
- NUMERR:
- POP B
- STC
- RET
-
- ;
- ; CHECK TO SEE IF A IS A DIGIT
- ; IF SO, RETURN ITS VALUE
- ; IF NOT, RETURN WITH CARRY SET
- ;
- DIGCK:
- SUI '0' ;DIGIT?
- RC ;ERROR
- CPI 10 ;RANGE?
- JNC DIGCK1
- CMC ;FLIP CARRY
- RET
- DIGCK1:
- STC ;SET CARRY
- RET
-
- ;
- ; INIT FCB PTED TO BY DE
- ;
- INITFCB:
- XRA A
- STAX D ;SET DEFAULT DISK (DN BYTE IS 0)
- INX D ;PT TO FILE NAME FIELD
- CALL IFCB ;FILL 1ST PART OF FCB; FALL THRU TO IFCB TO RUN AGAIN
- ;
- ; FILL FN, FT, EX, S1, S2, RC, AND FOLLOWING CR (OR DN) FIELDS
- ;
- IFCB:
- MVI B,11 ;STORE 11 SPACES
- MVI A,' '
- CALL FILL
- XRA A
- STAX D ;SET EX TO ZERO
- INX D
- CALL RETUD ;GET CURRENT USER
- MOV A,C
- STAX D ;SET S1 TO CURRENT USER
- INX D
- MVI B,3 ;STORE 3 ZEROES
- XRA A ;FALL THRU TO FILL
- ;
- ; FILL MEMORY POINTED TO BY DE WITH CHAR IN A FOR B BYTES
- ;
- FILL:
- STAX D ;FILL WITH BYTE IN A
- INX D ;PT TO NEXT
- DCR B ;COUNT DOWN
- JNZ FILL
- RET
- ;
- ; COPY HL TO DE FOR B BYTES
- ;
- LDIR:
- MOV A,M ;GET
- STAX D ;PUT
- INX H ;PT TO NEXT
- INX D
- DCR B ;COUNT DOWN
- JNZ LDIR
- RET
- ;
- ; BUFFERS
- ;
- COMMSG:
- DB 'COM' ;FILE TYPE OF COM FILE
- COLON:
- DS 1 ;INDICATES THAT CURRENT TOKEN CONTAINS DIR/DU
- DUFIRST:
- DS 1 ;DU FIRST = 0FFH, DIR FIRST = 0
- ENDCHAR:
- DS 1 ;TERMINATING CHAR IN SCAN
- ERRFLG:
- DS 1 ;ERROR FLAG (NUMBER OF QUESTION MARKS IN HDR)
- FCBDN:
- DS 1
- DS 8
- FCBFT:
- DS 3
- DS 4
- DS 16
- DS 4
-
- MYCOLON:
- DS 1 ;INDICATES COMMAND BEGINS WITH DIR REFERENCE
- NXTCHR:
- DS 2 ;PTR TO NEXT CHAR IN COMMAND SEQUENCE
- QMCNT:
- DS 1 ;QUESTION MARK COUNT
- SCFLUSH:
- DS 1 ;FLUSH TO SPACE, ETC, ON SCANNER (0=NO)
- TAILSV:
- DS 2 ;PTR TO COMMAND TAIL
- TEMPDR:
- DS 1 ;TEMPORARY DRIVE REF
- TEMPUSR:
- DS 1 ;TEMPORARY USER NUMBER REF
-
- END