SIMON7 ;		* * * * * * * * * * * * *
 ;		*  Program by Kim Watt  *
 ;		* Breeze Computing Inc. *
 ;		*     P.O. Box  1013    *
 ;		* Berkley, Mich.  48072 *
 ;		*    (313)  288-9422    *
 ;		* * * * * * * * * * * * *
 ;
 ;
 ;
 	ORG	7000H
 DLY	DEFB	0
 RESET	XOR	A
 	LD	HL,FLAG1
 	LD	B,4
 	LD	DE,1
 	JP	FILL
 FLAG1	DEFB	0
 FLAG2	DEFB	0
 FLAG3	DEFB	0
 FLAG4	DEFB	0
 BORDER	CALL	BETTR4
 	CALL	LOWER
 	LD	HL,3C00H
 	LD	DE,1
 	LD	A,131
 	LD	B,31
 	CALL	FILL
 	LD	(HL),171
 	INC	HL
 	LD	(HL),151
 	INC	HL
 	LD	B,31
 	CALL	FILL
 	DEC	HL
 	LD	DE,64
 	LD	A,191
 	LD	B,15
 	PUSH	BC
 	PUSH	AF
 	CALL	FILL
 	OR	A
 	SBC	HL,DE
 	DEC	HL
 	LD	DE,-1
 	LD	A,176
 	LD	B,30
 	CALL	FILL
 	LD	(HL),181
 	DEC	HL
 	LD	(HL),186
 	DEC	HL
 	LD	B,31
 	CALL	FILL
 	INC	HL
 	LD	DE,-64
 	POP	AF
 	POP	BC
 	CALL	FILL
 	LD	HL,15360+31+64
 	PUSH	HL
 	LD	B,13
 	PUSH	BC
 	LD	DE,64
 	LD	A,170
 	CALL	FILL
 	POP	BC
 	POP	HL
 	INC	HL
 	LD	A,149
 	CALL	FILL
 	LD	HL,15360+448+1
 	LD	DE,1
 	LD	A,140
 	LD	B,30
 	CALL	FILL
 	LD	(HL),174
 	INC	HL
 	LD	(HL),157
 	INC	HL
 	LD	B,30
 	CALL	FILL
 	JP	RESET
 HDING	CALL	BETTR3
 	CALL	1C9H
 	LD	HL,DASHES
 	LD	DE,1
 	LD	A,'='
 	LD	B,64
 	CALL	FILL
 	CALL	DISPLY
 	DEFM	'   '
 	DEFB	176
 	DEFB	140
 	DEFB	131
 	DEFB	131
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFM	'   '
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFM	'   '
 	DEFB	176
 	DEFB	140
 	DEFB	131
 	DEFM	'  '
 	DEFB	191
 	DEFB	143
 	DEFB	140
 	DEFB	176
 	DEFM	'   '
 	DEFB	176
 	DEFB	140
 	DEFB	143
 	DEFB	191
 	DEFM	'    '
 	DEFB	176
 	DEFB	140
 	DEFB	131
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFM	'    '
 	DEFB	191
 	DEFB	175
 	DEFB	148
 	DEFM	'    '
 	DEFB	191
 	DEFM	'       '	;END OF ROW 1
 	DEFM	'   '
 	DEFB	131
 	DEFB	143
 	DEFB	176
 	DEFM	'          '
 	DEFB	131
 	DEFB	188
 	DEFB	131
 	DEFM	'     '
 	DEFB	191	;START OF "M"
 	DEFM	'   '
 	DEFB	131
 	DEFB	143
 	DEFB	131
 	DEFM	'   '
 	DEFB	191
 	DEFM	'  '
 	DEFB	188
 	DEFB	131
 	DEFM	'      '	;MIDDLE OF "O"
 	DEFB	131
 	DEFB	188
 	DEFM	'  '
 	DEFB	191
 	DEFM	' '
 	DEFB	143
 	DEFB	180
 	DEFM	'   '
 	DEFB	191
 	DEFM	'       '	;END OF ROW 2
 	DEFM	'      '
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFM	'        '
 	DEFB	191	;"I"
 	DEFM	'      '
 	DEFB	191
 	DEFM	'         '
 	DEFB	191
 	DEFM	'  '
 	DEFB	143
 	DEFB	176
 	DEFM	'      '	;MIDDLE OF "O"
 	DEFB	176
 	DEFB	143
 	DEFM	'  '
 	DEFB	191
 	DEFM	'  '
 	DEFB	130
 	DEFB	173
 	DEFB	144
 	DEFM	' '
 	DEFB	191
 	DEFM	'       '	;END OF ROW 3
 	DEFM	'   '
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFB	176
 	DEFB	188
 	DEFB	140
 	DEFB	131
 	DEFM	'   '
 	DEFM	'    '
 	DEFB	191		;"I"
 	DEFM	'    '
 	DEFM	'  '
 	DEFB	191
 	DEFM	'         '
 	DEFB	191
 	DEFM	'   '
 	DEFB	20H
 	DEFB	131
 	DEFB	140
 	DEFB	176
 	DEFB	176
 	DEFB	140
 	DEFB	131
 	DEFM	'    '
 	DEFB	191
 	DEFM	'    '
 	DEFB	139
 	DEFB	180
 	DEFB	191
 	DEFM	'       '
 DASHES	DEFS	64
 	DEFB	0
 	RET
 BETTR3	LD	A,(BREEZE+2)
 	CP	'e'
 	JP	NZ,0
 	LD	A,(KIM+1)
 	CP	'i'
 	JP	NZ,0
 	RET
 FILL	LD	(HL),A
 	ADD	HL,DE
 	DJNZ	FILL
 	RET
 DISPLY	POP	DE
 DISLP1	LD	HL,(4020H)
 	LD	A,(DE)
 	INC	DE
 	OR	A
 	JR	Z,DISDN
 	CP	20H
 	JR	C,DISCTL
 	LD	(HL),A
 	CP	(HL)
 	JR	Z,DISOK1
 	SUB	20H
 	LD	(HL),A
 DISOK1	INC	HL
 	LD	(4020H),HL
 	JR	DISLP1
 DISCTL	PUSH	DE
 	PUSH	IY
 	CALL	33H
 	POP	IY
 	POP	DE
 	JR	DISLP1
 DISDN	PUSH	DE
 	RET
 CREDIT	CALL	DISPLY
 	DEFM	'Program by '
 KIM	DEFM	'Kim Watt'
 	DEFB	0DH
 	DEFM	'Copyright (C) 1980'
 	DEFB	0DH
 BREEZE	DEFM	'Breeze Computing Inc.'
 	DEFB	0DH
 	DEFM	'P.O. Box '
 AREA	DEFM	'1013'
 	DEFB	0DH
 	DEFM	'Berkley, Mich.  48072'
 	DEFB	0DH
 	DEFB	0
 	RET
 TLEFT	LD	A,1
 	LD	(FLAG1),A
 	LD	HL,15360+64+2
 	CALL	LIGHT
 	LD	HL,15360+384+30
 	LD	DE,-64
 	LD	B,6
 	LD	A,149
 	CALL	FILL
 	LD	(HL),147
 	DEC	HL
 	LD	DE,-1
 	LD	A,179
 	LD	B,28
 	JP	FILL
 BLEFT	LD	A,1
 	LD	(FLAG2),A
 	LD	HL,15360+512+2
 	CALL	LIGHT
 	LD	HL,15360+512+30
 	LD	DE,64
 	LD	B,6
 	LD	A,149
 	CALL	FILL
 	LD	(HL),177
 	DEC	HL
 	LD	A,179
 	LD	B,28
 	LD	DE,-1
 	JP	FILL
 TRIGHT	LD	A,1
 	LD	(FLAG3),A
 	LD	HL,15360+64+34
 	CALL	LIGHT
 	LD	HL,15360+384+33
 	LD	DE,-64
 	LD	B,6
 	LD	A,170
 	CALL	FILL
 	LD	(HL),163
 	INC	HL
 	LD	DE,1
 	LD	A,179
 	LD	B,28
 	JP	FILL
 BRIGHT	LD	A,1
 	LD	(FLAG4),A
 	LD	HL,15360+512+34
 	CALL	LIGHT
 	LD	HL,15360+512+33
 	LD	DE,64
 	LD	B,6
 	LD	A,170
 	CALL	FILL
 	LD	(HL),178
 	INC	HL
 	LD	A,179
 	LD	B,28
 	LD	DE,1
 	JP	FILL
 LIGHT	LD	A,191
 	LD	DE,64
 	LD	B,28
 LILOOP	PUSH	HL
 	LD	(HL),A
 	ADD	HL,DE
 	LD	(HL),A
 	ADD	HL,DE
 	LD	(HL),A
 	ADD	HL,DE
 	LD	(HL),A
 	ADD	HL,DE
 	LD	(HL),A
 	ADD	HL,DE
 	LD	(HL),A
 	POP	HL
 	INC	HL
 	DJNZ	LILOOP
 	RET
 CHKKEY	CALL	BETTR1
 	CALL	NOISY
 	LD	A,(3801H)
 	BIT	1,A
 	JR	NZ,BLFT
 	LD	A,(3802H)
 	BIT	1,A
 	JR	NZ,TLFT
 	BIT	3,A
 	JR	NZ,BLFT
 	BIT	4,A
 	JR	NZ,BRHT
 	BIT	7,A
 	JR	NZ,TRHT
 	LD	A,(3804H)
 	BIT	1,A
 	JR	NZ,TLFT
 	BIT	3,A
 	JR	NZ,BRHT
 	BIT	7,A
 	JR	NZ,TRHT
 	CALL	UNLITE
 	RET
 TLFT	LD	A,(FLAG2)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG3)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG4)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG1)
 	CP	1
 	CALL	NZ,TLEFT
 	JR	CHKKEY
 BLFT	LD	A,(FLAG1)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG3)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG4)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG2)
 	CP	1
 	CALL	NZ,BLEFT
 	JR	CHKKEY
 TRHT	LD	A,(FLAG1)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG2)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG4)
 	OR	A
 	JR	NZ,CHKKEY
 	LD	A,(FLAG3)
 	CP	1
 	CALL	NZ,TRIGHT
 	JP	CHKKEY
 BRHT	LD	A,(FLAG1)
 	OR	A
 	JP	NZ,CHKKEY
 	LD	A,(FLAG2)
 	OR	A
 	JP	NZ,CHKKEY
 	LD	A,(FLAG3)
 	OR	A
 	JP	NZ,CHKKEY
 	LD	A,(FLAG4)
 	CP	1
 	CALL	NZ,BRIGHT
 	JP	CHKKEY
 UNLITE	LD	A,(FLAG1)
 	CP	1
 	CALL	Z,BORDER
 	LD	A,(FLAG2)
 	CP	1
 	CALL	Z,BORDER
 	LD	A,(FLAG3)
 	CP	1
 	CALL	Z,BORDER
 	LD	A,(FLAG4)
 	CP	1
 	CALL	Z,BORDER
 	RET
 NOISY	LD	A,(FLAG1)
 	CP	1
 	JP	Z,NOISE1
 	LD	A,(FLAG2)
 	CP	1
 	JP	Z,NOISE2
 	LD	A,(FLAG3)
 	CP	1
 	JP	Z,NOISE3
 	LD	A,(FLAG4)
 	CP	1
 	JP	Z,NOISE4
 	RET
 LOWER	LD	HL,3C00H
 	LD	DE,3C01H
 	LD	BC,959
 	LD	(HL),32
 	LDIR
 	RET
 RAZZ	CALL	SEE2
 	LD	BC,120H
 	LD	E,0FFH
 	CALL	SOUND
 	CALL	UNLITE
 	RET
 NOISE1	LD	BC,097H
 	LD	E,8
 	JR	SOUND
 NOISE2	LD	BC,59H
 	LD	E,16
 	JR	SOUND
 NOISE3	LD	BC,6FH
 	LD	E,13
 	JR	SOUND
 NOISE5	LD	BC,60H
 	LD	E,40
 	JR	SOUND
 NOISE4	LD	BC,4BH
 	LD	E,20
 SOUND	DI
 	PUSH	DE
 	PUSH	BC
 	LD	A,1
 	OUT	(0FFH),A
 SNLP1	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,SNLP1
 	POP	BC
 	PUSH	BC
 	LD	A,2
 	OUT	(0FFH),A
 SNLP2	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,SNLP2
 	POP	BC
 	POP	DE
 	DEC	E
 	JR	NZ,SOUND
 	RET
 RANDOM	LD	IX,TABLE
 	LD	B,0FFH
 RNLOOP	LD	A,R
 	LD	L,A
 	LD	A,R
 	AND	7FH
 	LD	H,A
 	LD	A,(HL)
 	LD	L,A
 	INC	HL
 	LD	A,(HL)
 	XOR	L
 	AND	3
 	LD	(IX),A
 	INC	IX
 	DJNZ	RNLOOP
 	LD	IX,TABLE
 	XOR	A
 	LD	(NUMBER),A
 	RET
 DELAY	LD	A,(DLY)
 	LD	BC,1000H
 	CP	6
 	JR	C,DELOK
 	LD	BC,0A00H
 	CP	10
 	JR	C,DELOK
 	LD	BC,800H
 	CP	14
 	JR	C,DELOK
 	LD	BC,500H
 DELOK	PUSH	BC
 	CALL	NOISY
 	POP	BC
 	DJNZ	DELOK
 	RET
 SLOW	LD	A,(NUMBER)
 	LD	BC,3000H
 	CP	6
 	JR	C,SLOWOK
 	LD	BC,2000H
 	CP	10
 	JR	C,SLOWOK
 	LD	BC,1800H
 	CP	14
 	JR	C,SLOWOK
 	LD	BC,1000H
 SLOWOK	CALL	60H
 	RET
 BETTR4	LD	A,(KIM+4)
 	CP	'W'
 	JP	NZ,0
 	LD	A,(BREEZE+4)
 	CP	'z'
 	JP	NZ,0
 	RET
 PLAY	LD	A,B
 	LD	(NUMBER),A
 	LD	(DLY),A
 PLAY1	PUSH	BC
 	CALL	SEEIT
 	CALL	DELAY
 	CALL	UNLITE
 	CALL	SLOW
 	INC	IX
 	POP	BC
 	DJNZ	PLAY1
 	RET
 SEEIT	LD	A,(IX)
 SEE2	OR	A
 	PUSH	AF
 	CALL	Z,TLEFT
 	POP	AF
 	PUSH	AF
 	CP	1
 	CALL	Z,BLEFT
 	POP	AF
 	PUSH	AF
 	CP	2
 	CALL	Z,TRIGHT
 	POP	AF
 	CP	3
 	CALL	Z,BRIGHT
 	RET
 ENTRY	DI
 	CALL	BETTR2
 	LD	SP,6F00H
 	CALL	1C9H
 	CALL	HDING
 	LD	HL,15360+448
 	LD	(4020H),HL
 	CALL	CREDIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Do you need instructions ? '
 	DEFB	0
 	LD	HL,BUFFER
 	LD	B,1
 	CALL	40H
 	LD	A,(HL)
 	CP	'Y'
 	JP	Z,INSTRU
 	CP	'N'
 	JP	NZ,ENTRY
 START	LD	SP,6F00H
 	CALL	ISBEST
 	JR	PAST1
 ISBEST	LD	A,(LENGTH)
 	LD	B,A
 	LD	A,(NUMBER)
 	OR	A
 	JR	Z,PAST1
 	CP	B
 	JR	C,PAST1
 	JR	Z,PAST1
 	LD	HL,TABLE
 	LD	DE,LONG
 	LD	BC,0FFH
 	LDIR
 	LD	A,(NUMBER)
 	LD	(LENGTH),A
 	RET
 PAST1	CALL	1C9H
 	CALL	DISPLY
 	DEFM	'- The game of SYMON by Breeze Computing -'
 	DEFW	0D0DH
 	DEFM	'<L>ast sequence, <B>est sequence, <N>ew game ? '
 	DEFB	0
 	LD	HL,BUFFER
 	LD	B,1
 	CALL	40H
 	LD	A,(HL)
 	CP	'L'
 	JP	Z,LAST
 	CP	'B'
 	JP	Z,BEST
 	CP	'N'
 	JP	NZ,PAST1
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Select game (1-3) '
 	DEFB	0
 	LD	HL,BUFFER
 	LD	B,1
 	CALL	40H
 	LD	A,(HL)
 	CP	31H
 	JP	Z,GAME1
 	CP	32H
 	JP	Z,GAME2
 	CP	33H
 	JP	NZ,PAST1
 	JP	GAME3
 GAME2	LD	A,0FFH
 	LD	(SKILL),A
 	CALL	BORDER
 	CALL	RANDOM
 	LD	A,1
 	LD	(NUMBER),A
 	LD	B,A
 	CALL	PLAY
 GAM2LP	CALL	NEWKEY
 	LD	HL,NUMBER
 	INC	(HL)
 	CALL	SHOW
 	JR	GAM2LP
 NEWKEY	CALL	GETKEY
 	CALL	NEXKEY
 	RET
 NEXKEY	CALL	BORDER
 	LD	E,1
 	LD	BC,6000H
 GETLP2	PUSH	DE
 	PUSH	BC
 	CALL	KEY
 	POP	BC
 	POP	DE
 	JR	NZ,HAVE2
 	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,GETLP2
 	DEC	E
 	JR	NZ,GETLP2
 	LD	A,(IX)
 	JP	BAD1
 HAVE2	LD	A,(PRESS)
 	LD	(IX),A
 	CALL	CHKKEY
 	RET
 LAST	LD	A,(NUMBER)
 	OR	A
 	JP	Z,PAST1
 	LD	B,A
 	PUSH	BC
 	LD	IX,TABLE
 	CALL	BORDER
 	LD	HL,15360+960
 	LD	(4020H),HL
 	LD	A,(NUMBER)
 	CALL	ASCII
 	LD	(STR1),BC
 	CALL	DISPLY
 	DEFM	'Number of signals in last sequence was '
 STR1	DEFM	'00.'
 	DEFB	0
 LAST1	POP	BC
 	LD	A,9
 	LD	(DLY),A
 	CALL	PLAY1
 	JP	PAST1
 BEST	LD	A,(LENGTH)
 	OR	A
 	JP	Z,START
 	LD	B,A
 	PUSH	BC
 	CALL	BORDER
 	LD	IX,LONG
 	LD	HL,15360+960
 	LD	(4020H),HL
 	LD	A,(LENGTH)
 	CALL	ASCII
 	LD	(STR2),BC
 	CALL	DISPLY
 	DEFM	'Number of signals in best sequence was '
 STR2	DEFM	'00.'
 	DEFB	0
 	JR	LAST1
 INSTRU	LD	HL,15360+320
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	31
 	DEFM	'This is a memory game.  On your monitor will appear 4 boxes.'
 	DEFB	0DH
 	DEFM	'There are two sets of keys that correspond to these boxes.'
 	DEFB	0DH
 	DEFM	'          Q   W                          I   O'
 	DEFB	0DH
 	DEFM	'          A   S                          K   L'
 	DEFB	0DH
 	DEFM	'The "W" and the "O" keys both refer to the top right box, etc.'
 	DEFB	0DH
 	DEFM	'Either one of these keys may be used interchangeably.'
 	DEFB	0DH
 	DEFM	'When you press one of these keys, the appropriate box will'
 	DEFB	0DH
 	DEFM	'light up and a sound will be heard.  The sound is different for'
 	DEFB	0DH
 	DEFM	'each box.  Press <ENTER> to continue !'
 	DEFB	0
 	CALL	ENTRWT
 	LD	HL,15360+320
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	31
 	DEFM	'Game 1:  The computer will light up the first box.  Repeat the'
 	DEFB	0DH
 	DEFM	'signal by pressing the corresponding key.  The computer will'
 	DEFB	0DH
 	DEFM	'then duplicate the first signal and add one more.  Repeat these'
 	DEFB	0DH
 	DEFM	'two signals by pressing the appropriate keys in the same order.'
 	DEFB	0DH
 	DEFM	'Continue in this manner as long as you can repeat the signals.'
 	DEFB	0DH
 	DEFM	'When you make a mistake, the computer will respond with a razz.'
 	DEFB	0DH
 	DEFM	'After the 5th, 9th, and 13th signals, the computer will'
 	DEFB	0DH
 	DEFM	'increase the tempo.  Press <ENTER> to continue !'
 	DEFB	0
 	CALL	ENTRWT
 	LD	HL,15360+320
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	31
 	DEFM	'Game 2:  The computer will play one signal.  Repeat the signal'
 	DEFB	0DH
 	DEFM	'and add one more.  Repeat the first two signals and add'
 	DEFB	0DH
 	DEFM	'one more.  Continue repeating the signals and increasing the'
 	DEFB	0DH
 	DEFM	'signals by one for as long as you can.  If you make a mistake,'
 	DEFB	0DH
 	DEFM	'or take more than 5 seconds to respond, you will hear the "RAZZ"'
 	DEFM	'sound and the game will be terminated.  <ENTER> to continue !'
 	DEFB	0
 	CALL	ENTRWT
 	LD	HL,15360+320
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	31
 	DEFM	'Game 3:  Each player will be assigned a box to be used during'
 	DEFB	0DH
 	DEFM	'the play of the game.  The computer will give the first signal.'
 	DEFB	0DH
 	DEFM	'The player operating that box will repeat the signal.  Play'
 	DEFB	0DH
 	DEFM	'continues as in game 1 except that each person pushes only their'
 	DEFM	'own box in the proper sequence.  If you push your box out'
 	DEFB	0DH
 	DEFM	'of sequence, or take more than 5 seconds to respond, the'
 	DEFB	0DH
 	DEFM	'computer will respond with a "RAZZ" and your box will be'
 	DEFB	0DH
 	DEFM	'eliminated from the game.  The computer will automatically begin'
 	DEFM	'a new game with the remaining boxes.  The last player to be'
 	DEFB	0DH
 	DEFM	'eliminated is the winner.  Press <ENTER> to continue !'
 	DEFB	0
 	CALL	ENTRWT
 	LD	HL,15360+320
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	31
 	DEFM	'Before each game begins, you will be given 3 options:'
 	DEFB	0DH
 	DEFM	'LAST - will repeat the last sequence.'
 	DEFB	0DH
 	DEFM	'BEST - will repeat the longest sequence.'
 	DEFB	0DH
 	DEFM	'NEW  - will begin a new game.'
 	DEFW	0D0DH
 	DEFM	'When you are repeating a sequence, you may press the keys as'
 	DEFB	0DH
 	DEFM	'fast or as slow as you like, and the key may be held down for'
 	DEFB	0DH
 	DEFM	'any length of time.  However, you must respond to each signal'
 	DEFB	0DH
 	DEFM	'within 5 seconds or you will hear the "RAZZ".  The tempo will'
 	DEFB	0DH
 	DEFM	'automatically increase after the 5th, 9th, and 13th signals.'
 	DEFB	0DH
 	DEFM	'Press <ENTER> to begin the game !'
 	DEFB	0
 	CALL	ENTRWT
 	JP	START
 ENTRWT	LD	BC,0
 	CALL	60H
 ENTWT	LD	A,(3840H)
 	BIT	0,A
 	JR	Z,ENTWT
 	RET
 GAME1	CALL	GETSKL
 	JR	OVER1
 GETSKL	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter skill level (1-4) '
 	DEFB	0
 	LD	HL,BUFFER
 	LD	B,1
 	CALL	40H
 	LD	A,(HL)
 	SUB	30H
 	JR	C,GAME1
 	CP	5
 	JR	NC,GAME1
 	LD	B,8
 	CP	1
 	JR	Z,FOUND
 	LD	B,14
 	CP	2
 	JR	Z,FOUND
 	LD	B,21
 	CP	3
 	JR	Z,FOUND
 	LD	B,0FFH
 FOUND	LD	A,B
 	LD	(SKILL),A
 	RET
 OVER1	CALL	RANDOM
 	CALL	BORDER
 	LD	A,1
 	LD	(NUMBER),A
 GAM1LP	LD	A,(NUMBER)
 	LD	B,A
 	LD	IX,TABLE
 	CALL	PLAY
 	CALL	GETKEY
 	CALL	SHOW
 	JR	OVER4
 SHOW	LD	A,(NUMBER)
 	CALL	ASCII
 	LD	(STRING),BC
 	LD	HL,15360+960
 	LD	(4020H),HL
 	LD	A,(LENGTH)
 PAST2	CALL	ASCII
 	LD	(STR3),BC
 	CALL	DISPLY
 	DEFM	'Number of correct responses: '
 STRING	DEFM	'00.   Longest sequence so far: '
 STR3	DEFM	'00.'
 	DEFB	0
 	RET
 OVER4	LD	BC,0
 	CALL	60H
 	LD	BC,8000H
 	CALL	60H
 	LD	A,(SKILL)
 	LD	B,A
 	LD	A,(NUMBER)
 	CP	B
 	JP	Z,WIN
 	LD	HL,NUMBER
 	INC	(HL)
 	JP	GAM1LP
 SKILL	DEFB	0
 GETKEY	LD	IX,TABLE
 	LD	A,(NUMBER)
 	LD	(MANY),A
 LOOP11	LD	E,1
 	LD	BC,6000H
 GETLP	PUSH	DE
 	PUSH	BC
 	CALL	KEY
 	POP	BC
 	POP	DE
 	JR	NZ,HAVEIT
 	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,GETLP
 	DEC	E
 	JR	NZ,GETLP
 	LD	A,(IX)
 BAD1	CALL	RAZZ
 	JP	START
 HAVEIT	LD	A,(PRESS)
 	LD	B,A
 	LD	A,(IX)
 	CP	B
 	LD	A,(PRESS)
 	JR	NZ,BAD1
 	CALL	CHKKEY
 	INC	IX
 	LD	A,(MANY)
 	DEC	A
 	LD	(MANY),A
 	JR	NZ,LOOP11
 	RET
 MANY	DEFB	0
 NUMBER	DEFB	0
 KEY	LD	B,0
 	LD	A,(3802H)
 	BIT	1,A
 	JR	NZ,ITSIT
 	LD	A,(3804H)
 	BIT	1,A
 	JR	NZ,ITSIT
 	LD	B,1
 	LD	A,(3801H)
 	BIT	1,A
 	JR	NZ,ITSIT
 	LD	A,(3802H)
 	BIT	3,A
 	JR	NZ,ITSIT
 	LD	B,2
 	LD	A,(3802H)
 	BIT	7,A
 	JR	NZ,ITSIT
 	LD	A,(3804H)
 	BIT	7,A
 	JR	NZ,ITSIT
 	LD	B,3
 	LD	A,(3802H)
 	BIT	4,A
 	JR	NZ,ITSIT
 	LD	A,(3804H)
 	BIT	3,A
 	JR	NZ,ITSIT
 	XOR	A
 	RET
 ITSIT	LD	A,B
 	LD	(PRESS),A
 	LD	A,1
 	OR	A
 	RET
 WIN	LD	HL,15360+960
 	LD	(4020H),HL
 	CALL	DISPLY
 	DEFB	30
 	DEFM	' WINNER !     WINNER !     WINNER !     WINNER !     WINNER !'
 	DEFB	0
 	LD	B,10
 WINLP	PUSH	BC
 	CALL	NOISE5
 	LD	BC,0A00H
 	CALL	60H
 	POP	BC
 	DJNZ	WINLP
 	JP	START
 ASCII	LD	C,30H
 ASCII1	SUB	0AH
 	JR	C,ASCII2
 	INC	C
 	JR	ASCII1
 ASCII2	ADD	A,3AH
 	LD	B,A
 	RET
 LENGTH	DEFB	0
 LONG	DEFS	100H
 TABLE	DEFS	100H
 PRESS	DEFB	0
 BUFFER	DEFS	10
 RANDO	LD	A,R
 	AND	3
 	LD	(IX),A
 	JR	RN2LP
 RAND2	CALL	RANDOM
 	LD	C,0FFH
 RN2LP	LD	A,(IX)
 	OR	A
 	JR	Z,R1
 	CP	1
 	JR	Z,R2
 	CP	2
 	JR	Z,R3
 	LD	A,(FLAG44)
 	OR	A
 	JR	NZ,RANDO
 	JR	RNNEXT
 R1	LD	A,(FLAG11)
 	OR	A
 	JR	NZ,RANDO
 	JR	RNNEXT
 R2	LD	A,(FLAG22)
 	OR	A
 	JR	NZ,RANDO
 	JR	RNNEXT
 R3	LD	A,(FLAG33)
 	OR	A
 	JR	NZ,RANDO
 RNNEXT	INC	IX
 	DEC	C
 	JR	NZ,RN2LP
 	LD	A,1
 	LD	(NUMBER),A
 	LD	IX,TABLE
 	RET
 GAME3	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Player 1 uses the top left box.  Player 2 uses the bottom left.'
 	DEFB	0DH
 	DEFM	'Player 3 uses the top right.  Player 4 uses the bottom right.'
 	DEFW	0D0DH
 	DEFM	'How many players (2-4) ? '
 	DEFB	0
 	LD	B,1
 	LD	HL,BUFFER
 	CALL	40H
 	LD	A,(HL)
 	SUB	30H
 	JP	C,GAME3
 	CP	2
 	JP	C,GAME3
 	CP	5
 	JP	NC,GAME3
 	LD	B,A
 	LD	HL,FLAG11
 	XOR	A
 GM3LP	LD	(HL),A
 	INC	HL
 	DJNZ	GM3LP
 	LD	B,4
 	LD	A,1
 GAM3LP	LD	(HL),A
 	INC	HL
 	DJNZ	GAM3LP
 	CALL	BORDER
 	LD	A,0FFH
 	LD	(SKILL),A
 	CALL	RAND2
 	LD	A,1
 	LD	(NUMBER),A
 HEREIS	LD	A,(NUMBER)
 	LD	B,A
 	LD	IX,TABLE
 	CALL	PLAY
 	LD	IX,TABLE
 	CALL	BKEY
 	CALL	SHOW
 	LD	BC,0
 	CALL	60H
 	LD	BC,8000H
 	CALL	60H
 	LD	A,(SKILL)
 	LD	B,A
 	LD	A,(NUMBER)
 	CP	B
 	JP	Z,WIN
 	LD	HL,NUMBER
 	INC	(HL)
 	JP	HEREIS
 BKEY	LD	A,(NUMBER)
 	LD	(MANY),A
 AKEY	LD	E,1
 	LD	BC,6000H
 GET3LP	PUSH	DE
 	PUSH	BC
 	CALL	KEY
 	POP	BC
 	POP	DE
 	JR	NZ,HAVE3
 	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,GET3LP
 	DEC	E
 	JR	NZ,GET3LP
 	LD	A,(IX)
 	JP	NOGOOD
 HAVE3	LD	A,(PRESS)
 	LD	E,A
 	LD	D,0
 	LD	HL,FLAG11
 	ADD	HL,DE
 	LD	A,(HL)
 	OR	A
 	JR	NZ,AKEY
 	LD	A,(PRESS)
 	LD	B,A
 	LD	A,(IX)
 	CP	B
 	JR	NZ,NOBAD
 	CALL	CHKKEY
 	INC	IX
 	LD	A,(MANY)
 	DEC	A
 	LD	(MANY),A
 	JP	NZ,AKEY
 	RET
 NOBAD	LD	A,(PRESS)
 	JR	OVERZ
 NOGOOD	LD	A,(IX)
 OVERZ	LD	E,A
 	PUSH	DE
 	LD	D,0
 	LD	HL,FLAG11
 	LD	A,1
 	ADD	HL,DE
 	LD	(HL),A
 	POP	DE
 	LD	A,E
 	CALL	RAZZ
 	CALL	BESTIS
 	LD	C,0
 	LD	HL,FLAG11
 	LD	B,4
 TSTLP	LD	A,(HL)
 	INC	HL
 	OR	A
 	JR	NZ,TESOV
 	INC	C
 TESOV	DJNZ	TSTLP
 	LD	A,C
 	CP	2
 	JP	C,WINNER
 	LD	BC,0
 	CALL	60H
 	CALL	RAND2
 	LD	A,1
 	LD	(NUMBER),A
 	JP	HEREIS
 WINNER	CALL	BORDER
 	LD	A,(FLAG11)
 	OR	A
 	JR	Z,WIN0
 	LD	A,(FLAG22)
 	OR	A
 	JR	Z,WIN1
 	LD	A,(FLAG33)
 	OR	A
 	JR	Z,WIN2
 	CALL	BRIGHT
 	JP	WIN
 WIN0	CALL	TLEFT
 	JP	WIN
 WIN1	CALL	BLEFT
 	JP	WIN
 WIN2	CALL	TRIGHT
 	JP	WIN
 FLAG11	DEFB	0
 FLAG22	DEFB	0
 FLAG33	DEFB	0
 FLAG44	DEFB	0
 	DEFS	4
 BESTIS	LD	A,(LENGTH)
 	LD	B,A
 	LD	A,(NUMBER)
 	OR	A
 	JR	Z,PASTM
 	CP	B
 	JR	C,PASTM
 	JR	Z,PASTM
 	LD	HL,TABLE
 	LD	DE,LONG
 	LD	BC,0FFH
 	LDIR
 	LD	A,(NUMBER)
 	LD	(LENGTH),A
 PASTM	RET
 BETTR1	LD	A,(KIM)
 	CP	'K'
 	JP	NZ,0
 	LD	A,(BREEZE)
 	CP	'B'
 	JP	NZ,0
 	LD	A,(AREA)
 	CP	'1'
 	JP	NZ,0
 	RET
 BETTR2	LD	A,(KIM+2)
 	CP	'm'
 	JP	NZ,0
 	RET
 	END	ENTRY
PASTM	RET
 BETTR1	LD	A,(KIM)
 	CP	'K'
 	JP	NZ,0
 	LD	A,(BREEZE)
 	CP	'B'