Cartridges

In the Astrocade's memory map, 8KB ($2000–$3FFF) is allotted to interchangeable cartridges (otherwise known as cassettes or Videocades).

Cartridge Memory Diagram

System Sentinel

The system sentinel byte may be one of two values indicating the cartridge type: standard or autostart.

Standard

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:

  1. System RAM is cleared to 0
  2. The ACTINT interrupt routine is enabled
  3. The MENU colors are set in the left color map
  4. Vertical blank is set at line 96, horizontal boundary at 41, and interrupt mode at 8
  5. The screen displays the menu frame
  6. The shifter is cleared

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).

Autostart

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

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.

Cartridge Memory Structure

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]

Cartridge Series Numbers

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]