[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
New csa2 FAQs: F002DOSMM (Part 1 of 2)
Apple II DOS and ProDOS Mini-Manual
Csa2 FAQs-on-Ground file: FxxxDOSMM.txt
This material compiled by the Ground Apple II site, 1997.
It may be freely distributed.
Note: This is a pure Text file which has no Font, Color, etc.
formatting. To correctly view tables and diagrams on a super-res
display, use a mono-spaced Font such as CoPilot or PCMononspaced.
____________________________
001- What is a "DOS"?
002- What DOS's are available on Apple II computers?
003- Are there any faster better versions of DOS 3.3?
004- What commands are available in DOS 3.3?
005- How do I use DOS commands from the keyboard? a program?
006- How do I use variables in a DOS command?
007- How do I create new DOS 3.3 diskettes?
008- How much storage space is on a 5.25" diskette?
009- Can I format a DOS 3.3 diskette for just data storage?
010- What is the "Volume Table of Contents" or "VTOC"?
011- Can I assign names to my DOS 3.3 diskettes?
012- What does it mean to "Boot" a disk?
013- What file types does DOS 3.3 have
014- What do the entries in a DOS 3.3 Catalog display mean?
015- Re. DOS 3.3 file names: How long? What characters are legal?
016- How can I use DOS 3.3 to read/write sectors from machine code?
017- How many 'official' versions of DOS 3.3 are there?
018- What information is included in the VTOC?
019- What information is included in a DOS 3.3 Catalog sector?
020- How does DOS 3.3 remember which sectors are used?
021- What are the formats of DOS 3.3's main file types?
022- How can I know a DOS 3.3 prgm is safe to run from hard disk?
023- What are some good DOS 3.3 references?
024- What is ProDOS?
025- What are ProDOS's major features?
026- Which Apple II's can run which versions of ProDOS?
027- How can I create bootable ProDOS diskettes?
028- How do I make a ProDOS disk that will start BASIC?
029- What is the maximum size of a ProDOS volume?
030- How do I LOAD, SAVE, etc. files under ProDOS?
031- What is a "pathname"?
032- What is the default volume and folder when ProDOS boots?
033- How can I set default volume and folder under ProDOS?
034- How can I discover the name of the current default volume?
035- How do I create a folder?
036- How can I access ProDOS routines from machine language?
037- How can I convert DOS 3.3 wares to run under ProDOS?
038- How can I modify ProDOS to do BLOADs to Text Page 1?
039- How can I boot ProDOS on my Franklin computer?
040- What are some good ProDOS references?
From: Rubywand
001- What is a "DOS"?
"DOS" means "Disk Operating System". A DOS is a collection of
machine language routines and data which lets a computer Read and Write
information to/from disk. A DOS also includes commands, such as SAVE and
LOAD, which you can use to create and access files on disk.
Apple II DOS, Commodore 64 DOS, and the DOS used on PC's are all
called "DOS"; but, they are different systems. Their commands are
similar, sometimes identical, because what users want to do with disks
is about the same whatever the computer. However, the way each DOS
arranges and keeps track of data on disk is very different. You will
not, for example, be able to read files from a C-64 diskette on your
Apple II running under DOS 3.3.
--------------------
002- What DOS's are available on Apple II computers?
DOS 3.3 is the first DOS to be widely used on Apple II computers.
Many programs were written to use DOS 3.3 commands and saved on DOS 3.3
diskettes. Apple 'officially' replaced DOS 3.3 with ProDOS back in the
early '80's. However, DOS 3.3 continues to be popular with II users.
Another Apple II DOS is the one introduced with Apple Pascal.
Compared to DOS 3.3 or ProDOS, the Apple Pascal DOS is a very limited,
cumbersome operating system.
-------------------
003- DOS 3.3 seems kind of slow. Are there any faster
better versions of DOS 3.3?
Yes. Today, most "DOS 3.3 users" do not actually use DOS 3.3. Long
ago, Beagle Bros introduced patches which resulted in much better speed,
freed-up extra disk space, and added a CATALOG command which shows
number of Free Sectors. Their ProntoDOS or some modification of it is,
for practical purposes, the "current version" of DOS 3.3.
ES DOS ][ adds a few mods to ProntoDOS. CATALOG shows Free Sectors
and Number of Tracks and it scrolls the entire Catalog (scrolling
stopped by pressing any key) instead of stopping when the screen is
full. ES DOS ][ also lets you use the semi-colon as a terminating
'wildcard' character.
Other popular, higher speed versions of DOS 3.3 include David DOS
and Diversi-DOS; and, there are several small, special-purpose versions
of DOS 3.3. For example, one game maker used RDOS to save space and to
make its diskettes harder to copy.
-----------------------
004- What commands are available in DOS 3.3?
To get very far with "DOS 3.3" you will need the DOS Manual. This
is especially true when it comes to using TEXT files. Other good sources
of DOS 3.3 info include _Beneath Apple DOS_ and _Apple II User's Guide_.
For now, the following is a quickie guide to most Apple II DOS 3.3
commands:
LOAD NARF- loads a BASIC file named NARF.
SAVE NARF- saves current BASIC program in memory as file named NARF.
DELETE NARF - deletes file named NARF
CATALOG - lists contents of diskette to screen
RENAME NARF, NEWNARF - renames file NARF to NEWNARF
RUN NARF- loads and starts a BASIC file named NARF.
BLOAD NARF.PICTURE, A$2000 - loads in a binary file named NARF.PICTURE
starting at address $2000.
note: $2000 is a hexadecimal number ($2000 = 8192 in decimal). DOS
commands can use hex or decimal numbers.
BSAVE NARF, A$300, L$7F - saves $7F bytes of memory starting at address
$300 as a binary file named NARF. (BSAVE NARF, A768, L127 uses decimal
numbers to do the same thing.)
note: The above command statement illustrates typical DOS syntax ...
BSAVE-- the DOS command
NARF-- the file name (the space between the command and file name is
not a requirement; BSAVENARF is okay)
,-- a comma to separate file name from parms which follow
A-- means an Address follows
$300-- the address in hex from which you want to start saving bytes (=
768). Again, spaces do not matter; A768, A 768, A $ 300 are all okay
,-- a comma to separate one parm from another
L-- means a Length follows
$7F-- the length in hex (= 127); this is the number of bytes to be
saved
The command statement says Save $7F bytes, starting at address $300, to
a file named "NARF". NARF will have the bytes found at addresses $300
through $37E.
note: The order of parms following a file name does not matter.
BRUN NARF.DISP, A$1000 - loads in a binary file named NARF.DISP starting
at address $1000 and starts executing machine instructions at address
$1000
LOCK NARF- locks file NARF (indicated by * in a CATALOG). LOCKed files
cannot be deleted, over-written, etc.
UNLOCK NARF - cancels LOCKed status of NARF.
VERIFY NARF - uses checksums to verify that NARF is not a damaged file
MON C, I, O - tells DOS to display Commands, Inputs from disk, Outputs
to disk. You can specify one, two, or all three (e.g. MON C, O etc.).
NOMON C, I, O - cancels all MON requests. NOMON I cancels just the "I"
request.
MAXFILES 7 - sets the number of file buffers to 7. (Upon booting DOS,
the default for the MAXFILES value is 3.)
PR#1 - sets the destination for Apple outputs to the device in Slot 1
(usually a printer). PR# 3 sets it to Slot 3, etc.. PR# 0 sets the
destination back to the display screen.
PR#6 - normally, boots the diskette in Drive 1, Slot 6.
IN# 6 - sets the source for Apple inputs to the device in Slot 6.
IN# 0 - sets the source for Apple inputs to the keyboard (default).
INT - (integer) puts system into Integer BASIC if it is present.
FP - (floating point) puts system into standard Applesoft BASIC.
OPEN NARFOO - prepares to read or write a TEXT file named NARFOO.
READ NARFOO - tells DOS that INPUT and GET statements will obtain
characters from a TEXT file named NARFOO.
WRITE NARFOO - tells DOS that PRINTed characters will go to a TEXT file
named NARFOO.
CLOSE NARFOO - used to terminate access to a TEXT file named NARFOO.
Just CLOSE terminates access to all OPENed TEXT files.
EXEC NARFGO - tells DOS to execute the BASIC and DOS commands found in a
TEXT file named NARFGO
The above TEXT file commands handle 'normal' sequential TEXT files. DOS
can also OPEN, READ, WRITE, ... random access TEXT files. (See DOS
manual.)
Most DOS commands also let you specify Drive and/or Slot. For example
CATALOG, D2 lists the contents of the diskette in Drive 2 to screen.
SAVE NARF,S5,D2 saves NARF to Drive 2 in Slot 5.
NOTE --> Using Drive or Slot parms in a DOS command sets the default
Drive or Slot. So, after CATALOG, D2, a plain LOAD or SAVE will access
Drive 2.
--------------------
005- How do I use DOS commands from the keyboard? ... from
a program?
To use a DOS command from the keyboard, type it in. (A few commands
can be issued only from a program.) To use a DOS command in a program
enclose it in quotes preceded by PRINT CHR$(4). For example:
100 PRINT CHR$(4) "BLOAD NARF, A$2000"
-------------------------
006- How do I use variables, say for file length, in a
DOS command?
Use variables in a command this way:
120 PRINT CHR$(4) "BSAVE NARF, A$2000, L"; NB
Line 120 says that the Length of NARF is the value of variable NB. NB is
used here to represent the number of bytes (in decimal) to be saved.
--------------------------
007- How do I create new DOS 3.3 diskettes?
One of the best features of DOS 3.3 is that any bootable DOS
diskette can create other bootable diskettes.
INIT HELLO - formats one side of the diskette in the currently active
drive, adds DOS, and saves the current program as HELLO.
The program that's automatically placed on the new diskette is the
one in memory when INIT is executed. It is called the "greeting
program" or "hello program" because it is the program which will be run
when the diskette is booted. Usually, the program is named HELLO; but,
you can INIT HOWDY, or any name you like. The hello program can be very
simple, such as ...
100 PRINT CHR$(4) "CATALOG"
110 END
You are free to load in and change the hello program or even delete
it, just like any other. The one restriction is that once a diskette is
INITed, the name of the hello program is fixed for that diskette unless
you use a utility (like Copy II+) to make a change. This is why it's a
good idea to stick with the name HELLO. You will always know what the
hello program's name is.
Once a diskette is INITed it can be used to store your programs and
data files.
-----------------------
008- How much storage space is on a newly
INITialized 5.25" diskette?
A standard DOS 3.3 diskette has 35 Tracks. Each Track contains 16
256-byte Sectors. This gives 35 x 16 x 256 = 143360 bytes per side.
Current versions of DOS 3.3-- e.g. ProntoDOS, etc.-- use Track 0 and
Track 1 plus a sector on Track 2 for DOS; and, Track 17 is used for
holding the Catalog of files and other disk information. This leaves
roughly 130k bytes per side free for your HELLO program and other files.
By the way, when it comes to the way it is stored on-disk, DOS 3.3
is not like the PC's MSDOS or Apple's ProDOS. DOS 3.3 is 'hidden' on
reserved tracks, mainly Tracks 0 and 1. There is no "DOS 3.3" file which
will show up on a CATALOG.
----------------------
009- On my PC I can FORMAT diskettes with or without adding the
operating system. Can I format a DOS 3.3 diskette for just
data storage? -- i.e. without adding DOS or a HELLO program?
Yes. DOS 3.3 does not have a plain "FORMAT" command; but, you can
use utilities such as Copy II+ to easily format a diskette without
adding DOS or a HELLO program.
A format will create 35 Tracks of 16 256-byte sectors each, verify
that each Track is good, and create a 'Contents' and disk info record
called the "Volume Table of Contents" or "VTOC".
----------------------
010- What is the "Volume Table of Contents" or "VTOC"?
The VTOC is a Sector which stores such basic information as Number
of Tracks, Sectors per Track, DOS version, ..., and the 'map' of
used/un-used Sectors. DOS 3.3 writes the VTOC at Track 17, Sector 0.
(For more details on VTOC content see Question 018.)
----------------------
011- Can I assign names to my DOS 3.3 diskettes?
DOS 3.3 has no way to name a diskette "NARF", "DISK 100", "DATA
DISK ", etc. which DOS will recognize. You can, however, 'name' a
diskette by giving it a Volume Number in the range 1-255.
Volume Number is set at the time a diskette is initialized. For
example ...
INIT HELLO, V19
INITs a diskette as Volume 19. If no number is specified, the default
Volume Number used by INIT is 254.
Several DOS commands can specify a Volume Number in order to decide
whether a diskette is the right one for some application.
LOAD NARF, D2, V5 ... for example, will not load NARF from Drive 2
unless the diskette's Volume Number is 5.
A few early pieces of commercial software used Volume numbering;
and, new users often like to Volume number their diskettes. In practice,
this turns out to be a bad idea. A diskette with any Volume Number
except the default (254) is often difficult to work with via standard
utilities. Also, once a diskette is INITed for a certain Volume Number,
changing the number is difficult because Volume Number is embedded in
each Sector. (i.e. You'll end up having to copy every file to another
diskette and, then, re-INITing the source diskette to the new Volume
Number.)
Besides, there's an easy way to give descriptive names to your DOS
3.3 diskettes which will not interfer with normal access. Just write the
name ("GAMES DISK ONE", or whatever) to a Text file named, say,
"DISK.ID".
DOS 3.3 will not know about the name or show it in a CATALOG.
However, your programs will be able to find out the name by just reading
DISK.ID.
-----------------------------
012- What does it mean to "Boot" a disk?
BOOT comes from the idea of 'pulling yourself up by your
bootstraps'. The Apple II disk controller ROM has just enough smarts to
load-in DOS's Bootstrap Loader from Track 0, Sector 0 (it comes in at
address $800 ...).
The Loader loads in a still smarter, bigger routine from several
sectors of Track 0. This routine is the one which loads in the rest of
DOS, moves it to the proper place in memory, and ends up going to DOS's
Cold Start routine. Finally, the hello program is loaded and executed.
--------------------------------
013- What file types does DOS 3.3 have and how is file
type information saved in the Catalog?
In a DOS 3.3 Catalog sector, the third byte in each file's entry
tells the type of the file:
Byte Value* File Type
00 Text
01 Integer BASIC
02 AppleSoft BASIC
04 Binary
08 S type
10 R: Relocatable object module
20 new A type
40 new B type
*DOS 3.3 sets bit 7 of the byte if the file is locked. (e.g. 84 --> a
locked Binary file)
Type R files show up in just a few applications. An R file begins
with 6 bytes which a "loader" routine can use to tell the Target
location of file contents, How many bytes to move, and Source location
to move from.
Although S, new A, and new B are included, no official application
was defined for them and no DOS commands were created to make any
special use of these files.
---------------------
from David Empson
There was an "R" type relocating loader included with the toolkit
for use with BASIC programs and relocatable routines being loaded into
upper memory.
"S" was used by some programs for a generic image file, or something
that was not likely to be touchable with normal code.
The LISA assembler used the second "B" type for its source files.
It had a patched version of DOS that changed the file type list to read
"LARSBAIT", so the source files appeared in the catalog as "L" if you
booted LISA, or "B" if you booted a normal disk.
The "B", "A", "R" and "S" special file types cannot be accessed by
BASIC programs (unless you patch DOS) - commands are only provided for
dealing with "B", "A", "I" and "T" files.
The four special types can only be accessed using direct calls to
the File Manager.
___________________________
from Dave Althoff, Jr.
014- What do the entries in a DOS 3.3 Catalog display mean?
A standard DOS 3.3 Catalog display looks something like this:
DISK VOLUME 254
*A 002 HELLO
B 033 TETRA/SOFT LOGO.BIN
T 142 DAVE'S LIST OF DOS COMMANDS
I 002 INTEGER BASIC PROGRAM
^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|| ||| ||||||||||||||||||||||||||||||
|| ||| |___________________________________Filename
|| |_______________________________________File length (in Sectors)
||_________________________________________File type
|________________________________________* means the file is locked
-----------------------------
015- How long can a DOS 3.3 file name be and what characters
can it include?
DOS 3.3 filenames may be up to 30 characters long, and must conform
to the following restrictions:
a. The first character must have an ASCII code value greater than 63.
This excludes numerals, SPACE, and most punctuation. The "@" character
is allowed as well as letters, and some special chars such as "]", "~",
"_", and a few others.
b. Commas and colons may not be used at all. Apart from these
restrictions, anything goes. All kinds of characters, including
uppercase, lowercase, numbers, symbols, and CONTROL characters can be
used after the first character.
____________________________
from Andy McFadden
016- How can I use DOS 3.3 to read and write sectors from
machine code?
DOS 3.3 works like this:
JSR $3E3 ;get address of RWTS IOB (low in Y, high in A)
(you can either change the stuff that Y/A point to, or set up
your own IOB and skip the call to $3E3)
JSR $3D9 ;call RWTS (with IOB address in Y/A)
The IOB (Input/Output Block) is small but non-trivial. Here's what
Beneath Apple DOS says:
$00 table type (always $01)
$01 slot *16
$02 drive (1 or 2)
$03 volume expected ($00 for any)
$04 track ($0-$22)
$05 sector ($0-$0f)
$06-07 address (lo/hi) of the Device Characteristics Table
$08-09 address (lo/hi) of the 256 byte buffer for read/write
$0A not used
$0B byte count for partial sector ($00 for 256 bytes)
$0C command code (0=seek, 1=read, 2=write, 4=format)
$0D return code (carry set on error):
$00 = no errors
$08 = error during initialization
$10 = write protect error
$20 = volume mismatch error
$40 = drive error
$80 = read error (obsolete)
$0E volume number of last access (must be initialized)
$0F slot number of last access *16 (must be initialized)
$10 drive number of last access (must be initialized)
Device characteristics table:
$00 device type (should be $00 for DiskII)
$01 phases per track (should be $01 for DiskII)
$02-03 motor on time count (should be $EFD8 for DiskII)
NOTE: RWTS uses zero-page location $48, which is also used by the Apple
monitor to hold the P-register value. Location $48 should be set to
zero after each call to RWTS.
________________
From: Edhel Iaur, Esq.
017- How many 'official' versions of DOS 3.3 are there
and how can I tell which is running?
According to The Dostalk Scrapbook, there are 3 official (as in
Apple made 'em, I think) versions of DOS 3.3. PEEK (46725) supposedly
tells you which is running:
165:oldest
186:better
182:latest
I remember one had something to do with the way text files are
handled.
---------------------
From: Dave Althoff
The third version then would be the ][e release which contains yet
another APPEND patch, and an additional bit of code which shuts off the
80-column firmware during boot. That version comes on a new System
Master which uses the LOADER.OBJ0 program to fast-load INTBASIC (or
FPBASIC), and a revised "HELLO" program which displays the "MAKE SURE
CAPS LOCK IS DOWN" reminder on a ][e.
_____________________
From: Neil Parker
018- What information is included in the VTOC?
On track 17 ($11 in hexadecimal) sector 0, you will find the Volume
Table of Contents (VTOC). This is the key sector from which all searches
start out.
Format of VTOC:
Byte Meaning
---- -------
$00 Unused (always $04 on my disks)
$01 Track number of first catalog sector
$02 Sector number of first catalog sector
$03 DOS version number ($03 for DOS 3.3)
$04-05 Unused
$06 Volume number ($01-$FE)
$07-26 Unused
$27 Number of track/sector pairs in a track/sector list (always
$7A on normal disks)
$28-2F Unused
$30 Last track where sectors were allocated
$31 Direction of allocation ($01=inward, $FF=outward)
$32-33 Unused
$34 Number of tracks per disk (normally $23)
$35 Number of sectors per track (normally $10)
$36-37 Number of bytes per sector (normally $0100)
$38-3B Bit map for track 0
$3C-3F Bit map for track 1
....
$C0-C3 Bit map for track $22
$C4-FF Unused on normal disks (may contain extra bit maps on disks
with more than 35 tracks)
Bit map format:
Byte 0 Byte 1 Byte 2 Byte 3
FEDC BA98 7654 3210 ........ ........
A 1-bit in any bit position indicates that the corresponding sector
is free. Bytes 2 and 3 in the bit map are always $00 on normal disks.
Bytes 1 and 2 in the VTOC point to the first catalog sector. On
most disks, the first catalog sector is track $11 sector $0F, and
subsequent catalog sectors occupy track $11 sector $0E, track $11 sector
$0D, and so on down to track $11 sector $01. However, DOS 3.3 doesn't
really care where the catalog sectors are or how many there are, as long
as there is a pointer to the first one in the VTOC. (Note, however,
that some utilities, such as Copy II Plus, DO care, and will get lost if
the catalog isn't in its normal position and exactly 15 sectors long.)
---------------------------------
019- What information is included in a DOS 3.3 Catalog
sector and how is it organized?
Each catalog sector contains a pointer to the next catalog sector,
and seven file entries. The format of a catalog sector is as follows:
Byte Meaning
---- -------
$00 Unused
$01 Track number of next catalog sector ($00 if no more)
$02 Sector number of next catalog sector ($00 if no more)
$03-0A Unused
$0B-2D First file entry
$2E-50 Second file entry
$51-73 Third file entry
$74-96 Fourth file entry
$97-B9 Fifth file entry
$BA-DC Sixth file entry
$DD-FF Seventh file entry
Each file entry looks like this:
Byte Meaning
---- -------
$00 Track number of this file's first track/sector list
$01 Sector number of this file's first track/sector list
$02 File type:
Bit Meaning
--- -------
7 0=unlocked, 1=locked
6-0 File type ($00=Text, $01=Integer, $02=Applesoft,
$04=Binary, $08=S, $10=Relocatable, $20=A, $40=B)
$03-20 File name (high bits set; padded with blanks on right)
$21-22 Number of sectors allocated to this file
----------------------------
020- How does DOS 3.3 remember which sectors
are used to store a file?
Every file has a set of one or more "track/sector lists". A
track/sector list lists sectors (by track and sector number) which make
up the file. Each track/sector list points to up to 122 data sectors;
if the file is too long for one track/sector list, a second one is
allocated, and a pointer to it is stored in the first one. Likewise, if
the file is too long for two track/sector lists, a third is allocated,
and so on.
Note that DOS 3.3 supports "sparse" files...there may 0/0 pairs in
the track/sector list indicating parts of the file that were never
written. When DOS 3.3 is reading a file and encounters a 0/0 pair in the
track/sector list, it passes a buffer full of binary zeros back to the
calling program.
A track/sector list looks like this:
Byte Meaning
---- -------
$00 Unused
$01 Track number of next track/sector list sect ($00 if no more)
$02 Sector number of next track/sector list sect ($00 if no more)
$03-04 Unused
$05-06 Sector number in file of first sector number represented in
this track/sector list sector (0 ($0000) for first T/S
sector, 122 ($007A) for second, 244 ($00F4) for third, etc.)
$07-0B Unused
$0C Track number of 0th (or 122nd, or 244th...) sector
$0D Sector number of 0th (or 122nd, or 244th...) sector
$0E Track number of 1st (or 123rd, or 245th...) sector
$0F Sector number of 1st (or 123rd, or 245th...) sector
....
$FE Track number of 121st (or 243rd, or 365th...) sector
$FF Sector number of 121st (or 243rd, or 365th...) sector
---------------------------
021- What are the formats of DOS 3.3's main file types?
A machine-language program is free to store whatever it wants in
any file, but most programs (including DOS 3.3's own command
interpreter) expect the data in each type of file to conform to certain
formats:
A sequential text file consists of lines of ASCII text separated by
carriage returns, and ending with a $00 byte. The high bit of each
character (except the $00 at the end) is set.
A random-access file may be thought of as a set of "mini sequential
access files" separated by strings of $00 bytes. Each "mini-file"
begins at a file position which is a multiple of the random-access
record length.
(Note that sequential and random-access text files share the same
file type. It is up to individual programs to know whether their data
files are sequential or random-access.)
Applesoft and Integer BASIC files have the following format:
Byte Meaning
---- -------
$00-01 Length of tokenized BASIC program
$02-end Tokenized BASIC program
Binary files have the following format:
Byte Meaning
---- -------
$00-01 Load address
$02-03 Length of binary image
$04-end Binary image
A Relocatable file contains the image of a program, followed by a
relocation dictionary containing the information necessary to relocate
the program to an arbitrary memory location. The file format is as
follows:
Byte Meaning
---- -------
$00-01 Original program load address
$02-03 File length (program image + relocation dictionary)
$04-05 Length of program image alone (not including relocation
dictionary)
$06-xx Program image
$xx-yy Relocation dictionary
(The format of the relocation dictionary is a bit too complex to
describe here. I can provide details if anybody's interested.)
The other three file types (S, A, and B) have never been
consistantly defined by anybody. Several programs use these file types
(especially type S) to store their private data files, but there doesn't
seem to be any agreement on their internal format.
For further information I recommend the book "Beneath Apple DOS" by
Don Worth and Pieter Lechner.
P.S. By the way, all two-byte fields in the above are stored in normal
Apple II byte order, low byte first.