Smithbug, MIKBUG 6800 ROM monitors

Most recent revision date of this page, June 27 2022. Copyright 2022 Herb Johnson.


In Feb-April 2019, I was contacted by Mike Lee who decided to restore his vintage MC1602 computer. The computer was based on the Motorola 6800, and used ROM monitors called "SmithBUG" and "MIKBUG". Mike found my A68 6800 cross assembler and so he contacted me on details of use, as he and I worked to recover and assemble the monitors from various paper listings of decades ago. Mike also developed recently, a 6802 controller board and he added Smithbug and Mikbug downloads to his Web site. He found a V1 source listing and binary, and a V2 binary no source, which I disassembled to produce a source. His "V2" includes support for S-records.

In May 2022, Mike Lee and I revisted his works, thanks to an inquiry that there was a likely "bug" in the SmithBug code I've released here. We discussed the bug. Mike found a newer listing for V2 of his copy of Smithbug; it showed the bug was fixed there. He later found SmithBug original docs and scanned them. I provide the PDF and text versions here.

I also found another SmithBub binary, in a FLEX archive library, as a file in an imaged diskette. I worked hard to extract, disassemble, and then to make a "FLEX" version of the V1 source to see if the FLEX library binary had any errors or corrections. I found a jumble of results. So I recommend the "FLEX" version only be used to correct possible errors in Mike Lee's V1 and V2 sources of SmithBug. - Herb Johnson


MIKBUG and MINIBUG are ROM monitors for the 6800 from Motorola. Mike Holley at, has a Motorola "Engineering Note 100 MCM6830L7 MIKBUG" PDF document and MIKBUG source. The Note has listings for MIKBUG and MINIBUG. I'm guessing "MIK" is Mike Wiles, an author of the Note.

From Mike Lee in Feb-April 2019, I obtained a varient of MIKBUG, which replaces the PIA parallel keyboard input with an ACIA serial input. These I renamed MIKSBUG.ASM and MISKBUG.S19.

I've gathered the MIKBUG and MIKSBUG materials in this ZIP file.

Ed Smith's SMITHBUG, and Mike Lee


SmithBug, is a 6800 ROM monitor, produced by Ed Smith and distributed by Software Works Company (apparently his company) around 1980. Here's a review & description of SMITHBUG, from 68 Micro Journal.

SMITHbug V1 files and SMITHbug V2 files are in these ZIP files. V1 is a reconstruction of "SmithBug" source as likely distributed. V2 has some code added by Mike Lee, plus important fixes. This Web page will explain. Later in this document, I provide a binary and disassembled SmithBug from another source (a FLEX disk archive); it likely represents an original SmithBug distribution other than some I/O code changes.

In late May 2022, Mike Lee provided a PDF scan of a SmithBug document. I OCR'ed and edited it, here's the text version.

A "google" for "motorola 6800 smithbug" finds references to "SmithBUG is a trademark of the Software Works Company" and in the October 1979 Kilobaud Microcomputing magazine. Look at page 30 for an article, and page 35 has the reference: "Ed Smith's Software Works....also has FLEX software, including a macro-assembler, disassembler, trace/debug package, and others...". Another reference on page 37 notes ".. some SSB software comes from Ed Smith's". "SSB" is Smoke Signal Broadcasting, another FLEX/SS-50 computer company of the era. Another Kilobaud article which reviewed 6800 monitors says "SMITHBUG comes from Ed Smith's Software Works, PO BOX 339, Redondo Beach CA 90277".

Three versions, from Mike Lee

I provide three versions of SMITHBUG, with sources and binaries as provided by Mike Lee who obtained a copy of SmithBug in the era. In 2019 he decided to resurrect his work of 40 years ago and have another go at it, and rebuild his old 6802 controller. He supplied me with sets of imaged paper listings, and some assemblies, disassemblies and S-record dumps of ROMs. He worked with this code in the 1970's.

"SMITHBUG V1.0" was recovered by Mike Lee in two flavors. One uses an ACIA serial port for I/O, at 8000H and 8001H, and has code to address the ACIA. The other, uses a ROM at F000H for its I/O routines: F000H initializes that ROM code, F006H is character input, F009H and F003H are input. There's fill characters 01H, to fill the space where the ACIA code was, so that the remaining monitor-code is still address-aligned to the ACIA-version.

