On October, 16th, 2015, Kevin Savetz uploaded scans of the source code for Star Raiders to archive.org, written by Doug Neubauer.
This is the crowdsourced transcription at GitHub, which I’ve checked by assembling and comparing to the listing Curt Vendel salvaged from the Atari mainframe.
;
.TITLE 'STAR RAIDERS. VERSION 25.1 STARDATE-26-JUL-79'
;
; GAME COMPLETE 17-JUN-79
;
; NOTES
; RAM 0-1FFF
; ROM A000-BFFF
; SPILL OVER ROM 9800-9FFF
; E477G ; PROG START
;
; ALPHA CHARACTERS IN DMA ASCII
;
; *CAPS = ASCII EOR $20
; NUMBERS = ASCII
;
; 40 CHAR = $CC00
; 20 CHAR (*CAPS, NUMBERS), = $CC00
; 20 CHAR (CAPS, LOWR CASE), = $CE00
;
;
;
; UNIVERSE LOOKS LIKE SIGN HI BYTE LOW BYTE
; -INFINITY = 00 00 00
; 0 = 01 00 00
; +INFINITY = 01 FF FF
; -1 = 00 FF FF
;
;
;
; KEYCODE IS ORED WITH $C0
;
;
;
;
;
; STRRAM MEMORY DEFINED STRRAM+ TYPE NOTES
; 0 OBJ0 ZYLON
; 1 OBJ1 ZYLON
; 2 OBJ2 PHOTON
; 3 OBJ3 PHOTON
; 4 MISSILE PHOTON
; 5-N PLAY. STARS
; N+1-M PLAY. EXPLOS STARS
;
;
;
;
*=$0062
; ****************** POWER UP CLEARED RAM ****************
0062 MISDIF ; MISSION DIFFICULTY
*=*+1
0063 RESET ; ONE SHOT CONSOL KEY
*=*+1
0064 ATRACT ; GAME OVER FLAF =FF, ATRACT MODE
*=*+1
0065 REPMSG ; REPEAT MESSAGE BYTE
*=*+1
0066 TIMOUT ; ATRACT MODE TIMEOUT REG
*=*+1
; *******************************************************
0067 PAGE0
0067 PROGST ; WAIT FOR VBLANK= 00
*=*+1
; ********************** TEMP REG RAM **********************
0068 PNTR ; 2 BYTE MISC. TEMPOARY REG POINTER
*=*+2
006A TEMP ; TEMPOARY REGISTER
*=*+1
006B TEMP1 ; TEMP REG
*=*+1
006C TEMP2
*=*+1
006D TEMP3
*=*+1
006E TEMP4
*=*+1
006F NTEMP ; NMI TEMP REG
*=*+1
; *************************************************************
; ******************** SHIP SPEED RAM ***********************
0070 SPEED ; SPEED O CURISER
*=*+1
0071 WARP ; SPEED DESIRED AS OPPOSED TO SPEED , THE PRESENT SPEED
*=*+1
; ************************************************************
; ******************* TIMERS RAM ***************************
0072 TIMERX ; USED FO STAR INTENSITY
*=*+1
0073 ETIMER ; EXPLOSION TIMEOUT
*=*+1
0074 SECOND ; SECOND TIMEOUT
*=*+1
0075 BSEQTM ; STARBASE SEQUENCER
*=*+1
0076 BINTIM ; BINARY TIMER
*=*+1
0077 BINNMI ; BINARY TIMER IN NMI
*=*+1
0078 JMPTIM ; TIME TO JUMP RAM LOC
*=*+1
; ************************************************************
; ******************** STAR POINTER RAM ********************
0079 NSTARS ; LAST BYTE OF STAR RAM TO STORE, EITHER RMLAST OR STLAST
*=*+1
007A CNSTAR ; LAST BYTE OF STAR RAM TO CLEAR
*=*+1
007B BASFLG ; STARBASE FLAG
*=*+1
007C TRKFLG ; AUTOTRACKING = FF
*=*+1
007D SHENER ; SHIELD ENERGY 0 OR 8
*=*+1
007E ATENER ; ATTACK COMPUTER ENERGY
*=*+1
007F ENFLAG ; LS BYTE OF ENERGY , TELLS WHEN TO DEC ENERGY
*=*+1
0080 WPENER ; WARP ENRGY DEPENDS ON WARP
*=*+1
; ************************************************************
; ************** MISC RAM **********************************
0081 SPABAK ; SPACE BACKGROUND COLOR
*=*+1
0082 PHITS ; PHOTON HIT DETECT REGS
*=*+2
0084 PHOFLG ; ONE SHOT PHOTON
*=*+1
0085 PHOTIM ; REPEAT TIMEOUT
*=*+1
0086 LOKLOC ; PHOTON LOCK VECTOR PNTR
*=*+1
0087 PHOTOG ; PHOTON TOGGLE FLAG
*=*+1
0088 LOKWAT ; TIME BEFORE CAN LOCK AGAIN
*=*+1
0089 LOKTAR ; INDEX OF LOCK ON TARGET
*=*+1
008A HITME ; SHIP HIT FLAG
*=*+1
008B REDFLG ; RED ALERT FLAG
*=*+1
; **************************************************
; ********************** GALACTIC CHART RAM ******************
008C GVPOS ; CRUISER VPOS ON CHART
*=*+1
008D GHPOS ; CRUSIER HPOS ON CHART
*=*+1
008E HYVPOS ; CURSOR VPOS ON CHART
*=*+1
008F HYHPOS ; CURSOR HPOS ON CHART
*=*+1
0090 QUADRT ; QUADRANT STAR RAIDER IS IN
*=*+1
0091 HYPENG ; HYPERWARP ENERGY USED
*=*+1
0092 HYPQAD ; HYPERWARP QUADRANT
*=*+1
0093 KILBAS ; QUAD OF STARBASE, ZYLONS ARE AFTER
*=*+1
0094 KILOCH ; KILL LOC HPOS
*=*+1
0095 KILOCV ; KILL LOC VPOS
*=*+1
0096 JMPPTS ; GRADIENT VALUES
*=*+9
009F JMPOUT ; JUMP TIMEOUT REG
*=*+1
; **************************************************
; ******************* SCREEN MAP DRAWING RAM ******************
00A0 HTARGT ; HORIZ TARGET POSIT
*=*+1
00A1 VTARGT ; VERT TARGET POSIT
*=*+1
00A2 TARPTR ; TARGET SEQUENCER
*=*+1
00A3 LOKFLG ; COMPUTER LOCKON
*=*+1
00A4 NUMPTS ; NUMBER OF POINTS TO DRAW
*=*+1
00A5 VDRAW ; VERT POS OF DRAW CURSOR
*=*+1
00A6 HDRAW ; HOR POS OF DRAW CURSOR
*=*+1
; *********************************************************
; ****************** THINK RAM **************************
00A7 ZYTOGG ; WHICH ZYLON
*=*+1
00A8 SEQEN ; SEQUENCER PNTR RAM
*=*+2
00AA SEQTIM ; SEQUENCER TIMEOUT RAM
*=*+2
00AC XINDES ; DESIRED XINCRE
*=*+2
00AE YINDES ; DESIRED YINCRE
*=*+2
00B0 ZINDES ; DESIRED ZINCRE
*=*+2
00B2 XINPRS ; PRESENT POINTER TO ZYWARP
*=*+6
00B8 BSTRAF ; STRAF BACK 0,OR 1
*=*+2
00BA ROTTIM ; ROTATION TIMEOUT
*=*+4
00BE PHEXWT ; PHOTON EXPLOSION WAIT
*=*+1
00BF ATTARG ; WHICH ZYLON FIRED
*=*+1
; ************************************************************
; ************************* HYPERWARP RAM *********************
00C0 HFLAG ; HYPERWARP ENGAGED FLAG, 00,FF, OR 7F
*=*+1
00C1 HISPED ; HI BYTE SPEED, 0 OR 2=HWARP
*=*+1
00C2 HTIMER ; HWARP TIMER
*=*+1
00C3 HPNTR ; POINTS TO WHICH LINE STARS TO LOAD
*=*+1
00C4 HSTEER ; OLD HWAR CURSOR HPOS
*=*+1
00C5 VSTEER ; OLD HWARP CURSOR VPO
*=*+1
00C6 STERMK ; STEER MASK
*=*+1
00C7 JMPMSK ; INIT TARGETS IN NEW QUAD, MAX DISTANCE FROM SHIP
*=*+1
; *************************************************************
; ******************* KEYS, JOYSTICK RAM *********************
00C8 HORJOY ; 0=NO HORIZ, 01=RIGHT, FF=LEFT
*=*+1
00C9 VERJOY ; 0=NO VERT, 01=DOWN, FF=UP
*=*+1
00CA THEKEY ; THE KEY IN KBCODE
*=*+1
00CB RATING ; YOUR RATING
*=*+2
00CD ENDRAT ; FINAL RATING
*=*+1
00CE ENDCLS ; FINAL CLASS
*=*+1
; *************************************************************
; *************** MESSAGE RAM ****************************
00CF MESTIM ; MESSAGE TIMEOUT
*=*+1
00D0 DISFLG ; DISPLAY TYPE FLAG 0=FRONT,1=BACK,80=GALCHT
*=*+1 ; 40=SECTOR SCAN
00D1 SENPTR ; SENTENCE POINTER
*=*+1
; *************************************************************
; *************** AUDIO RAM ******************************
00D2 NOTSEQ ; NOTE POINTER
*=*+1
00D3 REPSEQ ; HOW MANY TIMES TO REPEAT
*=*+1
00D4 NDURAT ; DURAT OF NOTE
*=*+1
00D5 SDURAT ; DURAT OF SPACE
*=*+1
00D6 NPRIOR ; PRIOR OF NOE TYPE
*=*+1
00D7 REPPTR ; WHERE TO REPEAT IN NOTETB
*=*+1
00D8 NDURTM ; NOTE TIMER
*=*+1
00D9 NOTVOL ; NOTE VOLUME
*=*+1
00DA PHOREP ; REPAT NOTE FOR PHOTON
*=*+1
00DB AUDEXP ; EXPLOS SERVICE TIMER
*=*+1
00DC ATYPE2 ; RAM FO AUDC2
*=*+1
00DD ATYPE3 ; RAM FOR AUDC3
*=*+1
00DE AFREQ1 ; RAM FO AUDF1
*=*+1
00DF AFREQ2 ; RAM FOR AUDF2
*=*+1
00E0 AUDADD ; HOW MUCH TO ADD
*=*+1
00E1 AUDTIM ; AUDIO TIMEOUT 0=ALL DONE
*=*+1
00E2 EXPDEL ; EXPLOS DELAY
*=*+1
00E3 BIGEXP ; SHIELDS DOWN EXPLOS
*=*+1
; ***********************************************************
; *************** OBJECT RAM ******************************
00E4 GRAPH ; GRAPHIC FOR OBJ0-4
*=*+5
00E9 STFLAG ; 0=OBJECT NOT ON (DEFINED IN THINK, OR PHOTON)
*=*+5
; **************************************************************
; ****************** COLOR RAM ****************************
00EE COLRAM ; PLAYER AND PLAYFIELD COLOR RAM
*=*+14
; **********************************************************
00FC PHASE4
;
;
; ADDRESS SPACE
;
;
; COLLEEN MNEMONICS
;
D200 POKEY = $D200
D200 POT0 = POKEY+0
D201 POT1 = POKEY+1
D202 POT2 = POKEY+2
D203 POT3 = POKEY+3
D204 POT4 = POKEY+4
D205 POT5 = POKEY+5
D206 POT6 = POKEY+6
D207 POT7 = POKEY+7
D208 ALLPOT = POKEY+8
D209 KBCODE = POKEY+9
D20A RANDOM = POKEY+10
D20D SERIN = POKEY+13
D20E IRQST = POKEY+14
D20F SKSTAT = POKEY+15
D200 AUDF1 = POKEY+0
D201 AUDC1 = POKEY+1
D202 AUDF2 = POKEY+2
D203 AUDC2 = POKEY+3
D204 AUDF3 = POKEY+4
D205 AUDC3 = POKEY+5
D206 AUDF4 = POKEY+6
D207 AUDC4 = POKEY+7
D208 AUDCTL = POKEY+8
D209 STIMER = POKEY+9
D20A SKRES = POKEY+10
D20B POTGO = POKEY+11
D20D SEROUT = POKEY+13
D20E IRQEN = POKEY+14
D20F SKCTL = POKEY+15
;
D000 CTIA = $D000
D000 HPOSP0 = CTIA+0
D001 HPOSP1 = CTIA+1
D002 HPOSP2 = CTIA+2
D003 HPOSP3 = CTIA+3
D004 HPOSM0 = CTIA+4
D005 HPOSM1 = CTIA+5
D006 HPOSM2 = CTIA+6
D007 HPOSM3 = CTIA+7
D008 SIZEP0 = CTIA+8
D009 SIZEP1 = CTIA+9
D00A SIZEP2 = CTIA+10
D00B SIZEP3 = CTIA+11
D00C SIZEM = CTIA+12
D00D GRAFP0 = CTIA+13
D00E GRAFP1 = CTIA+14
D00F GRAFP2 = CTIA+15
D010 GRAFP3 = CTIA+16
D011 GRAFM = CTIA+17
D012 COLPM0 = CTIA+18
D013 COLPM1 = CTIA+19
D014 COLPM2 = CTIA+20
D015 COLPM3 = CTIA+21
D016 COLPF0 = CTIA+22
D017 COLPF1 = CTIA+23
D018 COLPF2 = CTIA+24
D019 COLPF3 = CTIA+25
D01A COLBK = CTIA+26
D01B PRIOR = CTIA+27
D01C VDELAY = CTIA+28
D01D GRACTL = CTIA+29
D01E HITCLR = CTIA+30
D01F CONSOL = CTIA+31
D000 M0PF = CTIA+0
D001 M1PF = CTIA+1
D002 M2PF = CTIA+2
D003 M3PF = CTIA+3
D004 P0PF = CTIA+4
D005 P1PF = CTIA+5
D006 P2PF = CTIA+6
D007 P3PF = CTIA+7
D008 M0PL = CTIA+8
D009 M1PL = CTIA+9
D00A M2PL = CTIA+10
D00B M3PL = CTIA+11
D00C P0PL = CTIA+12
D00D P1PL = CTIA+13
D00E P2PL = CTIA+14
D00F P3PL = CTIA+15
D010 TRIG0 = CTIA+16
D011 TRIG1 = CTIA+17
D012 TRIG2 = CTIA+18
D013 TRIG3 = CTIA+19
;
D400 ANTIC = $D400
D400 DMACTL = ANTIC+0
D401 CHACTL = ANTIC+1
D402 DLISTL = ANTIC+2
D403 DLISTH = ANTIC+3
D404 HSCROL = ANTIC+4
D405 VSCROL = ANTIC+5
D407 PMBASE = ANTIC+7
D409 CHBASE = ANTIC+9
D40A WSYNC = ANTIC+10
D40B VCOUNT = ANTIC+11
D40C PENH = ANTIC+12
D40D PENV = ANTIC+13
D40E NMIEN = ANTIC+14
D40F NMIRES = ANTIC+15
D40F NMIST = ANTIC+15
D300 PIA = $D300
D300 PORTA = PIA+0
D301 PORTB = PIA+1
D302 PACTL = PIA+2
D303 PBCTL = PIA+3
;
; OPERATING SYSTEM
;
0216 VIMIRQ = $0216 ; IMMEDITATE IRQ LOCATION
0222 VVBLKI = $0222 ; IMMEDIATE VERT BLANK NMI VECTOR
0200 VDSLST = $0200 ; DISPLAY LIST NMI VECTOR
E000 ALPHA = $E000
;
; EQUATES
0282 DISPL1 = DISPLY+2 ; LDISP
028F DISPL2 = DISPLY+15 ; LDISP
02DF DISPL3 = DISPLY+95 ; LDISP
007C DISTOP = $7C ; LDISP SUB.
0032 VOFLOW = 50
0032 VSTCEN = 50
007A VOBCEN = $7A
0050 HOFLOW = 80
0050 HSTCEN = 80
007D HOBCEN = $7D
0051 SCPTAB = 81 ; FOR LOADING PTAB
0064 SCBCD = 100 ; FOR LOADING BCDCON
0028 SCVCON = 40 ; FOR LOADING VCON TABLES
1D40 ICON1 = $1D40
1BFE ICON2 = $1BFE
003D HORCHT = $3D ; HOR EDGE OF CHART
003F VERCHT = $3F ; VERT EDGE OF CHART
000C STRNUM = 12 ; NUMBER OF STARS DISPLAYED
0005 OBJNUM = 5 ; NUMBER OF OBJECTS
0020 EXPNUM = 32 ; NUMBER OF EXPLOSION STARS
0031 RAMNUM = OBJNUM+STRNUM+EXPNUM ; TOTAL NUMBER OF RAM LOC.
0004 OBLAST = OBJNUM-1 ; RAM LOC OF LAST OBJECT
0030 RMLAST = RAMNUM-1 ; RAM LOC OF LAST STAR IN EXPLOSION
0010 STLAST = OBJNUM+STRNUM-1 ; RAM LOC OF LAST STAR IN REAL STRS
0002 OBPHOT = OBJNUM-3 ; LAST PHOTON LOCATION
0003 OBCOMP = OBJNUM-2 ; LAST PHOTON WHIC COULD BE COMP CONT.
1B36 INSET = $1B36 ; IST BYTE OF INSET
0064 VMAX = 100
00A0 HMAX = 160 ; MAX HORIZ STAR POSITION DISPLAYED
;
00A0 DBLUE = $A0 ; DARK BLUE
0044 RED = $44 ; COLOR
0092 LTBLUE = $92 ; COLOR
00AF BRTBLU = $AF ; COLOR
004F BRTRED = $4F ; COLOR
0060 DRKRED = $60 ; COLO
0042 DIMRED = $42 ; COLOR
0090 DIMBLU = $90 ; COLOR
0026 YELLOW = $26 ; COLOR
0055 DIM = $55 ; MEMMAP CODE FOR DIM STAR
00AA MED = $AA
00FF BRT = $FF
0040 IRQMSK = $40 ; KEY INTERRUPT MASK
17E3 NOSTAR = $17E3 ; NO STAR DUING ATRACT
;
;
; CHARACTER GRAPHICS
*=$A000
;
;
A000 CGRAPH
A000 00 7F 47 C0 .BYTE 00,$7F,$47,$47,$47,$47,$47,$7F
A003 47 47 47
A006 47 7F
A008 00 30 10 C1 .BYTE 00,$30,$10,$10,$10,$38,$38,$38
A00B 10 10 38
A00E 38 38
A010 00 78 08 C2 .BYTE 00,$78,$08,$08,$78,$40,$40,$78
A013 08 78 40
A016 40 78
A018 00 78 08 C3 .BYTE 00,$78,$08,$08,$7C,$0C,$0C,$7C
A01B 08 7C 0C
A01E 0C 7C
A020 00 60 60 C4 .BYTE 00,$60,$60,$60,$6C,$7C,$0C,$0C
A023 60 6C 7C
A026 0C 0C
A028 00 78 40 C5 .BYTE 00,$78,$40,$40,$78,$08,$08,$78
A02B 40 78 08
A02E 08 78
A030 00 78 48 C6 .BYTE 00,$78,$48,$40,$40,$7E,$42,$7E
A033 40 40 7E
A036 42 7E
A038 00 7C 44 C7 .BYTE 00,$7C,$44,$04,$1C,$10,$10,$10
A03B 04 1C 10
A03E 10 10
A040 00 38 28 C8 .BYTE 00,$38,$28,$28,$7C,$6C,$6C,$7C
A043 28 7C 6C
A046 6C 7C
A048 00 7C 44 C9 .BYTE 00,$7C,$44,$44,$7C,$0C,$0C,$0C
A04B 44 7C 0C
A04E 0C 0C
A050 00 00 00 CBLK .BYTE 0,0,0,0,0,0,0,0
A053 00 00 00
A056 00 00
A058 38 38 38 CEQ .BYTE $38,$38,$38,$00,$00,$38,$38,$38
A05B 00 00 38
A05E 38 38
A060 80 80 80 CGCBLK .BYTE $80,$80,$80,$80,$80,$80,$80,$FF
A063 80 80 80
A066 80 FF
A068 00 3C 20 CE .BYTE $00,$3C,$20,$20,$78,$60,$60,$7C
A06B 20 78 60
A06E 60 7C
A070 00 66 99 CINF .BYTE $00,$66,$99,$99,$99,$66,$00,$00
A073 99 99 66
A076 00 00
A078 00 00 00 CMINUS .BYTE $00,$00,$00,$7E,$00,$00,$00,$00
A07B 7E 00 00
A07E 00 00
;
;
A080 00 18 18 CPLUS .BYTE $00,$18,$18,$18,$7E,$18,$18,$18
A083 18 7E 18
A086 18 18
A088 00 18 7E CPHI .BYTE $00,$18,$7E,$DB,$99,$DB,$7E,$18
A08B DB 99 DB
A08E 7E 18
A090 66 66 66 CV .BYTE $66,$66,$66,$66,$66,$2C,$38,$30
A093 66 66 2C
A096 38 30
A098 00 7C 44 CRHO .BYTE 0,$7C,$44,$44,$7C,$68,$6C,$6C
A09B 44 7C 68
A09E 6C 6C
A0A0 00 1C 3E CTHETA .BYTE $00,$1C,$3E,$63,$5D,$63,$3E,$1C
A0A3 63 5D 63
A0A6 3E 1C
A0A8 00 46 46 CK .BYTE $00,$46,$46,$44,$7C,$64,$66,$66
A0AB 44 7C 64
A0AE 66 66
A0B0 FE 92 10 CT .BYTE $FE,$92,$10,$18,$18,$18,$18,$18
A0B3 18 18 18
A0B6 18 18
A0B8 FC 8C 8C CC .BYTE $FC,$8C,$8C,$80,$80,$80,$84,$FC
A0BB 80 80 80
A0BE 84 FC
A0C0 00 00 00 CHLINE .BYTE 0,0,0,0,0,0,0,$FF
A0C3 00 00 00
A0C6 00 FF
A0C8 80 80 80 CVLINE .BYTE $80,$80,$80,$80,$80,$80,$80,$80
A0CB 80 80 80
A0CE 80 80
A0D0 00 00 00 CDOT .BYTE 0,0,0,0,0,0,0,$80
A0D3 00 00 00
A0D6 00 80
A0D8 80 AA 9C CSBASE .BYTE $80,$AA,$9C,$BE,$9C,$AA,$80,$FF
A0DB BE 9C AA
A0DE 80 FF
A0E0 80 98 80 CZY2 .BYTE $80,$98,$80,$B6,$80,$8C,$80,$FF
A0E3 B6 80 8C
A0E6 80 FF
A0E8 80 8E 80 CZY1 .BYTE $80,$8E,$80,$B8,$80,$9C,$80,$FF
A0EB B8 80 9C
A0EE 80 FF
A0F0 80 B0 98 CZY3 .BYTE $80,$B0,$98,$BE,$98,$B0,$80,$FF
A0F3 BE 98 B0
A0F6 80 FF
;
;
A0F8 SESCAN
A0F8 00 00 6C .BYTE 0,0,$6C,$6F,$6E,$67,0,$72,$61,$6E,$67,$65,0,$73,$63,$61,$6E
A0FB 6F 6E 67
A0FE 00 72 61
A101 6E 67 65
A104 00 73 63
A107 61 6E
A109 BACKUP
A109 00 00 00 .BYTE 0,0,0,0,0,0,$61,$66,$74,0,$76,$69,$65,$77,0,0,0
A10C 00 00 00
A10F 61 66 74
A112 00 76 69
A115 65 77 00
A118 00 00
;
A11A GALCHT
A11A 00 00 .BYTE 0,0
A11C 00 67 61 .BYTE 0,$67,$61,$6C,$61,$63,$74,$69,$63,0,$63,$68,$61,$72,$74,0
A11F 6C 61 63
A122 74 69 63
A125 00 63 68
A128 61 72 74
A12B 00
A12C 00 00 .BYTE 0,0
;
;
;
A12E GLDISP ; GAL CHT DISPLAY LIST
A12E 60 46 .BYTE $60,$46
A130 1A A1 .WORD GALCHT
A132 F0 47 .BYTE $F0,$47
A134 35 0D .WORD CHTDIS
A136 07 07 07 .BYTE 7,7,7,7,7,7,7,7,$80,$46
A139 07 07 07
A13C 07 07 80
A13F 46
A140 1F 0D .WORD MESAGE
A142 46 .BYTE $46
A143 71 09 .WORD DGALAC
A145 06 06 41 .BYTE 6,6,$41
A148 80 02 .WORD DISPLY
;
;
A14A PHASE8
;
;
; INIT SECTION
;
A14A INIT
A14A A9 00 LDA #$00
A14C 8D 0F D2 STA SKCTL
A14F 85 66 STA TIMOUT ; RESET TIMEOUT
A151 85 62 STA MISDIF ; MISSIONDIFFICULTY
A153 85 63 STA RESET ; ONE SHOT CONSOL
A155 A9 03 LDA #$03
A157 8D 0F D2 STA SKCTL ; TURN POKEY ON
;
A15A INIT3 ; GAME SELECT, RESTART POINT ****************************
A15A A0 2F LDY #SENATA-SENTAB
;
A15C INIT4 ; ATTRACT MODE RESTART POINT **************************
A15C A9 FF LDA #$FF ; GAME OVER
;
A15E INIT1 ; GAME START RESTART POINT ************************
A15E 84 65 STY REPMSG
A160 85 64 STA ATRACT
; CLEAR I/O
A162 A9 00 LDA #$00
A164 AA TAX
A165 INIT2
A165 9D 00 D0 STA CTIA,X
A168 9D 00 D4 STA ANTIC,X
A16B E0 0F CPX #$0F ; DONT RESET POKEY
A16D B0 03 BCS INIT5
A16F 9D 00 D2 STA POKEY,X
A172 INIT5
A172 9D 00 D3 STA PIA,X
A175 9D .BYTE $9D ; STA ABS,X
A176 67 00 .WORD PAGE0 ; STA PAGE0,X (ABSOLUTE)
A178 E8 INX
A179 D0 EA BNE INIT2
; I/O CLEARED
;
;
A17B CA DEX ; X=FF
A17C 9A TXS ; LOAD STACK PNTR
A17D D8 CLD
;
A17E A9 02 LDA #RAMMAP/256
A180 20 0F AE JSR CLRMP1 ; CLEAR ALL RAM
; LD VECTOR RAM
A183 A9 51 LDA #IRQVEC
A185 8D 16 02 STA VIMIRQ
A188 A9 A7 LDA #IRQVEC/256
A18A 8D 17 02 STA VIMIRQ+1
A18D A9 D1 LDA #VBNMI
A18F 8D 22 02 STA VVBLKI
A192 A9 18 LDA #DISNMI
A194 8D 00 02 STA VDSLST
A197 A9 A6 LDA #VBNMI/256
A199 8D 23 02 STA VVBLKI+1
A19C A9 A7 LDA #DISNMI/256
A19E 8D 01 02 STA VDSLST+1
;
;
; CONFIGURE PIA
;
A1A1 A9 04 LDA #$04
A1A3 8D 02 D3 STA PACTL ; TURN ON JOYSTICK
;
;
;
;
; CONFIGURE CTIA
;
A1A6 A9 11 LDA #$11
A1A8 8D 1B D0 STA PRIOR
;
A1AB A9 03 LDA #$03
A1AD 8D 1D D0 STA GRACTL
;
A1B0 20 BA B3 JSR LDTABS ; INIT TABLES
;
;
; INIT DISPLAY LIST
A1B3 A2 0A LDX #$0A ; KEY F, FRONT DISPLAY
A1B5 20 45 B0 JSR KEYS15 ; INIT FRONT VIEW
A1B8 A5 64 LDA ATRACT
A1BA 29 80 AND #$80
A1BC A8 TAY
A1BD A2 5F LDX #DISPL3-DISPLY
A1BF A9 08 LDA #$08
A1C1 20 F1 AD JSR LDISP ; SHIP ALIVE OR DEAD
;
A1C4 A9 20 LDA #$20
A1C6 85 71 STA WARP ; WARP 5 SPEED
;
;
; CONFIGURE ANTIC
;
A1C8 A9 80 LDA #DISPLY
A1CA 8D 02 D4 STA DLISTL
A1CD A9 02 LDA #DISPLY/256
A1CF 8D 03 D4 STA DLISTH
A1D2 A9 3E LDA #$3E
A1D4 8D 00 D4 STA DMACTL ; DMA ON.
;
A1D7 A9 00 LDA #PGRAPH-$0300/256
A1D9 8D 07 D4 STA PMBASE ; LD PLAYER / MISSLE BASE
;
;
;
;
; INIT NUMBER OF STARS
A1DC A9 10 LDA #STLAST
A1DE 85 79 STA NSTARS
;
;
A1E0 A6 62 LDX MISDIF ; GAME TYPE MESSAGE
A1E2 BC 0C BF LDY MSENTB,X
A1E5 20 23 B2 JSR LDMESS
;
;
;
;
;
; ENABLE INTERRUPTS
A1E8 A9 40 LDA #IRQMSK
A1EA 8D 0E D2 STA IRQEN
A1ED 58 CLI ; IRQS READY
A1EE A9 C0 LDA #$C0
A1F0 8D 0E D4 STA NMIEN ; NMIS READY
;
; END INIT
;
; MAIN PROGRAM
A1F3 MAIN
;
; MAIN FLOW CHART
; START
; WAIT FOR VBLANK
; CLEAR AND LOAD STARS/OBJECTS
; MOVE ROUTINES
; PLAYER INTERFACE SECTION GAME ON ONLY
; SERVICE SECTION GAME ON ONLY
; HIT DETECT GAME ON ONLY
; SERVICE CONTINOUS RUNNING ROUTINES
; JUMP TO START
;
;
A1F3 A5 67 LDA PROGST
A1F5 F0 FC BEQ MAIN ; WAIT FOR VBLANK NMI
A1F7 A9 00 LDA #$00 ; RESET VBLANK STATUS REGISTER
A1F9 85 67 STA PROGST
;
;
;
;
;
; UPDATE MEMORY MAP RAM AND PLAYERS RAM
;
; CLRSTR
; CLEAR STAR ROUTINE
A1FB A5 7A LDA CNSTAR ; THIS FLAGS SAYS OLDPS NOT DEFINED IF=00
A1FD F0 20 BEQ CLRSR2
A1FF A2 04 LDX #OBLAST ; LAST LOCATION OF OBJECT IN RAM
A201 CLRSR1
A201 E8 INX
A202 BC 5B 0C LDY OLDVER,X
A205 B9 00 08 LDA VCONL,Y
A208 85 68 STA PNTR
A20A B9 64 08 LDA VCONH,Y
A20D 85 69 STA PNTR+1
A20F BC 8C 0C LDY OLDHOR,X
A212 BD BD 0C LDA OLDBYT,X
A215 91 68 STA (PNTR),Y ; BYTE RESTORED
A217 E4 7A CPX CNSTAR
A219 90 E6 BCC CLRSR1
A21B A9 00 LDA #$00
A21D 85 7A STA CNSTAR ; STARS CLEARED
A21F CLRSR2
;
;
; STOSTR
;
; STORE STAR IN RAM MAP ROUTINE
;
A21F A5 C0 LDA HFLAG ; IN HYPER JUMP ?
A221 30 2D BMI STOSR1 ; YES , NO STORE.
;
;
;
A223 A6 79 LDX NSTARS ; LAST BYTE OF STAR RAM TO STORE
A225 86 7A STX CNSTAR ; STARS POINTERS DEFINED OK TO CLEAR NOW
A227 STOSR2
;
A227 BD F9 0B LDA VPOS,X
A22A 9D 5B 0C STA OLDVER,X
A22D A8 TAY
A22E B9 00 08 LDA VCONL,Y
A231 85 68 STA PNTR
A233 B9 64 08 LDA VCONH,Y
A236 85 69 STA PNTR+1
A238 BD 2A 0C LDA HPOS,X
A23B 4A LSR A
A23C 4A LSR A
A23D 9D 8C 0C STA OLDHOR,X
A240 A8 TAY
A241 B1 68 LDA (PNTR),Y
A243 9D BD 0C STA OLDBYT,X ; BYTE SAVED
A246 1D EE 0C ORA STRBYT,X
A249 91 68 STA (PNTR),Y
;
A24B CA DEX
A24C E0 04 CPX #OBLAST
A24E D0 D7 BNE STOSR2 ; DO NEXT STAR
A250 STOSR1
A250 A5 66 LDA TIMOUT
A252 10 0E BPL STOSR3
A254 A9 00 LDA #$00
A256 8D E3 17 STA NOSTAR
A259 8D E4 17 STA NOSTAR+1
A25C 8D BC 17 STA NOSTAR-39
A25F 8D BB 17 STA NOSTAR-40
A262 STOSR3
;
;
; CLROBJ
; CLEAR OBJECT RAM
; OBJECT 4
A262 A9 00 LDA #$00
A264 AC 5F 0C LDY OLDVER+4
A267 AE C1 0C LDX OLDNUM+4
A26A CLROB1
A26A 99 00 03 STA MGRAPH,Y
A26D C8 INY
A26E CA DEX
A26F 10 F9 BPL CLROB1
; OBJECT 3
A271 AC 5E 0C LDY OLDVER+3
A274 AE C0 0C LDX OLDNUM+3
A277 CLROB2
A277 99 00 07 STA PGRAP3,Y
A27A C8 INY
A27B CA DEX
A27C 10 F9 BPL CLROB2
; OBJECT 2
A27E AC 5D 0C LDY OLDVER+2
A281 AE BF 0C LDX OLDNUM+2
A284 CLROB3
A284 99 00 06 STA PGRAP2,Y
A287 C8 INY
A288 CA DEX
A289 10 F9 BPL CLROB3
; OBJECT 1
A28B AC 5C 0C LDY OLDVER+1
A28E AE BE 0C LDX OLDNUM+1
A291 CLROB4
A291 99 00 05 STA PGRAP1,Y
A294 C8 INY
A295 CA DEX
A296 10 F9 BPL CLROB4
; OBJECT 0
A298 AC 5B 0C LDY OLDVER+0
A29B AE BD 0C LDX OLDNUM+0
A29E CLROB5
A29E 99 00 04 STA PGRAP0,Y
A2A1 C8 INY
A2A2 CA DEX
A2A3 10 F9 BPL CLROB5
;
;
; STOOBJ
; STORE OBJECT ROUTINE
;
; OBJECT 4, ALWAYS PHOTON, OR DOCKING OBJECT
A2A5 AD 90 0C LDA GINDEX+4
A2A8 C9 01 CMP #$01 ; DEFINE CARRY
A2AA A4 E8 LDY GRAPH+4
A2AC AE FD 0B LDX VPOS+4
A2AF 8E 5F 0C STX OLDVER+4
A2B2 AD F2 0C LDA NUMBYT+4
A2B5 85 6A STA TEMP
A2B7 8D C1 0C STA OLDNUM+4
A2BA STOOB1
A2BA B9 E4 B8 LDA PHGRAF,Y
A2BD B0 03 BCS STOOB8
A2BF 2D 0A D2 AND RANDOM
A2C2 STOOB8
A2C2 9D 00 03 STA MGRAPH,X
A2C5 C8 INY
A2C6 E8 INX
A2C7 C6 6A DEC TEMP
A2C9 10 EF BPL STOOB1
; OBJECT 3 , ALWAYS PHOTON
A2CB AD 8F 0C LDA GINDEX+3
A2CE C9 01 CMP #$01
A2D0 A4 E7 LDY GRAPH+3
A2D2 AE FC 0B LDX VPOS+3
A2D5 8E 5E 0C STX OLDVER+3
A2D8 AD F1 0C LDA NUMBYT+3
A2DB 85 6A STA TEMP
A2DD 8D C0 0C STA OLDNUM+3
A2E0 STOOB2
A2E0 B9 E4 B8 LDA PHGRAF,Y
A2E3 B0 03 BCS STOOB9
A2E5 2D 0A D2 AND RANDOM
A2E8 STOOB9
A2E8 9D 00 07 STA PGRAP3,X
A2EB E8 INX
A2EC C8 INY
A2ED C6 6A DEC TEMP
A2EF 10 EF BPL STOOB2
; OBJECT 2, (VARIABLE GRAPHIC)
A2F1 AD 8E 0C LDA GINDEX+2
A2F4 C9 01 CMP #$01 ; DEFINE CARRY
A2F6 A4 E6 LDY GRAPH+2
A2F8 AE FB 0B LDX VPOS+2
A2FB 8E 5D 0C STX OLDVER+2
A2FE AD F0 0C LDA NUMBYT+2
A301 85 6A STA TEMP
A303 8D BF 0C STA OLDNUM+2
A306 STOOB3
A306 B9 E4 B8 LDA PHGRAF,Y
A309 B0 03 BCS STOOB7
A30B 2D 0A D2 AND RANDOM
A30E STOOB7
A30E 9D 00 06 STA PGRAP2,X
A311 E8 INX
A312 C8 INY
A313 C6 6A DEC TEMP
A315 10 EF BPL STOOB3
; OBJECT 1 (VARIABLE)
A317 A4 E5 LDY GRAPH+1
A319 AE FA 0B LDX VPOS+1
A31C 8E 5C 0C STX OLDVER+1
A31F AD EF 0C LDA NUMBYT+1
A322 85 6A STA TEMP
A324 8D BE 0C STA OLDNUM+1
A327 STOOB5
A327 B9 B1 B9 LDA ZYGRAF,Y
A32A 9D 00 05 STA PGRAP1,X
A32D E8 INX
A32E C8 INY
A32F C6 6A DEC TEMP
A331 10 F4 BPL STOOB5
; OBJECT 0 (VARIABLE)
A333 A4 E4 LDY GRAPH+0
A335 AE F9 0B LDX VPOS+0
A338 8E 5B 0C STX OLDVER+0
A33B AD EE 0C LDA NUMBYT+0
A33E 85 6A STA TEMP
A340 8D BD 0C STA OLDNUM+0
A343 STOOB6
A343 B9 B1 B9 LDA ZYGRAF,Y
A346 9D 00 04 STA PGRAP0,X
A349 E8 INX
A34A C8 INY
A34B C6 6A DEC TEMP
A34D 10 F4 BPL STOOB6
;
; UPDATE HORIZ
;
A34F AD 2A 0C LDA HPOS+0
A352 8D 00 D0 STA HPOSP0+0
A355 AD 2B 0C LDA HPOS+1
A358 8D 01 D0 STA HPOSP0+1
A35B AD 2C 0C LDA HPOS+2
A35E 8D 02 D0 STA HPOSP0+2
A361 AD 2D 0C LDA HPOS+3
A364 8D 03 D0 STA HPOSP0+3
A367 AD 2E 0C LDA HPOS+4
A36A 8D 07 D0 STA HPOSP0+7
A36D 18 CLC
A36E 69 02 ADC #$02
A370 8D 06 D0 STA HPOSP0+6
A373 69 02 ADC #$02
A375 8D 05 D0 STA HPOSP0+5
A378 69 02 ADC #$02
A37A 8D 04 D0 STA HPOSP0+4
;
; END UPDATE MEMORY MAP RAM AND PLAYERS RAM
;
;
;
;
; STARS/OBJECTS MOVE ROUTINES
A37D 24 D0 BIT DISFLG
A37F 30 3A BMI MAIN1 ; NO ROTATE IN GALACTIC CHART
;
; YROTAT
; ROTATE ALL LEFT AND RIGHT
A381 A5 C8 LDA HORJOY ; HORIZ JOYSTICK ?
A383 F0 19 BEQ YROTA1 ; NO
A385 85 6D STA TEMP3
A387 A4 79 LDY NSTARS ; LAST BYTE OF STARS
A389 YROTA2
A389 84 6E STY TEMP4 ; TEMP STORE
A38B 18 CLC
A38C 98 TYA
A38D AA TAX
A38E 69 31 ADC #RAMNUM ; YPOS
A390 A8 TAY
A391 20 9B B6 JSR ROHELP
A394 98 TYA
A395 AA TAX
A396 A4 6E LDY TEMP4
A398 20 9B B6 JSR ROHELP
A39B 88 DEY
A39C 10 EB BPL YROTA2
A39E YROTA1
;
;
;
; ZROTAT
; ROTATE ALL UP AND DOWN
A39E A5 C9 LDA VERJOY ; VERT JOYSTICK ?
A3A0 F0 19 BEQ ZROTA1 ; NO
A3A2 85 6D STA TEMP3
A3A4 A4 79 LDY NSTARS
A3A6 ZROTA2
A3A6 84 6E STY TEMP4
A3A8 18 CLC
A3A9 98 TYA
A3AA AA TAX
A3AB 69 62 ADC #RAMNUM*2 ; ZPOS
A3AD A8 TAY
A3AE 20 9B B6 JSR ROHELP
A3B1 98 TYA
A3B2 AA TAX
A3B3 A4 6E LDY TEMP4
A3B5 20 9B B6 JSR ROHELP
A3B8 88 DEY
A3B9 10 EB BPL ZROTA2
A3BB ZROTA1
;
;
A3BB MAIN1
; XMOVER
; UPDATE ALL XPOS DUE TO FORWARD SHIP MOTION
; SUBTRACT SPEED FROM XPOS
A3BB A6 79 LDX NSTARS ; X=INDEX TO STARS/POBJECT TO UPDATE
A3BD XMOVE1
A3BD E0 05 CPX #OBJNUM ; PHOTONS ?
A3BF B0 05 BCS XMOVE2 ; NO.
A3C1 BD 8C 0C LDA GINDEX,X
A3C4 F0 19 BEQ XMOVE3
A3C6 XMOVE2
A3C6 38 SEC
A3C7 BD D3 0A LDA XPOSL,X
A3CA E5 70 SBC SPEED
A3CC 9D D3 0A STA XPOSL,X
A3CF BD 40 0A LDA XPOSH,X
A3D2 E5 C1 SBC HISPED
A3D4 9D 40 0A STA XPOSH,X
A3D7 BD AD 09 LDA XSIGN,X
A3DA E9 00 SBC #$00 ; CARRY ONLY
A3DC 9D AD 09 STA XSIGN,X
A3DF XMOVE3
A3DF CA DEX
A3E0 10 DB BPL XMOVE1 ; NEXT STAR
; ALL DONE
;
;
; MOTION
; OTHER MOTION SUCH AS DUE TO ZYLON SHIP POWER
; OR PHOTONS
; XINCRE,YINCRE,ZINCRE ARE ALL SIGN-MAGNITUE TYPES
A3E2 A6 79 LDX NSTARS
A3E4 MOTIN1
A3E4 E0 10 CPX #STLAST ; REG STARS ?
A3E6 D0 02 BNE MOTIN9 ; NO
A3E8 A2 04 LDX #OBLAST ; LAST OBJ
A3EA MOTIN9
A3EA 8A TXA
A3EB MOTIN2
A3EB A8 TAY
A3EC A9 00 LDA #$00
A3EE 85 6B STA TEMP1
A3F0 B9 66 0B LDA XINCRE,Y
A3F3 10 09 BPL MOTIN3
A3F5 49 7F EOR #$7F
A3F7 18 CLC
A3F8 69 01 ADC #$01
A3FA B0 02 BCS MOTIN3
A3FC C6 6B DEC TEMP1
A3FE MOTIN3
A3FE 18 CLC
A3FF 79 D3 0A ADC XPOSL,Y
A402 99 D3 0A STA XPOSL,Y
A405 B9 40 0A LDA XPOSH,Y
A408 65 6B ADC TEMP1
A40A 99 40 0A STA XPOSH,Y
A40D B9 AD 09 LDA XSIGN,Y
A410 65 6B ADC TEMP1
A412 99 AD 09 STA XSIGN,Y
;
A415 98 TYA
A416 18 CLC
A417 69 31 ADC #RAMNUM
A419 C9 90 CMP #RMLAST*3 ; ALL DONE ?
A41B 90 CE BCC MOTIN2 ; NO
A41D CA DEX
A41E 10 C4 BPL MOTIN1 ; NEXT STAR OR OBJECT
;
;
; BOUNDS
;
A420 A0 04 LDY #OBLAST ; ONLY OBJECTS
A422 BOUND1
A422 98 TYA
A423 AA TAX
A424 A9 02 LDA #$02
A426 85 6A STA TEMP
A428 BOUND3
A428 BD AD 09 LDA XSIGN,X
A42B C9 02 CMP #$02
A42D 90 10 BCC BOUND4
; OUT OF BOUNDS
A42F 0A ASL A
A430 A9 00 LDA #$00
A432 9D AD 09 STA XSIGN,X
A435 B0 05 BCS BOUND5
A437 FE AD 09 INC XSIGN,X
A43A 49 FF EOR #$FF
A43C BOUND5
A43C 9D 40 0A STA XPOSH,X
A43F BOUND4
A43F 8A TXA
A440 18 CLC
A441 69 31 ADC #RAMNUM
A443 AA TAX
A444 C6 6A DEC TEMP
A446 10 E0 BPL BOUND3
A448 88 DEY
A449 10 D7 BPL BOUND1 ; NEXT STAR
;
;
; CALCVH
; CALCULATE V,H POS FOR ALL STARS/OBJ
A44B A5 D0 LDA DISFLG
A44D C9 02 CMP #$02
A44F B0 5C BCS CALC14 ; NOT FRONT OR BACK
;
A451 A6 79 LDX NSTARS ; X=INDEX OF STARS
A453 CALCV1 ;STAR LOOP
A453 A9 FF LDA #$FF
A455 BC AD 09 LDY XSIGN,X
A458 C4 D0 CPY DISFLG
A45A F0 4B BEQ CALCV5
;
; UPDATE VPOS
;
A45C BD 0F 0A LDA ZSIGN,X ; 2'S COMPLE ZPOS?
A45F D0 12 BNE CALCV8 ; NO
; 2'S COMPLEMENT
A461 38 SEC
A462 A9 00 LDA #$00
A464 FD 35 0B SBC ZPOSL,X
A467 85 6A STA TEMP
A469 A9 00 LDA #$00
A46B FD A2 0A SBC ZPOSH,X
A46E 85 6B STA TEMP1
A470 4C 7D A4 JMP CALCV9
A473 CALCV8
A473 BD 35 0B LDA ZPOSL,X
A476 85 6A STA TEMP ; STORE IN TOP REG
A478 BD A2 0A LDA ZPOSH,X
A47B 85 6B STA TEMP1
A47D CALCV9
A47D 20 21 AA JSR DIVIDE ; DIVIDE ZPOS BY XPOS
A480 20 1E B7 JSR STVPOS ; STOE VPO
;
; UPDATE HORIZ POS
;
;
A483 BD DE 09 LDA YSIGN,X ; 2'S COMPLE YPOS ?
A486 D0 12 BNE CALCV3 ; NO.
; 2'S COMPLEMENT
A488 38 SEC
A489 A9 00 LDA #$00
A48B FD 04 0B SBC YPOSL,X
A48E 85 6A STA TEMP ; STORE IN TOP(NUMERATOR)REG
A490 A9 00 LDA #$00
A492 FD 71 0A SBC YPOSH,X
A495 85 6B STA TEMP1
A497 4C A4 A4 JMP CALCV4
A49A CALCV3
A49A BD 04 0B LDA YPOSL,X ; SOTRE IN TOP REG
A49D 85 6A STA TEMP
A49F BD 71 0A LDA YPOSH,X
A4A2 85 6B STA TEMP1
A4A4 CALCV4
A4A4 20 21 AA JSR DIVIDE ; DIVIDE YPOS BY XPOS
A4A7 CALCV5
A4A7 20 FB B6 JSR STHPOS ; STORE HPOS
;
A4AA CA DEX
A4AB 10 A6 BPL CALCV1 ; NEXT STAR
; ALL DONE
A4AD CALC14
;
;
A4AD 20 62 B1 JSR CSERVE ; SERVICE GALACTIC CHART
;
;
; SSERVE
; SECTOR SCAN SERVE
A4B0 24 D0 BIT DISFLG
A4B2 50 31 BVC SSERV1
A4B4 A2 31 LDX #INSTB2-INSTAB ; LOAD SECTOR SCAN SHIP
A4B6 20 6F A7 JSR LDINST
A4B9 2C 96 09 BIT DAMAGE+4 ; SECTOR SCAN DAMAGE
A4BC 70 27 BVS SSERV1
;
A4BE A6 79 LDX NSTARS
A4C0 SSERV2
A4C0 BD 40 0A LDA XPOSH,X
A4C3 BC AD 09 LDY XSIGN,X
A4C6 D0 02 BNE SSERV3
A4C8 49 FF EOR #$FF
A4CA SSERV3
A4CA A8 TAY
;
A4CB B9 E9 0D LDA PTAB,Y
A4CE 20 1E B7 JSR STVPOS
A4D1 BD 71 0A LDA YPOSH,X
A4D4 BC DE 09 LDY YSIGN,X
A4D7 D0 02 BNE SSERV4
A4D9 49 FF EOR #$FF
A4DB SSERV4
A4DB A8 TAY
;
A4DC B9 E9 0D LDA PTAB,Y
A4DF 20 FB B6 JSR STHPOS
A4E2 CA DEX
A4E3 10 DB BPL SSERV2
A4E5 SSERV1
;
;
; OBJCOL
; SELECT OBJECT COLOR , GRAPHIC
A4E5 A2 05 LDX #OBLAST+1
A4E7 OBJCL2 ; OBJCT LOOP
A4E7 CA DEX
A4E8 10 03 BPL OBJCL1
A4EA 4C 79 A5 JMP OBJC12
A4ED OBJCL1
A4ED A9 00 LDA #$00
A4EF 95 E4 STA GRAPH,X ; SET GRAPH PNTR TO NULL GRAPHIC
A4F1 9D EE 0C STA NUMBYT,X ; STORE 1 BYTE ONLY
A4F4 24 D0 BIT DISFLG ; GALACTIC CHART ?
A4F6 10 0B BPL OBJCL3 ; NO
A4F8 E0 03 CPX #$03 ; OBJ 0,1,2 ?
A4FA 90 EB BCC OBJCL2 ; YES , NO DISPLAY
A4FC OBJCL4
A4FC AD 0A D2 LDA RANDOM ; RANDOM COLOR
A4FF A0 F2 LDY #$F2 ; SMALL SIZE
A501 30 2B BMI OBJCL6 ; JMP
A503 OBJCL3
A503 D5 E9 CMP STFLAG,X ; OBJECT ON ?
A505 F0 E0 BEQ OBJCL2 ; NO
A507 70 F3 BVS OBJCL4 ; SECTOR SCAN
A509 BC 40 0A LDY XPOSH,X ; INTENSITY AND GRAPHIC SIZE
A50C 24 7B BIT BASFLG ; STARBASE ?
A50E 50 1E BVC OBJCL6 ; NO
A510 E0 02 CPX #$02 ; SBASE OBJECTS ?
A512 B0 16 BCS OBJCL8 ; NO
A514 AD 2C 0C LDA HPOS+2 ; GANG OBJ 0,1,2 TOGETHER
A517 18 CLC ; OBJ 2 IS REFERENCE
A518 7D DB BE ADC BHORTB,X ; HORIZ OFFSET , +8,-8
A51B 9D 2A 0C STA HPOS,X
A51E AD FB 0B LDA VPOS+2 ; GANG VPOS
A521 18 CLC
A522 69 04 ADC #4
A524 9D F9 0B STA VPOS,X
A527 AC 42 0A LDY XPOSH+2 ; ALL USE OBJ2 POSIT.
A52A OBJCL8
A52A A5 76 LDA BINTIM ; MODULATE STARBASE COLOR
A52C 29 0F AND #$0F
A25E OBJCL6
A52E 85 6B STA TEMP1 ; COLOR MODULATE
A530 98 TYA ; XPOSH
A531 BC F9 0B LDY VPOS,X ; IN BOUNDS CHECK
A534 C0 CC CPY #$CC ; IN BOUNDS ?
A536 B0 AF BCS OBJCL2 ; NO
A538 A4 D0 LDY DISFLG ; FRONT OR BACK ?
A53A F0 02 BEQ OBJCL7 ; FRONT
A53C 49 FF EOR #$FF ; ONES COMPLEMENT XPOSH
A53E OBJCL7
A53E C9 20 CMP #$20 ; TOO FAR AWAY ?
A540 B0 A5 BCS OBJCL2 ; YES
A542 C9 10 CMP #$10 ; SMALLEST SIZE ?
A544 90 02 BCC OBJCL5 ; NO
A546 A9 0F LDA #$0F ; SMALL SIZE
A548 OBJCL5 ; LD COLOR, GRAPHIC PNTRS
A548 85 6A STA TEMP ; TEMP SAVE XPOSH
A54A 1D 8C 0C ORA GINDEX,X ; TYPE OF GRAPHIC
A54D 4A LSR A ; ONLY 8 VALUES PER TYPE
A54E A8 TAY
A54F B9 2F BE LDA GPOINT,Y ; OFFSET FROM PHGRAF, OR ZYGRAF
A552 95 E4 STA GRAPH,X ; HOLDS INDEX
A554 B9 7F BE LDA NBYTAB,Y
A557 9D EE 0C STA NUMBYT,X ; NUMBER OF BYTES TO SAVE
A55A 98 TYA
A55B 4A LSR A
A55C 4A LSR A
A55D 4A LSR A
A55E A8 TAY ; GINDEX ONLY
A55F B9 D1 BF LDA COLTAB,Y ; CHROMA OF OBJ
A562 C0 08 CPY #$08 ; BASE STAR ?
A564 D0 03 BNE OBJC11 ; NO
A566 4D 0A D2 EOR RANDOM ; RANDOM COLOR
A569 OBJC11
A569 A4 6A LDY TEMP ; DISTANCE FOR INTENSITY
A56B 59 DB BF EOR COLINT,Y ; INTENSITY
A56E 45 6B EOR TEMP1 ; COLOR MODULATE , IF ANY
A570 BC DF B8 LDY CLINDX,X ; WHERE TO STORE
A573 99 EE 00 STA COLRAM,Y ; COLOR UPDATED
A576 4C E7 A4 JMP OBJCL2 ; NEXT OBJ
A579 OBJC12
; STRBRT
; STAR BIRGHTNESS INTENSITY NEW STAR CALC
;
A579 A0 AF LDY #BRTBLU
A57B A6 81 LDX SPABAK
A57D A5 8B LDA REDFLG
A57F F0 0C BEQ STRBR2
A581 C6 8B DEC REDFLG ; TIME OUT RED ALERT
A583 A0 4F LDY #BRTRED
A585 29 20 AND #$20
A587 F0 04 BEQ STRBR2
A589 A2 42 LDX #DIMRED
A58B A0 60 LDY #DRKRED
A58D STRBR2
A58D 84 F4 STY COLRAM+6 ; PF2
A58F 86 F6 STX COLRAM+8 ; BAK
A591 A6 79 LDX NSTARS ; X=INDWX , INIT TO LAST STAR
A593 STRBR1
A593 BD 40 0A LDA XPOSH,X ; INTENSITY DETERMINED BY XPOS
A596 A4 D0 LDY DISFLG ; FRONT OR BACK ?
A598 C0 01 CPY #$01 ; ALL BUT BACK VIEW WILL BRANCH
A59A D0 09 BNE STRBR5 ; FRONT
A59C C9 F0 CMP #$F0 ; STAR AT MINUS BOUNDS ?
A59E B0 03 BCS STRBR6
A5A0 20 64 B7 JSR NEWSTR
A5A3 STRBR6
A5A3 49 FF EOR #$FF ; COMPLEMENT XPOS
A5A5 STRBR5
A5A5 C9 10 CMP #$10 ; USE DEFAULT ?
A5A7 90 02 BCC STRBR4 ; NO
A5A9 A9 0F LDA #$0F ; DEFAULT
A5AB STRBR4
A5AB 0A ASL A
A5AC 29 1C AND #$1C
A5AE 05 72 ORA TIMERX ; MULTIPLEX WITH FRAME OUNT
A5B0 A8 TAY ; FOR 8 APPARENT LEVELS OF BRIGHT
A5B1 B9 90 BA LDA BRTABL,Y ; WHICH PLAYFIELD
A5B4 85 6A STA TEMP
A5B6 BD 2A 0C LDA HPOS,X
A5B9 29 03 AND #$03
A5BB A8 TAY
A5BC B9 B0 BA LDA MASK,Y
A5BF 25 6A AND TEMP
A5C1 9D EE 0C STA STRBYT,X ; DATA TO STORE IN STOSTR
A5C4 CA DEX
A5C5 E0 05 CPX #OBJNUM ; ALL DONE WITH STARS ?
A5C7 B0 CA BCS STRBR1 ; NEXT STAR
; ALL DONE
;
; END STAR/OBJECTS MOVE ROUTINES
;
;
;
; GAME ON ROUTINES
; PLAYER INTERFACE SECTION AND SERVICE SECTION, HIT DETECT
;
A5C9 24 64 BIT ATRACT ; GAME OVER LOCKOUT PLAYER
A5CB 50 03 BVC MAIN4 ; YES
A5CD 4C 9B A6 JMP MAIN3
A5D0 MAIN4
;
A5D0 20 FE AF JSR KEYSRV ; SERVICE KEYBOARD
; JOYSTK
; JOYSTICK EVALUATION ROUTINE
A5D3 AD 00 D3 LDA PORTA
A5D6 A8 TAY ; STORE TEMP
A5D7 29 03 AND #$03 ; VERT ONLY
A5D9 AA TAX
A5DA BD F5 BA LDA JOYTAB,X ; CODE FOR VERT
A5DD 85 C9 STA VERJOY
A5DF 98 TYA ; PORT A AGAN
A5E0 4A LSR A
A5E1 4A LSR A
A5E2 29 03 AND #$03
A5E4 AA TAX ; HORIZ ONLY
A5E5 BD F5 BA LDA JOYTAB,X ; CODE FOR HORIZ
A5E8 85 C8 STA HORJOY
A5EA 20 3D AF JSR HITZYL ; HIT ZYLON
A5ED 20 29 AE JSR PHOTON ; SERVICE TRIGGERS
; ASERVER
; ATTACK CPMPUTER SERVICE
A5F0 2C 95 09 BIT DAMAGE+3
A5F3 70 40 BVS ASERV2
A5F5 A5 7E LDA ATENER ; ATTACK ON ?
A5F7 F0 3C BEQ ASERV2 ; NO
A5F9 A5 D0 LDA DISFLG
A5FB D0 03 BNE ASERV1
A5FD 20 BF A7 JSR UPINST
A600 ASERV1
;
; AUTO TARGET SELECTOR
;
A600 AE 5C 09 LDX DCSTOR
A603 A5 BF LDA ATTARG
A605 30 05 BMI ASERV4
A607 AA TAX
A608 09 80 ORA #$80
A60A 85 BF STA ATTARG
A60C ASERV4
A60C B5 E9 LDA STFLAG,X
A60E D0 0B BNE ASERV3
A610 8A TXA
A611 49 01 EOR #$01
A613 AA TAX
A614 B5 E9 LDA STFLAG,X
A616 D0 03 BNE ASERV3
A618 AE 5C 09 LDX DCSTOR
A61B ASERV3
A61B 8E 5C 09 STX DCSTOR
;
; COMPUTER AUTO TRACKING
A61E A5 7C LDA TRKFLG
A620 F0 13 BEQ ASERV2
A622 A5 D0 LDA DISFLG
A624 C9 02 CMP #$02 ; FRONT OR BAK ?
A626 B0 0D BCS ASERV2 ; NO
A628 49 01 EOR #$01 ; WHICH DISFLG
A62A DD AD 09 CMP XSIGN,X ; OBJ IN SIGHT ?
A62D F0 06 BEQ ASERV2 ; YES
A62F AA TAX
A630 BD CF BE LDA TRKTAB,X ; WHICH KEY FOR SWITCHING DISPLAY
A633 85 CA STA THEKEY ; SWITCH DISPLAY
A635 ASERV2
;
A635 20 E6 AC JSR BSERVE ; SERVICE STARBASE
A638 20 79 AA JSR THINK ; SERVICE ZYLON BRAIN
; HITSHP
; RAIDER HIT PHOTON HIT DETECT
A63B A5 7B LDA BASFLG ; STARBASE ?
A63D D0 5C BNE HITSH1 ; YES
A63F A5 EB LDA STFLAG+2
A641 F0 58 BEQ HITSH1
A643 AC 42 0A LDY XPOSH+2
A646 C8 INY
A647 C0 02 CPY #$02
A649 B0 50 BCS HITSH1
A64B AC 73 0A LDY YPOSH+2
A64E C8 INY
A64F C0 02 CPY #$02
A651 B0 48 BCS HITSH1
A653 AC A4 0A LDY ZPOSH+2
A656 C8 INY
A657 C0 02 CPY #$02
A659 B0 40 BCS HITSH1
; A HIT !!
A65B 20 E1 AE JSR DAMCTL
A65E A0 02 LDY #$02
A660 20 6B AC JSR EXPLOS
A663 A2 7F LDX #$7F
A665 A5 81 LDA SPABAK ; DEAD ?
A667 D0 1E BNE HITSH2 ; NO
A669 A2 0A LDX #$0A ; FRONT
A66B 20 45 B0 JSR KEYS15
A66E A0 23 LDY #SENDST-SENTAB
A670 A2 08 LDX #$08 ; DESTROYED
A672 20 0A B1 JSR CRATE
A675 A2 5F LDX #DISPL3-DISPLY
A677 A0 80 LDY #$80
A679 A9 08 LDA #$08
A67B 20 F1 AD JSR LDISP
A67E 20 0D AE JSR CLRMAP
A681 A2 40 LDX #$40 ; ITS ALL OVER
A683 86 E3 STX BIGEXP
A685 A2 FF LDX #$FF ; HIT ME DEAD
A687 HITSH2
A687 86 8A STX HITME
A689 A9 00 LDA #$00
A68B 85 EB STA STFLAG+2
A68D A9 02 LDA #$02
A68F 85 BE STA PHEXWT
;
A691 A2 01 LDX #$01
A693 20 6F B8 JSR PANDS6
A696 A2 0A LDX #NOITB1-NOISTB
A698 20 A8 AE JSR NOISE
A69B HITSH1
; END GAME ON ROUTINES
A69B MAIN3
;
;
; CONTINOUS RUNNING ROUTINES
; CONSRV
; SERVICE CONSOL ROUTINE
A69B A4 63 LDY RESET
A69D AD 1F D0 LDA CONSOL
A6A0 49 FF EOR #$FF ; POSITIVE LOGIC
A6A2 29 03 AND #$03
A6A4 85 63 STA RESET
A6A6 F0 1A BEQ CONSR2
A6A8 88 DEY
A6A9 10 17 BPL CONSR2
A6AB 85 66 STA TIMOUT ; RESET TIMOUT
A6AD C9 02 CMP #$02
A6AF B0 06 BCS CONSR3 ; GAME SELECT
A6B1 A9 00 LDA #$00
A6B3 A8 TAY
A6B4 4C 5E A1 JMP INIT1 ; GAME START
A6B7 CONSR3
A6B7 E6 62 INC MISDIF
A6B9 A5 62 LDA MISDIF
A6BB 29 03 AND #$03
A6BD 85 62 STA MISDIF
A6BF 4C 5A A1 JMP INIT3
AC62 CONSR2
;
;
A6C2 20 04 B8 JSR PANDIS ; SERVICE PANNEL DISPLAY
A6C5 20 9B A8 JSR HSERVE ; SERVICE HYPERWARP JUMP
A6C8 20 16 B2 JSR MSERVE ; SERVIE MESSAGE
A6CB 20 E4 B4 JSR TIMERS ; EVALUATE ALL TIMERS , TIMEOUTS, ETC.
; END CONTINOUS RUNNING ROUTINES
;
;
;
A6CE 4C F3 A1 JMP MAIN ; END VBLANK ROUTINE, WAIT FOR NEW VBLANK
;
;
;
;
; NMI INTERRUPT SERVICE SECTION
;
;
A6D1 VBNMI
A6D1 A9 FF LDA #$FF
A6D3 85 67 STA PROGST ; SET PROGST VBLANK NMI FLAG
A6D5 A9 E0 LDA #ALPHA/256
A6D7 8D 09 D4 STA CHBASE ; USE STANDARD ALPHA CHARACTERS
A6DA A6 F6 LDX COLRAM+8 ; BAK
A6DC AD 0A D2 LDA RANDOM
A6DF 24 8A BIT HITME
A6E1 50 07 BVC VBLNK4
A6E3 30 04 BMI VBLNK1
A6E5 29 72 AND #$72
A6E7 09 40 ORA #$40
A6E9 VBLNK1
A6E9 AA TAX
A6EA VBLNK4
A6EA A5 D0 LDA DISFLG
A6EC C9 03 CMP #$03
A6EE 90 02 BCC VBLNK2
A6F0 A2 A0 LDX #DBLUE
A6F2 VBLNK2
A6F2 86 F6 STX COLRAM+8 ; BAK
;
A6F4 A2 08 LDX #$08
A6F6 VBLNK3
A6F6 B5 EE LDA COLRAM+0,X
A6F8 9D 12 D0 STA COLPM0,X
A6FB CA DEX
A6FC 10 F8 BPL VBLNK3
;
;
A6FE 8D 1E D0 STA HITCLR ; RESET HITS
;
A701 20 AB B2 JSR AUDIO ; SERVICE AUDIO
;
A704 E6 77 INC BINNMI ; ATRACT MODE STUFF
A706 D0 0D BNE VBLNK5
A708 A5 66 LDA TIMOUT
A70A 30 09 BMI VBLNK5
A70C E6 66 INC TIMOUT
A70E 10 05 BPL VBLNK5
A710 A0 00 LDY #$00
A712 4C 5C A1 JMP INIT4
A715 VBLNK5
;
;
A715 4C 4B A7 JMP POPALL
;
A718 DISNMI
A718 48 PHA ; PUSH ALL REGISTERS FOR OP SYSTEM
A719 8A TXA
A71A 48 PHA
A71B 98 TYA
A71C 48 PHA
A71D A9 E0 LDA #ALPHA/256
A71F AC 0B D4 LDY VCOUNT
A722 C0 60 CPY #$60
A724 F0 02 BEQ DISNM1
A726 A9 A0 LDA #CGRAPH/256
A728 DISNM1
A728 8D 09 D4 STA CHBASE ; USE FUTURE TYPE CHARACTER SET
;
A72B A2 04 LDX #$04
A72D 8D 0A D4 STA WSYNC
A730 DISNM2
A730 B5 F7 LDA COLRAM+9,X
A732 9D 16 D0 STA COLPF0,X
A735 CA DEX
A736 10 F8 BPL DISNM2
;
; READ HITS
A738 AD 08 D0 LDA M0PL
A73B 0D 09 D0 ORA M1PL
A73E 0D 0A D0 ORA M2PL
A741 0D 0B D0 ORA M3PL
A744 85 83 STA PHITS+1 ; PHOTON 3 STORED
A746 AD 0F D0 LDA P3PL
A749 85 82 STA PHITS+0 ; PHOTON 2 STORED
A74B POPALL
A74B 68 PLA
A74C A8 TAY
A74D 68 PLA
A74E AA TAX
A74F 68 PLA
;
; END POP
;
A750 40 RTI
;
;
;
;
;
; IRQ INTERRUPT SERVICE SECTION
;
A751 IRQVEC
; PUSH ACCUM REGISTERS
A751 48 PHA
; END PUSH
;
A752 A9 00 LDA #$00
A754 8D 0E D2 STA IRQEN ; RESET IRQ'S
A757 A9 40 LDA #IRQMSK
A759 8D 0E D2 STA IRQEN
A75C AD 09 D2 LDA KBCODE
A75F 09 C0 ORA #$C0
A761 85 CA STA THEKEY
A763 68 PLA
A764 40 RTI
;
; END IRQ INTERRRUPT SECTION
;
;
;
; SUBROUTINES;
;
;
;
A765 LDINS6 ; LOAD UP THE LINE
A765 99 A4 00 STA NUMPTS,Y
A768 E8 INX
A769 88 DEY
A76A 10 0E BPL LDINS4
A76C 20 82 A7 JSR DRAWER
A76F LDINST
; LOAD INSET RESERVE BYTE=$FE
; X= INITIAL START OF PNTR IN INSTAB
A76F A9 05 LDA #$05
A771 85 A2 STA TARPTR ; DEFINE TARGET POINTER
A773 2C 95 09 BIT DAMAGE+3 ; COMPUTER
A776 70 09 BVS LDINS2
A778 LDINS1
A778 A0 02 LDY #$02
A77A LDINS4
A77A BD F9 BA LDA INSTAB,X
A77D C9 FE CMP #$FE ; ALL DONE
A77F D0 E4 BNE LDINS6 ; NO
A781 LDINS2
A781 60 RTS
;
;
A782 DRAWER ; DRAW THE LINE
A782 A9 55 LDA #$55
A784 DRAWR3 ; ENTRY POINT FROM UPINST ************************
A784 85 6B STA TEMP1
A786 A5 A4 LDA NUMPTS
A788 85 6E STA TEMP4
A78A 29 7F AND #$7F
A78C 85 A4 STA NUMPTS
A78E DRAWR1
A78E A4 A5 LDY VDRAW
A790 B9 00 08 LDA VCONL,Y
A793 85 68 STA PNTR
A795 B9 64 08 LDA VCONH,Y
A798 85 69 STA PNTR+1
A79A A5 A6 LDA HDRAW
A79C 4A LSR A
A79D 4A LSR A
A79E 85 6A STA TEMP
A7A0 A5 A6 LDA HDRAW
A7A2 29 03 AND #$03
A7A4 A8 TAY
A7A5 B9 B0 BA LDA MASK,Y
A7A8 25 6B AND TEMP1
A7AA A4 6A LDY TEMP
A7AC 11 68 ORA (PNTR),Y
A7AE 91 68 STA (PNTR),Y
A7B0 24 6E BIT TEMP4
A7B2 10 04 BPL DRAWR4
A7B4 E6 A5 INC VDRAW
A7B6 D0 02 BNE DRAWR5 ; JUMP, VDRAW CANNOT CROSS 0 !!
A7B8 DRAWR4
A7B8 E6 A6 INC HDRAW
A7BA DRAWR5
A7BA C6 A4 DEC NUMPTS ; POINTS ALL DRAWN ?
A7BC D0 D0 BNE DRAWR1
A7BE DRAWR2
A7BE 60 RTS
;
;
;
;
A7BF UPINST
; UPDATE INSET
;
; FIRE CONTROL
A7BF AE 5C 09 LDX DCSTOR ; WHICH OBJECT
A7C2 A4 A2 LDY TARPTR
A7C4 C0 05 CPY #$05
A7C6 B0 24 BCS UPINS2
; LD TARGET DISPLAY
A7C8 A5 A0 LDA HTARGT
A7CA 85 A6 STA HDRAW
A7CC B9 6E BF LDA ZYTARG,Y
A7CF UPINS8
A7CF 0A ASL A
A7D0 85 6C STA TEMP2
A7D2 90 0D BCC UPINS9
A7D4 A9 81 LDA #$81
A7D6 85 A4 STA NUMPTS
A7D8 A5 A1 LDA VTARGT
A7DA 85 A5 STA VDRAW
A7DC A9 AA LDA #$AA
A7DE 20 84 A7 JSR DRAWR3
A7E1 UPINS9
A7E1 E6 A6 INC HDRAW
A7E3 A5 6C LDA TEMP2
A7E5 D0 E8 BNE UPINS8
A7E7 E6 A1 INC VTARGT
A7E9 UPIN10
A7E9 E6 A2 INC TARPTR
A7EB 60 RTS
A7EC UPINS2
A7EC C0 0A CPY #$0A
A7EE 90 F9 BCC UPIN10
A7F0 B5 E9 LDA STFLAG,X
A7F2 F0 3C BEQ UPINS3
A7F4 BD 71 0A LDA YPOSH,X
A7F7 BC DE 09 LDY YSIGN,X
A7FA F0 08 BEQ UPINS4
A7FC C9 0C CMP #$0C
A7FE 90 0A BCC UPINS5
A800 A9 0B LDA #$0B
A802 10 06 BPL UPINS5 ; JUMP
A804 UPINS4
A804 C9 F5 CMP #$F5
A806 B0 02 BCS UPINS5
A808 A9 F5 LDA #$F5
A80A UPINS5
A80A 18 CLC
A80B 69 83 ADC #131
A80D 85 A0 STA HTARGT
A80F BD A2 0A LDA ZPOSH,X
A812 49 FF EOR #$FF
A814 BC 0F 0A LDY ZSIGN,X
A817 D0 08 BNE UPINS6
A819 C9 05 CMP #$05
A81B 90 0A BCC UPINS7
A81D A9 04 LDA #$04
A81F 10 06 BPL UPINS7 ; JUMP
A821 UPINS6
A821 C9 FA CMP #$FA
A823 B0 02 BCS UPINS7
A825 A9 FA LDA #$FA
A827 UPINS7
A827 18 CLC
A828 69 4D ADC #77
A82A 85 A1 STA VTARGT
A82C A9 00 LDA #$00
A82E 85 A2 STA TARPTR
A830 UPINS3
; CLEAR INSET
A830 A9 36 LDA #INSET
A832 85 68 STA PNTR
A834 A9 1B LDA #INSET/256
A836 85 69 STA PNTR+1
A838 A2 0E LDX #14
A83A UPIN12
A83A A0 06 LDY #$06
A83C UPIN13
A83C B1 68 LDA (PNTR),Y
A83E 29 55 AND #$55
A840 91 68 STA (PNTR),Y
A842 88 DEY
A843 10 F7 BPL UPIN13
A845 18 CLC
A846 A5 68 LDA PNTR
A848 69 28 ADC #40
A84A 85 68 STA PNTR
A84C 90 02 BCC UPIN14
A84E E6 69 INC PNTR+1
A850 UPIN14
A850 CA DEX
A851 10 E7 BPL UPIN12
; DONE CLEAR INSET
A853 AE 5C 09 LDX DCSTOR
A856 C8 INY ; Y=0
A857 A5 88 LDA LOKWAT
A859 F0 04 BEQ UPIN11
A85B C6 88 DEC LOKWAT
A85D D0 39 BNE UPINS1
A85F UPIN11
A85F A5 A0 LDA HTARGT
A861 C9 81 CMP #129
A863 90 33 BCC UPINS1
A865 C9 85 CMP #133
A867 B0 2F BCS UPINS1
A869 A9 AA LDA #$AA
A86B 8D FE 1B STA ICON2
A86E 8D 04 1C STA ICON2+6
A871 A5 A1 LDA VTARGT
A873 C9 4B CMP #75
A875 90 21 BCC UPINS1
A877 C9 4F CMP #79
A879 B0 1D BCS UPINS1
A87B A9 AA LDA #$AA
A87D 8D 9E 1C STA ICON2+160
A880 8D A4 1C STA ICON2+166
A883 BD 40 0A LDA XPOSH,X
A886 C9 0C CMP #$0C
A888 B0 0E BCS UPINS1
A88A A0 A0 LDY #$A0
A88C 8C 40 1D STY ICON1
A88F 8C 68 1D STY ICON1+40
A892 8C 42 1D STY ICON1+2
A895 8C 6A 1D STY ICON1+42
A898 UPINS1
A898 84 A3 STY LOKFLG
A89A 60 RTS
;
;
;
;
;
;
A89B HSERVE
; HYPERWARP SERVICE ROUTINE
A89B A4 C0 LDY HFLAG ; HWARP ?
A89D F0 61 BEQ HSERV4 ; NO
A89F A5 70 LDA SPEED
A8A1 C9 FE CMP #$FE ; UP TO SPEED ?
A8A3 B0 5C BCS HSERV5 ; YES
A8A5 C9 80 CMP #$80 ; DO LINES ?
A8A7 90 03 BCC HSERV6 ; NO
A8A9 20 B4 A9 JSR HLINES
A8AC HSERV6
; STEERING STUFF
A8AC A9 03 LDA #$03
A8AE 8D 5C 09 STA DCSTOR
A8B1 A9 90 LDA #$90
A8B3 8D 8F 0C STA GINDEX+3
A8B6 85 EC STA STFLAG+3
A8B8 A9 1F LDA #$1F
A8BA 8D 43 0A STA XPOSH+3
A8BD 38 SEC
A8BE AD FC 0B LDA VPOS+3
A8C1 E9 77 SBC #VOBCEN-3
A8C3 18 CLC
A8C4 65 C5 ADC VSTEER
A8C6 29 7F AND #$7F
A8C8 85 8E STA HYVPOS
A8CA 38 SEC
A8CB AD 2D 0C LDA HPOS+3
A8CE E9 7D SBC #HOBCEN
A8D0 18 CLC
A8D1 65 C4 ADC HSTEER
A8D3 29 7F AND #$7F
A8D5 85 8F STA HYHPOS
A8D7 A5 62 LDA MISDIF
A8D9 F0 11 BEQ HSERV7
A8DB AD 0A D2 LDA RANDOM
A8DE A4 D0 LDY DISFLG
A8E0 F0 06 BEQ HSERV9
A8E2 8D 2D 0C STA HPOS+3
A8E5 8D FC 0B STA VPOS+3
A8E8 HSERV9
A8E8 C9 10 CMP #$10
A8EA B0 14 BCS HSERV4
A8EC HSERV7
A8EC AD 0A D2 LDA RANDOM
A8EF 09 10 ORA #$10
A8F1 25 C6 AND STERMK
A8F3 8D 9A 0B STA YINCRE+3
A8F6 AD 0A D2 LDA RANDOM
A8F9 09 10 ORA #$10
A8FB 25 C6 AND STERMK
A8FD 8D CB 0B STA ZINCRE+3
A900 HSERV4
A900 60 RTS
A901 HSERV5
A901 98 TYA ; IN JUMP ?
A902 30 11 BMI HSERV8 ; YES
; BEGIN JUMP
A904 A9 FF LDA #$FF
A906 85 C0 STA HFLAG
A908 A2 00 LDX #CH4TB1-CH4TAB
A90A 20 A6 B3 JSR NOTINT
A90D 20 A7 B1 JSR CSERV8 ; JUMP ENERGY
A910 A0 1B LDY #SENHSP-SENTAB
A912 4C 8D A9 JMP HABOR1
A915 HSERV8 ; IN JUMP
A915 C6 91 DEC HYPENG ; ALL DONE ?
A917 F0 05 BEQ HSER10 ; YES
A919 A2 02 LDX #$02 ; DEC ENERGY
A91B 4C 6F B8 JMP PANDS6
A91E HSER10
; HWARP COMPLETE
A91E A0 19 LDY #SENHWC-SENTAB
A920 20 87 A9 JSR HABOR2
A923 A5 8F LDA HYHPOS
A925 85 8D STA GHPOS
A927 A5 8E LDA HYVPOS
A929 85 8C STA GVPOS
A92B 4A LSR A
A92C 29 07 AND #$07
A92E AA TAX
A92F BD B3 BF LDA JMASK,X
A932 85 C7 STA JMPMSK
A934 A4 92 LDY HYPQAD
A936 84 90 STY QUADRT
A938 A9 00 LDA #$00
A93A 85 7B STA BASFLG
A93C BE C9 08 LDX CHTRAM,Y
A93F 10 2E BPL HSERV2
A941 A9 FF LDA #$FF ; STARBASE STUFF
A943 85 7B STA BASFLG
A945 A0 00 LDY #$00
A947 HSERV3
A947 A9 00 LDA #$00
A949 99 68 0B STA XINCRE+2,Y
A94C A9 01 LDA #$01
A94E 99 AF 09 STA XSIGN+2,Y
A951 AD 0A D2 LDA RANDOM
A954 25 C7 AND JMPMSK
A956 99 42 0A STA XPOSH+2,Y
A959 98 TYA
A95A 18 CLC
A95B 69 31 ADC #RAMNUM
A95D A8 TAY
A95E C9 93 CMP #RAMNUM*3
A960 90 E5 BCC HSERV3
A962 AD 42 0A LDA XPOSH+2
A965 09 71 ORA #$71
A967 8D 42 0A STA XPOSH+2
A96A A2 02 LDX #$02
A96C 4C BE B7 JMP NEWST4
A96F HSERV2
A96F F0 0E BEQ HSERV1
A971 A9 FF LDA #$FF ; RED ALERT
A973 85 8B STA REDFLG
A975 A2 06 LDX #CH4TB2-CH4TAB
A977 20 A6 B3 JSR NOTINT
A97A A0 75 LDY #SENRED-SENTAB
A97C 20 23 B2 JSR LDMESS
A97F HSERV1
A97F 60 RTS
;
;
;
;
A980 HABORT
; HYPERWARP ABORT ROUTINE
A980 A2 01 LDX #$01
A982 20 6F B8 JSR PANDS6
A985 A0 17 LDY #SENHWA-SENTAB ; ABORT
A987 HABOR2 ; ENTRY POINT HWARP COMPLETE ***********************
A987 A9 00 LDA #$00
A989 85 71 STA WARP
A98B 85 C0 STA HFLAG
A98D HABOR1 ; ENTRY POINT BEGIN JUMP **************************
A98D A9 10 LDA #STLAST
A98F 85 79 STA NSTARS
A991 A9 00 LDA #$00
A993 85 C1 STA HISPED
A995 85 73 STA ETIMER ; KEEP PROGRAM FROM GOING SOUTH
A997 85 8A STA HITME ; CLEAR THE OTHER EXPLOS BUG
A999 8D 8F 0C STA GINDEX+3
A99C 85 80 STA WPENER
A99E C0 17 CPY #SENHWA-SENTAB
A9A0 F0 04 BEQ HABOR3
A9A2 85 E9 STA STFLAG+0
A9A4 85 EA STA STFLAG+1
A9A6 HABOR3
A9A6 85 EB STA STFLAG+2
A9A8 85 EC STA STFLAG+3
A9AA 85 ED STA STFLAG+4
A9AC 85 75 STA BSEQTM
A9AE 8D 5C 09 STA DCSTOR
A9B1 4C 23 B2 JMP LDMESS
;
;
;
;
A9B4 HLINES
; DRW HWARP LINES
A9B4 C6 C2 DEC HTIMER
A9B6 10 68 BPL HLINE1
A9B8 A9 01 LDA #$01
A9BA 85 C1 STA HISPED
A9BC A9 30 LDA #RMLAST ; HWARP STARS ON
A9BE 85 79 STA NSTARS
A9C0 A9 03 LDA #$03
A9C2 85 C2 STA HTIMER
; RESET LINES
A9C4 A6 C3 LDX HPNTR
A9C6 HLINE2
A9C6 A9 12 LDA #$12 ; XINIT
A9C8 85 69 STA PNTR+1
A9CA AD 0A D2 LDA RANDOM ; INIT Y,Z
A9CD 29 03 AND #$03
A9CF A8 TAY
A9D0 B9 3A BB LDA YINIT,Y
A9D3 9D 71 0A STA YPOSH,X
A9D6 B9 3E BB LDA ZINIT,Y
A9D9 9D A2 0A STA ZPOSH,X
A9DC 20 BE B7 JSR NEWST4 ; WHICH QUADRANT
A9DF 8A TXA
A9E0 A8 TAY ; X GOES TO Y
A9E1 A9 05 LDA #$05
A9E3 85 6E STA TEMP4 ; 8 STARS
A9E5 HLINE4
;
A9E5 18 CLC
A9E6 A5 68 LDA PNTR
A9E8 69 50 ADC #$50 ; XINCRE
A9EA 85 68 STA PNTR
A9EC 9D D3 0A STA XPOSL,X
A9EF A5 69 LDA PNTR+1
A9F1 69 00 ADC #$00
A9F3 85 69 STA PNTR+1
A9F5 9D 40 0A STA XPOSH,X
A9F8 A9 00 LDA #$00
A9FA 9D 66 0B STA XINCRE,X
A9FD 9D 97 0B STA YINCRE,X
AA00 9D C8 0B STA ZINCRE,X
;
AA03 A9 01 LDA #$01
AA05 9D AD 09 STA XSIGN,X ; AND THAT FIXES THAT
AA08 A9 63 LDA #99 ; OFF-SCREEN
AA0A 9D F9 0B STA VPOS,X
AA0D 9D 2A 0C STA HPOS,X
AA10 20 C1 AC JSR EXHLP1 ; DEFINE Y,Z
AA13 CA DEX
AA14 E0 11 CPX #STLAST+1
AA16 B0 02 BCS HLINE3
AA18 A2 30 LDX #RMLAST
AA1A HLINE3
AA1A C6 6E DEC TEMP4
AA1C 10 C7 BPL HLINE4
AA1E 86 C3 STX HPNTR
AA20 HLINE1
AA20 60 RTS
;
;
;
;
AA21 DIVIDE
; A = (TOP/BOTTOM)X80
;
AA21 A9 00 LDA #$00 ;CLEAR THE RESULT
AA23 85 6D STA TEMP3
AA25 A9 07 LDA #$07 ; NUMBER OF SHIFTS
AA27 85 6E STA TEMP4
; SHIFT 0 INTO THE MSBIT
AA29 46 6B LSR TEMP1 ; TOP NUMBER
AA2B 66 6A ROR TEMP
AA2D A5 D0 LDA DISFLG ; FRONT OR BACK ?
AA2F D0 0F BNE DIVID1 ; BACK
AA31 BD 40 0A LDA XPOSH,X ; BOTTOM NUMBER
AA34 4A LSR A
AA35 85 69 STA PNTR+1
AA37 BD D3 0A LDA XPOSL,X
AA3A 6A ROR A
AA3B 85 68 STA PNTR
AA3D 4C 52 AA JMP DIVID2
AA40 DIVID1
AA40 38 SEC
AA41 A9 00 LDA #$00
AA43 FD D3 0A SBC XPOSL,X
AA46 85 68 STA PNTR
AA48 A9 00 LDA #$00
AA4A FD 40 0A SBC XPOSH,X
AA4D 4A LSR A
AA4E 85 69 STA PNTR+1
AA50 66 68 ROR PNTR
;
AA52 DIVID2
AA52 06 6D ASL TEMP3 ; SHIFT RESULT
AA54 38 SEC ; SUBTRACT BOTTOM FROM TOP
AA55 A5 6A LDA TEMP
AA57 E5 68 SBC PNTR
AA59 A8 TAY
AA5A A5 6B LDA TEMP1
AA5C E5 69 SBC PNTR+1
AA5E 90 06 BCC DIVID3 ; BOTTOM GREATER THAN TOP
; TOP LARGER
AA60 85 6B STA TEMP1 ; STORE REMAINDER
AA62 84 6A STY TEMP
AA64 E6 6D INC TEMP3 ; ADD 1 TO RESULT
AA66 DIVID3
AA66 06 6A ASL TEMP ; SHIFT TOP
AA68 26 6B ROL TEMP1
AA6A 90 03 BCC DIVID4
; IF TOP IS GREATER THN BOTTOM THEN OVERFLOW
AA6C A9 FF LDA #$FF ; MAX VALUE TO RESULT
AA6E 60 RTS
AA6F DIVID4
AA6F C6 6E DEC TEMP4 ; NEXT BIT
AA71 10 DF BPL DIVID2
AA73 A4 6D LDY TEMP3 ; RESULT IN Y
AA75 B9 E9 0D LDA PTAB,Y ; MULTIPLY BY 80 (PTAB)
AA78 DIVID5 ; ENTRY POINT FROM THINK ******************
AA78 60 RTS
;
;
;
;
AA79 THINK
; COMPUTER ATTACK SUBROUTINE
AA79 A5 C0 LDA HFLAG
AA7B 05 7B ORA BASFLG
AA7D D0 F9 BNE DIVID5 ; BRANCH TO RTS
; CRUISER PHOTON CONVERGENCE
AA7F A5 86 LDA LOKLOC
AA81 F0 30 BEQ THIN38
AA83 A6 89 LDX LOKTAR
AA85 38 SEC
AA86 BD F9 0B LDA VPOS,X
AA89 ED FC 0B SBC VPOS+3
AA8C 90 02 BCC THIN37
AA8E A9 00 LDA #$00
AA90 THIN37
AA90 20 CA AE JSR POHELP
AA93 8D CB 0B STA ZINCRE+3
AA96 8D CC 0B STA ZINCRE+4
AA99 38 SEC
AA9A AD 2D 0C LDA HPOS+3
AA9D FD 2A 0C SBC HPOS,X
AAA0 20 CA AE JSR POHELP
AAA3 8D 9A 0B STA YINCRE+3
AAA6 38 SEC
AAA7 AD 2E 0C LDA HPOS+4
AAAA FD 2A 0C SBC HPOS,X
AAAD 20 CA AE JSR POHELP
AAB0 8D 9B 0B STA YINCRE+4
;
AAB3 THIN38
;
; HELPER FOR THINK
AAB3 A2 03 LDX #$03
AAB5 THIN39
AAB5 D6 BA DEC ROTTIM,X
AAB7 10 27 BPL THIN44
AAB9 8A TXA
AABA 4A LSR A
AABB A8 TAY
AABC B9 C8 00 LDA HORJOY,Y
AABF A4 D0 LDY DISFLG
AAC1 F0 05 BEQ THIN40
AAC3 49 FF EOR #$FF
AAC5 18 CLC
AAC6 69 01 ADC #$01
AAC8 THIN40
AAC8 18 CLC
AAC9 75 B4 ADC XINPRS+2,X
AACB 10 02 BPL THIN41
AACD A9 00 LDA #$00
AACF THIN41
AACF C9 10 CMP #$10
AAD1 90 02 BCC THIN42
AAD3 A9 0F LDA #$0F
AAD5 THIN42
AAD5 95 B4 STA XINPRS+2,X
AAD7 C9 08 CMP #$08
AAD9 90 02 BCC THIN43
AADB 49 0F EOR #$0F
AADD THIN43
AADD 0A ASL A
AADE 95 BA STA ROTTIM,X
AAE0 THIN44
AAE0 CA DEX
AAE1 10 D2 BPL THIN39
;
AAE3 AD 8E 0C LDA GINDEX+2
AAE6 D0 1B BNE THINK2 ; NOT A PHOTON
; PHOTON CONVERGENCE
AAE8 A4 62 LDY MISDIF ; DIFFICULTY
AAEA B9 85 BF LDA PHODIF,Y
AAED AE A4 0A LDX ZPOSH+2
AAF0 10 02 BPL THINK3
AAF2 29 7F AND #$7F
AAF4 THINK3
AAF4 8D CA 0B STA ZINCRE+2
AAF7 09 80 ORA #$80
AAF9 AE 73 0A LDX YPOSH+2
AAFC 10 02 BPL THINK4
AAFE 29 7F AND #$7F
AB00 THINK4
AB00 8D 99 0B STA YINCRE+2
AB03 THINK2
AB03 A5 76 LDA BINTIM
AB05 29 03 AND #$03
AB07 F0 2E BEQ THINK5
AB09 THINK1
AB09 A5 E6 LDA GRAPH+2
AB0B F0 04 BEQ THIN20 ; NOT ON
AB0D A5 EB LDA STFLAG+2
AB0F D0 25 BNE THIN14
AB11 THIN20
; METORITE
AB11 AD 0A D2 LDA RANDOM
AB14 C9 04 CMP #$04
AB16 B0 1E BCS THIN14
AB18 A9 60 LDA #$60
AB1A 8D 8E 0C STA GINDEX+2
AB1D A2 02 LDX #$02
AB1F 20 64 B7 JSR NEWSTR ; DEFINE LIKE A STAR
AB22 A9 3C LDA #60
AB24 85 EB STA STFLAG+2
AB26 A9 88 LDA #$88
AB28 8D 68 0B STA XINCRE+2
AB2B A9 00 LDA #$00
AB2D 8D 2C 0C STA HPOS+2 ; METEROR FLASH
AB30 8D 99 0B STA YINCRE+2
AB33 8D CA 0B STA ZINCRE+2
AB36 THIN14
AB36 60 RTS
AB37 THINK5
AB37 A5 A7 LDA ZYTOGG
AB39 49 01 EOR #$01
AB3B 85 A7 STA ZYTOGG
AB3D AA TAX ; WHICH ZYLON TO THINK
AB3E B5 E9 LDA STFLAG,X ; ALREADY ON?
AB40 D0 42 BNE THINK6 ; YES
; INIT ZYLON
AB42 A5 E9 LDA STFLAG+0
AB44 05 EA ORA STFLAG+1
AB46 29 01 AND #$01
AB48 A4 90 LDY QUADRT
AB4A D9 C9 08 CMP CHTRAM,Y
AB4D B0 BA BCS THINK1
; OK TO INIT
AB4F A9 FF LDA #$FF
AB51 95 E9 STA STFLAG,X
AB53 AD 0A D2 LDA RANDOM
AB56 29 07 AND #$07
AB58 A8 TAY
AB59 B9 89 BF LDA ZYGIND,Y
AB5C 9D 8C 0C STA GINDEX+0,X
AB5F A5 62 LDA MISDIF
AB61 F0 03 BEQ THIN45
AB63 B9 91 BF LDA INTSEQ,Y
AB66 THIN45
AB66 95 A8 STA SEQEN,X
AB68 A9 01 LDA #$01
AB6A 95 AA STA SEQTIM,X
AB6C 9D AD 09 STA XSIGN,X
AB6F AD 0A D2 LDA RANDOM
AB72 25 C7 AND JMPMSK
AB74 9D A2 0A STA ZPOSH,X
AB77 69 13 ADC #$13
AB79 9D 71 0A STA YPOSH,X
AB7C 09 71 ORA #$71
AB7E 9D 40 0A STA XPOSH,X
AB81 20 BE B7 JSR NEWST4 ; Y,Z RANDOM SIGN
AB84 THINK6
;
; SEQUENCER AND TIMEOUT SECTION
;
AB84 BD 40 0A LDA XPOSH,X
AB87 C9 20 CMP #$20
AB89 B0 11 BCS THIN27
AB8B BD AD 09 LDA XSIGN,X
AB8E F0 08 BEQ THIN26
AB90 B5 E4 LDA GRAPH,X
AB92 F0 08 BEQ THIN27
AB94 C9 29 CMP #ZYGRF6-ZYGRAF
AB96 F0 04 BEQ THIN27
AB98 THIN26
AB98 A9 00 LDA #$00
AB9A 95 A8 STA SEQEN,X
AB9C THIN27
AB9C D6 AA DEC SEQTIM,X ; TIMEOUT
AB9E 10 24 BPL THIN30
ABA0 A9 78 LDA #120
ABA2 95 AA STA SEQTIM,X
ABA4 A5 62 LDA MISDIF
ABA6 AC 0A D2 LDY RANDOM
ABA9 C0 30 CPY #$30
ABAB 90 01 BCC THIN35
ABAD 4A LSR A
ABAE THIN35
ABAE 4A LSR A
ABAF 95 B8 STA BSTRAF,X
ABB1 B5 A8 LDA SEQEN,X
ABB3 THIN28
ABB3 2C 0A D2 BIT RANDOM
ABB6 10 02 BPL THIN31
ABB8 49 0F EOR #$0F
ABBA THIN31
ABBA 95 AC STA XINDES,X
ABBC E8 INX
ABBD E8 INX
ABBE E0 06 CPX #$06
ABC0 90 F1 BCC THIN28
ABC2 A6 A7 LDX ZYTOGG ; RESTORE X
ABC4 THIN30
;
; ZYLON STRAFING SECTION
;
ABC4 B5 A8 LDA SEQEN,X
ABC6 D0 32 BNE THIN24
ABC8 A4 A7 LDY ZYTOGG
ABCA THIN11
ABCA C0 31 CPY #RAMNUM
ABCC B0 13 BCS THIN12
ABCE B9 B8 00 LDA BSTRAF,Y
ABD1 4A LSR A
ABD2 B9 40 0A LDA XPOSH,Y
ABD5 B0 06 BCS THIN36
ABD7 C9 0A CMP #$0A
ABD9 90 0E BCC THIN22
ABDB B0 04 BCS THIN12 ; JUMP
ABDD THIN36
ABDD C9 F5 CMP #$F5
ABDF B0 04 BCS THIN33
ABE1 THIN12
ABE1 B9 AD 09 LDA XSIGN,Y
ABE4 4A LSR A
ABE5 THIN33
ABE5 A9 0F LDA #$0F
ABE7 B0 02 BCS THIN23
ABE9 THIN22
ABE9 A9 00 LDA #$00
ABEB THIN23
ABEB 95 AC STA XINDES,X
ABED 18 CLC
ABEE 98 TYA
ABEF 69 31 ADC #RAMNUM
ABF1 A8 TAY
ABF2 E8 INX
ABF3 E8 INX
ABF4 E0 06 CPX #$06
ABF6 90 D2 BCC THIN11
ABF8 A6 A7 LDX ZYTOGG ; RESTORE X
ABFA THIN24
;
; ACCELERATION SECTION
;
ABFA A4 A7 LDY ZYTOGG
ABFC THINK8
ABFC B5 B2 LDA XINPRS,X
ABFE D5 AC CMP XINDES,X
AC00 F0 08 BEQ THIN10
AC02 B0 04 BCS THINK9
AC04 F6 B2 INC XINPRS,X
AC06 90 02 BCC THIN10 ; JUMP
AC08 THINK9
AC08 D6 B2 DEC XINPRS,X
AC0A THIN10
AC0A 86 6A STX TEMP ; SAVE X
AC0C AA TAX
AC0D BD 99 BF LDA ZYWARP,X
AC10 A6 6A LDX TEMP ; RESTORE X
AC12 99 66 0B STA XINCRE,Y
AC15 98 TYA
AC16 18 CLC
AC17 69 31 ADC #RAMNUM
AC19 A8 TAY
AC1A E8 INX
AC1B E8 INX
AC1C E0 06 CPX #$06
AC1E 90 DC BCC THINK8
AC20 A6 A7 LDX ZYTOGG ; RESTORE X
;
;
; FIRE PHOTON
AC22 AD 8E 0C LDA GINDEX+2
AC25 D0 0B BNE THIN16
AC27 A5 EB LDA STFLAG+2
AC29 D0 06 BNE THIN13
AC2B A5 BE LDA PHEXWT
AC2D F0 03 BEQ THIN16
AC2F C6 BE DEC PHEXWT
AC31 THIN13
AC31 60 RTS
AC32 THIN16
AC32 18 CLC
AC33 BD A2 0A LDA ZPOSH,X
AC36 69 02 ADC #$02
AC38 C9 05 CMP #$05
AC3A B0 F5 BCS THIN13
AC3C A0 D0 LDY #$D0
AC3E BD AD 09 LDA XSIGN,X
AC41 4A LSR A
AC42 BD 40 0A LDA XPOSH,X
AC45 B0 08 BCS THIN15
AC47 49 FF EOR #$FF
AC49 A4 62 LDY MISDIF
AC4B F0 E4 BEQ THIN13
AC4D A0 50 LDY #$50
AC4F THIN15
AC4F C9 20 CMP #$20
AC51 B0 DE BCS THIN13
AC53 8C 68 0B STY XINCRE+2
AC56 A9 00 LDA #$00
AC58 8D 8E 0C STA GINDEX+2
AC5B 8D 2C 0C STA HPOS+2 ; METEROR FLASH
AC5E A9 3E LDA #62
AC60 85 EB STA STFLAG+2
AC62 A2 02 LDX #$02
AC64 A4 A7 LDY ZYTOGG
AC66 84 BF STY ATTARG
AC68 4C AF AC JMP EXHELP
;
;
;
AC6B EXPLOS
; INIT EXPLOSION
; Y CONTAINS INDEX OF ZYLON HIT
AC6B A9 80 LDA #$80 ; 2 SECONDS
AC6D 85 73 STA ETIMER
AC6F A2 30 LDX #RMLAST
AC71 86 79 STX NSTARS ; LAST STAR FOR EXPLOSION
AC73 EXPLS1
AC73 AD 0A D2 LDA RANDOM
AC76 29 0F AND #$0F
AC78 79 2A 0C ADC HPOS,Y
AC7B E9 30 SBC #$30
AC7D 9D 2A 0C STA HPOS,X
AC80 AD 0A D2 LDA RANDOM
AC83 29 0F AND #$0F
AC85 79 F9 0B ADC VPOS,Y
AC88 4A LSR A
AC89 E9 10 SBC #$10
AC8B 9D F9 0B STA VPOS,X
AC8E 20 AF AC JSR EXHELP
AC91 AD 0A D2 LDA RANDOM
AC94 29 87 AND #$87
AC96 9D 66 0B STA XINCRE,X
AC99 AD 0A D2 LDA RANDOM
AC9C 29 87 AND #$87
AC9E 9D 97 0B STA YINCRE,X
ACA1 AD 0A D2 LDA RANDOM
ACA4 29 87 AND #$87
ACA6 9D C8 0B STA ZINCRE,X
ACA9 CA DEX
ACAA E0 10 CPX #STLAST
ACAC D0 C5 BNE EXPLS1
ACAE 60 RTS
;
;
ACAF EXHELP
; EXPLOSION HELPER
ACAF B9 AD 09 LDA XSIGN,Y
ACB2 9D AD 09 STA XSIGN,X
ACB5 B9 40 0A LDA XPOSH,Y
ACB8 9D 40 0A STA XPOSH,X
ACBB B9 D3 0A LDA XPOSL,Y
ACBE 9D D3 0A STA XPOSL,X
ACC1 EXHLP1 ; ENTRY POINT FROM HLINES *************************
ACC1 B9 DE 09 LDA YSIGN,Y
ACC4 9D DE 09 STA YSIGN,X
ACC7 B9 71 0A LDA YPOSH,Y
ACCA 9D 71 0A STA YPOSH,X
ACCD B9 0F 0A LDA ZSIGN,Y
ACD0 9D 0F 0A STA ZSIGN,X
;
ACD3 B9 A2 0A LDA ZPOSH,Y
ACD6 9D A2 0A STA ZPOSH,X
ACD9 B9 04 0B LDA YPOSL,Y
ACDC 9D 04 0B STA YPOSL,X
ACDF B9 35 0B LDA ZPOSL,Y
ACE2 9D 35 0B STA ZPOSL,X
ACE5 EXHLP2 ; ENTRY POINT FROM BSERVE **********************
ACE5 60 RTS
;
;
;
;
ACE6 BSERVE
; STARBASE SERVICE ROUTINE
ACE6 A5 7B LDA BASFLG
ACE8 F0 FB BEQ EXHLP2 ; BRANCH TO RTS
ACEA A5 D0 LDA DISFLG
ACEC D0 05 BNE BSERV9
ACEE A9 14 LDA #$14 ; PRIORITY FOR FRONT VIEW OF STARBASE
ACF0 8D 1B D0 STA PRIOR
ACF3 BSERV9
ACF3 A9 02 LDA #$02
ACF5 8D 5C 09 STA DCSTOR
;
ACF8 A9 30 LDA #$30
ACFA 8D 8E 0C STA GINDEX+2
ACFD A9 20 LDA #$20
ACFF 8D 8D 0C STA GINDEX+1
AD02 A9 40 LDA #$40
AD04 8D 8C 0C STA GINDEX+0
AD07 A9 FF LDA #$FF
;
AD09 A6 90 LDX QUADRT
AD0B BC C9 08 LDY CHTRAM,X
AD0E 30 02 BMI BSER13
AD10 A9 00 LDA #$00
AD12 BSER13
AD12 85 E9 STA STFLAG+0
AD14 85 EA STA STFLAG+1
AD16 85 EB STA STFLAG+2
AD18 85 7B STA BASFLG
AD1A 30 0A BMI BSERV1
AD1C A0 02 LDY #$02
AD1E 20 6B AC JSR EXPLOS
AD21 A2 0A LDX #NOITB1-NOISTB
AD23 4C A8 AE JMP NOISE
AD26 BSERV1
; TOO CLOSE ?
AD26 AD 42 0A LDA XPOSH+2
AD29 D0 0A BNE BSER14
AD2B AD D5 0A LDA XPOSL+2
AD2E C9 20 CMP #$20
AD30 B0 03 BCS BSER14
AD32 EE D5 0A INC XPOSL+2
AD35 BSER14
; ORBIT ?
AD35 AD 2C 0C LDA HPOS+2
AD38 38 SEC
AD39 E9 78 SBC #$78
AD3B C9 10 CMP #$10
AD3D B0 22 BCS BSERV8
AD3F AD FB 0B LDA VPOS+2
AD42 38 SEC
AD43 E9 68 SBC #$68
AD45 C9 10 CMP #$10
AD47 B0 18 BCS BSERV8
AD49 AD 42 0A LDA XPOSH+2
AD4C C9 02 CMP #$02
AD4E B0 11 BCS BSERV8
AD50 AD AF 09 LDA XSIGN+2
AD53 2D 11 0A AND ZSIGN+2
AD56 49 01 EOR #$01
AD58 05 70 ORA SPEED
AD5A 0D A4 0A ORA ZPOSH+2
AD5D 05 71 ORA WARP
AD5F F0 10 BEQ BSERV3 ; IN ORIBT
AD61 BSERV8
AD61 A5 75 LDA BSEQTM ; ORBIT ABORTED
AD63 C9 02 CMP #$02
AD65 90 05 BCC BSER15
AD67 A0 1F LDY #SENDKA-SENTAB
AD69 20 23 B2 JSR LDMESS
AD6C BSER15
AD6C A9 00 LDA #$00
AD6E 85 75 STA BSEQTM
AD70 BSER11
AD70 60 RTS
;
AD71 BSERV3
AD71 24 75 BIT BSEQTM
AD73 70 0D BVS BSERV4
AD75 30 42 BMI BSERV5
AD77 A5 75 LDA BSEQTM ; LD MESS
AD79 D0 F5 BNE BSER11 ; NO
AD7B C6 75 DEC BSEQTM ; =FF
AD7D A0 1C LDY #SENORB-SENTAB
AD7F 4C 23 B2 JMP LDMESS
AD82 BSERV4
AD82 A2 00 LDX #$00
AD84 86 65 STX REPMSG
AD86 A4 D1 LDY SENPTR
AD88 D0 E6 BNE BSER11 ; WAIT FO MESSAGE TO TIMEOUT
AD8A A9 50 LDA #$50
AD8C 8D 90 0C STA GINDEX+4
AD8F A9 01 LDA #$01
AD91 8D B1 09 STA XSIGN+4
AD94 8D E2 09 STA YSIGN+4
AD97 8D 13 0A STA ZSIGN+4
AD9A 8D A6 0A STA ZPOSH+4
AD9D 8D 9B 0B STA YINCRE+4
ADA0 A9 10 LDA #$10
ADA2 8D 44 0A STA XPOSH+4
ADA5 A9 00 LDA #$00
ADA7 8D 75 0A STA YPOSH+4
ADAA A9 87 LDA #$87
ADAC 8D 6A 0B STA XINCRE+4
ADAF A9 81 LDA #$81
ADB1 85 75 STA BSEQTM
ADB3 8D CC 0B STA ZINCRE+4
ADB6 85 ED STA STFLAG+4
ADB8 BSERV7
ADB8 60 RTS
ADB9 BSERV5
ADB9 AD B1 09 LDA XSIGN+4 ; SHIP DOCKED ?
ADBC D0 FA BNE BSERV7 ; NO
ADBE A2 0C LDX #CH4TB3-CH4TAB ; SOUND
ADC0 20 A6 B3 JSR NOTINT
ADC3 A0 21 LDY #SENETC-SENTAB
ADC5 20 23 B2 JSR LDMESS
; CLEAR DAMAGE
ADC8 A2 05 LDX #$05
ADCA BSER12
ADCA BD 8B BB LDA STINIT+73,X
ADCD 9D 92 09 STA DAMAGE,X
ADD0 CA DEX
ADD1 10 F7 BPL BSER12
;
; NEW ENERGY
ADD3 A9 89 LDA #$89
ADD5 A2 03 LDX #$03
ADD7 BSER20
ADD7 9D 55 09 STA DENERG+0,X
ADDA CA DEX
ADDB 10 FA BPL BSER20
ADDD A9 07 LDA #$07
ADDF 8D 6A 0B STA XINCRE+4
ADE2 A9 81 LDA #$81
ADE4 8D 9B 0B STA YINCRE+4
ADE7 A9 01 LDA #$01
ADE9 8D CC 0B STA ZINCRE+4
ADEC 85 75 STA BSEQTM
ADEE 4C 7B B0 JMP KEYSR7 ; RE-LOAD INSET
;
;
;
;
ADF1 LDISP
; LOAD DISPLAY LISTS
; A=#OF BYTES TO STORE, X=POSIT IN DSPLY, Y=PNTR IN LISTAB
ADF1 78 SEI ; WE DONT WANT NO INTERUPTS !!
ADF2 85 6A STA TEMP
ADF4 LDISP3
ADF4 AD 0B D4 LDA VCOUNT ; CHECK IF ANTIC IS IN SAFE AREA
ADF7 C9 7C CMP #DISTOP
ADF9 90 F9 BCC LDISP3
ADFB LDISP2
ADFB B9 62 BA LDA LISTAB,Y
ADFE C8 INY
ADFF 10 02 BPL LDISP1
AE01 A9 0D LDA #$0D
AE03 LDISP1
AE03 9D 80 02 STA DISPLY,X
AE06 E8 INX
AE07 C6 6A DEC TEMP
AE09 D0 F0 BNE LDISP2
AE0B 58 CLI ; IRQS BACK ON !!
AE0C 60 RTS
;
;
;
;
;
;
;
;
AE0D CLRMAP
; CLEAR MEMORY MAP SUBROUTINE
AE0D A9 10 LDA #MEMMAP/256
AE0F CLRMP1 ; ENTRY POINT CLEAR ALL RAM ************************
AE0F 85 69 STA PNTR+1
AE11 A9 00 LDA #$00
AE13 A8 TAY
AE14 85 68 STA PNTR
AE16 85 A3 STA LOKFLG ; LOCK FLAG IS CLEARED
AE18 85 7A STA CNSTAR ; RAM HAS BEEN CLEARED
AE1A CLRMP2
AE1A 91 68 STA (PNTR),Y
AE1C C8 INY
AE1D D0 FB BNE CLRMP2
AE1F E6 69 INC PNTR+1
AE21 A4 69 LDY PNTR+1
AE23 C0 20 CPY #$20
AE25 A8 TAY ; RE-ZERO Y REG
AE26 90 F2 BCC CLRMP2
AE28 60 RTS
;
;
AE29 PHOTON
; PHOTON TORPEDO FIRE
AE29 A5 84 LDA PHOFLG ; REPEAT FLAG
AE2B AC 10 D0 LDY TRIG0 ; SHOOT ?
AE2E 84 84 STY PHOFLG
AE30 D0 0E BNE PHOTN2 ; NO
AE32 84 66 STY TIMOUT ; RESET ATRACT TIMEOUT
AE34 A6 C0 LDX HFLAG ; HWARP ?
AE36 D0 08 BNE PHOTN2 ; YES, NO FIRE
AE38 A6 87 LDX PHOTOG
AE3A C9 01 CMP #$01
AE3C F0 03 BEQ PHOTN8
AE3E B0 18 BCS PHOTN4
AE40 PHOTN2
AE40 60 RTS
AE41 PHOTN8
; ONE-SHOT
AE41 B5 EC LDA STFLAG+3,X ; ONE-SHOT TIMEOUT
AE43 C9 E8 CMP #$E8 ; ALL DONE ?
AE45 B0 F9 BCS PHOTN2 ; NO
AE47 AC 5C 09 LDY DCSTOR
AE4A 84 89 STY LOKTAR
AE4C A9 0C LDA #12
AE4E A4 A3 LDY LOKFLG
AE50 84 86 STY LOKLOC
AE52 F0 02 BEQ PHOTN3
AE54 A9 00 LDA #$00
AE56 PHOTN3
AE56 85 88 STA LOKWAT
AE58 PHOTN4
AE58 84 84 STY PHOFLG
;
AE5A 2C 92 09 BIT DAMAGE+0
AE5D 70 E1 BVS PHOTN2
AE5F 30 05 BMI PHOTN7
AE61 8A TXA
AE62 49 01 EOR #$01
AE64 85 87 STA PHOTOG
AE66 PHOTN7
AE66 8A TXA
AE67 9D E1 09 STA YSIGN+3,X ; NEW YSIGN
AE6A BD 73 BF LDA PHOYPS,X ; NEW YPOSH
AE6D 9D 74 0A STA YPOSH+3,X
AE70 A9 FF LDA #$FF
AE72 95 EC STA STFLAG+3,X ; INIT PHOTON TIME
AE74 9D A5 0A STA ZPOSH+3,X
AE77 A9 00 LDA #$00
AE79 9D 8F 0C STA GINDEX+3,X ; INIT PHOTON GRAPHIC
AE7C 9D 43 0A STA XPOSH+3,X
AE7F 9D 07 0B STA YPOSL+3,X
AE82 9D 12 0A STA ZSIGN+3,X
AE85 9D 38 0B STA ZPOSL+3,X
AE88 A9 01 LDA #$01
AE8A 9D B0 09 STA XSIGN+3,X
AE8D 9D D6 0A STA XPOSL+3,X
AE90 A5 D0 LDA DISFLG
AE92 4A LSR A
AE93 6A ROR A
AE94 09 66 ORA #$66
AE96 9D 69 0B STA XINCRE+3,X
AE99 A9 00 LDA #$00
AE9B 9D 9A 0B STA YINCRE+3,X
AE9E 9D CB 0B STA ZINCRE+3,X
AEA1 A2 02 LDX #$02
AEA3 20 6F B8 JSR PANDS6 ; PHOTON ENERGY
AEA6 A2 00 LDX #$00
;
; FALL THROUGH TO NOISE ************************
;
AEA8 NOISE
; NOISE INIT, X=NOISTB PNTR
AEA8 8A TXA ; PHOTONS
AEA9 D0 06 BNE NOISE1 ; NO
; PHOTONS HAVE LOWER PRIORITY THAN EXPLOSIONS
AEAB A5 E1 LDA AUDTIM
AEAD C9 18 CMP #$18
AEAF B0 18 BCS NOISE2
AEB1 NOISE1
AEB1 A0 07 LDY #$07
AEB3 NOISE3
AEB3 BD 20 BF LDA NOISTB,X
AEB6 99 DA 00 STA PHOREP,Y
AEB9 E8 INX
AEBA 88 DEY
AEBB 10 F6 BPL NOISE3
AEBD BD 20 BF LDA NOISTB,X
AEC0 8D 08 D2 STA AUDCTL
AEC3 BD 21 BF LDA NOISTB+1,X
AEC6 8D 04 D2 STA AUDF3
AEC9 NOISE2
AEC9 60 RTS
;
;
AECA POHELP
; PHOTON HELPER
AECA A0 80 LDY #$80
AECC B0 04 BCS POHLP1
AECE 49 FF EOR #$FF
AED0 A0 00 LDY #$00
AED2 POHLP1
AED2 84 6A STY TEMP
AED4 C9 08 CMP #$08
AED6 90 02 BCC POHLP2
AED8 A9 07 LDA #$07
AEDA POHLP2
AEDA A8 TAY
AEDB A5 6A LDA TEMP
AEDD 19 C9 BF ORA PHVECT,Y
AEE0 60 RTS
;
;
;
AEE1 DAMCTL
; DAMAGE CONTROL ROUTINE
AEE1 24 64 BIT ATRACT
AEE3 30 57 BMI DAMCT1 ; GAME OVER NO DAMAGE
AEE5 A6 62 LDX MISDIF
AEE7 DAMCT2
AEE7 AD 0A D2 LDA RANDOM
AEEA DD 10 BF CMP DPRBTB,X
AEED B0 4D BCS DAMCT1
AEEF 29 07 AND #$07
AEF1 C9 06 CMP #$06
AEF3 B0 47 BCS DAMCT1
AEF5 AA TAX
AEF6 BD 92 09 LDA DAMAGE,X
AEF9 0A ASL A
AEFA 30 EB BMI DAMCT2
AEFC A5 EB LDA STFLAG+2
AEFE C9 1E CMP #30
AF00 A9 80 LDA #$80
AF02 BC 14 BF LDY DAMGTB,X
AF05 90 17 BCC DAMCT3
AF07 E0 03 CPX #$03
AF09 D0 05 BNE DAMCT5
AF0B 2C 96 09 BIT DAMAGE+4
AF0E 70 0E BVS DAMCT3
AF10 DAMCT5
AF10 E0 04 CPX #$04
AF12 D0 05 BNE DAMCT6
AF14 2C 95 09 BIT DAMAGE+3
AF17 70 05 BVS DAMCT3
AF19 DAMCT6
AF19 A9 C0 LDA #$C0
AF1B BC 1A BF LDY DESTTB,X
AF1E DAMCT3
AF1E 1D 92 09 ORA DAMAGE,X
AF21 9D 92 09 STA DAMAGE,X
AF24 84 65 STY REPMSG
AF26 2C 95 09 BIT DAMAGE+3
AF29 50 07 BVC DAMCT4
AF2B A9 00 LDA #$00
AF2D 85 7E STA ATENER
AF2F 20 0D AE JSR CLRMAP
AF32 DAMCT4
AF32 A0 52 LDY #SENDMC-SENTAB
AF34 20 23 B2 JSR LDMESS
AF37 A2 12 LDX #CH4TB4-CH4TAB ; DAMAGE
AF39 20 A6 B3 JSR NOTINT
AF3C DAMCT1
AF3C 60 RTS
;
;
AF3D HITZYL
; PHOTON HIT ZYLON CHECK
AF3D A2 02 LDX #$02 ; 2 PLAY PHOTONS
AF3F HITZY2
AF3F CA DEX
AF40 10 01 BPL HITZY1
AF42 60 RTS
AF43 BD 8F 0C HITZY1 LDA GINDEX+3,X ; PHOTON ?
AF46 D0 F7 BNE HITZY2 ; NO
AF48 B5 EC LDA STFLAG+3,X ; PHOTON ON ?
AF4A F0 F3 BEQ HITZY2 ; NO
AF4C B5 82 LDA PHITS+0,X ; ANY HIT ?
AF4E 29 07 AND #$07 ; LOOK AT 0,1 ONLY
AF50 F0 ED BEQ HITZY2 ; NO HIT
AF52 4A LSR A ; 0 OR 1 ONLY
AF53 C9 03 CMP #$03
AF55 D0 01 BNE HITZY9
AF57 4A LSR A
AF58 HITZY9
AF58 A8 TAY ; OBJECT INDEX IN Y
AF59 B9 E9 00 LDA STFLAG,Y ; SHIP ON ?
AF5C F0 E1 BEQ HITZY2 ; NO
AF5E A5 D0 LDA DISFLG
AF60 F0 02 BEQ HITZY8
AF62 A9 FF LDA #$FF
AF64 HITZY8
AF64 85 6C STA TEMP2
AF66 59 40 0A EOR XPOSH,Y
AF69 C9 10 CMP #$10
AF6B 90 02 BCC HITZY3
AF6D A9 0F LDA #$0F
AF6F HITZY3
AF6F 4A LSR A
AF70 84 6B STY TEMP1
AF72 A8 TAY
AF73 A5 6C LDA TEMP2
AF75 5D 43 0A EOR XPOSH+3,X
AF78 D9 75 BF CMP PHPOST,Y ; TOP BOUND
AF7B B0 C2 BCS HITZY2
AF7D D9 7D BF CMP PHPOSB,Y ; BOTTOM BOUND
AF80 90 BD BCC HITZY2
AF82 A4 6B LDY TEMP1
; A HIT !!!
AF84 38 SEC
AF85 A9 FF LDA #$FF
AF87 F5 EC SBC STFLAG+3,X
AF89 85 E2 STA EXPDEL ; AUDIO
AF8B C9 0F CMP #15
AF8D 90 05 BCC HITZ11
AF8F B9 8C 0C LDA GINDEX,Y
AF92 C9 80 CMP #$80
AF94 HITZ11
AF94 A9 00 LDA #$00
AF96 85 88 STA LOKWAT
AF98 95 EC STA STFLAG+3,X ; PHOTON OFF
AF9A B0 4B BCS HITZ10
AF9C 99 E9 00 STA STFLAG,Y ; ZYOLON OFF
AF9F B9 8C 0C LDA GINDEX,Y
AFA2 F0 43 BEQ HITZ10 ; PHOTON
AFA4 C9 60 CMP #$60 ; METORER
AFA6 F0 3F BEQ HITZ10 ; YES
AFA8 A9 00 LDA #$00
AFAA 85 86 STA LOKLOC ; TURN OFF PHOTONS TRACKING
AFAC A6 90 LDX QUADRT ; WHICH QUAD KILL IN
AFAE DE C9 08 DEC CHTRAM,X ; REMOVE FROM CHART
AFB1 10 13 BPL HITZY4
AFB3 A9 00 LDA #$00 ; JUST BLASTED A STARBASE ELSE IMPOSSIBLE
; TO GET HERE
AFB5 9D C9 08 STA CHTRAM,X
AFB8 38 SEC
AFB9 A5 CB LDA RATING
AFBB E9 03 SBC #3
AFBD 85 CB STA RATING
AFBF A5 CC LDA RATING+1
AFC1 E9 00 SBC #$00
AFC3 85 CC STA RATING+1
AFC5 60 RTS
AFC6 HITZY4
;
; INCKIL
; INCRE KILL COUNT DISPLAY
AFC6 18 CLC
AFC7 A5 CB LDA RATING
AFC9 69 06 ADC #$06
AFCB 85 CB STA RATING
AFCD A5 CC LDA RATING+1
AFCF 69 00 ADC #$00
AFD1 85 CC STA RATING+1
AFD3 A2 01 LDX #$01
AFD5 INCKL1
AFD5 FE 50 09 INC DKILL,X ; KILL BYTE INCRE
AFD8 BD 50 09 LDA DKILL,X
AFDB C9 4A CMP #$4A ; BCD OBERFFLOW
AFDD 90 08 BCC INCKL2 ; NO.
AFDF A9 40 LDA #$40 ; BCD 0
AFE1 9D 50 09 STA DKILL,X
AFE4 CA DEX
AFE5 10 EE BPL INCKL1 ; NEXT BYTE
AFE7 INCKL2
;
AFE7 HITZ10
AFE7 20 6B AC JSR EXPLOS
AFEA A2 7F LDX #127
AFEC HITZY5
AFEC BD C9 08 LDA CHTRAM,X
AFEF 30 02 BMI HITZY6
AFF1 D0 0A BNE HITZY7
AFF3 HITZY6
AFF3 CA DEX
AFF4 10 F6 BPL HITZY5
; WIN
AFF6 A0 3F LDY #SENWIN-SENTAB
AFF8 A2 00 LDX #$00
AFFA 20 21 B1 JSR CRATE1
AFFD HITZY7
AFFD 60 RTS
;
;
;
;
;
AFFE KEYSRV
; KEYBOARD SERVICE ROUTINE
AFFE A5 CA LDA THEKEY ; ANY KEY
B000 F0 3E BEQ KEYSR3 ; NO
B002 A2 14 LDX #$14 ; LAST KEY
B004 85 6A STA TEMP
B006 A9 00 LDA #$00
B008 85 66 STA TIMOUT ; RESET ATRACT TIMEOUT
B00A 85 CA STA THEKEY ; TURN OFF KEY
B00C A9 11 LDA #$11
B00E 8D 1B D0 STA PRIOR ; RESET PRIORITY , FROM STARBASE
B011 KEYSR1
B011 BD BE BA LDA CODCON,X ; KEY CODES
B014 C5 6A CMP TEMP
B016 F0 08 BEQ KEYSR2
B018 CA DEX
B019 10 F6 BPL KEYSR1 ; NEXT KEY
; NO KEY
B01B A0 10 LDY #SENWHT-SENTAB ; WHAT
B01D 4C 23 B2 JMP LDMESS
B020 KEYSR2 ; KEY FOUND
B020 E0 0A CPX #$0A ; IMPULSE ENGINE ?
B022 B0 1D BCS KEYSR4 ; NO
B024 A5 C0 LDA HFLAG ; HWARP ?
B026 F0 03 BEQ KEYS20 ; NO
B028 4C 80 A9 JMP HABORT
B02B KEYS20
B02B 2C 93 09 BIT DAMAGE+1 ; ENGINES
B02E 50 06 BVC KEYS23
B030 E0 06 CPX #$06
B032 90 02 BCC KEYS23
B034 A2 05 LDX #$05
B036 KEYS23
B036 BD D3 BA LDA WENTAB,X
B039 85 80 STA WPENER ; IMPULSE ENGINE ENERGY
B03B BD B4 BA LDA WARPTB,X ; SPEED
B03E 85 71 STA WARP ; SPEED DESIRED
B040 KEYSR3
B040 60 RTS
B041 KEYSR4
B041 E0 0E CPX #$0E ; DISPLAY TYPE KEY ?
B043 B0 1B BCS KEYSR5 ; NO
;
B045 KEYS15 ; ENTRY POINT TO INIT DISPLAY, ***********************
; X MUST BE DEFINED TO THE KEY CODE IN CODCON
B045 BD 18 BE LDA DISTYP-10,X
B048 85 D0 STA DISFLG
B04A BC 82 BA LDY DISDIS-10,X
B04D A2 02 LDX #DISPL1-DISPLY
B04F A9 08 LDA #$08
B051 20 F1 AD JSR LDISP
;
B054 A2 10 LDX #STLAST
B056 KEYSR6
B056 20 64 B7 JSR NEWSTR
B059 CA DEX
B05A E0 05 CPX #OBJNUM
B05C B0 F8 BCS KEYSR6
B05E 90 1B BCC KEYSR7 ; JUMP
B060 KEYSR5
B060 E0 11 CPX #$11 ; TOGGLE TYPE ?
B062 B0 35 BCS KEYSR8 ; NO
B064 BC 18 BE LDY TOFFMG-$0E,X
B067 B5 6E LDA TRKFLG-$0E,X
B069 5D 1B BE EOR TOGTAB-$0E,X
B06C 95 6E STA TRKFLG-$0E,X
B06E F0 03 BEQ KEYSR9
B070 BC 1E BE LDY TONMSG-$0E,X
B073 KEYSR9
B073 20 23 B2 JSR LDMESS
B076 A2 0C LDX #CH4TB3-CH4TAB ; KEYS
B078 20 A6 B3 JSR NOTINT
B07B KEYSR7 ; ENTRY POINT FOR RE-LOADING INSET ***********
B07B A2 16 LDX #$16
B07D A4 7C LDY TRKFLG
B07F F0 01 BEQ KEYS18
B081 E8 INX
B082 KEYS18
B082 8E 5A 09 STX DCSTOR-2
B085 20 0D AE JSR CLRMAP
B088 A5 7E LDA ATENER
B08A F0 B4 BEQ KEYSR3
B08C A6 D0 LDX DISFLG
B08E F0 06 BEQ KEYS10
B090 E0 01 CPX #$01
B092 D0 AC BNE KEYSR3
B094 A2 2A LDX #INSTB1-INSTAB
B096 KEYS10
B096 4C 6F A7 JMP LDINST
B099 KEYSR8
B099 E0 11 CPX #$11 ; HYPERWARP ?
B09B D0 50 BNE KEYS13
B09D A5 C0 LDA HFLAG ; HWARP ALREADY ON ?
B09F D0 5A BNE KEYS14
B0A1 A9 7F LDA #$7F
B0A3 85 C0 STA HFLAG
B0A5 A9 FF LDA #$FF
B0A7 85 71 STA WARP
B0A9 A9 1E LDA #30
B0AB 85 80 STA WPENER
B0AD A9 30 LDA #RMLAST
B0AF 85 C3 STA HPNTR
; H STEERING STUFF
B0B1 A9 00 LDA #$00
B0B3 85 C2 STA HTIMER
B0B5 8D 74 0A STA YPOSH+3
B0B8 8D 07 0B STA YPOSL+3
B0BB 8D 38 0B STA ZPOSL+3
B0BE 8D 69 0B STA XINCRE+3
B0C1 A9 01 LDA #$01
B0C3 8D B0 09 STA XSIGN+3
B0C6 8D E1 09 STA YSIGN+3
B0C9 8D 12 0A STA ZSIGN+3
B0CC 8D A5 0A STA ZPOSH+3
B0CF A5 8F LDA HYHPOS
B0D1 85 C4 STA HSTEER
B0D3 A5 8E LDA HYVPOS
B0D5 85 C5 STA VSTEER
B0D7 A5 62 LDA MISDIF
B0D9 F0 0B BEQ KEYS24
B0DB A5 91 LDA HYPENG
B0DD 2A ROL A
B0DE 2A ROL A
B0DF 2A ROL A
B0E0 29 03 AND #$03
B0E2 A8 TAY
B0E3 B9 D7 BE LDA STERTB,Y ; DIFFICULTY
B0E6 KEYS24
B0E6 85 C6 STA STERMK
; END STUFF
B0E8 A0 11 LDY #SENHYP-SENTAB ; MESSAGE HYPER WARP ENGAGED
B0EA 4C 23 B2 JMP LDMESS
B0ED KEYS13
B0ED E0 13 CPX #$13
B0EF B0 0B BCS KEYS27 ; PAUSE
B0F1 AD 5C 09 LDA DCSTOR
B0F4 49 01 EOR #$01
B0F6 29 01 AND #$01
B0F8 8D 5C 09 STA DCSTOR
B0FB KEYS14
B0FB 60 RTS
B0FC KEYS27
B0FC D0 08 BNE KEYS28
B0FE AD 00 D3 LDA PORTA ; PAUSE UNTIL MOVE JOYSTICK
B101 C9 FF CMP #$FF
B103 F0 F7 BEQ KEYS27
B105 60 RTS
B106 KEYS28
; MISSION ABORTED
B106 A0 76 LDY #SENABR-SENTAB
B108 A2 04 LDX #$04
;
; FALL THROUGH TO CRATE ************************
;
;
B10A CRATE
; CALCULATE RATING, X=0 MISSION COMPLETE, 4=ABORTED, 8-DESTROYED
; Y=MESSAGE TYPE
; GAME OVER, CALCULATE RATING
B10A A9 00 LDA #$00
B10C 85 EC STA STFLAG+3 ; NO HWARP CURSOR
B10E 85 D6 STA NPRIOR
B110 85 D1 STA SENPTR
B112 85 8B STA REDFLG
B114 8D 07 D2 STA AUDC4
B117 85 71 STA WARP
B119 85 81 STA SPABAK
B11B 85 7D STA SHENER
B11D 85 C0 STA HFLAG
B11F 85 C1 STA HISPED
B121 CRATE1 ; ENTRY POINT FOR A GOOD MISSION **********************
B121 A9 FF LDA #$FF
B123 85 64 STA ATRACT
B125 84 65 STY REPMSG ; REPEAT MESSAGE
B127 8A TXA
B128 05 62 ORA MISDIF ; MISSION DIFF GAME RESULT
B12A AA TAX
B12B BD DD BE LDA DIFTAB,X
B12E 18 CLC
B12F 65 CB ADC RATING
B131 AA TAX
B132 A9 00 LDA #$00
B134 85 C9 STA VERJOY
B136 85 C8 STA HORJOY
B138 65 CC ADC RATING+1
B13A 30 25 BMI CRATE3
B13C 4A LSR A
B13D 8A TXA
B13E 6A ROR A
B13F 4A LSR A
B140 4A LSR A
B141 4A LSR A
B142 C9 13 CMP #$13
B144 90 04 BCC CRATE2
B146 A9 12 LDA #$12
B148 A2 0F LDX #$0F
B14A CRATE2
B14A 85 CD STA ENDRAT
B14C A8 TAY
B14D 8A TXA
B14E C0 00 CPY #$00
B150 F0 0B BEQ CRATE4
B152 C0 0B CPY #$0B
B154 90 04 BCC CRATE5
B156 C0 0F CPY #$0F
B158 90 03 BCC CRATE4
B15A CRATE5
B15A 4A LSR A
B15B 49 08 EOR #$08
B15D CRATE4
B15D 29 0F AND #$0F
B15F 85 CE STA ENDCLS
B161 CRATE3
B161 60 RTS
;
;
;
B162 CSERVE
; SERVICE GALACTIC CHART
B162 A5 C0 LDA HFLAG ; HWARP ON ?
B164 D0 04 BNE CSERV9 ; YES
B166 A5 D0 LDA DISFLG ; DOING GALACTIC CHART ?
B168 30 01 BMI CSERV1 ; NO
B16A CSERV9
B16A 60 RTS
B16B CSERV1
B16B 2C 97 09 BIT DAMAGE+5 ; COMMUNICATIONS
B16E 30 03 BMI CSER10
B170 20 B9 B4 JSR LDGALT ; LD UP THE CHART
B173 CSER10
B173 A5 72 LDA TIMERX ; SLOW DOWN CURSOR MOVE
B175 29 01 AND #$01
B177 D0 2E BNE CSERV8
B179 18 CLC ; UPDATE HORIZ CURSOR POS
B17A A5 8F LDA HYHPOS
B17C 65 C8 ADC HORJOY
B17E 29 7F AND #$7F
B180 85 8F STA HYHPOS
B182 18 CLC
B183 69 3D ADC #HORCHT ; OFFSET TO POSITION ON SCREEN
B185 8D 2E 0C STA HPOS+4 ; PLAYER FOUR IS CURSOR
B188 18 CLC ; UPDATE VERT CURSOR POSITION
B189 A5 8E LDA HYVPOS
B18B 65 C9 ADC VERJOY
B18D 29 7F AND #$7F
B18F 85 8E STA HYVPOS
B191 18 CLC ; OFF SET TO POSITION ON SCREEN
B192 69 3F ADC #VERCHT
B194 8D FD 0B STA VPOS+4
; SHIP POS TO OBJ3
B197 A5 8C LDA GVPOS
B199 18 CLC
B19A 69 3F ADC #VERCHT
B19C 8D FC 0B STA VPOS+3
B19F A5 8D LDA GHPOS
B1A1 18 CLC
B1A2 69 3D ADC #HORCHT
B1A4 8D 2D 0C STA HPOS+3
; CLACULATE CURSORS QUADRANT
;
B1A7 CSERV8 ; ENTRY POINT FOR CALCULATING NEW ENERGY AND QUADRANT ******
B1A7 A5 8F LDA HYHPOS ; HPOS
B1A9 4A LSR A
B1AA 4A LSR A
B1AB 4A LSR A
B1AC 85 6A STA TEMP ;TEMP STORE H COMP
B1AE A5 8E LDA HYVPOS ; VPOS
B1B0 29 70 AND #$70 ; VCOMP
B1B2 05 6A ORA TEMP ; ADD HCOMP
B1B4 85 92 STA HYPQAD ; QUADRANT CALCULATED
; CALCULATE NUMBER OF ZYLONS IN TARGET
B1B6 AA TAX
B1B7 BD C9 08 LDA CHTRAM,X ; WHATS IN QUAD
B1BA 10 02 BPL CSERV2 ; STARBASE ?
B1BC A9 00 LDA #$00 ; YES
B1BE CSERV2
B1BE 09 90 ORA #$90 ; COLOR AND ASCII CODE
B1C0 2C 97 09 BIT DAMAGE+5
B1C3 70 03 BVS CSER11
B1C5 8D 8D 09 STA DTARG ; DISPLAY NUMBER OF ZYLONS
B1C8 CSER11
; CALCULATE WARP ENERGY
B1C8 38 SEC
B1C9 A5 8F LDA HYHPOS
B1CB E5 8D SBC GHPOS
B1CD B0 04 BCS CSERV3
B1CF 49 FF EOR #$FF
B1D1 69 01 ADC #$01
B1D3 CSERV3
B1D3 85 6A STA TEMP
;
B1D5 38 SEC
B1D6 A5 8E LDA HYVPOS
B1D8 E5 8C SBC GVPOS
B1DA B0 04 BCS CSERV4
B1DC 49 FF EOR #$FF
B1DE 69 01 ADC #$01
B1E0 CSERV4
B1E0 4A LSR A
B1E1 18 CLC
B1E2 65 6A ADC TEMP
B1E4 A8 TAY
B1E5 4A LSR A
B1E6 4A LSR A
B1E7 4A LSR A
B1E8 AA TAX
B1E9 98 TYA
B1EA 29 03 AND #$03
B1EC 18 CLC
B1ED 7D DD BA ADC ENGTAB,X
;
B1F0 85 91 STA HYPENG
B1F2 A8 TAY
B1F3 A9 10 LDA #$10
B1F5 8D 7D 09 STA DWENER+0
B1F8 8D 7E 09 STA DWENER+1
B1FB 8D 7F 09 STA DWENER+2
B1FE CSERV6
B1FE A2 02 LDX #$02
B200 CSERV5
B200 FE 7D 09 INC DWENER,X
B203 BD 7D 09 LDA DWENER,X
B206 C9 1A CMP #$1A
B208 90 08 BCC CSERV7
B20A A9 10 LDA #$10
B20C 9D 7D 09 STA DWENER,X
B20F CA DEX
B210 10 EE BPL CSERV5
B212 CSERV7
B212 88 DEY
B213 D0 E9 BNE CSERV6
B215 60 RTS
;
;
;
B216 MSERVE
; SERVICE MESSAGE
B216 A5 D1 LDA SENPTR ; MESSAGE ON ?
B218 F0 05 BEQ LDMS14 ; NO
B21A C6 CF DEC MESTIM ; TIMED OUT ?
B21C F0 10 BEQ LDMES1 ; YES
B21E LDMES2
B21E 60 RTS
B21F LDMS14
B21F A4 65 LDY REPMSG ; REPEAT THE MESSAGE ?
B221 F0 FB BEQ LDMES2 ; NO
B223 LDMESS ; ENTRY POINT TO INIT MESSAGE **********************
B223 84 D1 STY SENPTR
B225 A0 23 LDY #LISTB6-LISTAB
B227 A2 0F LDX #DISPL2-DISPLY
B229 A9 07 LDA #$07
B22B 20 F1 AD JSR LDISP ; REVISE DIPLAY LIST FOR MESSAGE
B22E LDMES1
B22E A2 13 LDX #19 ; CLEAR MESSAGE RAM
B230 A9 00 LDA #$00
B232 85 6B STA TEMP1 ; CLEAR DISPLAY POINTER
B234 LDMES3
B234 9D 1F 0D STA MESAGE,X
B237 CA DEX
B238 10 FA BPL LDMES3
B23A LDMES4 ; MESSAGE LOOP POINT
B23A A6 D1 LDX SENPTR ; NEW WORD PNTR
B23C E6 D1 INC SENPTR ; ADVANCE TO NEXT WORD
B23E D0 09 BNE LDMES5
; MESSAGE DONE
B240 A2 0F LDX #DISPL2-DISPLY
B242 A0 80 LDY #$80
B244 A9 07 LDA #$07
B246 4C F1 AD JMP LDISP ; RESTORE DISPLAY LIST
B249 LDMES5
B249 BD AA BB LDA SENTAB,X ; A =NEW WORD
B24C C9 FC CMP #$FC ; CLASS ?
B24E D0 0F BNE LDMES6 ; NO
B250 A4 CE LDY ENDCLS
B252 B9 FC BE LDA CLASTB,Y ; VALUE 1-5, IN DMA ASCII
B255 A6 6B LDX TEMP1 ; WHERE TO STORE
B257 9D 1F 0D STA MESAGE,X
B25A A9 3C LDA #60 ; END OF LINE
B25C 85 CF STA MESTIM ; WAIT 1 SECOND
B25E 60 RTS
B25F LDMES6
B25F C9 FD CMP #$FD ; RANK ?
B261 D0 05 BNE LDMS12 ; NO
B263 A4 CD LDY ENDRAT
B265 B9 E9 BE LDA RANKTB,Y ; RANK WORD
B268 LDMS12
B268 85 6C STA TEMP2 ; STORE FOR BITS 7,6
B26A 29 3F AND #$3F
B26C 85 6A STA TEMP ; WORD LOC IN #WRDTAB
B26E A9 2A LDA #WRDTAB-1
B270 85 68 STA PNTR
B272 A9 BC LDA #WRDTAB-1/256
B274 85 69 STA PNTR+1 ; WHERE TO START SEARCH
B276 LDMES7
B276 E6 68 INC PNTR ; ADVANCE WORD POINTER
B278 D0 02 BNE LDMES8
B27A E6 69 INC PNTR+1
B27C LDMES8
B27C A0 00 LDY #$00
B27E B1 68 LDA (PNTR),Y
B280 10 F4 BPL LDMES7 ; NOT START OF A WORD
B282 C6 6A DEC TEMP ; IS IT THE RIGHT WORD?
B284 D0 F0 BNE LDMES7 ; NO
B286 LDMES9
B286 29 3F AND #$3F ; REMOVE ANY FLAG BITS
B288 49 A0 EOR #$A0 ; PLAYFIELD AND DMA ASCII
B28A A6 6B LDX TEMP1 ; DISPLAY POINTER
B28C E6 6B INC TEMP1 ; ADVANCE DIPLAY POINTER
B28E 9D 1F 0D STA MESAGE,X
B291 C8 INY ; NEXT LETTER
B292 B1 68 LDA (PNTR),Y ; A=LETTER
B294 10 F0 BPL LDMES9
B296 E6 6B INC TEMP1 ; A SPACE
; END OF WORD FOUND
B298 A9 3C LDA #60 ; WAIT 1 SECOND
B29A 24 6C BIT TEMP2 ; WHAT TO DO NEXT
B29C 10 04 BPL LDMS11 ; NOT END OF LINE
B29E 50 08 BVC LDMS10 ; END OF LINE ONLY
B2A0 A9 FE LDA #$FE ; WAIT 4 SECOND, END OF SENTENCE
B2A2 LDMS11
B2A2 50 96 BVC LDMES4 ; CONTINUE WITH LINE
B2A4 A0 FF LDY #$FF ; END OF SENTENCE
B2A6 84 D1 STY SENPTR
B2A8 LDMS10
B2A8 85 CF STA MESTIM ; STORE WAIT
B2AA 60 RTS
;
;
;
;
;
B2AB AUDIO
; AUDIO SERVICE ROUTINE
;
; CH4 NOTE SECTION
B2AB A5 D6 LDA NPRIOR
B2AD F0 37 BEQ AUDIO1
B2AF C6 D8 DEC NDURTM ; TIMING OUT ?
B2B1 10 33 BPL AUDIO1 ; YES
B2B3 A5 D9 LDA NOTVOL
B2B5 F0 0A BEQ AUDIO2 ; NEXT NOTE
B2B7 A5 D5 LDA SDURAT ; SPACE BETWEEN NOTE
B2B9 30 06 BMI AUDIO2
B2BB 85 D8 STA NDURTM
B2BD A0 00 LDY #$00
B2BF F0 20 BEQ AUDIO3 ; JUMP
B2C1 AUDIO2
B2C1 A5 D4 LDA NDURAT
B2C3 85 D8 STA NDURTM
B2C5 A6 D2 LDX NOTSEQ
B2C7 E6 D2 INC NOTSEQ
B2C9 BD 5C BF LDA NOTTAB,X
B2CC 8D 06 D2 STA AUDF4
B2CF A0 A8 LDY #$A8
B2D1 C9 FF CMP #$FF
B2D3 D0 0C BNE AUDIO3
B2D5 A5 D7 LDA REPPTR
B2D7 85 D2 STA NOTSEQ
B2D9 C6 D3 DEC REPSEQ
B2DB 10 E4 BPL AUDIO2
B2DD A0 00 LDY #$00
B2DF 84 D6 STY NPRIOR
B2E1 AUDIO3
B2E1 8C 07 D2 STY AUDC4
B2E4 84 D9 STY NOTVOL
B2E6 AUDIO1
B2E6 A5 E2 LDA EXPDEL ; ZYLON HIT SERVICE
B2E8 F0 09 BEQ AUD11
B2EA C6 E2 DEC EXPDEL
B2EC D0 05 BNE AUD11
B2EE A2 14 LDX #NOITB2-NOISTB
B2F0 20 A8 AE JSR NOISE
B2F3 AUD11
B2F3 A6 70 LDX SPEED
B2F5 8A TXA
B2F6 4A LSR A
B2F7 4A LSR A
B2F8 4A LSR A
B2F9 4A LSR A
B2FA 4A LSR A
B2FB C5 E1 CMP AUDTIM
B2FD 90 2C BCC AUD10
B2FF A9 00 LDA #$00
B301 85 E1 STA AUDTIM
; ENGINES
B303 E8 INX
B304 8A TXA
B305 49 FF EOR #$FF
B307 8D 04 D2 STA AUDF3
B30A AA TAX
B30B 0A ASL A
B30C 0A ASL A
B30D 0A ASL A
B30E 0A ASL A
B30F 0A ASL A
B310 8D 00 D2 STA AUDF1
B313 8A TXA
B314 4A LSR A
B315 4A LSR A
B316 4A LSR A
B317 8D 02 D2 STA AUDF2
B31A 4A LSR A
B31B 49 8F EOR #$8F
B31D 8D 03 D2 STA AUDC2
B320 29 87 AND #$87
B322 8D 05 D2 STA AUDC3
B325 A9 70 LDA #$70
B327 8D 08 D2 STA AUDCTL
B32A 60 RTS
B32B AUD10
B32B A5 DB LDA AUDEXP ; EXPLOSION SERVICE
B32D F0 08 BEQ AUDIO4
B32F C6 DB DEC AUDEXP
B331 D0 04 BNE AUDIO4
B333 A9 8F LDA #$8F
B335 85 DC STA ATYPE2
B337 AUDIO4
B337 A6 DA LDX PHOREP ; PHOTON SEVICE
B339 F0 1C BEQ AUDIO5
B33B C6 DA DEC PHOREP
B33D D0 0A BNE AUD12
B33F A9 AF LDA #$AF
B341 85 DC STA ATYPE2
B343 A9 02 LDA #$02
B345 85 DE STA AFREQ1
B347 85 DF STA AFREQ2
B349 AUD12
B349 BD EA BF LDA PHOTB2-1,X
B34C 85 DD STA ATYPE3
B34E BD F2 BF LDA PHOTB4-1,X
B351 8D 04 D2 STA AUDF3
B354 8D 09 D2 STA STIMER
B357 AUDIO5
B357 A5 E3 LDA BIGEXP ; FINAL EXPLOS SERVICE
B359 F0 0E BEQ AUDIO6
B35B C6 E3 DEC BIGEXP
B35D AD 0A D2 LDA RANDOM
B360 8D 04 D2 STA AUDF3
B363 29 20 AND #$20
B365 45 DD EOR ATYPE3
B367 85 DD STA ATYPE3
B369 AUDIO6
B369 18 CLC ; SWEEP DOWN CH1-2
B36A A5 DE LDA AFREQ1
B36C 65 E0 ADC AUDADD
B36E 85 DE STA AFREQ1
B370 8D 00 D2 STA AUDF1
B373 A5 DF LDA AFREQ2
B375 69 00 ADC #$00
B377 85 DF STA AFREQ2
B379 8D 02 D2 STA AUDF2
; VOLUME CONTROL
B37C A6 DC LDX ATYPE2
B37E A4 DD LDY ATYPE3
B380 A5 72 LDA TIMERX
B382 4A LSR A
B383 90 1A BCC AUDIO7
B385 A5 E1 LDA AUDTIM
B387 F0 16 BEQ AUDIO7
B389 C6 E1 DEC AUDTIM
B38B C9 11 CMP #$11
B38D B0 10 BCS AUDIO7
B38F 8A TXA
B390 29 0F AND #$0F
B392 F0 03 BEQ AUDIO8
B394 CA DEX
B395 86 DC STX ATYPE2
B397 AUDIO8
B397 98 TYA
B398 29 0F AND #$0F
B39A F0 03 BEQ AUDIO7
B39C 88 DEY
B39D 84 DD STY ATYPE3
B39F AUDIO7
B39F 8E 03 D2 STX AUDC2
B3A2 8C 05 D2 STY AUDC3
B3A5 60 RTS
;
;
;
B3A6 NOTINT
; AUDIO NOTE INIT, X=CH4TAB PNTR
B3A6 BD 3E BF LDA CH4TAB,X
B3A9 C5 D6 CMP NPRIOR
B3AB 90 0C BCC NOTIN2
B3AD A0 05 LDY #$05
B3AF NOTIN1
B3AF BD 3E BF LDA CH4TAB,X
B3B2 99 D2 00 STA NOTSEQ,Y
B3B5 E8 INX
B3B6 88 DEY
B3B7 10 F6 BPL NOTIN1
B3B9 NOTIN2
B3B9 60 RTS
;
;
;
;
;
B3BA LDTABS
; INIT PTAB,BCDCON,VCONL,VCONH,DISCTL,CHTRAM
;
B3BA A2 59 LDX #89
B3BC LDTB10
B3BC A9 0D LDA #$0D
B3BE 9D 85 02 STA DISPLY+5,X
B3C1 E0 0A CPX #$0A
B3C3 B0 05 BCS LDTAB8
; LD PF COLORS
B3C5 BD A9 BF LDA CLITAB,X
B3C8 95 F2 STA COLRAM+4,X
B3CA LDTAB8
B3CA CA DEX
B3CB 10 EF BPL LDTB10
B3CD A9 70 LDA #$70
B3CF 8D 80 02 STA DISPLY+0
B3D2 8D 81 02 STA DISPLY+1
B3D5 A9 41 LDA #$41
B3D7 8D E7 02 STA DISPLY+103
B3DA A9 80 LDA #DISPLY
B3DC 8D E8 02 STA DISPLY+104
B3DF A9 02 LDA #DISPLY/256
B3E1 8D E9 02 STA DISPLY+105
;
;
;
;
;
B3E4 A2 00 LDX #$00
B3E6 86 68 STX PNTR
B3E8 86 69 STX PNTR+1
B3EA 86 6A STX TEMP
B3EC 86 6B STX TEMP1
B3EE LDTAB1
B3EE 18 CLC
B3EF A5 68 LDA PNTR
B3F1 69 51 ADC #SCPTAB
B3F3 85 68 STA PNTR
B3F5 A5 69 LDA PNTR+1
B3F7 9D E9 0D STA PTAB,X
B3FA 69 00 ADC #$00
B3FC 85 69 STA PNTR+1
B3FE 18 CLC
B3FF A5 6A LDA TEMP
B401 69 64 ADC #SCBCD
B403 85 6A STA TEMP
B405 A5 6B LDA TEMP1
B407 9D E9 0E STA BCDCON,X
B40A F8 SED
B40B 69 00 ADC #$00
B40D D8 CLD
B40E 85 6B STA TEMP1
B410 E8 INX
B411 D0 DB BNE LDTAB1
;
B413 A2 00 LDX #$00
B415 86 68 STX PNTR
B417 A9 10 LDA #MEMMAP/256
B419 85 69 STA PNTR+1
B41B LDTAB2
B41B 18 CLC
B41C A5 68 LDA PNTR
B41E 9D 00 08 STA VCONL,X
B421 69 28 ADC #SCVCON
B423 85 68 STA PNTR
B425 A5 69 LDA PNTR+1
B427 9D 64 08 STA VCONH,X
B42A 69 00 ADC #$00
B42C 85 69 STA PNTR+1
B42E BD 42 BB LDA STINIT,X
B431 9D 49 09 STA DISCTL,X
B434 E8 INX
B435 E0 64 CPX #100
B437 90 E2 BCC LDTAB2
B439 CA DEX ; X=99, DONT JUMP IMMEDIATELY
B43A 86 78 STX JMPTIM
;
B43C A2 03 LDX #$03
B43E 8E 11 09 STX CHTRAM+72 ; NOTHING IN SHIPS INIT QUAD
B441 LDTAB3
B441 BD A6 BB LDA CHRTAB,X
B444 85 6A STA TEMP
B446 A4 62 LDY MISDIF
B448 C8 INY
B449 C8 INY
B44A 84 6B STY TEMP1
B44C LDTAB4
B44C AD 0A D2 LDA RANDOM
B44F 29 7F AND #$7F
B451 A8 TAY
B452 B9 C9 08 LDA CHTRAM,Y
B455 D0 F5 BNE LDTAB4
B457 A5 6A LDA TEMP
; STARBASES NOT ON EDGES
B459 10 21 BPL LDTAB7
B45B C0 10 CPY #$10
B45D 90 ED BCC LDTAB4
B45F C0 70 CPY #$70
B461 B0 E9 BCS LDTAB4
B463 98 TYA
B464 29 0F AND #$0F
B466 F0 E4 BEQ LDTAB4
B468 C9 0F CMP #$0F
B46A F0 E0 BEQ LDTAB4
B46C B9 C8 08 LDA CHTRAM-1,Y
B46F 19 CA 08 ORA CHTRAM+1,Y
B472 19 D9 08 ORA CHTRAM+16,Y
B475 19 B9 08 ORA CHTRAM-16,Y
B478 D0 D2 BNE LDTAB4
B47A A5 6A LDA TEMP
B47C LDTAB7
B47C 99 C9 08 STA CHTRAM,Y
B47F C6 6B DEC TEMP1
B481 10 C9 BPL LDTAB4
B483 CA DEX
B484 10 BB BPL LDTAB3
; LOAD HORIZ WALL OF CHART
B486 A2 B4 LDX #180 ; CLEAR ALL CHART FIRST
B488 LDTAB5
B488 A9 0A LDA #$0A
B48A 9D 34 0D STA CHTDIS-1,X
B48D CA DEX
B48E D0 F8 BNE LDTAB5
B490 A2 0F LDX #$0F ; LD HORIZ LINE
B492 LDTAB6
B492 A9 18 LDA #$18
B494 9D 37 0D STA CHTDIS+2,X
B497 CA DEX
B498 10 F8 BPL LDTAB6
;
B49A A9 1A LDA #$1A ; FILL IN THE DOT ON THE CHART
B49C 8D 47 0D STA CHTDIS+18
;
B49F A9 00 LDA #$00
B4A1 8D 11 09 STA CHTRAM+72
B4A4 A9 48 LDA #72
B4A6 85 90 STA QUADRT
B4A8 A9 43 LDA #67
B4AA 85 8D STA GHPOS
B4AC 85 8F STA HYHPOS
B4AE A9 47 LDA #$47
B4B0 85 8E STA HYVPOS
B4B2 85 8C STA GVPOS
B4B4 A9 EA LDA #$EA
B4B6 8D E8 0F STA BCDCON+255 ; INFIINITY SIGN
;
; FALL THROUGH TO LDGALT
;
B4B9 LDGALT
;
; LD UP THE GALACTIC CHART
; TRANSER CHTRAM TO CHTDIS
;
B4B9 A0 00 LDY #$00 ; CHTDIS PNTR
B4BB 84 6A STY TEMP ; CHTRAM PNTR
B4BD LDGAL1
B4BD A6 6A LDX TEMP
B4BF BD C9 08 LDA CHTRAM,X ; WHATS IN QUAD
B4C2 10 02 BPL LDGAL2 ; NO
B4C4 A9 05 LDA #$05 ; STARBASE DEFAULT
B4C6 LDGAL2
B4C6 AA TAX
B4C7 BD D1 BE LDA CHTABL,X ; CODE FOR CHTDIS
B4CA 99 4B 0D STA CHTDIS+22,Y
B4CD C8 INY
B4CE E6 6A INC TEMP
B4D0 A5 6A LDA TEMP
B4D2 29 0F AND #$0F ; END OF LINE ?
B4D4 D0 E7 BNE LDGAL1 ; NO
B4D6 A9 19 LDA #$19 ; VERT LINE
B4D8 99 4B 0D STA CHTDIS+22,Y
B4DB C8 INY
B4DC C8 INY
B4DD C8 INY ; ADVANCE TO NEXT LINE
B4DE C8 INY
B4DF C0 A0 CPY #160 ; ALL DONE ?
B4E1 90 DA BCC LDGAL1 ; NO
B4E3 60 RTS
;
;
;
;
B4E4 TIMERS
; SERVICE TIMERS, STARDATE AND ZYLON JUMP
; UPDATE TIMEX, USED FOR STAR INTENSITY MULTIPLEX
;
B4E4 E6 76 INC BINTIM ; UPDATE BINARY TIMER
B4E6 A2 90 LDX #DIMBLU
B4E8 A5 76 LDA BINTIM
B4EA 10 09 BPL TIME46
B4EC AC 55 09 LDY DENERG+0
B4EF C0 80 CPY #$80
B4F1 D0 02 BNE TIME46
B4F3 A2 44 LDX #RED
B4F5 TIME46
B4F5 29 03 AND #$03
B4F7 85 72 STA TIMERX
B4F9 D0 1F BNE TIME33
; SHIELDS SECTION
B4FB A4 7D LDY SHENER
B4FD F0 17 BEQ TIME31
B4FF A0 A0 LDY #DBLUE
B501 2C 94 09 BIT DAMAGE+2
B504 10 0B BPL TIME47
B506 70 07 BVS TIME32
B508 AD 0A D2 LDA RANDOM
B50B C9 C8 CMP #200
B50D 90 07 BCC TIME31
B50F TIME32
B50F A0 00 LDY #$00
B511 TIME47
B511 98 TYA
B512 D0 02 BNE TIME31
B514 A2 26 LDX #YELLOW
B516 TIME31
B516 84 81 STY SPABAK
B518 86 FB STX COLRAM+13
B51A TIME33
; END UPDATE TIMERX
;
; PHOTON TIMEOUT
B51A A2 02 LDX #$02
B51C TIMER6
B51C BD 8E 0C LDA GINDEX+2,X ; PHOTON ?
B51F D0 06 BNE TIMER7
B521 B5 EB LDA STFLAG+2,X ; PHOTON TIMEOUT ?
B523 F0 02 BEQ TIMER7 ; YES
B525 D6 EB DEC STFLAG+2,X ; DEC PHOTON TIMER
B527 TIMER7
B527 CA DEX
B528 10 F2 BPL TIMER6
;
; EXPLOSION TIMEOUT
;
B52A A5 73 LDA ETIMER
B52C F0 16 BEQ TIME10
B52E C6 73 DEC ETIMER
B530 D0 04 BNE TIMER9
B532 A2 11 LDX #STLAST+1 ; 1 FOR FALL THROUGH
B534 86 79 STX NSTARS
B536 TIMER9
B536 C9 70 CMP #$70
B538 B0 04 BCS TIME30
B53A A2 00 LDX #$00
B53C 86 8A STX HITME
B53E TIME30
B53E C9 18 CMP #$18
B540 B0 02 BCS TIME10
B542 C6 79 DEC NSTARS
B544 TIME10
B544 C6 74 DEC SECOND
B546 10 21 BPL TIMER1
B548 A9 28 LDA #$28
B54A 85 74 STA SECOND
B54C A2 04 LDX #$04
B54E TIMER2
B54E FE A3 09 INC DSDATE,X
B551 BD A3 09 LDA DSDATE,X
B554 C9 DA CMP #$DA
B556 90 0D BCC TIMER3
B558 A9 D0 LDA #$D0
B55A 9D A3 09 STA DSDATE,X
B55D E0 03 CPX #$03
B55F D0 01 BNE TIMER4
B561 CA DEX
B562 TIMER4
B562 CA DEX
B563 10 E9 BPL TIMER2
B565 TIMER3
B565 C6 78 DEC JMPTIM
B567 30 01 BMI TIMER5
B569 TIMER1
B569 60 RTS
B56A TIMER5
B56A A9 31 LDA #49
B56C 85 78 STA JMPTIM
; RATING DUE TO TIME
B56E A5 CB LDA RATING
B570 D0 02 BNE TIME61
B572 C6 CC DEC RATING+1
B574 TIME61
B574 C6 CB DEC RATING
B576 A6 64 LDX ATRACT ; GAME OVER ?
B578 D0 EF BNE TIMER1 ; YES
; ZYLONS JUMP
; CHECK ALL STARBASES TO SEE IF DESTROYED
; X=0 FROM ABOVE
B57A 86 6A STX TEMP
B57C TIME12
B57C BD C9 08 LDA CHTRAM,X ; STARBASE ?
B57F 10 19 BPL TIME11 ; NO
B581 20 F1 B7 JSR TIMHLP
B584 F0 14 BEQ TIME11
; STARBASE DESTROUED
B586 A9 02 LDA #$02 ; 4 ZYLONS
B588 9D C9 08 STA CHTRAM,X
B58B 85 6A STA TEMP
B58D 38 SEC
B58E A5 CB LDA RATING
B590 E9 12 SBC #18
B592 85 CB STA RATING
B594 A5 CC LDA RATING+1
B596 E9 00 SBC #$00
B598 85 CC STA RATING+1
;
B59A TIME11
B59A E8 INX
B59B 10 DF BPL TIME12
B59D A5 6A LDA TEMP ; ANY STARBASES DESTROYED ?
B59F F0 0F BEQ TIME13 ; NO
B5A1 2C 97 09 BIT DAMAGE+5 ; COMMUNICATIONS
B5A4 70 0A BVS TIME13
B5A6 A0 15 LDY #SENDES-SENTAB
B5A8 20 23 B2 JSR LDMESS
B5AB A2 18 LDX #CH4TB5-CH4TAB ; MESSAGE
B5AD 20 A6 B3 JSR NOTINT
B5B0 TIME13
B5B0 C6 9F DEC JMPOUT ; JUMP TIMEOUT
B5B2 30 07 BMI TIME28
B5B4 A6 93 LDX KILBAS
B5B6 BD C9 08 LDA CHTRAM,X ; NEED A NEW BASE ?
B5B9 30 1F BMI TIME14 ; NO
B5BB TIME28
B5BB A9 07 LDA #$07 ; JUMP TIMEOUT RESTORED
B5BD 85 9F STA JMPOUT
B5BF A0 7F LDY #127
B5C1 TIME15
B5C1 AD 0A D2 LDA RANDOM
B5C4 29 7F AND #$7F
B5C6 AA TAX
B5C7 BD C9 08 LDA CHTRAM,X
B5CA 30 0E BMI TIME14 ; NEW BASE
B5CC 88 DEY
B5CD 10 F2 BPL TIME15 ; TRY AGAIN
B5CF A2 7F LDX #127
B5D1 TIME16
B5D1 BD C9 08 LDA CHTRAM,X
B5D4 30 04 BMI TIME14
B5D6 CA DEX
B5D7 10 F8 BPL TIME16
B5D9 60 RTS
;
B5DA TIME14
B5DA 86 93 STX KILBAS ; STORE STXRBASE
B5DC 8A TXA
B5DD 29 0F AND #$0F
B5DF 85 94 STA KILOCH
B5E1 8A TXA
B5E2 4A LSR A
B5E3 4A LSR A
B5E4 4A LSR A
B5E5 4A LSR A
B5E6 85 95 STA KILOCV
B5E8 A2 FF LDX #$FF
B5EA TIME18 ; MAIN LOOP
B5EA E8 INX
B5EB 10 30 BPL TIME40
; END ZYLON JUMP ROUTINE
B5ED A2 00 LDX #$00
B5EF TIME20
B5EF BD C9 08 LDA CHTRAM,X
B5F2 29 DF AND #$DF
B5F4 9D C9 08 STA CHTRAM,X
B5F7 E8 INX
B5F8 10 F5 BPL TIME20
B5FA 2C 97 09 BIT DAMAGE+5
B5FD 70 1D BVS TIME44
B5FF A2 00 LDX #$00 ; ANY STARBASES SURROUNDED ?
B601 TIME21
B601 BD C9 08 LDA CHTRAM,X
B604 10 13 BPL TIME19
B606 20 F1 B7 JSR TIMHLP
B609 F0 0E BEQ TIME19
; STAR BASE SURROUNDED
B60B A9 63 LDA #99
B60D 85 78 STA JMPTIM ; 99 CENTONS BEFORE DESTROY
B60F A0 13 LDY #SENSUR-SENTAB
B611 20 23 B2 JSR LDMESS
B614 A2 18 LDX #CH4TB5-CH4TAB
B616 4C A6 B3 JMP NOTINT
B619 TIME19
B619 E8 INX
B61A 10 E5 BPL TIME21
B61C TIME44
B61C 60 RTS
B61D TIME40
B61D BC C9 08 LDY CHTRAM,X
B620 C0 0A CPY #$0A ; STARBASE , OR ALREADY CALCULATED
B622 B0 C6 BCS TIME18
B624 AD 0A D2 LDA RANDOM
B627 D9 BB BF CMP JMPWHN,Y
B62A B0 BE BCS TIME18
B62C E4 90 CPX QUADRT
B62E F0 BA BEQ TIME18
; CALCULATE GRADIENT
B630 A0 08 LDY #$08
B632 TIME27
B632 18 CLC
B633 8A TXA
B634 79 C0 BF ADC JMPTAB,Y
B637 85 6A STA TEMP
B639 29 0F AND #$0F
B63B 38 SEC
B63C E5 94 SBC KILOCH
B63E B0 04 BCS TIME26
B640 49 FF EOR #$FF
B642 69 01 ADC #$01
B644 TIME26
B644 85 6B STA TEMP1
B646 A5 6A LDA TEMP
B648 4A LSR A
B649 4A LSR A
B64A 4A LSR A
B64B 4A LSR A
B64C 38 SEC
B64D E5 95 SBC KILOCV
B64F B0 04 BCS TIME22
B651 49 FF EOR #$FF
B653 69 01 ADC #$01
B655 TIME22
B655 18 CLC
B656 65 6B ADC TEMP1
B658 99 96 00 STA JMPPTS,Y
B65B 88 DEY
B65C 10 D4 BPL TIME27
; ZYLON CONVERGENCE
B65E A9 01 LDA #$01
B660 85 6B STA TEMP1
B662 TIME23
B662 A0 07 LDY #$07
B664 TIME24
B664 B9 96 00 LDA JMPPTS,Y
B667 C5 9E CMP JMPPTS+8
B669 B0 24 BCS TIME42
B66B 18 CLC
B66C 8A TXA
B66D 79 C0 BF ADC JMPTAB,Y
B670 30 1D BMI TIME42
B672 84 6A STY TEMP
B674 A8 TAY
B675 B9 C9 08 LDA CHTRAM,Y
B678 D0 13 BNE TIME25
B67A BD C9 08 LDA CHTRAM,X
B67D C4 90 CPY QUADRT
B67F F0 0C BEQ TIME25
B681 09 20 ORA #$20
B683 99 C9 08 STA CHTRAM,Y
B686 A9 00 LDA #$00
B688 9D C9 08 STA CHTRAM,X
B68B F0 0B BEQ TIME45
B68D TIME25
B68D A4 6A LDY TEMP
B68F TIME42
B68F 88 DEY
B690 10 D2 BPL TIME24
B692 E6 9E INC JMPPTS+8
B694 C6 6B DEC TEMP1
B696 10 CA BPL TIME23
B698 TIME45
B698 4C EA B5 JMP TIME18
;
;
;
B69B ROHELP
; HELPER SUB FOR YROTAT, ZROTAT
B69B BD AD 09 LDA XSIGN,X
B69E 49 01 EOR #$01
B6A0 F0 02 BEQ ROHLP1
B6A2 A9 FF LDA #$FF
B6A4 ROHLP1
B6A4 85 6B STA TEMP1
B6A6 85 6C STA TEMP2
B6A8 BD 40 0A LDA XPOSH,X
B6AB 85 6A STA TEMP
B6AD AD 0A D2 LDA RANDOM
B6B0 09 BF ORA #$BF
B6B2 5D D3 0A EOR XPOSL,X
B6B5 0A ASL A
B6B6 26 6A ROL TEMP
B6B8 26 6B ROL TEMP1
B6BA 0A ASL A
B6BB 26 6A ROL TEMP
B6BD 26 6B ROL TEMP1
;
B6BF A5 6D LDA TEMP3 ; JOYSTICK
B6C1 49 FF EOR #$FF ; TOGGLES EVERY TIME THROUGH, CALL TWICE/STAR
B6C3 85 6D STA TEMP3 ; THEN OK, THIS CAN BE TRICKY SO WATCH OUT !!
;
B6C5 30 1A BMI ROHLP2
B6C7 18 CLC
B6C8 B9 D3 0A LDA XPOSL,Y
B6CB 65 6A ADC TEMP
B6CD 99 D3 0A STA XPOSL,Y
B6D0 B9 40 0A LDA XPOSH,Y
B6D3 65 6B ADC TEMP1
B6D5 99 40 0A STA XPOSH,Y
B6D8 B9 AD 09 LDA XSIGN,Y
B6DB 65 6C ADC TEMP2
B6DD 99 AD 09 STA XSIGN,Y
B6E0 60 RTS
B6E1 ROHLP2
B6E1 38 SEC
B6E2 B9 D3 0A LDA XPOSL,Y
B6E5 E5 6A SBC TEMP
B6E7 99 D3 0A STA XPOSL,Y
B6EA B9 40 0A LDA XPOSH,Y
B6ED E5 6B SBC TEMP1
B6EF 99 40 0A STA XPOSH,Y
B6F2 B9 AD 09 LDA XSIGN,Y
B6F5 E5 6C SBC TEMP2
B6F7 99 AD 09 STA XSIGN,Y
B6FA 60 RTS
;
;
;
B6FB STHPOS
; STORE HPOS, X=STR INDEX
B6FB C9 50 CMP #HOFLOW
B6FD B0 5B BCS STVPS1
B6FF 85 6D STA TEMP3
B701 A9 50 LDA #HSTCEN
B703 E0 05 CPX #OBJNUM
B705 B0 02 BCS STHPS2
B707 A9 7D LDA #HOBCEN
B709 STHPS2
B709 BC DE 09 LDY YSIGN,X
B70C D0 09 BNE STHPS3
B70E 38 SEC
B70F E6 6D INC TEMP3
B711 E5 6D SBC TEMP3
B713 9D 2A 0C STA HPOS,X
B716 60 RTS
B717 STHPS3
B717 18 CLC
B718 65 6D ADC TEMP3
B71A 9D 2A 0C STA HPOS,X
B71D 60 RTS
;
B71E STVPOS
; STORE VPOS, X=STAR INDEX
B71E C9 32 CMP #VOFLOW
B720 B0 38 BCS STVPS1
B722 85 6D STA TEMP3
B724 A9 32 LDA #VSTCEN
B726 E0 05 CPX #OBJNUM
B728 B0 04 BCS STVPS2
B72A 06 6D ASL TEMP3
B72C A9 7A LDA #VOBCEN
B72E STVPS2
B72E 24 D0 BIT DISFLG ; SECTOR SCAN ?
B730 50 13 BVC STVPS5 ; NO
B732 2C 96 09 BIT DAMAGE+4
B735 10 07 BPL STVPS7
B737 2C 0A D2 BIT RANDOM
B73A 50 0E BVC STVPS6
B73C 70 15 BVS STVPS3
B73E STVPS7
B73E BC AD 09 LDY XSIGN,X
B741 D0 07 BNE STVPS6
B743 F0 0E BEQ STVPS3 ; JUMP
B745 STVPS5
B745 BC 0F 0A LDY ZSIGN,X
B748 F0 09 BEQ STVPS3
B74A STVPS6
B74A 38 SEC
B74B E6 6D INC TEMP3
B74D E5 6D SBC TEMP3
B74F 9D F9 0B STA VPOS,X
B752 60 RTS
B753 STVPS3
B753 18 CLC
B754 65 6D ADC TEMP3
B756 9D F9 0B STA VPOS,X
B759 60 RTS
B75A STVPS1 ; ENTRY POINT FROM STHPOS **************
B75A E0 05 CPX #OBJNUM
B75C B0 06 BCS STVPS4
B75E A9 FB LDA #$FB
B760 9D F9 0B STA VPOS,X
B763 STVPS8 ; ENTRY POINT FROM NEWSTR ***************
B763 60 RTS
B764 STVPS4
;
; FALL THROUGH TO NEWSTR ***************************
;
B674 NEWSTR
; NEW STAR POSITION
B764 A9 63 LDA #99 ; RESET TO BOTTOM OF SCREEN
B766 9D F9 0B STA VPOS,X
B769 9D 2A 0C STA HPOS,X
B76C E0 11 CPX #STLAST+1 ; EXPLOSION STARS
B76E B0 F3 BCS STVPS8 ; YES
B770 AD 0A D2 LDA RANDOM ; UPDATE Z
B773 29 0F AND #$0F
B775 85 6A STA TEMP
B777 9D A2 0A STA ZPOSH,X
B77A AD 0A D2 LDA RANDOM ; UPDATE Y
B77D 29 0F AND #$0F
B77F C5 6A CMP TEMP
B781 90 02 BCC NEWST3
B783 85 6A STA TEMP
B785 NEWST3
B785 9D 71 0A STA YPOSH,X
;
B788 A9 0F LDA #$0F
B78A 9D 40 0A STA XPOSH,X
B78D A5 D0 LDA DISFLG ; UPDATE X
B78F 49 01 EOR #$01
B791 29 01 AND #$01
B793 9D AD 09 STA XSIGN,X
B796 D0 11 BNE NEWST5
B798 9D 04 0B STA YPOSL,X
B79B 9D 35 0B STA ZPOSL,X
B79E 38 SEC
B79F E5 6A SBC TEMP
B7A1 9D 40 0A STA XPOSH,X
; TRY THIS FIX, BELOW
B7A4 A9 80 LDA #$80
B7A6 9D D3 0A STA XPOSL,X
;
B7A9 NEWST5
;
B7A9 24 D0 BIT DISFLG ; SECTOR SCAN ?
B7AB 50 11 BVC NEWST2 ; NO
B7AD AD 0A D2 LDA RANDOM
B7B0 9D 71 0A STA YPOSH,X
B7B3 AD 0A D2 LDA RANDOM
B7B6 9D 40 0A STA XPOSH,X
B7B9 29 01 AND #$01
B7BB 9D AD 09 STA XSIGN,X
B7BE NEWST2
;
B7BE NEWST4 ; ENTRY POINT FROM HLINES SUB *****************
; DETERMINE SIGN Y,Z
B7BE AD 0A D2 LDA RANDOM
B7C1 29 01 AND #$01
B7C3 9D 0F 0A STA ZSIGN,X
B7C6 D0 0F BNE NEWST1
B7C8 38 SEC
B7C9 FD 35 0B SBC ZPOSL,X
B7CC 9D 35 0B STA ZPOSL,X
B7CF A9 00 LDA #$00
B7D1 FD A2 0A SBC ZPOSH,X
B7D4 9D A2 0A STA ZPOSH,X
B7D7 NEWST1
B7D7 AD 0A D2 LDA RANDOM
B7DA 29 01 AND #$01
B7DC 9D DE 09 STA YSIGN,X
B7DF D0 0F BNE NEWST6
B7E1 38 SEC
B7E2 FD 04 0B SBC YPOSL,X
B7E5 9D 04 0B STA YPOSL,X
B7E8 A9 00 LDA #$00
B7EA FD 71 0A SBC YPOSH,X
B7ED 9D 71 0A STA YPOSH,X
B7F0 NEWST6
B7F0 60 RTS
;
;
;
;
B7F1 TIMHLP
; HELPER ROUTINE FOR TIMERS
B7F1 BD C8 08 LDA CHTRAM-1,X
B7F4 F0 0D BEQ TIMHP1
B7F6 BD CA 08 LDA CHTRAM+1,X
B7F9 F0 08 BEQ TIMHP1
B7FB BD B9 08 LDA CHTRAM-16,X
B7FE F0 03 BEQ TIMHP1
B800 BD D9 08 LDA CHTRAM+16,X
B803 TIMHP1
B803 60 RTS
;
;
;
;
;
;
;
B804 PANDIS
; PANNEL DISPLAY ROUTINE
; ONE ENTRY POINT AT PANDS6
; UPDATE VELOCITY DISPLAY
B804 A6 70 LDX SPEED
B806 E4 71 CPX WARP
B808 F0 08 BEQ PANDS2
B80A 90 04 BCC PANDS3
B80C C6 70 DEC SPEED
B80E B0 12 BCS PANDS1
B810 PANDS3
B810 E6 70 INC SPEED
B812 PANDS2
B812 A5 C0 LDA HFLAG
B814 D0 0C BNE PANDS1
B816 2C 93 09 BIT DAMAGE+1
B819 10 07 BPL PANDS1
B81B A5 71 LDA WARP
B81D 2D 0A D2 AND RANDOM
B820 85 70 STA SPEED
;
;
B822 PANDS1 ; ALL DONE VELOCITY DISPLAY
B822 A0 01 LDY #DVELOC-DISCTL-1
B824 20 CD B8 JSR TWOCM3
B827 2C 95 09 BIT DAMAGE+3 ; COMPUTER DAMAGE
B82A 30 30 BMI PANDS4
; UPDATE COORDINATES DISPLAY
B82C A9 31 LDA #RAMNUM ; DISPLAY Y COORD
B82E A0 17 LDY #DTHETA-DISCTL ; DISPLAY IN THETA
B830 20 A7 B8 JSR TWOCOM ; UPDATE THETA
B833 A9 62 LDA #RAMNUM*2 ; DISPLAY Z COORD
B835 A0 1D LDY #DPHI-DISCTL ; DISPLAY IN PHI
B837 20 A7 B8 JSR TWOCOM ; UPDATE PHI
B83A A9 00 LDA #$00 ; DISPLAY X COORD
B83C A0 23 LDY #DRHO-DISCTL ; DISPLAY IN RHO
B83E 20 A7 B8 JSR TWOCOM ; UPDATE RHO
; LOW BYTE OF RHO
B841 AD 6E 09 LDA DRHO+2 ; PUT BLANK IN LSB IF INFINITE
B844 8D 6F 09 STA DRHO+3
B847 C9 0A CMP #$0A ; INFINITE ?
B849 B0 11 BCS PANDS4 ; YES
B84B AE 5C 09 LDX DCSTOR ; WHICH OBJ TRACKING
B84E BD D3 0A LDA XPOSL,X ; LOW BYTE
B851 4A LSR A
B852 4A LSR A
B853 4A LSR A
B854 4A LSR A
B855 AA TAX
B856 BD E9 0E LDA BCDCON,X ; CONVERT TO BCD
B859 8D 6F 09 STA DRHO+3 ; LSB UPDATED
B85C PANDS4 ; ALL DONE COORD DISP
; UPDATE ENERGY DISPLAY
; UPDATE ENERGY DUE TO SHIELDS WARPS ATTACK COMPUTER
B85C 18 CLC
B85D A5 7F LDA ENFLAG ; LSRB OF ENERGY, DEC ENERGY WHEN CARRY
B85F 65 7D ADC SHENER ; DRAIN FROM SHEILDS
B861 65 80 ADC WPENER ; DRAIN FROM WARP
B863 65 7E ADC ATENER ; DRAIN FROM ATTACK COMPUTER
B865 69 01 ADC #$01 ; LIFE SUPPORT
B867 C5 7F CMP ENFLAG ; SET CARRY FLAG
B869 85 7F STA ENFLAG
B86B B0 39 BCS PANDS5
; DECRE ENERGY
B86D A2 03 LDX #$03 ; DECRE BIT 3 OF ENERGY
B84F PANDS6 ; ENTRY POINT TO DECRE ENERGY *************************
B86F 24 64 BIT ATRACT ; GAME OVER ?
B871 70 33 BVS PANDS5 ; YES
; X MUST BE DEFINED = BIT TO DECRE FROM
B873 DE 55 09 DEC DENERG,X
B876 BD 55 09 LDA DENERG,X
B879 C9 80 CMP #$80 ; CHECK IF BORROW
B87B B0 29 BCS PANDS5 ; NO BORROW
B87D A9 89 LDA #$89
B87F 9D 55 09 STA DENERG,X
B882 E0 02 CPX #$02
B884 D0 08 BNE PANDS7
B886 A5 CB LDA RATING
B888 D0 02 BNE PANDS8
B88A C6 CC DEC RATING+1
B88C PANDS8
B88C C6 CB DEC RATING
B88E PANDS7
B88E CA DEX
B88F 10 DE BPL PANDS6 ; NEXT DIGIT
; OUT OF ENERGY !!
B891 A2 0A LDX #$0A ; KEY F
B893 8A TXA
B894 A0 03 LDY #$03
B896 PAND10
B896 99 55 09 STA DENERG+0,Y
B899 88 DEY
B89A 10 FA BPL PAND10
B89C 20 45 B0 JSR KEYS15
B89F A0 31 LDY #SENOUT-SENTAB
B8A1 A2 04 LDX #$04
B8A3 20 0A B1 JSR CRATE
B8A6 PANDS9
B8A6 PANDS5
B8A6 60 RTS
;
;
;
B8A7 TWOCOM
; TWOS OMPLEMENT AND CONVERT TO B CD HELPER ROUTINE
; A=OFFSET(X,Y,Z), Y=WHERE TO STORE
B8A7 18 CLC
B8A8 6D 5C 09 ADC DCSTOR ; WHICH OBJ TRACKING
B8AB AA TAX
B8AC A9 10 LDA #$10 ; + SIGN
B8AE 85 6A STA TEMP
B8B0 BD AD 09 LDA XSIGN,X ; SIGN OF OBJ
B8B3 4A LSR A
B8B4 BD 40 0A LDA XPOSH,X
B8B7 B0 04 BCS TWOCM1
; NEGATIVE VALUE, TWOS COMPLEMENT
B8B9 49 FF EOR #$FF
B8BB C6 6A DEC TEMP ; - SIGN
B8BD TWOCM1
B8BD AA TAX
B8BE A5 6A LDA TEMP
B8C0 99 49 09 STA DISCTL+0,Y ; STORE SIGN
;
; NO INFINITY FOR THETA OR PHI
B8C3 98 TYA
B8C4 29 10 AND #$10 ; THETA OR PHI ?
B8C6 F0 05 BEQ TWOCM3 ; NO
B8C8 E0 FF CPX #$FF ; INFINITY ?
B8CA D0 01 BNE TWOCM3 ; NO
B8CC CA DEX ; X=FE, NOT FF
;
;
B8CD TWOCM3 ; ENTRY POINT TO LOAD ONLY **************
;
B8CD BD E9 0E LDA BCDCON,X ; BCD CONVERT
B8D0 AA TAX
B8D1 29 0F AND #$0F
B8D3 99 4B 09 STA DISCTL+2,Y ; LOW BYTE STOED
B8D6 8A TXA
B8D7 4A LSR A
B8D8 4A LSR A
B8D9 4A LSR A
B8DA 4A LSR A
B8DB 99 4A 09 STA DISCTL+1,Y ; HIGHT BYTE STORED
B8DE 60 RTS
;
;
;
;
;
;
;
; TABLES;
B8DF CLINDX ; COLOR INDEX TABLE USED IN OBJCOL SUBROUTINE
B8DF 00 01 02 .BYTE 0,1,2,3,7
B8E2 03 07
;
;
B8E4 PHGRAF ; PHOTON GRAPHIC
B8E4 00 .BYTE 0
B8E5 18 3C 7E .BYTE $18,$3C,$7E,$7E,$76,$F7,$DF,$DF,$FF,$FF,$F7,$76,$7E,$7E,$3C,$18
B8E8 7E 76 F7
B8EB DF DF FF
B8EE FF F7 76
B8F1 7E 7E 3C
B8F4 18
B8F5 PHGRF1
B8F5 10 38 7C .BYTE $10,$38,$7C,$7C,$FE,$DE,$DA,$FA,$EE,$EE,$7C,$7C,$38,$10
B8F8 7C FE DE
B8FB DA FA EE
B8FE EE 7C 7C
B901 38 10
B903 PHGRF2
B903 18 3C 3C .BYTE $18,$3C,$3C,$7E,$6E,$7A,$7E,$76,$7E,$3C,$3C,$18
B906 7E 6E 7A
B909 7E 76 7E
B90C 3C 3C 18
B90F PHGRF3
B90F 10 38 38 .BYTE $10,$38,$38,$7C,$74,$7C,$6C,$38,$38,$10
B912 7C 74 7C
B915 6C 38 38
B918 10
B919 PHGRF4
B919 10 18 3C .BYTE $10,$18,$3C,$2C,$3C,$3C,$18,$08
B91C 2C 3C 3C
B91F 18 08
B921 PHGRF5
B921 10 38 38 .BYTE $10,$38,$38,$28,$38,$10
B924 28 38 10
;
;
B927 DKGRAF ; DOCKING SHIP GRAPHIC
B927 3C 3C 24 .BYTE $3C,$3C,$24,$3C,$7E,$7E,$7E,$5A,$FF,$FF,$42,$42,$42,$42,$42,$42
B92A 3C 7E 7E
B92D 7E 5A FF
B930 FF 42 42
B933 42 42 42
B936 42
B937 DKGRF1
B937 1C 1C 14 .BYTE $1C,$1C,$14,$3E,$3E,$3E,$2A,$7F,$7F,$22,$22,$22,$22,$22
B93A 3E 3E 3E
B93D 2A 7F 7F
B940 22 22 22
B943 22 22
B945 DKGRF2
B945 18 18 3C .BYTE $18,$18,$3C,$3C,$3C,$3C,$7E,$24,$24,$24,$24
B948 3C 3C 3C
B94B 7E 24 24
B94E 24 24
B950 DKGRF3
B950 10 10 38 .BYTE $10,$10,$38,$38,$38,$7C,$28,$28,$28
B953 38 38 7C
B956 28 28 28
B959 DKGRF4
B959 18 18 3C .BYTE $18,$18,$3C,$18,$18
B95C 18 18
B95E DKGRF5
B95E 10 .BYTE $10
B95F GBASM6
B95F 10 38 10 .BYTE $10,$38,$10
;
;
;
B962 GBASEM
B962 18 7E FF .BYTE $18,$7E,$FF,$FF,$FF,$FF,$FF,$E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E,$7E
B965 FF FF FF
B968 FF E7 E7
B96B FF FF FF
B96E FF FF 7E
B971 7E
B972 GBASM1
B972 00 .BYTE 0
B973 18 3C 7E .BYTE $18,$3C,$7E,$FF,$FF,$FF,$E7,$66,$FF,$FF,$FF,$FF,$7E,$7E
B976 FF FF FF
B979 E7 66 FF
B97C FF FF FF
B97F 7E 7E
B981 GBASM2
B981 00 .BYTE 0
B982 18 3C 7E .BYTE $18,$3C,$7E,$FF,$FF,$E7,$66,$FF,$FF,$FF,$FF,$3C
B985 FF FF E7
B988 66 FF FF
B98B FF FF 3C
B98E GBASM3
B98E 18 3C FF .BYTE $18,$3C,$FF,$FF,$E7,$66,$FF,$FF,$7E,$3C
B991 FF E7 66
B994 FF FF 7E
B997 3C
B998 GBASM4
B998 00 .BYTE 0
B999 18 3C FF .BYTE $18,$3C,$FF,$FF,$FF,$3C,$18
B99C FF FF 3C
B99F 18
B9A0 GBASM5
B9A0 18 3C FF .BYTE $18,$3C,$FF,$3C,$18
B9A3 3C 18
;
B9A5 HWARTG ; HWARP TARGET GRAPHIC
B9A5 28 28 28 .BYTE $28,$28,$28,$28,$EE,0,0,$EE,$28,$28,$28,$28
B9A8 28 EE 00
B9AB 00 EE 28
B9AE 28 28 28
;
;
;
;
B9B1 ZYGRAF ; GRAFIC OF ZYLON SHIP BASED ON XPOS
B9B1 00 .BYTE 0 ; BLANK
B9B2 81 81 81 .BYTE $81,$81,$81,$81,$BD,$FF,$FF,$BD,$81,$81,$81,$81
B9B5 81 BD FF
B9B8 FF BD 81
B9BB 81 81 81
B9BE ZYGRF1
B9BE 82 82 BA .BYTE $82,$82,$BA,$FE,$FE,$BA,$82,$82
B9C1 FE FE BA
B9C4 82 82
B9C6 ZYGRF2
B9C6 42 5A 7E .BYTE $42,$5A,$7E,$7E,$5A,$42
B9C9 7E 5A 42
B9CC ZYGRF3
B9CC 44 54 7C .BYTE $44,$54,$7C,$7C,$54,$44
B9CF 7C 54 44
B9D2 ZYGRF4
B9D2 24 3C 3C .BYTE $24,$3C,$3C,$24
B9D5 24
B9D6 ZYGRF5
B9D6 28 38 38 .BYTE $28,$38,$38,$28
B9D9 28
B9DA ZYGRF6
B9DA 18 18 .BYTE $18,$18
;
;
B9DC ZYGRF7
B9DC 10 10 .BYTE $10,$10
B9DE GBASER
B9DE E0 F8 F8 .BYTE $E0,$F8,$F8,$FE,$57,$FE,$F8,$F8,$C0
B9E1 FE 57 FE
B9E4 F8 F8 C0
B9E7 GBASR3
B9E7 C0 F0 .BYTE $C0,$F0
B9E9 GBASR1
B9E9 C0 F0 F0 .BYTE $C0,$F0,$F0,$FC,$BE,$FC,$F0,$80,$80
B9EC FC BE FC
B9EF F0 80 80
B9F2 GBASR2
B9F2 C0 C0 F0 .BYTE $C0,$C0,$F0,$BC,$F0,$C0
B9F5 BC F0 C0
;
;
;
B9F8 GBASEL
B9F8 07 1F 1F .BYTE 7,$1F,$1F,$7F,$EA,$7F,$1F,$1F,$3
B9FB 7F EA 7F
B9FE 1F 1F 03
BA01 GBASL3
BA01 03 0F .BYTE 3,$F
BA03 GBASL1
BA03 03 0F 0F .BYTE 3,$F,$F,$3F,$7D,$3F,$F,1,1
BA06 3F 7D 3F
BA09 0F 01 01
BA0C GBASL2
BA0C 03 03 0F .BYTE 3,3,$F,$3D,$F,3
BA0F 3D 0F 03
;
;
;
;
BA12 ROGRAF
BA12 18 3C 7E .BYTE $18,$3C,$7E,$7E,$DB,$C3,$81,$81,$81
BA15 7E DB C3
BA18 81 81 81
BA1B ROGRF1
BA1B 10 38 7C .BYTE $10,$38,$7C,$7C,$D6,$C6,$82,$82
BA1E 7C D6 C6
BA21 82 82
BA23 ROGRF2
BA23 18 3C 3C .BYTE $18,$3C,$3C,$66,$66,$42,$42
BA26 66 66 42
BA29 42
BA2A ROGRF3
BA2A 10 38 38 .BYTE $10,$38,$38,$6C,$44,$44
BA2D 6C 44 44
BA30 ROGRF4
BA30 18 3C 24 .BYTE $18,$3C,$24,$24
BA33 24
;
;
BA34 ROGRF5
BA34 10 38 28 .BYTE $10,$38,$28
;
;
BA37 KLGRAF
BA37 18 3C 7E .BYTE $18,$3C,$7E,$FF,$18,$18,$FF,$7E,$3C,$18
BA3A FF 18 18
BA3D FF 7E 3C
BA40 18
BA41 KLGRF1
BA41 10 38 7C .BYTE $10,$38,$7C,$FE,$38,$38,$FE,$7C,$38,$10
BA44 FE 38 38
BA47 FE 7C 38
BA4A 10
BA4B KLGRF2
BA4B 18 3C 7E .BYTE $18,$3C,$7E,$18,$7E,$3C,$18
BA4E 18 7E 3C
BA51 18
BA52 KLGRF3
BA52 10 38 7C .BYTE $10,$38,$7C,$10,$7C,$38,$10
BA55 10 7C 38
BA58 10
BA59 KLGRF4
BA59 18 3C 18 .BYTE $18,$3C,$18,$3C,$18
BA5C 3C 18
BA5E KLGRF5
BA5E 10 38 38 .BYTE $10,$38,$38,$10
BA61 10
;
;
;
;
BA62 LISTAB ; DISPLAY LIST TABLE LDISP
; SHIP ALIVE
BA62 8D 00 46 .BYTE $8D,0,$46
BA65 49 09 .WORD DISCTL
BA67 20 06 00 .BYTE $20,6,0
BA6A LISTB2 ; GAL CHT
BA6A 01 .BYTE 1
BA6B 2E A1 .WORD GLDISP
BA6D LISTB3 ; SECT SCAN
BA6D 00 00 46 .BYTE 0,0,$46
BA70 F8 A0 .WORD SESCAN
BA72 4D .BYTE $4D
BA73 C8 10 .WORD MEMMAP+200
BA75 LISTB4 ; BACK VIEW
BA75 00 00 46 .BYTE 0,0,$46
BA78 09 A1 .WORD BACKUP
BA7A 4D .BYTE $4D
BA7B C8 10 .WORD MEMMAP+200
BA7D LISTB5 ; FRONT VIEW
BA7D 4D .BYTE $4D
BA7E 00 10 .WORD MEMMAP
BA80 0D 0D 0D .BYTE $0D,$0D,$0D,$0D,$0D
BA83 0D 0D
BA85 LISTB6 ; MESSAGE ON
BA85 30 46 .BYTE $30,$46
BA87 1F 0D .WORD MESAGE
BA89 4D .BYTE $4D
BA8A A8 12 .WORD MEMMAP+680
;
;
BA8C DISDIS ; FOR KEYSRV , DISPLAY LIST POINTERS
BA8C 1B 13 0B .BYTE LISTB5-LISTAB,LISTB4-LISTAB,LISTB3-LISTAB,LISTB2-LISTAB
BA8F 08
;
;
BA90 BRTABL ; BRIGHTNESS SELECT TABLE
BA90 FF FF FF .BYTE BRT,BRT,BRT,BRT
BA93 FF
BA94 AA FF AA .BYTE MED,BRT,MED,BRT
BA97 FF
BA98 AA AA AA .BYTE MED,MED,MED,BRT
BA9B FF
BA9C AA AA AA .BYTE MED,MED,MED,MED
BA9F AA
BAA0 AA AA AA .BYTE MED,MED,MED,DIM
BAA3 55
BAA4 55 AA 55 .BYTE DIM,MED,DIM,MED
BAA7 AA
BAA8 55 55 55 .BYTE DIM,DIM,DIM,MED
BAAB AA
BAAC 55 55 55 .BYTE DIM,DIM,DIM,DIM
BAAF 55
;
;
BAB0 MASK ; MASK FOR RAM MAP BYTE DUE TO HPOS
BAB0 C0 30 0C .BYTE $C0,$30,$0C,$03
BAB3 03
;
;
BAB4 WARPTB ; SELECT WARP ACCEL FROM KEY 0-9
BAB4 00 01 02 .BYTE 0,$01,$02,$04,$08,$10,$20,$40,$60,$70
BAB7 04 08 10
BABA 20 40 60
BABD 70
;
;
BABE CODCON ; USED IN KEYSRV SUBROUTINE FOR KEY CONVERT
BABE F2 DF DE .BYTE $F2,$DF,$DE,$DA,$D8,$DD,$DB,$F3,$F5,$F0
BAC1 DA D8 DD
BAC4 DB F3 F5
BAC7 F0
BAC8 F8 FF C0 .BYTE $F8,$FF,$C0,$FD,$ED,$FE,$D2,$F9,$E5,$CA
BACB FD ED FE
BACE D2 F9 E5
BAD1 CA
BAD2 E7 .BYTE $E7
;
BAD3 WENTAB ; ENERGY USED PER WARP
BAD3 00 04 06 .BYTE 0,4,6,8,10,12,14,30,45,60
BAD6 08 0A 0C
BAD9 0E 1E 2D
BADC 3C
;
;
;
;
;
;
;
;
BADD ENGTAB ; ENERGY USED PER DISTANCE WARP JUMP
BADD 0A 0D 10 .BYTE 10,13,16,20,23,50,70,80,90,120,125,130,135,140,155,170,184,200
BAE0 14 17 32
BAE3 46 50 5A
BAE6 78 7D 82
BAE9 87 8C 9B
BAEC AA B8 C8
BAEF D0 D8 DF .BYTE 208,216,223,232,241,250
BAF2 E8 F1 FA
;
;
;
;
;
BAF5 JOYTAB ; CODE FOR EACH POSITION ON JOYSTICK
BAF5 00 01 FF .BYTE 0,$1,$FF,0
BAF8 00
;
;
;
BAF9 INSTAB ; INSET LINES TABLE HDRAW,VDRAW,NUMPTS
BAF9 50 28 87 .BYTE $50,$28,$87,$50,$36,$87
BAFC 50 36 87
BAFF 77 46 1E .BYTE 119,70,30,119,86,30,119,70,$91,148,70,$91
BB02 77 56 1E
BB05 77 46 91
BB08 94 46 91
BB0B 78 4E 06 .BYTE 120,78,6,126,75,15,126,81,15,141,78,7
BB0E 7E 4B 0F
BB11 7E 51 0F
BB14 8D 4E 07
BB17 85 47 84 .BYTE 133,71,$84,126,76,$85,140,76,$85,133,82,$84
BB1A 7E 4C 85
BB1D 8C 4C 85
BB20 85 52 84
;
;
BB23 INSTB1 ; HORIZ CROSS HAIRS
BB23 3E 32 0F .BYTE $3E,$32,15,$54,$32,15
BB26 54 32 0F
BB29 FE .BYTE $FE ; ALL DONE
;
BB2A INSTB2 ; SECTOR SCAN SHIP
BB2A 4E 35 82 .BYTE $4E,$35,$82,$4F,$34,$82,$50,$32,$85,$51,$34,$82,$52,$35,$82
BB2D 4F 34 82
BB30 50 32 85
BB33 51 34 82
BB36 52 35 82
BB39 FE .BYTE $FE ; ALL DONE
;
;
;
;
;
;
;
BB3A YINIT ; HLINES
BB3A 04 04 03 .BYTE 4,4,3,2
BB3D 02
BB3E ZINIT ; HLINES
BB3E 02 03 04 .BYTE 2,3,4,4
BB41 04
;
;
;
;
;
;
;
;
;
;
BB42 STINIT ; STATUS INIT TABLE (LDTABS)
BB42 12 0B 00 .BYTE 18,11,0,0,10,$55,$4B,$40,$40,10,$8D,$8B,$89,$89,$89,$89
BB45 00 0A 55
BB48 4B 40 40
BB4B 0A 8D 8B
BB4E 89 89 89
BB51 89
BB52 0A 16 0B .BYTE 10,$16,11,0
BB55 00
BB56 0A .BYTE 10
BB57 14 0B 0F .BYTE $14,$0B,$0F,0,0,10,$51,$4B,$0F,0,0,10,$93,$8B,$0F,0,0,0
BB5A 00 00 0A
BB5D 51 4B 0F
BB60 00 00 0A
BB63 93 8B 0F
BB66 00 00 00
BB69 0A .BYTE 10
BB6A 37 21 32 .BYTE $37,$21,$32,$30,0,$25,$2E,$25,$32,$27,$39,$1A,0,0,0
BB6D 30 00 25
BB70 2E 25 32
BB73 27 39 1A
BB76 00 00 00
BB79 10 00 00 .BYTE $10,0,0,0,0
BB7C 00 00
BB7E B4 A1 B2 .BYTE $B4,$A1,$B2,$A7,$A5,$B4,$B3,$9A,0,0
BB81 A7 A5 B4
BB84 B3 9A 00
BB87 00
BB88 24 23 1A .BYTE $24,$23,$1A,$30,$25,$33,$23,$2C,$32
BB8B 30 25 33
BB8E 23 2C 32
BB91 00 .BYTE 0
BB92 F3 F4 E1 .BYTE $F3,$F4,$E1,$F2,0,$E4,$E1,$F4,$E5,$DA,$D0,$D0,$CE,$D0
BB95 F2 00 E4
BB98 E1 F4 E5
BB9B DA D0 D0
BB9E CE D0
BBA0 D0 00 00 .BYTE $D0,0,0,0,0,0
BBA3 00 00 00
;
BBA6 CHRTAB ; TABLE FOR LDTABS ROUTINE
BBA6 CF 04 03 .BYTE $CF,4,3,2
BBA9 02
;
;
;
;
;
;
BBAA SENTAB ; TABLE OF SENTENSES
BBAA 00 .BYTE 0 ; BUFFER
BBAB SENACN ; ATTACK COMPUTER ON
BBAB 05 06 42 .BYTE 5,6,$42
BBAE SENACF ; ATTACK COMPUTER OFF
BBAE 05 06 43 .BYTE 5,6,$43
BBB1 SENSON ; SHIELDS ON
BBB1 04 42 .BYTE 4,$42
BBB3 SENSOF ; SHIELDS OFF
BBB3 04 43 .BYTE 4,$43
BBB5 SENCTN ; COMPUTER TRACKING ON
BBB5 06 07 42 .BYTE 6,7,$42
BBB8 SENCTF ; COMPUTER TRACKING OFF
BBB8 07 43 .BYTE 7,$43
BBBA SENWHT ; WHAT?
BBBA 48 .BYTE $48
BBBB SENHYP ; HYPERWARP ENGAGED
BBBB 09 4A .BYTE 9,$4A
BBBD SENSUR
BBBD 0B CD .BYTE 11,$CD ; STARBASE SURROUNDED
BBBF SENDES
BBBF 0B CC .BYTE 11,$CC ; STARBASE DESTROYED
BBC1 SENHWA ; HYPERWARP ABORTE
BBC1 09 4E .BYTE 9,$4E
BBC3 SENHWC ; HYPERWARP COMPLETE
BBC3 09 4F .BYTE 9,$4F
BBC5 SENHSP ; HYPERSPACE
BBC5 D0 .BYTE $D0
BBC6 SENORB ; ORBIT ESTABLISED
BBC6 11 92 56 .BYTE 17,$92,$56
BBC9 SENDKA ; DOCKING ABORTED
BBC9 13 4E .BYTE 19,$4E
BBCB SENETC ; ENERGY TRANSFER COMPLETE
BBCB 15 4F .BYTE 21,$4F
BBCD SENDST ; YOU ARE DESTROYED
BBCD B8 97 99 .BYTE $B8,$97,$99,$98,$8C,$9D,30,$9F,$FD,37,$FC,$78
BBD0 98 8C 9D
BBD3 1E 9F FD
BBD6 25 FC 78
BBD9 SENATA ; TITLE
BBD9 9B 60 .BYTE $9B,$60
;
;
BBDB SENOUT ; OUT OF ENERGY
BBDB B8 97 98 .BYTE $B8,$97,$98,26,$8E,28,$94,36,$9F,$FD,37,$FC,$A7,$68
BBDE 1A 8E 1C
BBE1 94 24 9F
BBE4 FD 25 FC
BBE7 A7 68
BBE9 SENWIN ; YOU WIN
BBE9 B8 97 98 .BYTE $B8,$97,$98,26,$8F,36,$9F,$FD,37,$FC,$66
BBEC 1A 8F 24
BBEF 9F FD 25
BBF2 FC 66
BBF4 SENNOV ; NOVICE MISSION
BBF4 2C 5A .BYTE 44,$5A
BBF6 SENPIL ; PILOT MISSION
BBF6 2E 5A .BYTE 46,$5A
BBF8 SENWAR ; WARRIOR MISSION
BBF8 31 5A .BYTE 49,$5A
;
;
BBFA SENCOM ; COMMANDER MISSION
BBFA 33 5A .BYTE 51,$5A
BBFC SENDMC ; DAMAGE CONTROL
BBFC B8 34 76 .BYTE $B8,52,$76
BBFF SENPDM ; PHOTONS DAMAGED
BBFF 37 B5 78 .BYTE 55,$B5,$78
BC02 SENPDS ; PHOTONS DESTROYED
BC02 37 8C 78 .BYTE 55,$8C,$78
BC05 SENEDM ; ENGINES DAMAGED
BC05 23 B5 78 .BYTE 35,$B5,$78
BC08 SENEDS ; ENGINES DESTROYED
BC08 23 8C 78 .BYTE 35,$8C,$78
BC0B SENSDM ; SHIELDS DAMAGED
BC0B 04 B5 78 .BYTE 4,$B5,$78
BC0E SENSDS ; SHIELDS DESTROYED
BC0E 04 8C 78 .BYTE 4,$8C,$78
BC11 SENCDM ; COMPUTER DAMAGED
BC11 06 B5 78 .BYTE 6,$B5,$78
BC14 SENCDS ; COMPUER DESTROYED
BC14 06 8C 78 .BYTE 6,$8C,$78
BC17 SENTDM ; SECTOR SCAN DAMAGED
BC17 A2 75 .BYTE $A2,$75
BC19 SENTDS ; SECTOR SCAN DESTROYED
BC19 A2 4C .BYTE $A2,$4C
BC1B SENMDM ; COMMUNICATIONS DAMAGED
BC1B A1 75 .BYTE $A1,$75
BC1D SENMDS ; COMMUNICATIONS DESTROYED
BC1D A1 4C .BYTE $A1,$4C
BC1F SENRED ; RED ALERT
BC1F C1 .BYTE $C1
BC20 SENABR ; MISSION ABORTED KEY
BC20 B8 97 98 .BYTE $B8,$97,$98,26,$8E,36,$9F,$FD,37,$FC,$66
BC23 1A 8E 24
BC26 9F FD 25
BC29 FC 66
;
;
;
BC2B WRDTAB ; TABLE OF WORDS
BC2B A0 20 20 .BYTE $A0," RED ALERT"
BC2E 20 20 52
BC31 45 44 20
BC34 41 4C 45
BC37 52 54
BC39 CF 4E .BYTE $CF,"N"
BC3B CF 46 46 .BYTE $CF,"FF"
BC3E D3 48 49 .BYTE $D3,"HIELDS"
BC41 45 4C 44
BC44 53
BC45 C1 54 54 .BYTE $C1,"TTACK"
BC48 41 43 4B
BC4B C3 4F 4D .BYTE $C3,"OMPUTER"
BC4E 50 55 54
BC51 45 52
BC53 D4 52 41 .BYTE $D4,"RACKING"
BC56 43 4B 49
BC59 4E 47
BC5B D7 48 41 .BYTE $D7,"HATS WRONG?"
BC5E 54 53 20
BC61 57 52 4F
BC64 4E 47 3F
BC67 C8 59 50 .BYTE $C8,"YPERWARP"
BC6A 45 52 57
BC6D 41 52 50
BC70 C5 4E 47 .BYTE $C5,"NGAGED"
BC73 41 47 45
BC76 44
;
;
BC77 D3 54 41 .BYTE $D3,"TARBASE"
BC7A 52 42 41
BC7D 53 45
BC7F C4 45 53 .BYTE $C4,"ESTROYED"
BC82 54 52 4F
BC85 59 45 44
BC88 D3 55 52 .BYTE $D3,"URROUNDED"
BC8B 52 4F 55
BC8E 4E 44 45
BC91 44
BC92 C1 42 4F .BYTE $C1,"BORTED"
BC95 52 54 45
BC98 44
BC99 C3 4F 4D .BYTE $C3,"OMPLETE"
BC9C 50 4C 45
BC9F 54 45
BCA1 C8 59 50 .BYTE $C8,"YPERSPACE"
BCA4 45 52 53
BCA7 50 41 43
BCAA 45
BCAB CF 52 42 .BYTE $CF,"RBIT"
BCAE 49 54
BCB0 C5 53 54 .BYTE $C5,"STABLISHED"
BCB3 41 42 4C
BCB6 49 53 48
BCB9 45 44
BCBB C4 4F 43 .BYTE $C4,"OCKING"
BCBE 4B 49 4E
BCC1 47
BCC2 C5 4E 45 .BYTE $C5,"NERGY"
BCC5 52 47 59
BCC8 D4 52 41 .BYTE $D4,"RANSFER"
BCCB 4E 53 46
BCCE 45 52
BCD0 D3 54 41 .BYTE $D3,"TANDBY"
BCD3 4E 44 42
BCD6 59
BCD7 D3 54 41 .BYTE $D3,"TAR FLEET TO"
BCDA 52 20 46
BCDD 4C 45 45
BCE0 54 20 54
BCE3 4F
BCE4 D3 54 41 .BYTE $D3,"TAR CRUISER 7"
BCE7 52 20 43
BCEA 52 55 49
BCED 53 45 52
BCF0 20 37
;
;
BCF2 C1 4C 4C .BYTE $C1,"LL UNITS"
BCF5 20 55 4E
BCF8 49 54 53
BCFB CD 49 53 .BYTE $CD,"ISSION"
BCFE 53 49 4F
BD01 4E
BD02 A0 20 20 .BYTE $A0," STAR RAIDERS"
BD05 20 53 54
BD08 41 52 20
BD0B 52 41 49
BD0E 44 45 52
BD11 53
BD12 DA 45 52 .BYTE $DA,"ERO"
BD15 4F
BD16 C2 59 20 .BYTE $C2,"Y ZYLON FIRE"
BD19 5A 59 4C
BD1C 4F 4E 20
BD1F 46 49 52
BD22 45
BD23 D0 4F 53 .BYTE $D0,"OSTHUMOUS"
BD26 54 48 55
BD29 4D 4F 55
BD2C 53
BD2D D2 41 4E .BYTE $D2,"ANK IS:"
BD30 4B 20 49
BD33 53 3A
BD35 C3 4F 50 .BYTE $C3,"OPYRIGHT ATARI 1979"
BD38 59 52 49
BD3B 47 48 54
BD3E 20 41 54
BD41 41 52 49
BD44 20 31 39
BD47 37 39
BD49 D3 55 42 .BYTE $D3,"UB-SPACE RADIO"
BD4C 2D 53 50
BD4F 41 43 45
BD52 20 52 41
BD55 44 49 4F
BD58 D3 45 43 .BYTE $D3,"ECTOR SCAN"
BD5B 54 4F 52
BD5E 20 53 43
BD61 41 4E
BD63 C5 4E 47 .BYTE $C5,"NGINES"
BD66 49 4E 45
BD69 53
BD6A CE 45 57 .BYTE $CE,"EW"
BD6D C3 4C 41 .BYTE $C3,"LASS"
BD70 53 53
BD72 C3 4F 4E .BYTE $C3,"ONGRATULATIONS"
BD75 47 52 41
BD78 54 55 4C
BD7B 41 54 49
BD7E 4F 4E 53
;
;
BD81 D2 45 50 .BYTE $D2,"EPORT TO BASE"
BD84 4F 52 54
BD87 20 54 4F
BD8A 20 42 41
BD8D 53 45
BD8F C6 4F 52 .BYTE $C6,"OR TRAINING"
BD92 20 54 52
BD95 41 49 4E
BD98 49 4E 47
BD9B C7 41 4C .BYTE $C7,"ALACTIC COOK"
BD9E 41 43 54
BDA1 49 43 20
BDA4 43 4F 4F
BDA7 4B
BDA8 C7 41 52 .BYTE $C7,"ARBAGE SCOW CAPTAIN"
BDAB 42 41 47
BDAE 45 20 53
BDB1 43 4F 57
BDB4 20 43 41
BDB7 50 54 41
BDBA 49 4E
BDBC D2 4F 4F .BYTE $D2,"OOKIE"
BDBF 4B 49 45
BDC2 CE 4F 56 .BYTE $CE,"OVICE"
BDC5 49 43 45
BDC8 C5 4E 53 .BYTE $C5,"NSIGN"
BDCB 49 47 4E
BDCE D0 49 4C .BYTE $D0,"ILOT"
BDD1 4F 54
BDD3 C1 43 45 .BYTE $C1,"CE"
BDD6 CC 49 45 .BYTE $CC,"IEUTENANT"
BDD9 55 54 45
BDDC 4E 41 4E
BDDF 54
BDE0 D7 41 52 .BYTE $D7,"ARRIOR"
BDE3 52 49 4F
BDE6 52
BDE7 C3 41 50 .BYTE $C3,"APTAIN"
BDEA 54 41 49
BDED 4E
;
;
BDEE C3 4F 4D .BYTE $C3,"OMMANDER"
BDF1 4D 41 4E
BDF4 44 45 52
BDF7 C4 41 4D .BYTE $C4,"AMAGE"
BDFA 41 47 45
BDFD C4 41 4D .BYTE $C4,"AMAGED"
BE00 41 47 45
BE03 44
BE04 C3 4F 4E .BYTE $C3,"ONTROL"
BE07 54 52 4F
BE0A 4C
BE0B D0 48 4F .BYTE $D0,"HOTONS"
BE0E 54 4F 4E
BE11 53
;
BE12 A0 .BYTE $A0 ; BLANK
BE13 D3 54 41 .BYTE $D3,"TAR COMMANDER"
BE16 52 20 43
BE19 4F 4D 4D
BE1C 41 4E 44
BE1F 45 52
BE21 80 .BYTE $80 ; END TABLE
;
;
;
;
BE22 DISTYP ; CODE TO LOAD IN DISFLG
BE22 00 01 40 .BYTE 0,1,$40,$80
BE25 80
BE26 TOFFMG ; POINTER TO TOGLE OFF MESSAGE
BE26 0E 09 04 .BYTE SENCTF-SENTAB,SENSOF-SENTAB,SENACF-SENTAB
BE29 TOGTAB ; BYTE TO TOGGLE RAM BYTE WITH
BE29 FF 08 02 .BYTE $FF,8,2
BE2C TONMSG ; POINTER TO TOGGLE ON MESSAGE
BE2C 0B 07 01 .BYTE SENCTN-SENTAB,SENSON-SENTAB,SENACN-SENTAB
;
;
;
;
;
BE2F GPOINT ; TABLE OF GRAPHIC POINTERS FOR THE OBJ (OBJCOL)
BE2F 01 11 1F .BYTE 1,PHGRF1-PHGRAF,PHGRF2-PHGRAF,PHGRF3-PHGRAF,PHGRF4-PHGRAF
BE32 2B 35
BE34 3D 75 7A .BYTE PHGRF5-PHGRAF,DKGRF4-PHGRAF,DKGRF5-PHGRAF
BE37 01 0D 15 .BYTE 1,ZYGRF1-ZYGRAF,ZYGRF2-ZYGRAF,ZYGRF3-ZYGRAF,ZYGRF4-ZYGRAF
BE3A 1B 21
BE3C 25 29 2B .BYTE ZYGRF5-ZYGRAF,ZYGRF6-ZYGRAF,ZYGRF7-ZYGRAF
BE3F 2D .BYTE GBASER-ZYGRAF
BE40 38 41 36 .BYTE GBASR1-ZYGRAF,GBASR2-ZYGRAF,GBASR3-ZYGRAF,GBASR3-ZYGRAF,0,0,0
BE43 36 00 00
BE46 00
BE47 7E .BYTE GBASEM-PHGRAF
BE48 8E 9D AA .BYTE GBASM1-PHGRAF,GBASM2-PHGRAF,GBASM3-PHGRAF,GBASM4-PHGRAF
BE4B B4
BE4C BC 7B 7A .BYTE GBASM5-PHGRAF,GBASM6-PHGRAF,DKGRF5-PHGRAF
BE4F 47 .BYTE GBASEL-ZYGRAF
BE50 52 5B 50 .BYTE GBASL1-ZYGRAF,GBASL2-ZYGRAF,GBASL3-ZYGRAF,GBASL3-ZYGRAF,0,0,0
BE53 50 00 00
BE56 00
BE57 43 .BYTE DKGRAF-PHGRAF
BE58 53 61 6C .BYTE DKGRF1-PHGRAF,DKGRF2-PHGRAF,DKGRF3-PHGRAF,DKGRF4-PHGRAF
BE5B 75
BE5C 7A 75 7A .BYTE DKGRF5-PHGRAF,DKGRF4-PHGRAF,DKGRF5-PHGRAF
BE5F 01 11 1F .BYTE 1,PHGRF1-PHGRAF,PHGRF2-PHGRAF,PHGRF3-PHGRAF,PHGRF4-PHGRAF
BE62 2B 35
BE64 3D 75 7A .BYTE PHGRF5-PHGRAF,DKGRF4-PHGRAF,DKGRF5-PHGRAF
;
;
;
;
BE67 61 .BYTE ROGRAF-ZYGRAF
BE68 6A 72 79 .BYTE ROGRF1-ZYGRAF,ROGRF2-ZYGRAF,ROGRF3-ZYGRAF,ROGRF4-ZYGRAF
BE6B 7F
BE6C 83 29 2B .BYTE ROGRF5-ZYGRAF,ZYGRF6-ZYGRAF,ZYGRF7-ZYGRAF
BE6F 86 .BYTE KLGRAF-ZYGRAF
BE70 90 9A A1 .BYTE KLGRF1-ZYGRAF,KLGRF2-ZYGRAF,KLGRF3-ZYGRAF,KLGRF4-ZYGRAF
BE73 A8
BE74 AD 29 2B .BYTE KLGRF5-ZYGRAF,ZYGRF6-ZYGRAF,ZYGRF7-ZYGRAF
BE77 C1 C1 C1 .BYTE HWARTG-PHGRAF,HWARTG-PHGRAF,HWARTG-PHGRAF,HWARTG-PHGRAF
BE7A C1
BE7B C1 C1 75 .BYTE HWARTG-PHGRAF,HWARTG-PHGRAF,DKGRF4-PHGRAF,HWARTG-PHGRAF
BE7E C1
;
BE7F NBYTAB ; NUMBER OF BYTES TO STORE ( OBJCOL)
BE7F 0F 0D 0B .BYTE 15,13,11,9,7,5,1,1
BE82 09 07 05
BE85 01 01
BE87 0B 07 05 .BYTE 11,7,5,5,3,3,1,1
BE8A 05 03 03
BE8D 01 01
BE8F 09 08 05 .BYTE 9,8,5,2,0,0,0,0
BE92 02 00 00
BE95 00 00
BE97 0F 0E 0C .BYTE 15,14,12,9,7,4,2,1
BE9A 09 07 04
BE9D 02 01
BE9F 09 08 05 .BYTE 9,8,5,2,0,0,0,0
BEA2 02 00 00
BEA5 00 00
BEA7 0F 0D 0A .BYTE 15,13,10,8,4,3,1,1
BEAA 08 04 03
BEAD 01 01
BEAF 0F 0D 0B .BYTE 15,13,11,9,7,5,1,1
BEB2 09 07 05
BEB5 01 01
BEB7 08 07 06 .BYTE 8,7,6,5,3,2,1,1
BEBA 05 03 02
BEBD 01 01
BEBF 09 09 06 .BYTE 9,9,6,6,4,3,1,1
BEC2 06 04 03
BEC5 01 01
BEC7 0B 0B 0B .BYTE 11,11,11,11,11,11,1,11
BECA 0B 0B 0B
BECD 01 0B
;
;
;
;
;
BECF TRKTAB ; KEY FOR SWITCHING DISPLAY, ASERVE
BECF F8 FF .BYTE $F8,$FF
BED1 CHTABL ; FOR LDGALT, CODES FOR CHTDIS
BED1 0C 1E 1E .BYTE $0C,$1E,$1E,$1D,$1C,$1B
BED4 1D 1C 1B
;
;
;
BED7 STERTB ; USED IN HWARP STEERING , OBJCOL
BED7 9F BF DF .BYTE $9F,$BF,$DF,$FF
BEDA FF
;
;
;
BEDB BHORTB ; STAR BASE HORIZ OFFSET TABLE
BEDB F8 08 .BYTE $F8,08
;
;
BEDD DIFTAB ; RATING/DIFFICULTY TABLE
BEDD 50 4C 3C .BYTE 80,76,60,111,60,60,50,100,40,50,40,90
BEE0 6F 3C 3C
BEE3 32 64 28
BEE6 32 28 5A
BEE9 RANKTB ; RAND WORD VS. RATING HI NIBBLE
BEE9 A9 AA AA .BYTE $A9,$AA,$AA,$AB,$AB,$AC,$AC,$AD,$AD,$AE,$AE,$AF,$B0,$B1,$B2,$B3
BEEC AB AB AC
BEEF AC AD AD
BEF2 AE AE AF
BEF5 B0 B1 B2
BEF8 B3
BEF9 B3 B9 B9 .BYTE $B3,$B9,$B9
;
;
BEFC CLASTB ; DMA ASCII CLASS VS RATING LO NIBBLE
BEFC 95 95 95 .BYTE $95,$95,$95,$94,$94,$94,$94,$93,$93,$93,$92,$92,$92,$91
BEFF 94 94 94
BF02 94 93 93
BF05 93 92 92
BF08 92 91
BF0A 91 91 .BYTE $91,$91
;
BF0C MSENTB ; MISSION TYPE TABLE
BF0C 4A 4C 4E .BYTE SENNOV-SENTAB,SENPIL-SENTAB,SENWAR-SENTAB,SENCOM-SENTAB
BF0F 50
BF10 DPRBTB ; DAMAGE PROB BASED ON MISDIF
BF10 00 50 B4 .BYTE 0,80,180,$FE
BF13 FE
BF14 DAMGTB ; SENTENCES FO DAMAGE (DAMCTL)
BF14 55 5B 61 .BYTE SENPDM-SENTAB,SENEDM-SENTAB,SENSDM-SENTAB,SENCDM-SENTAB
BF17 67
BF18 6D 71 .BYTE SENTDM-SENTAB,SENMDM-SENTAB
BF1A DESTTB ; SENTENCES FO DESTROY (DAMCTL)
BF1A 58 5E 64 .BYTE SENPDS-SENTAB,SENEDS-SENTAB,SENSDS-SENTAB,SENCDS-SENTAB
BF1D 6A
BF1E 6F 73 .BYTE SENTDS-SENTAB,SENMDS-SENTAB
;
;
BF20 NOISTB ; NOISE ROUTINE, INIT AUDTIM,AUDADD,AFREQ2,AFREQ1,ATYPE3
; ATYPE2,AUDEXP,PHOREP,AUDCTL,AUDF3
; FOR PHOTONS
BF20 18 FF 02 .BYTE $18,$FF,2,0,$8A,$A0,0,8,$50,$00
BF23 00 8A A0
BF26 00 08 50
BF29 00
BF2A NOITB1 ; FOR SHIELD EXPLOSION
BF2A 40 40 01 .BYTE $40,$40,1,3,$88,$AF,8,0,$50,4
BF2D 03 88 AF
BF30 08 00 50
BF33 04
BF34 NOITB2 ; FOR ZYLON EXPLOS
BF34 30 40 01 .BYTE $30,$40,1,3,$84,$A8,4,0,$50,4
BF37 03 84 A8
BF3A 04 00 50
BF3D 04
;
;
;
BF3E CH4TAB ; NOTINT, INIT REPPTR,NPRIOR,SDURAT,NDURAT,REPSEQ,NOTSEQ
BF3E CH4TB1 ; HYPERSPACE
BF3E 02 02 02 .BYTE 2,2,2,3,12,2
BF41 03 0C 02
BF44 CH4TB2 ; RED ALERT
BF44 04 03 FF .BYTE 4,3,$FF,$10,7,4
BF47 10 07 04
BF4A CH4TB3 ; KEYS
BF4A 07 04 02 .BYTE 7,4,2,2,0,7
BF4D 02 00 07
BF50 CH4TB4 ; DAMAGE
BF50 0B 05 FF .BYTE 11,5,$FF,$20,2,11
BF53 20 02 0B
BF56 CH4TB5 ; MESSAGE
BF56 0E 06 08 .BYTE 14,6,8,$20,0,14
BF59 20 00 0E
;
;
;
BF5C NOTTAB ; TABL O NOTES, FF=RESERVED BYTE
BF5C 10 FF .BYTE $10,$FF ; TRACKING
BF5E 18 FF .BYTE $18,$FF ; HYPERSPACE
BF60 40 60 FF .BYTE $40,$60,$FF ; RED ALERT
BF63 10 10 10 .BYTE $10,$10,$10,$FF ; KEYS
BF66 FF
BF67 40 20 FF .BYTE $40,$20,$FF ; DAMAGE
BF6A 48 40 51 .BYTE $48,$40,$51,$FF ; STARFLEET MESSAGE
BF6D FF
;
;
BF6E ZYTARG ; GRAPHIC OF ZYLON TARGET
BF6E 84 B4 FC .BYTE $84,$B4,$FC,$B4,$84
BF71 B4 84
;
;
;
;
BF73 PHOYPS ; YPOSH FOR PHOTON
BF73 FF 01 .BYTE $FF,1
;
BF75 PHPOST ; BOUNDS IN HITZYL
BF75 0C 0C 0C .BYTE $C,$C,$C,$C,$E,$E,$E,$20
BF78 0C 0E 0E
BF7B 0E 20
;
;
;
BF7D PHPOSB ; BOUNDS IN HITZYL
BF7D 00 00 00 .BYTE 0,0,0,2,4,6,8,$C
BF80 02 04 06
BF83 08 0C
;
;
;
;
BF85 PHODIF ; THINK
BF85 81 84 88 .BYTE $81,$84,$88,$94
BF88 94
BF89 ZYGIND ; THINK
BF89 80 10 10 .BYTE $80,$10,$10,$10,$70,$70,$70,$10
BF8C 10 70 70
BF8F 70 10
BF91 INTSEQ ; THINK
BF91 04 04 00 .BYTE 4,4,0,0,0,1,0,0
BF94 00 00 01
BF97 00 00
;
BF99 ZYWARP ; THINK
BF99 3E 1E 10 .BYTE $3E,$1E,$10,8,4,2,1,0,0,$81,$82,$84,$88,$90,$9E,$BE
BF9C 08 04 02
BF9F 01 00 00
BFA2 81 82 84
BFA5 88 90 9E
BFA8 BE
;
;
;
BFA9 CLITAB ; LDTABS
BFA9 A6 AA AF .BYTE $A6,$AA,$AF,0,0,$B8,$5A,$FC,$5E,$90
BFAC 00 00 B8
BFAF 5A FC 5E
BFB2 90
;
;
BFB3 JMASK ; HWARP SUB, USED FOR INITING TARG POSITIONS
BFB3 FF FF 3F .BYTE $FF,$FF,$3F,$0F,$3F,$7F,$FF,$FF
BFB6 0F 3F 7F
BFB9 FF FF
;
;
BFBB JMPWHN ; TIMERS, WHEN EACH ZYLON TYPE SHOULD JUMP
BFBB 00 FF FF .BYTE 0,$FF,$FF,$C0,$20
BFBE C0 20
;
BFC0 JMPTAB ; TIMERS , JUMP VECTORS FOR ZYLONS
BFC0 F0 EF FF .BYTE $F0,$EF,$FF,15,16,17,1,$F1,0
BFC3 0F 10 11
BFC6 01 F1 00
;
BFC9 PHVECT ; POHELP
BFC9 00 08 10 .BYTE 0,8,$10,$18,$28,$30,$38,$40
BFCC 18 28 30
BFCF 38 40
;
;
;
BFD1 COLTAB ; OBJCOL, CHROMA FOR EACH TYPE GRAPHIC
BFD1 50 00 20 .BYTE $50,0,$20,$20,$20,0,$A0,0,0,$9F
BFD4 20 20 00
BFD7 A0 00 00
BFDA 9F
;
BFDB COLINT ; OBJCOL, INTENSITY PER XPOSH
BFDB 0E 0E 0E .BYTE $E,$E,$E,$C,$C,$C,$A,$A,$A,8,8,8,6,6,4,4
BFDE 0C 0C 0C
BFE1 0A 0A 0A
BFE4 08 08 08
BFE7 06 06 04
BFEA 04
;
;
BFEB PHOTB2 ; AUDIO, ATYPE3
BFEB 8A 8F 8D .BYTE $8A,$8F,$8D,$8B,$89,$87,$85,$83
BFEE 8B 89 87
BFF1 85 83
BFF3 PHOTB4 ; AUDIO, AFREQ3
BFF3 00 04 01 .BYTE 0,4,1,4,1,4,1,4
BFF6 04 01 04
BFF9 01 04
BFFB PHASE5
;
;
;
;
;
; CARTRIDGE OPERATING CODES
;
*=$BFFC
BFFC 00 .BYTE 0 ; CARTRIDGE IN FLAG
BFFD 80 .BYTE $80 ; RUN CARTRIDGE IMMEDIATELY
BFFE 4A A1 .WORD INIT ; START ADDR POINTER
;
C000 PHASE9
;
;
;
;
; RAM MAP
*=$280
0280 RAMMAP ; MISC RAM STORAGE
0280 DISPLY ; DISPLAY LIST RAM
*=*+128 ; SEE EQUATES FOR INTERNAL LABELS
;
0300 PHASE2
;
*=$300
0300 PGRAPH
0300 MGRAPH ; MISSLE GRAPHICS RAM
*=*+256
0400 PGRAP0
*=*+256
0500 PGRAP1
*=*+256
0600 PGRAP2
*=*+256
0700 PGRAP3
*=*+256
;
0800 VCONL ; VERT CONVERT TABLE LO BYTE
*=*+100
0864 VCONH ; VERT CONVERT TABLE HI BYTE
*=*+100
*=*+1 ; BUFFER BYTE
08C9 CHTRAM ; CHART RAM, MOW MANY ZYLONS IN EACH QUAD
*=*+128
0949 DISCTL ; DISPLAY OF CONTRAL STATUS PANNEL
*=*+2
094B DVELOC ; DISP OF VELOC
*=*+2
*=*+3
0950 DKILL ; DISP OF KILL
*=*+2
*=*+3
0955 DENERG ; DISPLAY OF ENERGY
*=*+4
*=*+3
095C DCSTOR ; WHICH OBJ TRACKING
*=*+1
; NEXT LINE
*=*+3
0960 DTHETA ; DISPLAY OF THETA
*=*+3
*=*+3
0966 DPHI ; DISPLAY OF PHI
*=*+3
*=*+3
096C DRHO ; DISPLAY OF RHO
*=*+4
*=*+1
; NEXT LINE
0971 DGALAC ; GALACTIC CHART INFO
*=*+12
097D DWENER ; DISPLAY WARP ENERGY
*=*+3
*=*+5
; NEXT LINE
*=*+8
098D DTARG ; DISP OF TARGETS IN QUAD
*=*+1
*=*+4
0992 DAMAGE ; DAMAGE CONTROL RAM, +0=PHOTONS,+1=ENGINES
*=*+6 ; +2=SHIELDS,+3=COM,PUTER,+4=SECTOR SCAN
; +5=SUB-SPACE RADIO
*=*+1
; NEXT LINE
*=*+10
09A3 DSDATE ; DISP OF STAR DATE
*=*+5
*=*+5
09AD STRRAM ; RAM FOR STARS , OBJECTS POSITIONS, ETC.
09AD XSIGN ; SIGN OF XPOS
*=*+RAMNUM
09DE YSIGN
*=*+RAMNUM
0A0F ZSIGN
*=*+RAMNUM
0A40 XPOSH ; XPOS IN SPACE HI BYTE
*=*+RAMNUM
0A71 YPOSH
*=*+RAMNUM
0AA2 ZPOSH
*=*+RAMNUM
0AD3 XPOSL ; XPOS IN SPACE LO BYTE
*=*+RAMNUM
0B04 YPOSL
*=*+RAMNUM
0B35 ZPOSL
*=*+RAMNUM
0B66 XINCRE ; OBJECTS X DIRECTION VELOCITY
*=*+RAMNUM
0B97 YINCRE
*=*+RAMNUM
0BC8 ZINCRE
*=*+RAMNUM
0BF9 VPOS ; VERT POS ON SCREEN
*=*+RAMNUM
0C2A HPOS ; HORIZ POS ON SCREEN
*=*+RAMNUM
0C5B OLDVER ; OLD VERT POSIT
*=*+RAMNUM
0C8C GINDEX ; TYPE OF GRAPHIC, OBJECT
0C8C OLDHOR ; OLD HORIZ POSIT STARS
*=*+RAMNUM
0CBD OLDNUM ; PREVIOUS NUMBER OF BYTES STORED OBJECT
0CBD OLDBYT ; OLD BYTE IN RAM MAP STARS
*=*+RAMNUM
0CEE NUMBYT ; HOW MANY BYTES TO STORE OBJECT
0CEE STRBYT ; THE BYTE TO STORE STARS
*=*+RAMNUM
0D1F MESAGE ; DISPLAY OF MESSAGE RAM
*=*+20
*=*+2 ; BUFFER ZONE
;
0D35 CHTDIS ; CHAR GRAPHICS PNTR FO GALCHT
*=*+180
;
0DE9 PTAB ; X80 SCALER TABLE
*=*+256
0EE9 BCDCON ; BINARY TO BCD TABLE
*=*+256
;
0FE9 PHASE7
;
*=$1000
1000 MEMMAP ; SCREEN MAP RAM
*=*+4096
2000 MEMEND
2000 PHASE3
;
; END PROGRAM
.END