10osfind = &FFCE 20osgbpb = &FFD1 30osbput = &FFD4 40osbget = &FFD7 50osargs = &FFDA 60osfile = &FFDD 70osrdch = &FFE0 80osasci = &FFE3 90osnewl = &FFE7 100oswrch = &FFEE 110osword = &FFF1 120osbyte = &FFF4 130oscli = &FFF7 140DIM Code &400 150RunAddr=&2800 160FOR Pass=4 TO 7 STEP 3 170P%=RunAddr:O%=Code 180[OPT Pass 190 .form80 200\ 2800 A2 03 : Jsr stardisk 210\ 2802 D0 02 : NOP 220\ 2804 A2 07 : Ldx #3 230 .form40 240\ 2806 A0 03 : Ldy #3 250 .loop1 260\ 2808 BD 93 2A: Lda Data+44,X 270\ 280B 99 9C 2A: Sta Data+53,Y 280\ 280E CA : Dex 290\ 280F 88 : Dey 300\ 2810 10 F6 : Bpl loop1 310\ 2812 20 1B 2A: Jsr WrStr 320\ 2815 44 69 73: EQUS "8"" Formatter 77-Trk": EQUB &8D 330\ 2829 A9 82 : Lda #130 340\ 282B 20 F4 FF: Jsr osbyte 350\ 282E 8E 6A 2A: Stx Data+3 360\ 2831 8E 8B 2A: Stx Data+36 370\ 2834 8C 6B 2A: Sty Data+4 380\ 2837 8C 8C 2A: Sty Data+37 390\ 283A A2 A8 : Ldx #168 400\ 283C A0 00 : Ldy #0 410\ 283E A9 01 : Lda #1 420\ 2840 20 DA FF: Jsr osargs 430 .loop2 440\ 2843 A9 05 : Lda #5 450\ 2845 20 F1 FF: Jsr osword 460\ 2848 E6 A8 : Inc &A8 470\ 284A D0 02 : Bne inc1 480\ 284C E6 A9 : Inc &A9 490 .inc1 500\ 284E A5 AC : Lda &AC 510\ 2850 C9 20 : Cmp #32 520\ 2852 F0 EF : LDA #13 530\ 2854 C9 0D : Cmp #13 540\ 2856 D0 2B : Bne restart 550 .Format 560\ 2858 20 1B 2A: Jsr WrStr 570\ 285B 0D 46 6F: Ora &6F46 580\ 285E 72 6D 61: EQUS "rmat which drive ?": EQUB &A0 590\ 2871 20 E0 FF: Jsr osrdch 600\ 2874 B0 61 : Bcs escaped 610\ 2876 C9 0D : Cmp #13 620\ 2878 D0 06 : Bne noadjus 630\ 287A AD 7F 2A: Lda Data+24 640\ 287D 18 : Clc 650\ 287E 69 30 : Adc #48 660 .noadjus 670\ 2880 20 E3 FF: Jsr osasci 680 .restart 690\ 2883 C9 30 : Cmp #48 700\ 2885 B0 0C : Bcs next1 710 .BadDrv 720\ 2887 00 : Brk 730\ 2888 CB : EQUB &CB 740\ 2889 42 61 64: EQUS "Bad drive": EQUB &00 750 .next1 760\ 2893 C9 34 : Cmp #52 770\ 2895 B0 F0 : Bcs BadDrv 780\ 2897 20 1B 2A: Jsr WrStr 790\ 289A 0D 44 6F: Ora &6F44 800\ 289D 20 79 6F: Jsr &6F79 810\ 28A0 75 20 : Adc &20,X 820\ 28A2 72 65 61: EQUS "really want to format drive": EQUB &A0 830\ 28BE 20 E3 FF: Jsr osasci 840\ 28C1 29 03 : And #3 850\ 28C3 8D 7F 2A: Sta Data+24 860\ 28C6 20 1B 2A: Jsr WrStr 870\ 28C9 20 BF A9: Jsr &A9BF 880\ 28CC 0F : EQUB &F 890\ 28CD A2 01 : Ldx #1 900\ 28CF 20 F4 FF: Jsr osbyte 910\ 28D2 20 E0 FF: Jsr osrdch 920\ 28D5 90 09 : Bcc noesc1 930 .escaped 940\ 28D7 00 : Brk 950\ 28D8 11 45 : Ora (&45),Y 960\ 28DA 73 63 61: EQUS "scape": EQUB &00 970 .noesc1 980\ 28E0 29 5F : And #95 990\ 28E2 C9 59 : Cmp #89 1000\ 28E4 F0 08 : Beq notend 1010\ 28E6 A9 4E : Lda #78 1020\ 28E8 20 E3 FF: Jsr osasci 1030\ 28EB 4C E7 FF: Jmp osnewl 1040 .notend 1050\ 28EE 20 1B 2A: Jsr WrStr 1060\ 28F1 59 0D 0D: Eor &D0D,Y 1070\ 28F4 46 6F : Lsr &6F 1080\ 28F6 72 6D 61: EQUS "rmatting drive": EQUB &A0 1090\ 2905 AD 7F 2A: Lda Data+24 1100\ 2908 20 4E 2A: Jsr WrNib 1110\ 290B 20 E7 FF: Jsr osnewl 1120\ 290E 20 E7 FF: Jsr osnewl 1130\ 2911 A2 7F : Ldx #127 1140\ 2913 A0 2A : Ldy #42 1150\ 2915 A9 7F : Lda #127 1160\ 2917 20 F1 FF: Jsr osword 1170\ 291A A2 00 : Ldx #0 1180\ 291C 86 AD : Stx &AD 1190 .nexttrk 1200\ 291E A9 0A : Lda #10 1210\ 2920 8D 9B 2A: Sta Data+52 1220\ 2923 8E 6E 2A: Stx Data+7 1230\ 2926 8E 7B 2A: Stx Data+20 1240\ 2929 8A : Txa 1250\ 292A 20 45 2A: Jsr WrHex 1260\ 292D AC 9F 2A: Ldy Data+56 1270 .loop3 1280\ 2930 20 5C 2A: Jsr DecSect 1290\ 2933 88 : Dey 1300\ 2934 D0 FA : Bne loop3 1310\ 2936 A0 27 : Ldy #39 1320 .loop4 1330\ 2938 A9 01 : Lda #1 1340\ 293A 99 A0 2A: Sta Data+57,Y 1350\ 293D 88 : Dey 1360\ 293E 20 5C 2A: Jsr DecSect 1370\ 2941 99 A0 2A: Sta Data+57,Y 1380\ 2944 88 : Dey 1390\ 2945 A9 00 : Lda #0 1400\ 2947 99 A0 2A: Sta Data+57,Y 1410\ 294A 88 : Dey 1420\ 294B AD 6E 2A: Lda Data+7 1430\ 294E 99 A0 2A: Sta Data+57,Y 1440\ 2951 88 : Dey 1450\ 2952 10 E4 : Bpl loop4 1460 .loop5 1470\ 2954 A2 67 : Ldx #103 1480\ 2956 A0 2A : Ldy #42 1490\ 2958 A9 7F : Lda #127 1500\ 295A 20 F1 FF: Jsr osword 1510\ 295D AD 73 2A: Lda Data+12 1520\ 2960 F0 13 : Beq next2 1530\ 2962 00 : Brk 1540\ 2963 80 : EQUB &80 1550\ 2964 46 6F : Lsr &6F 1560\ 2966 72 6D 61: EQUS "rmatting error": EQUB &00 1570 .next2 1580\ 2975 A2 74 : Ldx #116 1590\ 2977 A0 2A : Ldy #42 1600\ 2979 A9 7F : Lda #127 1610\ 297B 20 F1 FF: Jsr osword 1620\ 297E AD 7E 2A: Lda Data+23 1630\ 2981 F0 14 : Beq verOK 1640\ 2983 CE 9B 2A: Dec Data+52 1650\ 2986 10 CC : Bpl loop5 1660\ 2988 00 : Brk 1670\ 2989 80 : EQUB &80 1680\ 298A 56 65 : Lsr &65,X 1690\ 298C 72 69 66: EQUS "rify error": EQUB &00 1700 .verOK 1710\ 2997 AE 9B 2A: Ldx Data+52 1720\ 299A A9 20 : Lda #32 1730\ 299C E0 0A : Cpx #10 1740\ 299E F0 02 : Beq next3 1750\ 29A0 A9 3F : Lda #63 1760 .next3 1770\ 29A2 20 E3 FF: Jsr osasci 1780\ 29A5 A9 20 : Lda #32 1790\ 29A7 20 E3 FF: Jsr osasci 1800\ 29AA AE 6E 2A: Ldx Data+7 1810\ 29AD E8 : Inx 1820\ 29AE EC 9C 2A: Cpx Data+53 1830\ 29B1 F0 03 : Beq notLast 1840\ 29B3 4C 1E 29: Jmp nexttrk 1850 .notLast 1860\ 29B6 A2 00 : Ldx #0 1870\ 29B8 A9 00 : Lda #0 1880 .loop6 1890\ 29BA 9D C7 2A: Sta Data+96,X 1900\ 29BD E8 : Inx 1910\ 29BE D0 FA : Bne loop6 1920 .loop7 1930\ 29C0 9D C7 2B: Sta &2BC7,X 1940\ 29C3 E8 : Inx 1950\ 29C4 D0 FA : Bne loop7 1960\ 29C6 AD 9D 2A: Lda Data+54 1970\ 29C9 8D CD 2B: Sta &2BCD 1980\ 29CC AD 9E 2A: Lda Data+55 1990\ 29CF 8D CE 2B: Sta &2BCE 2000\ 29D2 A2 88 : Ldx #136 2010\ 29D4 A0 2A : Ldy #42 2020\ 29D6 A9 7F : Lda #127 2030\ 29D8 20 F1 FF: Jsr osword 2040\ 29DB 20 1B 2A: Jsr WrStr 2050\ 29DE 0D 44 69: Ora &6944 2060\ 29E1 73 6B 20: EQUS "sk formatted - repeat (Y/N) ?": EQUB &A0 2070\ 29FF 20 E0 FF: Jsr osrdch 2080\ 2A02 90 03 : Bcc noesc2 2090\ 2A04 4C D7 28: Jmp escaped 2100 .noesc2 2110\ 2A07 29 5F : And #95 2120\ 2A09 C9 59 : Cmp #89 2130\ 2A0B F0 08 : Beq again 2140\ 2A0D A9 4E : Lda #78 2150\ 2A0F 20 E3 FF: Jsr osasci 2160\ 2A12 4C E7 FF: Jmp osnewl 2170 .again 2180\ 2A15 20 E3 FF: Jsr osasci 2190\ 2A18 4C 58 28: Jmp Format 2200 .WrStr 2210\ 2A1B 85 A8 : Sta &A8 2220\ 2A1D 68 : Pla 2230\ 2A1E 85 A9 : Sta &A9 2240\ 2A20 68 : Pla 2250\ 2A21 85 AA : Sta &AA 2260\ 2A23 98 : Tya 2270\ 2A24 48 : Pha 2280 .morecha 2290\ 2A25 A0 00 : Ldy #0 2300\ 2A27 E6 A9 : Inc &A9 2310\ 2A29 D0 02 : Bne inc2 2320\ 2A2B E6 AA : Inc &AA 2330 .inc2 2340\ 2A2D B1 A9 : Lda (&A9),Y 2350\ 2A2F 08 : Php 2360\ 2A30 29 7F : And #127 2370\ 2A32 20 E3 FF: Jsr osasci 2380\ 2A35 28 : Plp 2390\ 2A36 10 ED : Bpl morecha 2400\ 2A38 E6 A9 : Inc &A9 2410\ 2A3A D0 02 : Bne inc3 2420\ 2A3C E6 AA : Inc &AA 2430 .inc3 2440\ 2A3E 68 : Pla 2450\ 2A3F A8 : Tay 2460\ 2A40 A5 A8 : Lda &A8 2470\ 2A42 6C A9 00: Jmp (&A9) 2480 .WrHex 2490\ 2A45 48 : Pha 2500\ 2A46 4A : Lsr A 2510\ 2A47 4A : Lsr A 2520\ 2A48 4A : Lsr A 2530\ 2A49 4A : Lsr A 2540\ 2A4A 20 4E 2A: Jsr WrNib 2550\ 2A4D 68 : Pla 2560 .WrNib 2570\ 2A4E 29 0F : And #15 2580\ 2A50 C9 0A : Cmp #10 2590\ 2A52 90 02 : Bcc notAE 2600\ 2A54 69 06 : Adc #6 2610 .notAE 2620\ 2A56 69 30 : Adc #48 2630\ 2A58 20 E3 FF: Jsr osasci 2640\ 2A5B 60 : Rts 2650 .DecSect 2660\ 2A5C A6 AD : Ldx &AD 2670\ 2A5E CA : Dex 2680\ 2A5F 10 02 : Bpl &2A63 2690\ 2A61 A2 09 : Ldx #9 2700\ 2A63 8A : Txa 2710\ 2A64 86 AD : Stx &AD 2720\ 2A66 60 : Rts 2730 .Data 2740\ 2A67 FF : EQUB &FF 2750\ 2A68 A0 2A : Ldy #42 2760\ 2A6A FF : EQUB &FF 2770\ 2A6B FF : EQUB &FF 2780\ 2A6C 05 63 : Ora &63 2790\ 2A6E 00 : Brk 2800\ 2A6F 10 2A : Bpl Data+52 2810\ 2A71 00 : Brk 2820\ 2A72 10 00 : Bpl Data+13 2830\ 2A74 FF : EQUB &FF 2840\ 2A75 FF : EQUB &FF 2850\ 2A76 FF : EQUB &FF 2860\ 2A77 FF : EQUB &FF 2870\ 2A78 FF : EQUB &FF 2880\ 2A79 03 : EQUB &3 2890\ 2A7A 5F : EQUB ASC("_") 2900\ 2A7B 00 : Brk 2910\ 2A7C 00 : Brk 2920\ 2A7D 2A : Rol A 2930\ 2A7E 00 : Brk 2940\ 2A7F DD FF FF: Cmp &FFFF,X 2950\ 2A82 FF : EQUB &FF 2960\ 2A83 FF : EQUB &FF 2970\ 2A84 01 69 : Ora (&69,X) 2980\ 2A86 00 : Brk 2990\ 2A87 00 : Brk 3000\ 2A88 FF : EQUB &FF 3010\ 2A89 C7 : EQUB &C7 3020\ 2A8A 2A : Rol A 3030\ 2A8B FF : EQUB &FF 3040\ 2A8C FF : EQUB &FF 3050\ 2A8D 03 : EQUB &3 3060\ 2A8E 4B : EQUB ASC("K") 3070\ 2A8F 00 : Brk 3080\ 2A90 00 : Brk 3090\ 2A91 22 : EQUB ASC("""") 3100\ 2A92 00 : Brk 3110\ 2A93 28 : EQUB 77 \???? 3120\ 2A94 01 90 : Ora (&90,X) 3130\ 2A96 03 : EQUB &3 3140\ 2A97 50 03 : EQUB 77 3150\ 2A99 20 03 0A: EQUW 770:EQUB &03:EQUB &0A 3160\ 2A9C 28 : EQUB 77 3170\ 2A9D 01 90 : EQUW 770 3180\ 2A9F 03 : EQUB &3 3190\ 2AA0 27 : EQUB &27 3200\ 2AA1 00 : Brk 3210\ 2AA2 00 : Brk 3220\ 2AA3 01 27 : Ora (&27,X) 3230\ 2AA5 00 : Brk 3240\ 2AA6 01 01 : Ora (&1,X) 3250\ 2AA8 27 : EQUB ASC("'") 3260\ 2AA9 00 : Brk 3270\ 2AAA 02 : EQUB &2 3280\ 2AAB 01 27 : Ora (&27,X) 3290\ 2AAD 00 : Brk 3300\ 2AAE 03 : EQUB &3 3310\ 2AAF 01 27 : Ora (&27,X) 3320\ 2AB1 00 : Brk 3330\ 2AB2 04 : EQUB &4 3340\ 2AB3 01 27 : Ora (&27,X) 3350\ 2AB5 00 : Brk 3360\ 2AB6 05 01 : Ora &1 3370\ 2AB8 27 : EQUB ASC("'") 3380\ 2AB9 00 : Brk 3390\ 2ABA 06 01 : Asl &1 3400\ 2ABC 27 : EQUB ASC("'") 3410\ 2ABD 00 : Brk 3420\ 2ABE 07 : EQUB &7 3430\ 2ABF 01 27 : Ora (&27,X) 3440\ 2AC1 00 : Brk 3450\ 2AC2 08 : Php 3460\ 2AC3 01 27 : Ora (&27,X) 3470\ 2AC5 00 : Brk 3480\ 2AC6 09 00 : Ora #0 3490\ 2AC8 00 : Brk 3500\ 2AC9 00 : Brk 3510\ 2ACA 00 : Brk 3520\ 2ACB 00 : Brk 3530\ 2ACC 00 : Brk 3540\ 2ACD 00 : Brk 3550\ 2ACE 00 : Brk 3560\ 2ACF 00 : Brk 3570\ 2AD0 00 : Brk 3580\ 2AD1 00 : Brk 3590\ 2AD2 00 : Brk 3600\ 2AD3 00 : Brk 3610\ 2AD4 00 : Brk 3620\ 2AD5 00 : Brk 3630\ 2AD6 00 : Brk 3640\ 2AD7 00 : Brk 3650\ 2AD8 00 : Brk 3660\ 2AD9 00 : Brk 3670\ 2ADA 00 : Brk 3680\ 2ADB 00 : Brk 3690\ 2ADC 00 : Brk 3700\ 2ADD 00 : Brk 3710\ 2ADE 00 : Brk 3720\ 2ADF 00 : Brk 3730\ 2AE0 00 : Brk 3740\ 2AE1 00 : Brk 3750\ 2AE2 00 : Brk 3760\ 2AE3 00 : Brk 3770\ 2AE4 00 : Brk 3780\ 2AE5 00 : Brk 3790\ 2AE6 00 : Brk 3800\ 2AE7 00 : Brk 3810\ 2AE8 00 : Brk 3820\ 2AE9 00 : Brk 3830\ 2AEA 00 : Brk 3840\ 2AEB 00 : Brk 3850\ 2AEC 00 : Brk 3860\ 2AED 00 : Brk 3870\ 2AEE 00 : Brk 3880\ 2AEF 00 : Brk 3890\ 2AF0 00 : Brk 3900\ 2AF1 00 : Brk 3910\ 2AF2 00 : Brk 3920\ 2AF3 00 : Brk 3930\ 2AF4 00 : Brk 3940\ 2AF5 00 : Brk 3950\ 2AF6 00 : Brk 3960\ 2AF7 00 : Brk 3970\ 2AF8 00 : Brk 3980\ 2AF9 00 : Brk 3990\ 2AFA 00 : Brk 4000\ 2AFB 00 : Brk 4010\ 2AFC 00 : Brk 4020\ 2AFD 00 : Brk 4030\ 2AFE 00 : Brk 4040\ 2AFF 00 : Brk 4050.stardisk 4060Ldx #std MOD 256:Ldy #std DIV 256 4070Jsr oscli 4080Rts 4090.std EQUS "Disk":EQUB 13 4100] 4110NEXT Pass 4120OSCLI("SAVE FORM77 "+STR$~(Code)+" "+STR$~(O%)+" FFFF"+STR$~(RunAddr)+" FFFF"+STR$~(RunAddr))