Apple DOS 3.3 and ProDOS Review: Features, Commands and More

About DOS 3.3 and ProDOS

DOS and ProDOS were disk operating systems designed by Apple Computer, Inc. to run in the 8-bit Apple II line of computers. Apple also developed a 16-bit version of ProDOS to run in the Apple IIgs. DOS was released for the Apple II in the late 1970’s and was later replaced with ProDOS. ProDOS is much easier to use than DOS. Apple has always had an ease of use philosophy. You can tell by reading their older Apple II DOS or ProDOS manuals. They have always strived to make the computer experience as humanistic as possible. DOS and ProDOS are text-line OSs and as such are inherently harder to use than a GUI OS. Attempts to add a GUI to the older 8-bit Apple II’s (not withstanding the 16-bit IIgs) have all pretty much fallen flat. The Apple II simply does not have the graphical capabilities to support a convincing GUI. The Apple II, excluding the later IIgs, is a text-line machine, take it or leave it. You might expect that as a text-line machine, it would be hard to use and cryptic, especially if you are familiar with text-line operating systems like MSDOS. DOS and ProDOS were designed with as few keywords as possible. It was designed to make the levels of abstraction as few as possible. These operating systems are simple, elegant, and fun to use. They do not tax the user with multitudes of cryptic commands and hard to remember procedures. It is no wonder that the company that produced these powerfully simple text-line operating systems eventually changed the world with the Mac OS GUI.

History of DOS 3.3 and ProDOS

Apple’s DOS (Disk Operating System) was written to support their 5.25 inch floppy disk drive (Disk II) when it debuted in early 1978. Version numbers for software were not as strict as they are now. The code started at v0.1, and was incremented by 0.1 per revision. When delivered to Apple, it was at version 3.0. After modification, Apple released v3.1 as the first version shipped. Since Apple’s disk drive was single sided, all support for 5.25 inch DOS disks was single sided only.

With various bug fixes, DOS was at version 3.2.1 by 1979. These early releases supported only 13 sectors with 113.75K total space per disk side. With technological improvements to the disk interface card, 16 sectors could be fit in, for a total of 140K per side. DOS 3.3, released in 1980, was the first revision capable of handling 140K disks.

ProDOS was commissioned to be the “Professional Disk Operating System”, and was first part of the Apple III’s “Sophisticated Operating System”. Although the Apple III was a horrible marketing failure, ProDOS become the default standard for the Apple II. ProDOS was designed to be a replacement for DOS 3.3, and added many features not part of original DOS 3.3 such as support for disks other than the 5.25 inch drive, as well as directories and time stamping of files. A number of people have continued to use DOS 3.3 for various reasons, although ProDOS and various GS versions of it (ProDOS 16 and GS/OS) have become much more popular among Apple IIgs owners, as well as hard drive users.

Features of DOS 3.3

DOS 3.3 as released from Apple supports only the 113.75K and 140K 5.25 inch disk formats. It supports up to 105 files per side, no directory support, with very loose rules on filenames. It was initially bundled with Apple’s 5.25 inch drives (Drive II), so it won a lot of support for being free and usable. Since 1980, DOS 3.3’s 140K per 5.25 side has become the reigning standard for the DOS 3.x versions. DOS 3.x “System Master” disks could boot and run on any machine with at least 16K of memory (though 24-32K was recommended).

Due to some double buffering while reading and decoding files off disks, DOS 3.3 was not as fast as it could be. A few companies sold modified versions of DOS 3.3 to avoid the extra copy and thus dramatically speed up disk access; Beagle Bros’s ProntoDOS and many others were widespread. DOS 3.3 could also be modified to do other things, such as use a few more tracks on disk for extra space, relocate itself into the top 16K of memory on a 64K machine, but these were all third party patches, nothing official from Apple. Some of these patches and features came at the expense of the INIT command.

Features of ProDOS

ProDOS allows directories to be created and files stored in them, time/date stamping of files, and support for disks other than the original Apple 5.25 inch drive (Disk II). ProDOS can support up to 32MB per disk volume (partition). ProDOS has far more restrictive filenames, case insensitive at the cost of everything appearing in uppercase.

ProDOS requires a 64K Apple II. When the Apple IIgs came out, the need for a 16-bit OS was apparent, so with a quick wrapper around ProDOS, “ProDOS 16” was created, turning the existing ProDOS to “ProDOS 8”. Versions 2.x of ProDOS 8 requires an enhanced IIe, IIc, IIc Plus or IIgs.

ProDOS incorporates many of the disk read speedups provided by DOS 3.3 third party enhancements. ProDOS also has the ability to not reside on a disk when first formatted (at obvious disk space savings), but be copied on later if necessary. Otherwise, the disk can be used as non-bootable storage. Similar functionality could be gained in DOS 3.3 by using certain utility programs, but this is not standard.

ProDOS’s BASIC.SYSTEM command line functionality gained a few features over DOS 3.3, such as support for typing commands in lowercase. A few lesser-used commands were removed, most notably the ability to switch to Integer BASIC, as well as disk formatting.

How to Use DOS 3.3?

File Types

The type of data in a file is represented by the single-letter code, which appears in the leftmost column of the catalog, revealed with the use of the CATALOG command. These codes are as follows:

CodeMeaning
AApplesoft programs
BBinary image files
IInteger BASIC programs
TText files
RRelocatable binary

Locked files may not be written to or deleted. The catalog indicates that a file is locked by preceding the type code with an asterisk. The number of empty sectors the file occupies is shown as a three-digit number. The smallest (empty) files are one sector long. If a file has more than 255 sectors, this number is reset to 0 and starts over. This does not affect the true size of the file. A typical DOS catalog view:

*I 002 HELLO
*I 053 APPLE-TREK
*B 009 UPDATE 3.2.1
*I 018 ANIMALS
*A 025 HANGMAN

File Names

Apple II DOS requires that you refer to a file by its name. Here are the rules which govern the names you assign to files:

  • File names must be from 1 to 30 characters in length. Excess characters are ignored.
  • File names must begin with a letter.
  • Any character you can type on the keyboard may be part of a file name, except commas.

How to Boot DOS 3.3?

There are several ways to boot DOS, depending on the configuration of your computer and the language you use to initiate the boot. Each method assumes that the disk drive is connected in the DRIVE 1 pins on the disk controller card in slot 6.

Autostarting is the easiest way to boot DOS. As the name implies, booting is automatic. But to autostart, your computer must have the Autostart Monitor. All models of the Apple II starting with the Apple II Plus have this functionality built-in. To boot with an Autostart Monitor, simply turn on the Apple II power switch. To boot an Apple IIe with power already on, simply put the disk in the drive and push the following keys: Open Apple, Control, Reset. This will cause the computer to restart and check the disk drive. If there is no disk in the drive, the drive will continue to spin until you push the following keys: Control, Reset. The same applies to a power on. If there is no disk in the startup drive in slot 6, the disk will begin to spin and continue to spin until you tell it to stop by pushing the Control/Reset combination.

The Apple IIe boots to the BASIC prompt loaded by the ROM upon power up. It has Autostart built into the ROM, so booting a disk is simply a matter of turning on the machine or pushing the Open Apple/Control/Reset combination. Older Apple IIs boot to the “Monitor”. When the Monitor prompt character (*) appears on the screen, the Apple II Assembly Language Monitor is waiting to accept commands. There are relatively few Apple IIs or Apple II +’s around today. Most likely, you will be using an Apple IIe or better. For those with one of the older Apple IIs, the following method will boot a DOS disk.

At the Monitor, type the letter C, followed by the slot number of the drive you wish to boot (6 is standard), then two zeros and the letter G. The entire boot command should look like this:

C600G

C600 is the memory address of the program that boots from the drive in slot #6. G is the command that transfers control to that program. Now press Return. The lamp on the drive should light and the drive will make whirring and clicking noises. You can also use other Monitor commands to boot DOS. At the Monitor, type the slot number (normally 6), then type Ctrl-K or Ctrl-P. The Ctrl-K or Ctrl-P will not be displayed on the screen. After typing the command, press Return.

DOS 3.3 Commands

DOS 3.3 commands are listed below in alphabetical order. Generic terms are used in the statement definitions to clarify what must accompany the DOS statements. Italicized letters like “n” are replaced with the exact wording or value needed for each particular statement.

The following generic terms are used in statement definitions:

