view defs/os9defs.n09 @ 9:3008afb231a2

Checked in Pascal 2.0
author roug
date Fri, 05 Apr 2002 08:23:28 +0000
parents 6641a883d6b0
children
line wrap: on
line source



 nam os9defs
 ttl OS-9 System Symbol Definitions

***
* System Service Request Code Definitions
 org 0
F$Link   rmb 1 Link to Module
F$Load   rmb 1 Load Module from File
F$UnLink rmb 1 Unlink Module
F$Fork   rmb 1 Start New Process
F$Wait   rmb 1 Wait for Child Process to Die
F$Chain  rmb 1 Chain Process to New Module
F$Exit   rmb 1 Terminate Process
F$Mem    rmb 1 Set Memory Size
F$Send   rmb 1 Send Signal to Process
F$Icpt   rmb 1 Set Signal Intercept
F$Sleep  rmb 1 Suspend Process
F$SSpd   rmb 1 Suspend Process
F$ID     rmb 1 Return Process ID
F$SPrior rmb 1 Set Process Priority
F$SSWI   rmb 1 Set Software Interrupt
F$PErr   rmb 1 Print Error
F$PrsNam rmb 1 Parse Pathlist Name
F$CmpNam rmb 1 Compare Two Names
F$SchBit rmb 1 Search Bit Map
F$AllBit rmb 1 Allocate in Bit Map
F$DelBit rmb 1 Deallocate in Bit Map
F$Time   rmb 1 Get Current Time
F$STime  rmb 1 Set Current Time
F$CRC    rmb 1 Generate CRC
F$GPrDsc rmb 1 get Process Descriptor copy
F$GBlkMp rmb 1 get System Block Map copy
F$GModDr rmb 1 get Module Directory copy
F$CpyMem rmb 1 Copy External Memory
F$SUser  rmb 1 Set User ID number
F$UnLoad rmb 1 Unlink Module by name
F$Alarm  rmb 1 Color Computer Alarm Call (system wide)
         rmb 2 reserved - For overlap of other systems
F$NMLink rmb 1 Color Computer NonMapping Link
F$NMLoad rmb 1 Color Computer NonMapping Load

 org $25
F$TPS    rmb 1 Return System's Ticks Per Second
F$TimAlm rmb 1 COCO individual process alarm call

 org $27 Beginning of System Reserved Calls
F$VIRQ   rmb 1 Install/Delete Virtual IRQ
F$SRqMem rmb 1 System Memory Request
F$SRtMem rmb 1 System Memory Return
F$IRQ    rmb 1 Enter IRQ Polling Table
F$IOQu   rmb 1 Enter I/O Queue
F$AProc  rmb 1 Enter Active Process Queue
F$NProc  rmb 1 Start Next Process
F$VModul rmb 1 Validate Module
F$Find64 rmb 1 Find Process/Path Descriptor
F$All64  rmb 1 Allocate Process/Path Descriptor
F$Ret64  rmb 1 Return Process/Path Descriptor
F$SSvc   rmb 1 Service Request Table Initialization
F$IODel  rmb 1 Delete I/O Module
F$SLink  rmb 1 System Link
F$Boot   rmb 1 Bootstrap System
F$BtMem  rmb 1 Bootstrap Memory Request
F$GProcP rmb 1 Get Process ptr
F$Move   rmb 1 Move Data (low bound first)
F$AllRAM rmb 1 Allocate RAM blocks
F$AllImg rmb 1 Allocate Image RAM blocks
F$DelImg rmb 1 Deallocate Image RAM blocks
F$SetImg rmb 1 Set Process DAT Image
F$FreeLB rmb 1 Get Free Low Block
F$FreeHB rmb 1 Get Free High Block
F$AllTsk rmb 1 Allocate Process Task number
F$DelTsk rmb 1 Deallocate Process Task number
F$SetTsk rmb 1 Set Process Task DAT registers
F$ResTsk rmb 1 Reserve Task number
F$RelTsk rmb 1 Release Task number
F$DATLog rmb 1 Convert DAT Block/Offset to Logical
F$DATTmp rmb 1 Make temporary DAT image (Obsolete)
F$LDAXY  rmb 1 Load A [X,[Y]]
F$LDAXYP rmb 1 Load A [X+,[Y]]
F$LDDDXY rmb 1 Load D [D+X,[Y]]
F$LDABX  rmb 1 Load A from 0,X in task B
F$STABX  rmb 1 Store A at 0,X in task B
F$AllPrc rmb 1 Allocate Process Descriptor
F$DelPrc rmb 1 Deallocate Process Descriptor
F$ELink  rmb 1 Link using Module Directory Entry
F$FModul rmb 1 Find Module Directory Entry
F$MapBlk rmb 1 Map Specific Block
F$ClrBlk rmb 1 Clear Specific Block
F$DelRAM rmb 1 Deallocate RAM blocks
F$GCMDir rmb 1 Pack module directory
F$AlHRam rmb 1 Allocate HIGH RAM Blocks

         rmb 1 not used

