031
12.12.2018, 01:59 Uhr
mb
|
Zitat: | f_richter schrieb Der ZXUNO wäre auch gut dafür geeignet. http://zxuno.speccy.org/index_e.shtml Und einen Spectrum und diverse andere Cores gibt es dafür schon. Hardware: Xilinx Spartan 6 XC6, 2MB SRAM und 16MB Flash. Ich habe einen und habe letzes Jahr schon Z1013,KC87,AC1,LLC2 zum laufen gebracht. Den KC85 zu portieren hatte ich angefangen, allerdings waren meine VHDL und vor allem KC85 Kentnisse zu schwach um den Videocontroller auf einen 8 Bit RAM umzubauen. Das Design von oben https://github.com/beokim/kc854fpga benutzt einen 16 Bit SRAM.
Viele Grüße |
Das wird leider keine besonders einfache Aufgabe, wenn ich den Schaltplan richtig entziffere, dann gibt das Board nur Composite aus oder? D.h. du müsstest den Videocontroller auf PAL umbauen. Momentan gibt er VGA mit einer Auflösung von 1024x768@60Hz aus. Das Blinksignal (wichtig für einige Spiele) wird von 50Hz auf 60Hz synchronisiert, damit sieht das halbwegs original aus. Es gibt auch 2 Taktdomänen (Takt in der Videoausgabe war etwas zu hoch für den Rest).
Für PAL brauchst du das nicht und müsstest es im Prinzip eh fast komplett neu schreiben. Die Videoausgabe erfordert nicht mehr einen so hohen Takt und du könntest das gesamte Design auf ein Vielfaches des Videotaktes umbauen. Damit fallen die beiden unterschiedlichen Taktdomänen weg und die Videoausgabe wird deutlich einfacher.
Eine andere Baustelle ist das Bankswitching (memcontrol). Die Logik welcher Ram/Rom wann zu sehen ist kannst du übernehmen (ist ausführlich im Quelltext dokumentiert). Im KC können Speicherbereiche an der gleichen Adresse stehen, in solchen Fällen habe ich dann das obere und untere Byte der 16 Bit benutzt und die Bereiche stehen nebeneinander im SRAM. Der Videobrereich ist etwas speziell, hat im SRAM seinen eigenen Adressbereich und wird bei Bedarf an der richtigen Adresse eingeblendet. Die Umschaltung zwischen den beiden Hälften müsstest du auf ein Adressbit umbauen.
Problematisch ist eigentlich nur der Zugriff der Videohardware. Die Farb- und Pixeldaten liegen in den 16 Bit nebeneinander und werden mit einem Zugriff ausgelesen. Das geht mit 8 Bit natürlich nicht mehr und du brauchst 2 Zugriffe.
Beim Bootvorgang müsstest du noch beachten, dass er etwas anders als im normalen KC abläuft. Die 3 Roms liegen erstmal nur komprimiert in einem 16kB Blockram vor. Sie müssen ausgepackt und an die richtige Stelle mit Speicher kopiert werden. Danach werden die Bereiche schreibgeschützt und der KC kann wie gewohnt starten. Das spart Blockrams und vereinfacht das Bankswitching etwas: der Ram ist durchgängig von 0 bis 64k und nur der Videoram muss bei Bedarf eingeblendet werden. Geht mit 8 Bit leider auch nicht mehr so ganz einfach. Du müsstest die 2. RAM8-Bank und das Basic-Rom in einen anderen Bereich des SRAM verlegen. |