*STRIKE FORCE - COPYRIGHT 1984 BY JEFFREY STANTON
*PART I SCROLLING GAME
	ORG	$4000
***	TF	"D:SCROLL.OBJ"
*ZERO PAGE EQUATES
SHPL	EQU	$F0
SHPH	EQU	$F1
SHPML	EQU	$F2
SHPMH	EQU	$F3
SHPM0L	EQU	$F4
SHPM0H	EQU	$F5
GROUNL	EQU	$F6
GROUNH	EQU	$F7
VALUEL	EQU	$F8
VALUEH	EQU	$F9
BLOCKL	EQU	$FA
BLOCKH	EQU	$FB
PMADR	EQU	$FC
CHSET	EQU	$FC
CHADR	EQU	$FE
E1L	EQU	$F8
E1H	EQU	$F9
E2L	EQU	$FA
E2H	EQU	$FB
MBZL	EQU	$F6
MBZH	EQU	$F7
*LOCATION EQUATES
SCREEN	EQU	$7000		;ADR. OF MAP
INFO	EQU	$6900
NDLIST	EQU	$9400		;ADR OF NEW DISPLAY LIST
CHRSET	EQU	$9000		;ADR OF CHARACTER SET
*PLAYER MISSILE EQUATES
PMBASE	EQU	$D407
PDATA	EQU	$8800
GRACTL	EQU	$D01D
DMACTL	EQU	$22F
SIZEM	EQU	$D00C
SIZEP0	EQU	$D008
PCOLR0	EQU	$2C0
PCOLR1	EQU	$2C1
PCOLR2	EQU	$2C2
PCOLR3	EQU	$2C3
HPOSP0	EQU	$D000
HPOSP1	EQU	$D001
HPOSP2	EQU	$D002
HPOSP3	EQU	$D003
HPOSM0	EQU	$D004
HPOSM1	EQU	$D005
HPOSM2	EQU	$D006
HPOSM3	EQU	$D007
*COLLISIONS
M0PF	EQU	$D000
P0PF	EQU	$D004
P1PF	EQU	$D005
P2PF	EQU	$D006
P3PF	EQU	$D007
M0PL	EQU	$D008
M1PL	EQU	$D009
M2PL	EQU	$D00A
P0PL	EQU	$D00C
HITCLR	EQU	$D01E
*MISC EQUATES
SETVBK	EQU	$E45C
XITVBK	EQU	$E462
STICK	EQU	$278
STRIG0	EQU	$284
CONSOL	EQU	$D01F
CHBASE	EQU	$D409
HSCROL	EQU	$D404
WSYNC	EQU	$D40A
RANDOM	EQU	$D20A
COLOR0	EQU	$2C4
COLORI	EQU	$2C5
COLOR4	EQU	$2C8
AUDF1	EQU	$D200		;USE FOR LASER
AUDC1	EQU	$D201
AUDF2	EQU	$D202		;USE FOR EXPLOSIONS ALIENS & TARGETS
AUDC2	EQU	$D203
AUDF3	EQU	$D204		;USE FOR SHIP ENGINE
AUDC3	EQU	$D205
AUDF4	EQU	$D206		;USE FOR SHIP EXPLOSION
AUDC4	EQU	$D207
AUDCTL	EQU	$D208
SKCTL	EQU	$D20F
*SCREEN ENCODED DATA
VALUE	DB	$00,$00				;ROW 0
	DB	$00,$00				;ROW 1
	DB	$00,$00				;ROW 2
	DB	$00,$00				;ROW 3
	DB	$00,$00				;ROW 4
	DB	$00,$00				;ROW 5
	DB	$00,$00				;ROW 6
	DB	$00,$00				;ROW 7
	DB	$00,$00				;ROW 8
	DB	$00,$00				;ROW 9
	DB	$00,$00				;ROW 10
	DB	$00,$00				;ROW 11
	DB	$00,$00				;ROW 12
	DB	$00,$03,$04,$01,$07,$08,$00	;ROW 13
	DB	$00,$04,$01,$09,$00		;ROW 14
	DB	$00,$03,$02,$01,$0A,$00,$04,$01	;ROW 15
	DB	$09,$00
	DB	$00,$04,$07,$08,$00,$03,$02,$0A	;ROW 16
	DB	$00,$03,$02,$01,$0B,$00,$04,$01
	DB	$09,$00,$04,$0A,$05,$0A,$00
	DB	$00,$04,$01,$09,$00,$05,$01,$0B	;ROW 17
	DB	$00,$04,$01,$0A,$00,$04,$09,$00
	DB	$05,$01,$09,$00,$03,$02,$0A,$00
	DB	$04,$01,$0B,$06,$0B,$00
	DB	$00,$05,$01,$09,$00,$06,$01,$07	;ROW 18
	DB	$08,$00,$04,$01,$0B,$00,$03,$02
	DB	$01,$09,$00,$06,$01,$0A,$00,$05
	DB	$01,$0B,$04,$01,$0A,$00
	DB	$00,$06,$01,$09,$00,$04,$01,$09	;ROW 19
	DB	$00,$01,$07,$08,$00,$03,$02,$01
	DB	$09,$00,$04,$01,$0B,$00,$06,$01
	DB	$0B,$00
	DB	$00,$03,$02,$09,$00,$03,$02,$0A	;ROW 20
	DB	$00,$04,$01,$07,$08,$00,$03,$02
	DB	$01,$09,$00,$03,$02,$07,$08,$00
	DB	$0C,$01,$09,$00,$04,$01,$0A,$00
	DB	$03,$02,$01,$0A,$00,$05,$01,$07
	DB	$08,$00,$03,$02,$09,$00
	DB	$00,$04,$01,$09,$00,$04,$01,$0B	;ROW 21
	DB	$00,$05,$01,$09,$00,$04,$01,$00
	DB	$0C,$01,$09,$00,$04,$01,$0B,$00
	DB	$05,$01,$0B,$00,$06,$01,$0A,$00
	DB	$04,$09,$04,$09,$00,$04,$01,$09
	DB	$00,$03,$02,$01,$07,$08,$00,$04	;ROW 22
	DB	$01,$07,$08,$00,$04,$01,$00,$04
	DB	$01,$09,$00,$04,$01,$07,$08,$00
	DB	$06,$01,$0B,$04,$01,$09,$00,$03
	DB	$02,$01
	DB	$01,$01				;ROW 23
	DS	$E9
BLOCKS	DB	$FF,$01				;ROW 0
	DB	$FF,$01				;ROW 1
	DB	$FF,$01				;ROW 2
	DB	$FF,$01				;ROW 3
	DB	$FF,$01				;ROW 4
	DB	$FF,$01				;ROW 5
	DB	$FF,$01				;ROW 6
	DB	$FF,$01				;ROW 7
	DB	$FF,$01				;ROW 8
	DB	$FF,$01				;ROW 9
	DB	$FF,$01				;ROW 10
	DB	$FF,$01				;ROW 11
	DB	$FF,$01				;ROW 12
	DB	$B7,$01,$01,$05,$01,$01,$40	;ROW 13
	DB	$B6,$01,$09,$01,$3F		;ROW 14
	DB	$77,$01,$01,$07,$01,$34,$01,$0B	;ROW 15
	DB	$01,$3E
	DB	$30,$01,$01,$01,$0F,$01,$01,$01	;ROW 16
	DB	$2E,$01,$01,$0B,$01,$33,$01,$0D
	DB	$01,$19,$01,$01,$01,$01,$20
	DB	$2F,$01,$03,$01,$0D,$01,$02,$01	;ROW 17
	DB	$2D,$01,$0E,$01,$0E,$01,$01,$21
	DB	$01,$0F,$01,$13,$01,$01,$01,$01
	DB	$01,$01,$01,$01,$01,$20
	DB	$2E,$01,$05,$01,$0C,$01,$03,$01	;ROW 18
	DB	$01,$29,$01,$10,$01,$0C,$01,$01
	DB	$02,$01,$20,$01,$10,$01,$11,$01
	DB	$02,$01,$01,$05,$01,$1F
	DB	$2E,$01,$06,$01,$0A,$01,$06,$01	;ROW 19
	DB	$28,$12,$01,$01,$08,$01,$01,$05
	DB	$01,$17,$01,$18,$01,$11,$01,$09
	DB	$01,$1F
	DB	$10,$01,$01,$01,$0C,$01,$01,$01	;ROW 20
	DB	$0B,$01,$08,$01,$01,$04,$01,$01
	DB	$0A,$01,$1B,$01,$01,$01,$01,$08
	DB	$01,$23,$01,$15,$01,$1A,$01,$08
	DB	$01,$01,$02,$01,$02,$01,$0B,$01
	DB	$01,$19,$01,$01,$01,$01
	DB	$0F,$01,$03,$01,$0A,$01,$02,$01	;ROW 21
	DB	$0A,$01,$1C,$01,$19,$01,$04,$0B
	DB	$01,$21,$01,$0C,$01,$22,$01,$07
	DB	$01,$04,$01,$02,$01,$0D,$01,$01
	DB	$01,$01,$01,$01,$12,$01,$03,$01
	DB	$0D,$01,$01,$05,$01,$01,$07,$01	;ROW 22
	DB	$3A,$01,$01,$08,$01,$05,$0B,$01
	DB	$28,$01,$04,$01,$24,$01,$01,$05
	DB	$01,$15,$01,$01,$04,$01,$0F,$01
	DB	$01,$05
	DB	$FF,$01				;ROW 23
	DS	$E9
