Some of the most popular peripherals produced for the ZX Spectrum are introduced in the sections below. Many of the items listed are supported by several modern emulators. Brief details of virtually every expansion developed for the original ZX Spectrum are available from the Sinclair Hardware Index.

Sinclair Interfaces:
Sinclair Research produced 2 official interfaces for use with the ZX Spectrum, both of which are documented below. Of these, the ZX Interface II is the simpler, being essentially a Joystick interface and ROM cartridge slot. The ZX Interface I is much more complex, and is discussed in more detail. Please refer to the '48K Reference' page for additional information.

  • ZX Interface I
    The ZX Interface I allows up to 8 ZX Microdrives to be connected to a single ZX Spectrum, features an RS-232 port, and provides networking facilities that allow up to 255 machines to directly communicate with each other. Sinclair BASIC includes commands to access the features of the ZX Interface I and the ZX Microdrive. The following system variables are used in addition to those specified for the standard machine:
    Notes   Address Name    Contents
    X1      23734   FLAGS3  Flags
    X2      23735   VECTOR  Address used to extend the BASIC interpreter
    X10     23737   SBRT    ROM paging subroutine
    2       23747   BAUD    Two byte number determining the baud rate
                            calculated as follows:
                            BAUD=(3500000 / (26 * baud rate)) - 2
    1       23749   NTSTAT  Own network station number
    1       23750   IOBORD  Border colour used during I/O. You can poke
                            any colour you want.
    N2      23751   SER_FL  2 byte workspace used by RS232
    N2      23753   SECTOR  2 byte workspace used by Microdrive
    N2      23755   CHADD_  Temporary store for CH_ADD
    1       23757   NTRESP  Store for network response code
    1       23758   NTDEST  Beginning of network buffer contains
                            destination station number 0-64
    1       23759   NTSRCE  Source station number
    X2      23760   NTNUMB  Network block number 0-65535
    N1      23762   NTTYPE  Header type code
    X1      23763   NTLEN   Data block length 0-255
    N1      23764   NTDCS   Data block checksum
    N1      23765   NTHCS   Header block checksum
    N2      23766   D_STR1  Start of 8 byte file specifier
                            2 byte drive number 1-8
    N1      23768   S_STR1  Stream number 0-15   *See note.
    N1      23769   L_STR1  Device type... "M", "N", "T" or "B"
    N2      23770   N_STR1  Length of file name
    N2      23772   D_STR2  Second 8 byte file specifier
                            used by MOVE and LOAD commands
    N1      23782   HD_00   Start of workspace for SAVE, LOAD, VERIFY and
                            MERGE data type code
    N2      23783   HD_0B   Length of data 0-66535
    N2      23785   HD_0D   Start of data 0-65535
    N2      23787   HD_0F   Program length 0-66535
    N2      23789   HD_11   Line number
    1       23791   COPIES  Number of copies made by SAVE
            23792   Start of Microdrive MAPs or CHANS
    Note: The original user manual differs slightly from this entry, specifying a range of 1-15. The command CAT #0, 7 will put the value 0 in address 23768, as will some OPEN and MOVE commands.

  • ZX Interface II

    Intended to be a multi-purpose addition to the ZX Spectrum, the ZX Interface II provided two Joystick ports, and a ROM cartridge socket that allowed games to be loaded instantly. It met these goals very well, but was not particularly popular.

    The joystick interface itself was largely a success, with many games including support for the 'Sinclair' joystick types. Technical details on the joystick are available in the Joystick Interfaces section.

    On the other hand, the ROM cartridge socket was not successful: only 10 titles were released on ROM cartridge, and as many of the most popular games (the Horace series, and several by Ultimate) were already available on cassette at around half the price, no market was ever developed. Sinclair had hoped to produce many more titles on cartridge, including several utilities and programming languages, but the lack of popular support for the interface saw it being withdrawn from sale within a year of release.