* NitrOS9 additions
F$CRCMod rmb 1 CRC mode, toggle or report current status

*
* Numbers $70 through $7F are reserved for user definitions
 org $70
F$RegDmp rmb 1 Ron Lammardo's debugging register dump call
F$NVRAM rmb 1 Non Volatile RAM (RTC battery backed static) read/write
 rmb $80-. reserved for user definition

***
* I/O Service Request Code Definitions
 org $80
I$Attach rmb 1 Attach I/O Device
I$Detach rmb 1 Detach I/O Device
I$Dup rmb 1 Duplicate Path
I$Create rmb 1 Create New File
I$Open rmb 1 Open Existing File
I$MakDir rmb 1 Make Directory File
I$ChgDir rmb 1 Change Default Directory
I$Delete rmb 1 Delete File
I$Seek rmb 1 Change Current Position
I$Read rmb 1 Read Data
I$Write rmb 1 Write Data
I$ReadLn rmb 1 Read Line of ASCII Data
I$WritLn rmb 1 Write Line of ASCII Data
I$GetStt rmb 1 Get Path Status
I$SetStt rmb 1 Set Path Status
I$Close rmb 1 Close Path
I$DeletX rmb 1 Delete from current exec dir

***
* File Access Modes
READ. equ %00000001
WRITE. equ %00000010
UPDAT. equ READ.+WRITE.
EXEC. equ %00000100
PREAD. equ %00001000
PWRIT. equ %00010000
PEXEC. equ %00100000
SHARE. equ %01000000
DIR. equ %10000000
ISIZ. equ %00100000

***
* Signal Codes
 org 0
S$Kill rmb 1 Non-Interceptable Abort
S$Wake rmb 1 Wake-up Sleeping Process
S$Abort rmb 1 Keyboard Abort
S$Intrpt rmb 1 Keyboard Interrupt
S$Window rmb 1 Window Change
S$Alarm rmb 1 COCO individual process' alarm signal

***
* Status Codes for GetStat/PutStat
 org 0
SS.Opt   rmb 1 Read/Write PD Options
SS.Ready rmb 1 Check for Device Ready
SS.Size  rmb 1 Read/Write File Size
SS.Reset rmb 1 Device Restore
SS.WTrk  rmb 1 Device Write Track
SS.Pos   rmb 1 Get File Current Position
SS.EOF   rmb 1 Test for End of File
SS.Link  rmb 1 Link to Status routines
SS.ULink rmb 1 Unlink Status routines
SS.Feed  rmb 1 issue form feed
SS.Frz   rmb 1 Freeze DD. information
SS.SPT   rmb 1 Set DD.TKS to given value
SS.SQD   rmb 1 Sequence down hard disk
SS.DCmd  rmb 1 Send direct command to disk (Read / Write Sector)
SS.DevNm rmb 1 Return Device name (32-bytes at [X])
SS.FD    rmb 1 Return File Descriptor (Y-bytes at [X])
SS.Ticks rmb 1 Set Lockout honor duration
SS.Lock  rmb 1 Lock/Release record
SS.DStat rmb 1 Return Display Status (CoCo)
SS.Joy   rmb 1 Return Joystick Value (CoCo)
SS.BlkRd rmb 1 Block Read
SS.BlkWr rmb 1 Block Write
SS.Reten rmb 1 Retension cycle
SS.WFM   rmb 1 Write File Mark
SS.RFM   rmb 1 Read past File Mark
SS.ELog  rmb 1 Read Error Log
SS.SSig  rmb 1 Send signal on data ready
SS.Relea rmb 1 Release device
SS.AlfaS rmb 1 Return Alfa Display Status (CoCo, SCF/GetStat )
SS.Attr  equ SS.AlfaS to serve 68K/RBF/SetStat only, thru NET
SS.Break rmb 1 Send break signal out acia
SS.RsBit rmb 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct#
         rmb 1 reserved