*CHARACTER SET 512 BYTES LONG
SETCHAR	DB	$00,$00,$00,$00,$00,$00,$00,$00
	DB	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
	DB	$03,$0F,$3F,$FF,$FF,$FF,$FF,$FF
	DB	$00,$00,$00,$00,$03,$0F,$3F,$FF
	DB	$01,$03,$07,$0F,$1F,$3F,$7F,$FF
	DB	$01,$01,$03,$03,$07,$07,$0F,$0F	;#5
	DB	$1F,$1F,$3F,$3F,$7F,$7F,$FF,$FF
	DB	$C0,$F0,$FC,$FF,$FF,$FF,$FF,$FF
	DB	$00,$00,$00,$00,$C0,$F0,$FC,$FF
	DB	$80,$C0,$E0,$F0,$F8,$FC,$FE,$FF
	DB	$80,$80,$C0,$C0,$E0,$E0,$F0,$F0	;#10
	DB	$F8,$F8,$FC,$FC,$FE,$FE,$FF,$FF
	DB	$FF,$7F,$3F,$1F,$0F,$07,$03,$01
	DS	$98
	DB	$80,$C1,$67,$3F,$1F,$1F,$3F,$3F	;#32
	DB	$00,$C0,$F0,$F8,$F8,$FC,$FC,$FE
	DB	$80,$40,$20,$10,$08,$04,$02,$01
	DB	$3C,$3C,$3C,$3C,$7E,$7E,$FF,$C3
	DB	$18,$18,$18,$18,$18,$18,$3C,$3C
	DB	$00,$3E,$60,$60,$6E,$66,$3E,$00	;G
	DB	$00,$18,$3C,$66,$66,$7E,$66,$00	;A
	DB	$00,$63,$77,$7F,$6B,$63,$63,$00	;M
	DB	$00,$7E,$60,$7C,$60,$60,$7E,$00	;E
	DB	$00,$3C,$66,$66,$66,$66,$3C,$00	;0
	DB	$00,$66,$66,$66,$66,$3C,$18,$00	;V
	DB	$00,$7C,$66,$66,$7C,$6C,$66,$00	;R
	DS	$A0
*PLAYER#1 PROGRAMABLE BLOCK
ENEMY1	DB	$D0,$50,$30			;X,Y,DELAY
	DB	$28,$00,$FF,$00,$00,$00		;SHAPE#0
	DB	$50,$00,$FF,$01,$00,$00
	DB	$70,$00,$FF,$00,$01,$07
	DB	$FF,$00,$FF,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$75,$40			;SHAPE#1
	DB	$30,$00,$FF,$FF,$00,$00
	DB	$55,$00,$00,$01,$00,$00
	DB	$65,$00,$FF,$FF,$00,$00
	DB	$75,$00,$FF,$FF,$01,$06
	DB	$80,$00,$FF,$01,$01,$05
	DB	$98,$00,$FF,$FF,$00,$00
	DB	$FF,$00,$00,$FF,$01,$03
	DB	$00,$00,$00,$00,$00,$00
	DB	$50,$32,$25			;SHAPE#2
	DB	$15,$00,$01,$01,$00,$00
	DB	$30,$00,$01,$01,$01,$05
	DB	$40,$00,$01,$00,$01,$06
	DB	$53,$00,$01,$00,$00,$00
	DB	$70,$00,$01,$FF,$00,$00
	DB	$80,$00,$FF,$00,$00,$00
	DB	$A8,$00,$FF,$01,$01,$05
	DB	$FF,$01,$FF,$00,$01,$03
	DB	$D0,$70,$35			;SHAPE#3
	DB	$20,$00,$FF,$FF,$00,$00
	DB	$40,$00,$FF,$01,$00,$00
	DB	$60,$00,$FF,$FF,$01,$06
	DB	$80,$00,$FF,$FF,$01,$06
	DB	$98,$00,$FF,$01,$01,$07
	DB	$FF,$00,$FF,$FF,$01,$01
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$65,$15			;SHAPE#4
	DB	$25,$00,$FF,$00,$00,$00
	DB	$40,$00,$FF,$01,$00,$00
	DB	$60,$00,$FF,$FF,$01,$06
	DB	$80,$00,$00,$FF,$01,$06
	DB	$A0,$00,$FF,$01,$01,$05
	DB	$FF,$00,$FF,$00,$01,$01
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00,$00
ENEMY2	DB	$D0,$40,$50			;X,Y,DELAY
	DB	$38,$00,$FF,$01,$00,$00		;SHAPE#0
	DB	$50,$00,$FE,$FF,$01,$06
	DB	$68,$00,$FF,$FF,$00,$00
	DB	$78,$00,$FF,$01,$00,$00
	DB	$90,$00,$FF,$00,$01,$03
	DB	$FF,$00,$FF,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$35,$20			;SHAPE#1
	DB	$18,$00,$FF,$01,$00,$00
	DB	$30,$00,$FF,$FF,$00,$00
	DB	$40,$00,$FF,$00,$00,$00
	DB	$60,$00,$FF,$01,$01,$06
	DB	$70,$00,$01,$00,$01,$07
	DB	$80,$00,$FF,$FF,$01,$07
	DB	$FF,$00,$FF,$01,$01,$03
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$80,$20			;SHAPE#2
	DB	$30,$00,$FF,$00,$00,$00
	DB	$50,$00,$FF,$FF,$00,$00
	DB	$60,$00,$FF,$FF,$01,$07
	DB	$78,$00,$FF,$01,$01,$05
	DB	$FF,$00,$FF,$FF,$01,$03
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$55,$20			;SHAPE#3
	DB	$15,$00,$FF,$01,$00,$00
	DB	$35,$00,$FE,$00,$00,$00
	DB	$45,$00,$01,$FF,$00,$00
	DB	$55,$00,$00,$FF,$01,$06
	DB	$70,$00,$FF,$00,$00,$00
	DB	$95,$00,$FF,$00,$01,$05
	DB	$FF,$00,$FF,$00,$01,$03
	DB	$00,$00,$00,$00,$00,$00
	DB	$D0,$65,$20			;SHAPE#4
	DB	$20,$00,$FF,$00,$00,$00
	DB	$38,$00,$FF,$FF,$00,$00
	DB	$50,$00,$FF,$01,$01,$06
	DB	$68,$00,$FF,$00,$01,$05
	DB	$78,$00,$FF,$FF,$01,$03
	DB	$FF,$00,$FF,$01,$00,$00
	DB	$00,$00,$00,$00,$00,$00
	DB	$00,$00,$00,$00,$00,$00,$00
DLIST	DB	$70,$70,$70,$46,$00,$69,$86,$56
	DB	$00,$72,$56,$00,$73,$56,$00,$74
	DB	$56,$00,$75,$56,$00,$76,$56,$00
	DB	$77,$56,$00,$78,$56,$00,$79,$56
	DB	$00,$7A,$56,$00,$7B,$56,$00,$7C
	DB	$56,$00,$7D,$56,$00,$7E,$56,$00
	DB	$7F,$56,$00,$80,$56,$00,$81,$56
	DB	$00,$82,$56,$00,$83,$56,$00,$84
	DB	$56,$00,$85,$56,$00,$86,$56,$00
	DB	$87,$41,$00,$94
SHIP	DB	$80,$80,$C0,$FC,$F6,$7F,$7E,$00
ALIEN	DB	$3C,$3C,$3C,$7E,$DB,$DB,$DB,$DB
	DB	$81,$42,$3C,$3C,$3C,$3C,$42,$81
	DB	$3C,$3C,$18,$18,$99,$FF,$C3,$81
	DB	$91,$7E,$46,$C2,$43,$62,$7E,$89
	DB	$00,$00,$3C,$7E,$FF,$7E,$3C,$00
ALIENPT	DB	$54,$5C,$64,$6C,$74
E1PT	DB	$00,$33,$66,$99,$CC
E2PT	DB	$00,$33,$66,$99,$CC
MSHAPE	DB	$03,$00,$0C,$0C,$30,$30,$C0,$C0	;4 MISSILES EACH TWO HIGH
MISL0	DB	$8B,$8D,$8F,$91
BOMBSH	DB	$F8,$3E,$F8,$00,$00,$00,$00,$00
VMX	DB	$00,$01,$01,$01,$00,$FF,$FF,$FF
VMY	DB	$FF,$FF,$00,$01,$01,$01,$00,$FF
MBPOSL	DB	$2B,$4A,$69,$84,$97,$A9,$D3
MBPOSH	DB	$84,$84,$85,$82,$84,$83,$84
*TITLE	AT	STRIKE FORCE

TITLE	DB	0,0,0,0,$33,$34,$32,$29,$2B,$25,0,$26,$2F,$32,$23,$25,0,0,0,0


*	AT	'SHIPS 0 SCORE 00000'

	DB	$33,$28,$29,$30,$33,0,$10,0
	DB	0,$33,$23,$2F,$32,$25,0,$10,$10,$10,$10,$10

TITLE1	DB	$20,$42,$59,$20,$4A,$45,$46,$46,$52,$45
	DB	$59,$20,$53,$54,$41,$4E,$54,$4F,$4E,$20
	DS	7
