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