MEM11 status update

Guy Sotomayor ggs at shiresoft.com
Fri Oct 9 23:35:49 CDT 2015


I wanted to let folks know what the current status is on the MEM11
project.  I apologize in advance for the long post.

Previously I had mentioned that the emulator was fully functional (more
on that later) and that I was starting to debug the MEM11 firmware.  I
have made significant progress and I'm in the final stages of testing
the recovery image firmware and the configuration image firmware. In
reality, the recovery image firmware is a heavily stripped down version
of the configuration image firmware - I had to make space for all of the
strings, in the configuration image the strings are kept in FRAM. This
usually means that I can do most of the testing in the configuration image
and (with a few exceptions) I'm assured that it'll work properly in the
recovery image.

The recovery image is what will be in the J1's RAM (in the FPGA) after
reset.  It is also the "cold boot" loader.  Depending upon configuration
settings and a couple of jumpers, it looks for a version of firmware
to run.  Recall that there are up to 5 copies of the firmware:
     2 copies of the "run time" firmware, this is what makes the MEM11
     a set of Unibus devices
     2 copies of the "configuration" firmware, this allows you to
     configure the board, load new firmware, load/save memory, ROM
     images and RS11 disk images
     1 copy of the "configuration" firmware that is deemed "safe". This
     copy cannot be updated except by the recovery image

The recovery image is part of the FPGA programming so it cannot be
updated in the field.

The recovery and configuration images support the XMODEM protocol for
uploading/downloading FRAM contents.

I'm going through and exhaustively testing all of the command and
checking that they produce the proper results and leave no extraneous
bits on the stack(s).

I haven't been able to do any testing on the XMODEM command yet because
I don't have support in the emulator for connecting other programs to
the console.  So once all of the other commands have been tested, I'm
going to extend the emulator to handle some other devices.  I'm also
going to add some scripting capabilities.  I'm getting really tired of
typing some commands (the first 3 in the session below are burned into
my brain).  It should also allow me to provide some capability to
emulate the Unibus side of things once I get to the point of testing
out the runtime firmware.


Here's a short session on using the emulator:

$ gforth emulator/j1-emulator.fs
J1> mode status 0008
J1> load 60000 mem11-cfg.img
J1> get j1-boot-ram.img
J1> run
MEM11 Recovery Interface
MEM11 Firmware Version 0.4 (EMUL)
RECOVERY> help
Commands:
   BOOT     Boot selected image
   CLEAR    Clear specified memory region
   DUMP     Dump out a section of FRAM
   MAP      Display FRAM address map
   MODIFY   Modifies contents of FRAM
   VERSION  Display version
   RESET    Perform a HW reset
   XMODEM   Download into FRAM using XMODEM protocol
   SET      Set configuration information
   SHOW     Show configuration information

Additional help:
   HELP <command-name>

RECOVERY> boot safe
MEM11 Command and Configuration Interface
MEM11 Firmware Version 0.3 (EMUL)
SAFE> help
Commands:
   BOOT     Boot selected image
   CLEAR    Clear specified memory region
   DUMP     Dump out a section of FRAM
   ENABLE   Enable indicated UNIBUS device
   DISABLE  Disable indicated UNIBUS device
   EXAMINE  Examine J1's RAM
   LIST     Lists names of images
   MAP      Display FRAM address map
   MODIFY   Modifies contents of FRAM
   POKE     Change J1's RAM
   VERSION  Display version
   RESET    Perform a HW reset
   XMODEM   Download into FRAM using XMODEM protocol
   SET      Set configuration information
   SHOW     Show configuration information

Additional help:
   HELP <command-name>

SAFE> set defaults
SAFE> show dl11 0
ENABLED
SLOT:          3
CSR:           777560
LENGTH:        000010
INT VECTOR:    060
INT PRIORITY:  BG4
BAUD RATE:     9600
PARITY:        NONE
DATA BITS:     8
STOP BITS:     1
SAFE> show memory
ENABLED
BASE ADDR:     000000
LENGTH:        760000
SAFE> show kw11l
DISABLED
SLOT:          7
CSR:           777540
LENGTH:        000010
INT VECTOR:    100
INT PRIORITY:  BG6
LINE FREQ:     16667 uS
SAFE> list boot-image
          0 : <NO IMAGE>
          1 : <NO IMAGE>
          2 : <NO IMAGE>
          3 : <NO IMAGE>
     B SAFE : MEM11 Config V0.3 (EMUL) Built on Fri Oct 9 20:18:31 PDT 2015
SAFE>
Execution Stopped at: PC:  016C
J1> help
Commands:
  HELP       - Help command
  DUMP       - Examine the contents of FRAM
  MODIFY     - Modify the contents of FRAM
  EXAMINE    - Examine the contents of J1 RAM
  PATCH      - Modify the contents of J1 RAM
  CLEAR      - Clear the contents of FRAM
  LOAD       - Load FRAM from a file
  SAVE       - Save FRAM into a file
  GET        - Load J1 RAM from a file
  QUIT       - Exit the emulator
  RUN        - Run the J1 program
  STEP       - Single step the next J1 instruction
  BREAKPOINT - Set a breakpoint
  CONTINUE   - Continue J1 execution
  .R         - Dump the J1 return stack
  .S         - Dump the J1 data stack
  .PC        - Display the current J1 program counter
  DEPTH      - Report the depth of the J1 data and return stacks
  TRACE      - Control tracing of J1 instructions
  RESET      - Reset J1 and the emulated peripherals
  MODE       - Set or view the MEM11 mode
  LED        - Display the LEDs that would appear on a MEM11 board

Typing 'HELP <command>' will give additional details about the command
J1> .s
DSP: 5
ST0: 0005

Data Stack:
  5 : 0000
  4 : 1E1E
  3 : 1E6E
  2 : 1E1E
  1 : 0000
J1> .r
RSP: 6
Return Stack:
  6 : 0D84
  5 : 0D4A
  4 : 0D7E
  3 : 1C1A
  2 : 3B26
  1 : 3BB2
J1>



More information about the cctech mailing list