10 REM *************** dir.bas *****************
20 REM ** Auswahlprogramm f}r Programmdateien **
30 REM ********** von Jerzy Rosmus *************
40 :
50 REM **** Variablenvorbelegung ****
60 :
70 spec$="bas":spec$=UPPER$(spec$)
80 pname$="DIR."+spec$:esc$=CHR$(27):
90 cls$=esc$+"E":home$=esc$+"H":
100 DEF FNnach$(x,y)=esc$+"Y"+CHR$(32+x)+CHR$(32+y)
110 stan$=esc$+"1":staus$=esc$+"0":
120 can$=esc$+"e":caus$=esc$+"f"
130 inv$=esc$+"p":invaus$=esc$+"q":
140 norm$=can$+stan$+invaus$
150 DIM datei$(65)
160 :
170 REM **** Kopfzeile ****
180 :
190 PRINT norm$;cls$;home$;staus$;caus$
200 PRINT FNnach$(0,0)+CHR$(150)+STRING$(88,154)+CHR$(156);
210 PRINT FNnach$(1,0)+CHR$(149)+STRING$(88,"*")+CHR$(149);
220 PRINT FNnach$(2,0)+CHR$(147)+STRING$(88,154)+CHR$(153)
230 PRINT FNnach$(1,4);". ";pname$;". ":
240 PRINT FNnach$(1,33);". Dateiauswahl. ":
250 :
260 REM **** Dateinamen laden ****:
270 :
280 IF FIND$("*."+spec$)<>"" THEN GOTO 350
290 PRINT FNnach$(7,0)+"Keine "+spec$;
300 PRINT " - Datei auf dieser Diskette, ";
310 PRINT "bitte die Diskette wechseln"
320 PRINT "und eine beliebige Taste dr}cken":
330 WHILE INKEY$="":WEND
340 ERASE datei$:GOTO 50
350 PRINT FNnach$(5,0)+"Folgende *.";
360 PRINT spec$;" - Dateien befinden ";
370 PRINT "sich auf dieser Diskette:"
380 FOR nr=0 TO 63:
390 datei$(nr)=FIND$("*."+spec$,nr+1)
400 IF datei$(nr)="" THEN GOTO 470
410 ze=7+INT(nr/6):
420 sp=14*(nr MOD 6)
430 PRINT FNnach$(ze,sp)+" "+datei$(nr)+" "
440 NEXT nr
450 :
460 REM ** Auswahl mit Cursortasten **
470 :
480 PRINT FNnach$(28,20)+inv$;
490 PRINT "...Datei mit ";
500 PRINT "Cursortasten, dann ENTER dr}cken. "
510 PRINT FNnach$(29,20)+"....oder ";
520 PRINT "Diskette wechseln und ";
530 PRINT "f1 dr}cken....  ";invaus$
540 PRINT FNnach$(7,0)+inv$;
550 PRINT " "+datei$(0)+" "+invaus$
560 ze=7:sp=0:nr=0
570 such$=INKEY$:IF such$="" THEN GOTO 570
580 PRINT FNnach$(ze,sp)+" "+datei$(nr)+" ";
590 IF such$=CHR$(6) THEN IF sp>=70 GOTO 660 ELSE sp=sp+14
600 IF such$=CHR$(1) THEN IF sp<=0 GOTO 660 ELSE sp=sp-14
610 IF such$=CHR$(30) THEN IF ze>16 GOTO 660 ELSE ze=ze+1
620 IF such$=CHR$(31) THEN IF ze<=7 GOTO 660 ELSE ze=ze-1
630 IF such$=CHR$(26) THEN ERASE datei$:GOTO 50
640 IF such$=CHR$(13) THEN GOTO 690
650 nr=(sp+14)/14-1+(ze-7)*6
660 PRINT FNnach$(ze,sp)+inv$;
670 PRINT " "+datei$(nr)+" ";invaus$
680 GOTO 570
690 nr=(sp+14)/14-1+(ze-7)*6
700 IF datei$(nr)="" THEN GOTO 540
710 IF FIND$(datei$(nr))<>"" THEN GOTO 790
720 PRINT cls$
730 PRINT FNnach$(30,20);"Diskette wurde ";
740 PRINT "gewechselt, bitte neu w{hlen"
750 ERASE datei$:DIM datei$(65):GOTO 200
760 :
770 REM *** Neues Programm laden ***
780 :
790 PRINT norm$;home$;cls$;datei$(nr);
800 PRINT " wird geladen, bitte warten"
810 CHAIN datei$(nr):
820 :
den ***
780 :
790 PRINT norm$;home$;cls$;datei$(nr);
800 PRINT " wird geladen, bitte warten"
810 CHAIN datei$(nr):
820 :