Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| tiny:erweiterungen:rombank [2022/08/04 06:40] – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1 | tiny:erweiterungen:rombank [2025/05/12 09:44] (aktuell) – [ES1988] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== ROM-Bank ====== | ||
| + | |||
| + | Die ROM-Bank ist ein Zusatzmodul für den TINY, ursprünglich entwickelt für die Ausbaustufe III und ES4.0. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Von Rolf Weidlich entwickeltes Modul mit Softwaresteuerung. | ||
| + | |||
| + | - 128kByte ROM | ||
| + | - 16 Bänke, umschaltbar per Binärzähler 4029 | ||
| + | - Betriebssystem muss um Routinen zur Bankumschaltung erweitert werden. | ||
| + | |||
| + | {{: | ||
| + | Leiterplatte von W. Hardwardt, https:// | ||
| + | |||
| + | Es gibt auch eine größere Variante mit 512 kByte ROM: | ||
| + | |||
| + | - 512kByte ROM | ||
| + | - 64 Bänke, umschaltbar per Binärzähler 4024 | ||
| + | |||
| + | s.a. https:// | ||
| + | |||
| + | ===== ES4.0 ===== | ||
| + | |||
| + | TINY 6K ROM-Bank für Ausbaustufe III und ES4.0 | ||
| + | |||
| + | - 128kByte ROM | ||
| + | - ROM-Modul für Steckplatz 1 (auf 6K-Tiny!) | ||
| + | - 2000h-3FFFh (8 kByte) | ||
| + | - 16 Bänke, umschaltbar per Binärzähler 4029 | ||
| + | - Angepasstes Betriebssystem ES 40c mit Routinen zur Bankumschaltung etc. | ||
| + | - Start des Moduls mit M (Mon), X (Bank 0, Sprung zu Adresse 2000h) | ||
| + | |||
| + | Mit zwei Leitungen ist dann das Modul mit der Hauptplatine zu verbinden: | ||
| + | /0 -> P3.5 Zählerreset | ||
| + | Schritt -> P3.7 weiterzählen (nächste Bank) | ||
| + | |||
| + | Die ROM-Bank wird mit dem Monitorkommando X gestartet: | ||
| + | M (Mon) | ||
| + | X X ohne Parameter zeigt den Inhalt der ROM-Bank an (DIR) | ||
| + | Xn es wird gleich Programm Nr. n gestartet. | ||
| + | |||
| + | |||
| + | ==== Downloads ==== | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| + | * {{ : | ||
| + | * {{ : | ||
| + | |||
| + | ==== Beschreibung ==== | ||
| + | |||
| + | alternative Software für " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Ich habe 2021 eine alternative Software für die ROM-Bank geschrieben, | ||
| + | Um Platz zu sparen, können die Programme vorab mit bitbuster_extreme gepackt werden. Aktuell sind 58 Programme in der ROM-Bank enthalten (tiny MPBasic, Maschinencode, | ||
| + | |||
| + | ROM-Image aus obigem Downloadpaket: | ||
| + | |||
| + | testen | ||
| + | - jtcemu (www.jens-mueller.org/ | ||
| + | - Konfiguration 6KByte ES4.0, 64K RAM, ROM-Bank, Inhalt der Rom-Bank packedrom.bin | ||
| + | - beim Start muss sich das System als ES4.0c melden | ||
| + | - Start der Modulsoftware mit M (Mon), X | ||
| + | |||
| + | ==== Inhalt ==== | ||
| + | |||
| + | Stand 19.9.2021. 58 Programme. | ||
| + | |||
| + | Bank, Adr., Zieladr., Endadr., Startadr., Typ, Name, Länge (gepackt), Quelle | ||
| + | < | ||
| + | 1, 2000h, 0C100H, 0h, 0h, ' | ||
| + | 1, 2600h, 0C000H, 0h, 0h, ' | ||
| + | 1, 2700h, 0F100H, 0h, 0h, ' | ||
| + | 1, 2A00h, 0E000H, 0h, E000h, ' | ||
| + | 1, 3000h, 0D000H, 0h, D000h, ' | ||
| + | 1, 3A00h, 0D000H, 0h, D000h, ' | ||
| + | 2, 2A00h, 0C0F0H, C0F4h, C0F0h, ' | ||
| + | 2, 2B00h, 0E000H, 0h, E000h, ' | ||
| + | 2, 2F00h, 0E000H, 0h, E000h, ' | ||
| + | 2, 3400h, 0E000H, 0h, E000h, ' | ||
| + | 2, 3700h, 0F480H, 0h, 0h, ' | ||
| + | 2, 3900h, 0E000H, 0h, E000h, ' | ||
| + | 3, 2300h, 08000H, 0h, 8000h, ' | ||
| + | 3, 2700h, 08000H, 0h, 8000h, ' | ||
| + | 3, 3200h, 08000H, 0h, 8000h, ' | ||
| + | 3, 3D00h, 08000H, 0h, 8000h, ' | ||
| + | 4, 2300h, 08000H, 0h, 8000h, ' | ||
| + | 4, 2700h, 08000H, 0h, 8000h, ' | ||
| + | 4, 2B00h, 08000H, 0h, 8000h, ' | ||
| + | 4, 3000h, 08000H, 0h, 8000h, ' | ||
| + | 4, 3900h, 08000H, 0h, 8000h, ' | ||
| + | 5, 2000h, 08000H, 0h, 8000h, ' | ||
| + | 5, 2200h, 08000H, 0h, 8000h, ' | ||
| + | 5, 2A00h, 08000H, 0h, 8000h, ' | ||
| + | 5, 3200h, 08000H, 0h, 8000h, ' | ||
| + | 5, 3F00h, 08000H, 0h, 8000h, ' | ||
| + | 6, 2800h, 0E000H, 0h, E000h, ' | ||
| + | 6, 2D00h, 0E000H, 0h, E000h, ' | ||
| + | 6, 3400h, 0E000H, 0h, E000h, ' | ||
| + | 6, 3C00h, 0E000H, 0h, E000h, ' | ||
| + | 7, 2400h, 0E000H, 0h, E000h, ' | ||
| + | 7, 2B00h, 0E000H, 0h, E000h, ' | ||
| + | 7, 3200h, 0E000H, 0h, E000h, ' | ||
| + | 7, 3700h, 0E000H, 0h, E000h, ' | ||
| + | 7, 3D00h, 0E000H, 0h, E000h, ' | ||
| + | 8, 2400h, 0E000H, 0h, E000h, ' | ||
| + | 8, 2B00h, 0E000H, 0h, E000h, ' | ||
| + | 8, 3000h, 0E000H, 0h, E000h, ' | ||
| + | 8, 3700h, 0E000H, 0h, E000h, ' | ||
| + | 8, 3D00h, 0E000H, 0h, E000h, ' | ||
| + | 9, 2400h, 0E000H, 0h, E000h, ' | ||
| + | 9, 2B00h, 0E000H, 0h, E000h, ' | ||
| + | 9, 3000h, 0E000H, 0h, E000h, ' | ||
| + | 9, 3300h, 0E000H, 0h, E000h, ' | ||
| + | 9, 3A00h, 0E000H, 0h, E000h, ' | ||
| + | A, 2000h, 0E000H, 0h, E000h, ' | ||
| + | A, 2300h, 0E000H, 0h, E000h, ' | ||
| + | A, 2900h, 0A000H, 0h, A000h, ' | ||
| + | A, 3D00h, 0A000H, 0h, A000h, ' | ||
| + | C, 2000h, 0E000H, E28Ch, E000h, ' | ||
| + | C, 2300h, 08000H, 0h, 8000h, ' | ||
| + | C, 2F00h, 08000H, 0h, 8000h, ' | ||
| + | C, 3A00h, 08000H, 0h, 8000h, ' | ||
| + | D, 2500h, 08000H, 0h, 8000h, ' | ||
| + | D, 3600h, 0E000H, 0h, E000h, ' | ||
| + | D, 3B00h, 0E000H, 0h, E000h, ' | ||
| + | D, 3F00h, 0E000H, 0h, E000h, ' | ||
| + | E, 2200h, 0E000H, 0h, E000h, ' | ||
| + | </ | ||
| + | |||
| + | ==== Erweiterung ==== | ||
| + | |||
| + | Eigene Programme können | ||
| + | recht einfach in den ROM aufgenommen werden, indem die Binärdatei um einen | ||
| + | kleinen 32Byte-Header ergänzt einfach in den ROM hinzugefügt wird: | ||
| + | |||
| + | Die Programme sind im ROM hintereinander abgelegt. Man hat quasi eine | ||
| + | 120K-Rom-Diskette. | ||
| + | Auf einer xx00h-Adresse im Rom steht ein Header (s.u.), und dann folgt die | ||
| + | Binärdatei (JTC-Datei ohne die ersten 80h Bytes). | ||
| + | Auf der nächsten xx00h-Adresse folgt das nächste Programm usw. | ||
| + | |||
| + | Der Header ist 32 Byte lang und liegt auf einer xx00h-Adresse. | ||
| + | Nach dem Header folgt das Programm. Der Header hat folgenden Aufbau (packedrom.asm): | ||
| + | |||
| + | org xx00h ; | ||
| + | db 0FAh, 0FAh ; +0 Kennbytes | ||
| + | dw aadr ; +2 Anfangsadresse im RAM | ||
| + | dw eadr ; +4 Endadresse im RAM | ||
| + | dw sadr ; +6 Startadresse im RAM (oder 0000h - nichtstartend) | ||
| + | db packed ; | ||
| + | db 0, | ||
| + | db Dateityp ; | ||
| + | db " | ||
| + | binclude programm.bin | ||
| + | |||
| + | Beispiel Maschinen-Code-Programm " | ||
| + | |||
| + | < | ||
| + | 00006200h: FA FA 00 80 00 00 80 00 80 00 00 00 00 00 00 4D ; úú.€...€€......M | ||
| + | 00006210h: 48 41 4E 4F 49 20 20 20 20 20 20 20 20 20 20 20 ; HANOI | ||
| + | 00006220h: 00 31 10 6C F7 7C A0 82 06 00 09 30 2C 84 3C 4C ; .1.l÷| ‚...0, | ||
| + | 00006230h: 4C 84 00 5C 79 1C 28 82 02 92 04 00 A0 E2 A0 E4 ; L„.\y.(‚.’.. â ä | ||
| + | 00006240h: 1A F6 B0 33 04 DC 0F D6 83 46 02 59 00 D6 82 96 ; .ö°3.Ü.ÖƒF.Y.Ö‚– | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | Um Speicherplatz zu sparen, können Programme mit bitbuster_extreme komprimiert | ||
| + | werden (bitbuster_extreme.exe programm.bin, | ||
| + | |||
| + | BMP-Bilder müssen im Format | ||
| + | * Format: | ||
| + | * unkomprimiertGröße: | ||
| + | * PixelFarben: | ||
| + | * Größe: | ||
| + | vorliegen, s.Bildbetrachter.pdf (WeRo07/ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Historie ==== | ||
| + | |||
| + | 23.08.2021 erste Version, auch mit packed depack_z8.asm | ||
| + | |||
| + | 28.08.2021 neuer Typ P für Picture, 2 Bilder ergänzt; | ||
| + | testbild.bin neu übersetzt, da orig. Adresse 2000 hier nicht funktioniert; | ||
| + | wurmi_8 ersetzt durch neu gemailte Version | ||
| + | |||
| + | 16.09.2021 Korrektur depack-Routine (Flags sichern in getbyte); | ||
| + | Sprungverteiler am Bank-Anfang (s. Bank0.asm); | ||
| + | neue Programmversionen STEINE, | ||
| + | Z9001-Zeichensatz (kompatibel zur wero-Bank) | ||
| + | |||
| + | 17.09.2021 neuer Start von BASIC-Programmen (Sicherung Stack); | ||
| + | Entpackroutine an anderer Stelle im RAM, da STEINE etc. den | ||
| + | vorher genutzten Bereich brauchen | ||
| + | |||
| + | 18.11.2021 neu: [[tiny: | ||
| + | Start nun mit Xn möglich, dann wird gleich Programm Nr n gestartet | ||
| + | (ohne vorheriges DIR) | ||
| + | |||
| + | 19.11.2021 neu: Lauflicht. | ||
| + | Steine (die erweiterte Version) geht jetzt wieder. Ich nutz jetzt den | ||
| + | Kassettenpuffer+Teile des Stackbereichs für die Entpack-Routine. Damit ist der | ||
| + | ganze RAM nutzbar. Zuletzt war 9F00..9FFF belegt, aber genau dieser Bereich | ||
| + | wurde für die erweiterte Steine-Version genutzt. | ||
| + | |||
| + | 14.12.2021 Z8671-Basic um [[elektronik: | ||
| + | |||
| + | 17.02.2022 OTHELLO und Mine-DEMO aufgenommen. | ||
| + | |||
| + | 21.03.2022 FLOAT-Test aufgenommen. Jetzt ist die ROM-Bank 100% voll! | ||
| + | |||
| + | 21.02.2024 in bank0.asm kann der Schalt-Port geändert werden, Hardware nach https:// | ||
| + | |||
| + | 29.07.2024 Rolf Weidlich hat bank0 angepasst, so dass nun auch mehr als 99 Programme genutzt | ||
| + | werden können. Bei einer ROM-Größe (lastbank) > 128k wird die Banknummer 3stellig | ||
| + | angezeigt. Außerdem kann mit ESC abgebrochen werden. | ||
| + | |||
| + | ===== ES1988 ===== | ||
| + | |||
| + | Nach der Version für ES4.0 (s.u.) habe ich Software auch ans ES1988 angepasst. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | - Es wird das ES1988-System **mit 2 ROMs** erwartet (2. ROM auf Steckplatz 2, 2000h-27FFh) mit 8K RAM auf Steckplatz 1 (E000-FFFFh) | ||
| + | - 128kByte ROM | ||
| + | - ROM-Modul für Steckplatz 3 | ||
| + | - 4000h-5FFFh (8 kByte) | ||
| + | - Angepasstes Betriebssystem ES 1988 mit Routinen zur Bankumschaltung etc. | ||
| + | - Start des Moduls mit X (Bank 0, Sprung zu Adresse 4000h) | ||
| + | |||
| + | Mit einer Leitungen ist dann das Modul mit der Hauptplatine zu verbinden: | ||
| + | Schritt -> P3.5 weiterzählen (nächste Bank) | ||
| + | |||
| + | Start mit X<Nr> bzw. XD, s.u. | ||
| + | |||
| + | Hinweis: **JTCEMU** Die Version 2.0/2.1 unterstützt die ROM-Bank für ES1988 nicht! Ich habe zum Entwickeln eine [[tiny: | ||
| + | Die Version 2.2 von 2025 unterstützt die ROM-Bank! | ||
| + | |||
| + | |||
| + | ==== Downloads ==== | ||
| + | |||
| + | * {{ : | ||
| + | * {{ : | ||
| + | |||
| + | ==== Unterschiede zur ES4.0-Version ==== | ||
| + | |||
| + | Gegenüber der nachfolgend beschriebenen Version für das ES4.0 gibt es einige Unterschiede: | ||
| + | |||
| + | Der 2. System-ROM muss durch die im Paket beiliegende Version ersetzt werden. | ||
| + | Die ROM-Bank wird im ES1988-Menü mit X gestartet. Wird anschließend D gedrückt, werden die in der ROM-Bank vorhandenen Programme zuerst aufgelistet. Anschließend wird die Nr. des zu ladenden Programms eingegeben. Anstelle D kann auch gleich eine Nr. angegeben werden, dann wird sofort geladen. Bei Basic-Programmen landet man im BASIC-Modus Mit RUN (+) wird das Programm gestartet. | ||
| + | Maschinencodeprogramme wie FORTH starten direkt, andere wie die Grafikerweiterung werden nur in den RAM umgeladen. | ||
| + | |||
| + | Prinzipiell ist es möglich, Programme gepackt abzulegen. Aufgrund des geringen System-Speichers und der vorangigen Nutzung für die Grafikerweiterung wurde der Entpacker-Code in den Assembler-Quellen deaktiviert. | ||
| + | |||
| + | Bislang gibt es gerade mal 46 Programme für den TINY. Auch ungepackt ist der ROM nicht mal zur Hälfte gefüllt. | ||
| + | |||
| + | ===== ES1988 32K-ROM ===== | ||
| + | |||
| + | Die Software der ROM-Bank wurde erneut angepasst, um einen 32K-ROM ([[tiny: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Von den 32K ROM stehen nur 18 kByte zur Verfügung, denn belegt sind 4K vom ES-System und 2K von TINY-BASIC, und der Bereich 6000h-7FFFh wird vom Adressbereich der Tastatur belegt. Dennoch konnten über 17 größere Programme (u.a. [[tiny: | ||
| + | |||
| + | * {{ : | ||
| + | * {{ : | ||
| + | |||
| + | Im Startmenü des ES1988 gibt es den neuen Buchstaben " | ||
| + | |||
| + | Nach " | ||
| + | tiny_es4k_32k.bin_inhalt.txt) Wird hier stattdessen " | ||
| + | vorhandenen Programme gelistet und dann erst die zu ladende Nr abgefragt. | ||
| + | |||
| + | XD Dir | ||
| + | Xnr Lade Programm nr | ||
| + | |||
| + | Basic-Programme starten nicht automatisch, | ||
| + | werden. | ||
| + | |||
| + | < | ||
| + | Nr. EPROM Typ Name | ||
| + | |||
| + | 1 000012A0 M GRAFIKBIBL | ||
| + | 2 00001320 B TURM HANOI | ||
| + | 3 00001940 B OTHELLO | ||
| + | 4 00002800 B AUTOCROSS+ | ||
| + | 5 00002A40 B EINMALEINS | ||
| + | 6 00002CA0 B HASEWOLF+ | ||
| + | 7 00002F20 B KURZWECKER | ||
| + | 8 00003000 B MAL-FIX | ||
| + | 9 000031A0 B MONOPHON | ||
| + | 10 000032E0 B SCHIEBEPU.+ | ||
| + | 11 00003580 B SOLO-HALMA | ||
| + | 12 00003820 B WOCHENTAG | ||
| + | 13 000039A0 B ZAHLENRATEN | ||
| + | 14 00003AA0 M FORTH E000-0000, | ||
| + | 15 00004A40 M TOR2 | ||
| + | 16 00004D60 M STEINE | ||
| + | 17 000056C0 M Z8671BASIC | ||
| + | </ | ||
| + | |||
| + | Auf **1800h** steht die Basic-Erweiterung [[tiny: | ||
| + | AT, CLS, INKEY, PRES, PSET, PTEST, READ, RESTORE | ||
| + | BASIC-Einbindung | ||
| + | 1 PROC SETRR[8, | ||
| + | | ||
| + | JTCEMU: Zum Testen im Emulator (www.jens-mueller.org/ | ||
| + | System: 4K ES1988 | ||
| + | RAM: 8K (reichen) oder 32K (für das Z8671-Basic) | ||
| + | ROM: zusätzliche ROM-Bereiche: | ||