The 64-way ‘EuroConnector’ is a DIN 41612/IEC 60603-2 Type-C Connector and the standard expansion port for peripherals.
(NB row A is at the bottom of the Euroconnector, row C at the top).
|10A||0 VOLTS||1OC||+5 VOLTS|
|24A||8 MHz||24C||DISK 1L|
|26A||GREEN 1||26C||BLUE 1|
|28A||SPEN||28C||AUDIO RIGHT OUTPUT|
|29A||BLUE 0||29C||AUDIO LEFT OUTPUT|
|30A||RED 0||30C||COMP VIDEO|
|32A||+5 VOLTS||32C||0 VOLTS|
|DBDIR (1A)||This signal is not used by the computer but must be driven by all external devices to allow their use with the SME. The SME has buffers present to prevent undue loading of the machine. However, it is the responsibility of the hardware designer to ensure that the data bus transceiver has its direction bit set according to the operation (read or write) being performed. The operation should be as follows: 1. Processor sends out an address. 2. External device decodes address. 3. External device drives the DBDIR line, from an open collector output, LOW for a processor READ. It is configured as a WIRED-OR internally to the computer. 4. Normal handshaking is continued with the Z80B for data tranfser.|
|RDL (2A)||Read signal from the processor.|
|WRL (3A)||Write signal from the processor.|
|BUSAKL (4A)||Bus acknowledge signal from the processor.|
|WAITL (5A)||Wait signal to processor.|
|BUSREQL (6A)||Bus request signal to external device.|
|RESETL (7A)||This is a system reset generated by a 10 Kilohm resistor charging a 47 microfarad capacitor. This gives a pulse of approximately 330ms duration. It is suggested that if a sharp reset edge is required, this signal is passed through a Schmitt inverter.|
|CM1L (8A)||Op-code fetch signal from the processor.|
|REFRESHL (9A)||Refresh signal from the processor.|
|0 V (10A)||Zero Volt: not to be used as a supply rail.|
|AO (11A)||Address lines AO to A10 from the processor are on pins 11A to 21A.|
|MSEINTL (22A)||Mouse interrupt signal also present on the mouse port. The signal is pulled low by an external device to notify the processor that the mouse co-ordinates have changed.|
|XMEML (23A)||External memory signal which will be driven low when the processor requires to switch out the internal memory and access the external memory. Please note that only memory above address 8000H in each block of 64K will be switched out. It is the responsibility of the peripheral designer to ensure that the XMEM signal is included in the address decoding circuitry of the design, to avoid contention between the internal RAM and the external device.|
|BMHZ (24A)||8 MegaHertz clock signal.|
|RED1 (25A)||Each colour is generated by three colour driver signals, the intensity of which is determined by three bits each. RED1 is the MSB (Most Significant Bit) of the red colour signal at the current pixel position.|
|GREEN1 (26A)||GREEN1 is the MS B of the green colour signal (see pin 25A for a full description).|
|CSYNC (27A)||Composite Sync for video circuitry as on the SCART connector.|
|SPEN (28A)||Light pen signal (active high) which is normally low. When the light pen is touched to the screen and the raster passes the point of the pen, a positive going edge is received on this signal from the light pen socket. This causes the two registers LPEN and HPEN to contain the current x and y co-ordinates of the light pen, respectively.|
|BLUEO (29A)||BLUE0 is the second bit of the blue colour signal (see pin 25A for a full description).|
|REDO (30A)||REDO is the second bit of the red colour signal (see pin 25A for a full description).|
|BRIGHT (31A)||BRIGHT is the LSB (Least Significant Bit) of all colour signals (see pin 25A for a full description).|
|+5V (32A)||+5 Volt supply rail, up to 250 mA available.|
|IORQL (1C)||Input/Output Request becomes active when the address bus contains a current port address from the processor.|
|MREQL (2C)||Memory Request becomes active when the address bus contains a current memory address from the processor.|
|HAUL (3C)||Halt indicates from the processor that it has executed a HALT instruction and is waiting for an interrupt.|
|NMIL (4C)||Non Maskable Interrupt causes the processor to execute a jump, from which it may be vectored anywhere by the user. It is used as a BREAK button by BASIC, and a SNAPSHOT button by the DOS. It is pulled up by a 10 Kilohm resistor internally, and should therefore be driven low by an open collector circuit.|
|INTL (5C)||Maskable Interrupt is used to interrupt the processor from its current task if the interrupts are currently enabled.|
|CD1 (6C)||Data lines D1,DO,D7 and D2 are on pins 6C to 9C.|
|+5V (1OC)||+5 Volt reference only.|
|CD6 (11C)||Data lines D6,D5,D3 and D4 are on pins 11C to 14C.|
|CPUCLK (15C)||The 6 MegaHertz clock signal to the processor.|
|A15 (16C)||Address lines A15 to All are on pins 16C to 20C.|
|DISK2L (21C)||DISK2 is the decoded base address for the eight ports of drive 2.|
|ROMCSL (22C)||ROM chip select is pulled high to disable the internal ROM (Used in conjunction with ROMCSR on pin 27C). It indicates when the ROM is being accessed.|
|EARMIC (23C)||EARMIC is connected to the logic level side of the cassette port circuitry.|
|DISK1L (24C)||DISK1 is the decoded base address for the eight ports of drive 1.|
|PRINTL (25C)||PRINT is the decoded address for either of the two possible printer addresses (246 and 248).|
|BLUE1 (26C)||BLUE1 is the MSB of the blue colour signal (see pin 25A for a full description).|
|ROMCSRL (27C)||ROMCSR is connected to the ROMCS (22C) pin via a 1 Kilohm resistor. If ROMCS is pulled high by an external circuit, then ROMCSR could be used as a chip select for an external ROM which would then take the place on the internal one.|
|AUDIORIGHT (28C)||The right audio signal, as on the light pen socket, is brought out here.(50mV pp as per auxiliary standard input) It must be amplified before being applied to a speaker.|
|AUDIOLEFT (29C)||The left audio signal is present on this pin. The same precautions and signal levels as for AUDIORIGHT apply.|
|CVID (30C)||Composite Video, as sent to the modulator and SCART socket is present on this pin.|
|GREEN0 (31C)||GREEN0 is the second bit of the green colour signal (see pin 25A for a full description).|
|0 V (32C)||Zero Volt supply rail.|
From Dave Park
I agitated strongly early on for a durable and capable expansion connector and fought strongly for the DIN41612 as used on the QL, except with the third row not used so there was room for future growth if the platform made a splash. It was that or a Spectrum-style expansion. With hindsight, I can see how that decision both helped and hurt the platform.
When you finally get round to designing your first piece of SAM hardware, you may wonder how to actually put the thing together. The easiest method I’ve found is this:
- Get yourself a plug for the expansion connector on the back of the SAM. They are usually listed in electronics catalogues as “DIN 41612 right-angle plug, rows A & C” - note that anything else, such as rows A & B is useless.
- You will find markings of the plug to tell you which pin is which - you may need a magnifying glass! They should be numbered from A1 to A32 and C1 to C32. Now, referring to the SAM manual, pull out any pins you don’t need using a pair of pliers. Be careful not to pull out the wrong pins - it’s tricky putting them back in. For most [but not all!] hardware, you can pull out all the pins EXCEPT d0, d1, d2, d3, d4, d5, d6, d7, a0, a1, a2, a3, a4, a5, a6, a7, IORQL, RDL, WRL, +5v, 0V, and DBDIR. You may also like to leave PRINTL, MREQL, RESETL and CPUCLK, depending on your hardware.
- Now take a piece of stripboard with at least 32 strips - you can often find stripboard with 40 strips, which is ideal. Make sure you have sufficient holes per strip to fit all of your components. Now break each stip about 10 holes from one end - the DIN 41612 plug is going to be soldered onto the isolated section of stripboard, with all of your components on the other part.
- Place the DIN 41612 plug on to strip board. You should find that by bending some of the longer pins you can arrange them so that each pin goes into its own strip. Ensure that no two pins are connected to any one strip. If you can’t arrange the pins just by bending them then snip don’t insert them through a hole - instead solder a piece of wire to them any take them to a free strip, When you are happy that each pin has its own unique strip, solder them in place. You may like to use some glue to hold the connector onto the stripboard.
- Make a visual check that there are no solder bridge, or unbroken tracks where there should be broken ones. Before adding your other components it is worth pluggin it into the SAM and powering up - if the SAM goes haywire then switch off IMMEDIATELY and check your construction. Are there any solder bridges? Are there two pins in any one track? If the SAM works OK, then proceed.
- You can now add your components to the rest of the stripboard, breaking tracks where necessary. Use pieces of insulated wire to link to the SAM’s signals by connecting to the short stips connected to each pin, and routing the signals to wherever you need it on the main stripboard.
- It’s a good idea to put a ‘decoupling’ capacitor across the power supply of each i.c. you use. Simply solder a 0.1 microfarad ceramic (or similar) capacitor between +ve and ground. This reduces the chance of power glitches.
- Make sure that your hardware drives the DBDIR line. At the moment you may think there’s no need - but when the new SAMBus comes out you will be sorry because your hardware won’t work with it! If you do not drive the DBDIR line then you won’t be able to send any data to the CPU (i.e. during a read) and you may not be able to get any data from the CPU (i.e. during a write). All you have to do is set DBDIR to logic 0 (ideally by means of an open-collector output) in order to connect to the CPUs data lines.
- Don’t drive DBDIR low when your interface is not being addressed - it will corrupt the data lines.
- The NMIL and RESETL lines are not debounced - that is when the NMI or RESET buttons are pressed you may get several logic transitions.
- The SAM power supply can only provide a certain current. If you have lots of devices attached to the expansion port then you may need an additional power supply.
- Avoid using the joystick port as an easy input - you will probably get loads of junk typed on the screen when you switch on!
If you want just a few i.o ports for your own projects then you can save yourself a chip or so (and a fair bit of soldering) by making use of the PRINTL signal on the euroconnector.
This signal is normally high and goes low when IORQL is low (ie the SAM is trying to input or output some data) and the address is in the range 232 to 239 - this is the area reserved for the printer and serial interface. If you just use a parallel printer, then you can select your device when PRINTL is low and A2 is high - then you have ports 236, 237, 238 and 239 to play with (by looking at A0 and A1).
If you just need two i/o ports then you could select your circuit when PRINTL is low, A2 is low and A1 is high - then you’ve got ports 234 and 235 (looking at A0). These two ports are reserved for the second parallel printer, but most people on have one (and use ports 232 and 233 to drive it). There was a version of the parallel printer interface which used a PIA - and I don’t know how many ports it uses, so beware!