GOVER	DB	$65,$66,$67,$68,$00,$69,$6A,$68,$6B	;GAME OVER
*VARIABLES
XPM0	DS	1		;ACTUAL X POS ON SCREEN
YPM0	DS	1		;ACTUAL Y POS ON SCREEN
XPL	DS	1		;SHIP POS IN WORLD 0-1060
XPH	DS	1
XS	DS	1		;BACKGROUND AT LEFT EDGE
FS	DB	0		;FINE SCROLL REG
YMISO0	DS	1		;OLD Y VALUE FOR MISSILE #0
YMISO1	DS	1
YMISO2	DS	1
INDEX1	DS	1		;USED FOR TEMP STORAGE
INDEX2	DS	1
COUNT	DB	0		;COUNTER DURING DATA UNPACK
TEMP	DS	1		;TEMP STORAGE
BACK	DB	0		;STICK BACK FLAG
SPEED	DS	1		;SHIP SPEED FLAG - FAST OR SLOW
BOMBON	DS	1		;FLAG SET WHEN BOMB DROPPING
VBFLAG	DW	0		;FLAG ON UPON ENTERING VBLANK
XSP	DS	1		;BACKGROUND AT SHIP
ONSCR1	DB	0		;ALIEN SHIP ON SCREEN FLAG
ONSCR2	DB	0
TDLAY1	DB	40		;CURRENT DELAY BEFORE ALIEN APPEARS
TDLAY2	DS	1
NDLAY1	DS	1		;DELAY FOR NEXT ALIEN TO APPEAR
NDLAY2	DS	1
TIMR1L	DS	1		;ALIEN SHIP #1 TIMER
TIMR1H	DS	1
TIMR2L	DS	1		;ALIEN SHIP #2 TIMER
TIMR2H	DS	1
TIME1L	DS	1		;WHEN TO READ NEXT ALIEN#1 INSTRUCTION
TIME2L	DS	1
TIME1H	DS	1
TIME2H	DS	1
TMIS0	DS	1
TMIS1	DS	1		;ALIEN #1 MISSILE TIMER
TMIS2	DS	1
VX0	DS	1
VX1	DS	1		;VELOCITY ALIEN #1
VX2	DS	1
VX3	DS	1		;VELOCITY BOMB
VY0	DS	1
VY1	DS	1		;VELOCITY ALIEN #1
VY2	DS	1
VY3	DS	1		;VELOCITY BOMB
VTEMP	DS	1
ACCEL	DS	1		;BOMB ACCELERATION
X0	DS	1
X1	DS	1		;ALIEN #1 POSITION
X2	DS	1
X3	DS	1		;HORIZ POSITION BOMB
Y0	DS	1
Y1	DS	1		;ALIEN #1 POSITION
Y2	DS	1
Y3	DS	1		;VERT POSITION BOMB
X0M	DS	1		;HORIZ MISSILE #0 POSITION
X1M	DS	1
X2M	DS	1
Y0M	DS	1		;VERT MISSILE #0 POSITION
Y1M	DS	1
Y2M	DS	1
SHOOT0	DS	1
SHOOT1	DS	1		;FLAG FOR ALIEN #1 TO SHOOT
SHOOT2	DS	1
TEMPL	DS	4		;TEMP STORAGE DURING PLOTTING
TEMPH	DS	4
DIR0	DS	1
DIR1	DS	1		;DIRECTION TO SHOOT ALIEN #1
DIR2	DS	1
MDIR0	DS	1
MDIR1	DS	1		;TEMP STORAGE DURING MISSILE TRACK
MDIR2	DS	1
MASK	DS	1		;MISSILE #0 MASK
MASK0	DB	$FC		;MISSILE #0 14ASK
MASK1	DB	$F3
MASK2	DB	$CF
LASON	DS	4		;LASER ON FLAG
LPOSL	DS	4		;ACTUAL SCREEN POSITION OF LASER -LO
LPOSH	DS	4
LDELAY	DS	4		;DELAY UNTIL LASER BASE REFIRES
LCOUNT	DS	4		;DELAY BETWEEN MOVEMENT OF LASER BEAM
GALIVE	DS	4		;LASER BASE ON FLAG
YG	DS	4		;LASER BASE Y POSITION
XG	DS	4		;LASER BASE X POSITION
SR10	DS	1		;SCORE 10'S DIGIT
SR100	DS	1
SR1000	DS	1
SR10T	DS	1
HSR10	DS	1		;HIGH SCORE 10'S DIGIT
HSR100	DS	1
HSR1K	DS	1
HSR10T	DS	1
DELAY	DS	1		;DELAY FLAG ON WHEN SHIP EXPLODES
SHIPNUM	DS	1		;NUMBER OF SHIPS
BTARGET	DS	1		;PLAYFIELD POSITION OF BOMB
STRIKE	DS	1		;COUNTER FOR TARGET HIT
MBCOUNT	DS	1		;# MISSILE BASES HIT
LUCK	DS	1		;RANDOM # 0-4
RDSHP1	DS	1		;RANDOM SHAPE # ALIEN #1
RDSHP2	DS	1
POS	DS	1		;HORIZ BOMB POSITION
T	DS	1		;FLAG FOR WHICH PART OF TITLE IS ON SCREEN
OVER	DS	1		;OFFSET TO WHERE GAME OVER TITLE IS WRITTEN
DELAY1	DB	$04
SLTIM	DS	1		;COUNTDOWN TIMER FOR LASER SOUND
SLTIM1	DS	1
SETIME	DS	1		;COUNTDOWN TIMER FOR EXPLOSION
SEXTIME	DS	1		;COUNTDOWN TIMER FOR SHIP EXPLOSION
REZFLAG	DS	1		;DEREZ ON FLAG
EXCOUNT	DS	1		;COUNTER DURING DEREZ
MEDIUM	DS	1		;PLAY MEDIUM DIFFICULTY FLAG
HARD	DS	1		;PLAY HARD DIFFICULTY
DEREZ	DS	8		;DUMMY AREA FOR SHUP DURING DEREZ
***	IN "D:SCROLL1B"
*PART 2 OF SCROLLING GAME
*ZERO HIGH SCORE & SCORE
	LDA	#$10		;SCORES ARE OFFSET BY #$10 TO MATCH CHARACTER SET
	STA	SR10
	STA	SR100
	STA	SR1000
	STA	SR10T
	STA	HSR10
	STA	HSR100
	STA	HSR1K
	STA	HSR10T
*SET SYSTEM RESET VECTOR
	LDA	#<START
	STA	$03
	LDA	#START
	STA	$02
	LDA	#$02		;TELLS SYS RESET A CASSETTE
	STA	$09
	JMP	$E474		;SYSTEM RESET VECTOR
*PART 2 OF SCROLLING GAME
*TERRAIN GENERATOR ROUTINE
START	LDA	#$70		;SCREEN AT $7000
	STA	GROUNH
	LDA	#$00
	STA	GROUNL
	LDA	#<VALUE
	STA	VALUEH
	LDA	#VALUE
	STA	VALUEL
	LDA	#<BLOCKS
	STA	BLOCKH
	LDA	#BLOCKS
	STA	BLOCKL
	LDA	#$00
	STA	COUNT
	LDY	#$00
LOOP	LDA	(BLOCKL),Y	;#BLOCKS IN AROW
	TAX			;USE AS COUNTER
	LDA	(VALUEL),Y	;LOAD BLOCK VALUE
	PHA
	TYA
	STA	TEMP		;SAVE Y REGISTER
	LDY	COUNT		;BYTE COUNTER FOR ROW
	PLA
AA1	STA	(GROUNL),Y	;STORE ON SCREEN MAP
	INY			;FOR NEXT LOCATION
	DEX
	BNE	AA1		;LOOP TILL DONE WITH # BLOCKS IN AROW
	TYA
	STA	COUNT
	CPY	#$00		;END OF ROW?
	BNE	AA2
	INC	GROUNH		;NEXT ROW
	LDA	GROUNH
	CMP	#$88		;DONE WITH ALL 22 ROWS
	BGE	DONE
AA2	LDY	TEMP		;RESTORE INDEX
	INY			;UP INDEX FOR VALUES IN TABLES
	CPY	#$00		;CROSSED PAGE?
	BNE	LOOP
	INC	VALUEH		;YES NEXT PAGE
	INC	BLOCKH
	JMP	LOOP
DONE	NOP
*SETUP DLIST
	LDX	#$00
DLOOP	LDA	DLIST,X
	STA	NDLIST,X
	INX
	CPX	#$4C		;76 ELEMENTS
	BNE	DLOOP
	LDA	#NDLIST
	STA	560
	LDA	#<NDLIST
	STA	561
*INITILIZE SHIP
	LDA	#$88
	STA	PMBASE
	LDA	#$19		;9 SHIPS
	STA	SHIPNUM
	LDA	#$03		;SET P/M GRAPHICS
	STA	GRACTL
	LDA	#$3E		;ENABLE P/M DMA SINGLE LINE
	STA	DMACTL
	LDA	#$01		;DOUBLE WIDTH
	STA	SIZEP0
	LDA	#$7A		;PLAYER #0 122 BLUE-LUM 10
	STA	PCOLR0
	LDA	#$00		;INITIAL SCREEN LEFT
	STA	XS
	LDA	#$50		;INITIAL POS SHIP X-80
	STA	XPM0
	STA	HPOSP0		;TELL ANTIC
	LDA	#$60		;INITIAL POS SHIP Y=96
	STA	YPM0
	LDA	#<PDATA
	CLC
	ADC	#$04
	STA	SHPM0H
*OTHER P/M CONSTANTS
	LDA	#$C6		;GREEN ALIEN
	STA	PCOLR1
	LDA	#$44		;RED ALIEN
	STA	PCOLR2
	LDA	#$7A		;BLUE BOMB
	STA	PCOLR3
	LDA	#$E8		;INITIAL POSITIONS OF ALIENS
	STA	HPOSP1
	STA	HPOSP2
	LDA	#$03		;MISSILE 0 QUADRUPLE-REST NORMAL
	STA	SIZEM
*CLEAR P/M AREA
	LDA	#$00		;PDATAL
	STA	PMADR
	LDA	#<PDATA
	STA	PMADR+1
	LDY	#$00
	TYA
	LDX	#$08
AB1	STA	(PMADR),Y
	INY
	BNE	AB1
	INC	PMADR+1		;NEXT 256 BYTES
	DEX
	BNE	AB1
*PUT CHARACTER SET IN POSITION
MC	LDA	#$00
	STA	CHADR
	STA	CHSET
	LDA	#<CHRSET
	STA	CHADR+1
	LDA	#<SETCHAR
	STA	CHSET+1
	LDX	#$02
	LDY	#$00
