241
|
1 ********************************************************************
|
257
|
2 * KBVDIO - keyboard/video driver
|
241
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
|
8 * - Original Dragon Data distribution version
|
|
9
|
|
10 nam KBVDIO
|
|
11 ttl os9 device driver
|
|
12
|
|
13 * Disassembled 02/04/21 22:37:57 by Disasm v1.6 (C) 1988 by RML
|
|
14
|
|
15 ifp1
|
|
16 use defsfile
|
|
17 endc
|
257
|
18
|
241
|
19 tylg set Drivr+Objct
|
|
20 atrv set ReEnt+rev
|
|
21 rev set $01
|
257
|
22 edition set 4
|
|
23
|
241
|
24 mod eom,name,tylg,atrv,start,size
|
257
|
25
|
241
|
26 u0000 rmb 2
|
|
27 u0002 rmb 1
|
|
28 u0003 rmb 1
|
|
29 u0004 rmb 1
|
|
30 u0005 rmb 4
|
|
31 u0009 rmb 2
|
|
32 u000B rmb 1
|
|
33 u000C rmb 1
|
|
34 u000D rmb 11
|
|
35 u0018 rmb 1
|
|
36 u0019 rmb 1
|
|
37 u001A rmb 1
|
|
38 u001B rmb 1
|
|
39 u001C rmb 1
|
|
40 u001D rmb 2
|
|
41 u001F rmb 2
|
|
42 u0021 rmb 1
|
|
43 u0022 rmb 1
|
|
44 u0023 rmb 1
|
|
45 u0024 rmb 1
|
|
46 u0025 rmb 1
|
|
47 u0026 rmb 2
|
|
48 u0028 rmb 1
|
|
49 u0029 rmb 2
|
|
50 u002B rmb 1
|
|
51 u002C rmb 1
|
|
52 u002D rmb 2
|
|
53 u002F rmb 1
|
|
54 u0030 rmb 1
|
|
55 u0031 rmb 2
|
|
56 u0033 rmb 1
|
|
57 u0034 rmb 1
|
|
58 u0035 rmb 1
|
|
59 u0036 rmb 1
|
|
60 u0037 rmb 1
|
|
61 u0038 rmb 1
|
|
62 u0039 rmb 1
|
|
63 u003A rmb 1
|
1114
|
64 vhwaddr rmb 2 address of keyboard hardware
|
241
|
65 u003D rmb 1
|
|
66 u003E rmb 1
|
|
67 u003F rmb 1
|
|
68 u0040 rmb 1
|
|
69 u0041 rmb 1
|
|
70 u0042 rmb 1
|
|
71 u0043 rmb 1
|
|
72 u0044 rmb 1
|
|
73 u0045 rmb 1
|
|
74 u0046 rmb 1
|
|
75 u0047 rmb 1
|
|
76 u0048 rmb 1
|
|
77 u0049 rmb 1
|
|
78 u004A rmb 1
|
|
79 u004B rmb 10
|
|
80 u0055 rmb 26
|
|
81 u006F rmb 91
|
|
82 size equ .
|
|
83 fcb $07
|
257
|
84
|
|
85 name fcs /KBVDIO/
|
|
86 fcb edition
|
242
|
87
|
257
|
88 start lbra Init
|
|
89 lbra Read
|
|
90 lbra Write
|
|
91 lbra GetStat
|
|
92 lbra SetStat
|
|
93 lbra Term
|
|
94
|
1114
|
95 Init lbsr AllocMem allocate video memory
|
|
96 lbra L002D unsure why this is here.. timing?
|
|
97 L002D pshs cc save CC
|
|
98 orcc #IRQMask mask IRQs
|
|
99 stu >D.KbdSta save our static mem
|
|
100 ldd >D.IRQ get current IRQ vector address
|
|
101 std >D.AltIRQ store in Alt. IRQ vector
|
|
102 leax >OurIRQ,pcr point to our IRQ address
|
|
103 stx >D.IRQ store in D.IRQ
|
|
104 ldx #$FF00 get address of PIA
|
|
105 stx <vhwaddr,u store in statics for IRQ routine
|
241
|
106 clra
|
|
107 clrb
|
|
108 std <u0048,u
|
1114
|
109 sta $01,x clear $FF01
|
|
110 sta ,x clear $FF00
|
|
111 sta $03,x clear $FF03
|
|
112 comb B = $FF now
|
241
|
113 stb <u003D,u
|
1114
|
114 stb $02,x put $FF in $FF02
|
241
|
115 stb <u003F,u
|
|
116 stb <u0040,u
|
|
117 stb <u0041,u
|
|
118 lda #$34
|
1114
|
119 sta $01,x put $34 in $FF01
|
241
|
120 lda #$3F
|
1114
|
121 sta $03,x put $3F in $FF03
|
|
122 lda $02,x get byte at $FF02
|
|
123 puls pc,cc get CC and return
|
241
|
124 ldb #$F5
|
1114
|
125 orcc #Carry set carry
|
|
126 rts and return
|
|
127
|
|
128 GetStat cmpa #SS.Ready SS.Ready call?
|
|
129 bne L0082 branch if not
|
241
|
130 lda <u0049,u
|
|
131 suba <u0048,u
|
1114
|
132 bne GSOk
|
|
133 ldb #E$NotRdy
|
241
|
134 bra L009A
|
1114
|
135 L0082 cmpa #SS.EOF End of file?
|
|
136 beq GSOk branch if so
|
|
137 cmpa #SS.DStat
|
242
|
138 lbeq L04E0+4
|
1114
|
139 cmpa #SS.Joy joystick value acquisition?
|
241
|
140 lbeq L085F
|
1114
|
141 cmpa #SS.AlfaS Alfa display status?
|
|
142 lbeq L04CD branch if so
|
257
|
143
|
|
144 SetStat ldb #E$UnkSvc
|
|
145 L009A orcc #Carry
|
241
|
146 rts
|
257
|
147
|
1114
|
148 Term pshs cc save CC
|
|
149 orcc #IRQMask mask IRQs
|
|
150 ldx >D.AltIRQ get Alt. IRQ address
|
|
151 stx >D.IRQ and restore it to D.IRQ
|
|
152 puls pc,cc get CC and return
|
257
|
153
|
241
|
154 L00A9 incb
|
|
155 cmpb #$7F
|
|
156 bls L00AF
|
1114
|
157 GSOk clrb
|
241
|
158 L00AF rts
|
1114
|
159
|
|
160 * Driver's IRQ Routine
|
|
161 OurIRQ ldu >D.KbdSta get pointer to driver's statics
|
|
162 ldx <vhwaddr,u get keyboard hardware address
|
|
163 lda $03,x get byte
|
|
164 bmi L00BE branch if hi bit set
|
|
165 jmp [>D.SvcIRQ] else jump on
|
241
|
166 L00BE lda $02,x
|
|
167 lda #$FF
|
|
168 sta $02,x
|
|
169 lda ,x
|
|
170 coma
|
|
171 anda #$03
|
|
172 bne L00D4
|
|
173 clr $02,x
|
|
174 lda ,x
|
|
175 coma
|
|
176 anda #$7F
|
|
177 bne L00F1
|
|
178 L00D4 clra
|
|
179 coma
|
|
180 sta <u003F,u
|
|
181 sta <u0040,u
|
|
182 sta <u0041,u
|
257
|
183 L00DF lda >D.DskTmr
|
241
|
184 beq L00ED
|
|
185 deca
|
257
|
186 sta >D.DskTmr
|
241
|
187 bne L00ED
|
|
188 sta >$FF48
|
257
|
189 L00ED jmp [>D.AltIRQ]
|
241
|
190 L00F1 bsr L013F
|
|
191 bmi L00DF
|
|
192 sta <u0047,u
|
|
193 cmpa #$1F
|
|
194 bne L0101
|
|
195 com <u003D,u
|
|
196 bra L00DF
|
|
197 L0101 ldb <u0048,u
|
|
198 leax <u004A,u
|
|
199 abx
|
|
200 bsr L00A9
|
|
201 cmpb <u0049,u
|
|
202 beq L0112
|
|
203 stb <u0048,u
|
|
204 L0112 sta ,x
|
|
205 beq L0132
|
|
206 cmpa u000D,u
|
|
207 bne L0122
|
|
208 ldx u0009,u
|
|
209 beq L0132
|
|
210 sta $08,x
|
|
211 bra L0132
|
|
212 L0122 ldb #$03
|
|
213 cmpa u000B,u
|
|
214 beq L012E
|
|
215 ldb #$02
|
|
216 cmpa u000C,u
|
|
217 bne L0132
|
|
218 L012E lda u0003,u
|
|
219 bra L0136
|
1114
|
220 L0132 ldb #S$Wake
|
|
221 lda V.WAKE,u
|
241
|
222 L0136 beq L013B
|
1114
|
223 os9 F$Send send signal to process
|
|
224 L013B clr V.WAKE,u
|
241
|
225 bra L00DF
|
|
226 L013F clra
|
|
227 sta <u003E,u
|
|
228 sta <u0045,u
|
|
229 sta <u0046,u
|
|
230 coma
|
|
231 sta <u0042,u
|
|
232 sta <u0043,u
|
|
233 sta <u0044,u
|
|
234 deca
|
|
235 sta $02,x
|
|
236 L0156 lda ,x
|
|
237 coma
|
|
238 anda #$7F
|
|
239 beq L0169
|
|
240 ldb #$FF
|
|
241 L015F incb
|
|
242 lsra
|
|
243 bcc L0165
|
|
244 bsr L01AF
|
|
245 L0165 cmpb #$06
|
|
246 bcs L015F
|
|
247 L0169 inc <u003E,u
|
1114
|
248 orcc #Carry
|
241
|
249 rol $02,x
|
|
250 bcs L0156
|
|
251 lbsr L01F8
|
|
252 bmi L01AE
|
|
253 suba #$1B
|
|
254 bcc L0191
|
|
255 adda #$1B
|
|
256 ldb <u0046,u
|
|
257 bne L0190
|
|
258 adda #$40
|
|
259 ldb <u0045,u
|
|
260 eorb <u003D,u
|
|
261 andb #$01
|
|
262 bne L0190
|
|
263 adda #$20
|
|
264 L0190 rts
|
|
265 L0191 ldb #$03
|
|
266 mul
|
|
267 lda <u0045,u
|
|
268 beq L019C
|
|
269 incb
|
|
270 bra L01A3
|
|
271 L019C lda <u0046,u
|
|
272 beq L01A3
|
|
273 addb #$02
|
|
274 L01A3 pshs x
|
|
275 leax >L023E,pcr
|
|
276 clra
|
|
277 lda d,x
|
|
278 puls x
|
|
279 L01AE rts
|
|
280 L01AF pshs b
|
|
281 cmpb #$06
|
|
282 beq L01BF
|
|
283 cmpb #$01
|
|
284 bhi L01BD
|
|
285 addb #$04
|
|
286 bra L01BF
|
|
287 L01BD subb #$02
|
|
288 L01BF lslb
|
|
289 lslb
|
|
290 lslb
|
|
291 addb <u003E,u
|
|
292 cmpb #$31
|
|
293 bne L01CE
|
|
294 inc <u0046,u
|
|
295 puls pc,b
|
|
296 L01CE cmpb #$37
|
|
297 bne L01D7
|
|
298 com <u0045,u
|
|
299 puls pc,b
|
|
300 L01D7 pshs x
|
|
301 leax <u0042,u
|
|
302 bsr L01E2
|
|
303 puls x
|
|
304 puls pc,b
|
|
305 L01E2 pshs a
|
|
306 lda ,x
|
|
307 bpl L01EC
|
|
308 stb ,x
|
|
309 puls pc,a
|
|
310 L01EC lda $01,x
|
|
311 bpl L01F4
|
|
312 stb $01,x
|
|
313 puls pc,a
|
|
314 L01F4 stb $02,x
|
|
315 puls pc,a
|
|
316 L01F8 pshs y,x,b
|
|
317 leax <u003F,u
|
|
318 ldb #$03
|
|
319 pshs b
|
|
320 L0201 leay <u0042,u
|
|
321 ldb #$03
|
|
322 lda ,x
|
|
323 bmi L021D
|
|
324 L020A cmpa ,y
|
|
325 bne L0214
|
|
326 clr ,y
|
|
327 com ,y
|
|
328 bra L021D
|
|
329 L0214 leay $01,y
|
|
330 decb
|
|
331 bne L020A
|
|
332 lda #$FF
|
|
333 sta ,x
|
|
334 L021D leax $01,x
|
|
335 dec ,s
|
|
336 bne L0201
|
|
337 leas $01,s
|
|
338 leax <u0042,u
|
|
339 lda #$03
|
|
340 L022A ldb ,x+
|
|
341 bpl L0235
|
|
342 deca
|
|
343 bne L022A
|
1114
|
344 orcc #Negative
|
241
|
345 puls pc,y,x,b
|
1114
|
346
|
241
|
347 L0235 leax <u003F,u
|
|
348 bsr L01E2
|
|
349 tfr b,a
|
|
350 puls pc,y,x,b
|
1114
|
351
|
|
352 L023E fcb $0C,$1C
|
|
353 L0240 fcb $13,$0A,$1A,$12,$08,$18,$10,$09 ........
|
|
354 L0248 fcb $19,$11,$20,$20,$20,$30,$30,$1F .. 00.
|
|
355 L0250 fcb $31,$21,$7C,$32,$22,$00,$33,$23 1!|2".3#
|
|
356 L0258 fcb $7E,$34,$24,$00,$35,$25,$00,$36 ~4$.5%.6
|
|
357 L0260 fcb $26,$00,$37,$27,$5E,$38,$28,$5B &.7'^8([
|
|
358 L0268 fcb $39,$29,$5D,$3A,$2A,$00,$3B,$2B 9)]:*.;+
|
|
359 L0270 fcb $00,$2C,$3C,$7B,$2D,$3D,$5F,$2E .,<{-=_.
|
|
360 L0278 fcb $3E,$7D,$2F,$3F,$5C,$0D,$0D,$0D >}/?\...
|
|
361 L0280 fcb $00,$00,$00,$05,$03,$1B ,$30
|
257
|
362
|
|
363 Read leax <u004A,u
|
241
|
364 ldb <u0049,u
|
1114
|
365 orcc #IRQMask
|
241
|
366 cmpb <u0048,u
|
|
367 beq L029F
|
|
368 abx
|
|
369 lda ,x
|
|
370 lbsr L00A9
|
|
371 stb <u0049,u
|
1114
|
372 andcc #^(IRQMask+Carry)
|
241
|
373 rts
|
1114
|
374
|
|
375 L029F lda V.BUSY,u
|
|
376 sta V.WAKE,u
|
|
377 andcc #^IRQMask
|
241
|
378 ldx #$0000
|
|
379 os9 F$Sleep
|
1114
|
380 clr V.WAKE,u
|
241
|
381 ldx <u004B
|
|
382 L02AF ldb <$36,x
|
257
|
383 beq Read
|
241
|
384 cmpb #$04
|
257
|
385 L02B6 bcc Read
|
241
|
386 coma
|
|
387 rts
|
1114
|
388
|
|
389 * Allocate video memory on a 512 byte boundary
|
|
390 AllocMem pshs y,x
|
241
|
391 clr <u0025,u
|
|
392 clr <u002C,u
|
1114
|
393 L02C2 pshs u save static mem pointer
|
|
394 ldd #768
|
|
395 L02C7 os9 F$SRqMem get 768 bytes
|
|
396 tfr u,d put pointer into D
|
|
397 tfr u,x and X
|
|
398 bita #$01 odd or even page?
|
|
399 beq L02D8 branch if even
|
|
400 leax >256,x else memory not on 512 byte boundary
|
242
|
401 L02D6 bra L02DC
|
1114
|
402 L02D8 leau >512,u free last page
|
|
403 L02DC ldd #256 get page amount
|
|
404 os9 F$SRtMem and return page to system
|
|
405 puls u get static mem pointer
|
|
406 stx <u001D,u save pointer to page
|
241
|
407 clra
|
|
408 clrb
|
|
409 bsr L0303
|
|
410 stx <u0021,u
|
1114
|
411 leax >512,x
|
241
|
412 stx <u001F,u
|
|
413 lbsr L0459
|
|
414 lda #$60
|
|
415 sta <u0023,u
|
|
416 sta <u002B,u
|
|
417 clrb
|
|
418 puls pc,y,x
|
1114
|
419
|
241
|
420 L0303 pshs x,a
|
|
421 lda >$FF22
|
|
422 anda #$07
|
|
423 ora ,s+
|
|
424 sta >$FF22
|
|
425 tstb
|
|
426 bne L0320
|
|
427 stb >$FFC0
|
|
428 stb >$FFC2
|
|
429 stb >$FFC4
|
|
430 lda <u001D,u
|
|
431 bra L032C
|
|
432 L0320 stb >$FFC0
|
|
433 stb >$FFC3
|
|
434 stb >$FFC5
|
|
435 lda <u002D,u
|
|
436 L032C ldb #$07
|
|
437 ldx #$FFC6
|
|
438 lsra
|
|
439 L0332 lsra
|
|
440 bcs L033B
|
|
441 sta ,x+
|
|
442 leax $01,x
|
|
443 bra L033F
|
|
444 L033B leax $01,x
|
|
445 sta ,x+
|
|
446 L033F decb
|
|
447 bne L0332
|
|
448 clrb
|
|
449 puls pc,x
|
1114
|
450
|
257
|
451 Write ldb <u0025,u
|
241
|
452 bne L0387
|
|
453 tsta
|
|
454 bmi L0371
|
|
455 cmpa #$1F
|
|
456 bls L03BC
|
|
457 cmpa #$7C
|
|
458 bne L0359
|
|
459 lda #$61
|
|
460 bra L0371
|
|
461 L0359 cmpa #$7E
|
|
462 bne L0361
|
|
463 lda #$6D
|
|
464 bra L0371
|
|
465 L0361 cmpa #$60
|
|
466 bcs L036B
|
|
467 suba #$20
|
|
468 ora #$40
|
|
469 bra L0371
|
|
470 L036B cmpa #$40
|
|
471 bcs L0371
|
|
472 suba #$40
|
|
473 L0371 ldx <u0021,u
|
|
474 eora #$40
|
|
475 sta ,x+
|
|
476 stx <u0021,u
|
|
477 cmpx <u001F,u
|
|
478 bcs L0382
|
|
479 bsr L039C
|
|
480 L0382 lbsr L0415
|
|
481 clrb
|
|
482 rts
|
|
483 L0387 cmpb #$01
|
|
484 beq L0394
|
|
485 clr <u0025,u
|
|
486 sta <u0029,u
|
|
487 jmp [<u0026,u]
|
|
488 L0394 sta <u0028,u
|
|
489 inc <u0025,u
|
|
490 clrb
|
|
491 rts
|
|
492 L039C ldx <u001D,u
|
|
493 leax <$20,x
|
|
494 L03A2 ldd ,x++
|
|
495 std <-$22,x
|
|
496 cmpx <u001F,u
|
|
497 bcs L03A2
|
|
498 leax <-$20,x
|
|
499 stx <u0021,u
|
|
500 lda #$20
|
|
501 ldb #$60
|
|
502 L03B6 stb ,x+
|
|
503 deca
|
|
504 bne L03B6
|
|
505 L03BB rts
|
|
506 L03BC cmpa #$1B
|
|
507 bcc L03BB
|
|
508 cmpa #$10
|
|
509 bcs L03CE
|
|
510 ldb <u002C,u
|
|
511 bne L03CE
|
|
512 ldb #$F6
|
1114
|
513 orcc #Carry
|
241
|
514 rts
|
1114
|
515
|
241
|
516 L03CE leax <L03D6,pcr
|
|
517 lsla
|
|
518 ldd a,x
|
|
519 jmp d,x
|
1114
|
520
|
|
521 L03D6 fcb $FF,$C4
|
|
522 L03D8 fcb $00,$91,$00,$A5,$00,$D0,$FF,$C4 ...%.P.D
|
|
523 L03E0 fcb $FF,$C4,$00,$75,$FF,$C4,$00,$67 .D.u.D.g
|
|
524 L03E8 fcb $00,$E2,$00,$4E,$FF,$C4,$00,$83 .b.N.D..
|
|
525 L03F0 fcb $00,$36,$00,$F2,$01,$4A,$02,$2E .6.r.J..
|
|
526 L03F8 fcb $02,$09,$02,$1D,$02,$4E,$02,$59 .....N.Y
|
|
527 L0400 fcb $02,$72,$02,$DF,$02,$DA,$02,$89 .r._.Z..
|
|
528 L0408 fcb $02,$84,$03,$A8
|
|
529
|
|
530 L040C fcb $8D,$64,$1F,$10
|
241
|
531 andb #$E0
|
|
532 stb <u0022,u
|
|
533 L0415 ldx <u0021,u
|
|
534 lda ,x
|
|
535 sta <u0023,u
|
|
536 lda #$20
|
|
537 sta ,x
|
1114
|
538 andcc #^Carry
|
241
|
539 rts
|
1114
|
540
|
241
|
541 bsr L0472
|
|
542 leax <$20,x
|
|
543 cmpx <u001F,u
|
|
544 bcs L0438
|
|
545 leax <-$20,x
|
|
546 pshs x
|
|
547 lbsr L039C
|
|
548 puls x
|
|
549 L0438 stx <u0021,u
|
|
550 bra L0415
|
|
551 bsr L0472
|
|
552 cmpx <u001D,u
|
|
553 bls L0449
|
|
554 leax -$01,x
|
|
555 stx <u0021,u
|
|
556 L0449 bra L0415
|
|
557 bsr L0472
|
|
558 leax $01,x
|
|
559 cmpx <u001F,u
|
|
560 bcc L0457
|
|
561 stx <u0021,u
|
|
562 L0457 bra L0415
|
|
563 L0459 bsr L0467
|
|
564 lda #$60
|
|
565 L045D sta ,x+
|
|
566 cmpx <u001F,u
|
|
567 bcs L045D
|
|
568 lbra L0415
|
|
569 L0467 bsr L0472
|
|
570 ldx <u001D,u
|
|
571 stx <u0021,u
|
|
572 lbra L0415
|
|
573 L0472 ldx <u0021,u
|
|
574 lda <u0023,u
|
|
575 sta ,x
|
|
576 rts
|
|
577 leax <L0481,pcr
|
|
578 lbra L064B
|
|
579 L0481 bsr L0472
|
|
580 ldb <u0029,u
|
|
581 subb #$20
|
|
582 lda #$20
|
|
583 mul
|
|
584 addb <u0028,u
|
|
585 adca #$00
|
|
586 subd #$0020
|
|
587 addd <u001D,u
|
|
588 cmpd <u001F,u
|
|
589 bcc L04A3
|
|
590 std <u0021,u
|
|
591 lbsr L0415
|
|
592 clrb
|
|
593 L04A3 lbra L0415
|
|
594 lbsr L040C
|
|
595 ldb #$20
|
|
596 lda #$60
|
|
597 ldx <u0021,u
|
|
598 L04B0 sta ,x+
|
|
599 decb
|
|
600 bne L04B0
|
|
601 lbra L0415
|
|
602 bsr L0472
|
|
603 leax <-$20,x
|
|
604 cmpx <u001D,u
|
|
605 bcs L04C5
|
|
606 stx <u0021,u
|
|
607 L04C5 lbra L0415
|
|
608 clra
|
|
609 clrb
|
|
610 lbra L0303
|
|
611 L04CD ldx $06,y
|
|
612 ldd <u001D,u
|
|
613 std $04,x
|
|
614 ldd <u0021,u
|
|
615 std $06,x
|
|
616 ldb <u003D,u
|
|
617 stb $01,x
|
|
618 clrb
|
|
619 rts
|
1114
|
620
|
|
621 L04E0 fcb $00,$55,$AA,$FF,$A6,$C8,$2C,$26 .U*.&H,&
|
|
622 L04E8 fcb $05,$C6,$F6,$1A,$01,$39
|
|
623
|
241
|
624 ldd <u0034,u
|
|
625 lbsr L0684
|
|
626 tfr a,b
|
|
627 andb ,x
|
|
628 L04F8 bita #$01
|
|
629 bne L0507
|
|
630 lsra
|
|
631 lsrb
|
|
632 tst <u0024,u
|
|
633 bmi L04F8
|
|
634 lsra
|
|
635 lsrb
|
|
636 bra L04F8
|
|
637 L0507 pshs b
|
|
638 ldb <u003A,u
|
|
639 andb #$FC
|
|
640 L050E orb ,s+
|
|
641 ldx $06,y
|
|
642 stb $01,x
|
|
643 ldd <u0034,u
|
|
644 std $06,x
|
|
645 ldd <u002D,u
|
|
646 std $04,x
|
|
647 clrb
|
|
648 rts
|
|
649 leax <L0526,pcr
|
|
650 lbra L064B
|
|
651 L0526 ldb <u002C,u
|
|
652 bne L0566
|
|
653 pshs u
|
|
654 ldd #$1900
|
|
655 os9 F$SRqMem
|
|
656 tfr u,d
|
|
657 puls u
|
|
658 bcs L0585
|
|
659 tfr a,b
|
|
660 bita #$01
|
|
661 beq L0543
|
|
662 adda #$01
|
|
663 bra L0545
|
|
664 L0543 addb #$18
|
|
665 L0545 pshs u,a
|
|
666 tfr b,a
|
|
667 clrb
|
|
668 tfr d,u
|
|
669 ldd #$0100
|
|
670 os9 F$SRtMem
|
|
671 puls u,a
|
|
672 bcs L0585
|
|
673 clrb
|
|
674 std <u002D,u
|
|
675 addd #$1800
|
|
676 std <u002F,u
|
|
677 inc <u002C,u
|
|
678 lbsr L0624
|
|
679 L0566 lda <u0029,u
|
|
680 sta <u003A,u
|
|
681 anda #$03
|
|
682 leax >L04E0,pcr
|
|
683 lda a,x
|
|
684 sta <u0036,u
|
|
685 sta <u0037,u
|
|
686 lda <u0028,u
|
|
687 cmpa #$01
|
|
688 bls L0586
|
|
689 ldb #$CB
|
1114
|
690 orcc #Carry
|
241
|
691 L0585 rts
|
1114
|
692
|
241
|
693 L0586 tsta
|
|
694 beq L05A6
|
|
695 ldd #$C003
|
|
696 std <u0038,u
|
|
697 lda #$01
|
|
698 sta <u0024,u
|
|
699 lda #$E0
|
|
700 ldb <u0029,u
|
|
701 andb #$08
|
|
702 beq L059F
|
|
703 lda #$F0
|
|
704 L059F ldb #$03
|
|
705 leax <L05D3,pcr
|
|
706 bra L05BE
|
|
707 L05A6 ldd #$8001
|
|
708 std <u0038,u
|
|
709 lda #$FF
|
|
710 sta <u0036,u
|
|
711 sta <u0037,u
|
|
712 sta <u0024,u
|
|
713 lda #$F0
|
|
714 ldb #$07
|
|
715 leax <L05D7,pcr
|
|
716 L05BE stb <u0033,u
|
|
717 stx <u0031,u
|
|
718 ldb <u0029,u
|
|
719 andb #$04
|
|
720 lslb
|
|
721 pshs b
|
|
722 ora ,s+
|
|
723 ldb #$01
|
|
724 lbra L0303
|
1114
|
725
|
|
726 L05D3 fcb $C0,$30,$0C,$03
|
|
727 L05D7 fcb $80
|
|
728 L05D8 fcb $40,$20,$10,$08,$04,$02,$01,$30 @ .....0
|
|
729 L05E0 fcb $8C,$03,$16,$01,$9C,$6F,$C8,$28 .....oH(
|
|
730 L05E8 fcb $A6,$C8,$24
|
|
731
|
241
|
732 L05EB bmi L05F0
|
|
733 inc <u0028,u
|
|
734 L05F0 lbra L0566
|
|
735 pshs u
|
|
736 ldu <u002D,u
|
|
737 ldd #$1800
|
|
738 os9 F$SRtMem
|
|
739 puls u
|
|
740 clr <u002C,u
|
|
741 rts
|
|
742 leax <L060A,pcr
|
|
743 lbra L0781
|
|
744 L060A lda <u0029,u
|
|
745 tst <u0024,u
|
|
746 bpl L061A
|
|
747 ldb #$FF
|
|
748 anda #$01
|
|
749 beq L0624
|
|
750 bra L0625
|
|
751 L061A anda #$03
|
|
752 leax >L04E0,pcr
|
|
753 ldb a,x
|
|
754 bra L0625
|
|
755 L0624 clrb
|
|
756 L0625 ldx <u002D,u
|
|
757 L0628 stb ,x+
|
|
758 cmpx <u002F,u
|
|
759 bcs L0628
|
|
760 clra
|
|
761 clrb
|
|
762 std <u0034,u
|
|
763 rts
|
|
764 L0635 ldd <u0028,u
|
|
765 cmpb #$C0
|
|
766 bcs L063E
|
|
767 ldb #$BF
|
|
768 L063E tst <u0024,u
|
|
769 bmi L0644
|
|
770 lsra
|
|
771 L0644 std <u0028,u
|
|
772 rts
|
|
773 leax <L0653,pcr
|
|
774 L064B stx <u0026,u
|
|
775 inc <u0025,u
|
|
776 clrb
|
|
777 rts
|
|
778 L0653 bsr L0635
|
|
779 std <u0034,u
|
|
780 clrb
|
|
781 rts
|
|
782 clr <u0036,u
|
|
783 bra L065F
|
|
784 L065F leax <L0664,pcr
|
|
785 bra L064B
|
|
786 L0664 bsr L0635
|
|
787 std <u0034,u
|
|
788 bsr L0673
|
|
789 lda <u0037,u
|
|
790 sta <u0036,u
|
|
791 clrb
|
|
792 rts
|
|
793 L0673 bsr L0684
|
|
794 tfr a,b
|
|
795 comb
|
|
796 andb ,x
|
|
797 stb ,x
|
|
798 anda <u0036,u
|
|
799 ora ,x
|
|
800 sta ,x
|
|
801 rts
|
|
802 L0684 pshs y,b,a
|
|
803 ldb <u0024,u
|
|
804 bpl L068C
|
|
805 lsra
|
|
806 L068C lsra
|
|
807 lsra
|
|
808 pshs a
|
|
809 ldb #$BF
|
|
810 subb $02,s
|
|
811 lda #$20
|
|
812 mul
|
|
813 addb ,s+
|
|
814 adca #$00
|
|
815 ldy <u002D,u
|
|
816 leay d,y
|
|
817 lda ,s
|
|
818 sty ,s
|
|
819 anda <u0033,u
|
|
820 ldx <u0031,u
|
|
821 lda a,x
|
|
822 puls pc,y,x
|
|
823 clr <u0036,u
|
|
824 bra L06B5
|
|
825 L06B5 leax <L06BA,pcr
|
|
826 bra L064B
|
|
827 L06BA lbsr L0635
|
|
828 leas -$0E,s
|
|
829 std $0C,s
|
|
830 bsr L0684
|
|
831 stx $02,s
|
|
832 sta $01,s
|
|
833 ldd <u0034,u
|
|
834 bsr L0684
|
|
835 sta ,s
|
|
836 clra
|
|
837 clrb
|
|
838 std $04,s
|
|
839 lda #$BF
|
|
840 suba <u0035,u
|
|
841 sta <u0035,u
|
|
842 lda #$BF
|
|
843 suba <u0029,u
|
|
844 sta <u0029,u
|
|
845 lda #$FF
|
|
846 sta $06,s
|
|
847 clra
|
|
848 ldb <u0034,u
|
|
849 subb <u0028,u
|
|
850 sbca #$00
|
|
851 bpl L06F7
|
|
852 nega
|
|
853 negb
|
|
854 sbca #$00
|
|
855 neg $06,s
|
|
856 L06F7 std $08,s
|
|
857 bne L0700
|
|
858 ldd #$FFFF
|
|
859 std $04,s
|
|
860 L0700 lda #$E0
|
|
861 sta $07,s
|
|
862 clra
|
|
863 ldb <u0035,u
|
|
864 subb <u0029,u
|
|
865 sbca #$00
|
|
866 bpl L0715
|
|
867 nega
|
|
868 negb
|
|
869 sbca #$00
|
|
870 neg $07,s
|
|
871 L0715 std $0A,s
|
|
872 bra L0721
|
|
873 L0719 sta ,s
|
|
874 ldd $04,s
|
|
875 subd $0A,s
|
|
876 std $04,s
|
|
877 L0721 lda ,s
|
|
878 tfr a,b
|
|
879 anda <u0036,u
|
|
880 comb
|
|
881 andb ,x
|
|
882 pshs b
|
|
883 ora ,s+
|
|
884 sta ,x
|
|
885 cmpx $02,s
|
|
886 bne L073B
|
|
887 lda ,s
|
|
888 cmpa $01,s
|
|
889 beq L076F
|
|
890 L073B ldd $04,s
|
|
891 bpl L0749
|
|
892 addd $08,s
|
|
893 std $04,s
|
|
894 lda $07,s
|
|
895 leax a,x
|
|
896 bra L0721
|
|
897 L0749 lda ,s
|
|
898 ldb $06,s
|
|
899 bpl L075F
|
|
900 lsla
|
|
901 ldb <u0024,u
|
|
902 bmi L0756
|
|
903 lsla
|
|
904 L0756 bcc L0719
|
|
905 lda <u0039,u
|
|
906 leax -$01,x
|
|
907 bra L0719
|
|
908 L075F lsra
|
|
909 ldb <u0024,u
|
|
910 bmi L0766
|
|
911 lsra
|
|
912 L0766 bcc L0719
|
|
913 lda <u0038,u
|
|
914 leax $01,x
|
|
915 bra L0719
|
|
916 L076F ldd $0C,s
|
|
917 std <u0034,u
|
|
918 leas $0E,s
|
|
919 lda <u0037,u
|
|
920 sta <u0036,u
|
|
921 clrb
|
|
922 rts
|
|
923 leax <L0789,pcr
|
|
924 L0781 stx <u0026,u
|
|
925 com <u0025,u
|
|
926 clrb
|
|
927 rts
|
|
928 L0789 leas -$04,s
|
|
929 ldb <u0029,u
|
|
930 stb $01,s
|
|
931 clra
|
|
932 sta ,s
|
|
933 addb $01,s
|
|
934 adca #$00
|
|
935 nega
|
|
936 negb
|
|
937 sbca #$00
|
|
938 addd #$0003
|
|
939 std $02,s
|
|
940 L07A0 lda ,s
|
|
941 cmpa $01,s
|
|
942 bcc L07D2
|
|
943 ldb $01,s
|
|
944 bsr L07E0
|
|
945 clra
|
|
946 ldb $02,s
|
|
947 bpl L07BA
|
|
948 ldb ,s
|
|
949 lslb
|
|
950 rola
|
|
951 lslb
|
|
952 rola
|
|
953 addd #$0006
|
|
954 bra L07CA
|
|
955 L07BA dec $01,s
|
|
956 clra
|
|
957 ldb ,s
|
|
958 subb $01,s
|
|
959 sbca #$00
|
|
960 lslb
|
|
961 rola
|
|
962 lslb
|
|
963 rola
|
|
964 addd #$000A
|
|
965 L07CA addd $02,s
|
|
966 std $02,s
|
|
967 inc ,s
|
|
968 bra L07A0
|
|
969 L07D2 lda ,s
|
|
970 cmpa $01,s
|
|
971 bne L07DC
|
|
972 ldb $01,s
|
|
973 bsr L07E0
|
|
974 L07DC leas $04,s
|
|
975 clrb
|
|
976 rts
|
|
977 L07E0 leas -$08,s
|
|
978 sta ,s
|
|
979 clra
|
|
980 std $02,s
|
|
981 nega
|
|
982 negb
|
|
983 sbca #$00
|
|
984 std $06,s
|
|
985 ldb ,s
|
|
986 clra
|
|
987 std ,s
|
|
988 nega
|
|
989 negb
|
|
990 sbca #$00
|
|
991 std $04,s
|
|
992 ldx $06,s
|
|
993 bsr L0829
|
|
994 ldd $04,s
|
|
995 ldx $02,s
|
|
996 bsr L0829
|
|
997 ldd ,s
|
|
998 ldx $02,s
|
|
999 bsr L0829
|
|
1000 ldd ,s
|
|
1001 ldx $06,s
|
|
1002 bsr L0829
|
|
1003 ldd $02,s
|
|
1004 ldx ,s
|
|
1005 bsr L0829
|
|
1006 ldd $02,s
|
|
1007 ldx $04,s
|
|
1008 bsr L0829
|
|
1009 ldd $06,s
|
|
1010 ldx $04,s
|
|
1011 bsr L0829
|
|
1012 ldd $06,s
|
|
1013 ldx ,s
|
|
1014 bsr L0829
|
|
1015 leas $08,s
|
|
1016 rts
|
|
1017 L0829 pshs b,a
|
|
1018 ldb <u0035,u
|
|
1019 clra
|
|
1020 leax d,x
|
|
1021 cmpx #$0000
|
|
1022 bmi L083B
|
|
1023 cmpx #$00BF
|
|
1024 ble L083D
|
|
1025 L083B puls pc,b,a
|
|
1026 L083D ldb <u0034,u
|
|
1027 clra
|
|
1028 tst <u0024,u
|
|
1029 bmi L0848
|
|
1030 lslb
|
|
1031 rola
|
|
1032 L0848 addd ,s++
|
|
1033 tsta
|
|
1034 beq L084E
|
|
1035 rts
|
|
1036 L084E pshs b
|
|
1037 tfr x,d
|
|
1038 puls a
|
|
1039 tst <u0024,u
|
|
1040 lbmi L0673
|
|
1041 lsra
|
|
1042 lbra L0673
|
|
1043 L085F ldx $06,y
|
|
1044 pshs y,cc
|
1114
|
1045 orcc #IRQMask
|
241
|
1046 lda #$FF
|
|
1047 clr >$FF02
|
|
1048 ldb >$FF00
|
|
1049 ldy $04,x
|
|
1050 bne L0878
|
|
1051 andb #$01
|
|
1052 bne L087C
|
|
1053 bra L087D
|
|
1054 L0878 andb #$02
|
|
1055 beq L087D
|
|
1056 L087C clra
|
|
1057 L087D sta $01,x
|
|
1058 lda >$FF03
|
|
1059 ora #$08
|
|
1060 ldy $04,x
|
|
1061 bne L088B
|
|
1062 anda #$F7
|
|
1063 L088B sta >$FF03
|
|
1064 lda >$FF01
|
|
1065 anda #$F7
|
|
1066 bsr L08AA
|
|
1067 std $04,x
|
|
1068 lda >$FF01
|
|
1069 ora #$08
|
|
1070 bsr L08AA
|
|
1071 pshs b,a
|
|
1072 ldd #$003F
|
|
1073 subd ,s++
|
|
1074 std $06,x
|
|
1075 clrb
|
|
1076 puls pc,y,cc
|
|
1077 L08AA sta >$FF01
|
|
1078 clrb
|
|
1079 bsr L08BA
|
|
1080 bsr L08BA
|
|
1081 bsr L08BA
|
|
1082 bsr L08BA
|
|
1083 lsrb
|
|
1084 lsrb
|
|
1085 clra
|
|
1086 rts
|
|
1087 L08BA pshs b
|
|
1088 lda #$7F
|
|
1089 tfr a,b
|
|
1090 L08C0 lsrb
|
|
1091 cmpb #$03
|
|
1092 bhi L08CC
|
|
1093 lsra
|
|
1094 lsra
|
|
1095 tfr a,b
|
|
1096 addb ,s+
|
|
1097 rts
|
|
1098 L08CC addb #$02
|
|
1099 andb #$FC
|
|
1100 pshs b
|
|
1101 anda #$FC
|
|
1102 sta >$FF20
|
|
1103 tst >$FF00
|
|
1104 bpl L08E0
|
|
1105 adda ,s+
|
|
1106 bra L08C0
|
|
1107 L08E0 suba ,s+
|
|
1108 bra L08C0
|
257
|
1109
|
241
|
1110 emod
|
|
1111 eom equ *
|
257
|
1112 end
|
|
1113
|