Apple ProDOS

From Wikipedia, the free encyclopedia
Jump to: navigation, search
ProDOS 8
PRODOS402 catalog.png
A floppy disk catalog in ProDOS 8 v2.0.3
Company / developer Apple Computer
OS family SOS
Working state Historic
Source model Closed source
Initial release October 1983; 30 years ago (1983-10)
Latest release 2.0.3 / May 6, 1993
Available in English
Platforms Apple II series of personal computers
Kernel type Monolithic kernel
Default user interface primarily text user interface
License Apple Software License Agreement
ProDOS 16
ProDOS16.png
ProDOS 16 v1.6
Company / developer Apple Computer
OS family SOS
Working state Historic
Source model Closed source
Initial release September 1986; 27 years ago (1986-09)
Latest release 1.6 / June 14, 1988; 26 years ago (1988-06-14)
Available in English
Platforms Apple IIGS
Kernel type Monolithic kernel
License Apple Software License Agreement

ProDOS was the name of two similar operating systems for the Apple II series of personal computers. The original ProDOS, renamed ProDOS 8 in version 1.2, was the last official operating system usable by all Apple II series computers, and was distributed from 1983 to 1993.[citation needed] The other, ProDOS 16, was a stop gap solution for the 16-bit Apple IIGS that was replaced by GS/OS within a year.[1]

ProDOS was marketed by Apple as meaning Professional Disk Operating System, and became the most popular operating system for the Apple II series of computers 10 months after its release in January 1983.[2]

Background[edit]

ProDOS was released to address shortcomings in the earlier Apple operating system (called simply DOS), which was beginning to show its age.

