mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-28 10:51:14 +00:00
205 lines
3.5 KiB
Plaintext
205 lines
3.5 KiB
Plaintext
;Atari 2600 Initialization Code - C02 Assembly Language File
|
|
|
|
PLR0X EQU $80
|
|
PLR1X EQU $81
|
|
MSL0X EQU $82
|
|
MSL1X EQU $83
|
|
BALLX EQU $84
|
|
|
|
OBJTY EQU $85
|
|
PLR0Y EQU $85
|
|
PLR1Y EQU $86
|
|
MSL1HT EQU $87
|
|
MSL1Y EQU $88
|
|
BALLY EQU $89
|
|
|
|
PLR0LO EQU $8A
|
|
PLR0HI EQU $8B
|
|
PLR1LO EQU $8C
|
|
PLR1HI EQU $8D
|
|
|
|
PLR0HT EQU $8E
|
|
PLR1HT EQU $8F
|
|
MSL0HT EQU $90
|
|
MSL0Y EQU $91
|
|
BALLHT EQU $92
|
|
|
|
|
|
SCORE EQU $93 ; $93-$95
|
|
SCOREPOINTERS EQU $96 ; $96-$9B EQU 6 BYTES
|
|
TEMP1 EQU $9C ;USED BY KERNEL
|
|
TEMP2 EQU $9D ;CAN BE USED IN PROGRAM TOO, BUT
|
|
TEMP3 EQU $9E ;ARE OBLITERATED WHEN DRAWSCREEN IS CALLED.
|
|
TEMP4 EQU $9F
|
|
TEMP5 EQU $A0
|
|
TEMP6 EQU $A1
|
|
|
|
RAND EQU $A2
|
|
SCORECOLOR EQU $A3
|
|
|
|
VAR0 EQU $A4
|
|
VAR1 EQU $A5
|
|
VAR2 EQU $A6
|
|
VAR3 EQU $A7
|
|
VAR4 EQU $A8
|
|
VAR5 EQU $A9
|
|
VAR6 EQU $AA
|
|
VAR7 EQU $AB
|
|
VAR8 EQU $AC
|
|
VAR9 EQU $AD
|
|
VAR10 EQU $AE
|
|
VAR11 EQU $AF
|
|
VAR12 EQU $B0
|
|
VAR13 EQU $B1
|
|
VAR14 EQU $B2
|
|
VAR15 EQU $B3
|
|
VAR16 EQU $B4
|
|
VAR17 EQU $B5
|
|
VAR18 EQU $B6
|
|
VAR19 EQU $B7
|
|
VAR20 EQU $B8
|
|
VAR21 EQU $B9
|
|
VAR22 EQU $BA
|
|
VAR23 EQU $BB
|
|
VAR24 EQU $BC
|
|
VAR25 EQU $BD
|
|
VAR26 EQU $BE
|
|
VAR27 EQU $BF
|
|
VAR28 EQU $C0
|
|
VAR29 EQU $C1
|
|
VAR30 EQU $C2
|
|
VAR31 EQU $C3
|
|
VAR32 EQU $C4
|
|
VAR33 EQU $C5
|
|
VAR34 EQU $C6
|
|
VAR35 EQU $C7
|
|
VAR36 EQU $C8
|
|
VAR37 EQU $C9
|
|
VAR38 EQU $CA
|
|
VAR39 EQU $CB
|
|
VAR40 EQU $CC
|
|
VAR41 EQU $CD
|
|
VAR42 EQU $CE
|
|
VAR43 EQU $CF
|
|
VAR44 EQU $D0
|
|
VAR45 EQU $D1
|
|
VAR46 EQU $D2
|
|
VAR47 EQU $D3
|
|
|
|
TEMP7 EQU $D4 ; THIS IS USED TO AID IN BANKSWITCHING
|
|
|
|
PLAYFIELDPOS EQU $D5
|
|
|
|
A EQU $D6
|
|
B EQU $D7
|
|
C EQU $D8
|
|
D EQU $D9
|
|
E EQU $DA
|
|
F EQU $DB
|
|
G EQU $DC
|
|
H EQU $DD
|
|
I EQU $DE
|
|
J EQU $DF
|
|
K EQU $E0
|
|
L EQU $E1
|
|
M EQU $E2
|
|
N EQU $E3
|
|
O EQU $E4
|
|
P EQU $E5
|
|
Q EQU $E6
|
|
R EQU $E7
|
|
S EQU $E8
|
|
T EQU $E9
|
|
U EQU $EA
|
|
V EQU $EB
|
|
W EQU $EC
|
|
X EQU $ED
|
|
Y EQU $EE
|
|
Z EQU $EF
|
|
|
|
; AVAILABLE FOR OTHER USES, OR IF UNUSED, PROVIDE MORE STACK SPACE
|
|
|
|
AUX1 EQU $F0
|
|
AUX2 EQU $F1
|
|
AUX3 EQU $F2
|
|
AUX4 EQU $F3
|
|
AUX5 EQU $F4
|
|
AUX6 EQU $F5
|
|
|
|
; PLAYFIELD COLOR/HT POINTERS
|
|
PFCOLORTABLE EQU $F0 ; AND $D5
|
|
PFHTTABLE EQU $F0 ; AND $D5
|
|
; THE ABOVE POINTERS ARE THE SAME BECAUSE IF COLOR AND HT ARE BOTH USED TOGETHER,
|
|
; THEY MUST USED ABSOLUTE INDEXED AND CANNOT USE POINTERS
|
|
|
|
LIFEPOINTER EQU $F2 ; POINTER TO "LIVES" SHAPE
|
|
; UPPER 3 BITS OF $F2 CONTAIN THE NUMBER OF LIVES
|
|
LIFECOLOR EQU $F4
|
|
LIVES EQU $F3 ; # LIVES >> 5
|
|
STATUSBARLENGTH EQU $F5 ; ONLY USES UPPER 5 BITS; OTHER BITS FREE
|
|
|
|
PFSCORE1 EQU $F2 ; OPTIONAL PLAYFIELD BYTES IN SCORE
|
|
PFSCORE2 EQU $F3
|
|
PFSCORECOLOR EQU $F4
|
|
|
|
STACK1 EQU $F6
|
|
STACK2 EQU $F7
|
|
STACK3 EQU $F8
|
|
STACK4 EQU $F9
|
|
|
|
|
|
START: SEI ;Disable Interrupts
|
|
CLD ;Disable Decimal Modes
|
|
LDY #0 ;Set Y-Index to $00
|
|
LDA $D0 ;If Location $D0
|
|
CMP #$2C ; Does Not Contain $2C
|
|
BNE IS2600 ;And
|
|
LDA $D1 ; Location $D1
|
|
CMP #$A9 ; Does Not Contain $D1
|
|
BNE IS2600 ;Then
|
|
DEY ; Set Y-Index to $FF
|
|
IS2600: LDX #0 ;Initialize X-Index
|
|
TXA ;Initialize Accumulator
|
|
CLRMEM: INX ;
|
|
TXS ;
|
|
PHA
|
|
BNE CLRMEM
|
|
STY TEMP1
|
|
IFCONST PFROWHT
|
|
LDA PFROWHT
|
|
ELSE
|
|
IFCONST PFRES
|
|
LDA #(96/PFRES)
|
|
ELSE
|
|
LDA #8
|
|
ENDIF
|
|
ENDIF
|
|
STA PLAYFIELDPOS
|
|
LDX #5
|
|
INITSCORE
|
|
LDA #<SCORETABLE
|
|
STA SCOREPOINTERS,X
|
|
DEX
|
|
BPL INITSCORE
|
|
LDA #1
|
|
STA CTRLPF
|
|
ORA INTIM
|
|
STA RAND
|
|
|
|
IFCONST MULTISPRITE
|
|
JSR MULTISPRITE_SETUP
|
|
ENDIF
|
|
|
|
IFNCONST BANKSWITCH
|
|
JMP GAME
|
|
ELSE
|
|
LDA #>(GAME-1)
|
|
PHA
|
|
LDA #<(GAME-1)
|
|
PHA
|
|
PHA
|
|
PHA
|
|
LDX #1
|
|
JMP BS_JSR
|
|
ENDIF
|