MIKBUG, Smithbug, related 6800 ROM monitors

Most recent revision date of this page, Apr 22 2024. Copyright 2024 Herb Johnson.


Note: there are several SmithBugs on this Web page, look around. The original Smithbug V1 was from Smith. A Smithbug V2 and modification of V1, came from an end user Mike Lee - recovered with variations as found, but certainly FLAWED. There's a binary Smithbug V1 from a FLEX file archives. disassembled by me. There's a expansion of V2 by Phil Green, Phil says it works. There are others. Please review ALL of these if you are interested in Smithbug. I'm sorry this is messy. Initially this work was the limits of what I and Mike Lee could do with initial recovery. Since then, others have progressed with SmithBug, and other 6800 ROM monitors. Check my Web page of Web links to other 6800, 6809 content. - 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.

Also found in 2022, in a FLEX archive library, another SmithBug binary. It's 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.

In aug 2022, Phil Green contacted me, with fixes to Smithbug, including alignments with MIKBUG addresses. He added a punch S-record feature and added TSC BASIC (as a hex binary) Details below.

In March 2024, I came to learn that there's a github of Smithbug V2, based on the 2019 version (apparently) and with some fixes (maybe). Here's the GitHub page of that developer, CRS (Chris) Jones. This versions seems to have issues, so another developer tells me.

Also in March 2024, Neil Cherry has a github Web page about Smithbug, among other 680X monitors. He's doing 6800 simulations to verify his results. There's other 6800 ROM monitors and vintage code in his github archive, check his repositories. In April 2024, told me the following which I think is informative.

"I have managed to fix up some more [6800 monitors] code by adding the Humbug features to mikbug. I managed to resolve the stack issue (I think) [jumps to subroutines versus calls]. I'm now working on the Single Step issue where it fails to patch/repair the SWI code in the user RAM code."

[Humbug is from the Kilobaud/Micromputing articles of July, August and September of 1980.]

"The Motorola Software Interrupt is a very useful feature. It makes it easier to debug code by replacing the OP Code with the SWI ($3F) Op Code. Of course you need to play with the stack and restore the original code to get everything back the way you started. That's where I'm running into issues at the moment. I'll figure it out. "

"Once I get modbug fixed up I'll get as much of the original Humbug restored. Once I have a working debug environment, I'll get back to the RT68MX code. Which is the point of this exercise." - Neil Cherry

As others work with these codes, and contact me or I find the, I'll update this Web page with their results. - Herb Johnson

MIKBUG and immediate variants

MIKBUG and MINIBUG are ROM monitors for the 6800 from Motorola. The archived swtpc.com of Mike Holley 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 variant 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.

SWTPC produced their own ROM, SWTBUB. From the same archived swtpc.com Web site is SWTBUG listing and ASM.

From Ged Haywood in Oct 2023, I obtained his MIKBUG variant called "BUGGED", and his story of use the the early Motorola 6800 products including the EXORciser. Here's a page with his story and here's the early BUGGED codes

..And another engineer, Lee Hart told me in Oct 2023 about his Motorola EXORciser work, at Eastman Kodak. He and others designed a film negative image processor & printer for commercial photo printing in the mid-1970's. They also relied on paper tape, and later on digital data cassettes via serial terminal.

Ed Smith's SMITHBUG is another M6800 monitor functionally like MIKbug; it's described below. - Herb

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.

Note: Immediately following are EARLY versions of Smithbug. Read this whole Web page for LATER versions and varients.- Herb

Year 2019 reconstructions of 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 Mike Lee's 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 Smithbug V1 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

Phil Green Smithbug V2 + TSC Basic

In aug 2022, Phil Green contacted me, with fixes to Smithbug, including alignments with MIKBUG addresses. He added a punch S-record feature and added TSC BASIC (as a hex binary) Here's his work and comments to me.

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 fastcompany.com 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

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

Copyright © 2024 Herb Johnson