Category:Sinclair ZX81 BASIC: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{language|Sinclair ZX81 BASIC}} |
|||
{{implementation|BASIC}} |
{{implementation|BASIC}} |
||
⚫ | |||
⚫ | 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 unconditional 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. |
|||
The original machine's 1k of RAM was shared between the display, the system variables and stack, and the user's program and variables. The Timex-branded model marketed in the United States had a minimum of 2k, as did many clones; an expansion pack was available from Sinclair to increase the RAM to 16k, and expansions of other sizes were produced by third parties. |
|||
⚫ | |||
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]. |
|||
⚫ | 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 unconditional 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. |
||
If you do not have a ZX81 emulator installed on your computer, you can type any of these programs into the [http://www.zx81stuff.org.uk/zx81/jtyone.html JtyOne online ZX81 emulator] and see what they do. |