Screen Machine 3.0D is a Czech/Slovak bitmap and font editor for the ZX Spectrum and compatible Didaktik computers. It provides direct screen drawing, magnified pixel editing, text composition, editable fonts and patterns, window transforms, single-level UNDO, tape or disk file operations, and installable printer drivers.
This repository preserves the supplied distribution media and provides a readable, fully named and heavily commented reconstruction of the complete machine-code system. The source is reconstructed from preserved binaries; it is not the original historical source code.
Building the repository reproduces the complete 25,856-byte editor core, all supplied printer and communications additions, the original TZX distribution, the installation and runnable D80 images, and directly runnable TAP/TZX media.
| Field | Value |
|---|---|
| Platform | ZX Spectrum 48K and Didaktik-compatible systems |
| Core load range | $7600-$DAFF |
| Core size | 25,856 bytes |
| Installed runtime base | $5E00 |
| Source modules | 21 address-ordered core modules |
| Historical additions | BT-100, GamaCentrum, Centronics STROBE A/B, ZX Interface 1 RS-232 |
| Preserved media | TZX distribution, installation D80, runnable D80, Czech manual |
| Runnable profile built by default | Czech / INTERNAL / BT-100 / DIDAKTIK |
| External build dependencies | None beyond Python 3.10+ |
Every core byte is represented as conventional Z80 source or explicitly typed bitmap, attribute, palette, workspace, residue, or reserve data. The canonical whole-program source assembles all modules in one symbol space and emits the same binary as the independent mechanical preservation source.
documentation/ stable architecture, build and hardware guides
original/ frozen original media and manual
extracted/ deterministic inventories and payloads used for exact checks
src/ authoritative Z80 source, BASIC payloads and immutable assets
tools/ assembler, media builders, emulator and verification tools
Makefile convenience targets
NOTICE.md preservation and rights notice
requirements.txt
The publication repository deliberately omits iteration changelogs, temporary analysis, review ledgers, progress reports and generated build products.
Start with src/README.md and
documentation/SOURCE-TREE.md.
- Python 3.10 or newer;
- GNU Make, optionally.
No third-party Python package and no external assembler are required.
The portable command is:
python3 tools/build.pyor:
make buildOn Windows PowerShell:
py tools/build.pyThe build stops at the first mismatch. It:
- assembles the mechanical preservation source;
- assembles all 21 semantic modules independently;
- assembles
src/core/screenmachine_semantic.asmas one complete program; - checks every core byte against the frozen reference;
- rebuilds and verifies all printer and communications variants;
- runs deterministic algorithm tests;
- executes boot, menu and editor round trips in the included Z80 runtime;
- reconstructs and checks the TZX, TAP and D80 media.
The main outputs are:
build/bin/sm30-core-semantic-7600.bin
build/screenmachine_semantic.sym
build/media/ScreenMachine-distribution-rebuilt.tzx
build/media/ScreenMachine-installation-rebuilt.d80
build/media/ScreenMachine-run.d80
build/media/ScreenMachine-run.tap
build/media/ScreenMachine-run.tzx
build/media/ScreenMachine-cs-internal-bt100-didaktik.tap
build/media/ScreenMachine-cs-internal-bt100-didaktik.tzx
build/emulator/workflow-report.json
build/emulator/*.scr
build/emulator/*.png
make verify is an alias for the full build. make clean removes generated
products.
25,856-byte core
26f52a8b2fb412188b890b2f8ccd73f8038492251148683f0d52ae1b9b29fc57
original/ScreenMachine.tzx
3d2d54baab549dc8bc23c4c1527b02797c3f23f9454569916642838f8f46788e
original/ScreenMachineInstall.d80
c8c79c9240ade645873e82cc0307a4bc5732ba717a5759820f660ad27056d1b3
original/ScreenMachineRun.d80
8334b6e5f05ebdafcedfdd5def86be1a1d69cfeec6d234d0047d2dcad25ede21
The canonical top level is:
src/core/screenmachine_semantic.asm
It composes the complete core in address order. Shared platform constants,
memory planes, state records and subsystem interfaces are defined under
src/include/. The source keeps original fixed-address behaviour, including
self-modifying operands and unusual stack transfers, because those details are
part of the program's ABI and timing model.
The alternative historical drivers are kept as independent source modules under
src/drivers/:
- BT-100 / Didaktik;
- BT-100 / UR4;
- GamaCentrum / Didaktik;
- GamaCentrum / UR4;
- Centronics STROBE-A;
- Centronics STROBE-B;
- ZX Interface 1 RS-232.
See documentation/ARCHITECTURE.md,
documentation/MEMORY-MAP.md and
documentation/PRINTER-AND-COMMUNICATIONS.md.
For the historical distributions, load one of the frozen images under
original/ in a suitable emulator or on compatible hardware.
For a directly runnable tape, build the repository and load:
build/media/ScreenMachine-run.tap
or:
build/media/ScreenMachine-run.tzx
The default directly runnable profile is Czech / INTERNAL / BT-100 / DIDAKTIK. The runnable disk image is:
build/media/ScreenMachine-run.d80
The repository preserves original behaviour, including edge cases that a modern
rewrite might change. Examples include the 256-entry fill queue ambiguity,
unchecked glyph and selector ranges, cursor acceleration wrap, transparent
SET-only window transforms, and several modal-input ordering quirks. These are
documented in documentation/KNOWN-BEHAVIOURS.md
and locked by deterministic tests where practical.
The original binaries, media and manual are included for software preservation,
research and interoperability. Rights remain with the respective authors and
rightsholders. See NOTICE.md.