AC1	LDA	(CHSET),Y
	STA	(CHADR),Y
	INY
	BNE	AC1
	INC	CHSET+1
	INC	CHADR+1
	DEX
	BNE	AC1
*SETUP LASER BASES
	LDA	#$3E
	STA	XG
	LDA	#$13
	STA	YG
	LDA	#$71
	STA	XG+1
	LDA	#$16
	STA	YG+1
	LDA	#$9E
	STA	XG+2
	LDA	#$16
	STA	YG+2
	LDA	#$CB
	STA	XG+3
	LDA	#$16
	STA	YG+3
	LDA	#$00
	STA	LASON
	STA	LASON+1
	STA	LASON+2
	STA	LASON+3
	LDA	#$01		;LASERS SET ALIVE
	STA	GALIVE
	STA	GALIVE+1
	STA	GALIVE+2
	STA	GALIVE+3
*SETUP COLOR REGISTERS
	LDA	#$00		;BACKGROUND BLACK
	STA	COLOR4
	LDA	#$24		;TAN FOR PLAYFIELD#0
	STA	COLOR0
	LDA	#$46		;LT RED FOR PLAYFIELD #1
	STA	COLORI
*MISC
	LDA	#$08		;SET FINE SCROLL HI SO SCREEN LEFT EDGE
	STA	HSCROL
	LDA	#$00
	STA	SLTIM
	STA	SLTIM1
	STA	SETIME
	STA	REZFLAG
	STA	EXCOUNT
	LDA	#$00
	STA	AUDC3
	STA	AUDCTL		;INITILIZE SOUND REGISTERS
	LDA	#$03
	STA	SKCTL
	LDA	#$30
	STA	TDLAY1
	LDA	#$50
	STA	TDLAY2
	LDA	#$00
	STA	TMIS0
	STA	TMIS1
	STA	TMIS2
	STA	DELAY
	STA	HITCLR		;CLEAR COLLISION REGISTERS
	STA	BOMBON		;BOMB OFF
*PUT IN GROUND TARGETS
	LDA	#$60		;LASERS
	STA	$833E
	STA	$8671
	STA	$869E
	STA	$86CB
	LDA	#$61
	STA	$833F
	STA	$8672
	STA	$869F
	STA	$86CC
	JSR	MBSUB
	LDA	#$0A
	STA	LDELAY
	STA	LDELAY+1
	STA	LDELAY+2
	STA	LDELAY+3
	LDA	#$00		;INTIALLY EASY
	STA	MEDIUM
	STA	HARD
	STA	ENEMY1+$4C
	STA	ENEMY1+$91
	STA	ENEMY1+$9F
	STA	ENEMY1+$E5
	STA	ENEMY2+$1F
	STA	ENEMY2+$4C
	STA	ENEMY2+$79
	STA	ENEMY2+$B2
	STA	ENEMY2+$E5
	STA	ENEMY1+$52
	STA	ENEMY1+$5E
	STA	ENEMY1+$73
	STA	ENEMY1+$97
	STA	ENEMY1+$B2
	STA	ENEMY1+$B8
	STA	ENEMY1+$EB
	STA	ENEMY1+$F1
	STA	ENEMY2+$52
	STA	ENEMY2+$58
	STA	ENEMY2+$5E
	STA	ENEMY2+$7F
	STA	ENEMY2+$85
	STA	ENEMY2+$C4
	STA	ENEMY2+$DF
	STA	ENEMY2+$EB
*ENABLE DISPLAY LIST INTERRUPT
	LDA	#$C0
	STA	$D40E
	LDA	#DLI
	STA	$200
	LDA	#<DLI
	STA	$201
*PUT TITLE INFO IN PLACE
MKTITLE	LDY	#$00
AD1	LDA	TITLE,Y
	STA	INFO,Y
	INY
	CPY	#$1D
	BL	AD1
	LDA	SHIPNUM
	STA	INFO+26
	LDA	#$33		;PRINT 'SCORE'
	STA	INFO+29
	LDA	#$23
	STA	INFO+30
	LDA	#$2F
	STA	INFO+31
	LDA	#$32
	STA	INFO+32
	LDA	#$25
	STA	INFO+33
	LDA	#$00
	STA	INFO+34
	LDA	#$10		;PRINT LAST ZERO DIGIT
	STA	INFO+39
	LDA	SR10T
	STA	INFO+35
	LDA	SR1000
	STA	INFO+36
	LDA	SR100
	STA	INFO+37
	LDA	SR10
	STA	INFO+38
	LDA	#$80
	STA	$14
	LDA	#$00
	STA	$13
	STA	T
STOP	LDA	CONSOL
	CMP	#06		;START KEY
	BEQ	MTITLE1
	LDA	$13
	BEQ	STOP
	LDA	T
	BNE	MKTITLE
MYTITLE	LDY	#$00
AE1	LDA	TITLE1,Y
	SEC
	SBC	#$20
	STA	INFO,Y
	INY
	CPY	#$14
	BL	AE1
	LDA	#$00		;STORE HIGH
	STA	INFO+29
	LDA	#$28
	STA	INFO+30
	LDA	#$29
	STA	INFO+31
	LDA	#$27
	STA	INFO+32
	LDA	#$28
	STA	INFO+33
	LDA	HSR10T
	STA	INFO+35
	LDA	HSR1K
	STA	INFO+36
	LDA	HSR100
	STA	INFO+37
	LDA	HSR10
	STA	INFO+38
	LDA	#$80
	STA	$14
	LDA	#$00
	STA	$13
	LDA	#$01
	STA	T
	JMP	STOP
MTITLE1	LDY	#$00
AF1	LDA	TITLE,Y
	STA	INFO,Y
	INY
	CPY	#$28
	BL	AF1
	LDA	SHIPNUM
	STA	INFO+26
*ZERO OUT SCORE
	LDA	#$10
	STA	SR10
	STA	SR100
	STA	SR1000
	STA	SR10T
	LDA	#$30		;REG ENGINE SOUND
	STA	AUDF3
	LDA	#$86		;DISTORTION 8,VOLUME 6
	STA	AUDC3
*SET VBLANK
FRAME	LDA	#07
	LDX	#<VBCODE	;HI BYTE VBLANK ROUTINE
	LDY	#VBCODE		;LO BYTE
	JSR	SETVBK
*MAIN LOOP CODE
LOOPM	LDA	#$00
	STA	VBFLAG
*FIRE GROUND LASER
	LDX	#$03
FLASER	LDA	LDELAY,X
	BNE	AG1
	LDY	#$00
	JSR	LASER
	JMP	CONT
AG1	DEC	LDELAY,X
CONT	DEX
	BPL	FLASER
*DETECT SHIP COLLISIONS
COLLIDE	LDA	REZFLAG		;DON'T ALLOW COLLISION DURING DEREZ
	BNE	AH4
	LDA	P0PF		;COLLISION WITH PLAYFIELD?
	BEQ	AH1
	JSR	XSHIP
	JMP	AH4
AH1	LDA	M1PL		;COLLISION WITH MISSILE#1?
	CMP	#$01
	BNE	AH2
	JSR	XSHIP
	JMP	AH4
AH2	LDA	M2PL		;COLLISION WITH MISSILE#2?
	CMP	#$01
	BNE	AH3
	JSR	XSHIP
	JMP	AH4
AH3	LDA	P0PL		;COLLISION WITH PLAYER#1?
	CMP	#$02
	BNE	AH35
	LDA	#$E0		;REMOVE ALIEN#1
	STA	HPOSP1
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR1
	LDA	NDLAY1
	STA	TDLAY1
	JSR	SCORE
	JSR	XSHIP
	JMP	AH4
AH35	LDA	P0PL		;COLLISION WITH PLAYER#2?
	CMP	#$04
	BNE	AH4
	LDA	#$E0		;REMOVE ALIEN#2
	STA	HPOSP2
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR2
	LDA	NDLAY2
	STA	TDLAY2
	JSR	XSHIP
AH4	LDA	M0PL		;COLLISION ALIEN#1 WITH MISSILE?
	CMP	#$02
	BNE	AH5
	LDA	#$E0		;REMOVE ALIEN#1
	STA	HPOSP1
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR1
	LDA	NDLAY1
	STA	TDLAY1
	JSR	SCORE2
	LDA	#$00		;REMOVE MISSILE
	STA	HPOSM0
	LDA	#$00		;RESET TIMER
	STA	TMIS0
AH5	LDA	P1PF		;ALIEN#1 COLLISION WITH PLAYFIELD?
	BEQ	AH6
	LDA	#$E0		;REMOVE ALIEN#I
	STA	HPOSP1
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR1
	LDA	NDLAY1
	STA	TDLAY1
AH6	LDA	M0PL		;COLLISION ALIEN#2 WITH SHIP MISSILE?
	CMP	#$04
	BNE	AH7
	LDA	#$E0		;REMOVE ALIEN#2
	STA	HPOSP2
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR2
	LDA	NDLAY2
	STA	TDLAY2
	JSR	SCORE2
	LDA	#$00		;REMOVE MISSILE
	STA	HPOSM0
	LDA	#$00
	STA	TMIS0
AH7	LDA	P2PF		;ALIEN#2 COLLISION WITH PLAYFIELD?
	BEQ	BCOL
	LDA	#$E0		;REMOVE ALIEN #2
	STA	HPOSP2
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$00
	STA	ONSCR2
	LDA	NDLAY2
	STA	TDLAY2
*TARGETS ARE PLAYFIELD#1	;TERRAIN PLAYFIELD #0
BCOL	LDA	P3PF		;TEST BOMB COLLISION PLAYFIELD #0
	CMP	#$01
	BNE	AK80
	LDA	#$00		;REMOVE BOMB
	STA	HPOSP3
	LDA	#$00
	STA	BOMBON
	JMP	AK82		;JUST IN CASE MISSILE & BOMB ON SCREEN
