# DISK TIPS +amp; TRICKS TUTORIAL PART 1 INTRODUCTION TO DOS

```

:::::::::::::::::::::::::::::::::::::::
::*:::::::::::::::::::::::::::::::::*::
:::				    :::
:::   DISK TIPS & TRICKS TUTORIAL   :::
:::		PART 1		    :::
:::	  INTRODUCTION TO DOS	    :::
:::				    :::
:::	    BY CANDY APPLE	    :::
:::				    :::
::*:::::::::::::::::::::::::::::::::*::
:::::::::::::::::::::::::::::::::::::::

*:::::::::::::::::::::::::::::::*
::	    DISTRIBUTED BY	  ::
:: CRYSTAL CASTLE 313/856-3804 ::
*:::::::::::::::::::::::::::::::*

THIS ARTICLE CONTAINS AN OVERVIEW OF HOW A NORMAL DISK IS FORMATTED AND DIS-
CUSSES BRIEFLY THE TWO WAYS OF READING A DISK.	IT IS WRITTEN FOR THOSE WHO
AREN'T FAMILIAR WITH DOS OR FOR THOSE WHO WANT A SHORT REVIEW ON DISK FORMAT-
TING, ETC.

FIRST LET'S START OFF WITH A LITTLE BACKGROUND ON HOW DOS FORMATS A DISK.
WHEN A DISK IS 'INIT'IALIZED BY DOS, IT WILL DIVIDE IT INTO 35 CONCENTRIC
TRACKS.  IF YOU HAVE DOS 3.3, THEN EACH TRACK WILL BE DIVIDED INTO 16 BLOCKS
CALLED SECTORS, WHEREAS DOS 3.2 WILL CREATE 13 SECTORS.  ON EACH OF THESE
SECTORS ARE AN ADDRESS MARK AND A DATA MARK.

THE ADDRESS MARK WILL TELL DOS WHAT TRACK AND SECTOR IT IS CURRENTLY READ-
ING.  WITHIN THIS ADDRESS MARK, THE VOL- UME, TRACK, SECTOR, AND CHECKSUM INFOR-
MATION CAN BE FOUND.  THE DATA MARKS SURROUNDS THE ACTUAL DATA AND TELLS DOS
WHERE THE DATA BEGINS AND ENDS.  IT ALSO CONTAINS A CHECKSUM THAT'S USED TO VER-
IFY THE ACCURACY OF THE DATA.

THE TRACKS ARE NUMBERED FROM \$00 (0- DEC.) TO \$22 (34-DEC.); WHEREAS THE
SECTORS ARE NUMBERED FROM \$00 (0) TO \$0F (15).	THE DOS PROGRAM USES TRACKS \$00
THRU TRACKS \$02 (A TOTAL OF 3 TRACKS;0,1,2).

THE DOS ALLOWS THE APPLE TO MANIPULATE DATA ON A DISKETTE.  WITHIN THE DOS
PRO- GRAM ARE ALL OF THE COMMANDS THAT CON- TROL THE DISKDRIVE (I.E.:  CATALOG,
INIT, LOAD...) AND THE ERROR MESSAGES WHICH YOU HAVE PROBABLY SEEN BY NOW.

ON THE DISK CONTROLLER CARD THAT CON- NECTS THE APPLE TO YOUR DISK DRIVE IS A
SMALL PROGRAM, SO THAT WHEN YOU BOOT A DISK, IT WILL TELL THE DISK DRIVE TO READ
TRACK \$00(0).  THE PROGRAM ON TRK \$00, SCT \$00 CONTAINS THE INFORMATION TO READ
IN SECTORS \$00-\$09 ON TRACK \$00.  THIS PROGRAM ON SECTORS \$00-\$09 WILL READ IN
THE REMAINING INFORMATION ON TRK \$00-\$02.  IN OTHER WORDS, THE APPLE HAS NOW
LOADED THE DOS, AND DOS WILL NOW TAKE OVER AND RUN THE PROGRAM YOU HAVE
INITIALIZED THE DISK WITH.

AND DIRECTORY THAT'S LOCATED ON TRACK \$11 (17).  THE VTOC OR "BIT MAP" WILL SHOW
WHICH SECTORS ARE USED AND WHICH ARE FREE.  THE DIRECTORY BEGINS ON SECTOR
\$0F(15) AND CONTINUES ON DOWN TO SECTOR \$01(19).  THE VTOC AND DIRCECTORY ARE
USED BY DOS WHEN YOU SAVE OR DELETE A FILE.

WITHIN THE DIRECTORY, YOU WILL FIND A LIST OF ALL THE FILES FOUND ON THE DISK.
EACH ENTRY CONTAINS A POINTER TO THE TRACK/SECTOR LIST, FILE-LOCKED AND
FILE-TYPE CODE, FILE-NAME AND FILE-SIZE WHICH WE'LL GO INTO MORE DETAIL LATER.
ACTUALLY THE TRK/SCT LIST IS A LIST OF THE TRK/SCT PAIRS THAT STORE THAT FILE.
THAT'S WHY SAVING A BLANK FILE ALWAYS TAKES 2 SECTORS BECAUSE ONE IS USED FOR
THE BLANK FILE AND ONE IS FOR THE TRK/ SCT LIST.

BECAUSE THE CATALOG TRACK IS IN THE CENTER OF THE DISK, THE ARM NEVER HAS TO
TRAVEL MORE THEN 17 TRACKS TO GET TO THE CATALOG TRACK.  THEN AS FILES ARE
ALLOCATED ON THE DISK, THEY WILL OCCUPY THE TRACKS JUST ABOVE THE CATALOG FIRST
UNTIL IT REACHES TR \$22(34), THEN IT WILL START USING THE TRACKS JUST BELOW THE
CATALOG \$10(16), THEN TRACK \$0F(15) ETC, MOVING TOWARDS THE DOS IMAGE TRACKS.

ANOTHER THING THAT'S INTERESTING TO KNOW IS THAT WHEN YOU 'SAVE' OR 'BSAVE' A
PROGRAM, DOS WILL TOTALLY ALTER THE PROGRAM CODE BEFORE IT IS WRITTEN TO THE
DISK.  THEN WHEN YOU 'LOAD' OR 'RUN' THAT PROGRAM, DOS WILL CHANGE IT BACK AGAIN
TO ITS ORIGINAL FORM, ALTHOUGH THE USER NEVER NOTICES THIS PROCESS.

YOU MIGHT WONDER WHY DOS GOES TO ALL THIS EXTRA TROUBLE?  ACTUALLY THE AP-
PLE'S HARDWARE (AND THAT OF OTHER MA- CHINES) HAS SOME LIMITATIONS WHICH RE-
STRICT THE RANGE OF BYTE VALUES THAT CAN BE ALLOWED TO PASS BETWEEN THE MA-
CHINE AND ITS DISK DRIVES.

IF YOU TYPE "CALL -151" AND LIST A RANGE OF MEMORY (SAY 'F800.FFFF'), YOU WILL
NOTICE THAT ALMOSE EVERY BYTE VALUE FROM \$00 TO \$FF CAN BE SEEN SCROLLING BY.
EVERYTHING THAT'S STORED IN RAM SUCH AS PROGRAMS, TEXT FILES, ETC.., IS
REPRESENTED BY A BLOCK OF HEX VALUES IN THIS RANGE.  THIS MEANS THAT THE APPLE
HAS 256 DIFFERENT BYTE VALUES TO USE FOR REPRESENTING INFOR- MATION IN MEMORY
(THERE ARE 256 DIFFER- ENT HEX NUMBERS IN THE RANGE OF \$00 TO \$FF).

UNFORTUNATELY, WHEN THE APPLE COMMUNI- CATES WITH THE DISK DRIVES, IT CAN'T
HANDLE SUCH A LARGE RANGE OF VALUES DUE TO HARDWARE CONSTRAINTS.  DOS 3.3 CAN
ONLY SEND TO THE DISK OR RECIEVE FROM IT THE VALUES \$96 TO \$FF (150 TO 256).
EVEN SOME OF THESE BYTES WITHIN THAT RANGE ARE ILLEGAL BECAUSE THEY VIOLATE
APPLE HARDWARE RULES, AND OTHERS ARE RESERVED FOR SPECIAL DISK USE.  ACTUALLY
DOS 3.3 HAS TO REPRESENT ALL 256 DIF- FERENT VALUES THAT APPEAR IN RAM USING
ONLY 64 VALUES ON THE DISK.  EARLIER VERSIONS OF DOS HAD TO MAKE DO WITH A
SMALLER RANGE OF DISK BYTES.

THERE ARE 2 WAYS OF READING A DISK:

1) A RAW NIBBLE DUMP

"RAW NIBBLES" REFERS TO INFORMATION EX- ACTLY AS IT IS REPRESENTED ON DISK -
IN THE SPECIALLY ENCODED FORM DESCRIBED ABOVE.

NIBBLE DUMP YOU WILL NOTICE (ON A DOS 3.3 DISK) THAT THE HEX NUMBERS WILL BE
BETWEEN THE VALUES \$96 TO \$FF.	THIS IS HARDLY RECOGNIZABLE AS PROGRAM OR TEXT
FILE CODE.  YOU WILL ALSO SEE DOZENS OF HEX NUMBERS WHICH HELP DOS DO ITS JOB IN
GETTING INFORMATION ON AND OFF THE DISK.  THESE "DOS MARKS" WILL TELL YOU A
GREAT DEAL ABOUT THE DISK AND WILL BE COVERED IN A LATER TUTORIAL.

THE OTHER WAY A DISK IS READ IS THROUGH A SUBROUTINE IN DOS CALLED "READ AND
WRITE TRACKS AND SECTORS" OR OTHERWISE KNOWN AS RWTS.  THIS ROUTINE PUTS DATA
(WRITES) ON THE DISK AND GETS IT BACK (READS).	ONE OF ITS IMPORTANT JOBS IS TO
TRANSLATE THE RAW NIBBLES FROM THE DISK INTO INTELLIGIBLE CODE FOR APPLE ROMS
AND PROGRAMMERS.

THE RWTS WILL ALSO FILTER OUT THE DOS MARKS REFEREED TO EARLIER, BECAUSE ONCE
THE PROGRAM IS LOADED INTO MEMORY, THE DATA MARKS SERVE NO PURPOSE AND SO THEY
WHEN DOS LOADS AND RUNS ANY PROGRAM, IT WILL AUTOMATICALLY PERFORM AN RWTS READ
TO GET THE PROGRAM INTO MEMORY, WHEREAS A RAW NIBBLE DUMP COMES DIRECTLY FROM
THE DISK AND BYPASSES RWTS AND DOS ENTIRELY.

IN THE NEXT TUTORIAL, WE'LL GET DOWN TO BUSINESS AND START EXAMINING THE VTOC
AND ITS INNER WORKINGS.

INCLUDED BELOW IS A HEX, BINARY, DECI- MAL CHART WHICH MIGHT PROVE USEFUL TO
YOU IN LATER TUTORIALS.

HEX	 BINARY   DECIMAL
0   0000 0000    0
1   0000 0001    1
2   0000 0010    2
3   0000 0011    3
4   0000 0100    4
5   0000 0101    5
6   0000 0110    6
7   0000 0111    7
8   0000 1000    8
9   0000 1001    9
A   0000 1010   10
B   0000 1011   11
C   0000 1100   12
D   0000 1101   13
E   0000 1110   14
F   0000 1111   15
10   0001 0000   16
20   0010 0000   32
3F   0011 1111   63
40   0100 0000   64
7F   0111 1111  127
80   1000 0000  128
AA   1010 1010  170
C0   1100 0000  192
E8   1110 1000  232
FE   1111 1110  254
FF   1111 1111  255

=======================================
:::::::::::::::::::::::::::::::::::::::
::*:::::::::::::::::::::::::::::::::*::
:::				    :::
:::   DISK TIPS & TRICKS TUTORIAL   :::
:::		PART 2		    :::
:::	CLOSER LOOK AT THE VTOC     :::
:::				    :::
:::	    BY CANDY APPLE	    :::
:::				    :::
::*:::::::::::::::::::::::::::::::::*::
:::::::::::::::::::::::::::::::::::::::

*:::::::::::::::::::::::::::::::*
::	    DISTRIBUTED BY	  ::
:: CRYSTAL CASTLE 313/856-3804 ::
*:::::::::::::::::::::::::::::::*

THIS TUTORIAL WILL REPRESENT THE FIRST LEG OF YOUR JOURNEY TOWARDS DISK
EXPERTISE.  LET IT BE KNOW N THAT THE DOS MOD- IFICATIONS EXPLAINED BELOW AND
HEREAFTE R ONLY APPLY TO A STANDARD DOS 3.3 SLAVE DISK UNLESS OTHE RWISE STATED.
A DISK WITH ANY OTHER TYPE OF DOS SUCH AS DOS 3.2 OR A FAST DOS WILL HAVE
LOCATIONS WHERE MANY OF T HESE PATCHES WON'T WORK AND COULD EVEN RUIN A DISK.
IN FA CT IT'S BEST TO MAKE THESE PATCHES ON A SCRATCH DISK UN TIL THINGS WORK
PROPERLY.  THE AUTHOR IS NOT RESPONSIBL E FOR DAMAGE DONE TO ANY DISKETTE.

TO CONTINUE WITH THIS TUTORIAL, YOU WIL L NEED A DOS 3.3 SLAVE DISK AND A
TRACK AND SECTOR EDITOR PROG RAM SUCH AS DISK EDIT, THE INSPECTOR, TRICKY DICK,
OR THE SECT OR EDITOR ON COPY II+, ETC.  ALSO, SO WE CAN WORK AND UNDERSTA ND ON
THE SAME LEVEL, MAKE A 'FID' COPY OF THE APPLE SYSTEM M ASTER DISKETTE AND LEAVE
IT UNPROTECTED.  NOW LETS GET STA RTED.

--- ------ ----- -- --------

USING YOUR DISK EDIT PROGRAM, READ IN T RACK \$11(17), SECTOR \$00(0).	YOU ARE
NOW LOOKING AT THE VTO C WHICH WILL SOONER OR LATER IN YOUR LIFE GET OVERWRITTEN
WITH WORRY ABOUT FIXING A CLOBBERED VTOC RIG HT NOW BUT IN A LATER TUTORIAL
WE'LL DISCUSS THIS.

LET'S TAKE A CLOSER LOOK AT THE FIRST L INE OF DATA STARTING WITH BYTE \$00.
IT SHOULD LOOK SIMILIAR TO THE FOLLOWING:

BYTE  TRACK \$11   SECTOR\$00

00:  04 11 0F 03 00 00 FE 00

THE FIRST NUMBER "04" DOESN'T HAVE ANY FUNCTIONS, SO IGNORE IT.  THE NEXT TWO
NUMBERS GIVE US THE F IRST CATALOG ENTRIES.  THE SECOND BYTE REPRESENTS THE
TRACK NU MBER AND THE NEXT IS THE SECTOR NUMBER.  IN OTHER WORDS, IT' S TELLING
US THAT THE CATALOG STARTS ON TRACK \$11, SECTOR \$0F (ON A DOS 3.2 DISK, IT
STARTS AT SECTOR \$0C).	THE FOURTH B YTE, "03" TELLS US THAT THE DOS VERSION IS
3.3 (A "2" = 3.2).  THE FIFTH AND SIXTH BYTES AREN'T USED.  THE "FE" GIVES US T
HE DISK VOLUME NUMBER WHICH IN THIS CASE IS 254 DECIMAL.

THE NEXT SEVERAL ROWS CONTAIN ZEROS BUT WHEN WE GET TO BYTE "\$27", NOTICE THE
"7A".  THIS BYTE INDI CATES THE MAXIMUM NUMBER OF TRACK/SECTOR ADDRESSES THAT A
TRACK AND SECTOR LIST IS ALLOWED TO HOLD, SO \$7A = 122 ( DECIMAL) OF 256 BYTE
SECTORS IN A TRACK/SECTOR LIST.

STARTING WITH BYTE \$30, YOU WILL SEE TH E FOLLOWING:

BYTE \$30....12 01 00 00 23 10 00 01

THE FIRST NUMBER, "12", INDICATES THAT TRACK \$12 WAS THE LAST TRACK ALLOCATED
BY DOS FOR FILE STORAGE .  THE NEXT NUMBER MAY BE DIFFERENT, SINCE A SMALL
VARIATION I N THE WAY FID WROTE OUT THE FILES COULD ALTER THE SELECTION OF THE
NEXT TRACK USED.  IF YOU HAVE "01", THAT TELLS US THAT TH E NEXT TRACK THAT DOS
WILL ATTEMPT TO WRITE TO IS \$12 + \$01 = \$13.  INSTEAD OF A "1", YOU MIGHT SEE AN
"FF".  THIS TELLS DOS TO SEARCH IN A NEGATIVE DIRECTION, FOR EXAMPLE 12 - 1, FOR
THE NEXT AVAILABLE TRACK.  A HEX NUMBER WHOSE HIGH BIT IS SET OR WHOSE VALUE IS
\$80 OR GREATER IS TAKEN AS A NEGATIVE N UMBER BY THE SYSTEM.

NOW GO TO THE "23 10".  THESE BYTES INDI CATE THAT DOS HAS FOR- MATTED \$23(35)
TRACKS ON THE DISK AND T HAT EACH TRACK CONTAINS \$10(16) SECTORS.  THE "00 01"
ALSO INDI CATE THAT THERE ARE \$100(256) BYTES PER SECTOR.  THIS IS WR ITTEN IN
LO/HI BYTE FORMAT - SO REVERSE THEM TO GET \$100.

BIT MAPS
--- ----

NOW COMES THE "BIT MAP" FIELD WHICH IS THE MOST IMPORTANT AREA OF THE VTOC.
STARTING WITH BYTE \$38 AN D EXTENDING UP TO BYTE \$C8 ARE THE BIT MAPS.	THESE
BIT M APS TELL DOS WHICH TRACKS AND SECTORS HAVE NOT BEEN WRITTE N ON AND WHICH
ARE AVAILABLE FOR FILE STORAGE.  SO DOS DOE SN'T CLOBBER THE PROGRAMS ON THE
DISK, IT WILL LOOK AT T HE BIT MAP FIELD EACH TIME YOU SAVE ANY NEW INFORMATION
ON TH E DISK.  IF YOU'RE LOOKING AT THE "FID"ED SYSTEM MASTER, Y OU WILL BE
SEEING MOSTLY ZEROS.  SINCE THIS IS A LITTLE D IFFICULT TO LEARN ON TRY THE
FOLLOWING:

(1) BREAK OUT OF YOUR DISK EDIT PROGR AM

(2) PLACE AN UNINITIALIZED DISK IN TH E DRIVE

(3) TYPE "CALL -151" TO GO INTO THE M ONITOR

(4) TYPE "BEFE:24"

(5) NOW "INIT HELLO" ON THE UNINITIAL IZED DISK

(6) REBOOT YOUR DISK EDIT PROGRAM AND READ IN TRACK \$11, SECTOR \$00 OF THE
TEST DISK YOU J UST CREATED.

YOU WILL NOW NOTICE SEVERAL DOZEN "FF"S ' THAT WEREN'T PRESENT ON THE SYSTEM
MASTER DISK.  NOW LET'S L OOK AT THE ROWS STARTING WITH BYTE \$38 WHICH IS THE
FIRST BYTE O F THE BIT MAP.

WHOEVER WROTE DOS, EMPLOYED A SIMPLE WA Y OF RECORDING THE STATUS (FULL OR
EMPTY) OF EVERY SINGLE SECTOR ON THE DISK AND SQUEEZING THIS INFO INTO AS LITTLE
SPAC E AS POSSIBLE.  IT'S DONE BY ASSIGNING A TWO BYTE "MAP" TO E ACH TRACK AND
THEN STRUCTURING DOS TO VARY THE VALUES OF T HE MAP WHICH INDICATES THE TRACKS
AVAILABLE SECTORS.

THE ILLUSTRATION BELOW SHOWS HOW THE MA PS ARE LINKED TO THEIR RESPECTIVE
TRACKS:

BYTE# TRK \$00	    TRK \$01
38:  !00 00! 00 00 !00 00! 00 00
TRK \$02	    TRK \$03
40:  !00 00! 00 00 !FF FF! 00 00
TRK \$04	    TRK \$05
48:  !FF FF! 00 00 !FF FF! 00 00
:
:
:   TRK \$1E	    TRK \$1F
B0:  !FF FF! 00 00 !00 00! 00 00

THE FIRST "00 00" STARTING WITH BYTE \$3 8 IS THE BIT MAP FOR TRACK \$00, THE
NEXT "00 00" ARE SKIPPED AND THE THIRD BYTE PAIR ARE ASSIGNED TO \$01, THIS
METHOD C ONTINUES ON THROUGH THE BIT MAP FIELD.

THIS APPEARS AS SEEMINGLY MEANINGLESS D ATA ABOUT EACH SECTOR'S STATUS BUT
REMEMBER THAT ALL HEX BYTES ARE COMPOSED OF 8 INDIVIDUAL BITS.	IF YOU ARE
WON'T GO INTO IT HERE BECAUSE THERE ARE NUMEROUS ARTICLES AND BOOKS, ETC., ON
THIS SUBJECT.  ANYWAY, IF WE A LLOT 2 BYTES FOR EACH TRACKS BIT MAP, WE THEN
HAVE 16 BITS TO PLAY WITH.

ISN'T IT A COINCIDENCE THAT EACH TRACK ALSO CONTAINS 16 SEC- TORS.  AND WHAT'S
EVEN MORE CONVENIENT IS THAT EACH BIT CAN HAVE 1 OR 2 VALUES - A '0' OR A '1'.
I F A SINGLE BIT IS ASSIGNED TO EACH SECTOR IN A TRACK, WE CAN SHOW THAT A
SECTOR IS FREE BY SETTING ITS BIT TO A '1', WH EREAS A '0' WOULD TELL US AND DOS
THAT IT CONTAINS DATA.	LOOK AT THE EXAMPLE BELOW:

SECTOR #'S : FDECBA98   76543210
BIT VALUES : 00111111	11111111
BYTE VALUES:	3F	   FF

THE '0'S' IN SECTORS \$0F AND \$0E TELLS US THAT THESE ARE USED; THE '1'S' IN
SECTORS \$0D-\$00 TELLS US T HAT THEY ARE FREE.  THE APPLE WILL AUTOMATICALLY
TRANSLATE THE BINARY NUMBER, '00111111' INTO THE HEX NUMBER '3F', AN D
'11111111' INTO 'FF', AND THE BIT MAP WOULD SHOW UP AS '3F FF '.  REFER TO THE
HEX, BINARY, DECIMAL TABLE IN THE FIRST TUTO RIAL.

IF YOU'VE BEEN FOLLOWING ALONG IN THE E XAMPLE ON THE TEST DISK YOU SHOULD SEE
THESE 2 BYTES STARTING A T BYTE \$80.  THIS TELLS US THAT THE '3F FF' REPRESENTS
THE STAT US OF THE SECTORS IN TRACK \$12(18).  THIS IS WHERE THE HELLO PROGRAM
WAS LOCATED WHEN YOU INITIALIZED THIS TEST DISK.  S O IT OCCUPIES SECTORS \$0E
AND \$0F.  WHENEVER DOS WRITES DATA ON A TRACK, IT ALWAYS STARTS WITH THE HIGHEST
AVAILABLE SECTO R AND THEN WORKS DOWN.

A GLANCE AT THE TABLE IN THE FIRST TUTO RIAL SHOWS US THAT IF YOU WANT TO SHOW
THAT ALL THE 16 SECTOR S ON A GIVEN TRACK ARE FREE, THEN ALL OF ITS 16 BITS ARE
SET T O '1', GIVING US AN 'FF FF' BYTE-PAIR.  IF YOU WANTED TO RE SERVE AN
ENTIRE TRACK FOR SOMETHING, THEN PLACE '00 00' INTO ITS BIT MAP.

NOW THAT WE'RE BECOMING FAMILIAR WITH D OS AND ITS VTOC, NEXT TIME WE'LL START
PERFORMING A FEW TIPS & TRICKS.

```

E-Mail Fredric L. Rice / The Skeptic Tank