Mercurial > hg > Members > kono > nitros9-code
changeset 2:821d6fef9375
Removed os9defs.l2v3, merged it into os9defs
author | boisy |
---|---|
date | Fri, 05 Apr 2002 07:04:43 +0000 |
parents | d4eb10b30e72 |
children | 9c478bdf0179 |
files | defs/os9defs defs/os9defs.l2v3 |
diffstat | 2 files changed, 155 insertions(+), 883 deletions(-) [+] |
line wrap: on
line diff
--- a/defs/os9defs Fri Apr 05 06:58:35 2002 +0000 +++ b/defs/os9defs Fri Apr 05 07:04:43 2002 +0000 @@ -1,4 +1,4 @@ - nam OS9Defs + nam OS9Defs ttl OS-9 Level 1 & 2 System Symbol Definitions ***************** @@ -17,8 +17,9 @@ * 86/09/30 added Reserved User $70 to $7f in sytem calls MGH * 86/09/30 Created Color Computer 3 Version of OS9Defs MGH * 98/10/03 Consoldated Level 1/Level 2 os9defs BGP +* 02/04/04 Consoldated Level 2/Level 2 V3 os9defs BGP - pag + pag ***************************************** * System Service Request Code Definitions * @@ -66,6 +67,10 @@ 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 CoCo individual process alarm call + endc org $27 Beginning of System Reserved Calls @@ -118,7 +123,17 @@ * Numbers $70 through $7F are reserved for user definitions * org $70 - rmb 16 Reserved for user definition + + ifeq Level-1 + + rmb 16 Reserved for user definition + + else + +F$RegDmp rmb 1 Register dump +F$NVRAM rmb 1 Non Volatile RAM + + endc pag ************************************** @@ -166,6 +181,7 @@ S$Abort rmb 1 Keyboard Abort S$Intrpt rmb 1 Keyboard Interrupt S$Window rmb 1 Window Change +S$Alarm rmb 1 pag ********************************** @@ -245,20 +261,26 @@ 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 endc - ttl Direct Page Definitions - pag + ttl Direct Page Definitions + pag ********************************** * Direct Page Variable Definitions * - org $20 - ifeq Level-1 * Level 1 DP vars + org $20 D.FMBM rmb 4 Free memory bit map pointers D.MLIM rmb 2 Memory limit $24 D.ModDir rmb 4 Module directory $26 @@ -318,6 +340,11 @@ else * Level 2 DP vars + 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 @@ -363,10 +390,6 @@ D.PthDBT rmb 2 Path Descriptor Block Table ptr D.DMAReq rmb 1 DMA Request flag - endc - - ifgt Level-1 - ******** * CoCo 3 STUFF COMES NEXT * This area is used for the CoCo Hardware Registers @@ -442,7 +465,7 @@ endc - ttl Structure Formats + ttl Structure Formats pag ************************************ * Module Directory Entry Definitions @@ -505,6 +528,24 @@ BootStr rmb 2 Bootstrap Module name ProtFlag rmb 1 Write protect enable flag + ifgt Level-1 + +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 + + endc + pag ************************** * Module Field Definitions @@ -578,7 +619,7 @@ CRCCon1 equ $80 CRCCon23 equ $0FE3 - ttl Process Information + ttl Process Information pag ******************************** * Process Descriptor Definitions @@ -665,6 +706,13 @@ 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 @@ -789,12 +837,30 @@ 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 Accumulator +R$F equ 4 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 - NitrOS9 +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 @@ -810,11 +876,85 @@ true equ 1 useful name false equ 0 useful name - ttl Error Code Definitions - pag + 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 *
--- a/defs/os9defs.l2v3 Fri Apr 05 06:58:35 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,868 +0,0 @@ - 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 -