Apple II DOS source code

Software Gems: The Computer History Museum Historical Source Code Series

 

Could you write a Disk Operating System in 7 weeks?

 

In June 1977 Apple Computer shipped their first mass-market computer: the Apple II.

 

Unlike the Apple I, the Apple II was fully assembled and ready to use with any display monitor. The version with 4K of memory cost $1298. It had color, graphics, sound, expansion slots, game paddles, and a built-in BASIC programming language.

 

 

What it didn’t have was a disk drive. Programs and data had to be saved and loaded from cassette tape recorders, which were slow and unreliable. The problem was that disks – even floppy disks – needed both expensive hardware controllers and complex software.

 

 

Steve Wozniak solved the first problem. He designed an incredibly clever floppy disk controller using only 8 integrated circuits, by doing in programmed logic what other controllers did with hardware.  With some rudimentary software written by Woz and Randy Wigginton, it was demonstrated at the Consumer Electronics Show in January 1978.

But where were they going to get the higher-level software to organize and access programs and data on the disk? Apple only had about 15 employees, and none of them had both the skills and the time to work on it.

 

The magician who pulled that rabbit out of the hat was Paul Laughton, a contract programmer for Shepardson Microsystems, which was located in the same Cupertino office park as Apple.

 

 

On April 10, 1978 Bob Shepardson and Steve Jobs signed a $13,000 one-page contract for a file manager, a BASIC interface, and utilities. It specified that “Delivery will be May 15″, which was incredibly aggressive. But, amazingly, “Apple II DOS version 3.1″ was released in June 1978.

 

With thanks to Paul Laughton, in collaboration with Dr. Bruce Damer, founder and curator of the DigiBarn Computer Museum, and with the permission of Apple Inc., we are pleased to make available the 1978 source code of Apple II DOS for non-commercial use. This material is Copyright © 1978 Apple Inc., and may not be reproduced without permission from Apple.

 

There are seven files in this release that may be downloaded by clicking the hyperlinked filename on the left:

Apple_DOS_2June1978.pdf Scanned lineprinter listing from June 2, 1978
Apple_DOS_6Oct1978.pdf Scanned lineprinter listing from October 6, 1978
Apple_DOS_6Oct1978_retyped.docx  Retyped source code of the October 6th version
(This has not yet been assembled, and there may be some typographical errors.)
Apple_DOS_RW_30May1978.txt The source code of the low-level read/write routines by Steve Wozniak and Randy Wigginton.
Apple_DOS_tech_docs.pdf Various technical specifications and designs relating to the Apple II disk drive
Apple_DOS_contracts.pdf Various contracts and addenda between Apple and Shepardson Microsystems
meeting_minutes_5Oct1978.pdf Minutes of a meeting between Apple and Shepardson Microsystem about bugs and enhancements. (Unfortunately we don’t have the list that is referred to.)

 

Scott LaBombard, a dedicated vintage computer collector/restorer in New York, has done an amazing job researching and reconstructing Apple II DOS source code. He has given us permission to release the results of his work here: LaBombard_8Dec13.zip. The “shepdos” directory in that archive represents his work on the scanned listings we got from Paul Laughton, and the “appledos31″ directory contains reconstructed source code that matches the production DOS 3.1 binaries released by Apple. Thanks, Scott!

 

Do you like this?

If you would like to support the Computer History Museum’s efforts to preserve and publish historic source code like this, please consider making a voluntary contribution.

 

 

 

 

More on the story behind Apple II DOS

Finding the right programmer

Paul Laughton had taken computer programming classes at Virginia Tech, and had worked as a programmer for John Hopkins University and IBM. He was experienced with the design of large mainframe timesharing systems like IBM’s CALL/360, and he knew about compilers and operating systems.

 

(Photo courtesy of Lee Felsenstein)

But Paul was also following the development of small personal computers based on the new microprocessors. He sometimes, with his programmer wife Kathleen O’Brien, attended the Homebrew Computer Club meetings at Stanford.

 

In the meantime, Bob Shepardson had a small contract programming group in Cupertino that was writing assemblers for those new microprocessor-based systems. As Paul says [1]  ”Apple was a few doors down. A very, very small company, maybe 10 or 15 people.  They were working on a new computer called “Apple Annie”, and they wanted a BASIC for that. …Bob was busy doing other things, so he put a small ad in the paper and I responded.” Paul, who had worked on BASIC for mainframe computers, was hired for the job.

 

But while Paul was working on the BASIC for Apple Annie (a never-released successor to the Apple II), something happened. “Steve Wozniak came into the office showing off his new disk drive”. One thing led to another, and Paul agreed to write the Disk Operating System for the new Apple II disk drive.

 

The contract was signed in April 1978, and delivery was for that June. “I knew what needed to be done, and I knew how to do it. I was confident that I could do it pretty quickly.” All he had to start with was the low-level “read/write track/sector” routine that had been written by Woz and Wigginton.

 

Laughton indeed “knew how to do it”. The first delivery was in early June 1978, within a week of the deadline specified in the one-page contract.

 

The Woz disk controller

The hardware Paul had to work with was a masterful design.  “I was familiar with the other disk controllers, and when I saw Woz’s design I was just blown away.  I mean, it was so simple, and so elegant.  And the fact that he was doing it in software — a lot of the work that was done by those massive amounts of chips was done in a few lines of software.  It was just pure genius.”

 

Disk Controller

Disk Controller

Wozniak & Jobs_ca1978

Wozniak & Jobs_ca1978

 

 

 

 

 

Writing Apple II DOS

When it came time to write DOS, there was a problem: the Apple II itself was not capable of assembling programs for its own MOS Technology 6502 microprocessor. The program had to be assembled on other machines.

 

