TDL Apple and Zapple monitor & tools

This Web page last updated June 2 2022. Content (C) copyright Herb Johnson 2022.

[TDL 8K BASIC]

Technical Design Labs produced S-100 cards and systems for the 1975 MITS Altair 8800 and subsequent S-100 computers. Early on, they produced a multi purpose I/O card called the SMB - System Monitor Board - which included what they called the Apple monitor, written in 8080 Assembler. Later, they modified the monitor into the Zapple monitor for their 1976 Z80 product, the ZPU Z80 CPU board; the first Z80 S-100 card in production. You can learn more about TDL, and obtain some of the manuals, by looking at my TDL Web page. Other S-100 cards and systems are listed on my S-100 Web page.

This Web page desribes and makes available, various forms of TDL's Apple, Zapple products, their assembler and debugger, and other tools. Again, these were early software products, before floppy disk or even audio cassettes were used as mass storage. So these producte were provided as paper tapes or on ROMS, in their earliest versions. Over three decades later, these codes have been found as paper tapes and diskette files, as recovered by various people. This is a work in progress, so these found files are organized by the persons responsible for recovery. I'm engaged with those people to assist.

Thanks to: Roger Amidon, TDL founder, programmer, engineer, who has kindly discussed his work with me in 2012 and previously. Also Dave Dunfield, who continues to offer his resources of classic 8080 tools and accumlated files and documents. Also, David Gesswein, for his papertape recovery from MARCH's archives including TDL's products; and Rich Cini for discussion and moral support, and his archive of TDL manuals.

Note: Roger Amidon passed away on May 13th 2016, after a prolonged illness. I have some notes here. - Herb

- Herb Johnson

Origin of the Apple and Zapple monitor

