Mercurial > hg > Members > kono > nitros9-code
view defs/os9defs @ 2011:484c5493599a
Slight massaging for looks
author | boisy |
---|---|
date | Mon, 06 Mar 2006 04:08:59 +0000 |
parents | 826227be45a1 |
children | e396d4f24b27 |
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. * * 2006/03/03 Boisy G. Pitre * Added F$Debug and D.DbgMem areas, common to all levels of NitrOS-9 nam OS9Defs IFEQ Level-1 ttl NitrOS-9 Level 1 System Symbol Definitions ELSE IFEQ Level-2 ttl NitrOS-9 Level 2 System Symbol Definitions ELSE ttl NitrOS-9 Level 3 System Symbol Definitions ENDC ENDC * Common definitions true equ 1 useful name false equ 0 useful name pag ***************************************** * System Service Request Code Definitions * org 0 F$Link rmb 1 Link to Module F$Load rmb 1 Load Module from File F$UnLink rmb 1 Unlink Module F$Fork rmb 1 Start New Process F$Wait rmb 1 Wait for Child Process to Die F$Chain rmb 1 Chain Process to New Module F$Exit rmb 1 Terminate Process F$Mem rmb 1 Set Memory Size F$Send rmb 1 Send Signal to Process F$Icpt rmb 1 Set Signal Intercept F$Sleep rmb 1 Suspend Process F$SSpd rmb 1 Suspend Process F$ID rmb 1 Return Process ID F$SPrior rmb 1 Set Process Priority F$SSWI rmb 1 Set Software Interrupt F$PErr rmb 1 Print Error F$PrsNam rmb 1 Parse Pathlist Name F$CmpNam rmb 1 Compare Two Names F$SchBit rmb 1 Search Bit Map F$AllBit rmb 1 Allocate in Bit Map F$DelBit rmb 1 Deallocate in Bit Map F$Time rmb 1 Get Current Time F$STime rmb 1 Set Current Time F$CRC rmb 1 Generate CRC ($17) IFGT Level-1 * NitrOS-9 Level 2 system calls F$GPrDsc rmb 1 Get Process Descriptor copy ($18) F$GBlkMp rmb 1 Get System Block Map copy ($19) F$GModDr rmb 1 Get Module Directory copy ($1A) F$CpyMem rmb 1 Copy External Memory ($1B) F$SUser rmb 1 Set User ID number ($1C) F$UnLoad rmb 1 Unlink Module by name ($1D) F$Alarm rmb 1 Color Computer 3 Alarm Call ($1E) rmb 2 Reserved - For overlap of other systems ($1F) F$NMLink rmb 1 Color Computer 3 Non-Mapping Link ($21) F$NMLoad rmb 1 Color Computer 3 Non-Mapping Load ($22) ELSE * NitrOS-9 Level 1 system call padding rmb 11 ENDC F$Debug rmb 1 Drop the system into the debugger ($23) IFGT Level-1 org $25 F$TPS rmb 1 Return System's Ticks Per Second F$TimAlm rmb 1 CoCo individual process alarm call ENDC org $27 Beginning of System Reserved Calls * NitrOS-9 common system calls F$VIRQ rmb 1 Install/Delete Virtual IRQ F$SRqMem rmb 1 System Memory Request F$SRtMem rmb 1 System Memory Return F$IRQ rmb 1 Enter IRQ Polling Table F$IOQu rmb 1 Enter I/O Queue F$AProc rmb 1 Enter Active Process Queue F$NProc rmb 1 Start Next Process F$VModul rmb 1 Validate Module F$Find64 rmb 1 Find Process/Path Descriptor F$All64 rmb 1 Allocate Process/Path Descriptor F$Ret64 rmb 1 Return Process/Path Descriptor F$SSvc rmb 1 Service Request Table Initialization F$IODel rmb 1 Delete I/O Module IFGT Level-1 F$SLink rmb 1 System Link F$Boot rmb 1 Bootstrap System F$BtMem rmb 1 Bootstrap Memory Request F$GProcP rmb 1 Get Process ptr F$Move rmb 1 Move Data (low bound first) F$AllRAM rmb 1 Allocate RAM blocks F$AllImg rmb 1 Allocate Image RAM blocks F$DelImg rmb 1 Deallocate Image RAM blocks F$SetImg rmb 1 Set Process DAT Image F$FreeLB rmb 1 Get Free Low Block F$FreeHB rmb 1 Get Free High Block F$AllTsk rmb 1 Allocate Process Task number F$DelTsk rmb 1 Deallocate Process Task number F$SetTsk rmb 1 Set Process Task DAT registers F$ResTsk rmb 1 Reserve Task number F$RelTsk rmb 1 Release Task number F$DATLog rmb 1 Convert DAT Block/Offset to Logical F$DATTmp rmb 1 Make temporary DAT image (Obsolete) F$LDAXY rmb 1 Load A [X,[Y]] F$LDAXYP rmb 1 Load A [X+,[Y]] F$LDDDXY rmb 1 Load D [D+X,[Y]] F$LDABX rmb 1 Load A from 0,X in task B F$STABX rmb 1 Store A at 0,X in task B F$AllPrc rmb 1 Allocate Process Descriptor F$DelPrc rmb 1 Deallocate Process Descriptor F$ELink rmb 1 Link using Module Directory Entry F$FModul rmb 1 Find Module Directory Entry F$MapBlk rmb 1 Map Specific Block F$ClrBlk rmb 1 Clear Specific Block F$DelRAM rmb 1 Deallocate RAM blocks F$GCMDir rmb 1 Pack module directory F$AlHRAM rmb 1 Allocate HIGH RAM Blocks * Alan DeKok additions F$ReBoot rmb 1 Reboot machine (reload OS9Boot) or drop to RSDOS F$CRCMod rmb 1 CRC mode, toggle or report current status F$XTime rmb 1 Get Extended time packet from RTC (fractions of second) F$VBlock rmb 1 Verify modules in a block of memory, add to module directory ENDC * * Numbers $70 through $7F are reserved for user definitions * org $70 IFEQ Level-1 rmb 16 Reserved for user definition ELSE F$RegDmp rmb 1 Ron Lammardo's debugging register dump F$NVRAM rmb 1 Non Volatile RAM (RTC battery backed static) read/write rmb $80-. Reserved for user definitions ENDC pag ************************************** * I/O Service Request Code Definitions * org $80 I$Attach rmb 1 Attach I/O Device I$Detach rmb 1 Detach I/O Device I$Dup rmb 1 Duplicate Path I$Create rmb 1 Create New File I$Open rmb 1 Open Existing File I$MakDir rmb 1 Make Directory File I$ChgDir rmb 1 Change Default Directory I$Delete rmb 1 Delete File I$Seek rmb 1 Change Current Position I$Read rmb 1 Read Data I$Write rmb 1 Write Data I$ReadLn rmb 1 Read Line of ASCII Data I$WritLn rmb 1 Write Line of ASCII Data I$GetStt rmb 1 Get Path Status I$SetStt rmb 1 Set Path Status I$Close rmb 1 Close Path I$DeletX rmb 1 Delete from current exec dir ******************* * File Access Modes * READ. equ %00000001 WRITE. equ %00000010 UPDAT. equ READ.+WRITE. EXEC. equ %00000100 PREAD. equ %00001000 PWRIT. equ %00010000 PEXEC. equ %00100000 SHARE. equ %01000000 DIR. equ %10000000 ISIZ. equ %00100000 ************** * Signal Codes * org 0 S$Kill rmb 1 Non-Interceptable Abort S$Wake rmb 1 Wake-up Sleeping Process S$Abort rmb 1 Keyboard Abort S$Intrpt rmb 1 Keyboard Interrupt S$Window rmb 1 Window Change S$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 * org $00 D.WDAddr rmb 2 FHL/Isted WD1002-05 interface base address D.WDBtDr rmb 1 FHL/Isted WD1002-05 boot physical device drive num. D.SWPage rmb 1 SmartWatch page # (see clock2_smart) rmb 5 D.COCOXT rmb 1 Busy flag for CoCo-XT driver (one drive at a time) D.DbgMem rmb 2 Debug memory pointer org $20 IFEQ Level-1 * Level 1 DP vars D.FMBM rmb 4 Free memory bit map pointers D.MLIM rmb 2 Memory limit $24 D.ModDir rmb 4 Module directory $26 D.Init rmb 2 Rom base address $2A D.SWI3 rmb 2 Swi3 vector $2C D.SWI2 rmb 2 Swi2 vector $2E D.FIRQ rmb 2 Firq vector $30 D.IRQ rmb 2 Irq vector $32 D.SWI rmb 2 Swi vector $34 D.NMI rmb 2 Nmi vector $36 D.SvcIRQ rmb 2 Interrupt service entry $38 D.Poll rmb 2 Interrupt polling routine $3A D.UsrIRQ rmb 2 User irq routine $3C D.SysIRQ rmb 2 System irq routine $3E D.UsrSvc rmb 2 User service request routine $40 D.SysSvc rmb 2 System service request routine $42 D.UsrDis rmb 2 User service request dispatch table D.SysDis rmb 2 System service reuest dispatch table D.Slice rmb 1 Process time slice count $48 D.PrcDBT rmb 2 Process descriptor block address $49 D.Proc rmb 2 Process descriptor address $4B D.AProcQ rmb 2 Active process queue $4D D.WProcQ rmb 2 Waiting process queue $4F D.SProcQ rmb 2 Sleeping process queue $51 D.Time equ . Time D.Year rmb 1 $53 D.Month rmb 1 $54 D.Day rmb 1 $55 D.Hour rmb 1 $56 D.Min rmb 1 $57 D.Sec rmb 1 $58 D.Tick rmb 1 $59 D.TSec rmb 1 Ticks / second $5A D.TSlice rmb 1 Ticks / time-slice $5B D.IOML rmb 2 I/O mgr free memory low bound $5C D.IOMH rmb 2 I/O mgr free memory hi bound $5E D.DevTbl rmb 2 Device driver table addr $60 D.PolTbl rmb 2 Irq polling table addr $62 D.PthDBT rmb 2 Path descriptor block table addr $64 D.BTLO rmb 2 Bootstrap low address $66 D.BTHI rmb 2 Bootstrap hi address $68 D.DMAReq rmb 1 DMA in use flag $6A D.AltIRQ rmb 2 Alternate IRQ vector (CC) $6B D.KbdSta rmb 2 Keyboard scanner static storage (CC) $6D D.DskTmr rmb 2 Disk Motor Timer (CC) $6F D.CBStrt rmb 16 reserved for CC warmstart ($71) D.Clock rmb 2 Address of Clock Tick Routine (CC) $81 D.Boot rmb 1 Bootstrap attempted flag D.URtoSs rmb 2 address of user to system routine (VIRQ) $84 D.CLTb rmb 2 Pointer to clock interrupt table (VIRQ) $86 D.MDREG rmb 1 6309 MD (mode) shadow register $88 (added in V2.01.00) D.CRC rmb 1 CRC checking mode flag $89 (added in V2.01.00) D.Clock2 rmb 2 CC Clock2 entry address org $100 D.XSWI3 rmb 3 D.XSWI2 rmb 3 D.XSWI rmb 3 D.XNMI rmb 3 D.XIRQ rmb 3 D.XFIRQ rmb 3 * Table Sizes BMAPSZ equ 32 Bitmap table size SVCTNM equ 2 Number of service request tables SVCTSZ equ (256-BMAPSZ)/SVCTNM-2 Service request table size ELSE * Level 2 DP vars D.Tasks rmb 2 Task User Table D.TmpDAT rmb 2 Temporary DAT Image stack D.Init rmb 2 Initialization Module ptr D.Poll rmb 2 Interrupt Polling Routine ptr D.Time equ . System Time D.Year rmb 1 D.Month rmb 1 D.Day rmb 1 D.Hour rmb 1 D.Min rmb 1 D.Sec rmb 1 D.Tick rmb 1 D.Slice rmb 1 current slice remaining D.TSlice rmb 1 Ticks per Slice D.Boot rmb 1 Bootstrap attempted flag D.MotOn rmb 1 Floppy Disk Motor-On time out D.ErrCod rmb 1 Reset Error Code D.Daywk rmb 1 day of week, com-trol clock D.TkCnt rmb 1 Tick Counter D.BtPtr rmb 2 Address of Boot in System Address space D.BtSz rmb 2 Size of Boot IFNE H6309 D.MDREG rmb 1 6309 MD (mode) shadow register ELSE rmb 1 Currently unused in NitrOS-9/6809 ENDC D.CRC rmb 1 CRC checking mode flag D.Tenths rmb 1 Tenths and hundredths of second for F$Xtime D.Task1N rmb 1 Map type 1 task number*2 - offset into [D.TskIPt] D.Quick rmb 1 Quick system call return flag - 0 =stack is at $FEE1 D.QIRQ rmb 1 Quick IRQ flag - 0 =IRQ wasn't clock, so quick return org $40 D.BlkMap rmb 4 Memory Block Map ptr D.ModDir rmb 4 Module Directory ptrs D.PrcDBT rmb 2 Process Descriptor Block Table ptr D.SysPrc rmb 2 System Process Descriptor ptr D.SysDAT rmb 2 System DAT Image ptr D.SysMem rmb 2 System Memory Map ptr D.Proc rmb 2 Current Process ptr D.AProcQ rmb 2 Active Process Queue D.WProcQ rmb 2 Waiting Process Queue D.SProcQ rmb 2 Sleeping Process Queue D.ModEnd rmb 2 Module Directory end ptr D.ModDAT rmb 2 Module Dir DAT image end ptr D.CldRes rmb 2 Cold Restart vector D.BtBug rmb 3 Boot debug information D.Pipe rmb 2 org $6B D.Crash rmb 6 Pointer to CC Crash Routine D.CBStrt rmb $B Reserved for CC warmstart ($71) D.QCnt rmb 1 Count of number of quick system calls performed org $80 D.DevTbl rmb 2 I/O Device Table D.PolTbl rmb 2 I/O Polling Table rmb 4 reserved D.PthDBT rmb 2 Path Descriptor Block Table ptr D.DMAReq rmb 1 DMA Request flag ******** * CoCo 3 STUFF COMES NEXT * This area is used for the CoCo Hardware Registers * org $90 D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90) D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91) D.IRQER rmb 1 Interrupt enable regsiter ($FF92) D.FRQER rmb 1 Fast Interrupt enable register ($FF93) D.TIMMS rmb 1 Timer most significant nibble ($FF94) D.TIMLS rmb 1 Timer least significant byte ($FF95) D.RESV1 rmb 1 reserved register ($FF96) D.RESV2 rmb 1 reserved register ($FF97) D.VIDMD rmb 1 video mode register ($FF98) D.VIDRS rmb 1 video resolution register ($FF99) D.BORDR rmb 1 border register ($FF9A) D.RESV3 rmb 1 reserved register ($FF9B) D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C) D.VOFF1 rmb 1 vertical offset 1 register ($FF9D) D.VOFF0 rmb 1 vertical offset 0 register ($FF9E) D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F) D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast ($A0) D.TskIPt rmb 2 Task image Pointer table (CC) ($A1) D.MemSz rmb 1 128/512K memory flag (CC) ($A3) D.SSTskN rmb 1 System State Task Number (COCO) ($A4) D.CCMem rmb 2 Pointer to beginning of CC Memory ($A5) D.CCStk rmb 2 Pointer to top of CC Memory ($A7) D.Flip0 rmb 2 Change to Task 0 ($A9) D.Flip1 rmb 2 Change to reserved Task 1 ($AB) D.VIRQ rmb 2 VIRQ Polling routine ($AD) D.IRQS rmb 1 IRQ shadow register (CC Temporary) ($AF) D.CLTb rmb 2 VIRQ Table address ($B0) D.AltIRQ rmb 2 Alternate IRQ Vector (CC) ($B2) D.GPoll rmb 2 CC GIME IRQ enable/disable toggle D.Clock2 rmb 2 CC Clock2 entry address org $C0 D.SysSvc rmb 2 System Service Routine entry D.SysDis rmb 2 System Service Dispatch Table ptr D.SysIRQ rmb 2 System IRQ Routine entry D.UsrSvc rmb 2 User Service Routine entry D.UsrDis rmb 2 User Service Dispatch Table ptr D.UsrIRQ rmb 2 User IRQ Routine entry D.SysStk rmb 2 System stack D.SvcIRQ rmb 2 In-System IRQ service D.SysTsk rmb 1 System Task number org $E0 D.Clock rmb 2 D.XSWI3 rmb 2 D.XSWI2 rmb 2 D.XFIRQ rmb 2 D.XIRQ rmb 2 D.XSWI rmb 2 D.XNMI rmb 2 D.ErrRst rmb 2 D.SysVec rmb 2 F$xxx system call vector for NitrOS-9 Level 3 D.SWI3 rmb 2 D.SWI2 rmb 2 D.FIRQ rmb 2 D.IRQ rmb 2 D.SWI rmb 2 D.NMI rmb 2 ************************* * Level 2 Block Map flags * NotRAM equ %10000000 Block Not RAM flag VidRAM equ %00000100 Block is being used as Video RAM ModBlock equ %00000010 Module in Block RAMinUse equ %00000001 RAM Block in use flag * * Service Dispatch Table special entries * IOEntry equ 254 ENDC ttl Structure Formats pag ************************************ * Module Directory Entry Definitions * org 0 IFGT Level-1 MD$MPDAT rmb 2 Module DAT Image ptr MD$MBSiz rmb 2 Memory Block size ENDC MD$MPtr rmb 2 Module ptr MD$Link rmb 2 Module Link count MD$ESize equ . Module Directory Entry size ************************************ * Module Definitions * * Universal Module Offsets * org 0 M$ID rmb 2 ID Code M$Size rmb 2 Module Size M$Name rmb 2 Module Name M$Type rmb 1 Type / Language M$Revs rmb 1 Attributes / Revision Level M$Parity rmb 1 Header Parity M$IDSize equ . Module ID Size * * Type-Dependent Module Offsets * * System, File Manager, Device Driver, Program Module * M$Exec rmb 2 Execution Entry Offset * * Device Driver, Program Module * M$Mem rmb 2 Stack Requirement * * Device Driver, Device Descriptor Module * M$Mode rmb 1 Device Driver Mode Capabilities * * Device Descriptor Module * org M$IDSize M$FMgr rmb 2 File Manager Name Offset M$PDev rmb 2 Device Driver Name Offset rmb 1 M$Mode (defined above) M$Port rmb 3 Port Address M$Opt rmb 1 Device Default Options M$DTyp rmb 1 Device Type IT.DTP equ M$DTyp Descriptor type offset * * Configuration Module Entry Offsets * org M$IDSize MaxMem rmb 3 Maximum Free Memory PollCnt rmb 1 Entries in Interrupt Polling Table DevCnt rmb 1 Entries in Device Table InitStr rmb 2 Initial Module Name SysStr rmb 2 System Device Name StdStr rmb 2 Standard I/O Pathlist BootStr rmb 2 Bootstrap Module name ProtFlag rmb 1 Write protect enable flag OSLevel rmb 1 OS level OSVer rmb 1 OS version OSMajor rmb 1 OS major OSMinor rmb 1 OS minor Feature1 rmb 1 feature byte 1 Feature2 rmb 1 feature byte 2 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