1 REM Ins{nt av 350 10 REM  20 REM  DISKEDIT.BAC Ver 1.0  30 REM  (c) 16/12-1981  40 REM  Roland Eiworth j : r medl.350  50 REM  Margretelundsbacken 27  60 REM  183 42 T[BY Tel.0762-13854  70 REM  80 DIM A$=120% 90 H$='0123456789ABCDEF' 100 REM Snabbflyttning av tecken i BUF. 110 POKE -122%,237%,75%,128%,255%,237%,91%,130%,255%,42%,132%,255%,237%,176%,201% 120 ; 'Vill du ha hj{lp (Nej)'; : INPUT A$ 130 IF A$<>'' AND A$<>'N' AND A$<>'n' THEN GOSUB 150 140 GOTO 330 150 ; CHR$(12%)'Kommandon {r:' 160 ; : ; 'HJ{lp skriver denna text.' : ; 'L[s l{ser en sektor fr}n skivan till' 170 ; TAB(7)'en buffert.' 180 ; 'Fram}t l{ser n{sta sektor.' 190 ; 'Bak}t l{ser f|reg}ende sektor.' 200 ; 'DUmpa dumpar bufferten du arbetar med.' : ; 'DElete tar bort ett antal tecken fr}n' : ; TAB(7)'bufferten.' 210 ; 'INsert skjuter in ett antal tecken i' : ; TAB(7)'bufferten.' : ; 'SKriv skriver bufferten till skivan.' 220 ; : ; ' Kommandona kan f|rkortas som markerat. F|r att sektorn skall {ndras p} skivan,m}ste'; 230 ; ' du ge kommandot SKriv efter dina {ndringar.' : ; : ; ' TRYCK!'; : GET A$ : ; CHR$(12%) 240 ; ' Vid anv{ndning av DElete fylls slutet av bufferten med CHR$(32%). Detta kan' 250 ; '{ndras p} rad 810.' : ; ' Vid anv{ndning av INsert, f|rsvinner' : ; 'lika m}nga tecken i slutet av bufferten' 260 ; 'som du skjuter in.' 270 ; ' Om du har l{st in en sektor till' : ; 'bufferten och vill skriva bufferten p}' 280 ; 'ett annat st{lle,beh|ver du bara trycka n}gra g}nger vid fr}gan' : ; '"Kommando?". Programmet '; 290 ; 'fr}gar d} efter' : ; 'drive, sp}r och sektor. Vid n{sta SKriv-kommando kommer bufferten att hamna p}' 300 ; 'senaste angivna st{lle.' : ; ' Allts}, vid varje tryck p} ' : ; 'kommer man n{rmare utg}ngspunkten i' 310 ; 'programmet.' : ; : ; ' Ha det s} roligt!' : ; 320 RETURN 330 GOSUB 420 340 GOSUB 540 350 REM KOMMANDO 360 ; 'Kommando'; : INPUT A$ : A$=A$+'A' : IF LEN(A$)<2% THEN GOTO 390 370 A$=CHR$(ASC(LEFT$(A$,1%)) AND 223%)+CHR$(ASC(RIGHT$(A$,2%)) AND 223%) 380 ON (INSTR(2%,'HJL[SKDUDEINFABA',A$)+2%)/2% GOSUB 150,540,580,610,770,850,480,510 : GOTO 360 390 GOSUB 450 : GOTO 360 400 ; : ; CHR$(7%)'P} }terseende!' : END 410 REM V[LJ SEKTOR 420 ONERRORGOTO 400 : ; 'Vilken drive'TAB(14%); : INPUT D% : ONERRORGOTO 0 430 POKE -767%,D% 440 ONERRORGOTO 420 : ; 'Vilket sp}r'TAB(14%); : INPUT T% : ONERRORGOTO 0 450 ONERRORGOTO 440 : ; 'Vilken sektor'TAB(14%); : INPUT S% : ONERRORGOTO 0 460 RETURN 470 REM FRAM]TBL[DDRING 480 S%=S%+1% : IF S%>7% THEN S%=0% : T%=T%+1% : IF T%>39% THEN T%=0% 490 GOTO 540 500 REM BAK]TBL[DDRING 510 S%=S%-1% : IF S%<0% THEN S%=7% : T%=T%-1% : IF T%<0% THEN T%=39% 520 GOTO 540 530 REM L[S SEKTOR 540 Z%=CALL(24678%,SWAP%(T%)+S%*32%) 550 GOSUB 610 560 RETURN 570 REM SKRIV SEKTOR 580 Z%=CALL(24675%,SWAP%(T%)+S%*32%) 590 RETURN 600 REM DUMPA 610 ; CHR$(12%)TAB(9%)'Sp}r'T%', Sektor'S% : ; 'BYTE'TAB(12%)'HEX-display'TAB(32%)'ASCII' 620 FOR J%=62720% TO 62968% STEP 8% 630 ; J%-62720%TAB(4%)': '; 640 FOR I%=0% TO 7% 650 H1%=PEEK(I%+J%)/16% : H2%=PEEK(I%+J%)-H1%*16% 660 H1$=MID$(H$,H1%+1%,1%)+MID$(H$,H2%+1%,1%) 670 ; H1$+' '; 680 NEXT I% : ; ' '; 690 FOR X%=J% TO J%+7% 700 IF PEEK(X%)<32% OR PEEK(X%)>127% ; "."; ELSE ; CHR$(PEEK(X%)); 710 NEXT X% 720 IF J%>62872% THEN ; : GET C$ : IF C$=CHR$(13%) THEN 750 730 IF J%=62936% THEN OUT 6%,0%,6%,131% 740 NEXT J% 750 RETURN 760 REM DELETE 770 ONERRORGOTO 830 : ; 'Fr.o.m. vilken byte'; : INPUT Y% : ONERRORGOTO 0 780 ; 'Hur m}nga tecken'; : INPUT L% 790 POKE 65408%,256%-L%-Y%,0%,62720%+Y%,SWAP%(62720%+Y%),62720%+Y%+L%,SWAP%(62720%+Y%+L%) 800 POKE -110%,176% : Z%=CALL(65414%) 810 FOR X%=62975% TO 62976%-L% STEP -1% 820 POKE X%,32% : NEXT X% 830 RETURN 840 REM INSERT 850 ; CUR(23%,0%)'Ascii,Hex eller Decimalt'; : INPUT A$ : A$=CHR$(ASC(A$) AND 223%) 860 A%=INSTR(1%,'AHD',A$) : IF A%=0% THEN 1220 870 ON A% GOTO 890,930,1050 880 REM Ascii input 890 E%=1% : ; 'Skriv en str{ng:'; 900 INPUTLINE A$ : A$=LEFT$(A$,LEN(A$)-2%) : IF A$='' ; 910 GOTO 1140 920 REM Hex input 930 E%=2% : ; 'Skriv en HEX-str{ng:'; 940 INPUTLINE A$ : IF LEN(A$)<4% THEN A$='' : ; : GOTO 1030 950 FOR X%=1% TO LEN(A$) 960 A%=ASC(A$) : A$=RIGHT$(A$,2%) 970 IF (A%>47% AND A%<58%) OR (A%>64% AND A%<71%) THEN B$=B$+CHR$(A%) 980 NEXT X% : A$='' 990 FOR X%=1% TO LEN(B$)/2%*2% STEP 2% 1000 IF LEN(B$)<2% THEN 1030 1010 A$=A$+CHR$((INSTR(1%,H$,MID$(B$,X%,1%))-1%)*16%+INSTR(1%,H$,MID$(B$,X%+1%,1%))-1%) 1020 NEXT X% : B$='' 1030 GOTO 1140 1040 REM Decimal input 1050 E%=3% : A$='' : C$='' : ; 'Skriv decimala tal med "," emellan:' 1060 INPUTLINE D$ : D$=LEFT$(D$,LEN(D$)-1%) 1070 FOR I%=1% TO LEN(D$) 1080 B$=MID$(D$,I%,1%) 1090 IF ASC(B$)<48% OR ASC(B$)>57% THEN GOSUB 1110 ELSE C$=C$+B$ 1100 NEXT I% : GOTO 1140 1110 IF C$='' 1120 ELSE A$=A$+CHR$(VAL(C$)) : B$='' : C$='' 1120 RETURN 1130 REM INSERT----- 1140 IF A$='' GOTO 850 1150 L%=LEN(A$) 1160 ONERRORGOTO 1230 : ; : ; 'Fr.o.m. vilken byte'; : INPUT Y% : ONERRORGOTO 0 1170 POKE 65408%,256%-L%-Y%,0%,62975%,SWAP%(62975%),62975%-L%,SWAP%(62975%-L%) 1180 POKE -110%,184% : Z%=CALL(65414%) 1190 FOR X%=Y% TO L%+Y%-1% 1200 POKE 62720%+X%,ASC(MID$(A$,X%-Y%+1%,1%)) 1210 NEXT X% 1220 RETURN 1230 ON E% GOTO 890,930,1050