Skip to content

oldcompcz/Desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proxima DESKTOP for the ZX Spectrum

DESKTOP is a WYSIWYG word processor for the Sinclair ZX Spectrum and compatible computers (such as the Didaktik). It is a program of Czech origin, created by Tomáš Vilím, who wrote it under the pseudonym Universum. The program was published by Proxima – Software v. o. s. Unlike other text editors for the ZX Spectrum from that era, DESKTOP uses a proportional font; up to four fonts can be used in the text (however, it is not possible to use different styles for each font—a separate font must be used for each style). The program was bundled with three other programs:

  • Convertor — for converting text from the programs Tasword, D-Text, R-Text, D-Writer, and Textmachine into Desktop,
  • Fonteditor — for editing fonts, creating headings, and converting color images to grayscale,
  • Screen Top — allows you to edit images up to 512 × 384 dots in size (2 × 2 ZX Spectrum screens).

This repository preserves the complete original DESKTOP distribution tape and provides a readable, fully named and heavily commented reconstruction of its installer, resident editor, output drivers, FONTEDITOR, CONVERTOR and SCREENTOP.

The source is a clean-room decompilation of preserved binaries, not the original historical source code. Building the repository reproduces the protected installer payload and the complete 43-file Desktop.tap byte for byte.

At a glance

Field Value
Platform ZX Spectrum 48K
Product Proportional text editor and installation environment
Installer load address 24200 ($5E88)
Installed editor entry 48200 ($BC48)
Installed editor core 34,784 bytes ($5E88-$E667)
Full runtime with four fonts 41,336 bytes ($5E88-$FFFF)
Output configurations 25 printer/plotter configurations plus reduced FONTEDITOR
Preserved media 86 TAP blocks / 43 header-data pairs
Standalone tools FONTEDITOR, CONVERTOR and SCREENTOP

DESKTOP composes proportional text and embedded pictures in a two-ended memory arena, renders rows through a 12×97-byte canonical raster, and installs output front ends for Epson, K6304, BT100, Gamacentrum, XY 4150, Minigraf and Alfi hardware. The universal installer stores relocatable producer records and emits a complete resident image for the chosen language, interface and device.

The reconstruction is written as literate assembly. Module introductions, routine contracts, pseudocode, memory-layout descriptions and selective instruction comments live beside the exact Z80 source they explain. Twelve source-local README files provide subsystem entry maps, memory models, reading orders, build targets and change-safety rules. Start with src/README.md and documentation/SOURCE-TREE.md.

Repository layout

documentation/  stable architecture and subsystem guides
original/       frozen original Desktop.tap and extracted accession inventory
src/            authoritative assembler and immutable source assets
tools/          portable build, TAP reconstruction and verification tools
config/         complete-distribution source bindings and accession profile
Makefile        convenience targets
NOTICE.md       preservation and rights notice
requirements.txt

The publication repository deliberately omits the reconstruction project's iteration changelogs, temporary traces, review ledgers and generated build tree.

Requirements

  • Python 3.10 or newer;
  • GNU Make, optionally;
  • Pasmo 0.5.3 or a compatible Z80 assembler available as pasmo.

No third-party Python package is required for normal build or verification.

On Debian-derived systems:

sudo apt install make python3 pasmo

Build

The portable command is:

python3 tools/build.py --clean

or:

make build

The main outputs are:

build/Desktop.tap
build/desktop-installer-loaded.bin
build/desktop-installer-decoded.bin
build/desktop-installer-menu.bin
build/desktop-editor-*.bin
build/fonteditor-packed.bin
build/fonteditor-unpacked.bin
build/convertor-protected-basic.bin
build/convertor-runtime.bin
build/screentop-unpacked.bin
build/SHA256SUMS

build/Desktop.tap retains every original BASIC loader, screen, font, sample document and disk utility. Only the ins30lxtcd installer payload is replaced by the freshly assembled source image; exact mode requires the result to equal original/Desktop.tap byte for byte.

Directly loadable editor variants

The historical tape expects installation before use. For emulator and hardware testing, the repository can also build 52 direct runtime tapes: every supported installed layout in Czech and Slovak forms.

python3 tools/build.py --clean --runnable
# or
make runnable

This creates build/desktop-runnable-taps.zip and its expanded directory. These are derived convenience artifacts, not historical tape images.

Verify the reconstruction

python3 tools/verify.py
# or
make verify

A successful verification first audits the complete source README set, then proves that:

  • the protected installer is exactly 27,793 bytes with SHA-256 4305701d2636681fa85317eb68ee30e03624a39f4851b27abcaacd9d83995a90;
  • the transient installer menu and primary Epson/Interface I editor match their independently captured 34,784-byte images;
  • source-built FONTEDITOR and CONVERTOR match their historical TAP payloads;
  • the unpacked FONTEDITOR, CONVERTOR and SCREENTOP images match their established post-decompression fingerprints;
  • the rebuilt complete tape is byte-identical to original/Desktop.tap, whose SHA-256 is 29c5622d0a77fb15ef59f6f606452445d5e096359bd06418985ac6301864328c;
  • all generated direct runtime TAPs and their deterministic ZIP verify.

A faster documentation-only check is available when changing source guides:

python3 tools/verify_source_readmes.py
# or
make source-docs-check

It verifies the 12 expected source README files, required architectural sections, minimum depth, publication-safe paths and every relative Markdown link.

A dependency-free preservation check is also available:

python3 tools/verify_preservation.py
# or
make preservation-check

It validates the frozen accession, all 86 TAP block checksums, 43 header/data pairs, key component fingerprints and a complete TAP parse/encode round trip. It does not assemble the source; use the full verification for that proof.

Building alternative complete tapes

The complete-distribution builder preserves pair order and untouched payloads while regenerating TAP lengths, checksums and physical offsets. A replacement may therefore grow or shrink without manually patching the tape container.

The canonical exact build is:

python3 tools/distribution_builder.py build original build/Desktop.tap \
  --mode exact \
  --bindings config/distribution-source-bindings.json

For an alternative build, supply the canonical binding followed by one or more binding files describing replacement payloads and header changes:

python3 tools/distribution_builder.py build original build/Desktop-alt.tap \
  --mode alternative \
  --bindings config/distribution-source-bindings.json \
  --bindings path/to/your-overlay.json

The builder does not pretend that arbitrary machine code is relocatable. A resized component must first be rebuilt by its component-specific source path; the distribution tool then handles the TAP-level consequences safely.

Running DESKTOP

Load original/Desktop.tap or build/Desktop.tap in a ZX Spectrum emulator or from real tape. The first three pairs are the BASIC loader, loading screen and protected universal installer. The following pairs contain CONVERTOR, FONTEDITOR, SCREENTOP, fonts, sample documents and disk utilities.

For direct use without installation, load one of the tapes under build/desktop-runnable-taps/tap/; its BASIC loader loads the full runtime and enters DESKTOP at 48200.

Preservation and rights

The original binaries and data are included for software preservation and research. Rights remain with the respective authors or rightsholders. See NOTICE.md.

Independent printer-driver evidence

The Epson/strobed-A, Aritma Minigraf 0507 and Alfi comments were cross-checked against complete reconstructions by Cygnus that rebuild their preserved 1,680-byte binaries exactly. The integrated findings, including the Alfi quality-address and hardware-validation limits, are documented in documentation/PRINTER-DRIVER-CROSSCHECK.md.

About

WYSIWYG editor for ZX Spectrum

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors