beneath-apple-dos/ch02.txt

131 lines
6.2 KiB
Plaintext

## CHAPTER 2 - THE EVOLUTION OF DOS
Since its introduction, Apple DOS has gone through three major versions. All of
these versions look very much the same on the surface. All commands supported
by DOS 3.3 are also supported in 3.2 and 3.1. The need for additional versions
has been more to fix errors in DOS and to make minor enhancements than to
provide additional functionality. Only DOS 3.3 has offered any major
improvement in function; an increase in the number of sectors that will fit on a
track from 13 to 16.
DOS 3 - 29 June 1978
DOS 3.1 - 20 July 1978
The first release of DOS was apparently a victim of a rush at Apple to introduce
the DISK II. As such, it had a number of bugs. With the movement towards the
APPLE II PLUS and the introduction of the AUTOSTART ROM, a new release was
needed.
DOS 3.2 - 16 February 1979
Although DOS 3.2 embodied more changes from its predecessor than any other
release of DOS, 90% of the basic structure of DOS 3.1 was retained. The major
differences between DOS 3.1 and 3.2 and later versions of DOS are listed below:
- NOMON C,I,O is the initial default under DOS 3.2. MON C,I,O was the default
under DOS 3.1.
- Input prompts (>,],*) are echoed when MON O is in effect, not under MON I as
was the case under 3.1.
- When a DOS command was entered from the keyboard, DOS executed it and then
passed a blank followed by a carriage return to BASIC under 3.1. Under 3.2
only a carriage return is passed.
- Under 3.2, certain commands may not be entered from the keyboard but may only
be used within a BASIC program (READ, WRITE, POSITION, OPEN, APPEND).
- Under 3.2, when LOADing an APPLESOFT program, DOS automatically converts from
APPLESOFT ROM format to APPLESOFT RAM format if the RAM version of BASIC is in
use and vice versa.
- DOS 3.1 could not read lower case characters from a text file; DOS 3.2 can.
- Some DOS commands are allowed to create a new file, others will not. Under
DOS 3.1, any reference to a file that didn't exist, caused it to be created.
This forced DOS 3.1 to then delete it if a new file was not desired. (LOAD XYZ
under 3.1 if XYZ did not exist, created XYZ, deleted XYZ, and then printed the
file not found error message.) Under 3.2, OPEN is allowed to create a file if
one does not exist, but LOAD may not.
- Under 3.1, exiting to the monitor required that the monitor status register
location ($48) be set to zero before reentering DOS. Under DOS 3.2 this is no
longer necessary.
- The Read/Write-Track/Sector (RWTS) section of DOS disables interrupts while it
is executing. Under 3.1, RWTS could be interrupted by a peripheral while
writing to a disk, destroying the disk.
- The default for the B (byte offset) keyword is 0 under 3.2.
- DOS was reassembled for 3.2 causing most of its interesting locations and
routines to move slightly. This played havoc with user programs and utilities
which had DOS addresses built into them.
- Additional file types (beyond T, I, A, and B) are defined within DOS 3.2,
although no commands yet support them. The new types are S, R, a new A, and a
new B. R has subsequently been used by the DOS TOOLKIT for relocatable object
module assembler files. At present, no other use is made of these extra file
types.
- Support was added under 3.2 for the AUTOSTART ROM.
- All files open when a disk full condition occurs are closed by DOS 3.2.
- As with each new release of DOS, several new programs were added to the master
diskette for 3.2. Among these was UPDATE 3.2, a replacement for MASTER.CREATE,
the utility for creating master diskettes. UPDATE 3.2 converts a slave into a
master and allows the HELLO file to be renamed.
DOS 3.2.1 - 31 July 1979
DOS 3.2.1 was essentially a "maintenance release" of DOS 3.2. Minor patches
were made to RWTS and the COPY program to correct a timing problem when a dual
drive copy was done. Additional delays were added following a switch between
drives.
DOS 3.3 - 25 August 1980
Introduced in mid 1980 as a hardware/software upgrade from DOS 3.2.1, the DOS
3.3 package includes new bootstrap and state ROM chips for the disk controller
card which provide the capability to format, read, and write a diskette with 16
sectors. (These ROMs are the same ones used with the LANGUAGE SYSTEM.) This
improvement represents almost a 25% increase in available disk space over the
old 13 sector format. Also included in the 3.3 package is an updated version of
the DOS manual, a BASICS diskette (for 13 sector boots), and a master diskette.
Although the RWTS portion of DOS was almost totally rewritten, the rest of DOS
was not reassembled and only received a few patches:
- The initial DOS bootstrap loader was moved to $800 under 3.3. It was at $300
under 3.2. In addition, as stored on the diskette (track 0 sector 0) it is
nibbilized in the same way as all other sectors under 3.3.
- A bug in APPEND which caused it to position improperly if the file was a
multiple of 256 bytes long was fixed under 3.3.
- A VERIFY command is internally executed after every SAVE or BSAVE under 3.3.
- All 4 bytes are used in the Volume Table Of Contents (VTOC) free sector bit
map when keeping track of free sectors. This allows DOS to handle up to 32
sectors per track. Of course, RWTS will only handle 16 sectors due to hardware
limitations.
- If a LANGUAGE CARD is present, DOS stores a zero on it at $E000 during
bootstrap to force the HELLO program on the master diskette to reload BASIC.
- DOS is read into memory from the top down (backwards) under 3.3 rather than
the bottom up. Its image is still stored in the same order on the diskette
(tracks 0, 1, and 2), however.
- Additional programs added to the master diskette under 3.3 include FID, a
generalized file utility which allows individual files or groups of files to
be copied, MUFFIN, a conversion copy routine to allow 3.2 files to be moved to
16 sector 3.3 diskettes, BOOT 13, a program which will boot a 13 sector
diskette, and a new COPY program which will also support single drive copies.
- Under 3.2, speed differences in some drives prevented their use together with
the DOS COPY program. Because the COPY program was rewritten under 3.3, that
restriction no longer applies.
.nx ch3.1