31
|
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
|