Laufzeit-Eingabe und Zonenzustand korrigieren und Change archivieren

This commit is contained in:
2026-09-06 08:04:22 +02:00
parent 815825dde7
commit c8b92f0619
36 changed files with 1104 additions and 91 deletions

View File

@@ -277,7 +277,9 @@ verweist dazu auf ein nicht vorliegendes Kapitel des Programmer's Guide):
`LINE INPUT` (ganze Zeile in String).
- `INKEY$` (nicht blockierend; "" wenn leer; erweiterte Tasten:
2-Zeichen-Sequenz `CHR$(0)+code` im Vorbild — Abweichung s. u.),
`INPUT$(n [,#f])`.
`INPUT$(n [,#f])` liest genau `n` Unicode-Codepoints, ohne Echo. Der
Rest einer Sondertastenfolge bleibt lesbar. Dateien werden als UTF-8
decodiert; zu wenige Zeichen → Fehler 62, beschädigtes UTF-8 → Fehler 57.
- `LOCATE [zeile][,spalte][,cursor an/aus][,start,ende]`, `CSRLIN`, `POS(0)`
— arbeiten auf der tatsächlichen Bildschirmgröße (dynamisch, s. Abweichungen).
- `COLOR [vg][,hg]` (vg 031: 1631 = blinkend — bei uns als „hell"
@@ -310,14 +312,21 @@ verweist dazu auf ein nicht vorliegendes Kapitel des Programmer's Guide):
`BINARY`.
- `CLOSE [#n, …]`, `RESET` (alle schließen).
- Sequenziell: `PRINT #`, `PRINT # USING`, `WRITE #` (CSV-artig, Strings in
`"…"`), `INPUT #`, `LINE INPUT #`, `EOF(n)`.
`"…"`, innere Anführungszeichen verdoppelt), `INPUT #`, `LINE INPUT #`,
`EOF(n)`. `INPUT #` bewahrt übrige Felder und liest über Zeilen hinweg;
fehlende geforderte Felder lösen Fehler 62 aus. Die drei Datei-Lesearten
`INPUT #`, `LINE INPUT #`, `INPUT$` teilen einen Cursor.
- Random: `FIELD #n, breite AS var$…` (klassisch) **und** `GET/PUT #n
[,satznr] [,var]` mit TYPE-Variablen; `LSET`/`RSET` für Feldpuffer.
- Binary: `GET/PUT #n, [pos], var`, `SEEK #n, pos` / `SEEK(n)`,
`LOC(n)`, `LOF(n)`.
- Verwaltung: `NAME alt$ AS neu$`, `KILL datei$`, `FILES [muster$]`,
`CHDIR`, `MKDIR`, `RMDIR`, `FILEATTR`, `FREEFILE`.
- Pfade: plattformneutral; `/` und `\` werden akzeptiert.
- Pfade: plattformneutral; `/` und `\` werden akzeptiert. Fehlende Datei
bei vorhandenem Elternverzeichnis → Fehler 53; fehlender Elternpfad → 76.
- `CVI/CVL/CVS/CVD/CVC` verlangen exakt 2/4/4/8/8 Bytezeichen mit
Codepoints 0255, sonst Fehler 5. Die zugehörigen `MK…$`-Funktionen
liefern diese Darstellung; Recordfelder bleiben UTF-32.
## 10a. ISAM (indizierter Satzzugriff)
@@ -547,7 +556,11 @@ Dialoge:
Programm, das über eine Zeitumstellung hinweg läuft, folgt ihr.
Lässt sich die Zone des Rechners nicht ermitteln, gilt UTC; das
Programm läuft weiter, und der Runner meldet es einmal beim Start auf
der Fehlerausgabe („Zeitzone nicht ermittelbar …"). `DATE$ = …` und
der Fehlerausgabe („Zeitzone nicht ermittelbar …"). Die additive
TerminalBasic-Erweiterung `TIMEZONEKNOWN` (ohne Argument, `INTEGER`)
liefert `-1` für eine ermittelte Zone, `0` für UTC-Rückfall. Der Status
folgt jeder aktuellen Ermittlung, auch späterem Ausfall und Erholung;
eine ermittelte UTC-Zone liefert ebenfalls `-1`. `DATE$ = …` und
`TIME$ = …` stellen nicht die Systemuhr, sondern einen programmeigenen
Versatz auf die Ortszeit; alle Zeitfunktionen rechnen ihn mit ein.
6b. **Serielle Datumswerte** zählen Tage ab dem 30.12.1899 (Serie 2 =