TermMeaning
[ ]Brackets indicate that the enclosed parameter is optional. Brackets do not appear in the actual statement.
BbyteThe number of bytes, between 0 and 65535, ahead of the current file pointer position. If the number specified is past the end of a sequential-access file or past the end of a random-access record, an error results.
DnA disk drive number that must be specified as D1 or D2.
FfieldThe number of field, between 0 and 32767, ahead of the current file pointer position. If the number specified is past the end of a sequential-access file or past the end of a random-access record, an error results. A carriage return character marks the end of every field.
filenameAny DOS 3.3 file name.
lineAny BASIC program line number.
memlocAny memory location specified by an integer constant between 0 and 65535 (decimal) or $0 and $FFFF (hexadecimal). Hexadecimal constants are identified by a dollar sign ($) prefix.
RrecordThe record number in a random-access file.
RfieldSame as Ffield.
SnSlot number for input or output; must be S0, S1, S2, S3, S4, S5, S6, or S7.
TtypeOne of the file type codes.
VnAn identifying DOS 3.3 disk volume number between V0 and V255.

APPEND

Opens a DOS 3.3 file (See OPEN) and positions the file pointer at the end of the file.

Format: APPEND filename, [Dn], [Sn], [Vn]

Note: Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. APPEND is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode. APPEND cannot be used in immediate mode.

BLOAD

Retrieves a binary file from a DOS 3.3 disk and stores it in the specified section of memory.

Format: BLOAD filename, [Amemloc], [Dn], [Sn], [Vn]

Note: If the Amemloc option is absent, the specified file is placed in memory beginning at the memory location from which the file was saved (see BSAVE). If the option is present, the file goes into memory at memloc. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

BRUN

Retrieves a machine language program from a DOS 3.3 disk, stores it in the specified section of memory, and executes it.

Format: BRUN filename, [Amemloc], [Dn], [Sn], [Vn]

Note: The file must be type B (binary) and must contain a 6502 machine language program. The Amemloc option specifies where in memory to start storing the binary image. If the location is absent, DOS uses the location from which the image came. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

BSAVE

Saves part of the Apple II’s memory as a binary image on a DOS 3.3 disk file.

Format: BSAVE filename, [Amemloc], [Llength], [Dn], [Sn], [Vn]

Note: The Amemloc parameter specifies the starting address of the memory section to save. The Llength parameter specifies the number of bytes to save. The length must be an integer between 0 and 32767 (decimal) or its hexadecimal equivalent. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

CATALOG

Displays a list of all files on a DOS 3.3 disk.

Format: CATALOG, [Dn], [Sn]

Note: CATALOG prints the volume number of the disk, followed by a list of files on the disk. For each file, CATALOG prints a code letter indicating the type of file, then number of sectors required to store the file, and the name of the file. An asterisk appears to the left of the file type if the file is locked. The file types and their codes are as follows:

Code Meaning

CodeMeaning
AApplesoft programs
BBinary image files
IInteger BASIC programs
TText files
RRelocatable binary

Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

CHAIN

Loads and runs an Integer BASIC program from a DOS 3.3 disk, without clearing the values of any variables or arrays.

Format: CHAIN filename, [Dn], [Sn], [Vn]

Note: If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

CLOSE

Closes one or all open DOS 3.3 disk files.

Format: CLOSE [filename]

Note: Closing a file writes anything being held in the file buffer to the disk file and then releases the file buffer. You must close any file you have opened to avoid losing information it contains. Specifying the filename closes only the named file. CLOSE without a filename closes all files, except a controlling EXEC file (if any).

DELETE

Erases a file from a DOS 3.3 disk.

Format: DELETE filename, [Dn], [Sn], [Vn]

Note: The file with the specified name is removed from the disk. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

EXEC

Treats a sequential-access DOS 3.3 file as a substitute for the keyboard.

Format: EXEC filename, [Rfield], [Dn], [Sn], [Vn]

Note: A text file to be used with EXEC consists of some combination of BASIC commands. When EXEC is executed, the first line of the specified file is read from the disk. If the first line is a command, it is executed immediately. If it is a program line, it is added to memory, just as if you had entered it directly from the keyboard. If a keyboard INPUT statement is executed while an EXEC file is open, the response is taken from the EXEC file. An EXEC file can be used to enter an entire program, list it, run it, save it on disk, change it, or to do anything else that can be done from the keyboard. You can even use an EXEC file to create and execute a second EXEC file. The Rfield option specifies a number of command lines (carriage return characters) to be skipped from the beginning of the file. When the last line in the file has been used, the EXEC file is automatically closed. When an EXEC command is encountered in a controlling EXEC file, the original, controlling, file is closed and any further commands in it are ignored. The new EXEC file is opened and used instead. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

