ROM Computer Magazine Archive ROM ISSUE 9 — DECEMBER/JANUARY 1985 / PAGE 16


AIR ATTACK


By Bob Cockcroft




    Air Attack is an assembly language program for two players. One player controls the movement and bombs for the plane, and the other player, the ship. The object of the game is simple. The plane bombs the ship, and the ship shoots at the plane. To avoid being hit, the plane can move left or right, and up and down. The ship can only move left and right, but can fire in three directions: Up, Left, and Right.
    Each player has his or her own advantages and disadvantages. The plane is able to fly up and down, making it more difficult for the ship to shoot it. The boat, on the other hand, can fire three shots to the plane's one. This makes it easier for the boat to shoot down the plane. To destroy the plane, the boat must hit it directly in the center. The same goes for the plane. This makes it a little more difficult.
    When a player is hit he blows up, and a point is added to the other person's score. There is no set limit, so play as long as you want. To pause the game, simply press the spacebar once, and the game will stop. To restart it, press any key.
    This game, written on the Synassembler, requires 48K and two joysticks. It uses player/missile graphics to create the boat and plane. For the background, character graphics written in BASIC are used.
    This game can be acquired by sending $3.00 and a blank disk or cassette to:

ROM MAGAZINE
P.O. BOX 252
Maple Ridge, B.C.
V2X 7G1
CANADA

BASIC LISTING

