;****************************************
;*
;*   SLOT INDEPENDENT ROM CODE @ $Cn00
;*
;****************************************
CXSLOT	EQU	*
;*
;* AUTOSTART BOOT SIGNATURE
;*
	LDX	#$20
	LDY	#$00
	LDX	#$03
	STX	$3C
;*
;* AUTOSTART/PR# ENTRYPOINT
;*
.IFDEF	DEBUG
	LDA	#'*'
	STA	INDCTR+7
.ENDIF
	PHP
	SEI
	STA	XROMOFF
.IFDEF	PIROM
	LDA	#$01
	STA	BANKSEL
.ENDIF
	JSR	GETSLOT
	LDA	#$00
	STA	SYNCED,Y     	; CLEAR SYNCED FLAG
	JSR	SYNC
	BNE	NOBOOT
;*
;* CREATE COMMAND BUFFER FOR BOOT BLOCK
;*
	STX	PDUNIT		; SLOT * 16, DEV 0
	LDX	#$00
	STX	PDBLKL
	STX	PDBLKH
	STX	PDBUFL
	INX                     ; LDX	#PDREAD
	STX	PDCMD
	LDX     #$08
        STX	PDBUFH
.IFDEF	ALTBOOT
	STA	STROBE
	JSR	PUTMSG
	LDX	#$10
BOOTMSG:
	LDA	#$FF
	JSR	WAIT
	LDA	KEYBD
	BPL	BOOTDELAY
	STA	STROBE
	LDX	#$01
	CMP	#'M'+$80
	BEQ	:+
	CMP	#'m'+$80
	BNE	BOOTDELAY
:	LDA	#SIBOOT		; LOAD SI BOOT PROGRAM
	STA	PDCMD
BOOTDELAY:
	DEX
	BNE	BOOTMSG
	JSR	CLRMSG
	LDA	IOSLOT
	AND	#$0F
	TAY
.ENDIF
BOOT:	LDX	SLOT16
	JSR	DOCMD		; READ BOOT BLOCK
	PLP
	PHA
	LDA	IOSLOT
	AND	#$0F
	TAY
	LDA	SAVE16,Y	; SAVED ORIGINAL SLOT16 VALUE
	STA	SLOT16
	PLA
	BNE	NOBOOT
	JMP	$801		; JUMP TO BOOT BLOCK
NOBOOT:	LDA	$00
	BEQ     AUTOSTART
        RTS
AUTOSTART:
	JMP	$FABA		; JUMP BACK TO AUTOSTART BOOT SCANNER ROM
;*
;* PRODOS INTELLIGENT DEVICE ENTRYPOINT
;*
CMDENTRY:
	PHP
	SEI
	STA	XROMOFF
.IFDEF	PIROM
	LDA	#$01
	STA	BANKSEL
.ENDIF
	JSR	GETSLOT
.IFDEF	DEBUG
 	LDA	PDCMD
	ORA	#'0'
	STA	INDCTR+1
.ENDIF
	JSR	DOCMD
	PLP
	PHA			;  RESTORE ORIGINAL SLOT16 VALUE
	TYA
	PHA
	LDA	IOSLOT
	AND	#$0F
	TAY
	LDA	SAVE16,Y	; SAVED ORIGINAL SLOT16 VALUE
	STA	SLOT16
	PLA
	TAY
	PLA
;*
;* CHECK FOR ERROR
;*
	BNE	CMDERR
	CLC			; ALL GOOD, CLEAR ERROR FLAG
	RTS
CMDERR:
.IFDEF	DEBUG
	PHA
	STA	$2FF
	LDA	#'E'-$40
	STA	INDCTR+2
:	LDA	KEYBD
	BPL	:-
	STA	STROBE
	CMP	#'M'+$80
	BNE	:+
	LDA	ROMEN
	JMP	MONITOR
:	PLA
.ENDIF
	SEC			; SET ERROR FLAG
	RTS
ENDCMD:
	.REPEAT CXSLOT+250-*
	DB	$00
	.ENDREP
	DB	SIG		; SIGNATURE
	DW	0		; USE STATUS TO GET SIZE
	DB	$97		; REMOVEABLE, 2 DEVICES, R/W
	DB	<CMDENTRY
