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>
Show replies by date