;System equates used
CASINI = $02
TRAMSZ = $06
BOOT   = $09
ATRACT = $4D
VKEYBD = $0208
VVBLKI = $0222
SRTIMR = $022B
KEYDEL = $02F1
CH1    = $02F2
CH     = $02FC
SSFLAG = $02FF
KBCODE = $D209
SYSVBV = $E45F
;End of system equates
;Zero-page equates
;
;Z0001  = $CD
bufin	=	$CD		; idx for putting things 
				;  into buf
;Z0002  = $CE
bufout	=	$CE		; idx for taking things
;				;  out of buf
;
;Z0003  = $CB
;Z0004  = $CC
ksbufp	=	$CB		; keystroke buffer
;
;End of zero-page equates
;	*=	$0600
	*=	$B000		; new ver
	PLA
start:	LDA	#$03
	STA	BOOT 		;$0009
	LDA	#start\
	STA	CASINI		;$0002
	LDA	#start^
	STA	CASINI+1	;$0003
	LDA	#$00
	STA	bufin		;$00CD
	STA	bufout		;$00CE
;	LDA	#$E0
	lda	#ksbuf\
	STA	ksbufp		;$00CB
;	LDA	#$06
	lda	#ksbuf^
	STA	ksbufp+1		;$00CC
;	LDA	#$B4
	lda	#keyvbi\
	STA	VVBLKI		;$0222
;	LDA	#$06
	lda	#keyvbi^
	STA	VVBLKI+1	;$0223
;	LDA	#$30
	lda	#ikeybd\
	STA	VKEYBD		;$0208
;	LDA	#$06
	lda	#ikeybd^
	STA	VKEYBD+1	;$0209
	RTS
;
ikeybd:				; keyboard interrupt
	TYA
	PHA
	LDA	#$03
	STA	BOOT		;$0009
	LDA	#start\
	STA	CASINI		;$0002
	LDA	#start^
	STA	CASINI+1	;$0003
	LDA	KBCODE		;$D209
	CMP	CH1		;$02F2
	BNE	L0005		;$064B
	LDA	KEYDEL		;$02F1
	BNE	L0006		;$06AB
L0005	LDA	KBCODE		;$D209
	CMP	#$9F
	BNE	L0007		;$065C
	LDA	SSFLAG		;$02FF
	EOR	#$FF
	STA	SSFLAG		;$02FF
	BCS	L0006		;$06AB
L0007	CMP	#$B2
	BNE	L0008		;$066D
	LDA	#$00
	STA	bufin		;$00CD
	STA	bufout		;$00CE
	LDA	#$FF
	STA	CH		;$02FC
	BCS	L0006		;$06AB
L0008	STA	CH1		;$02F2
	LDA	#$03
	STA	KEYDEL		;$02F1
	LDA	#$00
	STA	ATRACT		;$004D
	LDA	bufin		;$00CD
	CMP	bufout		;$00CE
	BEQ	L0009		;$068B
	LDY	bufin		;$00CD
	INY
	TYA
	CMP	bufout		;$00CE
	BEQ	L0006		;$06AB
	LDA	bufin		;$00CD
	BPL	L0010		;$069A
L0009	LDA	CH		;$02FC
	CMP	#$FF
	BNE	L0010		;$069A
	LDA	KBCODE		;$D209
	STA	CH		;$02FC
	BCS	L0006		;$06AB
L0010	LDA	KBCODE		;$D209
	LDY	bufin		;$00CD
	STA	(ksbufp),Y	;$00CB
	INY
	TYA
;	CMP	#$1E
	cmp	#kssize
	BNE	L0011		;$06A9
	LDA	#$00
L0011	STA	bufin		;$00CD
L0006	LDA	#$30
	STA	SRTIMR		;$022B
	PLA
	TAY
	PLA
	RTI
;
keyvbi:				; deferred processing,
				;  at vblank time
	LDA	bufin		;$00CD
	CMP	bufout		;$00CE
	BEQ	L0012		;$06D7
	LDA	#$30
	STA	SRTIMR		;$022B
	LDA	CH		;$02FC
	CMP	#$FF
	BNE	L0012		;$06D7
	LDY	bufout		;$00CE
	LDA	(ksbufp),Y	;$00CB
	STA	CH		;$02FC
	INY
	TYA
;	CMP	#$1E
	cmp	#kssize
	BNE	L0013		;$06D5
	LDA	#$00
L0013	STA	bufout		;$00CE
L0012	JMP	SYSVBV		;$E45F
       .BYTE $22,$0C		; ???
;
;ksbuf	=	$6E0
ksbuf:
kssize	=	$1E
;
       *=	$02E2
;       ORA (TRAMSZ ,X)		;$0006
	.word	start
;
;External reference equates
;End of external references
;       .END $2075