1 REM ****************************
2 REM *       AIR ATTACK         *
5 REM *          48K             *
7 REM ****************************
10 P5=0:55=0
15 POSITION 10,10:? :loading data (1 min)"
20 FOR X=9 TO 2086
25 READ D
30 POKE 34000+X,D
40 NEXT X
82 ROMSET=57344:RAMT=PEEK(106)-4
84 NSET=RAMT*256
85 POKE 106,PEEK(106)-5:GRAPHICS 0
86 POKE 752,1:POSITION 13,10:? "loading data"
87 FOR L=1 TO 1024:POKE NSET+L-1,PEEK(ROMSET+L-1):NEXT L
90 FOR L1=1 TO 7
92 READ LOC
94 SET=NSET*LOCIF8
95 FOR L2=0 TO 7:READ D
96 POKE SET+L2,D
97 NEXT L2
98 NEXT L1
99 POKE 756,NSET/256
110 DL=PEEK(560)+256*PEEK(561)
120 REM * LOAD INTERRUPT ROUTINE *
130 POKE DL+23,2+128:REM * IR MODE BYTE+128 *
140 FOR X=0 TO 14
150 READ D
160 POKE 1770+X,D
170 NEXT X
180 REM * INTERRUPT ROUTINE *
210 REM " SET INTERRUPT POINTERS *
220 POKE 512,234:POKE 513,6
230 REM * ALLOW INTERRUPT *
240 POKE 54286,192
500 POSITION 30,18
505 POKE 752,1
510 ? "!#$%##$#$#$"
520 POSITION 13,10
530 ? "            "
540 POSITION 15,18
550 ? "!#$#$##$%"
560 POSITION 0,18
570 ? "#$%$$#$$#%%$%"
600 POSITION 2,2
610 ? " "
620 ? " "
630 ? " "
640 ? " "
650 POSITION 34,2
660 ? " "
665 POSITION 34,3
670 ? " "
675 POSITION 34,4
680 ? " "
685 POSITION 34,5
690 ? " "
700 POSITION 18,7
710 ? "Plane Score: "
720 POSITION 10,8
730 ? "Ship Score : "
900 POSITION 23,7:7 PS
910 POSITION 23,8:? SS
1000 X=USR(34000)
1005 POKE 77,0
1010 SETCOLOR 2,11,2
1020 PS=PS+PEEK(1577)
1025 SS=SS+PEEK(1576)
1030 GOTO 900
20000 DATA 104,169,147,141,2,219,169,131,141,3,210,169,62,141,47,2,169,80,141,192,2,169,80,141
20005 DATA 193,2,169,15,141,194,2,169,60,141,195,2,169,64,141,7,212,169,3,141,29,208,169,1
20010 DATA 141,39,298,162,0,169,0,157,0,68,157,9,69,157,9,79,157,0,71,157,0,67,232,224
20015 DATA 255,208,236,169,129,141,8,6,24,105,8,141,9,6,173,8,6,141,0,208,173,9,6,141
20020 DATA 1,208,162,0,189,178,140,157,192,68,232,224,5,208,245,162,8,189,183,140,157,192,69,232
20025 DATA 224,5,288,245,169,220,141,10,6,169,130,141,2,6,170,160,0,185,198,140,157,0,70,200
20030 DATA 232,192,6,208,244,173,18,6,141,2,208,169,1,141,18,6,141,37,6,169,7,141,16,6
20035 DATA 169,50,141,19,6,169,10,141,20,6.169,141,39,6,141,40,6,141,41,6,141,26,6
20040 DATA 141,27,6,141,28,6,141,29,6,141,32,6,141,34,6,141,35,6,141,36,6,141,38, 6
20045 DATA 238,22,6,173,22,6,201,50,240,3,76,13,134,169,9,141,22,6,173,132,2,201,0,208
20050 DATA 3,76,10,134,173,120,2,291,11,240,7,281,7,248,31,76,10,134,173,8,6,201,50,240
20055 DATA 18,206,8,6,173,8,6,141,0,208,206,9,6,173,9,6,141,1,298,76,10,134,173,8
20060 DATA 6,201,190,240,18,238,8,6,173,8,6,141,0,208,236,9,6,173,9,6,141,1,208,76
20065 DATA 10,134,76,13,134,173,34,6,281,0,240,3,76,99,135,238,21,6,173,21,6,205,20,6
20070 DATA 240,3,76,99,135,169,9,141,21,6,173,121,2,201,15,240,3,141,16,6,201,11,288,3
20075 DATA 76,100,134,201,7,268,3,76,129,134,281,14,2e8,3,76,162,134,201,19,208,3,76,162,134
20080 DATA 201,6,208,3,76,162,134,291,15,240,3,76,193,134,173,16,6,76,224,134,174,20,6,224
20085 DATA 255,240,19,173,39,6,201,0,240,8,224,10,240,1,282,76,123,134,232,142,20,6,76,224
20090 DATA 134,174,20,6,224,1,240,246,173,39,6,201,0,240,8,224,250,240,1,232,76,156,134,224
20095 DATA 16,248,1,2•2,142,20,6,76,224,134,174,2,6,224,58,240,4,202,142,2,6,173,16,6
20100 DATA 281,10,208,3,76,100,134,201,6,208,3,76,129,134,76,224,134,174,2,6,224,175,240,4
20105 DATA 232,142,2,6,173,16,6,281,9,208,3,76,100,134,201,5,208,3,76,129,134,76,224,134
20110 DATA 173,20,6,201,250,208,29,173,39,6,201,0,240,8,169,0,141,39,6,76,254,134,169,1
20115 DATA 141,39,6,76,58,135,141,39,6,76,58,135,173,39,6,201,0,208,3,76,17,135,76,58
20120 DATA 135,174,2,6,168,8,185,198,140,157,0,70,232,288,192,10,208,244,173,10,6,281,225,208
20125 DATA 5,169,25,141,18,6,238,10,6,173,18,6,141,2,288,76,99,135,174,2,6,160,0,185
20130 DATA 188,140,157,0,70,200,232,192,10,208,244,173,10,6,201,25,208,5,169,225,141,10,6,206
20135 DATA 10,6,173,10,6,141,2,208,76,99,135,173,133,2,201,0,240,3,76,142,135,173,26,6
20140 DATA 201,0,208,26,173,10,6,141,12,6,173,2,6,141,4,6,169,1,141,26,6,173,39,6
20145 DATA 141,30,6,76,142,135,173,26,6,201,0,208,3,76,3,136,173,30,6,201,8,208,50,238
20150 DATA 12,6,238,4,6,174,12,6,142,4,208,172,4,6,169,0,153,8,67,185,1,67,24,105
20155 DATA 2,153,1,67,185,2,67,24,105,3,153,2,67,185,3,67,24,105,2,153,3,67,76,3
20160 DATA 136,206,12,6,238,4,6,174,126,142,4,208,172,4,6,169,8,153,0,67,185,1,67
20165 DATA 24,105,1,153,1,67,185,2,67,24,105,3,3,153,2,67,185,3,67,24,105,1,153,3,67
20170 DATA 76,3,136,162,0,169,12,141,31,6,189,27,6,201,0,208,3,76,188,136,173,132,2,201
20175 DATA 8,240,3,76,47,136,173,120,2,281,11,208,3,76,53,136,201,7,208,3,76,62,136,222
20180 DATA 5,6,76,71,136,222,5,6,222,13,6,76,71,136,222,5,6,254,13,6,76,71,136,189
20185 DATA 13,6,157,5,208,188,5,6,185,0,67,24,109,31,6,153,8,67,185,1,67,24,109,31
20190 DATA 6,153,1,67,169,0,153,2,67,76,188,136,232,224,3,248,28,224,2,208,0,169,192,141
20195 DATA 31,6,76,10,136,169,48,141,31,6,76,10,136,173,4,6,281,196,208,23,169,0,141,26
20200 DATA 6,141,4,208,141,12,6,172,4,6,153,1,67,153,2,67,153,3,67,162,8,189,5,6
20205 DATA 201,25,240,10,189,13,6,281,18,240,3,76,202,136,169,8,157,27,6,157,5,208,157,13
20210 DATA 6,188,5,6,153,8,67,153,1,67,232,224,3,288,214,76,210,136,173,132,2,281,0,240
20215 DATA 11,169,0,141,0,210,141,1,218,76,43,137,169,90,141,0,210,169,105,141,1,218,173,27
20220 DATA 6,201,0,208,5,162,8,76,21,137,173,28,6,281,0,288,5,162,1,76,21,137,173,29
20225 DATA 6,201,0,208,5,162,2,76,21,137,76,43,137,169,1,157,27,6,173,8,6,24,105,7
20238 DATA 157,13,6,169,192,157,5,6,76,43,137,173,8,288,74,144,3,76,61,137,74,144,3,76
20235 DATA 61,137,76,108,137,173,32,6,201,8,240,3,76,108,137,169,1,141,32,6,141,33,6,169
20240 DATA 0,141,26,6,141,35,6,141,4,208,141,12,6,172,4,6,153,1,67,153,2,67,153,3
20245 DATA 67,76,108,137,162,0,189,9,208,74,74,74,176,3,76,146,137,169,1,141,,34,6,169,0
20250 DATA 157,27,6,157,5,208,157,13,6,188,5,6,153,0,67,153,1,67,232,224,3,208,215,76
20255 DATA 154,137,169,1,141,30,288,76,162,137,173,32,6,201,8,288,3,76,244,158,238,35,6,173
20260 DATA 8,6,24,105,3,141,3,208,173,33,6,201,1,208,3,76,218,137,201,2,208,3,76,21
20265 DATA 138,281,3,208,3,76,80,138,281,4,288,3,76,139,138,76,198,138,173,35,6,201,252,208
20270 DATA 11,238,33,6,169,0,141,55,6,76,244,138,281,1,240,3,76,244,138,169,222,141,195,2
20275 DATA 160,192,162,8,189,208,148,153,0,71,232,200,224,9,208,244,169,24,141,0,210,169,14,141
20280 DATA 1,210,76,244,138,173,35,6,201,250,208,11,238,33,6,169,0,141,35,6,76,244,138,201
20285 DATA 1,240,3,76,244,138,169,11,141,195,2,160,192,162,0,189,218,140,153,0,71,232,200,224
20290 DATA 9,208,244,169,32,141,0,210,169,14,141,1,210,76,244,138,173,35,6,201,250,288,11,238
20295 DATA 33,6,169,0,141,35,6,76,244,138,201,1,240,3,76,244,138,169,53,141,195,2,160,192
20300 DATA 162,0,189,228,140,153,0,71,232,288,224,9,200,244,169,100,141,0,210,169,5,141,1,210
20305 DATA 76,244,138,173,35,6,201,250,208,11,238,33,6,169,8,141,35,6,76,244,138,201,1,240
20310 DATA 3,76,244,138,169,56,141,195,2,160,192,162,0,189,238,148,153,8,71,232,200,224,9,208
20315 DATA 244,169,60,141,0,218,169,10,141,1,210,76,244,138,169,0,141,35,6,141,195,2,141,32
20320 DATA 6,169,1,141,33,6,162,0,160,192,189,248,148,153,8,71,232,2A0,224,9,288,244,169,0
28325 DATA 141,0,210,141,1,210,238,41,6,76,244,138,173,38,6,281,0,240,3,76,87,139,173,34
20330 DATA 6,201,0,208,3,76,84,139,258,2,6,238,2,6,173,2,6,201,192,208,3,76,81,139
20335 DATA 281,191,208,3,76,81,139,162,0,172,2,6,169,0,153,254,69,153,255,69,173,39,6,281
20340 DATA 0,208,15,189,188,140,153,0,78,232,208,224,5,208,244,76,84,139,189,198,140,153,8,70
20345 DATA 232,200,224,5,208,244,76,84,139,76,87,139,76,168,140,173,34,6,201,8,208,3,76,168
20350 DATA 140,238,36,6,169,1,141,38,6,173,37,6,281,1,208,3,76,139,139,201,2,208,3,76
20355 DATA 198,139,281,3,208,3,76,1,148,201,d,288,3,76,68,140,76,119,140,173,36,6,281,250
20360 DATA 208,11,238,37,6,169,0,141,36,6,76,168,140,201,1,248,3,76,168,140,169,222,141,194
20365 DATA 2,168,192,162,8,189,208,140,153,0,70,232,200,224,9,208,244,169,24,141,0,218,169,14
20370 DATA 141,1,218,76,168,140,173,36,6,201,250,208,11,238,37,6,169,8,141,36,6,76,168,140
20375 DATA 201,1,240,3,76,168,140,169,11,141,194,2,160,192,162,0,189,218,140,153,0,70,232,200
20380 DATA 224,9,208,244,169,32,141,0,210,169,14,141,1,218,76,168,140,173,36,6,201,250,208,11
20385 DATA 238,37,6,169,8,141,36,6,76,168,140,201,1,240,3,76,168,140,169,53,141,194,2,160
20390 DATA 192,162,0,189,228,140,153,0,78,232,200,224,9,208,244,169,108,141,8,210,169,5,141,1
20395 DATA 210,76,168,140,173,36,6,281,250,208,.11,238,37,6,169,8,141,36,6,76,168,140,201,1
20400 DATA 240,3,76,168,140,169,56,141,194,2,160,192,162,8,189,238,140,153,0,70,232,200,22;,9
20405 DATA 208,244,169,68,141,0,210,169,10,141,1,210,76,168,140,Lag,0,141,34,6,141,36,6,141
20410 DATA 194,2,141,38,6,169,1,141,37,6,162,0,160,192,189,248,140,153,0,70,232,200,224,9
20415 DATA 208,244,169,1,141,48,6,169,8,141,8,210,141,1,210,96,173,252,2,201,33,240,249,76
20420 DATA 168,133,1,9,59,255,127,128,136,184,255,254,0,1,3,63,255,28,8,8,8,0,0,128
20425 DATA 192,252,255,56,8,0,0,0,0,0,42,28,126,28,42,0,0,0,0,42,73,28,247,28
20430 DATA 8,34,0,0,0,24,36,67,194,36,24,8,8,0,66,129,0,0,8,8,129,66,0
30000 DATA 1,1,5,5,21,21,85,85,85
30010 DATA 8,65,69,85,85,85,85,85,85
30020 DATA 3,16,80,84,85,85,85,85,85
30030 DATA 4,0,0,68,69,85,85,85,85
30040 DATA 5,64,64,80,84,84,84,85,85
30050 DATA 6,8,8,65,69,69,85,85,85
30060 DATA 7,0,0,8,28,62,107,8,28
31000 DATA 72,138,72,Lag, 121,141,10,212
31010 DATA 141,24,208,104,170,104,64

