Microdrive, IBM DSCM-11000, with 1GB capacity. From year 2000. Connector type is “CF+ Type II”. Formfactor 1.8’’. Weight 16 gramms. These are real harddiscs, with super-small rotating discs inside, moving heads and all that fancy stuff. This was designed at a time, where it was not possible to create large semiconductor based non-volatile memory. At that time, it was easier to scale down the physics of a real harddrive and to create a tiny version of that.
PDP11 Assembler This text describes how to assemble PDP11 files on Linux. MACRO-11 assembler, linker, disassembler for Linux There are several ways to create object binaries for PDP11 on Linux. I have tested these tools that form a nice tool set for handling PDP11 assembler files on Linux: Macro-11 Assembler, see https://github.com/andpp/macro11 (written in C) Macro-11 Linker, see https://github.com/andpp/pclink11 (Written in C++) PDP-11 Disassembler, see https://github.com/caldwell/pdp11dasm (Written in C) All tools did compile without any options by just executing make on them.
Coding for PDP11 machines without any target operating system (bare metal). Gnu GCC does the job. Github location There is useful code on Github, see here: https://github.com/DennisD2/pdptools/tree/main/all2deposit Toolchain install https://www.teckelworks.com/2020/03/c-programming-on-a-bare-metal-pdp-11/ https://xw.is/wiki/Bare_metal_PDP-11_GCC_9.3.0_cross_compiler_instructions # Download packages curl https://ftp.gnu.org/gnu/binutils/binutils-2.34.tar.gz >binutils-2.34.tar.gz curl https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz >gcc-9.3.0.tar.gz # Extract packages tar xvf gcc-9.3.0.tar.gz tar xvf binutils-2.34.tar.gz # Download/install prerequisites for compiler cd gcc-9.3.0/ ./contrib/download_prerequisites # Create build dirs cd .. mkdir binutils-build mkdir gcc-build # Build binutils cd binutils-build/ .
If you want to write code for a PDP11 CPU or PDP11 machine, you need some environment to do so. I have only parts of a PDP11 machine and cannot simply use this to write code. So I tried several ways: Using SIMH emulator to emulate a PDP11 machine, boot up some PDP11 Operating System (RT11) and use the available tools from that OS Using native Linux executables that allow for assemble and link valid PDP11 executables Using Gnu GCC toolchain for bare metal programming The SIMH emulator way is described in this document further below.
This is a medium size UV EPROM Eraser. It can delete up to 25 chips at once in a removable tray 23x10cm. From datasheet, it has ~17.000µW/cm2 UV intensity. Wavelength is 254nm. It has a large replaceable UV grid tube. Erasing time required from the datasheet is between 5.9 and 14.7 minutes, depending on required erasing energy of the chip to erase (usually given in Watt * seconds/cm2). Tray opened, can fit 25 chips or while PCBs: The mechanical 0-60min timer was loose, I had to fix it: A very nice vintage mystery chip I found inside the eraser: I tried to get some knowledge in that chip: https://www.
The M8047 MXV11-A Multi Purpose Card board has DEC Boot PROMs, two sockets for up to 2x4 KBytes. I tried to read the data on these >40 years old EEPROMs. For the two PROMs on the board, I could find the DEC part numbers 23-03901-00 and 23-04001-00 on them, which are 6341 Chips with 512x8 Bytes each. These ROMs are MXV 11-A2 Boot ROMs for RX02, RX01, or TU58 With My Batronix Barlino II Eprommer I was able to read out both ROMs (more info on the Eprommer see here.
To play with my PDP11, I developed some tools to communicate with the PDP. They allow to communicate via serial line and to upload code to the PDP. all2deposit - creates a SIMH deposit file from a Paper Tape Format file or (not yet implemented) a MACRO11 LST file pdpcom - allows to upload deposit file content to a serial attached PDP11, also allows to access ODT (lika a common terminal connection also does) arthur-gill-examples - some nice examples examples - some simple examples Screencast demo session Small video clip where I list some memory content, load an object file, show that is has been loaded to memory and execute it (this simple object file waits for a single char and prints it to console):
This document contains information I have gathered when trying to bring some DEC PDP11 boards together to have a “working” system. Summary of boards I have collected some boards in the last years. CPU boards: M8186 LSI-11/23 CPU (C Revision, so capable of 22 bit addressing) RAM boards: M8044 MSV11-DD 32K RAM, 18Bit M8067 512KB RAM, 22 Bit Serial boards: M8028 DLV-11F serial board M3104 serial board Multi Purpose Boards:
Elektronika BK0011 is successor of BK0010, same in english. Both use PDP clone-like CPU K1801WM1. The CPU is said to be fully compatible with PDP11 CPUs, but does not implement EIS instructions. See articles in OldComputerMuseum, PDP11 Instruction set CPU runs at 4Mhz. BK0011 has 128KB RAM. Monochrome/Color output via DIN connector. Built-In speaker and (russian) keyboard. Parallel and serial ports. QBUS available at back side of case. Slots for inserting additional option ROMs
This post describe my effort to fix a broken M8044 PDP11 RAM module. For tracing down the bug, I’ve used QBone. I own a defective M8044 RAM board. This board came as part of my OBA-11 PDP11. It was obviously checked by DEC, found to be broken and has a red defective badge. Setting up test bed I’ve created a testbed, consisting of: QBone An unused backplane H9278-A with 8 slots The device under test, the M8044 As power supply, I took a 5V/4Ampere power supply from my parts bin +12V (used by M8044) supply comes from a lab power supply First test with QBone: Check if board responses to bus requests QBone has its tests and many features in a single executable.