view defs/os9defs @ 1933:1e312b144f4d

Major changes: CCIO,CC3IO are now VTIO GrfInt is now CoGrf WindInt is now CoWin VDGInt (L2), CO32 (L1) is now CoVDG CO51 (L1) is now CoHR CO80 (L1) is now CoWP All files referencing these have been changed
author boisy
date Sat, 26 Nov 2005 21:31:29 +0000
parents cb9a9df15964
children 62dcfa1de339
line wrap: on
line source

         IFNE  OS9DEFS-1

OS9DEFS  set   1

********************************************************************
* OS9Defs - NitrOS-9 System Definitions
*
* $Id$
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*          1985/08/29  KMZ
* Fixed DT.SBF/NFM values to 3/4
*
*          1985/09/01  KMZ
* Added SS.FDInf, SS.Attr to accept 68K request thru NET.
*
*          1985/09/03  KMZ/Robert F. Doggett
* Eliminated E$BPrcID, made Error #238 become E$DNE for
* 68000 compatability.
*
*          1986/04/15  Mark G. Hawkins
* F$AlHRAM System call added for COCO.
*
*          1986/09/08  Mark G. Hawkins
* F$Alarm for COCO Clock Module.
*
*          1986/09/17  Mark G. Hawkins
* SS.Tone For COCO.
*
*          1986/09/23  Mark G. Hawkins
* Added F$NMLink and F$NMLoad for COCO.
*
*          1986/09/30  Mark G. Hawkins
* Added Reserved User $70 to $7f in sytem calls.
*
*          1986/09/30  Mark G. Hawkins
* Created Color Computer 3 Version of OS9Defs.
*
*          1998/10/03  Boisy G. Pitre
* Consoldated Level 1/Level 2 os9defs.
*
*          2002/04/04  Boisy G. Pitre
* Consoldated Level 2/Level 2 V3 os9defs.
*
*          2002/04/30  Boisy G. Pitre
* Added NitrOS-9 definitions.
*
*          2003/05/30  Boisy G. Pitre
* Added WD1002 sys vars to Level One section.
*
*          2003/06/02  Boisy G. Pitre
* Fixed incorrectly ordered D.X*** system globals for OS-9 Level One and
* changed the sizes from 2 to 3 bytes.
* DT.NFM is now the same for both Level One and Level Two.
* Added DT.CDFM type for future CD-ROM file manager
*
*          2003/11/05  Robert Gault
* Fixed MouseInf. Made it rmb 2 as it should be. Also changes to init and cc3io.
*
*	   2005/11/02  P.Harvey-Smith.
* Added definitions for boot areas on Dragon computers.
*


         nam   OS9Defs
         IFEQ  Level-1
         ttl   NitrOS-9 Level 1 System Symbol Definitions
         ELSE
         IFEQ  Level-2
         ttl   NitrOS-9 Level 2 System Symbol Definitions
         ELSE
         ttl   NitrOS-9 Level 3 System Symbol Definitions
         ENDC
         ENDC

* Common definitions
true     equ   1          useful name
false    equ   0          useful name

         pag
*****************************************
* 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

         IFGT  Level-1

* NitrOS-9 Level 2 system calls
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 3 Alarm Call
         rmb   2          Reserved - For overlap of other systems
F$NMLink rmb   1          Color Computer 3 Non-Mapping Link
F$NMLoad rmb   1          Color Computer 3 Non-Mapping Load
         org   $25
F$TPS    rmb   1          Return System's Ticks Per Second
F$TimAlm rmb   1          CoCo individual process alarm call

         ENDC

         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

         IFGT  Level-1

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

* Alan DeKok additions
* F$ReBoot has been renamed to F$Debug
*F$ReBoot rmb   1          Reboot machine (reload OS9Boot) or drop to RSDOS
F$Debug   rmb   1          Drop the system into the debugger
F$CRCMod rmb   1          CRC mode, toggle or report current status
F$XTime  rmb   1          Get Extended time packet from RTC (fractions of second)
F$VBlock rmb   1          Verify modules in a block of memory, add to module directory

         ENDC

*
* Numbers $70 through $7F are reserved for user definitions
*
         org   $70

	 IFEQ  Level-1
	 rmb   16         Reserved for user definition
         ELSE