IN#

Switches input to a specified input device.

Format: IN# slot

Note: IN# redirects the input of subsequent INPUT or GET statements to a device attached to one of the numbered accessory card slots.

NumberMemory LocationDevice
047182*Display screen
149408Slot 1 (serial or parallel adapter)
249664Slot 2 (serial or parallel adapter)
349920Slot 3 or IIe Auxiliary slot (80-column adapter)
450176Slot 4 (Mouse – commands only)
550432Slot 5 (Disk drives)
650688Slot 6 (Disk drives)
750944Slot 7

*64795 if ProDOS is disabled

INIT

Initializes a DOS 3.3 disk.

Format: INIT filename, [Dn], [Sn], [Vn]

Note: The program currently in memory is saved on the disk under the filename given. This program becomes the “greeting program,” and it is run automatically whenever the disk is booted. The greeting program is usually titled “HELLO.” This is not required but it seems to be the generally accepted convention. The disk is assigned the volume number specified in the INIT command. If no volume is specified, the disk is assigned a volume of 254. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. INIT can only be used in immediate mode.

LOAD

Loads a program from a DOS 3.3 disk.

Format: LOAD filename, [Dn], [Sn], [Vn]

Note: The program with the name filename is loaded from the disk. If the LOAD is successful, any program previously in memory is erased. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

LOCK

Protects a DOS 3.3 disk file against change.

Format: LOCK filename, [Dn], [Sn], [Vn]

Note: Once locked, a file cannot be deleted, changed, or renamed until it is unlocked (see UNLOCK). No program can be saved using the name of the locked file. A locked file is indicated in the disk catalog by an asterisk at the left of the file type. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

OPEN

Prepares a sequential or random-access DOS 3.3 disk text file for accessing.

Format: OPEN filename, [Llength], [Dn], [Sn], [Vn]

Note: If the named file does not exist, DOS 3.3 creates it. If the file is already open, it is closed and then reopened. The Llength option specifies the record length of a random-access file. The record length must be an integer constant between 1 and 32767. If the option is absent, the file is opened as a sequential file. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode. OPEN cannot be used in immediate mode.

POSITION

Moves the DOS 3.3 disk file pointer the specified number of records ahead in its current position.

Format: POSITION filename, [Rfield]

Note: The Rfield option specifies a number of fields (carriage return characters) to be skipped in the file. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode. POSITION cannot be used in immediate mode.

READ

Specifies a DOS 3.3 disk file from which subsequent INPUT and GET commands will obtain data.

Format: READ filename, [Rrecord], [Bbyte]

Note: The Rrecord specifies the record number of a random access file. If that option is absent, the file will be read as a sequential-access file. The Bbyte option specifies a number of bytes (characters) to skip ahead before reading. The numbers following B and R must be integer constants between 0 and 32767. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode. READ cannot be used in immediate mode.

RENAME

Changes the name of a DOS 3.3 disk file without altering the file contents.

Format: RENAME old filename, new filename, [Dn], [Sn], [Vn]

Note: The file named old pathname is found on the disk and its name is changed to new pathname. If the file is open, it is closed (see CLOSE). The file is not affected in any other way. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

RUN

Loads and runs a program form a DOS 3.3 disk.

Format: RUN filename, [Dn], [Sn], [Vn]

Note: The program named filename is loaded from the disk and then run. If the load is successful, any program previously in memory will be erased. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

SAVE

Saves the program currently in memory onto a DOS 3.3 disk.

Format: SAVE filename, [Dn], [Sn], [Vn]

Note: If there is no file as named, a file is created with that name in the language of the current program, and the program currently in memory is saved. If there is a file named filename in the same language as the current program, the contents of that file are erased and the current program is saved in its place. If the filename exists but in a different language or with a different file type, the message FILE TYPE MISMATCH will occur. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

UNLOCK

Unlocks a DOS 3.3 file, permitting it to be changed.

Format: UNLOCK filename, [Dn], [Sn], [Vn]

Note: Once unlocked, a file can be deleted, changed, or renamed. If the file does not exist on drive Dn of slot Sn, the FILE NOT FOUND error message is displayed. If the disk in drive Dn of slot Sn is not volume Vn, the VOLUME MISMATCH error results. Dn, Sn, and Vn can be specified in any order. If Dn or Sn is omitted, the last referenced drive or slot is used. Volume number V0 is used if Vn is absent. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode.

