BMOW title
Floppy Emu banner

Simulator Download

I’ve beefed up the BMOW simulator in a major way, and it’s starting to look pretty good! For the curious, you can grab the latest simulator here, and give it a try yourself. I’ve bundled it with the Microchess program binary, as well as Wozniak’s Apple II monitor binary. The BMOW simulator is a Windows program, and requires the .NET Framework 2.0 runtime, which you probably already have installed on your PC. If not, you can download it from Microsoft.

The software simulates BMOW’s behavior at the hardware level, all the way down to the microcode, so it’s a very faithful reproduction of the real machine’s behavior. On an older 2.4GHz Athlon CPU, the simulation runs about as fast as the real BMOW hardware with its 2MHz CPU clock. The simulator shows the state of all the BMOW registers, condition codes, and the contents of main memory. It also simulates BMOW’s LCD panel and video display (text mode only). The standard debug stepping controls are all provided: run, pause, step over, step in, step out, and microinstruction step. Source is displayed for the current instruction and microinstruction. Instruction source can be displayed using the original commented assembly listing if a symbol file is available, or using a disassembly of the contents of memory. Breakpoints can be set or cleared by clicking on a line in the source window.

Here’s the BMOW simulator running Microchess:

To load a different program file, choose “Open Program File…” from the menu, and choose one of the provided .bin files. Press the green arrow button to start the simulator running, and the red pause button to pause it. While the simulator is running, you can type at your PC’s keyboard, and your key input will be passed to the running BMOW simulation. Some of the controls like the memory view only work when the simulation is paused.

Microchess Instructions

  • C – Clear and reset the board. Computer plays white, you play black.
  • P – Tell the computer to play its move. **** will be displayed while it thinks.
  • 6343[Return] – Move your piece from square 63 to square 43. The board will be redrawn after each keypress.
  • See the Microchess manual for more details.

BMOW/Apple II Monitor Instructions

  • 1234 – Display the contents of memory location $1234 in the current bank.
  • 1234.1237 – Display the contents of memory locations $1234-$1237 in the current bank.
  • [Return] – Display the values in up to eight locations following the last displayed location.
  • 12K – Set the current bank to $12.
  • 1234:1F 83 BC … – Store the values in consecutive locations starting at $1234 in the current bank.
  • :1F 83 BC … – Store the values in consecutive locations starting at the next changeable location in the current bank.
  • 1234<AB00.AB82M – Move (copy) the values in the range $AB00-$AB82 into the range beginning at $1234 in the current bank.
  • 1234<AB00.AB82V – Verify (compare) the values in the range $AB00-$AB82 to those in the range beginning at $1234 in the current bank.
  • 1234L – List (disassemble) 20 instructions starting at $001234. Subsequent L’s will display 20 more instructions each. Disassembly currently only works in bank 0.
  • 1234G – (Go) Transfers control to the program beginning at $001234. Go currently only works in bank 0.
  • More Apple II monitor commands that may or may not work in the BMOW version are described in this Apple II summary.

You might wonder why both of the provided programs start at address $010002. The real BMOW hardware contains the boot loader in bank 0, at addresses $000000-$00FFFF. The boot loader loads the program binary into bank 1, addresses $010000-$01FFFF. Addresses $010000-$010001 are used as a counter while loading the program data, so the program itself begins at $010002. The simulator skips this boot loader step, and starts running directly at $010002.

Read 4 comments and join the conversation 

4 Comments so far

  1. bro - November 9th, 2008 4:56 pm

    only what i can say is wow.

  2. Bill Buzbee - November 9th, 2008 10:29 pm

    Nicely done!
    I’ve been thinking about doing something similar for Magic-1, but nothing quite so nice as what you’ve written.
    This is really excellent.
    …Bill

  3. Steve - November 10th, 2008 8:03 am

    Thanks guys. I’ve been working on the simulator step-by-step, as I’ve built the real hardware. It’s been great for debugging.

    The original simulator only had the registers panel and memory view window, which are at the top of the window now. It only took a couple of days to write the basic “simulation” part of the simulator, where it executes one microcode instruction and modifies RAM or registers accordingly. Thankfully a single microinstruction can’t do very much by itself.

    The majority of the simulator work went into stuff like the disassembly view, and symbol file, and breakpoints. I’ve generally added new features when I needed them to help troubleshoot some hardware problem. The features I added this week were all to help me debug Microchess.

  4. Did - January 31st, 2020 11:36 am

    I come from the future, the machines have taken the control. All started here

Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.