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