DOS only had built-in support for 5.25" floppy disks and required patches to use peripheral devices such as hard disk drives and non-Disk II floppy disk drives, including 3.5" floppy drives. ProDOS added a standard method of accessing ROM-based drivers on expansion cards for disk devices, expanded the maximum volume size from about 400 kilobytes to 32 megabytes, introduced support for hierarchical subdirectories (a vital feature for organizing a hard disk's storage space), and supported RAM disks on machines with 128kB or more of memory. ProDOS addressed problems with handling hardware interrupts, and included a well-defined and documented programming and expansion interface, which DOS had always lacked. Although ProDOS also included support for a real-time clock (RTC), this support went largely unused until the release of the Apple IIGS, the first in the Apple II series to include an RTC on board. Third-party clocks were available for the II Plus, IIe, and IIc, however.

ProDOS, unlike earlier Apple DOS versions, had its developmental roots in SOS, the operating system for the ill-fated Apple III computer released in 1980. Pre-release documentation for ProDOS (including early editions of Beneath Apple ProDOS) documented SOS error codes, notably one for switched disks, that ProDOS itself could never generate. Its disk format and programming interface were completely different from those of DOS, and ProDOS could not read or write DOS 3.3 disks except by means of a conversion utility; while the low-level track-and-sector format of DOS 3.3 disks was retained for 5.25 inch disks, the high-level arrangement of files and directories was completely different. For this reason, most machine-language programs that ran under DOS would not work under ProDOS. However, most BASIC programs would work, though they sometimes required minor changes. A third-party program called DOS.MASTER enabled users to have multiple virtual DOS 3.3 partitions on a larger ProDOS volume.

With the release of ProDOS came the end of support for Integer BASIC and the original Apple II model, which had long since been effectively supplanted by Applesoft BASIC and the Apple II Plus. Whereas DOS 3.3 always loaded built-in support for BASIC programming, under ProDOS this job was given to a separate system program called BASIC.SYSTEM, which one launched to run and write Applesoft BASIC programs. BASIC itself continued to be built into the Apple ROMs; BASIC.SYSTEM was merely a command interpreter enhancement that allowed BASIC programs to access ProDOS by means of the same "Control-D" text output they had used under DOS 3.3. BASIC.SYSTEM alone required about as much memory as the whole of DOS 3.3. Since the ProDOS kernel itself was stowed away in the "Language Card" RAM, the usable amount of RAM for BASIC programmers remained the same under ProDOS as it had been under DOS 3.3.

Despite ProDOS's many advantages, many users and programmers resisted it for a time because of their investment in learning the ins and outs of DOS and in DOS-based software and data formats. A contributing reason was that ProDOS allowed only fifteen characters in a filename compared to DOS's thirty. But Apple's integrated software package AppleWorks, released in 1984, proved a compelling reason to switch, and by the end of 1985 few new software products were being released for the older operating system. Apple IIs continued to be able to boot DOS (even the Apple IIGS could boot DOS floppies) but as 3.5" floppies and hard disks became more prevalent, most users spent the bulk of their time in ProDOS.

The Apple IIe, also released in 1983, was the first Apple II computer to have 64kB of memory built in. For a while, Apple shipped both DOS 3.3 and ProDOS with new computers.

ProDOS was renamed ProDOS 8 when ProDOS 16 was released to support the 16-bit Apple IIGS computer, although ProDOS 16 was soon replaced by GS/OS.

Requirements[edit]

All editions of ProDOS require an Apple II series computer or licensed compatible.

ProDOS 8 requires 64kB of memory to run. The original ProDOS (8) 1.0 through 1.0.2 required only 48kB for the kernel, but nearly all programs, including the BASIC.SYSTEM needed to use Applesoft BASIC, required 64kB, making a 48kB system useless for ProDOS as a practical matter, and support for 48kB machines was removed in version 1.1.

ProDOS 8 version 2.x requires a 65C02 or later (65802, 65816) CPU. ProDOS 8 2.x runs in 64kB, but the utility programs on the system disk require 128kB. Systems with a 6502 CPU instead of a 65C02 must use ProDOS 8 versions prior to version 2.0.

ProDOS 16 requires an Apple IIGS.

Unlicensed Apple II clones[edit]

With the release of ProDOS version 1.01 and higher, a check was added to see if it was running on an official Apple manufactured computer. If the word "Apple" was found in the computer's ROM firmware, ProDOS would load up as normal. If anything else was found (e.g. "Golden", "Franklin", "Elite") ProDOS would refuse to run, locking up at the boot splash screen. This measure was taken by Apple Computer to discourage use of unlicensed Apple II clones. It was still possible to run newer versions of ProDOS on clones, however users had to apply a small byte patch to every successive version of ProDOS. Some users went as far as replacing their physical ROM chip(s) with an illegal copied version of Apple's own ROM, or failing that, a custom patched ROM with "Apple" added in the name.

Availability[edit]

ProDOS system disk images can be downloaded legally from a number of user group web sites. It can also be purchased on disk from Syndicomm, which distributes it under license from Apple Computer.

Disk support[edit]

ProDOS 8 natively supports Disk II-compatible floppy drives, a RAM drive of approximately 59kB on computers having 128K or more RAM, and block devices whose controllers support the Pascal firmware protocol, a standardized method of accepting block reads and writes originally introduced for use with the UCSD p-System. This latter category included 3.5" disk and hard drives. Custom block device drivers can be hooked into the OS as well.

File system[edit]

ProDOS uses the same file system as the earlier Apple SOS for the Apple III. The SOS/ProDOS file system is native to Apple SOS, ProDOS 8, ProDOS 16, and GS/OS. Some Mac OS versions also come with a file system translator to handle this file system.

A volume is allocated in 512 byte blocks. (5.25" floppy disks were still formatted using 256-byte sectors, as this is the format required by the controller ROM to boot the disk. ProDOS simply treats pairs of 256-byte sectors as a single block on such drives.) A volume can have a capacity of up to 32 megabytes, and each file can be up to 16 megabytes. Each volume (disk or hard drive partition) has a "volume name", a filename which is used as the base directory name; having two volumes with the same volume name could result in conflicts. If necessary, ProDOS would search all available drives to find a named volume. Subdirectories are supported, and the concept of a "prefix" (working directory or current path) was provided to make working with subdirectories easier.

File, directory, and volume names can be 1 to 15 characters, starting with a letter then containing letters, digits, or periods. Each file entry also contains the 16 bit (2 byte) pointer to the block containing the beginning of the file (or its block index); a 16 bit block count; a 24 bit (3 byte) file size; an 8 bit (1 byte) filetype; a 16 bit auxiliary type (the meaning of which depends upon the filetype); creation and modification timestamps; and data related to how the file is stored on the volume. Sparse files are supported, but files are never "sparsified" by removing zero-filled blocks. The volume header contains similar information as relevant to volumes.

Directories (including the root directory) are sequentially indexed, with each block starting with the address of the previous block (or zero if none) and the subsequent block (or zero if none). The root directory on most disks is initialised to 4 blocks, allowing 51 entries (excluding the volume header). It never changes in size, except by manual intervention with special tools. Subdirectories begin at one block, and grow automatically as needed.

Normal files are progressively indexed. Single block files (under 513 bytes) have no index block; the directory entry points directly to the block of file data. Files with between 2 and 256 blocks (513 bytes to 128 kB) of data have a single index block, to which the directory entry points, which contains a list of up to 256 data block addresses. Larger files have a master index block containing a list of up to 256 index block addresses. When the Apple IIgs was introduced, a new storage format was introduced for files with two forks, as was typical for IIgs system and program files; the directory entry points to an informational block that tells the computer the storage format of the two forks. These files cannot be read or written natively by ProDOS 8, though the volume itself remains compatible.

The volume has a bitmap of used blocks. Other than this, there is no central file allocation table.

A ProDOS 8 volume formatted by Apple's tools has a boot sector that supports booting both ProDOS and SOS depending on what computer it is booted on. Block 0 is the Apple II boot block and block 1 boots SOS. This allows a disk to be used to boot on either Apple II or Apple III computers by putting both operating system kernels in the top directory: the Apple II boot sector looks for the file PRODOS and the Apple III boot sector looks for the file SOS.KERNEL.[3] Third-party formatting utilities often did not provide the SOS boot block, and some would even mark block 1 available for user data.

ProDOS has no kernel support for other file systems. If necessary, a conversion utility on the main system disk is used to transfer files individually between ProDOS and older Apple DOS 3.3 disks.

References[edit]

  1. ^ Weyhrich, Steven (2001-07-07). "Chapter 15: DOS 3.3, ProDOS & Beyond". Apple II History. 
  2. ^ "History of DOS 3.3 and ProDOS". 
  3. ^ Weyhrich, Steven (2001-07-07). "Chapter 15: DOS 3.3, ProDOS & Beyond". Apple II History.  Weyhrich source: Hunter, Skillman (February 1985). "Road Maps To Apple II Disks: DOS 3.3, CP/M, Pascal, and ProDOS". Call-A.P.P.L.E. (Renton, Washington: Apple Pugetsound Program Library Exchange): 10–21. ISSN 8755-4909. OCLC 8898855. 
  • Don Worth and Pieter Lechner. Beneath Apple ProDOS. Quality Software, 1984. ISBN 0-912985-05-4

External links[edit]