Mercurial > hg > Members > kono > nitros9-code
view defs/os9defs @ 1933:1e312b144f4d
Major changes:
CCIO,CC3IO are now VTIO
GrfInt is now CoGrf
WindInt is now CoWin
VDGInt (L2), CO32 (L1) is now CoVDG
CO51 (L1) is now CoHR
CO80 (L1) is now CoWP
All files referencing these have been changed
author | boisy |
---|---|
date | Sat, 26 Nov 2005 21:31:29 +0000 |
parents | cb9a9df15964 |
children | 62dcfa1de339 |
line wrap: on
line source
IFNE OS9DEFS-1 OS9DEFS set 1 ******************************************************************** * OS9Defs - NitrOS-9 System Definitions * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 1985/08/29 KMZ * Fixed DT.SBF/NFM values to 3/4 * * 1985/09/01 KMZ * Added SS.FDInf, SS.Attr to accept 68K request thru NET. * * 1985/09/03 KMZ/Robert F. Doggett * Eliminated E$BPrcID, made Error #238 become E$DNE for * 68000 compatability. * * 1986/04/15 Mark G. Hawkins * F$AlHRAM System call added for COCO. * * 1986/09/08 Mark G. Hawkins * F$Alarm for COCO Clock Module. * * 1986/09/17 Mark G. Hawkins * SS.Tone For COCO. * * 1986/09/23 Mark G. Hawkins * Added F$NMLink and F$NMLoad for COCO. * * 1986/09/30 Mark G. Hawkins * Added Reserved User $70 to $7f in sytem calls. * * 1986/09/30 Mark G. Hawkins * Created Color Computer 3 Version of OS9Defs. * * 1998/10/03 Boisy G. Pitre * Consoldated Level 1/Level 2 os9defs. * * 2002/04/04 Boisy G. Pitre * Consoldated Level 2/Level 2 V3 os9defs. * * 2002/04/30 Boisy G. Pitre * Added NitrOS-9 definitions. * * 2003/05/30 Boisy G. Pitre * Added WD1002 sys vars to Level One section. * * 2003/06/02 Boisy G. Pitre * Fixed incorrectly ordered D.X*** system globals for OS-9 Level One and * changed the sizes from 2 to 3 bytes. * DT.NFM is now the same for both Level One and Level Two. * Added DT.CDFM type for future CD-ROM file manager * * 2003/11/05 Robert Gault * Fixed MouseInf. Made it rmb 2 as it should be. Also changes to init and cc3io. * * 2005/11/02 P.Harvey-Smith. * Added definitions for boot areas on Dragon computers. * nam OS9Defs IFEQ Level-1 ttl NitrOS-9 Level 1 System Symbol Definitions ELSE IFEQ Level-2 ttl NitrOS-9 Level 2 System Symbol Definitions ELSE ttl NitrOS-9 Level 3 System Symbol Definitions ENDC ENDC * Common definitions true equ 1 useful name false equ 0 useful name pag ***************************************** * System Service Request Code Definitions * org 0 F$Link rmb 1 Link to Module F$Load rmb 1 Load Module from File F$UnLink rmb 1 Unlink Module F$Fork rmb 1 Start New Process F$Wait rmb 1 Wait for Child Process to Die F$Chain rmb 1 Chain Process to New Module F$Exit rmb 1 Terminate Process F$Mem rmb 1 Set Memory Size F$Send rmb 1 Send Signal to Process F$Icpt rmb 1 Set Signal Intercept F$Sleep rmb 1 Suspend Process F$SSpd rmb 1 Suspend Process F$ID rmb 1 Return Process ID F$SPrior rmb 1 Set Process Priority F$SSWI rmb 1 Set Software Interrupt F$PErr rmb 1 Print Error F$PrsNam rmb 1 Parse Pathlist Name F$CmpNam rmb 1 Compare Two Names F$SchBit rmb 1 Search Bit Map F$AllBit rmb 1 Allocate in Bit Map F$DelBit rmb 1 Deallocate in Bit Map F$Time rmb 1 Get Current Time F$STime rmb 1 Set Current Time F$CRC rmb 1 Generate CRC IFGT Level-1 * NitrOS-9 Level 2 system calls F$GPrDsc rmb 1 Get Process Descriptor copy F$GBlkMp rmb 1 Get System Block Map copy F$GModDr rmb 1 Get Module Directory copy F$CpyMem rmb 1 Copy External Memory F$SUser rmb 1 Set User ID number F$UnLoad rmb 1 Unlink Module by name F$Alarm rmb 1 Color Computer 3 Alarm Call rmb 2 Reserved - For overlap of other systems F$NMLink rmb 1 Color Computer 3 Non-Mapping Link F$NMLoad rmb 1 Color Computer 3 Non-Mapping Load org $25 F$TPS rmb 1 Return System's Ticks Per Second F$TimAlm rmb 1 CoCo individual process alarm call ENDC org $27 Beginning of System Reserved Calls F$VIRQ rmb 1 Install/Delete Virtual IRQ F$SRqMem rmb 1 System Memory Request F$SRtMem rmb 1 System Memory Return F$IRQ rmb 1 Enter IRQ Polling Table F$IOQu rmb 1 Enter I/O Queue F$AProc rmb 1 Enter Active Process Queue F$NProc rmb 1 Start Next Process F$VModul rmb 1 Validate Module F$Find64 rmb 1 Find Process/Path Descriptor F$All64 rmb 1 Allocate Process/Path Descriptor F$Ret64 rmb 1 Return Process/Path Descriptor F$SSvc rmb 1 Service Request Table Initialization F$IODel rmb 1 Delete I/O Module IFGT Level-1 F$SLink rmb 1 System Link F$Boot rmb 1 Bootstrap System F$BtMem rmb 1 Bootstrap Memory Request F$GProcP rmb 1 Get Process ptr F$Move rmb 1 Move Data (low bound first) F$AllRAM rmb 1 Allocate RAM blocks F$AllImg rmb 1 Allocate Image RAM blocks F$DelImg rmb 1 Deallocate Image RAM blocks F$SetImg rmb 1 Set Process DAT Image F$FreeLB rmb 1 Get Free Low Block F$FreeHB rmb 1 Get Free High Block F$AllTsk rmb 1 Allocate Process Task number F$DelTsk rmb 1 Deallocate Process Task number F$SetTsk rmb 1 Set Process Task DAT registers F$ResTsk rmb 1 Reserve Task number F$RelTsk rmb 1 Release Task number F$DATLog rmb 1 Convert DAT Block/Offset to Logical F$DATTmp rmb 1 Make temporary DAT image (Obsolete) F$LDAXY rmb 1 Load A [X,[Y]] F$LDAXYP rmb 1 Load A [X+,[Y]] F$LDDDXY rmb 1 Load D [D+X,[Y]] F$LDABX rmb 1 Load A from 0,X in task B F$STABX rmb 1 Store A at 0,X in task B F$AllPrc rmb 1 Allocate Process Descriptor F$DelPrc rmb 1 Deallocate Process Descriptor F$ELink rmb 1 Link using Module Directory Entry F$FModul rmb 1 Find Module Directory Entry F$MapBlk rmb 1 Map Specific Block F$ClrBlk rmb 1 Clear Specific Block F$DelRAM rmb 1 Deallocate RAM blocks F$GCMDir rmb 1 Pack module directory F$AlHRAM rmb 1 Allocate HIGH RAM Blocks * Alan DeKok additions * F$ReBoot has been renamed to F$Debug *F$ReBoot rmb 1 Reboot machine (reload OS9Boot) or drop to RSDOS F$Debug rmb 1 Drop the system into the debugger F$CRCMod rmb 1 CRC mode, toggle or report current status F$XTime rmb 1 Get Extended time packet from RTC (fractions of second) F$VBlock rmb 1 Verify modules in a block of memory, add to module directory ENDC * * Numbers $70 through $7F are reserved for user definitions * org $70 IFEQ Level-1 rmb 16 Reserved for user definition ELSE F$RegDmp rmb 1 Ron Lammardo's debugging register dump F$NVRAM rmb 1 Non Volatile RAM (RTC battery backed static) read/write rmb $80-. Reserved for user definitions ENDC pag ************************************** * I/O Service Request Code Definitions * org $80 I$Attach rmb 1 Attach I/O Device I$Detach rmb 1 Detach I/O Device I$Dup rmb 1 Duplicate Path I$Create rmb 1 Create New File I$Open rmb 1 Open Existing File I$MakDir rmb 1 Make Directory File I$ChgDir rmb 1 Change Default Directory I$Delete rmb 1 Delete File I$Seek rmb 1 Change Current Position I$Read rmb 1 Read Data I$Write rmb 1 Write Data I$ReadLn rmb 1 Read Line of ASCII Data I$WritLn rmb 1 Write Line of ASCII Data I$GetStt rmb 1 Get Path Status I$SetStt rmb 1 Set Path Status I$Close rmb 1 Close Path I$DeletX rmb 1 Delete from current exec dir ******************* * File Access Modes * READ. equ %00000001 WRITE. equ %00000010 UPDAT. equ READ.+WRITE. EXEC. equ %00000100 PREAD. equ %00001000 PWRIT. equ %00010000 PEXEC. equ %00100000 SHARE. equ %01000000 DIR. equ %10000000 ISIZ. equ %00100000 ************** * Signal Codes * org 0 S$Kill rmb 1 Non-Interceptable Abort S$Wake rmb 1 Wake-up Sleeping Process S$Abort rmb 1 Keyboard Abort S$Intrpt rmb 1 Keyboard Interrupt S$Window rmb 1 Window Change S$Alarm rmb 1 CoCo individual process' alarm signal pag ********************************** * Status Codes for GetStat/GetStat * org 0 SS.Opt rmb 1 Read/Write PD Options SS.Ready rmb 1 Check for Device Ready SS.Size rmb 1 Read/Write File Size SS.Reset rmb 1 Device Restore SS.WTrk rmb 1 Device Write Track SS.Pos rmb 1 Get File Current Position SS.EOF rmb 1 Test for End of File SS.Link rmb 1 Link to Status routines SS.ULink rmb 1 Unlink Status routines SS.Feed rmb 1 issue form feed SS.Frz rmb 1 Freeze DD. information SS.SPT rmb 1 Set DD.TKS to given value SS.SQD rmb 1 Sequence down hard disk SS.DCmd rmb 1 Send direct command to disk SS.DevNm rmb 1 Return Device name (32-bytes at [X]) SS.FD rmb 1 Return File Descriptor (Y-bytes at [X]) SS.Ticks rmb 1 Set Lockout honor duration SS.Lock rmb 1 Lock/Release record SS.DStat rmb 1 Return Display Status (CoCo) SS.Joy rmb 1 Return Joystick Value (CoCo) SS.BlkRd rmb 1 Block Read SS.BlkWr rmb 1 Block Write SS.Reten rmb 1 Retension cycle SS.WFM rmb 1 Write File Mark SS.RFM rmb 1 Read past File Mark SS.ELog rmb 1 Read Error Log SS.SSig rmb 1 Send signal on data ready SS.Relea rmb 1 Release device SS.AlfaS rmb 1 Return Alfa Display Status (CoCo, SCF/GetStat) SS.Attr equ SS.AlfaS to serve 68K/RBF/SetStat only, thru NET SS.Break rmb 1 Send break signal out acia SS.RsBit rmb 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# rmb 1 reserved SS.FDInf equ $20 to serve 68K/RBF/GetStat only, thru NET rmb 4 reserve $20-$23 for Japanese version (Hoshi) SS.SetMF rmb 1 reserve $24 for Gimix G68 (Flex compatability?) SS.Cursr rmb 1 Cursor information for COCO SS.ScSiz rmb 1 Return screen size for COCO SS.KySns rmb 1 Getstat/SetStat for COCO keyboard SS.ComSt rmb 1 Getstat/SetStat for Baud/Parity SS.Open rmb 1 SetStat to tell driver a path was opened SS.Close rmb 1 SetStat to tell driver a path was closed SS.HngUp rmb 1 SetStat to tell driver to hangup phone SS.FSig rmb 1 new signal for temp locked files SS.DSize equ SS.ScSiz Return disk size (RBF GetStat) SS.VarSect equ SS.DStat Variable Sector Size (RBF GetStat) * System Specific and User defined codes above $80 org $80 SS.AAGBf rmb 1 SetStat to Allocate Additional Graphic Buffer SS.SLGBf rmb 1 SetStat to Select a different Graphic Buffer SS.Mount rmb 1 Network 4 Mount Setstat SS.RdNet rmb 1 Read Raw Sector from Network 4 Omnidrive SS.MpGPB rmb 1 SetStat to request a Get/Put Buffer be mapped in workspace SS.Slots rmb 1 Network 4 slots? getstat IFGT Level-1 * Level 2 Windowing SS.WnSet rmb 1 Set up High Level Windowing Information SS.MnSel rmb 1 Request High level Menu Handler take determine next event SS.SBar rmb 1 SetStat to set position block on Window scroll bars SS.Mouse rmb 1 Return Mouse information packet (COCO) SS.MsSig rmb 1 SetStat to tell driver to send signal on mouse event SS.AScrn rmb 1 Allocate a screen for application poking SS.DScrn rmb 1 Display a screen allocated by SS.AScrn SS.FScrn rmb 1 Free a screen allocated by SS.AScrn SS.PScrn rmb 1 Polymorph Screen into different screen type SS.ScInf rmb 1 Get Current screen info for direct writes rmb 1 Reserved SS.Palet rmb 1 Return palette information SS.Montr rmb 1 Get and Set Monitor Type SS.ScTyp rmb 1 Get screen type information SS.GIP rmb 1 Global Input Parameters (SetStat) SS.UMBar rmb 1 update menu bar (SetStat) SS.FBRgs rmb 1 return color registers (GetStat) SS.DfPal rmb 1 set/return default palette registers (Getstat/Setstat) SS.Tone rmb 1 Generate a tone using 6 bit sound SS.GIP2 rmb 1 Global Input Params #2 (L2V3) SS.AnPal rmb 1 Animate palettes (L2V3) SS.FndBf rmb 1 Find named buffer (L2V3) * sc6551 defined SS.CDSta equ SS.GIP2 SS.CDSig equ SS.AnPal SS.CDRel equ SS.FndBf ELSE * These are wide open in Level 1 rmb 19 * sc6551 defined SS.CDSta rmb 1 SS.CDSig rmb 1 SS.CDRel rmb 1 ENDC org $A0 * * New Default SCF input buffer Set status call SS.Fill rmb 1 Pre-load SCF device input buffer SS.Hist rmb 1 Enable command-line history easily org $B0 * * New WDDisk get/set status calls SS.ECC rmb 1 ECC corrected data error enable/disable (GetStat/SetStat) * IFGT Level-1 * VRN get/set status calls. Named by Alan DeKok. SS.VCtr equ $80 Return FS2 total VIRQ counter SS.VSig equ $81 Return FS2 number of signals sent SS.FClr equ $81 Set/clear FS2 VIRQ SS.FSet equ $C7 Set FS2+ VIRQ SS.KSet equ $C8 Set KQ3 VIRQ SS.KClr equ $C9 Clr KQ3 VIRQ SS.ARAM equ $CA Allocate RAM blocks SS.DRAM equ $CB De-allocate RAM blocks * SDisk 3 Definition Equates SS.DRead equ SS.AAGBf SDisk3 Direct Sector Read ($80) SS.DWrit equ SS.DRead SDisk3 Direct sector Write ($80) SS.UnFrz equ SS.SLGBf SDisk3 UNFreeze DD info ($81) SS.MOFF equ SS.Mount SDisk3 fast motor off call ($82) SS.MoTim equ SS.RdNet SDisk3 Set motor shut off time ($83) SS.SDRD equ SS.MpGPB SDisk3 System direct read ($84) SS.SDWRT equ SS.SDRD SDisk3 System direct writes ($84) SS.Sleep equ SS.Slots SDisk3 (DMC ONLY) Enable/disable F$Sleep calls in read/write 1773 I/O ($85) SS.DrvCh equ SS.WnSet SDisk3 (DMC ONLY) Set drive number to cache, or return drive number being cached ($86) ENDC ttl Direct Page Definitions pag ********************************** * Direct Page Variable Definitions * IFEQ Level-1 * Level 1 DP vars org $00 D.WDAddr rmb 2 FHL/Isted WD1002-05 interface base address D.WDBtDr rmb 1 FHL/Isted WD1002-05 boot physical device drive num. D.SWPage rmb 1 SmartWatch page # (see clock2_smart) rmb 5 D.COCOXT rmb 1 Busy flag for CoCo-XT driver (one drive at a time) org $20 D.FMBM rmb 4 Free memory bit map pointers D.MLIM rmb 2 Memory limit $24 D.ModDir rmb 4 Module directory $26 D.Init rmb 2 Rom base address $2A D.SWI3 rmb 2 Swi3 vector $2C D.SWI2 rmb 2 Swi2 vector $2E D.FIRQ rmb 2 Firq vector $30 D.IRQ rmb 2 Irq vector $32 D.SWI rmb 2 Swi vector $34 D.NMI rmb 2 Nmi vector $36 D.SvcIRQ rmb 2 Interrupt service entry $38 D.Poll rmb 2 Interrupt polling routine $3A D.UsrIRQ rmb 2 User irq routine $3C D.SysIRQ rmb 2 System irq routine $3E D.UsrSvc rmb 2 User service request routine $40 D.SysSvc rmb 2 System service request routine $42 D.UsrDis rmb 2 User service request dispatch table D.SysDis rmb 2 System service reuest dispatch table D.Slice rmb 1 Process time slice count $48 D.PrcDBT rmb 2 Process descriptor block address $49 D.Proc rmb 2 Process descriptor address $4B D.AProcQ rmb 2 Active process queue $4D D.WProcQ rmb 2 Waiting process queue $4F D.SProcQ rmb 2 Sleeping process queue $51 D.Time equ . Time D.Year rmb 1 $53 D.Month rmb 1 $54 D.Day rmb 1 $55 D.Hour rmb 1 $56 D.Min rmb 1 $57 D.Sec rmb 1 $58 D.Tick rmb 1 $59 D.TSec rmb 1 Ticks / second $5A D.TSlice rmb 1 Ticks / time-slice $5B D.IOML rmb 2 I/O mgr free memory low bound $5C D.IOMH rmb 2 I/O mgr free memory hi bound $5E D.DevTbl rmb 2 Device driver table addr $60 D.PolTbl rmb 2 Irq polling table addr $62 D.PthDBT rmb 2 Path descriptor block table addr $64 D.BTLO rmb 2 Bootstrap low address $66 D.BTHI rmb 2 Bootstrap hi address $68 D.DMAReq rmb 1 DMA in use flag $6A D.AltIRQ rmb 2 Alternate IRQ vector (CC) $6B D.KbdSta rmb 2 Keyboard scanner static storage (CC) $6D D.DskTmr rmb 2 Disk Motor Timer (CC) $6F D.CBStrt rmb 16 reserved for CC warmstart ($71) D.Clock rmb 2 Address of Clock Tick Routine (CC) $81 D.Boot rmb 1 Bootstrap attempted flag D.URtoSs rmb 2 address of user to system routine (VIRQ) $84 D.CLTb rmb 2 Pointer to clock interrupt table (VIRQ) $86 D.MDREG rmb 1 6309 MD (mode) shadow register $88 (added in V2.01.00) D.CRC rmb 1 CRC checking mode flag $89 (added in V2.01.00) D.Clock2 rmb 2 CC Clock2 entry address org $100 D.XSWI3 rmb 3 D.XSWI2 rmb 3 D.XSWI rmb 3 D.XNMI rmb 3 D.XIRQ rmb 3 D.XFIRQ rmb 3 * Table Sizes BMAPSZ equ 32 Bitmap table size SVCTNM equ 2 Number of service request tables SVCTSZ equ (256-BMAPSZ)/SVCTNM-2 Service request table size ELSE * Level 2 DP vars org $00 D.WDAddr rmb 2 FHL/Isted WD1002-05 interface base address D.WDBtDr rmb 1 FHL/Isted WD1002-05 boot physical device drive num. D.SWPage rmb 1 SmartWatch page # (see clock2_smart) rmb 5 D.COCOXT rmb 1 Busy flag for CoCo-XT driver (one drive at a time) org $20 D.Tasks rmb 2 Task User Table D.TmpDAT rmb 2 Temporary DAT Image stack D.Init rmb 2 Initialization Module ptr D.Poll rmb 2 Interrupt Polling Routine ptr D.Time equ . System Time D.Year rmb 1 D.Month rmb 1 D.Day rmb 1 D.Hour rmb 1 D.Min rmb 1 D.Sec rmb 1 D.Tick rmb 1 D.Slice rmb 1 current slice remaining D.TSlice rmb 1 Ticks per Slice D.Boot rmb 1 Bootstrap attempted flag D.MotOn rmb 1 Floppy Disk Motor-On time out D.ErrCod rmb 1 Reset Error Code D.Daywk rmb 1 day of week, com-trol clock D.TkCnt rmb 1 Tick Counter D.BtPtr rmb 2 Address of Boot in System Address space D.BtSz rmb 2 Size of Boot IFNE H6309 D.MDREG rmb 1 6309 MD (mode) shadow register ELSE rmb 1 Currently unused in NitrOS-9/6809 ENDC D.CRC rmb 1 CRC checking mode flag D.Tenths rmb 1 Tenths and hundredths of second for F$Xtime D.Task1N rmb 1 Map type 1 task number*2 - offset into [D.TskIPt] D.Quick rmb 1 Quick system call return flag - 0 =stack is at $FEE1 D.QIRQ rmb 1 Quick IRQ flag - 0 =IRQ wasn't clock, so quick return org $40 D.BlkMap rmb 4 Memory Block Map ptr D.ModDir rmb 4 Module Directory ptrs D.PrcDBT rmb 2 Process Descriptor Block Table ptr D.SysPrc rmb 2 System Process Descriptor ptr D.SysDAT rmb 2 System DAT Image ptr D.SysMem rmb 2 System Memory Map ptr D.Proc rmb 2 Current Process ptr D.AProcQ rmb 2 Active Process Queue D.WProcQ rmb 2 Waiting Process Queue D.SProcQ rmb 2 Sleeping Process Queue D.ModEnd rmb 2 Module Directory end ptr D.ModDAT rmb 2 Module Dir DAT image end ptr D.CldRes rmb 2 Cold Restart vector D.BtBug rmb 3 Boot debug information D.Pipe rmb 2 org $6B D.Crash rmb 6 Pointer to CC Crash Routine D.CBStrt rmb $B Reserved for CC warmstart ($71) D.QCnt rmb 1 Count of number of quick system calls performed org $80 D.DevTbl rmb 2 I/O Device Table D.PolTbl rmb 2 I/O Polling Table rmb 4 reserved D.PthDBT rmb 2 Path Descriptor Block Table ptr D.DMAReq rmb 1 DMA Request flag ******** * CoCo 3 STUFF COMES NEXT * This area is used for the CoCo Hardware Registers * org $90 D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90) D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91) D.IRQER rmb 1 Interrupt enable regsiter ($FF92) D.FRQER rmb 1 Fast Interrupt enable register ($FF93) D.TIMMS rmb 1 Timer most significant nibble ($FF94) D.TIMLS rmb 1 Timer least significant byte ($FF95) D.RESV1 rmb 1 reserved register ($FF96) D.RESV2 rmb 1 reserved register ($FF97) D.VIDMD rmb 1 video mode register ($FF98) D.VIDRS rmb 1 video resolution register ($FF99) D.BORDR rmb 1 border register ($FF9A) D.RESV3 rmb 1 reserved register ($FF9B) D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C) D.VOFF1 rmb 1 vertical offset 1 register ($FF9D) D.VOFF0 rmb 1 vertical offset 0 register ($FF9E) D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F) D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast ($A0) D.TskIPt rmb 2 Task image Pointer table (CC) ($A1) D.MemSz rmb 1 128/512K memory flag (CC) ($A3) D.SSTskN rmb 1 System State Task Number (COCO) ($A4) D.CCMem rmb 2 Pointer to beginning of CC Memory ($A5) D.CCStk rmb 2 Pointer to top of CC Memory ($A7) D.Flip0 rmb 2 Change to Task 0 ($A9) D.Flip1 rmb 2 Change to reserved Task 1 ($AB) D.VIRQ rmb 2 VIRQ Polling routine ($AD) D.IRQS rmb 1 IRQ shadow register (CC Temporary) ($AF) D.CLTb rmb 2 VIRQ Table address ($B0) D.AltIRQ rmb 2 Alternate IRQ Vector (CC) ($B2) D.GPoll rmb 2 CC GIME IRQ enable/disable toggle D.Clock2 rmb 2 CC Clock2 entry address org $C0 D.SysSvc rmb 2 System Service Routine entry D.SysDis rmb 2 System Service Dispatch Table ptr D.SysIRQ rmb 2 System IRQ Routine entry D.UsrSvc rmb 2 User Service Routine entry D.UsrDis rmb 2 User Service Dispatch Table ptr D.UsrIRQ rmb 2 User IRQ Routine entry D.SysStk rmb 2 System stack D.SvcIRQ rmb 2 In-System IRQ service D.SysTsk rmb 1 System Task number org $E0 D.Clock rmb 2 D.XSWI3 rmb 2 D.XSWI2 rmb 2 D.XFIRQ rmb 2 D.XIRQ rmb 2 D.XSWI rmb 2 D.XNMI rmb 2 D.ErrRst rmb 2 D.SysVec rmb 2 F$xxx system call vector for NitrOS-9 Level 3 D.SWI3 rmb 2 D.SWI2 rmb 2 D.FIRQ rmb 2 D.IRQ rmb 2 D.SWI rmb 2 D.NMI rmb 2 ************************* * Level 2 Block Map flags * NotRAM equ %10000000 Block Not RAM flag VidRAM equ %00000100 Block is being used as Video RAM ModBlock equ %00000010 Module in Block RAMinUse equ %00000001 RAM Block in use flag * * Service Dispatch Table special entries * IOEntry equ 254 ENDC ttl Structure Formats pag ************************************ * Module Directory Entry Definitions * org 0 IFGT Level-1 MD$MPDAT rmb 2 Module DAT Image ptr MD$MBSiz rmb 2 Memory Block size ENDC MD$MPtr rmb 2 Module ptr MD$Link rmb 2 Module Link count MD$ESize equ . Module Directory Entry size ************************************ * Module Definitions * * Universal Module Offsets * org 0 M$ID rmb 2 ID Code M$Size rmb 2 Module Size M$Name rmb 2 Module Name M$Type rmb 1 Type / Language M$Revs rmb 1 Attributes / Revision Level M$Parity rmb 1 Header Parity M$IDSize equ . Module ID Size * * Type-Dependent Module Offsets * * System, File Manager, Device Driver, Program Module * M$Exec rmb 2 Execution Entry Offset * * Device Driver, Program Module * M$Mem rmb 2 Stack Requirement * * Device Driver, Device Descriptor Module * M$Mode rmb 1 Device Driver Mode Capabilities * * Device Descriptor Module * org M$IDSize M$FMgr rmb 2 File Manager Name Offset M$PDev rmb 2 Device Driver Name Offset rmb 1 M$Mode (defined above) M$Port rmb 3 Port Address M$Opt rmb 1 Device Default Options M$DTyp rmb 1 Device Type IT.DTP equ M$DTyp Descriptor type offset * * Configuration Module Entry Offsets * org M$IDSize MaxMem rmb 3 Maximum Free Memory PollCnt rmb 1 Entries in Interrupt Polling Table DevCnt rmb 1 Entries in Device Table InitStr rmb 2 Initial Module Name SysStr rmb 2 System Device Name StdStr rmb 2 Standard I/O Pathlist BootStr rmb 2 Bootstrap Module name ProtFlag rmb 1 Write protect enable flag OSLevel rmb 1 OS level OSVer rmb 1 OS version OSMajor rmb 1 OS major OSMinor rmb 1 OS minor Feature1 rmb 1 feature byte 1 Feature2 rmb 1 feature byte 2 rmb 8 reserved for future use IFGT Level-1 * -- VTIO area -- (NitrOS-9 Level 2 and above) * MonType rmb 1 Monitor type (0=CMP,1=RGB,2=MONO) MouseInf rmb 2 Mouse resolution/Mouse port; was 1, major error RG. KeyRptS rmb 1 Key repeat start constant KeyRptD rmb 1 Key repeat delay constant ENDC * Feature1 byte definitions CRCOn equ %00000001 CRC checking on CRCOff equ %00000000 CRC checking off pag ************************** * Module Field Definitions * * ID Field - First two bytes of a NitrOS-9 module * M$ID1 equ $87 Module ID code byte one M$ID2 equ $CD Module ID code byte two M$ID12 equ M$ID1*256+M$ID2 * * Module Type/Language Field Masks * TypeMask equ %11110000 Type Field LangMask equ %00001111 Language Field * * Module Type Values * Devic equ $F0 Device Descriptor Module Drivr equ $E0 Physical Device Driver FlMgr equ $D0 File Manager Systm equ $C0 System Module ShellSub equ $50 Shell+ shell sub module Data equ $40 Data Module Multi equ $30 Multi-Module Sbrtn equ $20 Subroutine Module Prgrm equ $10 Program Module * * Module Language Values * Objct equ 1 6809 Object Code Module ICode equ 2 Basic09 I-code PCode equ 3 Pascal P-code CCode equ 4 C I-code CblCode equ 5 Cobol I-code FrtnCode equ 6 Fortran I-code Obj6309 equ 7 6309 object code * * Module Attributes / Revision byte * * Field Masks * AttrMask equ %11110000 Attributes Field RevsMask equ %00001111 Revision Level Field * * Attribute Flags * ReEnt equ %10000000 Re-Entrant Module ModProt equ %01000000 Gimix Module protect bit (0=protected, 1=write enable) ModNat equ %00100000 6309 native mode attribute ******************** * Device Type Values * * These values define various classes of devices, which are * managed by a file manager module. The Device Type is embedded * in a device's device descriptor. * DT.SCF equ 0 Sequential Character File Manager DT.RBF equ 1 Random Block File Manager DT.Pipe equ 2 Pipe File Manager DT.SBF equ 3 Sequential Block File Manager DT.NFM equ 4 Network File Manager DT.CDFM equ 5 CD-ROM File Manager ********************* * CRC Result Constant * CRCCon1 equ $80 CRCCon23 equ $0FE3 ttl Process Information pag ******************************** * Process Descriptor Definitions * IFEQ Level-1 * Level 1 process descriptor defs DefIOSiz equ 12 NumPaths equ 16 Number of Local Paths org 0 P$ID rmb 1 Process ID P$PID rmb 1 Parent's ID P$SID rmb 1 Sibling's ID P$CID rmb 1 Child's ID P$SP rmb 2 Stack ptr P$CHAP rmb 1 process chapter number P$ADDR rmb 1 user address beginning page number P$PagCnt rmb 1 Memory Page Count P$User rmb 2 User Index $09 P$Prior rmb 1 Priority $0B P$Age rmb 1 Age $0C P$State rmb 1 Status $0D P$Queue rmb 2 Queue Link (Process ptr) $0E P$IOQP rmb 1 Previous I/O Queue Link (Process ID) $10 P$IOQN rmb 1 Next I/O Queue Link (Process ID) P$PModul rmb 2 Primary Module P$SWI rmb 2 SWI Entry Point P$SWI2 rmb 2 SWI2 Entry Point P$SWI3 rmb 2 SWI3 Entry Point $18 P$DIO rmb DefIOSiz default I/O ptrs $1A P$PATH rmb NumPaths I/O path table $26 P$Signal rmb 1 Signal Code $36 P$SigVec rmb 2 Signal Intercept Vector P$SigDat rmb 2 Signal Intercept Data Address P$NIO rmb 4 additional dio pointers for net rmb $40-. unused P$Size equ . Size of Process Descriptor * * Process State Flags * SysState equ %10000000 TimSleep equ %01000000 TimOut equ %00100000 ImgChg equ %00010000 Condem equ %00000010 Dead equ %00000001 ELSE * Level 2 process descriptor defs DefIOSiz equ 16 Default I/O Data Length NefIOSiz equ 12 On-Net Default I/O Data Length NumPaths equ 16 Number of Local Paths org 0 P$ID rmb 1 Process ID P$PID rmb 1 Parent's ID P$SID rmb 1 Sibling's ID P$CID rmb 1 Child's ID P$SP rmb 2 Stack ptr P$Task rmb 1 Task Number P$PagCnt rmb 1 Memory Page Count P$User rmb 2 User Index P$Prior rmb 1 Priority P$Age rmb 1 Age P$State rmb 1 Status P$Queue rmb 2 Queue Link (Process ptr) P$IOQP rmb 1 Previous I/O Queue Link (Process ID) P$IOQN rmb 1 Next I/O Queue Link (Process ID) P$PModul rmb 2 Primary Module P$SWI rmb 2 SWI Entry Point P$SWI2 rmb 2 SWI2 Entry Point P$SWI3 rmb 2 SWI3 Entry Point P$Signal rmb 1 Signal Code P$SigVec rmb 2 Signal Intercept Vector P$SigDat rmb 2 Signal Intercept Data Address P$DeadLk rmb 1 Dominant proc ID if I/O locked rmb $20-. unused P$DIO rmb DefIOSiz Default I/O ptrs P$Path rmb NumPaths I/O Path Table P$DATImg rmb 64 DAT Image P$Links rmb 32 Block Link counts P$NIO rmb 6*2 additional DIO ptrs for net, compatible with 68k P$SelP rmb 1 Selected Path for COCO Windows (Default 0) P$UTicks rmb 4 proc User Tick counter (L2V3) P$STicks rmb 4 proc System Tick counter (L2V3) P$FCalls rmb 4 proc F$ call counter (L2V3) P$ICalls rmb 4 proc I$ call counter (L2V3) P$DatBeg rmb 3 proc Date of creation (Y/M/D) (L2V3) P$TimBeg rmb 3 proc Time of creation (H/M/S) (L2V3) P$Alarm rmb 6 rmb $200-. Local stack P$Stack equ . Top of Stack P$Size equ . Size of Process Descriptor * * Process State Flags * SysState equ %10000000 TimSleep equ %01000000 TimOut equ %00100000 ImgChg equ %00010000 Suspend equ %00001000 Condem equ %00000010 Dead equ %00000001 ENDC ttl NitrOS-9 I/O Symbolic Definitions pag ************************* * Path Descriptor Offsets * org 0 PD.PD rmb 1 Path Number PD.MOD rmb 1 Mode (Read/Write/Update) PD.CNT rmb 1 Number of Open Images PD.DEV rmb 2 Device Table Entry Address PD.CPR rmb 1 Current Process PD.RGS rmb 2 Caller's Register Stack PD.BUF rmb 2 Buffer Address PD.FST rmb 32-. File Manager's Storage PD.OPT equ . PD GetSts(0) Options PD.DTP rmb 1 Device Type rmb 64-. Path options PDSIZE equ . * * Pathlist Special Symbols * PDELIM equ '/ Pathlist Name Separator PDIR equ '. Directory PENTIR equ '@ Entire Device pag **************************** * File Manager Entry Offsets * org 0 FMCREA rmb 3 Create (Open New) File FMOPEN rmb 3 Open File FMMDIR rmb 3 Make Directory FMCDIR rmb 3 Change Directory FMDLET rmb 3 Delete File FMSEEK rmb 3 Position File FMREAD rmb 3 Read from File FMWRIT rmb 3 Write to File FMRDLN rmb 3 ReadLn FMWRLN rmb 3 WritLn FMGSTA rmb 3 Get File Status FMSSTA rmb 3 Set File Status FMCLOS rmb 3 Close File ***************************** * Device Driver Entry Offsets * org 0 D$INIT rmb 3 Device Initialization D$READ rmb 3 Read from Device D$WRIT rmb 3 Write to Device D$GSTA rmb 3 Get Device Status D$PSTA rmb 3 Put Device Status D$TERM rmb 3 Device Termination ********************* * Device Table Format * org 0 V$DRIV rmb 2 Device Driver module V$STAT rmb 2 Device Driver Static storage V$DESC rmb 2 Device Descriptor module V$FMGR rmb 2 File Manager module V$USRS rmb 1 use count IFGT Level-1 V$DRIVEX rmb 2 Device Driver execution address V$FMGREX rmb 2 File Manager execution address ENDC DEVSIZ equ . ******************************* * Device Static Storage Offsets * org 0 V.PAGE rmb 1 Port Extended Address V.PORT rmb 2 Device 'Base' Port Address V.LPRC rmb 1 Last Active Process ID V.BUSY rmb 1 Active Process ID (0=UnBusy) V.WAKE rmb 1 Active PD if Driver MUST Wake-up V.USER equ . Driver Allocation Origin ******************************** * Interrupt Polling Table Format * org 0 Q$POLL rmb 2 Absolute Polling Address Q$FLIP rmb 1 Flip (EOR) Byte ..normally Zero Q$MASK rmb 1 Polling Mask (after Flip) Q$SERV rmb 2 Absolute Service routine Address Q$STAT rmb 2 Static Storage Address Q$PRTY rmb 1 Priority (Low Numbers=Top Priority) IFGT Level-1 Q$MAP rmb 2 NitrOS-9 Level 2 and above ENDC POLSIZ equ . ******************** * VIRQ packet format * org 0 Vi.Cnt rmb 2 count down counter Vi.Rst rmb 2 reset value for counter Vi.Stat rmb 1 status byte Vi.IFlag equ %00000001 status byte virq flag pag ************************************* * Machine Characteristics Definitions * R$CC equ 0 Condition Codes register R$A equ 1 A Accumulator R$B equ 2 B Accumulator R$D equ R$A Combined A:B Accumulator IFNE H6309 R$E equ 3 E Accumulator R$F equ 4 F Accumulator R$W equ R$E Combined E:F Accumulator R$Q equ R$A Combined A:B:E:F Accumulator R$DP equ 5 Direct Page register R$X equ 6 X Index register R$Y equ 8 Y Index register R$U equ 10 User Stack register R$PC equ 12 Program Counter register R$Size equ 14 Total register package size ELSE R$DP equ 3 Direct Page register R$X equ 4 X Index register R$Y equ 6 Y Index register R$U equ 8 User Stack register R$PC equ 10 Program Counter register R$Size equ 12 Total register package size ENDC * MD register masks * 6309 definitions DIV0 equ %10000000 division by 0 trap flag : 1 = trap occured badinstr equ %01000000 illegal instruction trap flag : 1 = trap occured Entire equ %10000000 Full Register Stack flag FIRQMask equ %01000000 Fast-Interrupt Mask bit HalfCrry equ %00100000 Half Carry flag IRQMask equ %00010000 Interrupt Mask bit Negative equ %00001000 Negative flag Zero equ %00000100 Zero flag TwosOvfl equ %00000010 Two's Comp Overflow flag Carry equ %00000001 Carry bit IntMasks equ IRQMask+FIRQMask Sign equ %10000000 sign bit ttl Error Code Definitions pag ************************ * Error Code Definitions * * Basic09 Error Codes * org 10 E$UnkSym rmb 1 Unknown symbol E$ExcVrb rmb 1 Excessive verbage E$IllStC rmb 1 Illegal statement construction E$ICOvf rmb 1 I-code overflow E$IChRef rmb 1 Illegal channel reference E$IllMod rmb 1 Illegal mode E$IllNum rmb 1 Illegal number E$IllPrf rmb 1 Illegal prefix E$IllOpd rmb 1 Illegal operand E$IllOpr rmb 1 Illegal operator E$IllRFN rmb 1 Illegal record field name E$IllDim rmb 1 Illegal dimension E$IllLit rmb 1 Illegal literal E$IllRet rmb 1 Illegal relational E$IllSfx rmb 1 Illegal type suffix E$DimLrg rmb 1 Dimension too large E$LinLrg rmb 1 Line number too large E$NoAssg rmb 1 Missing assignment statement E$NoPath rmb 1 Missing path number E$NoComa rmb 1 Missing coma E$NoDim rmb 1 Missing dimension E$NoDO rmb 1 Missing DO statement E$MFull rmb 1 Memory full E$NoGoto rmb 1 Missing GOTO E$NoLPar rmb 1 Missing left parenthesis E$NoLRef rmb 1 Missing line reference E$NoOprd rmb 1 Missing operand E$NoRPar rmb 1 Missing right parenthesis E$NoTHEN rmb 1 Missing THEN statement E$NoTO rmb 1 Missing TO statement E$NoVRef rmb 1 Missing variable reference E$EndQou rmb 1 Missing end quote E$SubLrg rmb 1 Too many subscripts E$UnkPrc rmb 1 Unknown procedure E$MulPrc rmb 1 Multiply defined procedure E$DivZer rmb 1 Divice by zero E$TypMis rmb 1 Operand type mismatch E$StrOvf rmb 1 String stack overflow E$NoRout rmb 1 Unimplemented routine E$UndVar rmb 1 Undefined variable E$FltOvf rmb 1 Floating Overflow E$LnComp rmb 1 Line with compiler error E$ValRng rmb 1 Value out of range for destination E$SubOvf rmb 1 Subroutine stack overflow E$SubUnd rmb 1 Subroutine stack underflow E$SubRng rmb 1 Subscript out of range E$ParmEr rmb 1 Paraemter error E$SysOvf rmb 1 System stack overflow E$IOMism rmb 1 I/O type mismatch E$IONum rmb 1 I/O numeric input format bad E$IOConv rmb 1 I/O conversion: number out of range E$IllInp rmb 1 Illegal input format E$IOFRpt rmb 1 I/O format repeat error E$IOFSyn rmb 1 I/O format syntax error E$IllPNm rmb 1 Illegal path number E$WrSub rmb 1 Wrong number of subscripts E$NonRcO rmb 1 Non-record type operand E$IllA rmb 1 Illegal argument E$IllCnt rmb 1 Illegal control structure E$UnmCnt rmb 1 Unmatched control structure E$IllFOR rmb 1 Illegal FOR variable E$IllExp rmb 1 Illegal expression type E$IllDec rmb 1 Illegal declarative statement E$ArrOvf rmb 1 Array size overflow E$UndLin rmb 1 Undefined line number E$MltLin rmb 1 Multiply defined line number E$MltVar rmb 1 Multiply defined variable E$IllIVr rmb 1 Illegal input variable E$SeekRg rmb 1 Seek out of range E$NoData rmb 1 Missing data statement * * System Dependent Error Codes * * Level 2 windowing error codes org 183 E$IWTyp rmb 1 Illegal window type E$WADef rmb 1 Window already defined E$NFont rmb 1 Font not found E$StkOvf rmb 1 Stack overflow E$IllArg rmb 1 Illegal argument rmb 1 reserved E$ICoord rmb 1 Illegal coordinates E$Bug rmb 1 Bug (should never be returned) E$BufSiz rmb 1 Buffer size is too small E$IllCmd rmb 1 Illegal command E$TblFul rmb 1 Screen or window table is full E$BadBuf rmb 1 Bad/Undefined buffer number E$IWDef rmb 1 Illegal window definition E$WUndef rmb 1 Window undefined E$Up rmb 1 Up arrow pressed on SCF I$ReadLn with PD.UP enabled E$Dn rmb 1 Down arrow pressed on SCF I$ReadLn with PD.DOWN enabled E$Alias rmb 1 * * Standard NitrOS-9 Error Codes * org 200 E$PthFul rmb 1 Path Table full E$BPNum rmb 1 Bad Path Number E$Poll rmb 1 Polling Table Full E$BMode rmb 1 Bad Mode E$DevOvf rmb 1 Device Table Overflow E$BMID rmb 1 Bad Module ID E$DirFul rmb 1 Module Directory Full E$MemFul rmb 1 Process Memory Full E$UnkSvc rmb 1 Unknown Service Code E$ModBsy rmb 1 Module Busy E$BPAddr rmb 1 Bad Page Address E$EOF rmb 1 End of File rmb 1 E$NES rmb 1 Non-Existing Segment E$FNA rmb 1 File Not Accesible E$BPNam rmb 1 Bad Path Name E$PNNF rmb 1 Path Name Not Found E$SLF rmb 1 Segment List Full E$CEF rmb 1 Creating Existing File E$IBA rmb 1 Illegal Block Address E$HangUp rmb 1 Carrier Detect Lost E$MNF rmb 1 Module Not Found rmb 1 E$DelSP rmb 1 Deleting Stack Pointer memory E$IPrcID rmb 1 Illegal Process ID E$BPrcID equ E$IPrcID Bad Process ID (formerly #238) rmb 1 E$NoChld rmb 1 No Children E$ISWI rmb 1 Illegal SWI code E$PrcAbt rmb 1 Process Aborted E$PrcFul rmb 1 Process Table Full E$IForkP rmb 1 Illegal Fork Parameter E$KwnMod rmb 1 Known Module E$BMCRC rmb 1 Bad Module CRC E$USigP rmb 1 Unprocessed Signal Pending E$NEMod rmb 1 Non Existing Module E$BNam rmb 1 Bad Name E$BMHP rmb 1 (bad module header parity) E$NoRAM rmb 1 No (System) RAM Available E$DNE rmb 1 Directory not empty E$NoTask rmb 1 No available Task number rmb $F0-. reserved E$Unit rmb 1 Illegal Unit (drive) E$Sect rmb 1 Bad Sector number E$WP rmb 1 Write Protect E$CRC rmb 1 Bad Check Sum E$Read rmb 1 Read Error E$Write rmb 1 Write Error E$NotRdy rmb 1 Device Not Ready E$Seek rmb 1 Seek Error E$Full rmb 1 Media Full E$BTyp rmb 1 Bad Type (incompatable) media E$DevBsy rmb 1 Device Busy E$DIDC rmb 1 Disk ID Change E$Lock rmb 1 Record is busy (locked out) E$Share rmb 1 Non-sharable file busy E$DeadLk rmb 1 I/O Deadlock error IFEQ Level-1 ******************************** * Boot defs for NitrOS-9 Level 1 * * These defs are not strictly for 'Boot', but are for booting the * system. * Bt.Start equ $EE00 Start address of the boot track in memory * Boot area size on Dragon is only 16 sectors=4K IFNE DRAGON Bt.Size equ $1000 Max size of boot file ELSE Bt.Size equ $1080 Maximum size of bootfile ENDC ELSE ****************************************** * Boot defs for NitrOS-9 Level 2 and above * * These defs are not strictly for 'Boot', but are for booting the * system. * Bt.Block equ $3B Block to map in for the 'OS9BOOT' screen Bt.Flag equ $8A34 Flag in Bt.Block to verify that it's unchanged Bt.Offst equ 2 Offset into the screen where the current ptr is Bt.Start equ $ED00 Start address of the boot track in memory ENDC * Boot area on the Dragon starts on track 0 sector 2, imediatly * after the blockmap. * On the CoCo, the boot track is all of track 34 IFNE DRAGON Bt.Track equ 0 Boot track Bt.Sec equ 2 Start LSN of boot area on boot track ELSE Bt.Track equ 34 Boot track Bt.Sec equ 0 Start LSN of boot area on boot track ENDC IFGT Level-2 *************************** * Level 3 Defs * * These definitions apply to NitrOS-9 Level 3 * L3.Start equ $2000 Start off at slot 1 L3.Size equ $40 Go for 64 pages: 2 slots total L3.Blks equ L3.Size/$20 Number of slots L3.End equ L3.Start+L3.Size*$0100 end of L3 memory L3.SCF equ $0660 SCF block ptr L3.RBF equ L3.SCF+1 RBF block ptr ENDC ENDC