AX81 - ZX81 im ATMega

ZX-Team Forum
joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 26.10.2011, 13:51

Hallo,

da es hier im Forum durchaus von Interesse sein kann, möchte ich kurz mein
aktuellstes Projekt vorstellen. Dabei handelt es sich um einen ZX81, der in einem ATMega emuliert wird.
Also sowohl der Z80 Prozessor als auch die Peripherie aussenrum. Dabei ist der
emulierte ZX81 sogar noch etwas schneller als das Original.
Ausgabe geht über TV, VGA oder GLCDs (controllerlose mit 320x240 Pixeln),
als Controller können ATMega644, ATMega644P und ATMega1284P genutzt werden, wobei
nur die beiden letzteren VGA-Signal ausgeben können. Als Tastatur wird eine "normale" PS2-Tastatur
benutzt. Der maximale ZX-RAM beträgt beim ATMega1284 15,75K, das Charset lässt sich nicht
ändern und HRG ist momentan auch noch nicht unterstützt.
Als Datenspeicher können sowohl Atmel Dataflash als auch SD-Karten verwendet werden.
Dabei kommt ein eigenes, Tape-orientiertes "Dateisystem" zum Einsatz. Dazu habe ich das ROM
dahingehend gepatcht, dass mit LLIST der Inhalt des aktuellen Tapes angezeigt werden kann.

http://www.jcwolfram.de/projekte/avr/ax81/main.php

Auch habe ich angefangen, Programme die ich im Internet finden konnte auf Funktion zu testen
und mit zum Download bereitzustellen.

Gruß Jörg

Bild

Benutzeravatar
Jens
User
Beiträge: 1052
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von Jens » 26.10.2011, 14:29

Hallo Jörg!

Der ist ja schnuckelig :-)

Hast Du vor, davon eine Kleinserie zu fertigen (Platinen)? Oder hast Du einen Schaltplan (Eagle?)??

Schöne Sache, der AX81 !!

Gruß
Jens
Wenn du tot bist, dann merkst du das selber nicht. Es ist nur schwer für die anderen. Wenn du blöd bist, dann ist es genauso.
Und: uıɐbɐ ʎɐqǝ uo pɹɐoqʎǝʞ ɐ ʎnq ɹǝʌǝ ɹǝʌǝu ןןıʍ ı
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...

Benutzeravatar
Paul
User
Beiträge: 2573
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: AX81 - ZX81 im ATMega

Beitrag von Paul » 26.10.2011, 14:32

Das ist mal ein toller erster Post.
Herzlich wilkommen im Forum.
Direkt ein paar Fragen zum Start: Das normale FAT (32) Format kannst du nicht unterstützen? Das ist bei ATMEGAs doch eigenlich auch geläufig oder? Sprich es gibt eine Bibliothek dafür.
Dann könnte man entweder ZXPAND kompatibel werden oder von der Bedienung her den vdrive. Und hätte eine einfache Möglichkeit mit PC's auszutauschen.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
Joachim
User
Beiträge: 900
Registriert: 06.11.2004, 20:21

Re: AX81 - ZX81 im ATMega

Beitrag von Joachim » 26.10.2011, 15:24

Hallo Jörg!
Herzlich willkommen im ZX-Team-Forum!
Habe mir deine Seiten und das AX81-Projekt näher angesehen und bin platt!
Gibt es Layouts zum nachbauen?
Viele Grüße
Joachim
Viele Grüße!
Joachim


ZX80, ZX81, ZX-Spectrum, ZX96, ZX2000, ZXmore, ZX81NU, Blauer Engel, AX81

Benutzeravatar
siggi
User
Beiträge: 2161
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von siggi » 26.10.2011, 16:32

Nun müßte nur noch der Z80-Bus emuliert werden und auf 'nem VG64-Stecker liegen, dann könnte man auch die ganzen ZX96-Karten anschließen :D

Siggi

Benutzeravatar
Jens
User
Beiträge: 1052
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von Jens » 26.10.2011, 18:34

Hallo Jörg!

Und ich hatte vergessen zu sagen: Willkommen im Forum - wie konnte mir das nur entgehen?? (warscheinlich war ich wg. Deines Designs woanders :roll: )

Liebe Grüße
Jens
Wenn du tot bist, dann merkst du das selber nicht. Es ist nur schwer für die anderen. Wenn du blöd bist, dann ist es genauso.
Und: uıɐbɐ ʎɐqǝ uo pɹɐoqʎǝʞ ɐ ʎnq ɹǝʌǝ ɹǝʌǝu ןןıʍ ı
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...

Benutzeravatar
bodo
User
Beiträge: 303
Registriert: 14.02.2007, 17:21
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von bodo » 26.10.2011, 19:54

Moin, Jörg.

Auch von mir ein herzliches Willkommen!

