• Please review our updated Terms and Rules here

Build your own PDP 8I, Part 2..

One trick I used in the past was to solder the decoupling capacitors on top of the IC's directly to the VCC and GND pins of the ICs. A bit of accurate component lead bending and soldering required - but the result is good if you have left them off the build.

To run LOGISIM you need to acquire a modern Java run-time environment and enter the command line tool of your favourite O/S to type the following command:

java -jar logisim.jar

The LOGISIM application should open. If you can get this far I can talk you through the next step. You can 'script' the above command to make invoking it easier in the future.

The major advantage of using a logic simulator is that you can debug your design and make changes before committing to the hardware. It is not 100% foolproof - but it should take care of a lot of the logic design errors up front.

Dave
 
Hi All;

Dave, Thank You for the Helpful suggestions..

"" One trick I used in the past was to solder the decoupling capacitors on top of the IC's directly to the VCC and GND pins of the ICs. A bit of accurate component lead bending and soldering required - but the result is good if you have left them off the build. ""
I looked at doing this way, but, It has the same problem as wire-wrapping to the pin.. Not enough pin Length, and It would short out adjacent pins.. My favorite trick is to use a two pin longer Wire-wrap Socket, a 16 pin socket for a 14 pin IC, and a 18 pin socket for a 16 pin IC.. But, if I had originally done this, I would have Not been able to fit all of the row's of Sockets in the Printed Circuit Board that I have..
"" The LOGISIM application should open. If you can get this far I can talk you through the next step. You can 'script' the above command to make invoking it easier in the future. ""
When I start Logisim, it seems to be in Edit mode and not in run mode..
"" The major advantage of using a logic simulator is that you can debug your design and make changes before committing to the hardware. It is not 100% foolproof - but it should take care of a lot of the logic design errors up front. ""
I already know this, I am still wondering where or what Schematic you are using ?? Is it different than what I am using ??

THANK YOU Marty
 
Sorry - I did not understand what your issue with logisim was.

In the "Simulate" menu select "Simulation Enable" and "Ticks Enabled" and then set a suitable "Tick Frequency". You then need to select the 'hand' tool (not the arrow). Arrow for edit. Hand for poking things (like PDP-8 toggle keys...).

I do find it a bit 'stubborn' at times. I have to disable the simulation (un-tick Simulation Enabled from the Simulate Menu), select Reset Simulation from the Simulate Menu (all the boolean wires go blue - indicating an unknown state) and then select Simulation Enabled again from the Simulate menu. This generally works - unless a Java run-time error occurs (in which case all bets are off and you have to close down logisim and restart it).