SS.FDInf equ $20 to serve 68K/RBF/GetStat only, thru NET
         rmb 4 reserve $20-$23 for Japanese version (Hoshi)
SS.SetMF rmb 1 reserve $24 for Gimix G68 (Flex compatability?)
SS.Cursr rmb 1 Cursor information for COCO
SS.ScSiz rmb 1 Return screen size for COCO
SS.KySns rmb 1 Getstat/Putstat for COCO keyboard
SS.ComSt rmb 1 Getstat/Putstat for Baud/Parity
SS.Open  rmb 1 Putstat to tell driver a path was opened
SS.Close rmb 1 Putstat to tell driver a path was closed
SS.HngUp rmb 1 Putstat to tell driver to hangup phone

*
* System Specific and User defined codes above $80
 org $80
SS.AAGBf  rmb 1 Putstat to Allocate Additional Graphic Buffer
SS.SLGBf  rmb 1 Putstat to Select a different Graphic Buffer
SS.Mount  rmb 1 Network 4 Mount Setstat
SS.RdNet  rmb 1 Read Raw Sector from Network 4 Omnidrive
SS.MpGPB  rmb 1 Putstat to request a Get/Put Buffer be mapped in workspace
SS.Slots  rmb 1 Network 4 slots? getstat
SS.WnSet  rmb 1 Set up High Level Windowing Information

SS.DRead  equ SS.AAGBf   ** SDisk3 Direct Sector Read      ($80 GetStt)
SS.DWrit  equ SS.DRead   ** SDisk3 Direct sector Write     ($80 SetStt)
SS.UnFrz  equ SS.SLGBf   ** SDisk3 UNFreeze DD info        ($81 SetStt)
SS.MOFF   equ SS.Mount   ** SDisk3 fast motor off call     ($82 SetStt)
SS.MoTim  equ SS.RdNet   ** SDisk3 Set motor shut off time ($83 SetStt)
SS.SDRD   equ SS.MgGPD   ** SDisk3 System direct read      ($84 GetStt)
SS.SDWRT  equ SS.SDRD    ** SDisk3 System direct writes    ($84 SetStt)
SS.Sleep  equ SS.Slots   ** SDisk3 (DMC ONLY)              ($85 SetStt) Enable/disable F$Sleep calls in read/write 1773 I/O
SS.DrvCh  equ SS.WnSet   ** SDisk3 (DMC ONLY)              ($86 GetStt/SetStt) Set drive number to cache, or return drive number being cached

SS.MnSel  rmb 1 Request High level Menu Handler take determine next event
SS.SBar   rmb 1 Putstat to set position block on Window scroll bars
SS.Mouse  rmb 1 Return Mouse information packet (COCO)
SS.MsSig  rmb 1 Putstat to tell driver to send signal on mouse event
SS.AScrn  rmb 1 Allocate a screen for application poking
SS.DScrn  rmb 1 Display a screen allocated by SS.AScrn
SS.FScrn  rmb 1 Free a screen allocated by SS.AScrn
SS.PScrn  rmb 1 Polymorph Screen into different screen Type
SS.ScInf  rmb 1 Get Current screen info for direct writes (new call - NitrOS9)
          rmb 1 Reserved
SS.Palet  rmb 1 Return palette information
SS.Montr  rmb 1 Get and Set Monitor Type
SS.ScTyp  rmb 1 Get screen type information
SS.GIP    rmb 1 Global Input Parameters (SetStat)
SS.UMBar  rmb 1 update menu bar (SetStat)
SS.FBRgs  rmb 1 return color registers (GetStat)
SS.DfPal  rmb 1 set/return default palette registers (GetStat/SetStat)
SS.Tone   rmb 1 Generate a tone using 6 bit sound

