100 ! ================================================================ 110 ! Systemnamn - 120 ! Program SYSLIB.BAC 130 ! Version 2.5 c 140 ! 150 ! Funktion Fil-systemprogram f|r ABC832/834/838/RAM: 160 ! 170 ! Dator Luxor ABC800/802/806 180 ! 190 ! (c) Hans Bergman <5316> 1989-12-29 200 ! 210 ! ================================================================ 220 ! 230 EXTEND 240 ON ERROR GOTO 4910 250 ! 260 OPEN "PR:VSA70C72.5" AS FILE 8% ! ===================( Printer )=== 270 ! 280 DIM A$(256%)=22%,Buf$(8%)=253%,Bsr$=0%,A1$=8%,A2$=3%,B$=160%,S8$=0% 290 POKE VAROOT(S8$),80%,0%,48%,127%,80%,0% 300 POKE VAROOT(Bsr$),0%,1%,0%,245%,0%,1% 310 L1%=0% : L2%=1% : L3%=10% : L4%=0% : L5%=1% : L6%=1% : L7%=17% : L8%=5% 320 Enh$="DR0:DR1:MF0:MF1:SF0:SF1:RAM:" 330 En$="MF" : Dr$="0" : Fs$="N" 340 A%=PEEK(-767%) 350 IF A% AND 1% THEN Dr$="1" 360 IF A%=16% OR A%=17% THEN En$="SF" 370 IF A%=29% THEN En$="RA" : Dr$="M" 380 Upp$=CHR$(1%,0%,5%,17%,144%,121%,33%,224%,121%,237%,176%,201%) 390 Upp%=VARPTR(Upp$) 400 GOSUB 4530 : GOSUB 4570 410 ; CUR(1%,0%) " SYSLIB - version 2.5 - HB 1989" 420 ; CUR(5%,2%) "Drivenhet" 430 E6%=2% : IF En$="RA" THEN E6%=0% 440 E1%=5% : E2%=25% : E3%=3% : A$=En$+Dr$ : Z$=": " : GOSUB 4160 450 ON Pf%+1% GOTO 460,4970,400,400,400,430,400,460 460 IF LEN(A$)=3% THEN GOSUB 4120 ELSE 430 470 IF INSTR(1%,Enh$,A$)=0% THEN 430 480 En$=LEFT$(A$,2%) : Dr$=RIGHT$(A$,3%) 490 ; CUR(7%,2%) "Filstatus (J/N)" 500 E1%=7% : E2%=25% : E3%=1% : A$=Fs$ : Z$=" " : GOSUB 4150 : Fs$=A$ 510 ON Pf%+1% GOTO 520,4970,400,400,400,430,400,520 520 IF A$="J" OR A$="j" THEN A1%=1% ELSE A1%=0% 530 ; CUR(9%,2%) "Ange ev. urval" 540 E1%=9% : E2%=25% : E3%=12% : A$=U$ : GOSUB 4150 : U$=A$ 550 ON Pf%+1% GOTO 560,4970,400,400,400,500,400,560 560 IF LEN(U$)=0% THEN 580 570 GOSUB 4120 : U$=A$ 580 GOSUB 4530 590 S1%=1% : N2%=0% : V$="" 600 IF En$="DR" THEN Dr%=8%+VAL(Dr$) 610 IF En$="MF" THEN Dr%=8%+VAL(Dr$) 620 IF En$="SF" THEN Dr%=16%+VAL(Dr$) 630 IF En$="RA" THEN Dr%=29% 640 POKE -767%,Dr% : Z%=CALL(24678%,0%) : IF PEEK(-747%) THEN 1130 650 FOR I%=62855% TO 62975% 660 IF PEEK(I%)=13% AND PEEK(I%+1%)=10% THEN 700 670 IF PEEK(I%)<32% OR PEEK(I%)>127% THEN V$="" : GOTO 700 680 V$=V$+CHR$(PEEK(I%)) 690 NEXT I% 700 Z%=CALL(24678%,14%) : GOSUB 1020 : D1%=A% 710 Z%=CALL(24678%,15%) : GOSUB 1020 : D2%=A% 720 ; CUR(3%,2%) En$+Dr$+": " V$ TAB(60%) "Sid. 1 (1)" CUR(4%,0%) 730 N0%=0% : T%=0% : S0%=1% : S$=" " : N$=" " 740 FOR Sr%=16% TO 31% 750 A%=0% : Z%=CALL(24678%,Sr%) 760 IF PEEK(-747%) THEN 1150 770 FOR I%=1% TO 16% 780 IF PEEK(62720%+A%)=255% OR PEEK(62720%+A%)=0% THEN A%=A%+16% : GOTO 960 790 IF A1%=0% THEN 870 800 B%=PEEK(62720%+A%+1%) : S$=" " 810 IF (B% AND 2%) THEN S$="r " 820 IF (B% AND 1%) THEN S$="s " 830 B%=PEEK2(62720%+A%+2%) 840 B$=NUM$(B%) : N$=" " 850 IF B$="0" THEN B$=" " 860 MID$(N$,2%,LEN(B$))=B$ 870 A%=A%+4% 880 POKE VAROOT(A1$)+2%,A%,245%,8%,0% 890 POKE VAROOT(A2$)+2%,A%+8%,245%,3%,0% 900 A$=A1$+"."+A2$ 910 A%=A%+12% 920 IF LEN(U$) THEN IF INSTR(1%,A$,U$)=0% THEN 960 930 N2%=N2%+1% : IF N2%=61% THEN GOSUB 1100 940 N0%=N0%+1% : A$(N0%)=S$+A$+N$ : ; A$(N0%); 950 T%=T%+1% : IF T%=4% THEN T%=0% : ; " "; 960 NEXT I% 970 IF PEEK(65507%)=192% THEN GET R$ : GOTO 990 980 NEXT Sr% 990 K$=NUM$(D1%)+" sektorer kvar av totalt "+NUM$(D2%) 1000 ; : ; : ; " " K$; : IF LEN(U$) THEN ; TAB(41%) "Urval " U$ 1010 L%=5% : M%=1% : N1%=1%+(60%*(S1%-1%)) : N2%=0% : GOTO 1160 1020 A%=0% 1030 FOR I%=62720% TO 62895% 1040 B%=PEEK(I%) : IF B%=255% THEN 1090 1050 IF B%=0% THEN A%=A%+32% : GOTO 1090 1060 C%=128% : WHILE C% 1070 IF NOT B% AND C% THEN A%=A%+4% 1080 C%=C%/2% : WEND 1090 NEXT I% : RETURN 1100 S0%=S0%+1% : S1%=S0% : N2%=1% 1110 FOR J%=4% TO 21% : ; CUR(J%,0%) SPACE$(80%) : NEXT J% 1120 ; CUR(3%,63%) S0% CUR(3%,69%) NUM$(S0%) CUR(4%,0%) : RETURN 1130 ; CUR(23%,2%) "Kan ej l{sa " En$+Dr$+":"; 1140 GOSUB 4930 : GOTO 1690 1150 ; CUR(23%,2%) "Fel p} sektor " Sr%; : GOSUB 4930 : GOTO 980 1160 L4%=0% : L5%=1% : L6%=1% 1170 ON ERROR GOTO 4910 1180 GOSUB 4610 1190 GOSUB 4570 1200 GOSUB 4630 1210 ON L6% GOTO 1220,1240,1480,1680,1720,1840,2230,2450,2830,3040,4970 1220 IF S0%>1% THEN GOSUB 3990 1230 GOTO 1200 1240 IF N0%=0% THEN 1170 1250 ; CUR(0%,0%) SPACE$(160%) CUR(0%,18%) GRN "Sorterar" 1260 ; CUR(0%,29%) GRN "namn" CUR(1%,30%) "typ" : S%=0% 1270 ; CUR(S%,29%) "" CUR(S%,29%); : GET B$ : ; CUR(S%,29%) " " 1280 IF B$=CHR$(192%) THEN 1170 1290 IF B$=CHR$(13%) THEN 1320 1300 IF S% THEN S%=0% ELSE S%=1% 1310 GOTO 1270 1320 IF S% THEN ; CUR(0%,30%) SPACE$(16%) ELSE ; CUR(1%,30%) SPACE$(16%) 1330 IF S% THEN FOR I%=1% TO N0% : A$(I%)=MID$(A$(I%),12%,3%)+A$(I%) : NEXT I% 1340 A%=N0% 1350 A%=A%/2% 1360 IF A%=0% THEN 1460 1370 B%=N0%-A% 1380 FOR J%=1% TO B% 1390 I%=J% 1400 C%=I%+A% 1410 IF A$(I%)<=A$(C%) THEN 1440 1420 B$=A$(I%) : A$(I%)=A$(C%) : A$(C%)=B$ : I%=I%-A% 1430 IF I%>0% THEN 1400 1440 NEXT J% 1450 GOTO 1350 1460 IF S% THEN FOR I%=1% TO N0% : A$(I%)=RIGHT$(A$(I%),4%) : NEXT I% 1470 S1%=S0% : GOSUB 3990 : L5%=1% : L6%=1% : GOTO 1180 1480 ; CUR(0%,0%) SPACE$(160%) CUR(0%,35%) GRN "Utskrift" 1490 ; CUR(23%,0%) " Justera skrivaren och tryck RETURN "; 1500 GET R$ : IF R$=CHR$(192%) THEN 1660 1510 IF R$<>CHR$(13%) THEN 1500 1520 GOSUB 4890 : IF Z%=0% THEN 1670 1530 ; CUR(23%,0%) SPACE$(80%) CUR(0%,44%) GRN "p}g}r" 1540 IF S1%>1% THEN S1%=S0% : GOSUB 3990 1550 ; #8% SPACE$(2%) "SYSLIB 2.5 / " LEFT$(TIME$,10%) : ; #8% 1560 ; #8% SPACE$(2%) En$+Dr$+": " V$ : ; #8% : Hc1%=5% 1570 FOR I1%=1% TO S0% 1580 IF S0%=1% THEN Hc2%=21% : GOTO 1630 1590 IF I1%=1% THEN Hc2%=19% : GOTO 1630 1600 IF I1%=S0% THEN Hc2%=21% : GOTO 1620 1610 Hc2%=19% 1620 GOSUB 3990 1630 GOSUB 4840 1640 IF PEEK(65507%)=192% THEN GET R$ : GOTO 1170 1650 NEXT I1% 1660 GOTO 1170 1670 ; CUR(23%,0%) " Skrivaren ej klar "; : GOTO 1500 1680 ; CUR(0%,0%) SPACE$(160%) CUR(0%,52%) GRN "Byt drive" 1690 IF Dr$="0" THEN Dr$="1" ELSE Dr$="0" 1700 IF En$="RA" THEN En$="MF" : Dr$="0" 1710 GOSUB 4550 : GOTO 420 1720 GOSUB 4580 1730 ; CUR(0%,0%) SPACE$(160%) CUR(0%,69%) GRN "Volymnamn" 1740 V1$=V$ : E1%=3% : E2%=7% : E3%=48% : A$=V$ : GOSUB 4150 : V$=A$ 1750 ON Pf%+1% GOTO 1760,1820,400,400,400,1740,400,1740 1760 IF V$=V1$ THEN 1810 1770 Bsr$=STRING$(256%,0%) 1780 MID$(Bsr$,136%,LEN(V$)+2%)=V$+CHR$(13%,10%) 1790 Z%=CALL(24675%,0%) : IF PEEK(-747%) THEN 1830 1800 ; CUR(3%,7%) V$+SPACE$(49%-LEN(V$)) 1810 GOTO 1170 1820 V$=V1$ : GOTO 1800 1830 GOSUB 4960 : GOTO 1820 1840 IF N0%=0% THEN 1170 1850 ON ERROR GOTO 2220 1860 ; CUR(0%,0%) SPACE$(160%) CUR(1%,1%) GRN "Status" 1870 GOSUB 4580 : GOSUB 4600 1880 GOSUB 2180 1890 GOSUB 3270 : ON Z% GOTO 1910,1900,1170 1900 GOSUB 4080 : ; CHR$(12%) : CHAIN En$+Dr$+":"+E$ 1910 GOSUB 4080 : IF E$="" THEN 1890 1920 OPEN En$+Dr$+":"+E$ AS FILE 1% 1930 C$="?-fil" : D$="" : N2%=N1% 1940 ON ERROR GOTO 1970 1950 FOR I%=1% TO 2% : INPUT LINE #1%,B$ : NEXT I% 1960 C$="TEXT-fil" : ON ERROR GOTO 2220 : GOTO 2070 1970 RESUME 1980 1980 ON ERROR GOTO 2220 1990 POSIT #1%,0% : GET #1%,B$ COUNT 21% 2000 A%=ASCII(B$) : B%=ASCII(RIGHT$(B$,21%)) 2010 IF A%=143% OR A%=144% THEN C$="Programfil" ELSE 2070 2020 IF B%<>135% THEN C$="Squeezad programfil" 2030 IF B%=203% THEN C$="Krypterad programfil" 2040 IF A%=144% THEN C$=C$+" (806)" 2050 B%=ASCII(RIGHT$(B$,3%)) : IF B% AND 2% THEN D$=D$+"LIST-" 2060 A$=MID$(B$,5%,2%) : C$=C$+", "+NUM$(CVT$%(A$))+" bytes" 2070 IF PEEK(64769%) AND 64% THEN D$=D$+"skriv-" 2080 IF PEEK(64769%) AND 128% THEN D$=D$+"rader-" 2090 IF LEN(D$) THEN D$=D$+"skyddad" 2100 N%=PEEK2(64778%)+1% : IF N% THEN N$=NUM$(N%) ELSE N$="?" 2110 ; CUR(0%,0%) SPACE$(80%) 2120 ; CUR(0%,2%) E$ TAB(22%) N$ " sektorer " TAB(41%) C$ 2130 ; CUR(1%,40%) SPACE$(39%) CUR(1%,40%) D$ : GOSUB 2190 2140 ; CUR(0%,0%) GRN CUR(L%,M%) "" CUR(L%,M%); : GET B$ : B%=ASCII(B$) 2150 IF B%<>195% THEN Z%=SYS(6%) : GOTO 2170 2160 GOSUB 4890 : IF Z% THEN Hc1%=0% : Hc2%=1% : GOSUB 4840 : ; #8% 2170 ; CUR(23%,64%) SPACE$(14%) CUR(L%,M%) " " : GOTO 1880 2180 ; CUR(23%,40%) "RETURN status RUN" CUR(21%,0%) : RETURN 2190 ; CUR(23%,66%) "PF4 utskrift" CUR(21%,0%) : RETURN 2200 GOSUB 4890 : IF Z% THEN ; #8% E$ : Hc1%=4% : Hc2%=21% : GOSUB 4840 2210 RETURN 2220 GOSUB 4920 : RESUME 1870 2230 IF N0%=0% THEN 1170 2240 ON ERROR GOTO 2440 2250 ; CUR(0%,0%) SPACE$(160%) CUR(1%,18%) GRN "Radera" 2260 GOSUB 4580 : GOSUB 4600 : GOSUB 2410 2270 GOSUB 3270 : ON Z% GOTO 2270,2280,1170,2270 2280 FOR I%=1%+(60%*(S1%-1%)) TO S1%*60% 2290 IF ASCII(A$(I%))=62% THEN 2310 2300 NEXT I% : GOSUB 2420 : ; CUR(L%,M%-1%) SPACE$(19%) : GOTO 2270 2310 M1%=0% : L1%=5% : GOSUB 4590 2320 FOR N1%=1%+(60%*(S1%-1%)) TO S1%*60% 2330 IF PEEK(65507%)=192% THEN 2390 2340 IF N1%>N0% THEN 2390 2350 IF ASCII(A$(N1%))<>62% THEN 2370 2360 GOSUB 2420 : ; CUR(L1%,M1%) SPACE$(19%) 2370 M1%=M1%+19% : IF M1%>64% THEN M1%=0% : L1%=L1%+1% 2380 NEXT N1% 2390 L%=5% : M%=1% : N1%=1%+(60%*(S1%-1%)) 2400 POKE 65505%,0%,0% : GOTO 2260 2410 ; CUR(23%,40%) " radera" CUR(21%,0%) : RETURN 2420 GOSUB 4080 : IF E$="" THEN RETURN 2430 KILL En$+Dr$+":"+E$ : A$(N1%)=SPACE$(19%) : RETURN 2440 GOSUB 4920 : RESUME 2260 2450 IF N0%=0% THEN 1170 2460 ON ERROR GOTO 2820 2470 IF LEN(Ek$) THEN 2500 2480 IF En$="RA" THEN Ek$="MF0" : GOTO 2500 2490 IF Dr$="0" THEN Ek$=En$+"1" ELSE Ek$=En$+"0" 2500 ; CUR(0%,0%) SPACE$(160%) CUR(1%,35%) GRN "Kopiering till enhet" 2510 E1%=1% : E2%=59% : E3%=3% : A$=Ek$ : Z$=": " : GOSUB 4150 : Z$=" " 2520 ON Pf%+1% GOTO 2530,1170,400,400,400,2510,400,2530 2530 IF LEN(A$)=0% THEN 2510 2540 GOSUB 4120 : Ek$=A$ 2550 GOSUB 4580 : GOSUB 4600 : GOSUB 2720 2560 GOSUB 3270 : ON Z% GOTO 2560,2570,2510,2560 2570 FOR I%=1%+(60%*(S1%-1%)) TO S1%*60% 2580 IF ASCII(A$(I%))=62% THEN 2610 2590 NEXT I% : GOSUB 2730 : ON ERROR GOTO 2820 2600 ; CUR(L%,M%-1%) "k" : MID$(A$(N1%),1%,1%)="k" : GOTO 2560 2610 M1%=1% : L1%=5% : GOSUB 4590 2620 FOR N1%=1%+(60%*(S1%-1%)) TO S1%*60% 2630 IF PEEK(65507%)=192% THEN 2700 2640 IF N1%>N0% THEN 2700 2650 IF ASCII(A$(N1%))<>62% THEN 2680 2660 ; CUR(L1%,M1%) "" : GOSUB 2730 2670 ; CUR(L1%,M1%) " " 2680 M1%=M1%+19% : IF M1%>64% THEN M1%=1% : L1%=L1%+1% 2690 NEXT N1% 2700 L%=5% : M%=1% : N1%=1%+(60%*(S1%-1%)) 2710 ON ERROR GOTO 2820 : POKE 65506%,0%,0% : GOTO 2550 2720 ; CUR(23%,40%) " kopiera" CUR(21%,0%) : RETURN 2730 GOSUB 4080 : IF E$="" THEN RETURN 2740 ON ERROR GOTO 2800 : K1%=1% 2750 OPEN En$+Dr$+":"+E$ AS FILE 1% 2760 PREPARE Ek$+":"+E$ AS FILE 2% 2770 FOR J%=0% TO 7% : GET #1%,Buf$(J%) COUNT 253% : NEXT J% 2780 FOR K%=0% TO J%-1% : PUT #2%,Buf$(K%) : NEXT K% : IF K1% THEN 2770 2790 CLOSE 1%,2% : RETURN 2800 IF ERRCODE=37% OR ERRCODE=38% THEN RESUME 2810 ELSE 2820 2810 K1%=0% : IF J% THEN 2780 ELSE 2790 2820 GOSUB 4920 : RESUME 2550 2830 IF N0%=0% THEN 1170 2840 ; CUR(0%,0%) SPACE$(160%) CUR(1%,52%) GRN "Skydda" 2850 GOSUB 4580 : GOSUB 4600 : GOSUB 3020 2860 GOSUB 3270 : ON Z% GOTO 2880,2860,1170,2860 2870 GOSUB 4080 : IF E$="" THEN 2860 2880 E1$=MID$(A$(N1%),3%,8%)+MID$(A$(N1%),12%,3%) 2890 FOR Sr%=16% TO 31% 2900 Z%=CALL(24678%,Sr%) : A%=INSTR(1%,Bsr$,E1$) : IF A% THEN 2920 2910 NEXT Sr% 2920 A%=A%-3% : C%=ASCII(MID$(Bsr$,A%,1%)) 2930 IF C% AND 3% THEN 2980 2940 MID$(Bsr$,A%,1%)=CHR$(C% OR 3%) : Z%=CALL(24675%,Sr%) 2950 IF PEEK(-747%) THEN 3030 2960 MID$(A$(N1%),1%,1%)="s" 2970 ; CUR(L%,M%-1%) "s" : GOTO 2860 2980 MID$(Bsr$,A%,1%)=CHR$(C% AND 252%) : Z%=CALL(24675%,Sr%) 2990 IF PEEK(-747%) THEN 3030 3000 MID$(A$(N1%),1%,1%)=" " 3010 ; CUR(L%,M%-1%) " " : GOTO 2860 3020 ; CUR(23%,40%) "RETURN skydda/ta bort skydd" CUR(21%,0%) : RETURN 3030 GOSUB 4960 : GOTO 2860 3040 IF N0%=0% THEN 1170 3050 ON ERROR GOTO 3260 3060 ; CUR(0%,0%) SPACE$(160%) CUR(1%,69%) GRN "Byt namn" 3070 GOSUB 4580 : GOSUB 4600 : GOSUB 3250 3080 GOSUB 3270 : ON Z% GOTO 3090,3080,1170,3080 3090 GOSUB 4080 : IF E$="" THEN 3080 3100 ; CUR(1%,2%) "Nytt namn :" SPACE$(20%) GRN CUR(L%,M%) "=" 3110 E1%=1% : E2%=14% : E3%=12% : A$="" 3120 GOSUB 4150 3130 ON Pf%+1% GOTO 3140,3230,400,400,400,3120,400,3120 3140 IF LEN(A$)=0% THEN 3230 3150 NAME En$+Dr$+":"+E$ AS A$ 3160 GOSUB 4120 : MID$(A$(N1%),3%,12%)=" . " 3170 A%=INSTR(1%,A$,".") : IF A%=0% THEN 3210 3180 IF A%=LEN(A$) THEN A$=LEFT$(A$,LEN(A$)-1%) : GOTO 3210 3190 B$=RIGHT$(A$,A%+1%) : A$=LEFT$(A$,A%-1%) 3200 MID$(A$(N1%),12%,LEN(B$))=B$ 3210 MID$(A$(N1%),3%,LEN(A$))=A$ 3220 ; CUR(L%,M%-1%) A$(N1%) 3230 ; CUR(1%,0%) SPACE$(40%) 3240 GOTO 3080 3250 ; CUR(23%,40%) "RETURN byt namn" CUR(21%,0%) : RETURN 3260 GOSUB 4920 : RESUME 3100 3270 ; CUR(0%,0%) GRN CUR(L%,M%) "" CUR(L%,M%); 3280 GET B$ : B%=ASCII(B$) : ; CUR(L%,M%) " " 3290 IF B%=8% THEN 3360 3300 IF B%=9% THEN 3390 3310 IF B%>191% THEN 3430 3320 IF B%=13% THEN Z%=1% : RETURN 3330 IF B%=33% THEN Z%=2% : RETURN 3340 IF B%>47% AND B%<58% THEN 3420 3350 GOTO 3270 3360 IF M%=1% THEN IF L%>5% THEN 3380 ELSE 3270 3370 M%=M%-19% : N1%=N1%-1% : GOTO 3270 3380 M%=58% : L%=L%-1% : N1%=N1%-1% : GOTO 3270 3390 IF N1%+1%>N0% OR (M%=58% AND L%=19%) THEN 3270 3400 IF M%=58% THEN M%=1% : L%=L%+1% : N1%=N1%+1% : GOTO 3270 3410 M%=M%+19% : N1%=N1%+1% : GOTO 3270 3420 MID$(A$(N1%),1%,1%)=B$ : ; CUR(L%,M%-1%) A$(N1%) : GOTO 3390 3430 IF B%>199% THEN 3450 3440 ON B%-191% GOTO 3470,3270,3480,3270,3870,3880,3910,3270 3450 IF B%>215% THEN 3270 3460 ON B%-207% GOTO 3270,3270,3270,3270,3270,3880,3920,3930 3470 Z%=3% : RETURN 3480 S9$=S8$ : GOSUB 4550 : GOSUB 4590 : GOSUB 3760 3490 GOSUB 4080 : ; CUR(3%,2%) E$ 3500 OPEN En$+Dr$+":"+E$ AS FILE 1% 3510 ON ERROR GOTO 3590 : L1%=5% 3520 INPUT LINE #1%,B$ : B$=LEFT$(B$,LEN(B$)-2%) : B%=LEN(B$) 3530 ; CUR(L1%,0%) B$ : L1%=L1%+1% : IF B%>80% THEN L1%=L1%+1% 3540 IF L1%<20% THEN 3520 3550 GET R$ : IF R$=CHR$(192%) THEN 3710 3560 IF R$=CHR$(195%) THEN GOSUB 3770 : GOTO 3550 3570 Z%=CALL(Upp%) : L1%=L1%-1% : IF B%>80% THEN Z%=CALL(Upp%) : L1%=L1%-1% 3580 GOTO 3520 3590 IF L1%>5% THEN 3790 3600 RESUME 3610 3610 ON ERROR GOTO 3810 3620 A=(-50%) : POSIT #1%,0% 3630 GET #1%,B$ COUNT 50% : A=A+50% 3640 FOR I%=1% TO 50% 3650 B%=ASCII(MID$(B$,I%,1%)) : IF B%<32% OR B%>127% THEN MID$(B$,I%,1%)=" " 3660 NEXT I% 3670 ; CUR(L1%,1%) A,B$ : L1%=L1%+1% : IF L1%<20% THEN 3630 3680 GET R$ : IF R$=CHR$(192%) THEN 3710 3690 IF R$=CHR$(195%) THEN GOSUB 3770 : GOTO 3680 3700 Z%=CALL(Upp%) : L1%=L1%-1% : GOTO 3630 3710 GOSUB 4550 3720 ; CUR(3%,2%) En$+Dr$+": " V$ 3730 ; CUR(3%,59%) "Sid. (" NUM$(S0%) ")" CUR(4%,0%) 3740 A%=L% : B%=M% : C%=N1% : GOSUB 4010 : L%=A% : M%=B% : N1%=C% 3750 S8$=S9$ : GOTO 3270 3760 ; CUR(23%,17%) "PF4 utskrift < > fortsatt listning" SPACE$(16%) CUR(21%,0%) : RETURN 3770 GOSUB 4890 : IF Z% THEN Hc1%=3% : Hc2%=21% : GOSUB 4840 3780 RETURN 3790 IF ERRCODE=34% THEN RESUME 3830 3800 GOSUB 4920 : RESUME 3710 3810 IF ERRCODE=37% OR ERRCODE=38% THEN RESUME 3830 3820 GOSUB 4920 : RESUME 3710 3830 ; CUR(23%,0%) SPACE$(80%) CUR(23%,2%) "Slut p} filen - tryck PF1 "; 3840 GET R$ : IF R$=CHR$(192%) THEN 3710 3850 IF R$=CHR$(195%) THEN GOSUB 3770 3860 GOTO 3840 3870 IF L%=5% THEN 3270 ELSE L%=L%-1% : N1%=N1%-4% : GOTO 3270 3880 IF ASCII(A$(N1%))=62% THEN MID$(A$(N1%),1%,1%)=" " : GOTO 3900 3890 MID$(A$(N1%),1%,1%)=">" 3900 ; CUR(L%,M%-1%) A$(N1%) : IF B%=197% THEN 3270 ELSE 3390 3910 IF L%=19% OR N1%+4%>N0% THEN 3270 ELSE L%=L%+1% : N1%=N1%+4% : GOTO 3270 3920 GOSUB 3990 : GOTO 3270 3930 M1%=0% : L1%=5% 3940 FOR I%=1%+(60%*(S1%-1%)) TO S1%*60% 3950 IF I%>N0% THEN 3270 3960 IF ASCII(A$(I%))<64% THEN ; CUR(L1%,M1%) " " : MID$(A$(I%),1%,1%)=" " 3970 M1%=M1%+19% : IF M1%>64% THEN M1%=0% : L1%=L1%+1% 3980 NEXT I% : GOTO 3270 3990 FOR I%=4% TO 21% : ; CUR(I%,0%) SPACE$(80%) : NEXT I% 4000 IF S1%N0% THEN 4060 4040 ; A$(I%); : T%=T%+1% : IF T%=4% THEN T%=0% : ; " "; 4050 NEXT I% 4060 ; : ; : ; " " K$; : IF LEN(U$) THEN ; TAB(41%) "Urval " U$ 4070 L%=5% : M%=1% : N1%=1%+(60%*(S1%-1%)) : RETURN 4080 E$="" 4090 FOR I%=3% TO 14% 4100 IF MID$(A$(N1%),I%,1%)<>CHR$(32%) THEN E$=E$+MID$(A$(N1%),I%,1%) 4110 NEXT I% : RETURN 4120 FOR I%=1% TO LEN(A$) 4130 B%=ASCII(MID$(A$,I%,1%)) : IF B%>95% THEN MID$(A$,I%,1%)=CHR$(B%-32%) 4140 NEXT I% : RETURN 4150 E6%=0% 4160 E4%=E1% : Pf%=0% 4170 ; CUR(E1%,E2%) A$+Z$ 4180 ; CUR(E1%,E2%+E6%); : GET E0$ : E0%=ASCII(E0$) : E7%=LEN(A$) 4190 IF E0%>31% AND E0%<128% THEN 4260 4200 IF E0%=8% THEN 4370 4210 IF E0%=9% THEN 4400 4220 IF E0%=13% THEN 4430 4230 IF E0%=24% THEN 4420 4240 IF E0%>191% THEN 4480 4250 GOTO 4180 4260 IF E6%=E7% THEN 4300 4270 IF E7%=E3% THEN A$=LEFT$(A$,E7%-1%) 4280 E1$=LEFT$(A$,E6%) : E2$=E0$+RIGHT$(A$,E6%+1%) : A$=E1$+E2$ 4290 ; CUR(E1%,E2%+E6%) E2$ : GOTO 4410 4300 IF E7%=E3% THEN A$=RIGHT$(A$,2%)+E0$ : GOTO 4170 4310 A$=A$+E0$ : ; CUR(E1%,E2%+E6%) E0$ : GOTO 4410 4320 IF E6%=E7% THEN 4350 4330 E1$=LEFT$(A$,E6%) : E2$=RIGHT$(A$,E6%+2%) : A$=E1$+E2$ 4340 ; CUR(E1%,E2%+E6%) E2$+" " : GOTO 4170 4350 IF E6%=0% THEN 4170 4360 A$=LEFT$(A$,E7%-1%) : ; CUR(E1%,E2%) A$+" " : GOTO 4380 4370 IF E6%=0% THEN 4170 4380 E6%=E6%-1% : IF RIGHT$(A$,E7%)=" " THEN A$=LEFT$(A$,E7%-1%) 4390 GOTO 4170 4400 IF E6%=E7% THEN 4170 4410 E6%=E6%+1% : GOTO 4170 4420 ; CUR(E1%,E2%) SPACE$(E3%+1%) : A$="" : GOTO 4150 4430 IF E7%=0% THEN RETURN 4440 IF A$=SPACE$(E7%) THEN A$="" : ; CUR(E1%,E2%) SPACE$(E3%+1%) : RETURN 4450 IF ASCII(A$)=32% THEN A$=RIGHT$(A$,2%) : ; CUR(E1%,E2%) A$+Z$ : GOTO 4450 4460 IF RIGHT$(A$,LEN(A$))=" " THEN A$=LEFT$(A$,LEN(A$)-1%) : GOTO 4460 4470 RETURN 4480 IF E0%>199% THEN 4170 4490 ON E0%-191% GOTO 4500,4170,4170,4170,4510,4170,4520,4320 4500 Pf%=1% : GOTO 4430 4510 Pf%=5% : GOTO 4430 4520 Pf%=7% : GOTO 4430 4530 ; CUR(0%,0%) SPACE$(160%) 4540 ; CUR(21%,0%) GRN CUR(2%,0%) STRING$(80%,95%) 4550 FOR I%=3% TO 21% : ; CUR(I%,0%) SPACE$(80%) : NEXT I% 4560 ; CUR(21%,0%) GRN CUR(22%,0%) STRING$(80%,95%) : RETURN 4570 ; CUR(23%,0%) " PF1 avslutar" SPACE$(66%) CUR(21%,0%) : RETURN 4580 ; CUR(23%,0%) " PF1 kommando" SPACE$(66%) CUR(21%,0%) : RETURN 4590 ; CUR(23%,0%) " PF1 avbryter" SPACE$(66%) CUR(21%,0%) : RETURN 4600 ; CUR(23%,17%) "PF3 lista PF6 m{rk" CUR(21%,0%) : RETURN 4610 ; CUR(0%,0%) GRN " Byt sida Sortera Utskrift Byt drive Volymnamn " 4620 ; CUR(1%,0%) GRN " Status Radera Kopiera Skydda Byt namn " : RETURN 4630 ; CUR(L4%,L5%) "" CUR(L4%,L5%); 4640 GET L0$ : L0%=ASCII(L0$) : ; CUR(L4%,L5%) " "; 4650 IF L0%=8% THEN IF L6%=1% THEN 4630 ELSE 4730 4660 IF L0%=9% THEN IF L6%=L3% THEN 4630 ELSE 4750 4670 IF L0%=192% THEN L6%=L3%+1% : RETURN 4680 IF L0%=196% THEN 4770 4690 IF L0%=198% THEN 4790 4700 IF L0%=215% THEN 4810 4710 IF L0%=13% THEN RETURN 4720 GOTO 4630 4730 L5%=L5%-L7% : L6%=L6%-1% : IF L5%L2%+(L8%-1%)*L7% THEN L5%=L2% : L4%=L4%+1% 4760 GOTO 4630 4770 IF L6%-L8%<1% THEN 4630 ELSE L6%=L6%-L8% : L4%=L4%-1% 4780 GOTO 4630 4790 IF L6%+L8%>L3% THEN 4630 ELSE L6%=L6%+L8% : L4%=L4%+1% 4800 GOTO 4630 4810 FOR I%=1% TO N0% 4820 IF ASCII(A$(I%))<64% THEN MID$(A$(I%),1%,1%)=" " 4830 NEXT I% : S1%=S0% : GOSUB 3990 : GOTO 4630 4840 A%=30720%+80%*Hc1% : B$=SPACE$(80%) 4850 FOR I%=1% TO 80% : MID$(B$,I%,1%)=CHR$(PEEK(A%)) : A%=A%+1% : NEXT I% 4860 IF PEEK(65507%)=192% THEN ; #8% : RETURN 4870 ; #8% B$ : IF A%<30721%+80%*Hc2% THEN 4850 4880 RETURN 4890 Z%=0% : OUT 33%,16% : IF INP(33%) AND 40% THEN Z%=1% 4900 RETURN 4910 GOSUB 4920 : RESUME 1170 4920 ; CUR(23%,0%) SPACE$(80%) CUR(23%,2%) "Felkod " ERRCODE; 4930 ; TAB(50%) "Kontrollera och tryck RETURN "; 4940 GET R$ : IF R$<>CHR$(13%) THEN 4940 4950 GOSUB 4570 : RETURN 4960 ; CUR(23%,0%) " Felkod 43"; : GOTO 4930 4970 GOSUB 4530 4980 ; CUR(23%,0%) SPACE$(32%) CUR(21%,0%) 4990 ; CUR(1%,74%) "SYSLIB" CUR(0%,0%) 5000 END