Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screen Machine 3.0D for ZX Spectrum and Didaktik

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.

At a glance

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.

Repository layout

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.

Requirements

  • Python 3.10 or newer;
  • GNU Make, optionally.

No third-party Python package and no external assembler are required.

Build and verify

The portable command is:

python3 tools/build.py

or:

make build

On Windows PowerShell:

py tools/build.py

The build stops at the first mismatch. It:

  1. assembles the mechanical preservation source;
  2. assembles all 21 semantic modules independently;
  3. assembles src/core/screenmachine_semantic.asm as one complete program;
  4. checks every core byte against the frozen reference;
  5. rebuilds and verifies all printer and communications variants;
  6. runs deterministic algorithm tests;
  7. executes boot, menu and editor round trips in the included Z80 runtime;
  8. 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.

Exact preservation fingerprints

25,856-byte core
26f52a8b2fb412188b890b2f8ccd73f8038492251148683f0d52ae1b9b29fc57

original/ScreenMachine.tzx
3d2d54baab549dc8bc23c4c1527b02797c3f23f9454569916642838f8f46788e

original/ScreenMachineInstall.d80
c8c79c9240ade645873e82cc0307a4bc5732ba717a5759820f660ad27056d1b3

original/ScreenMachineRun.d80
8334b6e5f05ebdafcedfdd5def86be1a1d69cfeec6d234d0047d2dcad25ede21

Source architecture

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.

Running Screen Machine

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

Known original behaviours

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.

Preservation and rights

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.

About

Historical bitmap and font editor for the ZX Spectrum

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages