Fabritek MP-12 Loader

Kyle Owen kylevowen at gmail.com
Thu Dec 3 10:27:15 CST 2015


A colleague and I are working on getting our respective Fabritek MP-12s
working. The MP-12 is an industrial-looking computer with a very limited
front panel (deposit doesn't increment PC...gah!) but does emulate most
respects of a PDP-8. So far, we've been able to find the device codes for
updating the 7-segment LED displays on the front, turning on and off
relays, and setting some arbitrary open-collector outputs. It appears as
though there is no serial port option on ours, which is unfortunate.

There are three 512-by-4 bipolar (configured as 512-by-12) PROMs that seem
to override the core memory at the top of the 4k field. If the PROM's value
is 7777 octal, the core memory is accessible. Otherwise, you're stuck with
ROM, best I can tell.

We've dumped the ROMs to verify, but here's the code I've backed out of
them, disassembled and labeled where appropriate:

*7756
TEMP, 7755 /NOT IN ROM
CLA HLT /7602
ADDR, 7755 /7755 STARTING ADDRESS?
START, TAD ADDR /1360 GET STARTING ADDRESS?
DCA TEMP /3356 SAVE TEMPORARILY
LOOP, RRB /6012 GET CHAR
CLL RTL /7106
RTL /7006
RTL /7006 ROTATE SO BIT 0 IS IN BIT 7, BIT 4 IN BIT 11, ETC.
6015 /6015 SKIP ON FLAG?
JMP .-1 /5367
SNL /7420 SKIP IF LINK IS SET (BIT 6 OF PAPER TAPE IS SET)
JMP LOOP /5363
DCA I TEMP /3756
ISZ TEMP /2356
JMP 7755 /5355
7776 /NOT IN ROM
JMP START /5361
$

The "NOT IN ROM" indicates that the ROM's value is unprogrammed, so that
you can in fact access those core locations. The values I've provided just
happen to be what's in my machine's memory at this time.

It looks a lot like a RIM loader, except I can't figure out for the life of
me what the format should look like. Best I can tell, if RRB ORs the read
buffer with the accumulator, you'll never be able to send anything but
patterns matching (data & 7737). At least, that's what I've simulated. Due
to the fact that they're clearing the link after the second go around,
you'd be losing one bit of data.

So, maybe this isn't really a program loading routine, but rather just
something to store 8-bit values in core? Any other ideas?

Thanks,

Kyle


More information about the cctech mailing list