F$RegDmp rmb   1          Ron Lammardo's debugging register dump
F$NVRAM  rmb   1          Non Volatile RAM (RTC battery backed static) read/write

         rmb   $80-.      Reserved for user definitions
         ENDC

         pag
**************************************
* 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

         pag
**********************************
* Status Codes for GetStat/GetStat
*
         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
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/SetStat for COCO keyboard
SS.ComSt rmb   1          Getstat/SetStat for Baud/Parity
SS.Open  rmb   1          SetStat to tell driver a path was opened
SS.Close rmb   1          SetStat to tell driver a path was closed
SS.HngUp rmb   1          SetStat to tell driver to hangup phone
SS.FSig  rmb   1          new signal for temp locked files
SS.DSize equ   SS.ScSiz   Return disk size (RBF GetStat)
SS.VarSect equ SS.DStat   Variable Sector Size (RBF GetStat)

* System Specific and User defined codes above $80
         org   $80
SS.AAGBf rmb   1          SetStat to Allocate Additional Graphic Buffer
SS.SLGBf rmb   1          SetStat 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          SetStat to request a Get/Put Buffer be mapped in workspace
SS.Slots rmb   1          Network 4 slots? getstat

         IFGT  Level-1

* Level 2 Windowing
SS.WnSet rmb   1          Set up High Level Windowing Information
SS.MnSel rmb   1          Request High level Menu Handler take determine next event
SS.SBar  rmb   1          SetStat to set position block on Window scroll bars
SS.Mouse rmb   1          Return Mouse information packet (COCO)
SS.MsSig rmb   1          SetStat 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
         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
SS.GIP2  rmb   1          Global Input Params #2 (L2V3)
SS.AnPal rmb   1          Animate palettes (L2V3)
SS.FndBf rmb   1          Find named buffer (L2V3)

* sc6551 defined
SS.CDSta equ   SS.GIP2
SS.CDSig equ   SS.AnPal
SS.CDRel equ   SS.FndBf
         ELSE
* These are wide open in Level 1
         rmb    19

* sc6551 defined
SS.CDSta rmb   1
SS.CDSig rmb   1
SS.CDRel rmb   1
         ENDC



         org   $A0
*
* New Default SCF input buffer Set status call
SS.Fill  rmb   1          Pre-load SCF device input buffer
SS.Hist  rmb   1          Enable command-line history easily


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

*
         IFGT  Level-1

* VRN get/set status calls.  Named by Alan DeKok.
SS.VCtr  equ  $80         Return FS2 total VIRQ counter
SS.VSig  equ  $81         Return FS2 number of signals sent

SS.FClr  equ  $81         Set/clear FS2 VIRQ
SS.FSet  equ  $C7         Set FS2+ VIRQ
SS.KSet  equ  $C8         Set KQ3 VIRQ
SS.KClr  equ  $C9         Clr KQ3 VIRQ
SS.ARAM  equ  $CA         Allocate RAM blocks
SS.DRAM  equ  $CB         De-allocate RAM blocks

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

         ENDC

	 ttl   Direct Page Definitions
         pag

**********************************
* Direct Page Variable Definitions
*
         IFEQ  Level-1

* Level 1 DP vars
         org   $00
D.WDAddr rmb   2          FHL/Isted WD1002-05 interface base address
D.WDBtDr rmb   1          FHL/Isted WD1002-05 boot physical device drive num.
D.SWPage rmb   1          SmartWatch page # (see clock2_smart)
         rmb   5
D.COCOXT rmb   1          Busy flag for CoCo-XT driver (one drive at a time)

	 org   $20
