;********************************************************
;*							*
;*	ONE-SECTOR LOADER FOR FIRST STAGE DD BOOT	*
;*							*
;********************************************************
;
TPA	EQU	100H
;
;	... READ CBIOS FROM DOUBLE DENSITY TRACK ZERO ...
;
ONESECT:
	LD	HL,TPA
	LD	B,BIOSLEN/1024+1
	LD	C,1
OSEC2:	PUSH	HL		;SAVE PARAMETERS
	PUSH	BC
	CALL	MONITR+36	;CALL MONITOR DISK READ ROUTINE
	POP	BC
	POP	HL
	JR	NZ,BTERR
	LD	DE,1024
	ADD	HL,DE
	INC	C
	DJNZ	OSEC2		;REPEAT UNTIL ALL BIOS READ IN

	LD	DE,CBIOS	;BIOS STARTS HERE
	LD	HL,TPA+256	;BIOS PARKED HERE
	LD	BC,MOVLEN
	LDIR			;MOVE INTO PLACE
;
;	... PUT COLDSTART INIT HERE TO CONSERVE BIOS SPACE ..
;
	IF	WINCH
	LD	A,RST+ON
	OUT	(SASI+1),A	;RESET SASI BUS CONTROLLER(S)
	LD	A,RST+OFF
	OUT	(SASI+1),A
	ENDIF
	IF	SERIAL
	LD	HL,(MONITR+16)	;PATCH MONITOR CONOUT VECTOR TO
	LD	(MONITR+13),HL	; DIRECT OUTPUT TO BUILT-IN CRT DRIVER
	ENDIF
	LD	HL,TPA+128
	CALL	PMSG		;OUTPUT SIGNON MSG
	XOR	A
	LD	(IOBYTE),A	;CLEAR IOBYTE
	LD	A,USRDRV
	LD	(IOBYTE+1),A	;SET DEFAULT DRIVE/USER FOR COLDSTART
	LD	HL,SCRATCH
	LD	(HL),0
	LD	DE,SCRATCH+1
	LD	BC,SCRLEN-1
	LDIR			;ZERO-OUT SCRATCH MEMORY FOR BIOS
	LD	HL,LSTINIT
	LD	B,6
	LD	C,LSTCTL
	OTIR			;SET PRINTER PARITY/LENGTH/STOP BITS
	LD	B,2
	LD	C,LSTBAUD
	OTIR			;SET PRINTER BAUDRATE
	LD	A,1
	LD	(TRKTAB+4),A	;SET DRIVE ZERO TO DOUBLE DENSITY
	JP	CBIOS		;EXECUTE BIOS COLDSTART ROUTINE
;
;
;
LSTINIT:			;SERIAL PRINTER INIT CONSTANTS
	DEFB	4
	DEFB	01000101B	;16X CLOCK / 1 STOP BIT / ODD PARITY
	DEFB	3
	DEFB	01000001B	;RX 7 BIT CHARACTERS
	DEFB	5
	DEFB	10101010B	;TX 7 BIT CHARACTERS / DTR AND RTS HIGH

	DEFB	01000111B	;PROGRAM CTC AND LOAD TIME CONST
	DEFB	4		;DIVIDE BY 4 GIVES 9600 BAUD
;
;
;
BTERR:	LD	A,'?'
	CALL	MONITR+12	;OUTPUT ERROR INDICATION TO CONSOLE
	LD	A,'G'-64
	CALL	MONITR+12
	JP	MONITR+3	;JUMP BACK TO MONITOR ROM
;
;
;