AK80	CMP	#$02		;TEST BOMB AGAINST PLAYFIELD #1
	BEQ	AK81
	JMP	AK82
AK81	LDA	X3
	STA	POS
	JSR	RTARGET
	LDA	#$00		;REMOVE BOMB
	STA	HPOSP3
	LDA	#$00
	STA	BOMBON
AK82	LDA	M0PF		;TEST MISSILE COLLISION PLAYFIELD #0
	CMP	#$01
	BNE	AK83
	LDA	#$00		;REMOVE MISSILE
	STA	HPOSM0
	LDA	#$00
	STA	TMIS0
	JMP	CC
AK83	CMP	#$02		;TEST MISSILE COLLISION PLAYFIELD #1
	BEQ	AK84
	JMP	CC
AK84	LDA	X0M
	STA	POS
	JSR	RTARGET
	LDA	#$00		;REMOVE MISSILE
	STA	HPOSM0
	LDA	#$00
	STA	TMIS0
CC	STA	HITCLR		;CLEAR COLLISIONS
	LDA	#$00		;STOP ATTRACT MODE
	STA	$4D
NASTY	LDA	HARD		;ON HARD SETTING?
	BNE	FOREVER
	LDA	MEDIUM		;ON MEDIUM SETTING?
	BNE	AM1
	LDA	SR100		;AT 400 PTS
	CMP	#$14		;VALUE OFFSET BY #$10
	BNE	AM1
	LDA	#$01		;TURN ON SOME ALIEN GUNS
	STA	ENEMY1+$4C
	STA	ENEMY1+$91
	STA	ENEMY1+$9F
	STA	ENEMY1+$E5
	STA	ENEMY2+$1F
	STA	ENEMY2+$4C
	STA	ENEMY2+$79
	STA	ENEMY2+$B2
	STA	ENEMY2+$E5
	LDA	#$01
	STA	MEDIUM
AM1	LDA	SR1000		;AT 2000 PTS?
	CMP	#$12
	BNE	FOREVER
	LDA	#$01		;TURN ON MORE ALIEN GUNS
	STA	ENEMY1+$52
	STA	ENEMY1+$5E
	STA	ENEMY1+$73
	STA	ENEMY1+$97
	STA	ENEMY1+$B2
	STA	ENEMY1+$B8
	STA	ENEMY1+$EB
	STA	ENEMY1+$F1
	STA	ENEMY2+$52
	STA	ENEMY2+$58
	STA	ENEMY2+$5E
	STA	ENEMY2+$7F
	STA	ENEMY2+$85
	STA	ENEMY2+$C4
	STA	ENEMY2+$DF
	STA	ENEMY2+$EB
	LDA	#$01
	STA	HARD
FOREVER	LDA	VBFLAG
	CMP	#$01
	BNE	AN1
	JMP	LOOPM
AN1	JMP	FOREVER
*TEST IF DELAY SET BY XSHIP
VBCODE	LDA	#$01
	STA	VBFLAG
	LDA	DELAY
	BEQ	CHKSTK
	LDA	$13
	BEQ	REZ
	LDA	SHIPNUM
	CMP	#$10		;COMPARE TO ZERO SHIPS
	BNE	AP1
	LDA	#<START		; SET RESET JMP VECTOR
	STA	$03
	LDA	#START
	STA	$02
	JMP	$E474		;SYSTEM RESET VECTOR
AP1	LDA	#$50		;PUT SHIP BACK
	STA	HPOSP0
	LDA	#$60
	STA	YPM0
	LDA	#$00
	STA	DELAY
REZ	LDA	REZFLAG
	BEQ	CHKSTK
	LDA	EXCOUNT
	CMP	#$30
	BL	AR1
	LDA	#$00		;MOVE SHIP OFF SCREEN LEFT
	STA	HPOSP0
	LDA	EXCOUNT
	CMP	#$31		;DON'T RESET REZFLAG UNTIL NEXT CYCLE BECAUSE
	BNE	AR1		;COULD GET COLLISION AGAINST PLAYFIELD IF ANY
	LDA	#$00		;PIXELS LEFT IN SHIP SHAPE BEFORE MOVE
	STA	REZFLAG
	STA	EXCOUNT
	JMP	CHKSTK
AR1	JSR	EXPLODE
	INC	EXCOUNT
*READ STICK
CHKSTK	LDA	STICK
	AND	#$01		;UP BIT?
	BNE	CHKDN
	DEC	YPM0
	DEC	YPM0
	LDA	YPM0		;TOP?
	CMP	#$30
	BGE	CHKDN
	LDA	#$30		;CLIP AT TOP
	STA	YPM0
CHKDN	LDA	STICK
	AND	#$02		;DOWN BIT?
	BNE	CHKRT
	INC	YPM0
	INC	YPM0
	LDA	YPM0		;BOTTOM?
	CMP	#$C0
	BL	CHKRT
	LDA	#$C0		;CLIP AT BOTTOM
	STA	YPM0
CHKRT	LDA	STICK
	AND	#$08		;RIGHT BIT?
	BNE	AS1
	LDA	#$01		;FAST SPEED
	STA	SPEED
	LDA	#$20		;FAST ENGINE SOUND
	STA	AUDF3
	LDA	#$86
	STA	AUDC3
	JMP	CHKFD
AS1	LDA	#$00		;REGULAR SPEED
	STA	SPEED
	LDA	#$30		;REG ENGINE SOUND
	STA	AUDF3
	LDA	#$86
	STA	AUDC3
CHKFD	LDA	#$00
	STA	BACK
	LDA	STICK
	AND	#$04		;LEFT BIT
	BNE	AT1
	LDA	#$01		;YES STICK BACK
	STA	BACK
AT1	LDA	DELAY		;STOP SHIP SOUND IF IN DELAY
	BEQ	BUTTON
	LDA	#$00
	STA	AUDC3
*FIRE SHIP LASER
BUTTON	LDA	DELAY		;PREVENT MISSILE FIRING DURING DELAY
	BNE	AW15
	LDA	STRIG0		;BUTTON PRESSED=0
	BEQ	AW1
AW15	LDA	TMIS0		;MISSILE ALREADY IN FLIGHT?
	BNE	AW3
	JMP	BM
AW1	LDA	BACK		;STICK BACK?
	BEQ	AW2
	JMP	AW15
AW2	LDA	TMIS0		;MISSILE ALREADY IN FLIGHT?
	BNE	AW3
	LDA	XPM0		;ADJUST LASER TO FIRE FROM SHIP'S NOSE
	CLC
	ADC	#$10
	STA	X0M
	LDA	YPM0
	CLC
	ADC	#$05
	STA	Y0M
	LDX	#$00
	JSR	MISET0		;PLOT MISSILT
	LDA	#$01		;TURN ON MISSILE MOVIN, FLAG
	STA	TMIS0
	LDA	#$01		;TURN ON LASER SOUND
	STA	SLTIM
	JMP	BM
*MOVE MISSILE RIGHT
AW3	INC	X0M
	INC	X0M
	LDA	X0M
	CMP	#$D8
	BGE	AW4
	LDX	#$00
	JSR	MISET0
	JMP	BM
AW4	LDA	#$00		;REMOVE MISSILE TO LEFT
	STA	TMIS0
	LDA	#$00
	STA	HPOSM0
*DROP BOMB
BM	JSR	BOMB
	LDA	REZFLAG		;DON'T PLOT SHIP WHILE IN DEREZ
	BNE	AX1
	JSR	PLTST
*FINE SCROLL SCREEN
AX1	LDA	SPEED
	BEQ	SCROL1
SCROL	INC	FS
SCROL1	INC	FS
	LDA	FS
	CMP	#$08		;GREATER 0-7 RANGE?
	BGE	AY1
	SEC
	SBC	#$08
	STA	FS
	INC	XS		;UP ROUGH SCROLL
AY1	SEC
	LDA	#$0F		;CORRECT 12 CLOCK CYCLES
	SBC	FS
	STA	HSCROL
	LDA	XS		;NEW XS
	CMP	#$EC		;TEST WRAPAROUND @ 236
	BL	AY2
	LDA	#$00
	STA	XS
	LDA	MBCOUNT		;IF ALL 7 BASES DESTROYED THEN REBUILD
	CMP	#$07
	BNE	AY2
	JSR	MBSUB
AY2	NOP
*UPDATE DLIST 22 LO BYTES FOR EACH LMS
	LDY	#$00		;COUNTER
AY4	LDA	XS		;POSITION AT SCREEN LEFT
	STA	NDLIST+8,Y
	INY			;LO BYTES ARE 3 APART
	INY
	INY
	CPY	#$4B		;END OF LIST?
	BNE	AY4		;NEXT ELEMENT
	LDA	#$E0
	STA	756
*PROGRAMABLE ALIENS
ATTACK	LDA	TDLAY1		;STILL IN DELAY?
	BEQ	AZ05
	DEC	TDLAY1
	LDA	#$00
	STA	TIMR1L
	LDA	TMIS1
	BEQ	AZ08
	LDX	#$01
	JSR	MISSILE
AZ08	JMP	EE
AZ05	LDA	ONSCR1		;ALIEN #1 ON SCREEN?
	BEQ	AZ07
	JMP	AZ1
