Jump to content

Apple DOS: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 94: Line 94:
[[Category:Apple Inc. operating systems|DOS, Apple]]
[[Category:Apple Inc. operating systems|DOS, Apple]]
[[Category:Disk operating systems]]
[[Category:Disk operating systems]]
[[Category:Discontinued operating systems]]


[[de:Apple DOS]]
[[de:Apple DOS]]

Revision as of 03:28, 1 January 2010

Apple DOS
DeveloperApple Computer
OS familyApple DOS
Working stateHistoric
Source modelClosed source
Latest release3.3 / 1980 (last released bug fix in 1983)
Kernel typeMonolithic kernel
LicenseApple Software License Agreement

Apple DOS refers to operating systems for the Apple II series of microcomputers from late 1978 through early 1983. Apple DOS had three major releases: DOS 3.1, DOS 3.2, and DOS 3.3; each one of these three releases was followed by a second, minor "bug-fix" release, but only in the case of Apple DOS 3.2 did that minor release receive its own version number, Apple DOS 3.2.1. The best-known and most-used version was Apple DOS 3.3 in the 1980 and 1983 releases. Prior to the release of Apple DOS 3.1, Apple users had to rely on audio cassette tapes for data storage and retrieval, but that method was notoriously slow, inconvenient and unreliable.

Version history

Apple DOS was largely written by Steve Wozniak, Randy Wigginton, and outside contractor Paul Laughton. It was closely tied to the Integer BASIC programming language. To the dismay of many programmers, Apple published no official documentation until release 3.2.

There was no Apple DOS 1 or 2, per se. versions 0.1 through 2.8 were serially enumerated revisions during development (which might as well have been called builds 1 through 28). Apple DOS 3.0 (a renamed issue of version 2.8) was never publicly released due to bugs.[1][2]

Apple DOS 3.1 was publicly released in June 1978 (slightly less than one year after the Apple II was introduced), becoming the first disk-based operating system for any Apple computer. A bug-fix release came later, addressing a problem with its MASTER CREATE utility, which was used to create Apple DOS master disks. (The built-in INIT command created disks that could be booted only on machines with the same amount of memory as the one that had created them. MASTER CREATE included a self-relocating version of DOS that would boot on Apples with any memory configuration.)

Apple DOS 3.2 was released in 1979 to reflect major changes in computer booting methods that were built into the successor of the Apple II, the Apple II Plus. Instead of the original Integer BASIC, the Apple II Plus firmware included the newer Applesoft II floating point BASIC. The new firmware also had an autostart feature which would automatically find a disk controller and boot from it when the system was powered up—earning it the name Autostart ROM.

Apple DOS 3.3 was released in 1980. It improved various functions of release 3.2, while also allowing for large gains in available floppy disk storage; the newer P5A/P6A PROMs in the disk controller could read and write data at a higher density, so that instead of 13 sectors (3.25kB), 16 sectors (4kB) of data could be stored per disk track, increasing the capacity from 113.75kB to 140kB per disk side (16kB of which was used by filesystem overhead and a copy of DOS), leaving 124kB for user programs and data. DOS 3.3 was, however, not retrocompatible; it could not read or write DOS 3.2 disks. To address this problem, Apple Computer released a utility called "MUFFIN" to migrate Apple DOS 3.2 files and programs to version 3.3 disks. Apple never offered a utility to copy the other way. To migrate Apple DOS 3.3 files back to version 3.2 disks, someone wrote a "NIFFUM" utility. There were also commercial utilities (such as Copy II Plus) that could copy files from and to either format (and eventually ProDOS as well). Release 3.3 also improved the ability to switch between Integer BASIC and Applesoft BASIC, if the computer had a language card (RAM expansion) or firmware card.

Technical details

Apple DOS 3.1 disks used 13 sectors of data per disk track, each sector being 256 bytes in size. It used 35 tracks per disk side, and could access only one side of the floppy disk, unless the user flipped the disk over. This gave the user a total storage capacity of 113.75 kB per disk side, of which about 10kB were used to store DOS itself and the disk directory, leaving about 100kB for user programs.

