Image Map Image Map
Page 2 of 2 FirstFirst 12
Results 11 to 14 of 14

Thread: PDP-8/I: New SoC implementation

  1. #11


    Small status update: I've started implementing the software part. Decided to create a small custom Linux distribution using Yocto that runs node.js to control the FPGA and peripherals. The software can communicate with the FPGA hardware through a Linux kernel module and a browser is used to control the system.

    The first release milestone is nearly done: The CPU, EAE, memory extension and interrupt controller are implemented and the node app implements an ASR-33 and a PR-8/I so that you can already load tapes and use Focal. And since the CPU is based on the real schematics, Focal actually identifies the system as a PDP-8/I. Also, the front panel works exactly like on the real system, including single stepping etc.

    Here's a screenshot of the current version. Note that the front panel is just an alternate visualization, the system is connected to the PiDP-8 at the same time and both the virtual and the real front panel display the same state. Flipping a switch on the PiDP-8 is immediately visible in the browser. The browser is only used to control the peripherals and attach tapes etc., but is not required for use. Also, it's possible to click the switches in the browser. This will disable the real switches on the PiDP-8 until one of them is pressed.


  2. #12


    Nice project. I'm currently working on a similar thing but I'm doing a PDP-6 and currently working on the KA10.
    As a board I'm using a DE0-nano-SoC so maybe I can try to get your project working on it if I find the time.
    I don't currently have the quartus project online but all the verilog can be found here: (see the verilog dir).

  3. #13


    Great to see another SoC project! We're using very similar technical approaches, e.g using memory mapped I/O to communicate between the ARM and the FPGA. I haven't ported my project to Cyclones yet because I didn't find a Cyclone board that has a Raspberry connector which allows a direct connection to Oscar's PiDP-8/I console.

    Meanwhile, I implemented data breaks in the system which allowed me to implement the TC08 peripheral. Now my system can boot OS/8.

  4. #14


    (Cross post from the PiDP mailing list)

    Another status update, this time a big one -- I'm done with nearly all of the hardware:

    • Data breaks fully implemented according to the real schematics
    • KT8/I time sharing option implemented
    • CPU options such as number of additional memory fields and EAE and KT8/I presence now configurable at runtime. If memory fields are absent, correctly generate invalid AC values when reading. Passes the PDP-8/I memory test in all field configurations.

    Also, I implemented the following peripherals using a hybrid approach. The bus connection is implemented on the FPGA and the interaction such as tape loading is implemented in software. This allows an easy changing of tapes through the browser app.
    • KW8/I: Real time clock. Simulates 60 Hz ticks for now, will later be configurable for 50 Hz (based on the line frequency in reality).
    • DF32: Small harddisk. Only basic read and write, no maintenance instructions.
    • RF08: Bigger harddisk. Only basic read and write, no maintenance instructions.
    • TC08: DECtape. Only basic read and write, no formatting instructions.
    • PT08: Additional serial lines. Browser shows each connection as a custom terminal. Will later be able to connect to real UARTs or telnet.
    • AS33 and PC04: Basic teletype and high speed punch / reader

    The system can now run lots of software that I found. OS/8 runs smoothly and can run the adventure game in Fortran. I tried various things that are possible in OS/8, for example building the system from papertape on an empty harddisk or using it without harddisk by booting and running from DECtape, it's all working fine.

    I also got TSS/8 to run which I think is a huge step forward. Getting it to run properly was a little hard: All the binaries I found online were compiled for a PDP-8/A or PDP-8/E. These systems have a different real time clock and use the BSW or KIE instructions, so wouldn't run on my PDP-8/I. However, the system does support the PDP-8/I. I was able to change the CPU variable in the TSS/8 source code and compile it for a PDP-8/I. And that version runs perfectly as it only uses PDP-8/I instructions and interfaces the KW8/I when compiled in that manner. I believe that TSS/8 was shipped by DEC in binary form and was tailored for the exact system of the customer.

    The whole peripheral configuration such as the disk type are also configured in the source code, that's why I think so. I will probably create a mock Digital website where users can "order" a custom TSS/8 papertape set that's compiled for whatever configuration they want as an instant download. All I'm missing is the PUTR papertape. I was able to extract PUTR.SAV from the disk image using an old DOS tool called PUTR.COM, but I haven't figured out how to convert the SAV file to a BIN papertape.

    Focal and BASIC are also functional in TSS/8.

    Next, I will finalize the visuals and then the first release is almost ready.
    Last edited by fpw; November 18th, 2019 at 02:34 PM.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts