1 REM +++++++++++++++++++++++++++++++++ 2 REM ! Program .... DIR40 3 REM ! Utg}va 1.0 870419 4 REM ! av (c) Ragne Tholerus *2293* 7 REM ! Minne 24 Kbytes f|r flexskiva 9 REM +++++++++++++++++++++++++++++++++ 10 REM Skalprogram till Standard-DOS 20 REM ABC-80/Basic 1 30 ; INP(3%); 40 DIM C$=0%,Q0$=0%,A$=0%,B$=0%,D$=20%,W$=20%,S$=1%,L$=40%,X$=20%,N$(7%)=5% 50 DIM H$=16%,N$=256%,F$(8%)=15%,N%(3%),M%(7%),A%(156%),D$(6%)=5%,G$(6%)=5% 60 F$(0%)="Nytt namn" : F$(1%)="Till Disk" : F$(2%)="Printer(S/P)" 70 F$(3%)="Tr. PLAY/REC" : F$(4%)="PR:CSA36D72.5" : F$(5%)="PR:VEA30D70.4" 80 F$(6%)="(Hex/Dec)" : F$(7%)="Korrekt? " : F$(8%)="Datum" 90 H$="0123456789ABCDEF" 100 A%=PEEK(65056%)+SWAP%(PEEK(65057%)) : REM HEAP 110 ONERRORGOTO 130 : RESTORE 3880 : H9%=A% 120 READ Z% : POKE H9%,Z% : H9%=H9%+1% : GOTO 120 130 POKE 65056%,H9%,SWAP%(H9%) : REM Ny HEAP 140 REM ___Allokera str{ngpekare___ 150 J%=0% : GOSUB 4050 : C%=R% 160 POKE R%-2%,40%,0%,0%,0%,40%,0% : REM C$ 170 J%=1% : GOSUB 4050 : N%=R% 180 POKE R%-2%,253%,0%,3%,245%,253%,0% : REM Q0$ 190 J%=2% : GOSUB 4050 : X%=PEEK(884%)+SWAP%(PEEK(885%)) 200 POKE R%-2%,14%,0%,X%,SWAP%(X%),14%,0% : REM A$ 210 J%=3% : GOSUB 4050 : B1%=X%+27% 220 POKE R%-2%,13%,0%,B1%,SWAP%(B1%),13%,0% : REM B$ 230 REM ___H{mta diskdata___ 240 ; CHR$(12%)TAB(13%)"ABC DIRECTORY" 250 ; CUR(2%,0%); 260 X%=0% : FOR D%=0% TO 6% 270 G8%=0% : W$="" 280 POKE 64769%,D% 290 Z%=CALL(24678%,SWAP%(0%)+32%*7%) 300 IF PEEK(64789%) THEN 570 310 X%=1% : B%=62959% : FOR I%=0% TO 7% 320 M%(I%)=PEEK(B%+I%) : NEXT I% 330 G%=0% : I%=0% : FOR P%=62720% TO P%+160% 340 IF PEEK(P%)=255% 390 ELSE IF PEEK(P%)=0% G%=G%+8% : GOTO 390 350 Q%=1% 360 J%=((PEEK(P%) AND Q%)=0%) 370 G%=G%-J% : I%=I%+J%+1% 380 Q%=Q%+Q% : IF Q%<256% 360 390 NEXT P% 400 IF G8%=0% G8%=G% : K%=I% : Z%=CALL(24678%,32%*6%) : GOTO 300 410 GOSUB 4210 : D$(D%)=W$ 420 K%=G% : GOSUB 4210 : G$(D%)=W$ 430 ; CHR$(13%)"DR";RIGHT$(NUM$(D%),2%)": "; 440 ; G$(D%)" kvar av";G8%;" sektorer" 450 IF NOT D$(D%)="0" ; D$(D%)" sektorer defekta !" 460 N$="" : S1%=0% : K%=0% : Z%=CALL(24678%,0%) : IF PEEK(64789%) GOTO 600 470 FOR P%=62720% TO P%+255% : S%=PEEK(P%) 480 IF S%=32% AND S1%=32% K%=1% : GOTO 520 490 IF S%<32% OR S%>127% GOTO 530 500 IF NOT S%=32% AND S1%=32% AND K%=1% THEN N$=N$+CHR$(13%,10%) : K%=0% 510 N$=N$+CHR$(S%) : S1%=S% 520 NEXT P% 530 IF NOT N$="" ; : ; "TEXT i nollblocket:" : ; N$ 540 NEXT D% 550 ; : IF X%=0% ; CHR$(13%)"Ingen diskdrive funnen" : GOTO 650 ELSE 630 560 REM ___Analysblock f|r felkod___ 570 F%=PEEK(64789%) : REM Bara noll ger helt OK skiva 580 IF F% AND 128% GOTO 540 ELSE ; "DR"RIGHT$(NUM$(D%),2%)": "; 590 IF F% AND 8% ; "Checksummafel" : GOTO 540 600 IF F% AND 16% ; "D}lig disk" ELSE ; "Diskfel";F% 610 GOTO 540 620 REM ___Meny___ 630 ; CHR$(13%)"Visa bibliotek? (CR)"; : GET S$ 640 IF S$=CHR$(13%) OR S$="J" OR S$="j" GOTO 700 650 ; CHR$(13%)"Omstart? (CR)"; : GET S$ 660 IF S$=CHR$(13%) OR S$="J" OR S$="j" L$="" : GOTO 240 670 ; CHR$(13%)"Avsluta? (CR)"; : GET S$ 680 IF S$=CHR$(13%) OR S$="J" OR S$="j" ; INP(4%)CHR$(12%)"^-DIR40" : END 685 GOTO 630 690 REM ___L{s i biblioteksfilen___ 700 ; CHR$(12%)TAB(13%)"ABC DIRECTORY"CUR(2%,0%); 710 DATA "Sekund{rlista f}s ur begynnelsebokstav." 720 DATA "Spola med pilar, exekvera med CTRL-tkn;" 730 DATA "_V =visa text _S =storlek _N =namnbyte" 740 DATA "_@ =radera _R =}terskapa _P =utskrift" 750 DATA "_B =visablock _K =ny nyckel _Y =kopiera" 760 DATA "_U =heml|st _L =k|r basic _A =avsluta" 770 DATA "Anv{nd g{rna wildcards (* =resten god-" 780 DATA "tyckligt, ? =valfritt enskilt tecken)" 790 DATA "vid anv{ndning av s|knyckeln (ex *.*" 800 DATA "visar alla filnamn)." 810 K%=0% : RESTORE 710 : FOR I%=1% TO 12% 820 IF I%=7% OR I%=12% ; : GOTO 850 830 READ N$ : ; N$; 840 IF K%=0% ; 850 NEXT I% : U%=0% 860 IF NOT L$="" ; : POKE 65011%,PEEK(65011%)-6% : GOTO 1590 870 POKE 65056%,H9%,SWAP%(H9%) 880 ; CHR$(13%)"s|knyckel (filnamn): "; : INPUTLINE L$ 890 IF LEN(L$)=2% GOTO 880 : REM alt L$=*.*"+L$ 900 L$=LEFT$(L$,LEN(L$)-2%)+SPACE$(12%) 910 FOR I%=1% TO 8% : S$=MID$(L$,I%,1%) 920 IF S$="*" OR S$="'" L$=LEFT$(L$,I%-1%)+STRING$(9%-I%,63%)+RIGHT$(L$,I%+1%) 930 IF S$="." L$=LEFT$(L$,I%-1%)+STRING$(9%-I%,32%)+RIGHT$(L$,I%) 940 NEXT I% 950 IF NOT MID$(L$,I%,1%)="." THEN L$=LEFT$(L$,I%-1%)+"."+RIGHT$(L$,I%) 960 FOR I%=10% TO 12% : S$=MID$(L$,I%,1%) 970 IF S$="*" OR S$="'" L$=LEFT$(L$,I%-1%)+STRING$(13%-I%,63%)+RIGHT$(L$,I%+1%) 980 NEXT I% : L$=LEFT$(L$,12%) 990 ; "(";L$+")"SPACE$(10%); : POKE 65011%,PEEK(65011%)-6% 1000 REM ___H{mta namn___ 1010 H8%=H9% : ]%=0% 1020 FOR D%=0% TO 6% 1030 POKE 64769%,D% : A$="L{ser:" : B$="(_^)=Bryt" 1040 FOR T%=2% TO 159% 1050 FOR S9%=0% TO 7% 1060 IF T%>2% 1500 1070 IF NOT U% IF M%(S9%)<1% GOTO 1440 1080 A$="L{ser:"+NUM$(T%)+NUM$(S9%) 1090 Z%=CALL(24678%,SWAP%(2%)+32%*S9%) 1100 IF PEEK(64789%) GOSUB 3680 : IF F%<0% 1460 ELSE 1440 1110 FOR B%=62720% TO 62960% STEP 16% 1120 IF PEEK(B%)=255% OR PEEK(B%+4%)=0% GOTO 1430 1130 R%=PEEK(B%)+SWAP%(PEEK(B%+1%)) 1140 IF U% A%(]%)=SWAP%(R%) : ]%=]%+1% : GOTO 1430 1150 X$="" : FOR I%=4% TO 14% 1160 IF I%=12% THEN X$=X$+"." 1170 IF PEEK(B%+I%)<32% OR PEEK(B%+I%)>127% GOTO 1440 1180 X$=X$+CHR$(PEEK(B%+I%)) : NEXT I% 1190 REM ___Namnj{mf|relse___ 1200 FOR I%=1% TO 12% 1210 IF MID$(X$,I%,1%)=MID$(L$,I%,1%) OR MID$(L$,I%,1%)="?" GOTO 1240 1220 IF (ASC(MID$(X$,I%,1%)) AND 95%)=(ASC(MID$(L$,I%,1%)) AND 95%) GOTO 1240 1230 GOTO 1430 1240 NEXT I% 1250 REM ___Ber{kna storlek och fragment___ 1260 Y%=0% : V%=0% : IF NOT O% THEN 1350 1270 POKE 64512%,6%,112%,195%,15%,96% 1280 Z%=CALL(64512%,SWAP%(R%)) 1290 IF PEEK(64789%) GOSUB 3680 : IF F%<0% 1460 ELSE 1440 1300 FOR J%=0% TO 254% STEP 2% 1310 IF PEEK(J%-1020%)=255% GOTO 1330 1320 Y%=Y%+(PEEK(J%-1019%) AND 31%)+1% : NEXT J% 1330 V%=J%/2% 1340 REM ___Inplacering p} HEAP___ 1350 H8%=PEEK(65056%)+SWAP%(PEEK(65057%)) 1360 H7%=H8% 1370 H8%=H8%+16% : H6%=H8%-1% 1380 POKE 65056%,H8%,SWAP%(H8%) 1390 X$=LEFT$(X$,8%)+RIGHT$(X$,10%) : FOR I%=1% TO 11% 1400 POKE H7%+I%-1%,ASC(MID$(X$,I%,1%)) 1410 NEXT I% 1420 R%=R%+(256%*4%*D%) : POKE H7%+I%-1%,V%,R%,SWAP%(R%),Y%,SWAP%(Y%) 1430 NEXT B% 1440 IF (INP(56%) AND 127%)=30% 1460 ELSE NEXT S9% 1450 IF U% NEXT T% 1460 NEXT D% : A$=SPACE$(13%) : B$=SPACE$(13%) 1480 GOTO 1590 1490 REM ___Hitta heml|sa segmentrecords___ 1500 Z%=CALL(24678%,SWAP%(T%)+32%*S9%) : A$="L{ser:"+NUM$(T%)+NUM$(S9%) 1510 F%=PEEK(64789%) 1520 IF F% X$="FEL"+SPACE$(5%)+NUM$(F%)+SPACE$(2%) : Y%=0% : V%=0% : GOTO 1350 1530 R%=PEEK(62721%)+SWAP%(PEEK(62722%)) 1540 IF R% GOTO 1440 1550 FOR I%=0% TO 156% 1560 IF SWAP%(T%)+S9%*32%=(A%(I%) AND 65504%) GOTO 1440 1570 NEXT I% : X$="DUMMY"+SPACE$(7%) : R%=T%+SWAP%(S9%*32%) : GOTO 1260 1580 REM ___Skriv ut lista_sk{rm___ 1590 ; CHR$(13%)SPACE$(39%)CHR$(13%); : X1%=PEEK(65011%)+1% 1600 X3%=23% : H5%=H9% : IF H8%>H9% 1640 ELSE GOSUB 3790 1610 IF NOT U% L$="" : ; : ; "Nyckeln passar inte"; : GET S$ : GOTO 700 1620 ; : ; "inga heml|sa segmentrecords funna"CHR$(13%); 1630 GET S$ : U%=0% : ; CUR(X1%-1%,0%); : GOTO 1010 1640 U1%=0% : O%=0% : ; CHR$(13%); 1650 ; "Namn,storlek,disk,sp}r,sektor,fraktion" 1660 L%=H5% : GOSUB 3790 1670 IF [%>32% IF NOT PEEK(L%)=[% POKE 65011%,PEEK(65011%)-1% : GOTO 1710 1680 FOR J%=0% TO 10% : ; CHR$(PEEK(L%+J%)); : IF J%=7% ; "."; 1690 NEXT J% : I%=L% : GOSUB 4090 1700 ; " "N$(1%)" "N$(2%);N$(3%);N$(4%)" "N$(5%); 1710 ; CHR$(13%); : IF PEEK(65011%)=23% THEN 1740 1720 IF U1%=-1% GOTO 1760 1730 L%=L%+16% : IF L%X1% ; CUR(X2%-1%,0%); : L%=L%-16% : GOTO 1760 ELSE 2190 1790 IF S%=9% IF X2%31% [%=S% AND 95% : ; CUR(X1%-1%,0%); : GOTO 1600 1820 IF S%=11% L$="" : [%=0% : GOTO 700 1830 IF S%=19% IF U%=0% O%=-1% : GOTO 3770 1840 IF S%=21% U%=-1% : [%=0% : POKE 65056%,H9%,SWAP%(H9%) ELSE 1890 1850 ; CUR(X1%-1%,0%); : GOTO 1020 1860 REM ___Skrivl{geskorrektion___ 1870 L%=L%-(PEEK(65011%)-X2%)*16% : RETURN 1880 REM ___L{s datastr{ng sk{rm___ 1890 X%=X2%*2%+884% : X%=PEEK(X%)+SWAP%(PEEK(X%+1%)) : POKE C%,X%,SWAP%(X%) 1900 X$=LEFT$(C$,12%) : I%=13% : J%=0% 1910 IF MID$(C$,I%,1%)=" " THEN I%=I%+1% : GOTO 1910 1920 IF MID$(C$,I%,5%)="....." THEN J%=J%+1% : I%=I%+5% : GOTO 1910 1930 N%(J%)=VAL(MID$(C$,I%,3%)) : IF J%<3% J%=J%+1% : I%=I%+3% : GOTO 1910 1940 Y%=N%(0%) : D9%=N%(1%) : T%=N%(2%) : S9%=N%(3%) 1950 REM ___Printerutskrift___ 1960 IF NOT S%=16% GOTO 2280 1970 K%=8% : X$="" : GOSUB 3810 : IF W$="" D$="________" ELSE D$=W$ 1980 K%=2% : X$="" : GOSUB 3810 : IF W$="" GOTO 2280 1990 IF (ASC(W$) AND 223%)=83% OPEN F$(5%) ASFILE 1% ELSE OPEN F$(4%) ASFILE 1% 2000 D%=-1% : F%=0% : FOR J%=H9% TO H6% STEP 16% : X$="" : FOR I%=0% TO 10% 2010 X$=X$+CHR$(PEEK(J%+I%)) : IF I%=7% X$=X$+"." 2020 NEXT I% : GOSUB 4090 2030 IF D%=-1% GOSUB 2100 : D%=D9% 2040 IF NOT D9%=D% GOSUB 2140 : ; #1%,CHR$(10%,10%); : GOSUB 2100 : D%=D9% 2050 ; #1%,TAB(5%)X$+" "+N$(1%); 2060 ; #1%,N$(3%)N$(4%)TAB(37%)N$(5%)TAB(45%)N$(6%)"-"N$(7%)TAB(51%)"!" 2070 F%=F%+1% : NEXT J% 2080 GOSUB 2140 : ; #1%,CHR$(12%); : CLOSE 1% : POKE 65074%,0%,0% : GOTO 1740 2090 REM ___Rubrik___ 2100 IF F%>40% ; #1%,CHR$(12%); : F%=0% 2110 ; #1,TAB(5%)"BIBLIOTEK ("L$") Disk:"N$(2%)" Datum: "D$ 2120 RETURN 2130 REM ___Fot___ 2140 ; #1%,TAB(5%)"Namn,storlek,sp}r,sektor,fraktioner,S-R (skydd)" 2150 ; #1%,TAB(5%);G$(D9%)" sektorer lediga"; 2160 ; #1%," - "+D$(D9%)+" sektorer defekta" 2170 RETURN 2180 REM ___Scrollvillkor___ 2190 IF S%=8% 2240 2200 IF NOT X3%=23% THEN 1740 2210 IF H5%+16%>H6%-(23%-X1%)*16% THEN 1760 ELSE H5%=H5%+16% 2220 L%=L%+16% : IF [%>32% IF NOT PEEK(L%)=[% THEN 2210 2230 Z%=CALL(A%,X1%) : GOTO 1670 2240 IF H5%-16%32% U1%=0% : H5%=H9% : GOTO 1660 2260 Z%=CALL(A%+39%,X1%) : GOTO 1670 2270 REM ___Blockvisning___ 2280 IF NOT S%=2% AND NOT S%=22% GOTO 2760 2290 IF S%=22% GOTO 2310 2300 \%=-1% : K%=6% : GOSUB 3810 : IF (ASC(W$) AND 95%)=72% \%=0% 2310 POKE 64769%,D9% 2320 POKE 64512%,6%,112%,195%,15%,96% 2330 Z%=CALL(64512%,SWAP%(T%)+32%*S9%) 2340 IF PEEK(64789%) GOSUB 3680 : GOTO 1760 2350 A$="L{ser:" : B$="(_^)=Bryt" 2360 IF S%=22% ; CUR(X1%-1%,0%)"Visafil:"SPACE$(40%-PEEK(65012%)) : GOTO 2380 2370 ; CUR(X1%-1%,0%)" Fil Block Data:"SPACE$(39%-PEEK(65012%)) 2380 GOSUB 3790 : FOR J%=0% TO 254% STEP 2% 2390 IF PEEK(J%-1020%)=255% GOTO 2580 2400 T%=PEEK(J%-1020%) : Z%=PEEK(J%-1019%) 2410 S9%=(Z% AND 224%)/32% 2420 FOR I%=0% TO (Z% AND 31%) 2430 IF S9%=8% S9%=0% : T%=T%+1% 2440 Z%=CALL(24678%,SWAP%(T%)+32%*S9%) : A$="L{ser:"+NUM$(T%)+NUM$(S9%) 2450 IF S%=22% 2620 2460 GOSUB 3790 : K%=PEEK(62720%) 2470 K%=K%/16%+16%*(K%-K%/16%*16%) : GOSUB 4210 : ; RIGHT$(N$(0%),2%); 2480 K%=PEEK(62721%)+SWAP%(PEEK(62722%)) : GOSUB 4210 : ; " "N$(0%); 2490 IF \%=0% ; " "; 2500 FOR B%=62723% TO B%+252% : K%=PEEK(B%) 2510 IF \% GOSUB 4210 : ; RIGHT$(N$(0%),2%); : GOTO 2540 2520 ; " "MID$(H$,(K% AND 240%)/16%+1%,1%)MID$(H$,(K% AND 15%)+1%,1%); 2530 IF PEEK(65012%)>30% ; CHR$(13%,10%)TAB(13%); 2540 IF PEEK(65011%)=23% GET S$ : GOSUB 3790 : IF \%=0% ; TAB(13%); 2550 NEXT B% : GET S$ 2560 IF (INP(56%) AND 127%)=30% 2590 ELSE S9%=S9%+1% : NEXT I% 2570 NEXT J% 2580 IF S%=22% GET S$ 2590 A$=SPACE$(13%) : B$=SPACE$(13%) : GOSUB 3790 2600 ; CUR(PEEK(65011%)-1%,0%); : GOTO 1640 2610 REM ___Visa text___ 2620 IF I%=0% AND J%=0% 2560 2630 FOR B%=62723% TO B%+252% 2640 K%=PEEK(B%) 2650 IF K%=13% AND PEEK(65011%)>21% GET S$ : GOSUB 3790 : GOTO 2740 2660 IF K%=13% ; CHR$(13%,10%); : GOTO 2740 2670 IF K%=0% GOTO 2740 2680 IF K%=3% GOTO 2560 2690 IF K%=9% ; SPACE$(PEEK(B%+1%) AND 63%); : B%=B%+1% : GOTO 2720 2700 IF K%<32% OR K%>127% K%=63% 2710 ; CHR$(K%); : IF PEEK(65011%)=23% AND PEEK(65012%)=39% K%=13% : GOTO 2650 2720 IF PEEK(65011%)=23% AND PEEK(65012%)>30% AND K%=32% GET S$ : GOSUB 3790 2730 IF PEEK(65011%)=23% AND PEEK(65012%)=39% GET S$ : GOSUB 3790 2740 NEXT B% : GOTO 2560 2750 REM ___Eliminera___ 2760 IF NOT S%=0% 2850 ELSE IF U%=-1% 1760 2770 K%=7% : GOSUB 3810 : IF NOT (ASC(W$) AND 95%)=74% GOTO 1760 2780 ONERRORGOTO 3390 2790 KILL "DR"+NUM$(D9%)+":"+X$ 2800 [%=0% : FOR I%=H9% TO H6% STEP 16% : POKE C%,I%,SWAP%(I%) 2810 J%=(PEEK(I%+13%) AND 28%)/4% 2820 IF X$=LEFT$(C$,8%)+"."+MID$(C$,9%,3%) AND D9%=J% POKE I%,42% : GOTO 700 2830 NEXT I% : GOTO 700 2840 REM ___]terskapa___ 2850 IF NOT S%=18% 3210 2860 IF LEFT$(C$,5%)="DUMMY" OR LEFT$(C$,3%)="FEL" OR LEFT$(C$,1%)="*" 2880 2870 GOTO 1760 2880 K%=0% : GOSUB 3810 : IF W$="" GOTO 1760 ELSE Z%=INSTR(1%,W$,".") 2890 IF Z%=0% W$=W$+".XXX" 2900 IF LEN(W$)>12% W$=RIGHT$(W$,LEN(W$)-11%) 2910 X$=W$ 2920 K%=1% : GOSUB 3810 : IF W$="" GOTO 1760 2930 ONERRORGOTO 3390 2940 IF (ASC(W$) AND 95%)=67% N%=3% : K%=3% : GOSUB 3810 ELSE 2960 2950 PREPARE "CAS:"+X$ ASFILE 2% : GOTO 2980 2960 IF D9%=VAL(W$) 2920 2970 PREPARE "DR"+NUM$(VAL(W$))+":"+X$ ASFILE 2% 2980 POKE 64769%,D9% 2990 POKE 64000%,6%,80%,195%,15%,96% 3000 Z%=CALL(64000%,SWAP%(T%)+32%*S9%) 3010 IF PEEK(64789%) GOSUB 3680 : IF F%<0% 1760 3020 A$="L{ser:" : B$="(_^)=Bryt" : H%=-1% : M%=PEEK(64000%) 3030 FOR J%=0% TO 254% STEP 2% 3040 IF PEEK(J%-1532%)=255% GOTO 3180 3050 T%=PEEK(J%-1532%) : Z%=PEEK(J%-1531%) 3060 S9%=(Z% AND 224%)/32% 3070 FOR I%=0% TO (Z% AND 31%) 3080 IF J%=0% AND I%=0% 3150 3090 IF S9%=8% S9%=0% : T%=T%+1% 3100 Z%=CALL(24678%,SWAP%(T%)+32%*S9%) : A$="L{ser:"+NUM$(T%)+NUM$(S9%) 3110 IF PEEK(62720%)<>M% 3160 3120 POKE N%,62723%,SWAP%(62723%) : REM rikta Q0$ 3130 IF K%=3% Z%=CALL(A%+83%,2%) : GOTO 3150 3140 N$=Q0$ : Z%=CALL(28666%,2%) : Q0$=N$ : Z%=CALL(28670%,H%) 3150 S9%=S9%+1% : H%=H%+1% 3160 IF (INP(56%) AND 127%)=30% 3180 ELSE POKE 64769%,D9% : NEXT I% 3170 NEXT J% 3180 CLOSE 2% : POKE 65074%,0%,0% 3190 A$=SPACE$(13%) : GOTO 1760 3200 REM ___Starta bac/bas___ 3210 IF NOT S%=12% 3250 3220 ONERRORGOTO 3390 3230 CHAIN "DR"+NUM$(D9%)+":"+X$ 3240 REM ___Namnbyte___ 3250 IF NOT S%=14% 3410 ELSE IF U%=-1% OR LEFT$(X$,1%)="*" 1760 3260 K%=0% : GOSUB 3810 : IF W$="" GOTO 1760 ELSE Z%=INSTR(1%,W$,".") 3270 IF Z%>9% 3260 3280 IF Z%=0% W$=LEFT$(W$+SPACE$(7%),8%)+RIGHT$(X$,9%) : GOTO 3300 3290 W$=LEFT$(LEFT$(W$,Z%-1%)+SPACE$(9%-Z%)+RIGHT$(W$,Z%)+SPACE$(3%),Z%+3%) 3300 ONERRORGOTO 3390 3310 NAME "DR"+NUM$(D9%)+":"+X$ AS W$ 3320 FOR I%=H9% TO H6% STEP 16% : POKE C%,I%,SWAP%(I%) 3330 IF NOT LEFT$(X$,8%)+RIGHT$(X$,10%)=LEFT$(C$,11%) NEXT I% : STOP 3340 X$=LEFT$(W$,8%)+RIGHT$(W$,10%) 3350 FOR J%=0% TO 10% : S$=MID$(X$,1%+J%,1%) 3360 IF ASC(S$)>95% S$=CHR$(ASC(S$) AND 95%) 3370 POKE I%+J%,ASC(S$) : NEXT J% 3380 GOTO 700 3390 GOSUB 3680 : GOTO 1760 3400 REM ___Kopiering___ 3410 IF NOT S%=25% 1760 ELSE IF U%=-1% OR LEFT$(X$,1%)="*" 1760 3420 K%=1% : GOSUB 3810 : IF W$="" GOTO 1760 3430 ONERRORGOTO 3390 3440 H1%=PEEK(65056%)+SWAP%(PEEK(65057%)) : POKE 65057,SWAP%(H1%)+8% 3450 OPEN "DR"+NUM$(D9%)+":"+X$ ASFILE 1% 3460 ONERRORGOTO 3660 3470 IF (ASC(W$) AND 95%)=67% K%=3% : GOSUB 3810 ELSE 3500 3480 A$="Block: 1" : B$="(_^)=Bryt" 3490 PREPARE "CAS:"+X$ ASFILE 2% : GOTO 3520 3500 IF D9%=VAL(W$) CLOSE 1% : POKE 65074%,0%,0% : GOTO 3420 3510 PREPARE "DR"+NUM$(VAL(W$))+":"+X$ ASFILE 2% 3520 H4%=-1% : H3%=-1% 3530 ONERRORGOTO 3570 : POKE 65408%,H1%,SWAP%(H1%) 3540 FOR I%=0% TO 7% : H4%=H4%+1% 3550 Z%=CALL(28666%,1%)+CALL(28668%,H4%)+CALL(A%+114%,0%) 3560 NEXT I% 3570 ONERRORGOTO 3660 : POKE 65408%,H1%,SWAP%(H1%) 3580 IF I%=0% 3630 ELSE FOR J%=0% TO I%-1% : H3%=H3%+1% 3590 IF K%=3% A$="Block:"+NUM$(H3%+2%) ELSE 3610 3600 Z%=CALL(A%+114%,-1%)+CALL(A%+83%,2%) : GOTO 3620 3610 Z%=CALL(28666%,2%)+CALL(A%+114%,-1%)+CALL(28670%,H3%) 3620 NEXT J% : IF J%=8% 3530 3630 CLOSE 1% : CLOSE 2% : POKE 65074%,0%,0% : REM d|da filpekare 3640 POKE 65056%,H1%,SWAP%(H1%) : IF NOT K%=3% GOTO 3770 3650 A$=SPACE$(13%) : GOTO 1760 3660 GOSUB 3680 : CLOSE 1% : CLOSE 2% : POKE 65074%,0%,0% : GOTO 1760 3670 REM ___Analysblock f|r felkod i BIB___ 3680 B$="" : F%=PEEK(64789%) 3690 IF F% AND 128% IF NOT T%=2% B$="Luckan |ppen" : ; CHR$(7%); 3700 IF F% AND 64% B$="Skrivskydd" 3710 IF F% AND 39% B$="Diskfel"+NUM$(F%) 3720 IF F% AND 16% B$="D}lig disk" 3730 IF F% AND 8% B$="Checksummafel" 3740 FOR I%=0% TO LEN(B$)-1% : POKE B1%+I%,PEEK(B1%+I%)+128% : NEXT I% 3750 F%=SWAP%(F%) : RETURN 3760 REM ___]ters|k samma nyckel___ 3770 POKE 65056%,H9%,SWAP%(H9%) : ; CUR(X1%-1%,0%); : GOTO 1010 3780 REM ___Radering___ 3790 ; CUR(X1%,0%)SPACE$((23%-X1%+1%)*40%-1%)CUR(X1%,0%); : RETURN 3800 REM ___Fr}gef|nster___ 3810 Z%=PEEK(65011%)+SWAP%(PEEK(65012%)) 3820 A$=F$(K%)+":" : ; CUR(0%,27%); 3830 POKE X%,PEEK(X%)+128% 3840 INPUTLINE W$ : W$=LEFT$(W$,LEN(W$)-2%) 3850 A$=SPACE$(13%) : B$=SPACE$(13%) 3860 POKE 65011%,Z%,SWAP%(Z%) : RETURN 3870 REM ___USCROLL 39 byte___ 3880 DATA 235,125,254,23,208,229,203,37,1,116,3,9,94 3890 DATA 35,86,35,126,35,102,111,229,1,40,0,237,176 3900 DATA 225,6,40,62,32,119,35,16,252,225,35,24,218 3910 REM ___NSCROLL 44 byte___ 3920 DATA 213,33,23,0,209,123,189,208,213,229,203,37,1,116,3 3930 DATA 3,9,86,43,94,43,126,43,110,103,229,1,40,0 3940 DATA 237,176,225,6,40,62,32,119,35,16,252,225,43 3950 DATA 24,216 3960 REM ___CASBLOCK 31 byte___ 3970 DATA 123,221,42,41,254,221,110,2,221,102,3,30,6,25,94,35,102,107 3980 DATA 205,1,9,221,117,8,221,116,9,205,156,8,201 3990 REM ___QFLYTT 31 byte___ 4000 DATA 123,221,42,41,254,221,102,3,221,110,2,17,6,0 4010 DATA 25,94,35,102,107,237,91,128,255,1,0,1,254,0 4020 DATA 40,1,235,237,176,254,0,40,1,235,237,83,128,255,201 4030 REM ---------------SUBRUTINER-------------------- 4040 REM ___L{ge str{ng___ 4050 R%=PEEK(65065%)+SWAP%(PEEK(65066%)) : REM VROT 4060 FOR I%=1% TO J% : R%=PEEK(R%+2%)+SWAP%(PEEK(R%+3%)) 4070 NEXT I% : R%=R%+6% : Z%=PEEK(R%)+SWAP%(PEEK(R%+1%)) : RETURN 4080 REM ___Tillordningar___ 4090 X%=PEEK(J%+I%+3%)+SWAP%(PEEK(J%+I%+4%)) : REM Storlek 4100 F9%=PEEK(J%+I%+2%) : IF X%=0% N$(1%)="....." : GOTO 4120 4110 K%=X% : GOSUB 4210 : N$(1%)=N$(0%) 4120 V%=PEEK(J%+I%) : IF V%=0% N$(5%)="....." : GOTO 4140 4130 K%=V% : GOSUB 4210 : N$(5%)=N$(0%) 4140 T%=PEEK(J%+I%+1%) : K%=T% : GOSUB 4210 : N$(3%)=N$(0%) 4150 W%=F9% AND 1% : IF W%=0% N$(7%)="-" ELSE N$(7%)="R" 4160 E%=(F9% AND 2%)/2% : IF E%=0% N$(6%)="-" ELSE N$(6%)="S" 4170 D9%=(F9% AND 28%)/4% : K%=D9% : GOSUB 4210 : N$(2%)=W$ 4180 S9%=(F9% AND 224%)/32% : K%=S9% : GOSUB 4210 : N$(4%)=N$(0%) 4190 RETURN 4200 REM ___Sifferv{rden till l{s- och skrivbar form___ 4210 W$=RIGHT$(NUM$(K%),2%) : N$(0%)=RIGHT$(SPACE$(4%)+W$,LEN(W$)) 4220 RETURN