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