Development Card for PMI-80
The PMI-80 is probably the first Czechoslovak single-board microcomputer with an 8080A processor from the early 1980s. It is almost a catalog connection with the 8080A processor.
Since the keyboard, display, input/output programmable circuits and an expansion connector with a full local bus are simultaneously present on a relatively small board, it has found its place not only among enthusiasts.
In addition to being used for teaching, hobby circles with electronics and programming, it was often used for corporate use as a small programmable automaton for driving.
I have also used it in the distant past in the testing room for the management of life tests, or in the circle for the management of model railways.
Already in the new era, in 2012, I built the first replica on a board from nostalcomp.cz and since then this microcomputer has found its important place in the construction of my private retro lab, retro study room and retro museum.
First it was a programmer for MHB8708 memories, then a memory tester, followed by analyzers and converters of historical interfaces and finally emulation of unavailable minicomputer peripherals, including peripherals for the legendary PDP-11.
So you can probably guess by now that I didn't stick to one replica of my favorite single-board microcomputer.
In the end, I managed to find the original PMI-80 in the yellow case, but I'm mainly saving it for various demonstrations and presentations.
Based on these experiences, this very versatile expansion development card was created, replacing more single-purpose cards.
The card is designed and manufactured in such a way that it matches the design and components used in the late 80s.
Of course, this is a classic PCB with a lead HAL and without a mask, by the way also made here in the Czech Republic.
But the most important are its possibilities, which I would divide into several areas:
Before I get to the individual areas, I will list the general requirements that this card meets:
- consistent separation of the address and data bus of the microcomputer
- bringing out all microcomputer internal bus signals
- fitting of one zero-force DIL28 socket with the possibility of universal use, including programming of MHB8708 memories
- signaling by means of a red LED (with description 8708) if +12V and -5V supply voltage is supplied to the zero-force socket, which is not completely safe for powered memories only 5V
- fitting of a second DIL28 standard socket with the possibility of universal use only with the limitation of the +5V memory supply
- wide options for configurability of the card (addressing, choice of case type, choice of power supply)
- separate configurable module for generating programming pulses
- the card provides the possibility to use the free pins of the K2 system connector to connect the upper 4 bits of the free port B IO10 (MHB8255) of the PMI-80 microcomputer (a modification that most of us have done on every PMI-80 in the past, but it is not a requirement)
Memory Programmer MHB8708 (2708)
First of all, I would like to mention the inspiration of the involvement published in the appendix of the Amateur Radio of 1990 (green yearbook).
Most programmers connect the programmed memory via interface circuits (parallel interface), but then the socket is dedicated to the function of the programmer (so you can program and read the contents of the memory only via the operating software, but the memory is not directly accessible to the processor).
But if you want to implement a truly universal card, this is a significant limitation. On the contrary, the scheme published in the mentioned yearbook connects the programmable memory directly to the address and data bus of the microcomputer.
To generate the necessary programming pulses, it uses a suitable connection of monostable flip-flops using the input signal of the processor for the waiting state (READY->WAIT).
This ensures that the programming pulses have the required length without you having to do anything about it.
Programming is therefore carried out with the usual MOV M,A (LD (HL),A) instruction, but it is necessary to activate the programming pulse generation module in advance.
If we appropriately supplement and modify the given scheme, we will have a full-fledged MHB8708 (2708) memory programmer with the required functionality.
The basic features of the programmer on the indicated card are:
- zero force socket is not dedicated only for programmer
- the hardware module for generating programming pulses is fully detachable and its configuration options allow it to be used for other purposes. Activation of the programming module is carried out via one input control bit (the output bit on the free port B of the contact circuit MHB8255A – IO10 on the PMI-80 microcomputer motherboard is used)
- requires only one external power supply (programming 25V)
- protection function of programming pulse dependency conditions and limitation of programming voltage maximum current
- possibility of changing the programmed memory on the fly (a major limitation of the original wiring published in the yearbook, when memory replacement caused interference on the microcomputer bus, the memory was connected directly to the internal bus / processor wires)
- the solution enables a minimalistic length of the programming routine
Procedure for putting the MHB8708 programmer into operation:
- jumper settings according to the selected variant, see the attached images (left addressing according to Yearbook, right with the use of additional RAM memory)
- connection of the control bit (pin) of the free port B IO10, that is, if you do not have a modification with connection via the system connector K2
- 25V programming voltage connection
Then you just insert the EPROM memory, upload the desired content and run the relevant programs in the supplied ROM/EPROM (program, only verify, only check deletion).
All programs are also supplied in source code (in assembler for both 8080 and Z80). The current programming routine optimizes the number of programming cycles according to EPROM behavior.
It normally takes up to 95 seconds to program a single MHB8708 memory. Some memories may be harder, so the time may be longer.
Recommendations from practice:
- if you are programming multiple memories at once, it is advisable to place an auxiliary protective cover over the PMI-80 microcomputer, more precisely under the zero-force socket of this card, so that the memories do not fall directly onto the microcomputer (sometimes this can happen)
- if the programming ends with an error, first check the jumpers on the card, then the 25V programming voltage, and if the programming still does not go through, check the voltage on the -5V power supply branch.
Especially if you use voltage converters (TL7660 type voltage converters), you may be surprised by the low voltage after connecting the MHB8708 memories.
Widely configurable expansion of the microcomputer with RAM, ROM (EPROM)
The card contains a total of two DIL28 sockets. The standard DIL28 socket is designed for long-term memory placement, while the zero-force DIL28 socket is ideal for frequent memory replacements.
Using the configuration pins you enable in both sockets:
- place 24 pin or 28 pin memory
- place ROM/EPROM or RAM
- For RAM memories, you can disconnect the WRITE signal and thus set Read Only mode
- a wide address configuration according to the possibilities of the PMI-80 microcomputer (see below for the description of addressing)
Only the base with zero force you can additionally:
- configure for +5V, +12V and -5V powered memories (typically MHB8708/2708 memories)
- correspondingly connect to the module for generating programming pulses and it becomes a socket for programming the MHB87078/2708 memory
Only the standard socket you can additionally:
- use for backup memory if you connect an external 3V battery to the appropriate pins
It is possible to install memories of 1KB to 32KB in the sockets. For example EPROMs 2716, 2732, 2764, 27128, 27256 and similar. In addition, you can mount the MHB8708/8608 in the zero-force socket. As for RAM, it is mostly 6116, 6264, 62256 and similar.
In theory, EPROM 27512 (64KB) can also be installed, but it can only be used as a switched 32KB for the microcomputer.
Address configuration options for both sockets:
- standard expansion address spaces of the PMI-80 microcomputer according to its IO8 address decoder (MH3205). A total of 5 pages of 1KB each (from address 0800H, 0C00H, 1000H, 1400H, 1800H). The bus signals marked _CS2 to _CS6 are bringing out. The spaces can be connected, so it is possible to use one RAM or EPROM/ROM to occupy the entire expanding address space according to the capabilities of the address decoder of the microcomputer. If you use this option, a maximum of 5KB of installed memory will always be used.
- linear addressing using address signals A14 and A15 (one free inverter is part of the card), so it is possible to address one 32KB memory from address 8000H to FFFFH ( CS=NOT(A15) )
- addressing for programming the MHB8708 corresponding to the above yearbook (writing/programming memory from address 2000H and reading verification of memory from address 0C00H which is standard _CS3). The address 2000H is very appropriately chosen, because the address signal A13 is not used for decoding standard addresses, whereby the entire space 0000H-1FFFH is mirrored to the addresses 2000H to 3FFFH and vice versa. Therefore, writing to address 2000H or 0000H does not cause anything, as this address is normally the ROM with the basic monitor of the PMI-80 microcomputer
My favorite configuration is when the entire space from 0000H to FFFFH is covered by two 32KB RAM memories, while the memory from 0000H to 7FFFH is battery backed and must have the original, or modified, or new microcomputer monitor copied from address 0000H. I'm just adding that the static RAM 61512 (64KB) is already in the DIL32 case, so you can't use it.
Typical configurations will follow with images showing the configuration pin connections for that configuration.
Universal development part including soldering field
The card is ready for possible expansion (tinkering), when the components can be placed directly on the universal soldering field of the board, or possibly on a separate expansion module, which can be designed in such a way that it is inserted into the relevant pins of the board.
For these purposes, the card has the following pins (approx. 190 pins are fitted as standard):
- supply wires GND, +5V, (+12V, -5V are not fitted as standard for safety reasons)
- address wires A0 to A15 separated by bidirectional drivers/emitters (74LS245)
- data lines D0 to D7 separated by bidirectional drivers/emitters (74LS245)
- microcomputer internal bus control signals (RES, MR, MW, IOR, IOW, INT_A, INT_E, INT_EX, RDYN, WAIT, HLDA, HOLD, STSTB, OSC, FI2)
- address decoder output signals CS2, CS3, CS4, CS5, CS6
- for the case when the free upper pins of port B IO10 (MHB8255A) are connected to the system connector K2 (free pins of K2 connector 24,26,30,32) on the board, the pins labeled PB4, PB5, PB6, PB7 are brought out on the card
The universal soldering field is in the configuration of 3 rows of 20 fixed jumpers with 3 holes (Plated Through Holes) in a 2.54 mm grid, allowing to place chips up to the size of DIL40. In my experience, the best universal soldering field for digital technology.