Hallo Besucher, der Thread wurde 14k mal aufgerufen und enthält 27 Antworten

letzter Beitrag von Diddl am

VC20 Final Expansion :: Firmware / Firmware Flasher

  • Die Final Expansion kommt mit programmierten CPLD und leerem EEPROM. Das EEPROM soll die aktuelle Firmware der FE beinhalten.


    Um die aktuelle Firmware in das EEPROM zu bringen, braucht man den Firmware Flasher. Der Firmware Flasher kann neue EEPROMS beschreiben und natürlich künftige Updates der Firmware über die alte Firmware brennen. Der Firmware Flasher befindet sich im Disk Image und heißt: FE3FLASH



    Um das EEPROM der Final Expansion zu programmieren müssen folgende Schritte ausgeführt werden:

    • Firmware auf die SD Karte schreiben (zwei Dateien: FE3FLASH und FE3FIRMWARE).
    • VC-20 ausschalten!
    • Final Expansion in den Erweiterungsslot des VC-20 stecken.
    • VC-20 einschalten.
    • LOAD "FE3FLASH",8 eingeben oder LOAD "*",8 wenn die Datei FE3FLASH die erste Datei auf der SD ist.
    • RUN eingeben.


    Der Bildschirm sollte jetzt in etwa so aussehen:
    FirmwareFlasher.png



    Durch Betätigen des Reset Knopfes der Final Expansion kommt man nun direkt in den Startschirm der FE:
    Screenshot_2.png Screenshot.png


    .

  • Der Diskloader der r001 zeigt schlimme Schwächen die in der r002 alle gefixed sind:

    • Systemfarben werden gesetzt (für Startoption RUN und SYS)
    • Die BASIC initialisierung wird nochmals durchlaufen um die aktuelle RAM Einstellung zu aktualisieren.
    • Programme die im Kasettenbuffer liegen funktionieren nun, müssen aber als letztes File geladen werden.
    • Der Loader hatte Probleme mit A000 Cartridges wenn kein RESET Kommando nachfolgt. Die r002 kopiert im Abbruchfalle die Firmware erneut ins RAM und kann jetzt mit allen Startoptionen umgehen.


    Es funktionieren jetzt alle bekannten Problemfälle. Mir ist kein Programm bekannt dass der Loader nicht starten könnte. Bitte Problemfälle an mich melden, sollten welche auftreten.

  • Das Flash Utility wurde überarbeitet. Es funktioniert jetzt zuverlässig auch wenn schon was auf dem EEPROM drauf ist. Die Firmware hat jetzt r003.


    + Es wird ein Test über den ganzen $A und $B Bereich gefahren, ob das EEPROM leer ist (Blankcheck)


    + Nach dem Flash Erase wird der Blank Check nochmals gefahren und ggf. abgebrochen.


    + Der Flasher kontrolliert nun nicht nur den Rückgabewert des EEPROM sondern macht auch ein Verify.


    + Getestet mit 29F040 und 29F040B



    Zudem gibt es ein neues Tool "fe3erase" das den Flash (nur) löscht. Wird normal nicht benötigt nur wenn es mit dem fe3flash nicht funktionieren sollte.

  • Zeit für Revision 7:


    Die Wedge ist komplett neu geschrieben und heißt jetzt FE3 Wedge. Ausnahme ist nur der volle RAM Modus (F1, F7), da wird die alte EasyWedge nach $0500 kopiert, weil die FE3 Wedge (noch) nicht relocatable ist.


    Highlights der neuen Wedge:

    • Die FE3 Wedge greift nicht mehr die CHRGET Routine in der Zero Page an, sondern verwendet ordnungsgemäß die $300 Vektoren


      Da die CHRGET Routine erhalten bleibt ist die Kompatibilität zu BASIC Programmen besser und die laufen dadurch auch wieder mit 100% Geschwindigkeit. Die Wedge Befehle sind sozusagen sauber ins VC-20 System integriert.


    • Die LOAD Routine des Kernels wurde modifiziert und wird jetzt durchgängig verwendet (auch vom Disk Loader)


      Der normale LOAD Befehl hat bis zu 3 Argumente: Dateiname, primäre Adresse (PA), sekundäre Adresse (SA). Jetzt kommt ein viertes (optionales) Argument dazu, eine erzwungene Ladeadresse. Dadurch kann ein Programm oder eine Datei auf eine bestimmte Adresse geladen werden, unabhängig davon was im Datei Start für eine Adresse gespeichert ist.


      Die SA konnte schon vorher 0 (BASIC) oder 1 (Programm) sein. Nun gibt es zusätzlich eine 2 für Cartridges. Im Modus 2 werden die ersten beiden Bytes einer Datei nicht länger als Startadresse interpretiert, sondern sind normaler Bestandteil der Datei. VC-20 Cartridges sind oft so gespeichert, also ohne Ladeadresse in der Datei. Wenn bei Modus 2 keine Ladeadresse angegeben wir, dann ladet die Cartridge ab BASIC Start.


      Es wird nach dem Ladevorgang die Start und Endadresse der Datei angezeigt, auch bei VERIFY. Also die tatsächliche Lade- und Endadresse die verwendet wurde.


    • Die Basic Routine zur Auswertung mathematischer Formeln FRMEVL wurde erweitert:


      Es können überall hex- und binäre Zahlen verwendet werden. Hexzahlen beginnen mit einem $ und können 2 oder 4 stellig sein. Binäre Zahlen beginnen mit einem % Zeichen und können 4, 8, 12 oder 16 stellig sein. Die Zahlensystem können beliebig gemischt werden und in jedem beliebigen Ausdruck verwendet werden, auch in einem BASIC Programm.


    • Zahlenumrechnung (Mini Taschenrechner):


      Mit einem "," können im Eingabe Modus Zahlen in verschiedene Systeme umgerechnet werden. Dem "," Zeichen folgt ein beliebiger numerischer Ausdruck oder einfach eine Zahl. Der befehl listet das äquivalent des Ergebnis bzw. der Zahl als Hex-, Dezimal- und Binärzahl und zudem als ASCII (einem oder zwei Zeichen).


    • Die "eigentlichen" Wedge Befehle (/,%,#,$,@) sind erweitert und verbessert:

      SD Karten bedingt gibt es Dateien die mehr als 99 Blöcke haben. Daher ist die Struktur der Directory Anzeige mit $ angepasst auf VC-20 mit SD2IEC.


      Alle Befehle die String Parameter benötigen (/,%,$,@) nehmen den String direkt (ohne "" Zeichen) oder wahlweise in Anführungszeichen.


      Wenn ein Anführungszeichen an Spalte 4 ist (das ist beim Directory so) dann wird das String Argument dort gelesen und Zeichen davor ignoriert. Dadurch kann man ein Directory anzeigen, mit dem Cursor rauf gehen, einen Ladebefehl (/ oder %) schreiben und ENTER drücken, - fertig.


      Mit # kann die Standard Geräte Adresse geändert oder angezeigt werden. Normal ist sie auf 8 eingestellt.


      Die Ladebefehle können auch optional eine gezwungene Ladeadresse haben, wenn der String Parameter in Anführungszeichen steht. Durch Angabe einer Ladeadresse geht der % Befehl in den Cartridge Lademodus (SA=2). Wie beim normalen LOAD werden jetzt Start- und Endadresse angezeigt.


    • Befehl RESET:


      Der Befehl löst einen Software RESET aus. Es werden die VIC IO gesetzt und die Adresse 64802 angesprungen. Wie alle Befehle im VC-20 können auch die FE3 Befehle abgekürzt werden. Man kann also genauso R+shift-E schreiben oder RE+shift-S.


    • Befehle BLK, BLKD, BLKP:


      Die Blockbefehle aus dem Diskloader gehen jetzt auch im Direkt Modus. Ohne Argument werden die IO Register der FE3 angezeigt. Hinter den BLK Befehlen können in beliebieger Reihenfolge die Zahlen 0,1,2,3 und 5 eingegeben werden. Die Zahlen können Komma separiert oder zusammen geschrieben werden.


      Die Befehle BLK und BLKP tun dasselbe, nämlich den Schreibschutz der FE3 aktivieren für die angegeben Blöcke. Also es werden die Bits 0 bis 4 im Register eins (39938) gesetzt.


      Der Befehl BLKD wirkt auf das Register 2. Damit kann man die angegebenen Blöcke deaktivieren, also komplett ausblenden. Also es werden die Bits 0 bis 4 im Register zwei (39939) gesetzt.


    • Befehl NOIO


      Schaltet die Register der FE3 aus. Die Register sind unsichtbar und über 39938/39 nicht mehr erreichbar.


    • Befehl OFF: Schaltet die Wedge ab


      Wenn die Befehlserweiterung Grund von Inkompatibilität ist, kann sie abgeschaltet werden. Es werden alle Vektoren (BASIC und IO) neu gesetzt. Alle erweiterten Befehl funktionieren nun nicht mehr. Auch das erweiterte LOAD ist nun wieder normal. Es können keine HEX oder binären Zahlen mehr verwendet werden.


    • Befehl KILL


      Schaltet alles ab (Wedge, FE3 Register und Speicher Maps) und macht einen Soft - RESET.


    • Code wurde etwas aufgeräumt, Müll entsorgt und ähnlicher Code zu Unterprogramme optimiert



    Wie schon bei der EasyWedge kann man beim Start (einschalten) des VC-20 die Tasten Shift oder Commodore gedrückt halten. Man startet dann ohne Firmware Menü direkt ins BASIC mit Wedge (Shift) oder ohne (Commodore).
    .

  • Neue Firmware - Revision 8:


    + kleiner Bugfix (Unnew Schirm in original Farbe)


    + Diskloader kann jetzt auch mehrere Parameter in einer Zeile richtig verarbeiten (+BLK3,5:NOIO)



    Die Wedge versteht jetzt die Befehle OLD und UNNEW.





    Screenshot_2.png




    EDIT: kleienr Bug hat sich eingeschlichen, die FE3 Firmware hängt beim CD Kommando an das SD2IEC. Behebe ich heute nach Dienst ...


    .

  • Revision 10, nun nur noch mit eigenem Code (FE3Wedge) plus Sourcecode.



    Der Wedge Code liegt im Modul ab $B000 und ist voll relocatable. Das heisst er läuft auf jeder beliebigen Adresse im Speicher. Einfach verschieben und neu starten, alle absoluten Adressen passen sich automatisch an. Bei Start mit vollem RAM (F1, F7) verschiebt sich die Wedge an die Adresse $0500, da angenommen wird der $A Modulbereich wird benutzt als RAM.


    Dasselbe passiert bei SYS 41006, da wird die Wedge auf $0500 kopiert und aktiviert.





    .

  • Revision 012


    + fix für verify
    + Verify Kurzbefehl ">"



    Aber das Beste: SJSAVE für Jiffy Laufwerke!


    Bei aktiver FE3WEDGE und Jiffy laufwerk (oder SD2IEC) läuft das SAVE nun ziemlich flott. :]


    .

  • Revision 014:


    + Menü Timeout entfernt


    + probeweise Diskloader mit Joystick Support


    + RAM Test: wenn kein RAM da fährt das FE3 trotzdem hoch. Beim Diskloader kommt ohne RAM eine Fehlermeldung


    + FE3 Utilities Menü - allerdings noch ohne Funktion



    Screenshot_3.pngScreenshot_2.png


    .

  • Revision 015:


    + Viele kleine Fehler behoben (IEC Stati, IEC Meldungen, Device not present, ...)


    + Menüs aufgeräumt


    + Stop Taste bei LOAD und SAVE


    + nun ist bei jedem Release das Diagnose Programm dabei


    + nun ist bei jedem Release ein VICE Image dabei




    Screenshot.png Screenshot_2.png Screenshot_3.png




    .

  • Kurzer Zwischenbericht: Es hat sich viel getan in der Firmware:

    • Firmware flasher integriert
    • Flash Programm Package
    • Flash Info (Statistik über die Belegung des Flash Speicher)


    Da es nicht viel nützt etwas in den Flash zu schreiben ohne es starten zu können, habe ich auf einen Release 016 und damit auf Releeastests verzichtet.




    Screenshot_2.png Screenshot_3.png Screenshot_4.png Screenshot_5.png Screenshot_6.png Screenshot_7.png




    Damit nähern wir uns dem finalen Release der FE3 Firmware!



    Noch offene Punkte / Zeitplan:

    • Cart Loader (starten der Programme im Flashspeicher) - R017 - 1 Woche
    • Backup des Flash Speicher auf SD (Flash Image) - R018
    • Restore aller oder einzelner Programme des Flash Imager - R019


    Für R018 und R019 gibt es noch keinen Zeithorizont, weil noch andere ToDo vorgezogen werden (CPLD v3.2, XS-1541)

  • Zeit für Release 17


    + Firmware flasher integriert


    + Cartflasher
    + Cartloader
    + Cartinfo




    Mit dem Cartflasher kann man 480KB des Flashspeicher füllen mit allen Programmen die einem am liebsten sind.


    Jeder kann seine Lieblingsprogramme frei zusammenstellen. Der Cartloader lädt die Programme dann blitzschnell ohne dass man eine Floppy oder eine SD benötigt.




    Screenshot_6.png Screenshot_7.png Screenshot_8.png





    ACHTUNG: Neuen Flasher verwenden, da Firmware jetzt 12KB hat



    .