1000 REM Modifierad f|r UFDDOS 830, 832 och 838 drive 1005 REM 1991-08-18 <5074> J Westman 1010 REM . SAVE MENYM3 1015 REM DA 851109 1020 REM 1025 REM 1030 REM 1035 REM 1040 REM 1045 REM 1050 REM 1055 REM  1060 W%=PEEK(590%) : REM 40/80 TKN 1065 W1%=W%/20% : REM 2/4 KOLUMNER 1070 W2%=W%/2%-15% 1075 F9%=150% 1080 REM FILNAMN ,STORLEK,VALD ,SKYDD ,DRIVE ,UFDLIB 1085 DIM F$(F9%)=16%,X%(F9%),V%(F9%),S%(F9%),D%(F9%),U%(F9%) 1090 DIM D0%(1%),D1%(1%),D2%(1%) 1095 DIM A%(16%) 1100 A9%=8% 1105 DIM A$(A9%)=253% 1110 REM 1115 F%=-1% : FOR D%=0% TO 1% : D2%(D%)=0% : NEXT D% 1120 Z%=PEEK(24683%)+SWAP%(PEEK(24684%)) 1125 E%(0%)=PEEK(Z%) : E%(1%)=-1% 1130 RESTORE 2270 1135 IF Z%=31% E%(0%)=-1% : GOTO 1150 1140 READ Z%,D$(0%) 1145 IF Z%<>E%(0%) 1135 1150 REM VALMENY 1155 GOSUB 1390 : REM SCREEN 1160 GOSUB 1985 : REM LIB 1165 F3%=0% 1170 REM 1175 IF F3%>F% F3%=F% 1180 IF F3%<0% F3%=0% 1185 GOSUB 1285 : GOSUB 1460 1190 F1%=F3% : GOSUB 1310 : GOSUB 1745 : GOSUB 1310 1195 IF INSTR(1%,'BAYIOS\M',X$) GOSUB 1810 : GOTO 1170 1200 IF X%=24% GOSUB 1260 : GOTO 1170 1205 IF X%=32% IF V%(F3%) X%=13% ELSE X%=9% 1210 IF X%=8% OR X%=23% F3%=F3%-1% : IF F3%<0% F3%=F% 1215 IF X%=9% OR X%=26% F3%=F3%+1% : IF F3%>F% F3%=0% 1220 IF X%=1% IF F3%>=22% F3%=F3%-22% 1225 DIM D$(2%)=3% 1230 IF X%=19% IF F3%=F0%+W1%*22% F3%=F3%+22% : IF F3%>F% F3%=F% 1235 IF X%=18% GOSUB 1390 1240 IF X%<>13% OR F3%>F% GOTO 1170 1245 V%(F3%)= NOT V%(F3%) 1250 IF V%(F3%) ; '>'; ELSE ; ' '; 1255 X%=9% : GOTO 1215 1260 REM 1265 FOR F1%=0% TO F% 1270 IF V%(F1%) V%(F1%)=0% : GOSUB 1335 1275 NEXT F1% 1280 RETURN 1285 REM 1290 IF F3%>=F0% AND F3%=F0%+22%*W1% F0%=F0%+22% : GOTO 1300 1305 RETURN 1310 REM SET CURPOS FOR F1% 1315 R%=F1%+1%-F0% : L%=0% 1320 IF R%>22% R%=R%-22% : L%=L%+20% : GOTO 1320 1325 IF L%<0% OR L%>=W% R%=0% : RETURN 1330 ; CUR(R%,L%); : RETURN 1335 REM PLACERA FIL F1% 1340 GOSUB 1310 : IF R%=0% RETURN 1345 IF F1%>F% ; SPACE$(20%); : RETURN 1350 IF V%(F1%) ; '>'; ELSE ; ' '; 1355 ; F$(F1%); 1360 IF X%(F1%)>=0% F$=NUM$(X%(F1%)) : ; RIGHT$(SPACE$(4%-LEN(F$))+F$,2%); : GOTO 1385 1365 X%=S%(F1%) AND 3% : IF X%=0% ; ' '; : RETURN 1370 IF X%=1% ; ' S'; 1375 IF X%=2% ; ' R '; 1380 IF X%=3% ; ' RS'; 1385 RETURN 1390 REM SCREEN 1395 ; CHR$(12%);STRING$(W%,61%);CUR(0%,W2%+9%)' Meny=M ' 1400 GOSUB 1405 : E2%=F% : GOTO 1460 1405 REM RAM 1410 ; CUR(23%,6%)SPACE$(27%); : E%=0% 1415 FOR D%=0% TO 1% 1420 ; CUR(23%,6%+D%*15%)D$(D%)':'; 1425 IF D2%(D%)>0% IF D1%(D%)>=0% ; D1%(D%); 1430 IF D2%(D%)>0% ; '/'RIGHT$(NUM$(D0%(D%)),2%); 1435 IF D2%(D%)<0% ; 'Error'; 1440 NEXT D% 1445 IF F%>=F0%+22%*W1% ; CUR(23%,W%-5%)'Mer>'; 1450 IF F0%>0% ; CUR(23%,0%)'2%) 1480 ; CUR(23%,W%-6%)SPACE$(5%); 1485 IF F0%>0% ; CUR(23%,0%)''; 1505 GOSUB 1335 1510 NEXT F1% 1515 E2%=0% : RETURN 1520 REM F\NSTER 1525 FOR X%=5% TO 18% STEP 13% 1530 ; CUR(X%,W2%-2%)'+'STRING$(30%,45%)'+' 1535 NEXT X% 1540 FOR X%=6% TO 17% 1545 ; CUR(X%,W2%-2%)'!'SPACE$(30%)'!' 1550 NEXT X% 1555 FOR X%=6% TO 17% 1560 READ F$ : IF F$='-' GOTO 1575 1565 ; CUR(X%,W2%); : IF X%=6% ; ' 'F$ : X%=7% ELSE ; F$ 1570 NEXT X% 1575 E2%=-2% : RETURN 1580 REM PACKA 1585 F1%=0% : F2%=0% 1590 IF F1%>F% F%=F2%-1% : RETURN 1595 IF V%(F1%)=2% F1%=F1%+1% : E2%=-3% : GOTO 1590 1600 GOSUB 1655 : F1%=F1%+1% : F2%=F2%+1% : GOTO 1590 1605 REM R[KNA VALDA 1610 T%=0% : FOR F1%=0% TO F% 1615 IF V%(F1%) T%=T%+1% : T$=F$(F1%) 1620 NEXT F1% : RETURN 1625 REM ERROR X$ 1630 ; CUR(23%,6%)X$;CHR$(7%);TAB(35%); : E%=1% : X$='' : RETURN 1635 REM  1640 GOSUB 1605 : IF T%=0% X$='Inga filer valda' : GOTO 1625 1645 IF T%>X% X$='F|r m}nga filer valda' : GOTO 1625 1650 RETURN 1655 REM BYT POST F1%<->F2% 1660 IF F1%=F2% RETURN 1665 F$=F$(F2%) : F$(F2%)=F$(F1%) : F$(F1%)=F$ 1670 X%=X%(F2%) : X%(F2%)=X%(F1%) : X%(F1%)=X% 1675 X%=S%(F2%) : S%(F2%)=S%(F1%) : S%(F1%)=X% 1680 X%=V%(F2%) : V%(F2%)=V%(F1%) : V%(F1%)=X% 1685 X%=D%(F2%) : D%(F2%)=D%(F1%) : D%(F1%)=X% 1690 X%=U%(F2%) : U%(F2%)=U%(F1%) : U%(F1%)=X% 1695 F3%=0% : RETURN 1700 REM TA BORT MELLANSLAG F$(F1%) -> F$ 1705 F$='' 1710 FOR X%=1% TO LEN(F$(F1%)) 1715 IF MID$(F$(F1%),X%,1%)<>' ' THEN F$=F$+MID$(F$(F1%),X%,1%) 1720 NEXT X% : RETURN 1725 REM F\RSTORA X$ 1730 FOR I%=1% TO LEN(X$) : J%=ASC(RIGHT$(X$,I%)) : IF J%>94% J%=J%-32% 1735 X$=X$+CHR$(J%) : NEXT I% 1740 X$=RIGHT$(X$,I%) : RETURN 1745 REM GET X$ 1750 GET X$ : GOSUB 1725 : X%=ASC(X$) : IF E% GOSUB 1405 1755 RETURN 1760 REM MENY 1765 GOSUB 1520 1770 M%=M1% : IF E%=0% M%=1% : IF X$<>'' GOTO 1780 1775 ; CUR(7%+M%,W2%-1%); : GOSUB 1745 : IF X$=CHR$(24%) OR X$=' ' X$='E' 1780 M1%=INSTR(1%,M$,X$) : IF M1% M%=M1% : GOTO 1800 1785 IF X%=8% M%=M%-1% : IF M%<1% M%=LEN(M$) 1790 IF X%=9% M%=M%+1% : IF M%>LEN(M$) M%=1% 1795 IF X%<>13% GOTO 1775 1800 ; CUR(7%+M%,W2%-1%)'>'; : X$='' : M1%=M% 1805 RETURN 1810 REM KOMMANDO MENY 1815 RESTORE 1810 : M$='BAIO\E' : GOSUB 1760 1820 DATA 'KOMMANDO MENY 1825 DATA 'B LIB 1830 DATA 'A Avsluta 1835 DATA 'I Visa inte filer 1840 DATA 'O Sortera 1845 DATA '\ \vriga kommandon 1850 DATA 'E Avbryt 1855 DATA - 1860 ON M% GOSUB 1985,1945,1960,2695,1875,1870 1865 IF E% GOTO 1810 1870 RETURN 1875 REM \VRIGA 1880 RESTORE 1875 : M$='KV[JRLEM' : GOSUB 1760 : IF M%=8% E%=1% : RETURN 1885 DATA '\VRIGA KOMMANDON 1890 DATA 'K Kopiera filer 1895 DATA 'V Visa filens inneh}ll 1900 DATA '[ [ndra filnamn 1905 DATA 'J J{mf|r 2 filer 1910 DATA 'R Radera filer 1915 DATA 'L Ladda och k|r fil 1920 DATA 'E Avbryt 1925 DATA - 1930 ON M% GOSUB 2780,3185,3080,3185,2975,2660,1940 1935 IF E% GOTO 1875 1940 RETURN 1945 REM AVSLUTA 1950 GOSUB 1460 : ; CUR(22%,0%); 1955 END 1960 REM VISA INTE 1965 X%=F% : GOSUB 1635 : IF E% RETURN 1970 FOR F1%=0% TO F% : IF V%(F1%) V%(F1%)=2% 1975 NEXT F1% 1980 GOTO 1580 1985 REM LIB 1990 RESTORE 1985 : M$='B01SVE' : GOSUB 1760 : IF M%=6% RETURN 1995 IF M%=5% GOSUB 2060 : GOTO 1990 2000 DATA 'LIB, FILBIBLOTEK 2005 DATA 'B B}da drivarna 2010 DATA '0 Bara drive 0 2015 DATA '1 Bara drive 1 2020 DATA 'S B}da med filstorlekar 2025 DATA 'V V{lj enhet, drive, UFD 2030 DATA 'E Avbryt 2035 DATA - 2040 D1%=0% : D2%=1% : IF M%=2% D2%=0% ELSE IF M%=3% D1%=1% 2045 B%=(M%=4%) 2050 FOR D%=D1% TO D2% : GOSUB 2315 : NEXT D% 2055 IF E% RETURN ELSE GOTO 1405 2060 REM DRIVE TYP 2065 RESTORE 2070 : M$='01UDE' : GOSUB 1760 : IF M%=5% RETURN 2070 DATA 'V{lj enhet f|r drive, UFD 2075 DATA '0 Drive 0 2080 DATA '1 Drive 1 2085 DATA 'U Aktivera vald UFD 2090 DATA 'D Deaktivera UFD 2095 DATA 'E Avbryt 2100 DATA - 2105 U%=PEEK(24685%)+SWAP%(PEEK(24686%)) 2110 IF M%<>3% 2150 2115 REM AKTIVERA UFD 2120 FOR I%=0% TO F9% 2125 IF INSTR(1%,F$(I%),'.Ufd')=0% OR V%(I%)=0% 2140 2130 V%(I%)=0% 2135 POKE U%,U%(I%),SWAP%(U%(I%)),E%(D%(I%)) : GOTO 2060 2140 NEXT I% 2145 X$='Ingen UFD vald' : GOTO 1625 2150 REM DEAKTIVERA UFD 2155 IF M%<>4% 2175 2160 IF E%(0%)=31% E%(0%)=-1% 2165 IF E%(1%)=31% E%(1%)=-1% 2170 POKE U%,0%,0%,0% : GOTO 2060 2175 D%=M%-1% 2180 REM ENHET 2185 RESTORE 2190 : M$='01234567UE' : GOSUB 1760 : IF M%=10% RETURN 2190 DATA 'V{lj enhet 2195 DATA '0 MF0: 2200 DATA '1 MF1: 2205 DATA '2 MF2: 2210 DATA '3 MO0: 2215 DATA '4 MO1: 2220 DATA '5 SF0: 2225 DATA '6 SF1: 2230 DATA '7 SF2: 2235 DATA 'U UFD: 2240 DATA 'E Avbryt 2245 DATA - 2250 ON M% RESTORE 2270,2275,2280,2285,2290,2295,2300,2305,2310 2255 READ E%(D%) : READ D$(D%) 2260 GOSUB 1410 2265 RETURN 2270 DATA 8,'MF0 2275 DATA 9,'MF1 2280 DATA 10,'MF2 2285 DATA 12,'MO0 2290 DATA 13,'MO1 2295 DATA 16,'SF0 2300 DATA 17,'SF1 2305 DATA 18,'SF2 2310 DATA 31,'UFD 2315 REM LIB D% 2320 U%=0% 2325 FOR F1%=0% TO F% : IF D%(F1%)=D% V%(F1%)=2% 2330 NEXT F1% : GOSUB 1580 : GOSUB 1460 2335 Z%=E%(D%) 2340 IF E%(D%)<>31% THEN 2375 2345 U%=PEEK(24685%)+SWAP%(PEEK(24686%)) 2350 Z1%=PEEK(U%)+SWAP%(PEEK(U%+1%)) 2355 IF Z1%<>0% THEN 2365 2360 X$='Ingen UFD aktiv' : GOTO 1625 2365 Z%=PEEK(U%+2%) 2370 U%=Z1% 2375 POKE 64769%,Z% 2380 D0%(D%)=0% : D2%(D%)=-1% 2385 REM L[S TOM BITMAP 2390 IF Z%=12% OR Z%=13% THEN Z1%=7% ELSE Z1%=15% 2395 Z%=CALL(24678%,Z1%) 2400 IF PEEK(64789%) AND 128% THEN D2%(D%)=0% : RETURN 2405 IF PEEK(64789%) THEN 2635 2410 FOR I%=-2816% TO I%+160% 2415 IF PEEK(I%)=0% D0%(D%)=D0%(D%)+8% 2420 NEXT I% 2425 REM L[S BITMAP 2430 Z1%=Z1%-1% 2435 Z%=CALL(24678%,Z1%) 2440 IF PEEK(64789%) THEN 2635 2445 FOR I%=0% TO 15% : A%(I%)=PEEK(62959%+I%) : NEXT I% 2450 D1%(D%)=0% 2455 FOR I%=62720% TO I%+160% 2460 IF PEEK(I%)=255% GOTO 2470 ELSE IF PEEK(I%)=0% D1%(D%)=D1%(D%)+8% : GOTO 2470 2465 FOR J%=0% TO 7% : D1%(D%)=D1%(D%)-((PEEK(I%) AND 2%^J%)=0%) : NEXT J% 2470 NEXT I% 2475 Z1%=16% 2480 IF U%=0% THEN 2505 2485 Z%=CALL(24678%,U%-1%) 2490 IF PEEK(64789%) THEN 2635 2495 FOR I%=0% TO 15% : A%(I%)=PEEK(62959%+I%) : NEXT I% 2500 Z1%=U% 2505 FOR I%=0% TO 15% 2510 IF A%(I%)=0% THEN 2625 2515 REM L[S BIBLOTEK 2520 Z%=CALL(24678%,Z1%+I%) 2525 IF PEEK(64789%) THEN 2635 2530 FOR J%=62720% TO J%+240% STEP 16% 2535 IF PEEK(J%)=0% OR PEEK(J%)=255% THEN 2620 2540 IF F%>F9% F%=F9% : X$='F|r m}nga filer' : GOTO 1625 2545 REM FILNAMN 2550 F$=D$(D%)+':' 2555 FOR K%=4% TO 14% : IF K%=12% THEN F$=F$+'.' 2560 F$=F$+CHR$(PEEK(J%+K%)) : NEXT K% 2565 REM UFD 2570 U%=(SWAP%(PEEK(J%))+PEEK(J%+1%))/8% 2575 IF E%(D%)=12% OR E%(D%)=13% THEN U%=U%/4% 2580 U%=U%+2% 2585 REM STORLEK 2590 IF B%=0% X%=-1% : GOTO 2600 2595 X%=SWAP%(PEEK(J%+3%))+PEEK(J%+2%) 2600 REM 2605 F%=F%+1% 2610 X%(F%)=X% : F$(F%)=F$ : S%(F%)=PEEK(J%+1%) : D%(F%)=D% : U%(F%)=U% : V%(F%)=0% 2615 F1%=F% : GOSUB 1335 : S%=0% 2620 NEXT J% 2625 NEXT I% : D2%(D%)=1% 2630 RETURN 2635 REM 2640 X%=PEEK(64789%) 2645 IF X%=16% X$='Disk i '+D$(D%)+' nog ej formaterad' : GOTO 1625 2650 IF X%=128% X$='Lucka till drive'+NUM$(D%)+' {r |ppen' : GOTO 1625 2655 X$='Diskfel i drive'+NUM$(D%) : GOTO 1625 2660 REM LADDA & K\R 2665 X%=1% : GOSUB 1635 : IF E% RETURN 2670 FOR F1%=0% TO F% : IF V%(F1%)=0% NEXT F1% 2675 GOSUB 1700 2680 ONERRORGOTO 2690 : ; CUR(23%,0%); 2685 CHAIN F$(F1%) : END 2690 X$='ERR'+NUM$(ERRCODE)+' file '+F$ : GOTO 1625 2695 REM SORTERA 2700 IF F%<2% X$='Meningsl|st' : GOTO 1625 2705 RESTORE 2695 : M$='DFTE' : GOSUB 1760 : IF M%=4% RETURN 2710 DATA 'SORTERA LISTAN 2715 DATA 'D Efter drive och filnamn 2720 DATA 'F Efter filnamn 2725 DATA 'T Efter filtyp 2730 DATA 'E Avbryt 2735 DATA - 2740 GOSUB 1460 : I%=1% : IF M%=2% I%=5% ELSE IF M%=3% I%=14% 2745 IF I%=S% RETURN 2750 FOR F1%=0% TO F%-1% 2755 FOR F2%=F1%+1% TO F% 2760 IF RIGHT$(F$(F1%),I%)>RIGHT$(F$(F2%),I%) GOSUB 1655 2765 NEXT F2% : GOSUB 1335 2770 NEXT F1% : S%=I% : GOSUB 1335 2775 RETURN 2780 REM KOPIERA 2785 X%=F%+1% : GOSUB 1635 : IF E% RETURN 2790 RESTORE 2780 : GOSUB 1520 2795 DATA 'KOPIERA FILER 2800 DATA 'Till enhet (MFx,MOx,SFx,UFD) 2805 DATA - 2810 ; CUR(9%,W2%); : INPUT X$ : GOSUB 1725 : IF X$='E' OR X$='' RETURN 2815 E$=X$ : IF INSTR(1%,E$,':')=0% E$=E$+':' 2820 IF INSTR(1%,E$,'MFMOSFUFDmfmosfufd')=0% X$='Fel enhet' : GOTO 1625 2825 ; CUR(23%,6%)'Kopiera till 'X$;TAB(33%); : E%=1% : GOSUB 1460 2830 FOR F1%=0% TO F% 2835 IF V%(F1%) GOSUB 2850 2840 NEXT F1% 2845 RETURN 2850 REM KOPIERA FIL 2855 GOSUB 1310 : GOSUB 1700 2860 ONERRORGOTO 2960 : E%=0% : M$=F$ 2865 OPEN F$ ASFILE 1% 2870 M$=E$+RIGHT$(F$,5%) 2875 PREPARE M$ ASFILE 2% 2880 K%=0% 2885 ONERRORGOTO 2910 : M$=F$ 2890 FOR I%=0% TO A9% 2895 Z%=CALL(28666%,1%)+CALL(28668%,K%+I%) : A$(I%)=Q0$ 2900 IF R% ; CUR(R%,L%+1%)K%+I%+1%' block' 2905 NEXT I% : GOTO 2915 2910 E%=ERRCODE : IF ERRCODE<>38% GOTO 2960 2915 ONERRORGOTO 2960 : M$=E$+RIGHT$(F$,5%) 2920 FOR J%=0% TO I%-1% 2925 Z%=CALL(28666%,2%) : Q0$=A$(J%) : Z%=CALL(28670%,K%+J%) 2930 IF R% ; CUR(R%,L%+1%)K%+J%+1%' block' 2935 NEXT J% 2940 K%=K%+J% 2945 IF E%=0% GOTO 2885 2950 CLOSE 2% : CLOSE 1% 2955 IF E%=38% E%=0% : RETURN 2960 X$='ERR'+NUM$(ERRCODE)+' file '+M$ : GOSUB 1625 : CLOSE 2% : CLOSE 1% 2965 ; CUR(R%,L%+1%);' Error ' 2970 RETURN 2975 REM D\DA 2980 X%=F%+1% : GOSUB 1635 : IF E% RETURN 2985 RESTORE 2975 : M$='NJE' : GOSUB 1760 : IF M%=1% OR M%=3% RETURN 2990 DATA 'SKA DESSA FILER RADERAS? 2995 DATA 'N Nej 3000 DATA 'J Ja 3005 DATA - 3010 FOR F1%=0% TO F% 3015 IF V%(F1%) GOSUB 3030 3020 NEXT F1% 3025 GOSUB 1580 : RETURN 3030 REM 3035 GOSUB 1700 : GOSUB 1310 3040 ONERRORGOTO 3065 3045 KILL F$ 3050 ; CUR(R%,L%+1%);' Raderad ' 3055 V%(F1%)=2% : D1%(D%(F1%))=-1% 3060 RETURN 3065 REM 3070 ; CUR(R%,L%+1%);' Error ' 3075 X$='ERR'+NUM$(ERRCODE)+' file '+F$ : GOTO 1625 3080 REM RENAME 3085 X%=1% : GOSUB 1635 : IF E% RETURN 3090 RESTORE 3080 : GOSUB 1520 3095 DATA '[NDRA FILNAMN TILL VAD? 3100 DATA 'Ange nytt filnamn (ej drive) 3105 DATA - 3110 FOR F1%=0% TO F% : IF V%(F1%)=0% NEXT F1% 3115 F$=D$(D%(F1%))+':' 3120 ; CUR(10%,W2%); : INPUT X$ : GOSUB 1725 : IF X$='' OR X$='E' RETURN 3125 X%=INSTR(1%,X$,':') 3130 IF X%=0% X$=F$+X$ ELSE IF LEFT$(X$,X%)<>F$ X$='Fel drive' : GOTO 1625 3135 X%=INSTR(1%,X$,'.') : IF X%=0% X$=X$+'.' ELSE IF X%<13% X$=LEFT$(X$,X%-1%)+' '+RIGHT$(X$,X%) : GOTO 3135 3140 IF X%>13% 3180 3145 IF LEN(X$)<16% X$=X$+' ' : GOTO 3140 3150 IF LEN(X$)>16% 3180 3155 IF F$(F1%)=X$ RETURN 3160 FOR F2%=0% TO F% : IF F$(F2%)<>X$ NEXT F2% ELSE X$='Upptaget filnamn' : GOTO 1625 3165 ONERRORGOTO 3075 : ; CUR(23%,0%); 3170 NAME F$(F1%) AS X$ 3175 F$(F1%)=X$ : E2%=-3% : RETURN 3180 X$='Felaktigt filnamn' : GOTO 1625 3185 REM DISP 3190 RESTORE 3185 : GOSUB 1520 3195 DATA 'FUNKTIONEN EJ IMPLEMENTERAD 3200 DATA - 3205 FOR Z%=0% TO 5000% : NEXT Z% 3210 RETURN 3215 REM SISTA RADEN