home *** CD-ROM | disk | FTP | other *** search
- ; PROGRAM: ERASE
- ; VERSION: 4.0
- ; DATE: 16 JAN 83
- ; AUTHOR: RICHARD CONN
- ; PREVIOUS VERSION: 3.3 (6 JAN 83), 3.2 (7 DEC 82)
- ; PREVIOUS VERSION: 3.1 (9 NOV 82), 3.0 (18 OCT 82), 2.0 (18 NOV 81)
- ; PREVIOUS VERSION: 1.2 (12 APR 81), 1.3 (25 OCT 81), 1.4 (26 OCT 81)
- ; PREVIOUS VERSION: 1.0 (14 JUN 80), 1.1 (19 OCT 80)
- VERS equ 40
-
- ;
- ; This program is Copyright (c) 1982, 1983 by Richard Conn
- ; All Rights Reserved
- ;
- ; ZCPR2 and its utilities, including this one, are released
- ; to the public domain. Anyone who wishes to USE them may do so with
- ; no strings attached. The author assumes no responsibility or
- ; liability for the use of ZCPR2 and its utilities.
- ;
- ; The author, Richard Conn, has sole rights to this program.
- ; ZCPR2 and its utilities may not be sold without the express,
- ; written permission of the author.
- ;
-
-
- ;
- ; ERASE COMMAND --
- ; Erase files specified in command line. Command is of the form --
- ; ERASE DIR:FILENAME.TYP ISR
- ; If I option is given, Inspection of each file is performed and
- ; the user is given the option to erase the file or not. If S option is
- ; given, System files are included in erase procedure. Drive specification
- ; is optional. If R option is given, R/O files are erased without prompting.
- ;
-
- FALSE EQU 0
- TRUE EQU NOT FALSE
-
- ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE)
-
- EXT DIRF ; DIRECTORY PROCESSOR
-
- EXT ZFNAME ; FILE NAME PROCESSOR
- EXT ZGPINS ; ZCPR2 BUFFER INIT
-
- EXT PHLDC ; PRINT HL AS DECIMAL CHARS
- EXT PRINT ; PRINT ROUTINE
- EXT COUT ; CONSOLE OUTPUT ROUTINE
- EXT CIN ; CONSOLE INPUT ROUTINE
- EXT CAPS ; CAPITALIZE ROUTINE
- EXT CRLF ; NEW LINE ROUTINE
- EXT FILLB ; FILL ROUTINE
- EXT CODEND ; CODE END COMPUTATION ROUTINE
-
- ;
- ; CP/M EQUATES
- ;
- CPM EQU 0 ; WARM BOOT
- BDOS EQU 5 ; BDOS ENTRY
- FCB EQU 5CH ; FCB
- BUFF EQU 80H ; INPUT LINE BUFFER
- CR EQU 13 ; <CR>
- LF EQU 10 ; <LF>
-
- ;
- ; Branch to Start of Program
- ;
- JMP START
-
- ;
- ;******************************************************************
- ;
- ; SINSFORM -- ZCPR2 Utility Standard General Purpose Initialization Format
- ;
- ; This data block precisely defines the data format for
- ; initial features of a ZCPR2 system which are required for proper
- ; initialization of the ZCPR2-Specific Routines in SYSLIB.
- ;
-
- ;
- ; EXTERNAL PATH DATA
- ;
- EPAVAIL:
- DB 0FFH ; IS EXTERNAL PATH AVAILABLE? (0=NO, 0FFH=YES)
- EPADR:
- DW 40H ; ADDRESS OF EXTERNAL PATH IF AVAILABLE
-
- ;
- ; INTERNAL PATH DATA
- ;
- INTPATH:
- DB 0,0 ; DISK, USER FOR FIRST PATH ELEMENT
- ; DISK = 1 FOR A, '$' FOR CURRENT
- ; USER = NUMBER, '$' FOR CURRENT
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0 ; DISK, USER FOR 8TH PATH ELEMENT
- DB 0 ; END OF PATH
-
- ;
- ; MULTIPLE COMMAND LINE BUFFER DATA
- ;
- MCAVAIL:
- DB 0FFH ; IS MULTIPLE COMMAND LINE BUFFER AVAILABLE?
- MCADR:
- DW 0FF00H ; ADDRESS OF MULTIPLE COMMAND LINE BUFFER IF AVAILABLE
-
- ;
- ; DISK/USER LIMITS
- ;
- MDISK:
- DB 4 ; MAXIMUM NUMBER OF DISKS
- MUSER:
- DB 31 ; MAXIMUM USER NUMBER
-
- ;
- ; FLAGS TO PERMIT LOG IN FOR DIFFERENT USER AREA OR DISK
- ;
- DOK:
- DB 0FFH ; ALLOW DISK CHANGE? (0=NO, 0FFH=YES)
- UOK:
- DB 0FFH ; ALLOW USER CHANGE? (0=NO, 0FFH=YES)
-
- ;
- ; PRIVILEGED USER DATA
- ;
- PUSER:
- DB 10 ; BEGINNING OF PRIVILEGED USER AREAS
- PPASS:
- DB 'chdir',0 ; PASSWORD FOR MOVING INTO PRIV USER AREAS
- DS 41-($-PPASS) ; 40 CHARS MAX IN BUFFER + 1 for ending NULL
-
- ;
- ; CURRENT USER/DISK INDICATOR
- ;
- CINDIC:
- DB '$' ; USUAL VALUE (FOR PATH EXPRESSIONS)
-
- ;
- ; DMA ADDRESS FOR DISK TRANSFERS
- ;
- DMADR:
- DW 80H ; TBUFF AREA
-
- ;
- ; NAMED DIRECTORY INFORMATION
- ;
- NDRADR:
- DW 00000H ; ADDRESS OF MEMORY-RESIDENT NAMED DIRECTORY
- NDNAMES:
- DB 64 ; MAX NUMBER OF DIRECTORY NAMES
- DNFILE:
- DB 'NAMES ' ; NAME OF DISK NAME FILE
- DB 'DIR' ; TYPE OF DISK NAME FILE
-
- ;
- ; REQUIREMENTS FLAGS
- ;
- EPREQD:
- DB 0FFH ; EXTERNAL PATH?
- MCREQD:
- DB 0FFH ; MULTIPLE COMMAND LINE?
- MXREQD:
- DB 0FFH ; MAX USER/DISK?
- UDREQD:
- DB 0FFH ; ALLOW USER/DISK CHANGE?
- PUREQD:
- DB 0FFH ; PRIVILEGED USER?
- CDREQD:
- DB 0FFH ; CURRENT INDIC AND DMA?
- NDREQD:
- DB 0FFH ; NAMED DIRECTORIES?
- Z2CLASS:
- DB 0 ; CLASS 0
- DB 'ZCPR2'
- DS 10 ; RESERVED
-
- ;
- ; END OF SINSFORM -- STANDARD DEFAULT PARAMETER DATA
- ;
- ;******************************************************************
- ;
-
- ;
- ; Start of Program
- ;
- START:
- LXI H,0 ; GET STACK PTR
- DAD SP
- SHLD STACK ; SAVE IT
- LXI SP,STACK ; SET SP
- MVI E,0FFH ; GET CURRENT USER
- MVI C,32
- CALL BDOS
- STA CURUSER ; SAVE IT
- MVI A,0FFH ; SET DEFAULT USER
- STA USER
-
- CALL ZGPINS ; INIT BUFFERS
- CALL PRINT
- DB 'ERASE Version '
- DB VERS/10+'0','.',(VERS MOD 10)+'0',0
- LDA FCB+1 ; GET FIRST CHAR OF FILE NAME
- CPI '/' ; OPTION CAUGHT?
- JNZ ECONT
-
- ; PRINT HELP INFORMATION
- HELP:
- CALL PRINT
- DB CR,LF,'ERASE Command --'
- DB CR,LF,' ERASE dir:filename.typ,dir:fn.ft,dir:fn.ft,... ooo'
- DB CR,LF,LF,'d is disk, u is user, and o is one or more option '
- DB 'letters.'
- DB CR,LF,'If one or more options are specified, the o MUST be '
- DB 'preceded by a space.'
- DB CR,LF,'Nothing is required, and wild cards (?,*) are '
- DB CR,LF,'permitted. o is optional, and valid options are -'
- DB CR,LF,' I -- Inspect Mode (Give user option to delete)'
- DB CR,LF,' R -- Erase R/O Files without prompting user'
- DB CR,LF,' S -- Include System Files'
- DB CR,LF,'dir: is a named directory or the form du:.'
- DB CR,LF,'Named Directories are ',0
- LDA NDREQD ; NAMED DIRS ON?
- ORA A ; 0=NO
- JNZ HELP1
- CALL PRINT
- DB 'NOT ',0
- HELP1:
- CALL PRINT
- DB 'Permitted in this Version of ERASE'
- DB CR,LF,'If u is omitted, current user is assumed, as with d.'
- DB CR,LF,LF,'Special forms are:'
- DB CR,LF,' ERASE dir: <-- Erase all files in named directory'
- DB CR,LF,' ERASE du: <-- Erase all files in disk d, user u'
- DB CR,LF,' ERASE u: <-- Erase all files in user u on '
- DB 'current disk'
- DB CR,LF,' ERASE d: <-- Erase all files on disk d in '
- DB 'current user'
- DB 0
- JMP RETURN
-
- ; RESET USER NUMBER IF IT HAS CHANGED
- RSETU:
- PUSH H ; SAVE REGS
- PUSH D
- PUSH B
- LDA CURUSER ; GET CURRENT USER
- MOV E,A ; ... IN E
- MVI C,32 ; PREP TO CHANGE USER
- LDA USER ; USER CHANGED?
- CPI 0FFH ; NO CHANGE?
- CNZ BDOS ; IF NO 0FFH, THEN CHANGE OCCURRED
- POP B ; RESTORE REGS
- POP D
- POP H
- RET
-
- ; RETURN TO OS
- RETURN:
- CALL RSETU ; RESET USER IF NECESSARY
- RETX:
- LHLD STACK ; GET OLD STACK
- SPHL ; SET IT
- RET
-
- ; USER CHANGE NOT ALLOWED ERROR
- UNOK:
- CALL PRINT
- DB CR,LF,'User Number Change Not Allowed -- Aborting',0
- JMP RETURN
-
- ; DISK CHANGE NOT ALLOWED ERROR
- DNOK:
- CALL PRINT
- DB CR,LF,'Disk Change Not Allowed -- Aborting',0
- JMP RETURN
-
- ; PLACE ZERO AT END OF BUFFER
- ECONT:
- LXI H,BUFF ; PT TO BUFFER
- MOV A,M ; GET COUNT
- INX H ; PT TO FIRST CHAR
- ADD L ; PT TO END OF BUFFER
- MOV L,A
- MOV A,H
- ACI 0
- MOV H,A
- MVI M,0
-
- ; COPY BUFFER INTO TEMP BUFFER
- LXI H,BUFF ; PT TO BUFFER
- MOV B,M ; GET CHAR COUNT
- INX H ; PT TO FIRST CHAR
- INR B ; ADD ENDING 0
- LXI D,CMDLNE ; PT TO CMDLNE BUFFER
- CALL MOVEB ; COPY INTO COMMAND LINE BUFFER
-
- ; EXTRACT FLAGS IF PRESENT
- XRA A ; SET NO INSPECT, NO R/O, AND NO SYSTEM FILES
- STA INSPECT
- STA READONLY
- MVI A,80H ; SELECT NON-SYS
- STA SYSTEM
- LXI H,0 ; SET FILE COUNT
- SHLD FILECNT
- LXI H,CMDLNE ; PT TO BUFFER
- ; SKIP TO FILE NAME STRING
- SBLANK:
- MOV A,M ; SKIP TO NON-BLANK
- CPI ' ' ; <SP>?
- JNZ SBL1
- INX H ; PT TO NEXT CHAR
- JMP SBLANK
- ; SKIP TO END OF FILE NAME STRING
- SBL1:
- MOV A,M ; SKIP TO <SP> OR EOL
- ORA A ; DONE?
- JZ OPT
- CPI ' ' ; <SP>
- JZ OPT
- INX H ; PT TO NEXT
- JMP SBL1
- ; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO
- OPT:
- CPI '/' ; OPTION CHAR?
- JNZ OPTION
- INX H ; SKIP SLASH
- ; PROCESS LIST OF OPTIONS
- OPTION:
- MOV A,M ; GET BYTE
- ORA A ; DONE?
- JZ DSPEC
- INX H ; PT TO NEXT CHAR
- CPI ' ' ; SKIP OVER SPACES
- JZ OPTION
- CPI '/' ; IF OPTION LETTER, OBVIOUS ERROR, SO HELP
- JZ HELP
- CPI 'I' ; INSPECT?
- JZ OPTINS
- CPI 'R' ; READ/ONLY?
- JZ OPTRO
- CPI 'S' ; SYSTEM FILES?
- JNZ HELP
- MVI A,0C0H ; SET FOR SYS AND NON-SYS FILES
- STA SYSTEM
- JMP OPTION
- OPTINS:
- MVI A,0FFH ; INSPECT
- STA INSPECT
- JMP OPTION
- OPTRO:
- MVI A,0FFH ; SET R/O
- STA READONLY
- JMP OPTION
-
- ; EXTRACT DISK, USER, AND FILE NAME INFORMATION
- DSPEC:
- LXI H,CMDLNE-1 ; PT TO BEFORE FIRST BYTE
- DSPEC0:
- INX H ; PT TO BYTE
- MOV A,M ; GET BYTE
- ORA A ; DONE?
- JZ HELP
- CPI ' ' ; <SP>?
- JZ DSPEC0
- ;
- ; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS
- ; HL PTS TO FIRST BYTE OF NEXT FILE SPEC
- ;
- DSPEC1:
- CALL RSETU ; RESET USER IF NECESSARY
- LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL
-
- PUSH H ; SAVE HL PTR
- CALL CODEND ; GET ADDRESS OF SCRATCH AREA
- MOV B,H ; ADDRESS IN BC
- MOV C,L
- POP H
-
- CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER
- JZ DERR ; ERROR HANDLER
-
- SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN
- PUSH B ; SAVE BC
- LXI H,FCB+1 ; SEE IF FILE NAME IS ALL WILD
- MVI B,11 ; 11 BYTES
- WTEST:
- MOV A,M ; GET BYTE
- INX H ; PT TO NEXT
- CPI '?' ; WILD?
- JNZ NOWILD
- DCR B ; COUNT DOWN
- JNZ WTEST
- LDA INSPECT ; INSPECT?
- ORA A ; 0=NO
- JNZ NOWILD
- CALL PRINT
- DB CR,LF,'Erase All Files? ',0
- CALL CIN ; GET RESPONSE
- CALL CAPS ; CAPITALIZE
- CALL COUT ; ECHO
- CPI 'Y' ; YES?
- JZ NOWILD
- CALL PRINT
- DB CR,LF,'Aborting',0
- JMP RETX
- NOWILD:
- POP B ; GET BC
- MOV A,C ; GET NEW USER
- STA USER ; SAVE IT
- MOV A,B ; SAVE POSSIBLE DRIVE SPEC
- CPI 0FFH ; CURRENT DISK?
- JZ USPEC
- LDA MDISK ; GET MAX DISK NUMBER
- DCR B ; ADJUST TO WITHIN BOUNDS 0-15
- CMP B ; WITHIN BOUNDS?
- MOV A,B ; GET DISK NUMBER IN A
- JNC DSPEC2
- DERR:
- CALL PRINT
- DB CR,LF,'Invalid Drive or User Specification',0
- JMP RETURN
-
- ; LOG IN SPECIFIED DISK
- DSPEC2:
- PUSH B ; SAVE BC
- MOV E,A ; DISK NUMBER IN E
- LDA DOK ; OK TO DO SO?
- ORA A ; 0=NO
- JZ DNOK ; NOT ALLOWED ABORT
- MVI C,14 ; LOG IN DISK
- CALL BDOS
- POP B ; GET BC
-
- ; CHECK FOR USER NUMBER
- USPEC:
- MOV A,C ; GET NEW USER NUMBER
- CPI 0FFH ; DEFAULT USER?
- JZ ERASE
- CPI '?' ; ALL USERS NOT ALLOWED?
- JZ UERR
- LDA MUSER ; GET MAX USER NUMBER
- CMP C
- MOV A,C ; USER NUMBER IN A
- JNC ULOG
- UERR:
- CALL PRINT
- DB CR,LF,'Invalid User Number',0
- JMP RETURN
- ULOG:
- MOV E,A ; USER NUMBER IN E
- LDA UOK ; ALLOWED?
- ORA A ; 0=NO
- JZ UNOK ; DISALLOWED AND ABORT
- MVI C,32 ; SELECT USER
- CALL BDOS
-
- ; LOAD DIRECTORY AND ERASE FILES
- ERASE:
- CALL CODEND ; PT TO END OF CODE
- LDA SYSTEM ; GET SYS/NON-SYS FLAGS
- LXI D,FCB ; PT TO FCB
- CALL DIRF ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE
-
- ; ERASE DIR FILES; HL PTS TO FIRST FILE, BC=FILE COUNT
- CALL ERAFILES
-
- ; CHECK FOR NEXT FILE SPEC
- LHLD NEXTCH ; GET PTR
- MOV A,M ; GET DELIM
- CPI ',' ; ANOTHER FILE?
- JNZ ERADONE
- INX H ; PT TO CHAR AFTER COMMA
- JMP DSPEC1 ; CONTINUE PROCESSING
-
- ; ERASE COMPLETE -- PRINT COUNT AND EXIT
- ERADONE:
- CALL PRCOUNT ; PRINT FILE COUNT
- JMP RETURN
-
- ; ERASE SELECTED FILES
- ERAFILES:
- MOV A,B ; CHECK FOR ANY FILES LOADED
- ORA C
- RZ
-
- ; PRINT FILE NAME
- ERAFLP:
- PUSH B ; SAVE ENTRY COUNT
- CALL CRLF ; NEW LINE
- PUSH H ; SAVE PTR TO FCB
- INX H ; PT TO FILE NAME
- MVI B,8 ; PRINT NAME
- CALL PRNT
- MVI A,'.' ; DECIMAL
- CALL COUT
- MVI B,3 ; PRINT TYPE
- CALL PRNT
- POP H ; GET PTR
-
- ; CHECK FOR INSPECTION AND INSPECT IF SET
- LDA INSPECT ; GET FLAG
- ORA A ; 0=NO
- JZ ERAIT
-
- ; PROMPT USER FOR ERASE
- CALL ERAQ ; ERASE QUESTION
- CPI 'Q' ; QUIT?
- JZ QUIT
- CPI 'Y' ; YES?
- JZ ERAIT
-
- ; DON'T ERASE FILE
- ERANO:
- CALL PRINT
- DB ' ++ NOT Erased ++',0
- JMP ERATEST
-
- ; PROMPT USER FOR ERASE
- ERAQ:
- CALL PRINT ; PRINT PROMPT
- DB ' -- Erase (Y/N/Q=Quit/other=N)? ',0
- CALL CIN ; GET RESPONSE
- CALL CAPS ; CAPITALIZE
- CALL COUT ; ECHO
- RET
-
- ; QUIT ERASE PROGRAM
- QUIT:
- CALL PRCOUNT ; PRINT COUNT OF FILES ERASED
- CALL PRINT
- DB ' ++ QUIT -- Returning to CP/M ++',0
- JMP RETURN
-
- ; ERASE FILE
- ERAIT:
- PUSH H
- LXI D,9 ; PT TO R/O ATTRIBUTE
- DAD D
- MOV A,M ; GET R/O ATTRIBUTE
- POP H ; RESTORE PTR
- ANI 80H ; R/O?
- JZ ERAIT1 ; R/W - PROCEED
- LDA READONLY ; GET R/O ERASE FLAG
- ORA A ; 0=QUERY
- JNZ ERAIT0 ; ERASE WITHOUT QUESTION IF FLAG SET
- CALL PRINT ; NOTIFY USER AND PROMPT
- DB CR,LF,' File is R/O',0
- CALL ERAQ ; ASK QUESTION
- CPI 'Q' ; QUIT?
- JZ QUIT
- CPI 'Y' ; ERASE R/O
- JNZ ERATEST ; DO NOT ERASE IF NOT YES
-
- ; ERASE R/O FILE
- ERAIT0:
- CALL DET$VERS ; DETERMINE VERSION NUMBER
- JZ ERAIT1 ; IF CP/M 1.X - DO NOT RESET ATTRIBUTE
- PUSH H ; SAVE PTR TO FILE ENTRY
- LXI D,9 ; PT TO R/O ATTRIBUTE
- DAD D
- MOV A,M ; GET ATTRIBUTE
- ANI 7FH ; MAKE R/W
- MOV M,A
- POP H ; GET PTR TO FCB
- PUSH H ; SAVE PTR AGAIN
- XCHG ; DE PTS TO FCB
- XRA A ; MAKE SURE CURRENT DISK IS SELECTED
- STAX D
- MVI C,30 ; SET FILE ATTRIBUTES
- CALL BDOS
- POP H
-
- ; ERASE R/W FILE
- ERAIT1:
- PUSH H ; SAVE PTR TO FILE NAME TO ERASE
- INX H ; PT TO FIRST BYTE OF NAME
- LXI D,ERAFCB ; SET UP FCB
- PUSH D ; SAVE PTR
- XRA A ; A=0
- STAX D ; CURRENT DISK
- INX D ; PT TO FIRST CHAR
- MVI B,11 ; COPY 11 BYTES
- CALL MOVEB ; COPY HL TO DE FOR 11 BYTES
- XCHG ; HL PTS TO REST OF FCB
- MVI B,24 ; FILL REST OF FCB WITH ZEROES
- XRA A ; A=0
- CALL FILLB
- POP D ; GET PTR
- MVI C,19 ; DELETE FILE
- CALL BDOS
- CALL PRINT
- DB ' ++ Erased ++',0
- LHLD FILECNT ; INCREMENT COUNT
- INX H
- SHLD FILECNT
- POP H ; GET PTR TO DIRECTORY ENTRY
-
- ; PT TO NEXT ENTRY
- ERATEST:
- LXI D,ESIZE ; PT TO NEXT ENTRY
- DAD D
- POP B ; GET COUNT
- DCX B ; COUNT DOWN
- MOV A,B ; CHECK FOR ZERO
- ORA C
- JNZ ERAFLP
-
- ; RETURN TO CALLER
- RET
-
- ;
- ; COPY HL TO DE FOR B BYTES
- ;
- MOVEB:
- MOV A,M ; GET BYTE
- STAX D ; PUT BYTE
- INX H ; PT TO NEXT
- INX D
- DCR B ; COUNT DOWN
- JNZ MOVEB
- RET
-
- ;
- ; PRINT CHARS PTED TO BY HL FOR B BYTES
- ;
- PRNT:
- MOV A,M ; GET CHAR
- CALL COUT
- INX H ; PT TO NEXT
- DCR B ; COUNT DOWN
- JNZ PRNT
- RET
-
- ;
- ; PRINT COUNT OF NUMBER OF FILES ERASED
- ;
- PRCOUNT:
- CALL CRLF ; NEW LINE
- CALL PRINT
- DB CR,LF,'++ ',0
- LHLD FILECNT ; GET COUNT
- MOV A,L ; CHECK FOR NONE
- ORA H
- JZ PRNO
- CALL PHLDC ; PRINT DECIMAL COUNT
- JMP PRMS
- PRNO:
- CALL PRINT
- DB 'No ',0
- PRMS:
- LHLD FILECNT ; 1 FILE ERASED?
- MOV A,H ; HIGH ZERO?
- ORA A
- JNZ PRMULT
- MOV A,L ; LOW ONE?
- CPI 1
- JZ PRSING
- PRMULT:
- CALL PRINT
- DB ' Files Erased ++',0
- RET
- PRSING:
- CALL PRINT
- DB ' File Erased ++',0
- RET
-
- ;
- ; DETERMINE CP/M VERSION NUMBER
- ; RETURN W/ZERO FLAG SET IF CP/M 1.X
- ;
- DET$VERS:
- PUSH B
- PUSH D
- PUSH H
- MVI C,12 ; DET VERS
- CALL BDOS
- MOV A,H ; SET FLAG
- ORA L
- POP H
- POP D
- POP B
- RET
-
- ;
- ; BUFFERS
- ;
- INSPECT:
- DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES)
- SYSTEM:
- DS 1 ; SYSTEM FLAG (0=NO, 80H=YES)
- READONLY:
- DS 1 ; READ/ONLY FLAG (0=QUERY FOR R/O, 0FFH=DON'T)
- USER:
- DS 1 ; NEW USER, OR 0FFH IF NO CHANGE
- CURUSER:
- DS 1 ; CURRENT USER NUMBER
- NEXTCH:
- DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE
- FILECNT:
- DS 2 ; COUNT OF NUMBER OF FILES ERASED
- ERAFCB:
- DS 40 ; FCB FOR ERASE
- CMDLNE:
- DS 256 ; ALLOW MAX SIZE OF COMMAND LINE
- DS 100 ; STACK AREA
- STACK:
- DS 2 ; OLD STACK PTR
-
- END
-