The circuitry of the ZX Interface 2 is very simple and is comprised of a single custom made IC which performs address decoding for the twin joystick interface. The ROM cartridge socket simply exposes signals already available from the Spectrum's edge connector.
As can be seen from the P.C.B. photographs, at least two issues of the board were produced. However, the Service Manual indicates that no modifications were made to the ZX Interface 2 design and hence it is likely that only issue 2 versions were sold.
The circuit diagram of the ZX Interface 2 is shown below:
|ROM Cartridge Socket|
The pinout of the ROM cartridge slot is shown below. Note that the contacts of the socket, and of each ROM cartridge, are gold plated to achieve a more reliable electrical connection.
When a ROM cartridge is plugged in, it connects the /ROMCS (ROM Chip Select) line directly to the 5V line. This disables the Spectrum's ROM thereby allowing the cartridge's ROM to appear in the 0 - 16384 memory map area. The cartridge's ROM must only output to the data bus when the lower 16K of memory is addressed. When an access to this memory area occurs, the address lines A14 and A15 and the /MREQ (Memory REQuest) line will all be at logic 0. These three lines are therefore used inside the cartridge to enable its ROM. Address lines A0 - A13 specify a location within the ROM and the data from that location is output on lines D0 - D7. Note that the /RD (ReaD) and /WR (WRite) signals exposed at the edge connector of the Spectrum are not available at the ROM cartridge slot. As a result, both read and write accesses to the ROM will be treated as a memory read. This is not a problem as, by its very nature, a ROM is a read-only device and hence would not be written to. This approach has the advantage that it reduces the size of the ROM cartridge socket but the main reason why it was adopted was to simplify the decoding circuitry required. It does however mean that a cartridge consisting of 8K ROM and 8K RAM is impossible as there is no mechanism for writing to the RAM. Also since the /RD and /WR signals are ignored, the ROM can also be accessed during the memory refresh cycle when the /RFSH signal is low.
A ROM cartridge consists a small double sided P.C.B. with a 16K ROM chip mounted on it. The ROM is not housed in a standard DIL pin package but instead just the bare silicon is used. This reduces the size and fabrication cost of the ROM cartridge. The diagram below shows the 16K ROM as it might appear if housed in a DIL pin package, and aids in understanding how address decoding is achieved within the cartridge.
Although not shown in the diagram, address lines A0 - A13 and data lines D0 - D7 at the ROM cartridge socket connect to the corresponding pins on the ROM. A14 connects to the ROM's /CE (Chip Enable) pin. This pin must be held at logic 0 for the ROM to become selected. However, it is only when the ROM's /OE1 (Output Enable 1) and /OE2 (Output Enable 2) pins are both at logic 0 that data is output from the ROM. These two lines are driven by /MREQ and A15 respectively. Therefore only when a memory access is made with the upper two address lines held low will the ROM output data. This condition will only occur when reading (or writing) to addresses 0 - 16383, i.e. the lower 16K of the memory map. Note how the pinout of the ROM cartridge socket closely matches the pinout of a typical 16K ROM IC.
The design of the ROM cartridge greatly simplifies the circuitry and cost of the ZX Interface 2. However, it does limit the capability offered by ROM cartridges. The Spectrum's ROM is always paged out of the memory map when a ROM cartridge is plugged in. There is no mechanism to allow paging between the two ROMs and hence it is impossible to access routines within the Spectrum's ROM. If such routines are required then they must be reproduced within the ROM cartridge, using up valuable memory space. Accessing the features of the ZX Interface 1 (Microdrive, Network and RS232) is also difficult for the same reason - the 8K Shadow ROM within the ZX Interface 1 cannot be paged in. Again routines could be reproduced if required, but copyright issues might then exist.
At the time of launch, there were suggestions that utilities and computer languages, such as Micro-Prolog, would be released in ROM cartridge format. However, none were ever released and this may have been influenced by the inability to make use of existing routines within the standard Spectrum ROM and the ZX Interface 1 Shadow ROM. Another effect of not being able to page ROMs in and out of the memory map is that it limited programs in ROM cartridge format to just 16K. This limitation reduces the complexity of the program that can be stored in the ROM cartridge and so even if the full 48K of RAM is available, the ROM cartridge program would be unlikely to benefit from it. Note that programs originally written for the 16K Spectrum would have run in contended memory but when in ROM cartridge format they would then run from the lower 16K region and this memory area is not subject to contention issues.
Another factor preventing the take up of ROM cartridges were the production costs. Apparently ROM cartridges had to be manufactured in batches of one thousand if produced in conjunction with Sinclair Research and this inevitably required a fairly large investment.
Since the Spectrum does not provide a /RAMCS (RAM Chip Select) line on its edge connector (unlike the ZX81), there is no way to page into the memory map more than 16K of ROM at a time. If paging of the lower 16K had been implemented then 48K programs could have been produced in ROM cartridge format and could have transferred themselves over into the RAM at power up. Alternatively, programs could have utilised multiple 16K ROMs, with the program paging in the appropriate ROM as and when needed. This approach would have left all of the RAM free for use, and hence would have allowed programs larger than 48K to run on the Spectrum.
The two joysticks sockets are referred to as Joystick 1 and Joystick 2, with the socket for Joystick 1 identified by a dimple below it. The address decoding of the sockets is performed by IC1, which is labelled as 'MT62001 MCE 8344'. Joystick 1 mirrors the keyboard keys 6 to 0 and Joystick 2 mirrors keys 1 to 5. This approach allowed joysticks to operate with a wide range of existing games software since many supported a redefinable keys option. Joystick sockets 1 and 2 are read on I/O ports EFFEh and F7FEh respectively, as summarised below. The joystick input bits read back as '0' when activated.
|Joystick 1: EFFEh (61438)||Joystick 2: F7FEh (63486)|
The joystick sockets are 9-pin D-type male connectors, and the pinout of each is as follows:
Note that the sockets do not provide +5V lines required by auto-fire joysticks.
|ZX Printer Connector|
The edge connector at the rear of the ZX Interface 2 is labelled for use by the ZX Printer only and hence just provides the signals necessary for it. The diagram below shows the signals that are available.
Considering that it would not have cost much more to make all the signals available it is surprising that the decision was taken to limit this connector to just the ZX Printer. One possibility for this limitation might have been to ensure that the Interface 2 was (apart from the ZX Printer) the last peripheral in the chain and therefore did not need to support devices behind it that might be able to page in their own ROMs. This meant that the design of the ROM cartridge mechanism could be implemented without any control logic at all, and hence the cost of the Interface 2 could be kept to a minimum.
|ZX Spectrum +2A/+3 Incompatibility|
The ZX Interface 2 is not compatible with the ZX Spectrum +2A/+3. This is for two reasons:
- The ROM cartridge socket cannot override the internal ROMs of the +2A/+3.
- The joystick sockets cannot override the keyboard and joystick sockets of the +2A/+3.
Amstrad changed a number of signals available from the expansion bus of the +2A and +3 models, with the key change that affects the ZX Interface 2 being the removal of the /ROMCS line. Instead two new lines, /ROM1OE and /ROM2OE, were added but at different locations on the bus. This change prevents the ROM cartridge socket of the ZX Interface 2 from overriding the internal ROM(s) of the +2/+3 with an external ROM cartridge.
Input port $xxFE is used to read the +2A/+3 keyboard and joystick sockets but this is not implemented using open collector circuitry and as a result will not coexist with an external interface that also responds to this port. Connecting a ZX Interface 2 (or another joystick interface that provides Sinclair or Cursor joystick support) risks damaging the +2A/+3 and the interface.
Another change to the expansion bus made on the +2A/+3 was the removal of the +9V line. Although this does not affect the actual operation of the ZX Interface 2,
it does prevent the use of a ZX Printer connected behind the ZX Interface 2 since the printer circuitry is powered from the 9V line.