Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| forth:fgforth:kassette [2019/03/22 14:26] – [Kassettenarbeit] volkerp | forth:fgforth:kassette [2025/07/14 10:10] (aktuell) – [Get/Put Orig. Br.] volkerp | ||
|---|---|---|---|
| Zeile 109: | Zeile 109: | ||
| 14 ' RAM-LOAD IS GET ( n --) | 14 ' RAM-LOAD IS GET ( n --) | ||
| 15 ' RAM-SAVE IS PUT ( von bis --) | 15 ' RAM-SAVE IS PUT ( von bis --) | ||
| + | </ | ||
| + | |||
| + | JUMP macht einen allg. [[z1013: | ||
| + | Es werden die Einsprungadressen aus dem [[z1013: | ||
| + | |||
| + | Mit JUAD wird das Wort JUMP modifiziert. NEW und OLD patchen das Wiederholungsflag; | ||
| + | |||
| + | < | ||
| + | JUMP is | ||
| + | 2A6A: PUSH AF | ||
| + | 2A6B: PUSH BC | ||
| + | 2A6C: PUSH DE | ||
| + | 2A6D: PUSH HL | ||
| + | 2A6E: PUSH IX | ||
| + | 2A70: PUSH IY | ||
| + | 2A72:    LD    IY, | ||
| + | 2A76:    LD    A,4E       ; offs 0Fh A=0 ohne, A=4EH mit Typ und Namensabfrage, | ||
| + | 2A78: CALL FFF4 ; offs 11h FFF1H - JMP LORUF, FFF4H - JMP SARUF | ||
| + | 2A7B: POP IY | ||
| + | 2A7D: POP IX | ||
| + | 2A7F: POP HL | ||
| + | 2A80: POP DE | ||
| + | 2A81: POP BC | ||
| + | 2A82: POP AF | ||
| + | 2A83: JP 0422 | ||
| + | 2A86: END | ||
| + | |||
| + | nb: Aus Forth-Sicht müsste man nicht alle Register retten; BC und IY reichen. | ||
| + | |||
| </ | </ | ||
| Zeile 119: | Zeile 148: | ||
| ===== Z9001 ===== | ===== Z9001 ===== | ||
| - | <code> | + | <file> | 
| Screen # 01 ----------------------- | Screen # 01 ----------------------- | ||
| Zeile 271: | Zeile 300: | ||
| 14 Anzeige der Filenamen von Kas | 14 Anzeige der Filenamen von Kas | ||
| 15    sette, Abbruch mit > | 15    sette, Abbruch mit > | ||
| + | </ | ||
| + | |||
| + | **MC Routinen dürfen BC (IP) und IY (RP) nicht verändern!** | ||
| + | |||
| + | < | ||
| + | CBOS: Aufruf Sprungverteiler, | ||
| + | 2A62  E1                | ||
| + | 2A63  C5                | ||
| + | 2A64  FD E5            PUSH    IY       | ||
| + | 2A66  4D                | ||
| + | 2A67  CD 05 00          | ||
| + | 2A6A  FD E1            POP      | ||
| + | 2A6C  C1                | ||
| + | 2A6D 26 00 LD H,00H | ||
| + | 2A6F  6F                | ||
| + | 2A70  E5                | ||
| + | 2A71  ED 62            SBC      | ||
| + | 2A73  E5                | ||
| + | 2A74  C3 22 04          | ||
| + | |||
| + | MAREK: Aufruf OS-Systemfunktion Lesen eines bel. Blocks von Kassette | ||
| + | 2A81  C5                | ||
| + | 2A82  FD E5            PUSH    IY       | ||
| + | 2A84  CD 59 FF          | ||
| + | 2A87  CD E3 FA          | ||
| + | 2A8A  FD E1            POP      | ||
| + | 2A8C  C1                | ||
| + | 2A8D  C3 22 04          | ||
| </ | </ | ||
| + | ===== Beispiel ===== | ||
| + | |||
| + | Screens zählen ab 1. Je nach Größe der RAM-Disk unterscheidet sich die Maximal-Zahl an Screens. Ein Screen umfasst 512 Byte ( 1/2 KByte). z.B. Z9001 RAM-Disk Speicher 6000h-BFFFh entspricht 48 Screens (1..48) | ||
| + | |||
| + | < | ||
| + | I/O | ||
| + | HEX SOD @ . 6000 ok | ||
| + | EOD @ U. BFFF ok | ||
| + | DECIMAL MAX# . 47 ok ( EOD = C000h würde hier 48 bringen) | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | 1 EDIT | ||
| + | 	Screen editieren, Kommandos s. https:// | ||
| + | Ende mit CTR C - sichert Screen im RAM und verlaesst Editor | ||
| + | 1 LOAD | ||
| + | übersetzt Screen in Forth-Wörterbuch | ||
| + | |||
| + | 1 1 PUT TEST1 | ||
| + | 	sichert Screen 1 bis 1 auf Massenspeicher als Datei " | ||
| + | 1 GET TEST1 | ||
| + | 	lädt Datei " | ||
| + | </ | ||