System ROM

The first 8K of the Astrocade's memory map ($0000-$1FFF) is dedicated to system ROM, which contains the operating system and the four built-in programs: Scribbling, Calculator, Checkmate, and Gunfight.

The end of the Nutting Manual contains the complete 8K ROM Source Listing. Its table of contents reads as follows:

Name Pages ROM Memory
Home Video Game Equates 2–15
System Routines 16–94 $0000
Scribbling 1–17 $0E19
Calculator 1–20 $1020
Checkmate 1–30 $1328
Gunfight 1–46

System Dope Vector

; Stuff in SYSTEM DOPE VECTOR (valid for ALL system ROMs):
STIMER  EQU     $0200   ; Seconds and game TIMER, music
CTIMER  EQU     $0203   ; Custom TIMERs
FNTSYS  EQU     $0206   ; FoNT descriptor for SYStem font
FNTSML  EQU     $020D   ; FoNT descriptor for SMaLl font
ALKEYS  EQU     $0214   ; ALl KEYS keypad mask
MENUST  EQU     $0218   ; head of onboard MENU STart
MXSCR   EQU     $021E   ; address of 'MaX SCoRe' text string
NOPLAY  EQU     $0228   ; address of 'Number Of PLAYers' string
NOGAME  EQU     $0235   ; address of 'Number Of GAMEs' string

System RAM Memory Cells

System RAM memory definitions are located at $4FC8–4FFD in the Nutting Manual source listing (p. 14–15).

So it's possible to squash these definitions if user program overwrites these RAM areas??

; ***************************
; ***************************
SYSRAM  EQU     $4FCE   ; Resides at the highest possible address
BEGRAM  EQU     SYSRAM  ; typically used for initial Stack Pointer
MUZPC   EQU     $4FCE   ; MUSic Program Counter
MUZSP   EQU     $4FD0   ; MUSic Stack Pointer
PVOLAB  EQU     $4FD2   ; Preset VOLume for tones A and B
PVOLMC  EQU     $4FD3   ; Preset VOLuMe for tone C and Noise Mode
VOICES  EQU     $4FD4   ; music VOICES mask
CT0     EQU     $4FD5   ; Counter Timer 0
CT1     EQU     $4FD6   ; Counter Timer 1
CT2     EQU     $4FD7   ; Counter Timer 2
CT3     EQU     $4FD8   ; Counter Timer 3
CT4     EQU     $4FD9   ; Counter Timer 4
CT5     EQU     $4FDA   ; Counter Timer 5
CT6     EQU     $4FDB   ; Counter Timer 6
CT7     EQU     $4FDC   ; Counter Timer 7
;Used by SENTRY to track controls:
CNT     EQU     $4FDD   ; Counter update & Number Tracking
SEMI4S  EQU     $4FDE   ; SEMAPHORE flag bitS
OPOT0   EQU     $4FDF   ; Old POT 0 tracking byte
OPOT1   EQU     $4FE0   ; Old POT 1 tracking byte
OPOT2   EQU     $4FE1   ; Old POT 2 tracking byte
OPOT3   EQU     $4FE2   ; Old POT 3 tracking byte
KEYSEX  EQU     $4FE3   ; KEYS-EX tracking byte
OSW0    EQU     $4FE4   ; Old SWitch 0 tracking byte
OSW1    EQU     $4FE5   ; Old SWitch 1 tracking byte
OSW2    EQU     $4FE6   ; Old SWitch 2 tracking byte
OSW3    EQU     $4FE7   ; Old SWitch 3 tracking byte
COLLST  EQU     $4FE8   ; COLset LaST address for P.B. A
; Used by STIMER:
DURAT   EQU     $4FEA   ; note DURATion
TMR60   EQU     $4FEB   ; TiMeR for SIXTY'ths of sec
TIMOUT  EQU     $4FEC   ; TIMer for blackOUT
GTSECS  EQU     $4FED   ; Game Time SECondS
GTMINS  EQU     $4FEE   ; Game Time MINuteS
; Used by MENU:
RANSHT  EQU     $4FEF   ; RANdom number SHifT register
NUMPLY  EQU     $4FF3   ; NUMber of PLaYers
ENDSCR  EQU     $4FF4   ; END SCoRe to 'play to'
MRLOCK  EQU     $4FF7   ; Magic Register LOCK out flag
GAMSTB  EQU     $4FF8   ; GAMe STatus Byte
PRIOR   EQU     $4FF9   ; PRIOR music protect flag
SENFLG  EQU     $4FFA   ; SENtry control seizure FLaG
; User UPI Routines, even numbers from $80 to $FE ( + 1 for SUCK):
UMARGT  EQU     $4FFB   ; User Mask ARGument Table + (routine / 2)
USERTB  EQU     $4FFD   ; USER Table Base + routine = JumP address
URINAL  EQU     $4FFF   ; WASTER flushes here!