From 8fb2fdc1fafee006a34028cf92911fda69dd7d8c Mon Sep 17 00:00:00 2001 From: acn Date: Thu, 31 Jan 2019 15:07:14 +0100 Subject: [PATCH] Wrap-Around und Statuszeile implementiert --- README.md | 16 +++++++++--- zpoint.bas | Bin 859 -> 1095 bytes zpointa.bas | 69 +++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 61 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 9b17bc2..fd020d9 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/zpoint.bas b/zpoint.bas index d2217b3f59f8eea968e837745a93772a7b92ff19..aa267055679049b3ae3c57d14529593c258d5dac 100644 GIT binary patch delta 724 zcmYL{OK1~O6o$_vQL~UHomKHs596pAJE@^ILXD_34@`|kO%cJ>WbR2jG#P1|Xvrq1 zbRiWr3>Ft6F0Bhitcc(PbfK=|MqIe8$yM3q{_lQF`T{?4an zO`9kwU>72gwY%X@L4hQH2lW9sk)++a$pkU=KW42~Ox3QX!5xPe_?w!n3r z@g31S7?U$ONxA}XM=$M6j2aJQ)DWQemR-k%o<_7+}1l6`^?D1y#Z z!L<{0Gd0a>xlGfjnKd%T$%JDM*dd{T>+=t`r}iRnQ4jtSVJq$MV5|eX zVJGeN&{P|}fqvTOfwLWOoMIege|EdQxg{8p=&+B+#{e`+`P^yKqp9>p_V>to?u!pC z(hq+p3;uif1Fy;P&*L{c6z9!&hg<-fw6=j3v1?U;-(-dTd$z4nIB*q$#ay6)?xlio K@qD0t-Tnh(!05&R delta 486 zcmYLGO-K}B7=ET1Lpr#-1A!pa%Q(ia?!sbt5~Q>hCkGFWcoD(o`@U#!LB#c-7uiBc z6ikNpu%|9Tbx0QVRtOfQf&_s`=vh0(I9{Ye{q`rkz0c44d>_yIt^VNp%k9~sdkY`P z!n%7KOXQI^nWM*Jxhav&3hEutdIF!^IIJLsUAGxG*1n`RJ>r%utA1rB=uyki2{56Uj*=mEn+RCJ-S$l>j|u~0!lPT&3e){@sYij z`EuA~@3D>@wuaB7<2T!a|MMEn{$)SVZw7N_c{R!pu|N_UZ3cZOE3iTxE&QlPrfTG= zjxHWZ(mILJS;e2ON-;S6Pt841rsVgJRg7>=krM}UyiTdqkQsQ8ku5}OHO%m1HIEYa zi)u&w3lG%=+7BWf)dX9^KL2+`y`zRL;GFyQTFV_xM72Dk!q%3lauqa+A+3BTLyT(D IDqjUI0d!lQGynhq diff --git a/zpointa.bas b/zpointa.bas index e6a65cc..ae531cb 100644 --- a/zpointa.bas +++ b/zpointa.bas @@ -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