BIOS RAM locations

(by Bruce Tomlin, modified by Christopher Salomon)


$C800: Vec_Snd_Shadow Shadow of sound chip registers (15 bytes)
$C80F: Vec_Btn_State Current state of all joystick buttons
$C810: Vec_Prev_Btns Previous state of all joystick buttons
$C811: Vec_Buttons Current toggle state of all buttons
$C812: Vec_Button_1_1 Current toggle state of stick 1 button 1
$C813: Vec_Button_1_2 Current toggle state of stick 1 button 2
$C814: Vec_Button_1_3 Current toggle state of stick 1 button 3
$C815: Vec_Button_1_4 Current toggle state of stick 1 button 4
$C816: Vec_Button_2_1 Current toggle state of stick 2 button 1
$C817: Vec_Button_2_2 Current toggle state of stick 2 button 2
$C818: Vec_Button_2_3 Current toggle state of stick 2 button 3
$C819: Vec_Button_2_4 Current toggle state of stick 2 button 4
$C81A: Vec_Joy_Resltn Joystick A/D resolution ($80=min $00=max)
$C81B: Vec_Joy_1_X Joystick 1 left/right
$C81C: Vec_Joy_1_Y Joystick 1 up/down
$C81D: Vec_Joy_2_X Joystick 2 left/right
$C81E: Vec_Joy_2_Y Joystick 2 up/down
$C81F: Vec_Joy_Mux Joystick enable/mux flags (4 bytes)
$C81F: Vec_Joy_Mux_1_X Joystick 1 X enable/mux flag (=1)
$C820: Vec_Joy_Mux_1_Y Joystick 1 Y enable/mux flag (=3)
$C821: Vec_Joy_Mux_2_X Joystick 2 X enable/mux flag (=5)
$C822: Vec_Joy_Mux_2_Y Joystick 2 Y enable/mux flag (=7)
$C823: Vec_Misc_Count Misc counter/flag byte, zero when not in use
$C824: Vec_0Ref_Enable Check0Ref enable flag
$C825: Vec_Loop_Count Loop counter word (incremented in Wait_Recal)
$C827: Vec_Brightness Default brightness
$C828: Vec_Dot_Dwell Dot dwell time?
$C829: Vec_Pattern Dot pattern (bits)
$C82A: Vec_Text_HW Default text height and width
$C82A: Vec_Text_Height Default text height
$C82B: Vec_Text_Width Default text width
$C82C: Vec_Str_Ptr Temporary string pointer for Print_Str
$C82E: Vec_Counters Six bytes of counters
$C82E: Vec_Counter_1 First counter byte
$C82F: Vec_Counter_2 Second counter byte
$C830: Vec_Counter_3 Third counter byte
$C831: Vec_Counter_4 Fourth counter byte
$C832: Vec_Counter_5 Fifth counter byte
$C833: Vec_Counter_6 Sixth counter byte
$C834: Vec_RiseRun_Tmp Temp storage word for rise/run
$C836: Vec_Angle Angle for rise/run and rotation calculations
$C837: Vec_Run_Index Index pair for run
$C839: * Pointer to copyright string during startup
$C839: Vec_Rise_Index Index pair for rise
$C83B: * High score cold-start flag (=0 if valid)
$C83B: Vec_RiseRun_Len length for rise/run
$C83C: * temp byte
$C83D: Vec_Rfrsh Refresh time (divided by 1.5MHz)
$C83D: Vec_Rfrsh_lo Refresh time low byte
$C83E: Vec_Rfrsh_hi Refresh time high byte
$C83F: Vec_Music_Work Music work buffer (14 bytes, backwards?)
$C842: Vec_Music_Wk_A register 10
$C843: * register 9
$C844: * register 8
$C845: Vec_Music_Wk_7 register 7
$C846: Vec_Music_Wk_6 register 6
$C847: Vec_Music_Wk_5 register 5
$C848: * register 4
$C849: * register 3
$C84A: * register 2
$C84B: Vec_Music_Wk_1 register 1
$C84C: * register 0
$C84D: Vec_Freq_Table Pointer to note-to-frequency table (normally $FC8D)
$C84F: Vec_Max_Players Maximum number of players for Select_Game
$C850: Vec_Max_Games Maximum number of games for Select_Game
$C84F: Vec_ADSR_Table Storage for first music header word (ADSR table)
$C851: Vec_Twang_Table Storage for second music header word ('twang' table)
$C853: Vec_Music_Ptr Music data pointer
$C853: Vec_Expl_ChanA Used by Explosion_Snd - bit for first channel used?
$C854: Vec_Expl_Chans Used by Explosion_Snd - bits for all channels used?
$C855: Vec_Music_Chan Current sound channel number for Init_Music
$C856: Vec_Music_Flag Music active flag ($00=off $01=start $80=on)
$C857: Vec_Duration Duration counter for Init_Music
$C858: Vec_Music_Twang 3 word 'twang' table used by Init_Music
$C858: Vec_Expl_1 4 bytes copied from Explosion_Snd's U-reg parameters
$C859: Vec_Expl_2
$C85A: Vec_Expl_3
$C85B: Vec_Expl_4
$C85C: Vec_Expl_Chan Used by Explosion_Snd - channel number in use?
$C85D: Vec_Expl_ChanB Used by Explosion_Snd - bit for second channel used?
$C85E: Vec_ADSR_Timers ADSR timers for each sound channel (3 bytes)
$C861: Vec_Music_Freq Storage for base frequency of each channel (3 words)
$C85E: * Scratch 'score' storage for Display_Option (7 bytes)
$C867: Vec_Expl_Flag Explosion_Snd initialization flag?
$C868: Unused?
$C869: Unused?
$C86a: Unused?
$C86b: Unused?
$C86c: Unused?
$C86d: Unused?
$C86e: Unused?
$C86f: Unused?
$C870: Unused?
$C871: Unused?
$C872: Unused?
$C873: Unused?
$C874: Unused?
$C875: Unused?
$C876: Unused?
$C877: Vec_Expl_Timer Used by Explosion_Snd
$C878: Unused?
$C879: Vec_Num_Players Number of players selected in Select_Game
$C87A: Vec_Num_Game Game number selected in Select_Game
$C87B: Vec_Seed_Ptr Pointer to 3-byte random number seed (=$C87D)
$C87D: Vec_Random_Seed Default 3-byte random number seed
* $C880 - $CBEA is user RAM :
$CBEA: Vec_Default_Stk Default top-of-stack
$CBEB: Vec_High_Score High score storage (7 bytes)
$CBF2: Vec_SWI3_Vector SWI2/SWI3 interrupt vector (3 bytes)
$CBF2: Vec_SWI2_Vector SWI2/SWI3 interrupt vector (3 bytes)
$CBF5: Vec_FIRQ_Vector FIRQ interrupt vector (3 bytes)
$CBF8: Vec_IRQ_Vector IRQ interrupt vector (3 bytes)
$CBFB: Vec_SWI_Vector SWI/NMI interrupt vector (3 bytes)
$CBFB: Vec_NMI_Vector SWI/NMI interrupt vector (3 bytes)
$CBFE: Vec_Cold_Flag Cold start flag (warm start if = $7321)