10 REM . SAVE MENYM 20 REM DA 851109 30 REM 40 REM 50 REM 60 REM 70 REM 80 REM 90 REM 110 REM  120 W%=PEEK(590%) : REM 40/80 TKN 130 W1%=W%/20% : REM 2/4 KOLUMNER 131 W2%=W%/2%-15% 140 F9%=150% 150 REM FILNAMN ,STORLEK,VALD ,SKYDD ,DRIVE 160 DIM F$(F9%)=16%,X%(F9%),V%(F9%),S%(F9%),D%(F9%) 170 DIM D0%(1%),D1%(1%),D2%(1%) 190 A9%=8% 200 DIM A$(A9%)=253% 210 REM 220 F%=-1% : FOR D%=0% TO 1% : D2%(D%)=0% : NEXT D% 221 REM VALMENY 240 GOSUB 1200 : REM SCREEN 250 GOSUB 5000 : REM LIB 310 F3%=0% 320 REM 330 IF F3%>F% F3%=F% 340 IF F3%<0% F3%=0% 350 GOSUB 600 : GOSUB 1400 360 F1%=F3% : GOSUB 1000 : GOSUB 2300 : GOSUB 1000 380 IF INSTR(1%,'BAYIOS\M',X$) GOSUB 3000 : GOTO 320 390 IF X%=24% GOSUB 500 : GOTO 320 400 IF X%=32% IF V%(F3%) X%=13% ELSE X%=9% 410 IF X%=8% OR X%=23% F3%=F3%-1% : IF F3%<0% F3%=F% 420 IF X%=9% OR X%=26% F3%=F3%+1% : IF F3%>F% F3%=0% 430 IF X%=1% IF F3%>=22% F3%=F3%-22% 440 IF X%=19% IF F3%=F0%+W1%*22% F3%=F3%+22% : IF F3%>F% F3%=F% 441 IF X%=18% GOSUB 1200 450 IF X%<>13% OR F3%>F% GOTO 320 460 V%(F3%)= NOT V%(F3%) 470 IF V%(F3%) ; '>'; ELSE ; ' '; 480 X%=9% : GOTO 420 500 REM 510 FOR F1%=0% TO F% 520 IF V%(F1%) V%(F1%)=0% : GOSUB 1100 530 NEXT F1% 540 RETURN 600 REM 610 IF F3%>=F0% AND F3%=F0%+22%*W1% F0%=F0%+22% : GOTO 630 640 RETURN 1000 REM SET CURPOS FOR F1% 1010 R%=F1%+1%-F0% : L%=0% 1020 IF R%>22% R%=R%-22% : L%=L%+20% : GOTO 1020 1025 IF L%<0% OR L%>=W% R%=0% : RETURN 1030 ; CUR(R%,L%); : RETURN 1100 REM PLACERA FIL F1% 1110 GOSUB 1000 : IF R%=0% RETURN 1115 IF F1%>F% ; SPACE$(20%); : RETURN 1120 IF V%(F1%) ; '>'; ELSE ; ' '; 1130 ; F$(F1%); 1140 IF X%(F1%)>=0% F$=NUM$(X%(F1%)) : ; RIGHT$(SPACE$(4%-LEN(F$))+F$,2%); : GOTO 1180 1145 X%=S%(F1%) AND 3% : IF X%=0% ; ' '; : RETURN 1150 IF X%=1% ; ' S' 1160 IF X%=2% ; ' R ' 1170 IF X%=3% ; ' RS' 1180 RETURN 1200 REM SCREEN 1210 ; CHR$(12%);STRING$(W%,61%);CUR(0%,W2%+9%)' Meny=M ' 1220 GOSUB 1300 : E2%=F% : GOTO 1400 1300 REM RAM 1310 ; CUR(23%,6%)SPACE$(27%); : E%=0% 1311 FOR D%=0% TO 1% 1320 ; CUR(23%,6%+D%*15%)'DR'CHR$(D%+48%)':'; 1329 IF D2%(D%)>0% IF D1%(D%)>=0% ; D1%(D%); 1330 IF D2%(D%)>0% ; '/'RIGHT$(NUM$(D0%(D%)),2%); 1331 IF D2%(D%)<0% ; 'Error'; 1332 NEXT D% 1350 IF F%>=F0%+22%*W1% ; CUR(23%,W%-5%)'Mer>'; 1355 IF F0%>0% ; CUR(23%,0%)'2%) 1404 ; CUR(23%,W%-6%)SPACE$(5%); 1405 IF F0%>0% ; CUR(23%,0%)''; 1440 GOSUB 1100 1450 NEXT F1% 1451 E2%=0% : RETURN 1500 REM F\NSTER 1510 FOR X%=5% TO 18% STEP 13% 1520 ; CUR(X%,W2%-2%)'+'STRING$(30%,45%)'+' 1530 NEXT X% 1540 FOR X%=6% TO 17% 1550 ; CUR(X%,W2%-2%)'!'SPACE$(30%)'!' 1560 NEXT X% 1562 FOR X%=6% TO 17% 1564 READ F$ : IF F$='-' GOTO 1580 1566 ; CUR(X%,W2%); : IF X%=6% ; ' 'F$ : X%=7% ELSE ; F$ 1568 NEXT X% 1580 E2%=-2% : RETURN 1600 REM PACKA 1610 F1%=0% : F2%=0% 1620 IF F1%>F% F%=F2%-1% : RETURN 1630 IF V%(F1%)=2% F1%=F1%+1% : E2%=-3% : GOTO 1620 1640 GOSUB 2000 : F1%=F1%+1% : F2%=F2%+1% : GOTO 1620 1700 REM R[KNA VALDA 1710 T%=0% : FOR F1%=0% TO F% 1720 IF V%(F1%) T%=T%+1% : T$=F$(F1%) 1730 NEXT F1% : RETURN 1800 REM ERROR X$ 1810 ; CUR(23%,6%)X$;CHR$(7%);TAB(35%); : E%=1% : X$='' : RETURN 1900 REM  1910 GOSUB 1700 : IF T%=0% X$='Inga filer valda' : GOTO 1800 1911 IF T%>X% X$='F|r m}nga filer valda' : GOTO 1800 1920 RETURN 2000 REM BYT POST F1%<->F2% 2010 IF F1%=F2% RETURN 2020 F$=F$(F2%) : F$(F2%)=F$(F1%) : F$(F1%)=F$ 2030 X%=X%(F2%) : X%(F2%)=X%(F1%) : X%(F1%)=X% 2060 X%=S%(F2%) : S%(F2%)=S%(F1%) : S%(F1%)=X% 2070 X%=V%(F2%) : V%(F2%)=V%(F1%) : V%(F1%)=X% 2080 X%=D%(F2%) : D%(F2%)=D%(F1%) : D%(F1%)=X% 2090 F3%=0% : RETURN 2100 REM TA BORT MELLANSLAG F$(F1%) -> F$ 2110 F$='' 2120 FOR X%=1% TO LEN(F$(F1%)) 2130 IF MID$(F$(F1%),X%,1%)<>' ' THEN F$=F$+MID$(F$(F1%),X%,1%) 2140 NEXT X% : RETURN 2200 REM F\RSTORA X$ 2210 FOR I%=1% TO LEN(X$) : J%=ASC(RIGHT$(X$,I%)) : IF J%>94% J%=J%-32% 2220 X$=X$+CHR$(J%) : NEXT I% 2230 X$=RIGHT$(X$,I%) : RETURN 2300 REM GET X$ 2305 GET X$ : GOSUB 2200 : X%=ASC(X$) : IF E% GOSUB 1300 2310 RETURN 2500 REM MENY 2502 GOSUB 1500 2510 M%=M1% : IF E%=0% M%=1% : IF X$<>'' GOTO 2530 2520 ; CUR(7%+M%,W2%-1%); : GOSUB 2300 : IF X$=CHR$(24%) OR X$=' ' X$='E' 2530 M1%=INSTR(1%,M$,X$) : IF M1% M%=M1% : GOTO 2565 2540 IF X%=8% M%=M%-1% : IF M%<1% M%=LEN(M$) 2550 IF X%=9% M%=M%+1% : IF M%>LEN(M$) M%=1% 2560 IF X%<>13% GOTO 2520 2565 ; CUR(7%+M%,W2%-1%)'>'; : X$='' : M1%=M% 2570 RETURN 3000 REM KOMMANDO MENY 3010 RESTORE 3000 : M$='BAIO\E' : GOSUB 2500 3020 DATA 'KOMMANDO MENY 3030 DATA 'B LIB 3040 DATA 'A Avsluta 3060 DATA 'I Visa inte filer 3070 DATA 'O Sortera 3090 DATA '\ \vriga kommandon 3100 DATA 'E Avbryt 3110 DATA - 3120 ON M% GOSUB 5000,4000,4100,7000,3500,3140 3130 IF E% GOTO 3000 3140 RETURN 3500 REM \VRIGA 3510 RESTORE 3500 : M$='KV[JRLEM' : GOSUB 2500 : IF M%=8% E%=1% : RETURN 3520 DATA '\VRIGA KOMMANDON 3530 DATA 'K Kopiera filer 3540 DATA 'V Visa filens inneh}ll 3550 DATA '[ [ndra filnamn 3560 DATA 'J J{mf|r 2 filer 3570 DATA 'R Radera filer 3580 DATA 'L Ladda och k|r fil 3590 DATA 'E Avbryt 3600 DATA - 3610 ON M% GOSUB 7500,9000,8500,9000,8000,6000,3620 3611 IF E% GOTO 3500 3620 RETURN 4000 REM AVSLUTA 4010 GOSUB 1400 : ; CUR(22%,0%); 4020 END 4100 REM VISA INTE 4110 X%=F% : GOSUB 1900 : IF E% RETURN 4130 FOR F1%=0% TO F% : IF V%(F1%) V%(F1%)=2% 4140 NEXT F1% 4150 GOTO 1600 5000 REM LIB 5010 RESTORE 5000 : M$='B01SE' : GOSUB 2500 : IF M%=5% RETURN 5020 DATA 'LIB, FILBIBLOTEK 5030 DATA 'B B}da drivarna 5040 DATA '0 Bara drive 0 5050 DATA '1 Bara drive 1 5051 DATA 'S B}da med filstorlekar 5060 DATA 'E Avbryt 5070 DATA - 5080 D1%=0% : D2%=1% : IF M%=2% D2%=0% ELSE IF M%=3% D1%=1% 5090 B%=(M%=4%) 5100 FOR D%=D1% TO D2% : GOSUB 5300 : NEXT D% 5110 IF E% RETURN ELSE GOTO 1300 5300 REM LIB D% 5310 FOR F1%=0% TO F% : IF D%(F1%)=D% V%(F1%)=2% 5320 NEXT F1% : GOSUB 1600 : GOSUB 1400 5330 POKE 64769%,D% 5340 D0%(D%)=0% : D2%(D%)=-1% 5350 REM L[S TOM BITMAP 5360 Z%=CALL(24678%,224%) 5370 IF PEEK(64789%) AND 128% THEN D2%(D%)=0% : RETURN 5380 IF PEEK(64789%) THEN 5810 5390 FOR I%=-2816% TO I%+160% 5400 IF PEEK(I%)=0% D0%(D%)=D0%(D%)+8% 5410 NEXT I% 5420 REM L[S BITMAP 5430 Z%=CALL(24678%,192%) 5440 IF PEEK(64789%) THEN 5810 5450 FOR I%=0% TO 7% : A%(I%)=PEEK(62959%+I%) : NEXT I% 5460 D1%(D%)=0% 5470 FOR I%=62720% TO I%+160% 5480 IF PEEK(I%)=255% GOTO 5500 ELSE IF PEEK(I%)=0% D1%(D%)=D1%(D%)+8% : GOTO 5500 5490 FOR J%=0% TO 7% : D1%(D%)=D1%(D%)-((PEEK(I%) AND 2%^J%)=0%) : NEXT J% 5500 NEXT I% 5510 FOR I%=0% TO 7% 5520 IF A%(I%)<2% THEN 5790 5530 REM L[S BIBLOTEK 5540 Z%=CALL(24678%,512%+I%*32%) 5550 IF PEEK(64789%) THEN 5810 5560 FOR J%=62736% TO J%+224% STEP 16% 5570 IF PEEK(J%)=0% OR PEEK(J%)=255% THEN 5780 5580 IF F%>F9% F%=F9% : X$='F|r m}nga filer' : GOTO 1800 5590 R%=SWAP%(PEEK(J%))+PEEK(J%+1%) 5600 REM FILNAMN 5610 F$='DR'+CHR$(D%+48%)+':' 5620 FOR K%=4% TO 14% : IF K%=12% THEN F$=F$+'.' 5630 F$=F$+CHR$(PEEK(J%+K%)) : NEXT K% 5640 REM STORLEK 5650 IF B%=0% X%=-1% : GOTO 5740 5660 POKE 64512%,6%,112%,195%,15%,96% 5670 Z%=CALL(64512%,R%) 5680 IF PEEK(64789%) THEN 5810 5690 X%=0% 5700 FOR K%=4% TO 240% STEP 2% 5710 IF PEEK(64512%+K%)=255% THEN 5740 5720 X%=X%+(PEEK(64513%+K%) AND 31%)+1% 5730 NEXT K% 5740 REM 5750 F%=F%+1% 5760 X%(F%)=X% : F$(F%)=F$ : S%(F%)=PEEK(J%+1%) : D%(F%)=D% : V%(F%)=0% 5770 F1%=F% : GOSUB 1100 : S%=0% 5780 NEXT J% 5790 NEXT I% : D2%(D%)=1% 5800 RETURN 5810 REM 5820 X%=PEEK(64789%) 5830 IF X%=16% X$='Disk i DR'+CHR$(D%+48%)+' nog ej formaterad' : GOTO 1800 5840 IF X%=128% X$='Lucka till drive'+NUM$(D%)+' {r |ppen' : GOTO 1800 5850 X$='Diskfel i drive'+NUM$(D%) : GOTO 1800 6000 REM LADDA & K\R 6001 X%=1% : GOSUB 1900 : IF E% RETURN 6030 FOR F1%=0% TO F% : IF V%(F1%)=0% NEXT F1% 6090 GOSUB 2100 6110 ONERRORGOTO 6160 : ; CUR(23%,0%); 6120 CHAIN F$(F1%) : END 6160 X$='ERR'+NUM$(ERRCODE)+' file '+F$ : GOTO 1800 7000 REM SORTERA 7010 IF F%<2% X$='Meningsl|st' : GOTO 1800 7020 RESTORE 7000 : M$='DFTE' : GOSUB 2500 : IF M%=4% RETURN 7030 DATA 'SORTERA LISTAN 7040 DATA 'D Efter drive och filnamn 7050 DATA 'F Efter filnamn 7060 DATA 'T Efter filtyp 7070 DATA 'E Avbryt 7080 DATA - 7090 GOSUB 1400 : I%=1% : IF M%=2% I%=5% ELSE IF M%=3% I%=14% 7100 IF I%=S% RETURN 7110 FOR F1%=0% TO F%-1% 7120 FOR F2%=F1%+1% TO F% 7130 IF RIGHT$(F$(F1%),I%)>RIGHT$(F$(F2%),I%) GOSUB 2000 7140 NEXT F2% : GOSUB 1100 7150 NEXT F1% : S%=I% : GOSUB 1100 7160 RETURN 7500 REM KOPIERA 7510 X%=F%+1% : GOSUB 1900 : IF E% RETURN 7520 RESTORE 7500 : GOSUB 1500 7530 DATA 'KOPIERA FILER 7540 DATA 'Till enhet (DRx) 7550 DATA - 7560 ; CUR(9%,W2%); : INPUT X$ : GOSUB 2200 : IF X$='E' OR X$='' RETURN 7570 E$=X$ : IF INSTR(1%,E$,':')=0% E$=E$+':' : IF INSTR(1%,E$,'DR')<>1% X$='Fel enhet' : GOTO 1800 7580 ; CUR(23%,6%)'Kopiera till 'X$;TAB(33%); : E%=1% : GOSUB 1400 7590 FOR F1%=0% TO F% 7600 IF V%(F1%) GOSUB 7630 7610 NEXT F1% 7620 RETURN 7630 REM KOPIERA FIL 7640 GOSUB 1000 : GOSUB 2100 7650 ONERRORGOTO 7850 : E%=0% : M$=F$ 7660 OPEN F$ ASFILE 1% 7670 M$=E$+RIGHT$(F$,5%) 7680 PREPARE M$ ASFILE 2% 7690 K%=0% 7700 ONERRORGOTO 7750 : M$=F$ 7710 FOR I%=0% TO A9% 7720 Z%=CALL(28666%,1%)+CALL(28668%,K%+I%) : A$(I%)=Q0$ 7730 IF R% ; CUR(R%,L%+1%)K%+I%+1%' block' 7740 NEXT I% : GOTO 7760 7750 E%=ERRCODE : IF ERRCODE<>38% GOTO 7850 7760 ONERRORGOTO 7850 : M$=E$+RIGHT$(F$,5%) 7770 FOR J%=0% TO I%-1% 7780 Z%=CALL(28666%,2%) : Q0$=A$(J%) : Z%=CALL(28670%,K%+J%) 7790 IF R% ; CUR(R%,L%+1%)K%+J%+1%' block' 7800 NEXT J% 7810 K%=K%+J% 7820 IF E%=0% GOTO 7700 7830 CLOSE 2% : CLOSE 1% 7840 IF E%=38% E%=0% : RETURN 7850 X$='ERR'+NUM$(ERRCODE)+' file '+M$ : GOSUB 1800 : CLOSE 2% : CLOSE 1% 7860 ; CUR(R%,L%+1%);' Error ' 7870 RETURN 8000 REM D\DA 8010 X%=F%+1% : GOSUB 1900 : IF E% RETURN 8020 RESTORE 8000 : M$='NJE' : GOSUB 2500 : IF M%=1% OR M%=3% RETURN 8030 DATA 'SKA DESSA FILER RADERAS? 8040 DATA 'N Nej 8050 DATA 'J Ja 8060 DATA - 8070 FOR F1%=0% TO F% 8080 IF V%(F1%) GOSUB 8110 8090 NEXT F1% 8100 GOSUB 1600 : RETURN 8110 REM 8120 GOSUB 2100 : GOSUB 1000 8130 ONERRORGOTO 8180 8140 KILL F$ 8150 ; CUR(R%,L%+1%);' Raderad ' 8160 V%(F1%)=2% : D1%(D%(F1%))=-1% 8170 RETURN 8180 REM 8190 ; CUR(R%,L%+1%);' Error ' 8200 X$='ERR'+NUM$(ERRCODE)+' file '+F$ : GOTO 1800 8500 REM RENAME 8510 X%=1% : GOSUB 1900 : IF E% RETURN 8520 RESTORE 8500 : GOSUB 1500 8530 DATA '[NDRA FILNAMN TILL VAD? 8540 DATA 'Ange nytt filnamn (ej drive) 8550 DATA - 8555 FOR F1%=0% TO F% : IF V%(F1%)=0% NEXT F1% 8560 F$='DR'+CHR$(D%(F1%)+48%)+':' 8570 ; CUR(10%,W2%); : INPUT X$ : GOSUB 2200 : IF X$='' OR X$='E' RETURN 8580 X%=INSTR(1%,X$,':') 8590 IF X%=0% X$=F$+X$ ELSE IF LEFT$(X$,X%)<>F$ X$='Fel drive' : GOTO 1800 8600 X%=INSTR(1%,X$,'.') : IF X%=0% X$=X$+'.' ELSE IF X%<13% X$=LEFT$(X$,X%-1%)+' '+RIGHT$(X$,X%) : GOTO 8600 8610 IF X%>13% 8680 8620 IF LEN(X$)<16% X$=X$+' ' : GOTO 8610 8630 IF LEN(X$)>16% 8680 8641 IF F$(F1%)=X$ RETURN 8642 FOR F2%=0% TO F% : IF F$(F2%)<>X$ NEXT F2% ELSE X$='Upptaget filnamn' : GOTO 1800 8650 ONERRORGOTO 8200 : ; CUR(23%,0%); 8660 NAME F$(F1%) AS X$ 8670 F$(F1%)=X$ : E2%=-3% : RETURN 8680 X$='Felaktigt filnamn' : GOTO 1800 9000 REM DISP 9010 RESTORE 9000 : GOSUB 1500 9011 DATA 'FUNKTIONEN EJ IMPLEMENTERAD 9012 DATA - 9020 FOR Z%=0% TO 5000% : NEXT Z% 9030 RETURN 9999 REM SISTA RADEN