1 REM Ins{nd av Kristoffer Eriksson <5357> 1986-05-06 01.59.36 10 ! save XSCHMOD, 1986-05-06 01.30 20 ! +-----------------------------------------------------+ 21 ! ! XSCHMOD 1.05 - [ndra filskydd o {gare p} flera filer! 22 ! ! F|r LUX-NET med ABC800-serien. ! 23 ! ! F}r kopieras fritt f|r icke-kommersiella syften, ! 24 ! ! f|rutsatt att denna info bevaras. ! 25 ! ! Av Kristoffer Eriksson, 1984, 85, 86. ! 26 ! +-----------------------------------------------------+ 27 ! Programmet inneh}ller {ven en hel del anv{ndbara rutiner f|r LUX-NET. 28 ! 29 ! Ver / Datum / Sign / ]tg{rd 30 ! X.00 / 84-12-18 / SKE <5357> / 31 ! 1.00 / 85-02-06 / SKE / Nya biblioteksrutiner, ny FNChmod 32 ! 1.01 / 85-02-25 / SKE / Felaktig RETURN i FNChkurval$ r{ttad 33 ! 1.02 / 85-03-14 / SKE / PF5 p} Ja-Nej-fr}gor }tg{rdad 34 ! 1.03 / 85-10-30 / SKE / H{nging i FNJanej r{ttad 35 ! 1.04 / 85-11-20 / SKE / [ven [gare, Grupp och Datum 36 ! 1.05 / 86-05-06 / SKE / FNLib version 86-01-21 100 ! 990 INTEGER : EXTEND : ! NO RESUME 1000 ! 1010 ! Lib$ <- Filnamn (11+1 tkn/namn) 1020 ! 1030 DEF FNLib(Enhet$,Urval$,Sizeopt,Oldopt) LOCAL S1,S2,F,E,A$=16,N$=11,Dev,L,G 1040 L=12-(Sizeopt<>0) 1050 DIM Lib$=L*256 1060 Lib$=" " : POKE VAROOT(Lib$)+4,0,L 1070 Dev=FNDevnr(Enhet$) 1080 ON ERROR GOTO 1310 1090 OPEN Enhet$ AS FILE 1 1100 IF INSTR(1,"LFD:UFD:PFD:",Enhet$) THEN S1=0 : S2=1 ELSE S1=14 : S2=16 1110 IF Oldopt AND S1<>0 THEN S1=6 : S2=8 : G=4 ELSE G=1 1120 POSIT #1,S1*253*G+236 1130 GET #1 A$ COUNT 16-(Oldopt AND 8) 1140 WHILE LEN(A$) 1150 IF ASCII(A$)=0 THEN 1260 1160 POSIT #1,S2*253*G+1 1170 N=16 : WHILE N 1180 GET #1 N$ COUNT 11 1190 IF N$=STRING$(11,255) OR N$=STRING$(11,0) THEN 1240 1200 IF NOT FNUrval(Urval$,N$) THEN 1240 1210 MID$(Lib$,F*L+1,12)=N$+" " 1220 IF Sizeopt THEN MID$(Lib$,F*L+12,2)=CVT%$(FNSize(Dev,N$)) 1230 F=F+1 1240 IF N>1 THEN GET #1 N$ COUNT 5 1250 N=N-1 : WEND 1260 S2=S2+1 1270 A$=RIGHT$(A$,2) : WEND 1280 CLOSE 1 1290 POKE VAROOT(Lib$)+4,F*L,SWAP%(F*L) 1300 RETURN E 1310 E=ERRCODE : GOTO 1290 1320 FNEND 1330 ! 1335 ! Denna rutin utnyttjas inte i detta program. 1340 DEF FNSize(Dv,Fil$) LOCAL K$=22,K,F$=12,S 1350 REM ASSEMBLERING AV LFD:DOSOPEN.ASM. 1985-02-05 19.43.59 1360 K$=CHR$(14,4,6,0,205,24,96,17,255,255,212,42,96,212,45,96,33,0,0,208,111,201) 1370 F$=Fil$ 1380 MID$(K$,2,1)=CHR$(Dv) 1390 K=CALL(VARPTR(K$),VARPTR(F$)) : IF K<>0 THEN 1430 ! RIB -> Dosbuf0 1400 S=PEEK2(62720+236) 1410 K$=CHR$(6,0,205,33,96,33,0,0,208,111,201) 1420 K=CALL(VARPTR(K$)) ! St{ng fil 1430 RETURN S 1440 FNEND 1450 ! 1460 ! 1470 ! Kolla att filnamnet N$ (11 tkn) matchar Urval$ (inkl ".") 1480 ! 1490 DEF FNUrval(Urval$,N$) LOCAL P,P2 1500 P=INSTR(1,Urval$,".") 1510 IF LEFT$(N$,P-1)<>LEFT$(Urval$,P-1) THEN 1540 1520 IF MID$(N$,9,LEN(Urval$)-P)=RIGHT$(Urval$,P+1) THEN RETURN -1 1530 ! 1540 IF INSTR(1,Urval$,"?")=0 THEN RETURN 0 1550 P=1 : P2=1 : WHILE P<=LEN(Urval$) 1560 IF MID$(Urval$,P,1)="." THEN P2=8 : GOTO 1590 1570 IF MID$(Urval$,P,1)=MID$(N$,P2,1) THEN 1590 1580 IF MID$(Urval$,P,1)<>"?" THEN RETURN 0 1590 P=P+1 : P2=P2+1 : WEND 1600 RETURN -1 1610 FNEND 1620 ! 1630 ! Kontrollera att urval$ ser ut som ett filnamn 1640 ! 1650 DEF FNChkurval$(Urval$) LOCAL S$=15,P 1660 IF LEN(Urval$)>12 THEN RETURN "!" 1670 S$=FNCaps$(Urval$) 1680 IF LEN(S$) IF RIGHT$(S$,LEN(S$))="/" THEN S$=LEFT$(S$,LEN(S$)-1)+".U" 1690 P=INSTR(1,S$,".") : IF P=0 THEN S$=S$+"." : GOTO 1690 1700 IF P>9 OR LEN(S$)-P>3 THEN RETURN "!" 1710 IF INSTR(P+1,S$,".") THEN RETURN "!" 1720 P=1 : WHILE P<=LEN(S$) 1730 IF INSTR(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ][\0123456789.?",MID$(S$,P,1))=0 THEN RETURN "!" 1740 P=P+1 : WEND 1750 RETURN S$ 1760 FNEND 1770 ! 1780 ! Kontrollera att enheten finns och har bibliotek 1790 ! 1800 DEF FNChkenhet$(Enhet$) LOCAL S$=5,P 1810 IF LEN(Enhet$)>4 THEN RETURN "!" 1820 S$=FNCaps$(Enhet$) 1830 P=INSTR(1,S$,":") : IF P=0 THEN S$=S$+":" : GOTO 1830 1840 IF P<>LEN(S$) OR P=1 OR P>4 THEN RETURN "!" 1850 P=FNDevadr(LEFT$(S$,P-1)) 1860 IF P>=0 AND P<24576 OR PEEK(P+7)>31 THEN RETURN "!" 1870 RETURN S$ 1880 FNEND 1890 ! 1900 DEF FNDevadr(Enhet$) LOCAL A 1910 A=PEEK2(65403) 1920 WHILE A 1930 IF CHR$(PEEK(A+2),PEEK(A+3),PEEK(A+4))=LEFT$(Enhet$+" ",3) THEN RETURN A 1940 A=PEEK2(A) : WEND 1950 RETURN 0 1960 FNEND 1970 ! 1980 DEF FNDevnr(Enhet$) LOCAL A 1990 A=FNDevadr(Enhet$) 2000 IF A THEN RETURN PEEK(A+7) ELSE RETURN A 2010 FNEND 2020 ! 2030 DEF FNCaps$(S$) LOCAL P,T$=160 2040 T$=S$ 2050 WHILE P="`" THEN MID$(T$,P,1)=CHR$(ASCII(MID$(T$,P,1))-32) 2080 WEND 2090 RETURN T$ 2100 FNEND 2980 ! 2990 ! ___ 3000 ! Typ: 1=alfanumeriskt, 2=numeriskt 3010 DEF FNGet$(Max,Deflt$,Typ) LOCAL X,P,X$=320,Gt$=1,R,K,D 3020 X$=Deflt$ : X=0 : K=PEEK(SYS(10)+82) : R=PEEK(SYS(10)+83) 3030 ; CYA; 3040 WHILE X=0 3050 ; CUR(R,K) LEFT$(X$+STRING$(Max,95),Max) CUR(R,K+P); 3060 Gt$=FNInkey$ : X=INSTR(1,CHR$(13,196,198,192,8,9,9,9,24,199),Gt$) 3070 ON X+1 GOTO 3140,3190,3190,3190,3190,3080,3090,3190,3190,3100,3120 3080 IF Max>1 THEN P=P+(P>0) : GOTO 3180 ELSE 3190 3090 P=P-(P=Max THEN X$=RIGHT$(X$,Max+1) ELSE X$="" 3110 P=0 : GOTO 3180 3120 IF LEN(X$) THEN P=P+(P>=LEN(X$)) ELSE 3180 3130 X$=LEFT$(X$,P)+RIGHT$(X$,P+2) : P=P+(P>LEN(X$)) : GOTO 3180 3140 IF Gt$>CHR$(127) OR Gt$<" " OR (Typ=2 AND (Gt$<"0" OR Gt$>"9")) THEN ; CHR$(7); : GOTO 3180 3150 IF D=0 THEN X$="" 3160 IF LEN(X$)=320 THEN X$=LEFT$(X$,319) 3170 IF P1 THEN 3230 3210 IF LEN(X$)>Max THEN X$=LEFT$(X$,Max) 3220 Op=1 : GOTO 3240 3230 Op=(INSTR(1,"7 254 368",NUM$(X))-5)/2 : X$=Deflt$ 3240 ; CUR(R,K) X$ SPACE$(Max-LEN(X$)) CUR(R,K); : RETURN X$ 3250 FNEND 3260 ! 3270 DEF FNInkey$ LOCAL Gt$=1,A,C,B,S 3280 S=80/PEEK(SYS(10)+84) 3290 WHILE 1 3300 A=30720+PEEK(SYS(10)+83)*80+PEEK(SYS(10)+82)*S 3310 B=INP(53) 3320 C=PEEK2(SYS(10)+82) 3330 OUT 56,11,57,9,56,14,57,SWAP%(A),56,15,57,A,56,10,57,8 OR 96 3340 WHILE SYS(5)<128 : IF S=1 THEN ; CUR(0,59) GRN TIME$; 3350 WEND 3360 OUT 56,11,57,9,56,10,57,40 3370 OUT 53,B 3380 POKE SYS(10)+82,C,SWAP%(C) 3390 GET Gt$ : IF Gt$<>CHR$(247) THEN RETURN Gt$ 3400 ON ERROR GOTO 3500 3410 PREPARE LEFT$("R",-((PEEK(24688) AND 254)=8))+"PR:" AS FILE 99 3420 A=30800 : WHILE A<32720 3430 B=A-80 : WHILE B31 THEN ; #99 CHR$(C); ELSE ; #99 " "; 3470 B=B+S : WEND 3480 A=A+80 : ; #99 : WEND 3490 CLOSE 99 3500 WEND 3510 FNEND 3520 ! 3530 DEF FNJanej(Deflt$) LOCAL Gt$=1 3540 WHILE 1 3550 Gt$="" : WHILE Gt$="" : Gt$=FNGet$(1,Deflt$,1) : WEND 3560 IF INSTR(1,"Jj",Gt$) THEN ; "J" CHR$(8); : RETURN -1 3570 IF INSTR(1,"Nn",Gt$) THEN ; "N" CHR$(8); : RETURN 0 3580 ; CHR$(7); : WEND 3590 FNEND 3980 ! 3990 ! ___ 4000 DEF FNFel(N,Typ) LOCAL Gt$=1 4010 ; CUR(23,0) CHR$(7) RED NWBG YEL "> "; 4020 IF Typ=1 THEN ; FNBasicfel$(N); : GOTO 4060 4030 IF Typ=2 THEN ; FNDosfel$(N); : GOTO 4060 4040 IF Typ=3 THEN ; FNNettrap$(N); : GOTO 4060 4050 ON N GOSUB 4100,4110 4060 ; " <" BLBG; 4070 WHILE INSTR(1,CHR$(24,192),FNInkey$)=0 : WEND 4080 ; CUR(23,0) SPACE$(PEEK(SYS(10)+84)); 4090 RETURN N OR SWAP%(Typ) 4100 ; "Felaktig enhet"; : RETURN 4110 ; "Felaktigt urval"; : RETURN 4120 ; "Felaktigt anv{ndarnamn"; : RETURN 4130 FNEND 4140 ! 4150 DEF FNBasicfel$(X) 4160 IF X=48 THEN RETURN "Fel i biblioteket" 4170 IF X=35 THEN RETURN "Kontrollsummafel vid l{sning" 4180 IF X=36 THEN RETURN "Kontrollsummafel vid skrivning." 4190 IF X=39 THEN RETURN "Filen skrivskyddad" 4200 IF X=40 THEN RETURN "Filen l{sskyddad" 4210 IF X=41 THEN RETURN "Skivan {r full" 4220 IF X=42 THEN RETURN "Enheten ej klar" 4230 IF X=43 THEN RETURN "Skivan skrivskyddad" 4240 IF X=46 THEN RETURN "Biblioteket ej inst{llt" 4250 IF X=52 THEN RETURN "G}r inte p} denna enhet" 4260 IF X=51 THEN RETURN "Enheten upptagen" 4270 RETURN "Felkod "+NUM$(X) 4280 FNEND 4290 ! 4300 DEF FNDosfel$(N) 4310 IF N AND 1 THEN RETURN "Enheten upptagen" 4320 IF N AND 2 THEN RETURN "Fel order till enheten" 4330 IF N AND 8 THEN RETURN "Kontrollsumma-fel" 4340 IF N AND 16 THEN RETURN "Hittar inte sektorn" 4350 IF N AND 64 THEN RETURN "Skrivskyddad fil" 4360 IF N AND 128 THEN RETURN "Enheten ej klar" 4370 RETURN "Ok{nt dosfel: "+NUM$(N) 4380 FNEND 4390 ! 4400 DEF FNNettrap$(N) 4410 IF N=132 THEN RETURN "Filen skyddad" 4420 RETURN "Net-trap "+NUM$(N) 4430 FNEND 4440 ! 5000 ! ___ 5010 DEF FNSetrib(Dv,Fil$,Grp.,[g$,Tid$,Stat) LOCAL K$=22,K,F$=12,T,S,B$=0 5020 REM ASSEMBLERING AV LFD:DOSOPEN.ASM. 1985-02-05 19.43.59 5030 K$=CHR$(14,4,6,0,205,24,96,17,255,255,212,42,96,212,45,96,33,0,0,208,111,201) 5040 POKE VAROOT(B$),0,1,0,SWAP%(62720),0,1 5050 F$=Fil$ 5060 MID$(K$,2,1)=CHR$(Dv) 5070 K=CALL(VARPTR(K$),VARPTR(F$)) : IF K<>0 THEN 5170 ! RIB -> Dosbuf0 5080 IF Grp.>=0 THEN MID$(B$,239,2)=CVT%$(Grp.) 5090 IF LEN([g$) THEN MID$(B$,241,8)=LEFT$(FNCaps$([g$)+SPACE$(8),8) 5100 IF LEN(Tid$) THEN MID$(B$,249,6)=Tid$ 5110 S=ASCII(MID$(B$,256,1)) AND 128 5120 IF Stat>=0 THEN MID$(B$,256,1)=CHR$(S OR Stat) 5130 K=FNTalknet(14+64,11,0*16,10,0,0,0*16) 5140 IF K THEN RETURN -K 5150 K$=CHR$(6,0,205,33,96,33,0,0,208,111,201) 5160 K=CALL(VARPTR(K$)) : IF K=0 THEN RETURN 0 ! St{ng fil 5170 RETURN K 5180 FNEND 5190 ! 5200 DEF FNSkyddskod(Skydd$) LOCAL S,V,I 5210 S=63 : I=1 5220 WHILE I<=LEN(Skydd$) AND I<=2 5230 IF INSTR(1,"Bb",MID$(Skydd$,I,1)) THEN S=S OR 128 : GOTO 5260 5240 IF INSTR(1,"Xx",MID$(Skydd$,I,1)) THEN S=S OR 64 : GOTO 5260 5250 IF INSTR(1,"SsLl",MID$(Skydd$,I,1)) THEN 5270 5260 I=I+1 : WEND 5270 V=0 : WHILE I<=LEN(Skydd$) AND V>=0 5280 IF INSTR(1,"Ss",MID$(Skydd$,I,1)) THEN S=S XOR 2^(V OR 1) : GOTO 5300 5290 IF INSTR(1,"Ll",MID$(Skydd$,I,1)) THEN S=S XOR 2^(V AND 254) 5300 I=I+1 : V=V+1 : WEND 5310 RETURN S 5320 FNEND 5330 ! 5340 DEF FNTalknet(Fc,Sfc,B,C,D,E,X) LOCAL Z 5350 POKE 64798,X 5360 POKE 64961,Fc,Sfc,C,B,E,D 5370 Z=CALL(24672) 5380 RETURN PEEK(64962) 5390 FNEND 5400 ! 5410 DEF FNR$ LOCAL S$=0,P1,P2 5420 POKE VAROOT(S$),80,0,0,SWAP%(30720),80,0 5430 P1=INSTR(3,S$,"") : IF P1=0 THEN 5460 5440 P2=INSTR(P1+2,S$,"") : IF P2=0 THEN 5460 5450 RETURN MID$(S$,P1+1,P2-P1-1) 5460 RETURN " (c) Kristoffer Eriksson" 5470 FNEND 6000 ! 6010 ! Initiera Fil-visnings-f|nstret 6020 ! Wr0, Wk0 = F|nstrets placering, Wak = Antal kolumner, Wl = Antal rader 6030 ! Wr = Aktuell rad |verst i f|nstret 6040 ! 6050 DEF FNFwinit LOCAL I 6060 Wr0=2 : Wk0=2 : Wr=0 : Wak=5 : IF Wid<80 THEN Wak=2 6070 Wl=(LEN(Lib$)/12+Wak-1)/Wak : IF Wl>19 THEN Wl=19 6080 Z=FNRuta(Wr0,Wk0,Wl,15*Wak+1,GYEL) 6090 I=0 : WHILE I=(Wr+Wl)*Wak THEN D=1 : GOTO 6170 6160 GOTO 6190 6170 Z=FNScroll(Wr0,Wk0,Wl,Wak*15+1,D) : Wr=Wr+D 6180 ; CUR(Wr0+P0/Wak-Wr,Wk0) YEL FNFwrad$(P0/Wak*Wak) 6190 ; CUR(Wr0+P0/Wak-Wr,Wk0+3+MOD(P0,Wak)*15); 6200 RETURN 0 6210 FNEND 6220 ! 6230 DEF FNFwrad$(P0) LOCAL P 6240 P=P0*12+1 : WHILE P" T$; : RETURN 0 6340 I=1 : WHILE I<=LEN(T$)+2 6350 PUT CHR$(ASCII(MID$(" "+T$,I,1)) OR 128) 6360 I=I+1 : WEND 6370 RETURN 0 6380 FNEND 6390 DEF FNInv806$ 6400 OUT 53,INP(53) AND 192 OR (INP(53) AND 7)*8 OR (INP(53) AND 56)/8 6410 RETURN "" 6420 FNEND 6430 ! 6440 DEF FNPlocka LOCAL P,Gt$=1,I 6450 Z=FNFwinit 6460 ; CUR(22,0) YEL "RETURN=M{rk/M{rk ej, PF1=Klart, " YEL "PF3=<--, PF4=-->, PF5=Upp, PF7=Ned"; 6470 ! 6480 Gt$=" " : WHILE ASCII(Gt$)<>192 6490 Z=FNFwcur(I) 6500 IF Gt$<>"A" THEN Gt$=FNInkey$ 6510 P=INSTR(1,CHR$(13,8,9,194,195,196,198,192,211)+"Aa",Gt$) 6520 ON P+1 GOTO 6540,6560,6630,6620,6630,6620,6640,6650,6660,6550,6550,6550 6530 ! 6540 ; CHR$(7); : GOTO 6500 6550 Gt$="A" 6560 P=MID$(Lib$,I*12+12,1)="J" AND Gt$<>"A" 6570 MID$(Lib$,I*12+12,1)=MID$(" J",P+2,1) 6580 ; CHR$(8,8); 6590 P=FNInv(MID$(Lib$,I*12+1,8)+"."+MID$(Lib$,I*12+9,3)+" ", NOT P) 6600 IF I=LEN(Lib$)/12-1 AND Gt$="A" THEN Gt$="" 6610 ! 6620 I=I-(I0) : GOTO 6660 6640 I=I-(Wak AND I>=Wak) : GOTO 6660 6650 IF I30800+R*80 6920 POKE VAROOT(D$),B2,0,I,SWAP%(I),B2,0 6930 POKE VAROOT(S$),B2,0,I-80,SWAP%(I-80),B2,0 6940 D$=S$ 6950 I=I-80 : WEND 6960 ; CUR(R,K) WHT SPACE$(B-1); 6970 RETURN -1 6980 FNEND 6990 ! 7000 ! ________________________________________________________________ 7010 DIM Dv$=4,Urval$=12,A$=80,Skydd$=8,Fil$=12,[gare$=8,Tid$=17,Rub$=80 7020 Grupp.=-1 7030 Wid=PEEK(SYS(10)+84) 7040 Abc=800 : IF PEEK(39)=4 THEN Abc=806 ELSE IF PEEK(39)=3 THEN Abc=802 7050 IF Abc=806 THEN Sattr=PEEK(PEEK2(116)+6) : POKE PEEK2(116)+6,4 7060 ! 7070 Rub$=FNR$ 7080 ; CHR$(12) GRN " XSCHMOD 1.05 "; 7090 PUT Rub$ 7100 IF Wid=80 THEN ; CUR(0,58) " " ELSE ; CUR(0,39) "" 7110 ; GRN STRING$(Wid-1,ASCII("-")) 7120 ; GRN "Systemrutiner - [ndra filstatus" 7130 ! 7140 DATA Enhet: _,"Urval: ",,"Ny [gare: ","Grupp: ",, 7150 DATA "Beh|righeter ",Login l{s: N,[gare skriv: J 7160 DATA [gare l{s: J,Grupp skriv: N,Grupp l{s: J,\vriga skriv: N,\vriga l{s: N 7170 RESTORE 7140 7180 FOR I=1 TO 14 7190 READ A$ 7200 ; CUR(I+3,17-LEN(A$)) YEL A$ 7210 NEXT I 7220 Skydd$="--sl-l--" 7230 ; CUR(18,16) YEL Skydd$ 7240 ; CUR(22,0) YEL "PF1=Meny0, PF5=Upp, PF7=Ned" 7250 ; CUR(21,0) GRN STRING$(Wid-1,ASCII("-")) 7260 ! __ 7270 ; CUR(4,17); : Dv$=FNGet$(4,Dv$,1) 7280 ON Op+2 GOTO 7270,8170,7290 7290 A$=FNChkenhet$(Dv$) 7300 IF A$="!" THEN Z=FNFel(1,0) : GOTO 7270 ELSE Dv$=A$ : ; Dv$ 7310 Dv=PEEK(FNDevadr(LEFT$(Dv$,LEN(Dv$)-1))+7) 7320 ! __ 7330 ; CUR(5,17); : Urval$=FNGet$(12,Urval$,1) 7340 ON Op+2 GOTO 7270,8170,7350 7350 A$=FNChkurval$(Urval$) 7360 IF A$="!" THEN Z=FNFel(2,0) : GOTO 7330 ELSE Urval$=A$ : ; Urval$ 7370 ! __ 7380 ; CUR(7,17); : [gare$=FNGet$(8,[gare$,1) 7390 ON Op+2 GOTO 7330,8170,7400 7400 A$=FNChkurval$([gare$) 7410 IF INSTR(1,A$,"?") THEN A$="!" 7420 IF A$<>"!" THEN A$=LEFT$(A$,INSTR(1,A$,".")-1) 7430 IF A$="!" THEN Z=FNFel(3,0) : GOTO 7330 ELSE [gare$=A$ : ; [gare$ 7440 ! __ 7450 IF Grupp.>=0 THEN A$=NUM$(Grupp.) ELSE A$="" 7460 ; CUR(8,17); : A$=FNGet$(6,A$,1) 7470 ON Op+2 GOTO 7380,8170,7480 7480 IF A$="" THEN Grupp.=-1 : GOTO 7520 7490 ON ERROR GOTO 7460 : Grupp.=FIX(VAL(A$)) 7500 IF Grupp.<0 THEN Grupp.=65536.+Grupp. 7510 ; LEFT$(NUM$(Grupp.)+SPACE$(6),6) 7520 ! __ 7530 I=2 7540 ; CUR(20,0) YEL "TOM = Of|r{ndrat filskydd" 7550 WHILE I<=8 7560 ; CUR(9+I,17); 7570 A$=FNCaps$(FNGet$(1,MID$("JJJN ",INSTR(1,"xsl-*",MID$(Skydd$,I,1)),1),1)) 7580 IF Op=0 THEN 8170 7590 IF A$=" " OR A$="*" OR A$="" THEN Skydd$="-*******" : GOTO 7620 7600 IF A$<>"J" AND A$<>"N" THEN ; CHR$(7); : GOTO 7570 7610 MID$(Skydd$,I,1)=MID$(MID$("bxslslsl",I,1)+"-",2+(A$="J"),1) 7620 ; CUR(18,16) YEL Skydd$ 7630 I=I+Op 7640 IF I=1 THEN ; CUR(20,0) SPACE$(35) : GOTO 7450 7650 WEND 7660 IF Skydd$="-*******" THEN Skydd=-1 : GOTO 7690 7670 IF INSTR(1,Skydd$,"*") THEN 7550 7680 Skydd=FNSkyddskod(Skydd$) 7690 ! 7700 ! __Biblioteket__ 7710 ; CUR(22,0) SPACE$(Wid) CUR(22,0) YEL "S|ker '" Dv$+Urval$ "'." 7720 Z=FNLib(Dv$,Urval$,0,0) 7730 ; CUR(22,0) SPACE$(Wid) 7740 IF Z THEN Z=FNFel(Z,1) : GOTO 8170 7750 ; CUR(2,0) SPACE$(19*Wid); 7760 IF Lib$="" THEN ; CUR(3,0) YEL "Inga filer funna." : GOTO 8170 7770 ! 7780 ! __V{lj filer__ 7790 IF Wid<=40 THEN ; CUR(1,35) GRN CUR(21,35) GRN 7800 Z=FNPlocka 7810 ! 7820 ! __Kontrollfr}ga__ 7830 ; CUR(22,0) SPACE$(79) CUR(22,0); 7840 ; YEL "Ska de m{rkta filerna f} angiven status ? "; 7850 IF NOT FNJanej("N") OR Op<>1 THEN 7080 7860 ! 7870 ! __Rensa ut icke valda__ 7880 I=1 : WHILE I"J" THEN 7910 7900 MID$(Lib$,I+11,1)=" " : I=I+12 : GOTO 7920 7910 Lib$=LEFT$(Lib$,I-1)+RIGHT$(Lib$,I+12) 7920 WEND 7930 ; CUR(2,0) SPACE$(19*Wid) GRN STRING$(Wid-1,ASCII("-")) 7940 IF Wid<=40 THEN ; CUR(21,35) GRN 7950 Z=FNFwinit 7960 IF Lib$="" THEN 8170 7970 ! 7980 ! __Utf|r chmod__ 7990 ; CUR(22,0) SPACE$(79); 8000 I=0 : I0=0 8010 WHILE I192 8020 Fil$=MID$(Lib$,I*12+1,11) 8030 Z=FNFwcur(I) 8040 ; CUR(22,0) YEL [gare$ " " Skydd$ " Fil: " LEFT$(Fil$,8) "." RIGHT$(Fil$,9); 8050 Z=FNSetrib(Dv,Fil$,Grupp.,[gare$,Tid$,Skydd) 8060 IF Z<0 THEN Z=FNFel(-Z,3) : GOTO 8110 8070 IF Z THEN Z=FNFel(Z,1) : GOTO 8110 8080 MID$(Lib$,I*12+12,1)="J" 8090 Z=FNFwcur(I) : ; CHR$(8,8); 8100 Z=FNInv(LEFT$(Fil$,8)+"."+RIGHT$(Fil$,9)+" ",-1) 8110 I=I+1 : WEND 8120 CLOSE 8130 IF SYS(5)>127 THEN GET A$ 8140 GOTO 8180 8150 ! 8160 ! __ 8170 ; CUR(21,0) GRN STRING$(Wid-1,ASCII("-")) " "; 8180 ; CUR(22,0) SPACE$(Wid) CUR(22,0) YEL "[ndra skydd p} fler filer J/N ? "; 8190 IF FNJanej("N") THEN 7080 ELSE IF Op<>1 THEN 8190 8200 ; CUR(23,0) YEL "Programbyte..." SPACE$(50); 8210 IF Abc=806 THEN POKE PEEK2(116)+6,Sattr 8220 ON ERROR GOTO 8230 : CHAIN "XSMENU0" 8230 ; CUR(22,0) SPACE$(2*Wid-1) CUR(21,0); 8240 END