Machine Language Source code for various programs, mostly cartridges are
available here. Some of the material is scanned, but a good portion of it has
been retyped and is ready to be assembled. Also, some of it has been dis-
assembled and commented. If you're a machine language programmer, then there
is a WEALTH of material here:
280 Zzzap / Dodgem
Partial (Incomplete) Disassembly.
Bally Mfg. Corp.
Programmed by Jay Fenton.
A preliminary Z80 disassembly of the 280 Zzzap / Dodgem cartridge. This is the first release of this code. It is very rough: some of the code has been disassembled and the car graphic pattern has been found. Most code is still not commented.
300 to 2000 BAUD Loader
(aka 300 Baud to 2000 Baud Tape Conversion Program)
By Jay Fenton.
This is the Z80 machine language source code for the 300 Baud to 2000 Baud Tape Conversion Program that is included on pages 104-107 of the "AstroBASIC" manual. This program loads 300-Baud audio tapes generated by the old version of Bally BASIC into the New and Improved version of "AstroBASIC," which utilizes 2000-baud recordings. Once a 300-baud program is loaded into "AstroBASIC," it can be saved in 2000-baud format.
This utility is meant to be loaded into "AstroBASIC" using the :RUN command (it will not run as a cartridge).
A ready-to-run version of this program is available:
This cartridge by Bally has been disassembled by Richard Degler.
How many times have you introduced someone to Amazing Maze on your Bally
machine, only to hear "What's all that it's doing at the bottom?" before
every game. When you say "It's still thinking." they ask "About what??"
Well, now you can show them with a copy of this X-RAY Mazing Maze binary.
This modified version of Amazing Maze shows what the computer
is thinking about instead of just the scratchpad area where it is working out
Now that you can see the maze being generated I've counted several times
how many generations of a route it takes for the computer to get one
that works. On the "Hard" level I've counted as high as 68 failed routes
and as low as four. I did this about six times and the average seemed to
be about fifty or so. So perhaps that generation of a good route after
four times was a fluke.
Give this program a try-- it's pretty neat to know what is going on
behind-the-scenes of the maze while it is being created.
Also modified slightly is the Tic-Tac-Toe game using circles (there's now
actually two different shapes) instead of re-using the square selector...
As you can see from the game logic AI, it knows it needs to block or win
when there are two of a kind in a row, but besides that it's just random.
"Arcadian RDOS 1.0"
By Stu Haigh
This is a CP/M compatible resident Disk Operating System. This code is designed to interface into the Cromemco software system and is provided with an autoload feature that will load track zero, sector zero of Drive A starting at RAM location 0080. Control will then be passed to the just loaded code at location 0080.
The code uses a 5501 as a COM. controller and a 1771 Flex Disk controller. It will support four 5 1/4", or two 5 1/4" and one 9", or two 9" disk drives.
The short letter that Stu wrote to Bob Fabris is available here:
Disassembly begun Aug. 1, 2011 by Adam Trionfo
Preliminary Release-- This disassembly is NOT considered finished and it may contain errors.
This is being released so that those who are curious can take a look at it.
This is the Bally ROM scans from the "Nutting Manual" and the code in ready-to-assemble format.
It includes the source for the 4K of System ROM, and the other 4K contain Checkmate, Calculator,
Gun Fight and Scribble.
The scans of the manual are not needed anymore now that the source-code has been retyped. It
is for archival and reference purposes. The "archive" version of the source code assembles to
the 8K Bally On-board ROM. It matches EXACTLY with the 3159 version. This version matches VERY
closely with the scanned "Nutting Manual" source code, so it is being kept for reference.
The "gold standard" version, created and updated by Richard Degler, is the updated assembly
source code for ALL THREE versions of the Bally System BIOS. It can be used to recreate any
version of the on-board ROMs. By changing the EQUate 0,1s in the first block marked
with "###"'s you can conditionally generate either the WHITE.bin or ASTRO.bin
(a.k.a BIOS3159.BIN) both known as "OVER" ROMs, in addition to version 0 BALLY.bin
(BIOS3164.BIN or "GAME OVER") from the same source code.
To understand the differences between these various versions of the On-Board ROMs, there
are two different documents to read:
2)Astrocade BIOS Comparision FAQ
By Adam Trionfo - (July 30, 2006) This is a comparison of the first two Astrocade BIOS that were dumped.
These two ROM BIOS have nicknames: 3159 ROM and White ROM. There are forty-one bytes that are different
between the two. They are listed here with brief comments followed by excerpts from the 3159 ROM
Listing to give greater detail.
This source code is for use with the BalCheck hardware. There is conditional assembly so that
it will assemble for the 3159 or the 3164 ROM. Two versions are available. The regular one, plus one that has a thouroughly commented memory test section by David Turner.
Disassembled by Richard Degler in March of 2010. This archive contains the
assembly source code for the BASIC Demo cart, information regarding the
changes made to the BASIC in the cart, a listing of the BASIC program in the Demo
cart and an explanation of Ken Lill's experiments getting the BASIC program to run
in Blue Ram BASIC.
aka Astrocade Pinball
Partial (Incomplete) Disassembly.
Bally Mfg. Corp.
Programmed by Bob Ogdon.
Audio by Scot Norris.
The idea to hack the tables in Bally Pin led to this disassembly of the game. Only about 2 1/2 hours were spent on version .01 of this disassembly. It's really just an example of how quickly progress can be made using some of the tools available on BallyAlley.com.
The current version has much more of the game disassembled. There are very few comments, but they'll be added as time permits.
Although this Decemeber 1980 assembly listing is labeled as "Bally BASIC," this source code listing actually matches byte-for-byte with the released version of AstroBASIC. AstroBASIC is the version of BASIC that has the tape input/output port included in the cartridge.
There are various versions of this listing available. They are:
AstroBASIC (Scan from 80-column paper) - The scanned version of AstroBASIC was printed on 8 1/2" x 11" paper in the 1980's. The line-width of the printed file was 120 columns, so anything over 80 characters printed at the beginning of the same line at position one. Very strange looking.
AstroBASIC (From Jamie Fenton's Disk) - Al Kossow from bitsavers.org sent me this 64-page AstroBASIC assembly listing on June 1, 2011. This was taken from Jamie Fenton's original December 1980 file from her original disks. The column width is 120, so make sure to turn off word-wrap to see this properly.
AstroBASIC (From Jamie Fenton's Disk) - This is a pdf created using Jamie's original file. This pdf can be printed on 8 1/2" x 11" paper in landscape format and it preserves the 64-page format. The font may be pretty small though. You may need to "scale to page" when you print as not to lose anything outside of your printer's margins.
"Gold Standard" Version - This source code was updated by Richard Degler for ease of reading and use. He added additional comments where he could. This is the version that you want to download and actually use.
"Archive" Version - This source code was retyped from the PDF version and changed to standard Z-80 mnemonics (the original mnemonics were VERY different). This version most closely matches the original source-code, though consider this for use for archival purposes only.
The PDF version was supplied by Brett Bilbrey. The version that can be assembled was created from scratch by Richard Degler using the AstroBASIC source-code as a model. He added additional comments where he could.
Richard Degler extracted the BALLY Basic keyboard driver for using the Blue Ram Keybaord
This disassembly is quite extensive and, like all of Richard's disassembly work, is very
well commented. Included in this archive are: KEYBOARD.PRG (the tape contents - not
really a program but direct commands), KEYBOARD.TXT (the raw Basic listing with a data block
in the middle), and KEYBOARD.ASM (the disassembly of the driver itself).
Most of the machine code was the same as in Blue Ram Basic 1.1 so I already had that commented. Also included the Basic text listing (commented) and a Key Map.
of BASIC was never released for the Astrocade-- it exists as an archived prototype only. This
version of the source code was created from scratch by Richard Degler using the AstroBASIC
source-code as a model. He added additional comments where he could.
Brickyard / Clowns - Videocade #2004
Programmed by Bob Ogdon, Audio by Scot Norris
Bally Mfg. Corp. - Action/Skills Series
Cartridge Disassembly begun in 2011 by Adam Trionfo.
The Bit Fiddlers, 1982.
Disassembly, Richard Degler, August 2013.
It's late... you've got to get your brood home in time to watch "Fowl Play." The only problem... there's six lanes of freeway between you and home. And every day it seems to get worse...
CHICKEN! is a one or two player game of skill. It pits each player against six lanes of highway of ever increasing traffic density. The object, of course, is to get your chickens across the road.
This is Richard Degler's disassembly of the Bit Fiddler's "Chicken (The Bit Fiddlers).bin." This game originally loaded via Bally BASIC, AstroBASIC or the "Machine Language Manager." This version of the binary will run as a cartridge.
A preliminary Z80 disassembly of the Cosmic Raiders cartridge. This is the second release of this code. It is still very rough, but much more of the code has been disassembled. Many of the graphic patterns have been found. Most code is still not commented. This code is being distributed to get some help/advice on certain aspects of the code.
Programmed by Michael Garber.
Riff Raff Games.
Released in 2011
This is the complete source code for the homebrew version of Crazy Climber, released by Riff Raff Games in 2011. This game was programmed by Michael Garber. Michael allowed the release of this source code on June 11, 2016. Thanks, Michael!
A complete disassembly of the Astrocade cartridge Dogpatch. Originally worked on by
Adam Trionfo in 2003 and left in an incomplete state. In 2008 Richard Degler took
the source-code and finished the disassembly. Both versions have been left online
for comparison purposes.
This is an incomplete machine language game written by Barry McCleave. The player in this D&D-type
game can wander around a maze, but there are no monsters. This is an interesting piece of what
might have become something interesting. As it stands, it is little more than a programming exercise.
The scanned pdf is an early version of the source code (August 10, 1981) for the Astrocade prototype "Fawn Dungeon." It has some handwritten notes. This 16-page version of the program does not work (the cowboy does not come onto the screen). Using this source-code and the final version of the working prototype, a completed sourcecode was created that assembles EXACTLY as the finished binary version.
Barry was in communication with Bob Fabris (the Arcadian newsletter editor) while he was
creating and revising his code. Bob had at least two revisions of "Fawn Dungeon" written
code, as well as two EPROMs with different versions of the binary on it. Included below are
some letters and EARLY code that Barry sent to Bob.
Here, Barry is toying with the idea of writing a "Dungeon's and Dragons" game and he thanks Bob
for sending him much-needed information on how to program the Bally Arcade in machine language.
Here is the first round of coarse code (which here is considered an alpha version). This was
included with Barry's second letter. This code is extremely early, crude and handwritten.
Bob's copy was a photocopy from Barry and this scan of it is barely legible.
It is clear that Bob didn't understand everything that Barry was talking about, and so he wrote
a letter to someone named "Al" and some or all of what Barry had sent to him to this presumable
Bally Arcade guru:
Goldfish Demo 1.0 is for the Bally Astrocade game console and the Machine
Language Manager cartridge. It won't run unless it is loaded from tape into Machine Language
Manager. The program is meant to reside at memory location $4B40.
In January 2008, Lance F. Squire converted the Goldfish Demo to run as a
cartridge. The binary for version 1.1 and the source-code for versions 1.2-1.4 are
included in one archive. Version 1.4 is the finished product; it runs perfectly.
Gorf Arcade Disassembly
Game written in TERSE by Jay Fenton, 1981.
Machine Language Disassembly by David Turner, 2018.
Gorf, is a fixed space shooter arcade game with five different screens. Jay Fenton designed and programmed Gorf for DNA (Dave Nutting Associates). It was published by Midway in 1981. Like Wizard of War, The Adventures of Robby Roto! (and others), Gorf uses what has been dubbed the "astrocade chipset".
In 2018, Jamie Fenton (formally Jay Fenton) donated documentation and hardware items to the Computer History Museum in Mountain View, CA. This included Gorf source code and other documentation related to the game. Gorf was not written in machine language, it was written in a Forth-like language called TERSE (Terse Efficient Recursive Stack Engine) that was developed at DNA.
After the TERSE source code for Gorf became available, David Turner, an avid fan of the game, began to use the game's source code to disassemble Gorf and comment it. Details of his work, as well as his in-progress Z80 disassembly for Gorf is in this archive. In Dave's notes, he refers to TERSE and Gorf related documents which are available at the BitSavers archive, here:
Gunfight: A Z80 Instruction by Instruction Breakdown
Michael Matte, 198x.
In the 1980s, Michael Matte, a passionate Astrocade user, used the Z80 source code listing for the 8K ROM, available in the "Nutting Manual," as a basis for his detailed breakdown of Gunfight. Michael created the breakdown "to provide beginner assembly or machine language programmers an inside look at the game Gunfight. The documentation will reveal how on-board subroutines in the System ROM can be used to execute particular tasks. The 'special routines' listing can be used as a reference source for programming demos or games."
The archive includes Michael Matte's complete, 42-page breakdown of the Astrocade game Gunfight. This breakdown will be most useful if used with the source code for the Bally's 8K system ROM, which is available in the "Nutting Manual."
Incredible Wizard, The
Disassembly, Version .05 (April 22, 2016)
This is a disassembly of the Wizard of Wor clone for the Astrocade called The Incredible Wizard. This disassembly was begun in November 2011 and has been worked on in fits and starts over the last few years. There is plenty of work that needs to be done, but this is a healthy beginning.
The last versions of The Incredible Wizard disassembly are available for reference or comparison purposes:
This is a disassembly of the "Muncher" cartridge that was done in the early 1980's. This seems to be the disassembly of Astrocade's "Pacman." The word "PAC-MAN" used for the system's on-board menu has been scratched out with pen and rewritten
as "MUNCHER." I'm not sure if there are any differences in the rest of the code-- it is possible.
The disassembly is 98-pages long with sparse comments. Since the scan is grayscale, the filesize is 43.5MB-- this is a large file. There is a smaller B&W version that is a about 5MB. For a quick look at the disassembly, or to print it, the B&W version is probably the better choice.
Also included here, in a separate archive, is the 8K hex listing for "Muncher (Pac-Man)."
Palo Alto Tiny BASIC, Version 3
By Li-Chen Wang.
Article excerpted from PCC's Reference Book of Personal And Home Computing, Edited by Dwight McCabe. 1977. Pages 58-88.
Bally BASIC (and "AstroBASIC") are a superset of the original Palo Alto Tiny BASIC.
This version of Li-Chen Wang's Palo Alto Tiny BASIC will run on either the 8080 or Z-80, and only uses 2K of core memory. It contains a number of nice features including command abbreviations and error messages. At the end of the listing is a cross reference table for symbols used in the program and also the object code for the program. For further information on Tiny BASIC languages, see Dr. Dobb's Journal, Volume 1.
This is a disassembly of the Bally / Astrocade cartridge "Seawolf/Missile" (Videocade #2002).
This game was programmed by Rick Spiece and released in 1977.
This partial disassembly was started by Adam Trionfo in 2011. The binary output matches
byte-for-byte with original cartridge release. Although only one day was spent working with
this file, a respectable amount of work was done and it seems worth sharing.
This Bally / Astrocade cartridge was programmed by Bob Odgon. This cartridge has been
disassembled by Adam Trionfo. Currently most of the graphics have been found and much of the program has been disassembled, but only a small portion of it has been commented.
This prototype game has been disassembled by Richard Degler. The prototype is 2K compared to the released version which is 4K.
Comments from Richard made on June 15, 2014:
"Counting two additional blocks of unused data/code, the total is 1100 bytes remaining in the released version. In the DEMO prototype, only THREE Invader bombs are active at the same time, and they do share the Player's straight shot pattern. The LEVEL is handled as if it were limited to 1 - 4 just missing the descriptions, and the Invaders are taller, resulting in the flickering feet of the middle rows. The UFO comes out slightly less often, but the scoring is still RANDOM 1- to 3- hundred points per hit, without displaying it next to the (missing) explosion."
This source code is for the Bally cartridge "Star Battle." The cartridge has been disassembled
by, possibly, Tom Woods in 1979. As it was included in the Bob Fabris collection without any
notes to who actually did it, it is impossible to know for sure. The source code, including
cross-reference and an opcode listing, is 30 pages.
In December 2011 the "Star Battle" ROM was disassembled and is available in text format. It is
ready to assemble and will match 100% with the cartridge ROM. The cartridge was disassembled
from scratch and it was only after it was nearly finished that the PDF version of the
disassembly was consulted. The text version is probably the preferred version for many people,
but the PDF does have some additional comments to offer.
This Bally BASIC program is from ARCADIAN, 4, no. 7 (May 7, 1982): 72-73. It has some machine
language routines in it and Richard Degler disassembled these routines. The information that he
gleaned from his investigation was used to create a quite extraordinary assembly file. This file
will NOT assemble into the original program in any way, but it gives SO much information about how "Stranded on Rigel 5" works.
Stweek was never officially released. Word has it that Scot Norris used this for programming
sound for the DNA (BALLY) carts. This is a very commented disassembly by Richard Degler.
This 23 page zip includes:
1) STWEEK Manual - Written by Richard Degler
2) STWEEK.asm - A complete disassembly of Stweek
3) Stweek_Discussion.txt - Posting compilation between Richard and Adam Trionfo.
4) Two songs that can be loaded in MESS.
The "complete" source code is a disassembly of the "Treasure Code" game
based on the "preliminary" version. This version matches 100% with the game ROM.
The "preliminary" version is the 27 pages of source code for Treasure Cove, as supplied by Brett
Bilbrey, the programmer of the cartridge. This preliminary version is not the final
version (that source code is not available). The preliminary source code has been retyped and
is available in a text version, but it will NOT run (see the file for details).
Richard Degler finished disassembling the Astrocade unreleased cartridge "Video Storybook"
as far as he plans to take it. There are still a lot of Variables and
Routines that are left unidentified, but someone filled up an entire 8K ROM
with some pretty twisted code, leaving only 132 bytes at the end.