SCSI2SD SCSI2SD is an approach emulating SCSI hardware with software running in an PSoC microcontroller from Cypress. An ARM Cortex M3 controller is provided as part of the PSoC, and furthermore a bunch of programmable system parts, e.g. usable for interfaces etc. Focus is on mass storage, so SCSI2SD can emulate hard drives and other mass storage devices, all on a SD card. Main website is http://www.codesrc.com/mediawiki/index.php/SCSI2SD .
Alternative PCB layout, specialized for Powerbook hardware, but can be used for general SCSI purposes too: https://www.
DEC VT 330+ is a successor of VT330. My device has latest date codes from week 28 in 1990, so it is about 1990 or 1991. The electronics differs from the VT330, the digital logic part is build on a single PCB only. While older VT330 were built on two boards.
This newer board has an Intel 8032 8-Bit CPU, 2x128 KByte EPROMS (27C010), 2xHM62256 2x32KByte RAM. The microcontroller has two companion chips SCC2692AC1N40, these are dual asynchronous receiver/transmitters.
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: