Machine Code Editor

This file is part of Timex Sinclair Public Domain Library Tape 1005. Download the collection to get this file.
Date: 198x
Type: Program
Platform(s): TS 1000

This program is a machine code loader and development tool, embedding a substantial Z80 machine code payload directly in the REM statement at line 0. The BASIC portion is minimal: line 1 uses RANDOMIZE USR 17072 to jump into the machine code stored in the REM, line 2 saves the program, and line 3 loops back to line 1. The REM statement at line 0 contains several hundred bytes of Z80 opcodes, including RST instructions (0xD7), calls to ROM routines (e.g., 0x0A2A for the BASIC interpreter, 0x0F2B for floating-point operations, 0x0BCB for the LDIR block transfer), and structured data tables encoded with a consistent XOR/offset pattern suggesting text stored with character codes offset by a fixed value. The program makes heavy use of the IY register (FD-prefixed instructions) for system variable access and includes what appear to be screen editor, expression parser, and string-handling subsystems within the embedded binary.


Program Analysis

Program Structure

The BASIC program consists of just three lines, serving purely as a bootstrap for the machine code embedded in the REM at line 0:

  1. Line 0REM containing the entire machine code payload (several hundred bytes of Z80 opcodes and data).
  2. Line 1RAND USR 17072 (decimal 0x42B0), which jumps into the machine code inside the REM block.
  3. Line 2SAVE "1023%5" — saves the program to tape.
  4. Line 3GOTO 1 — loops back to re-run the USR call (defensive re-entry or demo loop).

The entry point at 17072 (0x42B0) falls well inside the REM data, which begins at the address immediately following the REM token in line 0. All meaningful program logic resides in the Z80 binary.

Machine Code Payload

The REM block contains a richly structured Z80 binary. Key subsystems identifiable from the opcodes and call targets include:

  • ROM routine calls: The binary makes frequent use of ROM entry points — 0x0A2A (evaluate numeric expression), 0x0F2B (stack pointer / FP routines), 0x0BCB / 0x0B6B (LDIR wrappers / block move), 0x02E7 (CLS or print-a-character), 0x0946 (floating-point calculator dispatcher), and many RST 0x10 / 0xD7 calls for character output.
  • IY-relative access: Numerous FD CB and FD 36 instructions indicate heavy use of IY (the system variables base pointer) for reading and writing system variables such as FLAGS, TV_FLAG, and screen-position variables.
  • Dispatch table: A jump table is visible around offset 0x43C0–0x43D0, with 16-bit addresses pointing to handlers for different token/character values — consistent with a BASIC tokeniser or editor command dispatcher.
  • LDIR block copies: Multiple ED B0 and ED B8 (LDIR/LDDR) sequences perform screen and memory buffer transfers, suggesting a full-screen editor or assembler listing routine.
  • Text data: Large sections of the REM contain bytes in the range 0x26–0x3E that, when XOR’d with 0x5A or offset-decoded, yield readable ASCII strings. Decoded fragments include phrases such as “jump”, “information”, “cont. next locations”, “help”, “at 0x1D”, “quit”, “functions are available from the command screen”, and “shifts between screens” — confirming this is an interactive assembler or monitor utility with a multi-screen help system.
  • Sound / interrupt control: Several FD 36 22 sequences write to IY+0x22 (the FLAGS2 system variable), and there are DI/EI patterns suggesting interrupt management during time-critical sections.

Text Encoding Scheme

The embedded strings use a simple substitution: each character byte has 0x5A (or a related offset) added/XORed, shifting printable ASCII into the 0x26–0x3E range visible in the REM. A null terminator (0x00) ends each string. Marker bytes such as 0x76 (the Z80 HALT opcode, also the Spectrum newline character in BASIC program storage) appear to delimit records or lines within the help-text data area.

Key BASIC Idioms

LineIdiomPurpose
0REM as binary storeHolds the entire executable payload; safe from BASIC tokenisation
1RAND USR 17072Transfers control to machine code; RANDOMIZE discards the return value cleanly
3GOTO 1Re-entry loop if machine code returns normally

