Written by Herb Johnson, with materials from other writers as noted, last edit Mar 05 2012. 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.
This Web page discusses the work 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.
More pages: The "race" for microprocessor-supporting floppy controllers between Digital Systems, MITS, IMSAI, iCOM and others, is discussed on this Web page. I have a collection of Web pages about the activity and products around Digital Research and CP/M, IMSAI and MITS. These are all linked from my DRI home page. Additionally, I have document lists of manuals from over 100 S-100 companies which can be accessed from this S-100 home page.
Acknowledgements: My thanks to Dr. John Torode, who provided discussion of and information about his early work. 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. Finally, 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.
The following are capsule descriptions of the persons around Torode and Kildall before and after the development of these early floppy controllers and of CP/M. These are far from complete biographies, as they emphasize the 1970's and all of these persons have outstanding achievements after, and even before, that period.
Dr. John Torode, was a graduate of MIT and the University of Washington; his PhD at the U of W in 1972 under Dr. Theodore Kehl was on microprogrammable controllers. He published papers with Kehl and Lawrence Dunkel; they also published works on digital design. Later he joined the faculty at UC Berkeley. Dr. Torode started or was a principal member of several technology companies, from Digital Systems which he started in 1967 as a graduate student; to IC Designs which became part of Cypress Semiconductor. The subsequent history of Digital (Micro)Systems is described on another Web page.
Torode eventually returned to the U of W area, and partnered with Kehl and many others in business, research and academia. Digital Systems Inc. became Digital Microsystems Inc. or DMS, and developed and sold microcomputers and Hinet networking products until the company was sold in 1986. Torode was honored as a UW Distinguished Alumnus in 1996. A biography of Dr. John Torode was available as of 2007 at the U of W. at this link.
Dr. Theodore Kehl was a 1961 Ph.D from the University of Madison, WI and was a professor of physiology and biophysics at the U of Wash. He may have been a founding member of the U of Wash. Computer Science Department in the mid-1960's. Among other work, Dr. Kehl developed digital designing methods for modular designs and semi-automated construction. In 1974 Kehl was a Computer Science associate professor at the University of Washington with Dr. Torode., and was Torode's Ph.D. thesis advisor. Dr. Kehl has several US and European patents in his name (some with David N. Cutler), assigned to DEC and Microsoft, dating from the 1990's and with a 2005 date.
Lawrence Dunkel was a member of the Physiology and Biophysics Dept. in 1974. Kehl and Dunkel partnered as digital designers and programmers and co-authors of publications.
Dr. Gary Kildall got his Ph. D. in Computer Science in 1972 at the University of Washington. He formed a company named MAA to do consulting and development work; and he became a faculty member of the Naval Postgraduate School. In 1973 Dr. Kildall provided to Intel a cross assembler, a simulator, and a PL/M cross compiler for the 8008, written in Fortran. In 1974, Kildall migrated these products to the 8080. Kildall then wrote a floppy disk operating system in PL/M for the 8080 and built a floppy controller which was made operational in 1974-75 by Dr. Torode, as described below. Kildall started Digital Research in 1975, did development with IMSAI, and offered CP/M 1.4 to the public. Digital Research Inc. (DRI) became a major operating system and programming language provider for microcomputers from that time through the mid-1980's and beyond; products from that company are in use today. See my Web site's history of Gary Kildall, his colleagues, and of CP/M development.
The history of the 1970's work of Torode, Kehl, Kildall, and of companies including IMSAI and MITS, is reviewed in outline form on my 30 years of CP/M Web page.
During 1973-74, 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 worked with Dr. Kildall for the first successful run of CP/M. 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. Over the next decade and more, over 100 companies produced S-100 products and systems. The bus was redesigned in the late 1970's as the "IEEE-696 bus" to support advanced products into the 1980's. In the 21st century, people collect, rebuild and operate these systems. A large part of my Web site provides lists of documents and descriptions of these companies. The home page for my S-100 activities has links to many S-100 companies' pages, technical descriptions, and related hardware and software.
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.
Torode's Ph.D. thesis, under Dr. Kehl at the University of Washington in 1973, was titled "A Microprogrammable Logic Machine". In November 4 1973, The journal "IEEE Transactions on Computers" received an article from John Torode and Theodore Kehl titled "The Logic Machine: A Modular Computer Design System". It was revised early in 1974 and published in the November issue of that journal. (A search of IEEE on-line absracts will find these as copyrighted articles available to IEEE members or for fees. We'll provide a copy of this article if possible, methods to be determined, depending on copyright issues.) In 2011-12, Kehl's former student Charlie Garthwaite contacted me, about Kehl's lab and the logic machines, as described in this Web document.
Torode and Kehl advocated use of a "microprogrammed control processor", built from a set of TTL logic, "which is used unmodified in all devices." Specific computational needs are added as "functional units", designed as needed, and controlled through the program in the microcontroller. "A logic machine refers to the ensemble of control processor, single data bus, several functional units, and a microprogram all arranged so that a specific digital system is constructed".
This figure shows the essential microcontroller from the 1974 paper. The "control store" are the ROMs which contain the microcode, the program which drives the controller. Blocks labeled "74161" are TTL counter chips which are the program counter (PC). The data outputs of the control store are captured by the 7475 TTL latches, and the logic gates and 75154's (1 of 16 decoder) to the right of those chips decode the instructions, to provide logic signals for control. Gates below the 74154's capture special instructions which test logical conditions for "jump on condition" instructions. If the conditions match the instruction, the jump address is loaded in the program counter chips.
As suggested, the microcontroller performs logical actions to outputs, and test and jumps on inputs. Note that one 74154 decoder is labeled "inst. 00 to 0F" and its outputs go to the "DOJUMP" logic gates. another 74154 decoder is labeled "inst. 80 to 8F", another "inst. 10 to 1F". These indicate Torode and Kehl used each set of 16 (or 10 hexadecimal) microcode instructions for those specific purposes.
As published by Dr. Gary Kildall in 1980, through 1973 and into 1974 Kildall developed the core of CP/M and related tools, as part of his efforts with PL/M and with related products he developed for Intel. But he could not get his own design of a floppy controller working to test it. Dr. Torode worked with him on Kildall's controller late in 1974. But Dr. Torode states in private correspondence they first ran CP/M on Kildall's Intel system with a controller of Torode's design. Torode's Digital Systems was first to sell a floppy controller which ran CP/M, under license from Kildall. Through Digital Systems, Torode and Kildall initially sold CP/M to Lawrence Livermore Labs and to Omron (a terminal manufacturer). Subsequently, Kildall formed Digital Research to offer CP/M; license #3 went to IMSAI after Kildall developed CP/M 1.3 for their first floppy controller. For more on those events, read my DRI Web pages, starting with this more detailed account.
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 the first to run with 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 systems, between Torode's FDC-1, IMSAI'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 elsewhere in 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.
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 (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 FDC3 seems to be doing the [data] separation on the controller by over sampling with a 20MHz clock." Like the previous models, the FDC-3 divides a 10MHZ crystal by two for a 5MHZ microcontroller clock cycle.
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_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_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.
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.
The subsequent history of Digital (Micro)Systems is described on another Web page.
Copyright © 2012 Herb Johnson