10 REM ******************************* 20 REM * BIBLIOTEKSPROGRAM F\R ABC80 * 30 REM * REVIDERING 800804 * 40 REM * UTVECKLINGSAVDELNINGEN * 50 REM * ABC80-LAB * 55 REM * Bakl{ngesmodifierat 81-04-07* 57 REM * av Gunnar Tidner * 60 REM ******************************* 70 DIM N$=256 : REM N$=NAMNSTR[NG 80 POKE 65037%,198%,0% : REM PRINTERINIT. 90 ; CHR$(12) 100 ; CHR$(12)TAB(9)'** ABC80 LIB **' 110 ; TAB(9)"P - printer" : ; TAB(9)"S - Storlekar" 120 ; TAB(9)"F - Filstatus" : ; TAB(9)"D - Viss drive" 130 ; TAB(9)"Optioner (P,S,F,D) "; : INPUT O$ 140 L%=FNO%('P') : IF L% OPEN 'PR:' ASFILE L% 150 F%=FNO%('S') 160 N%=FNO%('N') 170 ]%=FNO%('F') 180 [%=FNO%('D') 190 IF [% ; "Drive: "; : INPUT D1% : D2%=D1% ELSE D1%=0 : D2%=6 200 IF N% OR F% OR ]% THEN W1%=18% ELSE W1%=13% 210 IF ]% THEN N%=0 : F%=0 220 IF L% THEN W2%=80% ELSE W2%=40% : ; CHR$(12); 230 ; #L%TAB(9)'** ABC80 LIB **'; 240 FOR D%=D1% TO D2% 250 G8%=0% 260 POKE -767%,D% 270 Z%=CALL(24678%,224%) 280 IF PEEK(-747%) AND 128% GOTO 830 290 IF PEEK(-747%) THEN 880 300 B%=-2577% : FOR I%=0% TO 7% 310 M%(I%)=PEEK(B%+I%) : NEXT I% 320 G%=0% : FOR P%=-2816% TO P%+160% 330 IF PEEK(P%)=255% THEN 370 ELSE IF PEEK(P%)=0% THEN G%=G%+8% : GOTO 370 340 Q%=1% 350 G%=G%-((PEEK(P%) AND Q%)=0%) 360 Q%=Q%+Q% : IF Q%<256% THEN 350 370 NEXT P% : ; #L% 380 IF G8%=0% THEN G8%=G% : Z%=CALL(24678%,192%) : GOTO 290 390 N$="" : Z%=CALL(24678%,0%) : IF PEEK(-747%) THEN 880 400 REM h{r {r det ! 410 FOR I%=-2681% TO -2561% : N$=N$+CHR$(PEEK(I%)) 420 REM  430 IF PEEK(I%)=13% 470 440 IF PEEK(I%)<32 OR PEEK(I%)>127% 460 450 NEXT I% 460 N$='' 470 REM 480 ; #L% : ; #L%'Drive 'CHR$(D%+48%) 490 IF LEN(N$)>1 ; #L%'Volume : 'N$ 500 ; 510 K%=0% : FOR S%=7% TO 0% STEP -1% 520 IF M%(S%)<1 GOTO 800 530 Z%=CALL(24678%,512%+S%*32%) 540 IF PEEK(-747%) THEN 880 550 FOR B%=-2576% TO -2816% STEP -16% 560 IF PEEK(B%)=255% OR PEEK(B%+4%)=0% GOTO 790 570 R%=PEEK(B%)*256%+PEEK(B%+1%) 580 X$='' 590 IF ]%<>1 GOTO 630 600 \%=PEEK(B%+1%) 610 IF \% AND 1 X$=X$+"(W" ELSE X$=X$+" (" 620 IF \% AND 2 X$=X$+"D)" ELSE X$=X$+") " 630 FOR I%=4% TO 14% 640 IF I%=12% THEN X$=X$+"." 650 IF X$=" () " X$=" " 660 X$=X$+CHR$(PEEK(B%+I%)) : NEXT I% 670 ; #L%TAB(K%);X$; 680 IF F%=0% AND N% ; CHR$(32,(B%+2816%)/64%+48%,(B%+2816% AND 56%)/8%+48%,48%+S%); 690 IF F%=0% THEN 770 700 POKE -1024%,6%,112%,195%,15%,96% 710 Z%=CALL(-1024%,R%) : IF PEEK(-747%) THEN 880 720 Y%=0% : FOR J%=0% TO 254% STEP 2% 730 IF PEEK(J%-1020%)=255% GOTO 760 740 V%=PEEK(J%-1019%) 750 Y%=Y%+(V% AND 31%)+1% : NEXT J% 760 ; #L%Y%; 770 IF PEEK(65011)=23 AND PEEK(65012)>30-]%*10 GET Q2$ 780 K%=K%+W1% : IF K%+W1%>=W2% ; #L% : K%=0% 790 NEXT B% 800 NEXT S% 810 IF K% ; #L% 820 ; #L% : ; #L%' 'G%;' av'G8%' sektorer kvar' 830 NEXT D% : IF ]% ; : ; "W = Skrivskyddad, D = raderskyddad" 840 IF L% ; #L%,CHR$(12) 850 REM CHAIN "" 860 END 870 DEFFNO%(X$)=-(INSTR(1%,O$,X$)<>0% OR INSTR(1%,O$,CHR$(ASC(X$)+32%))<>0%) 880 ; : IF PEEK(-747%)=16 ; "Skivan verkar d}ligt formaterad" : GOTO 830 ELSE ; "Diskfel" : GOTO 830