Source review: October 11, 2026. Identify the console, cartridge, interface and expansion separately; similarly named BASIC releases do not have identical requirements.
Declare the target before building
Choose a stock console, a specific BASIC cartridge or a documented expanded-memory configuration. Write that choice into the project readme. Dave Nutting Associates' system description distinguishes low-resolution consumer hardware from high-resolution arrangements and documents the console's ROM, screen RAM and graphics hardware. A related arcade board or an advertised computer expansion is not automatically the same programming target. Preserve the relevant memory map with the source instead of treating a shared processor or brand name as sufficient compatibility.
Start with an existing small Z80 project
Rachel Weil's Astrocade repository provides original examples for text, sound and controller-driven color-boundary behavior. Its documented builds use the Zmac assembler and HVGLIB.H include file. Reproduce one example unchanged, retaining the assembler version, include file and build command. Other Z80 assemblers may accept different macros and syntax, so record any adaptation. Save the generated binary and its hash with the exact source revision before adding another graphics or input feature.
Understand the platform's graphics assumptions
The Nutting documentation explains that display storage, color mapping and the Magic System are part of the hardware's programming model. The stock display should not be treated as a modern framebuffer with unrestricted per-pixel color. Use a documented example to establish screen initialization and graphics boundaries, then change one parameter at a time. Keep working examples for text, a drawn shape and controller input. This is more informative than a large first project whose graphics, timing and memory assumptions all change together.
Use emulation as a recorded test environment
MAME's Bally home-console driver is a primary implementation reference and a practical development target. Select the intended system and software arrangement, and retain the MAME release, configuration and input mapping with test results. Map the rotary knob and keypad alongside joystick movement and trigger. For cassette programs, use a procedure compatible with the selected BASIC release; emulator support for one cartridge does not establish support for every expansion or recording. Compare the same build on real hardware when an appropriate cartridge or loading arrangement is available.
Publish the right kind of artifact
For BASIC, release the readable listing, interpreter requirements and tested tape or data format. For a ROM project, release the source, build instructions, binary identity, target memory assumptions and cartridge requirements. For an expansion-specific program, identify the exact extra hardware rather than labeling it generically as an Astrocade release. Credit examples and check their licenses individually. Keep original and modified versions of historical software distinct, and document visible changes. A useful bug report includes the source or image identity, selected machine, BASIC or cartridge revision, input mapping and a short sequence that reproduces the problem.
Sources and project documentation
- Rachel Weil: original Astrocade Z80 examples and development tools
- Dave Nutting Associates: original Bally system description
- MAME developers: Bally home-console driver source
- Bally Alley: original Bally BASIC and AstroBASIC manuals and author documentation
Continue with the Bally Astrocade directory.