ZXLR8 is a machine code cassette storage accelerator that saves and loads data at 6 to 10 times the normal tape speed, with built-in error checking. The bulk of the program is a large machine code payload embedded in line 1’s REM statement, which is relocated and executed via RAND USR calls. The BASIC loader prompts the user for a timing value (POKEd to address 16961), a calibration value (POKEd to 17107), and a starting memory location, then patches several system variables and jump vectors before handing control to the machine code at address 18141. After setup, a NEW command clears the BASIC workspace, leaving only the resident machine code routine in memory. The error-checking routine is verified by testing USR 18520 against the value 8 after the initial load.
Program Analysis
Program Structure
The program consists of two distinct layers: a large machine code payload hidden inside the ZXLR8 is a machine code cassette storage accelerator that saves and loads data at 6 to 10 times the normal tape speed, with built-in error checking. The bulk of the program is a large machine code payload embedded in line 1’s REM statement, which is relocated and executed via RAND USR calls. The BASIC loader prompts the user for a timing value (POKEd to address 16961), a calibration value (POKEd to 17107), and a starting memory location, then patches several system variables and jump vectors before handing control to the machine code at address 18141. After setup, a NEW command clears the BASIC workspace, leaving only the resident machine code routine in memory. The error-checking routine is verified by testing USR 18520 against the value 8 after the initial load. The program consists of two distinct layers: a large machine code payload hidden inside the Line The loader collects three values interactively: The separation of timing and calibration into two distinct parameters allows the routine to be tuned for different tape decks and recording conditions, which is the primary reason the speed improvement spans a range (6–10×) rather than a fixed multiplier. Lines Line Inspection of the REM byte sequence reveals several notable Z80 constructs: Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters. No people associated with this content.REM statement at line 1, and a BASIC loader spanning lines 9000–9082 that installs, configures, and then self-destructs. The REM data begins with
Skip to content
— a ZXLR8
Program Analysis
Program Structure
REM statement at line 1, and a BASIC loader spanning lines 9000–9082 that installs, configures, and then self-destructs. The REM data begins with \00\C3\19\43 — a NOP followed by a JP 4319h — establishing an entry point immediately after the REM opcode byte itself. The machine code occupies several hundred bytes and implements the complete fast-tape save/load engine.Load and Verification Sequence
9001 calls USR 18520 and checks whether the return value equals 8. Address 18520 (decimal) falls within the REM payload and acts as a checksum or integrity probe; a return value other than 8 triggers the BAD LOAD error message at lines 9002–9003 and halts execution. This provides a simple but effective post-load sanity check before any system modifications are made.User-Configurable Parameters
9006, POKEd to address 16961 (system variable area). This controls the bit-cell duration of the fast tape protocol.9014, POKEd to address 17107. This fine-tunes the read threshold or pulse discrimination for the tape input circuit.9022 as variable L. A value of 0 aborts installation (IF L=0 THEN STOP).System Variable Patching
9024–9050 perform the relocation setup. The target address TA is computed as L + 1760, and the high and low bytes are split and POKEd to addresses 16631 and 16630 respectively — the system variable PROG pointer, redirecting where the ZX81 believes BASIC starts. A further block of six POKEs to addresses 16450–16455 patches what appears to be a jump table or call vector inside the machine code itself, encoding the load address L as a 16-bit little-endian word at 16454/16455 and constants 131, 64, 23, 72 at the preceding four bytes.Activation and Self-Removal
9080 uses RAND USR 18141 to transfer control to the machine code entry point within the REM payload. On return (if the routine returns at all during normal operation), line 9082 executes NEW, wiping the BASIC program from memory. This leaves the fast-tape machine code resident as a standalone routine without the BASIC overhead, a classic self-installing loader pattern.Machine Code Architecture Highlights
ED B0 (LDIR) appears multiple times, indicating block memory moves used for code relocation or buffer transfers.DB FE (IN A,(254)) is the standard ZX81 tape/keyboard port read instruction, appearing repeatedly in the tight timing loops that sample the EAR line.D3 FF (OUT (255),A) drives the MIC output for tape writing.ED 53 / ED 5B (LD (nn),DE / LD DE,(nn)) are used extensively for 16-bit pointer manipulation, consistent with tracking tape buffer start/end addresses.D9 = EXX) to preserve counters across interrupt-sensitive sections.0x18–0x3E) appears to be text or menu strings encoded with a fixed offset, possibly displayed during operation prompts.Address Reference Table
Address Purpose 16630/16631PROG system variable (low/high byte of BASIC program start) 16450–16455Machine code jump/address table patched by loader 16961Timing parameter storage 17107Calibration parameter storage 18141Main entry point of fast-tape routine (RAND USR target) 18520Integrity check entry point (USR returns 8 on good load) Notable Techniques and Idioms
INT(X/256) and X - 256*INT(X/256) is used for both the TA and L values, the standard ZX81 BASIC method for computing high and low bytes without bitwise operators.RAND USR rather than PRINT USR discards the return value cleanly and avoids a screen print side-effect.NEW at line 9082 is the self-erasing loader pattern: once machine code is resident, the BASIC is no longer needed and its memory is reclaimed.SAVE "%Z" at line 9000 allows the loader itself to be re-saved to tape before installation begins, ensuring the distribution copy is always accessible.Content
Source Code
1 REM 0C31943CDDD40CD2B F2A C40233680E5CDB840E1FE7620 4CD23 FC9FE7720 B36 02B7EFE7620 12B18E277237EFE7620DB2318D8CD2B F213B40CB7ECC29 2CB4628FCED4B2540CD4B FCDBD 77EFE77C8FE76C8FE4030DCC92A C4011D6 219 142 023 B78B1C87EFE7628F636 018F2216347227B40CDDD40 6 1CD D45CD9040CDFF44 1 7 0113E40EDB0CDDD40 6 2CD D45CD9040CDFF447E324540237EFE31CA4642FE38CA3241C311413A4540FE37CA 0 0FE27CA5341FE35CAA343FE29CAE343FE2CCA2B44FE2DCA3D44CDDD40 6 3CD7241ED534740CDDD40 6 4CD7241ED534940ED535840C38941CD7F417EFE DCC4E45C42B45C9CD D45CD9040CDFF44C9CDDD40 6 5CD7F413EFD213C40772377CD7745324B40CD8145324C40325B40C3AB41DBFECDD541CDE5411111 0213C40CDF141CDFD41ED5B49402A4740CDF141CDD944CDDD40 6 6CD7F41C9DBFE 6 611 0 01B7AB320FB 520F8C911E8 3CD 6421B7AB320F8C97ECD13421B237AB3C2F141C91EFFCD 6421D20FAC947DBFE78CD4042D3FFCD4042C9CD2742 E 8 7DC2742D4 642 DC21842CD 642C947DBFE78CD4042CD4042CD4042D3FFCD4042CD4042CD4042C9 6FF 520FDC9D9C5D5E53A4540FE2ECA9445FE27CA7142FE35CA4E44FE29CA7544FE2CCAC444FE2DCAD644 6 3C5C35B43CDDD40 6 3CD7241ED534740CDDD40 6 5CD7F41CD9E42CD36432A47407CB528 3225640CD4843CD6E43C39243CDD1421E F214D40CDE042FEFD20F9CDE042FEFD20F2CDE04277231DC2B442213E40114D40 E 71ABEC29E42 D2313C2C542C9D9 EFF1EFBD9C9D9E1E1E1D1C1D9C9D9CD46 FD2D842 6 016FF15DBFEA7F2EB427BBADAE9427A91781747D2E942D9C921 028118340 1F8 7EDB0C921834011E02E 1FA 0EDB0C9F5D5C52A3B40E5CDF540E13E40A528 3CD2B FC1D1F1C3 6 2B120F8C9214D401E D9786231D20FBBEC8 61DC35B432A5640ED5B5840CDE04277231B7AB3C24F43C9C5CDDD40 6 7CD D45C17023C1CD9040C392432BED5B584097862B1B477AB378C274433278402A5B40227940ED5B5B40BBC8 61EC35B43D9E1D1C1D9CDD944CDDD40 6 6CD7F41C911 040ED5347402A1440A7ED5223224940225840CDDD40 6 5CD7F413EFD213C40772377CD7745324B403E 0324C40325B40CD8145ED44324C40325B40C3AB41CDDD40 6 8CD7F41CD 444235E2356ED53784023224740ED534940324640C389417ED62047237EFE D3E8020 2CBF7B0472A10407EB8C8FE8020 5 61FC35B43C5CDF2 9C1EB18ECED5B C40ED53474011D7 2ED534940C3894111 020ED53474011 018ED534940C38941CD5A44CD4843CD6E43C39243CDDD40 6 5CD7F41CD9E42CD36432145403A5440BEC8 620C35B43CDDD40 6 8CD7F41CD 444235E235623224740ED534940324640CD5A442146403A554086CB7728 6 621C5C35B432A4940ED5B5840A7ED5230 6 622C5C35B432A4740225640CD4843CD6E43C39243CD5A442A C40225640CD4843CD6E43C39243C34E44DBFE 6 4C3D94150E52A7B40 1FF 03E18EDB11520FB4E 6 0EBE1 92B4713231AB8C87718F82A C4011F8 219237EFE 028FAC92A C4011D7 219E5CDE044E11130 019C9237EFE1C30FA2B2B11 0 0EBC9CD1E45 1 1 0CD6C45 1 A 0CD6C45 164 0CD6C45 1E8 3CD6C45 11027CD6C45EBC9CD1E45 1 1 0CD6C45 110 0CD6C45 1 0 1CD6C45 1 010CD6C45EB97C91A1BD61DD83C 93D20FCC9 6 D3E 02386 520FBC92A4740ED5B49403E 0861B23477AB378C818F6E1D1C1223C40ED533E40ED434040C5D5E5CDDD40 6 5CD7F41CDDD40 6 9CD D45CDC845 6 ACD D45CDC845CDDA45CD934618F52A C40EB132121 019 1F7 2EDB0CDDD40C9CDD1421E F214D40CDE042FEFD20F9CDE042FEFD20F2CDE04277231D20F8CDA746CD1D46CD5246CD304611 D 0193A544077FE2920 5CD39463E 0FE2720 3CDBC46C9CD3046 6 7114C4023131AFE80C877 5C818F32A C402311D6 219C9CD3046111C 0193A5540E63FC62077233A5540CB77C836 DC9CD30461113 019224D40111027CD7B4611E8 3CD7B461164 0CD7B4611 A 0CD7B4611 1 0CD7B46C92A58403E1B3CA7ED5230FA192258402A4D407723224D40C9D92A3C40ED5B3E40ED4B4040D9 1F0 0CD35 FC91E D214D403E 086231D20FB215A40BEC8E1C3DA452A5640225840CD3046111B 019C359462A4640E5ED5B4240A7ED52224840C31748CDCC467EFEC3CA 947FECDCA 947E6C7FEC2CA 947FEC4CA 9477E121323ED4B4440A7E5ED42E138DAC333477E1213234E234623E52A4240A7 3ED42 B30 E2A4440A7ED4238 62A4840 94D44E1EB71237023EB18C82A46401182 11936C9233647C351471936C923362A1117 019362B23362BED5B46402A1440A7ED52D01BED53 440C97618 92E33353A39 02B2E312A 03326322A18 A2E33353A39 02834323226332918 A2E33353A39 0262929372A383818 A2E33353A39 0312A332C392D18 B3839263739 03926352A18 C38393435 03926352A18 E2A3737343718 72E33353A39 0292E32 03B26372E2627312A18 12B2E312A 03326322A 0 0393E352A 0 0312A332C392D 0 03839263739 018 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 318 0ED5BB5421922B54222F145D12A4240C928263131 0311F1928263131 D1C2B1E27193129 02D311B101D221F252211192E3328 02D3119 E31213129 0102D31113E 0 194 7218340865F B78B17B2320F7 6 04FC9 0FF 0CF82 021 0 0EF 0BF80 082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 035
9000 SAVE "%Z"
9001 IF USR 18520=8 THEN GOTO 9004
9002 PRINT AT 10,11;"BAD LOAD"
9003 STOP
9004 CLS
9005 PRINT AT 10,7;"INPUT TIMING VALUE"
9006 INPUT N
9008 POKE 16961,N
9010 CLS
9012 PRINT AT 10,4;"INPUT CALIBRATION VALUE"
9014 INPUT N
9016 POKE 17107,N
9018 CLS
9020 PRINT AT 10,2;"INPUT Z-XLR8 STARTING LOCATION"
9022 INPUT L
9023 IF L=0 THEN STOP
9024 LET TA=L+1760
9030 POKE 16631,INT (TA/256)
9032 POKE 16630,TA-256*INT (TA/256)
9040 POKE 16450,131
9042 POKE 16451,64
9044 POKE 16452,23
9046 POKE 16453,72
9048 POKE 16455,INT (L/256)
9050 POKE 16454,L-256*INT (L/256)
9080 RAND USR 18141
9082 NEW
People
NOP followed by a JP 4319h — establishing an entry point immediately after the REM opcode byte itself. The machine code occupies several hundred bytes and implements the complete fast-tape save/load engine.
Load and Verification Sequence
Line 9001 calls USR 18520 and checks whether the return value equals 8. Address 18520 (decimal) falls within the REM payload and acts as a checksum or integrity probe; a return value other than 8 triggers the BAD LOAD error message at lines 9002–9003 and halts execution. This provides a simple but effective post-load sanity check before any system modifications are made.
User-Configurable Parameters
The loader collects three values interactively:
- Timing value — entered at line
9006, POKEd to address16961(system variable area). This controls the bit-cell duration of the fast tape protocol. - Calibration value — entered at line
9014, POKEd to address17107. This fine-tunes the read threshold or pulse discrimination for the tape input circuit. - Starting location — entered at line
9022as variableL. A value of 0 aborts installation (IF L=0 THEN STOP).
The separation of timing and calibration into two distinct parameters allows the routine to be tuned for different tape decks and recording conditions, which is the primary reason the speed improvement spans a range (6–10×) rather than a fixed multiplier.
System Variable Patching
Lines 9024–9050 perform the relocation setup. The target address TA is computed as L + 1760, and the high and low bytes are split and POKEd to addresses 16631 and 16630 respectively — the system variable PROG pointer, redirecting where the ZX81 believes BASIC starts. A further block of six POKEs to addresses 16450–16455 patches what appears to be a jump table or call vector inside the machine code itself, encoding the load address L as a 16-bit little-endian word at 16454/16455 and constants 131, 64, 23, 72 at the preceding four bytes.
Activation and Self-Removal
Line 9080 uses RAND USR 18141 to transfer control to the machine code entry point within the REM payload. On return (if the routine returns at all during normal operation), line 9082 executes NEW, wiping the BASIC program from memory. This leaves the fast-tape machine code resident as a standalone routine without the BASIC overhead, a classic self-installing loader pattern.
Machine Code Architecture Highlights
Inspection of the REM byte sequence reveals several notable Z80 constructs:
ED B0(LDIR) appears multiple times, indicating block memory moves used for code relocation or buffer transfers.DB FE(IN A,(254)) is the standard ZX81 tape/keyboard port read instruction, appearing repeatedly in the tight timing loops that sample the EAR line.D3 FF(OUT (255),A) drives the MIC output for tape writing.ED 53/ED 5B(LD (nn),DE/LD DE,(nn)) are used extensively for 16-bit pointer manipulation, consistent with tracking tape buffer start/end addresses.- The alternating register set is used (
D9=EXX) to preserve counters across interrupt-sensitive sections. - A substantial data table embedded near the end of the REM block (the sequence of bytes in the range
0x18–0x3E) appears to be text or menu strings encoded with a fixed offset, possibly displayed during operation prompts.
Address Reference Table
| Address | Purpose |
|---|---|
16630/16631 | PROG system variable (low/high byte of BASIC program start) |
16450–16455 | Machine code jump/address table patched by loader |
16961 | Timing parameter storage |
17107 | Calibration parameter storage |
18141 | Main entry point of fast-tape routine (RAND USR target) |
18520 | Integrity check entry point (USR returns 8 on good load) |
Notable Techniques and Idioms
- The 16-bit address split idiom
INT(X/256)andX - 256*INT(X/256)is used for both theTAandLvalues, the standard ZX81 BASIC method for computing high and low bytes without bitwise operators. - Using
RAND USRrather thanPRINT USRdiscards the return value cleanly and avoids a screen print side-effect. - The
NEWat line9082is the self-erasing loader pattern: once machine code is resident, the BASIC is no longer needed and its memory is reclaimed. - The
SAVE "%Z"at line9000allows the loader itself to be re-saved to tape before installation begins, ensuring the distribution copy is always accessible.
Content
Source Code
1 REM 0C31943CDDD40CD2B F2A C40233680E5CDB840E1FE7620 4CD23 FC9FE7720 B36 02B7EFE7620 12B18E277237EFE7620DB2318D8CD2B F213B40CB7ECC29 2CB4628FCED4B2540CD4B FCDBD 77EFE77C8FE76C8FE4030DCC92A C4011D6 219 142 023 B78B1C87EFE7628F636 018F2216347227B40CDDD40 6 1CD D45CD9040CDFF44 1 7 0113E40EDB0CDDD40 6 2CD D45CD9040CDFF447E324540237EFE31CA4642FE38CA3241C311413A4540FE37CA 0 0FE27CA5341FE35CAA343FE29CAE343FE2CCA2B44FE2DCA3D44CDDD40 6 3CD7241ED534740CDDD40 6 4CD7241ED534940ED535840C38941CD7F417EFE DCC4E45C42B45C9CD D45CD9040CDFF44C9CDDD40 6 5CD7F413EFD213C40772377CD7745324B40CD8145324C40325B40C3AB41DBFECDD541CDE5411111 0213C40CDF141CDFD41ED5B49402A4740CDF141CDD944CDDD40 6 6CD7F41C9DBFE 6 611 0 01B7AB320FB 520F8C911E8 3CD 6421B7AB320F8C97ECD13421B237AB3C2F141C91EFFCD 6421D20FAC947DBFE78CD4042D3FFCD4042C9CD2742 E 8 7DC2742D4 642 DC21842CD 642C947DBFE78CD4042CD4042CD4042D3FFCD4042CD4042CD4042C9 6FF 520FDC9D9C5D5E53A4540FE2ECA9445FE27CA7142FE35CA4E44FE29CA7544FE2CCAC444FE2DCAD644 6 3C5C35B43CDDD40 6 3CD7241ED534740CDDD40 6 5CD7F41CD9E42CD36432A47407CB528 3225640CD4843CD6E43C39243CDD1421E F214D40CDE042FEFD20F9CDE042FEFD20F2CDE04277231DC2B442213E40114D40 E 71ABEC29E42 D2313C2C542C9D9 EFF1EFBD9C9D9E1E1E1D1C1D9C9D9CD46 FD2D842 6 016FF15DBFEA7F2EB427BBADAE9427A91781747D2E942D9C921 028118340 1F8 7EDB0C921834011E02E 1FA 0EDB0C9F5D5C52A3B40E5CDF540E13E40A528 3CD2B FC1D1F1C3 6 2B120F8C9214D401E D9786231D20FBBEC8 61DC35B432A5640ED5B5840CDE04277231B7AB3C24F43C9C5CDDD40 6 7CD D45C17023C1CD9040C392432BED5B584097862B1B477AB378C274433278402A5B40227940ED5B5B40BBC8 61EC35B43D9E1D1C1D9CDD944CDDD40 6 6CD7F41C911 040ED5347402A1440A7ED5223224940225840CDDD40 6 5CD7F413EFD213C40772377CD7745324B403E 0324C40325B40CD8145ED44324C40325B40C3AB41CDDD40 6 8CD7F41CD 444235E2356ED53784023224740ED534940324640C389417ED62047237EFE D3E8020 2CBF7B0472A10407EB8C8FE8020 5 61FC35B43C5CDF2 9C1EB18ECED5B C40ED53474011D7 2ED534940C3894111 020ED53474011 018ED534940C38941CD5A44CD4843CD6E43C39243CDDD40 6 5CD7F41CD9E42CD36432145403A5440BEC8 620C35B43CDDD40 6 8CD7F41CD 444235E235623224740ED534940324640CD5A442146403A554086CB7728 6 621C5C35B432A4940ED5B5840A7ED5230 6 622C5C35B432A4740225640CD4843CD6E43C39243CD5A442A C40225640CD4843CD6E43C39243C34E44DBFE 6 4C3D94150E52A7B40 1FF 03E18EDB11520FB4E 6 0EBE1 92B4713231AB8C87718F82A C4011F8 219237EFE 028FAC92A C4011D7 219E5CDE044E11130 019C9237EFE1C30FA2B2B11 0 0EBC9CD1E45 1 1 0CD6C45 1 A 0CD6C45 164 0CD6C45 1E8 3CD6C45 11027CD6C45EBC9CD1E45 1 1 0CD6C45 110 0CD6C45 1 0 1CD6C45 1 010CD6C45EB97C91A1BD61DD83C 93D20FCC9 6 D3E 02386 520FBC92A4740ED5B49403E 0861B23477AB378C818F6E1D1C1223C40ED533E40ED434040C5D5E5CDDD40 6 5CD7F41CDDD40 6 9CD D45CDC845 6 ACD D45CDC845CDDA45CD934618F52A C40EB132121 019 1F7 2EDB0CDDD40C9CDD1421E F214D40CDE042FEFD20F9CDE042FEFD20F2CDE04277231D20F8CDA746CD1D46CD5246CD304611 D 0193A544077FE2920 5CD39463E 0FE2720 3CDBC46C9CD3046 6 7114C4023131AFE80C877 5C818F32A C402311D6 219C9CD3046111C 0193A5540E63FC62077233A5540CB77C836 DC9CD30461113 019224D40111027CD7B4611E8 3CD7B461164 0CD7B4611 A 0CD7B4611 1 0CD7B46C92A58403E1B3CA7ED5230FA192258402A4D407723224D40C9D92A3C40ED5B3E40ED4B4040D9 1F0 0CD35 FC91E D214D403E 086231D20FB215A40BEC8E1C3DA452A5640225840CD3046111B 019C359462A4640E5ED5B4240A7ED52224840C31748CDCC467EFEC3CA 947FECDCA 947E6C7FEC2CA 947FEC4CA 9477E121323ED4B4440A7E5ED42E138DAC333477E1213234E234623E52A4240A7 3ED42 B30 E2A4440A7ED4238 62A4840 94D44E1EB71237023EB18C82A46401182 11936C9233647C351471936C923362A1117 019362B23362BED5B46402A1440A7ED52D01BED53 440C97618 92E33353A39 02B2E312A 03326322A18 A2E33353A39 02834323226332918 A2E33353A39 0262929372A383818 A2E33353A39 0312A332C392D18 B3839263739 03926352A18 C38393435 03926352A18 E2A3737343718 72E33353A39 0292E32 03B26372E2627312A18 12B2E312A 03326322A 0 0393E352A 0 0312A332C392D 0 03839263739 018 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 318 0ED5BB5421922B54222F145D12A4240C928263131 0311F1928263131 D1C2B1E27193129 02D311B101D221F252211192E3328 02D3119 E31213129 0102D31113E 0 194 7218340865F B78B17B2320F7 6 04FC9 0FF 0CF82 021 0 0EF 0BF80 082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 035
9000 SAVE "%Z"
9001 IF USR 18520=8 THEN GOTO 9004
9002 PRINT AT 10,11;"BAD LOAD"
9003 STOP
9004 CLS
9005 PRINT AT 10,7;"INPUT TIMING VALUE"
9006 INPUT N
9008 POKE 16961,N
9010 CLS
9012 PRINT AT 10,4;"INPUT CALIBRATION VALUE"
9014 INPUT N
9016 POKE 17107,N
9018 CLS
9020 PRINT AT 10,2;"INPUT Z-XLR8 STARTING LOCATION"
9022 INPUT L
9023 IF L=0 THEN STOP
9024 LET TA=L+1760
9030 POKE 16631,INT (TA/256)
9032 POKE 16630,TA-256*INT (TA/256)
9040 POKE 16450,131
9042 POKE 16451,64
9044 POKE 16452,23
9046 POKE 16453,72
9048 POKE 16455,INT (L/256)
9050 POKE 16454,L-256*INT (L/256)
9080 RAND USR 18141
9082 NEW
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.





