0
|
1 ********************************************************************
|
|
2 * OS9p2 - OS-9 Level One V2 P2 module
|
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
|
8 * 10 Tandy/Microware original version
|
|
9
|
|
10 nam OS9p2
|
|
11 ttl OS-9 Level One V2 P2 module
|
|
12
|
|
13 ifp1
|
|
14 use defsfile
|
|
15 endc
|
|
16
|
|
17 tylg set Systm+Objct
|
|
18 atrv set ReEnt+rev
|
|
19 rev set $01
|
|
20 edition set $0A
|
|
21
|
|
22 mod eom,name,tylg,atrv,start,size
|
|
23
|
|
24 size equ .
|
|
25
|
|
26 name fcs /OS9p2/
|
|
27 fcb edition
|
|
28
|
|
29 SvcTbl fcb $7F
|
|
30 fdb IOCall-*-2
|
|
31
|
|
32 fcb F$Unlink
|
|
33 fdb FUnlink-*-2
|
|
34
|
|
35 fcb F$Wait
|
|
36 fdb FWait-*-2
|
|
37
|
|
38 fcb F$Exit
|
|
39 fdb FExit-*-2
|
|
40
|
|
41 fcb F$Mem
|
|
42 fdb FMem-*-2
|
|
43
|
|
44 fcb F$Send
|
|
45 fdb FSend-*-2
|
|
46
|
|
47 fcb F$Sleep
|
|
48 fdb FSleep-*-2
|
|
49
|
|
50 fcb F$Icpt
|
|
51 fdb FIcpt-*-2
|
|
52
|
|
53 fcb F$ID
|
|
54 fdb FID-*-2
|
|
55
|
|
56 fcb F$SPrior
|
|
57 fdb FSPrior-*-2
|
|
58
|
|
59 fcb F$SSwi
|
|
60 fdb FSSwi-*-2
|
|
61
|
|
62 fcb F$STime
|
|
63 fdb FSTime-*-2
|
|
64
|
|
65 fcb F$Find64+$80
|
|
66 fdb FFind64-*-2
|
|
67
|
|
68 fcb F$All64+$80
|
|
69 fdb FAll64-*-2
|
|
70
|
|
71 fcb F$Ret64+$80
|
|
72 fdb FRet64-*-2
|
|
73
|
|
74 fcb $80
|
|
75
|
|
76 start equ *
|
|
77 * install system calls
|
|
78 leay SvcTbl,pcr
|
|
79 os9 F$SSvc
|
|
80 ldx <D.PrcDBT
|
|
81 os9 F$All64
|
|
82 bcs L0081
|
|
83 stx <D.PrcDBT
|
|
84 sty <D.Proc
|
|
85 tfr s,d
|
|
86 deca
|
|
87 ldb #$01
|
|
88 std $07,y
|
|
89 lda #$80
|
|
90 sta $0D,y
|
|
91 ldu <D.Init
|
|
92 bsr ChdDir
|
|
93 bcc L006A
|
|
94 lbsr JmpBoot
|
|
95 bsr ChdDir
|
|
96 L006A bsr OpenCons
|
|
97 bcc L0073
|
|
98 lbsr JmpBoot
|
|
99 bsr OpenCons
|
|
100 L0073 ldd InitStr,u
|
|
101 leax d,u
|
|
102 lda #$01
|
|
103 clrb
|
|
104 ldy #$0000
|
|
105 os9 F$Chain
|
|
106 L0081 jmp [<$FFFE]
|
|
107
|
|
108 *
|
|
109 * U = address of init module
|
|
110 ChdDir clrb
|
|
111 ldd <$10,u
|
|
112 beq ChdDir10
|
|
113 leax d,u
|
|
114 lda #READ.+EXEC.
|
|
115 os9 I$ChgDir
|
|
116 ChdDir10 rts
|
|
117
|
|
118 * open console device
|
|
119 * U = address of init module
|
|
120 OpenCons clrb
|
|
121 ldd <StdStr,u
|
|
122 leax d,u
|
|
123 lda #UPDAT.
|
|
124 os9 I$Open
|
|
125 bcs OpenCn10
|
|
126 ldx <D.Proc
|
|
127 sta P$Path+0,x
|
|
128 os9 I$Dup
|
|
129 sta P$Path+1,x
|
|
130 os9 I$Dup
|
|
131 sta P$Path+2,x
|
|
132 OpenCn10 rts
|
|
133
|
|
134 FUnlink ldd R$U,u
|
|
135 beq L00F9
|
|
136 ldx <D.ModDir
|
|
137 L00B8 cmpd ,x
|
|
138 beq L00C5
|
|
139 leax $04,x
|
|
140 cmpx <D.ModDir+2
|
|
141 bcs L00B8
|
|
142 bra L00F9
|
|
143 L00C5 lda $02,x
|
|
144 beq L00CE
|
|
145 deca
|
|
146 sta $02,x
|
|
147 bne L00F9
|
|
148 L00CE ldy ,x
|
|
149 cmpy <D.BTLO
|
|
150 bcc L00F9
|
|
151 ldb $06,y
|
|
152 cmpb #$D0
|
|
153 bcs L00E5
|
|
154 os9 F$IODel
|
|
155 bcc L00E5
|
|
156 inc $02,x
|
|
157 bra L00FA
|
|
158 L00E5 clra
|
|
159 clrb
|
|
160 std ,x
|
|
161 std ,y
|
|
162 ldd $02,y
|
|
163 lbsr L0236
|
|
164 exg d,y
|
|
165 exg a,b
|
|
166 ldx <D.FMBM
|
|
167 os9 F$DelBit
|
|
168 L00F9 clra
|
|
169 L00FA rts
|
|
170
|
|
171 FWait ldy <D.Proc
|
|
172 ldx <D.PrcDBT
|
|
173 lda P$CID,y
|
|
174 bne L0108
|
|
175 comb
|
|
176 ldb #E$NoChld
|
|
177 rts
|
|
178 L0108 os9 F$Find64
|
|
179 lda P$State,y
|
|
180 bita #Dead dead?
|
|
181 bne L0124 branch if so
|
|
182 lda P$SID,y siblings?
|
|
183 bne L0108 branch if so
|
|
184 clr R$A,u
|
|
185 ldx <D.Proc
|
|
186 orcc #FIRQMask+IRQMask
|
|
187 ldd <D.WProcQ
|
|
188 std P$Queue,x
|
|
189 stx <D.WProcQ
|
|
190 lbra L034D
|
|
191 L0124 ldx <D.Proc
|
|
192 L0126 lda P$ID,y
|
|
193 ldb <P$Signal,y
|
|
194 std R$A,u
|
|
195 pshs u,y,x,a
|
|
196 leay P$PID,x
|
|
197 ldx <D.PrcDBT
|
|
198 bra L0138
|
|
199 L0135 os9 F$Find64
|
|
200 L0138 lda P$SID,y
|
|
201 cmpa ,s
|
|
202 bne L0135
|
|
203 ldu $03,s
|
|
204 ldb $02,u
|
|
205 stb $02,y
|
|
206 os9 F$Ret64
|
|
207 puls pc,u,y,x,a
|
|
208
|
|
209 FExit ldx <D.Proc
|
|
210 ldb R$B,u
|
|
211 stb P$Signal,x
|
|
212 ldb #NumPaths
|
|
213 leay P$PATH,x
|
|
214 L0155 lda ,y+
|
|
215 beq L0160
|
|
216 pshs b
|
|
217 os9 I$Close
|
|
218 puls b
|
|
219 L0160 decb
|
|
220 bne L0155
|
|
221 lda P$ADDR,x
|
|
222 tfr d,u
|
|
223 lda P$PagCnt,x
|
|
224 os9 F$SRtMem
|
|
225 ldu P$PModul,x
|
|
226 os9 F$UnLink
|
|
227 ldu <D.Proc
|
|
228 leay P$PID,u
|
|
229 ldx <D.PrcDBT
|
|
230 bra L018C
|
|
231 L017A clr $02,y
|
|
232 os9 F$Find64
|
|
233 lda P$State,y
|
|
234 bita #Dead dead?
|
|
235 beq L018A branch if not
|
|
236 lda ,y
|
|
237 os9 F$Ret64
|
|
238 L018A clr P$PID,y
|
|
239 L018C lda P$SID,y
|
|
240 bne L017A
|
|
241 ldx #$0041
|
|
242 lda P$PID,u
|
|
243 bne L01A4
|
|
244 ldx <D.PrcDBT
|
|
245 lda P$ID,u
|
|
246 os9 F$Ret64
|
|
247 bra L01C2
|
|
248 L01A0 cmpa ,x
|
|
249 beq L01B2
|
|
250 L01A4 leay ,x Y = proc desc ptr
|
|
251 ldx P$Queue,x
|
|
252 bne L01A0
|
|
253 lda P$State,u
|
|
254 ora #Dead
|
|
255 sta P$State,u
|
|
256 bra L01C2
|
|
257 L01B2 ldd P$Queue,x
|
|
258 std P$Queue,y
|
|
259 os9 F$AProc
|
|
260 leay ,u
|
|
261 ldu P$SP,x
|
|
262 ldu $01,u
|
|
263 lbsr L0126
|
|
264 L01C2 clra
|
|
265 clrb
|
|
266 std <D.Proc
|
|
267 rts
|
|
268
|
|
269 FMem ldx <D.Proc
|
|
270 ldd R$A,u
|
|
271 beq L0227
|
|
272 bsr L0236
|
|
273 subb P$PagCnt,x
|
|
274 beq L0227
|
|
275 bcs L0207
|
|
276 tfr d,y
|
|
277 ldx P$ADDR,x
|
|
278 pshs u,y,x
|
|
279 ldb ,s
|
|
280 beq L01E1
|
|
281 addb $01,s
|
|
282 L01E1 ldx <D.FMBM
|
|
283 ldu <D.FMBM+2
|
|
284 os9 F$SchBit
|
|
285 bcs L0231
|
|
286 stb $02,s
|
|
287 ldb ,s
|
|
288 beq L01F6
|
|
289 addb $01,s
|
|
290 cmpb $02,s
|
|
291 bne L0231
|
|
292 L01F6 ldb $02,s
|
|
293 os9 F$AllBit
|
|
294 ldd $02,s
|
|
295 suba $01,s
|
|
296 addb $01,s
|
|
297 puls u,y,x
|
|
298 ldx <D.Proc
|
|
299 bra L0225
|
|
300
|
|
301 L0207 negb
|
|
302 tfr d,y
|
|
303 negb
|
|
304 addb $08,x
|
|
305 addb $07,x
|
|
306 cmpb $04,x
|
|
307 bhi L0217
|
|
308 comb
|
|
309 ldb #E$DelSP
|
|
310 rts
|
|
311
|
|
312 L0217 ldx <D.FMBM
|
|
313 os9 F$DelBit
|
|
314 tfr y,d
|
|
315 negb
|
|
316 ldx <D.Proc
|
|
317 addb P$PagCnt,x
|
|
318 lda P$ADDR,x
|
|
319 L0225 std P$ADDR,x
|
|
320 L0227 lda P$PagCnt,x
|
|
321 clrb
|
|
322 std $01,u
|
|
323 adda P$ADDR,x
|
|
324 std $06,u
|
|
325 rts
|
|
326 L0231 comb
|
|
327 ldb #E$MemFul
|
|
328 puls pc,u,y,x
|
|
329
|
|
330 L0236 addd #$00FF
|
|
331 clrb
|
|
332 exg a,b
|
|
333 rts
|
|
334
|
|
335 FSend lda R$A,u
|
|
336 bne L024F
|
|
337 inca
|
|
338 L0242 ldx <D.Proc
|
|
339 cmpa P$ID,x
|
|
340 beq L024A
|
|
341 bsr L024F
|
|
342 L024A inca
|
|
343 bne L0242
|
|
344 clrb
|
|
345 rts
|
|
346
|
|
347 L024F ldx <D.PrcDBT
|
|
348 os9 F$Find64
|
|
349 bcc L025E
|
|
350 ldb #E$IPrcID
|
|
351 rts
|
|
352
|
|
353 L0259 comb
|
|
354 ldb #E$IPrcID
|
|
355 puls pc,y,a
|
|
356
|
|
357 L025E pshs y,a
|
|
358 ldb P$SID,u
|
|
359 bne L0275
|
|
360 ldx <D.Proc
|
|
361 ldd P$User,x
|
|
362 beq L026F
|
|
363 cmpd $09,y
|
|
364 bne L0259
|
|
365 L026F lda $0D,y
|
|
366 ora #$02
|
|
367 sta $0D,y
|
|
368 L0275 orcc #FIRQMask+IRQMask
|
|
369 lda <P$Signal,y
|
|
370 beq L0284
|
|
371 deca
|
|
372 beq L0284
|
|
373 comb
|
|
374 ldb #E$USigP
|
|
375 puls pc,y,a
|
|
376
|
|
377 L0284 ldb P$SID,u
|
|
378 stb <P$Signal,y
|
|
379 ldx #$0043
|
|
380 bra L02B4
|
|
381 L028E cmpx $01,s
|
|
382 bne L02B4
|
|
383 lda $0D,x
|
|
384 bita #$40
|
|
385 beq L02C7
|
|
386 ldu $04,x
|
|
387 ldd $04,u
|
|
388 beq L02C7
|
|
389 ldu $0E,x
|
|
390 beq L02C7
|
|
391 pshs b,a
|
|
392 lda $0D,u
|
|
393 bita #$40
|
|
394 puls b,a
|
|
395 beq L02C7
|
|
396 ldu $04,u
|
|
397 addd $04,u
|
|
398 std $04,u
|
|
399 bra L02C7
|
|
400 L02B4 leay ,x
|
|
401 ldx P$Queue,y
|
|
402 bne L028E
|
|
403 ldx #$0041
|
|
404 L02BD leay ,x
|
|
405 ldx P$Queue,y
|
|
406 beq L02D7
|
|
407 cmpx $01,s
|
|
408 bne L02BD
|
|
409 L02C7 ldd P$Queue,x
|
|
410 std P$Queue,y
|
|
411 lda <P$Signal,x
|
|
412 deca
|
|
413 bne L02D4
|
|
414 sta <P$Signal,x
|
|
415 L02D4 os9 F$AProc
|
|
416 L02D7 clrb
|
|
417 puls pc,y,a
|
|
418
|
|
419 * F$Sleep
|
|
420 FSleep ldx <D.Proc get pdesc
|
|
421 orcc #FIRQMask+IRQMask mask ints
|
|
422 lda P$Signal,x get proc signal
|
|
423 beq L02EE branch if none
|
|
424 deca dec signal
|
|
425 bne L02E9 branch if not S$Wake
|
|
426 sta P$Signal,x clear signal
|
|
427 L02E9 os9 F$AProc insert into activeq
|
|
428 bra L034D
|
|
429 L02EE ldd R$X,u get timeout
|
|
430 beq L033A branch if forever
|
|
431 subd #$0001 subtract 1
|
|
432 std R$X,u save back to caller
|
|
433 beq L02E9 branch if give up tslice
|
|
434 pshs u,x
|
|
435 ldx #$0043
|
|
436 L02FE leay ,x
|
|
437 ldx P$Queue,x
|
|
438 beq L0316
|
|
439 pshs b,a
|
|
440 lda P$State,x
|
|
441 bita #TimSleep
|
|
442 puls b,a
|
|
443 beq L0316
|
|
444 ldu P$SP,x
|
|
445 subd $04,u
|
|
446 bcc L02FE
|
|
447 addd $04,u
|
|
448 L0316 puls u,x
|
|
449 std R$X,u
|
|
450 ldd P$Queue,y
|
|
451 stx P$Queue,y
|
|
452 std P$Queue,x
|
|
453 lda P$State,x
|
|
454 ora #TimSleep
|
|
455 sta P$State,x
|
|
456 ldx P$Queue,x
|
|
457 beq L034D
|
|
458 lda P$State,x
|
|
459 bita #TimSleep
|
|
460 beq L034D
|
|
461 ldx P$SP,x
|
|
462 ldd P$SP,x
|
|
463 subd R$X,u
|
|
464 std P$SP,x
|
|
465 bra L034D
|
|
466 L033A lda P$State,x
|
|
467 anda #^TimSleep
|
|
468 sta P$State,x
|
|
469 ldd #$0043
|
|
470 L0343 tfr d,y
|
|
471 ldd P$Queue,y
|
|
472 bne L0343
|
|
473 stx P$Queue,y
|
|
474 std P$Queue,x
|
|
475 L034D leay <L0361,pcr
|
|
476 pshs y
|
|
477 ldy <D.Proc
|
|
478 ldd P$SP,y
|
|
479 ldx R$X,u
|
|
480 pshs u,y,x,dp,b,a,cc
|
|
481 sts P$SP,y
|
|
482 os9 F$NProc
|
|
483 L0361 std P$SP,y
|
|
484 stx R$X,u
|
|
485 clrb
|
|
486 rts
|
|
487
|
|
488 * F$Icpt
|
|
489 FIcpt ldx <D.Proc get pdesc
|
|
490 ldd R$X,u get addr of icpt rtn
|
|
491 std <P$SigVec,x store in pdesc
|
|
492 ldd R$U,u get data ptr
|
|
493 std <P$SigDat,x store in pdesc
|
|
494 clrb
|
|
495 rts
|
|
496
|
|
497 * F$SPrior
|
|
498 FSPrior lda R$A,u get ID
|
|
499 ldx <D.PrcDBT find pdesc
|
|
500 os9 F$Find64
|
|
501 bcs FSPrEx branch if can't find
|
|
502 ldx <D.Proc get pdesc
|
|
503 ldd P$User,x get user ID
|
|
504 cmpd P$User,y same as dest pdesc
|
|
505 bne FSPrEx branch if not, must be owner
|
|
506 lda R$B,u else get prior
|
|
507 sta P$Prior,y and store it in dest pdesc
|
|
508 rts
|
|
509 FSPrEx comb
|
|
510 ldb #E$IPrcID
|
|
511 rts
|
|
512
|
|
513 * F$ID
|
|
514 FID ldx <D.Proc get proc desc
|
|
515 lda P$ID,x get id
|
|
516 sta R$A,u put in A
|
|
517 ldd P$User,x get user ID
|
|
518 std R$Y,u store in Y
|
|
519 clrb
|
|
520 rts
|
|
521
|
|
522 * F$SSwi
|
|
523 FSSwi ldx <D.Proc
|
|
524 leay P$SWI,x
|
|
525 ldb R$A,u
|
|
526 decb
|
|
527 cmpb #$03
|
|
528 bcc FSSwiEx
|
|
529 lslb
|
|
530 ldx R$X,u
|
|
531 stx b,y
|
|
532 rts
|
|
533 FSSwiEx comb
|
|
534 ldb #E$ISWI
|
|
535 rts
|
|
536
|
|
537 ClkName fcs /Clock/
|
|
538
|
|
539 * F$STime
|
|
540 FSTime ldx R$X,u
|
|
541 ldd ,x
|
|
542 std <D.Year
|
|
543 ldd 2,x
|
|
544 std <D.Day
|
|
545 ldd 4,x
|
|
546 std <D.Min
|
|
547 lda #Systm+Objct
|
|
548 leax <ClkName,pcr
|
|
549 os9 F$Link
|
|
550 bcs L03D2
|
|
551 jmp ,y
|
|
552 clrb
|
|
553 L03D2 rts
|
|
554
|
|
555 * F$Find64
|
|
556 FFind64 lda R$A,u
|
|
557 ldx R$X,u
|
|
558 bsr L03DF
|
|
559 bcs L03DE
|
|
560 sty R$Y,u
|
|
561 L03DE rts
|
|
562
|
|
563 L03DF pshs b,a
|
|
564 tsta
|
|
565 beq L03F3
|
|
566 clrb
|
|
567 lsra
|
|
568 rorb
|
|
569 lsra
|
|
570 rorb
|
|
571 lda a,x
|
|
572 tfr d,y
|
|
573 beq L03F3
|
|
574 tst ,y
|
|
575 bne L03F4
|
|
576 L03F3 coma
|
|
577 L03F4 puls pc,b,a
|
|
578
|
|
579 * F$All64
|
|
580 FAll64 ldx R$X,u
|
|
581 bne L0402
|
|
582 bsr L040C
|
|
583 bcs L040B
|
|
584 stx ,x
|
|
585 stx R$X,u
|
|
586 L0402 bsr L0422
|
|
587 bcs L040B
|
|
588 sta R$A,u
|
|
589 sty R$Y,u
|
|
590 L040B rts
|
|
591
|
|
592 L040C pshs u
|
|
593 ldd #$0100
|
|
594 os9 F$SRqMem
|
|
595 leax ,u
|
|
596 puls u
|
|
597 bcs L0421
|
|
598 clra
|
|
599 clrb
|
|
600 L041C sta d,x
|
|
601 incb
|
|
602 bne L041C
|
|
603 L0421 rts
|
|
604
|
|
605 L0422 pshs u,x
|
|
606 clra
|
|
607 L0425 pshs a
|
|
608 clrb
|
|
609 lda a,x
|
|
610 beq L0437
|
|
611 tfr d,y
|
|
612 clra
|
|
613 L042F tst d,y
|
|
614 beq L0439
|
|
615 addb #$40
|
|
616 bcc L042F
|
|
617 L0437 orcc #Carry
|
|
618 L0439 leay d,y
|
|
619 puls a
|
|
620 bcc L0464
|
|
621 inca
|
|
622 cmpa #$40
|
|
623 bcs L0425
|
|
624 clra
|
|
625 L0445 tst a,x
|
|
626 beq L0453
|
|
627 inca
|
|
628 cmpa #$40
|
|
629 bcs L0445
|
|
630 ldb #E$PthFul
|
|
631 coma
|
|
632 bra L0471
|
|
633 L0453 pshs x,a
|
|
634 bsr L040C
|
|
635 bcs L0473
|
|
636 leay ,x
|
|
637 tfr x,d
|
|
638 tfr a,b
|
|
639 puls x,a
|
|
640 stb a,x
|
|
641 clrb
|
|
642 L0464 lslb
|
|
643 rola
|
|
644 lslb
|
|
645 rola
|
|
646 ldb #$3F
|
|
647 L046A clr b,y
|
|
648 decb
|
|
649 bne L046A
|
|
650 sta ,y
|
|
651 L0471 puls pc,u,x
|
|
652 L0473 leas 3,s
|
|
653 puls pc,u,x
|
|
654
|
|
655 * F$Ret64
|
|
656 FRet64 lda R$A,u
|
|
657 ldx R$X,u
|
|
658 pshs u,y,x,b,a
|
|
659 clrb
|
|
660 lsra
|
|
661 rorb
|
|
662 lsra
|
|
663 rorb
|
|
664 pshs a
|
|
665 lda a,x
|
|
666 beq L04A0
|
|
667 tfr d,y
|
|
668 clr ,y
|
|
669 clrb
|
|
670 tfr d,u
|
|
671 clra
|
|
672 Ret64Lp tst d,u
|
|
673 bne Ret64Ex
|
|
674 addb #64
|
|
675 bne Ret64Lp
|
|
676 inca
|
|
677 os9 F$SRtMem
|
|
678 lda ,s
|
|
679 clr a,x
|
|
680 L04A0
|
|
681 Ret64Ex clr ,s+
|
|
682 puls pc,u,y,x,b,a
|
|
683
|
|
684 IOMgr fcs /IOMAN/
|
|
685
|
|
686 IOCall pshs u,y,x,b,a
|
|
687 ldu <D.Init get ptr to init
|
|
688 bsr LinkIOM link to IOMan
|
|
689 bcc JmpIOM jump into him if ok
|
|
690 bsr JmpBoot try boot
|
|
691 bcs IOCallRt problem booting... return w/ error
|
|
692 bsr LinkIOM ok, NOW link to IOMan
|
|
693 bcs IOCallRt still a problem...
|
|
694 JmpIOM jsr ,y
|
|
695 puls u,y,x,b,a
|
|
696 ldx -2,y
|
|
697 jmp ,x
|
|
698 IOCAllRt puls pc,u,y,x,b,a
|
|
699
|
|
700 LinkIOM leax IOMgr,pcr
|
|
701 lda #Systm+Objct
|
|
702 os9 F$Link
|
|
703 rts
|
|
704
|
|
705 *
|
|
706 * U = address of init module
|
|
707 JmpBoot pshs u
|
|
708 comb
|
|
709 tst <D.Boot already booted?
|
|
710 bne JmpBtEr yep, return to caller...
|
|
711 inc <D.Boot else set boot flag
|
|
712 ldd <BootStr,u get pointer to boot str
|
|
713 beq JmpBtEr if none, return to caller
|
|
714 leax d,u X = ptr to boot mod name
|
|
715 lda #Systm+Objct
|
|
716 os9 F$Link link
|
|
717 bcs JmpBtEr return if error
|
|
718 jsr ,y ...else jsr into boot module
|
|
719 * D = size of bootfile
|
|
720 * X = address of bootfile
|
|
721 bcs JmpBtEr return if error
|
|
722 stx <D.MLIM
|
|
723 stx <D.BTLO
|
|
724 leau d,x
|
|
725 stu <D.BTHI
|
|
726 * search through bootfile and validate modules
|
|
727 ValBoot ldd ,x
|
|
728 cmpd #M$ID12
|
|
729 bne ValBoot1
|
|
730 os9 F$VModul
|
|
731 bcs ValBoot1
|
|
732 ldd M$Size,x
|
|
733 leax d,x move X to next module
|
|
734 bra ValBoot2
|
|
735 ValBoot1 leax 1,x advance one byte
|
|
736 ValBoot2 cmpx <D.BTHI
|
|
737 bcs ValBoot
|
|
738 JmpBtEr puls pc,u
|
|
739
|
|
740 emod
|
|
741 eom equ *
|