Notable Techniques

  • Self-relocating dispatch: The jump table and several 22 xx xx (LD (nn),HL) instructions update pointer cells in low RAM (around 0x4000–0x4080), allowing the machine code to redirect calls at runtime — a typical technique for swapping between editor screens or assembler passes.
  • Screen double-buffering: Code around address 0x42C5 and 0x4391 copies data between 0x4000 (display file) and a shadow buffer at 0x4600/0x4E00, enabling flicker-free screen switching between the assembler listing and help/command screens.
  • RST 0x10 chaining: Many consecutive D7 bytes drive character output tightly, outputting multi-character sequences (escape sequences, cursor positioning codes) without overhead.
  • Floating-point stack manipulation: Calls to ROM FP routines (0x0F2B, 0x0F46) appear in the expression evaluator section, suggesting the assembler supports numeric expression evaluation using the built-in floating-point calculator.

Anomalies and Observations

  • The machine code entry point 17072 (0x42B0) is a fixed absolute address, meaning the program must be loaded to the standard memory map; it is not position-independent.
  • Several 0x00 padding bytes appear between code sections, likely alignment padding or zeroed-out reserved areas within the binary.
  • The SAVE at line 2 and GOTO 1 at line 3 suggest the program was distributed as a self-saving loader: run once to install and save, then re-run from tape normally.
  • Decoded help strings reference concepts such as “jump”, “move from screen to screen”, “edit”, “save”, “clear”, “quit”, “functions available from command screen”, and “binary load / save” — consistent with a Z80 machine code assembler or monitor with an integrated editor and multi-screen help system.

Appears On

Assembled by Tim Ward from many sources. Contains programs 10211 – 10251.

Image Gallery