AZ07	JSR	CHANCE
	LDX	LUCK		;PLAYER #1,SHAPE#LUCK PATTERN
	LDA	E1PT,X		;SETUP TO READ DATA
	STA	E1L
	LDA	#<ENEMY1
	STA	E1H
	JSR	CHANCE		;CHOOSE RANDOM SHAPE PLAYER#1
	LDA	LUCK
	STA	RDSHP1
	LDA	#$01		;SET FLAG ON
	STA	ONSCR1
	LDA	#$00		;RESET TIMER
	STA	TIMR1L
	STA	TIMR1H
	LDY	#$00
	LDA	(E1L),Y		;READ INITIAL STARTING VALUES
	STA	X1
	INY
	LDA	(E1L),Y
	STA	Y1
	INY
	LDA	(E1L),Y
	STA	NDLAY1
	INY
	LDA	(E1L),Y
	STA	TIME1L
	INY
	LDA	(E1L),Y
	STA	TIME1H
	INY
	LDA	(E1L),Y
	STA	VX1
	INY
	LDA	(E1L),Y
	STA	VY1
	INY
	LDA	(E1L),Y
	STA	SHOOT1
	INY			;SKIP DIR
	INY
	TYA			;SAVE Y REGISTER
	STA	INDEX1
	JMP	AZ3
	NOP
AZ1	INC	TIMR1L
	LDA	TIMR1L		;CHECK IF TIMER HITS 256
	BNE	AZ2
	INC	TIMR1H
AZ2	CMP	TIME1L		;TIME TO READ NEXT SET INSTRUCTIONS?
	BNE	AZ3
	LDA	TIMR1H
	CMP	TIME1H
	BNE	AZ3
	LDA	INDEX1		;RESTORE Y REGISTER
	TAY
	LDA	(E1L),Y
	STA	TIME1L
	INY
	LDA	(E1L),Y
	STA	TIME1H
	INY
	LDA	(E1L),Y
	STA	VX1
	INY
	LDA	(E1L),Y
	STA	VY1
	INY
	LDA	(E1L),Y
	STA	SHOOT1
	INY
	LDA	(E1L),Y
	STA	DIR1
	INY
	TYA			;SAVE Y REGISTER
	STA	INDEX1
*MOVE ENEMY SHIP
AZ3	LDA	X1
	CLC
	ADC	VX1
	STA	X1
	LDA	SPEED		;MOVE ALIENS DOUBLE SPEED IF SHIP SPEEDING
	BEQ	AZ35
	DEC	X1
AZ35	LDA	Y1
	CLC
	ADC	VY1
	STA	Y1
	LDX	#$01
	JSR	MISSILE
*SHIP STILL ON SCREEN
A1	LDA	X1
	CMP	#$30		;X<48
	BL	BA6
	CMP	#$D1		;X>208
	BGE	BA6
	LDA	Y1
	CMP	#$30		;Y<48
	BL	BA6
	CMP	#$E1		;Y>224
	BGE	BA6
	JSR	PLTST1
	JMP	EE
BA6	LDA	#$00
	STA	ONSCR1
	LDA	NDLAY1
	STA	TDLAY1
	LDA	#$E0		;REMOVE ALIEN FROM SCREEN
	STA	HPOSP1
EE	NOP
ATTAK2	LDA	TDLAY2		;STILL IN DELAY?
	BEQ	BB05
	DEC	TDLAY2
	LDA	#$00
	STA	TIMR2L
	LDA	TMIS2
	BEQ	BB08
	LDX	#$02
	JSR	MISSILE
BB08	JMP	EE2
BB05	LDA	ONSCR2		;ALIEN #1 ON SCREEN?
	BEQ	BB07
	JMP	BB1
BB07	JSR	CHANCE
	LDX	LUCK		;PLAYER #2,SHAPE#LUCK PATTERN
	LDA	E2PT,X		;SETUP TO READ DATA
	STA	E2L
	LDA	#<ENEMY2
	STA	E2H
	LDA	#$01		;SET FLAG ON
	STA	ONSCR2
	JSR	CHANCE		;CHOOSE RANDOM SHAPE PLAYER#2
	LDA	LUCK
	STA	RDSHP2
	LDA	#$00		;RESET TIMER
	STA	TIMR2L
	STA	TIMR2H
	LDY	#$00
	LDA	(E2L),Y		;READ INITIAL STARTING VALUES
	STA	X2
	INY
	LDA	(E2L),Y
	STA	Y2
	INY
	LDA	(E2L),Y
	STA	NDLAY2
	INY
	LDA	(E2L),Y
	STA	TIME2L
	INY
	LDA	(E2L),Y
	STA	TIME2H
	INY
	LDA	(E2L),Y
	STA	VX2
	INY
	LDA	(E2L),Y
	STA	VY2
	INY
	LDA	(E2L),Y
	STA	SHOOT2
	INY			;SKIP DIR
	INY
	TYA			;SAVE Y REGISTER
	STA	INDEX2
	JMP	BB3
	NOP
BB1	INC	TIMR2L
	LDA	TIMR2L		;CHECK IF TIMER HITS 256
	BNE	BB2
	INC	TIMR2H
BB2	CMP	TIME2L		;TIME TO READ NEXT SET INSTRUCTIONS?
	BNE	BB3
	LDA	TIMR2H
	CMP	TIME2H
	BNE	BB3
	LDA	INDEX2		;RESTORE Y REGISTER
	TAY
	LDA	(E2L),Y
	STA	TIME2L
	INY
	LDA	(E2L),Y
	STA	TIME2H
	INY
	LDA	(E2L),Y
	STA	VX2
	INY
	LDA	(E2L),Y
	STA	VY2
	INY
	LDA	(E2L),Y
	STA	SHOOT2
	INY
	LDA	(E2L),Y
	STA	DIR2
	INY
	TYA			;SAVE Y REGISTER
	STA	INDEX2
*MOVE ENEMY SHIP
BB3	LDA	X2
	CLC
	ADC	VX2
	STA	X2
	LDA	SPEED		;MOVE ALIENS DOUBLE SPEED IF SHIP SPEEDING
	BEQ	BB35
	DEC	X2
BB35	LDA	Y2
	CLC
	ADC	VY2
	STA	Y2
	LDX	#$02
	JSR	MISSILE
*SHIP STILL ON SCREEN
A2	LDA	X2
	CMP	#$30		;X<48
	BL	BC6
	CMP	#$D1		;X>208
	BGE	BC6
	LDA	Y2
	CMP	#$30		;Y<48
	BL	BC6
	CMP	#$E1		;Y>224
	BGE	BC6
	JSR	PLTST2
	JMP	EE2
BC6	LDA	#$00
	STA	ONSCR2
	LDA	NDLAY2
	STA	TDLAY2
	LDA	#$E0		;REMOVE ALIEN FROM SCREEN
	STA	HPOSP2
EE2	JSR	SOUND
PAST	JMP	XITVBK
***	IN "D:SCROLLIC"
*PART 3 OF SCROLLING GAME
*DISPLAY LIST INTERUPT ROUTINE
DLI	PHA
	LDA	#$90		;HI BYTE OF CUSTOM SET
	STA	WSYNC
	STA	CHBASE
	PLA
	RTI
*PUT SHAPE IN P/M AREA
PLOT	LDY	#$00		;COUNTER
	STA	(SHPML),Y	;PUT IN P/M AREA
	LDA	#$00		;NEED 0 TO ERASE EACH TIME
BD1	STA	(SHPM0L),Y	;ERASE OLD SHAPE FIRST
	INY
	CPY	#$08
	BL	BD1
	LDY	#$00
BD2	LDA	(SHPL),Y	;GET BYTE FROM PROPER SHAPE TABLE
	STA	(SHPML),Y	;PUT IN P/M AREA
	INY
	CPY	#$08
	BL	BD2
	LDA	SHPML		;TRANSFER NEW P/M POS TO OLD POS
	STA	TEMPL,X
	LDA	SHPMH
	STA	TEMPH,X
	RTS
PLTST	LDA	YPM0		;CORRECTED YPOS
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$04		;PLAYER0 IS 1K BEYOND START
	STA	SHPMH
	LDA	#<SHIP
	STA	SHPH
	LDA	#SHIP
	STA	SHPL
	LDX	#$00
	LDA	TEMPL,X
	STA	SHPM0L
	LDA	TEMPH,X
	STA	SHPM0H
	JSR	PLOT
	RTS
*PLOTSET1 SUBROUTINE
PLTST1	LDA	X1
	STA	HPOSP1
	LDA	Y1
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$05		;PLAYER#1 IS 1.25K BEYOND START
	STA	SHPMH
	LDA	#<ALIEN
	STA	SHPH
	LDX	RDSHP1
	LDA	ALIENPT,X
	STA	SHPL
	LDX	#$01
	LDA	TEMPL,X
	STA	SHPM0L
	LDA	TEMPH,X
	STA	SHPM0H
	JSR	PLOT
	RTS
PLTST2	LDA	X2
	STA	HPOSP2
	LDA	Y2
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$06		;PLAYER#1 IS 1.5K BEYOND START
	STA	SHPMH
	LDA	#<ALIEN
	STA	SHPH
	LDX	RDSHP2
	LDA	ALIENPT,X
	STA	SHPL
	LDX	#$02
	LDA	TEMPL,X
	STA	SHPM0L
	LDA	TEMPH,X
	STA	SHPM0H
	JSR	PLOT
	RTS
PLTST3	LDA	X3
	STA	HPOSP3
	LDA	Y3
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$07		;PLAYER#1 IS 1.75K BEYOND START
	STA	SHPMH
	LDA	#<BOMBSH
	STA	SHPH
	LDA	#BOMBSH
	STA	SHPL
	LDX	#$03
	LDA	TEMPL,X
	STA	SHPM0L
	LDA	TEMPH,X
	STA	SHPM0H
	JSR	PLOT
	RTS
*MISSILE SUBROUTINE
MISSILE	LDA	SHOOT0,X
	BEQ	BF08
	LDA	TMIS0,X
	BNE	BF1
	INC	TMIS0,X		;INCREMENT TIMER
	LDA	DIR0,X		;SAVE TABLE DIRECTION
	STA	MDIR0,X
