0
|
1 *********************************************************************
|
|
2 *
|
|
3 * Standard SDisk3 floppy disk controller driver from
|
|
4 * DP Johnson
|
|
5 *
|
|
6 *********************************************************************
|
|
7
|
|
8 nam SDisk3
|
|
9 ttl os9 device driver
|
|
10
|
|
11 ifp1
|
|
12 use defsfile
|
|
13 endc
|
|
14
|
|
15 tylg set Drivr+Objct
|
|
16 atrv set ReEnt+rev
|
|
17 rev set $01
|
|
18 mod eom,name,tylg,atrv,start,size
|
|
19 u0000 rmb 4
|
|
20 u0004 rmb 4
|
|
21 u0008 rmb 7
|
|
22 u000F rmb 1
|
|
23 u0010 rmb 34
|
|
24 u0032 rmb 2
|
|
25 u0034 rmb 12
|
|
26 u0040 rmb 16
|
|
27 u0050 rmb 58
|
|
28 u008A rmb 29
|
|
29 u00A7 rmb 2
|
|
30 u00A9 rmb 1
|
|
31 u00AA rmb 1
|
|
32 u00AB rmb 1
|
|
33 u00AC rmb 1
|
|
34 u00AD rmb 1
|
|
35 u00AE rmb 2
|
|
36 u00B0 rmb 2
|
|
37 u00B2 rmb 1
|
|
38 u00B3 rmb 1
|
|
39 u00B4 rmb 1
|
|
40 u00B5 rmb 1
|
|
41 u00B6 rmb 1
|
|
42 u00B7 rmb 2
|
|
43 u00B9 rmb 2
|
|
44 u00BB rmb 2
|
|
45 u00BD rmb 2
|
|
46 u00BF rmb 1
|
|
47 u00C0 rmb 1
|
|
48
|
|
49 u00D0 equ $d0
|
|
50 u00FC equ $fc
|
|
51
|
|
52 size equ .
|
|
53 fcb $FF driver mode byte
|
|
54
|
|
55 name equ *
|
|
56 fcs /SDisk3/
|
|
57 fcb $0F
|
|
58
|
|
59 fcc /Copyright 1987 - D.P.Johnson/
|
|
60
|
|
61 L0031 fcb $00,$01,$0a
|
|
62
|
|
63
|
|
64 start lbra INIT
|
|
65 lbra READ
|
|
66 lbra WRITE
|
|
67 lbra GETSTA
|
|
68 lbra SETSTA
|
|
69 * Terminate routine
|
|
70 * Entry: u=address of device memory area
|
|
71 ldx #$0000 Disable our IRQ entry
|
|
72 os9 F$IRQ
|
|
73 bcs TermExit If error, exit
|
|
74 leay >u00BB,u Point to our VIRQ packet
|
|
75 os9 F$VIRQ Disable our VIRQ entry
|
|
76 bcs TermExit If error, exit
|
|
77 tfr u,x Move device memory pointer to x
|
|
78 ldu >u00AE,u Get address from our memory
|
|
79 ldd #$0200 Return our 1st 512 byte buffer to the system
|
|
80 os9 F$SRtMem
|
|
81 ldu >$00B7,x Get address of our 2nd block of memory
|
|
82 beq TermExit If it wasn't used, exit
|
|
83 os9 F$SRtMem Return that block too (extra for large sector size?)
|
|
84 TermExit rts
|
|
85
|
|
86 * Init routine
|
|
87 * Entry: y=address of device descriptor
|
|
88 * u=address of device memory
|
|
89
|
|
90 INIT clra
|
|
91 sta <D.MotOn Clear out Floppy disk timeout counter
|
|
92 sta >u00AC,u
|
|
93 ldd #$012C
|
|
94 std >u00B9,u
|
|
95 lbsr L0180
|
|
96 lbsr L046C
|
|
97 lda >$FF48
|
|
98 lda #$FF
|
|
99 ldb #$04
|
|
100 leax u000F,u
|
|
101 L0087 sta $01,x
|
|
102 sta <$15,x
|
|
103 leax <$26,x
|
|
104 decb
|
|
105 bne L0087
|
|
106 leax >L026D,pcr
|
|
107 stx <u00FC
|
|
108 pshs y
|
|
109 leay >u00BF,u
|
|
110 tfr y,d
|
|
111 leay >L0678,pcr
|
|
112 leax >L0031,pcr
|
|
113 os9 F$IRQ
|
|
114 puls y
|
|
115 bcs L00C2
|
|
116 ldd #$0200
|
|
117 pshs u
|
|
118 os9 F$SRqMem
|
|
119 tfr u,x
|
|
120 puls u
|
|
121 bcs L00C2
|
|
122 stx >u00AE,u
|
|
123 clrb
|
|
124 L00C2 rts
|
|
125
|
|
126 READ lbsr L0171
|
|
127 clr >u00B6,u
|
|
128 lda #$92
|
|
129 cmpx #$0000
|
|
130 bne L0101
|
|
131 inc >u00B6,u
|
|
132 bsr L0101
|
|
133 bcs L00C2
|
|
134 tst >u00AC,u
|
|
135 beq L00E3
|
|
136 clra
|
|
137 lbra L0549
|
|
138 L00E3 ldx $08,y
|
|
139 pshs y,x
|
|
140 ldy >u00A7,u
|
|
141 ldb #$14
|
|
142 L00EE lda b,x
|
|
143 sta b,y
|
|
144 decb
|
|
145 bpl L00EE
|
|
146 clrb
|
|
147 puls pc,y,x
|
|
148 L00F8 bcc L0101
|
|
149 pshs x,b,a
|
|
150 lbsr L05FF
|
|
151 puls x,b,a
|
|
152 L0101 pshs x,b,a
|
|
153 bsr L010C
|
|
154 puls x,b,a
|
|
155 bcc L00C2
|
|
156 lsra
|
|
157 bne L00F8
|
|
158 L010C lbsr L02DB
|
|
159 bcs L00C2
|
|
160 ldx $08,y
|
|
161 ldb #$80
|
|
162 pshs y,cc
|
|
163 bsr L018C
|
|
164 beq L0140
|
|
165 L011B bita >$FF48
|
|
166 bne L0136
|
|
167 leay -$01,y
|
|
168 bne L011B
|
|
169 L0124 bita >$FF48
|
|
170 bne L0136
|
|
171 leay -$01,y
|
|
172 bne L0124
|
|
173 leas $02,s
|
|
174 L012F bsr L0180
|
|
175 puls y,cc
|
|
176 lbra L028C
|
|
177 L0136 lda >$FF4B
|
|
178 sta ,x+
|
|
179 stb >$FF40
|
|
180 bra L0136
|
|
181 L0140 leas $02,s
|
|
182 lbsr L046C
|
|
183 ldb >u00B4,u
|
|
184 L0149 bita >$FF48
|
|
185 bne L0166
|
|
186 leay -$01,y
|
|
187 bne L0149
|
|
188 L0152 bita >$FF48
|
|
189 bne L0166
|
|
190 leay -$01,y
|
|
191 bne L0152
|
|
192 bra L012F
|
|
193 L015D lda >$FF48
|
|
194 beq L012F
|
|
195 bita #$02
|
|
196 beq L015D
|
|
197 L0166 lda >$FF4B
|
|
198 sta ,x+
|
|
199 decb
|
|
200 bne L015D
|
|
201 lbra L026F
|
|
202 L0171 pshs b,a
|
|
203 ldd #$0100
|
|
204 std >u00B3,u
|
|
205 stb >u00B2,u
|
|
206 puls pc,b,a
|
|
207 L0180 lda #$D0
|
|
208 sta >$FF48
|
|
209 lbsr L046C
|
|
210 lda >$FF48
|
|
211 rts
|
|
212 L018C orcc #$50
|
|
213 ldy #$0000
|
|
214 stb >$FF48
|
|
215 mul
|
|
216 mul
|
|
217 mul
|
|
218 ldb #$08
|
|
219 orb >u00AB,u
|
|
220 stb >$FF40
|
|
221 orb #$80
|
|
222 lda #$02
|
|
223 tst >u00AA,u
|
|
224 jmp [,s]
|
|
225
|
|
226 WRITE bsr L0171
|
|
227 L01AD lda #$91
|
|
228 L01AF pshs x,b,a
|
|
229 bsr L01D1
|
|
230 puls x,b,a
|
|
231 bcs L01C3
|
|
232 tst <$28,y
|
|
233 bne L01C1
|
|
234 lbsr L029D
|
|
235 bcs L01C3
|
|
236 L01C1 clrb
|
|
237 L01C2 rts
|
|
238 L01C3 lsra
|
|
239 beq L01F8
|
|
240 bcc L01AF
|
|
241 pshs x,b,a
|
|
242 lbsr L05FF
|
|
243 puls x,b,a
|
|
244 bra L01AF
|
|
245 L01D1 lbsr L02DB
|
|
246 bcs L01C2
|
|
247 ldx $08,y
|
|
248 ldb #$A0
|
|
249 pshs y,cc
|
|
250 bsr L018C
|
|
251 beq L0209
|
|
252 L01E0 bita >$FF48
|
|
253 bne L01FF
|
|
254 leay -$01,y
|
|
255 bne L01E0
|
|
256 L01E9 bita >$FF48
|
|
257 bne L01FF
|
|
258 leay -$01,y
|
|
259 bne L01E9
|
|
260 leas $02,s
|
|
261 L01F4 bsr L0180
|
|
262 puls y,cc
|
|
263 L01F8 ldb >$FF48
|
|
264 orb #$20
|
|
265 bra L0277
|
|
266 L01FF stb >$FF40
|
|
267 lda ,x+
|
|
268 sta >$FF4B
|
|
269 bra L01FF
|
|
270 L0209 leas $02,s
|
|
271 lbsr L046C
|
|
272 ldb >u00B4,u
|
|
273 L0212 bita >$FF48
|
|
274 bne L022F
|
|
275 leay -$01,y
|
|
276 bne L0212
|
|
277 L021B bita >$FF48
|
|
278 bne L022F
|
|
279 leay -$01,y
|
|
280 bne L021B
|
|
281 bra L01F4
|
|
282 L0226 lda >$FF48
|
|
283 beq L01F4
|
|
284 bita #$02
|
|
285 beq L0226
|
|
286 L022F lda ,x+
|
|
287 sta >$FF4B
|
|
288 decb
|
|
289 bne L0226
|
|
290 bra L026F
|
|
291 L0239 pshs y,cc
|
|
292 lbsr L018C
|
|
293 bne L01E0
|
|
294 leas $02,s
|
|
295 lbsr L046C
|
|
296 L0245 bita >$FF48
|
|
297 bne L0266
|
|
298 leay -$01,y
|
|
299 bne L0245
|
|
300 L024E bita >$FF48
|
|
301 bne L0266
|
|
302 leay -$01,y
|
|
303 bne L024E
|
|
304 bra L01F4
|
|
305 L0259 lda >$FF48
|
|
306 bita #$02
|
|
307 bne L0266
|
|
308 bita #$01
|
|
309 bne L0259
|
|
310 bra L026F
|
|
311 L0266 lda ,x+
|
|
312 sta >$FF4B
|
|
313 bra L0259
|
|
314 L026D leas $0E,s
|
|
315 L026F puls y,cc
|
|
316 ldb >$FF48
|
|
317 lbsr L0180
|
|
318 L0277 leax <L0290,pcr
|
|
319 L027A tst ,x
|
|
320 beq L0286
|
|
321 bitb ,x++
|
|
322 beq L027A
|
|
323 ldb ,-x
|
|
324 comb
|
|
325 rts
|
|
326
|
|
327 L0286 clrb
|
|
328 rts
|
|
329
|
|
330 comb
|
|
331 ldb #$F5
|
|
332 rts
|
|
333
|
|
334 L028C comb
|
|
335 ldb #$F4
|
|
336 rts
|
|
337
|
|
338 L0290 suba #$09
|
|
339 nega
|
|
340 tst <u0010
|
|
341 lsl <u0008
|
|
342 inc <u0004
|
|
343 fcb $0B,$20,$0a,$00
|
|
344 L029D pshs a,b,x
|
|
345 ldx $8,y
|
|
346 pshs x
|
|
347 ldx >u00AE,u
|
|
348 L02A6 equ *-1
|
|
349 stx $08,y
|
|
350 ldx $04,s
|
|
351 lbsr L0101
|
|
352 puls x
|
|
353 stx $08,y
|
|
354 bcs L02D9
|
|
355 ldd >u00B3,u
|
|
356 lsra
|
|
357 rorb
|
|
358 lsra
|
|
359 rorb
|
|
360 lsra
|
|
361 rorb
|
|
362 pshs u,y
|
|
363 ldy >u00AE,u
|
|
364 tfr x,u
|
|
365 L02C7 ldx ,u
|
|
366 cmpx ,y
|
|
367 bne L02D6
|
|
368 leau u0008,u
|
|
369 leay $08,y
|
|
370 decb
|
|
371 bne L02C7
|
|
372 bra L02D7
|
|
373 L02D6 comb
|
|
374 L02D7 puls u,y
|
|
375 L02D9 puls pc,x,b,a
|
|
376
|
|
377 L02DB clr >u00AD,u
|
|
378 lbsr L041A
|
|
379 tst >u00B2,u
|
|
380 beq L030A
|
|
381 ldx PD.RGS,y
|
|
382 ldd R$Y,x
|
|
383 bitb #$01
|
|
384 beq L02F4
|
|
385 com >u00A9,u
|
|
386 L02F4 bitb #$02
|
|
387 beq L02FE
|
|
388 lda #$20
|
|
389 sta >u00AA,u
|
|
390 L02FE ldd R$U,x
|
|
391 stb >$FF4A
|
|
392 ldx >u00A7,u
|
|
393 lbra L0391
|
|
394 L030A tstb
|
|
395 bne L031E
|
|
396 tfr x,d
|
|
397 ldx >u00A7,u
|
|
398 cmpd #$0000
|
|
399 beq L0360
|
|
400 cmpd $01,x
|
|
401 bcs L0322
|
|
402 L031E comb
|
|
403 ldb #$F1
|
|
404 rts
|
|
405
|
|
406 L0322 subd <$2B,y
|
|
407 bcc L032C
|
|
408 addd <$2B,y
|
|
409 bra L0360
|
|
410 L032C clr ,-s
|
|
411 pshs b
|
|
412 ldb <$10,x
|
|
413 lsrb
|
|
414 puls b
|
|
415 bcc L0347
|
|
416 L0338 com >u00A9,u
|
|
417 bne L0340
|
|
418 inc ,s
|
|
419 L0340 subd <$11,x
|
|
420 bcc L0338
|
|
421 bra L034E
|
|
422 L0347 inc ,s
|
|
423 subd <$11,x
|
|
424 bcc L0347
|
|
425 L034E lda <$10,x
|
|
426 bita #$02
|
|
427 beq L035B
|
|
428 lda #$20
|
|
429 sta >u00AA,u
|
|
430 L035B puls a
|
|
431 addb <$12,x
|
|
432 L0360 pshs a
|
|
433 lda <$23,y
|
|
434 bita #$20
|
|
435 beq L0371
|
|
436 lda #$20
|
|
437 sta >u00AA,u
|
|
438 lda ,s
|
|
439 L0371 lda <$32,y
|
|
440 anda #$0F
|
|
441 pshs a
|
|
442 lda <$32,y
|
|
443 lsra
|
|
444 lsra
|
|
445 lsra
|
|
446 lsra
|
|
447 pshs a
|
|
448 addb ,s+
|
|
449 puls a
|
|
450 adda ,s+
|
|
451 stb >$FF4A
|
|
452 L038A ldb <$10,x
|
|
453 stb >u00B5,u
|
|
454 L0391 pshs a
|
|
455 ldb <$15,x
|
|
456 pshs b
|
|
457 ldb >u00B5,u
|
|
458 lsrb
|
|
459 bitb #$02
|
|
460 beq L03B3
|
|
461 tst >u00B6,u
|
|
462 bne L03D1
|
|
463 eorb <$24,y
|
|
464 bitb #$02
|
|
465 beq L03BD
|
|
466 L03AE comb
|
|
467 ldb #$F9
|
|
468 puls pc,x
|
|
469
|
|
470 L03B3 eorb <$24,y
|
|
471 bitb #$02
|
|
472 beq L03BD
|
|
473 lsla
|
|
474 lsl ,s
|
|
475 L03BD tst >u00B6,u
|
|
476 bne L03D1
|
|
477 ldb >u00B5,u
|
|
478 lsrb
|
|
479 bcc L03D1
|
|
480 ldb <$27,y
|
|
481 subb #$02
|
|
482 bcs L03AE
|
|
483 L03D1 puls b
|
|
484 stb >$FF49
|
|
485 tst >u00AD,u
|
|
486 bne L03E3
|
|
487 ldb ,s
|
|
488 cmpb <$15,x
|
|
489 beq L03FE
|
|
490 L03E3 sta <$15,x
|
|
491 sta >$FF4B
|
|
492 ldb #$1B
|
|
493 eorb <$22,y
|
|
494 bsr L0452
|
|
495 pshs b,a
|
|
496 lda #$1E
|
|
497 L03F4 ldb #$B2
|
|
498 L03F6 decb
|
|
499 bne L03F6
|
|
500 deca
|
|
501 bne L03F4
|
|
502 puls b,a
|
|
503 L03FE puls a
|
|
504 sta <$15,x
|
|
505 sta >$FF49
|
|
506 ldb #$40
|
|
507 leax >u00A9,u
|
|
508 andb ,x
|
|
509 orb $01,x
|
|
510 orb $02,x
|
|
511 stb $02,x
|
|
512 clrb
|
|
513 rts
|
|
514
|
|
515 L0416 fcb $01
|
|
516 fcb $02
|
|
517 lsr <u0040
|
|
518 L041A lbsr L0627
|
|
519 lda <$21,y
|
|
520 cmpa #$04
|
|
521 bcs L0428
|
|
522 comb
|
|
523 ldb #$F0
|
|
524 L0427 rts
|
|
525
|
|
526 L0428 pshs x,b,a
|
|
527 leax <L0416,pcr
|
|
528 ldb a,x
|
|
529 stb >u00AB,u
|
|
530 leax u000F,u
|
|
531 ldb #$26
|
|
532 mul
|
|
533 leax d,x
|
|
534 cmpx >u00A7,u
|
|
535 beq L0448
|
|
536 stx >u00A7,u
|
|
537 com >u00AD,u
|
|
538 L0448 clr >u00A9,u
|
|
539 clr >u00AA,u
|
|
540 puls pc,x,b,a
|
|
541
|
|
542 L0452 bsr L046A
|
|
543 L0454 ldb >$FF48
|
|
544 bitb #$01
|
|
545 beq L0427
|
|
546 bra L0454
|
|
547 L045D lda #$08
|
|
548 ora >u00AB,u
|
|
549 sta >$FF40
|
|
550 stb >$FF48
|
|
551 rts
|
|
552
|
|
553 L046A bsr L045D
|
|
554 L046C bsr L046E
|
|
555 L046E pshs x,b,a
|
|
556 puls pc,x,b,a
|
|
557
|
|
558 GETSTA clr >u00C0,u
|
|
559 ldx PD.RGS,y
|
|
560 ldb R$B,x
|
|
561 cmpb #$84
|
|
562 beq L0488
|
|
563 inc >u00C0,u
|
|
564 cmpb #$80
|
|
565 lbne L053B
|
|
566 L0488 bsr L04BC
|
|
567 lda #$92
|
|
568 lbsr L0101
|
|
569 pshs b,cc
|
|
570 tst >u00C0,u
|
|
571 lbeq L0582
|
|
572 pshs u,y
|
|
573 ldx <u0050
|
|
574 lda <u00D0
|
|
575 ldb $06,x
|
|
576 ldx PD.RGS,y
|
|
577 ldx R$X,x
|
|
578 ldy >u00B3,u
|
|
579 ldu >u00B7,u
|
|
580 exg x,u
|
|
581 os9 F$Move
|
|
582 puls u,y
|
|
583 lbcc L0582
|
|
584 leas $02,s
|
|
585 rts
|
|
586
|
|
587 L04BC ldd $08,y
|
|
588 std >u00B0,u
|
|
589 lda #$01
|
|
590 sta >u00B2,u
|
|
591 ldx PD.RGS,y
|
|
592 ldd R$X,x
|
|
593 tst >u00C0,u
|
|
594 beq L04EC
|
|
595 ldd >u00B7,u
|
|
596 bne L04EC
|
|
597 pshs u
|
|
598 ldd #$0200
|
|
599 os9 F$SRqMem
|
|
600 lbcs L05F9
|
|
601 tfr u,d
|
|
602 puls u
|
|
603 std >u00B7,u
|
|
604 L04EC std PD.BUF,y
|
|
605 ldx PD.RGS,y
|
|
606 ldd R$Y,x
|
|
607 andb #$0F
|
|
608 stb >u00B5,u
|
|
609 ldd R$Y,x
|
|
610 lsrb
|
|
611 lsrb
|
|
612 lsrb
|
|
613 lsrb
|
|
614 exg a,b
|
|
615 std >u00B3,u
|
|
616 cmpa #$02
|
|
617 bls L050B
|
|
618 lbra L03AE
|
|
619 L050B rts
|
|
620
|
|
621 SETSTA clr >u00C0,u
|
|
622 ldx PD.RGS,y
|
|
623 ldb R$B,x Get function
|
|
624 cmpb #$84 System direct write
|
|
625 beq L0558
|
|
626 inc >u00C0,u
|
|
627 cmpb #$80 Direct sector write
|
|
628 beq L0558
|
|
629 cmpb #$03
|
|
630 lbeq L05FF
|
|
631 cmpb #$04
|
|
632 beq L058A
|
|
633 cmpb #$0A
|
|
634 beq L0547
|
|
635 clra
|
|
636 cmpb #$81
|
|
637 beq L0549
|
|
638 cmpb #$82
|
|
639 beq L054F
|
|
640 cmpb #$83
|
|
641 beq L053F
|
|
642 L053B comb
|
|
643 ldb #$D0
|
|
644 L053E rts
|
|
645
|
|
646 L053F ldd R$X,x
|
|
647 std >u00B9,u
|
|
648 clrb
|
|
649 rts
|
|
650
|
|
651 L0547 lda #$FF
|
|
652 L0549 sta >u00AC,u
|
|
653 clrb
|
|
654 L054E rts
|
|
655
|
|
656 * Setstat : System direct write
|
|
657 L054F ldd #$0001
|
|
658 std >u00BD,u
|
|
659 clrb
|
|
660 rts
|
|
661
|
|
662 * Setstat : direct sector write
|
|
663 L0558 lbsr L04BC
|
|
664 tst >u00C0,u
|
|
665 beq L057D
|
|
666 pshs u,y
|
|
667 ldb <u00D0
|
|
668 ldx <u0050
|
|
669 lda P$Task,x
|
|
670 ldx PD.RGS,y
|
|
671 ldx R$X,x
|
|
672 ldy >u00B3,u
|
|
673 ldu >u00B7,u
|
|
674 os9 F$Move
|
|
675 puls u,y
|
|
676 bcs L054E
|
|
677 L057D lbsr L01AD
|
|
678 pshs b,cc
|
|
679 L0582 ldd >u00B0,u
|
|
680 std PD.BUF,y
|
|
681 puls pc,b,cc
|
|
682 L058A lbsr L041A
|
|
683 bcs L053E
|
|
684 lda R$U+1,x
|
|
685 ldb R$Y+1,x
|
|
686 ldx >u00A7,u
|
|
687 stb <$10,x
|
|
688 bitb #$01
|
|
689 beq L05A2
|
|
690 com >u00A9,u
|
|
691 L05A2 bitb #$02
|
|
692 beq L05AC
|
|
693 ldb #$20
|
|
694 stb >u00AA,u
|
|
695 L05AC lbsr L038A
|
|
696 bcs L053E
|
|
697 pshs u,y
|
|
698 ldd #$1A00
|
|
699 os9 F$SRqMem
|
|
700 bcs L05F9
|
|
701 ldx <u0050
|
|
702 lda P$Task,x
|
|
703 ldb <u00D0
|
|
704 ldx PD.RGS,y
|
|
705 ldx R$X,x
|
|
706 ldy #$1A00
|
|
707 os9 F$Move
|
|
708 tfr u,x
|
|
709 puls u,y
|
|
710 pshs u,y
|
|
711 clrb
|
|
712 pshs x,b
|
|
713 ldb #$F0
|
|
714 lda #$03
|
|
715 L05D9 pshs x,b,a
|
|
716 lbsr L0239
|
|
717 puls x,b,a
|
|
718 bcc L05E7
|
|
719 deca
|
|
720 bne L05D9
|
|
721 inc ,s
|
|
722 L05E7 tfr x,u
|
|
723 ldd #$1A00
|
|
724 os9 F$SRtMem
|
|
725 clrb
|
|
726 puls u,y,x,b
|
|
727 tstb
|
|
728 beq L05F8
|
|
729 comb
|
|
730 ldb #$F5
|
|
731 L05F8 rts
|
|
732
|
|
733 L05F9 puls u,y
|
|
734 comb
|
|
735 ldb #$ED
|
|
736 L05FE rts
|
|
737
|
|
738 L05FF lbsr L041A
|
|
739 bcs L05FE
|
|
740 ldx >u00A7,u
|
|
741 clr <$15,x
|
|
742 lda #$05
|
|
743 L060D ldb #$4B
|
|
744 pshs a
|
|
745 eorb <$22,y
|
|
746 lbsr L0452
|
|
747 bcs L0626
|
|
748 puls a
|
|
749 deca
|
|
750 bne L060D
|
|
751 ldb #$0B
|
|
752 eorb <$22,y
|
|
753 lbra L0452
|
|
754 L0626 rts
|
|
755
|
|
756 L0627 pshs y,x,b,a,cc
|
|
757 orcc #$50
|
|
758 lda <u0032
|
|
759 bmi L0641
|
|
760 bne L0649
|
|
761 andcc #$AF
|
|
762 L0633 lda #$08
|
|
763 sta >$FF40
|
|
764 ldx #$7530
|
|
765 L063B mul
|
|
766 mul
|
|
767 leax -$01,x
|
|
768 bne L063B
|
|
769 L0641 bsr L0663
|
|
770 bcc L0649
|
|
771 ldb #$80
|
|
772 stb <u0032
|
|
773 L0649 bsr L064D
|
|
774 puls pc,y,x,b,a,cc
|
|
775
|
|
776 L064D lda #$80
|
|
777 sta >u00BF,u
|
|
778 ldd >u00B9,u
|
|
779 std >u00BD,u
|
|
780 ldd #$00B4
|
|
781 std >u00BB,u
|
|
782 rts
|
|
783
|
|
784 L0663 bsr L064D
|
|
785 pshs b,a
|
|
786 lda #$01
|
|
787 sta <u0032
|
|
788 ldx #$0001
|
|
789 puls b,a
|
|
790 leay >u00BB,u
|
|
791 os9 F$VIRQ
|
|
792 rts
|
|
793
|
|
794 L0678 ldb <u008A
|
|
795 beq L068A
|
|
796 tst >u00BF,u
|
|
797 bpl L0686
|
|
798 bsr L064D
|
|
799 bra L069E
|
|
800 L0686 bsr L0663
|
|
801 bra L069E
|
|
802 L068A lda #$08
|
|
803 sta >$FF40
|
|
804 tst >u00BF,u
|
|
805 bmi L069A
|
|
806 stb >$FF40
|
|
807 stb <u0032
|
|
808 L069A clr >u00BF,u
|
|
809 L069E clrb
|
|
810 rts
|
|
811 bvc L0633
|
|
812 emod
|
|
813 eom equ *
|