## 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