10 REM +-------------------------+ 20 REM ! ** L [ S D I S K ** ! 30 REM ! ------------- ! 40 REM ! P R O G R A M A V ! 50 REM ! THOMAS BERGSTAM ! 60 REM ! 81 02 16 ! 70 REM +-------------------------+ 80 DIM W$=256% 90 DIM H$(16%)=1% 100 DIM C%(17%) 110 X$="01PDHAE" 120 FOR N%=0% TO 15% : READ H$(N%) 130 NEXT N% 140 A%=PEEK(65065%)+SWAP%(PEEK(65066%)) 150 POKE A%+6%,62720%,SWAP%(62720%) 160 ; CHR$(12%);" L[SDISK" 170 GOSUB 1470 180 ; " 0.....DRIVE 0" 190 ; " 1.....DRIVE 1" 200 ; " H.....HEX" 210 ; " D.....DECIMALT" 220 ; " A.....ASCII" 230 ; " P.....PRINTER" 240 ; " E.....END" 250 ; CUR(18%,22%)"OPTION <0D> "; : INPUT F$ 260 IF F$="" F$="0" 270 L=INSTR(1%,X$,F$) 280 IF L=0% THEN 300 290 IF L<4% THEN F$=F$+"D" 300 D1%=FNO%("1") 310 H%=FNO%("H") 320 D%=FNO%("D") 330 A%=FNO%("A") 340 L%=FNO%("P") 350 E%=FNO%("E") 360 IF L% OPEN "PR:" ASFILE 1% : T9%=9% ELSE T9%=0% : CLOSE 1% 370 IF E% THEN ; CHR$(12%); : END 380 T%=0% : S%=-1% 390 ; CHR$(12%); 400 ; "DRIVE:";RIGHT$(NUM$(D1%),2%)" TRACK: SECTOR:" 410 ; CUR(0%,14%); : GOSUB 1420 420 ONERRORGOTO 410 430 IF S$="" ; CUR(0%,14%)RIGHT$(NUM$(T%),2%) : GOTO 450 440 T%=VAL(S$) : S%=-1% 450 ; CUR(0%,24%); : GOSUB 1420 460 ONERRORGOTO 450 470 IF S$="" S%=S%+1% : ; CUR(0%,24%)RIGHT$(NUM$(S%),2%); : GOTO 500 480 IF VAL(S$)>7% ; CUR(0%,24%)SPACE$(LEN(S$)) : GOTO 450 490 S%=VAL(S$) 500 IF L% ; #L% : ; #L%TAB(T9%)"DRIVE:"NUM$(D1%); 510 IF L% ; #L%", TRACK:"NUM$(T%)", SECTOR:"NUM$(S%); 520 IF L% ; CUR(5%,10%)'DU KAN STOPPA PRINTERN' 530 IF L% ; CUR(6%,10%)'OCH ]TERG] TILL MENYN' 540 IF L% ; CUR(7%,10%)'GENOM ATT TRYCKA "M"' 550 IF S%>6% THEN T%=T%+1% : S%=-1% 560 POKE 64769%,D1% : W$=STRING$(256%,0%) 570 Z%=CALL(24678%,SWAP%(T%)+32%*S%) 580 IF PEEK(64789%)=2% ; CUR(1%,18%)" CMD NOT ACC "CUR(0%,0%); 590 IF PEEK(64789%)=4% ; CUR(1%,20%)" DATA LOST "CUR(0%,0%); 600 IF PEEK(64789%)=8% ; CUR(1%,20%)" CRC ERROR "CUR(0%,0%); 610 IF PEEK(64789%)=16% ; CUR(1%,21%)" AM ERROR "CUR(0%,0%); 620 IF PEEK(64789%)=32% ; CUR(1%,18%)" WRITE FAULT "CUR(0%,0%); 630 IF PEEK(64789%)=64% ; CUR(1%,20%)" PROTECTED "CUR(0%,0%); 640 IF PEEK(64789%)=128% ; CUR(1%,16%)" DRIVE NOT RDY "CUR(0%,0%); 650 K%=0% : K1%=0% 660 IF (H% OR D%) GOSUB 690 : GOSUB 1370 : GOTO 390 670 IF A% GOSUB 1230 : GOSUB 1370 : GOTO 390 680 GOTO 160 690 REM ---UPPSPALTNING------- 700 FOR I%=1% TO 256% 710 C%=ASC(MID$(W$,I%,1%)) 720 IF (H% OR D%) AND I%=1% IF T%>2% GOSUB 790 ELSE ; #L% : ; #L% 730 ; #L%TAB(T9%); 740 IF H% GOSUB 840 750 IF D% GOSUB 1080 760 NEXT I% 770 ; #L% 780 RETURN 790 REM ---FILNUMMER---------- 800 F1%=C%/16%+16%*(C%-C%/16%*16%) 810 ; CUR(0%,27%)"FILE:"RIGHT$(NUM$(F1%),2%) 820 IF L% ; #L%", FILE:"NUM$(F1%) : ; #L% 830 ; : RETURN 840 REM ---HEX---------------- 850 IF L% THEN T8%=15% ELSE T8%=7% 860 B%=C% AND 255% 870 V$=H$(B%/16%)+H$(B%-16%*(B%/16%)) 880 ; #L%,V$" "; 890 C%(K%)=C% 900 K%=K%+1% 910 IF K%>T8% GOSUB 930 920 RETURN 930 REM ---PRINT ASCII-------- 940 IF H% IF L% T7%=33% : V%=15% ELSE V%=7% : T7%=0% 950 IF D% IF L% T7%=26% : V%=9% ELSE V%=4% : T7%=0% 960 ; #L%TAB(T7%+26%)"*"; 970 FOR K%=0% TO V% 980 C%(K%)=C%(K%) AND 127% 990 IF C%(K%)<32% OR C%(K%)>128% C%(K%)=46% 1000 IF L% IF C%(K%)=127% C%(K%)=32% 1010 ; #L%,CHR$(C%(K%)); 1020 NEXT K% 1030 ; #L%,"*" 1040 K%=0% 1050 IF L% IF INP(56%)=77% THEN 160 1060 IF PEEK(65011%)>22% GOSUB 1370 1070 RETURN 1080 REM ---DECIMALT----------- 1090 IF L% T6%=9% ELSE T6%=4% 1100 C$=RIGHT$(NUM$(C%),2%) 1110 IF LEN(C$)=1% THEN C$=" "+C$ 1120 IF LEN(C$)=2% THEN C$=" "+C$ 1130 ; #L%,C$;" "; 1140 C%(K%)=C% 1150 K%=K%+1% 1160 IF K%>T6% GOSUB 930 1170 IF I%=256% GOTO 1190 1180 RETURN 1190 FOR X%=T6%-3% TO T6% 1200 C%(X%)=0% : NEXT X% 1210 GOSUB 930 1220 RETURN 1230 REM ---STR[NG------------- 1240 ; : ; 1250 ; #L%TAB(T9%); 1260 FOR I%=1% TO 256% 1270 W1%=ASC(MID$(W$,I%,1%)) 1280 IF I%=1% IF T%>2% C%=W1% : GOSUB 790 ELSE ; #L% : ; #L% 1290 W1%=W1% AND 127% 1300 IF W1%<32% OR W1%>128% THEN W1%=32% 1310 IF L% IF I%=60% OR I%=120% OR I%=180% OR I%=240% ; #L% : ; #L%TAB(T9%); 1320 IF L% IF W1%=127% W1%=32% 1330 ; #L%,CHR$(W1%); 1340 NEXT I% 1350 ; #L% 1360 RETURN 1370 REM ---STOPP-------------- 1380 GET S$ 1390 IF S$="M" THEN 160 1400 IF S$=CHR$(13%) THEN 390 1410 RETURN 1420 REM ---INPUTLINE---------- 1430 INPUTLINE S$ 1440 IF LEFT$(S$,1%)="M" THEN 160 1450 S$=LEFT$(S$,LEN(S$)-2%) 1460 RETURN 1470 REM ---F\RKLARANDE TEXT--- 1480 ; ' DETTA PROGRAM L[SER EN FLEXSKIVA' 1490 ; ' SP]R F\R SP]R, SEKTOR F\R SEKTOR.' 1500 ; ' DU KAN V[LJA OLIKA OPTIONS, SE' 1510 ; ' NEDAN. GENOM ATT ANGE "H" S] F]R DU' 1520 ; ' DEN AKTUELLA SEKTORN UTSKRIVEN I' 1530 ; ' HEXFORMAT, OCH MED "D" DECIMALA TAL.' 1540 ; ' ASCII TECKNEN SKRIVS UT TILL H\GER' 1550 ; ' OCH EJ TRYCKBARA TECKEN SKRIVS "."' 1560 ; ' MED "A" F]R DU ASCII TECKNEN ' 1570 ; ' DIREKT P] SK[RMEN. EJ TRYCKBARA' 1580 ; ' TECKEN MARKERAS MED MELLANSLAG.' 1590 ; ' MED ENDAST RETURN S] R[KNAR PROG-' 1600 ; ' GRAMMET SJ[LV FRAM SEKTOR F\R SEKTOR' 1610 ; 1620 RETURN 1630 DEFFNO%(X$)=-(INSTR(1%,F$,X$)<>0% OR INSTR(1%,F$,CHR$(ASC(X$)+32%))<>0%) 1640 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F