2 ! +++++++++++++++++++++++++++++++++++ 3 ! Program .... L[SDISK.800 4 ! Utg}va 1.1 1983-09-04 5 ! av (c) Bo Kullmar 8 ! Ins{nt av Bo Kullmar, 1789. 9 ! F|r disk ABC830, m}ste {ndra f|r att k|ras under superdoset. 10 ! +++++++++++++++++++++++++++++++++++ 20 ! Programmet l{ser en disk 21 ! Kommando se H f|r Help 60 FLOAT 80 EXTEND 1000 ; CHR$(12%);'*** L[S DISK ***' : ; : ; 1010 IF Flagga%=9% ; 'Du l{ste sp}r' Aa% 'sektor' Bb% 'p} drive' Drive% '!' 1020 Varv%=0% 1030 ; : ; 1040 INPUT 'Vilken drive? (0/1) 'Drive$; 1050 Ra%=PEEK(-173%) 1060 IF Drive$<>'1' AND Drive$<>'0' THEN Drive$='0' : ; CUR(Ra%,20%) Drive$ ' ' 1070 Drive%=VAL(Drive$) 1080 ; 1090 POKE -767%,Drive% 1100 INPUT 'Vilket sp}r? (0-39) 'A% 1110 ; 1120 Aa%=A% 1130 IF A%>39% THEN 1100 1140 INPUT 'Vilken sektor? (0-15) 'B% 1150 Bb%=B% 1160 IF B%>7% THEN A%=A%+40% : B%=B%-8% 1170 IF B%>7% THEN 1140 1180 Under$=STRING$(26%,61%) 1190 ; CHR$(12%);'Sp}r' Aa% ' Sektor' Bb% 'Drive' Drive% 1200 ; Under$ 1210 ; CUR(2%,0%) 1220 Z%=CALL(24678%,A%*256%+B%*32%) 1230 FOR I%=62720% TO 62975% 1240 ; 'BYTE' I%-62720%; 1250 ; TAB(10%) '=';PEEK(I%); 1260 Z%=FNAscii% 1270 Varv%=Varv%+1% 1280 Pos%=PEEK(65363%) 1290 WHILE Pos%>22% 1300 ; CUR(0%,0%) 'Sp}r' Aa% ' Sektor' Bb% 'Drive' Drive% ' ' 1310 ; Under$ 1320 ; CUR(2%,0%) 1330 GOTO 1350 1340 WEND 1350 ; CUR(Pos%,0%); 1360 GET A$ 1370 Z%=FNVal% 1380 IF INP(34%)=69% OR INP(34%)=101% THEN 1400 1390 NEXT I% 1400 ; : ; 1410 Flagga%=9% 1420 ; 'Detta var sp}r' Aa% 'sektor' Bb% 'p} drive' Drive% '!' 1430 ; 'Vil du l{sa en ny sektor? (J/N) '; 1440 GET \$ 1450 IF \$='J' OR \$='j' THEN 1000 1460 IF \$='N' OR \$='n' THEN 1480 ELSE 1400 1470 ; 1480 END 2000 DEF FNAscii% 2010 V{%=PEEK(I%) 2020 WHILE V{%>31% AND V{%<128% 2030 ; TAB(16%) 'ASCII = ';CHR$(PEEK(I%)) 2040 RETURN 0% 2050 WEND 2060 ; TAB(16%) FNDecbin{r$(V{%) 2070 RETURN 0% 2080 FNEND 2090 DEF FNDecbin{r$(Dec%) LOCAL Svar$=1,V{rde% 2100 Svaret$='' 2110 Svar$='' 2120 C%=128% 2130 FOR Bit%=7% TO 0% STEP -1% 2140 IF Dec% AND C% THEN Svar%(Bit%)=1% ELSE Svar%(Bit%)=0% 2150 C%=C%/2% 2160 Svar$=NUM$(Svar%(Bit%)) 2170 Svaret$=Svaret$+Svar$ 2180 NEXT Bit% 2190 RETURN Svaret$ 2200 FNEND 2220 DEF FNFilnr%(A%) 2230 Filnr%=(A% AND 240%)/16%+(A% AND 15%)*15% 2240 RETURN Filnr% 2250 FNEND 2260 DEF FNSekt$(A%) LOCAL Sek%,Ant%,S$=1,A$=2 2270 Sek%=(A% AND 224%)/32% 2280 Ant%=(A% AND 31%)+1% 2290 S$=NUM$(Sek%) 2300 A$=NUM$(Ant%) 2310 Adress$='Sek '+S$+' Ant '+A$ 2320 RETURN Adress$ 2330 FNEND 2340 DEF FNSkriv% LOCAL D% 2350 ; 'Ok att skriva p} skivan? (J/N) '; 2360 GET \$ 2370 IF \$='N' OR \$='n' THEN ; : RETURN 0% 2380 IF \$='J' OR \$='j' THEN 2390 ELSE ; : ; : GOTO 2350 2390 ; 2400 INPUT 'Vad vill du skriva? 'D% 2410 POKE I%,D% 2420 Z%=CALL(24675%,A%*256%+B%*32%) 2430 RETURN 0% 2440 FNEND 2450 DEF FNAdress% 2460 INPUT 'Ange ny byte! 'I% 2470 I%=I%+62719% 2480 RETURN 0% 2490 FNEND 2500 DEF FNVal% 2510 IF A$='H' OR A$='h' THEN Z%=FNHelp% : GET A$ : RETURN 0% 2520 IF A$='S' OR A$='s' THEN Z%=FNSkriv% 2530 IF A$='A' OR A$='a' THEN Z%=FNAdress% 2540 IF A$='B' OR A$='b' THEN ; CUR(Pos%-1%,28%) FNDecbin{r$(V{%) : GET A$ : RETURN 0% 2550 IF A$='F' OR A$='f' THEN ; CUR(Pos%-1%,28%) 'Fil nr:' FNFilnr%(PEEK(I%)) : GET A$ : RETURN 0% 2560 IF A$='L' OR A$='l' THEN ; CUR(Pos%-1%,28%) FNSekt$(PEEK(I%)) : GET A$ : RETURN 0% 2570 RETURN 0% 2580 FNEND 2590 DEF FNHelp% 2600 ; 'Kommando:' 2610 ; 'A Hopp till ny byte/adress' 2620 ; 'B V{rdet anges bin{rt' 2630 ; 'F Filnr anges decimalt, end byte0!' 2640 ; 'L Sektnr och ant sekt, end header' 2650 ; 'S Skriv i decimal form' 2660 ; 'E End / Slut' 2670 RETURN 0% 2680 FNEND