Jr -Version des ESP32-Z80-Emu auf/fuer VGA32

  • Da ich wegen der Idee der Umsetzung heute Nacht um 05:00 nicht mehr schlafen konnte, habe ich meine Kreativitaet freien Lauf gelassen und den vorhandenen Code aufgefuellt mit dem FabGL-Terminal aus "meiner" RunCPM-VGA32-Version.


    Das geht in der naechtlichen Kreativitaet meist gut von der Hand (besser als erwartet).

    Einzig einige Bibliotheken (FabGL und SD) hatten wegen doppelter Variabennamen im Bereich der SPI-Pindefinition so viele Fehler geschmissen, dass ich es fast aufgegeben habe ;)


    Aber nachdem alle falschen Fehlermeldungen weggedacht waren und es dann ganz trivial war (z.B. anstatt MOSI nimmt man SD_MOSI) klappt das compilieren ohne Fehlermeldung ;)


    Allerdings mag das Zusammenspiel im Bereich der Tastatur noch nicht ganz 100% klappen.

    D.h. man muss in bestimmten/seltenen Faellen die Taste Enter/Return 2x druecken.

    So z.B. beim Start um an den Prompt zu kommen oder nach dem DIR eingegeben wurde.

    Gibt man am Prompt nicht oder nur Leerzeichen ein, klappt es auch mit 1x druecken :(


    Das ist wohl ein Buffer-Problem der Ein-/Ausgabe, denn auch wenn das FRACTAL Basic Programm das Apfelmaennchen ausgeben will, bleibt die Bildschirmausgabe auch immer wieder mal stehen und geht nach einem Tastendruck weiter - auch wenn es an der Stelle nicht notwendig waere.


    Evtl. hat ja hier jemand eine gute Idee / helfende Hand und kann sich das mal im Source ansehen? ;)

    Auf der Startseite in Github (README.md) sind auch diese Probleme und ein paar Notizen zum Stand des Initial-Relese zu lesen :)


  • wenn ich die Ein-/Ausgabe ueber den seriellen USB-Port "route" im Source dann klappt die Ein-Ausgabe via einem externen puTTY-Terminal ohne Probleme :(

    So muss es am FabGL-Terminal liegen oder an meiner Nutzung dessen.... aber der Code ist ja eigentlich vom RunCPM kopiert und da laeuft es auch ohne Probleme....

  • So :) Probleme geloest :)

    Das Ausgabeproblem lag an einem kurzem Wartebefehl (delay(1) also 1ms) in der Ausgabeschleife

    und das Eingabeproblem lag daran, dass beim fuellen des Eingabe-Ring-Buffers dieser nch ausgelesen wurde wenn er auf 0 stand (>=0) aber geklappt hat es dann besser wenn man vorher abgefragt ob ueberhaupt was im Eingabebuffer steht (Serial.Available() bzw. Serial.Available()) und dann erst diesen einliest (Serial.Read() / Terminal.Read())


    Auch das FabGL Terminal im VGA16Controller-Mode scheint (auch mal wieder aufgrund des graphischen Congif-Menues) wieder mal viel zu heftig zu sein.

    Der Emulator nutzt fuer CPU-Emulation und Serial-Ein-/-Ausgabe jeweils einen Task, der auf einen bestimmten CPU-Core der ESP32-CPU gepinnt ist.


    Ich denke der VGA16Controller nutzt auch so was in der Art, deshalb habe ich zur Zeit Probleme mit dem Init der SD-Karte.


    Diese sind weg, wenn man den VGATextController nutzt, was "leider" den Nachteil hat, dass man die Konfiguration (wie Tastaturlayout und Bildschirmfarben) im .ino Source-Code erledigen muss.


    Aber das macht man ja nur 1x :)


    Dafuer laeuft er jetzt - aus meiner Sicht - echt gut, dafuer dass es meine erste eigene Text-Emulator-Umsetzung auf FabGL ist. Damals beim RunCPM hatte mir ja schon Derek Cooper die Arbeit sozusagen vorbereitet mit der v4.4 :)


    Zusaetzlich hat der Autor des ESP32-Z80-Emulator gerade diesen auf V2.0 gehoben und auf diese Version habe ich noch einmal aufgesetzt bzw. daraus eine Jr-cutdown Version erstellt fuer den VGA32.


    Nebenbei habe ich diese auch fuer meinen WeMOS D1R32 (normaler ESP32) und den Deneyap mini (ESP32-S2) umgesetzt und auch da laeuft die Jr-Version gut :)


    Die neue Version liegt im Download Bereich meines Github