Assembler Listing

00010   .LI OFF
80011   .OR $84D0
0O812   .TA $2600
00014   .TF "D:AIRATT.OBJ"
00030 VERT0  .EQ $600   ;VERT PEG
00040 VERT1  .EQ $601   ;VERT PL1
00050 VERT2  .EQ $602   ;VERT PL2
00060 VERT3  .EQ $603   ;VERT PL3
00070 MVERT0  .EQ $604  ;VERT ML0
00080 MVERT1  .EQ $605  ;VERT ML1
00090 MVERT2  .EQ $606  ;VERT ML2
00100 MVERT3  .EQ $607  ;VERT ML3
00110 HORZ0  .EQ $608   ;HORZ PL0
00120 HORZ1  .EQ $609   ;HORZ PL1
00130 HORZ2  .EQ $60A   ;HORZ PL2
00140 HORZ3  .EQ $60B   ;HORZ PL3
00150 MHORZO .EQ $60C   ;HORZ MEG
00160 MHORZI .EQ $60D   ;HORZ ML1
00170 MHORZ2 .EQ $60E   ;HORZ ML2
00180 MHORZ3 .EQ $60F   ;HORZ ML3
00185 MSS .EQ $0300
00190 PLY0 .EQ d4400    ;LOC PLAYER 0
00200 PLY1 .EQ $4500    ;LOC PLAYER 1
00210 PLYZ .EQ $4600    ;LOC PLAYER 2
00220 PLY3 .EQ $4700    ;LOC PLAYER 3
00230 PSTICK .EQ $278
00240 PSTICK1 .EQ S279
00250 DIRSTICK .EQ $610
00260 TURCON .EQ $611
00270 TURTYP .EQ $612
00280 SPEED .EQ $613
00290 SPCON .EQ $614
00300 PCON .EQ $615
00310 SCON .EQ $616
00320 EVER2 .EQ $617
00330 EVER21 .EQ $618
00340 PHF1 .EQ $626
00342 STRIG0 .EQ $284
00344 STRIGI .EQ $285
00346 FG0 .EQ $61A
00348 FG1 .EQ $61B
00350 FG2 .EQ $61C
00352 FG3 .EQ $61D
00354 GL0 .EQ $61E
00356 STORM .EQ $61F
00358 EXF .EQ $620
00360 EFR .EQ $621
00362 PHF .EQ $622
00364 ECON .EQ $623
00366 AECON .EQ $624
00368 AEFR .EQ $625
00470 DECT .EQ $627
00472 PTSP .EQ $628
00474 PTSS .EQ $629
01000 ST PLA
01002  LDA #147
01003  STA $D202
01004  LDA #131
01005  STA $D203
01010  LDA #62   ;SET UP PM GRAPHICS
01020  STA $22F
01030  LDA #80
01040  STA $2C0
01050  LDA #80
01060  STA $2C1
01070  LDA #15
01080  STA $2C2
01090  LDA #60
01100  STA $2C3
01110  LDA /$4000
01140  STA $D407
01150  LDA #3
81160  STA $D01D
01170 *
01180 * SET-UP SECTION
01190 *
01200  LDA #1
01210  STA $D01E    ;CLEAR COLLISIONS
01220  LDX #0       ;CLEAR PLAYERS
01230  LDA #0       ;AND MISSILES
01240 L17 STA PLY0,X
01250  STA PLY1,X
01260  STA PLY2,X
01270  STA PLY3,X
01275  STA MIS,X
01280  INX
01290  , CPX #255
01300  BNE L17
01310  LDA #120     ;SET SHIP POS.
81320  STA HORZ0
01330  CLC
01340  ADC #8
01350  STA HORZ1
01360  LDA HORZ0
01370  STA $D000
01380  LDA HORZ1
01390  STA $D001
01400 *
01410  LDX #0        ;DRAW SHIP
01420 L12 LDA SHIP,X
01430  STA PLY0+$C0,X
01440 INX
01450  CPX us
01460  BNE L12
01470 *
01480  LDX #0
01490 L14 LDA SHIP1,X
01500  STA PLY1+$C0,X
01510  INX
01520  CPX #5
01530  BNE L14
01540 *
01550 *             DRAW PLANE
01560  LDA #220
01570  STA HORZ2
01580  LDA tt130
01590  STA VERT2
01600  TAX
01610  LDY 210
01620 L50 LDA SHAPED,V
01630  STA PLY2,X
01640  INY
01650  INX
01660  CPY #6
01670  BONE L50
01680  LDA HORZ2
01690  STA $D007
01700 *
01710  LDA #        ;SET TURN TYPE
01720  STA TURTYP
01725  STA AEFR
01730  LDA #7
01740  STA DIRSTICK
01750  LDA #50
01760  STA SPEED
01770  LDA #10      ;SET SPEED
01780  STA SPCON
01790  LDA #0       ;SET DIRECTION
01800  STA DECT
01805  STA PTSP
01807  STA PTSS
01810  STA FG0
01820  STA FG1
01830  STA FG2
01840  STA FG3
01850  STA EXF
01860  STA PHF
01870  STA ECON
01880  STA AECON
01890  STA PHF1
03000 *
03010 * START SECTION
03020 *
03030 STS INC SCON
03040  LDA SCON
03050  CMP #50
03060  BEQ L190
03070  JMP PSTS
03080 L190 LDA #0
03090  STA SCON
03091  LDA STRIG0
03092  CMP #0
03094  BNE LL10
03095  JMP DRAWS
03100 LL10 LDA PSTICK
03110  CMP #11
03120  BEQ SLEFT
03130  CMP #7
03140  BEQ SRIGHT
03150  JMP DRAWS
03160 *
03170 * SHIP LEFT
03180 *
03190 SLEFT LDA HORZ0
03200  CMP #50
03210  BEQ L10
03220  DEC HORZ0
03230  LDA HORZ0
03240  STA $D000
03250  DEC HORZ1
03260  LDA HORZ1
03270  STA $D001
03280 L10 JMP DRAWS
03290 *
03300 * SHIP RIGHT
03310 *
03320 SRIGHT LDA HORZ0
03330  CMP #190
03340  BEQ L11
03350  INC HORZ0
03360  LDA HORZ0
03370  STA $D000
03380  INC HORZ1
03390  LDA HORZ1
03400  STA $D001
03410 L11 JMP DRAWS
03420 *
03430 * DRAWS
03440 *
03450 DRAWS JMP  PSTS
03540 *
03550 * PLANE

