1 REM +++++++++++++++++++++++++++++++++ 2 REM ! Program .... CAT.DSK 3 REM ! Utg}va 2.10 1983-01-11 4 REM ! av (c) ??????????? 5 REM ! {ndrat av Bengt Larsson <2728> 7 REM ! Minne 16 Kbytes f|r flexskiva 9 REM +++++++++++++++++++++++++++++++++ 10 REM Ett helt vanligt LIB-program, men 11 REM funkar f|r b}de 40/80 tkn's sk{rm 12 REM och till}ter 32-tecken's flex- 13 REM skivenamn. 14 REM 15 REM Screening av 16 REM Allan Varcoe & G|ran Olsson 17 REM 19 REM +++++++++++++++++++++++++++++++++ 200 ; '** ABC80 CATATOG Ver. 2.10 **' 250 ; "Fil: "; : INPUTLINE F$ : IF LEN(F$)=2% THEN F8%=-1% ELSE F8%=0% : F$=LEFT$(F$,LEN(F$)-2%) 260 F1%=INSTR(1%,F$,".") : IF F1%=0% THEN F1$=F$ ELSE F1$=LEFT$(F$,F1%-1%) : F2$=RIGHT$(F$,F1%+1%) 300 ; : ; "P - Printer" : ; "N - Fysiska filnummer" 400 ; "Optioner ......(Nej) "; : INPUTLINE O$ : ; 500 L%=FNO%('P') 550 IF L% ; 'Listfil ........(PR:) '; : INPUTLINE D9$ : D9$=LEFT$(D9$,LEN(D9$)-2%) : IF D9$='' D9$='PR:' 600 PREPARE D9$ ASFILE L% 700 REM F%=FNO%('S') 800 N%=FNO%('N') : IF N%=0% THEN F%=1% 900 W1%=20% 1000 IF PEEK(885%)=88% THEN W2%=81% ELSE W2%=41% 1100 FOR D%=0% TO 6% 1200 G8%=0% 1300 POKE -767%,D% 1400 Z%=CALL(24678%,224%) 1500 IF PEEK(-747%) AND 128% GOTO 5500 1600 B%=-2577% : FOR I%=0% TO 7% 1700 M%(I%)=PEEK(B%+I%) : NEXT I% 1800 G%=0% : FOR P%=-2816% TO P%+160% 1900 IF PEEK(P%)=255% THEN 2300 ELSE IF PEEK(P%)=0% THEN G%=G%+8% : GOTO 2300 2000 Q%=1% 2100 G%=G%-((PEEK(P%) AND Q%)=0%) 2200 Q%=Q%+Q% : IF Q%<256% THEN 2100 2300 NEXT P% 2400 IF G8%=0% THEN G8%=G% : Z%=CALL(24678%,192%) : GOTO 1600 2500 X$="" : Z%=CALL(24678%,0%) : IF PEEK(-747%) THEN 5700 2600 FOR I%=-2592% TO -2561% : X$=X$+CHR$(PEEK(I%)) 2700 NEXT I% : IF (ASC(X$)>31% AND ASC(X$)<128%) X$=' Flexskiva: '+X$ ELSE X$='' 2800 GOSUB 5800 : ; #L%'=== Drive #'CHR$(D%+48%)X$; : GOSUB 5800 : GOSUB 5800 2900 K%=0% : FOR S%=0% TO 7% 3000 IF M%(S%)<1 GOTO 5200 3100 Z%=CALL(24678%,512%+S%*32%) 3200 IF PEEK(-747%) THEN 5700 3300 FOR B%=-2816% TO -2576% STEP 16% 3400 IF PEEK(B%)=255% OR PEEK(B%+4%)=0% GOTO 5100 3500 R%=PEEK(B%)*256%+PEEK(B%+1%) 3600 X$='' : FOR I%=4% TO 14% 3700 IF I%=12% THEN X$=X$+"." 3800 X$=X$+CHR$(PEEK(B%+I%)) : NEXT I% : \%=0% 3900 IF F8% THEN ; #L%,TAB(K%)X$; : \%=-1% : GOTO 4000 3910 IF F1%=0% AND LEFT$(X$,LEN(F1$))=F1$ THEN ; #L%,TAB(K%)X$; : \%=-1% : GOTO 4000 3920 IF F1%=1% AND MID$(X$,10%,LEN(F2$))=F2$ THEN ; #L%,TAB(K%)X$; : \%=-1% : GOTO 4000 3930 IF LEFT$(X$,LEN(F1$))=F1$ AND MID$(X$,10%,LEN(F2$))=F2$ THEN ; #L%,TAB(K%)X$; : \%=-1% 4000 IF F%=0% AND N% AND \% ; #L%,CHR$(32,(B%+2816%)/64%+48%,(B%+2816% AND 56%)/8%+48%,48%+S%); 4100 IF F%=0% THEN 4900 4200 POKE -1024%,6%,112%,195%,15%,96% 4300 Z%=CALL(-1024%,R%) : IF PEEK(-747%) THEN 5700 4400 Y%=0% : FOR J%=0% TO 254% STEP 2% 4500 IF PEEK(J%-1020%)=255% GOTO 4800 4600 V%=PEEK(J%-1019%) 4700 Y%=Y%+(V% AND 31%)+1% : NEXT J% 4800 IF \% ; #L%Y%; 4900 IF (R% AND 1% AND \%) ; #L%,TAB(K%+12%+(4%*F%))' S'; ELSE IF (R% AND 2% AND \%) ; #L%,TAB(K%+12%+(4%*F%))' R'; 5000 IF \% THEN K%=K%+W1% : IF K%+W1%>=W2% GOSUB 5800 : K%=0% 5100 NEXT B% 5200 NEXT S% 5300 IF K% GOSUB 5800 5400 GOSUB 5800 : ; #L%,RIGHT$(NUM$(G%),2%)' av'G8%' sektorer lediga'; : GOSUB 5800 : GOSUB 5800 5500 NEXT D% : GOTO 6100 5600 DEFFNO%(X$)=-(INSTR(1%,O$,X$)<>0% OR INSTR(1%,O$,CHR$(ASC(X$)+32%))<>0%) 5700 ; : ; "Diskfel DRIVE"D% : GOTO 5500 5800 ; #L% : IF L% RETURN 5900 F9%=F9%+1% : IF F9%>23% GET Z9$ : F9%=0% 6000 IF ASC(Z9$)<>13% RETURN 6100 END