comparison defs/os9defs @ 0:6641a883d6b0

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