In the Astrocade's memory map, 8KB ($2000–$3FFF) is allotted to interchangeable cartridges (otherwise known as cassettes or Videocades).
The system sentinel byte may be one of two values indicating the cartridge type: standard or autostart.
The bulk of commercial Bally Arcade programs use the standard cartridge format, which transfers control to the program after game selection from the standard system menu. The system does considerably more initialization before control transfer:
A standard cartridge is indicated by a sentinel byte of $55 (or ASCII “U” for “User Mode”) at location $2000. Following this byte is the first node of the cartridge's menu data structure. This data structure gives the name and starting address of each program in the cartridge.
When the user selects a cartridge game, control transfers to the starting address with the address of the program name string in the registers. The cartridge program may then use the GETPAR system routine to prompt for game parameters (e.g., score to play to, game time limit, number of players).
An autostart cartridge bypasses the standard Bally startup menu and jumps directly to the programmer-specified location. The only initialization that is performed before entry is the setup of the stack pointer to point just below system RAM and the establishment of “consumer mode” in the custom chips. RAM is not altered in this mode.
An autostart cartridge is indicated by a jump instruction (opcode $C3) at location $2000. This jump instruction should branch to the starting address of the cartridge.
Treasure Cove is one of the few commercial Bally Arcade cartridges that uses the autostart structure to jump immediately to its title screen.
write description
Restart vectors use the Z80's restart (RST) instruction to provide small, efficient CALLs to commonly-accessed subroutines. Two restart vectors are used, for example, to jump to program start on system reset (RST 0H) and execute the onboard system routines (RST 38H). Cartridges have access to six unused RST instructions residing in memory between $2007–$201B: RST8, RST16, RST24, RST32, RST40, and RST48.
Executing any of these instructions causes the program to jump to a location in memory. At that location, the user executes a jump instruction to vector the program to a new location. RST instructions are useful for optimization because they require less space and time (1 byte, 11 cycles) than an equivalent CALL (3 bytes, 17 cycles). RST pushes the PC onto the stack, so you can return with a RET call, and RST does not alter flags.
The Bally Arcade's reserved restart vectors are optional. Any unused vectors may be used for normal program memory.
Location | Contents | |
---|---|---|
2000 | 55 | C3 |
2001,2 | *Address of next menu table | RST0 or RESET jumps to 2000 immediately after DI and outputs 00 to port 08. |
2003,4 | Address of this menu string literal | |
2005,6 | Address to jump to if selected |
2007 | RST 8 jumps here. | |
200A | RST 16H jumps here. | |
200D | RST 24H jumps here. | |
2010 | RST 32H jumps here. | |
2013 | RST 40H jumps here. | |
2016 | RST 48H jumps here. | |
2019 | Player input routine (SENTRY) jumps here if location $4FFA contains 0AAH. [???] |
*0218 = First onboard menu, 0000 = last menu.
Reference: Bally On-Board ROM Subroutines [PDF]
Number | Title | ROM Size | Release Date |
---|---|---|---|
Action / Skills Series | |||
#2001 | Zzzap / Dodgem | 2K | 1978 |
#2002 | Sea Wolf / Missile (aka Sea Wolf / Bombardier) | 2K | 1977 |
#2003 | Panzer Attack / Red Baron | 4K | 1978 |
#2004 | Clowns / Brickyard | 4K | 1978 |
#2005 | Star Battle | 2K | 1979 |
#2006 | Space Invaders (aka Astro Battle) | 4K | 1979 |
#2007 | Bally Pin | 4K | 1979 |
#2008 | Space Invaders (aka Astro Battle) | 4K | 1979 |
#2009 | Space Invaders (aka Astro Battle) | 4K | 1979 |
#2010 | Dogpatch | 2K | 1980 |
#2011 | Galactic Invasion (aka Galaxian) | 4K | 1981 |
#2012 | Space Fortress | 4K | 1981 |
#2014 | Grand Prix / Demolition Derby | 4K | 1981 |
#2015 | Pirate's Chase | 4K | 1982 |
#2016 | Skiing [unreleased] | ||
#2017 | The Incredible Wizard | 8K | 1982 |
#2018 | Solar Conqueror | 8K | 1983 |
#2019 | Cosmic Raiders | 8K | 1983 |
#2020 | Missile Attack [prototype] | 4K | 1985 |
Sports Series | |||
#3001 | Tornado Baseball / Tennis / Hockey / Handball | 4K | 1978 |
#3002 | Football | 4K | 1978 |
#3004 | Desert Fox / Drag Race [unreleased] | ||
#3005 | Astrocade Pinball (same as Bally Pin) | 4K | 1981 |
#3006 | Bowling [prototype] | 4K | 1985 |
#3007 | Soccer / Dribbling | 8K | 1985 |
Educational Series | |||
#4001 | Elementary Math / Bingo Math | 2K | 1978 |
#4002 | Letter Match / Spell 'n Score / Crosswords | 4K | 1978 |
#4003 | Music Maker [prototype] | 8K | 1985 |
#4004 | BioRhythm | 4K | 1981 |
#4005 | Creative Crayon (aka Coloring Book) [prototype] | 8K | |
Strategy Series | |||
#5001 | Amazin' Maze / Tic-Tac-Toe | 2K | 1979 |
#5002 | Black Jack / Poker / Acey-Deucey | 4K | 1979 |
#5003 | Checkers / Backgammon [unreleased] | ||
#5004 | Conan the Barbarian (aka Quest for the Orb) [prototype] | 8K | |
#5005 | Artillery Duel | 4K | 1982 |
Functional Series | |||
#6001 | Dealer Demo | 4K | 1978 |
#6002 | Bally BASIC | 4K | 1978 |
#6004 | Bally BASIC (w/ tape interface) | 4K | 1981 |
List adapted from the Bally/Astrocade Game Cartridge and Hardware FAQ
[NM:72–4]