*
* new DACIA get/set status calls (per Bill Dickhaus)
SS.CDSta rmb 1 Get current DCD/DSR status byte (GetStat)
SS.CDSig rmb 1 Set signal for DCD change (SetStat)
SS.CDRel rmb 1 Release previous SS.CDSig (SetStat)

 org  $A0
*
* New Default SCF input buffer Set status call (NitrOS9)
SS.Fill rmb 1 Pre-load SCF device input buffer

*
* new WDDisk get/set status calls
 org $B0
SS.ECC rmb 1 ECC corrected data error enable/disable (GetStat/SetStat)


***
* Level II Block Map flags
NotRAM   equ %10000000 Block Not RAM flag
ModBlock equ %00000010 Module in Block
RAMinUse equ %00000001 RAM Block in use flag

*
* Service Dispatch Table special entries
IOEntry equ 254

***
* Module Directory Entry Definitions
 org 0
MD$MPDAT rmb 2 Module DAT Image ptr
MD$MBSiz rmb 2 Memory Block size
MD$MPtr rmb 2 Module ptr
MD$Link rmb 2 Module Link count
MD$ESize equ . Module Directory Entry size

***
* Module Definitions
*
* Universal Module Offsets
 org 0
M$ID rmb 2 ID Code
M$Size rmb 2 Module Size
M$Name rmb 2 Module Name
M$Type rmb 1 Type / Language
M$Revs rmb 1 Attributes / Revision Level
M$Parity rmb 1 Header Parity
M$IDSize equ . Module ID Size
*
* Type-Dependent Module Offsets
*
* System, File Manager, Device Driver, Program Module
M$Exec rmb 2 Execution Entry Offset
*
* Device Driver, Program Module
M$Mem rmb 2 Stack Requirement
*
* Device Driver, Device Descriptor Module
M$Mode rmb 1 Device Driver Mode Capabilities
*
* Device Descriptor Module
 org M$IDSize
M$FMgr rmb 2 File Manager Name Offset
M$PDev rmb 2 Device Driver Name Offset
 rmb 1 M$Mode (defined above)
M$Port rmb 3 Port Address
M$Opt rmb 1 Device Default Options
M$DTyp rmb 1 Device Type (equals RBF's IT.DTP and SCF's IT.DVC)
*
* Configuration Module Entry Offsets
 org M$IDSize
MaxMem rmb 3 Maximum Free Memory
PollCnt rmb 1 Entries in Interrupt Polling Table
DevCnt rmb 1 Entries in Device Table
InitStr rmb 2 Initial Module Name
SysStr rmb 2 System Device Name
StdStr rmb 2 Standard I/O Pathlist
BootStr rmb 2 Bootstrap Module name
ProtFlag rmb 1 Write protect enable flag

***
* Module Field Definitions
*
* ID Field
M$ID1 equ $87 Module ID code byte one
M$ID2 equ $CD Module ID code byte two
M$ID12 equ M$ID1*256+M$ID2
*
* Module Type / Language byte
*
* Field Masks
TypeMask equ %11110000 Type Field
LangMask equ %00001111 Language Field

*
* Type Values
Devic  equ $F0 Device Descriptor Module
Drivr  equ $E0 Device Driver Module
FlMgr  equ $D0 File Manager
Systm  equ $C0 System Module
Data   equ $40 Data Module
Multi  equ $30 Multi-Module
Sbrtn  equ $20 Subroutine Module
Prgrm  equ $10 Program Module

*
* Language Values
Objct    equ 1 6809 Object Code Module
ICode    equ 2 Basic09 I-code
PCode    equ 3 Pascal P-code
CCode    equ 4 C I-code
CblCode  equ 5 Cobol I-code
FrtnCode equ 6 Fortran I-code
Obj6309  equ 7 6309 object code
*
* Module Attributes / Revision byte
*
* Field Masks
AttrMask equ %11110000 Attributes Field
RevsMask equ %00001111 Revision Level Field
*
* Attribute Flags
ReEnt   equ %10000000 Re-Entrant Module
ModProt equ %01000000 Gimix Module protect bit (0=protected, 1=write enable)
ModNat  equ %00100000 6309 native mode attribute


***
* Device Type Values
DT.SCF equ 0 Sequential Character File Type
DT.RBF equ 1 Random Block File Type
DT.Pipe equ 2 Pipe File Type
DT.SBF equ 3
DT.NFM equ 4 Network File Manager

