Machine code, Z80 & assemblers
Z80 machine code, assemblers, disassemblers, and low-level programming.
141 threads · 1388 messages · 2003-09-18 → 2026-09-14
Low-level work in the group is almost entirely a groups.io-era story, and much of it is reverse engineering. David Anderson spent two-plus years commenting the TS 2068 ROMs and in January 2023 published the most complete ROM disassembly yet (print via Amazon, PDF to archive.org), which became the standard reference alongside the SyncWare News ROM-call article and the function-dispatcher write-up. Adam Trionfo used disassembly as a way to learn the hardware: he worked through the QBert cartridge ROM (the game was never released on tape, so the ROM was the only source) with heavily commented UDG tables, and disassembled Dan Tandberg's Calliope Software Timeblasters* for the TS1000 with dz80 2.0 and Lua scripts, finding nearly 4K of Z80 code where Larry Lorenson had pegged it at $079-$E56. David also decoded John Oliger's disk DOS directory format byte by byte, with Eduardo Fuentes spotting that the FF side value is effectively a bug for 01 and identifying PD6.IMG as the Oliger Disk Manager.
On tools, period software got a second look: Softsync's Zeus assembler and Ray Kingsley's Hot Z 2068 (Carl Miles and Tim Swenson later puzzled over Hot-Z/Hi-Z breakpoints only working in single-step mode), Calliope's Rampager monitor (still unarchived), the Time Machine BASIC compiler, and Syd Wyncoop's Z80 article series with its Hex Loader. Modern cross tools took over day to day: zmakebas plus Tim Swenson's tsmake pre-processor for 2068 tokens, Pasmo (Ryan Gray found ZX81 code needs org $4082), z88dk for C, and Ryan's zx81-utils and Tim's zx81list for listing .P files. Jeff Burrell's Python tapToCart converted BASIC/AROS programs into DCK cartridges, and Ryan reworked QuickFont v2.3 to detect cartridge mode and relocate its machine code.
Practical recurring advice: protect machine code above RAMTOP with CLEAR (David's CLEAR 65019 let Bob Mitchell's FRAMES-driven Digital Clock run under other BASIC programs), and the 2068 has no bitwise operators, so either drop to machine code or use Ryan's DEF FN b(n,x) bit-test trick, which came up when Mike Druckenmiller polled 6850 serial status bits. The newest arc is Jon's AI-assisted demo coding: TSAnim's double-buffered four-frame player using the dual display files (about 8.3 fps), then in 2026 the TSVideoCodec 'SCLD Video Delta' codec producing extended-colour video as TAP or up-to-64K cartridge images with AY sound via audio2ay.
Several threads only drifted here: the UnoDos/SD-interface thread (an FPGA-based SD project that also detoured into the Bally Astrocade and command-syntax debates), the relay-board thread (bitwise speedups in BASIC), a Christmas greetings thread that became a LOAD "" CODE-in-ZEsarUX question, the RPG thread (z88dk), the Richard Booth math-book thread (Time Machine testing), the New Mexico Timex companies thread, Tape Programs on the TS Pico (Hot-Z breakpoints), and Eduardo Fuentes' Redcode-94 Core War port.
Key threads
- Grimm’s Fairy Trails (#1143 on groups.io) — Opens with David Anderson's announcement of the published TS 2068 ROM disassembly before drifting into ZX81 .P listing tools.
- Q*Bert on tape? (#1226 on groups.io) — Adam Trionfo's commented Z80 disassembly of the Q*Bert cartridge ROM, including how to lay out UDG data.
- Archiving "Timeblasters" by Calliope Software (#1056 on groups.io) — A worked disassembly of a TS1000 game with dz80 and Lua scripts, finding nearly 4K of machine code.
- Tetris for TS2068; was: Monitor And Dissembler TS2068? (#1117 on groups.io) — Covers which assemblers and monitors existed for the 2068 (Zeus, Hot Z) and saving machine code alongside BASIC.
- BASIC to cartidge (#1220 on groups.io) — Jeff Burrell's tapToCart tool for turning BASIC and machine code into DCK cartridge images, and QuickFont's cartridge relocation.
- Timex Programming Tools; was: Archiving 1983 'Timeblasters' (3-20-83 Version) by Calliope Software (#1065 on groups.io) — Discussion of disassemblers, BASIC-embedded machine code and the lost Rampager monitor.
- How to do Binary Comparison (BIT Test) in Timex Basic (#943 on groups.io) — Bit testing without bitwise operators: machine code versus Ryan Gray's DEF FN approach.
- Math help, please :) (#911 on groups.io) — Reverse engineering the Oliger DOS directory format, plus ZX81 assembly-to-BASIC parameter passing with Pasmo.
- TSAnim: Full motion video on the T/S 2068 (all 4 frames of it) (#468 on groups.io) — Jon's double-buffered dual-display-file animation player running at about 8.3 fps.
- TS2068 SCLD-aware video codec (#27 on groups.io) — The 2026 TSVideoCodec project: an SCLD-optimised delta video codec with AY sound, output as TAP or cartridge.
All threads (141)
↳ marks a thread where this topic begins mid-conversation — the link jumps to the message where it starts.