Mike, myself and others have discovered errors in the SmithBug code. I've noted them in the source, but the V1 binary still represents SmithBug as it was likely distributed. In May 2022, I found an independent SMITHbug binary from the FLEX archive which has the same bugs.

"SMITHBUG V2.0" was recovered in 2019 by disassembly, and confirmed in 2022 from another listing document. It includes a S-record loading feature added by Mike Lee at the time. There's also some small fixes to the V1.0 code. V2.0 uses slightly different ACIA serial code than V1.0 for input and output. There seems to be another error in the S-record loading code; an incorrect 6800 instruction. Otherwise, "V1.0" and "V2.0" are very much the same.

Later in May 2022, Mike recovered a later V2.0 listing. I'll discuss that later in this Web page.

recovering the Ed Smith SMITHBUG

Mike Lee, in 2019: "The main core of the source I sent you is as the Original V1.0 of Ed's SMITHBUG but the original system scratch ($A0XX) was changed to $01F0 and the ROM to $F800 to be loaded on an AMI mother board which was then used by me to develop guidance system automatic test equipment. When the design was completed the original AMI board was replaces by a dedicated board design and again the system scratch and ROM addresses on the SMITHBUG V1.0 were changed to match the new board hardware."

"As far as I have seen there was two [variations] of Ed's work, the first I think was a PIA driven RS232 system, I never used that version, and the second version used MC6850 for RS232 and a PIA for parallel interface. When I moved to another job I migrated all my systems onto a new SSB platform and again the equates were changed to suit."

"The JPG version I sent you are the ONLY genuine Ed' SMITHBUG I have and I sent that to you so you could reconcile the original version. I also have another supplier version which very much like Ed's work but that is by Everson Consulting Services version that starts at $D000 which SURPRISE SURPRISE has the same bug as one of the versions I had with the missing OP Codes lookup errors, no idea how that happened."

.. a few years later ...

In May 2022 I asked Mike Lee again about the origins of his source.

"I THINK the original Thermal-printout I acquired was from a guy, for the life of me I cannot remember his name, when I was in San Francisco back in the very early 80's. So I cannot confirm its actual source accuracy. I transcribed that document sometime later. What I can remember is the guy was well over 6 feet tall, black, well-spoken and very knowledgeable and even more helpful. Herb, thatís the best I can do, it was a lifetime ago!!!! I later transcribed that document and added, over about a year, several new modules to the original source and that is what I sent to you. - Best regards Mike"

Mike Lee followed up, with another document containing his V2 source code. I was able to extract and reassemble that code. It mostly matches the V1 and earlier V2 assembly; it copies Mike's V2 S-record additional code. But there are a few small differences while it confirmed various fixes. I conclude, some single-byte errors were either in the original SmithBug distribution, or were common typing errors.Here's that newer V2 code, as modifications to Mikes earlier V2 code.

Summary of Mike Smith's Smithbugs

Again: the V1 code I distribute has what I think are original SMithBug errors, marked but not corrected. The earlier V2 code corrects some errors and adds Mike Lee's S-record code. The later V2 code, has slight differences from the earlier V2 code, either corrections or errors themselves. I also found another SmithBug binary, in a FLEX archive, as I'll describe later in this Web page.

errors in SMITHBUG

In 2019, I found that a transcription or disassembly bug occured in Mike Lee's work recovery work, and possibly earlier in his original work. In re-assembling the source in 2019, Mike found it and fixed it. The error was in the TBLKUP routine: one assembler used the £ (British pound-currency character), the other used a # (American pound-sign hashtag character),to mark the assemblers "immediate load" command operand. He did not change all the British characters to English characters, the assembler stumbled, and failed to produce the proper assembly.

In May 8 2022, someone reported another, possible/likely bug. In a series of tests of instruction-types, one of the tests checks for 38H. However, that's not an implemented 6800 instruction: 3BH is, it's RTI. The code fragment where the test is, is below.

   fcc8   fe a0 08      NOTJ            LDX     SP
   fccb   81 39                         CMP A   #$39
   fccd   26 04                         BNE     NOTRTS
   fccf   ee 08         NOTJ1           LDX     8,X
   fcd1   20 06                         BRA     EXR
   fcd3   81 38         NOTRTS          CMP A   #$38     <--- should be #$3B, the RTI instruction
   fcd5   26 05                         BNE     NOTRTI
   fcd7   ee 0d                         LDX     13,X
   fcd9   ff a0 66      EXR             STX     PC1
   fcdc   81 3f         NOTRTI          CMP A   #$3F
   fcde   27 15                         BEQ     NONO
   fce0   81 3e                         CMP A   #$3E
   fce2   27 11                         BEQ     NONO