MAINDEC-8i-D01B-D works now :) MAINDEC-8i-D02B-D doesn't :-( - but that's a problem for tomorrow (D02 is testing some new instructions that D01 didn't test so I am not surprised that further errors have surfaced).

My schematic is based on the LD30 architecture from the book - but the rest of the logic (the microcode part of the LD30 etc.) is of my own design (with a little help from that Japanese website I found of course to spur me on). So I suspect that we are using completely different logic - but still based on the PDP-8 and the book itself so (for example) my SKIP logic (that I have now implemented) should be pretty similar to what you should have implemented.

The logisim schematic I have completely drawn myself from scratch. Incidentally, I found an error within one of the library ICs that I was using - so I have fixed that.

I will post some of my new stuff tomorrow evening when I am a bit more awake!

Dave
 
Forgot to ask...

Does anyone know if some of the 8/E diagnostics from http://so-much-stuff.com/pdp8/software/maindec.php will run unmodified on an 8/i? For example, the Random AND Test "maindec-8e-d0db-pb". I am looking for some more diagnostics to test out my logic before I start to look at converting it to hardware (the more diagnostics I can run on logisim the better).

Dave
 
Does anyone know if some of the 8/E diagnostics from http://so-much-stuff.com/pdp8/software/maindec.php will run unmodified on an 8/i? For example, the Random AND Test "maindec-8e-d0db-pb". I am looking for some more diagnostics to test out my logic before I start to look at converting it to hardware (the more diagnostics I can run on logisim the better).

In general, the diagnostics are grouped there. The 8/I should be able to run stuff from the maindec-08 group and from the maindec-8i sections without problems, as well as probably most of the stuff from maindec-8L Stuff from maindec-8e will in general be more problematic. I'd probably try maindec-08-dhkab-a-pb before maindec-8e-d0da-pb or maindec-8e-d0db-pb.
Sometimes they are secretly the same, and/or will run fine, sometimes not.

Let me know if you find write-ups for (or issues with) the images there, and I'll see what I can do to make the collection better.

Vince
 
Hi All;

I have put the PDP 11/45 away for now, and somewhat put the PDP 8i clone away for awhile.. While I do some more Reading and studying and possibly trying out Ligisim as well..

I have instead gotten out a couple of my Old Philco Radios for a change of pace..
Nope !! Put the Radio's away..

THANK YOU Marty
 
Last edited:
Hi All;

I have hand copied the instructions from Your (Dave's) posting #50 and #63..

"" I found an error within one of the library ICs that I was using - so I have fixed that. ""
I would like to know more about that and adding any Ic's that are not in the Library, such as (I think) the 7486..
And for either starting from scratch or modifying what is there to comply to what I actually have in my schematics..

THANK YOU Marty
 
The initial problem I had with the 7400-lib was with the 74174 simulation I am using for the bulk of the registers (in particularly the PC). When I ran my simulation - LOGISIM would halt with a message stating that there was oscillations when it tried to perform the operation "PC := PC + 1". According to the TEXAS INSTRUMENTS data sheet, the 74174 requires a high-going clock edge to latch the data in. It is not a 'transparent' latch, where the data is latched when the clock input is logic '1'. Opening the 74174 library device, I noted that the clock input for the latches had been configured as 'logic high' (transparent) rather than 'low to high'. Modifying the D-type flip-flop parameters for the latches sorted the problem.

The library '7400-lib' has a 7486 part. But you are correct, the first thing you need to do is to create the library parts that you are using in your physical implementation. If you open the 7486 library part you will see how to create a 'simple' gate-level IC. Open my 74194 device for a more complex part. I would suggest creating a new project in LOGISIM, opening the 7400-lib library, and creating a new sub-circuit for each new IC that you require that is not in the library. Copy an existing device wholesale from the library to your new sub-circuit, delete the logic from the copied part, edit the I/O pins and change the pin names and ensure the pin direction (input or output) is correct, and enter the new logic required. get hold of the TEXAS INSTRUMENTS data sheets for each of the parts you require and implement the logic exactly as it is described within the data sheet. Fully test the new part by creating a part on the 'main' worksheet and connecting up D flip-flops to all the inputs and LEDs to all the outputs of your new device. Use the Q outputs of the D flip-flops as the inputs to your logic circuits. The reason I suggest this is that you can toggle the state of the D flip-flop whilst in simulation mode to set the various input combinations to your new device. Once the new part is working correctly, delete it from the 'main' circuit and move on to the next logic part.

Once you have all of your IC simulations developed, pinch a copy of my front panel switches and LEDs (to save you re-entering it again...) by copying and pasting and then start to develop your sub-circuits from your logic ICs (e.g. the MA, MB, PC,... etc. registers).

As you can see from my current PDP-8 schematic; my 'main' circuit is the PDP-8s 'user interface' with the PDP-8 itself being a sub-circuit connected to the I/O.

Dave
 
Vince,

Thanks for the feedback. The reason I was asking about the 8e versions in particular is that they seemed to be a 'fuller' set (complete with PDF listings) rather than the 08. If I use an 08 diagnostic without the listing and it fails then the debugging will be more complex than just reading through the listing and seeing where it halted. But I agree with you - the 08 should work relatively flawlessly whereas the 8e could be problematic if they use a BSW or something not on an 8i.

I might try the 08 diagnostics first that are accompanied by listings and then move on to the 8e diagnostics second - but have a look through them before hand for any signs of 8e-specific code.

Thanks for your great website.

Cheers,

Dave
 
Thanks for the feedback. The reason I was asking about the 8e versions in particular is that they seemed to be a 'fuller' set (complete with PDF listings) rather than the 08. If I use an 08 diagnostic without the listing and it fails then the debugging will be more complex than just reading through the listing and seeing where it halted. But I agree with you - the 08 should work relatively flawlessly whereas the 8e could be problematic if they use a BSW or something not on an 8i.
The instruction that they seem most overly fond of is "CAF".

Thanks for your great website.
Thanks! I try to make it kind of a one-stop-shop for things PDP-8, though that does
mean a lot of stuff is actually derivative or even an outright copy of stuff that can be
found elsewhere.

Vince
 
Thanks for the "heads-up" on CAF (plus the other odd 8/e IOT instructions).

Whilst replying above regarding the problems I experienced with the library for the SN74174 it set me thinking and I think I have found why MAINDEC-8i-D02B-D fails to run properly. When performing the opcode ISZ; I increment MB and write the new value to the RAM (MEM) and MB simultaneously. This causes me a problem as MB is increment by 1 but MEM has MB+2 stored into it! The output from MB is routed throughout the ALU - which adds 1 to it and routes the incremented value back to MB and MEM. I tried to be too clever and write the 'MB incremented' value to MB and MEM simultaneously. The MB register latches the incremented value on the leading edge of the clock - but the MEM (RAM) control signals (/CE and /WE) are LEVEL signals and store the value CONTINUOUSLY whilst the RAM device is enabled for writing. Of course, latching the incremented value of MB back into MB causes the incremented value to be presented to the ALU - which increments it again (the 74181 is combinatorial logic only) and this newly incremented value is also presented to the RAM (MEM) which is then stored...

It took longer to explain than to actually fix my microcode. Marty - you may find some similar issues if you are using conventional RAM chips in your hardware implementation?

It now looks like my logisim implementation of an 8i is successfully running MAINDEC-8i-D01B-D and MAINDEC-8i-D02B-D successfully (apart from the teletype output and the last part of D02B where the interrupts are tested).

My next issue is to implement the IOT instructions for the teletype and reader and the interrupts. I am away on a business trip this week - but I will upload what I have done so far when I get back before continuing with the development.

Dave
 
Current state of my LOGISIM implementation of a PDP-8/i

Current state of my LOGISIM implementation of a PDP-8/i

Hi,

Latest update of my LOGISIM PDP-8/i implementation.

Not yet 100% complete (what ever is) - but it successfully runs all of the MAINDEC diagnostics I have tried so far.

I will post a more detailed description later of what is included in the ZIP files, what the outstanding issues are and (more importantly) how to 'use' it!

Enjoy,

Dave
 

Attachments

  • 8imc_copy.zip
    16.8 KB · Views: 2
  • 8ilogisim_copy.zip
    79.9 KB · Views: 2
8imc_copy.zip contains the microcode for the PDP-8/i implementation.

PDP8i_MICROCODE.java contains the microcode itself plus a 'harness' to generate the data necessary for importing into LOGISIM.

Use build8imc.sh to compile PDP8i_MICROCODE.java (assuming you have a java compiler installed of course) to generate PDP8i_MICROCODE.class.

Use run8imc.sh to run the previously compiled Java program. The output produced on stdout contains (first) any errors during the processing of the microcode, followed by a listing of the microcode (text labels, hex microcode ROM addresses and hex microcode words) followed by the key output starting with "v2.0 raw" and then a load of HEX numbers. You need to copy and paste the header ("v2.0 raw") and all of the immediately following HEX numbers to the file PDP8iMICROCODE for inclusion within the LOGISIM simulation.

Don't worry if all this is gibberish to you - I have done it for you (i.e. the 'other' ZIP file containing the LOGISM simulation has the microcode already included). If you want to experiment yourself - you will need to adopt a procedure something like the above to incorporate your changes into the simulation.

Dave
 
There are a few 'limitations' of this simulation:

1. The Fetch, Execute, Defer, Pause and Run front-panel status lights do not work.

2. The single-step switch doesn't work (the single instruction does work).

3. I need to change the microcode address latches from 74163 (synchronous reset) to 74161 (asynchronous reset).

4. On a MAC, the keyboard handler does not work properly with CHEKMO for <NEWLINE>. The MAC/KEYBOARD block within LOGISIM returns <LF> instead of <CR>. I suspect that if you run LOGISIM on a Windows box it may work. I will look for a DEPOSIT modification for CHEKMO...

5. A bit of tidying up and comments are called for (microcode) and some text boxes adding to the LOGISIM logic to describe the function of each logic sub-system.

6. I may look at some logic reduction for the discrete logic and moving to 'IC pinouts' instead of 'functional' blocks of logic.

I will post details on the LOGISIM model tomorrow when I have a bit more time...

Dave
 
Hi All;

I have put the Altair away, and I am getting the PDP 8i clone out, I can do a re-look at it with a fresh outlook at it..

THANK YOU Marty
 
Hi All;

I have found a multitude of problems, Mostly wiring errors, about 5 or 6..
But, the one that has caused my most head shaking, is that I bought 3 new 7489's and put them in, and one or more is Bad..
I replaced all three of them, and it works better..
I have not yet tried to put any programs in, or tried any of the switches, other than '0000..
Which will be next.. and which may prove to find more mistakes, but for now I am Happy..

THANK YOU Marty
 
Hi All;

I have found a multitude of problems, Mostly wiring errors, about 5 or 6..
But, the one that has caused my most head shaking, is that I bought 3 new 7489's and put them in, and one or more is Bad..
I replaced all three of them, and it works better..
I have not yet tried to put any programs in, or tried any of the switches, other than '0000..
Which will be next.. and which may prove to find more mistakes, but for now I am Happy..

THANK YOU Marty

You deserve it :->! Did you get those 7489s from a reputable supplier?
 
Hi All;

PBirkel, Yes, Which is what surprises me.. I bought them, at the same time I bought most of the IC's that I would need in 74LSxx , instead of 74(plain).. Thinking that was what was wrong, That I had some Bad Ic's in my 74xx's that I was using, and so new ones would eliminate that problem.. I also, rewired in the 74181 Sockets, from some old (think) trash sockets to new machine sockets..
So, one of the wiring errors (problems) was a missing wire to one of the S(0-3) control signals.. Another couple was in the PC (Program Counter) circuitry that I had worked on months ago..
So, now You are up to date on my progress..

I have been working on it, on and off for the last few weeks..

THANK YOU Marty
 
Hi All;

I got some things done this afternoon and night, I need to check the Accumulator and Ma and Mb and the Write Circuits for correctness..
The last three bits of the Accumulator have a problem when doing a bit rotate, which just might be a bad Ic, but, I might just as well check everything affecting it..

THANK YOU Marty
 
Hi All;

I think I have found a few more mistakes, I need to do some more checking for sure..
On the Accumulator, I replaced one of the Ic's, which seemed to be Bad (74194)..
The MA Register is Stepping by itself, some of the time, also, when the left hand of the Board is flexed it can make the computer work and or cause the MA register to continuously increment it's contents..

THANK YOU Marty
 
Last edited:
Back
Top