floppyrom.a65
1:
2: .setcpu "6502"
3:
4: .include "../asm6502.inc"
5: .include "../macros.inc"
6: .include "../petscii.inc"
7:
8: .include "defines.inc"
9:
10: .include "memory.inc"
11:
12: .include "errorcodes.inc"
13:
14:
15: .macro SET_WPSW_DIRTY_NO_CR
16: .if CompileDrive >= DRIVE_1571_05
17: jsr PATCH_WPSW
18: nop
19: .else
20: lda #$01
21: sta WPSW
22: .endif
23: .endmacro
24:
25: .macro SET_WPSW_DIRTY
26: .if CompileDrive >= DRIVE_1571_05 .AND CompileDrive < DRIVE_1571CR
27: jsr PATCH_WPSW
28: nop
29: .else
30: lda #$01
31: sta WPSW
32: .endif
33: .endmacro
34:
35:
36:
37:
38:
39:
40:
41:
42:
43: .macro CONVERT_BIN_TO_BCD_PARTIAL
44: @Next:
45: cpx #$00
46: beq @Done
47: clc
48: adc #$01
49: dex
50: jmp @Next
51: @Done:
52: .endmacro
53:
54: .macro CONVERT_BIN_TO_BCD
55: lda #$00
56: sed
57: CONVERT_BIN_TO_BCD_PARTIAL
58: .endmacro
59:
60: .if CompileDrive >= DRIVE_1570
61: * = $8000
62:
63: L8000:
64: .byte DRIVE_8000
65: L8001:
66: .byte DRIVE_8001
67:
68: L8002:
69: .if CompileDrive >= DRIVE_1571CR_01
70: .byte "S/W BY DAVID G SIRACUSA",$0D
71: .byte "5710 BY C. HAUCK",$0D
72: .byte "1986",$0D
73: .else
74: .byte "S/W - DAVID G SIRACUSA",$0D
75: .byte "H/W - GREG BERLIN",$0D
76: .byte "1985",$0D
77: .endif
78:
79: U0CommandPatch157x:
80: lda CMDSIZ
81: cmp #$03
82: bcc @OriginalUxCommand
83: lda CMDBUF + 2
84: sta HINIB
85: and #$1F
86: tax
87: asl a
88: tay
89: lda L808E,y
90: sta IP
91: lda L808E + 1,y
92: sta IP + 1
93: cpx #$1E
94: beq @L8056
95: lda VBC_PAUNBUF1
96: and #VBC_PA1_20
97: beq @OriginalUxCommand
98: @L8056:
99: lda BITCNT
100: and #$EB
101: sta BITCNT
102: lda L806E,x
103: sta CMDBUF + 2
104: .if CompileDrive >= DRIVE_1571_05
105: jmp LAAE7
106: .else
107: jmp (IP)
108: .endif
109: @OriginalUxCommand:
110: lda #<AddressesUxCommands
111: sta USRJMP
112: lda #>AddressesUxCommands
113: sta USRJMP + 1
114: L806D:
115: rts
116:
117: L806E:
118: .byte $80,$81,$90,$91,$B0,$B1,$F0,$F1
119: .byte $00,$01,$B0,$01,$00,$01,$00,$01
120: .byte $80,$81,$90,$91,$B0,$B1,$F0,$F1
121: .byte $00,$01,$B0,$01,$00,$01,$00,$80
122:
123: L808E:
124: .addr L8371
125: .addr L837F
126: .addr L83EC
127: .addr L83F8
128: .addr L848B
129: .addr L837F
130: .addr L84B7
131: .addr L84B7
132: .addr L84F1
133: .addr L84F1
134: .addr L8517
135: .addr L837F
136: .addr L856B
137: .addr L837F
138: .addr L85A5
139: .addr L85A5
140: .addr L8371
141: .addr L837F
142: .addr L83EC
143: .addr L83F8
144: .addr L848B
145: .addr L837F
146: .addr L84B7
147: .addr L84B7
148: .addr L806D
149: .addr L806D
150: .addr L8517
151: .addr L837F
152: .addr L806D
153: .addr L806D
154: .addr L8FE5
155: .addr L9080
156: L80CE:
157: sei
158: lda #$00
159: sta ATNPND
160: sta LSNACT
161: sta TLKACT
162: ldx #$45
163: txs
164: jsr L81B2
165: lda #$80
166: sta EIOFLG
167: sta ATNMOD
168: jsr ClearClockOut
169: jsr SetDataOut
170: lda VBC_PB1
171: ora #VBC_PB1_1540_ATNA
172: sta VBC_PB1
173: L80F1:
174: lda VBC_PB1
175: bpl L815A
176: and #VBC_PB1_1540_CLOCKIN
177: bne L80F1
178: L80FA:
179: jsr L82CA
180: cmp #$3F
181: bne L810D
182: lda BITCNT
183: and #$BF
184: sta BITCNT
185: lda #$00
186: sta LSNACT
187: beq L811B
188: L810D:
189: cmp #$5F
190: bne L811E
191: lda BITCNT
192: and #$BF
193: sta BITCNT
194: lda #$00
195: sta TLKACT
196: L811B:
197: jmp L8192
198: L811E:
199: cmp TLKADR
200: bne L812C
201: lda #$01
202: sta TLKACT
203: lda #$00
204: sta LSNACT
205: beq L8155
206: L812C:
207: cmp LSNADR
208: bne L813A
209: lda #$01
210: sta LSNACT
211: lda #$00
212: sta TLKACT
213: beq L8155
214: L813A:
215: tax
216: and #$60
217: cmp #$60
218: bne L818D
219: txa
220: sta ORGSA
221: and #$0F
222: sta SA
223: lda ORGSA
224: and #$F0
225: cmp #$E0
226: bne L8192
227: cli
228: jsr LDAC0
229: sei
230: L8155:
231: bit VBC_PB1
232: bmi L80FA
233: L815A:
234: lda #$00
235: sta ATNMOD
236: lda VBC_PB1
237: and # ~ VBC_PB1_1540_ATNA
238: sta VBC_PB1
239: lda LSNACT
240: beq L8177
241: bit BITCNT
242: bvc L8171
243: jsr L8199
244: L8171:
245: jsr L8342
246: jmp MainLoopEntry1570
247: L8177:
248: lda TLKACT
249: beq L818A
250: jsr ClearDataOut
251: jsr SetClockOut
252: jsr LA483
253: jsr L81EA
254: jsr LA483
255: L818A:
256: jmp L8366
257: L818D:
258: lda #VBC_PB1_1540_ATNA
259: sta VBC_PB1
260: L8192:
261: bit VBC_PB1
262: bpl L815A
263: bmi L8192
264: L8199:
265: jsr TestATN
266: jsr ReadIecBusIn
267: and #VBC_PB1_1540_CLOCKIN
268: bne L8199
269: jsr L81CE
270: lda #$00
271: sta CIA_SDR
272: lda #CIA_ICR_B_SP
273: L81AD:
274: bit CIA_ICR
275: beq L81AD
276:
277: L81B2:
278: php
279: sei
280: lda CIA_CRA
281: and # ~ CIA_CRA_B_SP_OUTPUT
282: sta CIA_CRA
283:
284: lda VBC_PAUNBUF1
285: and # ~ VBC_PA1_02
286: sta VBC_PAUNBUF1
287:
288: .if CompileDrive >= DRIVE_1571_05
289: lda #CIA_ICR_BW_SET | CIA_ICR_B_SP
290: .else
291: lda #CIA_ICR_BW_SET | CIA_ICR_B_TOD
292: .endif
293: sta CIA_ICR
294: bit CIA_ICR
295: plp
296: rts
297:
298: L81CE:
299: php
300: sei
301: lda VBC_PAUNBUF1
302: ora #VBC_PA1_02
303: sta VBC_PAUNBUF1
304: lda CIA_CRA
305: ora #CIA_CRA_B_SP_OUTPUT
306: sta CIA_CRA
307: lda #CIA_ICR_B_SP
308: sta CIA_ICR
309: bit CIA_ICR
310: plp
311: rts
312: L81EA:
313: sei
314: jsr LD0EB
315: bcs L81F6
316: L81F0:
317: ldx LINDX
318: lda CHNRDY,x
319: bmi L81F7
320: L81F6:
321: rts
322: L81F7:
323: jsr TestATN
324: jsr ReadIecBusIn
325: and #VBC_PB1_1540_DATAIN
326: php
327: jsr ClearClockOut
328: plp
329: beq L8218
330: L8206:
331: jsr TestATN
332: jsr ReadIecBusIn
333: and #VBC_PB1_1540_DATAIN
334: bne L8206
335: ldx LINDX
336: lda CHNRDY,x
337: and #$08
338: bne L822C
339: L8218:
340: jsr TestATN
341: jsr ReadIecBusIn
342: and #VBC_PB1_1540_DATAIN
343: bne L8218
344: L8222:
345: jsr TestATN
346: jsr ReadIecBusIn
347: and #VBC_PB1_1540_DATAIN
348: beq L8222
349: L822C:
350: jsr SetClockOut
351: jsr TestATN
352: jsr ReadIecBusIn
353: and #VBC_PB1_1540_DATAIN
354: bne L822C
355: bit BITCNT
356: bvc L8276
357: lda VBC_PAUNBUF1
358: ora #VBC_PA1_02
359: sta VBC_PAUNBUF1
360: lda CIA_CRA
361: ora #CIA_CRA_B_SP_OUTPUT
362: sta CIA_CRA
363: bit CIA_ICR
364: ldx LINDX
365: lda L023E,x
366: sta CIA_SDR
367: L8258:
368: lda CIA_ICR
369: and #$08
370: beq L8258
371: lda CIA_CRA
372: and # ~ CIA_CRA_B_SP_OUTPUT
373: sta CIA_CRA
374: lda VBC_PAUNBUF1
375: and # ~ VBC_PA1_02
376: sta VBC_PAUNBUF1
377: .if CompileDrive >= DRIVE_1571_05
378: lda #CIA_ICR_BW_SET | CIA_ICR_B_SP
379: .else
380: lda #CIA_ICR_BW_SET | CIA_ICR_B_TOD
381: .endif
382: sta CIA_ICR
383: bne L82B2
384: L8276:
385: lda #$08
386: sta CONT
387: L827A:
388: jsr ReadIecBusIn
389: and #VBC_PB1_1540_DATAIN
390: bne L82C4
391: L8281:
392: ldx LINDX
393: lda L023E,x
394: ror a
395: sta L023E,x
396: bcs L8291
397: jsr SetDataOut
398: bne L8294
399: L8291:
400: jsr ClearDataOut
401: L8294:
402: jsr LA47E
403: lda DRVTRK + 1
404: .if CompileDrive >= DRIVE_1571_05
405: bne L829E
406: .else
407: bne L8281
408: .endif
409: jsr LA483
410: L829E:
411: jsr ClearClockOut
412: jsr LA47E
413: lda DRVTRK + 1
414: bne L82AB
415: jsr LA483
416: L82AB:
417: jsr LFEFB
418: dec CONT
419: bne L827A
420: L82B2:
421: jsr TestATN
422: jsr ReadIecBusIn
423: and #VBC_PB1_1540_DATAIN
424: beq L82B2
425: cli
426: jsr LD3AA
427: sei
428: jmp L81F0
429: L82C4:
430: jmp L8362
431: L82C7:
432: bit CIA_ICR
433: L82CA:
434: lda #$08
435: sta CONT
436: L82CE:
437: jsr TestATN
438: jsr ReadIecBusIn
439: and #VBC_PB1_1540_CLOCKIN
440: bne L82CE
441: jsr ClearDataOut
442: lda #$01
443: L82DD:
444: bit VBC_PB1
445: bne L82DD
446: .if CompileDrive >= DRIVE_1571_05
447: jsr LAA76
448: .else
449: sta VBC_T1HC1
450: .endif
451: L82E5:
452: jsr TestATN
453: lda VBC_IFR1
454: and #$40
455: bne L82F8
456: jsr ReadIecBusIn
457: and #VBC_PB1_1540_CLOCKIN
458: beq L82E5
459: bne L8311
460: L82F8:
461: jsr SetDataOut
462: ldx #$18
463: L82FD:
464: dex
465: bne L82FD
466: jsr ClearDataOut
467: L8303:
468: jsr TestATN
469: jsr ReadIecBusIn
470: and #VBC_PB1_1540_CLOCKIN
471: beq L8303
472: lda #$00
473: sta EIOFLG
474: L8311:
475: lda VBC_PB1
476: eor #VBC_PB1_1540_DATAIN
477: tax
478: lda CIA_ICR
479: and #CIA_ICR_B_SP
480: beq L8326
481: lda CIA_SDR
482: sta DATA
483: jmp L833C
484: L8326:
485: txa
486: lsr a
487: and #$02
488: bne L8311
489: ror DATA
490: L832E:
491: jsr TestATN
492: jsr ReadIecBusIn
493: and #VBC_PB1_1540_CLOCKIN
494: beq L832E
495: dec CONT
496: bne L8311
497: L833C:
498: jsr SetDataOut
499: lda DATA
500: rts
501: L8342:
502: sei
503: jsr LD107
504: bcs L834D
505: lda CHNRDY,x
506: ror a
507: bcs L8358
508: L834D:
509: lda ORGSA
510: and #$F0
511: cmp #$F0
512: beq L8358
513: jmp L8366
514: L8358:
515: jsr L82C7
516: cli
517: jsr LCFB7
518: jmp L8342
519: L8362:
520: lda #$00
521: sta BITCNT
522: L8366:
523: lda #0
524: sta VBC_PB1
525: MainLoopEntry1570:
526: jsr L81B2
527: jmp MainLoopEntry
528: L8371:
529: sta CMD
530: sta AF
531: lda VBC_IFR1
532: lsr a
533: bcc L8394
534: ldx #$0B
535: .byte ASM_BIT3
536: L837F:
537: ldx #$4F
538: L8381:
539: jsr L85E9
540: L8384:
541: jsr L8581
542: L8387:
543: cpx #$02
544: bcs L838C
545: rts
546: L838C:
547: txa
548: and #$0F
549: ldx #$00
550: jmp LE60A
551: L8394:
552: jsr L81CE
553: bit AS
554: bpl L83A0
555: lda #$09
556: jmp L86E6
557: L83A0:
558: jsr LC63D
559: L83A3:
560: cli
561: lda HINIB
562: and #$20
563: bne L83D0
564: lda CMDBUF + 3
565: sta TRACK0
566: lda CMDBUF + 4
567: sta SECTOR0
568: ldx #$00
569: lda AF
570: sta JOBS0,x
571: jsr L865E
572: sei
573: jsr L85E9
574: bit HINIB
575: bvs L83C9
576: cpx #$02
577: bcs L8381
578: L83C9:
579: jsr L85F9
580: lda HINIB
581: bmi L83DD
582: L83D0:
583: ldy #$00
584: L83D2:
585: lda BUFFER0,y
586: sta CTRACK
587: jsr L85F9
588: iny
589: bne L83D2
590: L83DD:
591: dec CMDBUF + 5
592: beq L83E8
593: jsr L861E
594: jmp L83A3
595: L83E8:
596: cli
597: jmp L85AF
598: L83EC:
599: sta CMD
600: lda VBC_IFR1
601: lsr a
602: bcc L8402
603: ldx #$0B
604: .byte ASM_BIT3
605: L83F8:
606: ldx #$4F
607: stx CTRACK
608: lda HINIB
609: ora #$08
610: sta HINIB
611: L8402:
612: bit AS
613: bpl L840B
614: lda #$0A
615: jmp L86E6
616: L840B:
617: jsr LC63D
618: lda HINIB
619: bmi L843B
620: L8412:
621: sei
622: ldy #$00
623: L8415:
624: lda VBC_PB1
625: eor #VBC_PB1_1540_CLOCKOUT
626: bit CIA_ICR
627: sta VBC_PB1
628: L8420:
629: lda VBC_PB1
630: bpl L8428
631: jsr TestATN
632: L8428:
633: lda CIA_ICR
634: and #CIA_ICR_B_SP
635: beq L8420
636: lda CIA_SDR
637: sta BUFFER0,y
638: iny
639: bne L8415
640: jsr ClearClockOut
641: L843B:
642: cli
643: lda HINIB
644: and #$20
645: bne L8479
646: lda HINIB
647: and #$08
648: beq L844D
649: ldx CTRACK
650: jmp L8381
651: L844D:
652: lda CMDBUF + 3
653: sta TRACK0
654: lda CMDBUF + 4
655: sta SECTOR0
656: ldx #$00
657: lda #$90
658: sta JOBS0,x
659: jsr L865E
660: sei
661: jsr L81CE
662: jsr L85E9
663: jsr L85F9
664: jsr L86A0
665: jsr L81B2
666: cli
667: bit HINIB
668: bvs L8479
669: cpx #$02
670: bcs L8484
671: L8479:
672: dec CMDBUF + 5
673: beq L8487
674: jsr L861E
675: jmp L8412
676: L8484:
677: jmp L838C
678: L8487:
679: cli
680: jmp L85AF
681: L848B:
682: lda CMDBUF + 2
683: and #$01
684: bne L84B2
685: lda #$01
686: sta VBC_IFR1
687: lda #$05
688: jsr L86E6
689: ldx L01B0
690: cpx #$02
691: bcc L84B4
692: ldx #$00
693: stx AS
694: lda #$B0
695: .if CompileDrive >= DRIVE_1571_05
696: jsr LC075
697: .else
698: sta CMD
699: .endif
700: sta JOBS0,x
701: jsr L865E
702: .byte ASM_BIT3
703: L84B2:
704: ldx #$4F
705: L84B4:
706: jmp L8381
707: L84B7:
708: lda CMDBUF + 2
709: and #$01
710: bne L84E9
711: lda CMDBUF + 3
712: bpl L84C8
713: lda #$08
714: jmp L86E6
715: L84C8:
716: lda #$00
717: sta AS
718: sta NODRV
719: lda CMDBUF + 4
720: sta DiskID0
721: lda CMDBUF + 5
722: sta DiskID0 + 1
723: jsr LD307
724: lda #$01
725: sta TRACK
726: lda #$FF
727: sta JOBRTN
728: .if CompileDrive = DRIVE_1571_03
729: jsr LA989
730: .else
731: jsr LAA4D
732: .endif
733: tax
734: .byte ASM_BIT3
735: L84E9:
736: ldx #$4F
737: jsr L85E9
738: jmp L8387
739: L84F1:
740: sei
741: bit HINIB
742: bpl L8500
743: jsr L81CE
744: lda BYTE
745: sta CTRACK
746: jmp L85F9
747: L8500:
748: ldx CMDSIZ
749: cpx #$04
750: bcs L8511
751: ldx #$0E
752: jsr L85E9
753: lda #ERRORCODE_31_SYNTAX_ERROR
754: jmp GenerateErrorMessage
755:
756:
757: L8511:
758: lda CMDBUF + 3
759: sta BYTE
760: rts
761: L8517:
762: jsr L848B
763: bit AS
764: bpl L8566
765: lda #$0D
766: jsr L86E6
767: ldx L01B0
768: cpx #$02
769: bcs L8532
770: jsr L8961
771: jsr L8986
772: txa
773: pha
774: L8532:
775: sei
776: jsr L81CE
777: lda AS
778: sta CTRACK
779: jsr L85F9
780: ldx L01B0
781: cpx #$02
782: bcs L8567
783: lda MYPA
784: sta CTRACK
785: jsr L85F9
786: lda NMIFLG
787: sta CTRACK
788: jsr L85F9
789: lda ACLSTP
790: sta CTRACK
791: jsr L85F9
792: lda RSTEPS
793: sta CTRACK
794: jsr L85F9
795: pla
796: sta CTRACK
797: .if CompileDrive >= DRIVE_1571_05
798: jmp LAAC5
799: .else
800: jsr L85F9
801: .endif
802: L8566:
803: rts
804: L8567:
805: pla
806: jmp L838C
807: L856B:
808: bit HINIB
809: bpl L8596
810: bit HINIB
811: bvc L8581
812: lda VBC_IFR1
813: lsr a
814: bcc L8581
815: lda AS
816: and #$F0
817: ora #$0B
818: sta AS
819: L8581:
820: sei
821: jsr L81CE
822: lda AS
823: sta CTRACK
824: jsr L85F9
825: lda #ERRORCODE_00_OK
826: sta ERWORD
827: jsr L81B2
828: cli
829: rts
830: L8596:
831: lda CMDBUF + 3
832: sta AS
833: bit HINIB
834: bvc L85A4
835: lda #$01
836: sta VBC_IFR1
837: L85A4:
838: rts
839: L85A5:
840: ldx #$0E
841: jsr L85E9
842: lda #ERRORCODE_31_SYNTAX_ERROR
843: jmp GenerateErrorMessage
844:
845:
846: L85AF:
847: lda CMDSIZ
848: cmp #$07
849: bcc L85E8
850: lda TRACK0
851: tay
852: sbc #$01
853: asl a
854: sta MINSTP
855: cpy #$24
856: php
857: ldy CMDBUF + 6
858: sty DRVTRK
859: dey
860: sty NMIFLG
861: cpy #$23
862: ror a
863: plp
864: and #$80
865: bcc L85DC
866: bmi L85E5
867: clc
868: lda NMIFLG
869: adc #$23
870: sta NMIFLG
871: bmi L85E5
872: L85DC:
873: bpl L85E5
874: sec
875: lda NMIFLG
876: sbc #$23
877: sta NMIFLG
878: L85E5:
879: jmp L87BA
880: L85E8:
881: rts
882: L85E9:
883: stx CTRACK
884: lda AS
885: and #$F0
886: ora CTRACK
887: sta AS
888: sta CTRACK
889: rts
890: L85F6:
891: jsr TestATN
892: L85F9:
893: lda VBC_PB1
894: cmp VBC_PB1
895: bne L85F9
896: and #$FF
897: bmi L85F6
898: eor BITCNT
899: and #$04
900: beq L85F9
901: lda CTRACK
902: .if CompileDrive >= DRIVE_1571_05
903: jmp LAB10
904: .else
905: sta CIA_SDR
906: .endif
907: lda BITCNT
908: eor #$04
909: sta BITCNT
910: lda #CIA_ICR_B_SP
911: L8618:
912: bit CIA_ICR
913: beq L8618
914: rts
915:
916: L861E:
917: lda CMDBUF + 3
918: cmp #$24
919: bcc L8627
920: sbc #$23
921: L8627:
922: tax
923: lda L9409 + 34,x
924: tax
925: dex
926: stx CTRACK
927: clc
928: lda CMDBUF + 4
929: adc BYTE
930: cmp CTRACK
931: bcc L8643
932: sbc CTRACK
933: beq L8641
934: sec
935: sbc #$01
936: .byte ASM_BIT3
937: L8641:
938: lda CTRACK
939: L8643:
940: sta CMDBUF + 4
941: lda #$88
942: sta AF
943: rts
944: L864B:
945: ldx JOBNUM
946: php
947: cli
948: jsr L9FB6
949: cmp #$02
950: bcc L865B
951: jsr L8683
952: lda JOBS0,x
953: L865B:
954: tax
955: plp
956: rts
957: L865E:
958: ldx #$00
959: php
960: sei
961: lda VDC_PB2
962: ora #VDC_PB2_DRIVE0LED
963: sta VDC_PB2
964: cli
965: jsr L9FB6
966: cmp #$02
967: bcc L8675
968: jsr L8683
969: L8675:
970: sei
971: lda VDC_PB2
972: and # ~ VDC_PB2_DRIVELEDS
973: sta VDC_PB2
974: lda JOBS0,x
975: tax
976: plp
977: rts
978: L8683:
979: lda #$FF
980: sta JOBRTN
981: stx JOBNUM
982: lda CMDBUF + 2
983: sta AF
984: sta CMD
985: sta LSTJOB,x
986: .if CompileDrive >= DRIVE_1571_05
987: sta JOBS0,x
988: .else
989: sta JOBS0
990: .endif
991: jsr L9FB6
992: jmp LD599
993: L869D:
994: jsr TestATN
995: L86A0:
996: lda VBC_PB1
997: cmp VBC_PB1
998: bne L86A0
999: and #$FF
1000: bmi L869D
1001: eor BITCNT
1002: and #$04
1003: beq L86A0
1004: lda BITCNT
1005: eor #$04
1006: sta BITCNT
1007: rts
1008: L86B9:
1009: .byte $00,$15,$00,$00,$00,$15,$00,$BC
1010: .byte $34,$DE,$FE,$DC,$15,$15,$00
1011: L86C8:
1012: .addr L89EC
1013: .addr L89EF
1014: .addr L89FD
1015: .addr L8A03
1016: .addr L8A08
1017: .addr L8A09
1018: .addr L87BA
1019: .addr L8A86
1020: .addr L8C57
1021: .addr L8D67
1022: .addr L8DF6
1023: .if CompileDrive >= DRIVE_1571CR
1024: .addr LACC7
1025: .addr LAD2E
1026: .addr LAD93
1027: .else
1028: .addr L8EC6
1029: .addr L8F18
1030: .addr L8F5F
1031: .endif
1032: .addr L89B3
1033:
1034: L86E6:
1035: sei
1036: pha
1037: tax
1038: lda L86B9,x
1039: sta ACTJOB
1040: lda AS
1041: ora #$80
1042: sta AS
1043: asl ACTJOB
1044: bcc L86FD
1045: lda CMDBUF + 3
1046: sta NMIFLG
1047: L86FD:
1048: asl ACTJOB
1049: bcc L8706
1050: lda CMDBUF + 4
1051: sta SECTR
1052: L8706:
1053: asl ACTJOB
1054: bcc L871B
1055: lda VDC_PB2
1056: and #VDC_PB2_WRITEPROTECT
1057: bne L871B
1058: lda HINIB
1059: ora #$08
1060: sta HINIB
1061: ldx #$08
1062: stx CTRACK
1063: L871B:
1064: asl ACTJOB
1065: bcc L8722
1066: jsr L8794
1067: L8722:
1068: asl ACTJOB
1069: bcc L8729
1070: jsr L87BA
1071: L8729:
1072: asl ACTJOB
1073: bcc L8730
1074: jsr L87B0
1075: L8730:
1076: jsr L8954
1077: asl ACTJOB
1078: bcc L873A
1079: jsr L892A
1080: L873A:
1081: lda #$00
1082: pla
1083: asl a
1084: tax
1085: lda L86C8,x
1086: sta T0
1087: lda L86C8 + 1,x
1088: sta T1
1089: .if CompileDrive >= DRIVE_1571CR_01
1090: jsr L877C
1091: .endif
1092: jsr L8761
1093: jsr LF98F
1094: .if CompileDrive >= DRIVE_1571CR_01
1095: jsr L8788
1096: .endif
1097: ldx L01B0
1098: cpx #$02
1099: php
1100: asl ACTJOB
1101: bcs L875F
1102: plp
1103: bcc L8760
1104: jmp L838C
1105: L875F:
1106: plp
1107: L8760:
1108: rts
1109:
1110: L8761:
1111: jmp (T0)
1112:
1113: L8764:
1114: php
1115: sei
1116: lda VDC_PB2
1117: ora #VDC_PB2_DRIVE0MOTOR
1118: sta VDC_PB2
1119: plp
1120: rts
1121: L8770:
1122: php
1123: sei
1124: lda VDC_PB2
1125: and # ~ VDC_PB2_DRIVE0MOTOR
1126: sta VDC_PB2
1127: plp
1128: rts
1129: L877C:
1130: php
1131: sei
1132: lda VDC_PB2
1133: ora #VDC_PB2_DRIVE0LED
1134: sta VDC_PB2
1135: plp
1136: rts
1137: L8788:
1138: php
1139: sei
1140: lda VDC_PB2
1141: and # ~ VDC_PB2_DRIVELEDS
1142: sta VDC_PB2
1143: plp
1144: rts
1145: L8794:
1146: php
1147: sei
1148: lda DRVST
1149: .if CompileDrive >= DRIVE_1571_05
1150: bmi L87A2
1151: and #$30
1152: beq L87A4
1153: lda #$20
1154: .else
1155: cmp #$20
1156: beq L87AA
1157: lda CMDBUF + 2
1158: and #$01
1159: sta CDRIVE
1160: jsr L8764
1161: lda #$A0
1162: .endif
1163: sta DRVST
1164:
1165: .if CompileDrive >= DRIVE_1571_05
1166: L87A2:
1167: plp
1168: .else
1169: L87AA:
1170: lda #$32
1171: sta ACLTIM
1172: plp
1173: .endif
1174: rts
1175: .if CompileDrive >= DRIVE_1571_05
1176: L87A4:
1177: plp
1178: sta CDRIVE
1179: jmp LF97E
1180: .if CompileDrive >= DRIVE_1571CR_01
1181: .else
1182: FillNOP 6
1183: .endif
1184: .endif
1185: L87B0:
1186: php
1187: cli
1188: L87B2:
1189: lda DRVST
1190: cmp #$20
1191: bne L87B2
1192: plp
1193: rts
1194: L87BA:
1195: php
1196: cli
1197: lda NMIFLG
1198: asl a
1199: cmp MINSTP
1200: beq L87DD
1201: L87C3:
1202: lda NMIFLG
1203: asl a
1204: cmp MINSTP
1205: beq L87D8
1206: bcs L87D2
1207: jsr L87E7
1208: jmp L87C3
1209: L87D2:
1210: jsr L87DF
1211: jmp L87C3
1212: L87D8:
1213: .if CompileDrive >= DRIVE_1571 .AND CompileDrive < DRIVE_1571CR
1214: ldy #$10
1215: .else
1216: ldy #$12
1217: .endif
1218: jsr L8829
1219: L87DD:
1220: plp
1221: rts
1222: L87DF:
1223: lda MINSTP
1224: clc
1225: adc #$01
1226: jmp L8814
1227: L87E7:
1228: ldy #$63
1229: L87E9:
1230: lda VBC_PAUNBUF1
1231: ror a
1232: php
1233: lda VBC_PAUNBUF1
1234: ror a
1235: ror a
1236: plp
1237: and #$80
1238: bcc L87FC
1239: bpl L880F
1240: bmi L87FE
1241: L87FC:
1242: bmi L880F
1243: L87FE:
1244: dey
1245: bne L87E9
1246: bcs L880F
1247: lda VDC_PB2
1248: and #VDC_PB2_STEPPER
1249: bne L880F
1250: lda #$00
1251: sta MINSTP
1252: rts
1253: L880F:
1254: lda MINSTP
1255: sec
1256: sbc #$01
1257: L8814:
1258: sta MINSTP
1259: and #$03
1260: sta T0
1261: php
1262: sei
1263: lda VDC_PB2
1264: and # ~ VDC_PB2_STEPPER
1265: ora T0
1266: sta VDC_PB2
1267: plp
1268: .if CompileDrive >= DRIVE_1571CR
1269: ldy #$05
1270: .elseif CompileDrive >= DRIVE_1571
1271: ldy #$06
1272: .else
1273: ldy #$08
1274: .endif
1275: L8829:
1276: jsr L8830
1277: dey
1278: bne L8829
1279: rts
1280: L8830:
1281: ldx #$02
1282: .if CompileDrive >= DRIVE_1571_05
1283: lda #$6F
1284: .else
1285: lda #$00
1286: .endif
1287: L8834:
1288: adc #$01
1289: bne L8834
1290: dex
1291: bne L8834
1292: rts
1293:
1294: .if CompileDrive >= DRIVE_1571CR
1295: .else
1296:
1297: L883C:
1298: nop
1299: lda WD177x_STATUS
1300: lsr a
1301: lsr a
1302: lsr a
1303: and #$03
1304: tax
1305: lda L8A82,x
1306: sta L01B0
1307: tax
1308: rts
1309: L884E:
1310: pha
1311: jsr L877C
1312: pla
1313: sta WD177x_COMMAND
1314: lda #$01
1315: nop
1316: L8859:
1317: bit WD177x_STATUS
1318: beq L8859
1319: jmp LA47E
1320: L8861:
1321: jsr L8788
1322: lda #$01
1323: L8866:
1324: bit WD177x_STATUS
1325: bne L8866
1326: rts
1327: .endif
1328:
1329: L886C:
1330: lda ACLSTP
1331: sec
1332: sbc #$01
1333: sta CTRACK
1334: lda CMDBUF + 4
1335: clc
1336: adc BYTE
1337: cmp RSTEPS
1338: beq L8884
1339: bcc L8884
1340: sbc RSTEPS
1341: clc
1342: adc CTRACK
1343: L8884:
1344: sta CMDBUF + 4
1345: rts
1346: L8888:
1347: ldy #$00
1348: ldx #$00
1349: lda CMDBUF + 3
1350: and #$3F
1351: sta CMDBUF + 3
1352: sta ACLSTP
1353: pha
1354: lda CMDBUF + 7
1355: pha
1356: inc CMDBUF + 4
1357: L889E:
1358: lda CMDBUF + 3
1359: sta CMDBUF + 11,y
1360: inc CMDBUF + 3
1361: inx
1362: tya
1363: clc
1364: adc CMDBUF + 4
1365: tay
1366: cpy #$20
1367: bcs L88BE
1368: cpy CMDBUF + 7
1369: bcc L88D1
1370: bne L88CB
1371: cpx CMDBUF + 7
1372: beq L88CB
1373: L88BE:
1374: dec CMDBUF + 4
1375: pla
1376: sta CMDBUF + 7
1377: pla
1378: sta CMDBUF + 3
1379: sec
1380: rts
1381: L88CB:
1382: tya
1383: sec
1384: sbc CMDBUF + 7
1385: tay
1386: L88D1:
1387: cpx CMDBUF + 7
1388: bne L889E
1389: stx MYPA
1390: dex
1391: txa
1392: clc
1393: adc ACLSTP
1394: sta RSTEPS
1395: cmp ACLSTP
1396: bcc L88BE
1397: pla
1398: sta CMDBUF + 7
1399: pla
1400: sta CMDBUF + 3
1401: dec CMDBUF + 4
1402: clc
1403: rts
1404: L88F0:
1405: lda L01B0
1406: pha
1407: ldy #$00
1408: .if CompileDrive >= DRIVE_1571CR
1409: L88F8:
1410: lda CMDBUF + 11,y
1411: sta SECTR
1412: tya
1413: pha
1414: jsr LAD2E
1415: pla
1416: tay
1417: .else
1418: sty STAB
1419: L88F8:
1420: ldy STAB
1421: lda CMDBUF + 11,y
1422: sta WD177x_SECTOR
1423: jsr L8F18
1424: .endif
1425: ldx L01B0
1426: cpx #$02
1427: bcs L8915
1428: .if CompileDrive >= DRIVE_1571CR
1429: iny
1430: .else
1431: inc STAB
1432: ldy STAB
1433: .endif
1434: cpy CMDBUF + 7
1435: bne L88F8
1436: clc
1437: .byte ASM_BIT2
1438: L8915:
1439: sec
1440: pla
1441: sta L01B0
1442: L891A:
1443: rts
1444: L891B:
1445: lda CMDSIZ
1446: cmp #$07
1447: bcc L891A
1448: lda CMDBUF + 6
1449: sta NMIFLG
1450: jmp L87BA
1451: L892A:
1452: lda L01B0
1453: pha
1454: .if CompileDrive >= DRIVE_1571CR
1455: lda REVCNT
1456: asl a
1457: sta TMP
1458: L88FF:
1459: jsr L89E8
1460: .else
1461: jsr L8A27
1462: .endif
1463: ldx L01B0
1464: cpx #$02
1465: .if CompileDrive >= DRIVE_1571CR
1466: bcc L8923
1467: dec TMP
1468: bne L88FF
1469: jsr L89EF
1470: lda REVCNT
1471: asl a
1472: sta TMP
1473: L8915_CR:
1474: jsr L89E8
1475: .else
1476: bcc L8945
1477: jsr L89EF
1478: jsr L8A27
1479: .endif
1480: ldx L01B0
1481: cpx #$02
1482: .if CompileDrive >= DRIVE_1571CR
1483: bcc L8923
1484: dec TMP
1485: bne L8915_CR
1486: .else
1487: bcs L894F
1488: .endif
1489: L8923:
1490: L8945:
1491: lda NMIFLG
1492: asl a
1493: cmp MINSTP
1494: beq L894F
1495: jsr L87BA
1496: L894F:
1497: pla
1498: sta L01B0
1499: rts
1500: L8954:
1501: php
1502: sei
1503: lda HINIB
1504: and #$10
1505: cmp #$10
1506: jsr L93F3
1507: plp
1508: rts
1509: L8961:
1510: ldy MYPA
1511: dey
1512: lda #$FF
1513: L8966:
1514: cmp CMDBUF + 11,y
1515: bcc L896E
1516: lda CMDBUF + 11,y
1517: L896E:
1518: dey
1519: bpl L8966
1520: sta ACLSTP
1521: ldy MYPA
1522: dey
1523: lda #$00
1524: L8978:
1525: cmp CMDBUF + 11,y
1526: bcs L8980
1527: lda CMDBUF + 11,y
1528: L8980:
1529: dey
1530: bpl L8978
1531: sta RSTEPS
1532: rts
1533: L8986:
1534: ldx MYPA
1535: ldy #$00
1536: L898A:
1537: lda CMDBUF + 11,y
1538: cmp ACLSTP
1539: beq L8996
1540: iny
1541: cpy MYPA
1542: bne L898A
1543: L8996:
1544: sty AF
1545: lda ACLSTP
1546: clc
1547: adc #$01
1548: sta CTRACK
1549: ldx #$FF
1550: L89A1:
1551: lda CMDBUF + 11,y
1552: cmp CTRACK
1553: beq L89B2
1554: inx
1555: iny
1556: cpy MYPA
1557: bne L89A1
1558: ldy #$00
1559: beq L89A1
1560: L89B2:
1561: rts
1562:
1563: L89B3:
1564: lda T0
1565: pha
1566: php
1567: sei
1568: .if CompileDrive >= DRIVE_1571CR
1569: .else
1570: lda WD177x_TRACK
1571: sta WD177x_DATA
1572: lda #$18
1573: jsr L884E
1574: jsr L8861
1575: .endif
1576: ldx #$00
1577: ldy #$80
1578: lda WD177x_STATUS
1579: .if CompileDrive >= DRIVE_1571CR
1580: and #$40
1581: .else
1582: and #$02
1583: .endif
1584: sta T0
1585: L89D1:
1586: lda WD177x_STATUS
1587: .if CompileDrive >= DRIVE_1571CR
1588: and #$40
1589: .else
1590: and #$02
1591: .endif
1592: cmp T0
1593: beq L89DE
1594: plp
1595: jmp L89E7
1596: L89DE:
1597: dex
1598: bne L89D1
1599: dey
1600: bne L89D1
1601: plp
1602: sec
1603: .byte ASM_BIT2
1604: L89E7:
1605: clc
1606: pla
1607: sta T0
1608: rts
1609:
1610: L89EC:
1611: jmp RESET
1612:
1613: L89EF:
1614: lda #$B4
1615: sta MINSTP
1616: lda #$00
1617: .if CompileDrive >= DRIVE_1571CR
1618: .else
1619: sta WD177x_TRACK
1620: .endif
1621: sta NMIFLG
1622: jmp L87BA
1623: L89FD:
1624: lda VDC_PB2
1625: and #VDC_PB2_WRITEPROTECT
1626: rts
1627: L8A03:
1628: sty NMIFLG
1629: stx MINSTP
1630: rts
1631: L8A08:
1632: rts
1633: L8A09:
1634: jsr L89EF
1635:
1636: .if CompileDrive >= DRIVE_1571CR
1637: jsr L89E8
1638: lda L8A7E,x
1639: .else
1640: jsr L89B3
1641: bcs L8A20
1642: jsr L8A27
1643: lda L8A7E,x
1644: .endif
1645:
1646: sta MYPA
1647: sta RSTEPS
1648: lda #$01
1649: sta ACLSTP
1650: rts
1651:
1652: .if CompileDrive >= DRIVE_1571CR
1653: L89E8:
1654: jsr LABEC
1655: .else
1656: L8A20:
1657: lda #$0D
1658: sta L01B0
1659: bne L8A65
1660: L8A27:
1661: lda #$00
1662: sta RLINDX
1663: sta WORK
1664: lda #$C8
1665: jsr L884E
1666: ldx #$00
1667: ldy #$06
1668: L8A37:
1669: lda WD177x_STATUS
1670: and #$03
1671: lsr a
1672: bcc L8A4A
1673: beq L8A37
1674: lda WD177x_DATA
1675: sta STAB,x
1676: inx
1677: dey
1678: bne L8A37
1679: L8A4A:
1680: jsr L8861
1681: jsr L883C
1682: .endif
1683:
1684: lda STAB
1685: asl a
1686: sta MINSTP
1687: lda STAB + 3
1688: L8A57:
1689: and #$03
1690: tax
1691: lda L8A72,x
1692: sta RLINDX
1693: lda L8A76,x
1694: sta WORK
1695: L8A65:
1696: lda AS
1697: and #$80
1698: ora L01B0
1699: ora L8A7A,x
1700: sta AS
1701: .if CompileDrive >= DRIVE_1571CR
1702: stx L01B5
1703: .endif
1704: rts
1705: L8A72:
1706: .byte $7F,$FF,$FF,$FF
1707: L8A76:
1708: .byte $01,$01,$02,$04
1709: L8A7A:
1710: .byte $00,$10,$20,$30
1711: L8A7E:
1712: .byte $1A,$10,$09,$05
1713:
1714: .if CompileDrive >= DRIVE_1571CR
1715: .else
1716: L8A82:
1717: .byte $01,$09,$02,$03
1718: .endif
1719:
1720: L8A86:
1721:
1722: .if CompileDrive >= DRIVE_1571CR
1723: bit WD177x_STATUS
1724: bvc L8A86
1725: L8A25_CR:
1726: bit WD177x_STATUS
1727: bvs L8A25_CR
1728: bit L01B4
1729: bmi L8A32
1730: lda #$28
1731: .byte ASM_BIT3
1732: L8A32:
1733: lda #$29
1734: sta WD177x_COMMAND
1735: lda WD177x_STATUS
1736: ora #$02
1737: sta WD177x_COMMAND
1738: lda #$4E
1739: sta WD177x_SECTOR
1740: .else
1741: lda #$F8
1742: jsr L884E
1743: .endif
1744: bit HINIB
1745: bvc L8AF1
1746: ldx #$50
1747: .if CompileDrive >= DRIVE_1571CR
1748: .else
1749: L8A91:
1750: lda WD177x_STATUS
1751: and #$03
1752: lsr a
1753: bcc L8AF9
1754: beq L8A91
1755: .endif
1756: lda #$4E
1757: .if CompileDrive >= DRIVE_1571CR
1758: L8A91:
1759: bit WD177x_STATUS
1760: bpl L8A91
1761: sta WD177x_SECTOR
1762: .else
1763: sta WD177x_DATA
1764: .endif
1765: dex
1766: bne L8A91
1767: ldx #$0C
1768: L8AA5:
1769: .if CompileDrive >= DRIVE_1571CR
1770: .else
1771: lda WD177x_STATUS
1772: and #$03
1773: lsr a
1774: bcc L8AF9
1775: beq L8AA5
1776: .endif
1777: lda #$00
1778: .if CompileDrive >= DRIVE_1571CR
1779: L8A5B:
1780: bit WD177x_STATUS
1781: bpl L8A5B
1782: sta WD177x_SECTOR
1783: .else
1784: sta WD177x_DATA
1785: .endif
1786: dex
1787: .if CompileDrive >= DRIVE_1571CR
1788: bne L8A5B
1789: lda WD177x_TRACK
1790: and #$F8
1791: ora CSG5710_4010 + 3
1792: sta WD177x_TRACK
1793:
1794: lda CSG5710_4010 + 1
1795: L8A74:
1796: bit WD177x_STATUS
1797: bpl L8A74
1798: sta WD177x_SECTOR
1799: lda WD177x_STATUS
1800: ora #$04
1801: sta WD177x_COMMAND
1802: ldx #$02
1803:
1804: lda CSG5710_4010 + 1
1805: L8A89:
1806: bit WD177x_STATUS
1807: bpl L8A89
1808: sta WD177x_SECTOR
1809: .else
1810: bne L8AA5
1811: ldx #$03
1812: L8AB9:
1813: lda WD177x_STATUS
1814: and #$03
1815: lsr a
1816: bcc L8AF9
1817: beq L8AB9
1818: lda #$F6
1819: sta WD177x_DATA
1820: .endif
1821: dex
1822:
1823: .if CompileDrive >= DRIVE_1571CR
1824: bne L8A89
1825: .else
1826: bne L8AB9
1827: L8ACB:
1828: lda WD177x_STATUS
1829: and #$03
1830: lsr a
1831: bcc L8AF9
1832: beq L8ACB
1833: .endif
1834: lda #$FC
1835: .if CompileDrive >= DRIVE_1571CR
1836: L8A96:
1837: bit WD177x_STATUS
1838: bpl L8A96
1839: sta WD177x_SECTOR
1840: lda WD177x_STATUS
1841: and #$FB
1842: sta WD177x_COMMAND
1843: .else
1844: sta WD177x_DATA
1845: .endif
1846:
1847: ldx #$32
1848:
1849: .if CompileDrive >= DRIVE_1571CR
1850: .else
1851: nop
1852: L8ADD:
1853: lda WD177x_STATUS
1854: and #$03
1855: lsr a
1856: bcc L8AF9
1857: beq L8ADD
1858: .endif
1859: lda #$4E
1860:
1861: .if CompileDrive >= DRIVE_1571CR
1862: L8AAA:
1863: bit WD177x_STATUS
1864: bpl L8AAA
1865: sta WD177x_SECTOR
1866: .else
1867: sta WD177x_DATA
1868: .endif
1869: dex
1870: .if CompileDrive >= DRIVE_1571CR
1871: bne L8AAA
1872: beq L8AC6
1873: L8AF1:
1874: ldx #$3C
1875: .else
1876: bne L8ADD
1877: beq L8B05
1878: L8AF1:
1879: ldx #$3C
1880: L8AF3:
1881: lda WD177x_STATUS
1882: and #$03
1883: lsr a
1884: L8AF9:
1885: bcc L8B23
1886: beq L8AF3
1887: .endif
1888: lda #$4E
1889: .if CompileDrive >= DRIVE_1571CR
1890: L8ABB:
1891: bit WD177x_STATUS
1892: bpl L8ABB
1893: sta WD177x_SECTOR
1894: .else
1895: sta WD177x_DATA
1896: .endif
1897: dex
1898:
1899: .if CompileDrive >= DRIVE_1571CR
1900: bne L8ABB
1901: L8AC6:
1902: ldy #$01
1903: L8AC8:
1904: .else
1905: bne L8AF3
1906: L8B05:
1907: ldy #$01
1908: L8B07:
1909: ldx #$0C
1910: L8B09:
1911: lda WD177x_STATUS
1912: and #$03
1913: lsr a
1914: bcc L8B23
1915: beq L8B09
1916: .endif
1917: lda #$00
1918: .if CompileDrive >= DRIVE_1571CR
1919: ldx #$0C
1920: L8ACC:
1921: bit WD177x_STATUS
1922: bpl L8ACC
1923: sta WD177x_SECTOR
1924: .else
1925: sta WD177x_DATA
1926: .endif
1927: dex
1928: .if CompileDrive >= DRIVE_1571CR
1929: bne L8ACC
1930: lda CSG5710_4010 + 0
1931: L8ADA:
1932: bit WD177x_STATUS
1933: bpl L8ADA
1934: sta WD177x_SECTOR
1935: lda WD177x_STATUS
1936: ora #$14
1937: sta WD177x_COMMAND
1938: lda WD177x_TRACK
1939: and #$F8
1940: ora CSG5710_4010 + 2
1941: sta WD177x_TRACK
1942: ldx #$02
1943: lda CSG5710_4010 + 0
1944: L8AFA:
1945: bit WD177x_STATUS
1946: bpl L8AFA
1947: sta WD177x_SECTOR
1948: .else
1949: bne L8B09
1950: ldx #$03
1951: L8B1D:
1952: lda WD177x_STATUS
1953: and #$03
1954: lsr a
1955: L8B23:
1956: bcc L8B7C
1957: beq L8B1D
1958: lda #$F5
1959: sta WD177x_DATA
1960: .endif
1961: dex
1962:
1963: .if CompileDrive >= DRIVE_1571CR
1964: bne L8AFA
1965: lda CSG5710_4010 + 5
1966: L8B08:
1967: bit WD177x_STATUS
1968: bpl L8B08
1969: sta WD177x_SECTOR
1970: lda WD177x_STATUS
1971: and #$FB
1972: sta WD177x_COMMAND
1973: .else
1974: bne L8B1D
1975: L8B2F:
1976: lda WD177x_STATUS
1977: and #$03
1978: lsr a
1979: bcc L8B7C
1980: beq L8B2F
1981: lda #$FE
1982: sta WD177x_DATA
1983: L8B3E:
1984: lda WD177x_STATUS
1985: and #$03
1986: lsr a
1987: bcc L8B7C
1988: beq L8B3E
1989: .endif
1990:
1991: lda L01B0
1992:
1993: .if CompileDrive >= DRIVE_1571CR
1994: L8B1B:
1995: bit WD177x_STATUS
1996: bpl L8B1B
1997: sta WD177x_SECTOR
1998: .else
1999: sta WD177x_DATA
2000: L8B4E:
2001: lda WD177x_STATUS
2002: and #$03
2003: lsr a
2004: bcc L8B7C
2005: beq L8B4E
2006: .endif
2007:
2008: lda HINIB
2009: and #$10
2010: bne L8B61
2011: lda #$00
2012: .byte ASM_BIT3
2013: L8B61:
2014: lda #$01
2015: .if CompileDrive >= DRIVE_1571CR
2016: L8B2E:
2017: bit WD177x_STATUS
2018: bpl L8B2E
2019: sta WD177x_SECTOR
2020: .else
2021: sta WD177x_DATA
2022: L8B66:
2023: lda WD177x_STATUS
2024: and #$03
2025: lsr a
2026: bcc L8B7C
2027: beq L8B66
2028: .endif
2029:
2030: lda CMDBUF + 10,y
2031:
2032: .if CompileDrive >= DRIVE_1571CR
2033: L8B39:
2034: bit WD177x_STATUS
2035: bpl L8B39
2036: sta WD177x_SECTOR
2037: .else
2038: sta WD177x_DATA
2039: L8B76:
2040: lda WD177x_STATUS
2041: and #$03
2042: lsr a
2043: L8B7C:
2044: bcc L8BB1
2045: beq L8B76
2046: .endif
2047:
2048: lda CMDBUF + 5
2049:
2050: .if CompileDrive >= DRIVE_1571CR
2051: L8B44:
2052: bit WD177x_STATUS
2053: bpl L8B44
2054: sta WD177x_SECTOR
2055: L8B4C:
2056: bit WD177x_STATUS
2057: bpl L8B4C
2058: sta WD177x_SECTOR
2059: lda WD177x_STATUS
2060: and #$F7
2061: sta WD177x_COMMAND
2062: L8B5C:
2063: bit WD177x_STATUS
2064: bpl L8B5C
2065: sta WD177x_SECTOR
2066: .else
2067: sta WD177x_DATA
2068: L8B86:
2069: lda WD177x_STATUS
2070: and #$03
2071: lsr a
2072: bcc L8BB1
2073: beq L8B86
2074: lda #$F7
2075: sta WD177x_DATA
2076: ldx #$16
2077: L8B97:
2078: lda WD177x_STATUS
2079: and #$03
2080: lsr a
2081: bcc L8BB1
2082: beq L8B97
2083: .endif
2084:
2085: lda #$4E
2086:
2087: .if CompileDrive >= DRIVE_1571CR
2088: L8B66_CR:
2089: bit WD177x_STATUS
2090: bpl L8B66_CR
2091: sta WD177x_SECTOR
2092: lda WD177x_STATUS
2093: ora #$08
2094: sta WD177x_COMMAND
2095: lda #$4E
2096: L8B78:
2097: bit WD177x_STATUS
2098: bpl L8B78
2099: sta WD177x_SECTOR
2100: lda WD177x_STATUS
2101: and #$EF
2102: sta WD177x_COMMAND
2103: ldx #$14
2104: lda #$4E
2105: L8B8C:
2106: bit WD177x_STATUS
2107: bpl L8B8C
2108: sta WD177x_SECTOR
2109: .else
2110: sta WD177x_DATA
2111: .endif
2112:
2113: dex
2114: .if CompileDrive >= DRIVE_1571CR
2115: bne L8B8C
2116: .else
2117: bne L8B97
2118: .endif
2119:
2120: ldx #$0C
2121:
2122: .if CompileDrive >= DRIVE_1571CR
2123: .else
2124: L8BAB:
2125: lda WD177x_STATUS
2126: and #$03
2127: lsr a
2128: L8BB1:
2129: bcc L8BEB
2130: beq L8BAB
2131: .endif
2132: lda #$00
2133: .if CompileDrive >= DRIVE_1571CR
2134: L8B9B:
2135: bit WD177x_STATUS
2136: bpl L8B9B
2137: sta WD177x_SECTOR
2138: .else
2139: sta WD177x_DATA
2140: .endif
2141: dex
2142:
2143: .if CompileDrive >= DRIVE_1571CR
2144: bne L8B9B
2145: lda CSG5710_4010 + 0
2146: L8BA9:
2147: bit WD177x_STATUS
2148: bpl L8BA9
2149: sta WD177x_SECTOR
2150: lda WD177x_STATUS
2151: ora #$14
2152: sta WD177x_COMMAND
2153: ldx #$02
2154: lda CSG5710_4010 + 0
2155: L8BBE:
2156: bit WD177x_STATUS
2157: bpl L8BBE
2158: sta WD177x_SECTOR
2159: .else
2160: bne L8BAB
2161: ldx #$03
2162: L8BBF:
2163: lda WD177x_STATUS
2164: and #$03
2165: lsr a
2166: bcc L8BEB
2167: beq L8BBF
2168: lda #$F5
2169: sta WD177x_DATA
2170: .endif
2171: dex
2172:
2173: .if CompileDrive >= DRIVE_1571CR
2174: bne L8BBE
2175: lda CSG5710_4010 + 4
2176: L8BCC:
2177: bit WD177x_STATUS
2178: bpl L8BCC
2179: sta WD177x_SECTOR
2180: .else
2181: bne L8BBF
2182: L8BD1:
2183: lda WD177x_STATUS
2184: and #$03
2185: lsr a
2186: bcc L8BEB
2187: beq L8BD1
2188: lda #$FB
2189: sta WD177x_DATA
2190: .endif
2191: sty T0
2192:
2193: .if CompileDrive >= DRIVE_1571CR
2194: lda WD177x_STATUS
2195: and #$FB
2196: sta WD177x_COMMAND
2197: .endif
2198: ldy WORK
2199:
2200: .if CompileDrive >= DRIVE_1571CR
2201: .else
2202: nop
2203: L8BE5:
2204: lda WD177x_STATUS
2205: and #$03
2206: lsr a
2207: L8BEB:
2208: bcc L8C4D
2209: beq L8BE5
2210: .endif
2211:
2212: lda CMDBUF + 10
2213:
2214: .if CompileDrive >= DRIVE_1571CR
2215: L8BE5:
2216: bit WD177x_STATUS
2217: bpl L8BE5
2218: sta WD177x_SECTOR
2219: .else
2220: sta WD177x_DATA
2221: .endif
2222: cpx RLINDX
2223: beq L8BFE
2224: inx
2225: jmp L8BE5
2226: L8BFE:
2227: inx
2228: dey
2229:
2230: .if CompileDrive >= DRIVE_1571CR
2231: bne L8BE5
2232: L8BF8:
2233: bit WD177x_STATUS
2234: bpl L8BF8
2235: sta WD177x_SECTOR
2236: lda WD177x_STATUS
2237: and #$F7
2238: sta WD177x_COMMAND
2239: L8C08:
2240: bit WD177x_STATUS
2241: bpl L8C08
2242: sta WD177x_SECTOR
2243: lda #$4E
2244: L8C12:
2245: bit WD177x_STATUS
2246: bpl L8C12
2247: sta WD177x_SECTOR
2248: lda WD177x_STATUS
2249: ora #$08
2250: sta WD177x_COMMAND
2251: lda #$4E
2252: L8C24:
2253: bit WD177x_STATUS
2254: bpl L8C24
2255: sta WD177x_SECTOR
2256: lda WD177x_STATUS
2257: and #$EF
2258: sta WD177x_COMMAND
2259: .else
2260: bne L8BE5
2261: L8C02:
2262: lda WD177x_STATUS
2263: and #$03
2264: lsr a
2265: bcc L8C4D
2266: beq L8C02
2267: lda #$F7
2268: sta WD177x_DATA
2269: .endif
2270:
2271: ldy CMDBUF + 5
2272: lda L8C4F,y
2273: ldy T0
2274: tax
2275: .if CompileDrive >= DRIVE_1571CR
2276: dex
2277: .else
2278: L8C1A:
2279: lda WD177x_STATUS
2280: and #$03
2281: lsr a
2282: bcc L8C4D
2283: beq L8C1A
2284: .endif
2285: lda #$4E
2286: .if CompileDrive >= DRIVE_1571CR
2287: L8C1A:
2288: bit WD177x_STATUS
2289: bpl L8C1A
2290: sta WD177x_SECTOR
2291: .else
2292: sta WD177x_DATA
2293: .endif
2294: dex
2295: bne L8C1A
2296: cpy CMDBUF + 7
2297: .if CompileDrive >= DRIVE_1571CR
2298:
2299: beq L8C54
2300: iny
2301: jmp L8AC8
2302:
2303: L8C54:
2304: bit WD177x_STATUS
2305: bpl L8C54
2306: sta WD177x_SECTOR
2307: bit WD177x_STATUS
2308: bvc L8C67
2309: dey
2310: bne L8C54
2311: dex
2312: bne L8C54
2313: L8C67:
2314: lda WD177x_STATUS
2315: and #$DD
2316: sta WD177x_COMMAND
2317: ldy #$02
2318: jmp L8829
2319:
2320: .else
2321:
2322: beq L8C35
2323: iny
2324: jmp L8B07
2325: L8C35:
2326: lda WD177x_STATUS
2327: and #$03
2328: lsr a
2329: bcc L8C48
2330: beq L8C35
2331: clc
2332: lda #$4E
2333: sta WD177x_DATA
2334: jmp L8C35
2335: L8C48:
2336: jsr L8861
2337: clc
2338: .byte ASM_BIT2
2339: L8C4D:
2340: sec
2341: rts
2342: .endif
2343:
2344: L8C4F:
2345: .byte $07,$0C,$17,$2C
2346: L8C53:
2347: .byte $1A,$10,$09,$05
2348:
2349: L8C57:
2350: lda HINIB
2351: and #$08
2352: beq L8C64
2353: ldx CTRACK
2354: stx L01B0
2355: sec
2356: rts
2357: L8C64:
2358: jsr LD307
2359: lda CMDSIZ
2360: sec
2361: sbc #$04
2362: tay
2363: beq L8C90
2364: dey
2365: beq L8C95
2366: lda #$00
2367: sta L01B0
2368: lda CMDBUF + 5
2369: jsr L8A57
2370: dey
2371: beq L8CA2
2372: dey
2373: beq L8CA7
2374: dey
2375: beq L8CAD
2376: dey
2377: beq L8CB5
2378: dey
2379: beq L8CBA
2380: jmp L8CBF
2381: L8C90:
2382: lda #$00
2383: sta CMDBUF + 4
2384: L8C95:
2385: lda #$00
2386: sta L01B0
2387: lda #$01
2388: sta CMDBUF + 5
2389: jsr L8A57
2390: L8CA2:
2391: lda #$27
2392: sta CMDBUF + 6
2393: L8CA7:
2394: lda L8C53,x
2395: sta CMDBUF + 7
2396: L8CAD:
2397: lda #$00
2398: sta CMDBUF + 8
2399: .if CompileDrive >= DRIVE_1571CR
2400: .else
2401: sta WD177x_TRACK
2402: .endif
2403: L8CB5:
2404: lda #$00
2405: sta CMDBUF + 9
2406: L8CBA:
2407: lda #$E5
2408: sta CMDBUF + 10
2409: L8CBF:
2410: jsr L8CDE
2411: lda L01B0
2412: cpx #$02
2413: bcs L8CDB
2414: lda HINIB
2415: and #$20
2416: beq L8CDB
2417: lda HINIB
2418: ora #$10
2419: sta HINIB
2420: jsr L8954
2421: jsr L8CDE
2422: L8CDB:
2423: jmp L89EF
2424: L8CDE:
2425: jsr L89B3
2426: bcs L8D5F
2427: .if CompileDrive >= DRIVE_1571CR
2428: .else
2429: lda #$01
2430: sta VBC_IFR1
2431: .endif
2432: jsr L89EF
2433: lda CMDBUF + 8
2434: sta L01B0
2435: .if CompileDrive >= DRIVE_1571CR
2436: .else
2437: sta WD177x_TRACK
2438: .endif
2439: bit CMDBUF + 3
2440: bvs L8CFE
2441: jsr L8888
2442: bcs L8D5F
2443: L8CFE:
2444: lda CMDBUF + 9
2445: and #$7F
2446: beq L8D0D
2447: clc
2448: adc NMIFLG
2449: sta NMIFLG
2450: jsr L87BA
2451: L8D0D:
2452: sei
2453: .if CompileDrive >= DRIVE_1571CR
2454: jsr L8A86
2455: jsr L88F0
2456: bcs L8D5F
2457: .else
2458: lda VBC_IFR1
2459: lsr a
2460: bcs L8D5F
2461: jsr L8A86
2462: bcs L8D5F
2463: lda VBC_IFR1
2464: lsr a
2465: bcs L8D5F
2466: jsr L88F0
2467: bcs L8D5F
2468: lda VBC_IFR1
2469: lsr a
2470: bcs L8D5F
2471: .endif
2472: lda L01B0
2473: cmp CMDBUF + 6
2474: beq L8D40
2475: inc NMIFLG
2476: .if CompileDrive >= DRIVE_1571CR
2477: .else
2478: inc WD177x_TRACK
2479: .endif
2480: inc L01B0
2481: jsr L87BA
2482: jmp L8D0D
2483: L8D40:
2484: bit HINIB
2485: bpl L8D5C
2486: sec
2487: lda CMDBUF + 6
2488: sbc CMDBUF + 8
2489: cmp #$27
2490: bcs L8D5C
2491: inc NMIFLG
2492: jsr L87BA
2493: ldx #$1C
2494: .if CompileDrive >= DRIVE_1571_05
2495: jsr LC07F
2496: FillNOP 3
2497: .else
2498: jsr L9D63
2499: jsr LFE00
2500: .endif
2501: L8D5C:
2502: ldx #$00
2503: .byte ASM_BIT3
2504: L8D5F:
2505: ldx #$06
2506: stx L01B0
2507: jmp L85E9
2508: L8D67:
2509: lda HINIB
2510: and #$20
2511: bne L8DC6
2512: .if CompileDrive >= DRIVE_1571CR
2513: lda REVCNT
2514: asl a
2515: sta TMP
2516: L8D75:
2517: jsr L8EC6
2518: jsr LAC9C
2519: bcs L8DD1
2520: jsr LAC38
2521: bcs L8DC8
2522: .else
2523: lda #$03
2524: sta BUFPNT + 1
2525: .endif
2526: ldy #$00
2527: .if CompileDrive >= DRIVE_1571CR
2528: .else
2529: sty BUFPNT
2530: .endif
2531: ldx WORK
2532: .if CompileDrive >= DRIVE_1571CR
2533: L8D89:
2534: bit WD177x_TRACK
2535: bpl L8D89
2536: lda WD177x_SECTOR
2537: .else
2538: lda CMDBUF + 3
2539: sta WD177x_TRACK
2540: lda CMDBUF + 4
2541: sta WD177x_SECTOR
2542: lda #$88
2543: jsr L884E
2544: nop
2545: L8D89:
2546: lda WD177x_STATUS
2547: and #$03
2548: lsr a
2549: bcc L8DAB
2550: and #$01
2551: beq L8D89
2552: lda WD177x_DATA
2553: .endif
2554: sta (BUFPNT),y
2555: cpy RLINDX
2556: beq L8DA2
2557: iny
2558: bne L8D89
2559: L8DA2:
2560: iny
2561: dex
2562: beq L8DAB
2563: inc BUFPNT + 1
2564: jmp L8D89
2565:
2566: .if CompileDrive >= DRIVE_1571CR
2567: L8DAB:
2568: bit WD177x_TRACK
2569: bpl L8DAB
2570: lda WD177x_SECTOR
2571: L8DA9:
2572: bit WD177x_TRACK
2573: bpl L8DA9
2574: lda WD177x_SECTOR
2575: lda #$18
2576: sta WD177x_TRACK
2577: L8DB6:
2578: bit WD177x_TRACK
2579: bpl L8DB6
2580: lda WD177x_SECTOR
2581: lda WD177x_TRACK
2582: and #$20
2583: beq L8DCF
2584: ldx #$05
2585: .byte ASM_BIT3
2586: L8DC8:
2587: ldx #$03
2588: dec TMP
2589: bne L8D75
2590: .byte ASM_BIT3
2591: L8DCF:
2592: ldx #$00
2593: L8DD1:
2594: jsr L85E9
2595:
2596: .else
2597:
2598: L8DAB:
2599: jsr L8861
2600: jsr L883C
2601: jsr L85E9
2602: bit HINIB
2603: bvs L8DBF
2604: .endif
2605: cpx #$02
2606: bcc L8DBF
2607: .if CompileDrive >= DRIVE_1571CR
2608: bit HINIB
2609: bvs L8DBF
2610: .endif
2611: jmp L8384
2612: L8DBF:
2613: jsr L85F9
2614: lda HINIB
2615:
2616: .if CompileDrive >= DRIVE_1571CR
2617: bmi L8DE8
2618: L8DC6:
2619: jsr L8EC6
2620: .else
2621: bmi L8DE8
2622: L8DC6:
2623: lda #$03
2624: sta BUFPNT + 1
2625: ldy #$00
2626: sty BUFPNT
2627: ldx WORK
2628: .endif
2629: L8DD0:
2630: lda (BUFPNT),y
2631: sta CTRACK
2632: jsr L85F9
2633: cpy RLINDX
2634: beq L8DDF
2635: iny
2636: bne L8DD0
2637: L8DDF:
2638: iny
2639: dex
2640: beq L8DE8
2641: inc BUFPNT + 1
2642: jmp L8DD0
2643: L8DE8:
2644: dec CMDBUF + 5
2645: beq L8DF3
2646: jsr L886C
2647: jmp L8D67
2648: L8DF3:
2649: jmp L891B
2650: L8DF6:
2651: .if CompileDrive >= DRIVE_1571CR
2652: jsr L8EC6
2653: .else
2654: lda #$03
2655: sta BUFPNT + 1
2656: ldy #$00
2657: sty BUFPNT
2658: ldx WORK
2659: .endif
2660: lda HINIB
2661: bmi L8E34
2662: L8E04:
2663: lda VBC_PB1
2664: eor #VBC_PB1_1540_CLOCKOUT
2665: bit CIA_ICR
2666: sta VBC_PB1
2667: L8E0F:
2668: lda VBC_PB1
2669: bpl L8E17
2670: jsr TestATN
2671: L8E17:
2672: lda CIA_ICR
2673: and #CIA_ICR_B_SP
2674: beq L8E0F
2675: lda CIA_SDR
2676: sta (BUFPNT),y
2677: cpy RLINDX
2678: beq L8E2B
2679: iny
2680: bne L8E04
2681: L8E2B:
2682: iny
2683: dex
2684: beq L8E34
2685: inc BUFPNT + 1
2686: jmp L8E04
2687: L8E34:
2688: lda HINIB
2689: and #$20
2690:
2691: .if CompileDrive >= DRIVE_1571CR
2692: beq L8E4F
2693: jmp L8EB7
2694: L8E4F:
2695: .else
2696: bne L8EB7
2697: .endif
2698: lda HINIB
2699: and #$08
2700: beq L8E45
2701: ldx CTRACK
2702: jmp L8381
2703: L8E45:
2704: .if CompileDrive >= DRIVE_1571CR
2705: jsr L8EC6
2706: jsr LAC9C
2707: bcc L8E65
2708: jmp L8F41
2709: L8E65:
2710: jsr LACB9
2711: bit L01B4
2712: bmi L8E70
2713: lda #$28
2714: .byte ASM_BIT3
2715: L8E70:
2716: lda #$29
2717: sta WD177x_COMMAND
2718: lda #$00
2719: sta WD177x_SECTOR
2720: lda WD177x_STATUS
2721: ora #$02
2722: sta WD177x_COMMAND
2723: ldx #$0C
2724: L8E84:
2725: lda #$00
2726: L8E86:
2727: bit WD177x_STATUS
2728: bpl L8E86
2729: sta WD177x_SECTOR
2730: dex
2731: bne L8E84
2732: lda CSG5710_4010 + 0
2733: L8E94:
2734: bit WD177x_STATUS
2735: bpl L8E94
2736: sta WD177x_SECTOR
2737: lda WD177x_STATUS
2738: ora #$14
2739: sta WD177x_COMMAND
2740: lda WD177x_TRACK
2741: and #$F8
2742: ora CSG5710_4010 + 2
2743: sta WD177x_TRACK
2744: ldx #$02
2745: lda CSG5710_4010 + 0
2746: L8EB4:
2747: bit WD177x_STATUS
2748: bpl L8EB4
2749: sta WD177x_SECTOR
2750: dex
2751: bne L8EB4
2752: lda CSG5710_4010 + 4
2753: L8EC2_CR:
2754: bit WD177x_STATUS
2755: bpl L8EC2_CR
2756: sta WD177x_SECTOR
2757: lda WD177x_STATUS
2758: and #$FB
2759: sta WD177x_COMMAND
2760: .else
2761: lda #$03
2762: sta BUFPNT + 1
2763: .endif
2764: ldy #$00
2765: .if CompileDrive >= DRIVE_1571CR
2766: .else
2767: sty BUFPNT
2768: .endif
2769: ldx WORK
2770: .if CompileDrive >= DRIVE_1571CR
2771: L8E66:
2772: lda (BUFPNT),y
2773: L8ED8:
2774: bit WD177x_STATUS
2775: bpl L8ED8
2776: .else
2777: lda CMDBUF + 3
2778: sta WD177x_TRACK
2779: lda CMDBUF + 4
2780: .endif
2781: sta WD177x_SECTOR
2782:
2783: .if CompileDrive >= DRIVE_1571CR
2784: .else
2785: lda VBC_IFR1
2786: lsr a
2787: bcs L8E93
2788: lda #$A8
2789: jsr L884E
2790: L8E66:
2791: lda WD177x_STATUS
2792: and #$03
2793: lsr a
2794: bcc L8E93
2795: and #$01
2796: beq L8E66
2797: lda (BUFPNT),y
2798: sta WD177x_DATA
2799: .endif
2800:
2801: cpy RLINDX
2802: beq L8E7F
2803: iny
2804: bne L8E66
2805: L8E7F:
2806: iny
2807: dex
2808: beq L8E88
2809: inc BUFPNT + 1
2810: jmp L8E66
2811: .if CompileDrive >= DRIVE_1571CR
2812: L8E88:
2813: bit WD177x_STATUS
2814: bpl L8E88
2815: sta WD177x_SECTOR
2816: lda WD177x_STATUS
2817: and #$F7
2818: sta WD177x_COMMAND
2819: L8F01:
2820: bit WD177x_STATUS
2821: bpl L8F01
2822: sta WD177x_SECTOR
2823: L8F09:
2824: bit WD177x_STATUS
2825: bpl L8F09
2826: sta WD177x_SECTOR
2827: L8F11:
2828: bit WD177x_STATUS
2829: bpl L8F11
2830: sta WD177x_SECTOR
2831: lda WD177x_STATUS
2832: and #$EF
2833: sta WD177x_COMMAND
2834: L8F21:
2835: bit WD177x_STATUS
2836: bpl L8F21
2837: sta WD177x_SECTOR
2838: lda WD177x_STATUS
2839: and #$CD
2840: sta WD177x_COMMAND
2841: ldy #$02
2842: jsr L8829
2843: ldx #$00
2844: bit L01B4
2845: bvs L8F43_CR
2846: jsr LACC7
2847: .byte ASM_BIT3
2848: L8F41:
2849: ldx #$07
2850: L8F43_CR:
2851: stx L01B0
2852: jsr L81CE
2853: .else
2854: L8E88:
2855: lda VBC_IFR1
2856: lsr a
2857: bcs L8E93
2858: .if CompileDrive >= DRIVE_1571_05
2859: jsr PATCH_INIT_CSG5710
2860: .else
2861: jsr L8EC6
2862: .endif
2863: bcc L8E9A
2864: L8E93:
2865: jsr L81CE
2866: ldx #$07
2867: bne L8EA0
2868: L8E9A:
2869: jsr L81CE
2870: jsr L883C
2871: L8EA0:
2872: stx L01B0
2873: .endif
2874: jsr L85E9
2875: jsr L85F9
2876: jsr L86A0
2877: jsr L81B2
2878: bit HINIB
2879: bvs L8EB7
2880: cpx #$02
2881: bcs L8EC5
2882: L8EB7:
2883: dec CMDBUF + 5
2884: beq L8EC2
2885: jsr L886C
2886: jmp L8DF6
2887: L8EC2:
2888: jmp L891B
2889: L8EC5:
2890: rts
2891: L8EC6:
2892: lda #$03
2893: sta BUFPNT + 1
2894: ldy #$00
2895: sty BUFPNT
2896: .if CompileDrive >= DRIVE_1571CR
2897: .else
2898: ldx WORK
2899: .endif
2900: lda CMDBUF + 3
2901: .if CompileDrive >= DRIVE_1571CR
2902: sta NMIFLG
2903: .else
2904: sta WD177x_TRACK
2905: .endif
2906: lda CMDBUF + 4
2907:
2908: .if CompileDrive >= DRIVE_1571CR
2909: sta SECTR
2910: eor #$FF
2911: sta STAB + 2
2912: .else
2913: sta WD177x_SECTOR
2914: lda #$88
2915: jsr L884E
2916: L8EE1:
2917: lda WD177x_STATUS
2918: and #$03
2919: lsr a
2920: bcc L8F05
2921: and #$01
2922: beq L8EE1
2923: lda WD177x_DATA
2924: cmp (BUFPNT),y
2925: bne L8F05
2926: cpy RLINDX
2927: beq L8EFC
2928: iny
2929: bne L8EE1
2930: L8EFC:
2931: iny
2932: dex
2933: beq L8F10
2934: inc BUFPNT + 1
2935: jmp L8EE1
2936: L8F05:
2937: lda #$D0
2938: sta WD177x_COMMAND
2939: jsr LA483
2940: ldx #$07
2941: .byte ASM_BIT3
2942: L8F10:
2943: ldx #$00
2944: stx L01B0
2945: jmp L8861
2946: L8F18:
2947: lda #$03
2948: sta BUFPNT + 1
2949: ldy #$00
2950: sty BUFPNT
2951: .endif
2952:
2953: ldx WORK
2954:
2955: .if CompileDrive >= DRIVE_1571CR
2956: .else
2957: .if CompileDrive >= DRIVE_1571_05
2958: .else
2959: ldy RLINDX
2960: .endif
2961: lda #$88
2962: jsr L884E
2963: L8F2A:
2964: lda WD177x_STATUS
2965: and #$03
2966: lsr a
2967: bcc L8F4C
2968: and #$01
2969: beq L8F2A
2970: lda WD177x_DATA
2971: cmp CMDBUF + 10
2972: bne L8F4C
2973: .if CompileDrive >= DRIVE_1571_05
2974: cpy RLINDX
2975: beq L8F43
2976: iny
2977: bne L8F2A
2978: L8F43:
2979: iny
2980: .else
2981: dey
2982: bpl L8F2A
2983: .endif
2984: dex
2985: beq L8F57
2986: .if CompileDrive >= DRIVE_1571_05
2987: .else
2988: ldy RLINDX
2989: .endif
2990: inc BUFPNT + 1
2991: jmp L8F2A
2992: L8F4C:
2993: lda #$D0
2994: sta WD177x_COMMAND
2995: jsr LA483
2996: ldx #$07
2997: .byte ASM_BIT3
2998: L8F57:
2999: ldx #$00
3000: stx L01B0
3001: jmp L8861
3002: L8F5F:
3003: php
3004: sei
3005: jsr L89EF
3006: bit HINIB
3007: bpl L8F70
3008: lda CMDBUF + 3
3009: sta NMIFLG
3010: jsr L87BA
3011: L8F70:
3012: lda #$00
3013: sta MYPA
3014: jsr L8A27
3015: ldx L01B0
3016: cpx #$02
3017: bcs L8F9D
3018: lda STAB + 2
3019: sta ICMD
3020: L8F82:
3021: jsr L8A27
3022: lda STAB + 2
3023: ldy MYPA
3024: sta CMDBUF + 11,y
3025: inc MYPA
3026: cpy #$1F
3027: bcs L8F9D
3028: cmp ICMD
3029: bne L8F82
3030: lda STAB
3031: sta NMIFLG
3032: ldx #$00
3033: .byte ASM_BIT3
3034: L8F9D:
3035: ldx #$02
3036: stx L01B0
3037: plp
3038: .endif
3039: rts
3040:
3041: FillUntil $8FA4
3042:
3043: L8FA4:
3044: lda CMDBUF + 4
3045: sta SECINC
3046: rts
3047: L8FAA:
3048: lda CMDBUF + 4
3049: sta REVCNT
3050: rts
3051: L8FB0:
3052: jmp L924E
3053: L8FB3:
3054: sei
3055: lda VBC_PAUNBUF1
3056: and #VBC_PA1_20
3057: bne L9021
3058: lda CMDBUF + 4
3059: cmp #$31
3060: beq L8FD4
3061: cmp #$30
3062: bne L9021
3063: lda VBC_PAUNBUF1
3064: and # ~ VBC_PA1_04
3065: sta VBC_PAUNBUF1
3066: cli
3067: bit HINIB
3068: bpl L8FE1
3069: rts
3070: L8FD4:
3071: .if CompileDrive >= DRIVE_1571
3072: lda VBC_PAUNBUF1
3073: .else
3074: jmp L9021
3075: .endif
3076: ora #VBC_PA1_04
3077: sta VBC_PAUNBUF1
3078: cli
3079: bit HINIB
3080: bmi L8FE4
3081: L8FE1:
3082: jmp LD042
3083: L8FE4:
3084: rts
3085: L8FE5:
3086: ldx CMDSIZ
3087: cpx #$04
3088: bcc L9021
3089: lda CMDBUF + 3
3090: cmp #$53
3091: beq L8FA4
3092: cmp #$52
3093: beq L8FAA
3094: cmp #$54
3095: beq L8FB0
3096: cmp #$4D
3097: beq L9026
3098: cmp #$48
3099: beq L8FB3
3100: .if CompileDrive >= DRIVE_1571CR
3101: jmp LABA7
3102: .elseif CompileDrive >= DRIVE_1571_05
3103: jmp LAA86
3104: .else
3105: tay
3106: cpy #$04
3107: .endif
3108: L9006:
3109: bcc L9021
3110: cpy #$1F
3111: bcs L9021
3112: lda #$40
3113: sta TLKADR
3114: lda #$20
3115: sta LSNADR
3116: tya
3117: clc
3118: adc TLKADR
3119: sta TLKADR
3120: tya
3121: clc
3122: adc LSNADR
3123: sta LSNADR
3124: rts
3125: L9021:
3126: lda #ERRORCODE_31_SYNTAX_ERROR
3127: jmp GenerateErrorMessage
3128:
3129:
3130: L9026:
3131: sei
3132: lda CMDBUF + 4
3133: cmp #$31
3134: beq L904E
3135: cmp #$30
3136: bne L9021
3137: lda VBC_PAUNBUF1
3138: and # ~ VBC_PA1_20
3139: sta VBC_PAUNBUF1
3140: jsr LA483
3141: jsr LFF82
3142: lda FLGMODE1570
3143: ora #$80
3144: sta FLGMODE1570
3145: cli
3146: bit HINIB
3147: bpl L907C
3148: rts
3149: L904E:
3150: lda VBC_PAUNBUF1
3151: ora #VBC_PA1_20
3152: sta VBC_PAUNBUF1
3153: jsr LA483
3154: lda #$DE
3155: sta VIRQJOB1570
3156: lda #$9D
3157: sta VIRQJOB1570 + 1
3158: lda #$40
3159: sta VDC_T1HL2
3160: sta VDC_T1HC2
3161: lda FLGMODE1570
3162: and #$7F
3163: sta FLGMODE1570
3164: lda #$00
3165: sta NXTST
3166: cli
3167: bit HINIB
3168: bmi L907F
3169: L907C:
3170: jmp LD042
3171: L907F:
3172: rts
3173: L9080:
3174: jsr L81CE
3175: jsr L91EA
3176: bcs L90E7
3177: jsr LC63D
3178: lda NODRV
3179: bne L90E7
3180: lda BITCNT
3181: ora #$81
3182: sta BITCNT
3183: jsr L91CA
3184: lda CMDBUF
3185: cmp #$2A
3186: bne L90AE
3187: lda PRGTRK
3188: beq L90AE
3189: pha
3190: lda PRGSEC
3191: sta FILSEC
3192: pla
3193: jmp L90EC
3194: L90AE:
3195: lda #$00
3196: tay
3197: tax
3198: sta LSTDRV
3199: sta FILTBL
3200: jsr LC312
3201: lda F2CNT
3202: pha
3203: lda #$01
3204: sta F2CNT
3205: lda #$FF
3206: sta R0
3207: jsr LC44F
3208: pla
3209: sta F2CNT
3210: lda BITCNT
3211: and #$7F
3212: sta BITCNT
3213: bit HINIB
3214: bmi L90DF
3215: .if CompileDrive >= DRIVE_1571_05
3216: jsr LAA5B
3217: FillNOP 1
3218: .elseif CompileDrive >= DRIVE_1571
3219: lda PATTYP
3220: cmp #$02
3221: .else
3222: jsr LAA5B
3223: FillNOP 1
3224: .endif
3225: bne L90E4
3226: L90DF:
3227: lda FILTRK
3228: bne L90EC
3229: L90E4:
3230: ldx #$02
3231: .byte ASM_BIT3
3232: L90E7:
3233: ldx #$0F
3234: jmp L91AD
3235: L90EC:
3236: sta PRGTRK
3237: pha
3238: jsr L91DA
3239: pla
3240: ldx L02B0
3241: sta TRACK0,x
3242: lda FILSEC
3243: sta PRGSEC
3244: sta SECTOR0,x
3245: lda #$80
3246: sta CMDBUF + 2
3247: sta AF
3248: L9107:
3249: cli
3250: ldx JOBNUM
3251: lda AF
3252: sta JOBS0,x
3253: jsr L864B
3254: cpx #$02
3255: bcc L9118
3256: jmp L9199
3257: L9118:
3258: sei
3259: ldy #$00
3260: lda (DIRBUF),y
3261: beq L914E
3262: lda BITCNT
3263: and #$FE
3264: sta BITCNT
3265: jsr L9228
3266: ldy #$02
3267: L912A:
3268: lda (DIRBUF),y
3269: tax
3270: jsr L9228
3271: iny
3272: bne L912A
3273: ldx L02B0
3274: lda (DIRBUF),y
3275: cmp TRACK0,x
3276: beq L913F
3277: ldy #$80
3278: .byte ASM_BIT3
3279: L913F:
3280: ldy #$88
3281: sty AF
3282: sta TRACK0,x
3283: ldy #$01
3284: lda (DIRBUF),y
3285: sta SECTOR0,x
3286: jmp L9107
3287: L914E:
3288: ldx #$1F
3289: jsr L9228
3290: lda #$01
3291: bit BITCNT
3292: beq L9177
3293: tay
3294: lda (DIRBUF),y
3295: sec
3296: sbc #$03
3297: sta CTRACK
3298: tax
3299: jsr L9228
3300: iny
3301: lda (DIRBUF),y
3302: tax
3303: jsr L9228
3304: iny
3305: lda (DIRBUF),y
3306: tax
3307: jsr L9228
3308: ldy #$04
3309: bne L9184
3310: L9177:
3311: ldy #$01
3312: lda (DIRBUF),y
3313: tax
3314: dex
3315: stx CTRACK
3316: jsr L9228
3317: ldy #$02
3318: L9184:
3319: lda (DIRBUF),y
3320: tax
3321: jsr L9228
3322: iny
3323: dec CTRACK
3324: bne L9184
3325: lda #$00
3326: sta SA
3327: jsr LDAC0
3328: jmp CommandEnd
3329: L9199:
3330: sei
3331: stx CTRACK
3332: jsr L9228
3333: lda #$00
3334: sta SA
3335: jsr LDAC0
3336: ldx JOBNUM
3337: lda CTRACK
3338: jmp LE60A
3339: L91AD:
3340: sei
3341: stx CTRACK
3342: ldx #$02
3343: jsr L9228
3344: lda #$00
3345: sta SA
3346: jsr LDAC0
3347: lda CTRACK
3348: cmp #$02
3349: beq L91C5
3350: lda #$74
3351: .byte ASM_BIT3
3352: L91C5:
3353: lda #ERRORCODE_62_FILE_NOT_FOUND
3354: jmp GenerateErrorMessage
3355:
3356:
3357: L91CA:
3358: lda #$00
3359: sta SA
3360: lda #$01
3361: jsr LD1E2
3362: tax
3363: lda TableHighBytesOfBuffers,x
3364: sta DIRBUF + 1
3365: rts
3366: L91DA:
3367: lda DIRBUF + 1
3368: sec
3369: sbc #$03
3370: sta JOBNUM
3371: asl a
3372: sta L02B0
3373: lda #$00
3374: sta DIRBUF
3375: rts
3376: L91EA:
3377: ldy #$03
3378: lda CMDSIZ
3379: sec
3380: sbc #$03
3381: sta CMDSIZ
3382: lda CMDBUF + 4
3383: cmp #$3A
3384: bne L920A
3385: lda CMDBUF + 3
3386: tax
3387: and #$30
3388: cmp #$30
3389: bne L920A
3390: cpx #$31
3391: beq L9226
3392: L920A:
3393: lda CMDBUF + 3
3394: cmp #$3A
3395: bne L9215
3396: dec CMDSIZ
3397: iny
3398: L9215:
3399: ldx #$00
3400: L9217:
3401: lda CMDBUF,y
3402: sta CMDBUF,x
3403: iny
3404: inx
3405: cpx CMDSIZ
3406: bne L9217
3407: clc
3408: .byte ASM_BIT2
3409: L9226:
3410: sec
3411: rts
3412: L9228:
3413: lda VBC_PB1
3414: cmp VBC_PB1
3415: bne L9228
3416: and #$FF
3417: bmi L924B
3418: eor BITCNT
3419: and #$04
3420: beq L9228
3421: stx CIA_SDR
3422: lda BITCNT
3423: eor #$04
3424: sta BITCNT
3425: lda #CIA_ICR_B_SP
3426: L9245:
3427: bit CIA_ICR
3428: beq L9245
3429: rts
3430:
3431: L924B:
3432: jmp ProcessBus1570
3433:
3434: L924E:
3435: php
3436: sei
3437: ldx #$00
3438: stx JOBS0
3439: stx JOBS1
3440: lda #$03
3441: sta IP
3442: tay
3443: lda #$80
3444: sta IP + 1
3445: L925F:
3446: lda (IP),y
3447: sta JOBS2
3448: ldx #$08
3449: L9265:
3450: lda JOBS2
3451: and #$01
3452: sta JOBS3
3453: lda JOBS1
3454: bpl L9271
3455: inc JOBS3
3456: L9271:
3457: ror a
3458: bcc L9276
3459: inc JOBS3
3460: L9276:
3461: ror a
3462: ror a
3463: ror a
3464: bcc L927D
3465: inc JOBS3
3466: L927D:
3467: lda JOBS0
3468: rol a
3469: rol a
3470: bcc L9285
3471: inc JOBS3
3472: L9285:
3473: ror JOBS3
3474: rol JOBS0
3475: rol JOBS1
3476: ror JOBS2
3477: dex
3478: bne L9265
3479: inc IP
3480: bne L925F
3481: inc IP + 1
3482: bne L925F
3483: dey
3484: dey
3485: dey
3486: lda JOBS0
3487: cmp L8000
3488: bne L92B3
3489: lda JOBS1
3490: cmp L8001
3491: bne L92B3
3492: sty JOBS0
3493: sty JOBS1
3494: sty JOBS2
3495: sty JOBS3
3496: plp
3497: rts
3498: L92B3:
3499: ldx #$03
3500: stx T0
3501: jmp PostFailError
3502: L92BA:
3503: tsx
3504: stx SAVSP
3505: bit VDC_T1LC2
3506: lda VDC_PCR2
3507: ora #$0E
3508: sta VDC_PCR2
3509: L92C8:
3510: ldy #$05
3511: L92CA:
3512: lda JOBS0,y
3513: bmi L92D5
3514: dey
3515: bpl L92CA
3516: jmp L99CA
3517: L92D5:
3518: cmp #$88
3519: bne L92DC
3520: jmp L960D
3521: L92DC:
3522: cmp #$D0
3523: bne L92E3
3524: jmp L93A2
3525: L92E3:
3526: and #$01
3527: beq L92EE
3528: sty JOBN
3529: lda #$0F
3530: jmp L99B5
3531: L92EE:
3532: tax
3533: cmp CDRIVE
3534: beq L92FB
3535: sta CDRIVE
3536: jsr LF97E
3537: jmp L99CA
3538: L92FB:
3539: lda DRVST
3540: bmi L9302
3541: asl a
3542: bpl L9305
3543: L9302:
3544: jmp L99CA
3545: L9305:
3546: lda #$20
3547: sta DRVST
3548: ldy #$05
3549: sty JOBN
3550: L930D:
3551: jsr L93D1
3552: bmi L932C
3553: L9312:
3554: dec JOBN
3555: bpl L930D
3556: ldy NXTJOB
3557: jsr L93D3
3558: lda NXTRK
3559: sta STEPS
3560: asl STEPS
3561: lda #$60
3562: sta DRVST
3563: lda (HDRPNT),y
3564: sta DRVTRK
3565: jmp L99CA
3566: L932C:
3567: and #$01
3568: cmp CDRIVE
3569: bne L9312
3570: lda DRVTRK
3571: beq L9368
3572: lda DRVTRK
3573: cmp #$24
3574: php
3575: lda (HDRPNT),y
3576: cmp #$24
3577: ror a
3578: plp
3579: and #$80
3580: bcc L9350
3581: bmi L9358
3582: lda DRVTRK
3583: sbc #$23
3584: sta DRVTRK
3585: jmp L9358
3586: L9350:
3587: bpl L9358
3588: lda DRVTRK
3589: adc #$23
3590: sta DRVTRK
3591: L9358:
3592: sec
3593: lda (HDRPNT),y
3594: sbc DRVTRK
3595: beq L9368
3596: sta NXTRK
3597: lda JOBN
3598: sta NXTJOB
3599: jmp L9312
3600: L9368:
3601: ldx #$04
3602: lda (HDRPNT),y
3603: sta TRACC
3604: cmp #$24
3605: tay
3606: jsr L93F3
3607: tya
3608: bcc L9379
3609: sbc #$23
3610: L9379:
3611: tax
3612: .if CompileDrive >= DRIVE_1571_05
3613: lda LC04C - 1,x
3614: .else
3615: lda L9408,x
3616: .endif
3617: sta SECTR
3618: lda VDC_PB2
3619: and # ~ VDC_PB2_BITRATE
3620: ora SECTR
3621: sta VDC_PB2
3622: lda L9409 + 34,x
3623: sta SECTR
3624: lda JOB
3625: cmp #$40
3626: beq L93B0
3627: cmp #$60
3628: beq L93A2
3629: cmp #$70
3630: beq L939F
3631: jmp L944F
3632: L939F:
3633: jmp L9B29
3634: L93A2:
3635: lda JOBN
3636: clc
3637: adc #$03
3638: sta BUFPNT + 1
3639: lda #$00
3640: sta BUFPNT
3641: jmp (BUFPNT)
3642: L93B0:
3643: lda #$60
3644: sta DRVST
3645: lda VDC_PB2
3646: and # ~ VDC_PB2_STEPPER
3647: sta VDC_PB2
3648: lda #$A4
3649: sta STEPS
3650: lda L01B1
3651: bmi L93C8
3652: lda #$01
3653: .byte ASM_BIT3
3654: L93C8:
3655: lda #$24
3656: sta DRVTRK
3657: lda #$01
3658: jmp L99B5
3659: L93D1:
3660: ldy JOBN
3661: L93D3:
3662: lda JOBS0,y
3663: pha
3664: bpl L93ED
3665: and #$78
3666: sta JOB
3667: tya
3668: asl a
3669: adc #$06
3670: sta HDRPNT
3671: lda #$00
3672: sta HDRPNT + 1
3673: tya
3674: clc
3675: adc #$03
3676: sta BUFPNT + 1
3677: L93ED:
3678: ldy #$00
3679: sty BUFPNT
3680: pla
3681: rts
3682: L93F3:
3683: bcs L93F8
3684: lda #$00
3685: .byte ASM_BIT3
3686: L93F8:
3687: lda #$84
3688: sta L01B1
3689: lda VBC_PAUNBUF1
3690: and # ~ VBC_PA1_04
3691: ora L01B1
3692: sta VBC_PAUNBUF1
3693: L9408:
3694: rts
3695: L9409:
3696: .byte $60,$60,$60,$60,$60,$60,$60,$60
3697: .byte $60,$60,$60,$60,$60,$60,$60,$60
3698: .byte $60,$40,$40,$40,$40,$40,$40,$40
3699: .byte $20,$20,$20,$20,$20,$20,$00,$00
3700: .byte $00,$00,$00
3701: L942C:
3702: .byte $15,$15,$15,$15,$15,$15,$15,$15
3703: .byte $15,$15,$15,$15,$15,$15,$15,$15
3704: .byte $15,$13,$13,$13,$13,$13,$13,$13
3705: .byte $12,$12,$12,$12,$12,$12,$11,$11
3706: .byte $11,$11,$11
3707: L944F:
3708: lda #$5A
3709: sta TMP
3710: L9453:
3711: jsr L9754
3712: L9456:
3713: bit VBC_PAUNBUF1
3714: bmi L9456
3715: lda VDC_PA2
3716: cmp #$52
3717: bne L94A0
3718: sta STAB,y
3719: iny
3720: L9466:
3721: bit VBC_PAUNBUF1
3722: bmi L9466
3723: lda VDC_PA2
3724: sta STAB,y
3725: iny
3726: cpy #$08
3727: bne L9466
3728: jsr L952F
3729: ldy #$04
3730: lda #$00
3731: L947D:
3732: eor HEADER,y
3733: dey
3734: bpl L947D
3735: cmp #$00
3736: bne L94B7
3737: lda HEADER + 2
3738: sta DRVTRK
3739: lda JOB
3740: cmp #$30
3741: beq L94A9
3742: lda DiskID0
3743: cmp HEADER
3744: bne L94B4
3745: lda DiskID0 + 1
3746: cmp HEADER + 1
3747: bne L94B4
3748: jmp L94BC
3749: L94A0:
3750: dec TMP
3751: bne L9453
3752: lda #$02
3753: jsr L99B5
3754: L94A9:
3755: lda HEADER
3756: sta DiskID0
3757: lda HEADER + 1
3758: sta DiskID0 + 1
3759: L94B1:
3760: lda #$01
3761: .byte ASM_BIT3
3762: L94B4:
3763: lda #$0B
3764: .byte ASM_BIT3
3765: L94B7:
3766: lda #$09
3767: jmp L99B5
3768: L94BC:
3769: lda #$7F
3770: sta CSECT
3771: lda HEADER + 3
3772: clc
3773: adc #$02
3774: cmp SECTR
3775: bcc L94CB
3776: sbc SECTR
3777: L94CB:
3778: sta NEXTS
3779: ldx #$05
3780: stx JOBN
3781: ldx #$FF
3782: L94D3:
3783: jsr L93D1
3784: bpl L951B
3785: and #$01
3786: cmp CDRIVE
3787: bne L951B
3788: ldy #$00
3789: lda (HDRPNT),y
3790: cmp TRACC
3791: bne L951B
3792: lda JOB
3793: cmp #$60
3794: beq L94F8
3795: ldy #$01
3796: sec
3797: lda (HDRPNT),y
3798: sbc NEXTS
3799: bpl L94F8
3800: clc
3801: adc SECTR
3802: L94F8:
3803: cmp CSECT
3804: bcs L951B
3805: pha
3806: lda JOB
3807: beq L9516
3808: pla
3809: .if CompileDrive >= DRIVE_1571_05
3810: cmp #$04
3811: .else
3812: cmp #$09
3813: .endif
3814: bcc L951B
3815: .if CompileDrive >= DRIVE_1571_05
3816: cmp #$08
3817: .else
3818: cmp #$0C
3819: .endif
3820: bcs L951B
3821: L950A:
3822: sta CSECT
3823: lda JOBN
3824: tax
3825: clc
3826: adc #$03
3827: sta BUFPNT + 1
3828: bne L951B
3829: L9516:
3830: pla
3831: cmp #$06
3832: bcc L950A
3833: L951B:
3834: dec JOBN
3835: bpl L94D3
3836: txa
3837: bpl L9525
3838: jmp L99CA
3839: L9525:
3840: stx JOBN
3841: jsr L93D1
3842: lda JOB
3843: jmp L9606
3844: L952F:
3845: lda BUFPNT
3846: pha
3847: lda BUFPNT + 1
3848: pha
3849: lda #$24
3850: sta BUFPNT
3851: lda #$00
3852: sta BUFPNT + 1
3853: lda #$00
3854: sta GCRPNT
3855: jsr L98D9
3856: lda BTAB + 3
3857: sta HEADER + 2
3858: lda BTAB + 2
3859: sta HEADER + 3
3860: lda BTAB + 1
3861: sta HEADER + 4
3862: jsr L98D9
3863: lda BTAB
3864: sta HEADER + 1
3865: lda BTAB + 1
3866: sta HEADER
3867: pla
3868: sta BUFPNT + 1
3869: pla
3870: sta BUFPNT
3871: rts
3872: empty9562:
3873:
3874: FillUntil $9600
3875:
3876: L9600:
3877: jsr L970F
3878: jmp L9754
3879: L9606:
3880: cmp #$00
3881: beq L960D
3882: jmp L976E
3883: L960D:
3884: jsr L9600
3885: L9610:
3886: bit VBC_PAUNBUF1
3887: bmi L9610
3888: lda VDC_PA2
3889: tax
3890: lda LA00D,x
3891: sta BTAB
3892: txa
3893: and #$07
3894: sta BTAB + 1
3895: L9623:
3896: bit VBC_PAUNBUF1
3897: bmi L9623
3898: lda VDC_PA2
3899: sta BTAB + 2
3900: and #$C0
3901: ora BTAB + 1
3902: tax
3903: lda L9F0D,x
3904: ora BTAB
3905: pha
3906: jmp L9667
3907: L963B:
3908: bit VBC_PAUNBUF1
3909: bmi L963B
3910: lda VDC_PA2
3911: tax
3912: lda LA00D,x
3913: sta BTAB
3914: txa
3915: and #$07
3916: sta BTAB + 1
3917: L964E:
3918: bit VBC_PAUNBUF1
3919: bmi L964E
3920: lda VDC_PA2
3921: sta BTAB + 2
3922: and #$C0
3923: ora BTAB + 1
3924: tax
3925: lda L9F0D,x
3926: ora BTAB
3927: sta (BUFPNT),y
3928: iny
3929: beq L96D7
3930: L9667:
3931: lda BTAB + 2
3932: tax
3933: lda LA10D,x
3934: sta BTAB
3935: txa
3936: and #$01
3937: sta BTAB + 2
3938: L9674:
3939: bit VBC_PAUNBUF1
3940: bmi L9674
3941: lda VDC_PA2
3942: sta BTAB + 3
3943: and #$F0
3944: ora BTAB + 2
3945: tax
3946: lda L9F0D + 2,x
3947: ora BTAB
3948: sta (BUFPNT),y
3949: iny
3950: lda BTAB + 3
3951: and #$0F
3952: sta BTAB + 3
3953: L9691:
3954: bit VBC_PAUNBUF1
3955: bmi L9691
3956: lda VDC_PA2
3957: sta CHKSUM
3958: and #$80
3959: ora BTAB + 3
3960: tax
3961: lda L9F0D + 16,x
3962: sta BTAB
3963: lda CHKSUM
3964: tax
3965: lda LA20D,x
3966: ora BTAB
3967: sta (BUFPNT),y
3968: iny
3969: txa
3970: and #$03
3971: sta CHKSUM
3972: L96B5:
3973: bit VBC_PAUNBUF1
3974: bmi L96B5
3975: lda VDC_PA2
3976: sta BTAB + 1
3977: and #$E0
3978: ora CHKSUM
3979: tax
3980: lda L9F0D + 29,x
3981: sta BTAB
3982: lda BTAB + 1
3983: tax
3984: lda LA30D,x
3985: ora BTAB
3986: sta (BUFPNT),y
3987: iny
3988: jmp L963B
3989: L96D7:
3990: lda BTAB + 2
3991: tax
3992: lda LA10D,x
3993: sta BTAB
3994: txa
3995: and #$01
3996: sta BTAB + 2
3997: L96E4:
3998: bit VBC_PAUNBUF1
3999: bmi L96E4
4000: lda VDC_PA2
4001: and #$F0
4002: ora BTAB + 2
4003: tax
4004: lda L9F0D + 2,x
4005: ora BTAB
4006: sta BTAB + 1
4007: pla
4008: cmp DBID
4009: bne L9707
4010: jsr LF5E9
4011: cmp BTAB + 1
4012: beq L970A
4013: lda #$05
4014: .byte ASM_BIT3
4015: L9707:
4016: lda #$04
4017: .byte ASM_BIT3
4018: L970A:
4019: lda #$01
4020: jmp L99B5
4021: L970F:
4022: lda DiskID0
4023: sta HEADER
4024: lda DiskID0 + 1
4025: sta HEADER + 1
4026: ldy #$00
4027: lda (HDRPNT),y
4028: sta HEADER + 2
4029: iny
4030: lda (HDRPNT),y
4031: sta HEADER + 3
4032: lda #$00
4033: eor HEADER
4034: eor HEADER + 1
4035: eor HEADER + 2
4036: eor HEADER + 3
4037: sta HEADER + 4
4038: jsr LF934
4039: lda #$5A
4040: sta TMP
4041: L9735:
4042: jsr L9754
4043: L9738:
4044: lda STAB,y
4045: L973B:
4046: bit VBC_PAUNBUF1
4047: bmi L973B
4048: cmp VDC_PA2
4049: bne L974B
4050: iny
4051: cpy #$08
4052: bne L9738
4053: rts
4054: L974B:
4055: dec TMP
4056: bne L9735
4057: lda #$02
4058: jmp L99B5
4059: L9754:
4060: ldx #$0F
4061: ldy #$00
4062: L9758:
4063: bit VDC_PB2
4064: bpl L9768
4065: dey
4066: bne L9758
4067: dex
4068: bne L9758
4069: lda #$03
4070: jmp L99B5
4071: L9768:
4072: lda VDC_PA2
4073: ldy #$00
4074: rts
4075: L976E:
4076: cmp #$10
4077: beq L9775
4078: jmp L9898
4079: L9775:
4080: jsr LF5E9
4081: sta CHKSUM
4082: lda VDC_PB2
4083: and #VDC_PB2_WRITEPROTECT
4084: bne L9786
4085: lda #$08
4086: jmp L99B5
4087: L9786:
4088: jsr LF78F
4089: jsr L970F
4090: ldy #$09
4091: L978E:
4092: bit VBC_PAUNBUF1
4093: bmi L978E
4094: bit VDC_PB2
4095: dey
4096: bne L978E
4097: lda #$FF
4098: sta VDC_DDRA2
4099: lda VDC_PCR2
4100: and #$1F
4101: ora #$C0
4102: sta VDC_PCR2
4103: lda #$FF
4104: ldy #$05
4105: sta VDC_PA2
4106: L97AF:
4107: bit VBC_PAUNBUF1
4108: bmi L97AF
4109: bit VDC_PB2
4110: dey
4111: bne L97AF
4112: ldy #$BB
4113: L97BC:
4114: lda NODRV + 1,y
4115: L97BF:
4116: bit VBC_PAUNBUF1
4117: bmi L97BF
4118: sta VDC_PA2
4119: iny
4120: bne L97BC
4121: L97CA:
4122: lda (BUFPNT),y
4123: L97CC:
4124: bit VBC_PAUNBUF1
4125: bmi L97CC
4126: sta VDC_PA2
4127: iny
4128: bne L97CA
4129: L97D7:
4130: bit VBC_PAUNBUF1
4131: bmi L97D7
4132: lda VDC_PCR2
4133: ora #$E0
4134: sta VDC_PCR2
4135: lda #$00
4136: sta VDC_DDRA2
4137: jsr L97F9
4138: ldy JOBN
4139: .if CompileDrive >= DRIVE_1571_05
4140: jmp LAAAD
4141: .else
4142: lda JOBS0,y
4143: .endif
4144: eor #$30
4145: sta JOBS0,y
4146: jmp L944F
4147: L97F9:
4148: lda #$00
4149: sta SAVPNT
4150: sta BUFPNT
4151: sta NXTPNT
4152: lda BUFPNT + 1
4153: sta NXTBF
4154: lda #$01
4155: sta BUFPNT + 1
4156: sta SAVPNT + 1
4157: lda #$BB
4158: sta GCRPNT
4159: sta BYTCNT
4160: jsr L98D9
4161: lda BTAB
4162: sta BID
4163: ldy BYTCNT
4164: lda BTAB + 1
4165: sta (SAVPNT),y
4166: iny
4167: lda BTAB + 2
4168: sta (SAVPNT),y
4169: iny
4170: lda BTAB + 3
4171: sta (SAVPNT),y
4172: iny
4173: sty BYTCNT
4174: L982B:
4175: jsr L98D9
4176: ldy BYTCNT
4177: lda BTAB
4178: sta (SAVPNT),y
4179: iny
4180: lda BTAB + 1
4181: sta (SAVPNT),y
4182: iny
4183: beq L984A
4184: lda BTAB + 2
4185: sta (SAVPNT),y
4186: iny
4187: lda BTAB + 3
4188: sta (SAVPNT),y
4189: iny
4190: sty BYTCNT
4191: bne L982B
4192: L984A:
4193: lda BTAB + 2
4194: sta (BUFPNT),y
4195: iny
4196: lda BTAB + 3
4197: sta (BUFPNT),y
4198: iny
4199: sty BYTCNT
4200: L9856:
4201: jsr L98D9
4202: ldy BYTCNT
4203: lda BTAB
4204: sta (BUFPNT),y
4205: iny
4206: lda BTAB + 1
4207: sta (BUFPNT),y
4208: iny
4209: lda BTAB + 2
4210: sta (BUFPNT),y
4211: iny
4212: lda BTAB + 3
4213: sta (BUFPNT),y
4214: iny
4215: sty BYTCNT
4216: cpy #$BB
4217: bcc L9856
4218: lda #$45
4219: sta SAVPNT
4220: lda BUFPNT + 1
4221: sta SAVPNT + 1
4222: ldy #$BA
4223: L987F:
4224: lda (BUFPNT),y
4225: sta (SAVPNT),y
4226: dey
4227: bne L987F
4228: lda (BUFPNT),y
4229: sta (SAVPNT),y
4230: ldx #$BB
4231: L988C:
4232: lda NODRV + 1,x
4233: sta (BUFPNT),y
4234: iny
4235: inx
4236: bne L988C
4237: stx GCRFLG
4238: rts
4239: L9898:
4240: cmp #$20
4241: beq L989E
4242: bne L98CE
4243: L989E:
4244: jsr LF5E9
4245: sta CHKSUM
4246: jsr LF78F
4247: jsr L9600
4248: ldy #$BB
4249: L98AB:
4250: lda NODRV + 1,y
4251: L98AE:
4252: bit VBC_PAUNBUF1
4253: bmi L98AE
4254: eor VDC_PA2
4255: bne L98D4
4256: iny
4257: bne L98AB
4258: L98BB:
4259: lda (BUFPNT),y
4260: L98BD:
4261: bit VBC_PAUNBUF1
4262: bmi L98BD
4263: eor VDC_PA2
4264: bne L98D4
4265: iny
4266: cpy #$FD
4267: bne L98BB
4268: beq L98D1
4269: L98CE:
4270: jsr L970F
4271: L98D1:
4272: lda #$01
4273: .byte ASM_BIT3
4274: L98D4:
4275: lda #$07
4276: jmp L99B5
4277: L98D9:
4278: ldy GCRPNT
4279: lda (BUFPNT),y
4280: sta GTAB
4281: and #$07
4282: sta GTAB + 1
4283: iny
4284: bne L98EC
4285: lda NXTBF
4286: sta BUFPNT + 1
4287: ldy NXTPNT
4288: L98EC:
4289: lda (BUFPNT),y
4290: sta GTAB + 2
4291: and #$C0
4292: ora GTAB + 1
4293: sta GTAB + 1
4294: lda GTAB + 2
4295: and #$01
4296: sta GTAB + 3
4297: iny
4298: lda (BUFPNT),y
4299: tax
4300: and #$F0
4301: ora GTAB + 3
4302: sta GTAB + 3
4303: txa
4304: and #$0F
4305: sta GTAB + 4
4306: iny
4307: lda (BUFPNT),y
4308: sta GTAB + 5
4309: and #$80
4310: ora GTAB + 4
4311: sta GTAB + 4
4312: lda GTAB + 5
4313: and #$03
4314: sta GTAB + 6
4315: iny
4316: bne L9927
4317: lda NXTBF
4318: sta BUFPNT + 1
4319: ldy NXTPNT
4320: sty BUFPNT
4321: L9927:
4322: lda (BUFPNT),y
4323: sta GTAB + 7
4324: and #$E0
4325: ora GTAB + 6
4326: sta GTAB + 6
4327: iny
4328: sty GCRPNT
4329: ldx GTAB
4330: lda LA00D,x
4331: ldx GTAB + 1
4332: ora L9F0D,x
4333: sta BTAB
4334: ldx GTAB + 2
4335: lda LA10D,x
4336: ldx GTAB + 3
4337: ora L9F0D + 2,x
4338: sta BTAB + 1
4339: ldx GTAB + 4
4340: lda L9F0D + 16,x
4341: ldx GTAB + 5
4342: ora LA20D,x
4343: sta BTAB + 2
4344: ldx GTAB + 6
4345: lda L9F0D + 29,x
4346: ldx GTAB + 7
4347: ora LA30D,x
4348: sta BTAB + 3
4349: rts
4350: L9965:
4351: lda #$00
4352: sta GCRPNT
4353: sta SAVPNT
4354: sta BYTCNT
4355: lda #$01
4356: sta NXTBF
4357: lda #$BA
4358: sta NXTPNT
4359: lda BUFPNT + 1
4360: sta SAVPNT + 1
4361: jsr L98D9
4362: lda BTAB
4363: sta BID
4364: ldy BYTCNT
4365: lda BTAB + 1
4366: sta (SAVPNT),y
4367: iny
4368: lda BTAB + 2
4369: sta (SAVPNT),y
4370: iny
4371: lda BTAB + 3
4372: sta (SAVPNT),y
4373: iny
4374: L9991:
4375: sty BYTCNT
4376: jsr L98D9
4377: ldy BYTCNT
4378: lda BTAB
4379: sta (SAVPNT),y
4380: iny
4381: beq L99B0
4382: lda BTAB + 1
4383: sta (SAVPNT),y
4384: iny
4385: lda BTAB + 2
4386: sta (SAVPNT),y
4387: iny
4388: lda BTAB + 3
4389: sta (SAVPNT),y
4390: iny
4391: bne L9991
4392: L99B0:
4393: lda SAVPNT + 1
4394: sta BUFPNT + 1
4395: rts
4396: L99B5:
4397: ldy JOBN
4398: sta JOBS0,y
4399: lda GCRFLG
4400: beq L99C1
4401: jsr L97F9
4402: L99C1:
4403: jsr LF98F
4404: ldx SAVSP
4405: txs
4406: jmp L92C8
4407: L99CA:
4408: lda VDC_T1HL2
4409: sta VDC_T1HC2
4410: lda VDC_PB2
4411: and #VDC_PB2_WRITEPROTECT
4412: cmp LWPT
4413: sta LWPT
4414: bne L99E2
4415: lda CNTMOTOR1570
4416: bne L99F0
4417: beq L99FE
4418: L99E2:
4419: lda #$FF
4420: sta CNTMOTOR1570
4421: jsr L8764
4422:
4423: SET_WPSW_DIRTY_NO_CR
4424:
4425: bne L99FE
4426: L99F0:
4427: dec CNTMOTOR1570
4428: bne L99FE
4429: lda DRVST
4430: cmp #$00
4431: bne L99FE
4432: jsr L8770
4433: L99FE:
4434: lda PHASE
4435: beq L9A18
4436: cmp #$02
4437: bne L9A0E
4438: lda #$00
4439: sta PHASE
4440: beq L9A18
4441: L9A0E:
4442: sta STEPS
4443: lda #$02
4444: sta PHASE
4445: jmp L9A56
4446: L9A18:
4447: ldx CDRIVE
4448: bmi L9A23
4449: lda DRVST
4450: tay
4451: cmp #$20
4452: bne L9A26
4453: L9A23:
4454: .if CompileDrive >= DRIVE_1571_05
4455: jmp L9AC6
4456: .else
4457: jmp L9AC9
4458: .endif
4459: L9A26:
4460: dec ACLTIM
4461: bne L9A46
4462: tya
4463: bpl L9A31
4464: and #$7F
4465: sta DRVST
4466: L9A31:
4467: and #$10
4468: beq L9A46
4469: dec GCRERR
4470: bne L9A46
4471: jsr L8770
4472: lda #$FF
4473: sta CDRIVE
4474: lda #$00
4475: sta DRVST
4476: beq L9A23
4477: L9A46:
4478: tya
4479: and #$40
4480: bne L9A4E
4481: .if CompileDrive >= DRIVE_1571_05
4482: jmp L9AC6
4483: .else
4484: jmp L9AC9
4485: .endif
4486: L9A4E:
4487: lda NXTST
4488: bne L9AA2
4489: lda STEPS
4490: beq L9A99
4491: L9A56:
4492: lda STEPS
4493: bpl L9AB3
4494: tya
4495: pha
4496: ldy #$63
4497: L9A5E:
4498: lda VBC_PAUNBUF1
4499: ror a
4500: php
4501: lda VBC_PAUNBUF1
4502: ror a
4503: ror a
4504: plp
4505: and #$80
4506: bcc L9A71
4507: bpl L9A8C
4508: bmi L9A73
4509: L9A71:
4510: bmi L9A8C
4511: L9A73:
4512: dey
4513: bne L9A5E
4514: bcs L9A8C
4515: lda ADRSED
4516: bne L9A8C
4517: lda VDC_PB2
4518: and #VDC_PB2_STEPPER
4519: bne L9A8C
4520: pla
4521: tay
4522: lda #$00
4523: sta STEPS
4524: .if CompileDrive >= DRIVE_1571_05
4525: jmp L9AC6
4526: .else
4527: jmp L9AC9
4528: .endif
4529: L9A8C:
4530: pla
4531: tay
4532: inc STEPS
4533: lda VDC_PB2
4534: sec
4535: sbc #$01
4536: jmp L9ABB
4537: L9A99:
4538: lda #$02
4539: sta ACLTIM
4540: sta NXTST
4541: .if CompileDrive >= DRIVE_1571_05
4542: jmp L9AC6
4543: .else
4544: jmp L9AC9
4545: .endif
4546: L9AA2:
4547: dec ACLTIM
4548: .if CompileDrive >= DRIVE_1571_05
4549: bne L9AC6
4550: .else
4551: bne L9AC9
4552: .endif
4553: lda DRVST
4554: and #$BF
4555: sta DRVST
4556: lda #$00
4557: sta NXTST
4558: .if CompileDrive >= DRIVE_1571_05
4559: jmp L9AC6
4560: .else
4561: jmp L9AC9
4562: .endif
4563: L9AB3:
4564: dec STEPS
4565: lda VDC_PB2
4566: clc
4567: adc #$01
4568: L9ABB:
4569: and #$03
4570: sta TMP
4571: lda VDC_PB2
4572: .if CompileDrive >= DRIVE_1571_05
4573: jmp LC038
4574: nop
4575: L9AC6:
4576: jmp LC03F
4577: .else
4578: and # ~ VDC_PB2_STEPPER
4579: ora TMP
4580: sta VDC_PB2
4581: .endif
4582: L9AC9:
4583: rts
4584: L9ACA:
4585: .byte $21,$22,$23,$24,$25,$26,$27,$28,$29
4586: L9AD3:
4587: .byte $02,$02,$04,$06,$08,$08,$0B,$13,$16
4588: L9ADC:
4589: ldy #$00
4590: ldx #$1C
4591: jsr L9D63
4592: jsr L9B73
4593: jsr LFE00
4594: ldy #$FF
4595: L9AEB:
4596: ldx #$FF
4597: L9AED:
4598: bit VDC_PB2
4599: bpl L9AFD
4600: dex
4601: bne L9AED
4602: dey
4603: bne L9AEB
4604: L9AF8:
4605: lda #$02
4606: jmp L9D59
4607: L9AFD:
4608: ldy #$00
4609: ldx #$00
4610: L9B01:
4611: bit VDC_PB2
4612: bpl L9B01
4613: L9B06:
4614: lda VDC_PB2
4615: iny
4616: bne L9B0D
4617: inx
4618: L9B0D:
4619: and #VDC_PB2_SYNC
4620: bne L9B06
4621: lda #$00
4622: sta HINIB
4623: txa
4624: ldx #$08
4625: L9B18:
4626: cmp L9ACA,x
4627: beq L9B22
4628: dex
4629: bpl L9B18
4630: bmi L9AF8
4631: L9B22:
4632: lda L9AD3,x
4633: sta BUFFER3 + 38
4634: rts
4635: L9B29:
4636: lda FTNUM
4637: bpl L9B58
4638: lda #$60
4639: sta DRVST
4640: lda L01B2
4641: bne L9B39
4642: lda #$01
4643: .byte ASM_BIT3
4644: L9B39:
4645: lda #$24
4646: sta DRVTRK
4647: sta FTNUM
4648: cmp #$24
4649: jsr L93F3
4650: lda #$A4
4651: sta STEPS
4652: lda VDC_PB2
4653: and # ~ VDC_PB2_STEPPER
4654: sta VDC_PB2
4655: lda #$0A
4656: sta BUFFER3 + 32
4657: jmp L99CA
4658: L9B58:
4659: ldy #$00
4660: lda (HDRPNT),y
4661: cmp FTNUM
4662: beq L9B67
4663: lda FTNUM
4664: sta (HDRPNT),y
4665: jmp L99CA
4666: L9B67:
4667: lda VDC_PB2
4668: and #VDC_PB2_WRITEPROTECT
4669: bne L9B89
4670: lda #$08
4671: jmp L9D51
4672: L9B73:
4673: ldx #$14
4674: lda #$FF
4675: L9B77:
4676: bit VBC_PAUNBUF1
4677: bmi L9B77
4678: sta VDC_PA2
4679: bit VDC_PB2
4680: dey
4681: bne L9B77
4682: dex
4683: bne L9B77
4684: rts
4685: L9B89:
4686: lda HINIB
4687: bpl L9B90
4688: jsr L9ADC
4689: L9B90:
4690: lda BUFFER3 + 38
4691: clc
4692: lda #$03
4693: sta HDRPNT + 1
4694: lda #$00
4695: sta HDRPNT
4696: sta BUFFER3 + 40
4697: ldy #$00
4698: L9BA1:
4699: lda HBID
4700: sta (HDRPNT),y
4701: iny
4702: lda #$00
4703: sta (HDRPNT),y
4704: iny
4705: lda BUFFER3 + 40
4706: sta (HDRPNT),y
4707: iny
4708: lda FTNUM
4709: sta (HDRPNT),y
4710: iny
4711: lda DiskID0 + 1
4712: sta (HDRPNT),y
4713: iny
4714: lda DiskID0
4715: sta (HDRPNT),y
4716: iny
4717: lda #$0F
4718: sta (HDRPNT),y
4719: iny
4720: sta (HDRPNT),y
4721: iny
4722: tya
4723: pha
4724: ldx #$07
4725: lda #$00
4726: sta CHKSUM
4727: L9BD0:
4728: dey
4729: lda (HDRPNT),y
4730: eor CHKSUM
4731: sta CHKSUM
4732: dex
4733: bne L9BD0
4734: sta (HDRPNT),y
4735: pla
4736: tay
4737: inc BUFFER3 + 40
4738: lda BUFFER3 + 40
4739: cmp SECTR
4740: bcc L9BA1
4741: lda #$03
4742: sta BUFPNT + 1
4743: jsr LFE30
4744: ldy #$BA
4745: L9BF1:
4746: lda (HDRPNT),y
4747: ldx #$45
4748: stx HDRPNT
4749: sta (HDRPNT),y
4750: ldx #$00
4751: stx HDRPNT
4752: dey
4753: cpy #$FF
4754: bne L9BF1
4755: ldy #$44
4756: L9C04:
4757: lda L01BB,y
4758: sta (HDRPNT),y
4759: dey
4760: bpl L9C04
4761: clc
4762: lda #$03
4763: adc #$02
4764: sta BUFPNT + 1
4765: lda #$00
4766: tay
4767: L9C16:
4768: sta (BUFPNT),y
4769: iny
4770: bne L9C16
4771: jsr LF5E9
4772: sta CHKSUM
4773: jsr LF78F
4774: lda #$00
4775: sta ACTJOB
4776: ldx #$06
4777: jsr L9D63
4778: L9C2C:
4779: ldy #$05
4780: L9C2E:
4781: bit VBC_PAUNBUF1
4782: bmi L9C2E
4783: lda #$FF
4784: sta VDC_PA2
4785: bit VDC_PB2
4786: dey
4787: bne L9C2E
4788: ldx #$0A
4789: ldy ACTJOB
4790: L9C42:
4791: bit VBC_PAUNBUF1
4792: bmi L9C42
4793: lda (HDRPNT),y
4794: sta VDC_PA2
4795: bit VDC_PB2
4796: iny
4797: dex
4798: bne L9C42
4799: ldy #$09
4800: L9C55:
4801: bit VBC_PAUNBUF1
4802: bmi L9C55
4803: lda #$55
4804: sta VDC_PA2
4805: bit VDC_PB2
4806: dey
4807: bne L9C55
4808: lda #$FF
4809: ldy #$05
4810: L9C69:
4811: bit VBC_PAUNBUF1
4812: bmi L9C69
4813: sta VDC_PA2
4814: bit VDC_PB2
4815: dey
4816: bne L9C69
4817: ldy #$BB
4818: L9C79:
4819: bit VBC_PAUNBUF1
4820: bmi L9C79
4821: lda NODRV + 1,y
4822: sta VDC_PA2
4823: bit VDC_PB2
4824: iny
4825: bne L9C79
4826: L9C8A:
4827: bit VBC_PAUNBUF1
4828: bmi L9C8A
4829: lda (BUFPNT),y
4830: sta VDC_PA2
4831: bit VDC_PB2
4832: iny
4833: bne L9C8A
4834: lda #$55
4835: ldy BUFFER3 + 38
4836: L9C9F:
4837: bit VBC_PAUNBUF1
4838: bmi L9C9F
4839: sta VDC_PA2
4840: bit VDC_PB2
4841: dey
4842: bne L9C9F
4843: lda ACTJOB
4844: clc
4845: adc #$0A
4846: sta ACTJOB
4847: dec BUFFER3 + 40
4848: beq L9CBC
4849: jmp L9C2C
4850: L9CBC:
4851: bit VBC_PAUNBUF1
4852: bmi L9CBC
4853: bit VDC_PB2
4854: L9CC4:
4855: bit VBC_PAUNBUF1
4856: bmi L9CC4
4857: bit VDC_PB2
4858: jsr LFE00
4859: lda #$C8
4860: sta BUFFER3 + 35
4861: L9CD4:
4862: lda #$00
4863: sta ACTJOB
4864: lda SECTR
4865: sta BUFFER3 + 40
4866: L9CDD:
4867: jsr L9754
4868: ldx #$0A
4869: ldy ACTJOB
4870: L9CE4:
4871: lda (HDRPNT),y
4872: L9CE6:
4873: bit VBC_PAUNBUF1
4874: bmi L9CE6
4875: cmp VDC_PA2
4876: bne L9CFE
4877: iny
4878: dex
4879: bne L9CE4
4880: clc
4881: lda ACTJOB
4882: adc #$0A
4883: sta ACTJOB
4884: jmp L9D08
4885: L9CFE:
4886: dec BUFFER3 + 35
4887: bne L9CD4
4888: lda #$06
4889: jmp L9D51
4890: L9D08:
4891: jsr L9754
4892: ldy #$BB
4893: L9D0D:
4894: lda NODRV + 1,y
4895: L9D10:
4896: bit VBC_PAUNBUF1
4897: bmi L9D10
4898: cmp VDC_PA2
4899: bne L9CFE
4900: iny
4901: bne L9D0D
4902: L9D1D:
4903: lda (BUFPNT),y
4904: L9D1F:
4905: bit VBC_PAUNBUF1
4906: bmi L9D1F
4907: cmp VDC_PA2
4908: bne L9CFE
4909: iny
4910: bne L9D1D
4911: dec BUFFER3 + 40
4912: bne L9CDD
4913: inc FTNUM
4914: lda FTNUM
4915: bit L01B1
4916: bmi L9D3D
4917: cmp #$24
4918: .byte ASM_BIT3
4919: L9D3D:
4920: cmp #$47
4921: bcs L9D44
4922: jmp L99CA
4923: L9D44:
4924: lda #$FF
4925: sta FTNUM
4926: lda #$00
4927: sta GCRFLG
4928: lda #$01
4929: jmp L99B5
4930: L9D51:
4931: dec BUFFER3 + 32
4932: beq L9D59
4933: jmp L99CA
4934: L9D59:
4935: ldy #$FF
4936: sty FTNUM
4937: iny
4938: sty GCRFLG
4939: jmp L99B5
4940: L9D63:
4941: lda VDC_PCR2
4942: and #$1F
4943: ora #$C0
4944: sta VDC_PCR2
4945: lda #$FF
4946: sta VDC_DDRA2
4947: lda #$55
4948: ldy #$00
4949: L9D76:
4950: bit VBC_PAUNBUF1
4951: bmi L9D76
4952: bit VDC_PB2
4953: sta VDC_PA2
4954: dey
4955: bne L9D76
4956: dex
4957: bne L9D76
4958: rts
4959: L9D88:
4960: pha
4961: txa
4962: pha
4963: tya
4964: pha
4965: lda CIA_ICR
4966: and #CIA_ICR_B_SP
4967: beq L9DBA
4968: bit FLGMODE1570
4969: bmi L9DBA
4970: lda VBC_PAUNBUF1
4971: ora #VBC_PA1_20
4972: sta VBC_PAUNBUF1
4973: lda #$DE
4974: sta VIRQJOB1570
4975: lda #$9D
4976: sta VIRQJOB1570 + 1
4977: lda #$40
4978: sta VDC_T1HL2
4979: sta VDC_T1HC2
4980: lda #$00
4981: sta NXTST
4982: jmp L9DEA
4983: L9DBA:
4984: lda VBC_IFR1
4985: and #$02
4986: beq L9DC4
4987: jsr SetATNPending
4988: L9DC4:
4989: lda VDC_IFR2
4990: asl a
4991: bpl L9DCD
4992: jsr LF2B0
4993: L9DCD:
4994: tsx
4995: lda L0104,x
4996: and #$10
4997: beq L9DD8
4998: jsr LF2B0
4999: L9DD8:
5000: pla
5001: tay
5002: pla
5003: tax
5004: pla
5005: rti
5006: L9DDE:
5007: pha
5008: txa
5009: pha
5010: tya
5011: pha
5012: lda CIA_ICR
5013: and #CIA_ICR_B_SP
5014: beq L9DF2
5015: L9DEA:
5016: lda BITCNT
5017: ora #$40
5018: sta BITCNT
5019: bne L9E14
5020: L9DF2:
5021: lda VBC_IFR1
5022: and #$02
5023: beq L9E00
5024: bit VBC_PA1
5025: lda #$01
5026: sta ATNPND
5027: L9E00:
5028: tsx
5029: lda L0104,x
5030: and #$10
5031: beq L9E0B
5032: jsr L92BA
5033: L9E0B:
5034: lda VDC_IFR2
5035: asl a
5036: bpl L9E14
5037: jsr L92BA
5038: L9E14:
5039: pla
5040: tay
5041: pla
5042: tax
5043: pla
5044: rti
5045: empty9e1a:
5046:
5047: FillUntil $9F09
5048:
5049: .byte $08,$00,$01,$FF
5050:
5051: L9F0D:
5052: .byte $0C,$04,$05,$FF,$FF,$02,$03,$FF
5053: .byte $0F,$06,$07,$FF,$09,$0A,$0B,$FF
5054: .byte $0D,$0E,$80,$FF,$00,$00,$10,$40
5055: .byte $FF,$20,$C0,$60,$40,$A0,$50,$E0
5056: .byte $FF,$FF,$FF,$02,$20,$08,$30,$FF
5057: .byte $FF,$00,$F0,$FF,$60,$01,$70,$FF
5058: .byte $FF,$FF,$90,$03,$A0,$0C,$B0,$FF
5059: .byte $FF,$04,$D0,$FF,$E0,$05,$80,$FF
5060: .byte $90,$FF,$08,$0C,$FF,$0F,$09,$0D
5061: .byte $80,$02,$FF,$FF,$FF,$03,$FF,$FF
5062: .byte $00,$FF,$FF,$0F,$FF,$0F,$FF,$FF
5063: .byte $10,$06,$FF,$FF,$FF,$07,$00,$20
5064: .byte $A0,$FF,$FF,$06,$FF,$09,$FF,$FF
5065: .byte $C0,$0A,$FF,$FF,$FF,$0B,$FF,$FF
5066: .byte $40,$FF,$FF,$07,$FF,$0D,$FF,$FF
5067: .byte $50,$0E,$FF,$FF,$FF,$FF,$10,$30
5068: .byte $B0,$FF,$00,$04,$02,$06,$0A,$0E
5069: .byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5070: .byte $20,$FF,$08,$09,$80,$10,$C0,$50
5071: .byte $30,$30,$F0,$70,$90,$B0,$D0,$FF
5072: .byte $FF,$FF,$00,$0A,$FF,$FF,$FF,$FF
5073: .byte $F0
5074: L9FB6:
5075: brk
5076: nop
5077: L9FB8:
5078: lda JOBS0,x
5079: bmi L9FB8
5080: rts
5081:
5082: L9FBD:
5083: .byte $60,$FF,$01,$0B,$FF,$FF,$FF,$FF
5084: .byte $70,$FF,$FF,$FF,$FF,$FF,$C0,$F0
5085: .byte $D0,$FF,$01,$05,$03,$07,$0B,$FF
5086: .byte $90,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5087: .byte $A0,$FF,$0C,$0D,$FF,$FF,$FF,$FF
5088: .byte $B0,$FF,$FF,$FF,$FF,$FF,$40,$60
5089: .byte $E0,$FF,$04,$0E,$FF,$FF,$FF,$FF
5090: .byte $D0,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5091: .byte $E0,$FF,$05,$FF,$FF,$FF,$FF,$FF
5092: .byte $FF,$FF,$FF,$FF,$FF,$FF,$50,$70
5093: LA00D:
5094: .byte $0C,$04,$05,$FF,$FF,$02,$03,$FF
5095: .byte $0F,$06,$07,$FF,$09,$0A,$0B,$FF
5096: .byte $0D,$0E,$80,$FF,$00,$00,$10,$40
5097: .byte $FF,$20,$C0,$60,$40,$A0,$50,$E0
5098: .byte $FF,$FF,$FF,$02,$20,$08,$30,$30
5099: .byte $30,$00,$F0,$FF,$60,$01,$70,$FF
5100: .byte $FF,$FF,$90,$03,$A0,$0C,$B0,$FF
5101: .byte $FF,$04,$D0,$FF,$E0,$05,$80,$FF
5102: .byte $90,$FF,$08,$0C,$FF,$0F,$09,$0D
5103: .byte $80,$80,$80,$80,$80,$80,$80,$80
5104: .byte $00,$00,$00,$00,$00,$00,$00,$00
5105: .byte $10,$10,$10,$10,$10,$10,$10,$10
5106: .byte $A0,$FF,$FF,$06,$FF,$09,$FF,$FF
5107: .byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0
5108: .byte $40,$40,$40,$40,$40,$40,$40,$40
5109: .byte $50,$50,$50,$50,$50,$50,$50,$50
5110: .byte $B0,$FF,$00,$04,$02,$06,$0A,$0E
5111: .byte $80,$80,$80,$80,$80,$80,$80,$80
5112: .byte $20,$20,$20,$20,$20,$20,$20,$20
5113: .byte $30,$30,$30,$30,$30,$30,$30,$30
5114: .byte $FF,$FF,$00,$0A,$0A,$0A,$0A,$0A
5115: .byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0
5116: .byte $60,$60,$60,$60,$60,$60,$60,$60
5117: .byte $70,$70,$70,$70,$70,$70,$70,$70
5118: .byte $D0,$FF,$01,$05,$03,$07,$0B,$FF
5119: .byte $90,$90,$90,$90,$90,$90,$90,$90
5120: .byte $A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0
5121: .byte $B0,$B0,$B0,$B0,$B0,$B0,$B0,$B0
5122: .byte $E0,$FF,$04,$0E,$FF,$FF,$FF,$FF
5123: .byte $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0
5124: .byte $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0
5125: .byte $05,$05,$05,$05,$05,$05,$50,$70
5126:
5127: LA10D:
5128: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5129: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5130: .byte $FF,$FF,$80,$80,$00,$00,$10,$10
5131: .byte $FF,$FF,$C0,$C0,$40,$40,$50,$50
5132: .byte $FF,$FF,$FF,$FF,$20,$20,$30,$30
5133: .byte $FF,$FF,$F0,$F0,$60,$60,$70,$70
5134: .byte $FF,$FF,$90,$90,$A0,$A0,$B0,$B0
5135: .byte $FF,$FF,$D0,$D0,$E0,$E0,$FF,$FF
5136: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5137: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5138: .byte $FF,$FF,$80,$80,$00,$00,$10,$10
5139: .byte $FF,$FF,$C0,$C0,$40,$40,$50,$50
5140: .byte $FF,$FF,$FF,$FF,$20,$20,$30,$30
5141: .byte $FF,$FF,$F0,$F0,$60,$60,$70,$70
5142: .byte $FF,$FF,$90,$90,$A0,$A0,$B0,$B0
5143: .byte $FF,$FF,$D0,$D0,$E0,$E0,$FF,$FF
5144: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5145: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5146: .byte $FF,$FF,$80,$80,$00,$00,$10,$10
5147: .byte $FF,$FF,$C0,$C0,$40,$40,$50,$50
5148: .byte $FF,$FF,$FF,$FF,$20,$20,$30,$30
5149: .byte $FF,$FF,$F0,$F0,$60,$60,$70,$70
5150: .byte $FF,$FF,$90,$90,$A0,$A0,$B0,$B0
5151: .byte $FF,$FF,$D0,$D0,$E0,$E0,$FF,$FF
5152: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5153: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5154: .byte $FF,$FF,$80,$80,$00,$00,$10,$10
5155: .byte $FF,$FF,$C0,$C0,$40,$40,$50,$50
5156: .byte $FF,$FF,$FF,$FF,$20,$20,$30,$30
5157: .byte $FF,$FF,$F0,$F0,$60,$60,$70,$70
5158: .byte $FF,$FF,$90,$90,$A0,$A0,$B0,$B0
5159: .byte $FF,$FF,$D0,$D0,$E0,$E0,$FF,$FF
5160:
5161: LA20D:
5162: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5163: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5164: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5165: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5166: .byte $FF,$FF,$FF,$FF,$08,$08,$08,$08
5167: .byte $00,$00,$00,$00,$01,$01,$01,$01
5168: .byte $FF,$FF,$FF,$FF,$0C,$0C,$0C,$0C
5169: .byte $04,$04,$04,$04,$05,$05,$05,$05
5170: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5171: .byte $02,$02,$02,$02,$03,$03,$03,$03
5172: .byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F
5173: .byte $06,$06,$06,$06,$07,$07,$07,$07
5174: .byte $FF,$FF,$FF,$FF,$09,$09,$09,$09
5175: .byte $0A,$0A,$0A,$0A,$0B,$0B,$0B,$0B
5176: .byte $FF,$FF,$FF,$FF,$0D,$0D,$0D,$0D
5177: .byte $0E,$0E,$0E,$0E,$FF,$FF,$FF,$FF
5178: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5179: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5180: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5181: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5182: .byte $FF,$FF,$FF,$FF,$08,$08,$08,$08
5183: .byte $00,$00,$00,$00,$01,$01,$01,$01
5184: .byte $FF,$FF,$FF,$FF,$0C,$0C,$0C,$0C
5185: .byte $04,$04,$04,$04,$05,$05,$05,$05
5186: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5187: .byte $02,$02,$02,$02,$03,$03,$03,$03
5188: .byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F
5189: .byte $06,$06,$06,$06,$07,$07,$07,$07
5190: .byte $FF,$FF,$FF,$FF,$09,$09,$09,$09
5191: .byte $0A,$0A,$0A,$0A,$0B,$0B,$0B,$0B
5192: .byte $FF,$FF,$FF,$FF,$0D,$0D,$0D,$0D
5193: .byte $0E,$0E,$0E,$0E,$FF,$FF,$FF,$FF
5194:
5195: LA30D:
5196: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5197: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5198: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5199: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5200: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5201: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5202: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5203: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5204: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5205: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5206: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5207: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5208: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5209: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5210: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5211: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5212: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5213: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5214: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5215: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5216: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5217: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5218: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5219: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5220: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5221: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5222: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5223: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5224: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
5225: .byte $FF,$08,$00,$01,$FF,$0C,$04,$05
5226: .byte $FF,$FF,$02,$03,$FF,$0F,$06,$07
5227: .byte $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF
5228:
5229: LA40D:
5230: lda #MAXTRACK_DOUBLESIDED + 1
5231: sta MAXTRACK_ADJUSTED
5232: lda #$03
5233: jsr LD6D3
5234: ldx #$03
5235: lda #$00
5236: sta L01B2
5237: lda #$F0
5238: sta HINIB
5239: sta JOBS0,x
5240: jsr L9FB6
5241: cmp #$02
5242: bcs LA470
5243: ldy #$03
5244: LA42D:
5245: lda #$01
5246: sta TRACK3
5247: lda #$00
5248: sta SECTOR3
5249: lda #$80
5250: sta JOBS0,x
5251: jsr L9FB6
5252: cmp #$02
5253: bcc LA445
5254: dey
5255: bpl LA42D
5256: bcs LA470
5257: LA445:
5258: .if CompileDrive >= DRIVE_1571
5259: lda #$01
5260: .else
5261: rts
5262: nop
5263: .endif
5264: sta L01B2
5265: lda #$F0
5266: sta HINIB
5267: sta JOBS0,x
5268: jsr L9FB6
5269: cmp #$02
5270: bcs LA470
5271: ldy #$03
5272: LA459:
5273: lda #$24
5274: sta TRACK3
5275: lda #$00
5276: sta SECTOR3
5277: lda #$80
5278: sta JOBS0,x
5279: jsr L9FB6
5280: cmp #$02
5281: bcs LA46D
5282: rts
5283: LA46D:
5284: dey
5285: bpl LA459
5286: LA470:
5287: ldx #$00
5288: bit JOBRTN
5289: stx JOBRTN
5290: bpl LA47B
5291: rts
5292: LA47B:
5293: jmp LE60A
5294: LA47E:
5295: txa
5296: ldx #$05
5297: bne LA486
5298: LA483:
5299: txa
5300: ldx #$0D
5301: LA486:
5302: dex
5303: bne LA486
5304: tax
5305: rts
5306: LA48B:
5307: lda BMPNT
5308: sta TMP1570
5309: lda BMPNT + 1
5310: sta TMP1570 + 1
5311: rts
5312:
5313: LA496:
5314: lda TMP1570
5315: sta BMPNT
5316: lda TMP1570 + 1
5317: sta BMPNT + 1
5318: rts
5319:
5320:
5321: LA4A1:
5322: ldx DRVNUM
5323:
5324: lda a:NODRV,x
5325: beq LA4AD
5326: lda #ERRORCODE_74_DRIVE_NOT_READY
5327: .if CompileDrive >= DRIVE_1571_05
5328: jsr LE645
5329: .else
5330: jsr LE648
5331: .endif
5332: LA4AD:
5333: jsr LF119
5334: jsr LF0DF
5335: .if CompileDrive >= DRIVE_1571_05
5336: jmp LA4C2
5337: .else
5338: lda WBAM
5339: .endif
5340: beq LA4BF
5341: ora #$80
5342: sta WBAM
5343: bne LA4C2
5344: LA4BF:
5345: jsr LA58D
5346: LA4C2:
5347: jsr LA48B
5348: jsr LA534
5349: lda TRACK
5350: sec
5351: sbc #$24
5352: tay
5353: lda (BMPNT),y
5354: pha
5355: jsr LA496
5356: pla
5357: rts
5358: .if CompileDrive >= DRIVE_1571_05
5359: .byte "DAVID G. SIRACUSA"
5360: .elseif CompileDrive >= DRIVE_1571
5361: .else
5362: FillUntil $A4DD
5363: .byte "STEVE LAM",$0D
5364: .endif
5365:
5366: FillUntil $A4E7
5367:
5368: LA4E7:
5369: lda TRACK
5370: sec
5371: sbc #$24
5372: tay
5373: lda SECTOR
5374: lsr a
5375: lsr a
5376: lsr a
5377: clc
5378: adc LA5DB,y
5379: tay
5380: lda SECTOR
5381: and #$07
5382: tax
5383: lda L0146,y
5384: and LEFE9,x
5385: php
5386: lda L0146,y
5387: plp
5388: rts
5389: LA508:
5390: jsr LA48B
5391: jsr LA534
5392: lda TRACK
5393: sec
5394: sbc #$24
5395: tay
5396: clc
5397: lda (BMPNT),y
5398: adc #$01
5399: sta (BMPNT),y
5400: jmp LA496
5401: LA51E:
5402: jsr LA48B
5403: jsr LA534
5404: lda TRACK
5405: sec
5406: sbc #$24
5407: tay
5408: sec
5409: lda (BMPNT),y
5410: sbc #$01
5411: sta (BMPNT),y
5412: jmp LA496
5413: LA534:
5414: ldx #$0D
5415: lda BUF0,x
5416: and #$0F
5417: tax
5418: lda TableHighBytesOfBuffers,x
5419: sta BMPNT + 1
5420: lda #$DD
5421: sta BMPNT
5422: rts
5423: LA545:
5424: lda T0
5425: pha
5426: .if CompileDrive >= DRIVE_1571_05 .AND CompileDrive < DRIVE_1571CR
5427: jsr LAB8D
5428: .endif
5429: lda TRACK
5430: sec
5431: sbc #$24
5432: tay
5433: pha
5434: .if CompileDrive >= DRIVE_1571_05 .AND CompileDrive < DRIVE_1571CR
5435: .else
5436: jsr LA48B
5437: .endif
5438: jsr LA534
5439: lda (BMPNT),y
5440: pha
5441: lda #$00
5442: sta T0
5443: lda #$01
5444: sta BMPNT + 1
5445: lda LA5DB,y
5446: clc
5447: adc #$46
5448: sta BMPNT
5449: ldy #$02
5450: LA56A:
5451: ldx #$07
5452: LA56C:
5453: lda (BMPNT),y
5454: and LEFE9,x
5455: beq LA575
5456: inc T0
5457: LA575:
5458: dex
5459: bpl LA56C
5460: dey
5461: bpl LA56A
5462: pla
5463: cmp T0
5464: beq LA585
5465: lda #ERRORCODE_71_DIR_ERROR
5466: jsr LE645
5467: LA585:
5468: pla
5469: tay
5470: pla
5471: sta T0
5472: jmp LA496
5473: LA58D:
5474: lda VBC_PAUNBUF1
5475: and #VBC_PA1_20
5476: bne LA597
5477: LA594:
5478: jmp LD58A
5479: LA597:
5480: lda MAXTRACK_ADJUSTED
5481: cmp #MAXTRACK_SINGLESIDED + 2
5482: bcc LA594
5483: ldx JOBNUM
5484: lda LSTJOB,x
5485: pha
5486: jsr LD58A
5487: jsr LA48B
5488: jsr LEF3A
5489: jsr LF008
5490: lda JOBNUM
5491: asl a
5492: tax
5493: lda #$35
5494: sta TRACK0,x
5495: ldy #$68
5496: LA5BA:
5497: lda L0146,y
5498: sta (BMPNT),y
5499: dey
5500: bpl LA5BA
5501: jsr LA496
5502: jsr LD58A
5503: lda JOBNUM
5504: asl a
5505: tax
5506: lda LFE85
5507: sta TRACK0,x
5508: jsr LD586
5509: pla
5510: ldx JOBNUM
5511: sta LSTJOB,x
5512: rts
5513: LA5DB:
5514: .byte $00,$03,$06,$09,$0C,$0F,$12,$15
5515: .byte $18,$1B,$1E,$21,$24,$27,$2A,$2D
5516: .byte $30,$33,$36,$39,$3C,$3F,$42,$45
5517: .byte $48,$4B,$4E,$51,$54,$57,$5A,$5D
5518: .byte $60,$63,$66
5519: LA5FE:
5520: lda VBC_PAUNBUF1
5521: and #VBC_PA1_20
5522: beq LA614
5523: ldy #$00
5524: ldx #$00
5525: lda #$01
5526: sta FILTBL
5527: jsr LC312
5528: jmp LE7A8
5529: LA614:
5530: lda #$8D
5531: jsr SearchInCmdline
5532: jmp LE7A8
5533:
5534: Patch1570CallToParseCommandBufferAndExecuteCommand:
5535: jsr ParseCommandBufferAndExecuteCommand
5536: jsr L81B2
5537: lda BITCNT
5538: and #$7F
5539: sta BITCNT
5540: jmp END_Patch1570CallToParseCommandBufferAndExecuteCommand
5541:
5542:
5543: LA62B:
5544: lda #$FF
5545: sta ACLTIM
5546: lda #$06
5547: sta GCRERR
5548: rts
5549: LA634:
5550: bne LA63D
5551: lda CNTMOTOR1570
5552: bne LA64B
5553: beq LA657
5554: LA63D:
5555: lda #$FF
5556: sta CNTMOTOR1570
5557: jsr L8764
5558: SET_WPSW_DIRTY
5559: bne LA657
5560: LA64B:
5561: dec CNTMOTOR1570
5562: bne LA657
5563: lda DRVST
5564: bne LA657
5565: jsr L8770
5566: LA657:
5567: jmp LF9B1
5568:
5569: PATCH_INIT_BC_1570:
5570: lda #VBC_PB1_1540_DATAOUT
5571: sta VBC_PB1
5572: lda #VBC_PA1_20
5573: sta VBC_PA1
5574: .if CompileDrive >= DRIVE_1571CR
5575: jmp PATCH_INIT_CSG5710
5576: .else
5577: jmp PATCH_INIT_BC_1570_END
5578: .endif
5579:
5580:
5581: LA667:
5582: lda VBC_PAUNBUF1
5583: and #VBC_PA1_20
5584: bne LA671
5585: LA66E:
5586: jmp LD586
5587:
5588:
5589: LA671:
5590: lda MAXTRACK_ADJUSTED
5591: cmp #MAXTRACK_SINGLESIDED + 2
5592: bcc LA66E
5593: jsr LA48B
5594: lda #$00
5595: sta BMPNT
5596: ldx JOBNUM
5597: lda TableHighBytesOfBuffers,x
5598: sta BMPNT + 1
5599: lda #$FF
5600: .if CompileDrive >= DRIVE_1571_05
5601: jmp PATCH_LAB72
5602: PATCH_LAB72_END:
5603:
5604: .else
5605: sta JOBRTN
5606: .endif
5607: lda JOBNUM
5608: asl a
5609: tax
5610: lda #$35
5611: sta TRACK0,x
5612: jsr LD586
5613: cmp #$02
5614: ror a
5615: and #$80
5616: eor #$80
5617: sta L01AF
5618: bpl LA6AC
5619: ldy #$68
5620: LA6A4:
5621: lda (BMPNT),y
5622: sta L0146,y
5623: dey
5624: bpl LA6A4
5625: LA6AC:
5626: lda #$FF
5627: sta JOBRTN
5628:
5629: LA6B1:
5630: lda JOBNUM
5631: asl a
5632: tax
5633: lda LFE85
5634: sta TRACK0,x
5635: jsr LD586
5636: cmp #$02
5637: bcc LA6D1
5638: tax
5639: lda #MAXTRACK_SINGLESIDED + 1
5640: sta MAXTRACK_ADJUSTED
5641: jsr LA496
5642: txa
5643: jsr LE60A
5644: jmp LD644
5645: LA6D1:
5646: ldy #$03
5647: lda (BMPNT),y
5648: and L01AF
5649: bmi LA6DD
5650: lda #$24
5651: .byte ASM_BIT3
5652: LA6DD:
5653: lda #MAXTRACK_DOUBLESIDED + 1
5654: sta MAXTRACK_ADJUSTED
5655:
5656: .if CompileDrive >= DRIVE_1571_05 .AND CompileDrive < DRIVE_1571CR
5657: jmp LAB24
5658: .else
5659: jmp LA496
5660: .endif
5661: LA6E5:
5662: jsr LD58C
5663: pha
5664: cmp #$02
5665: bcs LA736
5666: lda VBC_PAUNBUF1
5667: and #VBC_PA1_20
5668: beq LA736
5669: lda #MAXTRACK_DOUBLESIDED + 1
5670: sta MAXTRACK_ADJUSTED
5671: lda #$FF
5672: sta JOBRTN
5673: lda HEADER
5674: pha
5675: lda HEADER + 1
5676: pha
5677: lda JOBNUM
5678: asl a
5679: tax
5680: lda #$35
5681: sta TRACK0,x
5682: lda #$B0
5683: .if CompileDrive >= DRIVE_1571_05
5684: jsr LAADE
5685: .else
5686: jsr LD58C
5687: .endif
5688: cmp #$02
5689: pla
5690: tay
5691: pla
5692: tax
5693: bcs LA724
5694: cpx HEADER
5695: bne LA724
5696: cpy HEADER + 1
5697: bne LA724
5698: lda #$47
5699: .byte ASM_BIT3
5700: LA724:
5701: lda #MAXTRACK_SINGLESIDED + 1
5702: sta MAXTRACK_ADJUSTED
5703: sty HEADER + 1
5704: stx HEADER
5705: lda JOBNUM
5706: asl a
5707: tax
5708: lda LFE85
5709: sta TRACK0,x
5710: LA736:
5711: pla
5712: rts
5713: LA738:
5714: jsr LEF3A
5715: lda VBC_PAUNBUF1
5716: and #VBC_PA1_20
5717: beq LA74C
5718: lda #$00
5719: ldy #$68
5720: LA746:
5721: sta L0146,y
5722: dey
5723: bpl LA746
5724: LA74C:
5725: jmp LF008
5726: LA74F:
5727: pha
5728: lda VBC_PAUNBUF1
5729: and #VBC_PA1_20
5730: beq LA75F
5731: pla
5732: cmp #$24
5733: bcc LA760
5734: sbc #$23
5735: .byte ASM_BIT2
5736: LA75F:
5737: pla
5738: LA760:
5739: ldx LFED6
5740: rts
5741:
5742: LA764:
5743: jsr LF005
5744: lda VBC_PAUNBUF1
5745: and #VBC_PA1_20
5746: bne LA771
5747: lda #$24
5748: .byte ASM_BIT3
5749: LA771:
5750: lda #MAXTRACK_DOUBLESIDED + 1
5751: sta MAXTRACK_ADJUSTED
5752:
5753: jmp LEE43
5754: LA779:
5755: lda VBC_PAUNBUF1
5756: and #VBC_PA1_20
5757: bne LA783
5758: jmp LC8C6
5759: LA783:
5760: jmp LA40D
5761:
5762: LA786:
5763: lda VBC_PA1
5764: and # ~ VBC_PA1_20
5765: sta VBC_PA1
5766:
5767: jsr LA483
5768:
5769:
5770:
5771: lda #CIA_ICR_BW_UNSET | ~ CIA_ICR_BW_SET
5772: sta CIA_ICR
5773:
5774: .if CompileDrive >= DRIVE_1571CR
5775: .else
5776: lda #CIA_CRA_B_ONESHOT
5777: sta CIA_CRA
5778:
5779: sta CIA_CRB
5780: lda #>$0006
5781: sta CIA_TAHI
5782: lda #<$0006
5783: sta CIA_TALO
5784:
5785: lda #CIA_CRA_B_START
5786: sta CIA_CRA
5787: .endif
5788:
5789: jsr L81B2
5790: jmp TestATN
5791:
5792: FillUntil $A7B3
5793:
5794: ProcessBus1570:
5795: .if CompileDrive = DRIVE_1571_03
5796: lda VBC_PAUNBUF1
5797: .else
5798: jsr LAA62
5799: .endif
5800: and #VBC_PA1_20
5801: beq LA7BD
5802: jmp L80CE
5803: LA7BD:
5804: jmp ProcessBus
5805:
5806: PATCH_ShortReset:
5807:
5808: sei
5809:
5810: ldx #<SP_END
5811: txs
5812:
5813: jmp PATCH_ShortReset_END
5814:
5815: LA7C7:
5816: .if CompileDrive >= DRIVE_1571
5817: lda VBC_PAUNBUF1
5818: .else
5819: jmp LA7CE
5820: .endif
5821: and #VBC_PA1_20
5822: LA7CC:
5823: bne LA7D7
5824: LA7CE:
5825: ldy #$03
5826: lda #$00
5827: sta (BMPNT),y
5828: jmp LEEB7
5829: LA7D7:
5830: lda MAXTRACK_ADJUSTED
5831: cmp #MAXTRACK_SINGLESIDED + 2
5832: bcc LA7CE
5833: ldy #$01
5834: ldx #$00
5835: LA7E2:
5836: cpy #$12
5837: beq LA81A
5838: txa
5839: pha
5840: lda #$00
5841: sta T0
5842: sta T1
5843: sta T2
5844: lda L9409 + 34,y
5845: tax
5846: LA7F4:
5847: sec
5848: rol T0
5849: rol T1
5850: rol T2
5851: dex
5852: bne LA7F4
5853: pla
5854: tax
5855: lda T0
5856: sta L0146,x
5857: lda T1
5858: sta L0147,x
5859: lda T2
5860: sta L0148,x
5861: inx
5862: inx
5863: inx
5864: cpx #$33
5865: bne LA81A
5866: inx
5867: inx
5868: inx
5869: iny
5870: LA81A:
5871: iny
5872: cpy #$24
5873: bcc LA7E2
5874: jsr LEEB7
5875: ldy #$03
5876: lda #$80
5877: sta (BMPNT),y
5878: ldy #$FF
5879: ldx #$22
5880: LA82C:
5881: lda L942C,x
5882: sta (BMPNT),y
5883: dey
5884: dex
5885: bpl LA82C
5886: ldy #$EE
5887: lda #$00
5888: sta (BMPNT),y
5889: jmp LD075
5890: LA83E:
5891: lda VBC_PAUNBUF1
5892: and #VBC_PA1_20
5893: bne LA84B
5894: LA845:
5895: jsr LEFCF
5896: jmp LEF62
5897: LA84B:
5898: lda TRACK
5899: cmp #$24
5900: bcc LA845
5901: jsr LA4A1
5902: jsr LA4E7
5903: bne LA872
5904: ora LEFE9,x
5905: sta L0146,y
5906: jsr LEF88
5907: jsr LA508
5908: lda TRACK
5909: cmp #$35
5910: beq LA873
5911: lda DRVNUM
5912: asl a
5913: tax
5914: jmp LEF7F
5915: LA872:
5916: sec
5917: LA873:
5918: rts
5919: LA874:
5920: lda VBC_PAUNBUF1
5921: and #VBC_PA1_20
5922: bne LA881
5923: LA87B:
5924: jsr LEFCF
5925: jmp LEF96
5926: LA881:
5927: lda TRACK
5928: cmp #$24
5929: bcc LA87B
5930: jsr LA4A1
5931: jsr LA4E7
5932: beq LA8A8
5933: eor LEFE9,x
5934: sta L0146,y
5935: jsr LEF88
5936: jsr LA51E
5937: lda TRACK
5938: cmp #$35
5939: beq LA8A8
5940: lda DRVNUM
5941: asl a
5942: tax
5943: jmp LEFB2
5944: LA8A8:
5945: rts
5946: LA8A9:
5947: lda VBC_PAUNBUF1
5948: and #VBC_PA1_20
5949: bne LA8B6
5950: LA8B0:
5951: jsr LF011
5952: jmp LF1FD
5953: LA8B6:
5954: lda TRACK
5955: cmp #$24
5956: bcc LA8B0
5957: jsr LA4A1
5958: jsr LA545
5959: lda L942C,y
5960: sta LSTSEC
5961: LA8C8:
5962: lda SECTOR
5963: cmp LSTSEC
5964: bcs LA8D8
5965: jsr LA4E7
5966: bne LA8DA
5967: inc SECTOR
5968: bne LA8C8
5969: LA8D8:
5970: lda #$00
5971: LA8DA:
5972: rts
5973: LA8DB:
5974: lda VBC_PAUNBUF1
5975: and #VBC_PA1_20
5976: bne LA8E8
5977: LA8E2:
5978: lda T0
5979: pha
5980: jmp LF130
5981: LA8E8:
5982: lda TRACK
5983: cmp #$24
5984: bcc LA8E2
5985: cmp #$35
5986: beq LA900
5987: lda T0
5988: pha
5989: jsr LA4A1
5990: tay
5991: pla
5992: sta T0
5993: tya
5994: jmp LF138
5995: LA900:
5996: lda #$00
5997: jmp LF138
5998: LA905:
5999: lda VBC_PAUNBUF1
6000: and #VBC_PA1_20
6001: bne LA912
6002: LA90C:
6003: jsr LF011
6004: jmp LF1C7
6005: LA912:
6006: lda TRACK
6007: cmp #$24
6008: bcc LA90C
6009: jsr LA4A1
6010: jmp LF1C9
6011: LA91E:
6012: lda VBC_PAUNBUF1
6013: and #VBC_PA1_20
6014: bne LA92B
6015: LA925:
6016: jsr LF011
6017: jmp LF1E2
6018: LA92B:
6019: lda TRACK
6020: cmp #$24
6021: bcc LA925
6022: jsr LA4A1
6023: jmp LF1E4
6024: LA937:
6025: lda VBC_PAUNBUF1
6026: and #VBC_PA1_20
6027: bne LA941
6028: LA93E:
6029: jmp LF220
6030: LA941:
6031: lda MAXTRACK_ADJUSTED
6032: cmp #MAXTRACK_SINGLESIDED + 2
6033: bcc LA93E
6034: lda TRACK
6035: cmp #$24
6036: bcc LA93E
6037: jmp LA545
6038: LA951:
6039: sta NDBL,x
6040: lda VBC_PAUNBUF1
6041: and #VBC_PA1_20
6042: beq LA97E
6043: lda MAXTRACK_ADJUSTED
6044: cmp #MAXTRACK_SINGLESIDED + 2
6045: bcc LA97E
6046: jsr LA48B
6047: jsr LA534
6048: ldy #$22
6049: lda NDBL
6050: LA96D:
6051: clc
6052: adc (BMPNT),y
6053: sta NDBL
6054: bcc LA978
6055: inc NDBH
6056: LA978:
6057: dey
6058: bpl LA96D
6059: jmp LA496
6060: LA97E:
6061: rts
6062: LA97F:
6063: sta RECL,x
6064: sta RECH,x
6065: lda #$00
6066: sta LSTCHR,x
6067: rts
6068: LA989:
6069: jsr LA40D
6070: ldy #$00
6071: sty JOBRTN
6072: rts
6073:
6074: emptya992:
6075: FillUntil $A99D
6076:
6077: LA99D:
6078: lda #$00
6079: sta a:NODRV,x
6080: jmp LC1B7
6081: LA9A5:
6082: tya
6083: sta a:NODRV,x
6084: jmp LC664
6085: LA9AC:
6086: lda VBC_PAUNBUF1
6087: and #VBC_PA1_20
6088: beq LA9B6
6089: jmp L815A
6090: LA9B6:
6091: jmp LE8D7
6092: LA9B9:
6093: pha
6094: stx JOBNUM
6095: lda VBC_PAUNBUF1
6096: and #VBC_PA1_20
6097: beq LA9D2
6098: bit BITCNT
6099: bpl LA9D2
6100: lda BITCNT
6101: and #$7F
6102: sta BITCNT
6103: pla
6104: tax
6105: jmp L9199
6106: LA9D2:
6107: jmp LE60D
6108:
6109: LA9D5:
6110: pha
6111: lda VBC_PAUNBUF1
6112: and #VBC_PA1_20
6113: beq @LA9F4
6114: bit BITCNT
6115: bpl @LA9F4
6116: lda BITCNT
6117: and #$7F
6118: sta BITCNT
6119: sei
6120: ldx #$02
6121: jsr L9228
6122: lda #$00
6123: sta SA
6124: jsr LDAC0
6125: @LA9F4:
6126: pla
6127: jmp LE645
6128: LA9F8:
6129: lda #$00
6130: sta DRVST
6131: lda VDC_PCR2
6132: jmp LF266
6133:
6134: READ_CMDBUF_BUT_SPECIAL_CASE_U0:
6135:
6136: lda CMDBUF
6137: cmp #'U'
6138: bne @NoU0
6139: lda CMDBUF + 1
6140: cmp #'0'
6141: beq @ReturnAsc_NUL
6142: @NoU0:
6143:
6144: lda CMDBUF,y
6145:
6146: .byte ASM_BIT3
6147:
6148: @ReturnAsc_NUL:
6149: lda #$00
6150: rts
6151:
6152: LAA17:
6153: ldx DRVNUM
6154: lda a:NODRV,x
6155: rts
6156: LAA1D:
6157: sta WPSW,x
6158: sta a:NODRV,x
6159: jmp LD075
6160: LAA25:
6161: ldx DRVNUM
6162: lda a:NODRV,x
6163: jmp LF01B
6164:
6165:
6166:
6167:
6168:
6169:
6170:
6171:
6172:
6173:
6174: Patch1570ExecutionOfUCommand:
6175:
6176:
6177:
6178: lda IP
6179: cmp #<IRQ
6180: bne @NoIRQVector
6181: lda IP + 1
6182: cmp #>IRQ
6183: bne @NoIRQVector
6184:
6185:
6186:
6187: brk
6188: nop
6189:
6190: rts
6191:
6192: @NoIRQVector:
6193: jmp (IP)
6194:
6195:
6196: .if CompileDrive >= DRIVE_1571_05
6197: LAA3F:
6198: cmp #$02
6199: bcc LAA4A
6200: cmp #$0F
6201: beq LAA4A
6202: jmp LD36B
6203: LAA4A:
6204: jmp LD373
6205: LAA4D:
6206: sta FTNUM
6207: jsr L877C
6208: jsr LA989
6209: pha
6210: jsr L8788
6211: pla
6212: rts
6213: LAA5B:
6214: lda PATTYP
6215: and #$07
6216: cmp #$02
6217: rts
6218: LAA62:
6219: lda VBC_PAUNBUF1
6220: bit VBC_PA1
6221: rts
6222: LAA69:
6223: lda VBC_PAUNBUF1
6224: and #VBC_PA1_20
6225: bne LAA73
6226: jmp LEEB7
6227: LAA73:
6228: jmp LA7CC
6229: LAA76:
6230: lda #$02
6231: sta VBC_T1HC1
6232: rts
6233:
6234: PATCH_INIT_CSG5710:
6235: .if CompileDrive >= DRIVE_1571CR
6236: lda #$FB
6237: sta CSG5710_4010 + 4
6238: lda #$FE
6239: sta CSG5710_4010 + 5
6240: lda #$A1
6241: sta CSG5710_4010 + 0
6242: lda #$C2
6243: sta CSG5710_4010 + 1
6244: lda #$0A
6245: sta CSG5710_4010 + 6
6246: lda #$14
6247: sta CSG5710_4010 + 7
6248: lda #$02
6249: sta CSG5710_4010 + 2
6250: lda #$03
6251: sta CSG5710_4010 + 3
6252: lda #$40
6253: sta L01B4
6254: jmp PATCH_INIT_BC_1570_END
6255: LAAAD:
6256: lda L01B3
6257: bne LAAB6
6258: .else
6259: lda L01B3
6260: bne LAA84
6261: jmp L8EC6
6262: LAA84:
6263: clc
6264: rts
6265:
6266: LAA86:
6267: tay
6268: cmp #$56
6269: bne LAAA8
6270: sei
6271: lda VBC_PAUNBUF1
6272: and #VBC_PA1_20
6273: bne LAA96
6274: LAA93:
6275: jmp L9021
6276: LAA96:
6277: lda CMDBUF + 4
6278: cmp #$31
6279: beq LAAA1
6280: cmp #$30
6281: bne LAA93
6282: LAAA1:
6283: and #$CF
6284: sta L01B3
6285: cli
6286: rts
6287: LAAA8:
6288: cpy #$04
6289: jmp L9006
6290: LAAAD:
6291: lda L01B3
6292: bne LAAB6
6293: .endif
6294: lda JOBS0,y
6295: .byte ASM_BIT3
6296: LAAB6:
6297: lda #$30
6298: eor #$30
6299: sta JOBS0,y
6300: bne LAAC2
6301: jmp L99B5
6302: LAAC2:
6303: jmp L944F
6304: LAAC5:
6305: jsr L85F9
6306: lda #$20
6307: bit HINIB
6308: beq LAADD
6309: ldy #$00
6310: LAAD0:
6311: lda CMDBUF + 11,y
6312: sta CTRACK
6313: jsr L85F9
6314: iny
6315: cpy MYPA
6316: bne LAAD0
6317: LAADD:
6318: rts
6319: LAADE:
6320: ldx JOBNUM
6321: ora #$08
6322: sta JOBS0,x
6323: jmp L9FB6
6324: LAAE7:
6325: jsr LAAED
6326: jmp CommandEnd
6327: LAAED:
6328: jmp (IP)
6329: LAAF0:
6330: cmp #$03
6331: bcs LAAF9
6332: lda #ERRORCODE_72_DISK_FULL
6333: jsr SetErrorCode
6334: LAAF9:
6335: lda #$01
6336: rts
6337: Convert_Bin_To_BCD_Patch_157x:
6338: php
6339: sei
6340:
6341: CONVERT_BIN_TO_BCD
6342:
6343: plp
6344: jmp OutputBCDIntoBUFTABERR
6345:
6346: LAB10:
6347: php
6348: sei
6349: sta CIA_SDR
6350: lda BITCNT
6351: eor #$04
6352: sta BITCNT
6353: lda #CIA_ICR_B_SP
6354: LAB1D:
6355: bit CIA_ICR
6356: beq LAB1D
6357: plp
6358: rts
6359:
6360: LAB24:
6361: lda BAM + 11
6362: cmp #$25
6363: bcc LAB6F
6364: lda T0
6365: pha
6366: lda TRACK
6367: pha
6368: ldy #$00
6369: sty TRACK
6370: LAB35:
6371: lda #$00
6372: sta T0
6373: lda #$01
6374: sta BMPNT + 1
6375: lda LA5DB,y
6376: clc
6377: adc #$46
6378: sta BMPNT
6379: ldy #$02
6380: LAB47:
6381: ldx #$07
6382: LAB49:
6383: lda (BMPNT),y
6384: and LEFE9,x
6385: beq LAB52
6386: inc T0
6387: LAB52:
6388: dex
6389: bpl LAB49
6390: dey
6391: bpl LAB47
6392: jsr LA534
6393: lda T0
6394: ldy TRACK
6395: sta (BMPNT),y
6396: inc TRACK
6397: ldy TRACK
6398: cpy #$23
6399: bcc LAB35
6400: pla
6401: sta TRACK
6402: pla
6403: sta T0
6404: LAB6F:
6405: jmp LA496
6406:
6407:
6408: PATCH_LAB72:
6409: sta JOBRTN
6410: pha
6411: lda L01B6
6412: beq LAB84
6413: lda #$00
6414: sta L01B6
6415: pla
6416: jmp PATCH_LAB72_END
6417:
6418:
6419: LAB84:
6420: lda #$80
6421: sta L01AF
6422: pla
6423: jmp LA6B1
6424:
6425:
6426: LAB8D:
6427: jsr LA48B
6428: jsr LAB24
6429: jmp LA48B
6430:
6431: PATCH_WPSW:
6432: lda #$01
6433: sta WPSW
6434: sta L01B6
6435: rts
6436:
6437: .if CompileDrive >= DRIVE_1571CR
6438: .else
6439: LA667_PATCH:
6440: lda #$01
6441: sta L01B6
6442: jmp LA667
6443:
6444: .endif
6445:
6446: LABA6:
6447: lda #$01
6448: sta WPSW
6449: sta L01B6
6450: jmp LD042
6451:
6452: .if CompileDrive >= DRIVE_1571CR
6453:
6454: LABA7:
6455: tay
6456: cmp #$56
6457: bne LABDF
6458: sei
6459: lda VBC_PAUNBUF1
6460: and #VBC_PA1_20
6461: bne LABB7
6462: LABB4:
6463: jmp L9021
6464: LABB7:
6465: lda CMDBUF + 4
6466: cmp #$31
6467: beq LABC2
6468: cmp #$30
6469: bne LABB4
6470: LABC2:
6471: and #$CF
6472: sta L01B3
6473: pha
6474: lda L01B4
6475: and #$BF
6476: sta L01B4
6477: pla
6478: asl a
6479: asl a
6480: asl a
6481: asl a
6482: asl a
6483: asl a
6484: ora L01B4
6485: sta L01B4
6486: cli
6487: rts
6488: LABDF:
6489: cpy #$04
6490: jmp L9006
6491:
6492: LA667_PATCH:
6493: lda #$01
6494: sta L01B6
6495: jmp LA667
6496:
6497:
6498: LABEC:
6499: lda #$5A
6500: LABEE:
6501: pha
6502: jsr LAC38
6503: pla
6504: tay
6505: bcs LAC02
6506: lda WD177x_SECTOR
6507: cmp CSG5710_4010 + 5
6508: beq LAC0C
6509: dey
6510: tya
6511: bne LABEE
6512: LAC02:
6513: ldx #$03
6514: .byte ASM_BIT3
6515: LAC05:
6516: ldx #$09
6517: stx L01B0
6518: sec
6519: rts
6520: LAC0C:
6521: ldx #$00
6522: LAC0E:
6523: bit WD177x_TRACK
6524: bpl LAC0E
6525: lda WD177x_SECTOR
6526: sta STAB,x
6527: inx
6528: cpx #$06
6529: bcc LAC0E
6530: lda #$18
6531: sta WD177x_TRACK
6532: LAC22:
6533: bit WD177x_TRACK
6534: bpl LAC22
6535: lda WD177x_SECTOR
6536: lda WD177x_TRACK
6537: and #$20
6538: bne LAC05
6539: ldx #$00
6540: stx L01B0
6541: clc
6542: rts
6543: LAC38:
6544: lda CSG5710_5
6545: and #$7F
6546: sta CSG5710_5
6547: lda L01B4
6548: and #$20
6549: asl a
6550: asl a
6551: ora CSG5710_5
6552: sta CSG5710_5
6553: lda #$00
6554: sta WD177x_TRACK
6555: lda CSG5710_4010 + 0
6556: sta CSG5710_4
6557: lda CSG5710_4010 + 6
6558: sta WD177x_DATA
6559: lda #$10
6560: sta WD177x_TRACK
6561: lda WD177x_SECTOR
6562: nop
6563: nop
6564: nop
6565: ldx #$00
6566: ldy #$32
6567: LAC6D:
6568: bit WD177x_TRACK
6569: bvs LAC7A
6570: dex
6571: bne LAC6D
6572: dey
6573: bne LAC6D
6574: sec
6575: rts
6576: LAC7A:
6577: ldy #$00
6578: nop
6579: nop
6580: nop
6581: nop
6582: nop
6583: nop
6584: lda WD177x_SECTOR
6585: nop
6586: nop
6587: nop
6588: nop
6589: nop
6590: nop
6591: LAC8B:
6592: bit WD177x_TRACK
6593: bpl LAC8B
6594: lda WD177x_SECTOR
6595: iny
6596: bvs LAC8B
6597: cpy #$03
6598: bne LAC38
6599: clc
6600: rts
6601: LAC9C:
6602: lda #$B4
6603: LAC9E:
6604: pha
6605: jsr LABEC
6606: pla
6607: tay
6608: php
6609: lda STAB + 2
6610: cmp SECTR
6611: beq LACB7
6612: plp
6613: dey
6614: tya
6615: bne LAC9E
6616: ldx #$02
6617: stx L01B0
6618: sec
6619: rts
6620: LACB7:
6621: plp
6622: rts
6623: LACB9:
6624: ldx #$16
6625: LACBB:
6626: bit WD177x_TRACK
6627: bpl LACBB
6628: lda WD177x_SECTOR
6629: dex
6630: bne LACBB
6631: rts
6632: LACC7:
6633: lda REVCNT
6634: asl a
6635: sta TMP
6636: LACCC:
6637: jsr L8EC6
6638: jsr LAC9C
6639: bcs LAD21
6640: jsr LAC38
6641: bcs LAD21
6642: ldy #$00
6643: ldx WORK
6644: LACDD:
6645: bit WD177x_TRACK
6646: bpl LACDD
6647: lda WD177x_SECTOR
6648: cmp (BUFPNT),y
6649: bne LAD21
6650: cpy RLINDX
6651: beq LACF1
6652: iny
6653: bne LACDD
6654: LACF1:
6655: iny
6656: dex
6657: beq LACFA
6658: inc BUFPNT + 1
6659: jmp LACDD
6660: LACFA:
6661: bit WD177x_TRACK
6662: bpl LACFA
6663: lda WD177x_SECTOR
6664: LAD02:
6665: bit WD177x_TRACK
6666: bpl LAD02
6667: lda WD177x_SECTOR
6668: lda #$18
6669: sta WD177x_TRACK
6670: LAD0F:
6671: bit WD177x_TRACK
6672: bpl LAD0F
6673: lda WD177x_SECTOR
6674: lda WD177x_TRACK
6675: and #$20
6676: beq LAD28
6677: ldx #$05
6678: .byte ASM_BIT3
6679: LAD21:
6680: ldx #$07
6681: dec TMP
6682: bne LACCC
6683: .byte ASM_BIT3
6684: LAD28:
6685: ldx #$00
6686: stx L01B0
6687: rts
6688: LAD2E:
6689: lda REVCNT
6690: asl a
6691: sta TMP
6692: LAD33:
6693: jsr LAC9C
6694: bcs LAD86
6695: jsr LAC38
6696: bcs LAD86
6697: ldy #$00
6698: ldx WORK
6699: LAD41:
6700: bit WD177x_TRACK
6701: bpl LAD41
6702: lda WD177x_SECTOR
6703: cmp CMDBUF + 10
6704: bne LAD86
6705: cpy RLINDX
6706: beq LAD56
6707: iny
6708: bne LAD41
6709: LAD56:
6710: iny
6711: dex
6712: beq LAD5F
6713: inc BUFPNT + 1
6714: jmp LAD41
6715: LAD5F:
6716: bit WD177x_TRACK
6717: bpl LAD5F
6718: lda WD177x_SECTOR
6719: LAD67:
6720: bit WD177x_TRACK
6721: bpl LAD67
6722: lda WD177x_SECTOR
6723: lda #$18
6724: sta WD177x_TRACK
6725: LAD74:
6726: bit WD177x_TRACK
6727: bpl LAD74
6728: lda WD177x_SECTOR
6729: lda WD177x_TRACK
6730: and #$20
6731: beq LAD8D
6732: ldx #$05
6733: .byte ASM_BIT3
6734: LAD86:
6735: ldx #$07
6736: dec TMP
6737: bne LAD33
6738: .byte ASM_BIT3
6739: LAD8D:
6740: ldx #$00
6741: stx L01B0
6742: rts
6743: LAD93:
6744: php
6745: sei
6746: jsr L89EF
6747: bit HINIB
6748: bpl LADA4
6749: lda CMDBUF + 3
6750: sta NMIFLG
6751: jsr L87BA
6752: LADA4:
6753: lda #$00
6754: sta MYPA
6755: jsr L89E8
6756: ldx L01B0
6757: cpx #$02
6758: bcs LADD1
6759: lda STAB + 2
6760: sta ICMD
6761: LADB6:
6762: jsr L89E8
6763: lda STAB + 2
6764: ldy MYPA
6765: sta CMDBUF + 11,y
6766: inc MYPA
6767: cpy #$1F
6768: bcs LADD1
6769: cmp ICMD
6770: bne LADB6
6771: lda STAB
6772: sta NMIFLG
6773: ldx #$00
6774: .byte ASM_BIT3
6775: LADD1:
6776: ldx #$02
6777: stx L01B0
6778: plp
6779: rts
6780: .endif
6781: .elseif CompileDrive >= DRIVE_1571
6782: .else
6783: LAA3F:
6784: cmp #$02
6785: bcc LAA4A
6786: cmp #$0F
6787: beq LAA4A
6788: jmp LD36B
6789: LAA4A:
6790: jmp LD373
6791: LAA4D:
6792: sta FTNUM
6793: jsr L877C
6794: jsr LA989
6795: pha
6796: jsr L8788
6797: pla
6798: rts
6799: LAA5B:
6800: lda PATTYP
6801: and #$07
6802: cmp #$02
6803: rts
6804: LAA62:
6805: lda VBC_PAUNBUF1
6806: bit VBC_PA1
6807: rts
6808: .endif
6809:
6810: FillUntil $BF00
6811:
6812: jmp L9D88
6813: jmp L9DDE
6814: jmp LF2B0
6815: jmp L92BA
6816: jmp LF393
6817: jmp L93D1
6818: jmp LF969
6819: jmp L99B5
6820: jmp LFE00
6821: jmp LF934
6822: jmp LF556
6823: jmp L9754
6824: jmp LF8E0
6825: jmp L9965
6826: jmp LF5E9
6827: jmp LF7E6
6828: jmp L98D9
6829: jmp LA483
6830: jmp LFEF3
6831: jmp LA47E
6832: jmp LF005
6833: jmp LF0D1
6834: jmp ParseCommandBufferAndExecuteCommand
6835: jmp SearchInCmdline
6836: jmp LC2B3
6837: jmp LC2DC
6838: jmp L86E6
6839: jmp L8764
6840: jmp L8770
6841: .if CompileDrive >= DRIVE_1571_05
6842: lda L808E
6843: .else
6844: jmp L808E
6845: .endif
6846: jmp LCF1E
6847: jmp LD7B4
6848: jmp LDAC0
6849: jmp LE60A
6850: jmp L9080
6851: jmp L924E
6852: jmp LF259
6853: jmp LF99C
6854: jmp L99CA
6855:
6856:
6857:
6858:
6859: .if CompileDrive >= DRIVE_1571_05
6860: lda $FE95
6861: .else
6862: jmp $FE95
6863: .endif
6864:
6865: emptybf78:
6866:
6867: FillUntil $bf96
6868: .byte $C8,$86
6869: FillUntil $C000
6870:
6871: .else
6872: * = $C000
6873: .endif
6874:
6875: .macro WRITE_55_TIMES times
6876: lda VDC_PCR2
6877: and # ~ VIA_PCR_B_CB2_MASK
6878: ora #VIA_PCR_B_CB2_OUTPUT_LOW
6879: sta VDC_PCR2
6880:
6881: lda #$FF
6882: sta VDC_DDRA2
6883:
6884: lda #$55
6885: sta VDC_PA2
6886:
6887: ldx #>times
6888: ldy #<times
6889: :
6890: bvc :-
6891: clv
6892: dey
6893: bne :-
6894: dex
6895: bne :-
6896: .endmacro
6897:
6898: LC000:
6899: .byte DRIVE_CHKSUM_C000
6900:
6901: .if CompileDrive >= DRIVE_1571_05
6902:
6903: .byte "(C)1985 COMMODORE ELECTRONICS LTD., "
6904: .byte "ALL RIGHTS RESERVED"
6905:
6906: LC038:
6907: and # ~ VDC_PB2_STEPPER
6908: ora TMP
6909: sta VDC_PB2
6910: LC03F:
6911: lda VDC_PCR2
6912: and # ~ VIA_PCR_B_CA2_INPUT_NEG
6913: sta VDC_PCR2
6914: rts
6915:
6916: LC048:
6917: .byte $29,$1F,$19,$12
6918:
6919: LC04C:
6920: FillCount 17,$60
6921: FillCount 7,'@'
6922: .byte " "
6923: FillCount 11,0
6924:
6925: LC075:
6926: sta CMD
6927: pha
6928: lda #$01
6929: sta TRACK0,x
6930: pla
6931: rts
6932:
6933:
6934: LC07F:
6935: sei
6936: lda VDC_PCR2
6937: ora #VIA_PCR_B_CA2_OUTPUT_HIGH
6938: sta VDC_PCR2
6939: jsr L9D63
6940: jsr LFE00
6941: lda VDC_PCR2
6942: and # ~ VIA_PCR_B_CA2_OUTPUT_HIGH
6943: sta VDC_PCR2
6944: cli
6945: rts
6946:
6947: .elseif CompileDrive >= DRIVE_1541C_02 .AND CompileDrive < DRIVE_1570
6948:
6949: .byte DRIVE_CHKSUM_C001
6950:
6951: .if CompileDrive = DRIVE_1541C_03
6952: .byte "COPYRIGHT (C)1982,1985,1987 COMMODORE ELECTRONICS, LTD.",$0D
6953: .byte "ALL RIGHTS RESERVED",$0D
6954: .endif
6955:
6956: LC002:
6957: WRITE_55_TIMES $0300
6958: rts
6959:
6960:
6961:
6962: LC024:
6963: ldy LINDX
6964: .if CompileDrive >= DRIVE_1541C_03
6965: jmp LD3EE
6966: .else
6967: jmp LD3DE
6968: .endif
6969: LC029:
6970: sta RECL,x
6971: sta RECH,x
6972: lda #$00
6973: sta LSTCHR,x
6974: rts
6975: Convert_Bin_To_BCD_Patch_154x:
6976: php
6977: sei
6978:
6979: CONVERT_BIN_TO_BCD
6980:
6981: plp
6982: jmp OutputBCDIntoBUFTABERR
6983:
6984: LC047:
6985: cmp #$03
6986: bcs LC050
6987: lda #ERRORCODE_72_DISK_FULL
6988: jsr SetErrorCode
6989: LC050:
6990: lda #$01
6991: LC052:
6992: rts
6993:
6994: .if CompileDrive = DRIVE_1541C_02
6995:
6996: LC048:
6997: .byte $29,$1F,$19,$12
6998:
6999: .byte "COPYRIGHT (C)1985 COMMODORE ELECTRONICS, LTD.",$0D
7000: .byte "ALL RIGHTS RESERVED",$0D
7001: .endif
7002:
7003: .endif
7004:
7005: FillUntil $C100
7006:
7007: LC100:
7008: sei
7009: lda # ~ VDC_PB2_DRIVELEDS
7010: and VDC_PB2
7011: pha
7012: lda DRVNUM
7013: beq @IsDrive0
7014:
7015:
7016:
7017:
7018: pla
7019: ora #VDC_PB2_DRIVE1LED
7020: bne @StoreLedState
7021:
7022: @IsDrive0:
7023: pla
7024: ora #VDC_PB2_DRIVE0LED
7025: @StoreLedState:
7026: sta VDC_PB2
7027: cli
7028: rts
7029:
7030:
7031:
7032:
7033:
7034: sei
7035: lda #VDC_PB2_DRIVE0LED
7036: ora VDC_PB2
7037: sta VDC_PB2
7038: cli
7039: rts
7040:
7041:
7042: LC123:
7043: lda #ERRORCODE_00_OK
7044: sta ERWORD
7045: sta ERLED
7046: rts
7047:
7048: LC12C:
7049: sei
7050: txa
7051: pha
7052: lda #ERRORCODE_50_RECORD_NOT_PRESENT
7053: sta ERWORD
7054: ldx #$00
7055: lda DriveLEDMasks,x
7056: sta ERLED
7057: ora VDC_PB2
7058: sta VDC_PB2
7059: pla
7060: tax
7061: cli
7062: rts
7063:
7064:
7065:
7066:
7067:
7068: ParseCommandBufferAndExecuteCommand:
7069:
7070:
7071:
7072: lda #$00
7073: sta WBAM
7074: lda LSTDRV
7075: sta DRVNUM
7076:
7077: jsr SetNoError
7078:
7079:
7080:
7081:
7082: lda ORGSA
7083: bpl @IsCommand
7084:
7085:
7086:
7087:
7088: and #MASK_SA
7089: cmp #IEC_COMMAND_ERROR_CHANNEL
7090: beq @IsCommand
7091: jmp LD7B4
7092:
7093:
7094: @IsCommand:
7095: jsr LC2B3
7096:
7097:
7098:
7099: lda (BUFTABCMD),y
7100: sta CHAR
7101:
7102:
7103: ldx #CmdChars_END - CmdChars - 1
7104: @TestNextCommand:
7105: lda CmdChars,x
7106: cmp CHAR
7107: beq @FoundCommand
7108: dex
7109: bpl @TestNextCommand
7110:
7111:
7112: lda #ERRORCODE_31_SYNTAX_ERROR
7113: jmp GenerateErrorMessage
7114:
7115:
7116: @FoundCommand:
7117: stx CMDNUM
7118:
7119: cpx #CmdChars_With2Files - CmdChars + 1
7120: bcc @ExecuteCommand
7121:
7122: jsr LC1EE
7123:
7124: @ExecuteCommand:
7125:
7126: ldx CMDNUM
7127:
7128:
7129: lda CmdAddresses_Low,x
7130: sta T0
7131: lda CmdAddresses_High,x
7132: sta T1
7133:
7134:
7135: jmp (T0)
7136:
7137:
7138:
7139:
7140:
7141:
7142: CommandEnd:
7143: lda #$00
7144: sta WBAM
7145: LC199:
7146: lda ERWORD
7147: bne GenerateErrorMessage
7148: ldy #$00
7149: tya
7150: sty TRACK
7151: LC1A3:
7152: sty SECTOR
7153: sty BUFTABCMD
7154: jsr SetErrorCode
7155: jsr LC123
7156: LC1AD:
7157: lda DRVNUM
7158: sta LSTDRV
7159: tax
7160: .if CompileDrive >= DRIVE_1570
7161: jmp LA99D
7162: FillNOP 1
7163: .elseif CompileDrive >= DRIVE_1541C_02
7164: jmp LFFB8
7165: FillNOP 1
7166: .else
7167: lda #$00
7168: sta NODRV,x
7169: .endif
7170:
7171: LC1B7:
7172: jsr ClearCMDBUF
7173: jmp LD4DA
7174:
7175:
7176:
7177:
7178:
7179: ClearCMDBUF:
7180: ldy #CMDBUF_End - CMDBUF
7181: lda #0
7182: :
7183: sta CMDBUF,y
7184: dey
7185: bpl :-
7186: rts
7187:
7188:
7189:
7190:
7191:
7192:
7193: GenerateErrorMessage:
7194: ldy #$00
7195: sty TRACK
7196: sty SECTOR
7197: .if CompileDrive >= DRIVE_1570
7198: jmp LA9D5
7199:
7200: .else
7201: jmp LE645
7202: .endif
7203:
7204:
7205: LC1D1:
7206: ldx #$00
7207: stx FILTBL
7208: lda #$3A
7209: jsr SearchInCmdline
7210: beq LC1E2
7211: dey
7212: dey
7213: sty FILTBL
7214: LC1E2:
7215: jmp LC368
7216:
7217:
7218: LC1E5:
7219: ldy #$00
7220: ldx #$00
7221: lda #$3A
7222: jmp SearchInCmdline
7223:
7224:
7225: LC1EE:
7226: jsr LC1E5
7227: bne LC1F8
7228: LC1F3:
7229: lda #ERRORCODE_34_SYNTAX_ERROR
7230: jmp GenerateErrorMessage
7231:
7232:
7233: LC1F8:
7234: dey
7235: dey
7236: sty FILTBL
7237: txa
7238: bne LC1F3
7239: LC200:
7240: lda #$3D
7241: jsr SearchInCmdline
7242: txa
7243: beq LC20A
7244: lda #$40
7245: LC20A:
7246: ora #$21
7247: sta IMAGE
7248: inx
7249: stx F1CNT
7250: stx F2CNT
7251: lda PATFLG
7252: beq LC228
7253: lda #$80
7254: ora IMAGE
7255: sta IMAGE
7256: lda #$00
7257: sta PATFLG
7258: LC228:
7259: tya
7260: beq LC254
7261: sta FILTBL,x
7262: lda F1CNT
7263: sta F2PTR
7264: lda #$8D
7265: jsr SearchInCmdline
7266: inx
7267: stx F2CNT
7268: dex
7269: lda PATFLG
7270: beq LC245
7271: lda #$08
7272: LC245:
7273: cpx F1CNT
7274: beq LC24C
7275: ora #$04
7276: LC24C:
7277: ora #$03
7278: eor IMAGE
7279: sta IMAGE
7280: LC254:
7281: lda IMAGE
7282: ldx CMDNUM
7283: and CmdSyntaxFlags - 8,x
7284: bne LC260
7285: rts
7286: LC260:
7287: sta ERWORD
7288: lda #ERRORCODE_30_SYNTAX_ERROR
7289: jmp GenerateErrorMessage
7290:
7291:
7292:
7293:
7294:
7295:
7296:
7297:
7298:
7299:
7300:
7301:
7302:
7303:
7304: SearchInCmdline:
7305: sta CHAR
7306: @SearchLoop:
7307: cpy CMDSIZ
7308: bcs @BufferExceeded
7309:
7310: lda (BUFTABCMD),y
7311: iny
7312: cmp CHAR
7313: beq @FoundChar
7314:
7315: cmp #'*'
7316: beq @FoundWildcard
7317: cmp #'?'
7318: bne @NoWildcard
7319: @FoundWildcard:
7320: inc PATFLG
7321: @NoWildcard:
7322: cmp #','
7323: bne @SearchLoop
7324:
7325:
7326: tya
7327: sta FILTBL + 1,x
7328:
7329: lda PATFLG
7330: and # ~ PATTYP_WILDCARD
7331: beq @NoWildcardYet
7332:
7333: lda #PATTYP_WILDCARD
7334: sta PATTYP,x
7335: sta PATFLG
7336:
7337: @NoWildcardYet:
7338: inx
7339: cpx #$04
7340: bcc @SearchLoop
7341:
7342:
7343:
7344:
7345:
7346: @BufferExceeded:
7347: ldy #$00
7348:
7349: @FoundChar:
7350: lda CMDSIZ
7351: sta FILTBL + 1,x
7352:
7353: lda PATFLG
7354: and # ~ PATTYP_WILDCARD
7355: beq @DidNotHaveWildcards
7356:
7357: lda #PATTYP_WILDCARD
7358: sta PATTYP,x
7359:
7360: @DidNotHaveWildcards:
7361: tya
7362:
7363: rts
7364:
7365: LC2B3:
7366:
7367:
7368: ldy BUFTABCMD
7369: beq QuitRemovingTrailingCR
7370: dey
7371: beq @QuitUndoDecrement
7372:
7373:
7374:
7375: .if CompileDrive >= DRIVE_1570
7376:
7377: jsr READ_CMDBUF_BUT_SPECIAL_CASE_U0
7378: .else
7379: lda CMDBUF,y
7380: .endif
7381: cmp #ASC_CR
7382: beq QuitRemovingTrailingCR
7383:
7384:
7385: dey
7386:
7387:
7388:
7389: .if CompileDrive >= DRIVE_1570
7390:
7391: jsr READ_CMDBUF_BUT_SPECIAL_CASE_U0
7392: .else
7393: lda CMDBUF,y
7394: .endif
7395: cmp #ASC_CR
7396: beq QuitRemovingTrailingCR
7397:
7398: iny
7399: @QuitUndoDecrement:
7400: iny
7401: QuitRemovingTrailingCR:
7402: sty CMDSIZ
7403:
7404: cpy #CMDBUF_End2 - CMDBUF
7405: ldy #$FF
7406:
7407: bcc LC2DC
7408:
7409: sty CMDNUM
7410:
7411:
7412:
7413:
7414: lda #ERRORCODE_32_SYNTAX_ERROR
7415: jmp GenerateErrorMessage
7416:
7417:
7418:
7419:
7420: LC2DC:
7421: ldy #$00
7422: tya
7423: sta BUFTABCMD
7424: sta REC
7425: sta TYPE
7426: sta TYPFLG
7427: sta F1PTR
7428: sta F2PTR
7429: sta F1CNT
7430: sta F2CNT
7431: sta PATFLG
7432: sta ERWORD
7433: ldx #$05
7434: @LC2FD:
7435: sta F2PTR,x
7436: sta RELPTR,x
7437: sta ENTSEC + 4,x
7438: sta ENTIND + 4,x
7439: sta FILDRV + 4,x
7440: sta FILTBL + 5,x
7441: sta FILTRK + 4,x
7442: dex
7443: bne @LC2FD
7444: rts
7445:
7446: LC312:
7447: lda F2CNT
7448: sta F1CNT
7449: lda #$01
7450: sta F2CNT
7451: sta F2PTR
7452: LC320:
7453: ldy LSTDRV
7454: ldx #$00
7455: @LC325:
7456: stx F1PTR
7457: lda FILTBL,x
7458: jsr @LC33C
7459: ldx F1PTR
7460: sta FILTBL,x
7461: tya
7462: sta FILDRV,x
7463: inx
7464: cpx F2CNT
7465: bcc @LC325
7466: rts
7467: @LC33C:
7468: tax
7469: ldy #$00
7470: lda #$3A
7471: cmp CMDBUF + 1,x
7472: beq @LC352
7473: cmp CMDBUF,x
7474: bne @LC361
7475: inx
7476: @LC34C:
7477: tya
7478: @LC34D:
7479: and #$01
7480: @LC34F:
7481: tay
7482: txa
7483: rts
7484: @LC352:
7485: lda CMDBUF,x
7486: inx
7487: inx
7488: cmp #$30
7489: beq @LC34D
7490: cmp #$31
7491: beq @LC34D
7492: bne @LC34C
7493: @LC361:
7494: tya
7495: ora #$80
7496: and #$81
7497: bne @LC34F
7498: LC368:
7499: lda #$00
7500: sta IMAGE
7501: ldy FILTBL
7502: @LC370:
7503: lda (BUFTABCMD),y
7504: jsr CheckForValidDriveNumber
7505: bpl @LC388
7506: iny
7507: cpy CMDSIZ
7508: bcs @LC383
7509: ldy CMDSIZ
7510: dey
7511: bne @LC370
7512: @LC383:
7513: dec IMAGE
7514: lda #$00
7515: @LC388:
7516: and #$01
7517: sta DRVNUM
7518: jmp LC100
7519:
7520:
7521: LC38F:
7522: lda DRVNUM
7523: eor #$01
7524: and #$01
7525: sta DRVNUM
7526: rts
7527:
7528:
7529: LC398:
7530: ldy #$00
7531: lda F1CNT
7532: cmp F2CNT
7533: beq @LC3B8
7534: dec F2CNT
7535: ldy F2CNT
7536: lda FILTBL,y
7537: tay
7538: lda (BUFTABCMD),y
7539: ldy #$04
7540: @LC3B0:
7541: cmp LFEBB,y
7542: beq @LC3B8
7543: dey
7544: bne @LC3B0
7545: @LC3B8:
7546: tya
7547: sta TYPFLG
7548: rts
7549:
7550:
7551:
7552:
7553:
7554:
7555:
7556:
7557:
7558:
7559:
7560:
7561:
7562:
7563: CheckForValidDriveNumber:
7564: cmp #'0'
7565: beq @ValidDriveNumber
7566: cmp #'1'
7567: beq @ValidDriveNumber
7568: ora #$80
7569: @ValidDriveNumber:
7570: and #$81
7571: rts
7572:
7573:
7574: LC3CA:
7575: lda #$00
7576: sta T0
7577: sta DRVFLG
7578: pha
7579: ldx F2CNT
7580: @LC3D5:
7581: pla
7582: ora T0
7583: pha
7584: lda #$01
7585: sta T0
7586: dex
7587: bmi @LC3EF
7588: lda FILDRV,x
7589: bpl @LC3E8
7590: asl T0
7591: asl T0
7592: @LC3E8:
7593: lsr a
7594: bcc @LC3D5
7595: asl T0
7596: bne @LC3D5
7597: @LC3EF:
7598: pla
7599: tax
7600: lda LC440 - 1,x
7601: pha
7602: and #$03
7603: sta DRVCNT
7604: pla
7605: asl a
7606: bpl @LC43C
7607: lda FILDRV
7608: @LC400:
7609: and #$01
7610: sta DRVNUM
7611: lda DRVCNT
7612: beq @LC434
7613: jsr LC63D
7614: beq @LC420
7615: jsr LC38F
7616: lda #$00
7617: sta DRVCNT
7618: jsr LC63D
7619: beq @LC439
7620: @LC41B:
7621: lda #ERRORCODE_74_DRIVE_NOT_READY
7622: jsr GenerateErrorMessage
7623:
7624: @LC420:
7625: jsr LC38F
7626: jsr LC63D
7627: php
7628: jsr LC38F
7629: plp
7630: beq @LC439
7631: lda #$00
7632: sta DRVCNT
7633: beq @LC439
7634: @LC434:
7635: jsr LC63D
7636: bne @LC41B
7637: @LC439:
7638: jmp LC100
7639: @LC43C:
7640: rol a
7641: jmp @LC400
7642:
7643:
7644: LC440:
7645: .byte $00,$80,$41,$01,$01,$01,$01,$81
7646: .byte $81,$81,$81,$42,$42,$42,$42
7647:
7648: LC44F:
7649: jsr LC3CA
7650: @LC452:
7651: lda #$00
7652: sta DELIND
7653: jsr LC5AC
7654: bne @LC475
7655: @LC45C:
7656: dec DRVCNT
7657: bpl @LC462
7658: rts
7659:
7660: @LC462:
7661: lda #$01
7662: sta DRVFLG
7663: jsr LC38F
7664: jsr LC100
7665: jmp @LC452
7666: @LC470:
7667: jsr LC617
7668: beq @LC485
7669: @LC475:
7670: jsr LC4D8
7671: lda FOUND
7672: beq @LC47E
7673: rts
7674: @LC47E:
7675: lda ENTFND
7676: bmi @LC470
7677: bpl @LC475
7678: @LC485:
7679: lda FOUND
7680: beq @LC45C
7681: rts
7682:
7683:
7684: LC48B:
7685: jsr LC604
7686: beq LC4AA
7687: bne LC4BA
7688: LC492:
7689: lda #$01
7690: sta DRVFLG
7691: jsr LC38F
7692: jsr LC100
7693: LC49D:
7694: lda #$00
7695: sta DELIND
7696: jsr LC5AC
7697: bne LC4BA
7698: sta FOUND
7699: LC4AA:
7700: lda FOUND
7701: bne LC4D7
7702: dec DRVCNT
7703: bpl LC492
7704: rts
7705:
7706:
7707: LC4B5:
7708: jsr LC617
7709: beq LC4AA
7710: LC4BA:
7711: jsr LC4D8
7712: ldx ENTFND
7713: bpl @LC4C9
7714: lda FOUND
7715: beq LC4B5
7716: bne LC4D7
7717: @LC4C9:
7718: lda TYPFLG
7719: beq LC4D7
7720: lda PATTYP,x
7721: and #$07
7722: cmp TYPFLG
7723: bne LC4B5
7724: LC4D7:
7725: rts
7726:
7727:
7728: LC4D8:
7729: ldx #$FF
7730: stx ENTFND
7731: inx
7732: stx PATFLG
7733: jsr LC589
7734: beq LC4EC
7735: LC4E6:
7736: rts
7737: LC4E7:
7738: jsr LC594
7739: bne LC4E6
7740: LC4EC:
7741: lda DRVNUM
7742: eor FILDRV,x
7743: lsr a
7744: bcc @LC4FE
7745: and #$40
7746: beq LC4E7
7747: lda #$02
7748: cmp DRVCNT
7749: beq LC4E7
7750: @LC4FE:
7751: lda FILTBL,x
7752: tax
7753: jsr LC6A6
7754: ldy #$03
7755: jmp @LC51D
7756: @LC50A:
7757: lda CMDBUF,x
7758: cmp (DIRBUF),y
7759: beq @LC51B
7760: cmp #$3F
7761: bne LC4E7
7762: lda (DIRBUF),y
7763: cmp #$A0
7764: beq LC4E7
7765: @LC51B:
7766: inx
7767: iny
7768: @LC51D:
7769: cpx LIMIT
7770: bcs @LC52B
7771: lda CMDBUF,x
7772: cmp #$2A
7773: beq @LC535
7774: bne @LC50A
7775: @LC52B:
7776: cpy #$13
7777: bcs @LC535
7778: lda (DIRBUF),y
7779: cmp #$A0
7780: bne LC4E7
7781: @LC535:
7782: ldx F2PTR
7783: stx ENTFND
7784: lda PATTYP,x
7785: and #$80
7786: sta PATFLG
7787: lda INDEX
7788: sta ENTIND,x
7789: lda SECTOR
7790: sta ENTSEC,x
7791: ldy #$00
7792: lda (DIRBUF),y
7793: iny
7794: pha
7795: and #$40
7796: sta T0
7797: pla
7798: and # ~ $20
7799: bmi @LC55C
7800: ora #$20
7801: @LC55C:
7802: and #$27
7803: ora T0
7804: sta T0
7805: lda #$80
7806: and PATTYP,x
7807: ora T0
7808: sta PATTYP,x
7809: lda FILDRV,x
7810: and #$80
7811: ora DRVNUM
7812: sta FILDRV,x
7813: lda (DIRBUF),y
7814: sta FILTRK,x
7815: iny
7816: lda (DIRBUF),y
7817: sta FILSEC,x
7818: lda REC
7819: bne LC589
7820: ldy #$15
7821: lda (DIRBUF),y
7822: sta REC
7823:
7824: LC589:
7825: lda #$FF
7826: sta FOUND
7827: lda F2CNT
7828: sta F2PTR
7829: LC594:
7830: dec F2PTR
7831: bpl @LC59A
7832: rts
7833:
7834: @LC59A:
7835: ldx F2PTR
7836: lda PATTYP,x
7837: bmi @LC5A6
7838: lda FILTRK,x
7839: bne LC594
7840: @LC5A6:
7841: lda #$00
7842: sta FOUND
7843: rts
7844:
7845:
7846: LC5AC:
7847: ldy #$00
7848: sty DELSEC
7849: dey
7850: sty ENTFND
7851: lda LFE85
7852: sta TRACK
7853: lda #$01
7854: sta SECTOR
7855: sta LSTBUF
7856: jsr LD475
7857: LC5C4:
7858: lda LSTBUF
7859: bne @LC5CA
7860: rts
7861: @LC5CA:
7862: lda #$07
7863: sta FILCNT
7864: lda #$00
7865: jsr LD4F6
7866: sta LSTBUF
7867: LC5D7:
7868: jsr LD4E8
7869: dec FILCNT
7870: ldy #$00
7871: lda (DIRBUF),y
7872: bne @LC5FB
7873: lda DELSEC
7874: bne LC617
7875: jsr LDE3B
7876: lda SECTOR
7877: sta DELSEC
7878: lda DIRBUF
7879: ldx DELIND
7880: sta DELIND
7881: beq LC617
7882: rts
7883:
7884:
7885: @LC5FB:
7886: ldx #$01
7887: cpx DELIND
7888: bne LC62F
7889: beq LC617
7890: LC604:
7891: lda LFE85
7892: sta TRACK
7893: lda DIRSEC
7894: sta SECTOR
7895: jsr LD475
7896: lda INDEX
7897: jsr LD4C8
7898: LC617:
7899: lda #$FF
7900: sta ENTFND
7901: lda FILCNT
7902: bmi @LC629
7903: lda #$20
7904: jsr LD1C6
7905: jmp LC5D7
7906:
7907:
7908: @LC629:
7909: jsr LD44D
7910: jmp LC5C4
7911: LC62F:
7912: lda DIRBUF
7913: sta INDEX
7914: jsr LDE3B
7915: lda SECTOR
7916: sta DIRSEC
7917: rts
7918:
7919:
7920: LC63D:
7921: lda AUTOFG
7922: bne LC669
7923: ldx DRVNUM
7924: lsr WPSW,x
7925: bcc LC669
7926: lda #$FF
7927: sta JOBRTN
7928: jsr LD00E
7929: ldy #$FF
7930: cmp #$02
7931: beq @LC65F
7932: cmp #$03
7933: beq @LC65F
7934: cmp #$0F
7935: beq @LC65F
7936: ldy #$00
7937: @LC65F:
7938: ldx DRVNUM
7939: .if CompileDrive >= DRIVE_1570
7940: jmp LA9A5
7941: .elseif CompileDrive >= DRIVE_1541C_02
7942: jmp LFFC0
7943: .else
7944: tya
7945: sta NODRV,x
7946: .endif
7947:
7948: LC664:
7949: bne LC669
7950: jsr LD042
7951: LC669:
7952: ldx DRVNUM
7953: .if CompileDrive >= DRIVE_1570
7954: jmp LAA17
7955: .elseif CompileDrive >= DRIVE_1541C_02
7956: jmp LFFAC
7957: .else
7958: lda NODRV,x
7959: rts
7960: .endif
7961:
7962: LC66E:
7963: pha
7964: jsr LC6A6
7965: jsr @LC688
7966: pla
7967: sec
7968: sbc STRSIZ
7969: tax
7970: beq @LC687
7971: bcc @LC687
7972: lda #$A0
7973: @LC681:
7974: sta (DIRBUF),y
7975: iny
7976: dex
7977: bne @LC681
7978: @LC687:
7979: rts
7980:
7981:
7982: @LC688:
7983: tya
7984: asl a
7985: tay
7986: lda BUFTAB0,y
7987: sta DIRBUF
7988: lda BUFTAB0 + 1,y
7989: sta DIRBUF + 1
7990: ldy #$00
7991: @LC697:
7992: lda CMDBUF,x
7993: sta (DIRBUF),y
7994: iny
7995: beq @LC6A5
7996: inx
7997: cpx LIMIT
7998: bcc @LC697
7999: @LC6A5:
8000: rts
8001:
8002:
8003: LC6A6:
8004: lda #$00
8005: sta STRSIZ
8006: txa
8007: pha
8008: @LC6AD:
8009: lda CMDBUF,x
8010: cmp #','
8011: beq @LC6C8
8012: cmp #'='
8013: beq @LC6C8
8014: inc STRSIZ
8015: inx
8016: lda #$0F
8017: cmp STRSIZ
8018: bcc @LC6C8
8019: cpx CMDSIZ
8020: bcc @LC6AD
8021: @LC6C8:
8022: stx LIMIT
8023: pla
8024: tax
8025: rts
8026:
8027:
8028: LC6CE:
8029: lda SA
8030: pha
8031: lda LINDX
8032: pha
8033: jsr @LC6DE
8034: pla
8035: sta LINDX
8036: pla
8037: sta SA
8038: rts
8039:
8040:
8041: @LC6DE:
8042: lda #$11
8043: sta SA
8044: jsr LD0EB
8045: jsr LD4E8
8046: lda ENTFND
8047: bpl @LC6F7
8048: lda DRVFLG
8049: bne @LC6FC
8050: jsr LC806
8051: clc
8052: rts
8053:
8054: @LC6F7:
8055: lda DRVFLG
8056: beq @LC71B
8057: @LC6FC:
8058: dec DRVFLG
8059: bne @LC70E
8060: dec DRVFLG
8061: jsr LC38F
8062: jsr LC806
8063: sec
8064: jmp LC38F
8065: @LC70E:
8066: lda #$00
8067: sta NBTEMP + 1
8068: sta DRVFLG
8069: jsr LC7B7
8070: sec
8071: rts
8072:
8073:
8074: @LC71B:
8075: ldx #$18
8076: ldy #$1D
8077: lda (DIRBUF),y
8078: sta NBTEMP + 1
8079: beq @LC728
8080: ldx #$16
8081: @LC728:
8082: dey
8083: lda (DIRBUF),y
8084: sta NBTEMP
8085: cpx #$16
8086: beq @LC73C
8087: cmp #$0A
8088: bcc @LC73C
8089: dex
8090: cmp #$64
8091: bcc @LC73C
8092: dex
8093: @LC73C:
8094: jsr LC7AC
8095: lda (DIRBUF),y
8096: pha
8097: asl a
8098: bpl @LC74A
8099: lda #$3C
8100: sta NAMBUF + 1,x
8101: @LC74A:
8102: pla
8103: and #$0F
8104: tay
8105: lda LFEC5,y
8106: sta NAMBUF,x
8107: dex
8108: lda LFEC0,y
8109: sta NAMBUF,x
8110: dex
8111: lda LFEBB,y
8112: sta NAMBUF,x
8113: dex
8114: dex
8115: bcs @LC76B
8116: lda #$2A
8117: sta NAMBUF + 1,x
8118: @LC76B:
8119: lda #$A0
8120: sta NAMBUF,x
8121: dex
8122: ldy #$12
8123: @LC773:
8124: lda (DIRBUF),y
8125: sta NAMBUF,x
8126: dex
8127: dey
8128: cpy #$03
8129: bcs @LC773
8130: lda #$22
8131: sta NAMBUF,x
8132: @LC783:
8133: inx
8134: cpx #$20
8135: bcs @LC793
8136: lda NAMBUF,x
8137: cmp #$22
8138: beq @LC793
8139: cmp #$A0
8140: bne @LC783
8141: @LC793:
8142: lda #$22
8143: sta NAMBUF,x
8144: @LC798:
8145: inx
8146: cpx #$20
8147: bcs @LC7A7
8148: lda #$7F
8149: and NAMBUF,x
8150: sta NAMBUF,x
8151: bpl @LC798
8152: @LC7A7:
8153: jsr LC4B5
8154: sec
8155: rts
8156:
8157:
8158: LC7AC:
8159: ldy #$1B
8160: lda #$20
8161: @LC7B0:
8162: sta L02B0,y
8163: dey
8164: bne @LC7B0
8165: rts
8166:
8167:
8168: LC7B7:
8169: jsr LF119
8170: jsr LF0DF
8171: jsr LC7AC
8172: lda #$FF
8173: sta T0
8174: ldx DRVNUM
8175: stx NBTEMP
8176: lda #$00
8177: sta NBTEMP + 1
8178: ldx JOBNUM
8179: lda TableHighBytesOfBuffers,x
8180: sta DIRBUF + 1
8181: lda LFE85 + 3
8182: sta DIRBUF
8183: ldy #$16
8184: lda (DIRBUF),y
8185: cmp #$A0
8186: bne @LC7ED
8187: lda #$31
8188: .byte ASM_BIT3
8189: @LC7E5:
8190: lda (DIRBUF),y
8191: cmp #$A0
8192: bne @LC7ED
8193: lda #$20
8194: @LC7ED:
8195: sta NAMBUF + 2,y
8196: dey
8197: bpl @LC7E5
8198: lda #$12
8199: sta NAMBUF
8200: lda #$22
8201: sta NAMBUF + 1
8202: sta NAMBUF + 18
8203: lda #$20
8204: sta NAMBUF + 19
8205: rts
8206:
8207:
8208: LC806:
8209: jsr LC7AC
8210: ldy #$0B
8211: @LC80B:
8212: lda TextBlocksFree,y
8213: sta NAMBUF,y
8214: dey
8215: bpl @LC80B
8216: jmp LEF4D
8217:
8218:
8219: TextBlocksFree:
8220: .byte "BLOCKS FREE."
8221:
8222: cmd_scratch:
8223: jsr LC398
8224: jsr LC320
8225: jsr LC3CA
8226: lda #$00
8227: sta R0
8228: jsr LC49D
8229: bmi @LC872
8230: @LC835:
8231: jsr LDDB7
8232: bcc @LC86D
8233: ldy #$00
8234: lda (DIRBUF),y
8235: and #$40
8236: bne @LC86D
8237: jsr LC8B6
8238: ldy #$13
8239: lda (DIRBUF),y
8240: beq @LC855
8241: sta TRACK
8242: iny
8243: lda (DIRBUF),y
8244: sta SECTOR
8245: jsr LC87D
8246: @LC855:
8247: ldx ENTFND
8248: lda #$20
8249: and PATTYP,x
8250: bne @LC86B
8251: lda FILTRK,x
8252: sta TRACK
8253: lda FILSEC,x
8254: sta SECTOR
8255: jsr LC87D
8256: @LC86B:
8257: inc R0
8258: @LC86D:
8259: jsr LC48B
8260: bpl @LC835
8261: @LC872:
8262: lda R0
8263: sta TRACK
8264: lda #ERRORCODE_01_FILES_SCRATCHED
8265: ldy #$00
8266: jmp LC1A3
8267:
8268:
8269: LC87D:
8270: jsr LEF5F
8271: jsr LD475
8272: jsr LF119
8273: lda BUF0,x
8274: cmp #$FF
8275: beq @LC894
8276: lda WBAM
8277: ora #$40
8278: sta WBAM
8279: @LC894:
8280: lda #$00
8281: jsr LD4C8
8282: jsr LD156
8283: sta TRACK
8284: jsr LD156
8285: sta SECTOR
8286: lda TRACK
8287: bne @LC8AD
8288: jsr LEEF4
8289: jmp LD227
8290: @LC8AD:
8291: jsr LEF5F
8292: jsr LD44D
8293: jmp @LC894
8294:
8295:
8296: LC8B6:
8297: ldy #$00
8298: tya
8299: sta (DIRBUF),y
8300: jsr LDE5E
8301: jmp LD599
8302:
8303:
8304: cmd_duplicate:
8305: Error31SyntaxError:
8306: lda #ERRORCODE_31_SYNTAX_ERROR
8307: jmp GenerateErrorMessage
8308:
8309:
8310: LC8C6:
8311: lda #ASM_JMP
8312: sta BUFFER3
8313: lda #<LFAC7
8314: sta BUFFER3 + 1
8315: lda #>LFAC7
8316: sta BUFFER3 + 2
8317: lda #$03
8318: jsr LD6D3
8319: lda DRVNUM
8320: ora #$E0
8321: sta JOBS3
8322: @LC8E0:
8323: lda JOBS3
8324: bmi @LC8E0
8325: cmp #$02
8326: bcc @LC8EF
8327: lda #$03
8328: ldx #$00
8329: jmp LE60A
8330: @LC8EF:
8331: rts
8332:
8333:
8334: cmd_copy:
8335: lda #$E0
8336: sta BUFUSE
8337: jsr LF0D1
8338: jsr LF119
8339: lda #$FF
8340: sta BUF0,x
8341: lda #$0F
8342: sta LINUSE
8343: jsr LC1E5
8344: bne @LC90C
8345: jmp Error31SyntaxError
8346: @LC90C:
8347: jsr LC1F8
8348: jsr LC320
8349: lda IMAGE
8350: and #'U'
8351: bne LC928
8352: ldx FILTBL
8353: lda CMDBUF,x
8354: cmp #'*'
8355: bne LC928
8356:
8357: Error30SyntaxError:
8358: lda #ERRORCODE_30_SYNTAX_ERROR
8359: jmp GenerateErrorMessage
8360:
8361:
8362: LC928:
8363: lda IMAGE
8364: and #$D9
8365: bne Error30SyntaxError
8366: jmp @LC952
8367: lda #$00
8368: sta REC
8369: sta DRVCNT
8370: sta FILTRK
8371: sta FILTRK + 1
8372: lda FILDRV + 1
8373: and #$01
8374: sta DRVNUM
8375: ora #$01
8376: sta DELSEC
8377: lda FILTBL + 1
8378: sta FILTBL
8379: rts
8380:
8381:
8382: @LC952:
8383: jsr LC44F
8384: lda F2CNT
8385: cmp #$03
8386: bcc @LC9A1
8387: lda FILDRV
8388: cmp FILDRV + 1
8389: bne @LC9A1
8390: lda ENTIND
8391: cmp ENTIND + 1
8392: bne @LC9A1
8393: lda ENTSEC
8394: cmp ENTSEC + 1
8395: bne @LC9A1
8396: jsr LCACC
8397: lda #$01
8398: sta F2PTR
8399: jsr LC9FA
8400: jsr LD125
8401: beq @LC982
8402: cmp #$02
8403: bne @LC987
8404: @LC982:
8405: lda #ERRORCODE_64_FILE_TYPE_MISMATCH
8406: jsr GenerateErrorMessage
8407: @LC987:
8408: lda #$12
8409: sta SA
8410: lda L023C
8411: sta L023D
8412: lda #$FF
8413: sta L023C
8414: jsr LDA2A
8415: ldx #$02
8416: jsr @LC9B9
8417: jmp CommandEnd
8418: @LC9A1:
8419: jsr @LC9A7
8420: jmp CommandEnd
8421:
8422:
8423: @LC9A7:
8424: jsr LCAE7
8425: lda FILDRV
8426: and #$01
8427: sta DRVNUM
8428: jsr LD486
8429: jsr LD6E4
8430: ldx F1CNT
8431: @LC9B9:
8432: stx F2PTR
8433: jsr LC9FA
8434: lda #$11
8435: sta SA
8436: jsr LD0EB
8437: jsr LD125
8438: bne @LC9CE
8439: jsr LCA53
8440: @LC9CE:
8441: lda #$08
8442: sta EIOFLG
8443: jmp @LC9D8
8444: @LC9D5:
8445: jsr LCF9B
8446: @LC9D8:
8447: jsr LCA35
8448: lda #$80
8449: jsr LDDA6
8450: beq @LC9D5
8451: jsr LD125
8452: beq @LC9EA
8453: jsr LCF9B
8454: @LC9EA:
8455: ldx F2PTR
8456: inx
8457: cpx F2CNT
8458: bcc @LC9B9
8459: lda #$12
8460: sta SA
8461: jmp LDB02
8462:
8463:
8464: LC9FA:
8465: ldx F2PTR
8466: lda FILDRV,x
8467: and #$01
8468: sta DRVNUM
8469: lda LFE85
8470: sta TRACK
8471: lda ENTSEC,x
8472: sta SECTOR
8473: jsr LD475
8474: ldx F2PTR
8475: lda ENTIND,x
8476: jsr LD4C8
8477: ldx F2PTR
8478: lda PATTYP,x
8479: and #$07
8480: sta TYPE
8481: lda #$00
8482: sta REC
8483: jsr LD9A0
8484: ldy #$01
8485: jsr LD125
8486: beq @LCA31
8487: iny
8488: @LCA31:
8489: tya
8490: jmp LD4C8
8491:
8492:
8493: LCA35:
8494: lda #$11
8495: sta SA
8496:
8497: LCA39:
8498: jsr LD39B
8499: sta DATA
8500: ldx LINDX
8501: lda CHNRDY,x
8502: and #$08
8503: sta EIOFLG
8504: bne @Rts
8505: jsr LD125
8506: beq @Rts
8507: lda #$80
8508: jsr LDD97
8509: @Rts:
8510: rts
8511:
8512:
8513: LCA53:
8514: jsr LD1D3
8515: jsr LE1CB
8516: lda SSIND
8517: pha
8518: lda SSNUM
8519: pha
8520: lda #$12
8521: sta SA
8522: jsr LD107
8523: jsr LD1D3
8524: jsr LE1CB
8525: jsr LE29C
8526: lda SSIND
8527: sta R1
8528: lda SSNUM
8529: sta R0
8530: lda #$00
8531: sta R2
8532: sta RECPTR
8533: sta RELPTR
8534: pla
8535: sta SSNUM
8536: pla
8537: sta SSIND
8538: jmp LE33B
8539:
8540:
8541: cmd_rename:
8542: jsr LC320
8543: lda FILDRV + 1
8544: and #$01
8545: sta FILDRV + 1
8546: cmp FILDRV
8547: beq @LCA97
8548: ora #$80
8549: @LCA97:
8550: sta FILDRV
8551: jsr LC44F
8552: jsr LCAE7
8553: lda FILDRV + 1
8554: and #$01
8555: sta DRVNUM
8556: lda ENTSEC + 1
8557: sta SECTOR
8558: jsr LDE57
8559: jsr LD599
8560: lda ENTIND + 1
8561: clc
8562: adc #$03
8563: jsr LD4C8
8564: jsr LDF93
8565: tay
8566: ldx FILTBL
8567: lda #$10
8568: jsr LC66E
8569: jsr LDE5E
8570: jsr LD599
8571: jmp CommandEnd
8572:
8573:
8574: LCACC:
8575: lda PATTYP + 1
8576: and #$07
8577: sta TYPE
8578: ldx F2CNT
8579: @LCAD6:
8580: dex
8581: cpx F1CNT
8582: bcc @Rts
8583: lda FILTRK,x
8584: bne @LCAD6
8585: lda #ERRORCODE_62_FILE_NOT_FOUND
8586: jmp GenerateErrorMessage
8587:
8588:
8589: @Rts:
8590: rts
8591:
8592:
8593: LCAE7:
8594: jsr LCACC
8595: @LCAEA:
8596: lda FILTRK,x
8597: beq @LCAF4
8598: lda #ERRORCODE_63_FILE_EXISTS
8599: jmp GenerateErrorMessage
8600:
8601:
8602: @LCAF4:
8603: dex
8604: bpl @LCAEA
8605: rts
8606:
8607:
8608:
8609:
8610:
8611:
8612:
8613:
8614:
8615:
8616:
8617:
8618: cmd_memory:
8619:
8620: lda CMDBUF + 1
8621: cmp #'-'
8622: bne @Error31SyntaxError
8623:
8624:
8625: lda CMDBUF + 3
8626: sta T0
8627: lda CMDBUF + 4
8628: sta T0+1
8629:
8630:
8631:
8632: ldy #$00
8633: lda CMDBUF + 2
8634:
8635:
8636: cmp #'R'
8637: beq @cmd_memory_read
8638:
8639: jsr NoOp
8640:
8641:
8642: cmp #'W'
8643: beq @cmd_memory_write
8644:
8645:
8646: cmp #'E'
8647: bne @Error31SyntaxError
8648:
8649:
8650: jmp (T0)
8651:
8652: @cmd_memory_read:
8653: lda (T0),y
8654: sta DATA
8655:
8656: lda CMDSIZ
8657: cmp #$06
8658: bcc @OnlyOneByte
8659:
8660: ldx CMDBUF + 5
8661: dex
8662: beq @OnlyOneByte
8663:
8664:
8665:
8666:
8667:
8668:
8669:
8670:
8671:
8672:
8673:
8674:
8675:
8676:
8677: txa
8678: clc
8679: adc T0
8680: inc T0
8681: sta LSTCHR + 5
8682:
8683: lda T0
8684: sta BUFTABERR
8685: lda T0+1
8686: sta BUFTABERR + 1
8687: jmp LD443
8688:
8689:
8690: @OnlyOneByte:
8691: jsr LD0EB
8692: jmp LD43A
8693:
8694:
8695: @Error31SyntaxError:
8696: lda #ERRORCODE_31_SYNTAX_ERROR
8697: jmp GenerateErrorMessage
8698:
8699:
8700: @cmd_memory_write:
8701:
8702:
8703:
8704:
8705:
8706: lda CMDBUF + 6,y
8707: sta (T0),y
8708: iny
8709: cpy CMDBUF + 5
8710: bcc @cmd_memory_write
8711: rts
8712:
8713:
8714:
8715:
8716:
8717:
8718:
8719:
8720:
8721:
8722:
8723:
8724:
8725:
8726:
8727:
8728:
8729:
8730:
8731:
8732:
8733:
8734:
8735: cmd_user:
8736: ldy CMDBUF + 1
8737: cpy #'0'
8738: bne NoU0Command
8739:
8740:
8741:
8742:
8743:
8744:
8745:
8746:
8747: InitJumpTableForUxCommands:
8748:
8749: .if CompileDrive >= DRIVE_1570
8750:
8751:
8752:
8753:
8754:
8755:
8756: jmp U0CommandPatch157x
8757:
8758:
8759: FillNOP 6
8760:
8761: .else
8762:
8763: lda #<AddressesUxCommands
8764: sta USRJMP
8765: lda #>AddressesUxCommands
8766: sta USRJMP + 1
8767: rts
8768:
8769: .endif
8770:
8771: NoU0Command:
8772: jsr @ExecuteUxCommand
8773: jmp CommandEnd
8774:
8775:
8776: @ExecuteUxCommand:
8777:
8778:
8779:
8780:
8781:
8782:
8783:
8784:
8785:
8786:
8787:
8788:
8789:
8790:
8791:
8792:
8793:
8794: dey
8795: tya
8796: and #$0F
8797: asl a
8798: tay
8799:
8800:
8801: lda (USRJMP),y
8802: sta IP
8803: iny
8804: lda (USRJMP),y
8805: sta IP + 1
8806:
8807: .if CompileDrive >= DRIVE_1570
8808:
8809:
8810: jmp Patch1570ExecutionOfUCommand
8811: .else
8812:
8813: jmp (IP)
8814: .endif
8815:
8816: LCB84:
8817: lda LSTDRV
8818: sta DRVNUM
8819: lda SA
8820: pha
8821: jsr LC63D
8822: pla
8823: sta SA
8824: ldx CMDSIZ
8825: dex
8826: bne LCBA5
8827: lda #$01
8828: jsr LD1E2
8829: jmp LCBF1
8830:
8831: Error70:
8832: lda #ERRORCODE_70_NO_CHANNEL
8833: jmp GenerateErrorMessage
8834:
8835:
8836: LCBA5:
8837: ldy #$01
8838: jsr CheckForAndSkipWhitespace
8839: ldx FILSEC
8840: cpx #$05
8841: bcs Error70
8842: lda #$00
8843: sta T0
8844: sta T1
8845: sec
8846: @LCBB8:
8847: rol T0
8848: rol T1
8849: dex
8850: bpl @LCBB8
8851: lda T0
8852: and BUFUSE
8853: bne Error70
8854: lda T1
8855: and BUFUSE + 1
8856: bne Error70
8857: lda T0
8858: ora BUFUSE
8859: sta BUFUSE
8860: lda T1
8861: ora BUFUSE + 1
8862: sta BUFUSE + 1
8863: lda #$00
8864: jsr LD1E2
8865: ldx LINDX
8866: lda FILSEC
8867: sta BUF0,x
8868: tax
8869: lda DRVNUM
8870: sta JOBS0,x
8871: sta LSTJOB,x
8872: LCBF1:
8873: ldx SA
8874: lda LINTAB,x
8875: ora #$40
8876: sta LINTAB,x
8877: ldy LINDX
8878: lda #$FF
8879: sta LSTCHR,y
8880: lda #$89
8881: sta CHNRDY,y
8882: lda BUF0,y
8883: sta L023E,y
8884: asl a
8885: tax
8886: lda #$01
8887: sta BUFTAB0,x
8888: lda #$0E
8889: sta FILTYP,y
8890: jmp CommandEnd
8891:
8892:
8893:
8894:
8895:
8896:
8897:
8898:
8899:
8900:
8901:
8902:
8903: cmd_block:
8904: ldy #$00
8905: ldx #$00
8906: lda #'-'
8907: jsr SearchInCmdline
8908: bne cmd_block_found_dash
8909:
8910:
8911:
8912: Error31SyntaxError_2:
8913: lda #ERRORCODE_31_SYNTAX_ERROR
8914: jmp GenerateErrorMessage
8915:
8916:
8917: Error30SyntaxError_2:
8918: lda #ERRORCODE_30_SYNTAX_ERROR
8919: jmp GenerateErrorMessage
8920:
8921:
8922: cmd_block_found_dash:
8923: txa
8924: bne Error30SyntaxError_2
8925:
8926:
8927: ldx #@CommandCharsTable_End - @CommandCharsTable - 1
8928: lda CMDBUF,y
8929: @SearchCommandChar:
8930: cmp @CommandCharsTable,x
8931: beq @FoundChar
8932: dex
8933: bpl @SearchCommandChar
8934: bmi Error31SyntaxError_2
8935:
8936:
8937: @FoundChar:
8938: txa
8939: ora #$80
8940: sta CMDNUM
8941: jsr ReadUpTo4NumericalParameter
8942:
8943: lda CMDNUM
8944: asl a
8945: tax
8946: lda @CommandAddress + 1,x
8947: sta T1
8948: lda @CommandAddress,x
8949: sta T0
8950: jmp (T0)
8951:
8952:
8953:
8954:
8955: @CommandCharsTable:
8956: .byte 'A','F','R','W','E','P'
8957: @CommandCharsTable_End:
8958:
8959:
8960: @CommandAddress:
8961: .addr cmd_block_allocate
8962: .addr cmd_block_free
8963: .addr cmd_block_read
8964: .addr cmd_block_write
8965: .addr cmd_block_execute
8966: .addr cmd_buffer_pointer
8967:
8968:
8969:
8970:
8971:
8972:
8973:
8974:
8975:
8976: ReadUpTo4NumericalParameter:
8977: ldy #$00
8978: ldx #$00
8979: lda #':'
8980: jsr SearchInCmdline
8981: bne CheckForAndSkipWhitespace
8982:
8983:
8984: ldy #$03
8985:
8986: CheckForAndSkipWhitespace:
8987: lda CMDBUF,y
8988: cmp #' '
8989: beq @SkipWhiteSpace
8990: cmp #PETSCII_CRSR_RIGHT
8991: beq @SkipWhiteSpace
8992: cmp #','
8993: bne @NoMoreWhiteSpace
8994:
8995: @SkipWhiteSpace:
8996: iny
8997: cpy CMDSIZ
8998: bcc CheckForAndSkipWhitespace
8999: rts
9000:
9001:
9002: @NoMoreWhiteSpace:
9003: jsr @ConvertParameterToBinary
9004: inc F1CNT
9005: ldy F2PTR
9006: cpx #$04
9007: bcc @SkipWhiteSpace
9008: bcs Error30SyntaxError_2
9009:
9010:
9011: @ConvertParameterToBinary:
9012: lda #$00
9013: sta T0
9014: sta T1
9015:
9016: sta T3
9017:
9018: ldx #-1
9019:
9020: @ReadInCharacter:
9021: lda CMDBUF,y
9022:
9023:
9024:
9025: cmp #'?' + 1
9026: bcs @NoDigit
9027: cmp #'0'
9028: bcc @NoDigit
9029: and #$0F
9030:
9031:
9032:
9033:
9034:
9035: pha
9036: lda T1
9037: sta T2
9038: lda T0
9039: sta T1
9040: pla
9041: sta T0
9042:
9043: iny
9044: cpy CMDSIZ
9045: bcc @ReadInCharacter
9046:
9047: @NoDigit:
9048: sty F2PTR
9049:
9050: clc
9051: lda #$00
9052:
9053:
9054:
9055:
9056: @NextDigit:
9057: inx
9058: cpx #3
9059: bcs @ConversionDone
9060:
9061: ldy T0,x
9062:
9063:
9064: @AddPowerOf10:
9065: dey
9066: bmi @NextDigit
9067: adc @PowersOf10,x
9068: bcc @AddPowerOf10
9069:
9070:
9071: clc
9072: inc T3
9073: bne @AddPowerOf10
9074:
9075:
9076: @ConversionDone:
9077:
9078:
9079: pha
9080: ldx F1CNT
9081: lda T3
9082: sta FILTRK,x
9083: pla
9084: sta FILSEC,x
9085: rts
9086:
9087:
9088: @PowersOf10:
9089: .byte 1, 10, 100
9090:
9091:
9092: cmd_block_free:
9093: jsr LCDF5
9094: jsr LEF5F
9095: jmp CommandEnd
9096: lda #$01
9097: sta WBAM
9098:
9099:
9100: cmd_block_allocate:
9101: jsr LCDF5
9102: lda SECTOR
9103: pha
9104: jsr LF1FA
9105: beq @LCD19
9106: pla
9107: cmp SECTOR
9108: bne @LCD2C
9109: jsr LEF90
9110: jmp CommandEnd
9111: @LCD19:
9112: pla
9113: @LCD1A:
9114: lda #$00
9115: sta SECTOR
9116: inc TRACK
9117: lda TRACK
9118: cmp MAXTRACK_ADJUSTED
9119: bcs Error65
9120: jsr LF1FA
9121: beq @LCD1A
9122: @LCD2C:
9123: lda #ERRORCODE_65_NO_BLOCK
9124: jsr LE645
9125:
9126: Error65:
9127: lda #ERRORCODE_65_NO_BLOCK
9128: jsr GenerateErrorMessage
9129: LCD36:
9130: jsr LCDF2
9131: jmp LD460
9132:
9133:
9134: LCD3C:
9135: jsr LD12F
9136: lda (BUFTAB0,x)
9137: rts
9138:
9139:
9140: LCD42:
9141: jsr LCD36
9142: lda #$00
9143: jsr LD4C8
9144: jsr LCD3C
9145: sta LSTCHR,y
9146: lda #$89
9147: sta CHNRDY,y
9148: rts
9149:
9150: cmd_block_read:
9151: jsr LCD42
9152: jsr LD3EC
9153: jmp CommandEnd
9154:
9155: CMD_U1:
9156: jsr ReadUpTo4NumericalParameter
9157: jsr LCD42
9158: lda LSTCHR,y
9159: sta L023E,y
9160: lda #$FF
9161: sta LSTCHR,y
9162: jmp CommandEnd
9163:
9164: cmd_block_write:
9165: jsr LCDF2
9166: jsr LD4E8
9167: tay
9168: dey
9169: cmp #$02
9170: bcs @LCD81
9171: ldy #$01
9172: @LCD81:
9173: lda #$00
9174: jsr LD4C8
9175: tya
9176: jsr LCFF1
9177: txa
9178: pha
9179: jsr LD464
9180: pla
9181: tax
9182: .if CompileDrive >= DRIVE_1570
9183: jsr LFFAE
9184: .elseif CompileDrive >= DRIVE_1541C_02
9185: jsr LC024
9186: .else
9187: jsr LD3EE
9188: .endif
9189: jmp CommandEnd
9190:
9191: CMD_U2:
9192: jsr ReadUpTo4NumericalParameter
9193: jsr LCDF2
9194: jsr LD464
9195: jmp CommandEnd
9196:
9197:
9198: cmd_block_execute:
9199: jsr NoOp
9200: jsr LCD36
9201:
9202: lda #$00
9203: sta T0
9204: ldx JOBNUM
9205: lda TableHighBytesOfBuffers,x
9206: sta T0+1
9207: jsr @Execute
9208: jmp CommandEnd
9209:
9210:
9211: @Execute:
9212: jmp (T0)
9213:
9214:
9215: cmd_buffer_pointer:
9216: jsr LCDD2
9217: lda JOBNUM
9218: asl a
9219: tax
9220: lda FILSEC + 1
9221: sta BUFTAB0,x
9222: jsr LD12F
9223: jsr LD3EE
9224: jmp CommandEnd
9225:
9226:
9227: LCDD2:
9228: ldx F1PTR
9229: inc F1PTR
9230: lda FILSEC,x
9231: tay
9232: dey
9233: dey
9234: cpy #$0C
9235: bcc @LCDE5
9236: @Err70NoChannel:
9237: lda #ERRORCODE_70_NO_CHANNEL
9238: jmp GenerateErrorMessage
9239:
9240:
9241: @LCDE5:
9242: sta SA
9243: jsr LD0EB
9244: bcs @Err70NoChannel
9245: jsr LDF93
9246: sta JOBNUM
9247: rts
9248:
9249:
9250: LCDF2:
9251: jsr LCDD2
9252: LCDF5:
9253: ldx F1PTR
9254: lda FILSEC,x
9255: and #$01
9256: sta DRVNUM
9257: lda FILSEC + 2,x
9258: sta SECTOR
9259: lda FILSEC + 1,x
9260: sta TRACK
9261: jsr LD55F
9262: jmp LC100
9263:
9264:
9265: LCE0E:
9266: jsr @LCE2C
9267: jsr LCE6E
9268: lda ACCUM + 1
9269: sta RELPTR
9270: jsr LCE71
9271: inc RELPTR
9272: inc RELPTR
9273: lda RESULT
9274: sta SSNUM
9275: lda ACCUM + 1
9276: asl a
9277: clc
9278: adc #$10
9279: sta SSIND
9280: rts
9281:
9282:
9283: @LCE2C:
9284: jsr LCED9
9285: sta ACCUM + 3
9286: ldx LINDX
9287: lda RECL,x
9288: sta ACCUM + 1
9289: lda RECH,x
9290: sta ACCUM + 2
9291: bne @LCE41
9292: lda ACCUM + 1
9293: beq @LCE4C
9294: @LCE41:
9295: lda ACCUM + 1
9296: sec
9297: sbc #$01
9298: sta ACCUM + 1
9299: bcs @LCE4C
9300: dec ACCUM + 2
9301: @LCE4C:
9302: lda RS,x
9303: sta T0
9304: @LCE50:
9305: lsr T0
9306: bcc @LCE57
9307: jsr LCEED
9308: @LCE57:
9309: jsr LCEE5
9310: lda T0
9311: bne @LCE50
9312: lda RECPTR
9313: clc
9314: adc RESULT
9315: sta RESULT
9316: bcc @LCE6D
9317: inc RESULT + 1
9318: bne @LCE6D
9319: inc RESULT + 2
9320: @LCE6D:
9321: rts
9322:
9323:
9324: LCE6E:
9325: lda #$FE
9326: .byte ASM_BIT3
9327: LCE71:
9328: lda #$78
9329: sta T0
9330: ldx #$03
9331: @LCE77:
9332: lda ACCUM,x
9333: pha
9334: lda R4,x
9335: sta ACCUM,x
9336: pla
9337: sta R4,x
9338: dex
9339: bne @LCE77
9340: jsr LCED9
9341: @LCE87:
9342: ldx #$00
9343: @LCE89:
9344: lda ACCUM + 1,x
9345: sta ACCUM,x
9346: inx
9347: cpx #$04
9348: bcc @LCE89
9349: lda #$00
9350: sta ACCUM + 3
9351: bit T0
9352: bmi @LCEA3
9353: asl ACCUM
9354: php
9355: lsr ACCUM
9356: plp
9357: jsr LCEE6
9358: @LCEA3:
9359: jsr LCEED
9360: jsr LCEE5
9361: bit T0
9362: bmi @LCEB0
9363: jsr LCEE2
9364: @LCEB0:
9365: lda ACCUM
9366: clc
9367: adc ACCUM + 1
9368: sta ACCUM + 1
9369: bcc @LCEBF
9370: inc ACCUM + 2
9371: bne @LCEBF
9372: inc ACCUM + 3
9373: @LCEBF:
9374: lda ACCUM + 3
9375: ora ACCUM + 2
9376: bne @LCE87
9377: lda ACCUM + 1
9378: sec
9379: sbc T0
9380: bcc @LCED8
9381: inc RESULT
9382: bne @LCED6
9383: inc RESULT + 1
9384: bne @LCED6
9385: inc RESULT + 2
9386: @LCED6:
9387: sta ACCUM + 1
9388: @LCED8:
9389: rts
9390:
9391:
9392: LCED9:
9393: lda #$00
9394: sta RESULT
9395: sta RESULT + 1
9396: sta RESULT + 2
9397: rts
9398:
9399:
9400: LCEE2:
9401: jsr LCEE5
9402: LCEE5:
9403: clc
9404: LCEE6:
9405: rol ACCUM + 1
9406: rol ACCUM + 2
9407: rol ACCUM + 3
9408: rts
9409:
9410:
9411: LCEED:
9412: clc
9413: ldx #$FD
9414: @LCEF0:
9415: lda RESULT + 3,x
9416: adc ACCUM + 4,x
9417: sta RESULT + 3,x
9418: inx
9419: bne @LCEF0
9420: rts
9421:
9422: LCEFA:
9423: ldx #$00
9424: :
9425: txa
9426: sta LRUTBL,x
9427: inx
9428: cpx #$04
9429: bne :-
9430: lda #$06
9431: sta LRUTBL,x
9432: rts
9433:
9434:
9435: LCF09:
9436: ldy #$04
9437: ldx LINDX
9438: @LCF0D:
9439: lda LRUTBL,y
9440: stx LRUTBL,y
9441: cmp LINDX
9442: beq @Rts
9443: dey
9444: bmi LCEFA
9445: tax
9446: jmp @LCF0D
9447:
9448:
9449: @Rts:
9450: rts
9451:
9452:
9453: LCF1E:
9454: jsr LCF09
9455: jsr LDFB7
9456: bne @LCF6C
9457: jsr LD1D3
9458: jsr LD28E
9459: bmi Error70_2
9460: jsr LDFC2
9461: lda TRACK
9462: pha
9463: lda SECTOR
9464: pha
9465: lda #$01
9466: jsr LD4F6
9467: sta SECTOR
9468: lda #$00
9469: jsr LD4F6
9470: sta TRACK
9471: beq @LCF66
9472: jsr LD125
9473: beq @LCF57
9474: jsr LDDAB
9475: bne @LCF57
9476: jsr LCF8C
9477: jmp @LCF5D
9478:
9479:
9480: @LCF57:
9481: jsr LCF8C
9482: jsr LDE57
9483: @LCF5D:
9484: pla
9485: sta SECTOR
9486: pla
9487: sta TRACK
9488: jmp @LCF6F
9489:
9490:
9491: @LCF66:
9492: pla
9493: sta SECTOR
9494: pla
9495: sta TRACK
9496: @LCF6C:
9497: jsr LCF8C
9498: @LCF6F:
9499: jsr LDF93
9500: tax
9501: jmp LD599
9502:
9503:
9504: Error70_2:
9505: lda #ERRORCODE_70_NO_CHANNEL
9506: jmp GenerateErrorMessage
9507:
9508:
9509: LCF7B:
9510: jsr LCF09
9511: jsr LDFB7
9512: bne @Rts
9513: jsr LD28E
9514: bmi Error70_2
9515: jsr LDFC2
9516: @Rts:
9517: rts
9518:
9519:
9520: LCF8C:
9521: ldx LINDX
9522: lda BUF0,x
9523: eor #$80
9524: sta BUF0,x
9525: lda BUF1,x
9526: eor #$80
9527: sta BUF1,x
9528: rts
9529:
9530:
9531: LCF9B:
9532: ldx #$12
9533: stx SA
9534: jsr LD107
9535: jsr LC100
9536: jsr LD125
9537: bcc @LCFAF
9538: lda #$20
9539: jsr LDD9D
9540: @LCFAF:
9541: lda SA
9542: cmp #$0F
9543: beq LCFD8
9544: bne LCFBF
9545:
9546:
9547: LCFB7:
9548: lda ORGSA
9549: and #$8F
9550: cmp #$0F
9551: bcs LCFD8
9552: LCFBF:
9553: jsr LD125
9554: bcs @LCFC9
9555: lda DATA
9556: jmp LD19D
9557:
9558:
9559: @LCFC9:
9560: bne @LCFCE
9561: jmp LE0AB
9562:
9563:
9564: @LCFCE:
9565: lda DATA
9566: jsr LCFF1
9567: ldy LINDX
9568: jmp LD3EE
9569:
9570:
9571: LCFD8:
9572: lda #$04
9573: sta LINDX
9574: jsr LD4E8
9575: cmp #$2A
9576: beq @LCFE8
9577: lda DATA
9578: jsr LCFF1
9579: @LCFE8:
9580: lda EIOFLG
9581: beq @LCFED
9582: rts
9583:
9584:
9585: @LCFED:
9586: inc CMDWAT
9587: rts
9588:
9589:
9590:
9591: LCFF1:
9592: pha
9593: jsr LDF93
9594: bpl LCFFD
9595: pla
9596: lda #ERRORCODE_61_FILE_NOT_OPEN
9597: jmp GenerateErrorMessage
9598:
9599:
9600: LCFFD:
9601: asl a
9602: tax
9603: pla
9604: sta (BUFTAB0,x)
9605: inc BUFTAB0,x
9606: rts
9607:
9608:
9609: cmd_init:
9610: jsr LC1D1
9611: .if CompileDrive >= DRIVE_1571_05
9612: jsr LABA6
9613: .else
9614: jsr LD042
9615: .endif
9616: jmp CommandEnd
9617:
9618:
9619: LD00E:
9620: jsr LF10F
9621: tay
9622: ldx BUF0,y
9623: cpx #$FF
9624: bne @LD02C
9625: pha
9626: jsr LD28E
9627: tax
9628: bpl @LD024
9629: lda #ERRORCODE_70_NO_CHANNEL
9630: .if CompileDrive >= DRIVE_1571_05
9631: jsr LE645
9632: .else
9633: jsr LE648
9634: .endif
9635:
9636: @LD024:
9637: pla
9638: tay
9639: txa
9640: ora #$80
9641: sta BUF0,y
9642: @LD02C:
9643: txa
9644: and #$0F
9645: sta JOBNUM
9646: ldx #$00
9647: stx SECTOR
9648: ldx LFE85
9649: stx TRACK
9650: jsr LD6D3
9651: lda #$B0
9652:
9653: .if CompileDrive >= DRIVE_1571
9654: jmp LA6E5
9655: .else
9656: jmp LD58C
9657: .endif
9658:
9659:
9660: LD042:
9661: jsr LF0D1
9662: jsr LD313
9663: jsr LD00E
9664: ldx DRVNUM
9665: lda #$00
9666: sta MDIRTY,x
9667: txa
9668: asl a
9669: tax
9670: lda HEADER
9671: sta DiskID0,x
9672: lda HEADER + 1
9673: sta DiskID0 + 1,x
9674: .if CompileDrive >= DRIVE_1571_05
9675: jsr LA667_PATCH
9676: .elseif CompileDrive >= DRIVE_1571
9677: jsr LA667
9678: .else
9679: jsr LD586
9680: .endif
9681: lda JOBNUM
9682: asl a
9683: tax
9684: lda #$02
9685: sta BUFTAB0,x
9686: lda (BUFTAB0,x)
9687: ldx DRVNUM
9688: sta DSKVER,x
9689: lda #$00
9690: .if CompileDrive >= DRIVE_1570
9691: jmp LAA1D
9692: FillNOP 1
9693: .elseif CompileDrive >= DRIVE_1541C_02
9694: jmp LFFC7
9695: FillNOP 1
9696: .else
9697: sta WPSW,x
9698: sta NODRV,x
9699: .endif
9700: LD075:
9701: jsr LEF3A
9702: ldy #$04
9703: lda #$00
9704: tax
9705: LD07D:
9706: clc
9707: adc (BMPNT),y
9708: bcc LD083
9709: inx
9710: LD083:
9711: iny
9712: iny
9713: iny
9714: iny
9715: cpy #$48
9716: beq LD083
9717: cpy #$90
9718: bne LD07D
9719: pha
9720: txa
9721: ldx DRVNUM
9722: sta NDBH,x
9723: pla
9724: .if CompileDrive >= DRIVE_1571
9725: jmp LA951
9726: .else
9727: sta NDBL,x
9728: .endif
9729: rts
9730: LD09B:
9731: jsr LD6D0
9732: jsr LD0C3
9733: jsr LD599
9734: jsr LD137
9735: sta TRACK
9736: jsr LD137
9737: sta SECTOR
9738: rts
9739: LD0AF:
9740: jsr LD09B
9741: lda TRACK
9742: bne LD0B7
9743: rts
9744: LD0B7:
9745: jsr LCF1E
9746: jsr LD6D0
9747: jsr LD0C3
9748: jmp LCF1E
9749: LD0C3:
9750: lda #$80
9751: bne LD0C9
9752: LD0C7:
9753: lda #$90
9754: LD0C9:
9755: sta CMD
9756: jsr LDF93
9757: tax
9758: jsr LD506
9759: txa
9760: pha
9761: asl a
9762: tax
9763: lda #$00
9764: sta BUFTAB0,x
9765: jsr LD125
9766: cmp #$04
9767: bcs LD0E8
9768: inc RECL,x
9769: bne LD0E8
9770: inc RECH,x
9771: LD0E8:
9772: pla
9773: tax
9774: rts
9775: LD0EB:
9776: lda SA
9777: cmp #$13
9778: bcc LD0F3
9779: and #$0F
9780: LD0F3:
9781: cmp #$0F
9782: bne LD0F9
9783: lda #$10
9784: LD0F9:
9785: tax
9786: sec
9787: lda LINTAB,x
9788: bmi LD106
9789: and #$0F
9790: sta LINDX
9791: tax
9792: clc
9793: LD106:
9794: rts
9795: LD107:
9796: lda SA
9797: cmp #$13
9798: bcc LD10F
9799: and #$0F
9800: LD10F:
9801: tax
9802: lda LINTAB,x
9803: tay
9804: asl a
9805: bcc LD121
9806: bmi LD123
9807: LD119:
9808: tya
9809: and #$0F
9810: sta LINDX
9811: tax
9812: clc
9813: rts
9814: LD121:
9815: bmi LD119
9816: LD123:
9817: sec
9818: rts
9819: LD125:
9820: ldx LINDX
9821: lda FILTYP,x
9822: lsr a
9823: and #$07
9824: cmp #$04
9825: rts
9826: LD12F:
9827: jsr LDF93
9828: asl a
9829: tax
9830: ldy LINDX
9831: rts
9832: LD137:
9833: jsr LD12F
9834: lda LSTCHR,y
9835: beq LD151
9836: lda (BUFTAB0,x)
9837: pha
9838: lda BUFTAB0,x
9839: cmp LSTCHR,y
9840: bne LD14D
9841: lda #$FF
9842: sta BUFTAB0,x
9843: LD14D:
9844: pla
9845: inc BUFTAB0,x
9846: rts
9847: LD151:
9848: lda (BUFTAB0,x)
9849: inc BUFTAB0,x
9850: rts
9851: LD156:
9852: jsr LD137
9853: bne LD191
9854: sta DATA
9855: lda LSTCHR,y
9856: beq LD16A
9857: lda #$80
9858: sta CHNRDY,y
9859: lda DATA
9860: rts
9861: LD16A:
9862: jsr LCF1E
9863: lda #$00
9864: jsr LD4C8
9865: jsr LD137
9866: cmp #$00
9867: beq LD192
9868: sta TRACK
9869: jsr LD137
9870: sta SECTOR
9871: jsr LCF1E
9872: jsr LD1D3
9873: jsr LD6D0
9874: jsr LD0C3
9875: jsr LCF1E
9876: lda DATA
9877: LD191:
9878: rts
9879: LD192:
9880: jsr LD137
9881: ldy LINDX
9882: sta LSTCHR,y
9883: lda DATA
9884: rts
9885: LD19D:
9886: jsr LCFF1
9887: beq LD1A3
9888: rts
9889: LD1A3:
9890: jsr LD1D3
9891: jsr LF11E
9892: lda #$00
9893: jsr LD4C8
9894: lda TRACK
9895: jsr LCFF1
9896: lda SECTOR
9897: jsr LCFF1
9898: jsr LD0C7
9899: jsr LCF1E
9900: jsr LD6D0
9901: lda #$02
9902: jmp LD4C8
9903: LD1C6:
9904: sta T0
9905: jsr LD4E8
9906: clc
9907: adc T0
9908: sta BUFTAB0,x
9909: sta DIRBUF
9910: rts
9911: LD1D3:
9912: jsr LDF93
9913: tax
9914: lda LSTJOB,x
9915: and #$01
9916: sta DRVNUM
9917: rts
9918: LD1DF:
9919: sec
9920: bcs LD1E3
9921: LD1E2:
9922: clc
9923: LD1E3:
9924: php
9925: sta T0
9926: jsr LD227
9927: jsr LD37F
9928: sta LINDX
9929: ldx SA
9930: plp
9931: bcc LD1F5
9932: ora #$80
9933: LD1F5:
9934: sta LINTAB,x
9935: and #$3F
9936: tay
9937: lda #$FF
9938: sta BUF0,y
9939: sta BUF1,y
9940: sta SS,y
9941: dec T0
9942: bmi LD226
9943: jsr LD28E
9944: bpl LD217
9945: LD20F:
9946: jsr LD25A
9947: lda #ERRORCODE_70_NO_CHANNEL
9948: jmp GenerateErrorMessage
9949:
9950:
9951: LD217:
9952: sta BUF0,y
9953: dec T0
9954: bmi LD226
9955: jsr LD28E
9956: bmi LD20F
9957: sta BUF1,y
9958: LD226:
9959: rts
9960: LD227:
9961: lda SA
9962: cmp #$0F
9963: bne LD22E
9964: rts
9965: LD22E:
9966: ldx SA
9967: lda LINTAB,x
9968: cmp #$FF
9969: beq @LD259
9970: and #$3F
9971: sta LINDX
9972: lda #$FF
9973: sta LINTAB,x
9974: ldx LINDX
9975: lda #$00
9976: sta CHNRDY,x
9977: jsr LD25A
9978: ldx LINDX
9979: lda #$01
9980: @LD24D:
9981: dex
9982: bmi @LD253
9983: asl a
9984: bne @LD24D
9985: @LD253:
9986: ora LINUSE
9987: sta LINUSE
9988: @LD259:
9989: rts
9990:
9991:
9992: LD25A:
9993: ldx LINDX
9994: lda BUF0,x
9995: cmp #$FF
9996: beq @LD26B
9997: pha
9998: lda #$FF
9999: sta BUF0,x
10000: pla
10001: jsr LD2F3
10002: @LD26B:
10003: ldx LINDX
10004: lda BUF1,x
10005: cmp #$FF
10006: beq @LD27C
10007: pha
10008: lda #$FF
10009: sta BUF1,x
10010: pla
10011: jsr LD2F3
10012: @LD27C:
10013: ldx LINDX
10014: lda SS,x
10015: cmp #$FF
10016: beq @LD28D
10017: pha
10018: lda #$FF
10019: sta SS,x
10020: pla
10021: jsr LD2F3
10022: @LD28D:
10023: rts
10024:
10025:
10026: LD28E:
10027: tya
10028: pha
10029: ldy #$01
10030: jsr LD2BA
10031: bpl LD2A3
10032: dey
10033: jsr LD2BA
10034: bpl LD2A3
10035: jsr LD339
10036: tax
10037: bmi LD2B6
10038: LD2A3:
10039: lda JOBS0,x
10040: bmi LD2A3
10041: lda DRVNUM
10042: sta JOBS0,x
10043: sta LSTJOB,x
10044: txa
10045: asl a
10046: tay
10047: lda #$02
10048: sta BUFTAB0,y
10049: LD2B6:
10050: pla
10051: tay
10052: txa
10053: rts
10054: LD2BA:
10055: ldx #$07
10056: LD2BC:
10057: lda BUFUSE,y
10058: and LEFE9,x
10059: beq LD2C8
10060: dex
10061: bpl LD2BC
10062: rts
10063: LD2C8:
10064: lda BUFUSE,y
10065: eor LEFE9,x
10066: sta BUFUSE,y
10067: txa
10068: dey
10069: bmi LD2D8
10070: clc
10071: adc #$08
10072: LD2D8:
10073: tax
10074: LD2D9:
10075: rts
10076: LD2DA:
10077: ldx LINDX
10078: lda BUF0,x
10079: bmi LD2E9
10080: txa
10081: clc
10082: adc #$07
10083: tax
10084: lda BUF0,x
10085: bpl LD2D9
10086: LD2E9:
10087: cmp #$FF
10088: beq LD2D9
10089: pha
10090: lda #$FF
10091: sta BUF0,x
10092: pla
10093:
10094: LD2F3:
10095: and #$0F
10096: tay
10097: iny
10098: ldx #$10
10099: LD2F9:
10100: ror BUFUSE + 1
10101: ror BUFUSE
10102: dey
10103: bne LD303
10104: clc
10105: LD303:
10106: dex
10107: bpl LD2F9
10108: rts
10109: LD307:
10110: lda #$0E
10111: sta SA
10112: LD30B:
10113: jsr LD227
10114: dec SA
10115: bne LD30B
10116: rts
10117:
10118: LD313:
10119: lda #$0E
10120: sta SA
10121: LD317:
10122: ldx SA
10123: lda LINTAB,x
10124: cmp #$FF
10125: beq LD334
10126: and #$3F
10127: sta LINDX
10128: jsr LDF93
10129: tax
10130: lda LSTJOB,x
10131: and #$01
10132: cmp DRVNUM
10133: bne LD334
10134: jsr LD227
10135: LD334:
10136: dec SA
10137: bpl LD317
10138: rts
10139: LD339:
10140: lda T0
10141: pha
10142: ldy #$00
10143: LD33E:
10144: ldx LRUTBL,y
10145: lda BUF0,x
10146: bpl LD348
10147: cmp #$FF
10148: bne LD35E
10149: LD348:
10150: txa
10151: clc
10152: adc #$07
10153: tax
10154: lda BUF0,x
10155: bpl LD355
10156: cmp #$FF
10157: bne LD35E
10158: LD355:
10159: iny
10160: cpy #$05
10161: bcc LD33E
10162: ldx #$FF
10163: bne LD37A
10164: LD35E:
10165: stx T0
10166: and #$3F
10167: tax
10168: LD363:
10169: lda JOBS0,x
10170: bmi LD363
10171: .if CompileDrive >= DRIVE_1571_05
10172: jmp LAA3F
10173: FillNOP 1
10174: .elseif CompileDrive >= DRIVE_1571
10175: cmp #$02
10176: bcc LD373
10177: .elseif CompileDrive >= DRIVE_1570
10178: jmp LAA3F
10179: FillNOP 1
10180: .elseif CompileDrive >= DRIVE_1541C_02
10181: jmp LFF91
10182: FillNOP 1
10183: .else
10184: cmp #$02
10185: bcc LD373
10186: .endif
10187: LD36B:
10188: ldx T0
10189: cpx #$07
10190: bcc LD348
10191: bcs LD355
10192: LD373:
10193: ldy T0
10194: lda #$FF
10195: sta BUF0,y
10196: LD37A:
10197: pla
10198: sta T0
10199: txa
10200: rts
10201: LD37F:
10202: ldy #$00
10203: lda #$01
10204: LD383:
10205: bit LINUSE
10206: bne LD391
10207: iny
10208: asl a
10209: bne LD383
10210: lda #ERRORCODE_70_NO_CHANNEL
10211: jmp GenerateErrorMessage
10212:
10213:
10214: LD391:
10215: eor #$FF
10216: and LINUSE
10217: sta LINUSE
10218: tya
10219: rts
10220: LD39B:
10221: jsr LD0EB
10222: jsr LC100
10223: jsr LD3AA
10224: ldx LINDX
10225: lda L023E,x
10226: rts
10227: LD3AA:
10228: ldx LINDX
10229: jsr LD125
10230: bne LD3B4
10231: jmp LE120
10232: LD3B4:
10233: lda SA
10234: cmp #$0F
10235: beq LD414
10236: lda CHNRDY,x
10237: and #$08
10238: bne LD3D3
10239: jsr LD125
10240: cmp #$07
10241: bne LD3CE
10242: lda #$89
10243: sta CHNRDY,x
10244: jmp LD3DE
10245: LD3CE:
10246: lda #$00
10247: sta CHNRDY,x
10248: rts
10249: LD3D3:
10250: lda SA
10251: beq LD409
10252: jsr LD125
10253: cmp #$04
10254: bcc LD400
10255: LD3DE:
10256: jsr LD12F
10257: lda BUFTAB0,x
10258: cmp LSTCHR,y
10259: bne LD3EC
10260: lda #$00
10261: sta BUFTAB0,x
10262: LD3EC:
10263: inc BUFTAB0,x
10264: LD3EE:
10265: lda (BUFTAB0,x)
10266: sta L023E,y
10267: lda BUFTAB0,x
10268: cmp LSTCHR,y
10269: bne LD3FF
10270: lda #$81
10271: sta CHNRDY,y
10272: LD3FF:
10273: rts
10274: LD400:
10275: jsr LD156
10276: LD403:
10277: ldx LINDX
10278: sta L023E,x
10279: rts
10280: LD409:
10281: lda DIRLST
10282: beq LD400
10283: jsr LED67
10284: jmp LD403
10285: LD414:
10286: jsr LD4E8
10287: cmp #<(ERRBUF - 1)
10288: bne LD433
10289: lda DIRBUF + 1
10290: cmp #>(ERRBUF - 1)
10291: bne LD433
10292: lda #$0D
10293: sta DATA
10294: jsr LC123
10295: lda #ERRORCODE_00_OK
10296: jsr SetErrorCodeNoTS
10297: dec BUFTABERR
10298: lda #$80
10299: bne LD445
10300: LD433:
10301: jsr LD137
10302: sta DATA
10303: bne LD443
10304: LD43A:
10305: lda #<(ERRBUF - 1)
10306: jsr LD4C8
10307: lda #$02
10308: sta BUFTAB0 + 1,x
10309: LD443:
10310: lda #$88
10311: LD445:
10312: sta CHNRDY + 5
10313: lda DATA
10314: sta L0243
10315: rts
10316: LD44D:
10317: jsr LDF93
10318: asl a
10319: tax
10320: lda #$00
10321: sta BUFTAB0,x
10322: lda (BUFTAB0,x)
10323: beq LD45F
10324: dec BUFTAB0,x
10325: jmp LD156
10326: LD45F:
10327: rts
10328: LD460:
10329: lda #$80
10330: bne LD466
10331: LD464:
10332: lda #$90
10333: LD466:
10334: ora DRVNUM
10335: sta CMD
10336: lda JOBNUM
10337: jsr LD6D3
10338: ldx JOBNUM
10339: jmp LD593
10340: LD475:
10341: lda #$01
10342: LD477:
10343: sta TYPE
10344: lda #$11
10345: sta SA
10346: jsr LDC46
10347: lda #$02
10348: jmp LD4C8
10349: LD486:
10350: lda #$12
10351: sta SA
10352: jmp LDCDA
10353: LD48D:
10354: jsr LDE3B
10355: lda #$01
10356: sta T0
10357: lda SECINC
10358: pha
10359: lda #$03
10360: sta SECINC
10361: jsr LF12D
10362: pla
10363: sta SECINC
10364: lda #$00
10365: jsr LD4C8
10366: lda TRACK
10367: jsr LCFF1
10368: lda SECTOR
10369: jsr LCFF1
10370: jsr LD0C7
10371: jsr LD599
10372: lda #$00
10373: jsr LD4C8
10374: LD4BB:
10375: jsr LCFF1
10376: bne LD4BB
10377: jsr LCFF1
10378: lda #$FF
10379: jmp LCFF1
10380: LD4C8:
10381: sta T0
10382: jsr LDF93
10383: asl a
10384: tax
10385: lda BUFTAB0 + 1,x
10386: sta DIRBUF + 1
10387: lda T0
10388: sta BUFTAB0,x
10389: sta DIRBUF
10390: rts
10391: LD4DA:
10392: lda #$11
10393: sta SA
10394: jsr LD227
10395: lda #$12
10396: sta SA
10397: jmp LD227
10398:
10399: LD4E8:
10400: jsr LDF93
10401: LD4EB:
10402: asl a
10403: tax
10404: lda BUFTAB0 + 1,x
10405: sta DIRBUF + 1
10406: lda BUFTAB0,x
10407: sta DIRBUF
10408: rts
10409: LD4F6:
10410: sta T2
10411: jsr LDF93
10412: tax
10413: lda TableHighBytesOfBuffers,x
10414: sta T3
10415: ldy #$00
10416: lda (T2),y
10417: rts
10418: LD506:
10419: lda LSTJOB,x
10420: and #$01
10421: ora CMD
10422: LD50E:
10423: pha
10424: stx JOBNUM
10425: txa
10426: asl a
10427: tax
10428: lda SECTOR0,x
10429: sta CMD
10430: lda TRACK0,x
10431: beq LD54A
10432: cmp MAXTRACK_ADJUSTED
10433: bcs LD54A
10434: tax
10435: pla
10436: pha
10437: and #$F0
10438: cmp #$90
10439: bne LD57A
10440: pla
10441: pha
10442: lsr a
10443: bcs LD535
10444: lda DSKVER
10445: bcc LD538
10446: LD535:
10447: lda DSKVER + 1
10448: LD538:
10449: beq LD53F
10450: cmp LFED5
10451: bne LD572
10452: LD53F:
10453: txa
10454: jsr LF24B
10455: cmp CMD
10456: beq LD54A
10457: bcs LD57A
10458: LD54A:
10459: jsr LD552
10460: LD54D:
10461: lda #ERRORCODE_66_ILLEGAL_TRACK_OR_SECTOR
10462: jmp LE645
10463: LD552:
10464: lda JOBNUM
10465: asl a
10466: tax
10467: lda TRACK0,x
10468: sta TRACK
10469: lda SECTOR0,x
10470: sta SECTOR
10471: rts
10472: LD55F:
10473: lda TRACK
10474: beq LD54D
10475: cmp MAXTRACK_ADJUSTED
10476: bcs LD54D
10477: jsr LF24B
10478: cmp SECTOR
10479: beq LD54D
10480: bcc LD54D
10481: rts
10482: LD572:
10483: jsr LD552
10484: lda #ERRORCODE_73_IDENTIFY
10485: jmp LE645
10486: LD57A:
10487: ldx JOBNUM
10488: pla
10489: sta CMD
10490: sta JOBS0,x
10491: sta LSTJOB,x
10492: rts
10493: LD586:
10494: lda #$80
10495: bne LD58C
10496: LD58A:
10497: lda #$90
10498: LD58C:
10499: ora DRVNUM
10500: ldx JOBNUM
10501: LD590:
10502: sta CMD
10503: LD593:
10504: lda CMD
10505: jsr LD50E
10506: LD599:
10507: jsr LD5A6
10508: bcs LD599
10509: pha
10510: lda #$00
10511: sta JOBRTN
10512: pla
10513: rts
10514: LD5A6:
10515: lda JOBS0,x
10516: bmi LD5C4
10517: cmp #$02
10518: bcc LD5C2
10519: cmp #$08
10520: beq LD5BA
10521: cmp #$0B
10522: beq LD5BA
10523: cmp #$0F
10524: bne LD5C6
10525: LD5BA:
10526: bit JOBRTN
10527: bmi LD5C2
10528: jmp LD63F
10529: LD5C2:
10530: clc
10531: rts
10532: LD5C4:
10533: sec
10534: rts
10535: LD5C6:
10536: tya
10537: pha
10538: lda DRVNUM
10539: pha
10540: lda LSTJOB,x
10541: and #$01
10542: sta DRVNUM
10543: tay
10544: lda DriveLEDMasks,y
10545: sta ERLED
10546: jsr LD6A6
10547: cmp #$02
10548: bcs LD5E3
10549: jmp LD66D
10550: LD5E3:
10551: lda LSTJOB,x
10552: and #$F0
10553: pha
10554: cmp #$90
10555: bne LD5F4
10556: lda DRVNUM
10557: ora #$B8
10558: sta LSTJOB,x
10559: LD5F4:
10560: bit REVCNT
10561: bvs LD631
10562: lda #$00
10563: sta EPTR
10564: sta TOFF
10565: LD600:
10566: ldy EPTR
10567: lda TOFF
10568: sec
10569: sbc LFEDB,y
10570: sta TOFF
10571: lda LFEDB,y
10572: .if CompileDrive >= DRIVE_1570
10573: jsr LFFA1
10574: .elseif CompileDrive = DRIVE_1541C_02
10575: jsr LFF84
10576: .else
10577: jsr LD676
10578: .endif
10579: inc EPTR
10580: jsr LD6A6
10581: cmp #$02
10582: bcc LD625
10583: ldy EPTR
10584: lda LFEDB,y
10585: bne LD600
10586: LD625:
10587: lda TOFF
10588: .if CompileDrive >= DRIVE_1570
10589: jsr LFFA6
10590: .elseif CompileDrive = DRIVE_1541C_02
10591: jsr LFF89
10592: .else
10593: jsr LD676
10594: .endif
10595: lda JOBS0,x
10596: cmp #$02
10597: bcc LD65C
10598: LD631:
10599: bit REVCNT
10600: bpl LD644
10601: LD635:
10602: pla
10603: cmp #$90
10604: bne LD63F
10605: ora DRVNUM
10606: sta LSTJOB,x
10607: LD63F:
10608: lda JOBS0,x
10609: jsr LE60A
10610: LD644:
10611: pla
10612: bit JOBRTN
10613: bmi LD66D
10614: pha
10615: lda #$C0
10616: ora DRVNUM
10617: sta JOBS0,x
10618: LD651:
10619: .if CompileDrive >= DRIVE_1570
10620: jsr L9FB6
10621: FillNOP 1
10622: .else
10623: lda JOBS0,x
10624: bmi LD651
10625: .endif
10626: jsr LD6A6
10627: cmp #$02
10628: bcs LD635
10629: LD65C:
10630: pla
10631: cmp #$90
10632: bne LD66D
10633: ora DRVNUM
10634: sta LSTJOB,x
10635: jsr LD6A6
10636: cmp #$02
10637: bcs LD63F
10638: LD66D:
10639: pla
10640: sta DRVNUM
10641: pla
10642: tay
10643: lda JOBS0,x
10644: clc
10645: rts
10646: LD676:
10647: cmp #$00
10648: beq LD692
10649: bmi LD688
10650: LD67C:
10651: ldy #$01
10652: jsr LD693
10653: sec
10654: sbc #$01
10655: bne LD67C
10656: beq LD692
10657: LD688:
10658: ldy #$FF
10659: jsr LD693
10660: clc
10661: adc #$01
10662: bne LD688
10663: LD692:
10664: rts
10665: LD693:
10666: pha
10667: tya
10668: ldy DRVNUM
10669: sta PHASE,y
10670: LD69A:
10671: cmp PHASE,y
10672: beq LD69A
10673: lda #$00
10674: sta PHASE,y
10675: pla
10676: rts
10677: LD6A6:
10678: lda REVCNT
10679: and #$3F
10680: tay
10681: LD6AB:
10682: lda ERLED
10683: eor VDC_PB2
10684: sta VDC_PB2
10685: lda LSTJOB,x
10686: sta JOBS0,x
10687: LD6B9:
10688: .if CompileDrive >= DRIVE_1570
10689: jsr L9FB6
10690: FillNOP 1
10691: .else
10692: lda JOBS0,x
10693: bmi LD6B9
10694: .endif
10695: cmp #$02
10696: bcc LD6C4
10697: dey
10698: bne LD6AB
10699: LD6C4:
10700: pha
10701: lda ERLED
10702: ora VDC_PB2
10703: sta VDC_PB2
10704: pla
10705: rts
10706: LD6D0:
10707: jsr LDF93
10708: LD6D3:
10709: asl a
10710: tay
10711: lda TRACK
10712: sta TRACK0,y
10713: lda SECTOR
10714: sta SECTOR0,y
10715: lda DRVNUM
10716: asl a
10717: tax
10718: rts
10719: LD6E4:
10720: lda SA
10721: pha
10722: lda LINDX
10723: pha
10724: lda SECTOR
10725: pha
10726: lda TRACK
10727: pha
10728: lda #$11
10729: sta SA
10730: jsr LDE3B
10731: lda TYPE
10732: pha
10733: lda FILDRV
10734: and #$01
10735: sta DRVNUM
10736: ldx JOBNUM
10737: eor LSTJOB,x
10738: lsr a
10739: bcc LD715
10740: ldx #$01
10741: stx DELIND
10742: jsr LC5AC
10743: beq LD730
10744: bne LD73D
10745: LD715:
10746: lda DELSEC
10747: beq LD726
10748: cmp SECTOR
10749: beq LD73D
10750: sta SECTOR
10751: jsr LD460
10752: jmp LD73D
10753: LD726:
10754: lda #$01
10755: sta DELIND
10756: jsr LC617
10757: bne LD73D
10758: LD730:
10759: jsr LD48D
10760: lda SECTOR
10761: sta DELSEC
10762: lda #$02
10763: sta DELIND
10764: LD73D:
10765: lda DELIND
10766: jsr LD4C8
10767: pla
10768: sta TYPE
10769: cmp #$04
10770: bne LD74D
10771: ora #$80
10772: LD74D:
10773: jsr LCFF1
10774: pla
10775: sta FILTRK
10776: jsr LCFF1
10777: pla
10778: sta FILSEC
10779: jsr LCFF1
10780: jsr LDF93
10781: tay
10782: lda FILTBL
10783: tax
10784: lda #$10
10785: jsr LC66E
10786: ldy #$10
10787: lda #$00
10788: LD76F:
10789: sta (DIRBUF),y
10790: iny
10791: cpy #$1B
10792: bcc LD76F
10793: lda TYPE
10794: cmp #$04
10795: bne LD790
10796: ldy #$10
10797: lda TRKSS
10798: sta (DIRBUF),y
10799: iny
10800: lda SECSS
10801: sta (DIRBUF),y
10802: iny
10803: lda REC
10804: sta (DIRBUF),y
10805: LD790:
10806: jsr LD464
10807: pla
10808: sta LINDX
10809: tax
10810: pla
10811: sta SA
10812: lda DELSEC
10813: sta ENTSEC
10814: sta DSEC,x
10815: lda DELIND
10816: sta ENTIND
10817: sta DIND,x
10818: lda TYPE
10819: sta PATTYP
10820: lda DRVNUM
10821: sta FILDRV
10822: rts
10823:
10824:
10825: LD7B4:
10826: lda SA
10827: sta TEMPSA
10828: jsr LC2B3
10829: stx CMDNUM
10830: ldx CMDBUF
10831: lda TEMPSA
10832: bne LD7F3
10833: cpx #$2A
10834: bne LD7F3
10835: lda PRGTRK
10836: beq LD81C
10837: sta TRACK
10838: lda PRGDRV
10839: sta DRVNUM
10840: sta FILDRV
10841: lda #$02
10842: sta PATTYP
10843: lda PRGSEC
10844: sta SECTOR
10845: jsr LC100
10846: jsr LDC46
10847: lda #$04
10848: ora DRVNUM
10849: LD7EB:
10850: ldx LINDX
10851: sta FILTYP,y
10852: jmp CommandEnd
10853: LD7F3:
10854: cpx #$24
10855: bne LD815
10856: lda TEMPSA
10857: bne LD7FF
10858: jmp LDA55
10859: LD7FF:
10860: jsr LC1D1
10861: lda LFE85
10862: sta TRACK
10863: lda #$00
10864: sta SECTOR
10865: jsr LDC46
10866: lda DRVNUM
10867: ora #$02
10868: jmp LD7EB
10869: LD815:
10870: cpx #$23
10871: bne LD82B
10872: jmp LCB84
10873:
10874:
10875: LD81C:
10876: lda #$02
10877: sta TYPFLG
10878: lda #$00
10879: sta DRVNUM
10880: sta LSTDRV
10881: jsr LD042
10882: LD82B:
10883: jsr LC1E5
10884: bne LD834
10885: ldx #$00
10886: beq LD840
10887: LD834:
10888: txa
10889: beq LD83C
10890: lda #ERRORCODE_30_SYNTAX_ERROR
10891: jmp GenerateErrorMessage
10892:
10893:
10894: LD83C:
10895: dey
10896: beq LD840
10897: dey
10898: LD840:
10899: sty FILTBL
10900: lda #$8D
10901: jsr SearchInCmdline
10902: inx
10903: stx F2CNT
10904: jsr LC312
10905: jsr LC3CA
10906: jsr LC49D
10907: ldx #$00
10908: stx REC
10909: stx MODE
10910: stx TYPE
10911: inx
10912: cpx F1CNT
10913: bcs LD876
10914: jsr LDA09
10915: inx
10916: cpx F1CNT
10917: bcs LD876
10918: cpy #$04
10919: beq LD8B1
10920: jsr LDA09
10921: LD876:
10922: ldx TEMPSA
10923: stx SA
10924: cpx #$02
10925: bcs LD891
10926: stx MODE
10927: lda #$40
10928: sta WBAM
10929: lda TYPE
10930: bne LD8A7
10931: lda #$02
10932: sta TYPE
10933: LD891:
10934: lda TYPE
10935: bne LD8A7
10936: lda PATTYP
10937: and #$07
10938: sta TYPE
10939: lda FILTRK
10940: bne LD8A7
10941: lda #$01
10942: sta TYPE
10943: LD8A7:
10944: lda MODE
10945: cmp #$01
10946: beq LD8C6
10947: jmp LD940
10948: LD8B1:
10949: ldy FILTBL,x
10950: lda CMDBUF,y
10951: sta REC
10952: lda FILTRK
10953: bne LD876
10954: lda #$01
10955: sta MODE
10956: bne LD876
10957: LD8C6:
10958: lda PATTYP
10959: and #$80
10960: tax
10961: bne LD8E1
10962: lda #$20
10963: bit PATTYP
10964: beq LD8D9
10965: jsr LC8B6
10966: jmp LD9E3
10967: LD8D9:
10968: lda FILTRK
10969: bne LD8E1
10970: jmp LD9E3
10971: LD8E1:
10972: lda CMDBUF
10973: cmp #$40
10974: beq LD8F5
10975: txa
10976: bne Error33
10977: lda #ERRORCODE_63_FILE_EXISTS
10978: jmp GenerateErrorMessage
10979:
10980:
10981: Error33:
10982: lda #ERRORCODE_33_SYNTAX_ERROR
10983: jmp GenerateErrorMessage
10984:
10985:
10986: LD8F5:
10987: lda PATTYP
10988: and #$07
10989: cmp TYPE
10990: bne Error64
10991: cmp #$04
10992: beq Error64
10993: jsr LDCDA
10994: lda LINDX
10995: sta WLINDX
10996: lda #$11
10997: sta SA
10998: jsr LD0EB
10999: lda INDEX
11000: jsr LD4C8
11001: ldy #$00
11002: lda (DIRBUF),y
11003: ora #$20
11004: sta (DIRBUF),y
11005: ldy #$1A
11006: lda TRACK
11007: sta (DIRBUF),y
11008: iny
11009: lda SECTOR
11010: sta (DIRBUF),y
11011: ldx WLINDX
11012: lda ENTSEC
11013: sta DSEC,x
11014: lda ENTIND
11015: sta DIND,x
11016: jsr LDE3B
11017: jsr LD464
11018: jmp LD9EF
11019: LD940:
11020: lda FILTRK
11021: bne LD94A
11022: lda #ERRORCODE_62_FILE_NOT_FOUND
11023: jmp GenerateErrorMessage
11024:
11025:
11026: LD94A:
11027: lda MODE
11028: cmp #$03
11029: beq LD95C
11030: lda #$20
11031: bit PATTYP
11032: beq LD95C
11033: lda #ERRORCODE_60_WRITE_FILE_OPEN
11034: jmp GenerateErrorMessage
11035:
11036:
11037: LD95C:
11038: lda PATTYP
11039: and #$07
11040: cmp TYPE
11041: beq LD96A
11042: Error64:
11043: lda #ERRORCODE_64_FILE_TYPE_MISMATCH
11044: jmp GenerateErrorMessage
11045:
11046:
11047: LD96A:
11048: ldy #$00
11049: sty F2PTR
11050: ldx MODE
11051: cpx #$02
11052: bne LD990
11053: cmp #$04
11054: beq Error64
11055: lda (DIRBUF),y
11056: and #$4F
11057: sta (DIRBUF),y
11058: lda SA
11059: pha
11060: lda #$11
11061: sta SA
11062: jsr LDE3B
11063: jsr LD464
11064: pla
11065: sta SA
11066: LD990:
11067: jsr LD9A0
11068: lda MODE
11069: cmp #$02
11070: bne LD9EF
11071: jsr LDA2A
11072: jmp CommandEnd
11073: LD9A0:
11074: ldy #$13
11075: lda (DIRBUF),y
11076: sta TRKSS
11077: iny
11078: lda (DIRBUF),y
11079: sta SECSS
11080: iny
11081: lda (DIRBUF),y
11082: ldx REC
11083: sta REC
11084: txa
11085: beq LD9C3
11086: cmp REC
11087: beq LD9C3
11088: lda #ERRORCODE_50_RECORD_NOT_PRESENT
11089: jsr GenerateErrorMessage
11090: LD9C3:
11091: ldx F2PTR
11092: lda FILTRK,x
11093: sta TRACK
11094: lda FILSEC,x
11095: sta SECTOR
11096: jsr LDC46
11097: ldy LINDX
11098: ldx F2PTR
11099: lda ENTSEC,x
11100: sta DSEC,y
11101: lda ENTIND,x
11102: sta DIND,y
11103: rts
11104: LD9E3:
11105: lda FILDRV
11106: and #$01
11107: sta DRVNUM
11108: jsr LDCDA
11109: jsr LD6E4
11110: LD9EF:
11111: lda SA
11112: cmp #$02
11113: bcs LDA06
11114: jsr LDE3E
11115: lda TRACK
11116: sta PRGTRK
11117: lda DRVNUM
11118: sta PRGDRV
11119: lda SECTOR
11120: sta PRGSEC
11121: LDA06:
11122: jmp LC199
11123: LDA09:
11124: ldy FILTBL,x
11125: lda CMDBUF,y
11126: ldy #$04
11127: LDA11:
11128: dey
11129: bmi LDA1C
11130: cmp LFEB2,y
11131: bne LDA11
11132: sty MODE
11133: LDA1C:
11134: ldy #$05
11135: LDA1E:
11136: dey
11137: bmi LDA29
11138: cmp LFEB6,y
11139: bne LDA1E
11140: sty TYPE
11141: LDA29:
11142: rts
11143: LDA2A:
11144: jsr LCA39
11145: lda #$80
11146: jsr LDDA6
11147: beq LDA2A
11148: jsr LDE95
11149: ldx SECTOR
11150: inx
11151: txa
11152: bne LDA42
11153: jsr LD1A3
11154: lda #$02
11155: LDA42:
11156: jsr LD4C8
11157: ldx LINDX
11158: lda #$01
11159: sta CHNRDY,x
11160: lda #$80
11161: ora LINDX
11162: ldx SA
11163: sta LINTAB,x
11164: rts
11165: LDA55:
11166: lda #$0C
11167: sta CMDNUM
11168: lda #$00
11169: ldx CMDSIZ
11170: dex
11171: beq LDA6D
11172: dex
11173: bne LDA86
11174: lda CMDBUF + 1
11175: jsr CheckForValidDriveNumber
11176: bmi LDA86
11177: LDA6D:
11178: sta FILDRV
11179: inc F1CNT
11180: inc F2CNT
11181: inc FILTBL
11182: lda #$80
11183: sta PATTYP
11184: lda #$2A
11185: sta CMDBUF
11186: sta CMDBUF + 1
11187: bne LDA9E
11188: LDA86:
11189: jsr LC1E5
11190: bne LDA90
11191: jsr LC2DC
11192: ldy #$03
11193: LDA90:
11194: dey
11195: dey
11196: sty FILTBL
11197: jsr LC200
11198: jsr LC398
11199: jsr LC320
11200: LDA9E:
11201: jsr LC3CA
11202: jsr LC7B7
11203: jsr LC49D
11204: jsr LEC9E
11205: jsr LD137
11206: ldx LINDX
11207: sta L023E,x
11208: lda DRVNUM
11209: sta LSTDRV
11210: ora #$04
11211: sta FILTYP,x
11212: lda #$00
11213: sta BUFTABCMD
11214: rts
11215: LDAC0:
11216: lda #$00
11217: sta WBAM
11218: lda SA
11219: bne LDAD4
11220: lda #$00
11221: sta DIRLST
11222: jsr LD227
11223: LDAD1:
11224: jmp LD4DA
11225: LDAD4:
11226: cmp #$0F
11227: beq LDAEC
11228: jsr LDB02
11229: lda SA
11230: cmp #$02
11231: bcc LDAD1
11232: lda ERWORD
11233: bne LDAE9
11234: jmp CommandEnd
11235: LDAE9:
11236: jmp LC1AD
11237: LDAEC:
11238: lda #$0E
11239: sta SA
11240: LDAF0:
11241: jsr LDB02
11242: dec SA
11243: bpl LDAF0
11244: lda ERWORD
11245: bne LDAFF
11246: jmp CommandEnd
11247: LDAFF:
11248: jmp LC1AD
11249: LDB02:
11250: ldx SA
11251: lda LINTAB,x
11252: cmp #$FF
11253: bne LDB0C
11254: rts
11255: LDB0C:
11256: and #$0F
11257: sta LINDX
11258: jsr LD125
11259: cmp #$07
11260: beq LDB26
11261: cmp #$04
11262: beq LDB2C
11263: jsr LD107
11264: bcs LDB29
11265: jsr LDB62
11266: jsr LDBA5
11267: LDB26:
11268: jsr LEEF4
11269: LDB29:
11270: jmp LD227
11271: LDB2C:
11272: jsr LDDF1
11273: jsr LCF1E
11274: jsr LE1CB
11275: ldx SSNUM
11276: stx T4
11277: inc T4
11278: lda #$00
11279: sta T1
11280: sta T2
11281: lda SSIND
11282: sec
11283: sbc #$0E
11284: sta T3
11285: jsr LDF51
11286: ldx LINDX
11287: lda T1
11288: sta RECL,x
11289: lda T2
11290: sta RECH,x
11291: lda #$40
11292: jsr LDDA6
11293: beq LDB5F
11294: jsr LDBA5
11295: LDB5F:
11296: jmp LD227
11297: LDB62:
11298: ldx LINDX
11299: lda RECL,x
11300: ora RECH,x
11301: bne LDB76
11302: jsr LD4E8
11303: cmp #$02
11304: bne LDB76
11305: lda #$0D
11306: jsr LCFF1
11307: LDB76:
11308: jsr LD4E8
11309: cmp #$02
11310: bne LDB8C
11311: jsr LCF1E
11312: ldx LINDX
11313: lda RECL,x
11314: bne LDB88
11315: dec RECH,x
11316: LDB88:
11317: dec RECL,x
11318: lda #$00
11319: LDB8C:
11320: sec
11321: sbc #$01
11322: pha
11323: lda #$00
11324: jsr LD4C8
11325: jsr LCFF1
11326: pla
11327: jsr LCFF1
11328: jsr LD0C7
11329: jsr LD599
11330: jmp LCF1E
11331: LDBA5:
11332: ldx LINDX
11333: stx WLINDX
11334: lda SA
11335: pha
11336: lda DSEC,x
11337: sta SECTOR
11338: lda DIND,x
11339: sta INDEX
11340: lda FILTYP,x
11341: and #$01
11342: sta DRVNUM
11343: lda LFE85
11344: sta TRACK
11345: jsr LDF93
11346: pha
11347: sta JOBNUM
11348: jsr LD460
11349: ldy #$00
11350: lda TableHighBytesOfBuffers,x
11351: sta R1
11352: lda INDEX
11353: sta R0
11354: lda (R0),y
11355: and #$20
11356: beq LDC21
11357: jsr LD125
11358: cmp #$04
11359: beq LDC29
11360: lda (R0),y
11361: and #$8F
11362: sta (R0),y
11363: iny
11364: lda (R0),y
11365: sta TRACK
11366: sty T2
11367: ldy #$1B
11368: lda (R0),y
11369: pha
11370: dey
11371: lda (R0),y
11372: bne LDC06
11373: sta TRACK
11374: pla
11375: sta SECTOR
11376: lda #ERRORCODE_67_ILLEGAL_TRACK_OR_SECTOR
11377: jsr LE645
11378: LDC06:
11379: pha
11380: lda #$00
11381: sta (R0),y
11382: iny
11383: sta (R0),y
11384: pla
11385: ldy T2
11386: sta (R0),y
11387: iny
11388: lda (R0),y
11389: sta SECTOR
11390: pla
11391: sta (R0),y
11392: jsr LC87D
11393: jmp LDC29
11394: LDC21:
11395: lda (R0),y
11396: and #$0F
11397: ora #$80
11398: sta (R0),y
11399: LDC29:
11400: ldx WLINDX
11401: ldy #$1C
11402: lda RECL,x
11403: sta (R0),y
11404: iny
11405: lda RECH,x
11406: sta (R0),y
11407: pla
11408: tax
11409: lda #$90
11410: ora DRVNUM
11411: jsr LD590
11412: pla
11413: sta SA
11414: jmp LD107
11415: LDC46:
11416: lda #$01
11417: jsr LD1E2
11418: jsr LDCB6
11419: lda TYPE
11420: pha
11421: asl a
11422: ora DRVNUM
11423: sta FILTYP,x
11424: jsr LD09B
11425: ldx LINDX
11426: lda TRACK
11427: bne LDC65
11428: lda SECTOR
11429: sta LSTCHR,x
11430: LDC65:
11431: pla
11432: cmp #$04
11433: bne LDCA9
11434: ldy SA
11435: lda LINTAB,y
11436: ora #$40
11437: sta LINTAB,y
11438: lda REC
11439: sta RS,x
11440: jsr LD28E
11441: bpl LDC81
11442: jmp LD20F
11443: LDC81:
11444: ldx LINDX
11445: sta SS,x
11446: ldy TRKSS
11447: sty TRACK
11448: ldy SECSS
11449: sty SECTOR
11450: jsr LD6D3
11451: jsr LDE73
11452: jsr LD599
11453: LDC98:
11454: ldx LINDX
11455: lda #$02
11456: sta NR,x
11457: lda #$00
11458: jsr LD4C8
11459: jsr LE153
11460: jmp LDE3E
11461: LDCA9:
11462: jsr LD156
11463: ldx LINDX
11464: sta L023E,x
11465: lda #$88
11466: sta CHNRDY,x
11467: rts
11468: LDCB6:
11469: ldx LINDX
11470: lda BUF0,x
11471: asl a
11472: .if CompileDrive >= DRIVE_1570 .OR CompileDrive >= DRIVE_1541C_02
11473: bmi LDCC3
11474: .endif
11475: tay
11476: lda #$02
11477: sta BUFTAB0,y
11478: LDCC3:
11479: lda BUF1,x
11480: ora #$80
11481: sta BUF1,x
11482: asl a
11483: .if CompileDrive >= DRIVE_1570 .OR CompileDrive >= DRIVE_1541C_02
11484: bmi LDCD2
11485: .endif
11486: tay
11487: lda #$02
11488: sta BUFTAB0,y
11489: LDCD2:
11490: lda #$00
11491: sta RECL,x
11492: .if CompileDrive >= DRIVE_1570
11493: jmp LA97F
11494: FillNOP 1
11495: .elseif CompileDrive >= DRIVE_1541C_02
11496: jmp LC029
11497: FillNOP 1
11498: .else
11499: sta RECH,x
11500: lda #$00
11501: sta LSTCHR,x
11502: rts
11503: .endif
11504: LDCDA:
11505: jsr LF1A9
11506: lda #$01
11507: jsr LD1DF
11508: jsr LD6D0
11509: jsr LDCB6
11510: ldx LINDX
11511: lda TYPE
11512: pha
11513: asl a
11514: ora DRVNUM
11515: sta FILTYP,x
11516: pla
11517: cmp #$04
11518: beq LDCFD
11519: lda #$01
11520: sta CHNRDY,x
11521: rts
11522: LDCFD:
11523: ldy SA
11524: lda LINTAB,y
11525: and #$3F
11526: ora #$40
11527: sta LINTAB,y
11528: lda REC
11529: sta RS,x
11530: jsr LD28E
11531: bpl LDD16
11532: jmp LD20F
11533: LDD16:
11534: ldx LINDX
11535: sta SS,x
11536: jsr LDEC1
11537: jsr LF11E
11538: lda TRACK
11539: sta TRKSS
11540: lda SECTOR
11541: sta SECSS
11542: ldx LINDX
11543: lda SS,x
11544: jsr LD6D3
11545: lda #$00
11546: jsr LDEE9
11547: lda #$00
11548: jsr LDD8D
11549: lda #$11
11550: jsr LDD8D
11551: lda #$00
11552: jsr LDD8D
11553: lda REC
11554: jsr LDD8D
11555: lda TRACK
11556: jsr LDD8D
11557: lda SECTOR
11558: jsr LDD8D
11559: lda #$10
11560: jsr LDEE9
11561: jsr LDE3E
11562: lda TRACK
11563: jsr LDD8D
11564: lda SECTOR
11565: jsr LDD8D
11566: jsr LDE6C
11567: jsr LD599
11568: lda #$02
11569: jsr LD4C8
11570: ldx LINDX
11571: sec
11572: lda #$00
11573: sbc RS,x
11574: sta NR,x
11575: jsr LE2E2
11576: jsr LDE19
11577: jsr LDE5E
11578: jsr LD599
11579: jsr LEEF4
11580: jmp LDC98
11581: LDD8D:
11582: pha
11583: ldx LINDX
11584: lda SS,x
11585: jmp LCFFD
11586: bcc LDD9D
11587: LDD97:
11588: ldx LINDX
11589: ora FILTYP,x
11590: bne LDDA3
11591: LDD9D:
11592: ldx LINDX
11593: eor #$FF
11594: and FILTYP,x
11595: LDDA3:
11596: sta FILTYP,x
11597: rts
11598: LDDA6:
11599: ldx LINDX
11600: and FILTYP,x
11601: rts
11602: LDDAB:
11603: jsr LDF93
11604: tax
11605: lda LSTJOB,x
11606: and #$F0
11607: cmp #$90
11608: rts
11609: LDDB7:
11610: ldx #$00
11611: LDDB9:
11612: stx T2
11613: lda LINTAB,x
11614: cmp #$FF
11615: bne LDDCA
11616: LDDC2:
11617: ldx T2
11618: inx
11619: cpx #$10
11620: bcc LDDB9
11621: rts
11622: LDDCA:
11623: stx T2
11624: and #$3F
11625: tay
11626: lda FILTYP,y
11627: and #$01
11628: sta T1
11629: ldx ENTFND
11630: lda FILDRV,x
11631: and #$01
11632: cmp T1
11633: bne LDDC2
11634: lda DSEC,y
11635: cmp ENTSEC,x
11636: bne LDDC2
11637: lda DIND,y
11638: cmp ENTIND,x
11639: bne LDDC2
11640: clc
11641: rts
11642:
11643: LDDF1:
11644: jsr LDF9E
11645: bvc LDDFC
11646: jsr LDE5E
11647: jsr LD599
11648: LDDFC:
11649: rts
11650: LDDFD:
11651: jsr LDE2B
11652: lda TRACK
11653: sta (DIRBUF),y
11654: iny
11655: lda SECTOR
11656: sta (DIRBUF),y
11657: jmp LE105
11658: LDE0C:
11659: jsr LDE2B
11660: lda (DIRBUF),y
11661: sta TRACK
11662: iny
11663: lda (DIRBUF),y
11664: sta SECTOR
11665: rts
11666: LDE19:
11667: jsr LDE2B
11668: lda #$00
11669: sta (DIRBUF),y
11670: iny
11671: ldx LINDX
11672: lda NR,x
11673: tax
11674: dex
11675: txa
11676: sta (DIRBUF),y
11677: rts
11678: LDE2B:
11679: jsr LDF93
11680: asl a
11681: tax
11682: lda BUFTAB0 + 1,x
11683: sta DIRBUF + 1
11684: lda #$00
11685: sta DIRBUF
11686: ldy #$00
11687: rts
11688: LDE3B:
11689: jsr LD0EB
11690: LDE3E:
11691: jsr LDF93
11692: sta JOBNUM
11693: asl a
11694: tay
11695: lda TRACK0,y
11696: sta TRACK
11697: lda SECTOR0,y
11698: sta SECTOR
11699: rts
11700: LDE50:
11701: lda #$90
11702: sta CMD
11703: bne LDE7F
11704: LDE57:
11705: lda #$80
11706: sta CMD
11707: bne LDE7F
11708: LDE5E:
11709: lda #$90
11710: sta CMD
11711: bne LDE8B
11712: lda #$80
11713: sta CMD
11714: bne LDE8B
11715: LDE6C:
11716: lda #$90
11717: sta CMD
11718: bne LDE75
11719: LDE73:
11720: lda #$80
11721: LDE75:
11722: sta CMD
11723: ldx LINDX
11724: lda SS,x
11725: tax
11726: bpl LDE92
11727: LDE7F:
11728: jsr LD6D0
11729: jsr LDF93
11730: tax
11731: lda DRVNUM
11732: sta LSTJOB,x
11733: LDE8B:
11734: jsr LE115
11735: jsr LDF93
11736: tax
11737: LDE92:
11738: jmp LD506
11739: LDE95:
11740: lda #$00
11741: jsr LD4C8
11742: jsr LD137
11743: sta TRACK
11744: jsr LD137
11745: sta SECTOR
11746: rts
11747: LDEA5:
11748: pha
11749: lda #$00
11750: sta T0
11751: sta T2
11752: lda TableHighBytesOfBuffers,y
11753: sta T1
11754: lda TableHighBytesOfBuffers,x
11755: sta T3
11756: pla
11757: tay
11758: dey
11759: LDEB9:
11760: lda (T0),y
11761: sta (T2),y
11762: dey
11763: bpl LDEB9
11764: rts
11765: LDEC1:
11766: tay
11767: lda TableHighBytesOfBuffers,y
11768: sta T1
11769: lda #$00
11770: sta T0
11771: tay
11772: LDECC:
11773: sta (T0),y
11774: iny
11775: bne LDECC
11776: rts
11777: LDED2:
11778: lda #$00
11779: jsr LDEDC
11780: ldy #$02
11781: lda (DIRBUF),y
11782: rts
11783: LDEDC:
11784: sta DIRBUF
11785: ldx LINDX
11786: lda SS,x
11787: tax
11788: lda TableHighBytesOfBuffers,x
11789: sta DIRBUF + 1
11790: rts
11791: LDEE9:
11792: pha
11793: jsr LDEDC
11794: pha
11795: txa
11796: asl a
11797: tax
11798: pla
11799: sta BUFTAB0 + 1,x
11800: pla
11801: sta BUFTAB0,x
11802: rts
11803: LDEF8:
11804: jsr LDF66
11805: bmi LDF0B
11806: bvc LDF12
11807: ldx LINDX
11808: lda SS,x
11809: jsr LDF1B
11810: jsr LDF66
11811: bpl LDF12
11812: LDF0B:
11813: jsr LE1CB
11814: bit LFECE
11815: rts
11816: LDF12:
11817: lda SSIND
11818: jsr LDEE9
11819: bit LFECD
11820: rts
11821: LDF1B:
11822: sta JOBNUM
11823: lda #$80
11824: bne LDF25
11825: sta JOBNUM
11826: lda #$90
11827: LDF25:
11828: pha
11829: lda FILTYP,x
11830: and #$01
11831: sta DRVNUM
11832: pla
11833: ora DRVNUM
11834: sta CMD
11835: lda (DIRBUF),y
11836: sta TRACK
11837: iny
11838: lda (DIRBUF),y
11839: sta SECTOR
11840: lda JOBNUM
11841: jsr LD6D3
11842: ldx JOBNUM
11843: jmp LD593
11844: LDF45:
11845: ldx LINDX
11846: lda SS,x
11847: jmp LD4EB
11848: LDF4C:
11849: lda #$78
11850: jsr LDF5C
11851: LDF51:
11852: dex
11853: bpl LDF4C
11854: lda T3
11855: lsr a
11856: jsr LDF5C
11857: lda T4
11858: LDF5C:
11859: clc
11860: adc T1
11861: sta T1
11862: bcc LDF65
11863: inc T2
11864: LDF65:
11865: rts
11866: LDF66:
11867: jsr LDED2
11868: cmp SSNUM
11869: bne LDF7B
11870: ldy SSIND
11871: lda (DIRBUF),y
11872: beq LDF77
11873: bit LFECD
11874: rts
11875: LDF77:
11876: bit LFECF
11877: rts
11878: LDF7B:
11879: lda SSNUM
11880: cmp #$06
11881: bcs LDF8B
11882: asl a
11883: tay
11884: lda #$04
11885: sta DIRBUF
11886: lda (DIRBUF),y
11887: bne LDF8F
11888: LDF8B:
11889: bit LFED0
11890: rts
11891: LDF8F:
11892: bit LFECE
11893: rts
11894: LDF93:
11895: ldx LINDX
11896: lda BUF0,x
11897: bpl @LDF9B
11898: lda BUF1,x
11899: @LDF9B:
11900: and # ~ $40
11901: rts
11902:
11903:
11904: LDF9E:
11905: ldx LINDX
11906: stx LBUSED
11907: lda BUF0,x
11908: bpl @LDFB0
11909: txa
11910: clc
11911: adc #$07
11912: sta LBUSED
11913: lda BUF1,x
11914: @LDFB0:
11915: sta T1
11916: and #$1F
11917: bit T1
11918: rts
11919:
11920:
11921: LDFB7:
11922: ldx LINDX
11923: lda BUF0,x
11924: bmi @LDFBF
11925: lda BUF1,x
11926: @LDFBF:
11927: cmp #$FF
11928: rts
11929:
11930:
11931: LDFC2:
11932: ldx LINDX
11933: ora #$80
11934: ldy BUF0,x
11935: bpl @LDFCD
11936: sta BUF0,x
11937: rts
11938:
11939: @LDFCD:
11940: sta BUF1,x
11941: rts
11942:
11943:
11944: LDFD0:
11945: lda #$20
11946: jsr LDD9D
11947: lda #$80
11948: jsr LDDA6
11949: bne LE01D
11950: ldx LINDX
11951: inc RECL,x
11952: bne @LDFE4
11953: inc RECH,x
11954: @LDFE4:
11955: ldx LINDX
11956: lda NR,x
11957: beq LE018
11958: jsr LD4E8
11959: ldx LINDX
11960: cmp NR,x
11961: bcc @LDFF6
11962: jsr LE03C
11963: @LDFF6:
11964: ldx LINDX
11965: lda NR,x
11966: jsr LD4C8
11967: lda (BUFTAB0,x)
11968: sta DATA
11969: lda #$20
11970: jsr LDD9D
11971: jsr LE304
11972:
11973: LE009:
11974: pha
11975: bcc LE034
11976: lda #$00
11977: jsr LD4F6
11978: bne LE034
11979: pla
11980: cmp #$02
11981: beq LE02A
11982: LE018:
11983: lda #$80
11984: jsr LDD97
11985: LE01D:
11986: jsr LD12F
11987: lda BUFTAB0,x
11988: sta LSTCHR,y
11989: lda #$0D
11990: sta DATA
11991: rts
11992:
11993:
11994: LE02A:
11995: jsr LE035
11996: ldx LINDX
11997: lda #$00
11998: sta NR,x
11999: rts
12000: LE034:
12001: pla
12002: LE035:
12003: ldx LINDX
12004: sta NR,x
12005: jmp LE16E
12006: LE03C:
12007: jsr LD1D3
12008: jsr LDE95
12009: jsr LDF9E
12010: bvc @LE05D
12011: jsr LDE5E
12012: jsr LCF1E
12013: lda #$02
12014: jsr LD4C8
12015: jsr LDDAB
12016: bne @LE07B
12017: jsr LDE57
12018: jmp LD599
12019:
12020: @LE05D:
12021: jsr LCF1E
12022: jsr LDDAB
12023: bne @LE06B
12024: jsr LDE57
12025: jsr LD599
12026: @LE06B:
12027: jsr LDE95
12028: lda TRACK
12029: beq @LE07B
12030: jsr LCF1E
12031: jsr LDE57
12032: jsr LCF1E
12033: @LE07B:
12034: rts
12035:
12036:
12037: LE07C:
12038: jsr LE105
12039: jsr LDF93
12040: asl a
12041: tax
12042: lda DATA
12043: sta (BUFTAB0,x)
12044: ldy BUFTAB0,x
12045: iny
12046: bne @LE096
12047: ldy LINDX
12048: lda NR,y
12049: beq @LE09E
12050: ldy #$02
12051: @LE096:
12052: tya
12053: ldy LINDX
12054: cmp NR,y
12055: bne @LE0A3
12056: @LE09E:
12057: lda #$20
12058: jmp LDD97
12059: @LE0A3:
12060: inc BUFTAB0,x
12061: bne @LE0AA
12062: jsr LE03C
12063: @LE0AA:
12064: rts
12065:
12066:
12067: LE0AB:
12068: lda #$A0
12069: jsr LDDA6
12070: bne LE0D9
12071: LE0B2:
12072: lda DATA
12073: jsr LE07C
12074: lda EIOFLG
12075: beq LE0C8
12076: rts
12077: LE0BC:
12078: lda #$20
12079: jsr LDDA6
12080: beq LE0C8
12081: lda #ERRORCODE_51_OVERFLOW_IN_RECORD
12082: sta ERWORD
12083: LE0C8:
12084: jsr LE0F3
12085: jsr LE153
12086: lda ERWORD
12087: beq @LE0D6
12088: jmp GenerateErrorMessage
12089:
12090:
12091: @LE0D6:
12092: jmp SetNoError
12093:
12094:
12095: LE0D9:
12096: and #$80
12097: bne LE0E2
12098: lda EIOFLG
12099: beq LE0BC
12100: rts
12101: LE0E2:
12102: lda DATA
12103: pha
12104: jsr LE31C
12105: pla
12106: sta DATA
12107: lda #$80
12108: jsr LDD9D
12109: jmp LE0B2
12110: LE0F3:
12111: lda #$20
12112: jsr LDDA6
12113: bne @LE104
12114: lda #$00
12115: sta DATA
12116: jsr LE07C
12117: jmp LE0F3
12118: @LE104:
12119: rts
12120: LE105:
12121: lda #$40
12122: jsr LDD97
12123: jsr LDF9E
12124: ora #$40
12125: ldx LBUSED
12126: sta BUF0,x
12127: rts
12128: LE115:
12129: jsr LDF9E
12130: and #$BF
12131: ldx LBUSED
12132: sta BUF0,x
12133: rts
12134: LE120:
12135: lda #$80
12136: jsr LDDA6
12137: bne LE15E
12138: jsr LD12F
12139: lda BUFTAB0,x
12140: cmp LSTCHR,y
12141: beq LE153
12142: inc BUFTAB0,x
12143: bne LE13B
12144: jsr LE03C
12145: LE138:
12146: jsr LD12F
12147: LE13B:
12148: lda (BUFTAB0,x)
12149: LE13D:
12150: sta L023E,y
12151: lda #$89
12152: sta CHNRDY,y
12153: lda BUFTAB0,x
12154: cmp LSTCHR,y
12155: beq LE14D
12156: rts
12157: LE14D:
12158: lda #$81
12159: sta CHNRDY,y
12160: rts
12161: LE153:
12162: jsr LDFD0
12163: jsr LD12F
12164: lda DATA
12165: jmp LE13D
12166: LE15E:
12167: ldx LINDX
12168: lda #$0D
12169: sta L023E,x
12170: lda #$81
12171: sta CHNRDY,x
12172: lda #ERRORCODE_50_RECORD_NOT_PRESENT
12173: jsr GenerateErrorMessage
12174: LE16E:
12175: ldx LINDX
12176: lda NR,x
12177: sta R1
12178: dec R1
12179: cmp #$02
12180: bne LE17E
12181: lda #$FF
12182: sta R1
12183: LE17E:
12184: lda RS,x
12185: sta R2
12186: jsr LD4E8
12187: ldx LINDX
12188: cmp R1
12189: bcc LE1A4
12190: beq LE1A4
12191: jsr LCF1E
12192: jsr LE1B2
12193: bcc LE19D
12194: ldx LINDX
12195: sta LSTCHR,x
12196: jmp LCF1E
12197: LE19D:
12198: jsr LCF1E
12199: lda #$FF
12200: sta R1
12201: LE1A4:
12202: jsr LE1B2
12203: bcs LE1AC
12204: jsr LD4E8
12205: LE1AC:
12206: ldx LINDX
12207: sta LSTCHR,x
12208: rts
12209: LE1B2:
12210: jsr LDE2B
12211: ldy R1
12212: LE1B7:
12213: lda (DIRBUF),y
12214: bne LE1C8
12215: dey
12216: cpy #$02
12217: bcc LE1C4
12218: dec R2
12219: bne LE1B7
12220: LE1C4:
12221: dec R2
12222: clc
12223: rts
12224: LE1C8:
12225: tya
12226: sec
12227: rts
12228: LE1CB:
12229: jsr LDED2
12230: sta SSNUM
12231: lda #$04
12232: sta DIRBUF
12233: ldy #$0A
12234: bne LE1DC
12235: LE1D8:
12236: dey
12237: dey
12238: bmi LE202
12239: LE1DC:
12240: lda (DIRBUF),y
12241: beq LE1D8
12242: tya
12243: lsr a
12244: cmp SSNUM
12245: beq LE1EF
12246: sta SSNUM
12247: ldx LINDX
12248: lda SS,x
12249: jsr LDF1B
12250: LE1EF:
12251: ldy #$00
12252: sty DIRBUF
12253: lda (DIRBUF),y
12254: bne LE202
12255: iny
12256: lda (DIRBUF),y
12257: tay
12258: dey
12259: sty SSIND
12260: tya
12261: jmp LDEE9
12262: LE202:
12263: lda #ERRORCODE_67_ILLEGAL_TRACK_OR_SECTOR
12264: jsr LE645
12265: cmd_position:
12266: jsr LC2B3
12267: lda CMDBUF + 1
12268: sta SA
12269: jsr LD0EB
12270: bcc LE219
12271: lda #ERRORCODE_70_NO_CHANNEL
12272: jsr GenerateErrorMessage
12273: LE219:
12274: lda #$A0
12275: jsr LDD9D
12276: jsr LD125
12277: beq LE228
12278: lda #ERRORCODE_64_FILE_TYPE_MISMATCH
12279: jsr GenerateErrorMessage
12280: LE228:
12281: lda FILTYP,x
12282: and #$01
12283: sta DRVNUM
12284: lda CMDBUF + 2
12285: sta RECL,x
12286: lda CMDBUF + 3
12287: sta RECH,x
12288: ldx LINDX
12289: lda #$89
12290: sta CHNRDY,x
12291: lda CMDBUF + 4
12292: beq LE253
12293: sec
12294: sbc #$01
12295: beq LE253
12296: cmp RS,x
12297: bcc LE253
12298: lda #ERRORCODE_51_OVERFLOW_IN_RECORD
12299: sta ERWORD
12300: lda #$00
12301: LE253:
12302: sta RECPTR
12303: jsr LCE0E
12304: jsr LDEF8
12305: bvc LE265
12306: lda #$80
12307: jsr LDD97
12308: jmp LE15E
12309: LE265:
12310: jsr LE275
12311: lda #$80
12312: jsr LDDA6
12313: beq LE272
12314: jmp LE15E
12315: LE272:
12316: jmp CommandEnd
12317: LE275:
12318: jsr LE29C
12319: lda RELPTR
12320: jsr LD4C8
12321: ldx LINDX
12322: lda RS,x
12323: sec
12324: sbc RECPTR
12325: bcs LE289
12326: jmp LE202
12327: LE289:
12328: clc
12329: adc RELPTR
12330: bcc LE291
12331: adc #$01
12332: sec
12333: LE291:
12334: jsr LE009
12335: jmp LE138
12336: lda #ERRORCODE_51_OVERFLOW_IN_RECORD
12337: jsr GenerateErrorMessage
12338: LE29C:
12339: lda DIRBUF
12340: sta R3
12341: lda DIRBUF + 1
12342: sta R4
12343: