	org	$3000

START	equ	*
	lda	#$ff
	tfr	a,dp
	setdp	$ff
	orcc	#$50
	lda	#$c0
	sta	<$22
	sta	$ffc3
	sta	$ffc5

	ldu	#$400
	ldd	#$0
cls1	std	,u++
	cmpu	#$7a0
	bne	cls1
	ldd	#$8080
cls2	std	,u++
	cmpu	#$d20
	bne	cls2
	ldd	#$0
cls3	std	,u++
	cmpu	#$1c00
	bne	cls3

	ldu	#$400	
	ldx	#image
next	ldd	,x++
	std	,u
	std	$aa0,u
	leau	2,u
	cmpu	#$400+(32*19)
	beq	done
	bra	next	
done	jmp	cboard


image	fcb	0,0,0,0,63,255,192,0,255,192,0,0,3,255,255,0,255,252,0,0,0,0,0,0,0,0,3,255,252,0,0,0
	fcb	0,0,255,255,213,85,127,3,85,255,255,192,61,85,85,255,85,87,255,252,0,255,255,192,15,255,255,85,87,240,0,0
	fcb	0,15,85,85,218,170,87,3,106,85,85,112,245,170,169,117,106,167,85,87,15,85,85,240,61,85,87,106,165,112,0,0
	fcb	0,61,106,170,85,170,167,3,106,170,170,92,218,149,90,150,170,145,170,165,253,106,170,92,214,170,165,90,170,112,0,0
	fcb	0,246,170,170,149,170,167,3,86,170,170,151,218,149,170,149,106,150,165,169,246,170,170,151,90,170,170,118,170,112,0,0
	fcb	0,218,170,170,165,170,159,0,246,170,170,167,106,166,170,159,106,150,154,170,90,170,170,165,106,170,170,86,169,240,0,0
	fcb	3,90,170,170,165,170,156,0,54,169,86,169,106,165,106,95,106,154,106,170,90,170,170,165,170,170,170,150,169,192,0,0
	fcb	3,106,149,86,165,170,159,255,246,169,245,169,106,165,85,127,106,153,106,169,106,149,90,165,169,85,106,150,169,255,255,0
	fcb	3,105,127,246,165,170,95,85,118,169,207,105,90,170,170,159,106,169,90,149,105,127,246,166,165,255,90,150,165,245,87,192
	fcb	3,105,192,61,165,170,118,170,149,169,195,106,117,85,106,167,106,170,165,127,105,192,53,166,159,3,218,118,167,106,169,192
	fcb	3,105,127,246,149,106,90,170,157,169,195,106,85,87,106,167,106,170,170,95,105,127,214,150,167,255,90,118,165,170,169,192
	fcb	3,106,85,90,159,106,90,170,157,169,253,106,106,169,106,167,106,149,170,167,106,85,90,150,169,85,169,118,165,170,169,192
	fcb	3,106,170,170,95,106,150,166,149,170,86,170,170,169,106,165,90,167,106,165,106,170,170,93,170,170,169,245,169,106,89,192
	fcb	3,90,170,170,125,106,149,90,86,170,170,169,170,169,234,165,170,167,90,169,90,170,170,125,170,170,165,213,169,85,105,192
	fcb	0,218,170,169,246,170,170,170,90,170,170,165,106,149,106,157,170,165,106,169,218,170,169,255,106,170,167,218,170,170,165,192
	fcb	0,246,170,165,246,170,170,169,90,170,170,87,90,85,170,93,85,165,170,169,246,170,165,195,90,170,95,218,170,170,167,0
	fcb	0,61,106,151,61,85,85,85,213,85,85,124,213,170,149,253,125,85,85,85,253,106,95,0,213,169,124,213,85,85,95,0
	fcb	0,15,213,124,15,255,255,255,63,255,255,192,63,85,95,195,195,255,255,255,15,213,124,0,61,87,192,63,255,255,252,0
	fcb	0,0,255,240,0,0,0,0,0,0,0,0,3,255,240,0,0,0,0,0,0,255,192,0,3,255,0,0,0,0,0,0


endimage

	org	$3e00

cboard	orcc	#$50
	lda	$ff02

	lda	#$3f
	tfr	a,dp
	setdp	$3f


;*******************************
; DETECT PAL / NTSC
;*******************************
	ldx	#$0
	lda	$ff02
lp1	lda	$ff03
	bpl	lp1
	lda	$ff02

