CONTENTS
CHAPTER 1 An Introduction to GS/OS and ProDOS 8
Apple II Operating Systems -A History 2
Comparing ProDOS 8 with DOS 3.3 4
Important Features of ProDOS 8 and BASIC.SYSTEM 5
Comparing GS/OS with ProDOS 8 10
CHAPTER 2 Disk Volumes and File Management 13
Naming Files 13
Directories and Subdirectories 14
Prefixes 16
Fundamental File-Handling Concepts 17
Opening a File 18 Reading and Writing a File 19 Closing a File 19
GS/OS Disk Caching 19
ProDOS File Management 21
Formatting the Disk Medium 21
Disk Volumes and Disk Drives 22
Disk Volume Block Usage 22
The Volume Bit Map 23
Volume Directories and Subdirectories 25
The Directory Header 26 Standard Directory Entries 26 File Type
Codes 26 File Access Codes 35 Time and Date Formats 37
Organizing File Data 37
Indexing Schemes 38 Extended Files 39 Sparse Files 41
The READ.BLOCK Program 43
CHAPTER 3 Loading and Installing GS/OS and ProDOS 8 49
The Boot Record 49
The ProDOS 8 Boot 50
ProDOS 8 Memory Usage 51
Bank-Switched RAM 51 Auxiliary Memory 53 Page Zero Usage 54
z Page Two Usage 54 z Page Three Usage 54
ix
The ProDOS 8 System Global Page: $BF0~$BFFF 55
The System Bit Map 55 z The Machine Identification Byte 56 z Source
Listing of the ProDOS 8 Global Page 57
GS/OS System Disks 57
The GS/OS Boot 65
GS/OS Memory Usage 67
CHAPTER 4 GS/OS and ProDOS 8 Commands 71
Using ProDOS 8 MLI Commands 72
Using GS/OS Commands 76
Stack-Based Calling Method 80
GS/OS and ProDOS 8 Error Handling 80
Command Descriptions 82
Class 0 and Class 1 Input Strings 82 z Class 0 and Class 1 Output Buffers 87
z Prefixes 88 z Access Code 88 z Time and Date 88 z File Type Code 89
z ProDOS 16 Considerations 89 z ALLOC - INTERRUPT 90
BeginSession 92 z BindInt 93 z ChangePath 95 z ClearBacknp 97
Close, CLOSE 99 z Create, CREATE 101 z DControl 105
DEALLOC - INTERRUPT 107z Destroy, DESTROY 109 DInlo 112z
DRead 116 z DStatus 118 z DWrite 120 z EndSession 122
EraseDisk 123 z ExpandPath 125 z Flush, FLUSH 126 z Format 128
FSTSpecific 130 z GetBootVol 132 z GETBUF 134
GetDevNumber 136 z GetDirEntry 138 z GetEOF GET_EOF 143
GetFileInfo, GET - FILE - INFO 145 z GetFSTInlo 149
GetLevel 151z GetMark, GET - MARK 152z GetName 154
GetPrefix GET_PREFIX 156 z GetSysPrefs 158 z GETTIME 159
GetVersion 160 z NewLine, NEWLINE 162 z Null 164
ON - LINE 165 z Open, OPEN 168 z OSShutdown 172 z Quit,
QUIT 173z Read, READ 182z READ-BLOCK 185z RENAME 188
z ResetCache 190 SessionStatus 191 z SET - BUF 192 z SetEOF,
SET - EOF 194 z SetFileInfo SET_FILE - INFO 197 z SetLevel 202
z SetMark, SET - MARK 203 z SetPrefix, SET - PREFIX 205
SetSysPrefs 208 z UnbindInt 209 z Volume 210 z Write, WRITE 213
WRITE BLOCK 216
CHAPTER 5 System Programs 219
The Structure of a GS/OS System Program 220
Entry Conditions 220
The Structure of a ProDOS 8 System Program 222
x
The BASIC.SYSTEM Interpreter 225
The BASIC.SYSTEM Commands 226 File Management Commands 228
1 File Loading and Execution Commands 232 File Input/Output
Commands 233 Miscellaneous Commands 235
BASIC.SYSTEM and the Input and Output Links 236
Reserving Space Above the File Buffers 237
BASIC.SYSTEM Page Three Usage 238
The BASIC.SYSTEM Global Page: $BE~BEFF 240
The GOSYSTEM Subroutine 240
BASIC.SYSTEM Error Handling 248
Executing Disk Command Strings from Assembly Language 248
Adding Commands to BASIC.SYSTEM 250
The ONLINE Command 255
CHAPTER 6 Interrupts 265
Common Interrupt Sources 266
Reacting to Interrupts 266
Interrupts and ProDOS 8 268
Interrupts During MLI Commands 274
Interrupts and GS/OS 276
GS/OS Interrupt Handling 281 Handling Interrupts When the System
Is Busy 282
CHAPTER 7 Disk Devices 287
How GS/OS and ProDOS 8 Keep Track of Disk Devices 288
GS/OS Device Scan 288 ProDOS 8 Device Scan 288
How GS/OS and ProDOS 8 Identif' Disk Devices 291
Extended Protocol for Disk Controller Cards 292
Special Cases 294
Communicating with a ProDOS 8 Disk Driver 294
The SmartPort Controller 295
Using SmartPort Commands 297 Status Command 298z Control
Command 300
The ProDOS 8 RAMdisk: The /RAM Volume 301
Characteristics of the /AAM Volume 301 Removing and Reinstalling
/RAM 303
Writing a ProDOS 8 Disk Driver 305
Ki
CHAPTER 8 Clocks 317
How GS/OS and ProDOS 8 Read the Time and Date 318
How ProDOS 8 Identifies a Clock Card 320
Writing and Installing a ProDOS 8 Clock Driver 321
Time/Date Utility Programs 322
An Applesofr Time and Date Variable 322 Setting the Time and Date
on a Clockless Apple 327
CHAPTER 9 GS/OS Character Devices 329
GS/OS Commands for Character Devices 329
Keyboard Input 330
The Input Port 332 UIR Editing 334 Terminator Characters 335
Video Output 336
Control Commands 337 Multiple Windows 337
Device Commands 338
DControl Subcommands 338 DStatus Subcommands 342
Console Driver Programming Example 343
APPENDIX I Using Assemblers 353
Merlin 8/16 353
APW Assembler 354
APPENDIX II ProDOS Blocks and DOS 3.3 Sectors 357
APPENDIX III Bibliography 359
GS/OS and ProDOS 8 Reference Books 359
Apple II Technical Reference Books 359
65816 Assembly-Language Books 360
APPENDIX IV The Program Disk 361
The DISK.MAP Program 362
The PROTIME Program 362
The PROTYPE Program 363
The SMARTPORT Program 364
xii