D.FMBM   rmb   4          Free memory bit map pointers
D.MLIM   rmb   2          Memory limit $24
D.ModDir rmb   4          Module directory $26
D.Init   rmb   2          Rom base address $2A
D.SWI3   rmb   2          Swi3 vector $2C
D.SWI2   rmb   2          Swi2 vector $2E
D.FIRQ   rmb   2          Firq vector $30
D.IRQ    rmb   2          Irq vector $32
D.SWI    rmb   2          Swi vector $34
D.NMI    rmb   2          Nmi vector $36
D.SvcIRQ rmb   2          Interrupt service entry $38
D.Poll   rmb   2          Interrupt polling routine $3A
D.UsrIRQ rmb   2          User irq routine $3C
D.SysIRQ rmb   2          System irq routine $3E
D.UsrSvc rmb   2          User service request routine $40
D.SysSvc rmb   2          System service request routine $42
D.UsrDis rmb   2          User service request dispatch table
D.SysDis rmb   2          System service reuest dispatch table
D.Slice  rmb   1          Process time slice count $48
D.PrcDBT rmb   2          Process descriptor block address  $49
D.Proc   rmb   2          Process descriptor address $4B
D.AProcQ rmb   2          Active process queue $4D
D.WProcQ rmb   2          Waiting process queue $4F
D.SProcQ rmb   2          Sleeping process queue $51
D.Time   equ   .          Time
D.Year   rmb   1          $53
D.Month  rmb   1          $54
D.Day    rmb   1          $55
D.Hour   rmb   1          $56
D.Min    rmb   1          $57
D.Sec    rmb   1          $58
D.Tick   rmb   1          $59
D.TSec   rmb   1          Ticks / second $5A
D.TSlice rmb   1          Ticks / time-slice $5B
D.IOML   rmb   2          I/O mgr free memory low bound $5C
D.IOMH   rmb   2          I/O mgr free memory hi  bound $5E
D.DevTbl rmb   2          Device driver table addr $60
D.PolTbl rmb   2          Irq polling table addr $62
D.PthDBT rmb   2          Path descriptor block table addr $64
D.BTLO   rmb   2          Bootstrap low address $66
D.BTHI   rmb   2          Bootstrap hi address $68
D.DMAReq rmb   1          DMA in use flag $6A
D.AltIRQ rmb   2          Alternate IRQ vector (CC) $6B
D.KbdSta rmb   2          Keyboard scanner static storage (CC) $6D
D.DskTmr rmb   2          Disk Motor Timer (CC) $6F
D.CBStrt rmb   16         reserved for CC warmstart ($71)
D.Clock  rmb   2          Address of Clock Tick Routine (CC) $81
D.Boot   rmb   1          Bootstrap attempted flag
D.URtoSs rmb   2          address of user to system routine (VIRQ) $84
D.CLTb   rmb   2          Pointer to clock interrupt table (VIRQ) $86
D.MDREG  rmb   1          6309 MD (mode) shadow register $88 (added in V2.01.00)
D.CRC    rmb   1          CRC checking mode flag $89 (added in V2.01.00)
D.Clock2 rmb   2          CC Clock2 entry address

         org   $100
D.XSWI3  rmb   3
D.XSWI2  rmb   3
D.XSWI   rmb   3
D.XNMI   rmb   3
D.XIRQ   rmb   3
D.XFIRQ  rmb   3

* Table Sizes
BMAPSZ   equ   32         Bitmap table size
SVCTNM   equ   2          Number of service request tables
SVCTSZ   equ   (256-BMAPSZ)/SVCTNM-2 Service request table size

         ELSE

* Level 2 DP vars
         org   $00
D.WDAddr rmb   2          FHL/Isted WD1002-05 interface base address
D.WDBtDr rmb   1          FHL/Isted WD1002-05 boot physical device drive num.
D.SWPage rmb   1          SmartWatch page # (see clock2_smart)
         rmb   5
D.COCOXT rmb   1          Busy flag for CoCo-XT driver (one drive at a time)

	 org   $20
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
D.Month  rmb   1
D.Day    rmb   1
D.Hour   rmb   1
D.Min    rmb   1
D.Sec    rmb   1
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

         IFNE  H6309
D.MDREG  rmb   1          6309 MD (mode) shadow register
         ELSE
         rmb   1          Currently unused in NitrOS-9/6809
         ENDC

D.CRC    rmb   1          CRC checking mode flag

D.Tenths rmb   1          Tenths and hundredths of second for F$Xtime
D.Task1N rmb   1          Map type 1 task number*2 - offset into [D.TskIPt]
D.Quick  rmb   1          Quick system call return flag - 0 =stack is at $FEE1
D.QIRQ   rmb   1          Quick IRQ flag - 0 =IRQ wasn't clock, so quick return

         org   $40
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
D.BtBug  rmb   3          Boot debug information
D.Pipe   rmb   2

         org   $6B
D.Crash  rmb   6          Pointer to CC Crash Routine
D.CBStrt rmb   $B         Reserved for CC warmstart ($71)
D.QCnt   rmb   1          Count of number of quick system calls performed

         org   $80
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