lp2	lda	$ff01
	bpl	lp2
	lda	$ff00
	leax	1,x
	lda	$ff03
	bpl	lp2
	lda	$ff02
	cmpx	#312
	blo	NTSC
	lda	#70
	bra	setit
NTSC	lda	#20
setit	sta	lcount+1
;*******************************
; semifast poke
;*******************************
	sta	$ffd7
;*******************************
; SG8
;*******************************
	sta	$ffc3
yloop	


;*******************************
; VSYNC routine
;*******************************

	lda	#$35
	sta	$ff03
	lda	$ff02
	sync


	sta	$ffc5

	sta	$ffd9


	jsr	ystuff



;*******************************
; fast poke off
;*******************************


	sta	$ffd8

	jsr	textie
	jsr	textie2

	jsr	sin1

lcount	ldb 	#70		;20 NTSC / 70 PAL
wait1	lda	$ff01
	bpl	wait1	
	lda	$ff00
	decb
	bne	wait1

	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop

	clr	$ff22
	sta	$ffc4
	jsr	chess
bcount	ldb 	#70
wait2	lda	$ff01
	bpl	wait2
	lda	$ff00
	decb
	bne	wait2
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop

	lda	#$c0
	sta	$ff22
	sta	$ffc5
	jsr	sin2
	jmp	yloop




	org	$3f00
chess
;*******************************
; Set gfx mode
;*******************************
	ldy	#$8800

	ldx	#funky
nextx	lda	#16		;32
	sta	<xcnt
;*******************************
;88 is postbyte for STD
;00(xx) is counter eg 1,x 2,x etc
;*******************************

xloop	

;*******************************
;first half
;*******************************
	ldd	<xscan
	addd	<xscale
	std	<xscan			
	anda	#1
	lsla
	sta	mya+2
	sta	mya2+2
	ldd	<xscan
	addd	<xscale
	std	<xscan			
	anda	#1
	ora	<mya+2
	sta	<mya+2
	sta	<mya2+2

;*******************************
;second half
;*******************************
	ldd	<xscan
	addd	<xscale
	std	<xscan			
	anda	#1
	lsla	
	sta	myb+2
	sta	myb2+2
	ldd	<xscan
	addd	<xscale
	std	<xscan
	anda	#1
	ora	<myb+2
	sta	<myb+2
	sta	<myb2+2


;*******************************
; LDD instruction ($cc)
;*******************************
even1	lda	#$cc
	sta	<0,x	
	sta	>$80,x	
;*******************************
; 0,1,2,3 dependant upon position
; gets modded by above code
; U points to SG tables
;*******************************
	ldu	#sgtab1
mya	lda	<0,u
myb	ldb	<0,u
	std	<1,x

	ldu	#sgtab2
mya2	lda	<0,u
myb2	ldb	<0,u
	
	std	>$81,x
;*******************************
; std <xx,X instruction ($ed)
; with $88 postbyte in Y 
; forced 8 bit
;*******************************

	lda	#$ed
	sta	<3,x		
	sta	>$83,x
	sty	<4,x
	sty	>$84,x		
	leay	2,y
	leax	6,x
	dec	<xcnt
	bne	xloop
;*******************************
; RTS instruction
;*******************************
	lda	#$39
	sta	,x
	sta	>128,x

	rts



ystuff
;*******************************
; Y AXIS STUFF
;*******************************
;NUMBER OF LINES
;*******************************
	lda	#42	;32
;*******************************
	sta	<ycnt

;*******************************
;screen pointer
;*******************************
poo	ldx	#$7c0		;600
;*******************************
yscan	ldd	#0
yscale	addd	#0
	std	<yscan+1
	anda	#1
	beq	oddy
	jsr	funky+128
	bra	eveny
oddy	jsr	funky
	
eveny	leax	32,x

	dec	<ycnt
	bne	yscan
	rts

;*******************************	
;*******************************	


sin1	ldb	sintab
	clra



	stb	<yscale+2
	stb	<xscale+1
	aslb
	rola

	aslb
	rola

	aslb
	rola


	aslb
	rola

	aslb
	rola



	std	<temp
	
	ldd	#$2000
	subd	<temp

	std	<xscan
	asra
	rorb
	std	<yscan+1
	lda	<sin1+2
	adda	#2
	sta	<sin1+2
	rts


sgtab1	fcb	$60,$8a,$85,$80
sgtab2	fcb	$80,$85,$8a,$60

color	fcb	$cf
xcnt	fcb	0
ycnt	fcb	0
xscan	fdb	0
xscale	fdb	0
temp	fdb	0

