Written by Herb Johnson, with materials from other writers as noted, last edit June 3 2023. While this document includes quotes from others, Herb Johnson is responsible for any errors or omissions and welcomes comments. An email link to me is at the end of this document.
Note Aug 2019: The introduction and history sections of this document to this linked Web page. That Web page has a detailed history of Dr Torode's early work which led to Digital Systems, and the work of his associates and contemporaries. This Web page will retain the technical information about Digital Systems' various floppy controller products. - Herb
This Web page discusses the products of Dr. John Torode around an early floppy disk controller, running CP/M, which was sold by Torode's "Digital Systems" for S-100 bus microcomputer systems of the mid-1970's. Floppy drives became the dominant mass storage and archive device for personal computers of the 1970's. Dr. Torode's company, Digital Systems (later Digital Microsystems), grew to offer a series of other products and was one of a number of companies he developed, merged with, or co-developed. The subsequent history of Digital (Micro)Systems is described on another Web page. The operating system for that controller was CP/M, developed by his colleague, Dr. Gary Kildall of Digital Research. Torode was first to license and sell CP/M from Kildall, and it became a standard for Intel/Zilog based microcomputers of the era.
Torode's controller for the "Altair bus" in 1975-76 ws the first floppy controller sold to run with CP/M, and first to run CP/M on the S-100 bus. It was an early product in what became the S-100 bus marketplace of over one hundred companies thru the mid-1980's. In my opinion, Torode's FDC-1 floppy controller product for the Altair bus, and his licencing and sales of CP/M with it, was a pivotal development of the era.
The introduction and history sections, previously part of this document, can be found on this linked Web page. Those and other pages provide a partial history of Dr John Torode and his early work with Dr Gary Kildall of Digital Research and CP/M; and of other products of Digital Systems later Digital Microsysems.
Acknowledgements: My thanks to Dr. John Torode, who provided discussion of and information about his early work in the late 2000's. Thanks to Dwight Elvey for his programs and his work to re-engineer, restore and program his FDC-1 controller; and his many discussions of that work with me. Also thanks to Stan Sieler, who provided FDC-1 schematics to Dwight. Jeff Shook, an early customer of Digital Systems, provided Dwight and I with manuals from his FDC-2 system, and provided notes about his purchase of it. Thanks to Jack Rubin, who provided what appears to be the earliest version of the FDC-1 product's documents. Thanks to Vern Potter who provided me with original FDC-3 documents, and who gave me my first technical view of Dr. Torode's Digital System products. Also, thanks to the various people who sold me or provide copies of Digital Systems hardware, software and documents. Most of them are listed with my links to the materials or descriptions I provide on this Web page. - Herb
During 1973-74, Dr Gary Kildall wrote a floppy disk operating system in PL/M for the 8080 and tried to build a floppy controller for his Intel development system. In late 1974 Dr. Torode produced a floppy controller and worked with Dr. Kildall for its first successful run of CP/M, on an Intel development system. Torode's "Digital Systems Inc." in 1975 was first to license CP/M from Kildall, sold it to other clients and companies, and sold it with Torode's floppy disk controller for IMSAIs and Altairs. He later founded Digital Microsystems Inc. from that company in 1979. Torode's subsequent work is noted above, as is Dr. Kildall's early and later work.
The MITS' "Altair 8800" and IMS Associates Inc. "IMSAI 8080" systems of 1976 used a common bus of 100 pins. That bus became known as the "S-100 bus" after several manufacturers of compatible products agreed on that name. Digital Systems included a S-100 bus interface board for use with their Digital Systems floppy controller. The controller was contained in a dual 8-inch drive cabinet with two Shugart 8-inch floppy drives.
IBM invented the floppy disk drive, as a loader of microcode or a bootstrap device for its mainframes. One of IBM's engineers, Al Shugart, started the premier floppy drive company, Shugart Associates. A number of companies offered floppy drive systems for minicomputers and the early microprocessors during the early 1970's, as 8-inch floppy drives moved from the mainframe world. iCOM, a diskette drive manufacturer, had a floppy drive system with a microprocessor-base OS as early as 1973! Information on that product, the "frugal floppy", is on this Web page.
In 1975, John Torode's Digital Systems began to provide his floppy disk controller card product and CP/M. The controller was to be operated from a microprocessor system, through a parallel DMA interface as another digital card. Torode designed, and later produced, a card for the then-new MITS Altair 8800 system and its "Altair bus". That bus eventually was called the S-100 bus. The Digital Systems FDC-1 is one of the first S-100 floppy disk controller products, and I believe the first controller production product to run CP/M.
Torode and Digital Systems, and CP/M, Kildall and Digital Research, were announced indirectly through 1976 in editor's comments in "Dr. Dobb's Journal". The first Digital Systems sales ad appeared in Jan 1977 in BYTE magazine, p 128: "Digital Systems" small ad. The ad reads: "Floppy disk system, completely assembled unit, $1595.00...Shugart drives and DIGITAL SYSTEMS FDC-1 controller...interface to the Altair/IMSAI bus...The powerful CP/M Disk Operating System, written by the originator of Intel's PL/M compiler, is available for only $70. Systems have been operating in the field for over two years.- Digital Systems, Livermore CA". The "two years" reference is consistent with Kildall's reference to late 1974 for his first runs of CP/M with Torode. Detailed references to the events above are on this Web page of Digital Research and Gary Kildall history.
For more dates and events and products, on another Web page, I discuss the "race" for floppy controller products on Altair and IMSAI-compatible systems, between Torode's FDC-1, MITS's 88-DCDD, and iCOM's "Frugal Floppy" or FD360.
Digital Systems built three versions of their floppy controller. The FDC-1 was a controller with a pair of 86-pin interface connectors to an 8080 system. The FDC-2 version had a 50 pin connnector to their Altair bus interface card. Those controllers were single density only. The FDC-3 controller with a similar Altair card supported double density.
Jack Rubin provided a partial document set in March 2008, which appears to be the earliest version of the Digital Systems Inc. floppy controller. This document, from sometime in 1976, is of an FDC-1 product from Digital Systems of the FDC floppy controller card; and a description of how to wire-wrap an Altair compatible interface. Jack announced this document set in comp.os.cpm as follows:
> I just found a collection of > documents relating to John Torode's FDC-1 floppy disk controller. This > is a packet of information titled "Digital Systems Floppy Disk System > Reference Manual"; the contents include FDC-1 Interface Manual, > Shugard Disk Drive Manual, ALTAIR-Compatible Bus Interface, 8080 > Software Information, and Warranty Information. Unfortunately the last > two sections - including the software information - are missing, but > I'll keep digging. > > The introduction states that "DIGITAL SYSTEMS is currently marketing > only the FDC-1 floppy disk controller board and Shugart disk drives. > We are providing documentation on the interface we have used to > interface the FDC-1 to an Altair compatible machine. We have used the > resulting system to run CP/M, a sophisticated disk operating system." > > The cover of the FDC-1 manual lists DIGITAL SYSTEMS at 754 Carmel > Avenue, Livermore, California 94550. The manual is copyright 1976. > > The spec includes enough technical detail to be used to create a > software interface but it would be very instructive to see Torode's > own 8080 code, especially if it is in the form of a CP/M interface. > Any chance someone out there might have the missing software section?
He later described the FDC-1 board design as follows, in private correspondence:
> ....according to the interface > manual I found last night, the FDC-1 itself was _not_ an S100 board. It > is described as a "single 10" x 12" PC board with system interface via > standard edge connectors and flat cable to the flexible disk drive." The > separate Altair-compatible bus interface is an S100 interface card that > connects the FCD-1 to the Altair bus and provides buffering, DMA, > booting and port decoding. Thus the FDC-1 was not itself an S100 card > but was definitely interfaced to the S100 bus and used to run CP/M.
The documents include a cover page for "Digital Systems - Floppy disk system reference manual" which lists the contents Jack noted. An explanatory page references that only a controller and drives are "currently marketed". Documentation on an Altair compatible interface is provided, noting "We have used the resulting system to run CP/M, a sophisticated disk operating system." It offers a date "Oct 1" to provide a PC board for the Altair interface, "if there is sufficient demand". The "FDC-1 Interface manual" document itself is copyrighted "1976". It is 18 numbered pages and a title page. No schematics, those are apparently in a "technical description" manual. The document describes the signals to and from the FDC-1 board, on two 86-pin edge connectors, plus a 50-pin edge connector to the Shugart 800 drive. Programs for read, write, seek, and step are described with flowcharts. This board is intended for use with 8080 systems, as the board is designed for 8080 I/O instructions and DMA to that 8080's memory.
The FDC-I floppy controller card should look similar to the FDC-2 floppy controller card, except for the connnector to the bus interface. THe FDC-1 has two 86-pin cable connnectors, the FDC-2 has one single 50-pin cable interface. The other 50-pin connector is to the floppy drive. Here's an image of a FDC-II controller card from Jeff Shook. It's described in more detail, later on this Web page.
There is a Shugart 800 OEM manual, which was apparently distributed with the FDC-1. It appears to be a copy of a Shugart original document. The other document is titled "Altair compatible bus interface card" and includes a single "preliminary" schematic, a parts list, and a wire list. The document is intended to describe how to hand-make an interface card. There is no date on the document. It has 8 printed pages, probably single-sided.
Copies of the above reference and interface manuals are available at the end of this Web page.
The origins of documents for this version of the FDC-1 are described in the section on the FDC-2. In this version, schematics for the FDC-1 board, produced by Digital Systems are provided. Digital System's FDC-1 product consists of a floppy controller board FDC-1 and an Altair-compatible HB-1.X computer system interface card. (X is a revision number such as 1, 2 3 or 4.)
The schematic for the Digital Systems FDC-1 of December 1976 is shown here. This is a 10 X 12 inch TTL-implemented microcontroller floppy drive controller. The design is clearly of the same form as the Torode 1973 controller. A 74150 encodes test inputs, a 74154 decodes control outputs, both operate on the four 3601 256 X 4 bit ROMs which hold the microcode: two chips (A1/A2) for up to 256 bytes of ordinary routines, two chips (A3/A4) for up to 256 bytes of "initialization" (format) code. 75161 counters form the "jump" counter. Additional logic chips use gates and flip-flops to support these operations and functions.
Note a pair of 7404 inverters which connect to each other and to a 10MHZ crystal. A flip-flop in IC 6 divides that by two for the "clock" of the microcontroller at 5MHz. That's significantly faster than then-available 2MHZ 8080 microprocessors. That was the speed needed to provide and process digital data from the 8-inch floppy drive. Dwight notes: "The controller could execute one instruction per each cycle at 5 MHz while the fastest instruction of the Z80 would be 4 cycles at 2 MHz. [So the microcontroller is] greater than 10 times as fast" per instruction on that basis. Additional logic after that clock signal provides other timing and pulse references to the rest of the controller.
Additional logic on the floppy controller, which requires two more pages of schematics, perform specific functions like data read and write, DMA, and CRC calculation. The CRC calculation is a linear equation which produces an 8-bit value from a sector's worth of byte data. A CRC value is calculated and written with a sector; another CRC is calculated when that sector is read, and compared to the read CRC of the sector.
The data rate of the serial data stream from the floppy drive read/write head, at single density, was 250KHz; it's 500kHz for double density. One needs several microcontroller clock cycles to test and jump in microcode for each data bit. Dwight says "The FDC-1 & -2 uses the data/clock separator on the SA800 ( or 801, which ever has the data/clock separator)".
Jeff read off the microprogram PROMs from the floppy controller, using a PROM reader he previously built. Here's a Web page about Jerf's PROM reader/writer. Dwight Elvey also read off the PROMS and "decoded" their programs, as discussed below.
To operate the floppy controller, you need an I/O addressable and DMA interface to the Intel 8080 processor. Operation of that interface is described by Torode in that fashion. Data is transferred directly to or from memory; the interface card provides address selection and routes the data accordingly. The address range and specific operation is selected by 8080 code before the data transfer. In effect, the floppy controller takes over from the processor, for the duration of the disk read or write once it begins and until it ends. Otherwise, the 8080 controls the floppy controller through I/O ports for operations of seek, step, or home; and to set up the read or write DMA process and to read status afterward.
As noted earlier in this document, Digital Systems initially only sold the floppy controller with a description for an 8080 interface; later (Oct 1976?) they offered an Altair bus interface card called the HB-1.X interface card, where "X" is a version from .3 forward. The Altair bus was later called the S-100 bus. From Dwight's conversations with Torode in 2008, Dwight says "He used the same controller that he used for previous systems with a bus interface board created for the S-100 bus ( HB1.3 was first then HB1.4 )." But in another conversation, Dwight says "I have schematics for the HB-1. Both have the pin numbers for the FDC-1, not -2. One shows HB 1.3 while the other just has HB-1. They both otherwise look identical except the HB-1 schematic drives a signal called IOEN* to the FDC-1."
I acquired this Digital Systems card in Dec 2010, after seeing it on eBay as part of an IMSAI to be sold from the USA in early October. The seller forwarded my interest to the buyer, who was outside the USA. The new owner was only interested in the IMSAI itself and we negotated a trade for another S-100 card (a Cromemco floppy controller). This card has chip dated from 1976, 1977 and 1978.
In 2023 I came across this HB-12 version of the Altair interface card. Date codes on ICs suggest it was constructed in mid-1976. There's an additional IC to the left of the interface connector. That IC position has no circuit-traces except for power and ground. The back of the board shows that IC is hand-wired to other parts of the board. That IC is logic of some sort, added to modify some signal. There's other wired modifications to the back of the board. I do not have the board in hand to consider it further.
Dwight's 8080 code for his FDC-1 is in this ZIP file.. This is boot, bios, and format code for an IMSAI. He produced these from scratch, as he received no docs or software with his controller. It includes some serial code for file transfer via a ROM monitor. We'll annotate this code with his additional comments and edits from me (Herb Johnson) as time permits. Compare this to the FDC-3 boot code below. See the end of this Web page for those docs.
Dwight also decoded the microcode program of his FDC-1, from scratch, without docs other than schematics! After dumping the ROMs, he used the schematic's logic signals of the microcontroller, to describe the microcode instructions he determined from the schematic. Dwight's re-engineered disk read and write microcode and the disk format microcode are on those linked Web pages. I used his disassembled code to describe the microcode instruction set on this linked Web page.
Thanks to Dwight Elvey and Jeff Shook for providing a copy of Jeff Shook's Digital Systems document set. (Dwight says also obtained schematics from Stan Sieler, who only had those documents.) This document set includes an FDC-1 document copyright 1976 but with dated schematics for Dec 1976; an undated HB-1.3 Buss Interface schematic for the MITS Altair; a June 1977 "newsletter" from Digital Systems; and other documents. A postmark "July 28 1977" appears on the newsletter documents. A document from "Computer Mart of New Jersey Inc." of May 27 1977, is a "Fix to Digital Systems Disk System Controller (FDC-2) for non-Dysan diskettes".
Jeff's account of his system purchase is on this Web page. Thanks, Jeff! The FDC-2 was the system Jeff Shook recieved from Digital Systems in March of 1977. Jeff say he received "the original code for the boot loader, BIOS, and formatter program which came on the CP/M 1.3 system disk I ordered with my disk system."
Dwight has an FDC-2 and what is probably a HB-1.4 Altair interface card. Jeff is familiar with Dwights work on restoring and reverse engineering Torode's product. Jeff says "Dwight did an amazing job of figuring out how it worked..." Here's an image of a FDC-II controller card from Jeff Shook. The FDC-I card should look similar e. The connnector to the bus interface is one single 50-pin cable interface. The other 50-pin connector is to the floppy drive.
Jeff's docs included one page of the FDC-2 manual with the FDC-1 manual referenced above. This undated document says "The Digital Systems FDC-2 is identical to the FDC-1 except that the interface connections have been consolidated onto a single 50 conductor flat cable.." That replaces two 86-pin connections, many of which were unused. Jeff said in 2010 about his documents, "The manual supplied with the FDC-II is the original FDC-I manual with a page inserted describing the new connector pin numbers of the FDC-II. On close inspection I see that at some time I penciled in new numbers for some of the buss pins on the schematics and crossed out the old numbers." Jeff also provided in 2010 a list of IC's in his floppy controller.
Dwight noted that the controller's signals to and from the interface card were complimented (inverted) from their use in the FDC-1, "a change in the buffer chips" he said.
Regarding the 8080 code, Dwight said in correspondence; "I have a disk that I acquired from another that has one of the FDC-2's. Since these are software identical to the FDC-1 ( except command bitwise inversion), I expect the [Digital Systems' included] software is unchanged. It is a while since I looked at the code but I recall noting that it was almost identical to the code I wrote for mine. There were minor differences in register use and flags in a few places but otherwise functionally the same." Before Dwight acquired original DSI code, he wrote his own from scratch.
The FDC-3 supports single and double density floppy drives. I've identified FDC 3 controller boards produced as versions "FDC 3 1" and "FDC 3 3", I'll refer to these as version 3.1 and 3.3. They are slightly different but the general layouts are the same, and different from the FDC-2.
I (Herb Johnson) have acquired a FDC-3 manual with version 3.3 schematics dated January 1978. This page of the schematics shows the microcontroller. We'll provide these docs, which includes some boot code, methods to be determined. I'll update this Web page to describe those documents and that controller and interface.
After reviewing my documents, Dwight describes the product. "The FDC-3 was a major change in that it was designed for double/single density. It had a built-in clock/data separator instead of depending on the circuit on the floppy drive (known to be flaky)." For data separation, Dwight says "the FDC-3 seems to be doing the [data] separation on the controller by over sampling with a 20MHz clock." While it has a 20MHz crystal clock, it divides it by two for a 10MHz signal, then like previous models divides again by two for a 5MHZ microcontroller clock cycle.
In Oct 2013, I (Herb Johnson) acquired a Digital Systems drive with version 3.1 controller and version 1.4 S-100 interface card. A careful look at the IC's on the controller, matches chips descsribed on the version 3 schematics. Chip datecodes suggest this board was built after Aug 1977 (7735 datecode). Thanks to Jeff Galinat for spotting the system which included this drive and controller, and passing them along to me; also for some of these photos.
In 2016, I obtained another FDC-3 controller, pulled from a DS Inc. cabinet. Check my Digital Systems restoration Web page for details and progress on both of my FDC-3 products.
In June 2019, Timothy Colegrove contacted me, about his FDC version 3.1 controller and HB-1.3 S-100 interface board. I'll describe them on my Web site soon. Some work is below regarding "write protect".
The FDC-1 boards, have a means of write-protecting drives with a jumper. How that's done, depends on the FDC version. In June 2019, I was asked by Timothy Colegrove how he could write-enable his just-acquired IMSAI and DS drive/controller system. Tim has a FDC version 3.1 controller and HB-1.3 S-100 interface board. I'll describe them on my Web site soon.
Tim was assisted by several other people including Jeff Shook and Larry Greene and myself. I dug into my available boards (rev 3.31 controller, rev 1.4 bus-interface) and various docs Here's the tedious details of my efforts and results. One has to look hard at pin 40 of the floppy-drive side - that's the "write gate" to the drives! - and see what circuits interrupt that signal. I made those determinations, and show the work. - Herb
s100inc_FDS-1.pdf is from Jeff Shook. It's a 1978 catalog from "S-100 Inc.", a reseller of S-100 cards. It includes what is likely a flyer from Digital Systems.
FDC_1_76.zip are from Jack Rubin, documents of an FDC-1 system. He has no hardware. I've removed the Shugart 800 OEM manual which was also distributed by Digital Systems and provided by Jack.
FDC_1_colgrove.zip are documents from Tim Colegrove on Aug 2019, of an FDC-1 Systems Operation manual, HB-1.3 schematic, and FDC-1 vs -2 interface wiring. The manual includes a boot and BIOS source listing.
FDC_2.zip are from Jeff Shook, documents and photos from his Digital Systems FDC-2 system which he purchased in March of 1977. He still has it in 2010. Some of his documents were provided to Dwight Elvey.
FDC_II.zip are from Dwight Elvey, documents for FDC-II and HB 1.3, with code. Includes work by Dwight, disassembly of code and microcode ROMS. He got some docs from Jeff Shook, and some schematics from Stan Sieler.
FDC_33.zip consists of documents purchased from Vern Potter. They are documents for FDC 3.3 and HB 1.4, S-100 interface. Also photos of the Digital Systems drive cabinet and drives. Herb Johnson (me) now has these documents.
FDC_3_colegrove_code.zip consists of ASM files from Tim Colegrove. The BOOT and BIOS ASM files from his FDC 3.1 controller for CP/M, and a REL file. FDC_3_colegrove_roms.zip consists of two PROM files from Tim Colegrove's FDC 3.1 controller; one of them may be in doubt.
The subsequent history of Digital (Micro)Systems is described on another Web page.
Copyright © 2023 Herb Johnson