*ERASE OLD MISSILE & PUT AT SHIP
	LDA	Y0,X
	CLC
	ADC	#$04		;CORRECT TO SHIP CENTER
	STA	Y0M,X
	LDA	X0,X
	CLC
	ADC	#$04
	STA	X0M,X
	CPX	#$02
	BEQ	BF05
	JSR	MISET1
	JMP	DD
BF05	JSR	MISET2
	JMP	DD
BF08	LDA	TMIS0,X
	BNE	BF1
	JMP	DD
BF1	LDA	TMIS0,X
	CMP	#$1E		;MISSILE CAN ONLY MOVE 30 CYCLES
	BGE	E
*MOVE MISSILE IN PROPER DIRECTION
BF2	LDY	MDIR0,X
	LDA	VMX,Y
	ASL			;DOUBLE VELOCITY
	CLC
	ADC	X0M,X
	STA	X0M,X
	LDA	VMY,Y
	ASL			;DOUBLE VELOCITY
	CLC
	ADC	Y0M,X
	STA	Y0M,X
*HAS MISSILE HIT SCREEN EDGE
	CMP	#$30
	BGE	BF23
	JMP	E
BF23	CMP	#$D8
	BL	BF24
	JMP	E
BF24	LDA	X0M,X
	CMP	#$30
	BGE	BF25
	JMP	E
BF25	CMP	#$D0
	BL	BF26
	JMP	E
BF26	INC	TMIS0,X
*ERASE &	REPLOT MISSILE
ERASE	CPX	#$02
	BEQ	BF28
	JSR	MISET1
	JMP	DD
BF28	JSR	MISET2
	JMP	DD
*ERASE MISSILE OFF SCREEN
*MISSILES BOMBS & SHIPS PUT ON FAR LEFT TO PREVENT COLLISIONS
*WITH ALIENS & THEIR MISSILES PUT AT FAR RIGHT
E	LDA	#$E8
	STA	X0M,X		;PLOT OFF SCREEN
	CPX	#$02
	BEQ	BF31
	JSR	MISET1
	JMP	BF7
BF31	JSR	MISET2
BF7	LDA	#$00
	STA	TMIS0,X
DD	RTS
*PUT MISSILE SHAPE IN P/M AREA SUBROUTINE
MPLOT	LDY	#$00
BG1	LDA	(SHPM0L),Y
	AND	MASK
	STA	(SHPM0L),Y
	INY
	CPY	#$02
	BL	BG1
	LDY	#$00
BG2	LDA	(SHPL),Y
	ORA	(SHPML),Y
	STA	(SHPML),Y
	INY
	CPY	#$02
	BL	BG2
	LDA	SHPML
	STA	SHPM0L
	LDA	SHPMH
	STA	SHPM0H
	RTS
*SETUP TO PLOT MISSILE 1
MISET1	LDA	Y1M		;MISSILE POSITION CORRECTED
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$03		;MISSILES .75K BEYOND START
	STA	SHPMH
	STA	SHPM0H
	LDA	MISL0,X		;POINTER TO CORRECT MISSILE SHAPE
	STA	SHPL
	LDA	#<MSHAPE	;HI BYTE BOTH P/M SHAPES SAME
	STA	SHPH
	LDA	YMISO1
	STA	SHPM0L
	LDA	MASK1
	STA	MASK
	JSR	MPLOT
	LDA	SHPM0L
	STA	YMISO1
	LDA	X1M
	STA	HPOSM1		;MISSILE 1 HORIZ POS
	RTS
*SETUP TO PLOT MISSILE 2
MISET2	LDA	Y2M		;MISSILE POSITION CORRECTED
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$03		;MISSILES .75K BEYOND START
	STA	SHPMH
	STA	SHPM0H
	LDA	MISL0,X		;POINTER-TO CORRECT MISSILE SHAPE
	STA	SHPL
	LDA	#<MSHAPE	;HI BYTE BOTH P/M SHAPES SAME
	STA	SHPH
	LDA	YMISO2
	STA	SHPM0L
	LDA	MASK2
	STA	MASK
	JSR	MPLOT
	LDA	SHPM0L
	STA	YMISO2
	LDA	X2M
	STA	HPOSM2		;MISSILE 2 HORIZ POS
	RTS
*SETUP TO PLOT MISSILE 0
MISET0	LDA	Y0M		;MISSILE POSITION CORRECTED
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$03		;MISSILES .75K BEYOND START
	STA	SHPMH
	STA	SHPM0H
	LDA	MISL0,X		;POINTER TO CORRECT MISSILE SHAPE
	STA	SHPL
	LDA	#<MSHAPE	;HI BYTE BOTH P/M SHAPES SAME
	STA	SHPH
	LDA	YMISO0
	STA	SHPM0L
	LDA	MASK0
	STA	MASK
	JSR	MPLOT
	LDA	SHPM0L
	STA	YMISO0
	LDA	X0M
	STA	HPOSM0		;MISSILE 0 HORIZ POS
	RTS
LASER	LDA	LASON,X
	BNE	BH1
	LDA	GALIVE,X
	BNE	BH11
	JMP	EL
BH11	LDA	#$01		;TURN LASER ON
	STA	LASON,X
	LDA	#$70
	CLC
	ADC	YG,X
	STA	LPOSH,X
	DEC	LPOSH,X		;BEAM STARTS JUST ABOVE GUN
	LDA	XG,X
	STA	LPOSL,X
	DEC	LPOSL,X
	LDA	#$03		;DELAY BETWEEN MOVENTS
	STA	LCOUNT,X
	LDA	LPOSH,X
	STA	GROUNH
	LDA	LPOSL,X
	STA	GROUNL
	LDA	#$62		;PLOT INITIAL POSITION LASER
	STA	(GROUNL),Y
	JMP	EL
BH1	DEC	LCOUNT,X
	LDA	LCOUNT,X	;MOVE BEAM EVERY 3RD FRAME
	BNE	EL
	LDA	LPOSH,X		;AT TOP OF SCREEN?
	CMP	#$70
	BNE	BH2
	LDA	LPOSH,X
	STA	GROUNH
	LDA	LPOSL,X
	STA	GROUNL
	LDA	#$00		;ERASE LASER
	STA	(GROUNL),Y
	LDA	#$00		;TURN LASER OFF
	STA	LASON,X
	LDA	#$50		;DELAY BETWEEN FIRING
	STA	LDELAY,X
	JMP	EL
BH2	LDA	LPOSH,X
	STA	GROUNH
	LDA	LPOSL,X
	STA	GROUNL
	LDA	#$00		;ERASE OLD POSITION LASER
	STA	(GROUNL),Y
	DEC	GROUNH
	DEC	LPOSH,X
	DEC	GROUNL
	DEC	LPOSL,X
	LDA	#$62
	STA	(GROUNL),Y	;PLOT NEW POSITION
	LDA	#$03
	STA	LCOUNT,X
EL	RTS
*BOMB SUBROUTINE
BOMB	LDA	DELAY		;PREVENT BOMB DROP DURING DELAY
	BNE	BJ1
	LDA	STRIG0		;BUTTON PRESSED=O
	BEQ	BJ2
BJ1	LDA	BOMBON
	BNE	BJ4
	JMP	EBM
BJ2	LDA	BACK
	BEQ	BJ1
BJ3	LDA	BOMBON
	BNE	BJ4
*DROP BOMB INITALLY
	LDA	YPM0		;CENTER BOMB UNDER SHIP
	CLC
	ADC	#$0A
	STA	Y3
	LDA	XPM0
	CLC
	ADC	#$05
	STA	X3
	LDA	#$00
	STA	VY3
	STA	VTEMP		;INITILIZE ACCELERATION
	LDA	#$01
	STA	BOMBON
	LDX	#$03
	JSR	PLTST3
	JMP	EBM
*CALCULATE & PLOT NEW BOMB POSITION
BJ4	INC	VTEMP
	LDA	VTEMP
	LSR			;DIVIDE BY 4
	LSR
	CMP	#$03
	BL	BJ45
	LDA	#$03		;CLIP TO 3
BJ45	STA	VY3		;NEW VY3
	LDA	Y3
	CLC
	ADC	VY3
	STA	Y3
	LDA	X3
	CLC
	ADC	#$01		;FORWARD VEL-1
	STA	X3
	LDX	#$03
	JSR	PLTST3
EBM	RTS
*SCORE SUBROUTINE
SCORE3	INC	SR10
	LDA	SR10
	CMP	#$1A		;ADD 16 FOR INTERNAL VALUES
	BL	SCORE2
	INC	SR100
	LDA	#$10		;CHARACTER 0 IS INTERNAL $10
	STA	SR10
SCORE2	INC	SR10
	LDA	SR10
	CMP	#$1A
	BL	SCORE
	INC	SR100
	LDA	#$10
	STA	SR10
SCORE	INC	SR10
	LDA	SR10
	CMP	#$1A
	BL	BK1
	INC	SR100
	LDA	#$10
	STA	SR10
BK1	LDA	SR100
	CMP	#$1A
	BL	BK2
	INC	SR1000
	LDA	#$10
	STA	SR100
BK2	LDA	SR1000
	CMP	#$1A
	BL	BK3
	INC	SR10T
	LDA	#$10
	STA	SR1000
*PLACE VALUES IN SCORE LINE
BK3	LDA	SR10
	STA	INFO+38
	LDA	SR100
	STA	INFO+37
	LDA	SR1000
	STA	INFO+36
	LDA	SR10T
	STA	INFO+35
	RTS