WRITE

Specifies a DOS 3.3 disk file to which subsequent PRINT statements will send output.

Format: WRITE filename, [Rrecord], [Bbyte]

Note: The Rrecord option specifies the record number of a random-access file. If that option is absent, the file will be written to as a sequential-access file. The Bbyte option specifies a number of bytes (characters) to skip ahead before writing. The numbers following R and B must be integer constants between 0 and 32767. This is a DOS 3.3 command, requiring PRINT and CHR$(4) or CONTROL-D in programmed mode. WRITE may not be used in immediate mode.

How to Use ProDOS?

File Types

ProDOS allows far more types than DOS 3.3, allowing 256 major types, with each major type capable of having up to 65536 subtypes. In a BASIC.SYSTEM and similar directory listing, the major type is listed as either a 2-digit hexadecimal value proceeded by a $, or for certain other common types, a 3-letter acronym is used.

Common ProDOS File Type Codes:

  • Abbreviation File Type
  • DIR Directory
  • TXT Human-readable letter, digits, and symbols (ASCII code)
  • BAS Applesoft BASIC programs
  • VAR Applesoft BASIC programs
  • BIN Machine code or data
  • REL Machine code that can be loaded anywhere in memory
  • $Fn User- (programmer-) defined type number n; n is an integer from 1 to 8
  • SYS System program or data

File types are not considered part of the filename, so there can be only one file with a given name, regardless of the type. A sample ProDOS directory listing is shown below:

An Apple IIe ProDOS Catalog

This is the 40-column version generated by using the CAT command. The 80-column version can be viewed by using the CATALOG command. Unlike DOS 3.3, ProDOS allows directories and volume names. Components are separated with the forward slash ‘/’.

File Names

This is a list of general rules for naming a ProDOS file:

  • File names can be up to 15 characters.
  • File names must start with a letter, and can contain letters, digits [0 thru 9] and the period.
  • File names are essentially case insensitive, although they are always displayed as uppercase on disk.

Compatible Systems

ProDOS Versions 1.0 or 1.0.1:

Older Apple IIs with Integer BASIC in ROM or any II with less than 64K RAM can run ProDOS 1.0 or 1.0.1 but cannot use BASIC.SYSTEM, the ProDOS BASIC interpreter.

ProDOS Versions 1.0 thru 1.9:

  • Apple II Plus with 64K RAM
  • Apple IIe, IIe Enhanced, and IIe Platinum
  • Apple IIc, IIc Plus
  • Apple IIgs

ProDOS Version 2.0.3

  • Apple IIe, IIe Enhanced, and IIe Platinum
  • Apple IIc, IIc Plus
  • Apple IIgs

How to Boot ProDOS?

Since ProDOS has no INIT command like DOS 3.3, you have to move the BASIC.SYSTEM and PRODOS files to a disk in order for it to be bootable. Otherwise, you end up with a ProDOS formatted disk that can be used for storage, but does not have an operating system and thus can’t be used as a boot disk.

A bootable ProDOS disk will boot to the command prompt unless you have a program named STARTUP on the disk.

A simple STARTUP program you can type in and save to your new ProDOS disk is:

  • 10 TEXT: HOME
  • 20 PRINT CHR$(4) “CAT”
  • 30 END

After typing in the program, enter SAVE STARTUP. The next time you boot the disk, the above program will run and the disk’s catalog (40 column version) will be displayed.

ProDOS Commands

ProDOS commands are listed below in alphabetical order. Generic terms are used in the statement definitions to clarify what must accompany the DOS statements. Italicized letters like “n” are replaced with the exact wording or value needed for each particular statement.

The following generic terms are used in statement definitions:

TermMeaning
[ ]Brackets indicate that the enclosed parameter is optional. Brackets do not appear in the actual statement.
BbyteThe number of bytes, between 0 and 65535, ahead of the current file pointer position. If the number specified is past the end of a sequential-access file or past the end of a random-access record, an error results.
DnA disk drive number that must be specified as D1 or D2.
FfieldThe number of field, between 0 and 65535, ahead of the current file pointer position. If the number specified is past the end of a sequential-access file or past the end of a random-access record, an error results. A carriage return character marks the end of every field.
lineAny BASIC program line number.
memlocAny memory location specified by an integer constant between 0 and 65535 (decimal) or $0 and $FFFF (hexadecimal). Hexadecimal constants are identified by a dollar sign ($) prefix.
pathnameA full or partial ProDOS pathname, which in combination with the current ProDOS prefix specifies the path to a ProDOS file or directory from the volume directory.
RrecordThe record number in a random-access file.
RfieldSame as Ffield.
SnSlot number for input or output; must be S0, S1, S2, S3, S4, S5, S6, or S7.
TtypeOne of the file type codes.

APPEND

Opens a ProDOS file, positions to the end of the file, and issues a WRITE command.

Format: APPEND pathname, [Ttype], [Llength], [Dn], [Vn]

Note: If the named file does not exist, ProDOS creates the file. If the file is already open, an error occurs. The Ttype option can be used to specify a file type other than text. The Llength option specifies the record length of a random access file. Dn and sn can be specified in any order. If Dn or sn is omitted, the ProDOS prefix specifies the drive and slot. APPEND cannot be used in immediate mode.

BLOAD

Retrieves a binary image from a ProDOS disk and stores it in a specified area of the Apple II memory.

Format: BLOAD pathname, [Amemloc], [Bbyte], [Ememloc], [Ttype], [Dn], [Sn]

Alternate Format: BLOAD pathname, [Amemloc], [Bbyte], [Llength], [Ttype], [Dn], [Sn]

Note: The Amemloc option specifies where in memory to start storing binary image. The Ememloc option specifies the last memory location to fill from the file. The Ttype option specifies the file type. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

BRUN

Retrieves a machine language program from a ProDOS disk, stores it in a specified area of memory, and executes it.

Format: BRUN pathname, [Amemloc], [Bbyte], [Ememloc], [Dn], [Sn]

Alternate Format: BRUN pathname, [Amemloc], [Bbyte], [Llength], [Dn], [Sn]

Note: The file must be type BIN (binary) and must contain a 6502 machine language program. The Amemloc option specifies where in memory to start storing binary image. The Ememloc option specifies the last memory location to fill from the file. The Ttype option specifies the file type. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

BSAVE

Saves part of the Apple II’s memory as a binary image on a ProDOS disk file

Format: BSAVE pathname, Ememloc, [Bbyte], [Ttype], [Dn], [Sn]

Alternate Format: BSAVE pathname, Amemloc, Llength, [Bbyte], [Ttype], [Dn], [Sn]

Note: The Amemloc option specifies the memory address of the first byte at which to start storing the binary image. The Bbyte parameter specifies which byte in the file to start saving at. The Ememloc option specifies the last memory location to fill from the file. In the alternate format, the Llength option tells how many bytes to transfer to the disk. The Ttype option specifies the file type. If not used, the file must be type BIN (binary). Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

CAT

Displays a list 40 characters wide of all files in a specified ProDOS directory.

Format: CAT [pathname], [Dn], [Sn]

Note:

For each file, CAT lists the following (from left to right):

  1. An asterisk if the file is locked
  2. Name
  3. Type
  4. Number of 512-byte blocks used
  5. Last date modified (usually no date)

Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

CATALOG

Displays a list 80 characters wide of all files in a specified ProDOS directory.

Format: CATALOG [pathname], [Dn], [Sn]

For each file, CATALOG lists the following (from left to right):

  1. An asterisk if the file is locked
  2. Name
  3. Type
  4. Number of 512-byte blocks used
  5. Last date modified (usually no date)
  6. Date and time created (usually no date or time)
  7. Number of bytes used, or for random-access files, the number that would be used if every record (from record number 0 to the highest record number in the file) were used.
  8. Loading address of a binary file or record length of a random-access file.

Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

CHAIN

Loads and runs an Applesoft program from a ProDOS disk without clearing the values of any variables or arrays.

Format: CHAIN pathname, [@ line], [Dn], [Sn]

Note: The program specified by pathname is loaded from disk and then run. The @ line option indicates the line number at which the program is started. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

CLOSE

Closes one or all open ProDOS disk files.

Format: CLOSE [pathname]

Note: Closing a file writes anything being held in the file buffer to the disk file and then releases the file buffer. Specifying a pathname closes only the named file. CLOSE without a pathname closes all open files, except a controlling EXEC file (if any). This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

CREATE

Creates a ProDOS file or directory.