Adding a printer to a ZX81 or ZX Spectrum is very easy; the most popular models simply attached to the edge connector and could be accessed immediately using Sinclair BASIC. The most common printers are listed below, with links to additional information where this is available. Please see the emulators page for details of those available on your platform that include printer emulation.

  • ZX Printer
    The ZX Printer was released in 1981 and is compatible with the ZX80 (with ROM upgrade), ZX81 and ZX Spectrum. It is an extremely compact 32 column printer which uses aluminium coated paper. The printed image is 'burned' onto the surface of the paper by two metal pins which travel across the paper. A voltage is passed through these pins which causes a spark to be produced, leaving a black dot. See the documentation section if you need a copy of the original manual or service guide. The ZX Printer is addressed in the same way as the Alphacom 32 and Timex TS2040, with the following notes:

    • D0 and D7 are both latched so that they remain high until the computer writes something to the printer. So even if you don't make use of the information you've read in, you should output an instruction (with appropriate data) to reset the latches until the next signal. These bits may be in either state on switch on, and aren't affected by the feed button.

      The paper detect signal is also used internally by the printer to make sure that the styli stop off the paper. Note that if power is applied to the stylus, the paper signal will go high even if the printer is between scans, so the stylus must be turned off before attempting to detect the edge of the paper.

  • Alphacom 32
    The Alphacom 32 was one of the leading alternatives to the ZX Printer. Slightly larger than the ZX Printer, the Alphacom 32 uses thermal paper and features 32 column output as standard. Print speed is around 2 lines per second, which is considerably faster than the ZX Printer. Replacement paper rolls are still offered for sale - try Roltech. Specifications are as the Timex TS2040, with a 240V adaptor being required, rather than 120V as mentioned below.

  • QL-800 Printer
    A 9-pin dot-matrix printer was introduced shortly after the release of the QL. Styled to match the QL in appearance, the printer attached directly to the SER1 port on the back of the machine, and was accessible using the OPEN #[n], ser command, followed by PRINT #[n], LIST #[n], etc. ([n] is a channel number). The technical specifications for the QL-800 printer are:

    • Print Method: Impact Dot Matrix.
    • Print Head: 9 pin.

    • Print Mode: Various
      • Standard Pica: 10 cpi
      • Standard Elite: 12 cpi
      • Standard Condensed: 17 cpi
      • High Quality Pica: 10 cpi
      • High Quality Elite Pica: 12 cpi

    Multiple modes per line are permitted. Bold, Double-Strike, Double-Width, Superscript/Subscript, Proportional and Italic character modes are also available.

    • Paper Width: 4 - 10 inches.
    • Paper Thickness: 0.07 - 0.1 mm.

    • Power Supply:
      • Input: 117V AC, 220/240V AC +/- 10%, 50/60Hz +/- 3%
      • Power Consumption: 30W (self-test), 15W (standby)

    4 dip switches on the back of the printer allow various settings to be adjusted, after the initialization process:
    Switch No.      Function                On      Off     Default
       1-1          Baud rate selection      See below        OFF
       1-2          Baud rate selection      See below        OFF
       1-3          Page length setting     12in    11in      OFF
       1-4          Character zero shape     ě       0        OFF
    Switch 1-1 and 1-2 control the baud rate:
    Switch 1-1       Switch 1-2     Baud Rate
       OFF             OFF            9600
       ON              OFF            4800
       OFF             ON             2400
       ON              ON             1200
    The RS-232C, 25 pin serial interface connector is wired as shown below:
    Pin	Signal		Purpose
     1	FG		Frame Ground
     3	RXD		Input Data
     7	SG		Signal Ground
     20	DTR		Busy/Ready state
    			On  (+3 ~ +25V) = Ready
    			Off (-3 ~ -25V) = Busy
  • Timex TS2040
    The original ZX Printer was not imported to the US directly, rather Timex distributed a branded version of the Alphacom 32 (see above). The TS2040 can be used with any of the Timex or Sinclair systems. The technical specifications of the TS2040 are:

    • Paper Type: Thermal paper, black or blue print, end-of-roll indicator.
    • Roll Size: 4.33in (110mm) Wide x 1.9in (48mm) Diameter x up to 25m (82 feet) Length.

    • Power Supply: DVE part no. DV-2412a
      • Input: 120V AC, 60Hz, 35W
      • Output: 24V AC, 1.2A

    A self-test mode is built-in to aid troubleshooting. This mode is accessed by pressing the [OFF] button once while holding down the [ON/ADVANCE]. The TS2040 will repeatedly print a line of 8's and a line of 1's.

    The TS2040 is wired as a z80 I/O port, selected by A2 being at low level and A7 being at high level. No other address lines are recognised. To send information to the printer, use: OUT (FB), A - opcode D3 FB, assuming the data is in register A. The data bits have the following meanings:

    • (D2) High level means stop the motor, low means start it.
    • (D7) High level applies power to the print head.

    All these lines remain in the state they were last at, until new data is sent to the printer. At switch on, or after pressing the feed button, D7 is set low; D2 is left high once feed is finished. The other data lines are not used.

    To fetch information from the printer, the z80 instruction: IN A, (FB) - opcode DB FB; will put the data into the accumulator. The following bits are used:

    • (D6) Will be read as low if the printer is there, high if it is not, and is used solely to check if the printer is connected.
    • (D0) This is high when the printer is ready for the next bit.
    • (D7) This line is high for the start of a new line.

    The TS2040 was originally introduced at a cost of $99.95.

  • Seikosha GP-50s
    A (relatively) expensive alternative to the Alphacom 32 and the ZX Printer, the Seikosha GP-50s provided a significantly higher quality output as compensation. The GP-50s is a plain paper, dot matrix printer capable of producing up to 40 characters per second, across a maximum of 46 columns. Tractor-fed paper may also be used if preferred.

    The maximum paper width that can be used is 5in, and the printer came fitted with a ZX Spectrum compatible cable/interface. Being a dot matrix design, it was significantly more noisy in use than the thermal alternatives, but the attached 'flip-over' paper cover helped reduce this somewhat during use. A manual paper-feed allows paper to be finely aligned, and the printer is a distinctive grey/white colour.

    The GP-50s originally cost £69.95 (ex. VAT)

