One of the main limitations of the ZX80 was its lack of support for floating point arithmetic. This was resolved when Sinclair released an upgrade ROM for the computer. The ROM was a drop in replacement and had a capacity of 8K compared to the original ROM's 4K. Fortunately, the ZX80's circuit had been designed to support either a 4K or 8K ROM. Machines were then referred to as either having a 4K or 8K ROM or as supporting 4K or 8K BASIC.
The 8K BASIC ROM was identical to that those used in the newly launched ZX81 and so was designed to be backwards compatible with the ZX80 hardware which lack the functionality to support a steady display. A ZX80 fitted with the 8K ROM effectively operated just like a ZX81 that was permanently in FAST mode. The upgrade kit also included a keyboard overlay to clip down on top of the original ZX80 keyboard, a new BASIC manual and installation instructions. The upgrade kit can be seen in the following photo:
The 8K BASIC ROM was announced on September 11th 1980, and demonstrated at the 4th Personal Computer World show (held at the Cunard International Hotel, Hammersmith, London, stand G22 - source: Personal Computer World magazine, Vol. 4 No. 7, September 1981, page 4 and 114) where two ZX80s were displayed with the upgrade fitted (source: Interface magazine, Vol. 1 No. 4, December 1980, page 2). However, only a month later a statement of withdrawal was made by Sinclair, with a new launch to occur in the first quarter of 1981 (source: Sync magazine, Vol. 1 No. 1, January/February 1981, page 39). This was later changed to March 1981 (source: Sync magazine, Vol. 1 No. 2, March/April 1981, page 47), and would eventually coincide with the launch of the ZX81. The delay was due to the decision to include commands to drive the new ZX Printer (which would not arrive until September 1981) and to add support for the new SLOW mode of the ZX81.
The 8K BASIC ROM upgrade would eventually become available with the launch of the ZX81 and was mentioned within adverts for the ZX81, as shown in the extract below. It retailed for £19.95. Sinclair also confirmed that there were no plans to sell the ZX80 with the 8K BASIC ROM pre-installed (source: Interface magazine, Vol. 1 No. 4, December 1980, page 2), which was presumably because they knew the launch of the ZX81 was imminent.
Vol. 1 No. 3, October 1981, page 44
To make room in the ROM for the new ZX Printer commands, it was necessary to drop support for other BASIC commands that had been planned (and which had probably been implemented by the withdrawal announcement date). The commands dropped were:
- READ, DATA, RESTORE
- DRAW, UNDRAW
- NEW address
- PRINT TO
However, by this stage designs for the keyboard overlay had been produced and photographs exist showing the keyword layout for the original planned ROM:
See Rick Dickinson's photo archive for the complete high resolution version of this photograph. The keys of the overlay were to be blue to match that of the original ZX80 keyboard (source: Interface magazine, Vol. 1 No. 4, December 1980, page 2) and this is confirmed by an original design sketch produced by Rick Dickinson:
The complete high resolution version of this photograph can be seen at Rick Dickinson's photo archive. The bottom of the keyboard also has the wording 'Sinclair ZX80 8K BASIC' and, since the layout lacks the SLOW and FAST commands, this implies that the ROM was originally intended solely for the ZX80.
The new 8K BASIC was previewed in Sync magazine (Vol. 1 No. 3, May/June 1981, page 36) and contained the following (black-on-white) layout of the new keyboard:
However, the real keyboard would have had blue keys on a black background. Click here to toggle the keyboard layout to show it as
A summary of the differences of the original 8K BASIC ROM to the released ZX81 ROM can be seen below:
|Command||Differences to released ZX81 ROM|
|Numeric arrays||Subscripts start at 0. It would be changed to 1.|
|String arrays||Subscripts start at 0. It would be changed to 1.|
|READ v||Populates v with the next available item from a DATA statement.|
|DATA||Contains multiple numeric or string items separated by commas.|
|RESTORE||Does not support a line number.|
|DRAW m,n||Draw a line from the current plot coordinates x,y to x+m,y+n. Also changes the print position.|
|UNDRAW m,n||Erases a line from the current plot coordinates x,y to x+m,y+n. Also changes the print position.|
|GO TO n||The space in the word would be dropped, presumably to save a byte.|
|GO SUB n||The space in the word would be dropped, presumably to save a byte.|
|NEW n||If the optional n parameter is specified then this is the address RAMTOP is set to (equivalent to CLEAR n on the Spectrum).|
|PRINT TO dE||Sets the print number format. Optional parameter d is a digit between 1 and 8 and sets the number of significant digits (default value is 8). If 'E' is present then numbers will be printed in scientific notation. At start up, numbers are printed to 8 digits and scientific notation is avoided where possible.|
|USR n||Returns the result in HL. It would be changed to BC.|
|SQRT n||It would be changed to SQR.|
|RET||It would be changed to RETURN.|
|No SLOW||It would later be included.|
|No FAST||It would later be included.|
The new BASIC manual describes an algorithm for a draw routine (chapter 18, page 120, exercise 6), which possibly could have been based on that intended for the original ROM [Credit: Geoff Wearmouth].
The 8K BASIC ROM leaves three unused system variables at locations 16417, 16507 and 16508. It would seem reasonable to assume that these were once reserved for one or more of the new commands above but it seems odd that they were not reclaimed with the dropping of the commands. However, this would have had an impact on the BASIC manual and perhaps this was too far into production to change. The Spectrum uses the 2 byte system variable DATADD to record the address of the next item to fetch from a DATA statement using the READ command. It seems plausible that the 8K BASIC ROM would have used locations 16507 and 16508 for this purpose. The only other dropped command that might have required a new system variable would be the PRINT TO command and so it seems plausible that location 16417 would have been used to store the print format.
The ZX81 ROM does not produce error report code 'E' and the BASIC manual states that this code is not used. Again it seems strange that this code was not removed. In the Spectrum, code 'E' was used to signal a READ attempt past the end of the DATA list. It seems plausible to assume that the original 8K BASIC ROM would also have produced error 'E' for this condition.
In a review of the ZX80 in Byte magazine (January 1981, pages 94-102), it is claimed that as the "article goes to press, Sinclair Research Ltd has announced two new modules for the ZX80, an 8 K-byte BASIC in ROM and a 16 K-byte programmable-memory module" and that "a later version of the BASIC module currently being sold in England will probably be available soon in the American market". However, it seems unlikely that any of the original 8K ROMs were sold.
The installation instructions consisted of a single sided A5 sheet, which can be viewed using the link below.
|Click here to view the ZX80 8K BASIC ROM upgrade instructions.|
The BASIC manual that came with the upgrade kit was the same as that shipped with the ZX81 and hence was entitled 'ZX81 BASIC Programming'. It only refers to the ZX80 with the 8K ROM twice. First in Chapter 16 (page 111) when discussing the LOAD and SAVE commands where it states that programs saved from a ZX80 with the 4K ROM will not load into the ZX81 (or ZX80 fitted with the 8K ROM). The second reference is in chapter 19 (page 127) when discussing the PAUSE command where it states that if a PAUSE command is executed in FAST mode (as it always would be on a ZX80) then the command must be followed with a POKE 16437,255 command. This POKE command overcame a bug in the PAUSE command within the edition 1 ZX81 ROM when operated in FAST mode, and was clearly known about by Sinclair when printing the BASIC manual and so implies that the code had been committed to ROM by that stage. The edition 2 ZX81 ROM would eventually fix this, with further bugs being fixed in the edition 3 ROM.
The 8K ROM BASIC was not a complete superset of the 4K ROM BASIC. It lacked the TL$ function and generated different tab positions when using commas in PRINT statements. Many 4K ROM BASIC programs utilised the system variables to locate the position of the display file, etc, thereby producing further incompatibility. As a result, it was not possible to type 4K ROM BASIC programs into a machine fitted with the 8K BASIC ROM. Conversion tips were published in books and magazines, e.g. an article by Mark Charlton appeared in Sinclair User magazine (Issue 1, April 1982, pages 43-45).
However, a converter utility was later released by TEAM 4 which would allow 4K ROM BASIC programs to be loaded from cassette and converted. An advert for this utility can be seen below.
Vol. 1 No. 4, November 1981, page 35
An alternate approach was to fit both ROMs inside the ZX80 with a switch to select between them. An advert from Marex Electronics for such a kit can be seen below. A similar scheme was described by Stephen Adams in an article published in Your Computer magazine (Vol. 1 No. 3, October 1981, pages 39-40).
Vol. 1 No. 5, September/October 1981, page 48
It was also possible to update an 8K ROM ZX80 with a SLOW mode board, thereby giving it the equivalent functionality of the ZX81. The board fitted inside the ZX80 and had to be soldered to the PCB. See the advert extract below from CompShop Ltd for a SLOW mode kit for the ZX80.
Vol. 1 No. 1, June/July 1981, page 4
A modern day equivalent of the SLOW board modification has been created by Grant Searle.
To upgrade a ZX80 to support the 8K BASIC requires replacing the 4K ROM with the 8K ZX81 ROM. If an original ROM is not available then a MCM68764 EPROM can be used instead since this is pin compatible with the ZX81 ROM. Note that the MCM68764 EPROM requires a programming voltage of 25V, which many modern day programmers do not support. The real ZX81 uses a masked 2364 ROM.
Reverting a ZX80 back to its original 4K BASIC status is simply a matter of unclipping the keyboard overlap and re-inserting the 4K ROM. If the 4K ROM has not been kept then a 2532 EPROM may be used instead as this pin compatible with the ZX80 ROM. Note that the 2532 EPROM requires a programming voltage of 25V, which many modern day programmers do not support.