I asked Mike Lee about this error. He said: "

"I do agree with you, it does appear to be an error as the labels are consistent. "Compare A with #$39 "Branch If not Equal" to "Return from Sub ". Then "Compare A with #$38 "Branch If not Equal" to "Return from Interrupt" RTI is #$3B" NOT #$38, [an] easy mistake to make!!!". And, Mike Lee's later "V2" source corrected the value to $3B. Interestingly, the FLEX library binary of SmithBug (see below) has the same error.

In May 15 2022, I found single-byte differences between Mike Lee's code, and the FLEX code I found. Look at the FLEX code description for details. Which difference is right? "That's an exercise for the student." I'm sweating out all these disassemblies!!?! - Herb

In May 16 2022, I found an odd difference. The V1 and earlier V2 source in the TBLKUP op-code lookup routine, has additional code not in the newer V2 source. In the code below, PULA is $32, PSHA is $36, PSHB is $33

   fd1e   81 32         CMP A   #$32   ;  
   fd20   27 11         BEQ     IMLR3
   fd22   81 36         cmp a   #$36   ; code in older code,  not in newer V2
                                       ; also flagged as having £ symbol
   fd24   27 0d         beq     IMLR3  ; code in older code,  not in newer V2
   fd26   81 33         CMP A   #$33 
   fd28   27 0e         BEQ     IMLR4 

In all these various SmithBugs, there are differences in the input and output routines. They were patched and adjusted to suit different computers. The new symbols (addresses) may produce different addresses for the other routines that call these routines. Please note: I've not read the recently-discovered SmithBug document, to inform me about code operation around this routine.

a FLEX binary and my disassembly

In order to confirm the "38H" bug, in May 2022 I searched the Web *hard* for another copy of SMITHBUG. And I found one! It was a SMITHbug binary, buried in an archive of FLEX disk images. It's a file found in two (matching) disk images. I manually used a hex-editor, to yank out the sectors of the file; snipped out all the FLEX sector-links in each sector; and disassembled the binary. I was guided by the V1.0 reconstructed source I have.

Pay careful attention to this paragraph.Here's the clean binary and my disassembly listing from the FLEX library. Also: my modifications to the "V1" Smithbug source, to assemble it and match the binary as best I could. What am I talking about? The FLEX binary has a number of differences from the Smithbug V1 source obtained from Mike Lee. They are explained in the "readme.txt" in the ZIP file. But there's three kinds of differences. One kind, are likely "typos" of incorrect data values, or addresses (variables), or address modes. One kind, are simply patches to represent whatever input and output was used for that SmithBug in the FLEX library. The third, is an area of code I call "corrupted" as it doesn't reasonably disassemble to anything useful. I suggest you do not rely on this FLEX library version of SmithBug. Use this version to verify any problems with the V1 and V2 SmithBug source and binary from Mike Lee.

A key finding: the CMP A #$38 is the same in this FLEX archived SmithBug; and in the original SMITHbug from Mike Lee.. I and others believe that's an error, because in the V2 version that is corrected. - Herb Johnson

another Ed Smith

Mike Lee told me he tried to contact Ed Smith himself, in April 2019; he got no responses.

Another "Ed Smith" has some history in vintage computing: A report from on "Ed Smith and the Imagination machine" describes an Ed Smith as an African-American who worked in early personal computing and video game production. However, this Ed Smith worked in Manhattan in the late 1970's. The reporter told me in 2022: "The Ed Smith known for his work with the Imagination Machine with APF Electronics in New York confirmed via email that he is not the same Ed Smith featured on [your Web] page."

Other 6800 code from Mike Lee

In June 2022, Mike Lee sent me 6800 source code for an IEEE-488 driver for the TI 9914 GPIB chip. It's likely incomplete but it's a start. If someone works on this, please provide the ASM file from this PDF. - Herb

Related 6800, 6809 systems I have/had

Some work I did on MITS Altair 680 software

A Motorola 6800 D2 card I had in 2015.

A STWPC 6800 SS-50 system obtained in 2009.

I have a EXORset 6809 development system from Motorola.

Herb Johnson
New Jersey, USA
to email me @
follow this ordering link

Copyright © 2022 Herb Johnson