PAGE 1 [3.3a] 6/28/89 17:44:01 ASSEMBLY OF SR.TEXT
PASS 1 COMPLETE. ERRORS: 0
1 * sccs info: @(#) sr 8.1 84/05/04 00:21:50 *
2
3 nosyms
4
5
6 *
7 * global or common symbol declarations
8 *
9 nolist
195
196 *
197 * BOOTROM stolen low RAM area pointer
198 *
199 FFFF FED4 f_area equ $FFFFFED4
200
PAGE 2 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE JUMP TABLES
203 *******************************************************************************
204 * Sector-Oriented Device Jump Tables *
205 *******************************************************************************
206
207 *
208 * Driver List Jump Tables
209 *
210 def d_sodLIF
211 def d_sodSDF
212 def d_sodUNIX
213
214 refa RISOD_init
215 refa RISOD_fopen
216 refa RISOD_read
217
218
219 0000 0000 d_sodLIF equ *
220 0000 0000 d_sodSDF equ *
221 0000 0000 d_sodUNIX equ *
222
223 00000000 6000 FFFE bra RISOD_init init
224 00000004 6000 FFFA bra RISOD_fopen fopen
225 00000008 6000 FFF6 bra RISOD_read read
226 0000000C 6000 00D6 bra menu menu
227 00000010 4E75 rts fclose
PAGE 3 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES
230 *******************************************************************************
231 * Sector-Oriented Device Steering Routines *
232 *******************************************************************************
233
234 mname sr
235
236 src module sr; {steering routines}
237 src
238 src import
239 src brdecs;
240 src
241 src export
242 src
243 src procedure init_links;
244 src
245 * further export declarations scattered within the assembly module
246
247
248 *
249 * module initialization routine
250 *
251 def sr_sr
252
253 00000012 4E75 sr_sr rts
254
255
256 *
257 * soft link initialization routine
258 *
259 def sr_init_links
260
261 00000014 2078 FED4 sr_init_links movea.l f_area,a0 BOOT ROM stolen low RAM area ptr
262
263 00000018 43FA 00DA lea ddl,a1 device driver list head
264 0000001C 2149 0024 move.l a1,dd_start(a0) initialize the soft link
265
266 00000020 43FA 004A lea dml,a1 directory manager list head
267 00000024 2149 0028 move.l a1,dm_start(a0) initialize the soft link
268
269 00000028 4E75 rts
PAGE 4 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES
271 *******************************************************************************
272 * *
273 * Directory Manager & Device Driver List Element Structure *
274 * *
275 * 0: offset (long) offset to next element in the list *
276 * 4: jt_ptr (long) pointer to this element's jump table *
277 * 8: key (byte) key for selecting elements *
278 * 9: start of any optional fields *
279 * *
280 * Last element in list has offset = 0. For it, the key is a don't *
281 * care; the list_search procedure terminates unconditionally. *
282 * *
283 * search_list procedure: *
284 * enter with *
285 * d0.b = desired key *
286 * a0.l = ptr to head of desired list *
287 * procedure exits with *
288 * a0.l = ptr to list element with matching key *
289 * a1.l = jt_ptr field in this list element *
290 * *
291 *******************************************************************************
292
293 0000002A 4A90 search_list tst.l (a0) end of list?
294 0000002C 670A beq.s sl_return branch if so
295 0000002E B028 0008 cmp.b 8(a0),d0 keys match?
296 00000032 6704 beq.s sl_return branch if so
297 00000034 D1D0 adda.l (a0),a0 point to the next element in the list
298 00000036 60F2 bra search_list continue searching
299
300 00000038 2268 0004 sl_return movea.l 4(a0),a1 jt_ptr field to a1
301 0000003C 4E75 rts return
302
303
304 *
305 * search directory manager list
306 *
307 0000003E 2078 FED4 search_dm_list movea.l f_area,a0 BOOTROM stolen low RAM ptr
308 00000042 1028 0056 move.b mm_fd(a0),d0 msus format/device byte
309 00000046 C03C 00E0 and.b #$E0,d0 use format bits only (upper 3 bits)
310 0000004A 2068 0028 movea.l dm_start(a0),a0 ptr to the head of the directory manager list
311 0000004E 60DA bra search_list search the directory manager list (and return)
312
313
314 *
315 * search device driver list
316 *
317 00000050 2078 FED4 search_dd_list movea.l f_area,a0 BOOTROM stolen low RAM ptr
318 00000054 1028 0056 move.b mm_fd(a0),d0 msus format/device byte
319 00000058 C03C 001F and.b #$1F,d0 use device bits only (lower 5 bits)
320 0000005C 2068 0024 movea.l dd_start(a0),a0 ptr to the head of the device driver list
321 00000060 60C8 bra search_list search the device driver list (and return)
PAGE 5 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES
323 ******************************************************************************
324 * Directory Manager Steering Routines *
325 ******************************************************************************
326
327 src function dm_sysrec_valid: boolean;
328 src function dm_fileopen(var filename: string255; var filetype: signed16;
329 src var sector_addr, length: integer; var exec_addr: anyptr): boolean;
330
331
332 *
333 * def's
334 *
335 def sr_dm_sysrec_valid
336 def sr_dm_fileopen
337
338
339 0000 0062 sr_dm_sysrec_valid equ *
340 00000062 61DA bsr search_dm_list search the directory manager list
341 00000064 4ED1 jmp (a1) branch to the sysrec_valid routine
342
343 0000 0066 sr_dm_fileopen equ *
344 00000066 61D6 bsr search_dm_list search the directory manager list
345 00000068 4EE9 0004 jmp 4(a1) branch to the fileopen routine
346
347
348
349
350 *
351 * directory manager list
352 *
353 0000006C 0000 000A dml dc.l 10 long offset to the next entry
354 00000070 0000 0094 dc.l dmLIF_jt LIF directory manager jump table
355 00000074 00 dc.b 0 = 0*32 fmt key for LIF
356
357 00000076 0000 000A dc.l 10 long offset to the next entry
358 0000007A 0000 009C dc.l dmSDF_jt SDF directory manager jump table
359 0000007E 20 dc.b 32 = 1*32 fmt key for SDF
360
361 00000080 0000 000A dc.l 10 long offset to the next entry
362 00000084 0000 00A4 dc.l dmUNIX_jt UNIX directory manager jump table
363 00000088 40 dc.b 64 = 2*32 fmt key for UNIX
364
365 0000008A 0000 0000 dc.l 0 end of list
366 0000008E 0000 00AC dc.l dmDUMMY_jt Dummy directory manager jump table
367 00000092 00 dc.b 0
PAGE 6 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES
369 *
370 * jump table ref's
371 *
372 refr dmLIF_sysrec_valid
373 refr dmLIF_fileopen
374
375 refr dmSDF_sysrec_valid
376 refr dmSDF_fileopen
377
378 refr dmUNIX_sysrec_valid
379 refr dmUNIX_fileopen
380
381
382
383 *
384 * jump tables
385 *
386 00000094 6000 FF6A dmLIF_jt bra dmLIF_sysrec_valid
387 00000098 6000 FF66 bra dmLIF_fileopen
388
389 0000009C 6000 FF62 dmSDF_jt bra dmSDF_sysrec_valid
390 000000A0 6000 FF5E bra dmSDF_fileopen
391
392 000000A4 6000 FF5A dmUNIX_jt bra dmUNIX_sysrec_valid
393 000000A8 6000 FF56 bra dmUNIX_fileopen
394
395 000000AC 6000 0006 dmDUMMY_jt bra dmDUMMY_sysrec_valid
396 000000B0 6000 0008 bra dmDUMMY_fileopen
397
398
399
400 *
401 * dummy procedures
402 *
403 0000 00B4 dmDUMMY_sysrec_valid equ *
404 000000B4 205F movea.l (sp)+,a0 pop the return address
405 000000B6 51D7 sf (sp) return a value of false
406 000000B8 4ED0 jmp (a0) return
407
408 0000 00BA dmDUMMY_fileopen equ *
409 000000BA 205F movea.l (sp)+,a0 pop the return address
410 000000BC DEFC 0014 adda #20,sp pop the parameters
411 000000C0 51D7 sf (sp) return a value of false
412 000000C2 4ED0 jmp (a0) return
PAGE 7 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES
414 *****************************************************************************
415 * Device Driver Steering Routines *
416 *****************************************************************************
417
418 src function dd_controllersID(cardID: unsgn8; HPIBident: signed16): boolean;
419 src procedure dd_setdevicename(var device_name: string255);
420 src procedure dd_controller_init;
421 src procedure dd_unit_init;
422 src procedure dd_deviceread(anyvar buf: char; length, start_addr: integer);
423
424
425 *
426 * def's
427 *
428 def sr_dd_controllersID
429 def sr_dd_setdevicename
430 def sr_dd_controller_init
431 def sr_dd_unit_init
432 def sr_dd_deviceread
433
434
435 0000 00C4 sr_dd_controllersID equ *
436 000000C4 618A bsr search_dd_list search the device driver list
437 000000C6 4ED1 jmp (a1) branch to the controllerID routine
438
439 0000 00C8 sr_dd_setdevicename equ *
440 000000C8 6186 bsr search_dd_list search the device driver list
441 000000CA 4EE9 0004 jmp 4(a1) branch to the setdevname routine
442
443 0000 00CE sr_dd_controller_init equ *
444 000000CE 6180 bsr search_dd_list search the device driver list
445 000000D0 4EE9 0008 jmp 8(a1) branch to the controller_init routine
446
447 0000 00D4 sr_dd_unit_init equ *
448 000000D4 6100 FF7A bsr search_dd_list search the device driver list
449 000000D8 4EE9 000C jmp 12(a1) branch to the unit_init routine
450
451 0000 00DC sr_dd_deviceread equ *
452 000000DC 6100 FF72 bsr search_dd_list search the device driver list
453 000000E0 4EE9 0010 jmp 16(a1) branch to the deviceread routine
454
455
456
457 *
458 * function menu(var devicename: string255): ^