PDP 12 modes
Sherman Foy
shermanfoy at att.net
Tue Jul 14 13:18:43 CDT 2015
ATT has gone wierded out on attachments for the moment, so I'm dumping all this into a long text ramble
Jim:
Please forward these observations to the appropriate parties, copying me. I am having trouble sorting out who started the thread and who is receiving replies.
I will respond directly to anyone w/ questions, to the best of my ability and experience. I believe that I see some discrepancies, as I think others are also questioning some assumptions.
To: group
I own and did operate a PDP-12; having written unique PDP-12 code, I disagree: the 2 modes "ping-ponged". I think some of the thoughts here are based on reading the books and thinking in "hardware mode" and not considering actual operation or the software implementations.
I have done the full experience: ownership, hardware integration, commissioning, running and developing custom code of both PDP-12's and PDP-8's. I still own 1 PDP-12 and 4+ PDP-8's.
Re: the 12, you were either in LINC mode or PDP mode at any given time. These were NOT "parallel processors". You called the LINC IOT instruction to switch from PDP mode to LINC mode; then you "returned" to PDP mode by making the PDP call in LINC code. Usually, you briefly switched to LINC mode to run the peripherals. Most of the code that you ran was PDP code. The TU-55/6's needed LINC code and so did the VR-12, for instance.
It is possible that something written for the LINC would be run in LINC mode for high percentages of the time. That code might have some "patches" that ran in PDP mode after review and revision.
It could be that such code was modified from LINC code to a PDP-12 routine using the 12 as a "development system" to test and implement such patches.
The PDP-12 switch selected which mode you STARTED FROM, IIRC. Once you had launched and were running code, you had to switch via code calls in the routines.
I can't vouch for this on a LINC-8 machine, but I thought it was similar.
I wrote my own "Mag Tape Boot Loader" in my trials and tribulations while my 12 was running. The following is an excerpt from my account of that experience. Note the PDP versus LINC calls inline in the code.
<quote>
My Boot loader [MTBL] code used the followings syntax. It resided at the high end address of a page, was toggled in via Front Panel and a Front Panel "Start Switch" launched the code. It called the Mag Tape and rewrote itself over the corrupted memory. I think I had another routine to update the Mag Tape locations periodically, after rewrites.
I can't remember the LINC syntax and would have to look those up in the reference manuals. (Don't leave the launch address without them.)
Comments are posted after the code [in this case], to allow for inevitable corruption by non column friendly text machinery.
************************
* MAG TAPE BOOT LOADER *
************************
CLA
LINC
LIF 0
LDF 0
AXO
RCG
DATA
PDP
JMP I+1
DATA
Comments, added here due to not being in "column mode"
/MAG TAPE BOOT ROUTINE;
/MUST BE PRESENT IN TAPE
/BLOCK 273; WILL BE OVER-
/WRITTEN ON USE.
/WHEN CALLED THIS CODE READS
/TAPE BLOCKS 270-273 TO
/MEMORY BLOCKS 0-3.
/TO USE:
/ 1) LEFT SW TO 1760
/ 2) START LEFT SW
/RESTART ADDRESS
Sherman, 12 owner
shermanfoy at att.net
<endquote>
The longer narrative in a Word doc is attached.
A PDP-8 WILL NOT run LINC code: that is also by ownership & experience & hardware troubleshooting-debug & handwriting machine code. I did ALL of that in one session of working on a design flaw in the 8-E [also F & M] machines.
Again, the PDP-12 does not run the two modes CONCURRENTLY, rather they run CONSECUTIVELY. I am borrowing the legalese for terms of sentencing, as it lends itself well to this description.
And again, I am doing this from actual ownership and experience of getting hardware running, hand-coding and debugging custom routines. Of course, I did this after researching and reading instruction sets from the programming manuals and poring through sample code listings.
Further, as I previously mentioned, I cannot vouch these thoughts and descriptions for the LINC-8. If I understand this correctly, the "straight LINC" would also share the use of LINC only code characteristic w/ the PDP-8's use of the PDP only code characteristic.
My 12 is in storage and would be a "year out" to operation at any given time. That assumes that it has not suffered deterioration from its "put in storage running" status. It has always been stored in dry storage. Another major obstacle is simply finding the proper floorspace to mount its large footprint environmentally.
If I am encouraged and/or flogged, I may bring the 12 machine out of retirement. I expect that my path will be to launch a PDP-8M [perhaps a PDP-8E] first and then bring the PDP-12's VR-12 out and try to interface it w/ an IBM PC. There is a local "moral imperative" to resurrect SpaceWars :)
I also intend to try to make a TU-56HM STANDALONE Mag tape talk to the PC machine. The TU-56 Standalone mode is a rare beast and can be found in the FOOTNOTES on the TU-56 drawings. I do not believe there was a complete document for the Standalone machine. I seem to have the requisite TU-56 hardware, but I am not sure of the interfacing and cabling. Code would likely be written in C from a DOS environment on the PC.
This would, likely be analogous to some of the TU-58 modes of operation, which were based on serial ports. I also have several pieces of TU-58, including a VT-103 machine.
These projects could be described as ambitious. We need some more SoCal DECnutz.
<quote>
Then I discussed my 12 running time:
The "12 monster" had Core Memory, which, like an elephant, doesn't forget. It had about 100 pounds of Sola Constant Voltage Transformer. These combos are good for brownouts.
It had a Power Fail Auto Restart Option [PFAR, my acronym]. I learned the hard way on a PDP-11/44: don't screw with it and it will restore itself when the power come back.
Also, the power supply had three gigantic electrolytics, about the size of thermos bottles. These guys were significant fractions of a Farad 40 YEARS BEFORE SUPERCAPS. The decay rate of the power supply was fantastic. This provided major "headroom" on the RC time constant that the PFAR used. One thing done with this was to turnoff the Write Amps for the Core Memory on Power Fail detection.
All in all, blackout/brownout, the 12 was ready. I had a block level blackout happen and when the power came back on, restarted in "mid sentence" of the code I was bumming.
I wrote my own version of a "Monitor", that I called MON-12. It was based on ODT-8. I originally keyed it in from the front panel, hundreds of lines. I wrote the documentation as I went. I stripped out the Paper Tape stuff, since the 12 didn't have one and I would have to add an extra cabinet; later???
The 12 had two TU-55's. Tape-tape copy was an obvious feature. But I always wondered why they didn't use a TU-56 Dual Transport and put a Paper Tape in the main cabinet. I have two TU-56's and a stack of PC-0X's patiently waiting in the warehouse.
Somewhere along the way, I got to where I could edit from the keyboard. I also started work on an ambitious "block mode copy" function.
If you can see this coming, I developed code that would "eat itself". After toggling this in from the Front Panel three times, I decided to take a cue from the Paper Tape stuff I had removed from ODT. I wrote a Mag Tape Boot Loader [MTBL, my acronym]. The 12 implementation for the Mag Tape used LINC code, not a TU-55 IOT set of calls.
My Boot loader [MTBL] code used the followings syntax. It resided at the high end address of a page, was toggled in via Front Panel and a Front Panel "Start Switch" launched the code. It called the Mag Tape and rewrote itself over the corrupted memory. I think I had another routine to update the Mag Tape locations periodically, after rewrites.
I can't remember the LINC syntax and would have to look those up in the reference manuals. (Don't leave the launch address without them.)
Comments are posted after the code [in this case], to allow for inevitable corruption by non column friendly text machinery.
************************
* MAG TAPE BOOT LOADER *
************************
CLA
LINC
LIF 0
LDF 0
AXO
RCG
DATA
PDP
JMP I+1
DATA
/MAG TAPE BOOT ROUTINE;
/MUST BE PRESENT IN TAPE
/BLOCK 273; WILL BE OVER-
/WRITTEN ON USE.
/WHEN CALLED THIS CODE READS
/TAPE BLOCKS 270-273 TO
/MEMORY BLOCKS 0-3.
/TO USE:
/ 1) LEFT SW TO 1760
/ 2) START LEFT SW
/RESTART ADDRESS
Sherman, 12 owner
shermanfoy at att.net
<endquote>
More information about the cctalk
mailing list