Mercurial > hg > Members > kono > nitros9-code
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