mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
593 lines
13 KiB
Plaintext
593 lines
13 KiB
Plaintext
; PROGRAM: RENAME
|
||
; VERSION: 3.0
|
||
; DATE: 18 MAY 84
|
||
; AUTHOR: RICHARD CONN
|
||
; PREVIOUS VERSIONS: 2.0 (16 JAN 83)
|
||
; PREVIOUS VERSIONS: 1.4 (6 JAN 83), 1.3 (7 DEC 82), 1.2 (10 NOV 82)
|
||
; PREVIOUS VERSION: RENAME.ASM Version 1.1 (26 OCT 81)
|
||
VERS equ 30
|
||
z3env SET 0f400h
|
||
|
||
;
|
||
; RENAME Command --
|
||
; RENAME is used to change the name of one or more files. Unlike
|
||
; the ZCPR2-resident REN function, RENAME permits ambiguous file names
|
||
; and supports an Inspect mode that allows the user to confirm each
|
||
; rename before it is done. Additionally, there is a Control Mode which
|
||
; allows the user to manually specify the name for each file as it is
|
||
; presented to him.
|
||
;
|
||
; The RENAME command may be of the following forms:
|
||
; RENAME dir:afn1=afn2,dir:afn3=afn4,... o
|
||
; RENAME dir:afn,dir:afn1=afn2,... o
|
||
; The first form shows elements of the form
|
||
; dir:afn1=afn2
|
||
; while the second form shows elements of the form
|
||
; dir:afn
|
||
; which is the same as
|
||
; dir:afn=afn
|
||
; and only makes sense if Control Mode is used.
|
||
;
|
||
; The option characters (o) are none or more of the following:
|
||
; C -- Control Mode; manually specify each new name
|
||
; I -- Inspect and approve each rename
|
||
; S -- Include SYStem files
|
||
;
|
||
; Examples:
|
||
; RENAME *.MAC=*.ASM <-- Rename all ASM files to MAC
|
||
; RENAME *.MAC C <-- Rename all MAC files to names
|
||
; input by the user
|
||
; RENAME *.OBJ=*.COM SI <-- Rename all COM files to OBJ
|
||
; and include SYStem files
|
||
; and Inspect and approve each
|
||
; change
|
||
;
|
||
|
||
FALSE EQU 0
|
||
TRUE EQU NOT FALSE
|
||
|
||
ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE)
|
||
|
||
EXT DIRQ ; DIRECTORY PROCESSOR
|
||
|
||
EXT Z3INIT ; INIT BUFFERS
|
||
EXT ZFNAME ; FILE NAME PROCESSOR
|
||
EXT Z3LOG ; Z3 DU LOG
|
||
|
||
EXT F$DELETE ; DELETE FILE
|
||
EXT F$RENAME ; RENAME FILE
|
||
EXT BBLINE ; INPUT LINE EDITOR
|
||
EXT INITFCB ; INIT FCB
|
||
EXT BDOS ; BDOS ENTRY
|
||
EXT PUTUD ; SAVE CURRENT USER/DISK
|
||
EXT GETUD ; RESTORE CURRENT USER/DISK
|
||
EXT MOVEB ; COPY ROUTINE
|
||
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
|
||
FCB EQU 5CH ; FCB
|
||
BUFF EQU 80H ; INPUT LINE BUFFER
|
||
CR EQU 13 ; <CR>
|
||
LF EQU 10 ; <LF>
|
||
|
||
;
|
||
; Environment Definition
|
||
;
|
||
if z3env ne 0
|
||
;
|
||
; External ZCPR3 Environment Descriptor
|
||
;
|
||
jmp start
|
||
db 'Z3ENV' ;This is a ZCPR3 Utility
|
||
db 1 ;External Environment Descriptor
|
||
z3eadr:
|
||
dw z3env
|
||
start:
|
||
lhld z3eadr ;pt to ZCPR3 environment
|
||
;
|
||
else
|
||
;
|
||
; Internal ZCPR3 Environment Descriptor
|
||
;
|
||
MACLIB Z3BASE.LIB
|
||
MACLIB SYSENV.LIB
|
||
z3eadr:
|
||
jmp start
|
||
SYSENV
|
||
start:
|
||
lxi h,z3eadr ;pt to ZCPR3 environment
|
||
endif
|
||
|
||
;
|
||
; Start of Program -- Initialize ZCPR3 Environment
|
||
;
|
||
call z3init ;initialize the ZCPR3 Env and the VLIB Env
|
||
LXI H,0 ; GET STACK PTR
|
||
DAD SP
|
||
SHLD STACK ; SAVE IT
|
||
CALL CODEND
|
||
SHLD CMDLNE ; SETUP COMMAND LINE BUFFER
|
||
LXI D,100H ; BUFFER SIZE
|
||
DAD D
|
||
SHLD NTFCB ; SET TEMP FCB
|
||
DAD D
|
||
SHLD DIRBUF ; PTR TO DIR BUFFER
|
||
SPHL ; NEW SP
|
||
LHLD NTFCB ; SET 2ND FCB
|
||
LXI D,40
|
||
DAD D
|
||
SHLD OFCB
|
||
|
||
CALL PUTUD ; SAVE CURRENT USER/DISK AWAY
|
||
|
||
CALL PRINT
|
||
DB 'RENAME Version '
|
||
DB VERS/10+'0','.',(VERS MOD 10)+'0',0
|
||
LDA FCB+1 ; GET FIRST CHAR OF FILE NAME
|
||
CPI ' ' ; NO FILE SPEC?
|
||
JZ HELP
|
||
CPI '/' ; OPTION CAUGHT?
|
||
JNZ ECONT
|
||
|
||
; PRINT HELP INFORMATION
|
||
HELP:
|
||
CALL PRINT
|
||
DB CR,LF,'Syntax:'
|
||
DB CR,LF,' RENAME dir:afn1=afn2,afn3=afn4,... o...'
|
||
DB CR,LF,'Options:'
|
||
DB CR,LF,' C -- Control Mode (Allow user to manually name each '
|
||
DB 'file)'
|
||
DB CR,LF,' I -- Inspect Mode (Give user approval option)'
|
||
DB CR,LF,' S -- Include SYS files'
|
||
DB CR,LF
|
||
DB 0
|
||
|
||
; RETURN TO OS
|
||
RETURN:
|
||
LHLD STACK ; GET OLD STACK
|
||
SPHL ; SET IT
|
||
RET
|
||
|
||
; COPY BUFFER INTO TEMP BUFFER
|
||
ECONT:
|
||
LHLD CMDLNE ; PT TO COMMAND LINE SAVE BUFFER
|
||
XCHG ; ... IN DE
|
||
LXI H,BUFF+1 ; PT TO BUFFER
|
||
MVI B,80H ; BUFFER SIZE
|
||
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 CONTROL ; SET NO CONTROL MODE
|
||
MVI A,80H ; SELECT NON-SYS FILES ONLY
|
||
STA SYSTEM
|
||
LXI H,0 ; SET FILE COUNT
|
||
SHLD FILECNT
|
||
LHLD 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 'C' ; CONTROL?
|
||
JZ OPTCTRL
|
||
CPI 'I' ; INSPECT?
|
||
JZ OPTINS
|
||
CPI 'S' ; SYSTEM FILES?
|
||
JNZ HELP
|
||
MVI A,0C0H ; SET FOR SYS FILES
|
||
STA SYSTEM
|
||
JMP OPTION
|
||
OPTCTRL:
|
||
MVI A,0FFH ; CONTROL MODE
|
||
STA CONTROL
|
||
JMP OPTION
|
||
OPTINS:
|
||
MVI A,0FFH ; INSPECT
|
||
STA INSPECT
|
||
JMP OPTION
|
||
|
||
; EXTRACT DISK, USER, AND FILE NAME INFORMATION
|
||
DSPEC:
|
||
LHLD CMDLNE ; PT TO BEFORE FIRST BYTE
|
||
DCX H
|
||
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 GETUD ; RESET USER IF NECESSARY
|
||
PUSH H
|
||
LHLD NTFCB
|
||
XCHG ; PT TO FCB IN DE
|
||
POP H
|
||
MVI A,0 ; DIR BEFORE DU
|
||
CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER
|
||
SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN
|
||
PUSH H
|
||
LHLD NTFCB
|
||
XCHG ; PT TO FCB IN DE
|
||
POP H
|
||
CALL Z3LOG ; LOG INTO DU
|
||
|
||
; FIRST NAME IS NOW EXTRACTED -- EXTRACT POSSIBLE SECOND NAME
|
||
NAME2:
|
||
LHLD OFCB ; PT TO FCB FOR 2ND NAME
|
||
XCHG
|
||
LHLD NTFCB ; PT TO FIRST NAME
|
||
MVI B,16 ; COPY 16 BYTES
|
||
CALL MOVEB
|
||
LHLD NEXTCH ; PT TO CHAR WHICH ENDED PARSE
|
||
MOV A,M ; GET IT
|
||
CPI '=' ; ASSIGNMENT?
|
||
JNZ RENAME ; GO AHEAD IF NOT
|
||
INX H ; PT TO CHAR AFTER '='
|
||
PUSH H
|
||
LHLD OFCB ; PT TO TEMP FCB
|
||
XCHG ; ... IN DE
|
||
POP H
|
||
MVI A,0 ; DIR BEFORE DU
|
||
CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER
|
||
SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN
|
||
|
||
; LOAD DIRECTORY AND RENAME FILES
|
||
RENAME:
|
||
LHLD OFCB
|
||
XCHG ; PT TO FCB
|
||
LHLD DIRBUF ; PT TO END OF CODE
|
||
CALL INITFCB ; INIT THE FCB
|
||
LDA SYSTEM ; SET FLAGS
|
||
CALL DIRQ ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE
|
||
|
||
; REN DIR FILES; HL PTS TO FIRST FILE, BC=FILE COUNT
|
||
CALL RENFILES
|
||
|
||
; CHECK FOR NEXT FILE SPEC
|
||
LHLD NEXTCH ; GET PTR
|
||
MOV A,M ; GET DELIM
|
||
CPI ',' ; ANOTHER FILE?
|
||
JNZ RENDONE
|
||
INX H ; PT TO CHAR AFTER COMMA
|
||
JMP DSPEC1 ; CONTINUE PROCESSING
|
||
|
||
; RENAME COMPLETE -- PRINT COUNT AND EXIT
|
||
RENDONE:
|
||
CALL PRCOUNT ; PRINT FILE COUNT
|
||
JMP RETURN
|
||
|
||
; RENAME SELECTED FILES
|
||
RENFILES:
|
||
MOV A,B ; CHECK FOR ANY FILES LOADED
|
||
ORA C
|
||
RZ
|
||
|
||
; PRINT FILE NAME
|
||
RENLP:
|
||
PUSH B ; SAVE ENTRY COUNT
|
||
CALL PRINT
|
||
DB CR,LF,'Rename ',0
|
||
PUSH H ; SAVE PTR TO FCB
|
||
LHLD NTFCB ; COPY NEW TEMPLATE INTO RENFCB
|
||
LXI D,RENFCB
|
||
MVI B,16
|
||
CALL MOVEB
|
||
POP H ; GET PTR
|
||
PUSH H ; SAVE PTR
|
||
INX H ; PT TO FN OF OLD NAME
|
||
INX D ; PT TO FN OF RENFCB
|
||
MVI B,11 ; 11 BYTES TO FN AND FT
|
||
RENLP1:
|
||
LDAX D ; GET CHAR OF NEW
|
||
CPI '?' ; CHANGE '?' TO OLD CHAR
|
||
JNZ RENLP2
|
||
MOV A,M ; GET OLD CHAR
|
||
ANI 7FH ; MASK OLD CHAR
|
||
STAX D ; STORE IT AWAY AS NEW
|
||
RENLP2:
|
||
INX H ; PT TO NEXT CHAR
|
||
INX D
|
||
DCR B ; COUNT DOWN
|
||
JNZ RENLP1
|
||
LXI H,RENFCB ; PT TO NEW NAME
|
||
CALL PRFN ; PRINT FILE NAME
|
||
CALL PRINT
|
||
DB ' from ',0
|
||
POP H ; GET PTR TO OLD FILE NAME
|
||
PUSH H ; SAVE IT AGAIN
|
||
CALL PRFN ; PRINT FILE NAME
|
||
POP H ; GET PTR
|
||
|
||
; CHECK FOR CONTROL MODE AND PERFORM CONTROL FUNCTION IF SET
|
||
LDA CONTROL ; GET FLAG
|
||
ORA A ; NZ=YES
|
||
JNZ RENCTRL
|
||
|
||
; CHECK FOR INSPECTION AND INSPECT IF SET
|
||
LDA INSPECT ; GET FLAG
|
||
ORA A ; 0=NO
|
||
JZ DOIT
|
||
|
||
; PROMPT USER FOR RENAME
|
||
CALL RENQ ; REN QUESTION
|
||
CPI 'Q' ; QUIT?
|
||
JZ QUIT
|
||
CPI 'Y' ; YES?
|
||
JZ DOIT
|
||
|
||
; DON'T RENAME FILE
|
||
NODO:
|
||
CALL PRINT
|
||
DB CR,LF,'NO Name Change',0
|
||
JMP RENTEST
|
||
|
||
; PRINT FILE NAME PTED TO BY HL
|
||
PRFN:
|
||
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
|
||
RET
|
||
|
||
; PROMPT USER FOR RENAME
|
||
RENQ:
|
||
CALL PRINT ; PRINT PROMPT
|
||
DB ' -- Rename (Y/N/Q=Quit)? ',0
|
||
CALL CIN ; GET RESPONSE
|
||
CALL CAPS ; CAPITALIZE
|
||
CALL COUT ; ECHO
|
||
RET
|
||
|
||
; CONTROL FUNCTION -- ALLOW USER TO RENAME AS HE DESIRES
|
||
RENCTRL:
|
||
PUSH H ; SAVE PTR TO FILE
|
||
RCTRL:
|
||
CALL PRINT
|
||
DB CR,LF,' -- New Name (<CR>=No Change)? ',0
|
||
MVI A,0FFH ; CAPITALIZE
|
||
CALL BBLINE ; INPUT LINE FROM USER
|
||
ORA A ; CHECK FOR JUST <CR>
|
||
JNZ RCTRL0
|
||
POP H ; GET PTR TO FILE
|
||
JMP RENTEST ; PROCEED WITH NEXT ENTRY
|
||
RCTRL0:
|
||
LXI D,RENFCB ; PLACE INTO NEW NAME FCB
|
||
CALL ZFNAME ; JUST EXTRACT NAME
|
||
MVI B,11 ; CHECK FOR ANY WILD CHARS
|
||
RCTRL1:
|
||
INX D ; PT TO NEXT CHAR
|
||
LDAX D ; GET IT
|
||
CPI '?' ; CAN'T BE WILD
|
||
JZ WERR
|
||
CPI '*' ; CAN'T BE WILD
|
||
JZ WERR
|
||
DCR B ; COUNT DOWN
|
||
JNZ RCTRL1
|
||
JMP RDOIT ; DONE -- PERFORM RENAME
|
||
WERR:
|
||
CALL PRINT
|
||
DB CR,LF,'Wild Card (?,*) in Name -- Try Again',0
|
||
JMP RCTRL
|
||
|
||
; QUIT RENAME PROGRAM
|
||
QUIT:
|
||
CALL PRCOUNT ; PRINT COUNT OF FILES RENAMED
|
||
CALL PRINT
|
||
DB ' QUIT',0
|
||
JMP RETURN
|
||
|
||
; REN FILE, BUT GET PTR FIRST
|
||
RDOIT:
|
||
POP H ; GET PTR
|
||
|
||
; RENAME FILE; OLD NAME PTED TO BY HL, NEW NAME IN RENFCB
|
||
DOIT:
|
||
PUSH H
|
||
; STEP 1 -- DETERMINE IF NEW NAME ALREADY EXISTS
|
||
LXI D,RENFCB ; PT TO NEW NAME
|
||
CALL INITFCB
|
||
MVI C,17 ; SEARCH FOR FIRST
|
||
CALL BDOS
|
||
INR A ; NOT FOUND?
|
||
JZ DOIT1
|
||
CALL PRINT
|
||
DB CR,LF,' -- File Exists -- Delete It (Y/N)? ',0
|
||
CALL CIN ; GET RESPONSE
|
||
CALL CAPS
|
||
CALL COUT
|
||
POP H ; PREP FOR ABORT
|
||
CPI 'Y' ; YES -- CONTINUE?
|
||
JNZ RENTEST ; NOT YES, SO SKIP IT
|
||
; DELETE OLD FILE, SO SET ATTRIBUTES AND DO IT
|
||
PUSH H ; SAVE PTR AGAIN
|
||
CALL INITFCB ; CLEAR FCB
|
||
MVI C,30 ; SET FILE ATTRIBUTES TO R/W IF NOT ALREADY
|
||
CALL BDOS
|
||
CALL INITFCB
|
||
CALL F$DELETE ; DELETE FILE
|
||
DOIT1:
|
||
POP H ; HL PTS TO OLD NAME
|
||
; CLEAR THE OLD NAME'S ATTRIBUTES IN CASE IT WAS R/O
|
||
PUSH H ; SAVE PTR TO OLD NAME
|
||
PUSH H
|
||
LHLD OFCB ; COPY OLD NAME
|
||
XCHG
|
||
POP H
|
||
MVI B,16
|
||
CALL MOVEB
|
||
PUSH D ; CLEAR ATTRIBUTES
|
||
MVI B,11 ; 11 BYTES
|
||
INX D ; PT TO FIRST
|
||
DOIT2:
|
||
LDAX D ; GET CHAR
|
||
ANI 7FH ; CLEAR ATT
|
||
STAX D ; PUT CHAR
|
||
INX D ; PT TO NEXT
|
||
DCR B ; COUNT DOWN
|
||
JNZ DOIT2
|
||
POP D ; NOW SET ATTRIBUTES OF OLD NAME
|
||
CALL INITFCB
|
||
MVI C,30 ; SET ATTRIBUTES
|
||
CALL BDOS
|
||
CALL INITFCB
|
||
; DO THE RENAME
|
||
LXI H,RENFCB ; PT TO NEW NAME
|
||
XCHG
|
||
CALL INITFCB ; INIT NEW FCB
|
||
XCHG ; HL PTS TO NEW NAME, DE PTS TO OLD NAME
|
||
CALL F$RENAME ; RENAME THE FILE
|
||
; RESTORE THE ORIGINAL ATTRIBUTE BITS
|
||
POP H ; GET PTR TO OLD NAME
|
||
LXI D,RENFCB+1 ; PT TO NEW NAME
|
||
PUSH H ; SAVE PTR TO OLD NAME
|
||
INX H ; PT TO FN OF OLD NAME
|
||
XCHG ; HL PTS TO NEW NAME, DE PTS TO OLD NAME
|
||
MVI B,11 ; 11 BYTES
|
||
DOIT3:
|
||
LDAX D ; GET ATTRIBUTE BIT OF OLD NAME
|
||
ANI 80H ; LOOK ONLY AT ATTRIBUTE BIT
|
||
ORA M ; MASK IN NEW NAME BYTE
|
||
MOV M,A ; STORE IT AWAY
|
||
INX H ; PT TO NEXT
|
||
INX D
|
||
DCR B ; COUNT DOWN
|
||
JNZ DOIT3
|
||
; SET THE ORIGINAL ATTRIBUTES INTO THE NEW FILE
|
||
LXI D,RENFCB ; PT TO FCB
|
||
CALL INITFCB
|
||
MVI C,30 ; SET ATTRIBUTES
|
||
CALL BDOS
|
||
LHLD FILECNT ; INCREMENT FILE COUNT
|
||
INX H
|
||
SHLD FILECNT
|
||
POP H ; GET PTR TO DIRECTORY ENTRY
|
||
|
||
; PT TO NEXT ENTRY
|
||
RENTEST:
|
||
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 RENLP
|
||
|
||
; RETURN TO CALLER
|
||
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 RENAMED
|
||
;
|
||
PRCOUNT:
|
||
CALL CRLF ; NEW LINE
|
||
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 PROTECTED?
|
||
MOV A,H ; HIGH ZERO?
|
||
ORA A
|
||
JNZ PRMULT
|
||
MOV A,L ; LOW ONE?
|
||
CPI 1
|
||
JZ PRSING
|
||
PRMULT:
|
||
CALL PRINT
|
||
DB ' Files Renamed',0
|
||
RET
|
||
PRSING:
|
||
CALL PRINT
|
||
DB ' File Renamed',0
|
||
RET
|
||
|
||
;
|
||
; BUFFERS
|
||
;
|
||
INSPECT:
|
||
DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES)
|
||
CONTROL:
|
||
DS 1 ; CONTROL FLAG (0=NO, 0FFH=YES)
|
||
SYSTEM:
|
||
DS 1 ; SYSTEM FLAG (80H=NON-SYS, 0C0H=SYS/NON-SYS)
|
||
NEXTCH:
|
||
DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE
|
||
FILECNT:
|
||
DS 2 ; COUNT OF NUMBER OF FILES RENAMED
|
||
RENFCB:
|
||
DS 40 ; FCB FOR RENAME
|
||
OFCB:
|
||
DS 2 ; FCB FOR OLD FILE NAME AND OLD FILE TEMPLATE
|
||
NTFCB:
|
||
DS 2 ; FCB FOR NEW FILE TEMPLATE
|
||
CMDLNE:
|
||
DS 2 ; PTR TO COMMAND LINE BUFFER
|
||
DIRBUF:
|
||
DS 2 ; PTR TO DIRECTORY BUFFER
|
||
STACK:
|
||
DS 2 ; OLD STACK PTR
|
||
|
||
END
|
||
|