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>