********
* CoCo 3 STUFF COMES NEXT
* This area is used for the CoCo Hardware Registers
*
         org   $90
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 ($A0)
D.TskIPt rmb   2          Task image Pointer table (CC) ($A1)
D.MemSz  rmb   1          128/512K memory flag (CC) ($A3)
D.SSTskN rmb   1          System State Task Number (COCO) ($A4)
D.CCMem  rmb   2          Pointer to beginning of CC Memory ($A5)
D.CCStk  rmb   2          Pointer to top of CC Memory ($A7)
D.Flip0  rmb   2          Change to Task 0 ($A9)
D.Flip1  rmb   2          Change to reserved Task 1 ($AB)
D.VIRQ   rmb   2          VIRQ Polling routine ($AD)
D.IRQS   rmb   1          IRQ shadow register (CC Temporary) ($AF)
D.CLTb   rmb   2          VIRQ Table address ($B0)
D.AltIRQ rmb   2          Alternate IRQ Vector (CC) ($B2)
D.GPoll  rmb   2          CC GIME IRQ enable/disable toggle
D.Clock2 rmb   2          CC Clock2 entry address
         org   $C0
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   $E0
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
D.SysVec rmb   2          F$xxx system call vector for NitrOS-9 Level 3
D.SWI3   rmb   2
D.SWI2   rmb   2
D.FIRQ   rmb   2
D.IRQ    rmb   2
D.SWI    rmb   2
D.NMI    rmb   2

*************************
* Level 2 Block Map flags
*
NotRAM   equ   %10000000  Block Not RAM flag
VidRAM   equ   %00000100  Block is being used as Video RAM
ModBlock equ   %00000010  Module in Block
RAMinUse equ   %00000001  RAM Block in use flag
*
* Service Dispatch Table special entries
*
IOEntry  equ   254

         ENDC

         ttl   Structure Formats
         pag
************************************
* Module Directory Entry Definitions
*
         org   0
         IFGT  Level-1
MD$MPDAT rmb   2          Module DAT Image ptr
MD$MBSiz rmb   2          Memory Block size
         ENDC
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
IT.DTP   equ   M$DTyp     Descriptor type offset
*
* 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

OSLevel  rmb   1          OS level
OSVer    rmb   1          OS version
OSMajor  rmb   1          OS major
OSMinor  rmb   1          OS minor
Feature1 rmb   1          feature byte 1
Feature2 rmb   1          feature byte 2
         rmb   8          reserved for future use

         IFGT  Level-1
* -- VTIO area -- (NitrOS-9 Level 2 and above) *
MonType  rmb   1          Monitor type (0=CMP,1=RGB,2=MONO)
MouseInf rmb   2          Mouse resolution/Mouse port; was 1, major error RG.
KeyRptS  rmb   1          Key repeat start constant
KeyRptD  rmb   1          Key repeat delay constant
         ENDC

* Feature1 byte definitions
CRCOn    equ   %00000001  CRC checking on
CRCOff   equ   %00000000  CRC checking off

         pag
**************************
* Module Field Definitions
*
* ID Field - First two bytes of a NitrOS-9 module
*
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 Field Masks
*
TypeMask equ   %11110000  Type Field
LangMask equ   %00001111  Language Field

*
* Module Type Values
*
Devic    equ   $F0        Device Descriptor Module
Drivr    equ   $E0        Physical Device Driver
FlMgr    equ   $D0        File Manager
Systm    equ   $C0        System Module
ShellSub equ   $50        Shell+ shell sub module
Data     equ   $40        Data Module
Multi    equ   $30        Multi-Module
Sbrtn    equ   $20        Subroutine Module
Prgrm    equ   $10        Program Module

*
* 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
*
* These values define various classes of devices, which are
* managed by a file manager module.  The Device Type is embedded
* in a device's device descriptor.
*
DT.SCF   equ   0          Sequential Character File Manager
DT.RBF   equ   1          Random Block File Manager
DT.Pipe  equ   2          Pipe File Manager
DT.SBF   equ   3          Sequential Block File Manager
DT.NFM   equ   4          Network File Manager
DT.CDFM  equ   5          CD-ROM File Manager


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

         ttl   Process Information
         pag
