1 REM ...Egils programmeri 5 REM ... list SKIVSERV.BAS fr}n Egils programmeri. 6 NOTRACE 10 REM ********************************* 20 REM * Med detta program kan man l{sa* 30 REM * och skriva tillbaka p} val- * 40 REM * fritt sp}r och sektor. * 50 REM * [ = {ndra byte S = skriv * 55 REM * - = bryta listningen * 60 REM ********************************* 62 DIM D$=128% 70 ; CHR$(12);' SKIVSERV.BAS ver 1.0' : ; 80 ; ' ABC-bladet 81 nr 3' 82 ; 'Automatiskt en serie v{rden = A Enskilt sp}r och sektor = E Kopiera 0 -> 1 = K' 83 ; 'R{dda sektor(er)=R S|ka efter file =S Sudda en skiva = X' 84 GET A$ : ON INSTR(1,'AaKkXxRrEeSs',A$)+1 GOTO 82,86,86,88,88,89,89,85,85,90,90,87,87 85 S%=4% : GOTO 350 : REM ... l{ser sektor som skrivae till annan skiva 86 S%=1% : GOTO 90 : REM ... automatisk serie 87 S%=5% : GOTO 90 : REM ... s|ker file med given nyckel 88 S%=2% : GOTO 500 : REM ... automatisk kopiering 89 S%=3% : GOTO 800 : REM ...automatisk suddning av skivans bibliotek 90 ONERRORGOTO 90 : ; 'Vilken drive vill du l{sa ur (0/1)'; : INPUT A1% 92 IF NOT (A1%=0% OR A1%=1%) GOTO 90 100 POKE -767%,A1% 105 IF S%=5% ; 'Vilket sp}r {r det f|rsta du skall l{sa'; : INPUT A% : GOTO 120 110 ONERRORGOTO 110 : ; 'Vilket sp}r vill du l{sa (0/39)'; : INPUT A% 120 IF NOT (A%>=0% AND A%<=39%) GOTO 110 125 IF S%=5% ; 'Vilken sektor skall du starta p}?'; : INPUT B% : GOTO 140 130 ; 'Vilken sektor vill du l{sa (0/7)'; : INPUT B% 140 IF NOT (B%>=0% AND B%<=7%) GOTO 130 145 IF S%=5% GOTO 650 : REM ... s|ka efter file 150 ; CHR$(12);'S} h{r ser sp}r'A%' sektor'B%' ut' 160 ; '--------------------------------'; 170 IF A%>=10% THEN ; '-' ELSE ; 180 ; 190 Z%=CALL(24678%,A%*256%+B%*32%) 195 IF S%=0% GOTO 208 196 IF S%=4% GOTO 400 200 FOR I%=62720% TO 62975% 203 IF S%=1% ; CHR$(PEEK(I%)); : NEXT I% : GET Z$ : GOTO 290 208 FOR I%=62720% TO 62975% 210 ; 'Byte'I%-62720%; 220 ; TAB(9%)'=';PEEK(I%); 230 ; TAB(15%)'ASCII=';CHR$(PEEK(I%)) 240 GET A$ : IF A$='S' THEN 250 ELSE IF A$='[' THEN 280 ELSE IF A$='-' THEN 90 ELSE NEXT I% : GOTO 270 250 ONERRORGOTO 250 : ; 'Vad vill du skriva'; : INPUT D% : POKE I%,D% : I%=I%+1% 260 Z%=CALL(24675%,A%*256%+B%*32%) : GOTO 210 270 C%=INP(56%)-128% : IF C%=ASC('-') END ELSE 90 280 ; 'Ange nytt byte'; : INPUT I% : I%=I%+62720% : GOTO 210 290 IF B%=7% THEN B%=0% : GOTO 300 ELSE B%=B%+1% : ; : ; 'Sp}r'A%' sektor'B% : ; : GOTO 310 300 IF A%<39% THEN A%=A%+1% ELSE ; : ; 'slut p} sp}r' : END 310 C%=INP(56%)-128% : IF C%=ASC('-') END 320 IF S%=4% POKE -767%,A1% 330 GOTO 190 350 REM ...V{lja mottagande filnamn F$ 360 ; : ; 'Namn p} mottagande fil nnnnnnnn.eee' : INPUT F$ : PREPARE F$ ASFILE 1 : ONERRORGOTO 370 : GOTO 90 370 CLOSE 1 : ; : ; F$' {r st{ngd' : END 400 REM ...skriva sektor till ny file F$ 410 ONERRORGOTO 370 : D$='' 411 FOR I%=62723% TO 62974% 420 E%=PEEK(I%) : C$=CHR$(E%) : IF E%=13% GOTO 440 425 IF LEN(D$)>127% GOTO 370 430 D$=D$+C$ : GOTO 450 440 ; D$ : PRINT #1,D$ : D$='' 450 NEXT I% 460 ; #1,D$;'@?@' : D$='' 470 ; : ; 'N=n{sta sektor, V=v{lja sektor, S=sluta' 480 GET A$ : ON INSTR(1,'NnVvSs',A$)+1 GOTO 480,290,290,100,100,370,370 500 REM : : : Kopiera fr}n DR0 : till DR1 : 510 ; CHR$(12) : ; : ; 'NU KOMMER DISKETTEN I DR1: ATT HELT F\R-ST\RAS AV ATT HELA DR0: FYLLAR UPP DEN !' 520 ; : ; 'Svara J om du vill detta skall h{nda ' : GET A$ : IF A$<>'J' ; 'Jas}. ..Tryck -' : GET A$ : GOTO 70 530 ; : ; 'Din sista chans --- se ordentligt efter vad du har i driverna innan du trycker -'; 535 GET A$ : IF A$<>'-' GOTO 530 540 ; CUR(22%,1%)'!'TAB(32%)'!' 550 FOR T%=0% TO 319% 560 ; CUR(23%,INT(T%/10%+1%))'-'CUR(22%,10%)T%; 570 POKE -767%,0% : Z%=CALL(24678%,T%*32%) 580 POKE -767%,1% : Z%=CALL(24675%,T%*32%) 590 NEXT T% 600 ; : ; : ; 'Slut p} disketten. Kopierad'T%' sektorer' : STOP 650 REM ... S|ker men skriver inte p} skiva 655 ; 'Vilken nyckel (f|rsta satsen i filen)' : INPUT S$ 656 ; '>>>>>>>>>>>>>> Avsluta med - <<<<<<<<<<<'; 658 S1%=A%*256%+B%*32% 660 Z%=CALL(24678%,S1%) : D$='' 670 FOR I%=62723% TO 62974% : E%=PEEK(I%) : C$=CHR$(E%) : IF E%=13% GOTO 700 680 D$=D$+C$ : IF LEN(D$)>127% GOTO 710 690 GOTO 720 700 IF INSTR(1%,D$,S$)=0 GOTO 710 702 S2%=S1%/32% : S3%=S2%/8% : S3=S2%/8 : S4%=(S3-S3%)*8% : ; 'Sp}r'S3%' Sekt'S4%' 'D$ 710 I%=62974% : GOTO 720 720 NEXT I% 725 C%=INP(56%)-128% : IF C%=ASC('-') ; CHR$(13) : END 730 S1%=S1%+32% : IF S1%=10240% 740 ELSE 660 740 S2%=(S1%-32%)/32% : S3%=S2%/8% : S3=S2%/8 : S4%=(S3-S3%)*8% 750 ; 'Det var sp}r'S3%' sektor'S4%' RETURN' : GET C$ : GOTO 80 800 REM ... Sudda bibliotekssp}ret 810 ; CHR$(12%);CUR(10%,0%)'Nu kommer du att f|rst|ra inneh}llet p} en skiva' : ; : ; '[r du absolut s{ker ' 820 GET A$ : IF A$='J' OR A$='j' GOTO 830 ELSE ; 'Jas} - inte det' : END 830 ; : ; 'Vilken drive (0/1) '; : GET A$ 840 A%=VAL(A$) : POKE -767%,A% 850 ; : ; 'Det blir drive ';A% 860 ; : ; 'Sista chans. Tryck - f|r att fors{tta' : GET A$ : IF A$<>'-' END 870 REM ... fixa tom bitkarta ... 880 Z%=CALL(24678%,32%*7%) 890 Z%=CALL(24675%,32%*6%) 900 FOR I%=62720% TO 62975% 910 IF I%-62720%>15% POKE I%,255% ELSE POKE I%,0% 920 ; I%-62720%; : NEXT I% 930 REM ... sudda biblioteksblocken ... 940 FOR I%=0% TO 7% : Z%=CALL(24675%,256%+32%*I%)+CALL(24675%,512%+32%*I%) : NEXT I% 950 IF PEEK(64789%) ; 'Ingen skiva i drive'A% ELSE ; : ; 'OK! utf|rt!!!' 960 END