; Figure 5-21
;
;	RF
;	Rename File
;	This subroutine renames a file.
;	It uses the BF (Build FCB) subroutine shown in Figure 5.32
;
;	Entry Parameters
;
;		*** No case-folding of file names occurs ***
;		HL -> Old File Name (00-byte terminated)
;		DE -> New File Name (00-byte terminated)
;
;	Exit Parameters
;
;		Carry clear if operation successful (A = 0,1,2,3)
;		Carry set if error (A =0FFH)
;
;	Calling sequence
;
;		LXI	H,OLDNAME	;HL -> Old Name
;		LXI	D,NEWNAME	;DE -> New Name
;		CALL	RF
;		JC	ERROR
;
B$OPEN		EQU	15		;Open File
B$RENAME	EQU	23		;Rename File
BDOS		EQU	5		;BDOS Entry Point
;
RFFCB:		DW	0,0,0,0,0,0,0,0,0	;1 1/2 FCB's long
		DW	0,0,0,0,0,0,0,0,0
		DW	0,0,0,0,0,0,0,0,0
;
;
RF:
		PUSH	D		;Save New Name pointer
		LXI	D,RFFCB		;Build Old Name FCB
					;HL already -> Old Name
		CALL	BF

		POP	H		;Recover New Name pointer
		LXI	D,RFFCB+16	;Build new name in second part
		CALL	BF		;of File Control Block

		LXI	D,RFFCB+16	;Experimentally try
		MVI	C,B$OPEN	;to Open the new File
		CALL	BDOS		;to ensure it does not
		CPI	0FFH		;already exist
		MVI	A,0FEH		;Assume error (flags unchanged)
		RC			;Carry set if A was 0,1,2,3

		LXI	D,RFFCB		;Rename the file
		MVI	C,B$RENAME
		CALL	BDOS
		CPI	0FFH		;Carry set if OK, clear if error
		CMC			;Invert to use Carry set if error
		RET
;
;	BF
;	Build File Control Block
;	This subroutine formats a 00H-byte terminated string
;	(presumed to be a File Name) into an FCB, setting the
;	Disk, File name and Type and clearing the remainder of the
;	FCB to 0's.
;
;	Entry Parameters
;
;		DE -> File Control Block (36 Bytes)
;		HL -> File Name String (00H-byte terminated)
;
;	Exit Parameters
;
;		The built File Control block.
;
;	Calling Sequence
;
;		LXI	D,FCB
;		LXI	H,FILENAME
;		CALL	BF
;
;
BF:
	RET		;Dummy subroutine : see Figure 5.32.
