Description how to build ZX1541 using ZX.SPLIT interface

© 2006 Jarek Adamski

Parts Listing

Part Value Description
C1 1uF SMD. Genrates latch reset with R9.
C2 47nF ÷ 100nF SMD. Chip noise blocking.
C3
C4
C5
C6
C7 10µF ÷ 100µF Power supply noise blocking.
D3 1N4148 Overvoltage and undervoltage protection.
D4
D5
D6
D7
D8
D9
D10
D11 LED 3mm or 5mm. Data line light.
D12 LED 3mm or 5mm. Inactive light.
IC1 74*365 DIL16. Input buffer: 74ALS365, 74LS365, 74HCT365, 74HC365.
IC2 74*06 DIL14. Output buffer: 7406, 74S06, 74LS06, 7416. (Not HC/HCT!)
IC4 62256
61256
DIL28, 0.3". 32kB SRAM (used as cache in PC486). Mounted inside EEPROM socket.
IC6 74*174 DIL16. Latch: 74ALS174, 74LS174, 74HCT174, 74HC174.
IC7 74*32 DIL14. OR gate: 74ALS32, 74LS32, 74HCTS32, 74HC32.
IC10 74*139 DIL16. I/O and memory decoder. 74ALS139, 74LS139, 74HCT139, 74HC139.
IC11 28C64 DIL28/32. 8kB EEPROM. Larger can be used, but you need other code to reprogram.
JP1 jumper Two pins with jumper. Open for EEPROM write-protection.
JP4 DISIN Connect to ZX.SPLIT edge slot (/ROMCS) and cut this singnal between slots.
Q1 BC846 SOT23 (SMD). Transistor locks ROM inside ZX81. Any NPN should work.
Q3 BC846 SOT23 (SMD). Transistor locks ZX1541 memory. Any NPN should work.
Q4 BC858 SOT23-BEC (SMD). Transistor for LED. Any PNP should work.
R1 470ohm ÷ 1kohm SMD. OR gate used to disable memory of ZX1541 by next interface.
R2 470ohm ÷ 10kohm SMD. Resistor for open-collector lines. Usually 1kohm, 4.7kohm is safe when the disk devices has own resistors set.
R3
R4
R5
R6 180ohm ÷ 1.5kohm SMD. LED current limiter, selects intensity of light. With 180ohm they consume a lot of power, for 1.5kohm you will not see the light while sunshine.
R7
R8 470ohm ÷ 1kohm SMD. OR gate used to disable memory of ZX1541.
R9 33kohm SMD. Genrates latch reset with C1.
R10 470ohm ÷ 1kohm SMD. OR gate with Q1, used to disable ZX1541 memory.
R11 2.2kohm ÷ 10kohm SMD. Protects EEPROM writing.
R12 4.7kohm SMD. Separates LED from data line.
U$2 Plastic case of internal dimensions 100mm×49mm, in Poland known as Z-7.
X1 ZX81-EDGES Connection to ZX81-SPLIT - 44 vertical wires
X2 MAB6V Vertical IEC slot (DIN660).


Bottom board - ZX.SPLIT

Start from the bottom board. You need these elements, that are not listed on schematics:

1. Cut out corners of the ZX.SPLIT to ZX81 size. This means you don't need 6 contacts on one side and 3 on the other. You don't have to cut the corners if you use no case, or other than Z-7 like.

2. Cut into the edge slot key crevice, between the wide and longer tracks (not at squares side). This will be through edge connector. It should be 7.5mm deep.

3. Only for buggy ZX.SPLIT v004/v005: Correct the tracks on the ZX.SPLIT. There's 32 tracks to cut on top side (where place for SMD chips is). See the second row of holes, starting from the squares for edge female slot. The holes should be connected with bottom tracks, but are with top ones. There are 6 correct holes without tracks at top, and 25 holes connected with holes of 3rd row, that are wrong (in ZX81 range there are only 16 of them). You should cut the short, angle tracks that come from the wide track to the track comming from the square. Then connect the holes from 3rd row with holes of 4th row. So all the 22 holes from 2rd row must be connected to bottom tracks. See the next pictures and zoom to incorrect and correct tracks:

4. Install the edge connector over the squares. First bend both pin rows of the slot inwards to make a 1.5mm separation between them. Then pull the slot with slight force it over the board, starting from side. Then set the board in correct position (perpendicularly to edge slot front, using a trianagle). Then solder two opposite (extreme) pins on one side and correct position again. Then solder some pins on another side, chceck the position and then solder the remaining pins on one side, then on the other. Do not press with force on the edge connector, as the soldered pins can pull all the squares off the PCB.

5. Remove 3rd contact from both precise line sockets (this is not neccessary, but there's no hole in its place). Place the lines in holes rows that are 7mm and 43mm from the squares. The holes of lines must be at top side (where place for SMD chips is). Please compare this with the top board to avoid errors. The big hole in the middle must be in the same position when boards are mounted together. See the picture of mounted ZX.SPLIT in ZX81 mode: ZX.SPLIT with important points marked with digits

6. The single pin must be mounted 45mm from the square, near the edge connector tracks, on 23th pin of ZX81 connector. The track between this pin and the first precise line (7mm from squares) must be cuted. See the above picture and note the extra pin in bottom track 23 and where it is cuted at bottom.

The /ROMCS line disables ROM inside ZX81 when is forced to high state. ZX1541 forces high state on /ROMCS (on schematic it is called DISOUT) when pages its ROM into #2000..#3FFF and RAM into #8000..#BFFF. But ZX1541 also has own input /ROMCS (on schematic it is called DISIN), that forced to high disables all ZX1541 memory and then ZX81 ROM, too.

The ZX.SPLIT joins the /ROMCS input with /ROMCS output (so DISIN is joined with DISOUT) and this must be cuted. DISIN is the extra connection pin on track 23 (the key hole has number 3) on bottom side. The track must be cuted between this extra pin and the connection to ZX1541 board near the female edge slot. So the DISOUT outgoing from ZX1541 board goes to pin 23 at bottom side of the female edge slot (/ROMCS signal inside ZX81). Otherwise the ZX1541 would disable itself, when wants to disable ZX81 ROM.

The /ROMCS control is required for Sinclair ZX81, that has incomplete decoding, so in areas 8192..16383 and 32768..49151 also the build-in ROM is seen. The Timex Sinclair 1000 and Timex Sinclair 1500 have full address decoding, so area 8192..16383 is empty.

7. You don't need to install other elements on ZX.SPLIT board.

The places for SMD chips are intended to switch one of 3 slots when ZX.SPLIT is configured to connect 3 interfaces in the same time. The 74LS139 SMD is to switch output lines like /IORQ and /MREQ, while 74LS153 SMD can switch input lines like /RAMCS and /ROMCS.



Top board - ZX1541

Elements layout by their values. The mirrored texts means mounting at bottom side. Values on elements on the board.

From the left: top of board, bottom with EEPROM removed, bottom with EEPROM

On above picture from the left to right: top of board, bottom with EEPROM removed, bottom with EEPROM. Please note the 74LS366 is installed in place of 74LS365, but this is wrong and was corrected after making the picture.

1. Solder first the SRAM. It must have 0.3" wide case (such were used in PC AT486 as cache). It must be 32kB, not 8kB. Usually the code on the chip is 61256, not 62256. The square pad is always pin 1.

2. Solder precise socket for EPROM. You must remove the horizontal separators, or use single precise lines. The socket can be 28 pins or 32 pins. 32 pins is recommended if for custom upgrades, if you would like to have more ROM. While soldering be careful not to close the small holes near EPROM socket.

3. Insert the ROM (or any other 0.6" chip, this is temporary), then place the board over ZX.SPLIT board. Use 4 needles to stabilise position of the boards. The big hole in the middle should be one over another and the ROM (or the temporary chip) must be upside down, inserted into socket. There should be 9mm between the boards, but this depends on sockets and ROM height.

4. Use a copper wire taken from telephone or UTP cable. Cut a ~10mm segments and insert throgh the top ZX1541 board into precise sockets in ZX.SPLIT board. Cut and solder most of them, remove the 4 needles and solder all the vertical wires.

5. Solder all surface mounted discrete elements at top side of ZX1541 board: R1..R12, C1..C6, Q1, Q3, Q4. Please chceck if the B-C-E are connected correctly, the pads for BC846/858 are like this:

      _
  ___|C|___
 |         |
 |_________|
  |B|   |E|

7. Carefully separate the board with screwdrawer, inserting it between vertical wires. Now you can mount all other chips: 74*365, 74*06, 74*174, 74*139, 74*32 and 8 diodes 1N4148.

Final mounting

To be continued...



Testing

ZX1541 should also work with memory removed, as it is not used on start-up.



Frequently asked questions (FAQ)

What is the zx2k.zip file?

This is new release of firmware (ROM contents) that can work with ZX81 having 1kB or 2kB RAM. So the compressed screen file is supported. The former version required a 4kB RAM, as the screen file was always decompressed for faster display. Also, the IEC device can be selected in range 8..11, while the former one allowed only 8..9. There's no other changes and the old one is suitable in most cases.

What is the loader?

Also in zx2k.zip a loader is included, that has use in 1kB and 2kB ZX81. In this case the 3kB firmware cannot fit into ZX81 RAM, so the loader is placed there, then loads the firmware installation into RAM of ZX1541 (above 32768).

Do I need zx2k.zip to initially get the ZX1541 working on my ZX81?

Only when you have ZX81 with 1kB or 2kB RAM installed onboard and you don't use RAM-pack.


If I try to get the drive status I get the following: 73,CBM DOS V2.6 1541,00,00. If I do a drive status again I get: 00,OK,00,00. Any following drive status requests always result in the same. However, if turning the drive off and then on again, then doing a drive status again results in 73,CBM DOS V2.6 1514,00,00 again. Following drive status requests result in 00,OK,00,00 again.

This is correct behaviour. The first one is correct reply (system report) from 1541 drive after its initialization. The second is correct reply after any command, when was done correctly.


Is there any way to check if the extra RAM is working?

There are no IN/OUT in ZX81 BASIC... You could POKE values to 32768..49151 and PEEK them then. Something like this can be used (note 255 not 256 in lines 20 and 50):

10 FOR I=32768 TO 49151
20 POKE I,I-255*INT (I/255)
30 NEXT I
40 FOR I=32768 TO 49151
50 IF PEEK I<>I-255*INT (I/255) THEN PRINT I
60 NEXT I

ZX1541 offers you 16kB RAM in 32768..49151, while the other 16kB RAM is for internal use.

Also you can POKE and PEEK the ROM range 8192..16383. But to avoid firmware crash, you should not POKE 8192..12287. The 12288..16383 is empty (at least in present version of firmware) and can be tested (or hold your code). Remember to write-enable ROM using by closing the JP1 jumper.


Can I use RAM-pack with ZX1541?

The RAM pack should not use /ROMCS signal. Otherwise it must be connected between ZX80 and ZX1541 interface, allowing the ZX1514 to disable the memory while providing own in #2000..#3FFF and #8000..#BFFF.



Below are pictrures of 0003 interface build by Luis, not using SMD elements. The boards are connected with pinheads lines, not the precise lines like 0001 has. This is harder to do, because the holes are too small. Please note wires used to connect the IDE slot:

  1. (not connected),
  2. red,
  3. orange,
  4. yellow,
  5. blue,
  6. white.



Thanks

Thanks to:


© 2006,2007 Jarek Adamski, http://8bit.yarek.pl/interface/zx81.zx1541/