Endlich habe ich die Doku vom AX82 fertigbekommen und das Projekt online gestellt. http://www.jcwolfram.de/projekte/avr/ax82/main.php Emuliert wird ein Standard ZX Spectrum mit 48K RAM, basierend auf meinem Z80 Emulator, den ich für dieses Projekt stark erweitert habe bzw. erweitern musste. So werden jetzt z.B. alle 3 Interrupt-Modi unterstützt. Neben dem AVR (Mega644) werden noch ein CPLD (XC9536) und zwei 32Kx8 (Cache-) RAMs benötigt. Die Ausgabe erfolgt umschaltbar auf TV (RGB) oder auch VGA, die Eingabe über eine PS2-Tastatur.Sound geht leider nicht, da aufgrund des völlig anderen Timings die Qualität gegen Null geht. Die Geschwindigkeit erreicht bei TV-Ausgabe ungefähr Original-Niveau, bei VGA-Ausgabe nur ca. 87 Prozent. Snapshots können von SD-Karte geladen und dorthin zurückgespeichert werden, das Handling ist weitestgehend identisch zum AX81b. Auch der integrierte Monitor ist wieder dabei. Auch habe ich den Anschluss von einem Joystick bereits hardwaremäßig vorgesehen, allerdings noch nicht in der Software. Das kommt eventuell später noch, wenn Interesse besteht. Jörg
Tool ohne Ende. Ich frage mich ob man mit einem ATXMega ~100% mit VGA kriegen könnte... und der Built-in SRAM/SDRAM kontroller nutzen...
Wenn man das gleiche Grunddesign nimmt, 32MHz Clock und VGA4 statt VGA3, könnte es schon klappen. Ob man den internen Memorycontroller benutzen kann glaube ich eher nicht, habe aber keinerlei Erfahrungen mit den ATXMegas. Man braucht für 8 Pixel zwei Speicherzugriffe und muss die Daten noch an den Video-Shifter (CPLD) ausgeben. Jörg
Joerg Wolfram schrieb: > Ob man den internen Memorycontroller benutzen > kann glaube ich eher nicht, habe aber keinerlei Erfahrungen mit den > ATXMegas. Klar kann man den benutzen, dafür ist er doch da ;-). Läuft mit Fcpu/4 bei 0 Waitstates und schnellem RAM (12..15ns): 1.Adresse ausgeben 2.Latch betätigen 3.Daten lesen 4.CPU hat Daten verfügbar Joerg Wolfram schrieb: > Man braucht für 8 Pixel zwei Speicherzugriffe und muss die > Daten noch an den Video-Shifter (CPLD) ausgeben. DMA!
Sicher lässt sich da einiges anstellen und es ist wahrscheinlich auch mit vielen Änderungen im Sourcecode (evtl. auch im CPLD) verbunden. Und deshalb gleich vorneweg: Eine XMega-Version wird es von mir mit hoher Sicherheit nicht geben. Da das Projekt ja Open Souce ist muss sich halt nur jemand finden, der die Anpassungen für den XMega macht und bei einer "1:1" Portierung kann ich vielleicht eher noch etwas Unterstützung geben. Jörg
Geniales Projekt! Hut ab! Nur mal interessehalber: Warum hast du das ganze nicht gleich in einem FPGA untergebracht?
Ganz einfach, weil ich nichts mit FPGAs mache. Die Gehäuse sind meiner Meinung nach eher "bastlerunfreundlich" und mit einseitigen Leiterplatten ist da meist auch nicht mehr viel auszurichten. XC9536 habe ich noch ein paar rumliegen und PLCC mit Sockel passt auch auf Lochrasterplatten. Außerdem gibt es ja schon ZX Spectrum im FPGA, wäre also nix Neues und damit für mich uninteressant. Jörg
Ich habe am WE mal getestet, wievie schneller der AVR sein müsste. Mit 27MHz waren es noch keine 100% und mit 32MHz externem Oszillator kam nur noch Mist. Aber dabei sind mir noch ein paar Ideen gekommen. Wenn man den Clock zum CPLD führt, sollten sich auch 80 Zeichen darstellen lassen was vielleicht interessant für einen Port von AVRCPM sein könnte. Außerdem sollte es auch möglich sein, einen KC85/2 (oder/3) zu emulieren. Mit einem ATMega1284P und einem XC9572 sollte sich das sogar umschaltbar realisieren lassen. Jörg
Greetings Jorg Another marvelous creation, of yours i see. Will the pcb be available, from the website like the chipbasic2 design. how do you program the CPLD ? regards David
I dont know because the chipbasic2 pcb and kit was not initiated by me, I placed only the links on my website. For the AX81 I think there exist already community pcbs and kits. The AX82 is a little bit more difficult to build (CPLD) so it perhaps will be take more time... For the programming I used the Xilinx webpack (Ver. 7.x), the USBDRIVER.HEAD and a simple parallelport programmer. Joerg
Geniales Projekt! Mal schauen, ob ich bei der nächsten Reichelt-Bestellung die entsprechenden Teile mitnehme. Hast du dir mal den ATmega 644PA-PU angesehen? Die zweite Revision (A) lässt sich meistens etwas mehr übertakten. Beim SwinSID (vielleicht ist dir das ein Begriff; SID-Nachbau mit AVR) wurde ein ATmega88PA-AU benutzt, weil dieser sich besser übertakten ließ. 32MHz sind idR kein Problem. Gruß
Man hätte ja gleich nen 80 MHz ARM nehmen können, dann hätte man sich auch das CPLD sparen können, wäre am Ende viel einfacher und billiger geworden.
@Immanuel Cunt Dann zeig mal wie das geht... Ansonsten hätte man auch einfach FUSE auf seinem Rechner installieren können, das würde dann gar nichts kosten, man braucht keine Leiterplatte und ist noch schneller ;-) Jörg
Hammer Jörg! Hammer!! :) Schön wäre jetzt noch der Joystick!!!!!!!!
Ist in Arbeit, aber noch nicht aufgebaut und getestet. Im Moment habe ich ein größeres Projekt, welches ich möglicht bis Weihnachten fertig haben möchte und darum läuft alles andere erstmal auf Sparflamme. Jörg
Da die meisten wohl eher wegen der alten Spiele ausprobieren wollen, wird es demnächst wohl einen "Nachfolger" geben. Basis wird das ChipBasic Board mit 16-Farben Erweiterung sein, auf dem dann ein Mega1284P läuft. Ohne externes RAM und ohne CPLD, dafür halt nur TV-Output. Joystickanschluss über den Parallelport. Sound wird es aber (leider) auch hier nicht geben. Die verfügbaren 15K RAM sollten für viele Spiele ausreichen, da nur noch RAM für veränderliche Daten (z.B. Bildspeicher, Systemvariablen, Stack) benötigt wird. Der Speicher ist in 256 Bytes große Pages aufgeteilt, die entweder im Flash oder im RAM des AVR liegen. Bei Schreibzugriffen auf Adressen ausserhalb des ROM-Bereiches, die aber noch auf AVR-Flash zeigen, wird bei noch freien RAM-Pages die Flash-Page ins RAM kopiert und die Page entsprechend markiert. Übertaktung ist nicht mehr vorgesehen, dafür scheint zumindest der Mega1284P nicht geeignet zu sein und es gibt haufenweise Probleme bei den "Nachbauern". Die Performance (20MHz AVR-Takt) liegt beim aktuellen Entwicklungsstand bei ca. 60% Originalgeschwindigkeit, mit einem zusätzlichen Mega88 als aktivem Videoshifter und -cache am Parallelport ungefähr bei 93%. Massenspeicher ist nicht zwingend notwendig (Snapshot-Funktion), es wird aber eher auf einen Dataflash-Baustein als auf SD-Karte hinauslaufen. Ein großes Dateihandling wird es sowieso nicht geben, die verfügbaren Programme sollen sich in einer Art Preview beim Start auch mit dem Joystick auswählen lassen. Man kann dann noch wählen, ob das "Original" oder der Snapshot geladen wird, das war es dann auch. Ein 1MB DataFlash kann 16 Programme incl. Snapshots speichern, das sollte eigentlich ausreichen. Für das Erstellen der Snapshots auf dem PC bin ich gerade dabei, mir den FBZX-Emulator zurechtzupatchen damit er Schreibzugriffe auf das RAM mitloggt. Wenn man ein Programm ein bisschen ausprobiert, kann man damit schon eine recht optimale Speicherbelegungstabelle erzeugen. So komme ich z.B. bei Chequered Flag auf 39 Pages mit Schreibzugriffen, was gerade mal knapp 10K RAM bedeutet. Im Moment geht es eher schleppend voran, da ich auch noch an drei anderen Projekten bastle. Von daher würde mich interessieren, inwieweit überhaupt Interesse daran besteht. Jörg
Greetings Jorg Just to let you know there is interest in this project, I await your next incarnation!
Hallo, hier gibt es schon mal eine Preview-Version. Als Programm habe ich Cyrus-Schach fest mit eingebunden. Hardware ist identisch zum ChipBasic2 mit 16-Farb-Erweiterung, lediglich wird ein ATMega1284P verwendet. Die Taktfrequenz beträgt 20MHz, die Fuses sind bereits so konfiguriert, dass am Parallelport schon der 20MHz Takt (CLKOUT) für den "Beschleuniger" zur Verfügung steht.
1 | LOW-FUSE 0xA6 |
2 | HIGH-FUSE 0xD4 |
3 | EXT-FUSE 0xFC |
SD-Karten werden ähnlich wie beim AX81B/AX82 unterstützt, ein passendes Image wird es aber erst zum offiziellen Release geben. Generell gibt es 3 Modi, wie der emulierte Spectrum gestartet wird, im Usermode wird der aktuelle Snapshot geladen, im Defaultmode das geladene Programm (Hier im Beispiel: CYRUS) und im System-Mode wird ein Spectrum mit 15,5K RAM emuliert. Defaultmäßig wird im Usermode gestartet. Wie immer gibt es einige Tasten mit Sonderfunktionen:
1 | CTRL + ALT + DEL startet das Gesamtsystem neu |
2 | CTRL + F5 startet den Emulator im Defaultmode neu |
3 | CTRL + F6 startet den Emulator im Usermode neu |
4 | CTRL + F7 startet den Emulator im System-Mode neu |
5 | CTRL + F10 macht einen Snapshot des aktuellen Emulators |
6 | ALT + Pfeiltasten 5,6,7,8 |
Man kann also unabhängig vom geladenen Programm eigene Programme schreiben und Snapshot speichern. Ich habe das jetzt hier mit angehängt, kann aber bei bedarf auch einen neuen Thread aufmachen... Jörg
Nach langer Pause habe ich mich mal wieder über das Projekt hergemacht. Jetzt gibt es auch ein Kempston-Joystick kompatibles Interface und die Dateiimage-Tools habe ich von C nach Perl umgestellt und dabei ein paar Fehler korrigiert. Für alle, die nicht damit zuechtkommen, habe ich ein neues Image erstellt. http://www.jcwolfram.de/projekte/avr/ax82/main.php Viele Grüße, Jörg
:
Bearbeitet durch User
Finally managed to re flash the 1284p with my usb asp remembering the trouble I had last time I used the usb tiny. The usb tiny would only flash 64k. Well finally did it see my pictures, not tried with the keyboard yet, but its great on my chipbasic 2 board.
Hello Jorg
playin around with the spectrum emulator whilst pressing
> CTRL + F7 startet den Emulator im System-Mode neu
brought up the familar spectrum copyright screen.
so nice after all these years
i wrote a little program
10 dim d(1000)
ran it, then Typed New.
The spectrum reset, but if ctrl+alt+del is pressed, the program comes
back after the AX82 welcome screen !!
also nice to see the save feature is still visable, does this output
anywhere to the outside world ?
typing border 0 , also resets the emulator!
whilst flashing my avr chip the avrdude program said my atmega1284p had a different signature , whilst it was expecting 1E 97 05, it found 1E 97 06, the date code is 1133 on the mcu. does this mean anything. I flashed the mcu with the overide siganture command under avrdude.
Hello David, the AX82B was an experiment and because of only feedback of one person (YOU) I stopped it. The snapshot function saves into internal flash, using of SD-card or external flash was prepared but never realized. I append the sources of version 0.23 (probably the last) and of the patched FBZX which is used to create images and memory maps. Best regards, Joerg
Intressiert wäre ich auch, allerdings hab ich das ganze nicht nachgebaut bisher da mir der erforderliche CPLD fehlt :/ Habe bereits den AX81 auf PCB hier und war sehr begeistert davon :) Wenn ich noch die Folientastatur dran kriege könnte ich ihn glatt in meinen defekten ZX81 einbauen.
Greetings Joerg Would you publish the design for the 128k ram version of the AX82. Thank you David
My own eagle design of the Ax82 incorporating the psu, vga, joystick, Jtag and SD sockets
Hello David, This looks nice. My 128K version uses only 64k like the version with the two 32k chips. At the beginning of the project I had only one 32k chip which was fast enough... Joerg
David R. schrieb: > My own eagle design of the Ax82 incorporating the psu, vga, joystick, > Jtag and SD sockets Hello David, there are a couple of points to improve your pcb-design: 1) Most important: Move the connectors to the edge of the pcb, otherwise they can not be used properly (VGA-, Keyboard-, Serial-, Power-Connectors) 2) The width of the power traces of the pcb should be made thicker, i.e. 3 times the signal traces. Even the signal traces could be made thicker... 3) Are you sure that the VGA-Cable should be connected at the front of the PCB. Suggestion: Rotate all the Silkscreen-Text by 180°, so that the VGA-Connector seems to be placed at the back. 4) The Routing can be improved a lot. E.g. IC3 Pin 18 and 20. Connection at Top Layer can be routed without crossing through pins... 5) Try to route without 90°-turns, better use 45°-turns instead. 6) Some people like it, some do not: Ground-Filling on one side... David, you should use another two to three weeks to improve this pcb-design, so that it is usable for others. Regards, Thomas
:
Bearbeitet durch User
Beitrag #5309564 wurde vom Autor gelöscht.
Ich finde das Projekt klasse, auch wenn ich nie ein grosser freund vom ZX Spectrum oder ZX81 war. Warum hast Du in heutiger Zeit nicht einen ARM Cortex M3 /M4 genommen? Die sind doch um einiges schneller und man braucht kaum noch was außen drumherum. Wenn ich da an so was wie einen kleinen STM32F407 denke dann bleibt nicht wirklich viel Hardware übrig. VG, Uli
Man kann in "heutiger Zeit" auch einen Raspberry Pi nehmen, aber oh je, da gibt es ja so etwas schon. Das Projekt hatte ich vor 6-7 Jahren begonnen, auch gibt es inzwischen Emulatoren auf diversen STM32 Boards. Warum also noch Variante X+1 hinzufügen? Demnächst gibt es aber ein neues "Emulationsprojekt", welches u.a. wohl auch auf diversen STM32 laufen wird. Jörg
Ein Raspberry Pi ist aber nicht mehr ein kleiner Prozessor sondern ein vollwertiges Linux System und wäre damit in meinen Augen nicht mehr dem Projekt würdig. Da könnte man dann auch sagen nim einen PC! Das das ganze auf einem AVR läuft ist schon mal eine tolle Sache aber ich denke das man nicht immer alles auf den letzten "kleinen Krücken" versuchen muss. Ich erinnere mich an ein nettes Projekt wo jemand ein ARM Prozessor auf einem AVR genacht hat und dann ein LINUX darauf hat laufen lassen. Ist sportlich und sicherlich mal ein netter Zeitverteib aber null nutzen. Dieser Emulator hat dagegen einen Nutzen und der wird bestimmt von einigen nachgebaut werden. Und darauf zielte meine Frage, weniger teile == einfacher. Außerdem ist es halt einfacher einen etwas grösseren Prozessor zu nehmen und man hat genug Speicher + Speed um alles in top Qualität zu machen. VG Uli
Greetings Joerg What are the fuse settings for the 644p Thanks David
> Projekt würdig. Da könnte man dann auch sagen nim einen PC! Das denke ich auch. Solche Dinge brauchen einen gewissen Schnuckelfaktor um cool zu wirken. Ein Beispiel dafuer waere z.B ein komplettes CP/M in einen modernen ARM mit 3x3mm DFN Gehaeuse auf dem TurboPascal laeuft. Das waer cool. Und UCSD/P waere noch cooler. :-) Noch cooler waere es wenn der Controller BLE integriert haette und man von seinem Handy aus programmieren koennte. Also legt los... Olaf
Hello David, this information is located in the "liesmich" (readme) file. Fuse LOW: 0xE6 Fuse HIGH: 0xD1 Fuse EXT: 0xFC @Olaf Na dann leg` mal selber los, so schwer kann das ja gar nicht sein...
Olaf schrieb: > komplettes CP/M in > einen modernen ARM mit 3x3mm DFN Gehaeuse auf dem TurboPascal laeuft. > Das waer cool. Und UCSD/P waere noch cooler. :-) > Noch cooler waere es wenn der Controller BLE integriert haette und man > von seinem Handy aus programmieren koennte. Also legt los... Wurde doch alles schon erfunden: https://github.com/SmallRoomLabs/cpm8266
Thanks. Programmed the atmega and set the fuses. Problem. I dont have xilinx software. Can anyone program the xc chip for me in exchange for a pcb ?
Hi David, I can do this. If You use linux, You can also build my UPROG2 programmer which also can program these Xilinx CPLD's from the SVF files. Probably any other SVF-player can do this. Best regards, Joerg
Managed to program the cpld with a xvsf player, but the picture is unrecogniseable Must still have errors on pcb. Might have to consider releasing the eagle files, for help on this project.
Hello David, - Do You get pixel clock at PB4? - There are HSYNC and VSYNC active toggling? - Do You get signals on MCU_BE and MCU_DE? These signals should be also active with a blank or missing CPLD. If You can send me a blank PCB, I will try to build it and get it to work. Best regards, Joerg
Joerg pm your postal address and I'll send you a board. Thanks.
Joerg. Based on the ax82 could there possibly be a new zx81 emulator with the full 64k ram with high resolution graphics capabilities ?
A ZX81 emulator should be possible, with the ATMega1284P probably both emulators switchable. The CPLD should work with both variants and also most of the emulator core. This must be changed: - video signal generation - Memory protection for ROM, if UDG should be possible - image handling for disk Beware of the complete programm is written in AVR assembler, most is commented but it may be hard to understand and expand it. Joerg
Joerg send me your postal address to Zxmaker at g mail dot com Joerg W. schrieb: > Hello David, > > - Do You get pixel clock at PB4? > - There are HSYNC and VSYNC active toggling? > - Do You get signals on MCU_BE and MCU_DE? > > These signals should be also active with a blank or missing CPLD. > > If You can send me a blank PCB, I will try to build it and get it to > work. > > Best regards, > > Joerg
David R. schrieb: > Nearly fully populated New revised board. Earlier board had 14 incorrectly named address line's. Now corrected and making use of one 128k ram ic.
Frage:Ist es möglich eine neue Überarbarbeitete Leiterplatte zu erwerben ?? Grüß Detlef
Shall be listing on ebay shortly titled AX82 for user name is my sellers name.
Thomas W. schrieb: > Da finde ich leider nichts auf eBay von AX82 Try now. Item number 183994764800 Regards
Jorge, After a very long time, i have finally reproduced your AX82 pcb with the same layout and no extra circuits on the board.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.