view lib/os9defs.a @ 2329:a894bfdef5b3

Updated
author boisy
date Wed, 13 Jan 2010 05:22:08 +0000
parents cfb7dcf4322c
children 954369121d6e
line wrap: on
line source

********************************************************************
* 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.
*
*	       2006/03/03  Boisy G. Pitre
* Added F$Debug and D.DbgMem areas, common to all levels of NitrOS-9

               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
*
               csect
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 ($17)

               IFGT      Level-1

* NitrOS-9 Level 2 system calls
F$GPrDsc:      RMB       1                   Get Process Descriptor copy ($18)
F$GBlkMp:      RMB       1                   Get System Block Map copy ($19)
F$GModDr:      RMB       1                   Get Module Directory copy ($1A)
F$CpyMem:      RMB       1                   Copy External Memory ($1B)
F$SUser:       RMB       1                   Set User ID number ($1C)
F$UnLoad:      RMB       1                   Unlink Module by name ($1D)
F$Alarm:       RMB       1                   Color Computer 3 Alarm Call ($1E)
               RMB       2                   Reserved - For overlap of other systems ($1F)
F$NMLink:      RMB       1                   Color Computer 3 Non-Mapping Link ($21)
F$NMLoad:      RMB       1                   Color Computer 3 Non-Mapping Load ($22)

               ELSE      

* NitrOS-9 Level 1 system call padding
               RMB       11

               ENDC      

F$Debug:       RMB       1                   Drop the system into the debugger ($23)

               IFGT      Level-1

               RMB       $25-*
F$TPS:         RMB       1                   Return System's Ticks Per Second
F$TimAlm:      RMB       1                   CoCo individual process alarm call

               ENDC      

               RMB       $27-*               Beginning of System Reserved Calls
* NitrOS-9 common system 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:      RMB       1                   Reboot machine (reload OS9Boot) or drop to RSDOS
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
*
               RMB       $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      
               endsect

               PAG       
**************************************
* I/O Service Request Code Definitions
*
               csect
               RMB       $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
               endsect

*******************
* 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
*
               csect
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$Peer:        EQU       S$Window            Peer disconnected (scdwt)
S$Alarm:       RMB       1                   CoCo individual process' alarm signal
               endsect

               PAG       
**********************************
* Status Codes for GetStat/GetStat
*
               csect
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
               RMB       $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      

               RMB       $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

               RMB       $B0-*
*
* New WDDisk get/set status calls
SS.ECC:        RMB       1                   ECC corrected data error enable/disable (GetStat/SetStat)
               endsect

*
               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
*
               csect
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)
D.DbgMem:      RMB       2                   Debug memory pointer
D.DWSubAddr:   RMB  	 2                   DriveWire subroutine module pointer
D.DWStat:      RMB  	 2                   DriveWire statics page

               RMB       $20-*

               IFEQ      Level-1

* Level 1 DP vars
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

               RMB       $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
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

               RMB       $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

               RMB       $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

               RMB       $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
*
               RMB       $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
               RMB       $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
               RMB       $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      
               endsect

               TTL       Structure Formats
               PAG       
************************************
* Module Directory Entry Definitions
*
               csect
               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
               endsect

************************************
* Module Definitions
*
* Universal Module Offsets
*
               csect
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
*

               RMB       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
*
               RMB       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
OSName:        RMB       2                   OS revision name string (nul terminated)
InstallName:   RMB       2                   installation name string (nul terminated)
               RMB       4                   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      
               endsect

* Feature1 byte definitions
CRCOn:         EQU       %00000001           CRC checking on
CRCOff:        EQU       %00000000           CRC checking off
Proc6809:      EQU       %00000000           6809 procesor
Proc6309:      EQU       %00000010           6309 procesor

               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

               csect
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$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
               endsect

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

               csect
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
               endsect

*
* 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
*
               csect
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       *
               endsect

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

               PAG       
****************************
* File Manager Entry Offsets
*
               csect
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
               endsect

*****************************
* Device Driver Entry Offsets
*
               csect
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
               endsect

*********************
* Device Table Format
*
               csect
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       *
               endsect

*******************************
* Device Static Storage Offsets
*
               csect
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
               endsect

********************************
* Interrupt Polling Table Format
*
               csect
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       *
               endsect

********************
* VIRQ packet format
*
               csect
Vi.Cnt:        RMB       2                   count down counter
Vi.Rst:        RMB       2                   reset value for counter
Vi.Stat:       RMB       1                   status byte
               endsect

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
*
               csect
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
               RMB       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
*
               RMB       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$NotRd:       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
               endsect


               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