* --------------------
* -     Rev 2.0      -
* -        by        -
* -  Marc  Fischlin  -
* -        in        -
* -      11/89       -
* --------------------
	incdir	"vd0:include/"
	include	intuition/intuition.i
	include	intuition/intuition_lib.i
	include	exec/exec_lib.i
	include	graphics/graphics_lib.i
	include	libraries/dos.i
	include	libraries/dos_lib.i
	include	misc/easystart.i
	jmp	staaart

*  TextMacro :
* -------------
PRINT	MACRO
	moveq.l	#0,d5
	moveq.l	#0,d6
	moveq.l	#0,d0
	lea	\1,a4
notlenred_\@ move.b	(a4)+,d5
	tst.b	d5
	beq	prilenred_\@
	addq.b	#1,d0
	bra	notlenred_\@
prilenred_\@ move.w	d0,d6
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	move.w	#1,d0
	CALLGRAF	SetAPen
	move.w	\2,d0
	move.w	\3,d1
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	CALLGRAF	Move
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	move.w	d6,d0
	lea	\1,a0
	CALLGRAF	Text
	endm

*  FillMacro :
* -------------------
FILL	MACRO
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	move.w	\3,d0
	CALLGRAF	SetAPen
	move.w	\1,d0
	add	#131,d0
	move.w	\2,d1
	add	#2,d1
	move.w	\1,d2
	add	#159,d2
	move.w	\2,d3
	add	#15,d3
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	CALLGRAF	RectFill	
	endm

*  BlueMacro :
* -------------
ASK	MACRO
	lea	\1(pc),a0	;ist der Platz noch frei ?
	moveq.l	\2,d0
	move.b	(a0,d0),d1
	tst.b	d1
	beq	\4
	jmp	\3
	endm

*  Change :
* ----------
CHANGE	MACRO		;was wird um-
	moveq.l	#0,d5	;gedreht ?
	moveq.l	#0,d3
	moveq.l	#0,d2
	moveq.l	#0,d6
	move.b	byte,d6
	move.b	offset,d5
	lea	tableII,a3
	move.l	0(a3,d5),a5
	move.b	\4,0(a5,d6)
	move	d5,d3
	move	d6,d2
	mulu	#30,d2
	add	#2,d2
	move.w	d2,xfill
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	FILL	xfill,yfill,\5
cb_\@	sub	\1,d5
	sub	\2,d6
	cmp	#0,d5
	blt	cds_\@
	cmp	#28,d5
	bgt	cds_\@
	cmp	#0,d6
	blt	cds_\@
	cmp	#7,d6
	bgt	cds_\@
	lea	tableII,a3
	move.l	0(a3,d5),a5
	move.b	0(a5,d6),d4
	cmp.b	\3,d4
	beq	reach_\@
	jmp	cds_\@
reach_\@	move.b	\4,0(a5,d6)
	move	d5,d3
	move	d6,d2
	mulu	#30,d2
	add	#2,d2
	move.w	d2,xfill
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	FILL	xfill,yfill,\5
	jmp	cb_\@
cds_\@	nop	
	endm

*  PossibleMacro :
* -----------------
POSSIBLE	MACRO		;ist der zug möglich ?
	moveq.l	#0,d5
	moveq.l	#0,d6
	move.b	offset(pc),d5
	move.b	byte,d6
	lea	counter(pc),a3
	move	#0,(a3)
	lea	tableII(pc),a5
	sub	\1,d5
	sub	\2,d6
	move.l	(a5,d5),a4
	move.b	(a4,d6),d3
	move.b	fab1,d4	
	cmp.b	d4,d3
	beq	voryep_\@
	jmp	pback_\@
voryep_\@	add.b	#1,(a3)	
yep_\@	sub	\1,d5
	tst.b	d5
	blt	pback_\@
	cmp.b	#28,d5
	bgt	pback_\@
	sub	\2,d6
	tst.b	d6
	blt	pback_\@
	cmp.b	#7,d6
	bgt	pback_\@
	move.l	(a5,d5),a4
	move.b	(a4,d6),d3	
	move.b	fab1,d4
	cmp.b	d4,d3
	beq	voryep_\@
	move.b	fab2,d4
	cmp.b	d4,d3
	beq	pok_\@
	jmp	pback_\@
pok_\@	move.b	#1,\3
	move.b	endcounter,d2
	move.b	counter,d3
	add.b	d3,d2
	move.b	d2,endcounter	
	jmp	preally_\@
pback_\@	move.b	#0,\3
preally_\@	nop
	endm	

*  HexerMacro :
* --------------
HEXER	MACRO
	lea	\1,a5
	move.b	\2,d5
	and.l	#$ffff,d5
	divs	#10,d5
	add.b	#"0",d5
	move.b	d5,(a5)+
	swap	d5
	and.l	#$ffff,d5
	add.b	#"0",d5
	move.b	d5,(a5)+
	PRINT	\1,#81,\3
	endm

*  DrawLines :
* ---------------
Lines	move.l	#132,d5
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	move.l	a1,a5
	moveq.l	#1,d0
	CALLGRAF	SetAPen		;weiße Linie
.xlines	move.l	a5,a1
	move.l	d5,d0
	move.l	#13,d1
	CALLGRAF	Move
	move.l	a5,a1
	move.l	d5,d0
	move.l	#132,d1
	CALLGRAF	Draw
	add	#30,d5
	cmp	#402,d5
	beq	.ylines
	bra	.xlines
.ylines	move.l	#12,d5
.yret	move.l	a5,a1
	move.l	d5,d1
	move.l	#132,d0
	CALLGRAF	Move
	move.l	a5,a1
	move.l	d5,d1
	move.l	#372,d0
	CALLGRAF	Draw
	add	#15,d5
	cmp.b	#147,d5
	beq	.rete
	bra	.yret
.rete	rts


*  Intuition oeffnen :
* ---------------------
staaart	lea	intname,a1
	moveq	#0,d0
	CALLEXEC	OpenLibrary
	move.l	d0,_IntuitionBase

*  Graphics oeffnen :
* --------------------
	lea	grafname,a1
	moveq	#0,d0
	CALLEXEC	OpenLibrary
	move.l	d0,_GfxBase

*  DOS oeffnen :
* ---------------
	lea	DOSname,a1
	moveq	#0,d0
	CALLEXEC	OpenLibrary
	move.l	d0,_DOSBase	

*  OpenMainWindow :
* ------------------

	lea	wdef,a0
	CALLINT     OpenWindow
	move.l	d0,wptr
	FILL	#92,#56,#3
	FILL	#122,#56,#2
	FILL	#92,#71,#2
	FILL	#122,#71,#3
	PRINT	msg1,#33,#90
	PRINT	msg4,#33,#104
	PRINT	msg11,#71,#56
	PRINT	msg15,#75,#68
	jsr	Lines
	move.b	#1,dots
	move.b	#3,levelbyte
	move.b	#0,moves
	move.b	#0,backs
vorevent	move.b	#0,upper
	move.b	#0,drupper
	move.b	#0,righter
	move.b	#0,drowner
	move.b	#0,downer
	move.b	#0,dlowner
	move.b	#0,lefter
	move.b	#0,dlupper
	move.b	#2,mode
	move.b	#0,ou
	move.b	#0,now
event2	moveq.l	#0,d5
	moveq.l	#0,d4
	move.b	ou,d4
	addq.b	#1,d4
	move.b	d4,ou
	move.b	d4,d5
	cmp.b	#61,d5		;ist schon alles voll ?
	beq	youpass
	lea	offset(pc),a3
	lea	byte(pc),a4
	lea	tableIV(pc),a0
	lsl	#2,d5
	move.l	(a0,d5),a0
	jmp	(a0)
eve4	move.b	endcounter,d0	
	tst.b	d0
	beq.s	event2		;jetzt mit "."
	move.b	#1,now
	cmp.b	#0,dots
	beq.s	event2
	jsr	drawDot
	bra	event2
geht_OK	move.b	#0,endcounter
	move.b	#0,mode
	bra	event
youpass	cmp.b	#1,now
	beq	geht_OK
	move.b	passone,d0
	cmp.b	#1,d0
	beq.s	yopa2
	jmp	u3
yopa2	move.b	#0,mode
	move.b	#0,endcounter
	move.b	you,d0
	move.b	cpu,d1
	sub.b	d0,d1
	add.b	#64,d1
	cmp.b	#64,d1
	beq	yep1
	cmp.b	#64,d1
	bgt	yep2
	PRINT	msg5,#22,#126
	bra	event
yep1	PRINT	msg6,#6,#126
	bra	event
yep2	PRINT	msg7,#18,#126
	bra	event
