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 programmer. 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 images
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 space. 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 used.

The Config Mode firmware is now complete. I've been building up the emulator 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 firmware.

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 documentation with each board (but there is a fairly extensive help system in Config Mode).

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
computer...@sc.rr.com
http://www.cocopedia.com/wiki/index.php/Kip_Koon



-----Original Message-----
From: cctalk [mailto:cctalk-boun...@classiccmp.org] 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


Reply via email to