***
* CRC Result Constant
CRCCon1  equ $80
CRCCon23 equ $0FE3

***
* Path Descriptor Offsets
 org 0
PD.PD rmb 1 Path Number
PD.MOD rmb 1 Mode (Read/Write/Update)
PD.CNT rmb 1 Number of Open Images
PD.DEV rmb 2 Device Table Entry Address
PD.CPR rmb 1 Current Process
PD.RGS rmb 2 Caller's Register Stack
PD.BUF rmb 2 Buffer Address
PD.FST rmb 32-. File Manager's Storage
PD.OPT equ . PD GetSts(0) Options
PD.DTP rmb 1 Device Type
 rmb 64-. Path options
PDSIZE equ .

***
* Pathlist Special Symbols
PDELIM equ '/ Pathlist Name Separator
PDIR equ '. Directory
PENTIR equ '@ Entire Device

***
* File Manager Entry Offsets
 org 0
FMCREA rmb 3 Create (Open New) File
FMOPEN rmb 3 Open File
FMMDIR rmb 3 Make Directory
FMCDIR rmb 3 Change Directory
FMDLET rmb 3 Delete File
FMSEEK rmb 3 Position File
FMREAD rmb 3 Read from File
FMWRIT rmb 3 Write to File
FMRDLN rmb 3 ReadLn
FMWRLN rmb 3 WritLn
FMGSTA rmb 3 Get File Status
FMSSTA rmb 3 Set File Status
FMCLOS rmb 3 Close File

***
* Device Driver Entry Offsets
 org 0
D$INIT rmb 3 Device Initialization
D$READ rmb 3 Read from Device
D$WRIT rmb 3 Write to Device
D$GSTA rmb 3 Get Device Status
D$PSTA rmb 3 Put Device Status
D$TERM rmb 3 Device Termination

***
* Device Table Format
 org 0
V$DRIV rmb 2 Device Driver module
V$STAT rmb 2 Device Driver Static storage
V$DESC rmb 2 Device Descriptor module
V$FMGR rmb 2 File Manager module
V$USRS rmb 1 use count
DEVSIZ equ .

***
* Device Static Storage Offsets
 org 0
V.PAGE rmb 1 Port Extended Address
V.PORT rmb 2 Device 'Base' Port Address
V.LPRC rmb 1 Last Active Process ID
V.BUSY rmb 1 Active Process ID (0=UnBusy)
V.WAKE rmb 1 Active PD if Driver MUST Wake-up
V.USER equ . Driver Allocation Origin

***
* Interrupt Polling Table Format
 org 0
Q$POLL rmb 2 Absolute Polling Address
Q$FLIP rmb 1 Flip (EOR) Byte ..normally Zero
Q$MASK rmb 1 Polling Mask (after Flip)
Q$SERV rmb 2 Absolute Service routine Address
Q$STAT rmb 2 Static Storage Address
Q$PRTY rmb 1 Priority (Low Numbers=Top Priority)
POLSIZ equ .

***
* VIRQ packet format
 org 0
Vi.Cnt rmb 2 count down counter
Vi.Rst rmb 2 reset value for counter
Vi.Stat rmb 1 status byte

Vi.IFlag equ %00000001 status byte virq flag

true equ 1 useful name
false equ 0 useful name

***
* Machine Characteristics Definitions
R$CC equ 0 Condition Codes register
R$A equ 1 A Accumulator
R$B equ 2 B Accumulator
R$D equ R$A Combined A:B Accumulator
 ifeq H6309-true
R$E equ 3 Accumulator
R$F equ 4 Accumulator
R$W equ R$E Combined E:F Accumulator
R$Q equ R$A Combined A:B:E:F Accumulator
R$DP equ 5 Direct Page register
R$X equ 6 X Index register
R$Y equ 8 Y Index register
R$U equ 10 User Stack register
R$PC equ 12 Program Counter register
R$Size equ 14 Total register package size
 else
R$DP equ 3 Direct Page register
R$X equ 4 X Index register
R$Y equ 6 Y Index register
R$U equ 8 User Stack register
R$PC equ 10 Program Counter register
R$Size equ 12 Total register package size
 endc