pe1	ASK	one,#0,pe2,iwi1 	;was ist frei ?
pe2	ASK	eight,#0,pe3,iwi8
pe3	ASK	one,#7,pe4,iwi57b
pe4	ASK	eight,#7,pl1,iwi64b
pl1	ASK	one,#2,pl2,iwi17
pl2	ASK	one,#3,pl3,iwi25
pl3	ASK	one,#4,pl4,iwi33be
pl4	ASK	one,#5,pl5,iwi41be
pl5	ASK	two,#2,pl6,iwi18
pl6	ASK	two,#3,pl7,iwi26
pl7	ASK	two,#4,pl8,iwi34be
pl8	ASK	two,#5,pl9,iwi42b
pl9	ASK	three,#0,pl10,iwi3
pl10	ASK	three,#1,pl11,iwi11
pl11	ASK	three,#2,pl12,iwi19
pl12	ASK	three,#3,pl13,iwi27
pl13	ASK	three,#4,pl14,iwi35be
pl14	ASK	three,#5,pl15,iwi43b
pl15	ASK	three,#6,pl16,iwi51b
pl16	ASK	three,#7,pl17,iwi59b
pl17	ASK	four,#0,pl18,iwi4
pl18	ASK	four,#1,pl19,iwi12
pl19	ASK	four,#2,pl20,iwi20
pl20	ASK	four,#5,pl21,iwi44b
pl21	ASK	four,#6,pl22,iwi52b
pl22	ASK	four,#7,pl23,iwi60b
pl23	ASK	five,#0,pl24,iwi5
pl24	ASK	five,#1,pl25,iwi13
pl25	ASK	five,#2,pl26,iwi21
pl26	ASK	five,#5,pl27,iwi45b
pl27	ASK	five,#6,pl28,iwi53b
pl28	ASK	five,#7,pl29,iwi61b
pl29	ASK	six,#0,pl30,iwi6
pl30	ASK	six,#1,pl31,iwi14
pl31	ASK	six,#2,pl32,iwi22
pl32	ASK	six,#3,pl33,iwi30
pl33	ASK	six,#4,pl34,iwi38be
pl34	ASK	six,#5,pl35,iwi46b
pl35	ASK	six,#6,pl36,iwi54b
pl36	ASK	six,#7,pl37,iwi62b
pl37	ASK	seven,#2,pl38,iwi23
pl38	ASK	seven,#3,pl39,iwi31
pl39	ASK	seven,#4,pl40,iwi39be
pl40	ASK	seven,#5,pl41,iwi47b
pl41	ASK	eight,#2,pl42,iwi24
pl42	ASK	eight,#3,pl43,iwi32
pl43	ASK	eight,#4,pl44,iwi40be
pl44	ASK	eight,#5,pl45,iwi48b
pl45	ASK	one,#1,pl46,iwi9
pl46	ASK	two,#0,pl47,iwi2
pl47	ASK	two,#1,pl48,iwi10
pl48	ASK	eight,#1,pl49,iwi16
pl49	ASK	seven,#0,pl50,iwi7
pl50	ASK	seven,#1,pl51,iwi15
pl51	ASK	one,#6,pl52,iwi49b
pl52	ASK	two,#7,pl53,iwi58b
pl53	ASK	two,#6,pl54,iwi50b
pl54	ASK	eight,#6,pl55,iwi56b
pl55	ASK	seven,#7,pl56,iwi63b
pl56	ASK	seven,#6,eve4,iwi55b

event	move.b	#0,upper
	move.b	#0,drupper
	move.b	#0,righter
	move.b	#0,drowner
	move.b	#0,downer
	move.b	#0,dlowner
	move.b	#0,lefter
	move.b	#0,dlupper
	move.l	wptr,a0
	move.l	wd_UserPort(a0),a0
	move.l	a0,a5
	CALLEXEC	WaitPort
	move.l	a5,a0
	CALLEXEC	GetMsg
	move.l	d0,a1
	move.l	im_Class(a1),d4
	move.w	im_Code(a1),d5
	move.l	im_IAddress(a1),a4
	CALLEXEC	ReplyMsg
	cmp.l	#CLOSEWINDOW,d4
	beq	dubblepseudo
	move.w	gg_GadgetID(a4),d0
	sub	#1,d0
	tst.b	d0
	beq	.welchesG
.ret	lsl	#2,d0
	lea.l	table,a0
	move.l	(a0,d0),a0
	lea	offset,a3
	lea	byte,a4
	jmp	(a0)

.welchesG	move.l	wptr,a0
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	12(a0),d1
	move.w	14(a0),d0
	sub	#13,d1
	sub	#133,d0
	divu	#30,d0
	and.l	#$f,d0
	lsl	#3,d0
	divu	#15,d1
	and.l	#$f,d1
	add.b	d1,d0
	bra	.ret

* Your move :			
* ------------
iw1	ASK	one,#0,event,iwi1
iwi1	move.b	#0,(a3)		;was willst du ziehen ?
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
iw2	ASK	two,#0,event,iwi2
iwi2	move.b	#4,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
dubblepseudo	jmp	pseudoclosemain
iw3	ASK	three,#0,event,iwi3
iwi3	move.b	#8,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
iw4	ASK	four,#0,event,iwi4
iwi4	move.b	#12,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
iw5	ASK	five,#0,event,iwi5
iwi5	move.b	#16,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
pseudoevent	jmp	vorevent
iw6	ASK	six,#0,event,iwi6
iwi6	move.b	#20,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
iw7	ASK	seven,#0,event,iwi7
iwi7	move.b	#24,(a3)
	move.b	#0,(a4)
	jsr	poss
	jmp	zwischen
iw8	ASK	eight,#0,event,iwi8
iwi8	move.b	#28,(a3)
	move.b	#0,(a4)
	jsr	poss	
	jmp	zwischen
iw9	ASK	one,#1,event,iwi9
iwi9	move.b	#0,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
backy1	jmp	backy2
bts1	jmp	bts2
ots1	jmp	ots2
iw10	ASK	two,#1,event,iwi10
iwi10	move.b	#4,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw11	ASK	three,#1,event,iwi11
iwi11	move.b	#8,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw12	ASK	four,#1,pseudoevent,iwi12
iwi12	move.b	#12,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw13	ASK	five,#1,pseudoevent,iwi13
iwi13	move.b	#16,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw14	ASK	six,#1,pseudoevent,iwi14
iwi14	move.b	#20,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw15	ASK	seven,#1,pseudoevent,iwi15
iwi15	move.b	#24,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw16	ASK	eight,#1,pseudoevent,iwi16
iwi16	move.b	#28,(a3)
	move.b	#1,(a4)
	jsr	poss
	jmp	zwischen
iw17	ASK	one,#2,pseudoevent,iwi17
iwi17	move.b	#0,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iw18	ASK	two,#2,pseudoevent,iwi18
iwi18	move.b	#4,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iw19	ASK	three,#2,pseudoevent,iwi19
iwi19	move.b	#8,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iw20	ASK	four,#2,pseudoevent,iwi20
iwi20	move.b	#12,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iw21	ASK	five,#2,pseudoevent,iwi21
iwi21	move.b	#16,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iwi33be	jmp	iwi33
iwi34be	jmp	iwi34
iwi35be	jmp	iwi35
iwi38be	jmp	iwi38
iwi39be	jmp	iwi39
iwi40be	jmp	iwi40
iw22	ASK	six,#2,pseudoevent,iwi22
iwi22	move.b	#20,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
iw23	ASK	seven,#2,pseudoevent,iwi23
iwi23	move.b	#24,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
u3	jmp	u4
iwi41be	jmp	iwi41
iwi42b	jmp	iwi42
iwi43b	jmp	iwi43
iwi44b	jmp	iwi44
iwi45b	jmp	iwi45
iwi46b	jmp	iwi46
iwi47b	jmp	iwi47
iwi48b	jmp	iwi48
iwi49b	jmp	iwi49
iwi50b	jmp	iwi50
iw24	ASK	eight,#2,pseudoevent,iwi24
iwi24	move.b	#28,(a3)
	move.b	#2,(a4)
	jsr	poss
	jmp	zwischen
depsef	jmp	pseudoevent
iw25	ASK	one,#3,depsef,iwi25
iwi25	move.b	#0,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
iw26	ASK	two,#3,depsef,iwi26
iwi26	move.b	#4,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
iwi51b	jmp	iwi51
iwi52b	jmp	iwi52
iwi53b	jmp	iwi53
iwi54b	jmp	iwi54
iwi55b	jmp	iwi55
iwi56b	jmp	iwi56
iwi57b	jmp	iwi57
iwi58b	jmp	iwi58
iwi59b	jmp	iwi59
iwi60b	jmp	iwi60
iwi61b	jmp	iwi61
iwi62b	jmp	iwi62
iwi63b	jmp	iwi63
iwi64b	jmp	iwi64
iw27	ASK	three,#3,depsef,iwi27
iwi27	move.b	#8,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
iw28	ASK	four,#3,depsef,depsef
	jmp	depsef
iw29	ASK	five,#3,depsef,depsef
	jmp	depsef
pseudoclosemain	jmp	closemain
iw30	ASK	six,#3,depsef,iwi30
iwi30	move.b	#20,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
iw31	ASK	seven,#3,depsef,iwi31
iwi31	move.b	#24,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
iw32	ASK	eight,#3,depsef,iwi32
iwi32	move.b	#28,(a3)
	move.b	#3,(a4)
	jsr	poss
	jmp	zwischen
eve5	jmp	eve4
iw33	ASK	one,#4,depsef,iwi33
iwi33	move.b	#0,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
iw34	ASK	two,#4,depsef,iwi34
iwi34	move.b	#4,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
iw35	ASK	three,#4,depsef,iwi35
iwi35	move.b	#8,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
iw36	ASK	four,#4,depsef,depsef
	jmp	depsef
iw37	ASK	five,#4,depsef,depsef
	jmp	depsef
iw38	ASK	six,#4,depsef,iwi38
iwi38	move.b	#20,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
iw39	ASK	seven,#4,depsef,iwi39
iwi39	move.b	#24,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
backy2	jmp	backy3
bts2	jmp	bts3
ots2	jmp	ots3
iw40	ASK	eight,#4,depsef,iwi40
iwi40	move.b	#28,(a3)
	move.b	#4,(a4)
	jsr	poss
	jmp	zwischen
