Loading programs into the ZX80 is trickier than on the ZX81 because the ZX80 does not provide any visual feedback as a program is loading. The display will remain black and so gives no clue whether the volume setting of the cassette player is suitable. Unless the cassette player has a monitor function to allow the sound to be listened to when being played, there is no indication of when the program should have loaded. This makes the process of loading ZX80 programs a bit of a hit and miss affair, and hence often very time consuming.
This page presents a small machine code program I have written for the ZX80 that provides on screen feedback similar to that of the ZX81 when loading. The utility does not actually attempt to load a program but simply monitors the tape input and reflects the signal to the display.
The program file is available from the downloads section.
The Volume Tester utility consists of a modified version of the load routine found in the ROM. It differs in three ways:
- When the tape signal is sampled to detect the start of a byte, the utility reflects this state to the display via an OUT ($FF),A instruction just as was later done on the ZX81.
- The utility reads in bytes but does not attempt to store them in memory.
- The utility does not check for the end of a program and will continue to reflect the tape input signla to the display until the SPACE key is pressed to return to BASIC.
With the utility running, a cassette is played and the cassette player volume and tone controls adjusted until a steady mix of almost equal sized black and white bands are produced.
Note that the pattern of lines displayed will vary to some degree based upon the television set being used.
A numeric array is used to hold the machine code routine, and the BASIC program is used to populate this array. The program listing for the Volume Tester utility is shown below:
The BASIC program prompts for each integer by displaying the current array element value before requesting the new value. If an incorrect value is entered then the program can be stopped, the value of N set from the command line, and the program continued using GO TO 30. The 24 integer values to be typed in are shown below:
To verify the values entered, delete lines 10, 30 and 50 and type GO TO 20. When the screen becomes full, type CONTINUE to see the last value. If all values are correct then delete lines 20 to 70, thereby leaving only line 100. Now save the program a number of times to cassette (the program should only take about 4 seconds to save). Lines 10 to 70 were removed to reduce the size of the program and hence to shorten the time it takes to load back in from cassette, which will hopefully make loading it back in more reliable.
The utility is run using GO TO 100. To quit the utility and return to BASIC, press SPACE.
The utility can be downloaded below, and is made available for private use or for public demonstrations. It is not to be included in emulator distributions or sold as part of a commercial package. Please do not re-distribute the program file but link to this site instead.
|Click here to download ZX80_VolumeTester in .O program format. Run the utility using GO TO 100.|