In the late 1970s, I was taking an electrical apprenticeship. The apprenticeship included college day release and evening classes, and being interested in electronics, my employer kindly enrolled me in an “Industrial Electronics” course (which they very kindly funded after the apprenticeship, to gain further qualifications). I cannot that that employer enough for such a great start in life.
On that course, I was introduced to the Motorola 6800 CPU, and I was hooked. The 6800 had only been released in 1974 so it was the “latest gear”. I learned to use a 6800 System Monitor and spent many happy hours writing machine code to simulate all manner of systems. I am pretty sure the system I used was the SWTPC 6800 – a system widely used to teach engineering and computer studies. The monitor software was called, as far as I can recall, MIKBUG, used via an RS232 terminal.
Having a basis of machine coding was incredibly useful, as it give a special perspective into how CPUs worked, right down to the registers. Later in life I started working with micro-controllers and found the Motorola core was still used in the Motorola 68HC series of micro controllers (MCUs). Motorola sold this semiconductor line to Freescale who sold to NXP. As of today, the 6800 Core is still actively produced and developed by NXP (the older generation of MCUs are obselete). You used to be able to buy small volumes (even single chips) when things were Motorola. No longer…
But harking back to the SWTPC6800, there was always something special about typing in machine code, and so I wondered if it were possible to adapt a 68HC MCU for RS232 terminal use.
The 68HC MCUs did have a “monitor” program but that was intended for machine-to-machine programming of the flash. The later S-series MCUs dropped that Monitor in favour of USBDM.
Hence, I decided to write a monitor using one of the earlier HC908 (the HC908JL8), and created SiMON. It kinda does some of the MIKBUG functions, but I wasn’t attempting to replicate MIKBUG (after all MIKBUG would load and store to/from paper tape).
What can SiMON6800 do?
SiMON6800 allow you to:
- Read bytes from anywhere in the memory map including IO ports which are memory-mapped, and view blocks of bytes
- Write bytes to memory (only RAM of course), this is done in a sequential way for fast data entry
- Flood fill RAM (128 bytes)
- Run a program
- Add user breakpoints to view port and register data
- Save a program to the MCUs flash (128 bytes)
- Recall a program form the MCUs flash (128 bytes)
- The flash code also contains some useful user subroutines (timing loops etc) to make life a little easier when writing user program.
What are the limitiations?
The HC908JL8 only has 256 bytes of RAM (MIKBUG had “massive” 4k)
The limited RAM also has to accomodate the Stack and SiMON6800’s RAM variables. But nonetheless you have a decent approximatly 192 bytes to play with. But that’s suffcient for typing in machine code, and the flash based subroutines also help.
You cannot add peripherals as the address and data buses are not exposed
Interface
The SiMON6800 PCB uses a USB to TTL converter, so that you can connect to SiMON using USB (with PuTTY for example).
Port A, B and D are exposed in headers, so you are able to add LED’s and switches. And you can make you own driver boards for relays etc. Everything is on a 100mil (2.54mm) matrix to suit the hobbyist.
Even the HC908JL8’s SDIP pin spacing is adapted to 2.54mm spacing. This means, of course, you can use different MCUs (note that SiMON6800 uses the inbuilt CSI module for RS232 communiations).