Als großer Fan von Emulationen freue ich mich über jede solche Eigenentwicklung. Das sieht ja wirklich vielversprechend aus! Ich muss mir das bei Gelegenheit einmal richtig zu Gemüte führen.

Tschüß, Bodo
B0D0: Real programmers do it in hex.

Kai
User
Beiträge: 386
Registriert: 19.04.2005, 20:46

Re: AX81 - ZX81 im ATMega

Beitrag von Kai » 26.10.2011, 20:03

Da knallt er uns alten Hasen hier mal einfach so ein Ding auf'n Tisch :lol:
Hallo Jörg - der Einstieg ist gelungen! Ich hoffe, wir sehen Dich zum nächsten Treffen.

Benutzeravatar
sbetamax
User
Beiträge: 451
Registriert: 04.03.2006, 22:01
Wohnort: Deutschland / Hessen / Nidda
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von sbetamax » 26.10.2011, 21:16

Hi,
auch von mir ein großes hallo.
Ich finde es sehr interessant wie du ein ganzes System in einem Chip emulierst und das so als Hobby.
Gruß Stephan
_______________
ZX80 (nachbau), ZX81, ZX 2000, ZX NU, IQ8300, ZX Spectrum, ZX Spectrum plus, ZX Spectrum 128, Harlequin, C64

holmatic
User
Beiträge: 121
Registriert: 13.10.2009, 23:53
Wohnort: Bremen

Re: AX81 - ZX81 im ATMega

Beitrag von holmatic » 26.10.2011, 23:48

Hallo Jörg,

supertolles Projekt! Ein 8-Bit-ZX emuliert von einem 8-Bit-Controller, und ein software-gesteuerter Bildaufbau emuliert auf einer software-gesteuerten Videoausgabe. Das ist echt originell und bestimmt mit ganz anderen Schwierigkeiten verbunden als die Emulation auf einem GHz-Prozessor.

Somit wurde der ZX81 nun von einer (damals revolutionären) 5-Chip-Lösung auf eine 1-Chip-Lösung reduziert, und das ganz bastelfreundlich ohne SMDs. Klasse.

Ich nehme an, die "fehlenden" 0,25KByte vom 16K RAM gehen für den Emulator und die Massenspeicheranbindung drauf? Lässt sich da noch etwas herausquetschen?

Gruß und ein herzliches Willkommen

Oliver

joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 27.10.2011, 09:52

Hallo,

erstmal vielen Dank für die Lorbeeren. Leider komme ich meistens nur während der S-Bahn Fahrt zum Schreiben (außer ich bastle Nachts an meinen Projekten),
so dass meine Antworten manchmal etwas dauern können bis ich sie dann wirklich abschicke.

Zum Thema Leiterplatte, in den Archiven zum ChipBasic32 befindet sich ein Ordner "Hardware" in dem alles notwendige sein sollte. Dazu habe ich
PCB (gEDA) benutzt, welches wahrscheinlich nur unter Linux läuft. Aber es gibt auch ein PDF mit dem Layout.

Was das FAT Dateisystem anbetrifft, gibt es zwei wesentliche Hürden. Die erste ist das RAM. Man braucht mindestens einen Sektor als Buffer, um überhaupt
schreiben zu können. Die zweite ist, dass wahrscheinelich keine der bekannten FAT-Implementierungen in Assembler geschrieben ist und ich somit alles von
C nach ASM umsetzen müsste. Und das ist mir momentan echt zuviel Aufwand. Eine Lösung habe ich mir aber schon überlegt. Auf eine frisch formatierte
Karte könnte man im Hauptverzeichnis 256 leere Tape-Dateien anlegen. Diese haben dann einen eindeutig identifizierbaren Header, womit sie der AVR leicht
finden kann. auf PC-Seite bräuchte man dann nur ein Programm, welches Programme in eine bestimmte Tape-Datei schreibt oder daraus extrahiert. Das sollte dann auch mit
perl2exe in eine "Windows-freundliche" Form gebracht werden.

An den fehlenden 256 Bytes lässt sich im Moment nicht viel machen. Ich brauche RAM für den AVR-Stack, Systemvariablen des Videosystems und auch für den
Emulator selbst (Zweit-Registersatz, I, R, Interruptmode). Das Filesystem braucht auch noch einmal 36 Bytes. Durch das Konzept des Memory-Maps, bei dem jede
256-Bytes Page einem Speicherbereich im AVR zugeordnet wird (Flash oder RAM) ist die kleinste zuweisbare Einheit 256 Bytes und die fehlen dann halt. Ich habe
dazu schon einiges ausprobiert aber noch keine befriedigende Lösung gefunden.