iw41	ASK	one,#5,depsef,iwi41
iwi41	move.b	#0,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw42	ASK	two,#5,depsef,iwi42
iwi42	move.b	#4,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw43	ASK	three,#5,depsef,iwi43
iwi43	move.b	#8,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw44	ASK	four,#5,depsef,iwi44
iwi44	move.b	#12,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw45	ASK	five,#5,depsef,iwi45
iwi45	move.b	#16,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw46	ASK	six,#5,depsef,iwi46
iwi46	move.b	#20,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw47	ASK	seven,#5,depsef,iwi47
iwi47	move.b	#24,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iwi1b	jmp	iwi1
iwi2b	jmp	iwi2
iwi3b	jmp	iwi3
iwi4b	jmp	iwi4
iwi5b	jmp	iwi5
iwi6b	jmp	iwi6
iw48	ASK	eight,#5,depsef,iwi48
iwi48	move.b	#28,(a3)
	move.b	#5,(a4)
	jsr	poss
	jmp	zwischen
iw49	ASK	one,#6,depsef,iwi49
iwi49	move.b	#0,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iw50	ASK	two,#6,depsef,iwi50
iwi50	move.b	#4,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iwi7b	jmp	iwi7
iwi8b	jmp	iwi8
iwi9b	jmp	iwi9
iwi10b	jmp	iwi10
iwi11b	jmp	iwi11
iwi12b	jmp	iwi12
iw51	ASK	three,#6,depsef,iwi51
iwi51	move.b	#8,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iw52	ASK	four,#6,depsef,iwi52
iwi52	move.b	#12,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iwi13b	jmp	iwi13
iwi14b	jmp	iwi14
iwi15b	jmp	iwi15
iwi16b	jmp	iwi16
iwi17b	jmp	iwi17
iwi18b	jmp	iwi18
iwi19b	jmp	iwi19
iwi20b	jmp	iwi20
iw53	ASK	five,#6,depsef,iwi53
iwi53	move.b	#16,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iw54	ASK	six,#6,depsef,iwi54
iwi54	move.b	#20,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iwi21b	jmp	iwi21
iwi22b	jmp	iwi22
iwi23b	jmp	iwi23
iwi24b	jmp	iwi24
iwi25b	jmp	iwi25
iwi26b	jmp	iwi26
iwi27b	jmp	iwi27
iw55	ASK	seven,#6,depsef,iwi55
iwi55	move.b	#24,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iwi30b	jmp	iwi30
iwi31b	jmp	iwi31
iwi32b	jmp	iwi32
iwi33b	jmp	iwi33
iwi34b	jmp	iwi34
iwi35b	jmp	iwi35
iwi38b	jmp	iwi38
iwi39b	jmp	iwi39
iwi40b	jmp	iwi40
iwi41b	jmp	iwi41
iw56	ASK	eight,#6,depsef,iwi56
iwi56	move.b	#28,(a3)
	move.b	#6,(a4)
	jsr	poss
	jmp	zwischen
iw57	ASK	one,#7,depsef,iwi57
iwi57	move.b	#0,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
u4	jmp	u5
iw58	ASK	two,#7,depsef,iwi58
iwi58	move.b	#4,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
iw59	ASK	three,#7,depsef,iwi59
iwi59	move.b	#8,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
iw60	ASK	four,#7,depsef,iwi60
iwi60	move.b	#12,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
iw61	ASK	five,#7,depsef,iwi61
iwi61	move.b	#16,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
rucksack	jmp	depsef
iw62	ASK	six,#7,depsef,iwi62
iwi62	move.b	#20,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
iw63	ASK	seven,#7,depsef,iwi63
iwi63	move.b	#24,(a3)
	move.b	#7,(a4)
	jsr	poss
	jmp	zwischen
iw64	ASK	eight,#7,depsef,iwi64
iwi64	move.b	#28,(a3)
	move.b	#7,(a4)
	jsr	poss
