From the Github readme:
1.0 Introduction
This document describes the T-11/RP2350 project. The RP2350 serves memory and peripherals to the Digital Equipment Corp (DEC) Tiny-11 (DCT-310) single chip PDP-11. Currently, the board is able to boot and run RT-11 5.07.
1.1 Emulated system
Currently, the following devices are emulated:
- KW11 - line time clock, configurable as 50 or 60 Hz. An RP2350 timer provides the interval.
- DL11 - single line UART. RP2350 SDK used to send/receive characters to/from the T-11.
- RK11 - 2.5 MB disk drive. This is mapped to a file on a micro SD card, using the SDIO/FatFS libary.
- M9312 - console and boot ROM card. Slightly modified PDP-11 boot ROM and standard RK boot code storage is emulated.
1.1 Background
The T-11 as Digital's first single chip PDP-11, and was intended for commercial board designs. As such, it was used for DEC products such as the VT240 terminal and peripheral controllers. It saw limited commercial success, of which the Paperboy video arcade console is one example.
1.2 Motivation
I started with DEC right out of college, working for the Semiconductor Engineering Group in Hudson, MA. My first assignment was supporting the T-11, including design reviews, documentation, etc., so this project was a great way to re-visit that part of my career.
2.0 Design
The RP2350 is fast enough to provide full speed memory to the T-ll with the use of PIO and DMA. Currently, the design uses about 50 clocks to provide 8/16 bit memory reads and writes using four DMA channels and one PIO instance with it's four state machines. In addition to supporting memory, the other state machines provide interrupt cycle support, T-11 mode register loading, and forwarding of I/O requests to the RP2350 processor. The latter facility copies I/O page memory requests to a dedicated FIFO so that the RP2350 can be interrupted when I/O occurs.
2.1 I/O
When the T-11 performs a memory access to I/O space (the last 8KB), PIO and DMA performs a read or write to the RP2350 internal memory to complete the request. Simultaneously, another PIO engine pushes the address and data to a PIO FIFO so that the RP2350 can update the affected I/O locations. For instance, a T-11 read of the DL11 UART receive buffer must return the RX buffer, and also clear the RX ready flag. So, the PIO/DMA machine will return the emulated RX buffer contents, and I/O PIO machine will trigger the RP2350 service routine to clear the RX ready flag. (Of course, there is an implicit execution time limit: the flag must be cleared faster than the T-11 can read the next memory location). In general, simple side effects can be handled in a RP2350 interrupt service routine, while longer operations must be handled by an event loop running at normal priority. Emulation of disk drives is handled this way.
3.0) Getting started
3.1) Hardware
Gerbers are in brd/pico2-t11_rev_1.0.
Rev 1.0 requires the following ECOs:
- Disconnect GPIO 47 from T11 pin 36 (VEC) and connect to T11 pin 39 (HALT).
- Add 1k pullups resistors to: HALT (pin 39), PF (pin 38), and DMR (pin 32).
- Add 1k pulldown resistors to: VEC (pin 37), and BCLR (pin 18).
3.2) Software
As configured, the default is to load the boot block from the RK05 image on the SD card. There are defines for starting up test code in pdp11_src, or starting the emulated m9312 boot rom code.
3.2.1) Building
Some prerequisites:
- macro11, from https://github.com/simh/simtools.git
- obj2bin.pl, from https://github.com/AK6DN/obj2bin/blob/master/obj2bin.pl
Build steps:
- cd to sw/initial_test_v1.0
- Make a soft link to your installation of no-OS-FatFS-SD-SDIO-SPI-RPi-Pico.
- cmake -B build -S .
- make -C build -j
3.2.2 Booting RT-11
- Get an RK05 RT-11 disk image, copy to a micro SD card with a name of rk0.dsk, insert card into the microSD card slot on the board.
- cd to sw/initial_test_v1.0
- Make a soft link to your installation of no-OS-FatFS-SD-SDIO-SPI-RPi-Pico.
- cmake -B build -S .
- make -C build -j
- Start open-ocd and...
Marcellus Pereira
land-boards.com
J.B. Langston
Just Me NL