********************************
* Process Descriptor Definitions
*
         IFEQ  Level-1

* Level 1 process descriptor defs
DefIOSiz equ   12
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$CHAP   rmb   1          process chapter number
P$ADDR   rmb   1          user address beginning page number
P$PagCnt rmb   1          Memory Page Count
P$User   rmb   2          User Index $09
P$Prior  rmb   1          Priority $0B
P$Age    rmb   1          Age $0C
P$State  rmb   1          Status $0D
P$Queue  rmb   2          Queue Link (Process ptr) $0E
P$IOQP   rmb   1          Previous I/O Queue Link (Process ID) $10
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 $18
P$DIO    rmb   DefIOSiz   default I/O ptrs $1A
P$PATH   rmb   NumPaths   I/O path table $26
P$Signal rmb   1          Signal Code $36
P$SigVec rmb   2          Signal Intercept Vector
P$SigDat rmb   2          Signal Intercept Data Address
P$NIO    rmb   4          additional dio pointers for net
         rmb   $40-.      unused
P$Size   equ   .          Size of Process Descriptor

*
* Process State Flags
*
SysState equ   %10000000
TimSleep equ   %01000000
TimOut   equ   %00100000
ImgChg   equ   %00010000
Condem   equ   %00000010
Dead     equ   %00000001

         ELSE

* Level 2 process descriptor defs
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        (L2V3)
P$STicks rmb   4          proc System Tick counter      (L2V3)
P$FCalls rmb   4          proc F$ call counter          (L2V3)
P$ICalls rmb   4          proc I$ call counter          (L2V3)
P$DatBeg rmb   3          proc Date of creation (Y/M/D) (L2V3)
P$TimBeg rmb   3          proc Time of creation (H/M/S) (L2V3)
P$Alarm  rmb   6
         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

         ENDC

         ttl   NitrOS-9 I/O Symbolic Definitions
         pag
*************************
* 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

         pag  
****************************
* 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
         IFGT  Level-1
V$DRIVEX rmb   2          Device Driver execution address
V$FMGREX rmb   2          File Manager execution address
         ENDC
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)
         IFGT  Level-1
Q$MAP    rmb   2          NitrOS-9 Level 2 and above
         ENDC
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

         pag  
*************************************
* 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
         IFNE  H6309
R$E      equ   3          E Accumulator
R$F      equ   4          F 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
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

         ttl   Error Code Definitions
         pag
************************
* Error Code Definitions
*
* Basic09 Error Codes
*
         org   10
