100 REM ++++++++++++++++++++++++++++++ 110 REM ! Program .... MENY 120 REM ! Version 1.0 86-05-25 130 REM ! av Anders Franz`n <5258> 140 REM ! 16-32 Kbytes flexskiva 150 REM ++++++++++++++++++++++++++++++ 160 REM 170 REM Fr}n en meny kan man v{lja 180 REM filer som finns p} skivan. 190 REM [r filen ett BASIC-program 200 REM startas programmet, {r det 210 REM en textfil visas texten. 211 REM 212 REM Anv{nds med f|rdel tillsammans 213 REM med programmet CHAINARE.BAC. 214 REM 220 REM 230 REM --- INITIERA --- 240 DIM F$(240%)=12%,X$=12%,V$=120%,Q0$=253%,A%(7%) 250 DEFFNL%(T%,S%)=CALL(24678%,256%*T%+32%*S%) : REM l{s sektor S sp}r T 260 DEFFNE%=PEEK(64789%) : REM felkod l{sning 270 DEFFNT%(X%)=PEEK(62720%+X%) : REM byte X i l{st sektor 280 REM 290 REM --- L[S VOLYMNAMN --- 300 Z%=FNL%(0%,0%) 310 D$='DR'+RIGHT$(NUM$(PEEK(64769%) AND 7%),2%)+':' 320 IF FNE% GOTO 590 330 V$='' : FOR X%=135% TO 255% 340 IF FNT%(X%)>31% AND FNT%(X%)<128% LET V$=V$+CHR$(FNT%(X%)) : NEXT X% 350 IF FNT%(X%)<>13% LET V$='' 360 REM 370 REM --- L[S BIBLIOTEKET --- 380 Z%=FNL%(0%,6%) : IF FNE% GOTO 590 390 FOR I%=0% TO 7% : A%(I%)=FNT%(239%+I%) : NEXT I% 400 F%=0% : FOR S%=0% TO 7% 410 IF A%(S%)<2% GOTO 510 420 Z%=FNL%(2%,S%) : IF FNE% GOTO 590 430 FOR B%=1% TO 15% 440 IF FNT%(16%*B%)=255% THEN 500 450 F%=F%+1% : F$(F%)='' : FOR X%=4% TO 14% 460 IF X%=12% LET F$(F%)=F$(F%)+'.' 470 F$(F%)=F$(F%)+CHR$(FNT%(16%*B%+X%)) 480 NEXT X% : X$=RIGHT$(F$(F%),10%) 490 IF X$='SYS' OR X$='ABS' LET F%=F%-1% 500 NEXT B% 510 NEXT S% : I1%=F% 520 I1%=I1%/2% : IF I1%=0% GOTO 670 530 FOR I2%=1% TO F%-I1% : FOR I3%=I2% TO 1% STEP -I1% 540 IF F$(I3%)<=F$(I1%+I3%) GOTO 560 550 X$=F$(I3%) : F$(I3%)=F$(I1%+I3%) : F$(I1%+I3%)=X$ : NEXT I3% 560 NEXT I2% : GOTO 520 570 REM 580 REM --- FEL-HANTERING --- 590 ; CUR(23%,0%)TAB(39%); : IF (FNE% AND 128%)=0% GOTO 610 600 ; CUR(23%,0%)'SKIVAN EJ KLAR.'CHR$(7%); : GOTO 620 610 ; CUR(23%,0%)'FEL P] SKIVAN.'CHR$(7%); 620 GET X$ 630 IF X$>='0' AND X$<='7' POKE 64769%,VAL(X$) 640 GOTO 300 650 REM 660 REM --- VISA BIBLIOTEK --- 670 Z%=INP(3%) : ; CHR$(12%)'MENY' : ; STRING$(39%,61%) : ; 680 ; 'Volym: 'V$ 690 ; : IF F%=0% ; 'Skivan tom...'; : GOTO 620 700 FOR I%=1% TO F% 710 IF I%<16% LET R%=I%+4% : K%=2% ELSE R%=I%-11% : K%=22% 720 ; CUR(R%,K%)F$(I%); : NEXT I% 730 ; CUR(21%,0%)'V{lj drive med siffra' 740 ; 'Flytta mark|r med RETURN el v{nsterpil' 750 ; 'V{lj fil med S'; 760 FOR I%=1% TO F% 770 IF I%<16% LET R%=I%+4% : K%=0% ELSE R%=I%-11% : K%=20% 780 ; CUR(R%,K%); : GET X$ 790 IF X$<>CHR$(8%) GOTO 820 800 I%=I%-1% : IF I%<1% LET I%=F% 810 GOTO 770 820 IF X$>='0' AND X$<='7' POKE 64769%,VAL(X$) : GOTO 300 830 IF ASC(X$)=13% NEXT I% : GOTO 760 840 IF X$<>'S' AND X$<>'s' GOTO 780 850 ; X$ : X$=F$(I%) 860 OPEN D$+X$ ASFILE 1% : I%=CALL(28666%,1%)+CALL(28668%,0%) 870 I%=ASC(Q0$) : CLOSE 1% : IF I%=130% OR I%=131% GOTO 900 880 IF I%>48% AND I%<=57% GOTO 900 890 IF I%<128% GOTO 930 ELSE 670 900 ; CUR(21%,0%)TAB(39%)CUR(22%,0%)TAB(38%)CUR(23%,0%)TAB(38%); 910 ; CUR(22%,0%)'V{nta...'; 920 CHAIN D$+X$ 930 ; CHR$(12%)'VISA 'X$ : ; STRING$(39%,61%) : ; 940 ONERRORGOTO 980 : OPEN D$+X$ ASFILE 1% : R%=0% 950 INPUTLINE #1%,V$ : V$=LEFT$(V$,LEN(V$)-2%) 960 ; V$ : R%=R%+LEN(V$)/40%+1% : IF R%<=15% GOTO 950 970 GET V$ : IF V$=CHR$(13%) GOTO 950 980 CLOSE 1% : GOTO 670