Mass Storage Devices:
The primary storage medium for the ZX Spectrum (and earlier models) was traditional cassette tape. As programs became more complex, and as both programmers and users became increasingly frustrated at the poor reliability and slow loading times associated with tape, several alternatives were developed. The ZX Microdrive from Sinclair Research was widely anticipated, and sold extremely well; the Sinclair QL (and ICL One-Per-Desk variant) has 2 microdrives built-in.

Various disk-drives and improved tape-based systems were also introduced - the ZX Spectrum pre-dates affordable floppy disk drives, although these became increasingly popular options throughout the mid 1980s as prices fell. The ZX Spectrum +3 includes a 3in disk drive as standard, as do competing models from other vendors. Please refer to the disk reference page for details of disk-based systems.

  • ZX Microdrive
    The ZX Microdrive was a tape cartridge system, announced in April 1982 and launched in June 1983, although development on the system may have begun as far back as 1981. Used in conjunction with the ZX Interface I to provide a faster alternative to cassette tape, Microdrive cartridges contained 6 metres of 1.9mm magnetic tape stored in an endless loop configuration offering 85KB of storage, which could be accessed at speeds of around 15KB/sec. Up to 8 Microdrives could be connected to a ZX Spectrum via the ZX Interface I. Later improvements to the Microdrive format would allow the QL to use around 100KB per cartridge, but the two formats were incompatible with each other.

    » ZX Microdrive []
    » Microdrive Development []

  • Rotronics Wafadrive
    The Rotronics Wafadrive is similar in concept to the ZX Interface I and Microdrive combination, although quite different in design. It attaches to the expansion connector of the original ZX Spectrum and is powered directly by the computer via a short ribbon cable; although a pass-through connector is included, further expansion is limited because of this.

    Two tape drives are provided, each capable of using cartridges of up to 128K in capacity (16K and 64K cartridges were also produced), with RS-232 and Centronics ports also included. In common with the ZX Microdrives, the cartridges were actually continuous loops of tape, rather than disks as might be suggested by their external appearance. Data is retrieved from tape by reading it as it passes over the tape head, but the loop only runs in one direction making access times a little slower than from disk. The whole tape must loop around if data is 'behind' the current tape position. Wafadrive and Microdrive tapes are not compatible with each other.

    The Wafadrive Operating System is copied to addresses between 23754 and 26046 when the system is connected. This can cause some software to fail, and cannot easily be relocated without additional software or hardware. Several commercial backup utilities allowed programs to be transferred between cassette and Wafadrive cartridge, in common with other mass storage systems.

    Although relatively popular as a bulk storage device, the Wafadrive was eventually sold off very inexpensively following the collapse of Rotronics in 1986, and very few commercial applications were available ('Spectral Writer', a word processing package, was included with the drive). See the documents page for a link to the Wafadrive Command Summary. Sintech can occasionally supply wafers of various different capacities.

    • Storage capacity: Up to 128K per drive (formatted).
    • Transfer rate: 18K Baud.
    • Tape speed: 10" per second (fast search = 15" per second).

    • Timing: Formatting (timings are approximate).
      • 16K: 47 seconds.
      • 64K: 2 minutes 30 seconds.
      • 128K: 4 minutes 42 seconds.

    • Timing: Cataloguing (timings are approximate).
      • 16K: Up to 8.5 seconds.
      • 64K: Up to 27 seconds.
      • 128K: Up to 47 seconds.

    Emulation of the Rotronics Wafadrive is provided by RealSpec for MS-DOS and Microsoft Windows systems.

  • Timex TS2020 Program Recorder
    The TS2020 is a simple cassette recorder, with built-in loudspeaker, tape counter, tone control and VU meter, designed for use with any of the Timex systems introduced to North America. The technical specifications of the TS2020 are:

    • Output Power: 500mw.
    • Speaker: 2in (50mm).
    • Impedance: 8 Ohms.
    • Tape Speed: 1-7/8in (4.75cm) per second.
    • Frequency Response: 200-6300Hz.

    • Power Supply: The TS2020 can be powered by batteries, or an (optional) AC Adaptor.
      • Input: 6V DV via 4 'AA' Batteries or 120V AC, 60Hz

    The TS2020 was originally introduced at a cost of $49.95.


  • Joystick Interfaces

    A large number of joystick interfaces were produced for use with the ZX Spectrum; the most common are documented here.

    • Kempston

      The Kempston joystick interface differs from the other common types in that it does not map to the ZX Spectrum keyboard directly. Rather, it maps to a particular hardware port (0x1f) and support must therefore be 'built-in' to the software. Fortunately, the Kempston joystick interface was enormously popular, and support was very easy to provide, making Kempston control a common, almost standard, feature of most games.

      Assuming an appropriate interface is attached, reading from port 0x1f returns the current state of the Kempston joystick in the form 000FUDLR, with active bits high.

    • Sinclair

      The 'left' Sinclair joystick maps the joystick directions and the fire button to the 1 (left), 2 (right), 3 (down), 4 (up) and 5 (fire) keys on the ZX Spectrum keyboard, and can thus be read via port 0xf7fe; see the Port 0xfe section for full details. For any of the joystick interfaces which map to keys, any game offering the appropriate form of joystick control can instead be played with the listed keys.

      The 'right' Sinclair joystick maps to keys 6 (left), 7 (right), 8 (down), 9 (up) and 0 (fire) and can therefore be read via port 0xeffe.

    • Cursor

      A cursor joystick interfaces maps to keys 5 (left), 6 (down), 7 (up), 8 (right) and 0 (fire). Reading a cursor joystick thus requires a combination of bit 4 of port 0xf7fe and bits 0, 2, 3 and 4 of port 0xeffe. Common interfaces offering a cursor joystick option included those produced by Protek and AGF.

    • Programmable

      Programmable joystick interfaces allow joystick directions to be mapped to any key on the keyboard, usually through software. Some models used a series of 'jumpers' to program the joystick-key relationships, although these are relatively uncommon (eg the AGF interface).

      Typically, a short program is loaded that prompts for a joystick direction and corresponding key to be chosen. The program then exits, and a game is loaded. Choosing the 'keyboard' option will allow the joystick to be used instead, meaning that virtually any title can be easily controlled. Common models include those by DK'Tronics and AGF.

    • Fuller

      The Fuller Audio Box included a joystick interface. Results were obtained by reading from port 0x7f in the form F---RLDU, with active bits low.

    • Timex

      The Timex TS2068 and TC2068 (but not the TC2048, which has a Kempston interface) have a built-in joystick interface, but reading from this is slightly more complicated as the joysticks are attached to register 14 of the AY-3-8912 sound chip. Address bits A8 and A9 determine which joystick will be read (01=one, 10=two, 11=both OR-ed). So mainly port 0x01f6 is used to read joystick one, and mainly port 0x02f6 is used to read joystick two (with R14 as the active register). When R14 acts as an output port (bit D6=1 in register R7), the bits in register R14 have following meaning:


        bits D0-D4: 'masks' for reading bits D0-D4; may also be used by third-party peripherals
        bit D5:     If D5=0 then access to the (never released) 16MB Bus Expansion Unit is enabled.
        bits D6-D7: may be used by third-party peripherals


        bit D0:     up (0=active)
        bit D1:     down
        bit D2:     left
        bit D3:     right
        bit D4:     fire (0=active)
        bits D5-D7: last values sent to these bits

      The bits D0-D4 when reading return valid values only if they are not masked, i.e. if corresponding mask bits is one, else they will return zeroes. When register R14 acts as input port (bit D6=0 in register R7, this is the only reliable way for joystick reading), output is ignored and the bits in register R14 have following meanings:


        bit D0:     up (0=active)
        bit D1:     down
        bit D2:     left
        bit D3:     right
        bit D4:     fire (0=active)
        bits D5-D7: always one
      In this case, bits D0-D4 are not masked. This leads to the following typical code for reading the joysticks:

        LD A,7
        OUT (0xf5),A  ;set R7
        IN A,(0xf6)
        AND 0xbf      ;clear bit 6 to read from i/o port a - R14
        OUT (0xf6),A
        LD A,14
        OUT (0xf5),A  ;set R14
        LD A,3        ;(3=both joysticks, 2=left only, 1=right only)
        IN A,(0xf6)   ;(FxxxRLDU, active low)

      This method ensures other sound chip functions are not disrupted.

  • Multiface 1 / 128 / +3
    Developed by Romantic Robot, the Multiface Interface(s) connect to the edge connector of the ZX Spectrum, and provide a wide range of additional features, including a Kempston-compatible Joystick connector. Several different models were produced for use with different systems, as indicated by their names.

    The Multiface requires no system memory; it has 8K EPROM and 8K RAM available on-board (Multiface 1 has 2K RAM only), and needs no software to operate. One of the most appealing features is the ability to transfer programs to Microdrive, Disk, Wafadrive or Tape easily and quickly; saved programs can be compressed, and can be re-loaded without a Multiface being attached. In addition, it is possible to read through the contents of memory at any time, making the Multiface popular with games players and developers alike.

    The Multiface 1 was introduced at a cost of £39.95

  • Currah ÁSpeech
    The ZX Spectrum is not noted for its audio quality, making the development of this speech synthesizer an even more remarkable accomplishment. This device attaches to the expansion port of the ZX Spectrum and reproduces a "human" voice through the use of allophones; essentially phonetic descriptions of words or letters. Phrases can be built up, with emphasis of 'hard' sounds as required. A table of allophone sets is included with the ÁSpeech programming manual. The ÁSpeech can be controlled from BASIC or machine language - several commercial games support the ÁSpeech (see the World of Spectrum and TZX Vault for lists)

    The Currah ÁSpeech is simulated by several modern emulators, including Klive, Spectaculator and SPIN.

  • Fuller Audio Box
    The Fuller Audio Box used the AY-3-8912 sound chip, found in the ZX Spectrum 128K and others, and could be attached to the edge connector of the ZX Spectrum. In addition to providing improved sound quality, a Joystick port and additional EAR/MIC sockets were included.

    Standard Atari-style joysticks could be connected to the interface, which is similar to the more popular Kempston design. The sound board works on port numbers 0x3f and 0x5f. Port 0x3f is used to select the active AY register and to receive data from the AY-3-8912, while port 0x5f is used for sending data. The joystick is connected to port 0x7f.

    The unit also provides a pass-through connector to allow additional peripherals to be attached. An optional speech-chip was available. Many emulators provide Fuller Audio Box emulation.

  • Mice
    Several companies produced mice for use with the ZX Spectrum, the most popular of which are quite widely supported by modern emulators. Of those available, the AMX and Kempston models are of particular note:

    • AMX Mouse:
      The AMX Mouse package comprises a 3-button mouse, interface and a suite of software. The interface attaches to the edge connector of the ZX Spectrum, and includes a parallel printer port. 3rd party application support for the AMX mouse was quite wide, with the emphasis on art and design packages initially. The AMX Control Language adds 28 commands to the original system, allowing mouse control to be easily incorporated within BASIC programs as required.

    • Kempston Mouse:
      Although better known for their Joystick interfaces, Kempston also introduced many other devices. Their mouse is emulated by Spectaculator, vbSpec, SPIN, and others.

      The 2-button mouse can be accessed from either machine code or BASIC using the following commands:

      • Horizontal position: IN 64479
      • Vertical postition: IN 65503
      • Buttons: IN 64223 [255 = None], [254 = Left], [253 = Right], [252 = Both]

  • Timex TS1016
    The TS1016 attaches to the expansion connector of the TS1000, increasing the memory size from 2K to 16K. If attached to a TS1500, the memory increases from 16K to 32K.

    The TS1016 was originally introduced at a cost of $49.95.

  • Prism VTX-5000 Modem
    This modem was designed to sit underneath the original ZX Spectrum, and is styled to match this system. The device attaches to the expansion connector and is powered by a small external supply. Although impractical for modern use, the VTX-5000 was very popular with users wishing to connect to Micronet (an online service provided by British Telecom) and had the necessary software pre-installed in memory. Alternatives included the Prestel, Dialsoft services, and a number of 'private' BBS operated by small user groups, individuals, etc. The VTX-5000 operates at up to 1200 baud.

  • Timex TS2050
    Timex/Sinclair contracted Westridge Communications to produce a modem for use with their recently introduced range of computers. Originally planned for a November 1983 release, the modem was delayed by the departure of Timex from the home computer market. Undeterred, Westridge continued with production and eventually released their design as the 'Westridge 2050' for the TS1000, TS1500 and TS2068 models.

    The modem is separately powered and attaches to the expansion connecter of these machines using a pass-through connector that allows one additional device to be attached. The technical specifications of the TS2050 are:

    • Data Format: Serial, Binary, Asynchronus.
    • Data Rate: 0 to 300bps, Full Duplex.
    • Modulation: Frequency shift-keyed (FSK)
    • Line Interface: FCC Part 68 Direct Connect.

    • Transmit Frequency:
      • Mark: 1270Hz (Originate) and 2225Hz (Answer)
      • Space: 1070Hz (Originate) and 2025Hz (Answer)

    • Transmit Frequency Accuracy: +/- 0.01%
    • Transmit Level: -12 dBm typical.

    • Receive Frequency:
      • Mark: 2225Hz (Originate) and 1270Hz (Answer)
      • Space: 2025Hz (Originate) and 1070Hz (Answer)

    • Receive Frequency Tolerance: +/- 0.05%
    • Carrier Detect Threshold: - 44 dBm typical
    • Carrier Detect Delay: 250ms

    • Power Supply: DVE part no. DV-91a
      • Input: 120V AC, 60Hz, 16W
      • Output: 9.75V DC, 650mA
      • Centre Polarity: +ve

    The TS2050 was supplied with the MTERM/T Software (developed by Micro-Systems Software) on a multi-format cassette intended for use with the TS1000, TS1500 and TS2068 computers. Other software may be used if required. The TS2050 was originally introduced at a cost of $199.95.