E$UnkSym rmb   1 Unknown symbol
E$ExcVrb rmb   1 Excessive verbage
E$IllStC rmb   1 Illegal statement construction
E$ICOvf  rmb   1 I-code overflow
E$IChRef rmb   1 Illegal channel reference
E$IllMod rmb   1 Illegal mode
E$IllNum rmb   1 Illegal number
E$IllPrf rmb   1 Illegal prefix
E$IllOpd rmb   1 Illegal operand
E$IllOpr rmb   1 Illegal operator
E$IllRFN rmb   1 Illegal record field name
E$IllDim rmb   1 Illegal dimension
E$IllLit rmb   1 Illegal literal
E$IllRet rmb   1 Illegal relational
E$IllSfx rmb   1 Illegal type suffix
E$DimLrg rmb   1 Dimension too large
E$LinLrg rmb   1 Line number too large
E$NoAssg rmb   1 Missing assignment statement
E$NoPath rmb   1 Missing path number
E$NoComa rmb   1 Missing coma
E$NoDim  rmb   1 Missing dimension
E$NoDO   rmb   1 Missing DO statement
E$MFull  rmb   1 Memory full
E$NoGoto rmb   1 Missing GOTO
E$NoLPar rmb   1 Missing left parenthesis
E$NoLRef rmb   1 Missing line reference
E$NoOprd rmb   1 Missing operand
E$NoRPar rmb   1 Missing right parenthesis
E$NoTHEN rmb   1 Missing THEN statement
E$NoTO   rmb   1 Missing TO statement
E$NoVRef rmb   1 Missing variable reference
E$EndQou rmb   1 Missing end quote
E$SubLrg rmb   1 Too many subscripts
E$UnkPrc rmb   1 Unknown procedure
E$MulPrc rmb   1 Multiply defined procedure
E$DivZer rmb   1 Divice by zero
E$TypMis rmb   1 Operand type mismatch
E$StrOvf rmb   1 String stack overflow
E$NoRout rmb   1 Unimplemented routine
E$UndVar rmb   1 Undefined variable
E$FltOvf rmb   1 Floating Overflow
E$LnComp rmb   1 Line with compiler error
E$ValRng rmb   1 Value out of range for destination
E$SubOvf rmb   1 Subroutine stack overflow
E$SubUnd rmb   1 Subroutine stack underflow
E$SubRng rmb   1 Subscript out of range
E$ParmEr rmb   1 Paraemter error
E$SysOvf rmb   1 System stack overflow
E$IOMism rmb   1 I/O type mismatch
E$IONum  rmb   1 I/O numeric input format bad
E$IOConv rmb   1 I/O conversion: number out of range
E$IllInp rmb   1 Illegal input format
E$IOFRpt rmb   1 I/O format repeat error
E$IOFSyn rmb   1 I/O format syntax error
E$IllPNm rmb   1 Illegal path number
E$WrSub  rmb   1 Wrong number of subscripts
E$NonRcO rmb   1 Non-record type operand
E$IllA   rmb   1 Illegal argument
E$IllCnt rmb   1 Illegal control structure
E$UnmCnt rmb   1 Unmatched control structure
E$IllFOR rmb   1 Illegal FOR variable
E$IllExp rmb   1 Illegal expression type
E$IllDec rmb   1 Illegal declarative statement
E$ArrOvf rmb   1 Array size overflow
E$UndLin rmb   1 Undefined line number
E$MltLin rmb   1 Multiply defined line number
E$MltVar rmb   1 Multiply defined variable
E$IllIVr rmb   1 Illegal input variable
E$SeekRg rmb   1 Seek out of range
E$NoData rmb   1 Missing data statement

*
* System Dependent Error Codes
*

* Level 2 windowing error codes
         org   183
E$IWTyp  rmb   1          Illegal window type
E$WADef  rmb   1          Window already defined
E$NFont  rmb   1          Font not found
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

E$Up     rmb   1          Up arrow pressed on SCF I$ReadLn with PD.UP enabled
E$Dn     rmb   1          Down arrow pressed on SCF I$ReadLn with PD.DOWN enabled
E$Alias  rmb   1


*
* Standard NitrOS-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


         IFEQ  Level-1

********************************
* Boot defs for NitrOS-9 Level 1
*
* These defs are not strictly for 'Boot', but are for booting the
* system.
*
Bt.Start equ   $EE00      Start address of the boot track in memory

* Boot area size on Dragon is only 16 sectors=4K
	IFNE	DRAGON
Bt.Size  equ   $1000	  Max size of boot file
	ELSE
Bt.Size  equ   $1080      Maximum size of bootfile
	ENDC

         ELSE

******************************************
* Boot defs for NitrOS-9 Level 2 and above
*
* These defs are not strictly for 'Boot', but are for booting the
* system.
*
Bt.Block equ   $3B        Block to map in for the 'OS9BOOT' screen
Bt.Flag  equ   $8A34      Flag in Bt.Block to verify that it's unchanged
Bt.Offst equ   2          Offset into the screen where the current ptr is
Bt.Start equ   $ED00      Start address of the boot track in memory

         ENDC

* Boot area on the Dragon starts on track 0 sector 2, imediatly 
* after the blockmap.
* On the CoCo, the boot track is all of track 34

	IFNE	DRAGON
Bt.Track equ   0	  Boot track
Bt.Sec   equ   2	  Start LSN of boot area on boot track
	ELSE
Bt.Track equ   34         Boot track
Bt.Sec   equ   0	  Start LSN of boot area on boot track
	ENDC


         IFGT  Level-2
***************************
* Level 3 Defs
*
* These definitions apply to NitrOS-9 Level 3
*
L3.Start equ   $2000      Start off at slot 1
L3.Size  equ   $40        Go for 64 pages: 2 slots total
L3.Blks  equ   L3.Size/$20 Number of slots
L3.End   equ   L3.Start+L3.Size*$0100 end of L3 memory
L3.SCF   equ   $0660      SCF block ptr
L3.RBF   equ   L3.SCF+1   RBF block ptr
         ENDC

         ENDC