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.
Die Taste + lädt die nächste Datei
Die Taste - lädt die vorige Datei (es passiert nichts, wenn man bei der ersten Datei ist)
Die Taste 0 geht zur ersten Datei zurück (ZP00.TXT)
Mit der Taste q kann das Programm beendet werden.
In Zeile 24 wird die aktuelle Foliennummer in der Form "1/10" angezeigt sowie
ein "Prompt", der kurz die möglichen Tasten angibt:
``+`` 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).
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
``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
13 REM Navigation mit + und -, mit 1 zurueck zum Anfang
14 REM -----------
30 DEFINT I
30 DEFINT I,C
31 REM i ist aktuelle Folie
32 REM max ist die letzte Folie (max. Folienzahl)
40 I=0
41 C=0
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
101 PRINT CLS$
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"
129 ON ERROR GOTO 1000
130 OPEN "i",1,F$
131 ON ERROR GOTO 0
140 WHILE NOT EOF(1)
150 LINE INPUT #1,L$
160 PRINT L$
170 WEND
180 CLOSE 1
200 REM ----Tastendruecke verarbeiten
210 K$=INPUT$(1)
220 IF K$="+" THEN I=I+1
230 IF K$="-" THEN I=I-1
240 IF I<0 OR K$="0" THEN I=0
250 IF K$="q" THEN GOTO 999
260 GOTO 100
261 REM ---ENDE Schleife
999 END
130 ON ERROR GOTO 1000
140 OPEN "i",1,F$
150 ON ERROR GOTO 0
160 WHILE NOT EOF(1)
170 LINE INPUT #1,L$
180 PRINT L$
190 WEND
200 CLOSE 1
300 REM ----Foliennummer anzeigen
310 PRINT ESC$+"[24;0H"+ESC$+"0m"+STR$(I)+"/"+STR$(MAX)+" +-0q >";
500 REM ----Tastendruecke verarbeiten
510 K$=INPUT$(1)
520 IF K$="+" THEN I=I+1
530 IF K$="-" THEN I=I-1
540 IF K$="0" THEN I=0
550 IF K$="q" THEN SYSTEM
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
1001 REM ----------
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)
1040 END
1100 PRINT BELL$
1110 I=0
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