The Bally Astrocade, also called Bally Arcade and originally named Bally ABA-1000, was a second-generation home video game console and basic computer system created by a team at Midway, which was the video game division of Bally at that time.
It was first introduced as the "Bally Home Library Computer" in October 1977 and became available for mail order in December 1977. Because of delays in production, the console was first sold in stores in April 1978, and its name was changed to "Bally Professional Arcade." It was marketed for only a short time before Bally decided to stop selling it. Later, a third-party company took over the rights and continued to sell it until about 1984.
The Astrocade is known for having very strong graphics for its time, but using those features was challenging.
History
In the late 1970s, Midway hired Dave Nutting Associates to create a video display chip that could work in all of their video game systems, including standup arcade games and a home computer system. The chip Nutting developed was used in many of Midway’s popular arcade games from that time, such as Gorf and Wizard of Wor. The chip supported a resolution of 320 by 204 pixels with four colors on each line, which was considered high quality for that era. However, using this mode required faster memory than the common 2 MHz dynamic RAM available at the time.
The system was first called the Bally Home Library Computer and was released in 1977, but it was only sold through mail order. Production delays caused the system to not ship until 1978, and it was then renamed the Bally Professional Arcade. It was sold mostly in computer stores and had limited retail availability, unlike the widely sold Atari VCS. In 1979, Bally became less interested in the arcade market and sold its Consumer Products Division, including the game console.
Around the same time, a third-party group tried to release their own console called the Astrovision but failed. A corporate buyer from Montgomery Ward connected the two groups, and they reached an agreement. In 1981, the system was re-released with a free BASIC cartridge and named the Bally Computer System. It was later renamed Astrocade in 1982 and sold under this name until the video game crash of 1983. The system disappeared around 1985.
Midway had planned to release an expansion system for the console called the ZGRASS-100. This system was being developed by a group of computer artists at the University of Illinois at Chicago, called the "Circle Graphics Habitat," along with programmers at Nutting. Midway believed that adding this external system would make the Astrocade more appealing to buyers. However, the system was not ready for release when Bally sold the division. A few units may have been made later as the ZGRASS-32 after Astrovision re-released the console.
The ZGRASS system, later combined into a single box, was eventually released as the Datamax UV-1. Originally intended for the home computer market, the UV-1 was later redesigned for producing high-quality graphics on videotape. It was sold between 1980 and 1982, but the exact number of units produced is unknown.
Description
The system used a Zilog Z80 microprocessor to control the display chip, with a RAM buffer between them. The display chip had two modes: low-resolution (160 × 102 pixels) and high-resolution (320 × 204 pixels). Both modes used 2 bits per pixel, allowing four colors. The high-resolution mode required more memory than available at the time, as the RAM could not transfer data quickly enough. To solve this, the system used page mode addressing, which allowed it to read one line of data at a time into the display chip’s buffer. This enabled the line to be displayed more slowly while reducing interference with the CPU, which also used the same memory.
On the Astrocade, the pins needed for this method were not connected, so it could only use the low-resolution mode (160 × 102 pixels). This mode required 4080 bytes of memory for the screen. Since the system had only 4 kilobytes (4096 bytes) of RAM, very little space remained for programs, such as score tracking or game settings. Most programs were stored in ROM instead.
The Astrocade used color registers, which let programmers choose from 256 colors for the four available. Color changes could be made line by line using a horizontal blank interrupt. An extra set of color registers allowed two vertical screen halves, originally for displaying a score area but also used to create an 8-color effect.
Unlike the VCS, the Astrocade did not have built-in hardware for moving images (sprites). Instead, it used a blitter-like system and software to handle graphics. Memory above 0x4000 was reserved for the display, while memory below was used for ROM. If a program wrote to the ROM area (normally read-only), the video chip would process the data using a function stored in a register, such as XOR or bit-shift, and copy the result to RAM. This allowed software to create sprite-like objects independently of hardware, though the software had to redraw them when they moved.
The Astrocade was an early cartridge-based system, using cartridges called Videocades shaped like cassette tapes. It included two built-in games (Gunfight and Checkmate), a calculator, and a drawing program (Scribbling). Most cartridges contained two games, and inserting one would reset the system to display a menu with the cartridge’s programs and the four built-in options.
The Astrocade’s controller had a pistol-shaped grip with a trigger, a 4-switch/8-way joystick on top connected to a potentiometer (for paddle control), and a 24-key hex-pad keyboard on the front for selecting games and using the calculator. Ports on the back included power, controller, and expansion connections. The top rear had an empty compartment that could hold up to 15 cartridges. Its ability to upgrade to a personal computer and its library of nearly 30 games in 1982 made it more versatile than competitors. Jeff Rovin listed it as one of the seven major video game suppliers.
Astro BASIC
The Astrocade included a BASIC programming language cartridge created by Jamie Fenton. This version of BASIC was based on Li-Chen Wang’s Palo Alto Tiny BASIC and was first released as Bally BASIC in 1978.
Creating a BASIC interpreter on the Astrocade was difficult because the display used nearly all the system’s available memory. To solve this, programmers stored BASIC code in the video RAM. This was done by mixing program bits with display data. BASIC used the even-numbered bits, while the display used the odd-numbered bits. The interpreter would read two bytes, remove the odd-numbered bits, and combine the remaining bits into one byte of code. This method worked by making two colors on the screen identical, so changes to the BASIC bits did not affect the display. Additional memory was saved by reducing the number of vertical lines from 102 to 88, freeing up 1760 bytes of RAM for BASIC programs. However, this limited the graphics system’s capabilities.
Programs were typed using a calculator keypad with a plastic overlay showing letters, symbols, and BASIC keywords. A set of 4 colored shift keys was used to select these characters. For example, pressing the "WORD" (gold) shift key and then the "+" key would produce the word "GOTO."
A simple line editor was available. After typing a line number from an existing program, pressing the PAUSE key would load the next character from memory.
A BASIC program called Artillery Duel later became commercially available. John Perkins first created the game and sent it to The Arcadian fanzine. The game was then adapted for the Astro BASIC manual. Perkins later developed the Astrocade cartridge version of the game.
Astro BASIC supported these keywords:
- Commands: LIST, RUN, STOP, TRACE
- Statements: PRINT, INPUT
- Structure: GOTO, GOSUB, RETURN, IF (without THEN or ELSE), FOR-TO-STEP/NEXT
- Graphics: BOX, CLEAR, LINE
- Tape Commands: :PRINT, :INPUT, :LIST, :RUN
- Functions: ABS(), CALL(), JX() (joystick horizontal position), JY() (joystick vertical position), KN() (knob status), PX(X,Y) (pixel on/off), RND(), TR() (trigger status)
- Built-in variables:
- Read-only: KP (key press), RM (remainder of last division), SZ (memory size), XY (last LINE position)
- Write-only: SM= (scroll mode), TV= (display ASCII character)
- Read/write: BC (background color), CX CY (cursor position), FC (foreground color), NT (note time)
- Math: +, -, ×, ÷
- Relational operators: <, >, =, <=, >=, # (not equal)
- Logical operators: × (AND), + (OR)
A period (.) at the start of a line acted like the REM command in other BASIC versions. Some commands, like RESET, were handled by the keypad instead of keywords.
Astro BASIC supported 26 integer variables labeled A to Z and two pre-defined arrays: @() (stored starting after the program, ascending) and *() (stored from the top of memory, descending). Arrays were not defined using a DIM statement; their size depended on available memory (SZ) not used by the program (2 bytes per item). Ports were accessed via the array &(), and memory was accessed via the array %(), instead of using PEEK and POKE. The language did not support strings, but KP could store the ASCII value of a key press, which could be displayed using TV.
The screen showed 11 lines of 26 characters each. Graphic commands used a resolution of 88×160, with X ranging from -80 to 79 and Y ranging from -44 to 43.
Music could be created in four ways:
1. The PRINT command made a unique tone for each character or keyword displayed.
2. The MU variable converted numbers into musical notes.
3. Ports 16 through 23 connected to a music synthesizer.
4. Sound-synthesizer variables included MO (master oscillator), NM (Noise Mode), NV (Noise Volume), TA (Tone A), TB (Tone B), TC (Tone C), VA (Voice A volume), VB (Voice B volume), VC (Voice C volume), VF (Vibrato Frequency), VR (Vibrato). These were added to Astro BASIC but not in Bally BASIC.
A sample program from the manual demonstrated joystick input and graphics functions: "Try your skill… The first player’s knob moves the phaser left or right and the trigger shoots… Player two controls the target while player one shoots."
This example shows how keywords, which were tokenized, always appeared with a space after them.
ZGRASS
The ZGRASS unit connected to the Astrocade and turned it into a complete computer. It included a full keyboard, a math co-processor (FPU), 32k of RAM, and a new 32k ROM that included the GRASS programming language (sometimes called GRAFIX on this machine). It also added input and output ports for a cassette and floppy disk, allowing it to work with CP/M.
Reception
Games magazine listed the Bally Professional Astrocade in their "Top 100 Games of 1981." The magazine mentioned that the most popular game cartridges included Gunfight, Red Baron air war, and Demolition Derby.
In 1983, Danny Goodman of Creative Computing Video & Arcade Games said the Astrocade "has some of the best graphics and sound of any home video game."
Specifications
- CPU: Zilog Z80, 1.789 MHz
- RAM: 4 kB (can be expanded to 64 kB using external modules connected to the expansion port)
- ROM: 8 kB
- Cart ROM: 8 kB
- Expansion: 64 kB total
- Ports: 4 controller ports, 1 expansion port, 1 light pen port
- Sound chip model: 0066-117XX, also known as the Music Processor, or a custom I/O chip since the sound chip also handles input and output functions.
- Channel capabilities: There are 3 square wave channels, each with 8-bit pitch accuracy (256 possible frequencies). All channels can produce square waves. The chip also includes a noise generator, which can operate independently or combine with the master oscillator that controls the 3 square wave channels. The master oscillator can be set to different frequencies, allowing the range of frequencies for the square wave channels to change.
- Volume control: Each channel has its own 4-bit volume control.
- Miscellaneous features concerning sound: Hardware registers control vibrato, with 2 bits for vibrato speed and 6 bits for vibrato depth. This allows vibrato effects to be managed by hardware instead of software.
- Resolution: True 160×102 / Basic 160×88 / Expanded RAM 320×204
- Colors: True 8 / Basic 2. The bitmap structure of the system allows for 4 color settings. However, using 2 color palettes and a left/right boundary control byte, the left side of the screen (such as the play field) can use one set of colors, while the right side (such as displays for lives and score) can use a different set, allowing up to 8 colors to appear on the screen at once.
- Graphic type: Bitmap, 2 bits per pixel bitmap.
Game library
There are 41 officially released video games for the system, along with two cartridges used for creating games. Many of the games were included together on multiple cartridges.
- Bally BASIC
- Dealer Demo
- Machine Language Manager
- Calculator
- Scribbling
- Conan the Barbarian
- Mazeman
- Soccer
- Fawn Dungeon
- Blast Droids (released in 1983 by Esoterica)
- Blue Ram BASIC (released in 1981)
- ICBM Attack (released in 1982 by Spectre Systems) with the Spectre Systems logo
- Mazeman (released in 1984)
- Muncher (released in 1983)
- Sneaky Snake (released in 1983 by New Image)
- Treasure Cove (released in 1983 by Spectre Systems)
- Lootera (released in 2025)
- War
- Crazy Climber