MEM11 Status Update

Guy Sotomayor ggs at
Sun Aug 30 01:08:14 CDT 2015

The MEM11 is a multi-function memory board for Unibus based PDP-11 
computers.  It contains:

  * 128KW memory
  * Emulates console ROM & boot ROMs
  * 2 SLUs (DL11s)
  * KW11K
  * KW11P
  * KW11L
  * KW11W
  * RF11 (emulating up to 8 RS11 disks)
  * KE11

Because of the large number of devices that exist on the board, it 
operates in 2 modes:
     - Run Mode.  This is the operational mode of the MEM11 where it 
appears as the
        indicated devices to the rest of the PDP11.
     - Config Mode.  This is a mode where the devices on the MEM11 can 
be configured.
        This is all done though a CLI that is accessed through one of 
the SLUs.

Because all of this is implemented in firmware on the MEM11 board (it 
contains a J1
uP in the FPGA), I've implemented a boot loader to load various versions 
of the code
into the FPGA.  The firmware is stored in the FRAM not used for 
emulating the
Unibus memory, ROMs or RS11 disks.  The boot loader (based upon the 
settings of
the only 2 jumpers on the board) will determine what code to load into 
the FPGA.
It should be noted that the memory that the J1 executes out of is all 
contained in
the FPGA itself.  The J1 RAM (as it's called) initially contains the 
"cold boot" loader
which determines which area from the FRAM is to be loaded.

When in Config Mode, various parts of the FRAM can be updated. This 
allows for
me to send out firmware updates without folks having to use a JTAG 
Config Mode also contains the ability to transfer data to/from the 
various FRAM
regions using the XMODEM protocol.  This also allows for the various ROM 
to be loaded/dumped as well as the contents of the RS11 disks.

The biggest struggle has been one of space.  The J1 only has 16KB of RAM 
Right now the Config Mode image is a bit over 15KB.  I also have to 
reserve 512B
in each image for the boot loader.  In order to get the Config Mode 
image to fit
all of the strings that are used for printing, parsing, help text, etc. 
remain in FRAM.
Individual strings are only fetched into J1 RAM when the string is to be 

The Config Mode firmware is now complete.  I've been building up the 
so that I'm very close to starting to actually debug the full firmware 
image.  I have
a few other tests to perform first.

The Run Mode firmware is not yet complete.  The main parts of the firmware
have been written.  Currently the Run Mode firmware supports:
     - Unibus memory
     - ROMs
     - SLUs

I want to get that working on the emulator before I write the remaining 

The main objective is to provide the memory and I/O necessary to be able 
to run
Unix V1 (I also added a few more things because they're just "code").

There's a lot to this (and various things have kept me from working on 
this as
much as I wanted to).  I also plan on providing fairly detailed 
with each board (but there is a fairly extensive help system in Config 

TTFN - Guy

On 8/29/15 10:16 PM, Kip Koon wrote:
> Hi Guy,
> Hello!?!  What is the MEM11 Board and are there other boards to make this a fully functional PDP11?  I definitely want to know!  Thanks in advance.
> Kip Koon
> computerdoc at
>> -----Original Message-----
>> From: cctalk [mailto:cctalk-bounces at] On Behalf Of Guy Sotomayor
>> Sent: Sunday, August 30, 2015 1:06 AM
>> To: General Discussion: On-Topic and Off-Topic Posts
>> Subject: MEM11 Status Update
>> I'm making good progress on the MEM11 firmware.  I spent the last few days re-doing the firmware build environment.  Previously, it
>> would build all the files each time.  Now there is a proper Makefile (even though it takes about a minute to build everything).  I
>> realized that I needed something better than what I had because there are multiple targets (emulator, FPGA eval board and the
>> MEM11 board itself).  Right now I'm focused on getting as much debugged on the emulator since it has a reasonable debuging
>> environment.
>> I've also integrated various test programs into the build environment and use various low level code as part of the main firmware for
>> hardware access.
>> This "kills two birds with one stone" since it tests not only the various hardware functions it also allows me to debug some of the
>> firmware separately from the full code base.
>> At this point, the emulator fully supports all of the J1 instructions (and they all work too!).  In terms of I/O (that will be part of the
>> MEM11 board) it supports LEDs and various configuration inputs, FRAM, UART and timers.
>> The biggest risk that I'm taking is that the UART is emulated as being directly exposed.  On the MEM11 hardware, the UART will be
>> connected through a SPI interface which requires that all accesses to the UART are asynchronous transactions.
>> The biggest piece of work remaining on the emulator will be emulating the Unibus interface.  The work here will mainly to create a
>> means to script various Unibus transactions.
>> However, before doing that, I'll be testing out the boot loader code and the configuration firmware since none of that is dependent
>> upon the existence of functional Unibus hardware.
>> TTFN - Guy

More information about the cctech mailing list