10 REM QFORMAT drive [,drive] 20 MODE6 30 HIMEM=HIMEM-&700 40 OSRDCH=&FFE0 50 OSASCI=&FFE3 60 OSWORD=&FFF1 70 buffer=&70 80 FORI%=0 TO 3 STEP 3 90 P%=&900 100 [OPTI% 110 .format 120 LDY #0 130 .findend 140 LDA(&F2),Y:INY:CMP#13:BEQhelp:CMP#32:BNE findend:BEQ findd1 150 .help 160 JSR print 170 EQUB10 180 EQUS"ADFS quick format " 190 EQUW&0A0D 200 EQUS"*QFORMAT drive [,drive]" 210 EQUW&0A0D 220 EQUB0 230 RTS \ Return to Basic 240 .error 250 JSR print 260 EQUW&0A0D 270 EQUS"Disc error" 280 EQUW&0A0D 290 EQUB0 300 RTS \ Return to Basic 310 .findd1 320 LDA(&F2),Y:CMP #32:BNE gck1 330 .skip1 340 INY:LDA(&F2),Y:CMP #32:BEQ skip1 350 .gck1 360 CMP#13:BNE clrbuf1:JMP help 370 .clrbuf1 380 LDA #32:LDX #16 390 .clr1 400 DEX:STA buffer,X:BNE clr1 410 .getd1 420 LDA (&F2),Y:STA buffer,X 430 INY:INX 440 CMP #13:BNE getd1 450 460 JSR print 470 EQUB10 480 EQUS"Press any key when ready" 490 EQUW&0A0D 500 EQUB0 510 JSR OSRDCH 520 .loop 530 LDX xstore 540 LDA buffer,X:INX:STX xstore 550 CMP #13:BEQ end 560 CMP #32:BEQ loop 570 CMP #44:BEQ loop 580 JSR do:JMP loop 590 .end 600 RTS \ Return to Basic 610 .do 620 SEC:SBC #48:CMP #6:BMI valid:JMP help 630 .valid 640 ASL A:ASL A:ASL A:ASL A:ASL A 650 STA drive 660 LDA #&08:STA command:JSR osword 670 LDA block:BEQ ok1:JMP error \ error check 680 .ok1 690 LDA HIMEM+&FD:STA hisize 700 LDA HIMEM+&FC:STA losize 710 720 JSR resetdir \ Set up directory 730 LDA #&0A:STA command:JSR osword 740 LDA block:BEQ ok2:JMP error \ error check 750 .ok2 760 RTS 770 780 .resetdir 790 LDA #0:TAY:TAX 800 .DLP1 810 STA HIMEM,X 820 STA HIMEM+&100,X 830 STA HIMEM+&200,X 840 STA HIMEM+&300,X 850 STA HIMEM+&400,X 860 STA HIMEM+&500,X 870 STA HIMEM+&600,X 880 INX:DEY:BNE DLP1 890 CLC 900 LDA #7:STA HIMEM \ start sector of first free space 910 LDX hisize:STX HIMEM+&0FD 920 ADC hisize \ sectors on disc 930 LDX losize:STX HIMEM+&0FC 940 ADC losize 950 STA HIMEM+&0FF \ check sum 960 LDA #&F9:STA HIMEM+&100 \ length of first free space 970 LDA #&09:STA HIMEM+&101 \ in sectors 980 LDA #&AD:STA HIMEM+&1FB \ disc ID 990 LDA #&55:STA HIMEM+&1FC \ disc ID 1000 LDA #&03:STA HIMEM+&1FE \ pointer to end of free space list 1010 LDA #&08:STA HIMEM+&1FF \ check sum 1020 LDA #&48:STA HIMEM+&201 \ H 1030 LDA #&75:STA HIMEM+&202 \ u 1040 LDA #&67:STA HIMEM+&203 \ g 1050 LDA #&6F:STA HIMEM+&204 \ o 1060 LDA #&24 1070 STA HIMEM+&6CC:STA HIMEM+&6D9 \ $ directory name & title 1080 LDA #&0D 1090 STA HIMEM+&6CD:STA HIMEM+&6DA 1100 LDA #&02:STA HIMEM+&6D6 \ start sector of parent directory 1110 LDA #&48:STA HIMEM+&6FB \ H 1120 LDA #&75:STA HIMEM+&6FC \ u 1130 LDA #&67:STA HIMEM+&6FD \ g 1140 LDA #&6F:STA HIMEM+&6FE \ o 1150 RTS 1160 .print 1170 LDY #0:PLA:STA pr1+2:PLA:STA pr1+3 1180 .pr1 1190 INY:LDA &FFFF,Y \DUMMY 1200 JSR &FFE3:BNE pr1 1210 TYA:CLC:ADC pr1+2:TAX:BCC pr2:INC pr1+3 1220 .pr2 1230 LDA pr1+3:PHA:TXA:PHA:RTS 1240 .osword 1250 LDA #&72:LDX #block MOD &100:LDY #block DIV &100:JSR OSWORD:RTS 1260 .block 1270 EQUB 0 1280 EQUB HIMEM MOD &100 1290 EQUB HIMEM DIV &100 1300 EQUB 0 1310 EQUB 0 1320 .command 1330 EQUB 0 1340 .drive 1350 EQUB 0 1360 EQUB 0 1370 EQUB 0 1380 EQUB 7 1390 EQUB 0 1400 EQUB 0 1410 EQUB 7 1420 EQUB 0 1430 EQUB 0 1440 .losize EQUB0 1450 .hisize EQUB0 1460 .xstore EQUB0 1470 ] 1480 NEXT 1490 PRINT'" *SAVE QFORMAT "STR$~format" "STR$~P%