Mercurial > hg > Members > kono > os9 > sbc09
comparison CoCoOS9/defs/os9defs.l2v3 @ 31:bd2b07db8917 cocoos9lv2v3
CoCoOS9 version
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Jul 2018 15:16:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
30:7b1b25ff010a | 31:bd2b07db8917 |
---|---|
1 nam os9defs | |
2 ttl OS-9 Level 2 V3 System Symbol Definitions | |
3 | |
4 ***************** | |
5 * Edition History | |
6 * | |
7 * Date Changes Made by | |
8 * -------- ------------------------------------------------------------ --- | |
9 * 85/08/29 Fixed DT.SBF/NFM values to 3/4 Kmz | |
10 * 85/09/01 Added SS.FDInf, SS.Attr to accept 68K request thru NET Kmz | |
11 * 85/09/03 Eliminated E$BPrcID, made Error #238 | |
12 * become E$DNE for 68000 compatability Kmz/rfd | |
13 * 86/04/15 F$AlHRam System call added for COCO MGH | |
14 * 86/09/08 F$Alarm for COCO Clock Module MGH | |
15 * 86/09/17 SS.Tone For COCO MGH | |
16 * 86/09/23 Added F$NMLink and F$NMLoad for COCO MGH | |
17 * 86/09/30 added Reserved User $70 to $7f in sytem calls MGH | |
18 * 86/09/30 Created Color Computer 3 Version of OS9Defs MGH | |
19 * 88/12/13 Added Module Table Offsets KKD/BRI | |
20 * 88/12/22 Added process accounting to process descriptor BRI | |
21 * 98/09/18 Expanded Init module to include more info BGP | |
22 * 98/10/10 Added L2V3 specific setstat/getstat codes BGP | |
23 * 98/10/15 Added definitions from Bruce Isted's Eliminator software BGP | |
24 * 98/10/26 Added Basic09 error definitions BGP | |
25 | |
26 page | |
27 ***************************************** | |
28 * System Service Request Code Definitions | |
29 * | |
30 org 0 | |
31 F$Link rmb 1 Link to Module | |
32 F$Load rmb 1 Load Module from File | |
33 F$UnLink rmb 1 Unlink Module | |
34 F$Fork rmb 1 Start New Process | |
35 F$Wait rmb 1 Wait for Child Process to Die | |
36 F$Chain rmb 1 Chain Process to New Module | |
37 F$Exit rmb 1 Terminate Process | |
38 F$Mem rmb 1 Set Memory Size | |
39 F$Send rmb 1 Send Signal to Process | |
40 F$Icpt rmb 1 Set Signal Intercept | |
41 F$Sleep rmb 1 Suspend Process | |
42 F$SSpd rmb 1 Suspend Process | |
43 F$ID rmb 1 Return Process ID | |
44 F$SPrior rmb 1 Set Process Priority | |
45 F$SSWI rmb 1 Set Software Interrupt | |
46 F$PErr rmb 1 Print Error | |
47 F$PrsNam rmb 1 Parse Pathlist Name | |
48 F$CmpNam rmb 1 Compare Two Names | |
49 F$SchBit rmb 1 Search Bit Map | |
50 F$AllBit rmb 1 Allocate in Bit Map | |
51 F$DelBit rmb 1 Deallocate in Bit Map | |
52 F$Time rmb 1 Get Current Time | |
53 F$STime rmb 1 Set Current Time | |
54 F$CRC rmb 1 Generate CRC | |
55 F$GPrDsc rmb 1 get Process Descriptor copy | |
56 F$GBlkMp rmb 1 get System Block Map copy | |
57 F$GModDr rmb 1 get Module Directory copy | |
58 F$CpyMem rmb 1 Copy External Memory | |
59 F$SUser rmb 1 Set User ID number | |
60 F$UnLoad rmb 1 Unlink Module by name | |
61 F$Alarm rmb 1 Color Computer Alarm Call | |
62 rmb 2 reserved - For overlap of other systems | |
63 F$NMLink rmb 1 Color Computer NonMapping Link | |
64 F$NMLoad rmb 1 Color Computer NonMapping Load | |
65 org $25 | |
66 F$TPS rmb 1 Return System's Ticks Per Second | |
67 F$TimAlm rmb 1 | |
68 org $27 Beginning of System Reserved Calls | |
69 F$VIRQ rmb 1 Install/Delete Virtual IRQ | |
70 F$SRqMem rmb 1 System Memory Request | |
71 F$SRtMem rmb 1 System Memory Return | |
72 F$IRQ rmb 1 Enter IRQ Polling Table | |
73 F$IOQu rmb 1 Enter I/O Queue | |
74 F$AProc rmb 1 Enter Active Process Queue | |
75 F$NProc rmb 1 Start Next Process | |
76 F$VModul rmb 1 Validate Module | |
77 F$Find64 rmb 1 Find Process/Path Descriptor | |
78 F$All64 rmb 1 Allocate Process/Path Descriptor | |
79 F$Ret64 rmb 1 Return Process/Path Descriptor | |
80 F$SSvc rmb 1 Service Request Table Initialization | |
81 F$IODel rmb 1 Delete I/O Module | |
82 F$SLink rmb 1 System Link | |
83 F$Boot rmb 1 Bootstrap System | |
84 F$BtMem rmb 1 Bootstrap Memory Request | |
85 F$GProcP rmb 1 Get Process ptr | |
86 F$Move rmb 1 Move Data (low bound first) | |
87 F$AllRAM rmb 1 Allocate RAM blocks | |
88 F$AllImg rmb 1 Allocate Image RAM blocks | |
89 F$DelImg rmb 1 Deallocate Image RAM blocks | |
90 F$SetImg rmb 1 Set Process DAT Image | |
91 F$FreeLB rmb 1 Get Free Low Block | |
92 F$FreeHB rmb 1 Get Free High Block | |
93 F$AllTsk rmb 1 Allocate Process Task number | |
94 F$DelTsk rmb 1 Deallocate Process Task number | |
95 F$SetTsk rmb 1 Set Process Task DAT registers | |
96 F$ResTsk rmb 1 Reserve Task number | |
97 F$RelTsk rmb 1 Release Task number | |
98 F$DATLog rmb 1 Convert DAT Block/Offset to Logical | |
99 F$DATTmp rmb 1 Make temporary DAT image (Obsolete) | |
100 F$LDAXY rmb 1 Load A [X,[Y]] | |
101 F$LDAXYP rmb 1 Load A [X+,[Y]] | |
102 F$LDDDXY rmb 1 Load D [D+X,[Y]] | |
103 F$LDABX rmb 1 Load A from 0,X in task B | |
104 F$STABX rmb 1 Store A at 0,X in task B | |
105 F$AllPrc rmb 1 Allocate Process Descriptor | |
106 F$DelPrc rmb 1 Deallocate Process Descriptor | |
107 F$ELink rmb 1 Link using Module Directory Entry | |
108 F$FModul rmb 1 Find Module Directory Entry | |
109 F$MapBlk rmb 1 Map Specific Block | |
110 F$ClrBlk rmb 1 Clear Specific Block | |
111 F$DelRAM rmb 1 Deallocate RAM blocks | |
112 F$GCMDir rmb 1 Pack module directory | |
113 F$AlHRam rmb 1 Allocate HIGH RAM Blocks | |
114 * | |
115 * Numbers $70 through $7F are reserved for user definitions | |
116 * | |
117 org $70 | |
118 F$RegDmp rmb 1 | |
119 F$NVRAM rmb 1 | |
120 | |
121 rmb $80-. Reserved for user definition | |
122 | |
123 page | |
124 ************************************** | |
125 * I/O Service Request Code Definitions | |
126 * | |
127 org $80 | |
128 I$Attach rmb 1 Attach I/O Device | |
129 I$Detach rmb 1 Detach I/O Device | |
130 I$Dup rmb 1 Duplicate Path | |
131 I$Create rmb 1 Create New File | |
132 I$Open rmb 1 Open Existing File | |
133 I$MakDir rmb 1 Make Directory File | |
134 I$ChgDir rmb 1 Change Default Directory | |
135 I$Delete rmb 1 Delete File | |
136 I$Seek rmb 1 Change Current Position | |
137 I$Read rmb 1 Read Data | |
138 I$Write rmb 1 Write Data | |
139 I$ReadLn rmb 1 Read Line of ASCII Data | |
140 I$WritLn rmb 1 Write Line of ASCII Data | |
141 I$GetStt rmb 1 Get Path Status | |
142 I$SetStt rmb 1 Set Path Status | |
143 I$Close rmb 1 Close Path | |
144 I$DeletX rmb 1 Delete from current exec dir | |
145 | |
146 ******************* | |
147 * File Access Modes | |
148 * | |
149 READ. equ %00000001 | |
150 WRITE. equ %00000010 | |
151 UPDAT. equ READ.+WRITE. | |
152 EXEC. equ %00000100 | |
153 PREAD. equ %00001000 | |
154 PWRIT. equ %00010000 | |
155 PEXEC. equ %00100000 | |
156 SHARE. equ %01000000 | |
157 DIR. equ %10000000 | |
158 ISIZ. equ %00100000 | |
159 | |
160 ************** | |
161 * Signal Codes | |
162 * | |
163 org 0 | |
164 S$Kill rmb 1 Non-Interceptable Abort | |
165 S$Wake rmb 1 Wake-up Sleeping Process | |
166 S$Abort rmb 1 Keyboard Abort | |
167 S$Intrpt rmb 1 Keyboard Interrupt | |
168 S$Window rmb 1 Window Change | |
169 S$Alarm rmb 1 | |
170 | |
171 page | |
172 ********************************** | |
173 * Status Codes for GetStat/PutStat | |
174 * | |
175 org 0 | |
176 SS.Opt rmb 1 Read/Write PD Options | |
177 SS.Ready rmb 1 Check for Device Ready | |
178 SS.Size rmb 1 Read/Write File Size | |
179 SS.Reset rmb 1 Device Restore | |
180 SS.WTrk rmb 1 Device Write Track | |
181 SS.Pos rmb 1 Get File Current Position | |
182 SS.EOF rmb 1 Test for End of File | |
183 SS.Link rmb 1 Link to Status routines | |
184 SS.ULink rmb 1 Unlink Status routines | |
185 SS.Feed rmb 1 issue form feed | |
186 SS.Frz rmb 1 Freeze DD. information | |
187 SS.SPT rmb 1 Set DD.TKS to given value | |
188 SS.SQD rmb 1 Sequence down hard disk | |
189 SS.DCmd rmb 1 Send direct command to disk | |
190 SS.DevNm rmb 1 Return Device name (32-bytes at [X]) | |
191 SS.FD rmb 1 Return File Descriptor (Y-bytes at [X]) | |
192 SS.Ticks rmb 1 Set Lockout honor duration | |
193 SS.Lock rmb 1 Lock/Release record | |
194 SS.DStat rmb 1 Return Display Status (CoCo) | |
195 SS.Joy rmb 1 Return Joystick Value (CoCo) | |
196 SS.BlkRd rmb 1 Block Read | |
197 SS.BlkWr rmb 1 Block Write | |
198 SS.Reten rmb 1 Retension cycle | |
199 SS.WFM rmb 1 Write File Mark | |
200 SS.RFM rmb 1 Read past File Mark | |
201 SS.ELog rmb 1 Read Error Log | |
202 SS.SSig rmb 1 Send signal on data ready | |
203 SS.Relea rmb 1 Release device | |
204 SS.AlfaS rmb 1 Return Alfa Display Status (CoCo, SCF/GetStat) | |
205 SS.Attr equ SS.AlfaS to serve 68K/RBF/SetStat only, thru NET | |
206 SS.Break rmb 1 Send break signal out acia | |
207 SS.RsBit rmb 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# | |
208 rmb 1 reserved | |
209 SS.FDInf equ $20 to serve 68K/RBF/GetStat only, thru NET | |
210 rmb 4 reserve $20-$23 for Japanese version (Hoshi) | |
211 SS.SetMF rmb 1 reserve $24 for Gimix G68 (Flex compatability?) | |
212 SS.Cursr rmb 1 Cursor information for COCO | |
213 SS.ScSiz rmb 1 Return screen size for COCO | |
214 SS.KySns rmb 1 Getstat/Putstat for COCO keyboard | |
215 SS.ComSt rmb 1 Getstat/Putstat for Baud/Parity | |
216 SS.Open rmb 1 Putstat to tell driver a path was opened | |
217 SS.Close rmb 1 Putstat to tell driver a path was closed | |
218 SS.HngUp rmb 1 Putstat to tell driver to hangup phone | |
219 * System Specific and User defined codes above $80 | |
220 org $80 | |
221 SS.AAGBf rmb 1 Putstat to Allocate Additional Graphic Buffer | |
222 SS.SLGBf rmb 1 Putstat to Select a different Graphic Buuffer | |
223 SS.Mount rmb 1 Network 4 Mount Setstat | |
224 SS.RdNet rmb 1 Read Raw Sector from Network 4 Omnidrive | |
225 SS.MpGPB rmb 1 Putstat to request a Get/Put Buffer be mapped in workspace | |
226 SS.Slots rmb 1 Network 4 slots? getstat | |
227 SS.WnSet rmb 1 Set up High Level Windowing Information | |
228 SS.MnSel rmb 1 Request High level Menu Handler take determine next event | |
229 SS.SBar rmb 1 Putstat to set position block on Window scroll bars | |
230 SS.Mouse rmb 1 Return Mouse information packet (COCO) | |
231 SS.MsSig rmb 1 Putstat to tell driver to send signal on mouse event | |
232 SS.AScrn rmb 1 Allocate a screen for application poking | |
233 SS.DScrn rmb 1 Display a screen allocated by SS.AScrn | |
234 SS.FScrn rmb 1 Free a screen allocated by SS.AScrn | |
235 SS.PScrn rmb 1 Polymorph Screen into different screen type | |
236 SS.MScrn rmb 1 Map/unmap screen into process address space (L2V3) | |
237 rmb 1 Reserved | |
238 SS.Palet rmb 1 Return palette information | |
239 SS.Montr rmb 1 Get and Set Monitor Type | |
240 SS.ScTyp rmb 1 Get screen type information | |
241 SS.GIP rmb 1 Global Input Parameters (SetStat) | |
242 SS.UMBar rmb 1 update menu bar (SetStat) | |
243 SS.FBRgs rmb 1 return color registers (GetStat) | |
244 SS.DfPal rmb 1 set/return default palette registers (Getstat/Setstat) | |
245 SS.Tone rmb 1 Generate a tone using 6 bit sound | |
246 | |
247 SS.GIP2 rmb 1 Global Input Params #2 (L2V3) | |
248 SS.AnPal rmb 1 Animate palettes (L2V3) | |
249 SS.FndBf rmb 1 Find named buffer (L2V3) | |
250 SS.CDSta equ SS.GIP2 XACIA | |
251 SS.CDSig equ SS.AnPal XACIA | |
252 SS.CDRel equ SS.FndBf XACIA | |
253 | |
254 | |
255 | |
256 ttl Direct Page Definitions | |
257 page | |
258 | |
259 ********************************** | |
260 * Direct Page Variable Definitions | |
261 * | |
262 org $00 | |
263 D.WDAddr rmb 2 | |
264 D.WDBtDr rmb 1 | |
265 org $20 | |
266 D.Tasks rmb 2 Task User Table | |
267 D.TmpDAT rmb 2 Temporary DAT Image stack | |
268 D.Init rmb 2 Initialization Module ptr | |
269 D.Poll rmb 2 Interrupt Polling Routine ptr | |
270 D.Time equ . System Time | |
271 D.Year rmb 1 | |
272 D.Month rmb 1 | |
273 D.Day rmb 1 | |
274 D.Hour rmb 1 | |
275 D.Min rmb 1 | |
276 D.Sec rmb 1 | |
277 D.Tick rmb 1 | |
278 D.Slice rmb 1 current slice remaining | |
279 D.TSlice rmb 1 Ticks per Slice | |
280 D.Boot rmb 1 Bootstrap attempted flag | |
281 D.MotOn rmb 1 Floppy Disk Motor-On time out | |
282 D.ErrCod rmb 1 Reset Error Code | |
283 D.Daywk rmb 1 day of week, com-trol clock | |
284 D.TkCnt rmb 1 Tick Counter | |
285 D.BtPtr rmb 2 Address of Boot in System Address space | |
286 D.BtSz rmb 2 Size of Boot | |
287 org $40 | |
288 D.BlkMap rmb 4 Memory Block Map ptr | |
289 D.ModDir rmb 4 Module Directory ptrs | |
290 D.PrcDBT rmb 2 Process Descriptor Block Table ptr | |
291 D.SysPrc rmb 2 System Process Descriptor ptr | |
292 D.SysDAT rmb 2 System DAT Image ptr | |
293 D.SysMem rmb 2 System Memory Map ptr | |
294 D.Proc rmb 2 Current Process ptr | |
295 D.AProcQ rmb 2 Active Process Queue | |
296 D.WProcQ rmb 2 Waiting Process Queue | |
297 D.SProcQ rmb 2 Sleeping Process Queue | |
298 D.ModEnd rmb 2 Module Directory end ptr | |
299 D.ModDAT rmb 2 Module Dir DAT image end ptr | |
300 D.CldRes rmb 2 Cold Restart vector | |
301 org $6B | |
302 D.Crash rmb 6 Pointer to CC Crash Routine | |
303 D.CBStrt rmb $B Reserved for CC warmstart ($71) | |
304 org $80 | |
305 D.DevTbl rmb 2 I/O Device Table | |
306 D.PolTbl rmb 2 I/O Polling Table | |
307 rmb 4 reserved | |
308 D.PthDBT rmb 2 Path Descriptor Block Table ptr | |
309 D.DMAReq rmb 1 DMA Request flag | |
310 | |
311 ******** | |
312 * COCO STUFF COMES NEXT | |
313 * This area is used for the CoCo Hardware Registers | |
314 * | |
315 org $90 | |
316 D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90) | |
317 D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91) | |
318 D.IRQER rmb 1 Interrupt enable regsiter ($FF92) | |
319 D.FRQER rmb 1 Fast Interrupt enable register ($FF93) | |
320 D.TIMMS rmb 1 Timer most significant nibble ($FF94) | |
321 D.TIMLS rmb 1 Timer least significant byte ($FF95) | |
322 D.RESV1 rmb 1 reserved register ($FF96) | |
323 D.RESV2 rmb 1 reserved register ($FF97) | |
324 D.VIDMD rmb 1 video mode register ($FF98) | |
325 D.VIDRS rmb 1 video resolution register ($FF99) | |
326 D.BORDR rmb 1 border register ($FF9A) | |
327 D.RESV3 rmb 1 reserved register ($FF9B) | |
328 D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C) | |
329 D.VOFF1 rmb 1 vertical offset 1 register ($FF9D) | |
330 D.VOFF0 rmb 1 vertical offset 0 register ($FF9E) | |
331 D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F) | |
332 D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast | |
333 D.TskIPt rmb 2 Task image Pointer table (CC) | |
334 D.MemSz rmb 1 128/512K memory flag (CC) | |
335 D.SSTskN rmb 1 System State Task Number (COCO) | |
336 D.CCMem rmb 2 Pointer to beginning of CC Memory | |
337 D.CCStk rmb 2 Pointer to top of CC Memory | |
338 D.Flip0 rmb 2 Change to Task 0 | |
339 D.Flip1 rmb 2 Change to reserved Task 1 | |
340 D.VIRQ rmb 2 VIRQ Polling routine | |
341 D.IRQS rmb 1 IRQ shadow register (CC Temporary) | |
342 D.CLTb rmb 2 VIRQ Table address | |
343 D.AltIRQ rmb 2 Alternate IRQ Vector (CC) | |
344 D.GPoll rmb 2 CC GIME IRQ enable/disable toggle | |
345 D.Clock2 rmb 2 CC Clock2 entry address | |
346 org $C0 | |
347 D.SysSvc rmb 2 System Service Routine entry | |
348 D.SysDis rmb 2 System Service Dispatch Table ptr | |
349 D.SysIRQ rmb 2 System IRQ Routine entry | |
350 D.UsrSvc rmb 2 User Service Routine entry | |
351 D.UsrDis rmb 2 User Service Dispatch Table ptr | |
352 D.UsrIRQ rmb 2 User IRQ Routine entry | |
353 D.SysStk rmb 2 System stack | |
354 D.SvcIRQ rmb 2 In-System IRQ service | |
355 D.SysTsk rmb 1 System Task number | |
356 org $E0 | |
357 D.Clock rmb 2 | |
358 D.XSWI3 rmb 2 | |
359 D.XSWI2 rmb 2 | |
360 D.XFIRQ rmb 2 | |
361 D.XIRQ rmb 2 | |
362 D.XSWI rmb 2 | |
363 D.XNMI rmb 2 | |
364 D.ErrRst rmb 2 | |
365 org $F2 | |
366 D.SWI3 rmb 2 | |
367 D.SWI2 rmb 2 | |
368 D.FIRQ rmb 2 | |
369 D.IRQ rmb 2 | |
370 D.SWI rmb 2 | |
371 D.NMI rmb 2 | |
372 | |
373 ************************** | |
374 * Level II Block Map flags | |
375 * | |
376 NotRAM equ %10000000 Block Not RAM flag | |
377 ModBlock equ %00000010 Module in Block | |
378 RAMinUse equ %00000001 RAM Block in use flag | |
379 * | |
380 * Service Dispatch Table special entries | |
381 * | |
382 IOEntry equ 254 | |
383 | |
384 ttl Structure Formats | |
385 page | |
386 ************************************ | |
387 * Module Directory Entry Definitions | |
388 * | |
389 org 0 | |
390 MD$MPDAT rmb 2 Module DAT Image ptr | |
391 MD$MBSiz rmb 2 Memory Block size | |
392 MD$MPtr rmb 2 Module ptr | |
393 MD$Link rmb 2 Module Link count | |
394 MD$ESize equ . Module Directory Entry size | |
395 | |
396 ******************** | |
397 * Module Definitions | |
398 * | |
399 * Universal Module Offsets | |
400 * | |
401 org 0 | |
402 M$ID rmb 2 ID Code | |
403 M$Size rmb 2 Module Size | |
404 M$Name rmb 2 Module Name | |
405 M$Type rmb 1 Type / Language | |
406 M$Revs rmb 1 Attributes / Revision Level | |
407 M$Parity rmb 1 Header Parity | |
408 M$IDSize equ . Module ID Size | |
409 * | |
410 * Type-Dependent Module Offsets | |
411 * | |
412 * System, File Manager, Device Driver, Program Module | |
413 * | |
414 M$Exec rmb 2 Execution Entry Offset | |
415 * | |
416 * Device Driver, Program Module | |
417 * | |
418 M$Mem rmb 2 Stack Requirement | |
419 * | |
420 * Device Driver, Device Descriptor Module | |
421 * | |
422 M$Mode rmb 1 Device Driver Mode Capabilities | |
423 * | |
424 * Device Descriptor Module | |
425 * | |
426 org M$IDSize | |
427 M$FMgr rmb 2 File Manager Name Offset | |
428 M$PDev rmb 2 Device Driver Name Offset | |
429 rmb 1 M$Mode (defined above) | |
430 M$Port rmb 3 Port Address | |
431 M$Opt rmb 1 Device Default Options | |
432 M$DTyp rmb 1 Device Type | |
433 IT.DTP equ M$DTyp Descriptor type offset | |
434 * | |
435 * Configuration Module Entry Offsets | |
436 * | |
437 org M$IDSize | |
438 MaxMem rmb 3 Maximum Free Memory | |
439 PollCnt rmb 1 Entries in Interrupt Polling Table | |
440 DevCnt rmb 1 Entries in Device Table | |
441 InitStr rmb 2 Initial Module Name | |
442 SysStr rmb 2 System Device Name | |
443 StdStr rmb 2 Standard I/O Pathlist | |
444 BootStr rmb 2 Bootstrap Module name | |
445 ProtFlag rmb 1 Write protect enable flag | |
446 OSLevel rmb 1 OS level | |
447 OSVer rmb 1 OS version | |
448 OSMajor rmb 1 OS major | |
449 OSMinor rmb 1 OS minor | |
450 Compat1 rmb 1 compatibility byte | |
451 | |
452 * -- CC3IO area -- * | |
453 MonType rmb 1 Monitor type (0=CMP,1=RGB,2=MONO) | |
454 KeyRptS rmb 1 Key repeat start constant | |
455 KeyRptD rmb 1 Key repeat delay constant | |
456 | |
457 * Compatiblity byte definitions | |
458 CRCOn equ %00000001 CRC checking on if set, off if clear | |
459 | |
460 page | |
461 ************************** | |
462 * Module Field Definitions | |
463 * | |
464 * ID Field | |
465 * | |
466 M$ID1 equ $87 Module ID code byte one | |
467 M$ID2 equ $CD Module ID code byte two | |
468 M$ID12 equ M$ID1*256+M$ID2 | |
469 * | |
470 * Module Type / Language byte | |
471 * | |
472 * Field Masks | |
473 * | |
474 TypeMask equ %11110000 Type Field | |
475 LangMask equ %00001111 Language Field | |
476 * | |
477 * Type Values | |
478 * | |
479 Devic equ $F0 Device Descriptor Module | |
480 Drivr equ $E0 Physical Device Driver | |
481 FlMgr equ $D0 File Manager | |
482 Systm equ $C0 System Module | |
483 Data equ $40 Data Module | |
484 Multi equ $30 Multi-Module | |
485 Sbrtn equ $20 Subroutine Module | |
486 Prgrm equ $10 Program Module | |
487 * | |
488 * Language Values | |
489 * | |
490 Objct equ 1 6809 Object Code Module | |
491 ICode equ 2 Basic09 I-code | |
492 PCode equ 3 Pascal P-code | |
493 CCode equ 4 C I-code | |
494 CblCode equ 5 Cobol I-code | |
495 FrtnCode equ 6 Fortran I-code | |
496 * | |
497 * Module Attributes / Revision byte | |
498 * | |
499 * Field Masks | |
500 * | |
501 AttrMask equ %11110000 Attributes Field | |
502 RevsMask equ %00001111 Revision Level Field | |
503 * | |
504 * Attribute Flags | |
505 * | |
506 ReEnt equ %10000000 Re-Entrant Module | |
507 Modprot equ %01000000 Gimix Module protect bit (0=protected, 1=write enable) | |
508 | |
509 ******************** | |
510 * Device Type Values | |
511 * | |
512 DT.SCF equ 0 Sequential Character File Type | |
513 DT.RBF equ 1 Random Block File Type | |
514 DT.Pipe equ 2 Pipe File Type | |
515 DT.SBF equ 3 | |
516 DT.NFM equ 4 Network File Manager | |
517 | |
518 ********************* | |
519 * CRC Result Constant | |
520 * | |
521 CRCCon1 equ $80 | |
522 CRCCon23 equ $0FE3 | |
523 | |
524 ttl Process Information | |
525 page | |
526 ******************************** | |
527 * Process Descriptor Definitions | |
528 * | |
529 DefIOSiz equ 16 Default I/O Data Length | |
530 NefIOSiz equ 12 On-Net Default I/O Data Length | |
531 NumPaths equ 16 Number of Local Paths | |
532 | |
533 org 0 | |
534 P$ID rmb 1 Process ID | |
535 P$PID rmb 1 Parent's ID | |
536 P$SID rmb 1 Sibling's ID | |
537 P$CID rmb 1 Child's ID | |
538 P$SP rmb 2 Stack ptr | |
539 P$Task rmb 1 Task Number | |
540 P$PagCnt rmb 1 Memory Page Count | |
541 P$User rmb 2 User Index | |
542 P$Prior rmb 1 Priority | |
543 P$Age rmb 1 Age | |
544 P$State rmb 1 Status | |
545 P$Queue rmb 2 Queue Link (Process ptr) | |
546 P$IOQP rmb 1 Previous I/O Queue Link (Process ID) | |
547 P$IOQN rmb 1 Next I/O Queue Link (Process ID) | |
548 P$PModul rmb 2 Primary Module | |
549 P$SWI rmb 2 SWI Entry Point | |
550 P$SWI2 rmb 2 SWI2 Entry Point | |
551 P$SWI3 rmb 2 SWI3 Entry Point | |
552 P$Signal rmb 1 Signal Code | |
553 P$SigVec rmb 2 Signal Intercept Vector | |
554 P$SigDat rmb 2 Signal Intercept Data Address | |
555 P$DeadLk rmb 1 Dominant proc ID if I/O locked | |
556 rmb $20-. unused | |
557 P$DIO rmb DefIOSiz Default I/O ptrs | |
558 P$Path rmb NumPaths I/O Path Table | |
559 P$DATImg rmb 64 DAT Image | |
560 P$Links rmb 32 Block Link counts | |
561 P$NIO rmb 6*2 additional DIO ptrs for net, compatible with 68k | |
562 P$SelP rmb 1 Selected Path for COCO Windows (Default 0) | |
563 P$UTicks rmb 4 proc User Tick counter | |
564 P$STicks rmb 4 proc System Tick counter | |
565 P$FCalls rmb 4 proc F$ call counter | |
566 P$ICalls rmb 4 proc I$ call counter | |
567 P$DatBeg rmb 3 proc Date of creation (Y/M/D) | |
568 P$TimBeg rmb 3 proc Time of creation (H/M/S) | |
569 P$Alarm rmb 6 | |
570 rmb $200-. Local stack | |
571 P$Stack equ . Top of Stack | |
572 P$Size equ . Size of Process Descriptor | |
573 | |
574 * | |
575 * Process State Flags | |
576 * | |
577 SysState equ %10000000 | |
578 TimSleep equ %01000000 | |
579 TimOut equ %00100000 | |
580 ImgChg equ %00010000 | |
581 Suspend equ %00001000 | |
582 Condem equ %00000010 | |
583 Dead equ %00000001 | |
584 | |
585 ttl OS-9 I/O Symbolic Definitions | |
586 page | |
587 ************************* | |
588 * Path Descriptor Offsets | |
589 * | |
590 org 0 | |
591 PD.PD rmb 1 Path Number | |
592 PD.MOD rmb 1 Mode (Read/Write/Update) | |
593 PD.CNT rmb 1 Number of Open Images | |
594 PD.DEV rmb 2 Device Table Entry Address | |
595 PD.CPR rmb 1 Current Process | |
596 PD.RGS rmb 2 Caller's Register Stack | |
597 PD.BUF rmb 2 Buffer Address | |
598 PD.FST rmb 32-. File Manager's Storage | |
599 PD.OPT equ . PD GetSts(0) Options | |
600 PD.DTP rmb 1 Device Type | |
601 rmb 64-. Path options | |
602 PDSIZE equ . | |
603 | |
604 * | |
605 * Pathlist Special Symbols | |
606 * | |
607 PDELIM equ '/ Pathlist Name Separator | |
608 PDIR equ '. Directory | |
609 PENTIR equ '@ Entire Device | |
610 page | |
611 **************************** | |
612 * File Manager Entry Offsets | |
613 * | |
614 org 0 | |
615 FMCREA rmb 3 Create (Open New) File | |
616 FMOPEN rmb 3 Open File | |
617 FMMDIR rmb 3 Make Directory | |
618 FMCDIR rmb 3 Change Directory | |
619 FMDLET rmb 3 Delete File | |
620 FMSEEK rmb 3 Position File | |
621 FMREAD rmb 3 Read from File | |
622 FMWRIT rmb 3 Write to File | |
623 FMRDLN rmb 3 ReadLn | |
624 FMWRLN rmb 3 WritLn | |
625 FMGSTA rmb 3 Get File Status | |
626 FMSSTA rmb 3 Set File Status | |
627 FMCLOS rmb 3 Close File | |
628 | |
629 ***************************** | |
630 * Device Driver Entry Offsets | |
631 * | |
632 org 0 | |
633 D$INIT rmb 3 Device Initialization | |
634 D$READ rmb 3 Read from Device | |
635 D$WRIT rmb 3 Write to Device | |
636 D$GSTA rmb 3 Get Device Status | |
637 D$PSTA rmb 3 Put Device Status | |
638 D$TERM rmb 3 Device Termination | |
639 | |
640 ********************* | |
641 * Device Table Format | |
642 * | |
643 org 0 | |
644 V$DRIV rmb 2 Device Driver module | |
645 V$STAT rmb 2 Device Driver Static storage | |
646 V$DESC rmb 2 Device Descriptor module | |
647 V$FMGR rmb 2 File Manager module | |
648 V$USRS rmb 1 use count | |
649 DEVSIZ equ . | |
650 | |
651 ******************************* | |
652 * Device Static Storage Offsets | |
653 * | |
654 org 0 | |
655 V.PAGE rmb 1 Port Extended Address | |
656 V.PORT rmb 2 Device 'Base' Port Address | |
657 V.LPRC rmb 1 Last Active Process ID | |
658 V.BUSY rmb 1 Active Process ID (0=UnBusy) | |
659 V.WAKE rmb 1 Active PD if Driver MUST Wake-up | |
660 V.USER equ . Driver Allocation Origin | |
661 | |
662 ******************************** | |
663 * Interrupt Polling Table Format | |
664 * | |
665 org 0 | |
666 Q$POLL rmb 2 Absolute Polling Address | |
667 Q$FLIP rmb 1 Flip (EOR) Byte ..normally Zero | |
668 Q$MASK rmb 1 Polling Mask (after Flip) | |
669 Q$SERV rmb 2 Absolute Service routine Address | |
670 Q$STAT rmb 2 Static Storage Address | |
671 Q$PRTY rmb 1 Priority (Low Numbers=Top Priority) | |
672 POLSIZ equ . | |
673 | |
674 ******************** | |
675 * VIRQ packet format | |
676 * | |
677 org 0 | |
678 Vi.Cnt rmb 2 count down counter | |
679 Vi.Rst rmb 2 reset value for counter | |
680 Vi.Stat rmb 1 status byte | |
681 | |
682 Vi.IFlag equ %00000001 status byte virq flag | |
683 | |
684 page | |
685 ************************************* | |
686 * Machine Characteristics Definitions | |
687 * | |
688 R$CC equ 0 Condition Codes register | |
689 R$A equ 1 A Accumulator | |
690 R$B equ 2 B Accumulator | |
691 R$D equ R$A Combined A:B Accumulator | |
692 R$DP equ 3 Direct Page register | |
693 R$X equ 4 X Index register | |
694 R$Y equ 6 Y Index register | |
695 R$U equ 8 User Stack register | |
696 R$PC equ 10 Program Counter register | |
697 R$Size equ 12 Total register package size | |
698 | |
699 Entire equ %10000000 Full Register Stack flag | |
700 FIRQMask equ %01000000 Fast-Interrupt Mask bit | |
701 HalfCrry equ %00100000 Half Carry flag | |
702 IRQMask equ %00010000 Interrupt Mask bit | |
703 Negative equ %00001000 Negative flag | |
704 Zero equ %00000100 Zero flag | |
705 TwosOvfl equ %00000010 Two's Comp Overflow flag | |
706 Carry equ %00000001 Carry bit | |
707 IntMasks equ IRQMask+FIRQMask | |
708 Sign equ %10000000 sign bit | |
709 | |
710 true equ 1 useful name | |
711 false equ 0 useful name | |
712 | |
713 ttl Error Code Definitions | |
714 pag | |
715 ************************ | |
716 * Error Code Definitions | |
717 * | |
718 * | |
719 * Basic09 Error Codes | |
720 * | |
721 org 10 | |
722 E$UnkSym rmb 1 Unknown symbol | |
723 E$ExcVrb rmb 1 Excessive verbage | |
724 E$IllStC rmb 1 Illegal statement construction | |
725 E$ICOvf rmb 1 I-code overflow | |
726 E$IChRef rmb 1 Illegal channel reference | |
727 E$IllMod rmb 1 Illegal mode | |
728 E$IllNum rmb 1 Illegal number | |
729 E$IllPrf rmb 1 Illegal prefix | |
730 E$IllOpd rmb 1 Illegal operand | |
731 E$IllOpr rmb 1 Illegal operator | |
732 E$IllRFN rmb 1 Illegal record field name | |
733 E$IllDim rmb 1 Illegal dimension | |
734 E$IllLit rmb 1 Illegal literal | |
735 E$IllRet rmb 1 Illegal relational | |
736 E$IllSfx rmb 1 Illegal type suffix | |
737 E$DimLrg rmb 1 Dimension too large | |
738 E$LinLrg rmb 1 Line number too large | |
739 E$NoAssg rmb 1 Missing assignment statement | |
740 E$NoPath rmb 1 Missing path number | |
741 E$NoComa rmb 1 Missing coma | |
742 E$NoDim rmb 1 Missing dimension | |
743 E$NoDO rmb 1 Missing DO statement | |
744 E$MFull rmb 1 Memory full | |
745 E$NoGoto rmb 1 Missing GOTO | |
746 E$NoLPar rmb 1 Missing left parenthesis | |
747 E$NoLRef rmb 1 Missing line reference | |
748 E$NoOprd rmb 1 Missing operand | |
749 E$NoRPar rmb 1 Missing right parenthesis | |
750 E$NoTHEN rmb 1 Missing THEN statement | |
751 E$NoTO rmb 1 Missing TO statement | |
752 E$NoVRef rmb 1 Missing variable reference | |
753 E$EndQou rmb 1 Missing end quote | |
754 E$SubLrg rmb 1 Too many subscripts | |
755 E$UnkPrc rmb 1 Unknown procedure | |
756 E$MulPrc rmb 1 Multiply defined procedure | |
757 E$DivZer rmb 1 Divice by zero | |
758 E$TypMis rmb 1 Operand type mismatch | |
759 E$StrOvf rmb 1 String stack overflow | |
760 E$NoRout rmb 1 Unimplemented routine | |
761 E$UndVar rmb 1 Undefined variable | |
762 E$FltOvf rmb 1 Floating Overflow | |
763 E$LnComp rmb 1 Line with compiler error | |
764 E$ValRng rmb 1 Value out of range for destination | |
765 E$SubOvf rmb 1 Subroutine stack overflow | |
766 E$SubUnd rmb 1 Subroutine stack underflow | |
767 E$SubRng rmb 1 Subscript out of range | |
768 E$ParmEr rmb 1 Paraemter error | |
769 E$SysOvf rmb 1 System stack overflow | |
770 E$IOMism rmb 1 I/O type mismatch | |
771 E$IONum rmb 1 I/O numeric input format bad | |
772 E$IOConv rmb 1 I/O conversion: number out of range | |
773 E$IllInp rmb 1 Illegal input format | |
774 E$IOFRpt rmb 1 I/O format repeat error | |
775 E$IOFSyn rmb 1 I/O format syntax error | |
776 E$IllPNm rmb 1 Illegal path number | |
777 E$WrSub rmb 1 Wrong number of subscripts | |
778 E$NonRcO rmb 1 Non-record type operand | |
779 E$IllA rmb 1 Illegal argument | |
780 E$IllCnt rmb 1 Illegal control structure | |
781 E$UnmCnt rmb 1 Unmatched control structure | |
782 E$IllFOR rmb 1 Illegal FOR variable | |
783 E$IllExp rmb 1 Illegal expression type | |
784 E$IllDec rmb 1 Illegal declarative statement | |
785 E$ArrOvf rmb 1 Array size overflow | |
786 E$UndLin rmb 1 Undefined line number | |
787 E$MltLin rmb 1 Multiply defined line number | |
788 E$MltVar rmb 1 Multiply defined variable | |
789 E$IllIVr rmb 1 Illegal input variable | |
790 E$SeekRg rmb 1 Seek out of range | |
791 E$NoData rmb 1 Missing data statement | |
792 * | |
793 * System Dependent Error Codes | |
794 * | |
795 org 186 | |
796 E$StkOvf rmb 1 Stack overflow | |
797 E$IllArg rmb 1 Illegal argument | |
798 rmb 1 reserved | |
799 E$ICoord rmb 1 Illegal coordinates | |
800 E$Bug rmb 1 Bug (should never be returned) | |
801 E$BufSiz rmb 1 Buffer size is too small | |
802 E$IllCmd rmb 1 Illegal command | |
803 E$TblFul rmb 1 Screen or window table is full | |
804 E$BadBuf rmb 1 Bad/Undefined buffer number | |
805 E$IWDef rmb 1 Illegal window definition | |
806 E$WUndef rmb 1 Window undefined | |
807 * | |
808 * Standard OS-9 Error Codes | |
809 * | |
810 org 200 | |
811 E$PthFul rmb 1 Path Table full | |
812 E$BPNum rmb 1 Bad Path Number | |
813 E$Poll rmb 1 Polling Table Full | |
814 E$BMode rmb 1 Bad Mode | |
815 E$DevOvf rmb 1 Device Table Overflow | |
816 E$BMID rmb 1 Bad Module ID | |
817 E$DirFul rmb 1 Module Directory Full | |
818 E$MemFul rmb 1 Process Memory Full | |
819 E$UnkSvc rmb 1 Unknown Service Code | |
820 E$ModBsy rmb 1 Module Busy | |
821 E$BPAddr rmb 1 Bad Page Address | |
822 E$EOF rmb 1 End of File | |
823 rmb 1 | |
824 E$NES rmb 1 Non-Existing Segment | |
825 E$FNA rmb 1 File Not Accesible | |
826 E$BPNam rmb 1 Bad Path Name | |
827 E$PNNF rmb 1 Path Name Not Found | |
828 E$SLF rmb 1 Segment List Full | |
829 E$CEF rmb 1 Creating Existing File | |
830 E$IBA rmb 1 Illegal Block Address | |
831 E$HangUp rmb 1 Carrier Detect Lost | |
832 E$MNF rmb 1 Module Not Found | |
833 rmb 1 | |
834 E$DelSP rmb 1 Deleting Stack Pointer memory | |
835 E$IPrcID rmb 1 Illegal Process ID | |
836 E$BPrcID equ E$IPrcID Bad Process ID (formerly #238) | |
837 rmb 1 | |
838 E$NoChld rmb 1 No Children | |
839 E$ISWI rmb 1 Illegal SWI code | |
840 E$PrcAbt rmb 1 Process Aborted | |
841 E$PrcFul rmb 1 Process Table Full | |
842 E$IForkP rmb 1 Illegal Fork Parameter | |
843 E$KwnMod rmb 1 Known Module | |
844 E$BMCRC rmb 1 Bad Module CRC | |
845 E$USigP rmb 1 Unprocessed Signal Pending | |
846 E$NEMod rmb 1 Non Existing Module | |
847 E$BNam rmb 1 Bad Name | |
848 E$BMHP rmb 1 (bad module header parity) | |
849 E$NoRam rmb 1 No (System) Ram Available | |
850 E$DNE rmb 1 Directory not empty | |
851 E$NoTask rmb 1 No available Task number | |
852 rmb $F0-. reserved | |
853 E$Unit rmb 1 Illegal Unit (drive) | |
854 E$Sect rmb 1 Bad SECTor number | |
855 E$WP rmb 1 Write Protect | |
856 E$CRC rmb 1 Bad Check Sum | |
857 E$Read rmb 1 Read Error | |
858 E$Write rmb 1 Write Error | |
859 E$NotRdy rmb 1 Device Not Ready | |
860 E$Seek rmb 1 Seek Error | |
861 E$Full rmb 1 Media Full | |
862 E$BTyp rmb 1 Bad Type (incompatable) media | |
863 E$DevBsy rmb 1 Device Busy | |
864 E$DIDC rmb 1 Disk ID Change | |
865 E$Lock rmb 1 Record is busy (locked out) | |
866 E$Share rmb 1 Non-sharable file busy | |
867 E$DeadLk rmb 1 I/O Deadlock error | |
868 |