Format: CREATE pathname, [Ttype], [Dn], [Sn]

Note: The Ttype parameter specifies the type of the file to create. If it is absent, the directory is created. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

  • (Dash Command)
    Loads and runs a program of any type (Applesoft, machine language, or EXEC) from a ProDOS disk.

Format: – pathname, [Dn], [Sn]

Note: The dash comman does the same thing as a RUN, BRUN, or EXEC command depending on the type of file you name. It works with file types BAS, BIN, TXT, and SYS. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

DELETE

Erases a file from a ProDOS disk.

Format: DELETE pathname, [Dn], [Sn]

Note: The file specified by the pathname is removed from the disk directory. An open or locked file cannot be deleted. If the pathname specifies a directory, the directory must be empty. Dn and Sn can be specified in any order. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

EXEC

Treats a sequential-access ProDOS text file as a substitute for the keyboard.

Format: BSAVEpathname, [Ffield], [Dn], [Sn]

Alternate Format: BSAVE pathname, [Rfield], [Dn], [Sn]

Note: A text file to be used with EXEC consists of some combination of Applesoft commands, Applesoft programs lines, and ProDOS commands. When EXEC is executed, the first line of the specified file is read from the disk. If the first line is a command, it is executed immediately. If it is a program line, it is added to memory, just as if you had entered it directly from the keyboard. If a keyboard INPUT statement is executed while an EXEC file is open, the response is taken from the EXEC file. The Ffield option specifies a number of command lines (carriage return characters) to be skipped from the beginning of the file. The Rfield option does exactly the same thing. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

FLUSH

Writes the contents of one or more ProDOS file buffers to the disk.

Format: FLUSH pathname

Note: Flushing a file forces all characters waiting in the file’s buffer in memory to be written ot the file on disk, and it updates the directory that contains the file. If you specify a file, its buffer is the only one written. If you do not specify a file, the buffer of all open files are written. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

IN#

Switches input to a specified input device.

Format: IN# slot

Additional ProDOS Format: IN# Amemloc

Note: IN# redirects the input of subsequent INPUT or GET statements to a device attached to on of the numbered accessory card slots. The additional ProDOS IN# format also redirects input of subsequent INPUT and GET statements. Instead of a slot number, it specifies the memory location of a program that controls an input device (called a device driver). The following table lists the memory locations of standard ProDOS input device driver programs:

NumberMemory LocationDevice
047182*Display screen
149408Slot 1 (serial or parallel adapter)
249664Slot 2 (serial or parallel adapter)
349920Slot 3 or IIe Auxiliary slot (80-column adapter)
450176Slot 4 (Mouse – commands only)
550432Slot 5 (Disk drives)
650688Slot 6 (Disk drives)
750944Slot 7

*64795 if ProDOS is disabled

LOAD

Loads an Applesoft program from a ProDOS disk.

Format: LOAD pathname, [Dn], [Sn]

Note: The named program is loaded from the disk. The program replaces any program already in memory. All variables and arrays are cleared and any open files are closed. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

LOCK

Protects a ProDOS disk file or directory against changes.

Format: LOCK pathname, [Dn], [Sn]

Note: Once locked a file cannot be deleted, changed, or renamed until it is unlocked (see UNLOCK). Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

OPEN

Prepares a ProDOS disk file for accessing.

Format: OPEN pathname, [Llength], [Ttype], [Dn], [Sn]

Note: If the named file does not exist, ProDOS creates it. As many as eight files can be opened at once. Note that the EXEC command opens a file automatically and closes the file when it’s done. The CLOSE command closes the file. The Llength option specifies the record length of a random access file. The Ttype option can be used to specify a file type other than text. OPEN cannot be used in immediate mode. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

POSITION

Moves the ProDOS disk file pointer the specified number of fields ahead of its current position.

Format: POSITION pathname, [Ffield]

Alternate Format: POSITION pathname, [Rfield]

Note: The Ffield option specifies a number of fields (carriage return characters) to be skipped in the file. The Rfield option does exactly the same thing and is compatible with the DOS 3.3 operating system. POSITION cannot be used in immediate mode. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

PR#

Used to switch output to a specified output drive.

  • General Format: PR# slot
  • ProDOS Additional Format 1: PR# [A memloc]
  • ProDOS Additional Format 2: PR# [A memloc], slot

