The Bally Astrocade, also called Bally Arcade and originally named Bally ABA-1000, is a 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 announced in October 1977 as the "Bally Home Library Computer" 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 sold for only a short time before Bally decided to stop selling it. Later, another company took over the rights and sold the console until about 1984.
The Astrocade is well-known for having very strong graphics features for its time, but these features were difficult to use.
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 developed by Nutting was used in many of Midway's popular arcade games from that time, such as Gorf and Wizard of Wor. The chip supported a screen resolution of 320×204 with four colors per line, which was considered high quality for that era. However, using this mode required faster memory than the typical 2 MHz dynamic RAM available at the time.
This system was originally 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 be delivered until 1978, and it was then renamed the Bally Professional Arcade. It was mostly sold in computer stores and had limited availability compared to the widely sold Atari VCS. In 1979, Bally became less interested in the arcade market and decided to sell its Consumer Products Division, including the game console.
Around the same time, a third-party group tried to sell their own console called the Astrovision but failed. A corporate buyer from Montgomery Ward connected the two groups, and a deal was made. In 1981, the system was re-released with a free BASIC cartridge and renamed the Bally Computer System. In 1982, it was renamed again to Astrocade. It was sold under this name until the video game crash of 1983 and was no longer available by 1985.
Midway had planned to release an expansion system for the Astrocade 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," and by 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. It was originally designed for the home computer market but was later changed to a system for creating high-quality graphics on videotape. The UV-1 was sold between 1980 and 1982, but the exact number of units produced is unknown.
Description
The system used a Zilog Z80 processor to control the display chip, with a RAM buffer between them. The display chip had two modes: low-resolution (160 × 102) and high-resolution (320 × 204). Both modes used 2 bits per pixel to show four colors. The high-resolution mode required faster memory access than typical RAM of the time could provide. To solve this, the system used a method called "page mode addressing," which allowed the display chip to read one line of data at a time quickly into its own buffer. This line could then be sent to the screen more slowly, reducing interference with the CPU, which also used the same memory.
On the Astrocade, the pins needed for this method were not connected, so the system could only use the low-resolution mode (160 × 102). This mode used 160 × 102 × 2 bits = 4080 bytes of memory for the screen. Since the system had only 4096 bytes (4 kiB) of RAM, very little memory remained for other tasks like storing game scores or settings. The rest of the program had to be stored in ROM.
The Astrocade used color registers, or color indirection, to select four colors from a palette of 256. Color animation was achieved by changing register values. A horizontal blank interrupt allowed color changes from line to line. An additional set of four color registers could be activated at any point along a line, creating two vertical screen halves. This feature, originally meant for displaying a score area, was also used by programmers to simulate an 8-color mode.
Unlike the VCS, the Astrocade did not have hardware sprites. However, it included a blitter-like system and software to manage it. Memory above 0x4000 was used for the display, while memory below was for ROM. If a program wrote to the ROM area (normally not allowed, as ROM is "read only"), the video chip would take the data, apply a function like XOR or bit-shift, and copy the result to RAM. This allowed the system to create any number of sprite-like objects through software, though the software had to redraw them when they moved.
The Astrocade was an early cartridge-based system, using cartridges called Videocades designed to resemble cassette tapes in size and shape. The system included two built-in games (Gunfight and Checkmate), along with a calculator and a drawing program called Scribbling. Most cartridges contained two games, and inserting a cartridge would reset the system to display a menu listing the cartridge’s programs followed by the four built-in programs.
The Astrocade had a complex input device with multiple controls: a pistol-style grip with a trigger, a 4-switch/8-way joystick on top connected to a potentiometer (allowing rotation as a paddle controller), and a 24-key "hex-pad" keyboard on the front for selecting games, options, and using the calculator. Ports on the back included connectors for power, controllers, and expansion. The top rear of the unit had an empty space that could hold up to 15 cartridges. The system’s ability to upgrade to a personal computer and its library of nearly 30 games in 1982 made it more versatile than competitors. It was listed by Jeff Rovin 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 system was challenging because the display used most of the available RAM. To solve this, the BASIC program code was stored in the video RAM. This was done by mixing every bit of the program with the display data. BASIC used the even-numbered bits, while the display used the odd-numbered bits. The interpreter read two bytes, removed the odd-numbered bits, and combined the remaining bits into one byte of code. This method was hidden by making two colors appear the same on the screen, 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 1,760 bytes of RAM for BASIC programs. However, this limited the graphics system’s capabilities.
Programs were entered using a calculator keypad with a plastic overlay showing letters, symbols, and BASIC keywords. These were selected using four colored shift keys. 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 that already existed in a program, pressing the PAUSE key would load the next character from memory.
An Astro BASIC program that later became commercial was Artillery Duel. John Perkins first wrote the game and submitted it to The Arcadian fanzine. It was then adapted for the Astro BASIC manual. Perkins later created 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 (no 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)
- Built-in variables (write only): SM= (scroll mode), TV= (display ASCII character)
- Built-in variables (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 were controlled by the keypad instead of keywords. For example, the RESET button worked like the NEW command in other interpreters.
The language supported 26 integer variables labeled A to Z. It also included two predefined arrays: @() (stored starting after the program, ascending) and *() (stored from the top of memory, descending). Arrays did not require a DIM statement, and their size depended on available memory (SZ), with 2 bytes used per item. Ports were accessed through the array &(), and memory was accessed through the array %(), instead of using PEEK and POKE. The language did not support strings, but KP provided the ASCII value of a key press, which could be sent to TV to display characters.
The character display had 11 lines of 26 characters each. Graphic commands had 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:
- The PRINT command produced a unique tone for each character or keyword displayed.
- The MU variable converted numbers into musical notes.
- Ports 16 through 23 connected to a music synthesizer.
- 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. The program read: "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 showed how keywords, which were stored as special symbols, were always displayed with a following space.
ZGRASS
The ZGRASS unit connected to the Astrocade and made it function like a real computer. It included a full keyboard, a special math part (FPU), 32k of RAM, and a new 32k ROM with the GRASS programming language (also known as GRAFIX on this device). The unit also added ports for connecting a cassette and floppy disk, allowing the system to work with CP/M.
Reception
Games magazine listed the Bally Professional Astrocade in their "Top 100 Games of 1981," and mentioned that "Our favorite cartridges are the classic Gunfight, Red Baron air war, and Demolition Derby."
In 1983, Danny Goodman of Creative Computing Video & Arcade Games said that Astrocade "had one of the best graphics and sound packages of any home video game system."
Specifications
- CPU: Zilog Z80, 1.789 MHz
- RAM: 4 kilobytes (up to 64 kilobytes if using external modules in the expansion port)
- ROM: 8 kilobytes
- Cart ROM: 8 kilobytes
- Expansion: 64 kilobytes 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 because it 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 play square waves. The chip also has 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, changing the range of frequencies available for the square wave channels.
- 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 to be controlled by hardware instead of software.
- Resolution: True 160×102 / Basic 160×88 / Expanded RAM 320×204
- Colors: True 8 / Basic 2. The Bally’s bitmap structure only allows 4 color settings. However, using 2 color palettes and a left/right boundary control byte, the left section of the screen (such as the play field) can use one set of colors, while the right section (such as score or lives) can use a different set, allowing up to 8 colors to appear 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 these games were included together on several cartridges.
- Bally BASIC
- Dealer Demo
- Machine Language Manager
- Calculator
- Scribbling
- Conan the Barbarian
- Mazeman
- Soccer
- Fawn Dungeon
- Blast Droids (1983) (Esoterica)
- Blue Ram BASIC (1981)
- ICBM Attack (1982) (Spectre Systems) With the Spectre Systems handle
- Mazeman (1984)
- Muncher (1983)
- Sneaky Snake (1983) (New Image)
- Treasure Cove (1983) (Spectre Systems)
- Lootera (2025)
- War
- Crazy Climber