nam os9defs ttl OS-9 Level 2 V3 System Symbol Definitions ***************** * Edition History * * Date Changes Made by * -------- ------------------------------------------------------------ --- * 85/08/29 Fixed DT.SBF/NFM values to 3/4 Kmz * 85/09/01 Added SS.FDInf, SS.Attr to accept 68K request thru NET Kmz * 85/09/03 Eliminated E$BPrcID, made Error #238 * become E$DNE for 68000 compatability Kmz/rfd * 86/04/15 F$AlHRam System call added for COCO MGH * 86/09/08 F$Alarm for COCO Clock Module MGH * 86/09/17 SS.Tone For COCO MGH * 86/09/23 Added F$NMLink and F$NMLoad for COCO MGH * 86/09/30 added Reserved User $70 to $7f in sytem calls MGH * 86/09/30 Created Color Computer 3 Version of OS9Defs MGH * 88/12/13 Added Module Table Offsets KKD/BRI * 88/12/22 Added process accounting to process descriptor BRI * 98/09/18 Expanded Init module to include more info BGP * 98/10/10 Added L2V3 specific setstat/getstat codes BGP * 98/10/15 Added definitions from Bruce Isted's Eliminator software BGP * 98/10/26 Added Basic09 error definitions BGP page ***************************************** * 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 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 Alarm Call rmb 2 reserved - For overlap of other systems F$NMLink rmb 1 Color Computer NonMapping Link F$NMLoad rmb 1 Color Computer NonMapping Load org $25 F$TPS rmb 1 Return System's Ticks Per Second F$TimAlm rmb 1 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 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 * * Numbers $70 through $7F are reserved for user definitions * org $70 F$RegDmp rmb 1 F$NVRAM rmb 1 rmb $80-. Reserved for user definition page ************************************** * 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 page ********************************** * Status Codes for GetStat/PutStat * 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/Putstat for COCO keyboard SS.ComSt rmb 1 Getstat/Putstat for Baud/Parity SS.Open rmb 1 Putstat to tell driver a path was opened SS.Close rmb 1 Putstat to tell driver a path was closed SS.HngUp rmb 1 Putstat to tell driver to hangup phone * System Specific and User defined codes above $80 org $80 SS.AAGBf rmb 1 Putstat to Allocate Additional Graphic Buffer SS.SLGBf rmb 1 Putstat to Select a different Graphic Buuffer SS.Mount rmb 1 Network 4 Mount Setstat SS.RdNet rmb 1 Read Raw Sector from Network 4 Omnidrive SS.MpGPB rmb 1 Putstat to request a Get/Put Buffer be mapped in workspace SS.Slots rmb 1 Network 4 slots? getstat 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 Putstat to set position block on Window scroll bars SS.Mouse rmb 1 Return Mouse information packet (COCO) SS.MsSig rmb 1 Putstat 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.MScrn rmb 1 Map/unmap screen into process address space (L2V3) 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) SS.CDSta equ SS.GIP2 XACIA SS.CDSig equ SS.AnPal XACIA SS.CDRel equ SS.FndBf XACIA ttl Direct Page Definitions page ********************************** * Direct Page Variable Definitions * org $00 D.WDAddr rmb 2 D.WDBtDr rmb 1 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 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 org $6B D.Crash rmb 6 Pointer to CC Crash Routine D.CBStrt rmb $B Reserved for CC warmstart ($71) 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 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 D.TskIPt rmb 2 Task image Pointer table (CC) D.MemSz rmb 1 128/512K memory flag (CC) D.SSTskN rmb 1 System State Task Number (COCO) D.CCMem rmb 2 Pointer to beginning of CC Memory D.CCStk rmb 2 Pointer to top of CC Memory D.Flip0 rmb 2 Change to Task 0 D.Flip1 rmb 2 Change to reserved Task 1 D.VIRQ rmb 2 VIRQ Polling routine D.IRQS rmb 1 IRQ shadow register (CC Temporary) D.CLTb rmb 2 VIRQ Table address D.AltIRQ rmb 2 Alternate IRQ Vector (CC) 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 org $F2 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 II Block Map flags * NotRAM equ %10000000 Block Not RAM flag ModBlock equ %00000010 Module in Block RAMinUse equ %00000001 RAM Block in use flag * * Service Dispatch Table special entries * IOEntry equ 254 ttl Structure Formats page ************************************ * Module Directory Entry Definitions * org 0 MD$MPDAT rmb 2 Module DAT Image ptr MD$MBSiz rmb 2 Memory Block size 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 Compat1 rmb 1 compatibility byte * -- CC3IO area -- * MonType rmb 1 Monitor type (0=CMP,1=RGB,2=MONO) KeyRptS rmb 1 Key repeat start constant KeyRptD rmb 1 Key repeat delay constant * Compatiblity byte definitions CRCOn equ %00000001 CRC checking on if set, off if clear page ************************** * Module Field Definitions * * ID Field * 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 byte * * Field Masks * TypeMask equ %11110000 Type Field LangMask equ %00001111 Language Field * * Type Values * Devic equ $F0 Device Descriptor Module Drivr equ $E0 Physical Device Driver FlMgr equ $D0 File Manager Systm equ $C0 System Module Data equ $40 Data Module Multi equ $30 Multi-Module Sbrtn equ $20 Subroutine Module Prgrm equ $10 Program 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 * * 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) ******************** * Device Type Values * DT.SCF equ 0 Sequential Character File Type DT.RBF equ 1 Random Block File Type DT.Pipe equ 2 Pipe File Type DT.SBF equ 3 DT.NFM equ 4 Network File Manager ********************* * CRC Result Constant * CRCCon1 equ $80 CRCCon23 equ $0FE3 ttl Process Information page ******************************** * Process Descriptor Definitions * 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 P$STicks rmb 4 proc System Tick counter P$FCalls rmb 4 proc F$ call counter P$ICalls rmb 4 proc I$ call counter P$DatBeg rmb 3 proc Date of creation (Y/M/D) P$TimBeg rmb 3 proc Time of creation (H/M/S) 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 ttl OS-9 I/O Symbolic Definitions page ************************* * 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 page **************************** * 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 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) 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 page ************************************* * 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 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 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 true equ 1 useful name false equ 0 useful name 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 * org 186 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 * * Standard OS-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