Roger Amidon spoke at a Vintage Computing Festival - East 7.0 panel on "VCF East 7.0 - lectures: Early microcomputing in New Jersey and Beyond". Panel moderated by Bill Degan, with David Ahl (creative Computing), Roger Amidon (TDL), Dick Moberg (Phila Area Comp Soc), Larry Stein (Computer Mart of NJ), John Dilks (PCC '76). I've transscribed Roger Amidon's description of the origins of his 8080 work and specifically the Apple 8080 and later Zapple Z80 monitors.

Links to videos of that talk, as of May 2016 are on one YouTube video posted by Dan Roganti. Another is noted by Evan Koblentz of VCF Inc. notes as "the official version", recorded by MARCH at the time.

In the talk described above, Roger describes his early use of the MITS Altair, developing the Apple monitor as a way to bypass "bit-switching" from the Altair or IMSAI front panel. His monitors allowed anyone to run the same 8080 program with any kind of human-interface hardware; by calling the I/O established in the monitor. He tells the story about his deal with Apple Computer Company - Jobs and Wozniak - to share customers based on their use of the 6502, or the 8080, to resolve any confusion. Roger goes on to describe the Epson QX-10 and Valdocs, as one of his major activities of the era.

Apple 8080 monitor

update May 2018: Udo Munk of Z80PACK recently hand-entered the 8080 Apple monitor source from the ETC monitor document, and added that manual and material to his Z80 emulator Web site. Here's a ZIP file of the Apple source and listing and hex dump, and a reduced PDF of the ETC manual. Link to Z80PACK is at the end of this Web page. Thanks to Jeff Jonas for the head's up on Udo's work. IN 2022, Jon Chapman produced a Intel hex record file of the ETC Apple monitor, which I added to the ZIP file. Adapt the serial I/O to your particular hardware.

TDL Z80 versus Zilog Z80

As Roger Amidon himself explained it to me in Aug 2012 (over lunch so I may not have this completely correct): When the Z80 was in development, it was not clear what Zilog would offer as a set of "mnemonics" or Z80 code instruction "names". In the Intel 8080 world, the Intel mnemonics were well established; Zilog was founded by Fagin, formerly of the Intel 8080 development team. Roger added later: "Intel corporation's Ted Hoff and Frederico Fagin were credited with the design of the first microprocessor. It was Fagin that then wanted to go further with the 8080 architecture but Intel went a different way, so Fagin started Zilog."

Meanwhile, Roger et al, apparently had advanced knowledge of the Z80 architecture before the Z80 was available, but not the mnemonics. So THEY created extensions of the Intel 8080 instruction set to cover the Z80's additional instructions; and an assembler that supported those extensions. That allowed existing Intel 8080 code to be assembled without change; plus the extensions made it easier to learn and add Z80 instructions as supported by the extended assembler. As Roger added later: "Point out the large amount of 8080 source code that was available, that was easily modified with improvements to run faster-better-smaller on a Z-80, with minimum editing."

However, Zilog was afraid that if THEY used Intel's mnemonic set, they might face legal action by Intel for copyright or trademark infringement. Consequently, as Roger described, Zilog contracted with someone or group to come up with a "completely independent" set of mnemonics, which became Zilog's mnemonics. Roger says that after Zilog's release of that set, the 8080 community became divided into two camps: those who were outraged with Zilog for breaking away from the Intel coding scheme; and those who believed in always following the scheme of the microprocessor manufacturer. Thus, two sets of Z80 coding were in use: the "TDL" and the "Zilog" sets. Either were in use for some time.

Roger Amidon adds these comments to my notes above: "Someone unfamiliar with history would probably conclude the Zilog mnemonics were better. [Your current examples] only shows the Zilog and the TDL mnemonics of the added op-codes. To better reflect the situation, the original Intel 8080 opcodes should be listed there, as well as the complete set of opcodes, not just the new and unusual ones. Also, point out the large amount of 8080 source code that was available that was easily modified with improvements to run faster-better-smaller on a Z-80, with minimum editing." Of course I'm editing my content over time. I've added his comments to my text above; and I'm adding content as per his suggestions. - Herb Johnson

differences

Herb Johnson is not taking sides here. I'm just trying to preserve technology. (Sigh) I have not taken time yet, to find or offer a definitive set of "here's Intel's, TDL's and Zilog's mnemonics"; it's not a common thing 35 years later. If a reader can point me to better resources, please DO.

As an example of the Intel 8080 (and 8008) code that was available before 1975-76, here's a snip of Lawrence Livermore National Labs Floating Point BASIC It was developed for the Intel 8008 prior to 1974. For more code and info, here's my Web page on LLNL and CP/M and Intel code prior to CP/M.

As an example of what TDL/Intel versus Zilog Z80 code looks like, I've disassembled TDL's Zapple V1.0R 2K ROM version, for the first few hundred bytes. I used one of the many variations of the DASM program, a CP/M and later MS-DOS disassembler, in versions that support TDL or Zilog. Here's Roger's original code from the TDL print listings (also as in TDL's Zapple manual; then a Zilog disassembly then a TDL disassembly. The disassemblies don't have the comments and symbols, but I included the labels so you can navigate. Look at the two disassemblies side by side and against the print listings (in TDL of course).

As for listing TDL, Zilog and Intel opcodes and mnemonics, here's what I found so far to help:

A list of TDL vs Zilog menmonics from a S-100 company (Advanced Digital) that has an assembler on their disk with some kind of cross reference.

A table of 8080 op codes with SOME of the TDL Z80 mnemonics added. This is not complete by any means but may be useful. It's "borrowed" from the Web site and file listed.

...and for Intel, Zilog and TDL codes, I'll add something soon.

Dave Dunfield's TDL papertape recovery

Dave Dunfield provided tools and support for 1970's-class computers in the era. Later on, he's provided support by showing his collection and preserving his tools, most now freely available for personal historic use. He's also preserved a growing collection of programs and documents.

At his request, this is the link into his collection of Disk and software images. ON that page should be a link to "PT - Paper Tape Tools". Those include a PT program to visually recreate what a punched papertape looks like, including the feed holes. That's useful as some paper tape are punched to show human-readable text in punched holes. Another link on that page is "Paper Tape Images"; that page includes a collection of "TDL Zap(ple) monitor, BASIC, M80"; images of paper tapes with those contents.

Presuming his agreement, I've downloaded those images and reviewed them. My version of his collected TDL tapes with my commentary and processing are at this Web link. The original tapes had some mix of binary, human-readable punched characters, and Intel Hex record format data. A text file with the ZIP archive explains.

Dunfield's archive apparently includes the following:


TDLZ801K	- *Zap* Z-80 1-K Monitor / V2.0 
TDLZ802K	- Zapple Z-80 2K Monitor / V1.1 
TDLMTEST	- TDL Memory Test V. 1.0 
TDLM80  	- M-80 Macro Assembler V1.2
TDLZ80TX	- TDL (Z-80) Text Editor V1.0
TDLTXPRO	- Text Output Processor / Ver 1.0 
TDL8KBAS	- TFL (Z-80) 8-K BASIC V 1.3

For those who don't download the ZIP archive, here's an explanation of their original format. This may apply to other TDL tapes of the era.

Most of the .PT image - as read by Dunfield from the original tapes - start with punched characters which are visually readable by human eyes. You can literally READ the tape to see the name of the tape and the author. This was very common in the era. The data following on these tapes, consists in general of Intel Hex Record format ACSCII characters to represent the program content. That Intel scheme provides a load address, a byte count, and byte data as pairs of ASCII hex characters (0-9, A-F), and a checksum per record or line. The records were punched with "parity" in the 8th bit - normally Intel Hex Records are 7-bit ASCII. I've made copies which remove that parity bit; and the "human readable" is converted to ASCII text preceeding the hex records.

TDL relocatable hex format and loader, ZAP Z80 1K monitor

Two files, the 1Kbyte and 2Kbyte versions of Zap or Zapple monitor, also have some kind of Z80 program represented in "binary", and also some ASCII text to date and author the programs. Both the ASCII text and the binary were punched in REVERSE order. The text is backwards ("regoR" for Roger) and the code was also backwards (reverse of execution order). Again, I represent the backward text in the HEX file; and I provide explanation and Z80 HAND disassembly in EXECUTION order for the binary and the binary is removed from the HEX file. a hand dissassembly and explanation is in this file.

In Oct 2012, I downloaded a copy of an early TDL ZPU Z80 manual, with code listings for the TDL papertape loader and for "ZAP", a 1K Z80 version 2.0 form of the TDL monitor. The text, and painstaking reading of the loader code, comparing it to the 1K TDL monitor papertape image, informed me and confirmed my descriptions above. Here's an extract of the loader and 1K monitor listing. The full manual is available from Howard Hart's S-100 manual archive as "TDL ZPU Manual.pdf". Dave Dunfield's TDL 1K monitor paper tape image, appears to closely match the 1K monitor listing in the manual.

Sure enough, the manual says "the boot loader routine loads the relocating loader into memory starting at 01F3H and DOWNWARD to 0100H", my emphasis on "downward". So the monitor paper tape has a human readable header, a reverse-order relocating loader in binary, then the monitor loader in TDL relocatable hex format. The monitor hex code is read by the just-loaded loader.

Inspection of the loader code reveals the details of TDL's relocatable hex record format. When the loader detects the hex records are TDL-relocatable format (the record starts with ";" not Intel's ":"), that the first of each nine data bytes in the record is a "bit map". Each bit of that byte, marks which of the next eight bytes is a 16-bit (two byte) address to be relocated. A 8-bit value read from the IMSAI/Altair sense switches, becomes the high-byte of a 16-bit offset to add to that address. Details of my analysis are in the linked document.


David Gesswein's TDL papertape recovery

[TDL 8K BASIC]

David Gesswein is well known in the PDP-8 community. Working with MARCH/InfoAge's archive of Kirk's collection of TDL paper tapes in early Aug 2012 extracted (link to his site) a few TDL paper tapes as images, which he then stripped of parity and made available. These appear to be assembly language (uncommented) sources as follows below. This is early work and I'll try to update as work progresses. My copy of his work with my commentary is at this link.

The tapes he read as of Aug 2012 are as follows:

AP24 and AP24B, two reads with errors of "APPLE MONITOR, VERSION 2.4(R) JUNE 25 1976"
DOUG -  "8080 MONITOR V2.0 (1ST 1K) 8/10/76", likely no errors

My impression is that it is indeed 8080 Intel code, not TDL Z80 code. I've not attempted to assemble. It does not include macros.

Herb Johnson's TDL diskettes recovery 2012? and Zapple 2K

I have two 8-inch disks apparently copied from TDL diskettes. ONe had ZDDT and ADT, the other had files associated with making a SD Systems Versafloppy I (floppy diskettes controller) work. I pulled the files and did a very little bit of work. Here's a ZIP file containing the files and results. There's a few files of notes from Carl Galletti and Roger Amidon, that provide some explanation. Files named .CPM are renamed .COM CP/M programs, that occurs when you use Sydex's 22DISK to read CP/M diskettes on an MS-DOS system.

There is "disassembly" mentioned, that's not my work, someone performed those disassemblies of binary code; clearly they are disassemblies as some ASCII strings show as disassembled MOV instructions. There MAY be some inconsistencies between the .ASM and .CPM files of the same "name", it's possible they are not quite the same versions, so watch out for that! Also look carefully to see if these use 8080 opcodes and mnemonics, or Z80 op codes and TDL Z80 mnemonics.

ZAP.ASM   - disassembly of the ZAP monitor?
ZAP.COM   - renamed .COM of ZAP monitor V1.0R
ZDDT.ASM  - disassembly of the ZDDT debugger
ZDDT.CPM  - renamed ZDDT.COM CP/M TPM executable
VER1BIOS.ASM - disassembly of Versafloppy I BIOS
VER1BIOS.CPM - rename .COM file but for load/debug only
ZAPPLE.*  - various forms of ZAPPLE masked ROM ver 1.05R
SIMUL.CPM - renamed .COM of EPROM simulator program V2.59
MACROII.CPM - renamed .COM, Z80 Macro Assembler 1980
ADT.*      - Apple V2.21 CPM version? 1980

NOTE - description with VER1 disk's files.
READ1.ME - description of files with ZDDT and ADT diskette

Oct 2017 update: "Systems Glitch" has verified the Zapple 1.05R image as zapple.hex or zapple.bin is working, from the tdl_herb ZIP file mentioned above. Here's the file-set in detail, my (Herb's) notes:

zapple.prn has a listing file for the assembled 2K Zapple version 1.0R. remember TDL's assembler listing reverses the normal low/high byte address order for the Z80.

zapple_fixed.asm is the source listing which should assemble under a TDL assembler. I had to do something to make a clean file from what Roger supplied.

zapple.hex is a TDL absolute-hex format from the TDL assembler. I checked it today against my Intel hex to binary converter...it reads it OK when you remove the non-Intel records, produces a binary. so that hex amounts to a "ROM dump" for that source.

zapple.bin is TDL absolute binary. Should be the same as a binary produced from the hex file, or what's produced from the ASM source.

if someone can compare the ASM file to the hex, and compare the 1.0R listing to the Zapple listing in the SMB manual, let me know! ;) - Herb

TDL disk recovery 2017

In Oct 2017 I read a disk obtained from the Amidon estate, which contained a copy of the ZAP 1K ASM file and ZAP 1K LST file. They appear to match the ZAP 1K listing in the ZPU manual - of course, in TDL Z80 mnemonics and syntax. I had to binary-dump the disk under Anadisk, to access these files. - Herb

TDL V2 monitor and SS50-Z80

In mid-2019 I restored a SS-50 Z80 CPU board and recovered the manual. The board is compatible with the SS-50 bus (SWTPC, Gimix, etc.) The manual included a TDL ZAPPLE monitor listing. I restored the listing to an ASM file again. Check the results on the linked Web page.

