This program displays a description and usage instructions for a companion machine code program called “2col-llist,” which LLISTs BASIC programs in two columns on a full-size printer. The machine code routine resides at the top of memory from address 61209 to 65535, occupying 484 bytes. It is designed for use with an AERCO parallel printer interface and an Epson RX-80 printer. The program demonstrates the common ZX81/TS1000 practice of storing machine code at the top of RAM and invoking it via RANDOMIZE USR. Save and load instructions for the CODE block are provided directly in the output.
Program Analysis
Program Structure
The program is a pure display utility — a self-contained help screen for a separate machine code program. It consists of eight lines: two REM lines for authorship metadata (lines 1–2–3) and six PRINT statements (lines 10–35) that together output formatted usage instructions.
PRINT Formatting Idiom
Each PRINT statement uses leading ' (newline) characters to insert blank lines before the text, producing a visually separated, menu-style layout without any PRINT lines dedicated solely to blank lines. This is a standard Sinclair BASIC space-saving idiom: PRINT '' produces two newlines before the string that follows on the same statement.
Machine Code Details Described
The instructions document the companion CODE block precisely:
- Load address:
61209 - End address:
65535(top of a 64 KB address space) - Length:
484bytes (65535 − 61209 + 1 = 4327— note the SAVE command quotes 484 bytes, which is the actual code size, not the full range to 65535; the range figure in the description line is approximate) - Entry point:
RANDOMIZE USR 61209 - Hardware requirement: AERCO parallel printer interface + Epson RX-80
Notable Techniques
Placing machine code at the top of RAM (near 65535) is a well-known technique to keep it safe from BASIC’s memory management, which grows the program area upward from low memory. The SAVE syntax shown — SAVE "2col-llist" CODE 61209,484 — is the correct two-argument form giving start address and byte count, confirming the routine is exactly 484 bytes long.
Anomalies and Observations
Line 1 uses REM "2col-instr" as a filename label, and lines 2–3 carry author and location credits. There is a minor inconsistency between the stated memory range (61209 to 65535, which is 4327 bytes) and the SAVE byte count of 484; the range given in line 25 is likely a loose description of where in memory the code sits rather than an exact byte count. No logic, loops, or variables are used — the program is entirely static text output.
Line Summary
| Line | Purpose |
|---|---|
1 | REM: program name label |
2 | REM: author name |
3 | REM: author location |
10 | Prints header/title of the companion program |
15 | Prints functional description of the machine code routine |
20 | Prints hardware requirements |
25 | Prints memory usage information |
30 | Prints LOAD and RUN instructions |
35 | Prints SAVE instruction with address and byte count |
Content
Source Code
1 REM "2col-instr"
2 REM Lloyd Painter
3 REM Quakertown, PA
10 PRINT ''" Description / Instructions for ""2col-llist"""
15 PRINT ''"-A machine code program to LLISTyour BASIC programs in 2 columnsusing a full-size printer"
20 PRINT '"-For use with an AERCO parallel printer interface and an EPSON RX-80 printer"
25 PRINT '"-Occupies/uses top of memory from 61209 to 65535"
30 PRINT '"-To use, LOAD ""2col-llist""CODE and RANDOMIZE USR 61209"
35 PRINT '"-To SAVE after LOADing: SAVE ""2col-llist""CODE 61209,484"
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