Compared to the modern operating systems of today, Apple DOS was quite primitive. The first layer of the operating system was called the RWTS, which stands for "read/write track sector". This layer consisted of subroutines for track seeking, sector reading and writing, and a disk formatting. An API called the File Manager was built on top of this, and implemented functions to open, close, read, write, delete, lock (i.e. write-protect), unlock (i.e. write-enable), and rename files, and to verify a file's structural integrity. There is also a catalog function, for listing files on the diskette, and an init function, which formats a disk for use with DOS, and stores a startup program (usually called HELLO) that will be auto-started when this disk is booted. On top of the File Manager API, the main DOS routines were implemented which hooked into the machine's BASIC interpreter and intercepted all disk commands. It provided BLOAD, BSAVE, and BRUN for storing, loading and running binary executables. LOAD, RUN, and SAVE were provided for BASIC programs, and an EXEC was provided for running text-based batch files consisting of BASIC and DOS commands. Finally, 4 types of files existed, identified by letters in a catalog listing.

Apple DOS File Formats:

  • I: Integer BASIC programs (stored in a compact format, not plain-text).
  • A: AppleSoft BASIC programs (also stored in a packed, space-saving format).
  • B: Binary files, either executable machine-language programs, or data files.
  • T: ASCII text files (or plain-text, unpacked batch files).

There were four additional file types; 'R', 'S' and an additional 'A' and 'B', none of which were fully supported. DOS recognized these types for catalog listings only, and there were no direct ways to manipulate these types of files. The 'R' type found some use for relocatable binary executable files. A few programs supported the 'S' type as data files.

Relocatable software

Most 8 bit Apple II machine language programs did not concern themselves with code relocation since the Apple II usually did not run multiple programs at the same time like modern computers. Programs were generally written to always expect to find their machine code at the same memory location every time. Fully relocatable code was more complicated and difficult to implement.

Apple DOS, however, needed to accommodate varying amounts of memory installed in an Apple II—from 16k to 48k. DOS would load itself at the highest point possible, to free up the lower memory locations for BASIC programs and graphics capabilities. In machines with 48k or more memory, it occupied the region from $9600 to $BFFF (3 file buffers + 10k of software), but could load in a lower memory area if less system memory were available. (In comparison, ProDOS always loads into language card RAM, thus requiring at least a 64kB machine.)

A call vector table in the region of $0380-03FF allowed programs to find DOS wherever it was loaded into the system memory. For example, if the DOS hooks into the BASIC CLI stopped functioning, DOS could be reinitialized by calling location $03D0 (976)—hence the traditional "3D0G" command to return to BASIC from the System Monitor.

Boot Loader

The process of loading Apple DOS involved a series of very tiny programs, each of which carried the loading process forward a few steps before passing control to the next program in the chain.

  • Originally, the Apple II ROM did not support disk booting at all. At power-up it would go straight to the System Monitor prompt. At this point, booting from disk required the user to type the slot number followed by Control-P then Return).
  • When the Apple II Plus was introduced, it included the ability to scan each expansion slot (working downward from slot 7 to slot 1) for an expansion card ROM with additional boot code, and automatically call it.
  • The expansion card ROM boot code attempts to boot from drive 1 of the controller, by moving the read/write arm to track zero, and attempting to read 256 bytes from sector zero of that track. (If no readable disk is present the drive spins indefinitely until a readable disk is provided and the drive door is closed.)
  • Sector zero contains a tiny program which tells the computer how to also read sector 1.
  • These two sectors combine to form code capable of reading the rest of the sectors in track zero.
  • The program in sectors 2-15 of track 0 then proceed to load tracks 1 and 2 which contain the rest of DOS, and load relocate it as high in system memory as possible, up to the 48k limit of the Apple II's main memory ($BFFF).
  • Once DOS is loaded into memory, it attempts to load and execute a startup program as indicated in the DOS program code. This was commonly a BASIC language program named HELLO but DOS could be modified to run other types of programs at startup, such as an executable binary file. The appearance of the right-hand bracket ( ] ) on the screen was an indication to the user that an Applesoft BASIC startup program was loading, while a greater-than symbol ( > ) indicated an Integer BASIC program was loading.
  • The startup program would then do whatever its author had written.

