|
The Memotech MTX Series |
|
PAL Reader / Decoder for
PAL14L4s
Introduction
Memotech computers and expansion boards,
including ROM/RAM memory cards, disk controllers,
the RS232 interface and the
Speculator,
all make use of PAL14L4s to
implement custom designed logic.
Programmable Array Logic (PAL) chips
are a family of programmable logic
devices used to implement
combinational logic functions, that
is, where the outputs are a function of
only the current state of the inputs.
The PAL14L4
is one example, as shown in this
Monolithic Memories block diagram,
the 14L4 comprises a programmable AND
array feeding into fixed NOR gates to
generate active low outputs. |
|
The PAL14L4 is member of the Small
20 Series as defined by
Monolithic Memories, having varying
numbers of inputs and outputs, a total
of 16 product terms but no internal
feedback, no XOR gates and no registers.
The name of each component in the series
contains its number of inputs, output
type (active high or low) and the number
of outputs. |
|
In the 14L4, the 16 available
product terms are divided equally
between the four outputs..
The logic diagram is shown opposite :
These devices are one time
programmable, programming was performed
by "blowing" interconnecting fuses in
the AND array.
To protect proprietary designs, the
devices could be secured to prevent
the program logic being read back by a
device programmer by "blowing" the
security fuse.
After programming, "blowing" the
security fuse defeats read back of the
internal programmed pattern by a device
programmer - the array will read as if
every fuse is programmed. |
|
The programmer took Boolean
expressions and converted them to fuse
maps which were used to program the PAL
by burning the appropriate "fuses".
This diagram provides an indication
of how breaking these fusible links can
modify the logic circuit. |
|
PAL Reader Design
The PAL equations for the more
common boards are shown in the
User and Maintenance manuals. Although Memotech probably did not
"blow" the security fuses, making it
technically possible to read back the fuse maps for
the other PALs, tools for reading the
configuration of these devices are not common today.
Given that there are 14 inputs, there are "only"
16384 (2^14) possible input combinations to drive
the four possible outputs. Tony Brewer made a
PAL14L4 Reader for his
Tatung Einstein and
wrote the Z80 code to control it. Describing its
performance before the program was optimised, he said "it takes just
over 10 seconds @ 4MHz to step through all of the
possible input combinations and read the 16K nibbles
of output, search for active low outputs, remove
redundancy and give the logic expressions as a text
string, e.g. XX X010 000X 1111". Subsequent
optimisation of the code means that program
execution is now much faster, with some PALs taking
only 2-3 seconds to read.
With Tony's help, I have drawn up a schematic for
the PAL Reader interfaced to the MTX User I/O Port
using
KiCAD and constructed a working prototype on
Stripboard.
This is a practical example of using the MTX Uncommitted PIO
port, a feat rarely done "back in the day". The main reason for
making the PAL Reader was to check that actual SDX PAL programs
matched the design and to allow their modification to support a
combined CP/M / SDX BASIC ROM.
|