“DOS was written on punch cards. I would actually hand-write the code on 80-column punch card sheets.  A guy at Shepardson named Mike Peters would take those sheets and punch the cards.  The punch cards would then be read into a National Semiconductor IMP-16 and assembled, and a paper tape produced.  The paper tape was read into the Apple II by a plug-in card made by Wozniak, and I would proceed to debug it. As the project got further along and the code was all written, and it was debugging and updating, I would mark up a listing and give it to Mike Peters who would then change whatever was necessary and deliver me a paper tape and I’d start again.”

 

 

In his own words

Click on the image below to watch oral history of Paul Laughton

 

Oral History of Paul Laughton

Oral History of Paul Laughton

Interviewed by Bruce Damer, with Len Shustek, on 2013-08-14 in Mountain View, California, X6895.2014.

 

 

 

 

 

 

 

What it was, and what it wasn’t

Writing Apple DOS in seven weeks was an amazing accomplishment. But to be fair, it wasn’t an “operating system” as we use the term now. “When I began the project, what I had in mind was a file management system. This creates a structure whereby you can open, read, write and close files. …In order to use it you had to write some code… there were no commands; you had to do it yourself. …A true operating system has a lot of other components to it, interfacing to other pieces of hardware, USB, the networks, screens, keyboards. A true operating system is much, much, more than what I did for Apple.”

 

Paul initially provided a programmer’s interface to DOS.  But Apple wanted a simpler way to access the file system from BASIC programs. Somewhat reluctantly, Paul did that too, after the first June delivery of the code. “I ended up writing the code to interface BASIC to that file management system.  One of the things that always disturbed me was I had a very clean interface to the file management system. There were control blocks and places you could call to do things. It never really got published. Instead, what you saw was the BASIC interface.”  That interface was released by Apple in October of 1978, and then anyone who could write in BASIC could use the disk.

 

But APIs (Application Programming Interfaces) want to be free. “I have encountered people in my life since then who disassembled the code and figured it out. They ended up writing interfaces to it the way that I thought it should be done.  These were mainly game developers.”

 

What was next for Paul

Paul Laughton examining the Apple II DOS source code listing in August 2013

After the Apple II DOS contract was completed, Paul Laughton continued to work for Shepardson Microsystems on contracts for DOS and BASIC for Atari, and on a C compiler for Cromemco. When Shepardson closed the business, Paul become an Atari employee for a few years, and later joined Fox Video Games. In the mid-80′s he participated in a startup for which he created a complete digital voicemail system. Following that, he worked for Logitech and other companies on software for digital cameras.

 

Paul retired in 2000, but remains active in engineering. He has written a popular Android-based BASIC, and is working on software-defined radios for amateur radio “hams”.  He is also training to become a docent at the Computer History Museum.

 

Bibliography


[1] Oral history of Paul Laughton, August 14, 2013, CHM X6895.2014. All otherwise unattributed quotes are from that interview. The transcript is at http://www.computerhistory.org/collections/catalog/102746742.

[2] The DigiBarn Computer Museum pages on the acquisition of the Apple II DOS source code.

[3] CNET story by Daniel Terdiman on the discovery of the source code.

 

 

ABOUT LEN SHUSTEK

Read all posts by Len Shustek

Len Shustek is chairman of the board of trustees of the Computer History Museum. In 1979, he co-founded Nestar Systems, an early developer of networks for personal computers. In 1986, he co-founded Network General, a manufacturer of network analysis tools including The Sniffer™. The company became Network Associates after merging with McAfee Associates and PGP. ...

More
  • Mairusu

    That’s nice and everything. Really.

    But, why .docx? How does this even makes sense? Plain text seemed the better option – or, at least, please use ISO/IEC 26300:2006.

    • Len Shustek

      I left it as .docx because I wanted to keep the tabbed formatting looking right. When things calm down — our servers are pretty overloaded right now — I’ll look into changing that to a better format.

    • raffaeler

      Why NOT .docx? It’s an international standard (ISO/IEC 29500) and probably the most used in the world.

  • datajerk

    Why DOS 3.1? And not 1.0 (or 3.0)?

  • PeterJ

    It was at CES in June 1978, that Steve Jobs eagerly dragged me into the Apple booth and showed me the tiny disk controller card for the Apple ][. He was so excited, and so proud of Woz's engineering achievement, that he could not contain his excitement. He was ecstatic at the simplicity of the design and how few chips were on that board.

    To truly appreciate the marvel of it, compare it to the SOL Helios drive, packed with TTL logic and delivered about a year late.

    Somewhere in my storage locker, I have a complete disassembled and commented version of Apple DOS from 1978. It will be interesting to dig that out and compare.

    VisiCalc accessed the disk through the low level routines to improve performance. That code was all based on the disassembled version of DOS we had back then.

    Later, VisiDex accessed the disk directly and achieved a speed several times faster than DOS read and write by accessing sectors non-sequentially based on the position of the read/write heads after processing the data. I don't recall if it was alternate sectors or some other formula.

    As I recall, the original DOS file copy routine read one sector, moved the head and wrote one sector, which probably didn't make much difference on floppies, which were already slow. But when Corvus introduced a hard drive for the Apple ][, which was transparent, so you could watch the head go back and forth, it inspired me to write an efficient file copy program that made maximum use of available memory.

    Apple DOS is like an old friend. I spent many happy hours burning the midnight oil exploring the code, byte by byte.

  • timcimbura

    I have a full disassembly of DOS 3.3 as scanned PDF if it would be useful for the archive. At the time we used it to tie into the low level OS to create a copy-protected disk for our product CompuKeys that taught kids how to type. http://cimbura.com/tech/about-us/cimbura-com-history/

  • Auri