Integer BASIC and Applesoft floating point BASIC support

The Apple II started out using a simple BASIC interpreter known originally as Apple BASIC and later as Integer BASIC. It could only handle integer numbers ranging from -32768 to 32767 and only had built-in support for low-resolution graphics. But it was the first version of BASIC available for the Apple II and is what the earliest BASIC programs used.

Later, Apple commissioned Microsoft to develop a much more capable interpreter known as Applesoft BASIC[3], capable of handling floating-point real numbers with up to 9 digits of precision and base 10 multipliers from -38 to +38, and with support for high-resolution graphics. While more capable, Applesoft could not run Integer BASIC programs, causing some users to resist upgrading to it.

DOS 3.3 was released when Applesoft BASIC was standard in ROM on the Apple II Plus, so Apple designed it to support switching back and forth between the two BASIC interpreters. The DOS 3.3 System Master disk contained Integer BASIC and Applesoft on disk as a binary files which could be loaded into RAM, allowing whichever language was not resident in ROM to be used on any machine with enough RAM. The user could switch between BASICs by typing either FP or INT at either BASIC prompt. DOS automatically chose the needed language when running a saved program. Applesoft programs were saved as type A files, while Integer BASIC programs were saved as type I files.

Decline of Apple DOS

After 1980, DOS entered into a state of stagnation, along with all other Apple II products, as Apple concentrated its efforts on the ill-fated Apple III computer and its SOS operating system. After the Apple III had been abandoned by the company, two more versions of Apple DOS, both still called DOS 3.3 but with some bug fixes and better support for the new Apple IIe model, were released in early and mid 1983.

Without third-party patches, Apple DOS could only read floppy disks running in a 5.25-inch Disk II disk drive and could not access any other media, such as hard disk drives, virtual RAM drives, or 3.5-inch floppy disk drives. The structure of DOS was such that it was not possible to have more than 400kB available per drive without a major rewrite of almost all sections of the code; this was the main reason Apple abandoned DOS in 1983, when Apple DOS was entirely replaced by ProDOS.

ProDOS retained the 16-sector low-level format of DOS 3.3 for 5.25 inch disks, but introduced a new high-level format that was suitable for devices up to 32 MB in size; this made it suitable for hard disks and 3.5-inch floppies. All the Apple computers from the Apple II Plus onward can run both DOS 3.3 and ProDOS, the Apple II Plus requiring a "Language Card" memory expansion to use ProDOS; the Apple //e and later models had built-in Language Card hardware, and so could run ProDOS out of the box. ProDOS included software to copy files from Apple DOS disks. However many people who had no need for the improvements of ProDOS (and who did not like its much higher memory footprint) continued using Apple DOS or one of its clones long after 1983. The Apple convention of storing a bootable OS on every single floppy disk meant that commercial software could be used no matter what OS the user owned. A program called DOS.MASTER enables users to have multiple virtual DOS 3.3 partitions on a larger ProDOS volume, which allowed the use of many floppy-based DOS programs with a hard disk.

Apple stopped authorizing user groups to distribute DOS 3.3 many years ago, but granted one company, Syndicomm, an exclusive license to resell DOS 3.3.

Other versions

  • The standard DOS 3.3 disk access speed was slow and inefficient (due to copying files read into memory 3 times[4]) Significant speed improvements were possible by optimizing the 5.25" drive RWTS routines. ProntoDOS was one such accelerated version of DOS 3.3, sold by the company Beagle Bros. Other variations include Diversi-DOS, and David-DOS.

References

  • Worth, Don, and Pieter Lechner (1981), Beneath Apple DOS, Quality Software{{citation}}: CS1 maint: multiple names: authors list (link) ISBN 0-912985-00-3
  1. ^ http://www.laughton.com/Apple/Apple.html
  2. ^ http://apple2history.org/history/ah14.html#03
  3. ^ Steven Weyhrich. "Apple II History Chapter 16". Retrieved 2009-01-26.
  4. ^ DOS 3.3, ProDOS & Beyond v1.3 bullet 07 Jul 01

External links