Note: The general PR# format is the most common. It redirects the output of subsequent PRINT statements to a device attached to one of the the numbered accessory card slots. The first additional ProDOS PR# format also redirects output of subsequent PRINT statements. Instead of a device number, it specifies the memory location of a program that controls an output device (called a device driver). The table below lists the memory locations of standard ProDOS output device driver programs.

NumberMemory LocationDevice
047179*Display screen
149408Slot 1 (serial or parallel adapter)
249664Slot 2 (serial or parallel adapter)
349920Slot 3 or IIe Auxiliary slot (80-column adapter)
450176Slot 4 (Mouse – commands only)
550432Slot 5 (Disk drives)
650688Slot 6 (Disk drives)
750944Slot 7

*65008 if ProDOS is disabled

The second additional ProDOS PR# format does not redirect output of subsequent PRINT statements. It only assigns the memory location of a device driver program to one of the device numbers. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

READ

Switches to input from a ProDOS disk file.

Format: READ pathname, [Rrecord], [Ffield], [Bbyte]

Note: After a READ statement is executed, all INPUT and GET statements take characters form the named file, staring at the optional record number (random-access files only). The next ProDOS command, including CHR$(4) disables the READ command. The Llength option specifies the record length of a random access file. The Ffield option specifies a number of fields (carriage return characters) to be skipped before reading. The Bbyte option specifies a number of bytes (characters) to skip ahead before reading. READ cannot be used in immediate mode. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

RENAME

Changes the name of a ProDOS disk file without altering the file’s contents.

Format: RENAME old pathname, new pathname, [Dn], [Vn]

Note: Both the old pathname and the new pathname must be in the same directory. RENAME cannot move a file from one directory to another; use the startup program on the SYSTEM MASTER disk to do that. The file cannot be locked or open. Duplicate file names are not allowed in the same directory. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

RESTORE

Reads a set of Applesoft variables and values from a ProDOS disk file.

Format: RESTORE pathname, [Dn], [Vn]

Note: RESTORE clears all existing variables and their values from memory and replaces them with variables and values unpacked from the specified disk file. The file must be type VAR (See also STORE). Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

RUN

Loads and runs an Applesoft program from a ProDOS disk.

Format: RUN @line, [Dn], [Vn]

Note: The named program is loaded from the disk and then run. The program replaces any program already in memory. All variables and arrays are cleared, and any open files are closed. The @line option, if present, specifies a line number at which the program is started. If the specified line number does not exist, the next higher line number is used. Dn and Sn can be specified in any order. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

SAVE

Saves an Applesoft program onto a ProDOS disk.

Format: SAVE pathname, [Dn], [Vn]

Note: If there is no file as named, a file is created and the program currently in memory is saved to it. If a file of type BAS exists as named, the program is saved in it. If a file of a different type exists as named, an error message occurs. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

STORE

Saves all variables and their current values in a ProDOS disk file.

Format: STORE pathname, [Dn], [Vn]

Note: The variables and values are saved in a special packed format on the named file. STORE also cleans up the string storage area of memory (like FRE) before writing to the disk. (See also RESTORE.) If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

UNLOCK

Unlocks a ProDOS disk file or directory, permitting it to be changed.

Format: UNLOCK pathname, [Dn], [Vn]

Note: Once unlocked, a file can be deleted, changed, or renamed. No asterisk precedes the name of an unlocked file in a disk directory. If Dn or Sn is omitted, the ProDOS prefix specifies the drive and slot. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

WRITE

Switches output to a ProDOS disk file.

Format: WRITE pathname, [Rrecord], [Ffield], [Bbyte]

Note: After a WRITE statement is executed, all PRINT statements send characters to the named file, starting at the optional record number (random-access files only). Other characters, including error messages, that would normally appear on the screen also go to the disk file. However, the question mark or prompt message displayed by an INPUT statement is not sent to the disk file. The next ProDOS command, including CHR$(4), disables the WRITE command. The Ffield option specifies a number of fields (carriage return characters) to be skipped before writing. The Bbyte option specifies a number of bytes (characters) to skip ahead before writing. WRITE cannot be used in immediate mode. This is a ProDOS command, requiring PRINT and CHR$(4) in programmed mode.

Poole, Lon, Martin McNiff, and Steven Cook. Apple II User’s Guide. 3rd ed. Berkeley: Osborne/McGraw-Hill, 1985.

Leave a Comment