Other TDL resources

During late 2017, My good friend and colleague Jonathan Chapman at Glitchworks repaired some SMB boards with some help from me. I provided some SMB boards from TDL's last stock, with some parts intact; and a bare I/O breakout board so Jon could look closely at it. Jon produced a run of small RAM cards to replace the pair of hard-to-find SEMI 4804 1K by 4 bit RAMS. He also modded the SMB to use 2716's instead of the masked-programmed Zapple monitor chip. And, Jon reproduced some Interface One cards. By 2022 he's providing some TDL boards, old and new; he provided the Apple 8080 code in Intel hex records.

The Altair section of the Z80PACK support Web site includes several references to Xitan or TDL software. In October 2017 Udo Munk, who supports the Z80PACK Z80 8080 emulator, obtained and tested TDL BASICs and monitors and CP/M converters to operate some TDL software. Look at the associated notes for the ZIP files and documents on his Web site.

The s100computers.com Web site has a Apple monitor manual. It's part of their ">ECT S-100 R2 I/O Web page. The ECT company made an R2 I/O board with serial, parallel, ROM and RAM. The contained that monitor. Under the company name "Applezap Corp", Roger Amidon provided ECT with a version of their Apple/Zapple monitor. The manual says it's "Apple monitor ECT ROM V1.0"; but it's a 1977 version of the Zapple monitor, in 8080 code (no Z80 instructions), provided to ECT in 1979.

Rich Cini's IMSAI Web page where he has a list of manuals he obtained while working on his IMSAI 8080 system. That includes several TDL manuals for BASIC and the Zapple monitor. There are links to PDF versions of the manuals.

My TDL Web page lists many TDL/CDL manuals I have available, as photocopies for a modest fee and postage.

A number of S-100 manuals archives on-line, offer downloadable PDF's of Technical Design Labs manuals. A Web search will find them.


Contact information:

Herb Johnson
New Jersey, USA
To email @ me, see
see my ordering Web page.

Copyright © 2022

Herb Johnson