;
; F$REN -- RENAME FILES
; THIS ROUTINE RENAMES THE OLD FILE PTED TO BY DE TO THE NEW FILE
; PTED TO BY HL; ONLY THE FN AND FT FIELDS OF THE FCB PTED TO ARE USED,
; AND THE POINTERS POINT TO THE USER NUMBERS, SO FULL FCB'S ARE NOT NECESSARY.
; ONLY THE FIRST 12 BYTES OF AN FCB ARE REQUIRED
;
; ON ENTRY, HL PTS TO NEW FILE NAME, DE PTS TO OLD FILE NAME
; ON EXIT, ZERO FLAG SET (Z) MEANS ERROR (FILE NOT FOUND)
;
;
; EXTERNALS
;
EXT BDOS
EXT FILLB
EXT MOVEB
;
; ROUTINE
;
F$RENAME::
JMP START
;
; FCB FOR RENAME
;
RENFCB:
DS 36 ; JUST NEED THE SPACE
;
; START OF ROUTINE
;
START:
PUSH H ; SAVE REGS
PUSH D
PUSH B
PUSH D ; SAVE OLD NAME PTR
PUSH H ; SAVE NEW NAME PTR
LXI H,RENFCB ; INIT THE FCB
XRA A ; STORE ZEROES
MVI B,36 ; 36 BYTES
CALL FILLB
POP H ; GET PTR TO NEW NAME
LXI D,RENFCB+17 ; PT TO FN PART OF FCB2
INX H ; PT TO FN
MVI B,11 ; 11 BYTES
CALL MOVEB
POP H ; PT TO 1ST FN
LXI D,RENFCB+1 ; PT TO FN PART OF FCB1
INX H ; PT TO FN
MVI B,11 ; 11 BYTES
CALL MOVEB
LXI D,RENFCB ; DO THE RENAME
MVI C,23 ; BDOS FCT 23
CALL BDOS
POP B ; RESTORE REGS
POP D
POP H
CPI 0FFH ; ERROR?
JZ RENERR
MVI A,0FFH ; SET NO ERROR
ORA A ; SET FLAGS
RET
RENERR:
XRA A ; SET ERROR
RET