* MD register masks
* 6309 definitions - NitrOS9
DIV0     equ  %10000000  division by 0 trap flag       : 1 = trap occured
badinstr equ  %01000000  illegal instruction trap flag : 1 = trap occured


Entire   equ %10000000 Full Register Stack flag
FIRQMask equ %01000000 Fast-Interrupt Mask bit
HalfCrry equ %00100000 Half Carry flag
IRQMask  equ %00010000 Interrupt Mask bit
Negative equ %00001000 Negative flag
Zero     equ %00000100 Zero flag
TwosOvfl equ %00000010 Two's Comp Overflow flag
Carry    equ %00000001 Carry bit
IntMasks equ IRQMask+FIRQMask
Sign     equ %10000000 sign bit

***
* Error Code Definitions
*
* WDDisk "TEST" Error Codes
 org 101
E$WD2797 rmb 1 WD 1002-05 WD2797 FD controller
E$WD1010 rmb 1 WD 1002-05 WD1010 HD controller
E$WDSBuf rmb 1 WD 1002-05 sector buffer
E$WD1014 rmb 1 WD 1002-05 WD1014 error detection or bus
E$WD1015 rmb 1 WD 1002-05 WD1015 control processor
*
* System Dependent Error Codes
 org 186
E$StkOvf rmb 1 Stack overflow
E$IllArg rmb 1 Illegal argument
 rmb 1 reserved
E$ICoord rmb 1 Illegal coordinates
E$Bug rmb 1 Bug (should never be returned)
E$BufSiz rmb 1 Buffer size is too small
E$IllCmd rmb 1 Illegal command
E$TblFul rmb 1 Screen or window table is full
E$BadBuf rmb 1 Bad/Undefined buffer number
E$IWDef rmb 1 Illegal window definition
E$WUndef rmb 1 Window undefined
*
* Standard OS-9 Error Codes
 org 200
E$PthFul rmb 1 Path Table full
E$BPNum rmb 1 Bad Path Number
E$Poll rmb 1 Polling Table Full
E$BMode rmb 1 Bad Mode
E$DevOvf rmb 1 Device Table Overflow
E$BMID rmb 1 Bad Module ID
E$DirFul rmb 1 Module Directory Full
E$MemFul rmb 1 Process Memory Full
E$UnkSvc rmb 1 Unknown Service Code
E$ModBsy rmb 1 Module Busy
E$BPAddr rmb 1 Bad Page Address
E$EOF rmb 1 End of File
 rmb 1
E$NES rmb 1 Non-Existing Segment
E$FNA rmb 1 File Not Accesible
E$BPNam rmb 1 Bad Path Name
E$PNNF rmb 1 Path Name Not Found
E$SLF rmb 1 Segment List Full
E$CEF rmb 1 Creating Existing File
E$IBA rmb 1 Illegal Block Address
E$HangUp rmb 1 Carrier Detect Lost
E$MNF rmb 1 Module Not Found
 rmb 1
