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