CAPTUR ;NOTE: This is the final version of capture as of
 ;May 1st, 1980   4:18 PM.  This is version 3.2
 ;written in machine language by D.A.G.!
 ;DO NOT COPY!! DO NOT COPY!! DO NOT COPY!! DO NOT COPY!!
 ;
 ;This program will run under any level II TRS-80.
 ;
 	ORG	8000H
 	DI
 DELAY	EQU	60H
 CHROUT	EQU	33H
 INCHR	EQU	49H
 INKEY	EQU	2BH
 START	CALL	CLS
 	LD	HL,INSTR
 	CALL	PRINTM
 GET1	CALL	INCHR
 	CP	30H
 	JP	M,GET1
 	CP	3AH
 	JP	P,GET1
 	PUSH	AF
 	CALL	CLS
 	POP	AF
 GET111	AND	0FH
 	LD	(SPEED),A
 BEGIN	JP	REINIT
 CONT	LD	HL,0
 	LD	DE,(X1)
 	LD	IX,X1
 	CALL	GRAFIT
 	LD	HL,0
 	LD	DE,(X2)
 	LD	IX,X2
 	CALL	GRAFIT
 	LD	BC,(SPEED)
 	INC	BC
 	LD	B,C
 LOOK10	LD	A,(3802H)
 	OR	A
 	JR	Z,LOOK20
 	BIT	1,A
 	JR	Z,LOOK11
 P1UP	LD	HL,0FF00H
 	LD	(DISPX1),HL
 	JR	LOOK20
 LOOK11	BIT	2,A
 	JR	Z,LOOK12
 P1LEFT	LD	HL,00FEH
 	LD	(DISPX1),HL
 	JR	LOOK20
 LOOK12	BIT	3,A
 	JR	Z,LOOK13
 P1RGHT	LD	HL,0002H
 	LD	(DISPX1),HL
 	JR	LOOK20
 LOOK13	BIT	5,A
 	JR	Z,LOOK20
 P1DOWN	LD	HL,0100H
 	LD	(DISPX1),HL
 LOOK20	LD	A,(3804H)
 	BIT	7,A
 	JR	Z,LOOK21
 P2UP	LD	HL,0FF00H
 	LD	(DISPX2),HL
 	JR	CONT50
 LOOK21	BIT	3,A
 	JR	Z,LOOK22
 P2RGHT	LD	HL,0002H
 	LD	(DISPX2),HL
 	JR	CONT50
 LOOK22	LD	A,(3801H)
 	BIT	1,A
 	JR	Z,LOOK23
 P2LEFT	LD	HL,00FEH
 	LD	(DISPX2),HL
 	JR	CONT50
 LOOK23	LD	A,(3808H)
 	BIT	2,A
 	JR	Z,CONT50
 P2DOWN	LD	HL,0100H
 	LD	(DISPX2),HL
 CONT50	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,LOOK10
 	LD	HL,(DISPX1)
 	LD	DE,(X1)
 	LD	IX,X1
 	CALL	GRAFIT
 	JP	NZ,LOSER1
 	LD	HL,(DISPX2)
 	LD	DE,(X2)
 	LD	IX,X2
 	CALL	GRAFIT
 	JP	NZ,LOSER2
 	JP	CONT
 GRAFIT	LD	A,H
 	ADD	A,D
 	LD	H,A
 	LD	A,L
 	ADD	A,E
 	LD	L,A
 	LD	(TEMP),HL
 	LD	A,(3840H)
 	CP	70
 	JP	Z,4400H
 	LD	DE,(TEMP)
 	CALL	TEST
 	RET	NZ
 	LD	HL,(TEMP)
 	LD	(IX),L
 	INC	IX
 	LD	(IX),H
 	PUSH	HL
 	PUSH	HL
 	POP	DE
 	CALL	SET
 	POP	DE
 	LD	A,E
 	INC	A
 	LD	E,A
 	CALL	SET
 	XOR	A
 	RET
 TEMP	DEFW	0
 SPEED	DEFB	0
 SCORE1	DEFW	0
 SCORE2	DEFW	0
 X1	DEFB	84
 Y1	DEFB	1AH
 X2	DEFB	42
 Y2	DEFB	1AH
 DISPX1	DEFB	0FEH
 DISPY1	DEFB	0
 DISPX2	DEFB	02
 DISPY2	DEFB	0
 LOSER1	LD	HL,(SCORE2)
 	INC	HL
 	LD	(SCORE2),HL
 	LD	A,31H
 	LD	(PNUM),A
 	JR	SHAKE
 LOSER2	LD	HL,(SCORE1)
 	INC	HL
 	LD	(SCORE1),HL
 	LD	A,32H
 	LD	(PNUM),A
 SHAKE	LD	BC,0
 	CALL	DELAY
 	LD	B,10
 SHAKE2	LD	A,8
 	OUT	(0FFH),A
 	PUSH BC
 	LD	BC,2000
 	CALL	DELAY
 	XOR	A
 	OUT	(0FFH),A
 	LD	BC,2000
 	CALL	DELAY
 	POP	BC
 	DJNZ	SHAKE2
 LOSER3	LD	BC,0
 	CALL	DELAY
 	LD	BC,0
 	CALL	DELAY
 	LD	BC,0
 	CALL	DELAY
 	CALL	BORDER
 TRYAGN	LD	DE,465
 	CALL	SETCUR
 	LD	HL,WINNER
 	CALL	PRINTM
 	LD	DE,530
 	CALL	SETCUR
 	LD	HL,QAGAIN
 	CALL	PRINTM
 	LD	DE,658
 	CALL	SETCUR
 	LD	HL,QA2
 	CALL	PRINTM
 	LD	DE,731
 	CALL	SETCUR
 	LD	HL,QA3
 	CALL	PRINTM
 	LD	DE,795
 	CALL	SETCUR
 	LD	HL,QA4
 	CALL	PRINTM
 	LD	DE,859
 	CALL	SETCUR
 	LD	HL,QA5
 	CALL	PRINTM
 GET2	CALL	INCHR
 	CP	59H
 	JR	Z,REINIT
 	CP	4EH
 	JR	Z,NOMORE
 	CP	52H
 	JR	Z,RESCOR
 	CP	30H
 	JR	C,GET2
 	CP	3AH
 	JR	NC,GET2
 	JP	GET111
 RESCOR	LD	HL,0
 	LD	(SCORE1),HL
 	LD	(SCORE2),HL
 	CALL	BRDR1
 	JR	TRYAGN
 NOMORE	CALL	CLS
 	JP	0
 REINIT	LD	HL,1A54H
 	LD	(X1),HL
 	LD	L,2AH
 	LD	(X2),HL
 	LD	HL,0FEH
 	LD	(DISPX1),HL
 	LD	HL,02
 	LD	(DISPX2),HL
 	CALL	BORDER
 	LD	DE,475
 	CALL	SETCUR
 	LD	HL,GETRDY
 	CALL	PRINTM
 	LD	BC,0
 	CALL	DELAY
 	LD	DE,475
 	CALL	SETCUR
 	LD	HL,GETSET
 	CALL	PRINTM
 	LD	BC,0
 	CALL	DELAY
 	LD	DE,475
 	CALL	SETCUR
 	LD	HL,GO
 	CALL	PRINTM
 	LD	BC,8000H
 	CALL	DELAY
 	LD	DE,475
 	CALL	SETCUR
 	LD	HL,CLEAR
 	CALL	PRINTM
 	JP	CONT
 WINNER	DEFM	'Player number '
 PNUM	DEFM	'0 has just won!!'
 	DEFB	0
 QAGAIN	DEFM	'Would you like to try again?'
 	DEFB	0
 QA2	DEFM	'Options: "Y" to play again.'
 	DEFB	0
 QA3	DEFM	'"N" to quit.'
 	DEFB	0
 QA4	DEFM	'"R" to reset scores to 0'
 	DEFB	0
 QA5	DEFM	'0-9 to choose a new speed'
 	DEFB	0
 CLS	LD	A,28
 	CALL	CHROUT
 	LD	A,31
 	CALL	CHROUT
 	RET
 SETCUR	LD	HL,3C00H
 	ADD	HL,DE
 	LD	(4020H),HL
 	RET
 GETRDY	DEFM	'GET READY!!'
 	DEFB	0
 GETSET	DEFM	'GET SET!!!!'
 	DEFB	0
 GO	DEFM	'GO! GO! GO!'
 	DEFB	0
 CLEAR	DEFM	'           '
 	DEFB	0
 PRINTM	LD	A,(HL)
 	CP	0
 	RET	Z
 	CALL	CHROUT
 	CP	0DH
 	RET	Z
 	INC	HL
 	JR	PRINTM
 	CALL	CLS
 BORDER	CALL	BRDR1
 	JR	BRDR2
 BRDR1	LD	DE,0
 	CALL	SETCUR
 	LD	HL,MTITLE
 	CALL	PRINTM
 	LD	HL,(SCORE2)
 	LD	IX,3C16H
 	CALL	CONVRT
 	LD	HL,(SCORE1)
 	LD	IX,3C30H
 	CALL	CONVRT
 	RET
 BRDR2	LD	B,0DH
 	LD	DE,128
 	CALL	SETCUR
 LOOP99	LD	HL,SBORDR
 	CALL	PRINTM
 	DJNZ	LOOP99
 	LD	HL,3C42H
 	LD	DE,3C43H
 	LD	BC,3DH
 	LD	(HL),8FH
 	LDIR
 	LD	HL,3FC1H
 	LD	DE,3FC2H
 	LD	BC,3EH
 	LD	(HL),0FCH
 	LDIR
 	LD	A,0FFH
 	LD	(3C40H),A
 	LD	(3C7FH),A
 	LD	(3FC0H),A
 	LD	(3FFFH),A
 	LD	(3C7EH),A
 	LD	(3FBFH),A
 	LD	(3FFEH),A
 	LD	(3C41H),A
 	LD	(3FC1H),A
 	RET
 CONVRT	LD	IY,P10TAB
 LOOP30	XOR	A
 	LD	E,(IY)
 	LD	D,(IY+1)
 LOOP31	OR	A
 	SBC	HL,DE
 	JP	M,JUMP31
 	INC	A
 	JR	LOOP31
 JUMP31	ADD	HL,DE
 	ADD	A,30H
 	LD	(IX),A
 	INC	IX
 	INC	IY
 	INC	IY
 	LD	A,1
 	CP	E
 	JR	NZ,LOOP30
 	RET
 P10TAB	DEFW	10000
 	DEFW	1000
 	DEFW	100
 	DEFW	10
 	DEFW	1
 SET	LD	A,0C6H
 	JR	TEST10
 RESET	LD	A,86H
 	JR	TEST10
 TEST	LD	A,46H
 TEST10	LD	(INST+1),A
 ADDRES	LD	A,D
 	LD	B,0FFH
 LOOP	INC	B
 	SUB	3
 	JP	P,LOOP
 	ADD	A,3
 	SLA	A
 	LD	C,A
 	LD	L,B
 	LD	H,0
 	LD	B,6
 LOOP1	ADD	HL,HL
 	DJNZ	LOOP1
 	LD	D,0
 	SRL	E
 	JR	NC,CONTIN
 	INC	C
 CONTIN	ADD	HL,DE
 	LD	DE,3C00H
 	ADD	HL,DE
 	LD	A,(HL)
 	CP	80H
 	JP	P,SET2
 	LD	(HL),80H
 SET2	SLA	C
 	SLA	C
 	SLA	C
 	LD	A,(INST+1)
 	ADD	A,C
 	LD	(INST+1),A
 INST	DEFB	0CBH
 	DEFB	0
 	RET
 SBORDR	DEFW	0BFBFH
 	DEFM	'                                                            '
 	DEFW	0BFBFH
 	DEFB	00
 MTITLE	DEFM	'SCORE #=#= >>>  LEFT:         CAPTURE    RIGHT:         <<< =#=#'
 	DEFB	0
 INSTR	DEFM	'This is the game of capture.  Each '
 	DEFM	'player will steer his/her ownline '
 	DEFM	'around the screen.  A player loses '
 	DEFM	'when his line hits some-thing white '
 	DEFM	'(including the walls, the other player'
 	DEFM	' or his self!)There will be '
 	DEFM	'two (2) players, one on the left '
 	DEFM	'and one on the   right.  The steering'
 	DEFM	' works as follows:'
 	DEFW	0A0AH
 	DEFM	'LEFT PLAYER            RIGHT PLAYER'
 	DEFB	0AH
 	DEFM	'    W                       I'
 	DEFB	0AH
 	DEFM	'  A   S                   J   K'
 	DEFB	0AH
 	DEFM	'    Z                       M'
 	DEFW	0A0AH
 	DEFM	'To change direction, all a player '
 	DEFM	'must do is press the letter   corres'
 	DEFM	'ponding to the new desired direction.'
 	DEFW	0A0AH
 ZZZZZZ	DEFM	'Enter speed factor 0-9 (0=Fast,9=Slow)'
 	DEFB	0
 	END	START
 	DEFM	'To change direction, all a player '
 	DEFM	'must do is press the letter   corres'
 	DEFM	'ponding to the new desired direction.'
 	DEFW	0A0AH
 ZZZZZZ	DEFM	'Enter speed factor 0-9 (