zwischen	move.b	mode,d0
	cmp.b	#1,d0
	beq	movein
	cmp.b	#2,d0
	beq	eve5
	move.b	endcounter,d0
	tst.b	d0
	beq	rucksack
	moveq.l	#0,d0
	move.b	moves,d0
	divu	#10,d0
	swap	d0
	and.l	#$f,d0
	lsl	#2,d0
	lea	tableX(pc),a0
	move.l	(a0,d0),a0		;in welchen move ?
	move.l	(a0)+,a5
	lea	one(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	two(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	three(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	four(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	five(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	six(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	seven(pc),a4
	jsr	chab
	move.l	(a0)+,a5
	lea	eight(pc),a4
	jsr	chab
	move.b	upper,d0
	tst.b	d0
	beq	n1
	CHANGE	#4,#0,#2,#1,#3
n1	move.b	drupper,d0
	tst.b	d0
	beq	n2
	CHANGE	#4,#-1,#2,#1,#3
n2	move.b	righter,d0
	tst.b	d0
	beq	n3
	CHANGE	#0,#-1,#2,#1,#3
n3	move.b	drowner,d0
	tst.b	d0
	beq	n4
	CHANGE	#-4,#-1,#2,#1,#3
n4	move.b	downer,d0
	tst.b	d0
	beq	n5
	CHANGE	#-4,#0,#2,#1,#3
n5	move.b	dlowner,d0
	tst.b	d0
	beq	n6
	CHANGE	#-4,#1,#2,#1,#3
n6	move.b	lefter,d0
	tst.b	d0
	beq	n7
	CHANGE	#0,#1,#2,#1,#3
n7	move.b	dlupper,d0
	tst.b	d0
	beq	fxs
	CHANGE	#4,#1,#2,#1,#3
fxs	move.b	#1,mode
	move.b	moves,d0
	addq.b	#1,d0
	move.b	d0,moves
	move.b	backs,d0
	cmp.b	#10,d0
	beq	.label1
	addq.b	#1,d0
	move.b	d0,backs
.label1	jsr	count
	HEXER	msg2,you,#90
	HEXER	msg3,cpu,#104
	jsr	clearDots
u5	move.b	cpu,d0		;der Computer zieht !
	tst.b	d0
	beq	r2		;CPU verliert
	move.b	#0,TwentyEight
	move.b	#0,passone
	move.b	#0,hicounter
	move.b	#0,endcounter
	move.b	#1,mode
	move.b	#1,fab1
	move.b	#2,fab2		;Farben zum Vergleichen !
u7	move.b	#0,ou
uptohim	move.b	#0,upper
	move.b	#0,drupper
	move.b	#0,righter
	move.b	#0,dlupper
	move.b	#0,downer
	move.b	#0,dlowner
	move.b	#0,lefter
	move.b	#0,dlupper
	moveq.l	#0,d4
	move.b	ou,d4
	addq.b	#1,d4
	move.b	d4,ou
	moveq.l	#0,d5
	move.b	ou,d5
	cmp.b	#61,d5
	beq	executeit
u2	lea	offset(pc),a3
	lea	byte(pc),a4
	lea	tableIII(pc),a0
	moveq.l	#0,d5
	move.b	ou,d5
	lsl	#2,d5
	move.l	(a0,d5),a0
	jmp	(a0)
e1	ASK	one,#0,movein,iwi1b	;was ist frei ?
e2	ASK	eight,#0,movein,iwi8b
e3	ASK	one,#7,movein,iwi57	;die Ecken vielleicht ?
e4	ASK	eight,#7,movein,iwi64
l1	ASK	one,#1,movein,iwi9b	;oder die Randfelder ?
l2	ASK	one,#2,movein,iwi17b
l3	ASK	one,#3,movein,iwi25b
l4	ASK	one,#4,movein,iwi33b
l5	ASK	one,#5,movein,iwi41b
l6	ASK	one,#6,movein,iwi49b
l7	ASK	eight,#1,movein,iwi16b
l8	ASK	eight,#2,movein,iwi24b
l9	ASK	eight,#3,movein,iwi32b
l10	ASK	eight,#4,movein,iwi40b
l11	ASK	eight,#5,movein,iwi48
l12	ASK	eight,#6,movein,iwi56
l13	ASK	two,#0,movein,iwi2b
l14	ASK	three,#0,movein,iwi3b
l15	ASK	four,#0,movein,iwi4b
l16	ASK	five,#0,movein,iwi5b
l17	ASK	six,#0,movein,iwi6b
l18	ASK	seven,#0,movein,iwi7b
l19	ASK	two,#7,movein,iwi58
l20	ASK	three,#7,movein,iwi59
l21	ASK	four,#7,movein,iwi60
l22	ASK	five,#7,movein,iwi61
l23	ASK	six,#7,movein,iwi62
l24	ASK	seven,#7,movein,iwi63
l25	ASK	three,#2,movein,iwi19b	;die Innenfelder (4x4) !?
l26	ASK	three,#3,movein,iwi27b
l27	ASK	three,#4,movein,iwi35b
l28	ASK	three,#5,movein,iwi43
l29	ASK	four,#2,movein,iwi20b
l30	ASK	four,#5,movein,iwi44
l31	ASK	five,#2,movein,iwi21b
l32	ASK	five,#5,movein,iwi45
l33	ASK	six,#2,movein,iwi22b
l34	ASK	six,#3,movein,iwi30b
l35	ASK	six,#4,movein,iwi38b
l36	ASK	six,#5,movein,iwi46
l37	ASK	two,#2,movein,iwi18b	;dann die übrigen Felder ?
l38	ASK	two,#3,movein,iwi26b
l39	ASK	two,#4,movein,iwi34b
l40	ASK	two,#5,movein,iwi42
l41	ASK	three,#1,movein,iwi11b
l42	ASK	three,#6,movein,iwi51
l43	ASK	four,#1,movein,iwi12b
l44	ASK	four,#6,movein,iwi52
l45	ASK	five,#1,movein,iwi13b
l46	ASK	five,#6,movein,iwi53
l47	ASK	six,#1,movein,iwi14b
l48	ASK	six,#6,movein,iwi54
l49	ASK	seven,#2,movein,iwi23b	
l50	ASK	seven,#3,movein,iwi31b
l51	ASK	seven,#4,movein,iwi39b
l52	ASK	seven,#5,movein,iwi47
l53	ASK	seven,#1,movein,iwi15b	;nicht die Voreckfelder !
l54	ASK	two,#1,movein,iwi10b
l55	ASK	two,#6,movein,iwi50
l56	ASK	seven,#6,movein,iwi55

movein	cmp.b	#3,levelbyte
	bne	.Max
	cmp.b	#29,ou
	bne	.Min
	cmp.b	#6,hicounter	;eins der Randfelder frei ?
	bge	executeit
.Min	cmp.b	#1,levelbyte
	beq	.Max
	cmp.b	#2,levelbyte
	beq	.Min2
	cmp.b	#41,ou
	bne	.Max
	cmp.b	#4,hicounter	;Innenfeld (4x4)
	bge	executeit
	bra	.Max
.Min2	cmp.b	#41,ou		;bei Level 2
	bge	.Max
	cmp.b	#28,ou
	bls	.Max
	cmp.b	#0,endcounter
	bne	m67
.Max	move.b	endcounter,d0	;Rückkehr
	tst.b	d0
	beq	uptohim
	cmp.b	#1,levelbyte
	beq	.skip1
	cmp.b	#4,ou		;is'ne Ecke frei ?
	bls	m67
.skip1	addq.b	#3,d0		;erhöht um 3 für better blanks
	move.b	d0,endcounter
	move.b	ou,d0
	cmp.b	#3,levelbyte
	bne	.skip2
	cmp.b	#16,d0
	bls	mTV1
	cmp.b	#28,d0
	bls	mTV2
.skip2	cmp.b	#1,levelbyte
	beq	m7
	cmp.b	#57,d0		;Voreckfelder
	beq	m8
	cmp.b	#58,d0		
	beq	m8b
	cmp.b	#59,d0		
	beq	m8c
	cmp.b	#60,d0		
	beq	m8d
m7	move.b	hicounter,d1
	move.b	endcounter,d0
	cmp.b	d1,d0
	beq	m40
	cmp.b	d1,d0
	bge	m2
m3	move.b	#0,endcounter
	jmp	uptohim
m2	move.b	endcounter,hicounter
	move.b	offset,highoff
	move.b	byte,highbyte
	move.b	upper,hiupper
	move.b	drupper,hidrupper
	move.b	righter,hirighter
	move.b	drowner,hidrowner
	move.b	downer,hidowner
	move.b	dlowner,hidlowner
	move.b	lefter,hilefter
	move.b	dlupper,hidlupper
	bra	m3
m40	move.b	$dff007,d0		;was soll DAS ???
	btst	#1,d0		;Ah , Zufall !
	beq	m3
	bra	m2
m8	lea	eight(pc),a6
	move.b	(a6),d0
m8all	cmp.b	#2,d0		;Status der Ecke
	beq	m7
	move.b	#1,endcounter	;schon von Schwarz genommen
	tst.b	d0
	beq	m7		;noch frei
	move.b	#2,endcounter
	bra	m7		;schon von Orange genommen
m8d	lea	eight(pc),a6
	move.b	7(a6),d0
	bra	m8all
m8c	lea	one(pc),a6
	move.b	7(a6),d0
	bra	m8all
m8b	lea	one(pc),a6
	move.b	(a6),d0
	bra	m8all
m11	move.b	hicounter,d0
	tst.b	d0
	beq	u2
	move.b	highbyte,d0
	tst.b	d0
	beq	m12
	cmp.b	#7,d0
	beq	m12
	move.b	hirighter,d0
	tst.b	d0
	beq	m13
	bra	m18
m13	moveq.l	#0,d2
	moveq.l	#0,d3
	move.b	highoff,d2
	lea	tableII(pc),a4
	move.l	(a4,d2),a5
	move.b	highbyte,d3
	addq.b	#1,d3
	move.b	(a5,d3),d4
	cmp.b	#1,d4
	beq.s	m16
	bra	m18
m16	move.b	#1,hicounter
	jmp	u2	
m18	move.b	hilefter,d0
	tst.b	d0
	beq.s	m19
	bra	executeit
m19	moveq.l	#0,d2
	moveq.l	#0,d3
	move.b	highoff,d2
	lea	tableII(pc),a4
	move.l	(a4,d2),a5
	move.b	highbyte,d3
	subq.b	#1,d3
	move.b	(a5,d3),d4
	cmp.b	#1,d4
	beq.s	m22
	bra	executeit
m22	move.b	#1,hicounter
	jmp	u2	
m12	move.b	hidowner,d0
	tst.b	d0
	beq.s	m23
	bra	m28
m23	moveq.l	#0,d2
	moveq.l	#0,d3
	move.b	highoff,d2
	addq.b	#4,d2
	lea	tableII(pc),a4
	move.l	(a4,d2),a5
	move.b	highbyte,d3
	move.b	(a5,d3),d4
	cmp.b	#1,d4
	beq.s	m26
	bra	m28
m26	move.b	#1,hicounter
	jmp	u2	
m28	move.b	hiupper,d0
	tst.b	d0
	beq	m29
	bra	executeit
m29	moveq.l	#0,d2
	moveq.l	#0,d3
	move.b	highoff,d2
	subq.b	#4,d2
	lea	tableII(pc),a4
	move.l	(a4,d2),a5
	move.b	highbyte,d3
	move.b	(a5,d3),d4
	cmp.b	#1,d4
	beq.s	m32
	bra	executeit
m32	move.b	#1,hicounter
	jmp	u2	
m6	move.b	#0,mode
	jmp	rucksack


mTV1	bra	special_case
mTV1back	moveq.l	#0,d0		;Randfelder checken
	moveq.l	#0,d5
	move.b	offset(pc),d0
	lea	tableII(pc),a2
	move.l	(a2,d0),a0
	moveq.l	#0,d1
	move.b	byte,d1
	move.l	d1,d6		;retten
	subq.b	#1,d1
.label2q	move.b	(a0,d1),d2		;nach links
	moveq.b	#1,d5
	tst.b	d2
	beq	to_the_right	;d5 = 1  -  geht OK
	moveq.b	#0,d5		;d5 = 0  -  no way
	cmp.b	#2,d2
	bne	.label1q
	subq.b	#1,d1
	cmp.b	#-1,d1
	beq	m7
	bra	.label2q
.label1q	cmp.b	#0,lefter
	bne	.label3q
	moveq.b	#0,d5		;Orange !!!
	bra	to_the_right
.label3q	subq.b	#1,d1		;umdrehbar
	move.b	(a0,d1),d2
	cmp.b	#2,d2
	bne	.label3q
.label4q	subq.b	#1,d1		;und danach ?
	cmp.b	#-1,d1
	beq	m67
	move.b	(a0,d1),d2
	moveq.b	#2,d5		;d5 = 2  -  umdrehbar
	tst.b	d2
	beq	to_the_right
	moveq.b	#0,d5
	cmp.b	#1,d2		;wieder Orange ?
	beq	to_the_right	;dann NEIN !
	bra	.label4q

to_the_right
	move.l	d6,d1
	addq.b	#1,d1
.label2q	move.b	(a0,d1),d2		;nach rechts
	tst.b	d2
	beq	.ask_for
	cmp.b	#2,d2
	bne	.label1q
	addq.b	#1,d1
	cmp.b	#8,d1
	beq	.ask_for
	bra	.label2q
.label1q	cmp.b	#0,righter
	bne	.label3q
.nein	move.b	#3,endcounter
.no1	moveq.l	#0,d0
	move.b	byte,d0
	cmp.b	#1,d0
	bne	.no2
	moveq.b	#0,d0
.no_all	move.b	(a0,d0),d2
	tst.b	d2
	bne	.no3
	cmp.b	#2,d5
	beq	m67
	move.b	#1,endcounter
	bra	m7
.no3	cmp.b	#2,d2
	beq	m7
	move.b	#2,endcounter
	bra	m7
.no2	cmp.b	#6,byte
	bne	m7
	moveq.b	#7,d0
	bra	.no_all
.label3q	addq.b	#1,d1		;umdrehbar
	move.b	(a0,d1),d2
	cmp.b	#2,d2
	bne	.label3q
.label4q	addq.b	#1,d1		;und danach ?
	cmp.b	#8,d1
	beq	m67		;dann hab ich die Ecke !
	move.b	(a0,d1),d2
	tst.b	d2
	bne	.label5q
	tst.b	d5
	beq	.ask_for
	moveq.b	#2,d5
	bra	.ask_for
.label5q	cmp.b	#1,d2		;wieder Orange ?
	beq	.nein		;dann NEIN !
	bra	.label4q

.ask_for	tst.b	d5		;d5 = 0  -  nein
	beq	.nein
	cmp.b	#1,byte
	beq	.no1
	cmp.b	#6,byte
	beq	.no1
	cmp.b	#2,d5
	beq	m67
	bra	m7

special_case		;Ecke frei-orange-frei-orange-frei
	lea	one(pc),a0
	cmp.b	#0,offset
	beq	.sc1
	lea	eight(pc),a0
.sc1	move.b	(a0),d2		;Ecke frei ?
	tst.b	d2
	bne	.scR
	move.b	1(a0),d2
	cmp.b	#1,d2		;Voreckfeld orange ?
	bne	.scR
	moveq.l	#1,d0
.scLoop	addq.b	#1,d0
	cmp.b	#8,d0
	beq	.scR
	move.b	(a0,d0),d2
	cmp.b	#1,d2
	beq	.scLoop
	tst.b	d2		;danach frei ?
	bne	.scR
	move.b	byte,d5
	cmp.b	d0,d5		;is'es das Feld ?
	bne	.scR
	addq.b	#1,d0
	cmp.b	#8,d0
	beq	.scR
	move.b	(a0,d0),d2
	cmp.b	#1,d2		;danach orange ?
	bne	.scR
.scLoop2	addq.b	#1,d0
	cmp.b	#8,d0
	beq	m67		;frei oder Ecke !
	move.b	(a0,d0),d2
	tst.b	d2
	beq	m67
	cmp.b	#1,d2
	bne	.scR
	bra	.scLoop2
.scR	lea	one(pc),a0		;die rechte Ecke ?
	cmp.b	#0,offset
	beq	.sc3
	lea	eight(pc),a0
.sc3	move.b	7(a0),d2		;Ecke frei ?
	tst.b	d2
	bne	.scNo
	move.b	6(a0),d2
	cmp.b	#1,d2		;Voreckfeld orange ?
	bne	.scNo
	moveq.l	#6,d0
.scLoop3	subq.b	#1,d0
	cmp.b	#-1,d0
	beq	.scNo
	move.b	(a0,d0),d2
	cmp.b	#1,d2
	beq	.scLoop3
	tst.b	d2		;danach frei ?
	bne	.scNo
	move.b	byte,d5
	cmp.b	d0,d5
	bne	.scNo
	subq.b	#1,d0
	cmp.b	#-1,d0
	beq	.scNo
	move.b	(a0,d0),d2
	cmp.b	#1,d2		;danach orange ?
	bne	.scNo
.scLoop4	subq.b	#1,d0
	cmp.b	#-1,d0
	beq	m67		;frei oder Ecke !
	move.b	(a0,d0),d2
	tst.b	d2
	beq	m67
	cmp.b	#1,d2
	bne	.scNo
	bra	.scLoop4
.scNo	bra	mTV1back

	


mTV2	bra	special_caseII
mTV2back	moveq.l	#0,d1		;Randfelder checken
	moveq.l	#0,d5
	move.b	offset(pc),d1
	lea	tableII(pc),a2
	moveq.l	#0,d0
	move.b	byte,d0
	move.l	d1,d6		;retten
	subq.b	#4,d1
.label2q	move.l	(a2,d1),a0
	move.b	(a0,d0),d2		;nach oben
	moveq.b	#1,d5
	tst.b	d2
	beq	to_the_down		;d5 = 1  -  geht OK
	moveq.b	#0,d5		;d5 = 0  -  no way
	cmp.b	#2,d2
	bne	.label1q
	subq.b	#4,d1
	cmp.b	#-4,d1
	beq	m7
	bra	.label2q
.label1q	cmp.b	#0,upper
	bne	.label3q
	moveq.b	#0,d5		;Orange !!!
	bra	to_the_down
.label3q	subq.b	#4,d1
	move.l	(a2,d1),a0		;umdrehbar
	move.b	(a0,d0),d2
	cmp.b	#2,d2
	bne	.label3q
.label4q	subq.b	#4,d1		;und danach ?
	cmp.b	#-4,d1
	beq	m67
	move.l	(a2,d1),a0
	move.b	(a0,d0),d2
	moveq.b	#2,d5
	tst.b	d2
	beq	to_the_down
	moveq.b	#0,d5
	cmp.b	#1,d2		;wieder Orange ?
	beq	to_the_down		;dann NEIN !
	bra	.label4q

to_the_down
	move.l	d6,d1
	addq.b	#4,d1
.label2q	move.l	(a2,d1),a0
	move.b	(a0,d0),d2		;nach unten
	tst.b	d2
	beq	.ask_for
	cmp.b	#2,d2
	bne	.label1q
	addq.b	#4,d1
	cmp.b	#32,d1
	beq	.ask_for
	bra	.label2q
.label1q	cmp.b	#0,downer
	bne	.label3q
.nein	move.b	#3,endcounter
.no1	moveq.l	#0,d1
	move.b	offset,d1
	cmp.b	#4,d1
	bne	.no2
	moveq.b	#0,d1
.no_all	moveq.l	#0,d0
	move.b	byte,d0
	move.l	(a2,d1),a0
	move.b	(a0,d0),d2
	tst.b	d2
	bne	.no3
	cmp.b	#2,d5
	beq	m67
	move.b	#1,endcounter
	bra	m7
.no3	cmp.b	#2,d2
	beq	m7
	move.b	#2,endcounter
	bra	m7
.no2	cmp.b	#24,d1
	bne	m7
	move.b	#28,d1
	bra	.no_all
.label3q	addq.b	#4,d1	
	move.l	(a2,d1),a0		;umdrehbar
	move.b	(a0,d0),d2
	cmp.b	#2,d2
	bne	.label3q
.label4q	addq.b	#4,d1		;und danach ?
	cmp.b	#32,d1
	beq	m67		;dann hab ich die Ecke !
	move.l	(a2,d1),a0	
	move.b	(a0,d0),d2
	tst.b	d2
	bne	.label5q
	tst.b	d5
	beq	.ask_for
	moveq.b	#2,d5
	bra	.ask_for
.label5q	cmp.b	#1,d2		;wieder Orange ?
	beq	.nein		;dann NEIN !
	bra	.label4q

.ask_for	tst.b	d5		;d5 = 0  -  nein
	beq	.nein
	cmp.b	#4,offset
	beq	.no1
	cmp.b	#24,offset
	beq	.no1
	cmp.b	#2,d5
	beq	m67
	bra	m7

special_caseII		;Ecke frei-orange-frei-orange-frei
	moveq.l	#0,d1
	moveq.l	#0,d3
	moveq.l	#0,d4
	move.b	byte,d1
	lea	tableII(pc),a2
.sc1	move.l	(a2),a0
	move.b	(a0,d1),d2		;Ecke frei ?
	tst.b	d2
	bne	.scR
	move.l	4(a2),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2		;Voreckfeld orange ?
	bne	.scR
	moveq.l	#4,d4
.scLoop	addq.b	#4,d4
	cmp.b	#32,d4
	beq	.scR
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2
	beq	.scLoop
	tst.b	d2		;danach frei ?
	bne	.scR
	move.b	offset,d5
	cmp.b	d4,d5		;is'es das Feld ?
	bne	.scR
	addq.b	#4,d4
	cmp.b	#32,d4
	beq	.scR
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2		;danach orange ?
	bne	.scR
.scLoop2	addq.b	#4,d4
	cmp.b	#32,d4
	beq	m67		;frei oder Ecke !
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	tst.b	d2
	beq	m67
	cmp.b	#1,d2
	bne	.scR
	bra	.scLoop2
.scR	move.l	28(a2),a0
	move.b	(a0,d1),d2		;Ecke frei ?
	tst.b	d2
	bne	.scNo
	move.l	24(a2),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2		;Voreckfeld orange ?
	bne	.scNo
	moveq.l	#24,d4
.scLoop3	subq.b	#4,d4
	cmp.b	#-4,d4
	beq	.scNo
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2
	beq	.scLoop3
	tst.b	d2		;danach frei ?
	bne	.scNo
	move.b	offset,d5
	cmp.b	d4,d5
	bne	.scNo
	subq.b	#4,d4
	cmp.b	#-4,d4
	beq	.scNo
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	cmp.b	#1,d2		;danach orange ?
	bne	.scNo
.scLoop4	subq.b	#4,d4
	cmp.b	#-4,d4
	beq	m67		;frei oder Ecke !
	move.l	(a2,d4),a0
	move.b	(a0,d1),d2
	tst.b	d2
	beq	m67
	cmp.b	#1,d2
	bne	.scNo
	bra	.scLoop4
.scNo	bra	mTV2back
	

m67	move.b	endcounter,hicounter
	move.b	#0,endcounter
	move.b	offset,highoff
	move.b	byte,highbyte
	move.b	upper,hiupper
	move.b	drupper,hidrupper
	move.b	righter,hirighter
	move.b	drowner,hidrowner
	move.b	downer,hidowner
	move.b	dlowner,hidlowner
	move.b	lefter,hilefter
	move.b	dlupper,hidlupper

executeit	move.b	#0,endcounter
	move.b	hicounter,d0
	tst.b	d0
	beq	r3
	jsr	blink
	move.b	highoff,offset
	move.b	highbyte,byte
	move.b	hiupper,d0
	tst.b	d0
	beq	n1b
	CHANGE	#4,#0,#1,#2,#2
n1b	move.b	hidrupper,d0
	tst.b	d0
	beq	n2b
	CHANGE	#4,#-1,#1,#2,#2
n2b	move.b	hirighter,d0
	tst.b	d0
	beq	n3b
	CHANGE	#0,#-1,#1,#2,#2
n3b	move.b	hidrowner,d0
	tst.b	d0
	beq	n4b
	CHANGE	#-4,#-1,#1,#2,#2
n4b	move.b	hidowner,d0
	tst.b	d0
	beq	n5b
	CHANGE	#-4,#0,#1,#2,#2
n5b	move.b	hidlowner,d0
	tst.b	d0
	beq	n6b
	CHANGE	#-4,#1,#1,#2,#2
n6b	move.b	hilefter,d0
	tst.b	d0
	beq	n7b
	CHANGE	#0,#1,#1,#2,#2
n7b	move.b	hidlupper,d0
	tst.b	d0
	beq	fxsb
	CHANGE	#4,#1,#1,#2,#2
fxsb	jsr	count
	HEXER	msg2,you,#90
	HEXER	msg3,cpu,#104
	bra	r2
r3	move.b	#1,passone
r2	move.b	#2,fab1
	move.b	#1,fab2
	move.b	#0,mode
	jmp	rucksack
bts3	jsr	clear
	jsr	Lines
	move.b	#0,moves
	move.b	#0,backs
	jmp	u5
ots3	jsr	clear
	jsr	Lines
	move.b	#0,moves
	move.b	#0,backs
	jmp	rucksack

*  ChangeOld :
* -------------
chab	moveq.l	#7,d5
ch2	move.b	(a4)+,(a5)+
	dbra	d5,ch2
	moveq.l	#0,d5
	rts

*  Back :
* --------			;wenn "Back" gedrückt wurde
backy3	cmp.b	#0,backs
	beq	rucksack
	move.b	moves,d0
	subq.b	#1,d0
	move.b	d0,moves
	move.b	backs,d0
	subq.b	#1,d0
	move.b	d0,backs
	moveq.l	#0,d0
	move.b	moves,d0
	divu	#10,d0
	swap	d0
	and.l	#$f,d0
	lsl	#2,d0
	lea	tableX(pc),a0
	move.l	(a0,d0),a0		;von welchen move ?
	move.l	(a0)+,a5
	lea	one(pc),a4
	moveq.l	#7,d4
bac1	move.b	(a5)+,(a4)+
	dbra	d4,bac1
bac2	lea	two(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac3	move.b	(a5)+,(a4)+
	dbra	d4,bac3
bac4	lea	three(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac5	move.b	(a5)+,(a4)+
	dbra	d4,bac5
bac6	lea	four(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac7	move.b	(a5)+,(a4)+
	dbra	d4,bac7
bac8	lea	five(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac9	move.b	(a5)+,(a4)+
	dbra	d4,bac9
bac10	lea	six(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac11	move.b	(a5)+,(a4)+
	dbra	d4,bac11
bac12	lea	seven(pc),a4
	move.l	(a0)+,a5
	moveq.l	#7,d4
bac13	move.b	(a5)+,(a4)+
	dbra	d4,bac13
bac14	lea	eight(pc),a4
	move.l	(a0),a5
	moveq.l	#7,d4
bac15	move.b	(a5)+,(a4)+
	dbra	d4,bac15
	moveq.l	#0,d4
bac16	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	moveq.l	#0,d0
	CALLGRAF	SetAPen
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	moveq.l	#0,d5
	moveq.l	#0,d6
btouch	lea	tableII(pc),a3
	move.l	(a3,d5),a3
	moveq.l	#7,d4
bwhich	move.b	(a3)+,d6
	moveq.l	#7,d3
	sub	d4,d3
	mulu	#30,d3
	addq	#2,d3
	move.w	d3,xfill
	move.l	d5,d3
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	tst.b	d6
	beq	bclrnext
	cmp.b	#2,d6
	beq	bacblac
	bra	bacora
brunter	addq	#4,d5
	cmp	#32,d5
	beq	brrret
	bra	btouch
bacora	moveq.l	#3,d3
bdraw	FILL	xfill,yfill,d3
	bra	bnext
bacblac	moveq.l	#2,d3
	bra	bdraw
bclrnext	moveq.l	#0,d3
	bra	bdraw
bnext	dbra	d4,bwhich
	bra	brunter
brrret	jsr	count
	HEXER	msg2,you,#90
	HEXER	msg2,cpu,#104
	PRINT	msg9,#6,#126
	jmp	rucksack

*  Dots on/off :
* ---------------
dotty	cmp.b	#1,dots
	bne	dotty1
	PRINT	msg12,#75,#56
	jsr	clearDots
	move.b	#0,dots
	jmp	rucksack
dotty1	move.b	#1,dots
	PRINT	msg11,#71,#56
	move.b	#0,endcounter
	jmp	vorevent

*  Level-Wahl :
* --------------
level	move.b	levelbyte,d0
	addq.b	#1,d0
	cmp.b	#4,d0
	bne	l1zui
	move.b	#1,levelbyte
	PRINT	msg13,#75,#68
	jmp	rucksack
l1zui	move.b	d0,levelbyte
	cmp.b	#2,d0
	bne	l2zui
	PRINT	msg14,#75,#68
	jmp	rucksack
l2zui	PRINT	msg15,#75,#68
	jmp	rucksack


*  Blinker :
* -----------			;blink mal kurz (s/w)
blink	moveq.l	#0,d2
	moveq.l	#0,d3
	move.b	highbyte,d2
	mulu	#30,d2
	addq	#2,d2
	move.w	d2,xfill
	moveq.l	#0,d3
	move.b	highoff,d3
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	moveq.l	#4,d5
b4	subq.b	#1,d5
	tst.b	d5
	beq	bret
	FILL	xfill,yfill,#1
	moveq.l	#6,d1
	CALLDOS	Delay
b2	FILL	xfill,yfill,#2
	moveq.l	#6,d1
	CALLDOS	Delay
	bra	b4
bret	rts

*  Possnotmac :
* --------------
poss	POSSIBLE	#4,#0,upper		;möglich ?
	POSSIBLE	#4,#-1,drupper
	POSSIBLE	#0,#-1,righter
	POSSIBLE	#-4,#-1,drowner
	POSSIBLE	#-4,#0,downer
	POSSIBLE	#-4,#1,dlowner
	POSSIBLE	#0,#1,lefter
	POSSIBLE	#4,#1,dlupper
	rts

*  Counter :
* -----------			;durchzählen
count	moveq.l	#0,d5
	moveq.l	#0,d6
	move.b	#0,you
	move.b	#0,cpu
	lea	you(pc),a5
	lea	cpu(pc),a4
touchdown	lea	tableII(pc),a3
	move.l	(a3,d5),a3
	moveq.l	#7,d2
which	move.b	(a3)+,d3
	tst.b	d3
	beq	next
	cmp.b	#2,d3
	beq.s	toblack
	cmp.b	#1,d3
	beq.s	toorange
toblack	add.b	#1,(a4)
	bra	next
toorange	add.b	#1,(a5)
next	dbra	d2,which
	moveq.l	#0,d2
runter	addq	#4,d5
	cmp.b	#32,d5
	beq.s	cret
	bra	touchdown
cret	rts

*  Clear :
* ---------
clear	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	moveq.l	#0,d0
	CALLGRAF	SetAPen
	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	lea	one(pc),a0
	lea	two(pc),a1
	lea	three(pc),a2
	lea	six(pc),a3
	lea	seven(pc),a4
	lea	eight(pc),a5
	moveq.l	#7,d0
cl2	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a2)+	
	move.b	#0,(a3)+
	move.b	#0,(a4)+
	move.b	#0,(a5)+
	dbra	d0,cl2
cl6	lea	cop1(pc),a0
	lea	cop2(pc),a1
	lea	cop3(pc),a2
	lea	cop6(pc),a3
	lea	cop7(pc),a4
	lea	cop8(pc),a5
	moveq.l	#7,d0
cl7	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a2)+	
	move.b	#0,(a3)+
	move.b	#0,(a4)+
	move.b	#0,(a5)+
	dbra	d0,cl7
cl3	lea	four(pc),a0
	lea	five(pc),a1
	lea	cop4(pc),a2
	lea	cop5(pc),a3
	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a0)+
	move.b	#0,(a1)+	
	move.b	#1,(a0)+
	move.b	#2,(a1)+
	move.b	#2,(a0)+
	move.b	#1,(a1)+
	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a0)+
	move.b	#0,(a1)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+	
	move.b	#1,(a2)+
	move.b	#2,(a3)+
	move.b	#2,(a2)+
	move.b	#1,(a3)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+
	move.b	#0,(a2)+
	move.b	#0,(a3)+
	moveq.l	#0,d5
.btouch	lea	tableII(pc),a3
	move.l	(a3,d5),a3
	moveq.l	#7,d4
.bwhich	move.b	(a3)+,d6
	moveq.l	#7,d3
	sub	d4,d3
	mulu	#30,d3
	addq	#2,d3
	move.w	d3,xfill
	move.l	d5,d3
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	tst.b	d6
	beq	.bclrnext
	cmp.b	#2,d6
	beq	.bacblac
	bra	.bacora
.brunter	addq	#4,d5
	cmp	#32,d5
	beq	.brrret
	bra	.btouch
.bacora	moveq.l	#3,d3
.bdraw	FILL	xfill,yfill,d3
	bra	.bnext
.bacblac	moveq.l	#2,d3
	bra	.bdraw
.bclrnext	moveq.l	#0,d3
	bra	.bdraw
.bnext	dbra	d4,.bwhich
	jmp	.brunter
.brrret	move.b	#2,you
	move.b	#2,cpu
	PRINT	msg1,#33,#90
	PRINT	msg4,#33,#104
	PRINT	msg9,#6,#126
	rts

*  Clear the dots :
* ------------------
clearDots	cmp.b	#0,dots
	beq	.ret
	moveq.l	#0,d5
	moveq.l	#0,d6
.btouch	lea	tableII(pc),a3
	move.l	(a3,d5),a3
	moveq.l	#7,d4
.bwhich	move.b	(a3)+,d6
	moveq.l	#7,d3
	sub	d4,d3
	mulu	#30,d3
	addq	#2,d3
	move.w	d3,xfill
	move.l	d5,d3
	lsr	#2,d3
	mulu	#15,d3
	add	#11,d3
	move.w	d3,yfill
	tst.b	d6
	bne	.next
	FILL	xfill,yfill,#0
.next	dbra	d4,.bwhich
.brunter	addq.b	#4,d5
	cmp.b	#32,d5
	bne	.btouch
	moveq.l	#0,d4
.ret	rts

*  finish activity :
* -------------------
closemain	move.l	wptr,a0
	CALLINT	CloseWindow
closeDOS	move.l	_DOSBase,a1
	CALLEXEC	CloseLibrary
closegraf	move.l	_GfxBase,a1
	CALLEXEC	CloseLibrary
closeint	move.l	_IntuitionBase,a1
	CALLEXEC	CloseLibrary
stop_it	rts
W_gadgets equ   WINDOWCLOSE!WINDOWDRAG!WINDOWDEPTH
W_extras  equ   SMART_REFRESH!ACTIVATE
W_Title	dc.b	"  REVCOMP V2.0   by   MARC FISCHLIN  ",0
	even			     
wdef	dc.w	130,32
	dc.w	380,136
	dc.b	2,1
	dc.l 	GADGETUP!CLOSEWINDOW
	dc.l	W_gadgets!W_extras
	dc.l	gadget1
	dc.l	0
	dc.l	W_Title
	dc.l	0,0
	dc.w	50,50,400,200
	dc.w	WBENCHSCREEN
intname	INTNAME
grafname  	GRAFNAME
DOSname	DOSNAME
_IntuitionBase ds.l	1
_GfxBase	ds.l	1
_DOSBase 	ds.l	1
wptr	ds.l	1
counter	dc.w	0
endcounter	dc.w	0
xfill	dc.w	0
yfill	dc.w	0
ou	dc.b	0
abx	dc.b	0
TwentyEight	dc.b	0
ab1	dc.b	0
test	dc.b	0
highoff	dc.b	0
highbyte	dc.b	0
hicounter	dc.b	0
ecke	dc.b	0
hiupper	dc.b	0
hidrupper	dc.b	0
hirighter	dc.b	0
hidrowner	dc.b	0
hidowner	dc.b	0
hidlowner	dc.b	0
hilefter	dc.b	0
hidlupper	dc.b	0
passone	dc.b	0
upper	dc.b	0
drupper	dc.b	0
righter	dc.b	0
drowner	dc.b	0
downer	dc.b	0
dlowner	dc.b	0
lefter	dc.b	0
dlupper	dc.b	0
you	dc.b	0
cpu	dc.b	0
offset	dc.b	0
byte	dc.b	0
mode	dc.b	0
fab1	dc.b	2
fab2	dc.b	1
	even	
one	dc.b	0,0,0,0,0,0,0,0
two	dc.b	0,0,0,0,0,0,0,0
three	dc.b	0,0,0,0,0,0,0,0
four	dc.b	0,0,0,1,2,0,0,0
five	dc.b	0,0,0,2,1,0,0,0
six	dc.b	0,0,0,0,0,0,0,0
seven	dc.b	0,0,0,0,0,0,0,0
eight	dc.b	0,0,0,0,0,0,0,0
	even
cop1	dc.b	0,0,0,0,0,0,0,0
cop2	dc.b	0,0,0,0,0,0,0,0
cop3	dc.b	0,0,0,0,0,0,0,0
cop4	dc.b	0,0,0,1,2,0,0,0
cop5	dc.b	0,0,0,2,1,0,0,0
cop6	dc.b	0,0,0,0,0,0,0,0
cop7	dc.b	0,0,0,0,0,0,0,0
cop8	dc.b	0,0,0,0,0,0,0,0
	even
tableIV	dc.l	0
	dc.l	pe1
	dc.l	pe2
	dc.l	pe3
	dc.l	pe4
	dc.l	pl1
	dc.l	pl2
	dc.l	pl3
	dc.l	pl4
	dc.l	pl5
	dc.l	pl6
	dc.l	pl7
	dc.l	pl8
	dc.l	pl9
	dc.l	pl10
	dc.l	pl11
	dc.l	pl12
	dc.l	pl13
	dc.l	pl14
	dc.l	pl15
	dc.l	pl16
	dc.l	pl17
	dc.l	pl18
	dc.l	pl19
	dc.l	pl20
	dc.l	pl21
	dc.l	pl22
	dc.l	pl23
	dc.l	pl24
	dc.l	pl25
	dc.l	pl26
	dc.l	pl27
	dc.l	pl28
	dc.l	pl29
	dc.l	pl30
	dc.l	pl31
	dc.l	pl32
	dc.l	pl33
	dc.l	pl34
	dc.l	pl35
	dc.l	pl36
	dc.l	pl37
	dc.l	pl38
	dc.l	pl39
	dc.l	pl40
	dc.l	pl41
	dc.l	pl42
	dc.l	pl43
	dc.l	pl44
	dc.l	pl45
	dc.l	pl46
	dc.l	pl47
	dc.l	pl48
	dc.l	pl49
	dc.l	pl50
	dc.l	pl51
	dc.l	pl52
	dc.l	pl53
	dc.l	pl54
	dc.l	pl55
	dc.l	pl56
tableIII	dc.l	0
	dc.l	e1
	dc.l	e2
	dc.l	e3
	dc.l	e4
	dc.l	l1
	dc.l	l2
	dc.l	l3
	dc.l	l4
	dc.l	l5
	dc.l	l6
	dc.l	l7
	dc.l	l8
	dc.l	l9
	dc.l	l10
	dc.l	l11
	dc.l	l12
	dc.l	l13
	dc.l	l14
	dc.l	l15
	dc.l	l16
	dc.l	l17
	dc.l	l18
	dc.l	l19
	dc.l	l20
	dc.l	l21
	dc.l	l22
	dc.l	l23
	dc.l	l24
	dc.l	l25
	dc.l	l26
	dc.l	l27
	dc.l	l28
	dc.l	l29
	dc.l	l30
	dc.l	l31
	dc.l	l32
	dc.l	l33
	dc.l	l34
	dc.l	l35
	dc.l	l36
	dc.l	l37
	dc.l	l38
	dc.l	l39
	dc.l	l40
	dc.l	l41
	dc.l	l42
	dc.l	l43
	dc.l	l44
	dc.l	l45
	dc.l	l46
	dc.l	l47
	dc.l	l48
	dc.l	l49
	dc.l	l50
	dc.l	l51
	dc.l	l52
	dc.l	l53
	dc.l	l54
	dc.l	l55
	dc.l	l56
tableII	dc.l	one
	dc.l	two
	dc.l	three
	dc.l	four
	dc.l	five
	dc.l	six
	dc.l	seven
	dc.l	eight
table	dc.l	iw1
	dc.l	iw2
	dc.l	iw3
	dc.l	iw4
	dc.l	iw5
	dc.l	iw6
	dc.l	iw7
	dc.l	iw8
	dc.l	iw9
	dc.l	iw10
	dc.l	iw11
	dc.l	iw12
	dc.l	iw13
	dc.l	iw14
	dc.l	iw15
	dc.l	iw16
	dc.l	iw17
	dc.l	iw18
	dc.l	iw19
	dc.l	iw20
	dc.l	iw21
	dc.l	iw22
	dc.l	iw23
	dc.l	iw24
	dc.l	iw25
	dc.l	iw26
	dc.l	iw27
	dc.l	iw28
	dc.l	iw29
	dc.l	iw30
	dc.l	iw31
	dc.l	iw32
	dc.l	iw33
	dc.l	iw34
	dc.l	iw35
	dc.l	iw36
	dc.l	iw37
	dc.l	iw38
	dc.l	iw39
	dc.l	iw40
	dc.l	iw41
	dc.l	iw42
	dc.l	iw43
	dc.l	iw44
	dc.l	iw45
	dc.l	iw46
	dc.l	iw47
	dc.l	iw48
	dc.l	iw49
	dc.l	iw50
	dc.l	iw51
	dc.l	iw52
	dc.l	iw53
	dc.l	iw54
	dc.l	iw55
	dc.l	iw56
	dc.l	iw57
	dc.l	iw58
	dc.l	iw59
	dc.l	iw60
	dc.l	iw61
	dc.l	iw62
	dc.l	iw63
	dc.l	iw64
	dc.l	bts1
	dc.l	ots1
	dc.l	backy1
	dc.l	dotty
	dc.l	level

*  Messages :
* ------------
msg1	dc.b	"YOU : 02",0
msg4	dc.b	"CPU : 02",0
msg2	dc.b	"  ",0
msg3	dc.b	"  ",0
msg5	dc.b	"- You win -",0
msg6	dc.b	"- Game's tied -",0
msg7	dc.b	"- You lose -",0
msg9	dc.b	"               ",0
msg10	dc.b	".",0
msg11	dc.b	" on ",0
msg12	dc.b	"off",0
msg13	dc.b	" 1 ",0
msg14	dc.b	" 2 ",0
msg15	dc.b	" 3 ",0
	even
*  Gadgets :
* -----------
border	dc.w	0,0
	dc.b	1,0,0,5
	dc.l	koord
	dc.l 	0
koord	dc.w	-1,-1
	dc.w	29,-1
	dc.w	29,14
	dc.w	-1,14
	dc.w	-1,-1

gadget1	dc.l	bts
	dc.w	133,13,240,120,GADGHNONE,RELVERIFY,1
	dc.l	0,0,0,0,0
	dc.w	1
	dc.l	0

bts	dc.l	ots
	dc.w	5,13,123,9
	dc.w	GADGHCOMP
	dc.w	RELVERIFY
	dc.w	1
	dc.l	border2
	dc.l	0
	dc.l	bts_text
	dc.l	0,0
	dc.w	65
	dc.l	0
bts_text	dc.b	1,0,0,0
	dc.w	2,1
	dc.l	0
	dc.l	bts_real
	dc.l	0
bts_real	dc.b	" Black  starts",0
	even
border2	dc.w	0,0
	dc.b	1,0,0,5
	dc.l	koords2
	dc.l	0
koords2	dc.w	-1,-1,123,-1,123,9,-1,9,-1,-1
ots	dc.l	backy
	dc.w	5,25,123,9
	dc.w	GADGHCOMP
	dc.w	RELVERIFY
	dc.w	1
	dc.l	border2
	dc.l	0
	dc.l	ots_text
	dc.l	0,0
	dc.w	66
	dc.l	0
ots_text	dc.b	1,0,0,0
	dc.w	2,1
	dc.l	0
	dc.l	ots_real
	dc.l	0
ots_real	dc.b	" Orange starts",0
backy	dc.l	doo
	dc.w	5,37,123,9
	dc.w	GADGHCOMP
	dc.w	RELVERIFY
	dc.w	1
	dc.l	border2
	dc.l	0
	dc.l	backy_text
	dc.l	0,0
	dc.w	67
	dc.l	0
backy_text	dc.b	1,0,0,0
	dc.w	6,1
	dc.l	0
	dc.l	backy_real
	dc.l	0	
backy_real	dc.b	"     Back     ",0
	even
doo	dc.l	lev
	dc.w	5,49,123,9
	dc.w	GADGHCOMP
	dc.w	RELVERIFY
	dc.w	1
	dc.l	border2
	dc.l	0
	dc.l	doo_text
	dc.l	0,0
	dc.w	68
	dc.l	0
doo_text	dc.b	1,0,0,0
	dc.w	4,1
	dc.l	0
	dc.l	doo_real
	dc.l	0
doo_real	dc.b	"   Dots      ",0
	even
lev	dc.l	0
	dc.w	5,61,123,9
	dc.w	GADGHCOMP
	dc.w	RELVERIFY
	dc.w	1
	dc.l	border2
	dc.l	0
	dc.l	lev_text
	dc.l	0,0
	dc.w	69
	dc.l	0
lev_text	dc.b	1,0,0,0
	dc.w	8,1
	dc.l	0
	dc.l	lev_real
	dc.l	0
lev_real	dc.b	"  Level      ",0
	even

moves	dc.b	0
backs	dc.b	0
now	dc.b	0
dots	dc.b	1
levelbyte	dc.b	3
	even


lAa	dc.b	0,0,0,0,0,0,0,0
lAb	dc.b	0,0,0,0,0,0,0,0
lAc	dc.b	0,0,0,0,0,0,0,0
lAd	dc.b	0,0,0,0,0,0,0,0
lAe	dc.b	0,0,0,0,0,0,0,0
lAf	dc.b	0,0,0,0,0,0,0,0
lAg	dc.b	0,0,0,0,0,0,0,0
lAh	dc.b	0,0,0,0,0,0,0,0

lBa	dc.b	0,0,0,0,0,0,0,0
lBb	dc.b	0,0,0,0,0,0,0,0
lBc	dc.b	0,0,0,0,0,0,0,0
lBd	dc.b	0,0,0,0,0,0,0,0
lBe	dc.b	0,0,0,0,0,0,0,0
lBf	dc.b	0,0,0,0,0,0,0,0
lBg	dc.b	0,0,0,0,0,0,0,0
lBh	dc.b	0,0,0,0,0,0,0,0

lCa	dc.b	0,0,0,0,0,0,0,0
lCb	dc.b	0,0,0,0,0,0,0,0
lCc	dc.b	0,0,0,0,0,0,0,0
lCd	dc.b	0,0,0,0,0,0,0,0
lCe	dc.b	0,0,0,0,0,0,0,0
lCf	dc.b	0,0,0,0,0,0,0,0
lCg	dc.b	0,0,0,0,0,0,0,0
lCh	dc.b	0,0,0,0,0,0,0,0

lDa	dc.b	0,0,0,0,0,0,0,0
lDb	dc.b	0,0,0,0,0,0,0,0
lDc	dc.b	0,0,0,0,0,0,0,0
lDd	dc.b	0,0,0,0,0,0,0,0
lDe	dc.b	0,0,0,0,0,0,0,0
lDf	dc.b	0,0,0,0,0,0,0,0
lDg	dc.b	0,0,0,0,0,0,0,0
lDh	dc.b	0,0,0,0,0,0,0,0

lEa	dc.b	0,0,0,0,0,0,0,0
lEb	dc.b	0,0,0,0,0,0,0,0
lEc	dc.b	0,0,0,0,0,0,0,0
lEd	dc.b	0,0,0,0,0,0,0,0
lEe	dc.b	0,0,0,0,0,0,0,0
lEf	dc.b	0,0,0,0,0,0,0,0
lEg	dc.b	0,0,0,0,0,0,0,0
lEh	dc.b	0,0,0,0,0,0,0,0

lFa	dc.b	0,0,0,0,0,0,0,0
lFb	dc.b	0,0,0,0,0,0,0,0
lFc	dc.b	0,0,0,0,0,0,0,0
lFd	dc.b	0,0,0,0,0,0,0,0
lFe	dc.b	0,0,0,0,0,0,0,0
lFf	dc.b	0,0,0,0,0,0,0,0
lFg	dc.b	0,0,0,0,0,0,0,0
lFh	dc.b	0,0,0,0,0,0,0,0

lGa	dc.b	0,0,0,0,0,0,0,0
lGb	dc.b	0,0,0,0,0,0,0,0
lGc	dc.b	0,0,0,0,0,0,0,0
lGd	dc.b	0,0,0,0,0,0,0,0
lGe	dc.b	0,0,0,0,0,0,0,0
lGf	dc.b	0,0,0,0,0,0,0,0
lGg	dc.b	0,0,0,0,0,0,0,0
lGh	dc.b	0,0,0,0,0,0,0,0

lHa	dc.b	0,0,0,0,0,0,0,0
lHb	dc.b	0,0,0,0,0,0,0,0
lHc	dc.b	0,0,0,0,0,0,0,0
lHd	dc.b	0,0,0,0,0,0,0,0
lHe	dc.b	0,0,0,0,0,0,0,0
lHf	dc.b	0,0,0,0,0,0,0,0
lHg	dc.b	0,0,0,0,0,0,0,0
lHh	dc.b	0,0,0,0,0,0,0,0

lIa	dc.b	0,0,0,0,0,0,0,0
lIb	dc.b	0,0,0,0,0,0,0,0
lIc	dc.b	0,0,0,0,0,0,0,0
lId	dc.b	0,0,0,0,0,0,0,0
lIe	dc.b	0,0,0,0,0,0,0,0
lIf	dc.b	0,0,0,0,0,0,0,0
lIg	dc.b	0,0,0,0,0,0,0,0
lIh	dc.b	0,0,0,0,0,0,0,0

lJa	dc.b	0,0,0,0,0,0,0,0
lJb	dc.b	0,0,0,0,0,0,0,0
lJc	dc.b	0,0,0,0,0,0,0,0
lJd	dc.b	0,0,0,0,0,0,0,0
lJe	dc.b	0,0,0,0,0,0,0,0
lJf	dc.b	0,0,0,0,0,0,0,0
lJg	dc.b	0,0,0,0,0,0,0,0
lJh	dc.b	0,0,0,0,0,0,0,0
	even

tableX	dc.l	tableXI,tableXII,tableXIII,tableXIV,tableXV,tableXVI,tableXVII,tableXVIII,tableXIX,tableXX
tableXI	dc.l	lAa,lAb,lAc,lAd,lAe,lAf,lAg,lAh
tableXII	dc.l	lBa,lBb,lBc,lBd,lBe,lBf,lBg,lBh
tableXIII	dc.l	lCa,lCb,lCc,lCd,lCe,lCf,lCg,lCh
tableXIV	dc.l	lDa,lDb,lDc,lDd,lDe,lDf,lDg,lDh
tableXV	dc.l	lEa,lEb,lEc,lEd,lEe,lEf,lEg,lEh
tableXVI	dc.l	lFa,lFb,lFc,lFd,lFe,lFf,lFg,lFh
tableXVII	dc.l	lGa,lGb,lGc,lGd,lGe,lGf,lGg,lGh
tableXVIII	dc.l	lHa,lHb,lHc,lHd,lHe,lHf,lHg,lHh
tableXIX	dc.l	lIa,lIb,lIc,lId,lIe,lIf,lIg,lIh
tableXX	dc.l	lJa,lJb,lJc,lJd,lJe,lJf,lJg,lJh


*  Dot malen :
* -------------

drawDot	move.l	wptr,a1
	move.l	wd_RPort(a1),a1
	move.l	a1,a4
	moveq	#1,d0
	CALLGRAF	SetAPen
	move.l	a4,a1
	moveq.l	#0,d5
	moveq.l	#0,d4
	move.b	offset,d5
	lsr	#2,d5
	move.b	byte,d4
	mulu	#15,d5
	mulu	#30,d4
	add	#19,d5
	add	#146,d4
	move.l	d4,d0
	move.l	d5,d1
	CALLGRAF	WritePixel
	move.l	d4,d0
	move.l	d5,d1
	addq.b	#1,d0
	move.l	a4,a1
	CALLGRAF	WritePixel
	move.l	d4,d0
	addq.b	#1,d5
	move.l	d5,d1
	move.l	a4,a1
	CALLGRAF	WritePixel
	move.l	d4,d0
	addq.b	#1,d0
	move.l	d5,d1
	move.l	a4,a1
	CALLGRAF	WritePixel
	move.b	#0,endcounter
	rts


