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 [2024/09/20 13:15] (aktuell) – [Historie] 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: | ||
+ | |||
+ | ==== 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: | ||