E$DelSP rmb 1 Deleting Stack Pointer memory
E$IPrcID rmb 1 Illegal Process ID
E$BPrcID equ E$IPrcID Bad Process ID (formerly #238)
 rmb 1
E$NoChld rmb 1 No Children
E$ISWI rmb 1 Illegal SWI code
E$PrcAbt rmb 1 Process Aborted
E$PrcFul rmb 1 Process Table Full
E$IForkP rmb 1 Illegal Fork Parameter
E$KwnMod rmb 1 Known Module
E$BMCRC rmb 1 Bad Module CRC
E$USigP rmb 1 Unprocessed Signal Pending
E$NEMod rmb 1 Non Existing Module
E$BNam rmb 1 Bad Name
E$BMHP rmb 1 (bad module header parity)
E$NoRam rmb 1 No (System) Ram Available
E$DNE rmb 1 Directory not empty
E$NoTask rmb 1 No available Task number
 rmb $F0-. reserved
E$Unit rmb 1 Illegal Unit (drive)
E$Sect rmb 1 Bad SECTor number
E$WP rmb 1 Write Protect
E$CRC rmb 1 Bad Check Sum
E$Read rmb 1 Read Error
E$Write rmb 1 Write Error
E$NotRdy rmb 1 Device Not Ready
E$Seek rmb 1 Seek Error
E$Full rmb 1 Media Full
E$BTyp rmb 1 Bad Type (incompatable) media
E$DevBsy rmb 1 Device Busy
E$DIDC rmb 1 Disk ID Change
E$Lock rmb 1 Record is busy (locked out)
E$Share rmb 1 Non-sharable file busy
E$DeadLk rmb 1 I/O Deadlock error

***
* Direct Page Variable Definitions
*

* $00 to $1F reserved for user
 org 0
D.WDAddr rmb 2 FHL/Isted WD 1002-05 interface base address
D.WDBtDr rmb 1 FHL/Isted WD 1002-05 boot device physical drive number

* $20 to $FF used by system
 org 32
D.Tasks  rmb 2 Task User Table
D.TmpDAT rmb 2 Temporary DAT Image stack
D.Init   rmb 2 Initialization Module ptr
D.Poll   rmb 2 Interrupt Polling Routine ptr
D.Time   equ .               System Time
D.Year   rmb 1 (40d)
D.Month  rmb 1
D.Day    rmb 1
D.Hour   rmb 1
D.Min    rmb 1
D.Sec    rmb 1
TimPktSz equ .-D.Time  Time Packet Size
D.Tick   rmb 1
D.Slice  rmb 1 current slice remaining
D.TSlice rmb 1 Ticks per Slice
D.Boot   rmb 1 Bootstrap attempted flag
D.MotOn  rmb 1 Floppy Disk Motor-On time out
D.ErrCod rmb 1 Reset Error Code
D.Daywk  rmb 1 day of week, com-trol clock
D.TkCnt  rmb 1 Tick Counter
D.BtPtr  rmb 2 Address of Boot in System Address space
D.BtSz   rmb 2 Size of Boot

* NitrOS9 additions
* 58d begins here
D.MDREG  rmb 1 6309 MD (mode) shadow register
D.CRC    rmb 1 CRC checking mode flag
D.Tenths rmb 1 Tenths and hundredths fof second for F$Xtime

 org 64
D.BlkMap rmb 4 Memory Block Map ptr
D.ModDir rmb 4 Module Directory ptrs
D.PrcDBT rmb 2 Process Descriptor Block Table ptr
D.SysPrc rmb 2 System Process Descriptor ptr
D.SysDAT rmb 2 System DAT Image ptr
D.SysMem rmb 2 System Memory Map ptr
D.Proc   rmb 2 Current Process ptr
D.AProcQ rmb 2 Active Process Queue
D.WProcQ rmb 2 Waiting Process Queue
D.SProcQ rmb 2 Sleeping Process Queue
D.ModEnd rmb 2 Module Directory end ptr
D.ModDAT rmb 2 Module Dir DAT image end ptr

D.CldRes rmb 2 Cold Restart vector

 org 107
D.Crash  rmb 6 Pointer to CC Crash Routine
D.CBStrt rmb $B Reserved for CC warmstart ($71)

 org 128
D.DevTbl rmb 2 I/O Device Table
D.PolTbl rmb 2 I/O Polling Table
         rmb 4 reserved
D.PthDBT rmb 2 Path Descriptor Block Table ptr
D.DMAReq rmb 1 DMA Request flag

*
* COCO3 GIME Shadow Registers
 org 144
D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90)
D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91)
D.IRQER rmb 1 Interrupt enable regsiter ($FF92)
D.FRQER rmb 1 Fast Interrupt enable register ($FF93)
D.TIMMS rmb 1 Timer most significant nibble ($FF94)
D.TIMLS rmb 1 Timer least significant byte ($FF95)
D.RESV1 rmb 1 reserved register ($FF96)
D.RESV2 rmb 1 reserved register ($FF97)
D.VIDMD rmb 1 video mode register ($FF98)
D.VIDRS rmb 1 video resolution register ($FF99)
D.BORDR rmb 1 border register ($FF9A)
D.RESV3 rmb 1 reserved register ($FF9B)
D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C)
D.VOFF1 rmb 1 vertical offset 1 register ($FF9D)
D.VOFF0 rmb 1 vertical offset 0 register ($FF9E)
D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F)
D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast
D.TskIPt rmb 2 Task image Pointer table (CC)
D.MemSz rmb 1 128/512K memory flag (CC)
D.SSTskN rmb 1 System State Task Number (COCO)
D.CCMem rmb 2 Pointer to beginning of CC Memory
D.CCStk rmb 2 Pointer to top of CC Memory
D.Flip0 rmb 2 Change to Task 0
D.Flip1 rmb 2 Change to reserved Task 1
D.VIRQ rmb 2 VIRQ Polling routine
D.IRQS rmb 1 IRQ shadow register (CC Temporary)
D.CLTb rmb 2 VIRQ Table address
D.AltIRQ rmb 2 Alternate IRQ Vector (CC)
D.GPoll rmb 2 CC GIME IRQ enable/disable toggle
D.Clock2 rmb 2 CC Clock2 entry address
 org 192
