FremdeProjekte/MeGALoDOS: Unterschied zwischen den Versionen

Aus
Wechseln zu: Navigation, Suche
(Befehl TRV)
(Dokumentation)
 
(82 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
 
__TOC__  
 
__TOC__  
 
<br />
 
<br />
'''### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    ### IN ARBEIT ###    '''
 
 
 
<br />
 
<br />
 
= MeGALoDOS Board =
 
= MeGALoDOS Board =
Zeile 15: Zeile 13:
 
Ein Jugend Traum wird wahr, genau sowas hat man sich früher gewünscht.<br />
 
Ein Jugend Traum wird wahr, genau sowas hat man sich früher gewünscht.<br />
 
Nicht nur wegen des Geschwindigkeitsvorteil, sondern auch weil die Entwicklung von Code für die Floppy damit so einfach wird.
 
Nicht nur wegen des Geschwindigkeitsvorteil, sondern auch weil die Entwicklung von Code für die Floppy damit so einfach wird.
 +
 +
 +
<u>Fotos von 1541 Laufwerke mit MeGALoDOS:</u>  (Dank an Tommy_nrw für die freundliche Erlaubnis diese Fotos zu benutzen)
 +
 +
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:MeGALoDOS_01a.jpg
 +
Image:MeGALoDOS_01b.jpg
 +
Image:MeGALoDOS_01c.jpg
 +
Image:MeGALoDOS_01d.jpg
 +
</gallery>
 +
  
 
<br />
 
<br />
<u>Das MeGALoDOS Board bietet</u>:
+
== Möglichkeiten des Board ==
 +
 
 +
In erster Linie ist das MeGALoDOS der ultimative Floppy Speeder.
 +
 
 +
 
 +
<u>Das Board dient als Hardware Plattform für die Elite der klassischen Speeder</u>:
 +
 
 +
* Professional Dos (RAPI DOS)
 +
* Prologic DOS 1.6 (nicht classic)
 +
* Dolphin DOS 2.0
 +
* SpeedDOS Expert
 +
* QuickDOS
 +
* SpeedDOS
 +
* S-Jiffy DOS
 +
* Jiffy DOS
 +
* CBM DOS 2.6 mit Fix-Patches
 +
* Turbo Access 2.7
 +
* Turbo Trans 3.4 mit 512kb RAM-Disk
 +
 
 +
 
 +
<u>Zusätzlich gibt es zwei neue Betriebsarten</u>:
 +
 
 +
* Super-RAM DD
 +
* Super-RAM PD
 +
 
 +
<br />
 +
Neben der Möglichkeiten als Floppy Speeder bietet das Board noch zahlreiche andere Dinge. Annehmlichkeiten die ich bei keinem Laufwerk vermissen möchte und die sonst häufig per Taster oder Kippschalter mehr oder weniger gut realisiert worden sind.
 +
 
 +
 
 +
<u>Weitere Möglichkeiten durch das Board</u>:
  
* Emulation aller wichtigen Super-Speeder die es für die 1541 gibt
 
 
* informative Anzeige über ein OLED Display
 
* informative Anzeige über ein OLED Display
* optionale Track Anzeige über ein 7-Segment Display
 
 
* komfortable Bedienung über einen Drehgeber
 
* komfortable Bedienung über einen Drehgeber
 +
* Wechsel zwischen den verschiedenen DOS Varianten
 
* automatischer und manueller RESET  
 
* automatischer und manueller RESET  
 
* Disketten Schreibschutz Management
 
* Disketten Schreibschutz Management
 +
* Disketten Verriegelungs-Erkennung
 
* Einstellbare Geräte Nummer
 
* Einstellbare Geräte Nummer
* 1MB RAM
+
* optionale Track Anzeige über ein 7-Segment Display
* 512KB EEPROM
+
 
* 2x RAM Disk
+
 
* optional 2MHz Modus für die CPU
+
<br />
* Trackbuffer für GCR Rohdaten
+
== Einbau und Inbetriebnahme ==
* Hardware GCR encode/decode
+
 
* integrierte SuperCard+
+
Der Einbau ist relativ einfach durchführbar, wenn die CPU des Floppy Laufwerk gesockelt ist. Das MeGALoDOS Board wird einfach in den Sockel der CPU 6502 gesteckt. Die CPU wird dann aufs MeGALoDOS Board gesteckt.
 +
 
 +
Zusätzlich zu dem Board braucht man ein paralleles Flachband Kabel zum Userport des C64.
 +
Ein Floppy Laufwerk mit Speed-DOS ist damit schon perfekt und genügt vollauf.
 +
 
 +
 
 +
<u>Zusatz Hardware für das MeGALoDOS</u>:
 +
 
 +
* optional: Austausch der Laufwerks LED gegen eine zweifärbige (rot/grpün)
 +
* optional: 7-Segment Anzeige (Track Anzeige)
 +
* optional: zwei Drähte für die Gerätenummer Umschaltung (8, 9, 10, 11)
 +
* optional: Lichtschranke für Disketten Schreibschutz
 +
* nicht optional: ein Draht zum Reset der Floppy (bei bestimmten 1541 Typen)
 +
* nicht optional: OLED Display  (ohne kann man schlecht wechseln zwischen den DOS Varianten)
 +
* nicht optional: Drehencoder  (ohne kann man schlecht wechseln zwischen den DOS Varianten)
 +
 
 +
 
 +
Näheres dazu steht im Handbuch zum MeGALoDOS.
 +
 
 +
<br />
 +
= MeGALoDOS Hardware =
 +
 
 +
<br />
 +
<u>Das MeGALoDOS besteht aus</u>:
 +
 
 +
* einem großen Flash Speicher (512KB)
 +
* einem großen SRAM​​ (1024KB)
 +
* einem Lattice CPLD
 +
* einem Atmel ATmega 328PB für die Steuerung
  
  
Zeile 44: Zeile 110:
 
<u>Auf geniale Weise wird jeder Winkel des Adressraum genützt:</u>:
 
<u>Auf geniale Weise wird jeder Winkel des Adressraum genützt:</u>:
  
 +
* 2K RAM ab 0x0800
 
* 4K RAM ab 0x3000
 
* 4K RAM ab 0x3000
* 2K RAM ab 0x0800
 
 
* 8KB Fenster für RAM (für Speeder)
 
* 8KB Fenster für RAM (für Speeder)
 
* 8KB Fenster für ROM (für Speeder)
 
* 8KB Fenster für ROM (für Speeder)
* 8KB Fenster mit 'banking' für RAM und ROM (Super RAM Modus)
+
* 8KB Fenster mit 'banking' für RAM (Super RAM Modus)
 +
* 8KB Fenster mit 'banking' für ROM (Super RAM Modus)
 +
* 2K RAM mit Banking für RAM Disk
 +
 
 +
<br />
 +
<u>Neben der üppigen Speicherweiterung bietet das Board noch weitere Dinge</u>:
 +
 
 +
* optional 2MHz Modus für die CPU
 
* zwei mal RAM Disk in der Art wie TurboTrans das gemacht hat
 
* zwei mal RAM Disk in der Art wie TurboTrans das gemacht hat
* spezielle Bereiche für Extras (SuperCard+, Hardware Enkoder/Dekoder)
+
* Trackbuffer für GCR Rohdaten
 +
* Hardware GCR encode/decode
 +
* integrierte RAM-Board / SuperCard+ Emulation
 +
 
 +
<br />
 +
== Der Flash Speicher ==
 +
 
 +
Der Flash Speicher steckt in dem 32 poligen DIL Sockel auf dem MeGALoDOS Board (ein 39SF040). Er hat eine Größe von 512KB, das entspricht 64 Blöcke (Banks) zu je 8KB. In dem Flash Speicher sind die verschiedenen DOS, GCR Tabellen und Zusatz ROM Inhalte gespeichert, die das MeGALoDOS in den verschiednen Modi anbietet. Der CPLD sorgt dafür, dass je nach Betriebs Modus die richtigen 8KB Blöcke an der richtigen Stelle im 6502 Adressraum eingeblendet werden.
 +
 
 +
Der Flash Speichert kann aus dem Sockel entnommen werden und zB. in einem TL866 Programmer gelöscht und beschrieben werden.
 +
 
 +
Es gibt aber auch Tools, mit denen man den Flash Speicher beschreiben kann von einem C64 aus oder alternativ von einem PC, ohne dass man den Flash Chip entfernen muss.
 +
 
 +
<br />
 +
== Der ATmega Controller ==
 +
 
 +
Der Controller ist zuständig für die Benutzer Schnittstelle und einige Komponenten:
 +
 
 +
* Abfrage des Drehencoder
 +
* Anzeige am OLED Display
 +
* Anzeige der CPU Taktung (1 oder 2 MHz) über die zweifärbige LED
 +
* Zustand der Schreibschutz Lichtschranke
 +
* Ausgabe der Schreibschutz Kontrolle an das Laufwerk
 +
* Ausgabe der Geräte Nummer an das Laufwerk
 +
* Ausgabe des Reset Signal an das Laufwerk 
 +
* Steuerung des CPLD
 +
 
 +
 
 +
Der Controller ist ein ATmega328PB. Das ist ein naher Verwandter des ATmega328 der im Arduino UNO verwendet wird. Die Software ist ein normales Arduino Programm und wird über die Arduino IDE erstellt. Die Programmierung des Controller erfolgt aber über einen SPI Connector auf dem MeGALoDOS Board.
 +
 
 +
Der Arduino Quellcode ist frei verfügbar. Damit kann man sich die Menü Führung am OLED Display anpassen und frei nach eigenem Wunsch gestalten. Prinzipiell kann man dadurch auch jedes beliebige Display verwenden oder ein anderes Eingabegerät implementieren, anstatt des Drehencoder.
 +
 
 +
 
 +
<u>Programmieren des ATmega</u>:
 +
 
 +
* Floppy Laufwerk ausschalten
 +
* Flachband Kabel anschließen (vom ISP Programmer zum ISP Connector des MeGALoDOS)
 +
* Der Programmer muss das MeGALoDOS mit 5V versorgen (alternativ kann das auch extern gemacht werden)
 +
* Arduino HEX File (ohne Bootloader) in den ATmega flashen
 +
 
 +
 
 +
<u>Das Schreiben des Arduino Code in den ATmega kann auf zwei Arten erfolgen</u>:
 +
 
 +
* direkt aus der Arduino IDE heraus (der Programmer muss unterstützt werden von der IDE)
 +
* über einen Umweg: die IDE erzeugt eine HEX Datei, die HEX Datei wird übertragen durch ein bevorzugtes Tool
 +
 
 +
 
 +
Der Programmer benötigt einen ISP-6 Anschluss. Wenn nur ein ISP-10 Anschluss vorhanden ist, dann benötigt man einen Adapter (ISP-10 to ISP-6).
 +
 
 +
Wenn kein Programmer zur Verfügung steht, dann kann auch [https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP '''ein Arduino Board''' (zb. UNO-R3 oder Nano) '''dafür verwendet werden'''].<br />
 +
Es funktioniert mit einem blanken Arduino Board (mit einzel Drähte) als auch mit einem [https://www.elecrow.com/wiki/index.php?title=AVR_ISP_Shield '''ISP Shield'''].
 +
 
  
 +
<u>Die Arduino IDE benötigt zum übersetzen des Quelltext zusätzliche LIB's</u>:
  
<u>Fotos von 1541 Laufwerke mit MeGALoDOS:</u>   (Dank an Tommy_nrw für die freundliche Erlaubnis diese Fotos zu benutzen)
+
* Adafruit SSD1306 Library
 +
* Encoder Arduino Library
 +
 
 +
 
 +
In der Arduino IDE muss vor der Übersetzung des Quellcode immer die Art des Ziel-Board angegeben werden. Nach der Installation der Arduino IDE stehen nur die Boards zur Auswahl, die üblich sind (UNO, Mano, Mikro, Leonardo ...). In unserem Fall ist das 'Ziel-Board' ein MeGALoDOS. Für den Controller auf dem Board gibt das Paket [https://github.com/MCUdude/MiniCore ''''MiniCore''''], das die gängigen AVR Controller unterstützt.
 +
 
 +
 
 +
<u>Installation des Paket 'MiniCore'</u>:
 +
 
 +
* In der IDE unter Datei-Voreinstellungen muss ist ein Feld 'Zusätzlicher Boardverwalter URLs', da muss die Github URL eingetragen werden (JSON Datei)
 +
* In der IDE unter Werkzeuge-Board-Boardverwalter das 'MiniCore' suchen und installieren
 +
* dann kann man den ATmega328 auswählen als "Board"
 +
* bei den Einstellungen noch 'extern 16MHz' und 'Variant 328PB' wählen
 +
 
 +
<br />
 +
== Der Lattice CPLD ==
 +
 
 +
Der CPLD ist das Herzstück des MeGALoDOS. Er ist zuständig für das Speicher Banking, Adressdekodierung, Kommunikation zum ATMega Controller, Spezialfunktionen wie die GCR Decoder und er überwacht die CPU 6502 des Floppy Laufwerk.
  
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
+
Normalerweise muss an dem CPLD nichts gemacht werden. Aber es ist möglich, den CPLD neu zu programmieren. Dazu gibt es auf dem MeGALoDOS Board einen JTAG Connector. Um den CPLD zu programmieren benötigt man eine JEDEC Datei und ein Lattice Programmer (zB. einen HW-USBN-2A oder 2B). Die Software am PC heißt Diamond Programmer von Lattice, mit der kann man eine JEDEC Datei in den CPLD programmieren.
Image:MeGALoDOS_01a.jpg
 
Image:MeGALoDOS_01b.jpg
 
Image:MeGALoDOS_01c.jpg
 
Image:MeGALoDOS_01d.jpg
 
</gallery>
 
  
 
<br />
 
<br />
Zeile 103: Zeile 240:
 
==== Flash beschreiben mit einem C64 ====
 
==== Flash beschreiben mit einem C64 ====
  
Die Programmierung des Flash Speicher kann auch von einem C64 aus durchgeführt werden. Die 33 Blöcke zu je 8KB sind zu groß für eine Diskette. Man benötigt '''zwei Disketten''' (oder zwei Seiten einer Diskette). Auf der Seite A befinden sich die Flash Blöcke 00 bis 12, auf Seite B die Blöcke 13 bis 22. Die Blöcke 1B und 1C sind "Reserve" und werden nicht geschrieben.
+
Die Programmierung des Flash Speicher kann auch von einem C64 aus durchgeführt werden. Jedes DOS braucht 1 bis 3 Speicherblöcke zu 8KB. Jeder 8KB Speicherblock benötigt 33 Blöcke auf einer Diskette. Für alle DOS Varianten benötigt man '''zwei Disketten''' (oder beide Seiten von einer Diskette). Auf der Seite A befinden sich die Speicherblöcke 00 bis 12, auf Seite B die Speicherblöcke 13 bis 22. Die Speicherblöcke 1B und 1C sind "Reserve" und werden nicht geschrieben.
  
 
Auf jeder Diskettenseite befindet sich ein kleines BASIC Programm, das den Flashvorgang durchführt:  
 
Auf jeder Diskettenseite befindet sich ein kleines BASIC Programm, das den Flashvorgang durchführt:  
Zeile 194: Zeile 331:
 
Man kann damit das Banking steuern, den Flash Speicher verwalten, RAM testen und Dateien laden.  
 
Man kann damit das Banking steuern, den Flash Speicher verwalten, RAM testen und Dateien laden.  
  
Das Tool ist speziell für die Modi "Super-RAM DD" und "Super-RAM PD" ausgelegt, funktioniert aber teilweise auch in den anderen MeGALoDOS Modi.
 
  
Der FMON muss zuerst in den RAM des MeGALoDOS geladen werden. Dazu dient der Befehl '@&FMON', der den FMON in den RAM ab $3000 lädt. Um die FMON Befehle komfortabel nutzen zu können, wird im Buffer #2 der Floppy ein Sprungbefehl zum FMON CLI eingetragen. Solange der Buffer #2 nicht überschrieben wird, können FMON Befehle über den U3 Befehl des DOS ausgeführt werden. Wenn der Inhalt des Buffer #2 überschrieben wird, dann kann man den Inhalt wieder herstellen durch Aufruf eines Programm an der Adresse $3004. Alternativ kann man natürlich den FMON auch einfach erneut laden.
+
'''[[FremdeProjekte/MeGALoDOS/FMON|Doku zu den FMON Kommandos]]'''
 
 
Die FMON Befehle werden über den Kommando Kanal #15 an das Laufwerk gesendet. Dazu muss ein 'U3:' vorangestellt werden. <br />
 
Zum Beispiel der Befehl 'FEN' schaltet das Flash Banking ein und wird aufgerufen durch: "@U3:FEN"
 
  
  
Zeile 224: Zeile 357:
 
* RDD -- disable RAM-Disk
 
* RDD -- disable RAM-Disk
 
* RDS XX -- set RAM-Disk Bank (00-FF)
 
* RDS XX -- set RAM-Disk Bank (00-FF)
* RDT [X] -- test RAM-Disk  
+
* RDT [XX] -- test RAM-Disk  
  
  
Zeile 239: Zeile 372:
 
* TDD -- test RAM-Bank of Super-RAM SD
 
* TDD -- test RAM-Bank of Super-RAM SD
 
* TPD -- test RAM-Bank of Super-RAM PD
 
* TPD -- test RAM-Bank of Super-RAM PD
 
 
<br />
 
=== Befehle für Modus Wechsel ===
 
 
FMON ist ein Tool für das MeGALoDOS das speziell für die neuen Modi 'Super-RAM DD' und 'Super-RAM PD' entwickelt wurde. Prinzipiell funktioniert FMON auch in andere Modi des MeGALoDOS, allerdings gibt es einige Befehle die nur Sinn machen im Super-RAM Modus.
 
 
Man kann den aktuell eingestellten Modus abfragen mit Hilfe des U3 Befehl ohne weitere Parameter:
 
 
@U3  <br />
 
00,FMON DD,00,00
 
 
Der FMON antwortet im Fehlerkanal der Floppy mit '00,FMON DD,00,00' wenn er sich im Modus 'Super-RAM DD' befindet.<br />
 
Der FMON antwortet im Fehlerkanal der Floppy mit '00,FMON PD,00,00' wenn er sich im Modus 'Super-RAM PD' befindet.
 
 
<br />
 
==== Befehl SDD (set DD) ====
 
 
Dieser Befehl schaltet FMON in den Modus 'Super-RAM DD': @U3:SDD<br />
 
 
In diesem Modus geht FMON von einer bestimmten Speicher Konfiguration aus:
 
 
* 8KB RAM-Bank (Track Buffer) an der Adresse $4000 - $5FFF
 
* 8KB banked Flash  an der Adresse $6000 - $7FFF
 
 
<br />
 
==== Befehl SPD (set PD) ====
 
 
Dieser Befehl schaltet FMON in den Modus 'Super-RAM PD': @U3:SPD<br />
 
 
In diesem Modus geht FMON von einer bestimmten Speicher Konfiguration aus:
 
 
* 8KB RAM-Bank (Track Buffer) an der Adresse $8000 - $9FFF
 
* 8KB banked Flash  an der Adresse $A000 - $BFFF
 
 
<br />
 
 
=== Befehle die den Flash betreffen ===
 
 
Der Flash Speicher des MeGALoDOS hat eine Größe von 512KB. Der Flash Speicher wird in den 'Super RAM' Modi stückweise (als 8KB Block) eingeblendet. Der gesamte Flash besteht aus 64 Blöcken zu je 8KB. Über das Flash Bank Register kann man wählen, welcher 8KB Block des Flash Speicher gerade sichtbar ist. Die Flash Bank geht dabei von 0 bis 63 ($00 bis $3F).
 
 
<br />
 
==== Befehl FEN (Flash enable) ====
 
 
Das MeGALoDOS kann den Flash Speicher ein- und ausschalten.
 
Der Befehl FEN schaltet den Flash Speicher ein.
 
 
Die meisten Befehle die mit dem Flash Speicher zu tun haben, die schalten den Flash automatisch ein. Weil der Befehl bei ausgeschaltetem Flash keinen Sinn machen würde.
 
 
<br />
 
 
==== Befehl FDA (Flash disable) ====
 
 
Das MeGALoDOS kann den Flash Speicher ein- und ausschalten.
 
Der Befehl FDA schaltet den Flash Speicher aus.
 
 
<br />
 
==== Befehl FSB (Flash set Bank) ====
 
 
Der Befehl FSB setzt die '''aktuelle Flash Bank''', also die Bank die gerade sichtbar ist. FSB benötigt '''einen Parameter''', der als Hex Zahl angegeben wird. <br />
 
Zum Beispiel:
 
 
@U3:FSB 1E
 
 
In dem Beispiel wird die Flash Bank 1E (dezimal 30) selektiert. In dem 8KB Flash Fenster sieht man nun die Flashspeicher Bank 1E, das entspricht der Adresse $3C000 im Flash Speicher. Aus der MeGALoDOS Doku sehen wir, was in Flash Bank 1E gespeichert ist: LOROM - Super RAM DOS DD
 
 
<br />
 
 
==== Befehl FRD (Flash read) ====
 
 
Der Befehl liest den Inhalt der aktuellen Flash Bank in die RAM-Bank (Track Buffer). Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird der Inhalt der angegebenen Flash Bank gelesen.  <br />
 
 
Zum Beispiel:
 
 
@U3:FRD <br />
 
@U3:FRD 1A
 
 
In dem ersten Beispiel wird die '''aktuelle Flash Bank''' in die RAM-Bank kopiert. Im zweiten Beispiel wird '''Flash Bank 1A''' in die RAM-Bank kopiert. Es wird der gesamte Inhalt der Flash Bank (8KB) kopiert. Ist der Kopiervorgang erfolgreich, dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
 
==== Befehl FCP (Flash compare) ====
 
 
Der Befehl vergleicht den Inhalt der aktuellen Flash Bank mit der RAM-Bank (Track Buffer). Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann setzt er die aktuelle Flash Bank.  <br />
 
 
Zum Beispiel:
 
 
@U3:FCP <br />
 
@U3:FCP 22
 
 
In dem ersten Beispiel wird die '''aktuelle Flash Bank''' mit der RAM-Bank verglichen. Im zweiten Beispiel wird '''Flash Bank 22''' mit der RAM-Bank verglichen. Der Vergleich umfasst den gesamten Inhalt der Flash Bank (8KB). Sind der Inhalt von Flash und RAM identisch, dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
==== Befehl FER (Flash erase) ====
 
 
'''''Bitte Vorsicht mit dem Befehl FER!'''''
 
 
Die Betriebssoftware (DOS) ist im Flash gespeichert. Wird der Flash Speicher gelöscht, dann läuft die Floppy nicht mehr richtig. Also zumindest der MeGALoDOS Modus, der betroffen ist durch diese Flash Bank.
 
 
Dieser Befehl löscht den Inhalt der aktuellen Flash Bank. Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird die angegebene Flash Bank gelöscht.  <br />
 
 
Zum Beispiel:
 
 
@U3:FER <br />
 
@U3:FER 22
 
 
In dem ersten Beispiel wird die '''aktuelle Flash Bank''' gelöscht. Im zweiten Beispiel wird '''Flash Bank 22''' gelöscht. Ein gelöschter Flash Speicher enthält nur noch $FF. Wenn der Löschvorgang erfolgreich ist (gesamter Inhalt der Bank ist $FF), dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
==== Befehl FBT (Flash Blank Test) ====
 
 
Der Befehl prüft, ob die aktuelle Flash Bank leer ist (Blank Test). Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird der Inhalt der angegebenen Flash Bank geprüft. Der optionale Parameter kann hier auch ein '*' sein, in diesem Fall werden alle 64 Flash Banks geprüft (Blank Test des gesamten Flash). <br />
 
 
Zum Beispiel:
 
 
@U3:FBT <br />
 
@U3:FBT 21 <br />
 
@U3:FBT *
 
 
In dem ersten Beispiel wird geprüft, ob die '''aktuelle Flash Bank''' leer ist (alle Byte sind $FF). Im zweiten Beispiel wird die '''Flash Bank 21''' geprüft, ob sie leer ist. Im dritten Beispiel wird ein Blank Test auf den gesamten Flash Speicher (512KB) durchgeführt. Ist der Flash Speicher leer (alle Bytes sind $FF), dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
 
==== Befehl FCE (Flash Chip erase) ====
 
 
'''''Bitte Vorsicht mit dem Befehl FCE!'''''
 
 
Die Betriebssoftware (DOS) ist im Flash gespeichert. Wird der Flash Speicher gelöscht, dann läuft die Floppy nicht mehr richtig.
 
 
Der Befehl FCE löscht den Inhalt des gesamten Flash Speicher!! Dem Befehl muss man einen Pseudo Parameter mitgeben, der als Schutz vor ungewollter Benutzung dient. Der Parameter muss '5A' sein, dann wird der Flash Speicher komplett gelöscht.  <br />
 
 
Zum Beispiel:
 
 
@U3:FCE 5A
 
 
<br />
 
 
==== Befehl FWR (Flash write) ====
 
 
Der Befehl schreibt den Inhalt der RAM-Bank (8KB) in die aktuelle Flash Bank. Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird die angegebene Flash Bank beschrieben.  <br />
 
 
Zum Beispiel:
 
 
@U3:FWR <br />
 
@U3:FWR 1A
 
 
In dem ersten Beispiel wird die '''aktuelle Flash Bank''' beschrieben. Im zweiten Beispiel wird die '''Flash Bank 1A''' beschrieben. Es wird immer die gesamte Flash Bank (8KB) beschrieben. Ist der Schreibvorgang erfolgreich, dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
Es wird automatisch vor dem Schreibvorgang ein Flash-Erase ausgeführt. Nach dem Schreibvorgang wird der Inhalt des Flash verglichen mit der RAM-Bank (flash compare). Die beiden Vorgänge können ebenfalls zu einer Fehlermeldung führen.
 
 
<br />
 
 
=== Befehle die den RAM betreffen ===
 
 
<br />
 
==== Befehl RBE (RAM Bank enable) ====
 
 
Das MeGALoDOS kann die RAM-Bank (Track Buffer) ein- und ausschalten.
 
Der Befehl RBE schaltet die RAM-Bank ein.
 
 
Die meisten Befehle die mit der RAM-Bank zu tun haben, die schalten den Speicher automatisch ein. Weil der Befehl bei ausgeschalteter RAM-Bank keinen Sinn machen würde.
 
 
<br />
 
 
==== Befehl RBD (RAM Bank disable) ====
 
 
Das MeGALoDOS kann die RAM-Bank (Track Buffer) ein- und ausschalten.
 
Der Befehl RBD schaltet die RAM-Bank aus.
 
 
<br />
 
 
==== Befehl RBS (RAM Bank set) ====
 
 
Der Befehl setzt die '''aktuelle RAM-Bank''', also die Bank die gerade sichtbar ist. RBS benötigt '''einen Parameter''', der als Hex Zahl angegeben wird. <br />
 
Zum Beispiel:
 
 
@U3:RBS 1E
 
 
In dem Beispiel wird die RAM-Bank 1E (dezimal 30) selektiert. In dem 8KB RAM-Bank Fenster sieht man nun die Bank 1E.
 
 
<br />
 
 
==== Befehl RBF (RAM Bank fill) ====
 
 
Der Befehl füllt alle Speicherzellen der '''aktuellen RAM-Bank''' mit einem Füll Byte. Der Befehl RBF benötigt '''einen Parameter''', der als Hex Zahl angegeben wird. <br />
 
Zum Beispiel:
 
 
@U3:RBF A3
 
 
In dem Beispiel wird die aktuelle RAM-Bank mit dem Wert $A3 befüllt.
 
 
<br />
 
==== Befehl RBT (RAM Bank Test) ====
 
 
Der Befehl überprüft eine RAM-Bank, ob der RAM in Ordnung ist. Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird der Inhalt der angegebenen RAM Bank getestet. Der optionale Parameter kann hier auch ein '*' sein, in diesem Fall werden alle 60 RAM Bänke geprüft (Test der gesamten RAM Bank). <br />
 
 
Zum Beispiel:
 
 
@U3:RBT <br />
 
@U3:RBT 21 <br />
 
@U3:RBT *
 
 
In dem ersten Beispiel wird die '''aktuelle RAM-Bank''' getestet. Im zweiten Beispiel wird die '''RAM-Bank 21''' getestet. Im dritten Beispiel wird der gesamte RAM Bank Speicher (512KB) getestet. Ist der RAM in Ordnung, dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
==== Befehl RLD (RAM Bank Load) ====
 
 
Der Befehl ladet eine Datei von  Diskette in die '''aktuelle RAM-Bank'''. Es werden maximal 8KB der Datei geladen. Ist die Datei kürzer als 8KB, dann werden nur die verfügbaren Bytes geladen. Der Befehl RLD benötigt '''einen Parameter''', der als Dateiname angegeben wird. Wenn auf der Diskette keine Datei mit dem angegebenen Namen existiert, dann kommt die Fehlermeldung '39,file not found,00,00'<br />
 
 
Zum Beispiel:
 
 
@U3:RLD BLOCK1
 
 
In dem Beispiel wird die Datei "BLOCK1" (PRG) in die aktuelle RAM-Bank geladen.
 
 
<br />
 
==== Befehl RDE (RAM Disk enable) ====
 
 
Das MeGALoDOS kann die beiden RAM-Disks ein- und ausschalten.
 
Der Befehl RDE schaltet beide RAM-Disks ein.
 
 
Die meisten Befehle die mit der RAM-Disks zu tun haben, die schalten diese automatisch ein. Weil der Befehl bei ausgeschalteter RAM-Disk keinen Sinn machen würde.
 
 
<br />
 
==== Befehl RDD (RAM Disk disable) ====
 
 
Das MeGALoDOS kann die beiden RAM-Disks ein- und ausschalten. Der Befehl RDD schaltet beide RAM-Disks aus.
 
 
<br />
 
==== Befehl RDS (RAM Disk Setbank) ====
 
 
Das MeGALoDOS hat zwei RAM Disk zu je 256KB. Damit kann man zwei ganze Disketten (oder zwei Disketten Seiten) im Speicher halten. Im Adressraum der Floppy belegt jede RAM-Disk gerade mal 1KB (beide RAM-Disks belegen 2KB). Die RAM-Disk hat 256 Bänke, gerade soviel wie ein Daten Block auf der Diskette braucht. Jede RAM-Disk hat Platz für 1024 solcher Daten Blöcke. Eine Diskette in der 1541 hat normalerweise nur 660 Blöcke. Für die genaue Doku zur RAM Disk siehe [[Medium:TurboTrans-Manual.pdf|TurboTrans Manual]].
 
 
Der Befehl setzt die '''aktuelle Bank''' der beiden RAM-Disk, also die Bank die gerade sichtbar ist. RBS benötigt '''einen Parameter''', der als Hex Zahl angegeben wird.
 
 
Zum Beispiel:
 
 
@U3:RDS E1
 
 
In dem Beispiel wird die RAM-Disk Bank E1 selektiert. In dem 2KB RAM Disk Fenster sieht man nun die Bank E1, was dem Byte 225 in jedem Daten Block enspricht.
 
 
<br />
 
==== Befehl RDT (RAM Disk Test) ====
 
 
Der Befehl überprüft eine oder beide RAM-Disks. Dem Befehl kann man einen '''optionalen Parameter''' mitgeben, der als Hex Zahl angegeben wird. Wenn der Parameter mitgegeben wird, dann wird die angegebene RAM-Disk getestet. Wird kein Parameter angegeben, dann werden beide RAM-Disks geprüft. <br />
 
 
Zum Beispiel:
 
 
@U3:RDT 2  <br />
 
@U3:RDT
 
 
In dem ersten Beispiel wird die '''RAM-Disk 2''' getestet. Im zweiten Beispiel werden '''beide RAM-Disks''' getestet. Ist die RAM-Disk in Ordnung, dann meldet die Floppy im Fehler Kanal '00,ok,00,00'. Ansonsten kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
<br />
 
 
=== Hardware Test Befehle ===
 
 
Das MeGALoDOS besteht aus RAM, Flash, CPLD und einem ATmega. An sich keine große Sache auf den ersten Blick. Der Clou ist die raffinierte Logik in dem CPLD Baustein. Erst diese Logik macht dieses Board zu einem kleinen Wunderwerk. Es macht die Speicherbausteine sichtbar im Adressraum der CPU, es emuliert zahlreiche verschiedene Speeder Hardware, es ermöglicht blitzschnelle GCR Dekodierung und zwei RAM Disks.
 
 
Folgende Befehle dienen dazu, die CPLD Logik im MeGALoDOS zu testen bzw. die Funktion zu überprüfen.
 
 
<br />
 
==== Befehl TRA (Test RAM available) ====
 
 
Dieser Befehl überprüft, ob an der angegebenen Adresse RAM existiert und ob dieser richtig funktioniert. Es wird jedes Byte im '''angegebenen Adressraum''' überprüft, wobei jedes Bit gesetzt und gelöscht wird. Der Befehl zerstört den Inhalt des RAM nicht (''non destructive''). Dadurch kann man auch sensible Bereiche testen, wie ZP und Stack, ohne dass der Betrieb des DOS gestört wird. Allerdings kann man den RAM in dem sich FMON befindet NICHT testen. Der FMON überprüft dies und meldet beim Versuch: 31,syntax error,00,00
 
 
Der Befehl benötigt einen Parameter, der als Hex Zahl angegeben wird. Der Parameter bestimmt den '''RAM Bereich''' (Adresse, Länge) der überprüft werden soll.
 
 
 
<u>Mögliche RAM Bereiche</u>
 
 
00 ... testet 2KB ($0000-$07FF) <br />
 
08 ... testet 2KB ($0800-$0FFF)  --- MeGALoDOS Zusatz RAM <br />
 
28 ... testet 2KB ($2800-$2FFF)  --- RAM-Disk 1 und 2 <br />
 
30 ... testet 4KB ($3000-$3FFF)  --- MeGALoDOS Zusatz RAM  <br />
 
40 ... testet 8KB ($4000-$5FFF)  --- Super-RAM DD : RAM-Bank <br />
 
60 ... testet 8KB ($6000-$7FFF)  --- normal kein RAM  <br />
 
80 ... testet 8KB ($8000-$9FFF)  --- Super-RAM PD : RAM-Bank <br />
 
A0 ... testet 8KB ($A000-$BFFF)  --- normal kein RAM  <br />
 
 
<br />
 
==== Befehl TRW ====
 
 
Dieser Befehl schreibt ein Daten Muster (Pattern) an der angegebenen Adresse im RAM. Es wird jedes Byte im '''angegebenen Adressraum''' beschrieben. Der Befehl zerstört den Inhalt des RAM (''destructive''). Dadurch kann man diesen Befehl in sensible Bereiche nicht benutzen, zB. im DOS Bereich wie ZP und Stack. Der Befehl kann auch nicht in dem RAM Bereich benutzt werden, in dem sich FMON befindet. Der FMON überprüft dies und meldet beim Versuch: 31,syntax error,00,00
 
 
Das Daten Muster wird nur geschrieben und nicht überprüft.
 
 
Der Befehl benötigt einen Parameter, der als Hex Zahl angegeben wird. Der Parameter bestimmt den '''RAM Bereich''' (Adresse, Länge) der überprüft werden soll.
 
 
<br />
 
==== Befehl TRV ====
 
 
Dieser Befehl überprüft, ob sich ein bestimmtes Daten Muster (Pattern) an der angegebenen Adresse im RAM befindet. Es wird jedes Byte im '''angegebenen Adressraum''' überprüft. Das Daten Muster wird nicht geschrieben sondern nur überprüft. Wenn das Daten Muster richtig gelesen wird, meldet die Floppy dies im Fehlerkanal mit 00,ok,00,00. Im Fehlerfall kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
Der Befehl benötigt einen Parameter, der als Hex Zahl angegeben wird. Der Parameter bestimmt den '''RAM Bereich''' (Adresse, Länge) der überprüft werden soll.
 
 
<br />
 
 
==== Befehl TRP (Test RAM pattern) ====
 
 
Dieser Befehl schreibt und prüft ein Daten Muster (Pattern) an der angegebenen Adresse im RAM. Es wird jedes Byte im '''angegebenen Adressraum''' beschrieben. Der Befehl zerstört den Inhalt des RAM (''destructive''). Dadurch kann man diesen Befehl in sensible Bereiche nicht benutzen, zB. im DOS Bereich wie ZP und Stack. Der Befehl kann auch nicht in dem RAM Bereich benutzt werden, in dem sich FMON befindet. Der FMON überprüft dies und meldet beim Versuch: 31,syntax error,00,00
 
 
Das Daten Muster wird zuerst vollständig geschrieben und danach überprüft. Wenn das Daten Muster richtig gelesen wird, meldet die Floppy dies im Fehlerkanal mit 00,ok,00,00. Im Fehlerfall kommt die Standard Fehlermeldung: 25,write error,00,00
 
 
Der Befehl benötigt einen Parameter, der als Hex Zahl angegeben wird. Der Parameter bestimmt den '''RAM Bereich''' (Adresse, Länge) der überprüft werden soll.
 
 
<br />
 
 
==== Befehl TGP ====
 
 
<br />
 
==== Befehl TGM ====
 
 
<br />
 
==== Befehl TDD ====
 
 
<br />
 
==== Befehl TPD ====
 
 
  
 
<br />
 
<br />
Zeile 568: Zeile 382:
 
* ein Disketten Kopierprogramm
 
* ein Disketten Kopierprogramm
 
* ein GCR Nibble Copy
 
* ein GCR Nibble Copy
 +
* ein eigenes DOS ...
 
* ...
 
* ...
  
Zeile 625: Zeile 440:
 
<br />
 
<br />
 
=== GCR Hardware Dekoder ===
 
=== GCR Hardware Dekoder ===
 +
 +
 +
<br />
 +
 +
= MeGALoROM =
 +
 +
Die Hardware des '''MeGALoROM''' Board wurde entwickelt von [https://www.forum64.de/wcf/index.php?user/13204-tommi-nrw/ '''Tommy_nrw'''] aus dem [https://www.forum64.de/ Forum-64]. <br />
 +
 +
Dieses Board ist das ideale Gegenstück zum MeGALoDOS Board. Es ist ein automatischer Kernal Umschalter für den C64. Im C64 benötigt man für jedes DOS einen passenden Kernal. Das MeGALoROM Board enthält 2 EEPROM vom Typ W27C512 und einen GAL. Zusammen haben die beiden EPROMs 128KB und damit Platz für 16 Kernal zu 8KB.
 +
 +
Das Board funktioniert in jedem C64 Mainboard, egal ob das ROM 24 polig (alter C64) oder 28 polig  (neuere C64 mit kombiniertem BASIC + Kernal) ist. Die neueren C64 haben ein 16KB großes ROM, wo BASIC und Kernal kombiniert ist in einem Chip. In diesen C64 belegt das BASIC einen der 16 Slots, daher sind hier nur 15 Kernels möglich.
 +
 +
Das MeGALoROM ist in der Lage auch mehrere BASIC aufzunehmen, die man dann umschalten kann. Zudem kann das Board auch ein oder mehrere CHAR ROM aufnehmen. Man kann damit alle ROM in einem C64 ersetzen.
 +
 +
Die Auswahl des Kernal erfolgt über 4 Pins auf dem Board. Die Logik ist verkehrt herum, Kernal 0 (standard C64 Kernal) erreicht man durch die Ausgabe von 4x High (1-1-1-1). Wenn man nun diese 4 Pins mit dem MeGaloDOS (Header 26) verbindet, dann selektiert das MeGALoDOS automatisch den korrekten Kernal im C64. Wenn man keine automatische Kernal Auswahl möchte, dann muss man den den C64 Kernal manuell auswählen.
 +
 +
 +
<u>Für die manuelle Kernal Auswahl gibt es viele Möglichkeiten</u>:
 +
 +
* im einfachsten Fall 4 Schalter oder DIP Switch oder ähnliches
 +
* ein 4 poliger Kodier Drehschalter
 +
* oder zb. ein Arduino
 +
 +
 +
Die manuelle Auswahl per Arduino ist sehr komfortabel, weil ich den aktuellen Kernal zB. auf einem Display darstellen kann. Der Arduino Sketch stammt von einem älteren Projekt von mir ([[C64-Controller]]). Die Software kann man nach belieben anpassen. Optional kann man mit dem Arduino auch ein internes SD2IEC steuern.
 +
 +
Der Einbau des Arduino kann zum Beispiel in der Gehäuse Oberseite von einem Brotkasten erfolgen:
 +
 +
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:MeGALoROM_02.png
 +
Image:MeGALoROM_01.jpg
 +
Image:C64-MeGALoROM.GIF
 +
Image:MeGALoROM_04.jpg
 +
Image:MeGALoROM 7b.jpg
 +
Image:MeGALoROM 7c.jpg
 +
Image:MeGALoROM_05.jpg
 +
</gallery>
 +
 +
 +
<u>Benötigtes Material</u>:
 +
 +
* ein MeGALoROM Board (steckt direkt im Sockel des C64 Kernal)
 +
* ein Arduino Nano
 +
* ein OLED oder ein LCD Display
 +
* ein Drehgeber
 +
* ein paar Drähte
  
  
Zeile 633: Zeile 494:
 
* [[Medium:MeGALoDOS-FlashTool.zip|MeGALoDOS Flashtool]] - bestehend aus zwei Disketten Images (ohne ROM Dateien) und einem Tool für Windows
 
* [[Medium:MeGALoDOS-FlashTool.zip|MeGALoDOS Flashtool]] - bestehend aus zwei Disketten Images (ohne ROM Dateien) und einem Tool für Windows
 
* [[Medium:MeGALoDOS-RAM-Test.zip|MeGALoDOS RAM Test]] - bestehend aus einem Disketten Image und mehreren Dateien für Tests unter OpenCBM
 
* [[Medium:MeGALoDOS-RAM-Test.zip|MeGALoDOS RAM Test]] - bestehend aus einem Disketten Image und mehreren Dateien für Tests unter OpenCBM
 +
 +
* [[Medium:MeGALoDOS-FMONdisk_01.zip|MeGALoDOS FMON - Floppy Monitor - BASIC Code Diskette (D64)]]
 +
* [[Medium:MeGALoDOS-FMONscripts_01.zip|MeGALoDOS FMON - Floppy Monitor - Open-CBM Scripts]]
 +
 +
* [[Medium:MeGALoDOS-AVR.zip|MeGALoDOS Sourcecode des ATmega]]
 +
 +
* [[Medium:MeGALoROM.zip|Arduino Sketch + Hex Dateien für die Ansteuerung des MeGALoROM]]
  
 
<br />
 
<br />
  
= Dokumente =
+
= Dokumentation =
  
 +
* [[Medium:MeGALoDOS_manual_V1.2.pdf|MeGALoDOS Handbuch]]
 +
 +
* [[FremdeProjekte/MeGALoDOS/FMON|FMON Handbuch]]
 
* [[Medium:TurboTrans-Manual.pdf|TurboTRans Manual]] (<u>Quelle</u>:[https://rr.pokefinder.org/wiki/File:TurboTrans_Manual_german_with_v3_addendum.pdf rr.pokefinder.org])
 
* [[Medium:TurboTrans-Manual.pdf|TurboTRans Manual]] (<u>Quelle</u>:[https://rr.pokefinder.org/wiki/File:TurboTrans_Manual_german_with_v3_addendum.pdf rr.pokefinder.org])
  
Zeile 644: Zeile 515:
 
= Links =
 
= Links =
  
* [https://www.forum64.de/index.php?thread/98865-neues-projekt-megalodos/&pageNo=1 Neues Projekt MeGALoDOS (im Forum-64]
+
* [https://www.forum64.de/index.php?thread/98865-neues-projekt-megalodos/&pageNo=1 Neues Projekt MeGALoDOS (im Forum-64)]
 +
* [https://www.forum64.de/index.php?thread/112467-megalorom-kernel-umschalter-f%C3%BCr-c64-passend-zum-megalodos/ Neues Multi Kernal Board: MeGALoROM (im Forum-64)]
 
* [https://opencbm.trikaliotis.net/ OpenCBM - Users Guide (Spiro's home)]
 
* [https://opencbm.trikaliotis.net/ OpenCBM - Users Guide (Spiro's home)]
 +
* [https://www.vclab.de/geschichten/commodore64/die-geschichte-des-commodore-64-floppy-beschleuniger/# Die Geschichte der Floppy Beschleuniger]
 
* [http://www.tim-schuermann.de/c64/de/2002/profdos2.html Professional DOS - Die Hardware (von Tim Schürmann)]
 
* [http://www.tim-schuermann.de/c64/de/2002/profdos2.html Professional DOS - Die Hardware (von Tim Schürmann)]
 
* [http://d81.de/ProfessionalDOS/ Professional-DOS @ D81.DE (Wolfgang Moser])
 
* [http://d81.de/ProfessionalDOS/ Professional-DOS @ D81.DE (Wolfgang Moser])
 +
* [https://www.forum64.de/index.php?thread/98865-neues-projekt-megalodos/&postID=1606603#post1606603 Hardware Speeder - Geschwindigkeits Vergleich]
 +
 +
 +
<u>Lösungen für C64 Kernal Umschalter </u>:
 +
* [[C64-Controller|C64 Kernal Auswahl über Dehencoder und OLED]]
 +
* [https://www.forum64.de/index.php?thread/77810-superkernal-erstinbetriebnahme-storage-collections-sks-faq/&highlight=superke C64 - Super Kernal]
 +
* [https://www.forum64.de/index.php?thread/87120-vorstellung-projekt-magicflash64/ MagicFlash64 - Flash Speicher als C64 Kernal]
 +
* [https://github.com/bwack/C64-Switchless-Multi-Kernal-27C256-adapter 8 fach Kernel Umschalter mit ATTiny ]
 +
* [https://www.forum64.de/index.php?thread/62219-der-schrittweise-aufbau-der-4-8-fach-kernal-umschaltung-f%C3%BCr-den-c64-zum-zusehen/ 4/8-fach Kernal Umschaltung BitBreaker4U]
 +
* [http://www.arke.de/elektronik/commodore-64-vollelektronische-kernal-umschalt-platine/ 8-fach Kernal Umschaltung (Arke)]
 +
* [https://8bitrechner.wordpress.com/2015/01/10/8-fach-kernal-umschaltplatine-schalterlos/  8-fach Kernal Umschaltung (8bitrechner)]
 +
* [https://technology-blog.net/c64-kernel-umschalter/ Faszination C64 - 3/6-fach Kernel Umschalter für Commodore 64]
 +
* [https://www.pcbway.com/project/shareproject/COMMODORE_64_SD2iEC___KERNAL_CART_COMBO.html Kernal-Cart + SD2IEC Combo]
 
* [https://github.com/bwack/C64-Switchless-Multi-Kernal-27C256-adapter 8 fach Kernel Umschalter mit ATTiny ]
 
* [https://github.com/bwack/C64-Switchless-Multi-Kernal-27C256-adapter 8 fach Kernel Umschalter mit ATTiny ]
 +
* [https://github.com/bwack/C64-Switchless-Multi-Kernal-27C256-adapter SKS-64 - switchless Kernal Switch]  [https://retrorewind.ca/sks64 (Bezugsquelle)]
 +
 +
  
 
<br />
 
<br />

Aktuelle Version vom 29. September 2021, 21:00 Uhr

---
---



MeGALoDOS Board

Die Hardware des MeGALoDOS Board wurde entwickelt von Tommy_nrw aus dem Forum-64.
Mit diesem Board wurde großartiges geleistet von TOMMY_NRW, vielen Dank dafür!
Das MeGALoDOS ist die ultimative Erweiterung für ein Commodore 1541 Floppy Laufwerk.

Es erweitert die Hardware einer normalen Commodore 1541 und eröffnet neue, fantastische Möglichkeiten!
Ein Jugend Traum wird wahr, genau sowas hat man sich früher gewünscht.
Nicht nur wegen des Geschwindigkeitsvorteil, sondern auch weil die Entwicklung von Code für die Floppy damit so einfach wird.


Fotos von 1541 Laufwerke mit MeGALoDOS: (Dank an Tommy_nrw für die freundliche Erlaubnis diese Fotos zu benutzen)



Möglichkeiten des Board

In erster Linie ist das MeGALoDOS der ultimative Floppy Speeder.


Das Board dient als Hardware Plattform für die Elite der klassischen Speeder:

  • Professional Dos (RAPI DOS)
  • Prologic DOS 1.6 (nicht classic)
  • Dolphin DOS 2.0
  • SpeedDOS Expert
  • QuickDOS
  • SpeedDOS
  • S-Jiffy DOS
  • Jiffy DOS
  • CBM DOS 2.6 mit Fix-Patches
  • Turbo Access 2.7
  • Turbo Trans 3.4 mit 512kb RAM-Disk


Zusätzlich gibt es zwei neue Betriebsarten:

  • Super-RAM DD
  • Super-RAM PD


Neben der Möglichkeiten als Floppy Speeder bietet das Board noch zahlreiche andere Dinge. Annehmlichkeiten die ich bei keinem Laufwerk vermissen möchte und die sonst häufig per Taster oder Kippschalter mehr oder weniger gut realisiert worden sind.


Weitere Möglichkeiten durch das Board:

  • informative Anzeige über ein OLED Display
  • komfortable Bedienung über einen Drehgeber
  • Wechsel zwischen den verschiedenen DOS Varianten
  • automatischer und manueller RESET
  • Disketten Schreibschutz Management
  • Disketten Verriegelungs-Erkennung
  • Einstellbare Geräte Nummer
  • optionale Track Anzeige über ein 7-Segment Display



Einbau und Inbetriebnahme

Der Einbau ist relativ einfach durchführbar, wenn die CPU des Floppy Laufwerk gesockelt ist. Das MeGALoDOS Board wird einfach in den Sockel der CPU 6502 gesteckt. Die CPU wird dann aufs MeGALoDOS Board gesteckt.

Zusätzlich zu dem Board braucht man ein paralleles Flachband Kabel zum Userport des C64. Ein Floppy Laufwerk mit Speed-DOS ist damit schon perfekt und genügt vollauf.


Zusatz Hardware für das MeGALoDOS:

  • optional: Austausch der Laufwerks LED gegen eine zweifärbige (rot/grpün)
  • optional: 7-Segment Anzeige (Track Anzeige)
  • optional: zwei Drähte für die Gerätenummer Umschaltung (8, 9, 10, 11)
  • optional: Lichtschranke für Disketten Schreibschutz
  • nicht optional: ein Draht zum Reset der Floppy (bei bestimmten 1541 Typen)
  • nicht optional: OLED Display (ohne kann man schlecht wechseln zwischen den DOS Varianten)
  • nicht optional: Drehencoder (ohne kann man schlecht wechseln zwischen den DOS Varianten)


Näheres dazu steht im Handbuch zum MeGALoDOS.


MeGALoDOS Hardware


Das MeGALoDOS besteht aus:

  • einem großen Flash Speicher (512KB)
  • einem großen SRAM​​ (1024KB)
  • einem Lattice CPLD
  • einem Atmel ATmega 328PB für die Steuerung


Große Mengen Speicher nützen wenig, wenn das Speicher Management nicht passt. Die 6502 CPU hat nur einen Adressraum von 64KB. Zudem soll das Board kompatibel sein mit dem originalen, bestehenden DOS und auch mit allen Speeder die emuliert werden. Deshalb wird der Speicher auf sinnvolle Weise stückweise eingeblendet. Auf wohl überlegte Art und Weise. Abhängig vom Betriebs Modus gibt es unterschiedliche Konfigurationen.


Auf geniale Weise wird jeder Winkel des Adressraum genützt::

  • 2K RAM ab 0x0800
  • 4K RAM ab 0x3000
  • 8KB Fenster für RAM (für Speeder)
  • 8KB Fenster für ROM (für Speeder)
  • 8KB Fenster mit 'banking' für RAM (Super RAM Modus)
  • 8KB Fenster mit 'banking' für ROM (Super RAM Modus)
  • 2K RAM mit Banking für RAM Disk


Neben der üppigen Speicherweiterung bietet das Board noch weitere Dinge:

  • optional 2MHz Modus für die CPU
  • zwei mal RAM Disk in der Art wie TurboTrans das gemacht hat
  • Trackbuffer für GCR Rohdaten
  • Hardware GCR encode/decode
  • integrierte RAM-Board / SuperCard+ Emulation


Der Flash Speicher

Der Flash Speicher steckt in dem 32 poligen DIL Sockel auf dem MeGALoDOS Board (ein 39SF040). Er hat eine Größe von 512KB, das entspricht 64 Blöcke (Banks) zu je 8KB. In dem Flash Speicher sind die verschiedenen DOS, GCR Tabellen und Zusatz ROM Inhalte gespeichert, die das MeGALoDOS in den verschiednen Modi anbietet. Der CPLD sorgt dafür, dass je nach Betriebs Modus die richtigen 8KB Blöcke an der richtigen Stelle im 6502 Adressraum eingeblendet werden.

Der Flash Speichert kann aus dem Sockel entnommen werden und zB. in einem TL866 Programmer gelöscht und beschrieben werden.

Es gibt aber auch Tools, mit denen man den Flash Speicher beschreiben kann von einem C64 aus oder alternativ von einem PC, ohne dass man den Flash Chip entfernen muss.


Der ATmega Controller

Der Controller ist zuständig für die Benutzer Schnittstelle und einige Komponenten:

  • Abfrage des Drehencoder
  • Anzeige am OLED Display
  • Anzeige der CPU Taktung (1 oder 2 MHz) über die zweifärbige LED
  • Zustand der Schreibschutz Lichtschranke
  • Ausgabe der Schreibschutz Kontrolle an das Laufwerk
  • Ausgabe der Geräte Nummer an das Laufwerk
  • Ausgabe des Reset Signal an das Laufwerk
  • Steuerung des CPLD


Der Controller ist ein ATmega328PB. Das ist ein naher Verwandter des ATmega328 der im Arduino UNO verwendet wird. Die Software ist ein normales Arduino Programm und wird über die Arduino IDE erstellt. Die Programmierung des Controller erfolgt aber über einen SPI Connector auf dem MeGALoDOS Board.

Der Arduino Quellcode ist frei verfügbar. Damit kann man sich die Menü Führung am OLED Display anpassen und frei nach eigenem Wunsch gestalten. Prinzipiell kann man dadurch auch jedes beliebige Display verwenden oder ein anderes Eingabegerät implementieren, anstatt des Drehencoder.


Programmieren des ATmega:

  • Floppy Laufwerk ausschalten
  • Flachband Kabel anschließen (vom ISP Programmer zum ISP Connector des MeGALoDOS)
  • Der Programmer muss das MeGALoDOS mit 5V versorgen (alternativ kann das auch extern gemacht werden)
  • Arduino HEX File (ohne Bootloader) in den ATmega flashen


Das Schreiben des Arduino Code in den ATmega kann auf zwei Arten erfolgen:

  • direkt aus der Arduino IDE heraus (der Programmer muss unterstützt werden von der IDE)
  • über einen Umweg: die IDE erzeugt eine HEX Datei, die HEX Datei wird übertragen durch ein bevorzugtes Tool


Der Programmer benötigt einen ISP-6 Anschluss. Wenn nur ein ISP-10 Anschluss vorhanden ist, dann benötigt man einen Adapter (ISP-10 to ISP-6).

Wenn kein Programmer zur Verfügung steht, dann kann auch ein Arduino Board (zb. UNO-R3 oder Nano) dafür verwendet werden.
Es funktioniert mit einem blanken Arduino Board (mit einzel Drähte) als auch mit einem ISP Shield.


Die Arduino IDE benötigt zum übersetzen des Quelltext zusätzliche LIB's:

  • Adafruit SSD1306 Library
  • Encoder Arduino Library


In der Arduino IDE muss vor der Übersetzung des Quellcode immer die Art des Ziel-Board angegeben werden. Nach der Installation der Arduino IDE stehen nur die Boards zur Auswahl, die üblich sind (UNO, Mano, Mikro, Leonardo ...). In unserem Fall ist das 'Ziel-Board' ein MeGALoDOS. Für den Controller auf dem Board gibt das Paket 'MiniCore', das die gängigen AVR Controller unterstützt.


Installation des Paket 'MiniCore':

  • In der IDE unter Datei-Voreinstellungen muss ist ein Feld 'Zusätzlicher Boardverwalter URLs', da muss die Github URL eingetragen werden (JSON Datei)
  • In der IDE unter Werkzeuge-Board-Boardverwalter das 'MiniCore' suchen und installieren
  • dann kann man den ATmega328 auswählen als "Board"
  • bei den Einstellungen noch 'extern 16MHz' und 'Variant 328PB' wählen


Der Lattice CPLD

Der CPLD ist das Herzstück des MeGALoDOS. Er ist zuständig für das Speicher Banking, Adressdekodierung, Kommunikation zum ATMega Controller, Spezialfunktionen wie die GCR Decoder und er überwacht die CPU 6502 des Floppy Laufwerk.

Normalerweise muss an dem CPLD nichts gemacht werden. Aber es ist möglich, den CPLD neu zu programmieren. Dazu gibt es auf dem MeGALoDOS Board einen JTAG Connector. Um den CPLD zu programmieren benötigt man eine JEDEC Datei und ein Lattice Programmer (zB. einen HW-USBN-2A oder 2B). Die Software am PC heißt Diamond Programmer von Lattice, mit der kann man eine JEDEC Datei in den CPLD programmieren.


MeGALoDOS Tools


Schreiben des Flash Speicher

Der Flash Speicher des MeGALoDOS hat 64 Seiten zu je 8KB. Zur Zeit werden jedoch nur 32 Seiten benutzt. Jedes DOS benötigt 2 oder drei 8KB Seiten im Flash Speicher. Nur wenn alle 33 Seiten des Flash Speicher richtig beschrieben sind, funktionieren alle DOS Modi des MeGALoDOS Board.

Aber selbst dann, wenn der Flash komplett leer ist, kann man das Floppy Laufwerk noch benutzen. Dazu wählt man den Modus "CBM DOS Floppy" am OLED Display. Die 1541 läuft nun mit dem Standard DOS EPROM auf dem Mainboard des Floppy Laufwerk. In diesem Modus ist MeGALoDOS RAM und Flash Speicher sichtbar, sodass der Flash Baustein beschrieben werden kann.


Flash beschreiben mit einem Programmiergerät

Der Flash Chip des MeGALoDOS wird vorsichtig aus dem Sockel entfernt und in einem Programmiergerät wie zB. dem TL866 gesetzt. Die Bedienung des Programmiergerät entnehmen Sie bitte dem Handbuch. Nach erfolgter Programmierung des Flash Chip wird dieser wieder vorsichtig in das MeGALoDOS Board eingesetzt.


Flash beschreiben vom PC aus

Man kann den Flash Speicher des MeGALoDOS direkt von einem PC aus beschreiben. Dazu benötigt man das OpenCBM und ein passendes Interface (XA-1541, XU-1541, XUM-1541 ...). Getestet werden kann die Verbindung zum Floppy Laufwerk mit folgenden Kommando:

CBMCTRL detect


Wir stellen Tools zur Verfügung, die auf eine funktionierende OpenCBM Verbindung aufbauen:

  • ein Script der den gesamten Flash Speicher ausliest und eine Datei pro Bank schreibt (fcFlashRead.cmd).
  • ein Script der diese Dateien wieder zurück in den Flash Speicher der Floppy schreibt (fcFlashWrite.cmd).
  • das funktioniert natürlich auch für eine einzelne Bank / Datei
  • gesamten Flash Speicher löschen (Chip Erase) -- Achtung: nur ausführen wenn das interne DOS selektiert ist! (fcChipErase!!.cmd)
  • Blank Test auf den gesamten Flash Speicher
  • einzelne Flash Bank löschen (8KB)
  • Blank Test auf eine einzelne Flash Bank (8KB)
  • einzelne Flash Bank vergleichen mit dem RAM Buffer (8KB)


Flash beschreiben mit einem C64

Die Programmierung des Flash Speicher kann auch von einem C64 aus durchgeführt werden. Jedes DOS braucht 1 bis 3 Speicherblöcke zu 8KB. Jeder 8KB Speicherblock benötigt 33 Blöcke auf einer Diskette. Für alle DOS Varianten benötigt man zwei Disketten (oder beide Seiten von einer Diskette). Auf der Seite A befinden sich die Speicherblöcke 00 bis 12, auf Seite B die Speicherblöcke 13 bis 22. Die Speicherblöcke 1B und 1C sind "Reserve" und werden nicht geschrieben.

Auf jeder Diskettenseite befindet sich ein kleines BASIC Programm, das den Flashvorgang durchführt:


Jede Flash Seite muss ein ganz bestimmtes ROM beinhalten, damit das MeGALoDOS Board ordentlich funktioniert. Mit Hilfe eines Tool wird sicher gestellt, dass man nur die richtigen ROM Dateien an die richtige Seite in den Flash Speicher schreiben kann. Das Tool heißt (MeGALoDOS-flashtool.exe) und läuft auf einem Windows PC:

Das Tool erkennt die richtigen ROM Dateien aufgrund der Prüfsumme und erstellt eine Flash Datei für die entsprechende Flash Seite (Bank). Wenn eine ROM Datei nicht erkannt wird, dann gibt das Tool eine Fehlermeldung aus. Am Ende sollte man 33 Flash Dateien haben (00 bis 22). Die Flash Dateien müssen dann nur noch auf die Disketten gespeichert werden. Der Name der Datei ist immer "&FLASHBANK" gefolgt von der Bank Nummer.

Zum Betrieb des Windows Tool braucht man das Programm selbst (MeGALoDOS-flashtool.exe) und den Floppy Code dazu (fcFlash.prg). Beide Dateien müssen im selben Verzeichnis sein.

Mit der Option -a wird das Tool automatisch über alle 33 ROM Dateien ausgeführt. Man muss dazu allerdings ein Namens-Schema einhalten, die ROM Dateien müssen als "memFlashBank_xx.bin" benannt werden. Wobei 'xx' die Banknummer ist. Es ist dieselbe Namensgebung die bei den OpenCBM Scripts verwendet wird.


Erfahrene Benutzer können MeGALoDOS Flashtool auch für weitere Aufgaben nutzen:

  • Option -b: 'zerlegen' großer Dateien bestehend aus mehreren 8KB Blöcke. Es werden 8KB Dateien erzeugt: <blockXX.bin>
  • Option -t: Zusammenbau einer großen Flash Datei (512KB) für externe Programmiergeräte (zB. TL-866)
  • Option -sbXX: Erstellung einer Flashdatei mit einem ungeprüften 8KB ROM (unbekannte CRC-16). Option -sbXX ('set bank XX') - die Bank Nummer XX muss zwingend angegeben werden.


ACHTUNG: für diese Funktionen sollte man aber genau wissen was man tut ...


Diagnose Tools

Hierbei handelt es sich vorwiegend um Diagnose des Zugriff auf das RAM des MeGALoDOS. Der Zugriff auf das gesamte RAM des Board ist möglich im Modus 'Super-RAM DD'. Dieser Modus bietet alle Möglichkeiten an, die implementiert sind:

  • RAM in den 'Lücken': $0800 (2K), $3000 (4K)
  • DD2 Track Buffer $8000 (8K)
  • 'banked' Track Buffer $4000 (8K x 64)
  • 'banked' Flash Memory $6000 (8K x 64)
  • RAM Disk 1 (1024 Sektor Buffer)
  • RAM Disk 2 (1024 Sektor Buffer)
  • Hardware GCR Dekoder



RAM Test vom PC aus

Man kann den RAM Speicher des MeGALoDOS direkt von einem PC aus testen. Dazu benötigt man das OpenCBM und ein passendes Interface (XA-1541, XU-1541, XUM-1541 ...). Getestet werden kann die Verbindung zum Floppy Laufwerk mit folgenden Kommando:

CBMCTRL detect


Wir stellen Tools zur Verfügung, die auf eine funktionierende OpenCBM Verbindung aufbauen:

  • (fcRamTest.cmd) ein Script für dem Buffer#2 der Floppy der den RAM aktiviert und prüft ob er aktiv ist
  • (fcRamTestExt08-SRD-DD.cmd) ein Script für die Adresse 0x0800 der das RAM Banking im Modus Super-RAM DD überprüft
  • (fcRamTestExt30-SRD-DD.cmd) ein Script für die Adresse 0x3000 der das RAM Banking im Modus Super-RAM DD überprüft
  • (fcRamTestExt08-SRD-PD.cmd) ein Script für die Adresse 0x0800 der das RAM Banking im Modus Super-RAM PD überprüft
  • (fcRamTestExt30-SRD-PD.cmd) ein Script für die Adresse 0x3000 der das RAM Banking im Modus Super-RAM PD überprüft


Der einfache RAM Test ist sehr klein und läuft im Buffer #2 der Floppy. Es stellt keinerlei Anforderungen und funktioniert daher auch ohne MeGALoDOS Board, bzw. wen die Funktion des Board beeinträchtigt oder gestört ist. Der RAM wird nicht richtig getestet sondern nur überprüft. Das Tool schaut ob RAM da ist und ob es ein nur ein Mirror ist oder echter RAM.

Der Test für den Super-RAM Modus überprüft auch die anderen Speicherbereiche sowie den 2 MHz Modus. Das Tool benötigt etwas mehr RAM, daher werden die MeGALoDOS Bereiche 0x800 oder 0x3000 für die Ausführung des Code verwendet. Ob diese RAM Bereiche überhaupt zur Verfügung stehen kann man mit dem einfachen RAM Test (fcRamTest.cmd) feststellen.



RAM Test mit einem C64

Auf der Diskette befindet sich ein kleines BASIC Programm, mit dem man den RAM Test komfortabel durchführen kann:



FMON - Floppy Monitor für MeGALoDOS

Der Floppy Monitor ist ein Tool für den erfahrenen Benutzer/Coder. Man kann damit das Banking steuern, den Flash Speicher verwalten, RAM testen und Dateien laden.


Doku zu den FMON Kommandos


Befehle:

  • FEN -- enable Flash Banking
  • FDA -- disable Flash Banking
  • FSB XX -- Flash set Bank (00-3F)
  • FCP [XX] -- compare current Flash Bank with RAM
  • FER [XX] -- Flash erase - erase current Flash Bank
  • FRD [XX] -- Flash read - read current Flash Bank into RAM
  • FBT [XX] -- Flash Blank Test - Test for empty Flash (bank or all)
  • FCE 5A -- Flash CHIP ERASE !!! (gesamten Inhalt des Flash Speicher löschen!)
  • FWR [XX] -- Flash write - write RAM Bank into Flash


  • RBE -- enable RAM-Bank (Trackbuffer)
  • RBD -- disable RAM-Bank (Trackbuffer)
  • RBS XX -- set RAM Bank (00-3D)
  • RBF XX -- fill pattern into RAM-Bank
  • RBT [XX,*] -- test RAM-Bank
  • RLD file -- Load File into RAM-Bank ($4000/$8000)
  • RDE -- enable RAM-Disk
  • RDD -- disable RAM-Disk
  • RDS XX -- set RAM-Disk Bank (00-FF)
  • RDT [XX] -- test RAM-Disk


  • SDD -- set Super-RAM DD (RAM $4000,Flash $6000)
  • SPD -- set Super-RAM PD (RAM $8000,Flash $A000)


  • TRA XX -- test if RAM available (non destructiv)
  • TRP XX -- test RAM pattern (destructiv)
  • TRV XX -- verify RAM pattern
  • TRW XX -- write RAM pattern (destructiv)
  • TGP -- test PG hardware GCR decoder
  • TGM -- test MeGALoDOS hardware GCR decoder
  • TDD -- test RAM-Bank of Super-RAM SD
  • TPD -- test RAM-Bank of Super-RAM PD


Brainstorming

Was könnte man noch alles mit diesem tollen Board anfangen ...

  • ein neuer Speeder
  • ein Disketten Kopierprogramm
  • ein GCR Nibble Copy
  • ein eigenes DOS ...
  • ...



MeGALoDOS Dokumentation


C64 Kernel

Wenn das Floppy Laufwerk mehrere DOS zu Auswahl hat dann liegt es Nahe, dass man auch auf Seite des C64 entsprechend passende Kernal verfügbar macht. Es gibt zahlreiche ROM Umschaltplatinen, davon sind zwei besonders interessant im Zusammenhang mit dem MeGALoDOS:


Für die Auswahl des Kernel habe ich vor Jahren eine Arduino basierte Lösung geschaffen: C64-Controller

Die Auswahl erfolgt komfortabel per OLED und Drehencoder, genau wie beim MeGALoDOS. Neben der Auswahl der ROM kann man damit auch ein internes SD2IEC steuern. Wenn man in dem parallelen Flachband Kabel zur Floppy einen freien Draht hat, kann man damit auch das MeGALoDOS 'fernsteuern'. Man wählt zb. am C64 das Dolphin DOS aus, und alle angeschlossenen MeGALoDOS Floppy Laufwerke schalten sich ebenfalls auf Dolphin DOS um.


Betriebs Modi

Das MeGALoDOS hat mehrere Betriebsarten. Damit ist eine Hardwarekompatibilität zu bestehender Speeder erreicht worden. Zudem gibt es zwei neue Modi die es nur im MeGALoDOS gibt. Das gibt Raum für die Entwicklung neuer, noch besserer Speeder Software.


Die Betriebs Modi des MeGALoDOS:

  • Professional Dos (RAPI DOS)
  • Dolphin DOS 2.0
  • Prologic DOS 1.6 (nicht classic)
  • Speed-DOS Expert
  • Speed-DOS
  • S-Jiffy DOS
  • Jiffy DOS
  • CBM DOS 2.6 mit Fix-Patches
  • Turbo Access 2.7
  • und Turbo Trans 3.4 mit 512kb Ramdisk
  • Quick DOS
  • Super-RAM DD (neuer Modus)
  • Super-RAM PD (neuer Modus)
  • 1541 DOS (internes ROM)


Diese Modi verwenden den RAM und den FLash Speicher des MeGALoDOS. Das interne RAM und ROM ist deaktiviert.

Es gibt jedoch auch einen Modus, wo das Floppy interne DOS verwendet wird. Dadurch wird gewährleistet, dass das Floppy Laufwerk funktioniert, selbst wenn der Flash Speicher ganz leer ist. In diesem Modus wird der Flash Speicher im Adressraum eingeblendet, damit wird es möglich den leeren Flash Speicher zu programmieren.


Trackbuffer


RAM Disks


GCR Hardware Dekoder


MeGALoROM

Die Hardware des MeGALoROM Board wurde entwickelt von Tommy_nrw aus dem Forum-64.

Dieses Board ist das ideale Gegenstück zum MeGALoDOS Board. Es ist ein automatischer Kernal Umschalter für den C64. Im C64 benötigt man für jedes DOS einen passenden Kernal. Das MeGALoROM Board enthält 2 EEPROM vom Typ W27C512 und einen GAL. Zusammen haben die beiden EPROMs 128KB und damit Platz für 16 Kernal zu 8KB.

Das Board funktioniert in jedem C64 Mainboard, egal ob das ROM 24 polig (alter C64) oder 28 polig (neuere C64 mit kombiniertem BASIC + Kernal) ist. Die neueren C64 haben ein 16KB großes ROM, wo BASIC und Kernal kombiniert ist in einem Chip. In diesen C64 belegt das BASIC einen der 16 Slots, daher sind hier nur 15 Kernels möglich.

Das MeGALoROM ist in der Lage auch mehrere BASIC aufzunehmen, die man dann umschalten kann. Zudem kann das Board auch ein oder mehrere CHAR ROM aufnehmen. Man kann damit alle ROM in einem C64 ersetzen.

Die Auswahl des Kernal erfolgt über 4 Pins auf dem Board. Die Logik ist verkehrt herum, Kernal 0 (standard C64 Kernal) erreicht man durch die Ausgabe von 4x High (1-1-1-1). Wenn man nun diese 4 Pins mit dem MeGaloDOS (Header 26) verbindet, dann selektiert das MeGALoDOS automatisch den korrekten Kernal im C64. Wenn man keine automatische Kernal Auswahl möchte, dann muss man den den C64 Kernal manuell auswählen.


Für die manuelle Kernal Auswahl gibt es viele Möglichkeiten:

  • im einfachsten Fall 4 Schalter oder DIP Switch oder ähnliches
  • ein 4 poliger Kodier Drehschalter
  • oder zb. ein Arduino


Die manuelle Auswahl per Arduino ist sehr komfortabel, weil ich den aktuellen Kernal zB. auf einem Display darstellen kann. Der Arduino Sketch stammt von einem älteren Projekt von mir (C64-Controller). Die Software kann man nach belieben anpassen. Optional kann man mit dem Arduino auch ein internes SD2IEC steuern.

Der Einbau des Arduino kann zum Beispiel in der Gehäuse Oberseite von einem Brotkasten erfolgen:


Benötigtes Material:

  • ein MeGALoROM Board (steckt direkt im Sockel des C64 Kernal)
  • ein Arduino Nano
  • ein OLED oder ein LCD Display
  • ein Drehgeber
  • ein paar Drähte



Dateien

  • MeGALoDOS Flashtool - bestehend aus zwei Disketten Images (ohne ROM Dateien) und einem Tool für Windows
  • MeGALoDOS RAM Test - bestehend aus einem Disketten Image und mehreren Dateien für Tests unter OpenCBM


Dokumentation


Links


Lösungen für C64 Kernal Umschalter :