changeset 2326:932ba568362f

sys libs now being made here
author boisy
date Wed, 13 Jan 2010 04:38:41 +0000
parents c8aeac0c5fd1
children 035528ccce9e
files defs/makefile defs/os9defs.a
diffstat 2 files changed, 1590 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/defs/makefile	Wed Jan 13 04:38:41 2010 +0000
@@ -0,0 +1,30 @@
+include $(NITROS9DIR)/rules.mak
+
+all: sys6809l1.l sys6809l2.l sys6309l2.l
+
+sys6809l1.l: sys6809l1.a
+
+sys6809l2.l: sys6809l2.a
+
+sys6309l2.l: sys6309l2.a
+
+sys6809l1.a:
+	echo "DRAGON equ 0" > dragon
+	echo "Level equ 1" > level
+	echo "H6309 equ 0" > h6309
+	$(MERGE) dragon level h6309 os9defs.a > $@
+
+sys6809l2.a:
+	echo "DRAGON equ 0" > dragon
+	echo "Level equ 2" > level
+	echo "H6309 equ 0" > h6309
+	$(MERGE) dragon level h6309 os9defs.a > $@
+
+sys6309l2.a:
+	echo "DRAGON equ 0" > dragon
+	echo "Level equ 2" > level
+	echo "H6309 equ 1" > h6309
+	$(MERGE) dragon level h6309 os9defs.a > $@
+
+clean:
+	$(RM) *.l *.r sys6809l1.a sys6809l2.a sys6309l2.a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/defs/os9defs.a	Wed Jan 13 04:38:41 2010 +0000
@@ -0,0 +1,1560 @@
+********************************************************************
+* 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      
+
+               psect     OS9Defs_a,0,0,0,0,0
+
+* 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      
+
+
+
+
+
+********************************************************************
+* SCFDefs - Sequential Character File Manager Definitions
+*
+* $Id$
+*
+* SCF stands for 'Sequential Character Filemanager' and is a package of subroutines
+* that define the logical structure of a serial device.
+*
+* The data structures in this file give SCF its 'personality' and are used
+* by SCF itself, as well as applications that will require disk I/O.
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*          1984/01/11  YO
+* Added V.KANJI, V.KBUF, V.MODADR for new kanji input process.
+*
+*          1985/04/20  Mark G. Hawkins
+* Added V.PDLHd Path Descriptor List Head.
+*
+*          1985/04/21  Mark G. Hawkins
+* Added PD.PLP and PD.PST for modem handling.
+*
+*          1987/06/23  Kevin K. Darling
+* Updated with Dev Desc info.
+*
+*          1998/10/03  Boisy G. Pitre
+* Consolidated L1/L2 scfdefs.
+*
+*          2003/01/21  Boisy G. Pitre
+* Added symbolics for enhanced SCF line editing.
+*
+*          2003/06/02  Boisy G. Pitre
+* Updated comments for clarity.
+*
+*          2004/05/17  Boisy G. Pitre
+* Added higher baud rates.
+
+               NAM       SCFDefs
+               TTL       Sequential File Manager Definitions
+
+               PAG       
+*******************************
+* SCF Device Descriptor Offsets
+*
+* These definitions are for SCF device descriptors.
+
+               csect
+               RMB       M$DTyp
+IT.DVC:        RMB       1                   Device type (DT.SCF)
+IT.UPC:        RMB       1                   Uppercase flag
+IT.BSO:        RMB       1                   Backspace behavior
+IT.DLO:        RMB       1                   Delete behavior
+IT.EKO:        RMB       1                   Echo flag
+IT.ALF:        RMB       1                   Auto linefeed flag
+IT.NUL:        RMB       1                   End-of-line null count
+IT.PAU:        RMB       1                   Page pause flag
+IT.PAG:        RMB       1                   Number of lines per page
+IT.BSP:        RMB       1                   Backspace character
+IT.DEL:        RMB       1                   Delete-line character
+IT.EOR:        RMB       1                   End-of-record character
+IT.EOF:        RMB       1                   End-of-file character
+IT.RPR:        RMB       1                   Reprint-line character
+IT.DUP:        RMB       1                   Duplicate-last-line character
+IT.PSC:        RMB       1                   Pause character
+IT.INT:        RMB       1                   Interrupt character
+IT.QUT:        RMB       1                   Quit character
+IT.BSE:        RMB       1                   Backspace echo character
+IT.OVF:        RMB       1                   Bell character
+IT.PAR:        RMB       1                   Parity
+IT.BAU:        RMB       1                   Baud rate
+IT.D2P:        RMB       2                   Attached device name string offset
+IT.XON:        RMB       1                   X-ON character
+IT.XOF:        RMB       1                   X-OFF character
+IT.COL:        RMB       1                   Number of columns for display
+IT.ROW:        RMB       1                   Number of rows for display
+IT.XTYP:       RMB       1                   Extended type (added by BRI)
+
+*               IFGT      Level-1
+* Window Descriptor Additions
+* For CoCo window, where IT.PAR = $80
+                RMB       IT.ROW+1
+IT.WND:         RMB       1                   Window number (matches device name) ($2E)
+IT.VAL:         RMB       1                   Use defaults on Init (0=no, 1=yes)
+IT.STY:         RMB       1                   Screen type default
+IT.CPX:         RMB       1                   Column start default
+IT.CPY:         RMB       1                   Row start default
+IT.FGC:         RMB       1                   Foreground color default
+IT.BGC:         RMB       1                   Background color default
+IT.BDC:         RMB       1                   Border color default
+*               ENDC      
+               endsect
+
+               PAG       
+********************
+* SCF Static Storage
+*
+* SCF devices must reserve this space for SCF
+*
+               csect
+               RMB       V.USER
+V.TYPE:        RMB       1                   Device type or parity
+V.LINE:        RMB       1                   Lines left until end of page
+V.PAUS:        RMB       1                   Immediate Pause request
+V.DEV2:        RMB       2                   Attached device's static
+V.INTR:        RMB       1                   Interrupt char
+V.QUIT:        RMB       1                   Quit char
+V.PCHR:        RMB       1                   Pause char
+V.ERR:         RMB       1                   Accumulated errors
+V.XON:         RMB       1                   X-On char
+V.XOFF:        RMB       1                   X-Off char
+V.KANJI:       RMB       1                   Kanji mode flag
+V.KBUF:        RMB       2                   Kana - Kanji convert routine work address
+V.MODADR:      RMB       2                   Kana - Kanji convert module address
+V.PDLHd:       RMB       2                   Open path descriptor list head pointer
+V.RSV:         RMB       5                   Reserve bytes for future expansion
+V.SCF:         EQU       *                   Total SCF manager static overhead
+               endsect
+
+               PAG       
+***********************
+* Character Definitions
+*
+C$NULL:        SET       0                   Null char
+C$RPET:        SET       $01                 (CTRL-A - SOH) Repeat last input line
+C$INTR:        SET       $03                 (CTRL-C - ETX) Keyboard interrupt
+C$RPRT:        SET       $04                 (CTRL-D - EOT) Reprint current input line
+C$QUIT:        SET       $05                 (CTRL-E - ENQ) Keyboard Abort
+C$BELL:        SET       $07                 (CTRL-G - BEL) Line overflow warning
+C$BSP:         SET       $08                 (CTRL-H - BS ) Back space
+C$RARR:        SET       $09                 Right Arrow
+C$EL:          SET       $05                 Erase Line
+C$LF:          SET       $0A                 Line feed
+C$HOME:        SET       $0B                 Home position Code
+C$Clsgr:       SET       $15                 Graphic screen clear (use FM-11)
+C$Clsall:      SET       $16                 Graphic & character clear (use FM-11)
+C$CR:          SET       $0D                 Carriage return
+C$FORM:        SET       $0C                 (CTRL-L - FF ) Form Feed ... screen clear
+C$SI:          SET       $0F                 Shift IN Code
+C$SO:          SET       $0E                 Shift OUT Code
+C$DELETE:      SET       $10                 Delete char (for SCF enhanced line editing)
+C$XON:         SET       $11                 (CTRL-Q - DC1) Transmit Enable
+C$INSERT:      SET       C$XON               Insert char (for SCF enhanced line editing)
+C$XOFF:        SET       $13                 (CTRL-S - DC3) Transmit Disable
+C$PLINE:       SET       C$XOFF              Print remaining line (for SCF enhanced line editing)
+C$PAUS:        SET       $17                 (CTRL-W - ETB) Pause character
+C$DEL:         SET       $18                 (CTRL-X - CAN) Delete line
+C$SHRARR:      SET       $19                 Shift Right-Arrow
+C$EOF:         SET       $1B                 (CTRL-[ - ESC) END of file
+C$RGT:         SET       $1C                 Cursor right
+C$LFT:         SET       $1D                 Cursor left
+C$UP:          SET       $1E                 Cursor up
+C$DWN:         SET       $1F                 Cursor down
+C$SPAC:        SET       $20                 Space
+C$PERD:        SET       '.
+C$COMA:        SET       ',
+
+
+               PAG       
+*********************************************
+* Sequential Character Path Descriptor Format
+*
+* A path descriptor is created for every new path that is open
+* via the I$Open system call (processed by IOMan).  Process
+* descriptors track state information of a path.
+*
+               csect
+               RMB       PD.FST
+PD.DV2:        RMB       2                   Output device table pointer
+PD.RAW:        RMB       1                   Read/Write or ReadLn/WritLn mode
+PD.MAX:        RMB       2                   ReadLn high byte count
+PD.MIN:        RMB       1                   Devices are "mine" if clear
+PD.STS:        RMB       2                   Status routine module addr
+PD.STM:        RMB       2                   Reserved for status routine
+               endsect
+
+               csect
+               RMB       PD.OPT
+               RMB       1                   Device type
+PD.UPC:        RMB       1                   Case (0=both, 1=upper only)
+PD.BSO:        RMB       1                   Backspace (0=BSE, 1=BSE,SP,BSE)
+PD.DLO:        RMB       1                   Delete (0=BSE over line, 1=CRLF)
+PD.EKO:        RMB       1                   Echo (0=No Echo)
+PD.ALF:        RMB       1                   Auto linefeed (0=No auto LF)
+PD.NUL:        RMB       1                   End of Line null count
+PD.PAU:        RMB       1                   Page pause (0=No end of page pause)
+PD.PAG:        RMB       1                   Lines per page
+PD.BSP:        RMB       1                   Backspace character
+PD.DEL:        RMB       1                   Delete Line character
+PD.EOR:        RMB       1                   End of Record character (read only)
+PD.EOF:        RMB       1                   End of File character
+PD.RPR:        RMB       1                   Repront Line character
+PD.DUP:        RMB       1                   Dup Last Line character
+PD.PSC:        RMB       1                   Pause character
+PD.INT:        RMB       1                   Keyboard interrupt character (CTRL-C)
+PD.QUT:        RMB       1                   Keyboard quit character (CTRL-E)
+PD.BSE:        RMB       1                   Backspace echo character
+PD.OVF:        RMB       1                   Line overflow character (BELL)
+PD.PAR:        RMB       1                   Parity code
+PD.BAU:        RMB       1                   ACIA baud rate (Color Computer)
+PD.D2P:        RMB       2                   Offset of DEV2 name
+PD.XON:        RMB       1                   ACIA X-ON character
+PD.XOFF:       RMB       1                   ACIA X-OFF character
+OPTCNT         EQU       *-PD.OPT            Total user settable options
+PD.ERR:        RMB       1                   Most recent I/O error status
+PD.TBL:        RMB       2                   Device table addr (copy)
+PD.PLP:        RMB       2                   Path Descriptor List Pointer
+PD.PST:        RMB       1                   Current path status
+               endsect 
+
+* PD.PST values Path Descriptor Status byte
+*
+PST.DCD:       EQU       %00000001           Set if DCD is lost on Serial port
+
+
+* PD.PAR definitions
+*
+* Parity
+PARNONE:       EQU       %00000000
+PARODD:        EQU       %00100000
+PAREVEN:       EQU       %01100000
+PARMARK:       EQU       %10100000
+PARSPACE:      EQU       %11100000
+
+* PD.BAU definitions
+*
+* Baud rate
+B110:          EQU       %00000000
+B300:          EQU       %00000001
+B600:          EQU       %00000010
+B1200:         EQU       %00000011
+B2400:         EQU       %00000100
+B4800:         EQU       %00000101
+B9600:         EQU       %00000110
+B19200:        EQU       %00000111
+B38400:        EQU       %00001000
+B57600:        EQU       %00001001
+B115200:       EQU       %00001010
+* Word size
+WORD8:         EQU       %00000000
+WORD7:         EQU       %00100000
+* Stop bits
+STOP1:         EQU       %00000000
+STOP2:         EQU       %00010000
+
+               endsect