D.SysSvc rmb 2 System Service Routine entry
D.SysDis rmb 2 System Service Dispatch Table ptr
D.SysIRQ rmb 2 System IRQ Routine entry
D.UsrSvc rmb 2 User Service Routine entry
D.UsrDis rmb 2 User Service Dispatch Table ptr
D.UsrIRQ rmb 2 User IRQ Routine entry
D.SysStk rmb 2 System stack
D.SvcIRQ rmb 2 In-System IRQ service
D.SysTsk rmb 1 System Task number
 org 224
D.Clock rmb 2
D.XSWI3 rmb 2
D.XSWI2 rmb 2
D.XFIRQ rmb 2
D.XIRQ rmb 2
D.XSWI rmb 2
D.XNMI rmb 2
D.ErrRst rmb 2
 org 242
D.SWI3 rmb 2
D.SWI2 rmb 2
D.FIRQ rmb 2
D.IRQ rmb 2
D.SWI rmb 2
D.NMI rmb 2

***
* Process Descriptor Definitions
DefIOSiz equ 16 Default I/O Data Length
NefIOSiz equ 12 On-Net Default I/O Data Length
NumPaths equ 16 Number of Local Paths
*
 org 0
P$ID rmb 1 Process ID
P$PID rmb 1 Parent's ID
P$SID rmb 1 Sibling's ID
P$CID rmb 1 Child's ID
P$SP rmb 2 Stack ptr
P$Task rmb 1 Task Number
P$PagCnt rmb 1 Memory Page Count
P$User rmb 2 User Index
P$Prior rmb 1 Priority
P$Age rmb 1 Age
P$State rmb 1 Status
P$Queue rmb 2 Queue Link (Process ptr)
P$IOQP rmb 1 Previous I/O Queue Link (Process ID)
P$IOQN rmb 1 Next I/O Queue Link (Process ID)
P$PModul rmb 2 Primary Module
P$SWI rmb 2 SWI Entry Point
P$SWI2 rmb 2 SWI2 Entry Point
P$SWI3 rmb 2 SWI3 Entry Point
P$Signal rmb 1 Signal Code
P$SigVec rmb 2 Signal Intercept Vector
P$SigDat rmb 2 Signal Intercept Data Address
P$DeadLk rmb 1 Dominant proc ID if I/O locked
 rmb $20-. unused
P$DIO rmb DefIOSiz Default I/O ptrs
P$Path rmb NumPaths I/O Path Table
P$DATImg rmb 64 DAT Image
P$Links rmb 32 Block Link counts
P$NIO rmb 6*2 additional DIO ptrs for net, compatible with 68K
P$SelP rmb 1 Selected Path for COCO Windows (Default 0)
P$UTicks rmb 4 proc User Tick counter
P$STicks rmb 4 proc System Tick counter
P$FCalls rmb 4 proc F$ call counter
P$ICalls rmb 4 proc I$ call counter
P$DatBeg rmb 3 proc Date of creation (Y/M/D)
P$TimBeg rmb 3 proc Time of creation (H/M/S)
P$Alarm rmb 6 COCO individual process' alarm call date/time (Y/M/D/H/M/S)
 rmb $200-. Local stack
P$Stack equ . Top of Stack
P$Size equ . Size of Process Descriptor
*
* Process State Flags
SysState   equ %10000000
TimSleep   equ %01000000
TimOut     equ %00100000
ImgChg     equ %00010000
Suspend    equ %00001000
Condem     equ %00000010
Dead       equ %00000001