Category:Sinclair ZX81 BASIC: Difference between revisions

m
minor tidying up
mNo edit summary
m (minor tidying up)
 
Line 2:
{{implementation|BASIC}}
 
Sinclair ZX81 BASIC is the dialect of BASIC resident in ROM on the ZX81 home computer (1981) and compatibles (Timex Sinclair 1000, Lambda 8300, and many others). It was developed by John Grant and Steve Vickers. Around 1.5 million ZX81s and 'official' compatibles were sold, together with a substantial number of clones (unofficial compatibles) manufactured in Brazil, Hong Kong, and elsewhere. Today, ZX81 emulators exist for a wide range of platforms and operating systems.
 
ZX81 BASIC is almost a subset of [[ZX Spectrum Basic]], but not quite: the exponentiation operator is spelled <code>**</code> rather than <code>↑</code> (mapped to ASCII <code>^</code>), the jump and subroutine call keywords are spelled <code>GOTO</code> and <code>GOSUB</code> rather than <code>GO TO</code> and <code>GO SUB</code>, etc. Note also that the ZX81 uses an idiosyncratic (non-ASCII) character set, so that the <code>CODE</code> and <code>CHR$</code> functions do not return the same values as they would on the Spectrum. Floating point operations, some string handling, and low-resolution graphics are supported; colour, sound, user-defined functions, the <code>READ</code>, <code>DATA</code>, and <code>RESTORE</code> keywords, and assorted other features are not.
 
The ZX81 has no moving parts and only four microchips: the 3.25MHz Z80 CPU, an 8k ROM chip containing the operating system and BASIC, a 1k RAM chip, and an uncommitted logic array. Since there is no separate video chip, the CPU spends about 75% of its time driving the display and only 25% doing everything else. This can, however, be controlled under BASIC using the <code>FAST</code> and <code>SLOW</code> commands: <code>FAST</code> blanks the screen and allows the processor to operate at full speed, and <code>SLOW</code> reverts to the default behaviour. Even <code>FAST</code> mode can be slower than some other BASIC dialects running on comparable hardware, because ZX81 BASIC has no integer type: all numeric operations have to be done on 40-bit floats using software floating-point routines. If you are used to other popular 8-bit computers, you should expect the ZX81 to feel noticeably slower.
 
The original machine's 1k of RAM was shared between the display, the system variables and stack, and the user's program and variables. TheAn Timex-brandedexpansion modelpack marketedfrom inSinclair increased the UnitedRAM Statesto had16k; aother minimumsizes ofwere 2kavailable from third parties, asallowing didthe manyZX81 clones;to anbe expansionexpanded packto wasa availabletheoretical frommaximum Sinclairof to56k. increaseThe theTimex-branded RAMmodels tomarketed 16k,in andNorth expansionsAmerica ofcame otherwith sizeseither were2k producedor by16k, thirdas partiesdid many of the clones. Most ZX81 BASIC programs on Rosetta Code will work with the 1k configuration, but unfortunately some of them do require 2kmore. The minimum RAM requirement is usually stated in a note to the program: where it is omitted, it can generally be assumed to be 1k.
 
A PDF version of the manual, <cite>ZX81 BASIC Programming</cite> by Steve Vickers, is available [http://zxnext.narod.ru/manuals/ZX81_Manual.pdf here].
519

edits