ZX81 Technical Details and Trivia
- an expansion port for increased RAM or access directly to the Z80 microprocessor - 44-pin male edge connector
- an RF output socket - standard TV aerial type (RCA phono)
- an earphone jack (used for reading programs from cassette) - 3.5mm jack socket
- a microphone jack (used for writing programs to cassette) - 3.5mm jack socket
- a power supply socket - 9V DC @ 1A - 3.5mm jack socket.
- The ZX81 BASIC ROM was also responsible for character generation. Unlike the ZX80's ROM, the ZX81 ROM contains a sub-interpreter to handle floating-point arithmetic.
- Like its forebear, the ZX80, the ZX81 does not have a dedicated graphics chip, so the Zilog Z80A has to do this work as well. One upgrade however is that the ZX81 got an NMI (non-maskable interrupt) generator. This meant the ZX81 provided a 'FAST' mode, which would use the NMI to halt all updating of the display while the CPU could get on with other tasks. In 'SLOW' mode, it cycled the CPU's tasks between updating the display and performing other tasks like calculations during the vertical blanking interval (VBI - the time between drawing the end of the final line of a display frame and the start of drawing the beginning of the first line of the next frame). It sounds bad now, but in its time this was genuinely useful! The ZX80 couldn't update the display while a program was actually running.
Hover your mouse over the circuit board for a description of the components
Note: The above PCB is an Issue 3 board
Component details reproduced with friendly permission from Sothius' Home, www.sothius.com
- The ZX81 eventually got RAM expansion devices up to 64K, although whenever the expansion slot was in use, the 1K of onboard RAM was disabled. This is actually a great way to identify potentially faulty on-board RAM chip(s) - if the computer works with a RAM expansion device connected, but fails with it disconnected, you know you have faulty onboard RAM.
- Brazilian ZX80s and ZX81s were called 'TK', such as the TK80 (ZX80 with 4K ROM, 1K RAM), TK82 (as TK80 but with 2K RAM), TK82-C (ZX81 with 2K RAM and NMI generator on a daughterboard), TK83 (ZX81, 2K RAM, a ULA chip in place of discrete TTL chips on earlier model numbers, a joystick interface onboard and a new case), and TK85 (ZX81 with a 10K ROM(!), 16K RAM, PSG solder points, a rubber keyboard and more). The TK83 and TK85 had a DIN socket joystick connector.
- When loading or saving with the ZX81, a common characteristic are some zig-zag stripes across the screen. This is because the same pin on the ULA that is used for the video signal is also used for tape output, resulting in this video 'interference' during loading and saving!
- The area where the RAM is installed in the ZX81 has drawn outlines and pads on the PCB that support two configurations: (1) is to have two 2114 18-pin RAM chips in IC4A and IC4B, and (2) is to have a single 6116 24-pin RAM chip in IC4. It's not uncommon to have IC4 fitted with a 28-pin socket, especially on Issue 1 boards supplied as "home-build" kits.
- The custom ULA (Uncommitted Logic Array), also referred to as the SCL (Sinclair Computer Logic) chip was first introduced with the ZX81. It combined the ZX80's video circuitry and an NMI generator into a single chip, thus reducing the cost of manufacturing the computer.
- The ZX81 used static RAM (SRAM) internally, but RAM expansions generally used Dynamic RAM (DRAM). SRAM has its own memory refresh logic built-in, whereas DRAM needs to rely on external circuitry to keep refreshing its contents, otherwise the contents are lost.
- The ZX81 ROM was 8 KB in size (double that of the ZX80), and contained an updated BASIC interpreter complete with floating-point and trigonometric capability, plus new commands to communicate with the ZX Printer.
- The ZX81 was initially sold in the United States through a small Sinclair operation. However, soon, Sinclair struck a deal with Timex (who were manufacturing all the ZX81s anyway up in their Dundee, UK plant) to sell them 'Stateside. They were permitted to rebrand the ZX81, so it was sold as the Timex-Sinclair TS1000.
- The contents of stored cassette files is completely different between the ZX80 and ZX81. Despite this, the BASIC language is very similar, so as long as a ZX81 program doesn't use any of the new ZX81-only commands not found on the ZX80, that BASIC listing could be typed into a ZX80 and it would work.
- SLOW mode was so-called because it does heavily slow down the apparent speed the Z80 CPU can perform tasks. In a 50 Hz (PAL) ZX81, the CPU runs at an effective speed of 0.8046 MHz in SLOW mode, but 3.25 MHz in FAST mode. On 60 Hz (NTSC) ZX81s, it's even worse, with SLOW mode running at an effective 0.5364 MHz !
- ZX81 BASIC programs are actually much slower to execute than ZX80 programs - this is because the ZX81 BASIC interpreter uses floating point values rather than integers (floating point values require more memory to store and hence take longer to retrieve), even with the ZX81 running in FAST mode.
- The ZX81 power supply actually provides an output of 9V DC to the computer. This is then smoothed down to 5V with the use of a 7805 voltage regulator (which basically converts electrical energy into heat). Since the metal heatsink is directly below the keypad on the ZX81, it's not uncommon for the keypad to get quite hot in use! You could send just 5V into the ZX81 and it would work, but bear in mind that the full 9V is also sent directly to the expansion connector as some peripherals require this voltage.
- The ZX81's display was limited to 256 x 192 pixels, but it didn't have the ability to set single pixels. Instead, the default mode was 32x24 characters, with each character occupying an 8x8-pixel block. Some characters in the text 'font' (character set) are split into 2x2 blocks with each one of these being made up of 4x4 pixels. These allow the display of 64x48, i.e. double the number, of block "low-resolution" graphics. By overwriting the default character set with other content, sometimes called UDGs, or user-defined graphics, you could get a ZX81 to show graphics even though it was still strictly in 'text' mode. This trick was discovered pretty early and lots of games exploited it.
- Another new addition for the ZX81 over the ZX80 was the introduction of a 'Function' button. This allowed functions and commands to be automatically typed through a single keystroke. On the earlier ZX80, functions had to be typed fully by hand as single characters.
- The biggest challenge most owners had with the ZX81 was lack of RAM, hence why a deluge of aftermarket "RAM packs" were soon flooding the market. 16K was the most common size, but 32K and 64K were also available. In all cases, installing a RAM pack to the computer's expansion bus disabled the onboard 1 KB of RAM. A 64 K RAM pack actually provided a maximum of 56 K, as the system had to always have its 8 K of ROM code mapped to memory.
- The ZX Printer drew its power from the computer. Because of this, you needed to have a souped-up power supply to run both!
- The ZX81's new floating-point code actually had a bug where it would tend to round-down values by accident. The same occurred on the Timex-Sinclair TS1000, since it used an identical ROM. The TS1500 had a tendency to round-up values by accident.
- To find out through BASIC how much RAM your ZX81 has, type in and run this short program (which returns the 'RAMTOP' - the highest addressable memory location):
10 FOR N=16640 TO 65536 STEP 256
20 POKE N,0
30 IF PEEK N<>0 THEN GOTO 50
40 NEXT N
50 PRINT "MEMORY SIZE ";(N/1024)-16;"K"
The program starts from 16640 because the first 16 K (locations 0-16383) of the ZX81's memory map is the 8 K ROM plus a copy of the 8 K ROM. The next 128 or so bytes are used to store system variables, and this is followed by screen memory. This means that the 'lowest' addressable RAM location by BASIC is 16640.
- In France, the ZX81 required a slight modification to support the positive video modulation of SECAM television sets. In the USA and Canada, the ZX81 got a different ULA as well as RF modulator to cope with their 525-line VHF (NTSC) televisions.