Source Code

   0 REM \00\00\00\F5\0F\0F\0F\0F\E6\0F\C6\1C\D7\F1\E6\0F\C6\1C\D7\C9\2A\7B\40\7C\CD\85\40\7D\CD\85\40\C9\CD\96\40\AF\D7\D7\7E\CD\85\40\AF\D7\D7\7E\CB\77\28\05\CD\4B\09\18\01\D7\CD\78\44\3E\76\D7\C9\00\00\2A\10\40\23\46\23\CB\28\28\2C\23\7E\D6\1C\17\17\17\17\4F\23\7E\D6\1C\81\F5\E5\2A\7B\40\77\E1\F1\CD\85\40\CD\00\41\10\E2\C9\00\00\00\AF\D7\D7\CD\C4\45\CD\36\4D\C9\E1\E1\E1\C3\B9\41\00\E5\2A\7B\40\23\22\7B\40\E1\C9\CD\18\41\30\FB\CD\18\41\38\FB\C9\00\00\00\E5\C5\CD\BB\02\7C\C6\02\38\07\44\4D\CD\BD\07\7E\A7\C1\E1\C9\CD\0A\41\FE\36\28\05\FE\76\20\F5\E9\C3\D0\43\00\00\00\00\00\FE\75\CA\20\42\FE\22\CA\70\4D\FE\23\CA\9D\4D\C3\DA\43\CD\2A\0A\C3\BF\4D\CD\0A\41\FE\77\28\10\FE\36\28\13\FE\1C\38\F1\FE\2C\30\ED\D7\D6\1C\C9\CD\00\42\E1\C3\80\41\CD\67\42\E1\E1\E1\C3\D0\43\00\CD\2B\0F\21\7C\40\06\02\CD\58\41\17\17\17\17\4F\CD\58\41\81\77\2B\10\F0\3E\76\D7\C3\B0\41\00\00\CD\80\43\3A\3A\40\FE\02\CA\9E\4C\CD\8A\51\18\F3\01\00\07\0B\78\B1\20\FB\C9\CD\9E\4C\C3\D0\43\00\CD\18\41\30\FB\CD\18\41\F5\C5\E5\2A\39\40\E5\01\00\17\CD\F5\08\FD\CB\34\6E\28\04\36\17\18\02\36\00\00\00\00\E1\22\39\40\E1\C1\F1\DA\C5\41\C9\00\00\00\00\00\22\29\40\C3\2A\0A\00\00\00\00\00\00\FD\36\22\00\01\05\17\CD\F5\08\AF\D7\D7\D7\D7\01\05\17\CD\F5\08\C9\CD\2B\0F\CD\67\42\CD\C0\41\C9\CD\30\42\21\80\42\22\29\40\C9\CD\F0\4C\18\F4\00\11\6C\43\CD\72\42\CD\80\41\FD\36\22\02\CD\80\43\C3\96\40\00\11\71\43\CD\72\42\CD\80\41\C9\11\65\43\CD\72\42\21\A4\44\C3\2C\41\00\00\00\00\00\00\01\00\17\CD\F5\08\C9\CD\60\42\AF\06\09\D7\10\FD\18\EE\D5\CD\67\42\D1\01\05\00\CD\6B\0B\C9\00\00\02\01\04\00\EE\26\0D\76\00\D2\0E\00\F9\D4\1D\22\25\1F\24\7E\8F\04\54\00\00\76\80\B2\9B\A8\9B\80\AA\A9\AE\B9\B4\B7\80\00\00\00\00\00\00\00\00\00\01\09\0B\CD\F5\08\11\9A\42\01\0D\00\CD\6B\0B\C3\80\44\00\00\00\CD\F5\08\06\20\36\00\23\10\FB\CD\9E\4C\C1\C3\F5\08\00\00\00\00\00\00\00\CD\23\0F\2A\04\40\2B\36\3E\2B\F9\2B\2B\22\02\40\21\1D\00\22\0A\40\21\0A\00\22\23\40\C3\13\04\00\00\00\00\11\7D\40\2A\0C\40\B7\ED\52\44\4D\21\00\E0\71\23\70\23\36\76\23\EB\C5\D5\E5\01\08\00\11\28\4E\21\54\40\ED\B0\E1\D1\C1\ED\B0\C3\D0\43\00\00\00\00\00\CD\E7\02\2A\0C\40\11\7D\40\CD\5D\0A\ED\4B\00\E0\2A\0C\40\2B\C5\E5\CD\9E\09\D1\C1\21\02\E0\03\ED\B0\C9\A2\96\9D\A0\96\A4\A4\80\80\80\9C\A2\8E\9F\9E\8E\9F\9F\38\A6\3B\AA\0F\00\00\AA\A9\AE\B9\12\A9\3A\B2\35\12\B2\34\BB\2A\0F\00\AA\B4\AB\12\06\16\2A\0C\40\3E\76\23\BE\28\04\36\00\18\F8\10\F6\01\00\00\C3\F5\08\CD\80\43\C3\D0\43\00\00\00\CD\44\42\CD\A0\41\C3\D0\43\00\00\00\00\00\00\00\2A\60\40\11\20\00\A7\ED\52\22\7B\40\00\00\00\00\CD\A0\41\C3\D0\43\CD\6D\44\3E\76\D7\C9\00\00\00\FD\36\22\00\CD\16\42\C3\40\41\00\00\FE\C0\CA\DD\42\FE\26\38\EB\FE\40\30\E7\D6\26\17\21\00\44\85\6F\5E\23\56\EB\E9\0B\2D\2A\3D\31\29\A0\0B\00\00\A0\43\B0\43\C0\43\D0\43\D0\43\D0\43\D0\43\D0\45\D0\43\B0\42\04\4F\4A\51\00\45\D0\43\D0\43\C0\44\D0\43\D0\43\4E\42\D0\43\D0\43\97\43\D0\43\57\45\40\44\16\51\29\2A\38\39\12\00\00\B4\B0\8F\00\00\2A\60\40\22\7B\40\C3\C0\43\CD\E7\02\21\00\80\22\04\40\CD\2A\0A\CD\2B\0F\C3\60\4C\A8\31\AA\26\B7\A7\38\A6\3B\AA\A7\31\B4\26\A9\CD\9A\51\E5\2E\19\CD\EC\4F\E1\CD\C1\4F\C9\CD\6D\44\C3\00\41\00\00\01\07\0D\CD\F5\08\11\53\43\01\12\00\CD\6B\0B\C3\D0\43\00\01\0E\00\F9\D4\1D\23\20\24\1D\7E\8F\08\92\00\00\76\CD\E7\02\2A\04\40\E5\C3\20\4F\21\92\44\22\29\40\21\F6\43\22\16\40\CD\F6\02\C3\40\44\2A\34\40\22\32\40\2A\0C\40\23\7E\FE\76\28\FA\E5\ED\5B\10\40\A7\ED\52\E1\30\E6\E5\2A\32\40\44\4D\29\09\29\29\09\22\32\40\7C\E6\07\E1\77\CD\46\0F\38\D7\C3\D0\43\2A\7B\40\E5\CD\9A\51\E1\C3\6D\44\11\76\43\CD\72\42\21\0C\45\C3\2C\41\11\7B\43\CD\72\42\CD\9E\4C\2A\60\40\00\00\00\22\3C\40\CD\80\41\11\34\44\CD\72\42\2A\7B\40\22\3E\40\CD\80\41\11\39\44\CD\72\42\21\C0\4C\C3\2C\41\ED\5B\7B\40\ED\4B\3C\40\2A\3E\40\C5\A7\ED\42\44\4D\E1\03\ED\B0\CD\A0\41\C3\D0\43\11\5B\44\CD\72\42\21\63\45\C3\2C\41\11\7B\43\CD\72\42\CD\9E\4C\2A\60\40\00\00\00\22\3C\40\CD\80\41\2A\7B\40\22\3E\40\11\39\44\CD\72\42\21\8A\45\C3\2C\41\2A\3C\40\54\5D\13\36\00\22\7B\40\2A\3E\40\2B\22\3E\40\C3\40\45\00\CD\E7\02\01\00\01\21\76\4E\C5\C5\E5\CD\9E\09\E1\C1\54\5D\0B\13\36\00\ED\B0\C1\2A\7F\40\09\22\7F\40\C3\D0\43\2A\7B\40\E5\CD\C3\40\E1\C3\C6\43\00\2A\0C\40\E5\21\00\46\22\0C\40\CD\0A\41\FE\2D\20\F9\21\18\49\22\0C\40\CD\0A\41\FE\2D\20\F9\E1\22\0C\40\C3\D0\43\11\CB\01\10\FE\1B\7A\B3\20\F9\C9\76\00\00\00\00\00\00\00\00\00\00\00\00\AD\AA\B1\B5\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\A6\14\29\3A\32\35\0E\00\2B\37\34\32\00\26\29\29\37\2A\38\38\00\BD\BD\BD\BD\00\00\00\00\00\00\00\76\A7\14\27\26\28\30\0E\00\35\37\2A\3B\2E\34\3A\38\00\1E\1E\00\31\34\28\26\39\2E\34\33\38\1B\00\00\76\A8\14\28\34\33\39\0E\00\33\2A\3D\39\00\1E\1E\00\31\34\28\26\39\2E\34\33\38\1B\00\00\00\00\00\00\76\AD\14\2D\2A\31\35\0E\00\2E\33\2B\34\37\32\26\39\2E\34\33\1B\00\00\00\00\00\00\00\00\00\00\00\00\76\AF\14\2F\3A\32\35\0E\00\26\39\00\20\20\1D\1E\2D\1B\00\2C\34\00\26\33\3E\3C\2D\2A\37\2A\1B\00\00\76\B2\14\32\34\3B\2A\0E\00\2B\37\34\32\00\38\28\37\2A\2A\33\39\34\35\00\39\34\00\AA\B4\AB\12\00\00\76\00\00\00\00\00\00\00\00\32\34\3B\2A\00\39\34\00\29\2A\38\39\12\1B\00\00\00\00\00\00\00\00\00\00\76\B5\14\35\2E\28\39\3A\37\2A\38\1B\00\3C\34\3C\1B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\B8\14\38\26\3B\2A\0E\00\27\26\38\2E\28\00\26\33\29\00\3B\26\37\2E\26\27\31\2A\38\1B\00\00\00\00\76\BB\14\28\31\37\38\28\37\33\1B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\BD\14\28\31\2A\26\37\0E\00\32\2A\32\34\37\3E\00\2B\37\34\32\00\38\28\37\2A\2A\33\39\34\35\00\00\76\00\00\00\00\00\00\00\00\00\39\34\00\AA\B4\AB\12\1B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\BE\14\37\2A\39\3A\37\33\00\38\28\37\2A\2A\33\00\28\31\37\38\28\37\33\01\29\1B\00\00\00\00\00\00\76\B6\14\36\3A\2E\39\0E\00\2B\3A\33\28\39\2E\34\33\1B\00\34\37\1B\1B\1B\00\00\00\00\00\00\00\00\00\76\B8\AD\AE\AB\B9\00\B6\14\37\2A\39\3A\37\33\00\39\34\00\27\26\38\2E\28\1B\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\B8\AD\AE\AB\B9\00\9D\14\2A\29\2E\39\1B\00\3C\37\2E\39\2A\00\39\34\00\32\2A\32\34\37\3E\1B\00\00\76\00\00\00\00\00\00\00\00\2D\2A\3D\28\34\29\2A\00\34\37\00\28\2D\37\0D\1B\00\00\00\00\00\00\00\00\76\BA\B5\98\A9\B3\90\A2\98\A3\91\00\38\28\37\34\31\31\00\27\26\28\30\16\33\16\2B\34\37\39\2D\1B\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\10\AD\0E\00\38\2D\2E\2B\39\38\00\27\2A\39\3C\2A\2A\33\00\38\28\37\2A\2A\33\38\11\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\AD\AA\B1\B5\80\9E\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\B2\34\3B\2A\1A\00\B8\26\3B\2A\00\26\33\29\00\BD\28\31\2A\26\37\00\37\2A\36\3A\2E\37\2A\00\76\2A\33\39\2A\37\00\39\34\00\35\37\34\28\2A\2A\29\1B\00\26\31\31\00\28\26\33\00\27\2A\00\00\00\00\76\26\27\34\37\39\2A\29\00\27\3E\00\B6\3A\2E\39\1B\00\39\34\00\2A\38\28\26\35\2A\00\2A\29\2E\39\1A\76\2E\33\35\3A\39\00\33\3A\31\31\00\38\39\37\0D\1B\00\2A\29\2E\39\00\3A\38\2A\38\00\37\34\32\38\00\76\38\39\37\0D\00\2E\33\35\3A\39\00\38\34\00\28\34\29\2A\00\34\2B\00\3A\35\00\39\34\00\2B\34\3A\37\76\27\3E\39\2A\38\1A\00\26\33\29\00\29\26\39\26\00\34\2B\00\26\33\3E\00\31\2A\33\2C\39\2D\00\00\00\76\32\26\3E\00\27\2A\00\2E\33\35\3A\39\1B\00\35\37\2A\28\2A\2A\29\2E\33\2C\00\26\00\38\39\37\0D\00\76\3C\2E\39\2D\00\B8\AD\AE\AB\B9\80\B6\00\2E\33\35\3A\39\38\00\26\00\38\39\37\2E\33\2C\00\34\2B\00\76\28\2D\26\37\26\28\39\2A\37\38\00\26\38\00\28\2D\26\37\26\28\39\2A\37\38\1B\00\00\00\00\00\00\00\76\00\00\1D\1E\00\30\2A\3E\38\00\26\37\2A\00\2E\33\00\26\38\38\2E\2C\33\32\2A\33\39\1A\00\39\2D\2A\76\39\26\27\31\2A\00\27\2A\2C\2E\33\33\2E\33\2C\00\26\39\00\20\20\1C\1C\2D\1B\00\2D\26\3B\2A\00\00\76\3E\34\3A\37\00\37\34\3A\39\2E\33\2A\00\2F\3A\32\35\00\27\26\28\30\00\39\34\00\20\1F\29\1C\1B\00\76\00\00\2B\3A\33\28\39\2E\34\33\38\00\26\37\2A\00\26\3B\26\2E\31\26\27\31\2A\00\2B\37\34\32\00\00\76\39\2D\2A\00\28\34\32\32\26\33\29\00\38\28\37\2A\2A\33\1B\00\10\39\2D\2A\00\38\28\37\2A\2A\33\00\76\3C\2E\39\2D\00\39\2D\2A\00\27\31\2E\33\30\2E\33\2C\00\26\38\39\2A\37\2E\38\30\1B\11\00\00\00\00\76\B1\14\A7\B1\B4\A6\A9\0E\00\27\2E\33\26\37\3E\00\31\34\26\29\1B\00\00\00\00\00\00\00\00\00\00\00\76\BF\14\A7\B8\A6\BB\AA\0E\00\27\2E\33\26\37\3E\00\38\26\3B\2A\1B\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\80\80\A2\8E\9F\A0\8E\9E\A0\9B\A1\A3\A6\B2\80\80\B9\BA\AA\80\80\AF\BA\B3\80\9D\A0\9A\9D\A5\A4\A4\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\10\AD\0E\00\38\2D\2E\2B\39\38\00\27\2A\39\3C\2A\2A\33\00\38\28\37\2A\2A\33\38\11\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\76\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\09\0B\CD\F5\08\11\9A\42\01\0D\00\CD\6B\0B\01\07\0D\CD\F5\08\11\53\43\01\12\00\CD\6B\0B\CD\F5\45\2A\0C\40\E5\21\00\46\22\0C\40\CD\F5\45\21\18\49\22\0C\40\CD\F5\45\E1\22\0C\40\C3\D0\43\11\61\40\2A\0C\40\06\02\23\7E\87\87\87\87\23\86\C6\24\12\1B\10\F2\C9\00\00\00\00\00\00\00\00\00\00\00\2A\3C\40\ED\5B\7B\40\A7\ED\52\D2\3C\45\ED\5B\3C\40\2A\3E\40\E5\A7\ED\52\E5\C1\03\ED\5B\7B\40\19\EB\E1\ED\B8\CD\A0\41\C3\D0\43\00\00\00\00\00\00\2A\10\40\23\46\05\23\23\7E\FE\C0\C2\EF\40\23\7E\CB\77\C0\EB\2A\7B\40\77\C5\D5\CD\A5\40\CD\36\4D\D1\C1\EB\10\E9\C9\00\00\00\00\00\00\00\00\00\00\2A\0C\40\23\E5\11\21\00\19\D1\01\B5\02\ED\B0\01\00\15\C5\C3\C5\42\3A\3A\40\FE\02\E5\C5\D5\CC\20\4D\D1\C1\E1\C3\96\40\00\00\00\00\00\00\00\00\00\2A\0C\40\11\B5\02\19\E5\11\21\00\19\EB\E1\01\B5\02\ED\B8\C3\91\43\00\00\00\00\00\00\00\00\00\00\11\01\00\2A\60\40\A7\ED\52\22\7B\40\CD\50\4D\06\11\36\00\23\10\FB\CD\A2\40\CD\9E\4C\2A\60\40\00\22\7B\40\CD\18\41\FE\22\28\D6\C3\D0\43\CD\20\4D\CD\8A\51\CD\18\41\FE\23\28\F3\C3\D0\43\00\00\00\CD\E0\4D\CD\0A\41\11\28\4E\CD\E6\4D\C3\D0\43\CD\E0\4D\CD\00\4E\C3\30\4E\01\00\16\CD\F5\08\06\20\ED\5B\0C\40\13\7E\CB\FF\12\23\10\F8\C9\00\00\00\11\20\4E\3A\FF\FF\06\08\C5\06\08\1A\32\FF\FF\0F\10\FA\13\C1\10\F2\C9\00\00\00\00\00\00\00\00\00\11\54\40\21\FF\FF\06\08\0E\00\C5\06\08\7E\E6\01\B1\4F\CB\09\10\F7\79\12\13\C1\10\EC\C9\00\00\00\C5\3A\A3\5C\C5\3A\A3\5C\38\55\32\86\12\14\06\88\01\01\16\CD\F5\08\3A\57\40\CD\DE\4E\3E\0E\D7\3A\56\40\CD\85\40\3E\0E\D7\3A\55\40\CD\85\40\3E\1B\D7\3A\54\40\CD\85\40\00\00\00\00\00\00\CD\ED\4E\01\19\16\CD\F5\08\00\3A\59\40\CD\85\40\3E\1A\D7\3E\19\CD\85\40\3A\5B\40\CD\85\40\01\10\16\CD\F5\08\E5\3A\58\40\21\0D\50\E6\07\47\3E\03\85\6F\10\FA\01\03\00\D1\ED\B0\00\01\15\16\CD\F5\08\E5\3A\5A\40\21\22\50\FE\0A\38\02\D6\06\47\3E\03\85\6F\10\FA\01\03\00\D1\ED\B0\C9\B8\2A\B9\28\B1\30\8F\CD\60\42\11\B9\4E\01\07\00\CD\6B\0B\21\D2\4E\C3\2C\41\21\B0\4D\C3\2C\41\CD\67\42\C3\D0\43\CB\6F\28\04\1E\35\18\02\1E\26\E6\1F\C3\F5\4E\AF\00\7B\D7\3E\32\D7\C9\CB\67\C2\85\40\E6\0F\C6\1C\F5\AF\D7\F1\D7\C9\CD\BF\4D\01\01\16\CD\F5\08\00\00\00\00\00\00\CD\60\4F\CD\46\0F\D2\D0\43\18\E6\00\00\CD\2A\0A\E1\22\04\40\C3\AE\44\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\07\84\03\82\05\86\01\81\06\85\02\83\04\87\00\E5\01\00\00\CD\F5\08\22\0E\40\E1\06\08\E5\C5\7E\A7\17\17\D8\17\16\00\CB\12\5F\21\00\1E\19\0E\04\06\04\56\23\5E\23\E5\AF\CB\12\17\CB\12\17\CB\13\17\CB\13\17\21\50\4F\85\6F\7E\2A\0E\40\77\23\22\0E\40\10\E3\D5\11\1D\00\19\22\0E\40\D1\E1\0D\20\CF\11\80\FF\2A\0E\40\19\22\0E\40\C1\E1\23\10\AD\C9\01\F0\D8\1E\FF\C5\CD\E1\07\CD\AD\0A\4F\C1\21\5D\40\57\1E\1C\70\CB\7A\28\01\71\97\ED\6F\83\D7\97\ED\6F\83\D7\CB\7A\CB\FA\28\EF\C9\3A\39\40\85\D6\21\C8\97\D7\18\F5\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\32\34\33\39\3A\2A\3C\2A\29\39\2D\3A\2B\37\2E\38\26\39\38\3A\33\2F\26\33\2B\2A\27\32\26\37\26\35\37\32\26\3E\2F\3A\33\2F\3A\31\26\3A\2C\38\2A\35\34\28\39\33\34\3B\29\2A\28\00\00\00\00\00\00\00\CD\E7\02\01\20\00\21\96\52\C5\C5\E5\CD\9E\09\E1\C1\54\5D\0B\13\36\00\ED\B0\C1\2A\7F\40\09\22\7F\40\C3\D0\43\00\23\EB\2A\3E\40\37\ED\52\EB\C9\00\C3\00\51\2A\3C\40\CD\91\50\CD\75\50\30\F8\C3\D0\43\5E\37\CB\13\C8\9F\E6\05\C6\04\4F\D3\FF\06\23\10\FE\CD\46\0F\30\0C\06\1E\10\FE\0D\20\EE\A7\10\FD\18\E0\E1\C3\40\44\CD\E7\02\2A\3C\40\CD\C2\50\18\FB\0E\01\06\00\3E\7F\DB\FE\D3\FF\1F\D2\B3\50\17\17\38\0F\10\F0\F1\CD\C2\50\71\CD\75\50\DA\84\51\18\F4\1E\94\06\1A\1D\DB\FE\17\CB\7B\7B\38\F5\10\F5\20\04\FE\56\30\CC\3F\CB\11\30\C7\C9\00\00\CD\E7\02\11\CB\09\CD\46\0F\D2\D0\43\10\FE\1B\7A\B3\20\F3\C3\83\50\11\60\44\CD\72\42\21\22\51\C3\2C\41\11\7B\43\CD\72\42\CD\9E\4C\2A\60\40\00\00\00\22\3C\40\CD\80\41\2A\7B\40\23\22\3E\40\11\39\44\CD\72\42\21\80\50\C3\2C\41\11\65\44\CD\72\42\21\56\51\C3\2C\41\11\7B\43\CD\72\42\CD\9E\4C\2A\60\40\00\00\00\22\3C\40\CD\80\41\2A\7B\40\23\22\3E\40\11\39\44\CD\72\42\2A\3C\40\22\7B\40\21\B7\50\C3\2C\41\CD\A0\41\C3\D0\43\2A\7B\40\CD\96\40\AF\D7\D7\CD\F5\44\3E\76\D7\C9\0E\00\7E\FE\DD\28\04\FE\FD\20\07\CD\85\40\23\0C\18\F0\FE\ED\20\1B\CD\85\40\23\7E\E6\C7\FE\43\20\04\06\03\18\02\06\01\7E\CD\85\40\23\7E\10\F9\18\23\E5\CB\3F\F5\C6\00\6F\26\52\F1\7E\38\04\1F\1F\1F\1F\0D\20\02\1F\1F\E6\03\47\E1\2B\23\7E\CD\85\40\10\F9\23\22\7B\40\C9\00\00\00\00\00\00\00\00\00\00\00\00\00\00\5F\55\55\A5\55\55\55\A5\AF\55\55\A5\A5\55\55\A5\AF\F5\55\A5\A5\F5\55\A5\AF\F5\99\E5\A5\F5\55\A5\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\99\99\99\59\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\55\55\95\55\FF\F5\A5\55\FE\FF\A2\55\FA\F5\A5\55\FA\F5\A5\55\F5\F5\A5\55\F5\FA\A5\55\F5\F5\A5\55\F5\F5\A5\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00
   1 RAND USR 17072
   2 SAVE "1023%5"
   3 GOTO 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.