*ERASE SHIP SUBROUTINE
XSHIP	LDA	#$00
	STA	EXCOUNT
	LDA	#$01		;TURN DEREZ EXPLOSION ON
	STA	REZFLAG
	LDA	#$40		;TURN ON SHIP EXPLOSION SOUND
	STA	SEXTIME
	DEC	SHIPNUM
	LDA	SHIPNUM
	STA	INFO+26
	CMP	#$10		;0 SHIPS?
	BEQ	EGAME
	LDA	#$01		;TURN ON DELAY
	STA	DELAY
	LDA	#$00		;4 SECOND DELAY
	STA	$14
	LDA	#$00
	STA	$13
	LDA	#$F0		;4 SECOND DELAY
	STA	NDLAY1
	LDA	#$D0		;3+ SECOND DELAY
	STA	NDLAY2
	RTS
EGAME	LDA	XS		;END GAME BY WRITEING "END GAME"
	ADC	#$14
	STA	OVER
	TAX
	LDY	#$00
BM1	LDA	GOVER,Y
	STA	$7B00,X
	INX
	INY
	CPY	#$09
	BL	BM1
*TEST IF NEW HIGH SCORE
HIGH	SEC
	LDA	SR10T
	SBC	HSR10T
	BEQ	BN1		;TEST NEXT DIGIT IF 0
	BPL	THIGH		;UPDATE HI SCORE
	BMI	ED		;SCORE<HI SCORE EXIT
BN1	SEC
	LDA	SR1000
	SBC	HSR1K
	BEQ	BN2
	BPL	THIGH
	BMI	ED
BN2	SEC
	LDA	SR100
	SBC	HSR100
	BEQ	BN3
	BPL	THIGH
	BMI	ED
BN3	SEC
	LDA	SR10
	SBC	HSR10
	BMI	ED
THIGH	LDA	SR10		;UPDATE NEW HIGH SCORE
	STA	HSR10
	LDA	SR100
	STA	HSR100
	LDA	SR1000
	STA	HSR1K
	LDA	SR10T
	STA	HSR10T
ED	LDA	#$01
	STA	DELAY
	LDA	#$00		;4 SECOND DELAY
	STA	$14
	STA	$13
	RTS
*SUBROUTINE TO REPLACE MISSILE BASES
	STA	$852B
	STA	$854A
	STA	$8669
	STA	$8384
	STA	$8597
	STA	$84A9
	STA	$85D3
	LDA	#$64
	STA	$842B
	STA	$844A
	STA	$8569
	STA	$8284
	STA	$8497
	STA	$83A9
	STA	$84D3
	NOP
MBSUB	LDA	#$00
	STA	MBCOUNT
	LDA	#$63		;MISSILES
	STA	$852B
	STA	$854A
	STA	$8669
	STA	$8384
	STA	$8597
	STA	$84A9
	STA	$85D3
	LDA	#$64
	STA	$842B
	STA	$844A
	STA	$8569
	STA	$8284
	STA	$8497
	STA	$83A9
	STA	$84D3
	RTS
*TEST TARGET HIT SUBROUTINE
RTARGET	LDA	POS		;CALC PLAYFIELD POS OF BOMB OR MISSILE
	SEC
	SBC	#$20
	CLC
	ADC	FS
	LSR			;DIVIDE BY 8
	LSR
	LSR
	CLC
	ADC	XS
	STA	BTARGET
	DEC	BTARGET		;ALSO TEST VALUE ON EACH SIDE
*CHECK FOR LASER BASE COLLISION
	LDA	#$00
	STA	STRIKE
LB	LDA	#$3E
	CMP	BTARGET
	BEQ	BP1
	LDA	#$3F
	CMP	BTARGET
	BNE	BP2
BP1	LDA	#$00		;SHUT OFF LASER BASE 1
	STA	$833E
	STA	$833F
	STA	GALIVE
	JMP	LBEND
BP2	LDA	#$71
	CMP	BTARGET
	BEQ	BP3
	LDA	#$72
	CMP	BTARGET
	BNE	BP4
BP3	LDA	#$00		;SHUT OFF LASER BASE 2
	STA	$8671
	STA	$8672
	STA	GALIVE+1
	JMP	LBEND
BP4	LDA	#$9E
	CMP	BTARGET
	BEQ	BP5
	LDA	#$9F
	CMP	BTARGET
	BNE	BP6
BP5	LDA	#$00		;SHUT OFF LASER BASE 3
	STA	$869E
	STA	$869F
	STA	GALIVE+2
	JMP	LBEND
BP6	LDA	#$CB
	CMP	BTARGET
	BEQ	BP7
	LDA	#$CC
	CMP	BTARGET
	BNE	MB
BP7	LDA	#$00		;SHUT OFF LASER BASE 4
	STA	$86CB
	STA	$86CC
	STA	GALIVE+3
LBEND	JSR	SCORE3
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	LDA	#$01
	STA	STRIKE
*CHECK AGAINST EACH OF 7 MISSILES
MB	LDY	#$00
BR1	LDA	MBPOSL,Y
	CMP	BTARGET
	BEQ	BR2
	INY
	CPY	#$07
	BNE	BR1
	JMP	MBEND
BR2	LDA	MBPOSL,Y	;STORE IN 0 PAGE
	STA	MBZL
	LDA	MBPOSH,Y
	STA	MBZH
	LDY	#$00
	LDA	#$00		;REMOVE MISSILE BASE
	STA	(MBZL),Y
	INC	MBZH
	LDA	#$00
	STA	(MBZL),Y
	JSR	SCORE
	LDA	#$20		;TURN ON EXPLOSION SOUND
	STA	SETIME
	INC	MBCOUNT
	LDA	#$01
	STA	STRIKE
MBEND	LDA	STRIKE
	CMP	#$01		;TARGET REMOVED?
	BEQ	BS1
	INC	BTARGET
	JMP	LB
BS1	RTS
*CHANCE SUBROUTINE 0 TO 4
CHANCE	LDA	RANDOM
	LSR			;DIVIDE BY 32
	LSR
	LSR
	LSR
	LSR
	CMP	#$05
	BGE	CHANCE		;TOO BIG TRY AGAIN
	STA	LUCK
	RTS
*DEREZ SUBROUTINE
EXPLODE	LDX	#$00
	LDA	TEMPL,X
	STA	SHPM0L
	LDA	TEMPH,X
	STA	SHPM0H
	LDA	YPM0
	STA	SHPML
	LDA	#<PDATA
	CLC
	ADC	#$04
	STA	SHPMH
	LDA	#<SHIP
	STA	SHPH
	LDA	#SHIP
	STA	SHPL
	LDY	#$00		;COUNTER
	LDA	#$00		;NEED 0 TO ERASE EACH TIME
BT1	STA	(SHPM0L),Y	;ERASE OLD SHAPE FIRST
	INY
	CPY	#$08
	BL	BT1
	LDY	#$00		;START WITH 0TH BYTE IN SHAPE
BT2	LDA	EXCOUNT		;FIRST TIME?
	BNE	BT22
	LDA	(SHPL),Y	;GET BYTE FROM PROPER SHAPE TABLE
	STA	DEREZ,Y		;DO THIS FIRST TIME
BT22	LDA	RANDOM
	ORA	RANDOM
	AND	DEREZ,Y
	STA	DEREZ,Y		;TEMP STORE DEGRADED SHAPE
	LDA	(SHPL),Y
	AND	RANDOM		;DEGRADE IMAGE RANDOMILY
	AND	RANDOM
	AND	RANDOM
	AND	RANDOM
	ORA	DEREZ,Y		;COMBINE 2 DEGRADED IMAGES SO LESS DEGRADED
	STA	(SHPML),Y	;PUT IN P/M AREA
	INY			;NEXT BYTE IN SHAPE
	CPY	#$08		;DONE?
	BL	BT2
	LDA	SHPML		;TRANSFER NEW P/M POS TO OLD POS
	STA	TEMPL,X
	LDA	SHPMH
	STA	TEMPH,X
	RTS
*SOUND SUBROUTINE
SOUND	LDA	SLTIM		;CHECK LASER TIMER FLAG
	BEQ	SOUND2		;IF 0 SKIP
	CMP	#$0F		;TIMER GOES FROM I TO 15
	BNE	BW1
	LDA	#$00
	STA	AUDF1
	STA	AUDC1
	JMP	SOUND2		;LEAVE
BW1	LDA	SLTIM1		;CHECK DELAY TIMER
	BNE	BW2		;IF NOT 0 COUNTDOWN TILL IT IS
	LDA	DELAY1		;GET NEW DELAY VALUE
	STA	SLTIM1		;STORE IT
	INC	SLTIM		;INCREMENT MAIN TIMER (ALSO OUR FREQ. VALUE
BW2	DEC	SLTIM1		;COUNTDOWN DELAY TIMER
	LDA	SLTIM		;OUR FREQ. VALUE
	ASL			;MULTIPLY BY 16
	ASL
	ASL
	ASL
	STA	AUDF1		;NEW TONE VALUE
	LDA	#$86		;DISTORTION 8 VOLUME 6
	STA	AUDC1
SOUND2	LDA	SETIME		;CHECK EXPLOSION TIMER FLAG
	BEQ	SOUND3		;IF AT 0 NO SOUND
	DEC	SETIME		;COUNTDOWN
	LSR			;DIVIDE BY 2 TO GET VOLUME 0-16
	STA	AUDC1		;TELL POKEY NEW SOUND VOLUME-
				;-UPPER NIBBLE (DISTORTION) IS AT 0
	LDA	#$40		;TONE
	STA	AUDF1
SOUND3	LDA	SEXTIME		;CHECK EXPLOSION TIMER FLAG
	BEQ	BZ1		;IF AT 0 NO SOUND
	DEC	SEXTIME		;COUNTDOWN
	LSR			;DIVIDE BY 4 TO GET VOLUME 0-16
	LSR
	STA	AUDC4		;TELL POKEY NEW SOUND VOLUME-
				;-UPPER NIBBLE (DISTORTION IS AT 0
	LDA	#$40		;TONE
	STA	AUDF4
BZ1	RTS