sin2	ldx	#sintab
	ldb	,x
	

	clra
	aslb
	rola


	aslb
	rola


	aslb
	rola

	aslb
	rola

	aslb
	rola

	std	text+1

sin3	ldx	#sintab+16
	ldb	,x
	

	clra
	aslb
	rola


	aslb
	rola

	aslb
	rola


	aslb
	rola

	aslb
	rola

	
	std	text2+1

sin4	ldx	#sintab+32
	ldb	,x
	

	clra
	aslb
	rola


	aslb
	rola

	aslb
	rola


	aslb
	rola

	aslb
	rola

	
	std	text3+1

sin5	ldx	#sintab+48
	

	ldb	,x
	clra
	aslb
	rola


	aslb
	rola

	aslb
	rola


	aslb
	rola

	aslb
	rola

	
	std	text4+1



	lda	sin2+2
	adda	#2
	sta	sin2+2
	lda	sin3+2
	adda	#2
	sta	sin3+2
	lda	sin4+2
	adda	#2
	sta	sin4+2
	lda	sin5+2
	adda	#2
	sta	sin5+2


	rts


	org	$4100
sintab	

	fcb	32,32,33,34,35,35,36,37,38,38,39,40,41,41,42,43
	fcb	44,44,45,46,46,47,48,48,49,50,50,51,51,52,53,53
	fcb	54,54,55,55,56,56,57,57,58,58,59,59,59,60,60,60
	fcb	61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,63
	fcb	63,63,63,63,63,63,63,63,62,62,62,62,62,61,61,61
	fcb	61,60,60,60,59,59,59,58,58,57,57,56,56,55,55,54
	fcb	54,53,53,52,51,51,50,50,49,48,48,47,46,46,45,44
	fcb	44,43,42,41,41,40,39,38,38,37,36,35,35,34,33,32
	fcb	32,31,30,29,28,28,27,26,25,25,24,23,22,22,21,20
	fcb	19,19,18,17,17,16,15,15,14,13,13,12,12,11,10,10
	fcb	9,9,8,8,7,7,6,6,5,5,4,4,4,3,3,3
	fcb	2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1
	fcb	1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2
	fcb	2,3,3,3,4,4,4,5,5,6,6,7,7,8,8,9
	fcb	9,10,10,11,12,12,13,13,14,15,15,16,17,17,18,19
	fcb	19,20,21,22,22,23,24,25,25,26,27,28,28,29,30,31

funky	rmb	256

	org	$4300

;*******************************
textie	equ	*
;***
****************************
	lda	color

text	ldx	#$00
	cmpx	#864
	bhi	del2


;*******************************
	
	sta	$8a5,x
	sta	$8a6,x
	sta	$8a7,x
	sta	$8a8,x
	sta	$8a9,x



	sta	$8a5+32,x
	sta	$8a5+64,x
	sta	$8a5+96,x
	sta	$8a5+128,x

	sta	$8a6+64,x
	bra	text2

del2
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x

;*******************************
text2	ldx	#$00
;*******************************
	cmpx	#864
	bhi	del3	
	sta	$8ab,x
	sta	$8ac,x
	sta	$8ad,x
	sta	$8ae,x
	sta	$8af,x


	sta	$8ab+32,x
	sta	$8ab+64,x
	sta	$8ac+64,x
	sta	$8ad+64,x


	sta	$8ab+96,x


	sta	$8ab+128,x
	sta	$8ac+128,x
	sta	$8ad+128,x
	sta	$8ae+128,x
	sta	$8af+128,x
	bra	out1

del3	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x

out1	rts



	org	$4400
textie2	equ	*
;***********************************
text3	ldx	#$00
;***********************************
	cmpx	#768
	bhi	del4

	sta	$915+96,x
	sta	$911+32,x
	sta	$911,x
	sta	$912,x
	sta	$913,x
	sta	$914,x
	sta	$915,x
	sta	$911+64,x
	sta	$912+64,x
	sta	$913+64,x
	sta	$914+64,x
	sta	$915+64,x
	sta	$911+128,x
	sta	$912+128,x
	sta	$913+128,x
	sta	$914+128,x
	sta	$915+128,x
	bra	text4

del4	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	

;***********************************
text4	ldx	#$00
;***********************************
	cmpx	#768
	bhi	del5
	sta	$917,x
	sta	$918,x
	sta	$919,x
	sta	$91a,x
	sta	$91b,x


	sta	$919+32,x
	sta	$919+64,x
	sta	$919+96,x
	sta	$919+128,x
	bra	out
del5	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x
	sta	$5000,x

out	rts







	
	end	START