view defs/os9.d @ 2918:ada61f1951b7

dalpha: Use cmds/makefile from d64 port The only difference was the duplicate dmode in a commands list.
author Tormod Volden <debian.tormod@gmail.com>
date Fri, 17 Jan 2014 22:46:19 +0100
parents 482a547d5155
children 145bbd061aa0
line wrap: on
line source

               IFNE      OS9.D-1

OS9.D        SET       1

********************************************************************
* os9.d - 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       os9.d
               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 ($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

               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
* 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
*
               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$HUP          EQU       S$Window            Hang Up
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
SS.DirEnt      RMB       1                   Reserve bitmap sector (do not allocate in) LSB(X)=sct#
               RMB       3                   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
               IFNE      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
*
               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)
D.DbgMem       RMB       2                   Debug memory pointer
D.DWSubAddr    RMB  	 2                   DriveWire subroutine module pointer
D.DWStat       RMB  	 2                   DriveWire statics page
D.DWSrvID      RMB  	 1                   DriveWire server ID

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

               ORG       $100
*D.XSWI3        RMB       3
*D.XSWI2        RMB       3
*D.XFIRQ        RMB       3
*D.XIRQ         RMB       3
*D.XSWI         RMB       3
*D.XNMI         RMB       3

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

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

* 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
DT.RFM			EQU		6					Remote 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.PkSz        EQU       .

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