;
; SYSLIB Module Name:  SRENAM
; Author:  Richard Conn
; SYSLIB Version Number:  2.0
; Module Version Number:  1.0
; Module Entry Points:
;	F$RENAME
; Module External References:
;	BDOS		FILLB		MOVEB
;

;
;  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

	END