03560 *
03570 PSTS LDA PHF
03572  CMP #0
03574  BEQ PSTIS
03575  JMP NET
03578 PSTIS INC PCON
03580  LDA PCON
03590  CMP SPCON
03600  BEQ L170
03610  JMP NET
03620 L170 LDA #0
03630  STA PCON
03640  LDA PSTICK1
03650  CMP #15
03660  BEQ L150
03670  STA DIRSTICK
03680 L150 CMP #11
03690  BNE L100
03700  JMP PLEFT
03710 L100 CMP #7
03720  BNE L101
03730  JMP PRIGHT
03740 L101 CMP #14
03750  BNE L19
03760  JMP PUP
03770 L19 CMP #10
03780  BNE L20
03790  JMP PUP
03800 L20 CMP #6
03810  BNE L21
03820  JMP PUP
03830 L21 CMP #15
03840  BEQ L22
03850  JMP PDOWN
03860 L22 LDA DIRSTICK
03870  JMP SHD
03880 *
03890 * PLEFT
03900 *
03910 PLEFT LDX SPCON
03920  CPX #255
03938  BEQ L120
03940  LDA DECT
03950  CMP #0
03960  BEQ L300
03962  CPX #10
03964  BEQ L305
03970  DEX
03980 L305 JMP L301
03990 L300 INX
04000 L301 STX SPCON
04010 L120 JMP SHD
04020 *
04030 * PRIGHT
04040 *
04050 PRIGHT LDX SPCON
04060  CPX #1
04070  BEQ L120
04080  LDA DECT
04090  CMP #0
04100  BEQ L303
04102  CPX #250
04104  BEQ L320
04110  INX
04120 L320 JMP L302
04130 L303 CPX #10
04132  BEQ L302
04134  DEX
04140 L302 STX SPCON
04150 L121 JMP SHD
04170 * PUP
04180 *
04190 PUP LDX VERT2
04200  CPX #50
04210  BEQ L125
04220  DEX
04230  STX VERT2
04240 L125 LDA DIRSTICK
04241  CMP #10
04242  BNE L330
04243  JMP PLEFT
04244 L330 CMP #6
04245  BNE L331
04246  JMP PRIGHT
04247 L331 JMP SHD
04250 *
04260 * PDOWN
04270 *
04280 PDOWN LDX VERT2
04290  CPX #175
04300  BEQ L126
04310  INX
04320  STX VERT2
04330 L126 LDA DIRSTICK
04331  CMP #9
04332  BNE L332
04333  JMP PLEFT
04334 L332 CMP #5
04335  BNE L333
04336  JMP PRIGHT
04337 L333 JMP SHD
04340 *
04350 *
04360 * TURN
04370 *
04380 SHD LDA SPCON
04390  CMP #250
04400  BNE L205
04410  LDA DECT
04420  CMP #0
04430  BEQ L220
04440  LDA #0
04450  STA DECT
04460  JMP L221
04470 L220 LDA #1
04480  STA DECT
04490  JMP SHC
04500 L221 STA DECT
04510  JMP SHC
04520 L205 LDA DECT
04530  CMP #0
04540  BNE L230
04550  JMP SHD1
04560 L230 JMP SHC
04570 *
04580 * SHD
04590 *
04600 SHD1 LDX VERT2
04610  LDY #0
04620 L35 LDA SHAPED,Y
04630  STA PLY2,X
04640  INX
04650  INY
04660  CPY #10
04670  BNE L35
04680  LDA HORZ2
04690  CMP #225
04700  BNE L160
04710  LDA #25
04720  STA HORZ2
04730 L160 INC HORZ2
04740  LDA HORZ2
04750  STA $D002
04760  JMP NET
04770 *
04780 *
04790 * SHC
04800 *
04810 SHC LDX VERT2
04820  LDY #0
04830 L206 LDA SHAPEC,X
04840  STA PLY2,X
04850  INY
04860  INX
04870  CPY #10
04880  BNE L206
04890  LDA HORZ2
04900  CMP #25
04910  BNE L207
04920  LDA #225
04930  STA HORZ2
04940 L207 DEC HORZ2
04950  LDA HORZ2
04960  STA $D002
04970  JMP NET
04980 *
04990 * MISSILE SECTION
05000 *
05010 NET LDA STRIG1
05020  CMP #0
05030  BEQ L350
05040  JMP MOV
05050 L350 LDA FG0
05060  CMP #0
05070  BNE MOV
05080  LDA HORZ2
85090  STA MHORZ0
05100  LDA VERT2
85110  STA MVERT0
05120  LDA #1
05130  STA FG0
05140  LDA DUCT
05150  STA GL0
05160  JMP MOV
05170 *
05180 MOV LDA FG0
05190  CMP #0
05200  BNE L354
05210  JMP L352
05220 L354 LDA GL0
05230  CMP #0
05240  BNE LL353
05250  INC MHORZ0
05260  INC MVERT0
05270  LDX MHORZ0
05280  STX $D004
05290  LDY MVERT0
05300  LDA #0
05310  STA MIS,Y
05320  LDA MIS+1,Y
05330  CLC
05340  ADC #2
05350  STA MIS+1,Y
05360  LDA MIS+2,Y
05370  CLC
05380  ADC #3
05390  STA MIS+2,Y
05400  LDA MIS+2,Y
05410  CLC
05420  ADC #2
05430  STA MIS+3,Y
05440  JMP L352
05450 *
05460 LL353 DEC MHORZ0
05470  INC MVERT0
05480  LDX MHORZ0
05490  STX $D004
05500  LDY MVERT0
05510  LDA #O
05520  STA MIS,Y
05530  LDA MIS+1,Y
05540  CLC
05550  ADC #1
05560  STA MIS+1,Y
05570  LDA MIS+2,Y
05580  CLC
05590  ADC #3
05600  STA MIS+2,Y
05610  LDA MIS+3,Y
05620  CLC
05630  ADC #1
05640  STA MIS+3,Y
05650  JMP L352
05660 *
05670 * MOVE SHIP MISSILES
05680 *
05690 L352 LDX #0
05700  LDA #12
05710  STA STORM
05720 LL2 LDA FG1,X
05730  CMP #0
05740  BNE L353
05750  JMP L355
05760 L353 LDA STRIG0
05770  CMP #0
05780  BEQ L356
05790  JMP M14
05800 L356 LDA PSTICK
05810  CMP #11
05820  BNE L357
05830  JMP M11
05840 L357 CMP #7
05850  BNE M14
05860  JMP M7
05870 *
05880 M14 DEC MVERT1,X
05890  JMP L360
05900 *
05910 M11 DEC MVERT1,X
05920  DEC MHORZ1,X
05930  JMP L360
05940 *
05950 M7 DEC MVERT1,X
05960  INC MHORZ1,X
05970  JMP L360
05980 *
05990 L360 LDA MHORZ1,X
06000  STA $D005,X
06010  LDY MVERT1,X
06020  LDA MIS,Y
06030  CLC
06040  ADC STORM
06050  STA MIS,Y
06060  LDA MIS+1,Y
06070  CLC
06080  ADC STORM
06090  STA MIS+1,Y
06100  LDA #0
06110  STA MIS+2,Y
06120  JMP L355
06130 *
06140 L355 INX
06150  CPX #3
06160  BEQ MAX
06170  CPX #2
06180  BNE LL1
06190  LDA #192
06200  STA STORM
06210  JMP  LL2
06220 LL1 LDA #48
06230  STA STORM
06240  JMP LL2
06250 *
06260 * MAX
06270 *
06280 MAX LDA MVERT0
06290  CMP #196
06300  BNE L361
06310  LDA #0
06320  STA FG0
06330  STA $D004
06340  STA MHORZ0
06341  LDY MVERT0
06342  STA MIS+1,Y
06343  STA MIS+2,Y
06344  STA MIS+3,Y
06350 *
06360 L361 LDX #0
06370 L363 LDA MVERT1,X
06380  CMP #25
06390  BEQ LL400
06392  LDA MHORZ1,X
06394  CMP #10
06395  BEQ LL400
06397  JMP L362
06400 LL400 LDA #0
06410  STA FG1,X
06420  STA $D005,X
06430  STA MHORZ1,X
06432  LDY MVERT1,X
06433  STA MIS,Y
06434  STA MIS+1,Y
06440 L362 INX
06450  CPX #3
06460  BNE L363
06470  JMP SPF
06480 *
06490 * SHIP TRIGGER
06500 *
06518 SPF LDA STRIG0
06520  CMP #0
06530  BEQ L370
06531  LDA #0
06532  STA $D200
06533  STA $D201
06540  JMP COL
06550 L370 LDA #90
06551  STA $D200
06552  LDA #105
06553  STA $D201
06559  LDA FG1
06560  CMP #0
06570  BNE L372
06580  LDX #0
06590  JMP FM
06600 L372 LDA FG2
06610  CMP #0
06620  BNE L373
06630  LDX #l
06640  JMP FM
06650 L373 LDA FG3
06660  CMP #0
06670  BNE L374
06680  LDX #2
06690  JMP FM
06700 L374 JMP COL
06710 *
06720 FM LDA #1
06730  STA FG1,X
06740  LDA HORZ0
06742  CLC
06744  ADC #7
06750  STA MHORZ1,X
06760  LDA #192
06770  STA MVERT1,X
06780  JMP COL
06790 *
06800 * COLLISIONS
06810 *
06820 COL LDA $D008
06630  LSR
06840  BCC L400
06850  JMP L' L401
06860 L400 LSR
06870  BCC L402
06880  JMP L401
06890 L402 JMP SBC
06900 *
06910 L401 LDA EXF
06920  CMP #0
06930  BEQ L403
06940  JMP SBC
06950 L403 LDA #1
06960  STA ENV
06970  STA EFR
06980  LDA #0
06990  STA FG0
07000  STA ECON
07010  STA $D004
07020  STA MHORZ0
07030  LDY MVERT0
07040  STA MIS+1,Y
07050  STA MIS+2,Y
07060  STA MIS+3,Y
07070  JMP SBC
07080 *
07090 * SHIP GUN HITS
07100 *
07110  SBC LDX #0
07120 LM10 LDA $D009,X
07130  LSR
07140  LSR
071SO  LSR
07160  BCS L410
07170  JMP LL20
07180 L410 LDA #1
07190  STA PHF
07200  LDA #0
07210  STA FG1,X
07220  STA $D005,X
07230  STA MHORZ1,X
07240  LDY MVERT1,X
07250  STA MIS,Y
07260  STA MIS+1,Y
07270 LL20 INX
07280  CPX #3
07290  BNE LM10
07300  JMP CLCOL
07310 *
07X20 * CLEAR COLLISIONS
07330 *
07340 CLCOL LDA #1
07350  STA $D01E
07360  , JMP EXPL
07370 *
07380 * EXPLOSSON
07390 *
07400 EXPL LDA EXF
07410  CMP #0
07420  BNE L411
07430  JMP HPD
07431 L411 TNC ECON
07432  LDA HORZ0
07433  CLC
07434  ADC #3
07435  STA $D003
07440  LDA EFR
07450  CMP #1
07460  BNE L412
07470  JMP FR1
07460 L412 CMP #2
07490  BNE L413
07500  JMP FR2
07510 L413 CMP #3
07520  BNE L414
07530  JMP FR3
07540 L414 CMP #4
07550  BNE L415
07560  JMP FR4
07570 L415 JMP FR5
07580 *
07590 FR1 LDA ECON
07650  CMP #252
07660  BNE L417
07670  INC EFR
07680  LDA #0
07690  STA ECON
07700  JMP HPD
07710 L417 CMP #l
07720  BEQ L418
07730  JMP HPD
07740 L418 LDA #222
07750  STA $2C3
07760  LDY #192
07770  LDX #0
07780 L419 LDA FRAMEI,X
07790  STA PLY3,Y
07800  INX
07810  INY
07820  CPX #9
07830  BNE L419
07832  LDA #24
07833  STA $D200
07834  LDA #14
07835  STA $D201
07840  JMP HPD
07650 *
07860 FR2 LDA ECON
07870  CMP #250
07880  BNE L717
07890  INC EFR
07900  LDA #0
08000  STA ECON
08010  JMP HPD
08020 L717 CMP #1
08030  BEQ L718
08040  JMP HPD
08050 L718 LDA #ll
08060  STA $2C3
08070  LDY #192
08080  LDX #0
08090 L719 LDA FRAME2,X
08100  STA PLY3,Y
08110  INX
08120  INY
08130 , CPX #9
08140  BNE L719
08142  LDA #32
08143  STA $D200
08144  LDA #14
08145  STA $D201
08150  JMP HPD
08170 FR3 LDA ECON
08180  CMP #250
08190  BNE L720
08700  INC EFR
08210  LDA #0
08220  STA ECON
08230  JMP HPD
08240 L720 CMP #1
08250  BEQ L721
08260  JMP HPD
08270 L721 LDA #53
08280  STA $2C3
08290  LDY #192
08300  LDX #0
08310 L722 LDA FRAME3,X
08320  STA PLY3,Y
08330  INX
08340  INY
08350  CPX #9
08360  BNE L722
08362  LDA #100
08363  STA $D200
08364  LDA #5
08365  STA $D201
08370  JMP HPD
08380 *
08390 FR4 LDA ECON
08400  CMP #250
08410  BNE L730
08420  INC EFR
08430  LDA #0
08440  STA ECON
08450  JMP HPD
08460 L730 CMP #1
08470  BEQ L731
08480  JMP HPD
08490 L731 LDA #56
08500  STA $2C3
08510  LDY #192
08520  LDX #0
08530 L732 LDA FRAME4,X
08540  STA PLY3,Y
08550  INX
88560  INY
08570  CPX #9
08580  BNE L732
08582  LDA #60
08583  STA $D200
08584  LDA #10
08585  STA $D201
08590  JMP HPD
08600 *
08610 FR5 LDA #0
08620  STA ECON
08630  STA $2C3
08640  STA EXF
08650  LDA #1
06660  STA EFR
08670  LDX #0
08680  LDY #192
08690 L420 LDA FRAMES,X
08700  STA PLY3,Y
08710  INX
08720  INY
08730  CPX #9
08740  BNE L420
08741  LDA #0
08742  STA $D200
08743  STA $D201
08744  INC PTSS
08750  JMP HPD
08760 *
08770 * HIT TO PLANE
08780 *
08790 HPD LDA PHF1
08791  CMP #0
08792  BEQ LR
08794  JMP LL05
08799 LR LDA PHF
08800  CMP #0
08810  BNE L500
08820  JMP POINT
08830 L500 INC VERT2
08840  INC VERT2
08850  LDA VERT2
08860  CMP #192
08870  BNE L501
08880  JMP L502
08890 L501 CMP #191
08900  BNE L503
08910  JMP L502
08920 *
08930 L503 LDX #0
08940  LDY VERT2
08950  LDA #0
08960  STA PLY2-2,Y
08970  STA PLY2-1,Y
08980  LDA DECT
08990  CMP #0
09000  BNE L505
09010 L504 LDA SHAPEC,X
09020  STA PLY2,Y
09030  INX
09040  INY
09050  CPX #5
09060  BNE L504
09070  JMP POINT
09080 *
09090 L505 LDA SHAPED,X
09100  STA PLY2,Y
09110  INX
09120  INY
09130  CPX #5
09140  BNE L505
09150  JMP POINT
09160 *
09170 L502 JMP LL05
09175 POINT JMP PON
09500 *
09510 * POINTS
09520 *
09530 *
09540 * EXPLOSION PLANE
09550 *
09560 LL05 LDA PHF
09570  CMP #0
09580  BNE A411
09590  JMP PON
09600 A411 INC AECON
09602  LDA #1
09604  STA PHF1
09650  LDA AEFR
09660  CMP #1
09670  BNE A412
09680  JMP AFR1
09690 A412 CMP #2
09700  BNE A413
09710  JMP AFR2
09720 A413 CMP #3
09730  BNE A414
09740  JMP AFR3
09750 A414 CMP #4
09760  BNE A415
09770  JMP AFR4
09780 A415 JMP AFR5
09790 *
09800 AFR1 LDA AECON
09810  CMP #250
09820  BNE A417
09830  INC AEFR
09840  LDA #0
09850  STA AECON
09860  JMP PON
09870 A417 CMP #1
09880  BEQ A418
09890  JMP PON
09900 A418 LDA #222
09910  STA $2C2
09920  LDY #192
09930  LDX #0
09940 A419 LDA FRAME1,X
09950  STA PLY2,Y
09960  INX
09970  INY
09980  CPX #9
09990  BNE A419
09992  LDA #24
09994  STA $D200
09995  LDA #14
09996  STA $D201
10000  JMP PON
10010 *
10020 AFR2 LDA AECON
10030  CMP #250
10040  BNE A717
10050  INC AEFR
10060  LDA #0
10070  STA AECON
10080  JMP PON
10090 A717 CMP #1
10100  BEQ A718
10110  JMP PON
10120 A718 LDA #11
10130  STA $2C2
10140  LDY #192
10150  LDX #0
10160 A719 LDA FRAME2,X
10170  STA PLY2,Y
10180  INX
10190  INY
10200  CPX #9
10210  BNE A719
10212  LOA #32
10213  STA $D200
10214  LDA #14
10215  STA $D201
10220  JMP PON
10230 *
10240 AFR3 LDA AECON
10250  CMP #250
10260  BNE A720
10270  INC AEFR
10280  LDA #0
10290  STA AECON
10300  JMP PON
10310 A720 CMP #1
10320  BEG A721
10330  JMP PON
10340 A721 LDA #53
10350  STA $2C2
10360  LDY #192
10370  LDX #0
10380 A722 LDA FRAME3,X
10390  STA PLY2,Y
10400  INX
10410  INY
10420  CPX #9
10430  BNE A722
10432  LDA #100
104S3  STA $D200
10434  LDA #5
10435  STA SD201
10440  JMP PON
10450 *
10460 AFR4 LDA AECON
10470  CMP #250
10480  BNE A730
10490  INC AEFR
10500  LDA #0
10510  STA AECON
10520  JMP PON
10530 A730 CMP #1
10540  BEQ A731
10550  JMP PON
10560 A731 LDA #56
10570  STA $2C2
10580  LDY #192
10590  LDX #0
10600 A732 LDA FRAME4,X
10610  STA PLY2,Y
10620  INX
10630  INY
10640  CPX #9
10650  BNE A732
10652  LDA #60
10653  STA SD200
10654  LOA 2210
10655  STA $D201
10660  JMP PON
10670 *
10680 AFR5 LDA #0
10685  STA PHF
10690  STA AECON
10700  STA $2C2
10702  STA PHF1
10720  LDA #1
10730  STA AEFR
10740  LDX #0
10750  LDY #192
10760 A420 LDA FRAME5,X
10770  STA PLY2,Y
10780  INX
10790  INY
10800  CPX #9
10810  BNE A420
10812  LDA #1
10813  STA PTSP
10815  LDA #0
10817  STA $D200
10818  STA $D201
10829  RTS
10830 *
10840 *
10850 *
10860 PON LDA $2FC
10870  CMP #33
10880  BEQ PON
10890  JMP STS
20000 SHIP .DA #1,#9,#59,#255,#127
20010 SHIP1 .DA #128,#136,#184,#255,#254
20020 SHAPEC .DA #0,#1,#3,#63,#255,#28,#0,#0,#0,#0
20030 SHAPED .DA #0,#128,#192,#252,#255,#56,#0,#0,#0,#0
20040 FRAME1 .DA #0,#0,#42,#28,#126,#28,#42,#0,#0,#0
20050 FRAME2 .DA #0,#42,#73,
#28,#247,#28,#8,#34,#0,#0
20060 FRAME3 .DA #0,#24,#36,#67,#194,#36,#24,#8,#0,#0
20070 FRAME4 .DA #66,#129,#0,#0,#0,#0,#129,#66,#0,#0
20080 FRAME5 .DA
#0,#0,#0,#0,#0,#0,#0,#0,#0,#0