;****************************************
;*					*
;*	2732 ROM PROGRAMMER PROGRAM	*
;*	J.B.FERGUSON 820611		*
;*					*
;****************************************

; 1K BYTES OF SOURCE ARE TO BE PARKED AT 9000H PRIOR TO
; EXECUTING PROG.HEX . FILES CAN BE LOADED UNDER ZSID,
; AND EXECUTED WITH THE "C8000" COMMAND.

	.Z80

SYS1	EQU	0C8H
PROG	EQU	0C0H
CTCB3	EQU	08BH

	LD	HL,9000H	;SOURCE
	LD	DE,5000H	;DESTINATION
	LD	BC,1000H	;BYTECOUNT

	LD	A,0
	OUT	(SYS1),A	;SET D-S = 0
	LD	A,(HL)		;GET BYTE TO PROGRAM
	LD	(DE),A		;LATCH IT FOR THE ROM
	LD	A,8
	OUT	(PROG),A	;ENABLE OUTPUT BUFFER AND SET /OE = 1
	LD	A,9
	OUT	(PROG),A	;TURN OFF /CS
	LD	A,0CH
	OUT	(PROG),A	;TURN ON VPP
LOOP:	LD 	A,1
	OUT	(PROG),A	;SET /CS = 0
	PUSH	BC
	LD	B,50		;# OF MILLISECONDS
DECB:	IN	A,(CTCB3)	;LOOK AT COUNTER
	LD	C,A		;SAVE FOR TEST
WAIT1:	IN	A,(CTCB3)
	CP	C		;TEST FOR CHANGE
	JR	Z,WAIT1		;JUMP IF SAME

	DJNZ	DECB

	POP	BC
	LD	A,9
	OUT	(PROG),A	;SET /CS = 1
	LDI
	JP	PE,LOOP		;PARITY FLAG = ODD IF BC = 0

	LD	A,4
	OUT	(PROG),A	;TURN OFF VPP
	LD	A,1
	OUT	(PROG),A	;ENABLE /CS DECODER
	LD	A,0
	OUT	(PROG),A	;DISABLE OUTPUT BUFFER AND SET /OE = 0
	LD	A,8
	OUT	(SYS1),A	;TURN OFF STATIC MEMORY
	RET

	END