Aber ich arbeite seit ein paar Tagen an einer etwas aufwändigeren Lösung. Die könnte dann aus ATmega, einem kleinen CPLD und einem 128K RAM bestehen. Damit gäbe es
dann im Bereich von 48-64K 4 Pages, 8K SRAM ab 0x2000 und die damit verbundene Möglichkeit, userdefinierte Zeichensätze bzw HIRES zu benutzen.

Aber dazu später mehr.

Gruß Jörg

Benutzeravatar
Paul
User
Beiträge: 2573
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: AX81 - ZX81 im ATMega

Beitrag von Paul » 27.10.2011, 10:07

perl2exe hört sich sich leider nicht sehr OSX verträglich an :cry:

Ziehst du es in Erwägung zu unserem Treffen (23.3-25.3.2012) nach Mahlerts zu kommen? Ich würde das gerne mal life sehen :)
Aber vielleicht hat es bis dahin ja schon jemand nachgebaut?
Auf jeden Fall ist das eine super Sache! Es wäre toll wenn du uns darüber auf dem laufenden hältst.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Kai
User
Beiträge: 386
Registriert: 19.04.2005, 20:46

Re: AX81 - ZX81 im ATMega

Beitrag von Kai » 14.11.2011, 21:15

Hallo Jörg,
ich habe mir den AX81 mal ganz fix aufgebaut, das ließ mich nicht mehr ruhig schlafen :D Zwei Fragen, wo ich jetzt nicht weiterkomme.
1. Du hast eine ganze Menge an Hexfiles, ich habe da als erstes einfach mal das ax81_m1284p_tvl_sd_pd1pd4.hex gebrannt. Welches File ist genau für welchen Aufbau das richtige?
2. das Videosignal ist im Schaltplan auf der SubD-Buchse. Wo genau greife ich das als BAS ab? Ich vermute Pin8.
Es liegt leider statt einem BAS nur eine konstante Pulsfolge an, ca. 100µs Low/500µs High. Tastatur habe ich noch nicht dran.

joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 15.11.2011, 13:00

Hallo,

ich habe auf meiner Seite eine neue Version veröffentlicht. Vorerst nur als Binär-Release, da ich den
Sourcecode noch etwas umstrukturieren möchte.

http://www.jcwolfram.de/downloads/main.php#ax81

Neu ist ein Dateisystem via Image-Datei auf SD-Karte. Da die meisten lieber eine Image-Datei auf einer FAT-formatierten SD-Karte wollen
und mit dem eher Bootloader nichts anfangen können, habe ich nur noch das "neue" Dateisystem im offiziellen Release
belassen und den Bootloader entfernt. Außerdem gibt es Install-Scripte (*X) eine install_fs.exe (Win).

Pin 8 ist Video BAS, wenn man nicht die Original ChipBasic Hardware nutzen will, reicht ein Widerstand von ca. 510 Ohm zu PORTC.7
und einer mit 1K nach PORTD.5 Wichtig sind auch die Pullups an den Jumpern (PORTC.2 bis PORTC.4) und auch an den Tastaturleitungen.

Die Anbinfdung von externem RAM über ein CPLD liegt momentan erstmal auf Eis, da ich mir für das grundlegende Timing bei der Kommunikation
mit dem AVR noch etwas einfallen lassen muß. Meine bisherigen Ansätze waren entweder zu langsam, um Videoausgabe über das externe
RAM abzuwickeln oder aber nicht ausreichend stabil (wahrscheinlich Schwankungen im Portverhalten des AVR).

Da im Mikrocontroller-Forum die Frage nach einem Steuerungschip gestellt wurde, will ich das hier mal in die Runde werfen. Konkret geht es
um einen ZX81 kompatiblen Steuerungschip auf Basis dex AX81. Dieser hat dann weder Tastatur noch Video, dafür reicht aber ein Mega32
oder Mega328 aus. Datenübertragung würde ich im ZX81 Format (Audio) machen, der AX81 selbst bekommt dazu eine Tapeout Funktion.
Parallelports oder auch ADC könnten dann vie PEEK/POKE oder mit kleinen Subroutinen über I/O angesprochen werden, ebenso ein serieller
Port, über den man z.B. via PRINT und INKEY$ kommunizieren könnte.

Gruß Jörg

Kai
User
Beiträge: 386
Registriert: 19.04.2005, 20:46

Re: AX81 - ZX81 im ATMega

Beitrag von Kai » 15.11.2011, 18:43

Da sind jetzt drei verschiedene Hex-Files für den 1284. Welches ist für was?

joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 15.11.2011, 20:22

t-- bedeutet TV only
t-l bedeutet TV und LCD
tvl bedeutet TV, VGA und LCD

wobei VGA beim Mega644 nicht geht und dort die entsprechende Variante fehlt.

Gruß Jörg

Kai
User
Beiträge: 386
Registriert: 19.04.2005, 20:46

