Quick and Dirty 8080 Assembler - History

[Copyright 1999,2002 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this site in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]

What is QD?

QD is a bare-bones, no-frills Intel 8080 assembler. It is written in BASIC, a choice that was made for several reasons, including the lack of a good C compiler for the Tandy/Radio Shack TRS-80 Model 4 at that time.

QD emits loadable code, with TRSDOS/LDOS-style load headers. This could be easily altered if you wanted absolute binary images, as might be needed when writing software that was to be stored in ROM.

QD has an expression evaluator that recognizes standard math notations, but QD does not support any boolean operations, although these could be easily added.

QD has a very informative error-reporting system, based on the style found in the General Electric Mark I BASIC compiler, circa 1970 and later seen in University of Waterloo languages such as WATFIV FORTRAN. The messages and the supporting documentation (qd/hlp) are designed for the first-time assembly language programmer, and may be too "chatty" for experienced programmers.

On the Model 4 using the provided BASIC interpreter, QD is slow, processing input files at just over one instruction per second. For this reason, the code was compiled using the BASCOM compiler, and that code is three or four times faster. That Model 4 executable is available here and can be copied without any compiler licensing issues.

QD passes the validation sweep (validi/src), generating correct opcodes for all Intel 8080 mnemonics, so the assembler can be expected to generate accurate machine code. A test file (errors/src) contains deliberate errors to test the assemblers ability to detect coding faults.

Because of the similarity of BASIC interpreters, it is possible to make QD run on the TRS-80 Model 100, although its size and speed would limit its usefulness.

In theory, QD could be modified to support Z80 opcodes instead of 8080 opcodes. However, the Z80 has a much larger number of opcodes, and the ones that utilize the IX and IY registers would require new specialized routines. Such a project is left to someone who wants a challenge, and who doesn't like any of the available Z80 assemblers.

Why does QD exist?

The QD 8080 assembler was written over the labor day weekend of 1985. At that time, I had taken a job as a part-time instructor at the Tarrant County Junior College (in Fort Worth, Texas), and had discovered that the campus computer laboratory was seriously under-equipped. The lab did have ten Model 4 computers, but the school had only purchased four copies of CP/M, so if you used CP/M, only four systems could be used at a time. My class had 32 students, and there were two other classes on the same subject being taught by others. So approximately 90 students would be fighting for four "usable" computers and software, while six other working machines sat idle.

As a part-time instructor, I had no standing of any sort, so getting the college to buy more software was not an option.

Therefore, I elected to write an assembler and editor that would have no licensing or royalty problems, and since each Model 4 system came with a licensed copy of TRSDOS 6, that would be used as the operating system.

Because of the syllabus I had to keep the class on, the first lab would begin the Tuesday after labor day, so any replacement software had to be available by then. The lack of equipment was discovered the Thursday evening before the labor day weekend.

The QD (Quick and Dirty) 8080 assembler and the QED* (Quick "End-run" and Dirty) editor were used by my class for that semester, allowing my students to have access to all ten lab systems. The software was offered to the other instructors, but the instructors did not want to have to learn TRSDOS 6, so they stuck with CP/M, limiting their students to four of the ten lab systems. For some reason, my class got a lot further through the book than the other classes...

What eventually happened to QD?

After the fall semester of 1985, the college dropped the 8080 assembly language courses from their program, so QD was not used in a school environment again.

Around 1991 and again in 1993, portions of the QD code (mainly the expression evaluator) were provided as an algorithm reference to several different people who were writing applications for Tandy Deskmate and Winmate and some other projects.

In December of 1998, the original QD development diskettes were recovered from storage, the documentation and related files were restored and reformatted, the code was recompiled, and all the material made available via the World Wide Web. The official home for this and related material is http://nemesis.lonestar.org

* QED was written entirely in Z80 assembly, and is discussed elsewhere.



[Copyright 1999,2002 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this site in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]

Visit the nemesis.lonestar.org home page and index

Valid HTML 4.01!