Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
z9001:module_sonstige:megaflash [2013/06/12 08:32] – Link mit z9001:module_robotron:megamodul geändert zu z9001:module_sonstige:megamodul volkerp | z9001:module_sonstige:megaflash [2020/10/06 11:14] (aktuell) – [Hardware] volkerp | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Die Hardware des Mega-Flash-Modul wurde von W.Harwardt entwickelt (MEGA-Flash-ROM-RAM, | Die Hardware des Mega-Flash-Modul wurde von W.Harwardt entwickelt (MEGA-Flash-ROM-RAM, | ||
- | {{: | + | {{: |
+ | |||
+ | ===== Download ===== | ||
+ | |||
+ | |||
+ | * {{: | ||
+ | |||
+ | Die Datei " | ||
+ | |||
+ | Beim Megamodul sind es nur 3 ROMs; 1+2 und 3+4 sind jeweils zusammen in einem 1-MByte-ROM enthalten. Das kann mit "make roms" erledigt werden. | ||
+ | |||
+ | |||
+ | |||
+ | s.a. [[z9001: | ||
===== Hardware ===== | ===== Hardware ===== | ||
Zeile 11: | Zeile 24: | ||
Die 2012- und 2013-Serie des Mega-Flash-Moduls enthalten die 32K-RAM-Speichererweiterung. | Die 2012- und 2013-Serie des Mega-Flash-Moduls enthalten die 32K-RAM-Speichererweiterung. | ||
- | Schaltungs- und Aufbauunterlagen s. http:// | + | Schaltungs- und Aufbauunterlagen s. http:// |
{{: | {{: | ||
Vorder- und Rückseite Modul Serie 1.10.2011. Hier mit 5 EPROMs bestückt. Bei Nutzung von FLASH-Speicher muss das Steckfeld oben links anders belegt werden. In dieser Serie war noch eine kleine Änderung nötig (Drahtbrücke auf Leiterseite von Jumper an Steckverbinder B9 statt an B27). | Vorder- und Rückseite Modul Serie 1.10.2011. Hier mit 5 EPROMs bestückt. Bei Nutzung von FLASH-Speicher muss das Steckfeld oben links anders belegt werden. In dieser Serie war noch eine kleine Änderung nötig (Drahtbrücke auf Leiterseite von Jumper an Steckverbinder B9 statt an B27). | ||
- | {{: | + | {{: |
- | Serie 2013 mit 32K-RAM | + | Serie 2013 mit 32K-RAM |
Vorteile: | Vorteile: | ||
Zeile 30: | Zeile 44: | ||
Gegenüber der Megamodul-Version von Rauscher/ | Gegenüber der Megamodul-Version von Rauscher/ | ||
- | ===== Download ===== | + | **Tipp**: Für den 8-Bit-Comparator 74LS688 |
- | + | ||
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | **9.2.2012**: | + | |
- | Sämtliche Parameter werden an das Programm übergeben. So kann etwa mit **SAVE** test 300, | + | |
- | + | ||
- | **14.2.2012**: Es gibt neue Software, z.B. **R+MESSE2**, eine Demo der Leipziger Herbstmesse 1984. Neu ist **CPM**: Damit kann CP/M gestartet werden, ohne dass eine Systemdiskette im Laufwerk liegen muss. Das Programm ist für robotron- | + | |
- | u.v.a.m. | + | |
- | + | ||
- | **24.02.2012**: | + | |
- | + | ||
- | **10.03.2012**: | + | |
- | eine Bootdiskette, | + | |
- | includes.asm kann festgelegt werden, ob 1 oder 2 ROM-Floppies genutzt werden | + | |
- | sollen. Außerdem sind diverse Testprogramme wie CHKROM, BANKTEST, LPRO etc. | + | |
- | hinzugefügt. | + | |
- | + | ||
- | **20.03.2012**: | + | |
- | + | ||
- | **04.04.2012**: | + | |
- | + | ||
- | **23.09.2012**: | + | |
- | + | ||
- | **14.10.2012**: | + | |
- | + | ||
- | **27.12.2012**: | + | |
- | + | ||
- | **11.01.2013**: | + | |
- | + | ||
- | **01.04.2013**: | + | |
===== Software ===== | ===== Software ===== | ||
- | Ende 2011 habe ich eine alternative quelloffene Software für das Mega-Modul und das Mega-Flash-Modul geschrieben. Diese besteht i.W. aus einer OS-Erweiterung; | + | Die universelle Modulsoftware |
- | + | ||
- | Programme werden einfach durch Eingabe des Programmnamens am OS-Prompt gestartet. Das gilt für alle Programmarten. Bei BASIC-Programmen erfolgt automatisch ein spezielles Laden des BASICs mit anschließendem Autostart des BASIC-Programms. | + | |
- | + | ||
- | Zur komfortablen Arbeit mit dem Modul gibt es den Kommandozeilenbefehl **DIR** und die graphische Oberfläche **MENU** (s.u.). | + | |
- | + | ||
- | **Eigene Programme** können einfach ins Modul integriert werden (s.u.). | + | |
- | + | ||
- | Zusätzlich zu den Kommandos der Modul-Verwaltung stehen einige vom Z1013 inspirierte Kommandos zur Speicherarbeit bereit. | + | |
- | + | ||
- | {{: | + | |
- | ^ Kommando | + | {{: |
- | | DIR [suchmuster] | + | |
- | | DIR L [suchmuster] | + | |
- | | HELP [kommando] | Hilfe anzeigen | | + | |
- | | DUMP von bis | Speicher anzeigen HEX/ASCII | | + | |
- | | FILL von bis byte | Speicher mit Byte füllen | | + | |
- | | TRANS von ziel anzahl | Speicherbereich kopieren | | + | |
- | | IN port | Port einlesen | | + | |
- | | OUT port byte | Portausgabe | | + | |
- | | RUN adr [port] | Programmstart von Adr. | | + | |
- | | MEM adr | Speicher editieren (neue Byte(s) eingeben + Enter, zurück mit R, Ende mit ;) | | + | |
- | | CLS | Bildschirm löschen | | + | |
- | | C | Cursor on/off | | + | |
- | | MENU | graphische Oberfläche ala GEM | | + | |
**DIR [suchmuster]** | **DIR [suchmuster]** | ||
Zeile 127: | Zeile 86: | ||
:!: Hilfetexte sind einfache FA-Dateien vom Typ ft_HELP (2). Sie können Farbe u.a. Steuercodes enthalten. | :!: Hilfetexte sind einfache FA-Dateien vom Typ ft_HELP (2). Sie können Farbe u.a. Steuercodes enthalten. | ||
- | |||
- | **MEM adr** (Modify Memory) | ||
- | |||
- | Es ist möglich, mit diesem Kommando einen Speicherbereich ab der angegebenen | ||
- | Anfangsadresse byteweise anzuzeigen und gegebenenfalls zu verändern. Es erfolgt | ||
- | die Ausgabe der aktuellen Adresse und des Inhaltes des zugehörigen Bytes. | ||
- | Anschließend wird mit dem Zeichen "#" | ||
- | Inhalt beibehalten werden, ist nur die Enter-Taste zu betätigen, ansonsten wird | ||
- | vorher eine hexadezimale Zahl eingegeben. Es können auch mehrere Byteinhalte, | ||
- | durch Leerzeichen voneinander getrennt, eingegeben werden. | ||
- | |||
- | Nach Betätigung der Enter-Taste wird die aktuelle Adresse erhöht und auf der | ||
- | nächsten Zeile fortgesetzt. Wird versucht, einen nicht vorhandenen | ||
- | Speicherbereich oder einen ROM zu beschreiben, | ||
- | aerr bb, wobei aerr die Adresse und bb den fehlerhaften Inhalt darstellen. | ||
- | Anschliessend wird eine erneute Eingabe erwartet. Diese Fehlerausschrift wird | ||
- | vor allem dann auftreten, wenn versucht wird, nicht vorhandene Speicher oder | ||
- | Festwertspeicher zu beschreiben. Mit Eingabe des Zeichens " | ||
- | Adresse bei Bedarf zurückgestellt werden. | ||
- | |||
- | Die Komandoausführung wird beendet durch Eingabe eines Semikolon ";" | ||
- | aktuelle Adresse wird als Endadresse übernommen. Mit dem Kommando ' | ||
- | der aktualisierte Speicherbereich nochmals auf dem Bildschirm angezeigt werden. | ||
- | |||
- | **DUMP aadr eadr** (Display Memory) | ||
- | |||
- | {{: | ||
- | |||
- | Mit diesem Kommando können beliebige Speicherbereiche zwischen einer Anfangs- | ||
- | und einer Endadresse angezeigt werden. Die Anzeige des Bereiches zwischen FFF8 | ||
- | und FFFF ist mit dem D-Kommando nicht möglich, dafür muss das M-Kommando | ||
- | verwendet werden. Die Anzeige erfolgt zeilenweise in hexadezimaler Form. Zuerst | ||
- | wird die Adresse des jeweiligen Bereiches ausgegeben, danach folgen acht Byte | ||
- | des Speicherinhaltes, | ||
- | Zeile vollständig ausgegeben, auch wenn die Endadresse eine andere Anzahl von | ||
- | Bytes verlangt. | ||
- | |||
- | Die Anzeige kann mit PAUSE angehalten werden. Eine beliebige Taste setzt die Anzeige fort. | ||
- | Mit STOP wird das Kommando abgebrochen. | ||
- | |||
- | **FILL aadr eadr bb** | ||
- | |||
- | Damit ist es möglich, einen angegebenen Speicherbereich zu löschen oder mit dem | ||
- | Byte bb zu füllen. Wird das Kommando ohne Parameter verwendet, wird der gesamte | ||
- | adressierbare Speicher gelöscht. Weiterarbeit ist dann nur nach Betätigen der | ||
- | Resettaste möglich. | ||
- | |||
- | **TRANS aadr zadr anz** (Transfer) | ||
- | |||
- | Es erfolgt ein Transport eines Speicherbereiches ab der Anfangsadresse auf eine | ||
- | Zieladresse mit der festgelegten Anzahl von Bytes. Dabei ist eine Uberlappung | ||
- | der beiden Bereiche möglich. | ||
- | |||
- | **IN port** (Port einlesen) | ||
- | |||
- | Der angegebene Port wird gelesen. Das Ergebnis wird angezeigt. | ||
- | |||
- | **OUT port byte** (Portausgabe) | ||
- | |||
- | Es wird eine Datenbyte byte auf den Port port ausgegeben. | ||
**RUN adr [bank]** (Programmstart) | **RUN adr [bank]** (Programmstart) | ||
Zeile 209: | Zeile 108: | ||
Die graphische Oberfläche wurde basierend auf der Software des [[megamodul|]] geschrieben. Die Bedienung erfolgt wie dort. Technisch wurde aber vieles anders als beim Megamodul gelöst. So ist MENU ein normales Programm, die Dateidialoge sind nicht vorgegeben, sondern werden zur Laufzeit gebildet. Außerdem ist bei großen Dialogen ein Scrollen möglich (z.B. bei den BASIC-Spielen). Zusätzlich werden in der Statuszeile Informationen über das gerade selektierte Programm wie z.B. der genutzte Speicherbereich angezeigt. | Die graphische Oberfläche wurde basierend auf der Software des [[megamodul|]] geschrieben. Die Bedienung erfolgt wie dort. Technisch wurde aber vieles anders als beim Megamodul gelöst. So ist MENU ein normales Programm, die Dateidialoge sind nicht vorgegeben, sondern werden zur Laufzeit gebildet. Außerdem ist bei großen Dialogen ein Scrollen möglich (z.B. bei den BASIC-Spielen). Zusätzlich werden in der Statuszeile Informationen über das gerade selektierte Programm wie z.B. der genutzte Speicherbereich angezeigt. | ||
+ | |||
+ | |||
+ | |||
===== Funktionsweise ===== | ===== Funktionsweise ===== | ||
Zeile 224: | Zeile 126: | ||
Wenn man selbst Software in das Mega-Flash-Modul integrieren will, muss man diese Aufteilung in 2K-Häppchen unbedingt beachten! | Wenn man selbst Software in das Mega-Flash-Modul integrieren will, muss man diese Aufteilung in 2K-Häppchen unbedingt beachten! | ||
- | |||
- | |||
- | ===== eigene Software ===== | ||
- | |||
- | Das OS des Z9001 ist analog zum CP/M aufgebaut. Die oberste Schicht, die | ||
- | Kommandoeingabe CCP, kann durch ein eigenes Programm ersetzt werden. Dazu dient | ||
- | das Kommando "# | ||
- | Die Mega-Flash-Software nutzt genau dies aus, um das CCP zu erweitern. | ||
- | |||
- | Außerdem wurde eine **Bankrückschaltung** integriert; so das Programme beim Beenden | ||
- | wieder die Bank mit der Systemerweitertung (kurz Systembank) aktivieren. | ||
- | |||
- | Dadurch kann jede Software, z.B. originale ROM-Modul-Software, | ||
- | Es muss keine spezielle Enderoutine o.a. gepatcht werden. | ||
- | |||
- | Der Z9001 kann verschiedene Programme gleichzeitig im Speicher halten. Das Betriebssystem OS findet und startet das jeweilige OS-Programm anhand eines speziellen Codebereiches, | ||
- | |||
- | Aus moderner Computersicht ist der Kommandorahmen so eine Art Dateiname; das Dateisystem entspricht dem Speicher. Die Position im Filesystem (der Pfad) wäre damit das Analogon zur Startadresse. | ||
- | |||
- | Dieser **OS-Rahmen** muss auf einer xx00h-Adresse liegen und sieht so aus | ||
- | |||
- | org xx00h | ||
- | jp start | ||
- | db " | ||
- | db 0 ; Ende eines Kommandos | ||
- | db 0 ; Ende der Liste | ||
- | |||
- | Details s. OS-Handbuch. Die hier stehenden Programmnamen können im CCP | ||
- | eingegeben werden. Das CCP sucht den Programmnamen in allen | ||
- | Kommandorahmen und startet bei gefundenem Programmnamen das Programm. | ||
- | Andernfalls erscheint die Ausschrift "start tape". | ||
- | |||
- | Der OS-Kommandorahmen ist im Modul für Programme nutzbar, die im Speicherbereich | ||
- | von C000h-E7FFh arbeiten (also z.B. Inhalte originaler ROM-Module), | ||
- | eigene Umladeroutine besitzen, die das eigentliche Programm erst an die | ||
- | Zieladresse im RAM kopieren und dort starten. | ||
- | |||
- | Es wurde außerdem ein neuer Kommandorahmen eingeführt: | ||
- | |||
- | Der FA-Rahmen ist 32 Byte lang und liegt ebenfalls auf einer xx00h-Adresse. | ||
- | Nach dem FA-Rahmen folgt das Programm. Der FA-Rahmen hat folgenden Aufbau: | ||
- | |||
- | org xx00h ; | ||
- | db 0FAh, 0FAh ; +0 Kennbytes | ||
- | db Dateityp ; | ||
- | db " | ||
- | dw aadr ; +11 Anfangsadresse im RAM | ||
- | dw eadr ; +13 Endadresse im RAM | ||
- | dw sadr ; +15 Startadresse im RAM (oder FFFFh - nichtstartend) | ||
- | dw länge ; | ||
- | db Dateikategorie ; | ||
- | db " | ||
- | ; | ||
- | binclude programm.bin | ||
- | |||
- | Im Unterschied zum OS-Rahmen werden also wesentlich mehr Informationen (" | ||
- | |||
- | Dieser Kommandorahmen ist für beliebige RAM-MC-Programme, | ||
- | Programme nutzbar (geplant ist die Unterstützung weiterer Datetypen z.B. Forth- | ||
- | Programme). | ||
- | |||
- | MC-Programme mit diesem Rahmen werden zuerst an die korrekte Adresse aadr im | ||
- | Speicher umgelagert und dann auf der Startadresse sadr gestartet. | ||
- | programm.bin ist einfach der binäre Speicherabzug des Programms von aadr bis | ||
- | eadr. Praktisch ist das die *.KCC-Datei OHNE den Kopfblock. (Die Informationen | ||
- | aus dem Kopfblock stehen schon alle im FA-Rahmen; damit spart man ein bisschen | ||
- | Speicher im Mega-Modul). | ||
- | |||
- | Basic-Programme werden nach 0401h kopiert. Dann wird die BASIC-Bank zugeschaltet, | ||
- | Basic initialisiert und das Programm gestartet. | ||
- | Für BASIC-Programme ist programm.bin einfach die *.KCC-Datei. | ||
- | |||
- | Zur einfachen Konvertierung von *.tap-Dateien ins binäre Format kann das | ||
- | Perl-Programm tap2bin.pl genutzt werden. | ||
- | |||
- | Passt programm.bin nicht mehr komplett in die aktuelle Bank, wird es | ||
- | einfach in der nächsten Bank fortgesetzt. | ||
- | |||
- | Außerdem können alle Programme mit **bitbuster_extreme** um etwa 30% komprimiert sein, um | ||
- | Platz im Mega-Modul zu sparen. Bei komprimierten Programmen muss im Dateityp | ||
- | das Bit 7 gesetzt sein (also 80h zum originalen Dateityp addiert). | ||
- | |||
- | |||
- | **Das Mega-Modul kann somit einfach um eigene Software erweitert werden: Einfach | ||
- | in einer beliebigen Bank (außer der Systembank) in einem freien Bereich auf | ||
- | einer xx00h-Adresse ein Programm mit OS-Rahmen oder mit FA-Rahmen speichern. | ||
- | Fertig!** | ||
- | |||
- | |||
- | |||