Re: AX81 - ZX81 im ATMega

Beitrag von Kai » 16.11.2011, 13:38

Jetzt wirds klar :wink:
Ich kann allerdings beim Galep nirgends die Fuseeinstellungen für low/high/ext finden. Heißen die da eventuell anders? Ich habe das -tvl mit den Grundeinstellungen programmiert, es zeigt aber kein anderes Verhalten. Auf den Pins zum LCD tut sich gar nichts,

Benutzeravatar
Frank Möller
User
Beiträge: 92
Registriert: 17.12.2006, 00:29
Wohnort: Nicht weit von Köln

Re: AX81 - ZX81 im ATMega

Beitrag von Frank Möller » 17.11.2011, 21:09

Hier soll es Platinen (Bausätze) geben.
http://www.forum64.de/wbb3/board45-floh ... sis/">AX81 - ZX81 auf AVR Basis - Sammelbestellungen - Forum-64</
Grüsse aus Köln
Frank

Benutzeravatar
Paul
User
Beiträge: 2573
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: AX81 - ZX81 im ATMega

Beitrag von Paul » 17.11.2011, 21:59

Wenn ich versuche die Seite aufzurufen steht dort das der Zugang verwehrt wird. :shock:
ZX-Fans scheinen nicht willkommen zu sein :(
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 18.11.2011, 09:01

Ich habe die Seite für iPAD und iPhone gesperrt, da das für mich geschlossene Systeme sind,
die ich nicht unterstützen möchte. Wobei die meisten Nutzer dieser Geräte auch einen
normalen Computer haben werden, was das Ganze sowieso relativiert.

Jörg

Benutzeravatar
Paul
User
Beiträge: 2573
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: AX81 - ZX81 im ATMega

Beitrag von Paul » 18.11.2011, 09:15

Frank Möller hat geschrieben:Hier soll es Platinen (Bausätze) geben.
http://www.forum64.de/wbb3/board45-floh ... sis/">AX81 - ZX81 auf AVR Basis - Sammelbestellungen - Forum-64</
Ich meinte diese Seite.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

joergwolfram
User
Beiträge: 35
Registriert: 26.10.2011, 13:17
Wohnort: München
Kontaktdaten:

Re: AX81 - ZX81 im ATMega

Beitrag von joergwolfram » 18.11.2011, 09:24

Ich hab das mal probiert und komme auch nicht rein. Allerdings bin ich auch nicht in dem Forum unterwegs.
Wahrscheinlich muß man angemeldet sein und Frank hat das als angemeldeter User nicht beachtet, als
er den Link gepostet hat. Vielleicht kann er ja Bestellungen von hier dann dort mit einbringen.

Jörg

Benutzeravatar
Paul
User
Beiträge: 2573
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: AX81 - ZX81 im ATMega

Beitrag von Paul » 18.11.2011, 09:52

joergwolfram hat geschrieben:Vielleicht kann er ja Bestellungen von hier dann dort mit einbringen.
Das wäre natürlich super :D
FRAAAANK???
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Kai
User
Beiträge: 386
Registriert: 19.04.2005, 20:46

Re: AX81 - ZX81 im ATMega

Beitrag von Kai » 18.11.2011, 18:19

Kai hat geschrieben: Ich kann allerdings beim Galep nirgends die Fuseeinstellungen für low/high/ext finden. Heißen die da eventuell anders? Ich habe das -tvl mit den Grundeinstellungen programmiert, es zeigt aber kein anderes Verhalten. Auf den Pins zum LCD tut sich gar nichts,
Hallo Jörg, dazu eventuell ein Tip von Dir?

crasbe

Re: AX81 - ZX81 im ATMega

Beitrag von crasbe » 19.11.2011, 18:47

Ihr seid im F64 nicht nicht willkommen, es geht einfach darum, dass der Thread, in dem die Sammelbestellung abläuft, in dem Thread ist, in dem Forum für Handel ist.
Dieses ist nicht für Besucher geöffnet.
Außerdem steht es noch nicht genau fest, welche Platine benutzt werden soll.
Es gibt im Moment drei Vorschläge: Eine Platine mit SMD, eine Platine, die nur mit den Basissachen ausgestattet ist und außerdem zwei Seiten hat, und meine Platine, die nur eine Seite hat, und eigentlich alles hat.
Parallelanschluss, I²C-Breakout und Jumper für alles.

Parallel dazu hab ich eine Frage an Jörg:
VGA-Ausgabe funktioniert nur beim ATMega644P und ATMega1284P, dazu muss noch eine zusätzliche Brücke von PORTD.3 nach PORTC.7 gelegt werden.
Ist das wirklich notwendig, und auch DIESE Ports?
Weil PORTC.7 ist auch für Farbausgabe eingesetzt...

MfG.
crasbe

Antworten