1
0

Wrap-Around und Statuszeile implementiert

This commit is contained in:
acn 2019-01-31 15:07:14 +01:00
parent 8686b70601
commit 8fb2fdc1fa
3 changed files with 61 additions and 24 deletions

View File

@ -15,13 +15,21 @@ die bei 00 beginnt.
Nachdem ZPoint gestartet wurde, zeigt es sofort die erste Datei (``ZP00.TXT``) an. Nachdem ZPoint gestartet wurde, zeigt es sofort die erste Datei (``ZP00.TXT``) an.
Die Taste + lädt die nächste Datei In Zeile 24 wird die aktuelle Foliennummer in der Form "1/10" angezeigt sowie
Die Taste - lädt die vorige Datei (es passiert nichts, wenn man bei der ersten Datei ist) ein "Prompt", der kurz die möglichen Tasten angibt:
Die Taste 0 geht zur ersten Datei zurück (ZP00.TXT)
Mit der Taste q kann das Programm beendet werden. ``+`` lädt die nächste Datei
``-`` lädt die vorige Datei
``0`` sprint zur ersten Datei (00)
``q`` beendet das Programm und kehrt zu CP/M zurück
Zwischen den Dateien wird der Bildschirm gelöscht und der Cursor in Position 0;0 gesetzt (VT100-Sequenzen). Zwischen den Dateien wird der Bildschirm gelöscht und der Cursor in Position 0;0 gesetzt (VT100-Sequenzen).
Es findet ein "Wrap-Around" statt, d.h. bei Folie 0 geht es mit - zur Folie mit der größten Nummer
und umgekehrt von dort mit + zu Folie 0.
Hierfür wird beim Start des Programms geprüft, bis zu welcher Dateinummer Dateien existieren, sobald also
eine "Lücke" in der Numerierung ist, wird die letzte existierende Datei als höchste Nummer definiert.
## Dateien ## Dateien
``zpoint.bas`` ist die per SAVE abgespeicherte (tokenized) Datei des Programms ``zpoint.bas`` ist die per SAVE abgespeicherte (tokenized) Datei des Programms

Binary file not shown.

View File

@ -3,37 +3,66 @@
12 REM Zeigt Dateien mit dem Namensschema ZPxx.TXT an 12 REM Zeigt Dateien mit dem Namensschema ZPxx.TXT an
13 REM Navigation mit + und -, mit 1 zurueck zum Anfang 13 REM Navigation mit + und -, mit 1 zurueck zum Anfang
14 REM ----------- 14 REM -----------
30 DEFINT I 30 DEFINT I,C
31 REM i ist aktuelle Folie 31 REM i ist aktuelle Folie
32 REM max ist die letzte Folie (max. Folienzahl)
40 I=0 40 I=0
41 C=0
50 BELL$=CHR$(7) 50 BELL$=CHR$(7)
51 CLS$=CHR$(27)+"[2J"+CHR$(27)+"[0;0H" 51 ESC$=CHR$(27)
52 CLS$=ESC$+"[2J"+ESC$+"[0;0H"
60 REM Pruefe, wie viele Dateien es gibt
70 GOTO 2000
100 REM ---START Schleife 100 REM ---START Schleife
101 PRINT CLS$ 101 PRINT CLS$
110 IF I<10 THEN F$="ZP0"+MID$(STR$(I),2,1)+".TXT" 110 IF I<10 THEN F$="ZP0"+MID$(STR$(I),2,1)+".TXT"
120 IF I>=10 THEN F$="ZP"+MID$(STR$(I),2,2)+".TXT" 120 IF I>=10 THEN F$="ZP"+MID$(STR$(I),2,2)+".TXT"
129 ON ERROR GOTO 1000 130 ON ERROR GOTO 1000
130 OPEN "i",1,F$ 140 OPEN "i",1,F$
131 ON ERROR GOTO 0 150 ON ERROR GOTO 0
140 WHILE NOT EOF(1) 160 WHILE NOT EOF(1)
150 LINE INPUT #1,L$ 170 LINE INPUT #1,L$
160 PRINT L$ 180 PRINT L$
170 WEND 190 WEND
180 CLOSE 1 200 CLOSE 1
200 REM ----Tastendruecke verarbeiten 300 REM ----Foliennummer anzeigen
210 K$=INPUT$(1) 310 PRINT ESC$+"[24;0H"+ESC$+"0m"+STR$(I)+"/"+STR$(MAX)+" +-0q >";
220 IF K$="+" THEN I=I+1 500 REM ----Tastendruecke verarbeiten
230 IF K$="-" THEN I=I-1 510 K$=INPUT$(1)
240 IF I<0 OR K$="0" THEN I=0 520 IF K$="+" THEN I=I+1
250 IF K$="q" THEN GOTO 999 530 IF K$="-" THEN I=I-1
260 GOTO 100 540 IF K$="0" THEN I=0
261 REM ---ENDE Schleife 550 IF K$="q" THEN SYSTEM
999 END 551 IF K$="Q" THEN SYSTEM
560 IF I<0 THEN I=MAX
570 GOTO 100
580 REM ---ENDE Schleife
1000 REM Fehlerbehandlung hier: Wenn Datei nicht gefunden 1000 REM Fehlerbehandlung hier: Wenn Datei nicht gefunden
1001 REM ----------
1010 IF ERR=53 THEN GOTO 1100 1010 IF ERR=53 THEN GOTO 1100
1020 IF ERR=53 THEN RESUME 200 1020 IF ERR=53 THEN RESUME 500
1030 PRINT "Error"+STR$(ERR)+" in Zeile "+STR$(ERL) 1030 PRINT "Error"+STR$(ERR)+" in Zeile "+STR$(ERL)
1040 END 1040 END
1100 PRINT BELL$ 1100 PRINT BELL$
1110 I=0 1110 I=0
1120 RESUME 100 1120 RESUME 100
2000 REM Durchzaehlen, welche Dateien vorhanden sind
2001 REM um Wraparound moeglich zu machen
2010 REM ---- Schleifenbeginn
2019 PRINT C
2020 IF C<10 THEN F$="ZP0"+MID$(STR$(C),2,1)+".TXT"
2030 IF C>=10 THEN F$="ZP"+MID$(STR$(C),2,2)+".TXT"
2040 ON ERROR GOTO 2500
2050 OPEN "i",1,F$
2060 CLOSE 1
2070 ON ERROR GOTO 0
2080 C=C+1
2090 GOTO 2010
2110 REM ----ENDE Schleife
2500 REM Fehlerbehandlung zur Bestimmung der
2501 REM max. Dateizahl
2502 REM ----------
2510 IF ERR<>53 GOTO 1030
2511 REM - bei anderem Fehler diesen anzeigen und dann beenden
2520 MAX=C-1
2530 RESUME 100