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