Fabritek MP-12 Loader

Josh Dersch derschjo at gmail.com
Thu Dec 3 11:09:27 CST 2015


On 12/3/15 8:27 AM, Kyle Owen wrote:
> 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
>

I have what sounds like the same machine outfitted with the same 
interface (basically it looks like a synchronous serial port).  I don't 
have the paper tape reader, though.  I appear to have the same PROMs in 
mine; here's my disassembly from a couple of years back:

Addr    Data
7757    7602    CLA, HLT     / Probably data
7760    7755            / Also data
7761    1360    TAD 7660    / Read starting address
7762    3356    DCA 7756    / Deposit AC (7755) in 7756
7763    6012              / Start high-speed reader operation
7764    7106    CLL, RTL    / Clear link, rotate left twice
7765    7006    RTL        / twice more
7766    7006    RTL        / and again (rotated left 6 bits, bit 7 is in 
link)
7767    6015                / according to MP-12 docs, a command of "5" 
indicates "skip if device ready and transfer data"
7770    5367    JMP 7767    / loop until data ready
7771    7420    SNL        / skip on link set - end of word?
7772    5363    JMP 7763    / read next if link not set
7773    3756    DCA I 7756    / deposit at address in 7756
7774    2356    ISZ 7756    / increment address, skip if zero
7775    5355    JMP 7755    / jump to instruction loaded at 7755 from tape?
7776    2175    ISZ 175        / data (not in PROM) -- overwritten by 
tape (JMP to start of routine)?
7777    5361    JMP 7761    / jump to start of routine

I haven't spent much more time with it and I've probably screwed up, but 
to me it looks like it loads in two 6-bit quantities off tape, expecting 
the 2nd of the two to have bit 7 set; this word is then stored in 
memory, the address incremented and the next pair loaded. It increments 
until the write address falls off the top of memory and then (i assume) 
executes the data at 7776, which I assume would be a JMP to the start of 
the code loaded from tape...

My MP-12 also lacks an async serial interface, I was thinking of 
building some glue logic to convert from the sync (paper-tape) interface 
to RS232 (probably with a small microcontroller) so I could load code 
in, but I haven't gotten around to it yet...

- Josh


More information about the cctalk mailing list