Hallo Besucher, der Thread wurde 6,6k mal aufgerufen und enthält 9 Antworten

letzter Beitrag von Wan-Tu-Eit am

Unterschied C128 - C64

  • Hallo,


    da im "Civ auf dem Cevi"-Thread gerade um den C128 gestritten wird und mir da ein paar Punkte unklar sind...


    Was sind denn, aus der Sicht eines Programmierers die wesentlichen Unterschiede zwischen C128 und C64, bzw. was muss man tun um ein C64-Programm auf den C128 zu portieren?



    1) Der C128 hat -oh Wunder- 128K RAM. Die genaue Verwendung von Bankswitching oder MMU scheint etwas komplex. Ist es möglich einen GeoRam-ähnlichen Zugriff zu konfigurieren, also nur einen 256-Byte Bereich umzuschalten?
    Wie sieht es mit dem videomäßig ungenutzten VDC-Zusatzspeicher aus?


    2) Anderer Kernel - Damit dürften sich alle Einsprungaddressen für Systemcalls ändern, richtig?


    3) VDC Video. Kann der die C64-Videomodi vollständig ersetzen (und mit wenig genug Aufwand daß es im Fast-Mode nicht langsamer als ein C64 ist).


    Sonst wichtige Unterschiede?
    Unterstützung durch CC65?

  • Das sind viele Fragen...


    Portierbarkeit: In Basic: 100%, solange kein PEEK, POKE und SYS oder USR(x) verwendet werden. Sie sit also so gut (oder schlecht) wie zwischen allen CBM Rechnern.
    Zusätzlich gibt es noch ein paar unterschiede in der Interpretation von BASIC 2.0 (dazu habe ich mal was in der C128-Rubrik geschrieben).
    Noch ein Hinweis: Der C128 ist bei BASIC-Programmen im 1MHz-Modus langsamer als ein C64! Das liegt im Wesentlichen am häufigen Bankswitching, das ganz schön die Systemressourcen wegknabbert. Bei optimiertem Assembler spielt das aber keine große Rolle.


    zu 1)
    GeoRAM Zugriff: das ist nicht sinnvoll. Aber man könnte sowas programmieren. Nur warum?
    Die Umschaltung erfolgt in einem Block entweder ist RAM 0 oder RAM 1 aktiv. Es gibt aber sogenannte "Common Areas" am oberen und unteren RAM-Ende. Diese können 0k, 1k oder 4k groß sein. Standard ist 1k (von $0000 bis $0400). Über die Commen Area kann dann jeweils umgeschaltet werden und so erfolgt über diesen Umweg der Datentransfer von Bank 0 zu 1 und umgekehrt.
    Den VDC Zusatzspeicher kann man 100% nutzen, wenn man entsprechend hochauflösende Grafik einschaltet (siehe Graphic Booster)
    oder man nutzt ihn als RAM-Disk (wie z.B. Godot).


    zu 2)
    Die Sprungadressen ab $ff81 sind identisch. Direkte Einsprünge ins ROM sind natürlich anders. Die Zeropage ist auch nicht identisch. Man benötigt Crossreferenzlisten um Programme anzupassen. SID und VIC funktionieren identisch nur steuert der C128 diese z.T. im Interrupt, so dass man vorher dem C128 sagen muss, dass er die Finger von den Registern lassen soll (gilt nur für einige der Register)


    zu 3)
    Nein, kann er nicht.
    (a) Grafik in Hochauflösung? --> Ja, VDC ist hier um Längen besser (kleinere Kacheln, höhere Auflösung, siehe Grafik Booster).
    (b) Multicolor in Hochauflösung: so nicht darstellbar, da immer 8 horizontale Pixel eine Farbe haben (dafür mit Interlace Farbmischung)
    (c) IFLI AFLI u.s.w.: nicht möglich (nur "einfacher" Interlace)
    (d) Multicolor Text: nicht möglich
    (e) Text: Überlegene Fähigkeiten, mit Attributen wie Blinken, Invers und Unterstrichen
    (f) Strites: Fehlanzeige
    (g) Splitscreens: Fehlanzeige
    (h) Interruptprogrammierung, Effeklte etc. Fehlanzeige (wenige Ausnahmen)
    Was die Geschwindigkeit angeht, ist der VDC um ein vielfaches langsamer (wegen der Art der Register und RAM Adressierung - das führt hier aber etwas zu weit). Im Text-Modus ist das nicht relevant, bei Grafik schon.


    Die wichtigsten Unterschiede:
    - ordentliche Tastatur inkl. Zehnerblock
    - kristallklare 80 Zeichen auf dem VDC
    - Hochauflösende Grafik auf dem VDC (nicht für Demos aber für Business)
    - 128k RAM
    - BASIC 7.0 (mit Grafik- und Diskbefehlen)
    - Fast-Mode 2 MHz (auch im Border nutzbar um den 1MHz-Modus zu tunen)#
    - Burst-Mode für Load und Save von Diskette (157x, 1581, CMD)


    Der Rest steht oben.


    Gruß WTE

  • Zitat

    Originally posted by Wan-Tu-Eit
    Portierbarkeit: In Basic: 100%


    Ok, ich glaube Basic wäre für Civ eher suboptimal :)


    Zitat


    Die Umschaltung erfolgt in einem Block entweder ist RAM 0 oder RAM 1 aktiv. Es gibt aber sogenannte "Common Areas" am oberen und unteren RAM-Ende. Diese können 0k, 1k oder 4k groß sein.


    Ok, dann wäre eine Speicheraufteilung wie sie sich auf einem C64 mit RAM-Modul oder dem DTV anbietet - Code im unteren Bereich,große Daten in der Erweiterung - auf dem C128 wenig sinnvoll - Daten und der sie bearbeitende Code sollten sich in der gleichen Bank befinden. Das macht die Portierung natürlich aufwändiger.


    Zitat


    Die Sprungadressen ab $ff81 sind identisch. Direkte Einsprünge ins ROM sind natürlich anders. Die Zeropage ist auch nicht identisch. Man benötigt Crossreferenzlisten um Programme anzupassen.


    Ok.


    Zitat


    SID und VIC funktionieren identisch nur steuert der C128 diese z.T. im Interrupt


    Den VIC kann man aber nur über TV-Out und nicht über den Monitor nutzen, oder?
    Sprich ein C128-Spiel das nur über VIC laufen kann wäre erstmal keine gute Idee, oder gibts kaum C128-Spieler die nur einen Monitor haben :) ?

    Zitat


    (a) Grafik in Hochauflösung? --> Ja, VDC ist hier um Längen besser (kleinere Kacheln, höhere Auflösung, siehe Grafik Booster).
    (b) Multicolor in Hochauflösung: so nicht darstellbar, da immer 8 horizontale Pixel eine Farbe haben (dafür mit Interlace Farbmischung)


    Das "Original" von Civ hat 320x200 bei 256 Farben. Eine höhere Auflösung wäre also IMHO vor allem interessant, wenn man dadurch mehr Farben emulieren könnte.
    Auch müsste man ca 90% des Schirms bei jedem Scrolling neu zeichnen, das sollte also flott möglich sein.
    Ist der Zeichensatz des VDC änderbar (Quasigrafik) ?
    Fehlende Sprites sind natürlich schlecht, so eine Art Mousepointer bräuchte man schon.


    Sieht so aus als wäre zumindest was Civ betrifft eine VDC-Version weniger sinnvoll (aber hey, mehr freies RAM :D )

  • Zitat

    Den VIC kann man aber nur über TV-Out und nicht über den Monitor nutzen, oder?
    Sprich ein C128-Spiel das nur über VIC laufen kann wäre erstmal keine gute Idee, oder gibts kaum C128-Spieler die nur einen Monitor haben?


    Der VIC ist der gleiche Grafikchip wie beim C64 (40 Zeichen /320 x 200) Ausgänge sind hier wie dort: Antenne, Composite und "S-Video" (Chroma/Luma). Normalerweise schließt man das an einen 1901 oder 1084-Monitor an (der hat eine 40/80-Zeichen Umschaltung) es geht aber auch ein 170x wie beim C64.


    Zitat

    Das "Original" von Civ hat 320x200 bei 256 Farben. Eine höhere Auflösung wäre also IMHO vor allem interessant, wenn man dadurch mehr Farben emulieren könnte.
    Auch müsste man ca 90% des Schirms bei jedem Scrolling neu zeichnen, das sollte also flott möglich sein.
    Ist der Zeichensatz des VDC änderbar (Quasigrafik) ?
    Fehlende Sprites sind natürlich schlecht, so eine Art Mousepointer bräuchte man schon.


    Neuzeichnen in VDC Hires dauert "ewig". Mehr Farben ja, aber mit den oben genannten Einschränkungen.
    Ja, der VDC kann jeden (8x8) Zeichensatz darstellen, den auch der VIC darstellen kann (es ist auch möglich 8 x 16 ZS anzuzeigen) (Beipsiel von Quasigrafik: Wumpus)
    Mauspointer ginge auch über "Quasigrafik" (siehe wieder: Wumpus).
    Nachteil der Qusaigrafik: Es ist nur eine allgemeine Hintergrundfarbe möglich. Sowas wie MCM/ECM kennt der VDC leider nicht.


    Zitat

    VDC grafik würde ich für jede art nicht triviales spiel einfach vergessen - viel zu langsam


    Wenn man den VDC in Hires verwenden will, stimme ich voll zu. Wenn sich was bewegt, bewegt es sich langsam (eine SuperCPU128 hilft da enorm!).


    Gruß WTE

  • Hat der VDC nicht auch mehrere Pages?
    Zumindest kann man damit das Schlierren unterbinden.
    Und übrigens, Empire wurde früher (Jaja, als wir noch nen Kaiser hatten ;) ) auch mal über Terminal gespielt und es lief auch.
    Hatte ich mit 12 sogar mal ausprobiert.

  • Zitat

    Hat der VDC nicht auch mehrere Pages?


    Na ja, wenn man 64k hat, dann kann man viele LoRes-Pages anlegen. Sollte schon für ne kleine Animation reichen. In HiRes sind es halt weniger - kann man sich ja ausrechnen.
    Aber Bild aufbauen und dann intern im VDC mit Videochip-Blockcopy schnell kopieren, tut's meist auch.


    Gruß WTE

  • Ich weiß nicht wie die es anstellen, aber Mauszeiger im VDC Funktioniert unter Geos 128 2.0 ganz hervorragend.


    Programme in der Georam, Funktionieren aber nicht in Basic, man kann sogar eine richtige Befehlserweiterrung reinpacken, und die in Basic nutzen.
    Man benötigt eine Banksteuerung im freien Arbeitsram, wenn man alles mögliche in die Georam schafft, dann benötigt man nur 2 Blocks im Hauptspeicher, das Problem ist noch man muß die Programme in die Georam schaffen.


    Das ganze macht aber wie Wam-tu-Eit geschrieben hat keinen Sinn, ich hab es im letzten Jahr mal ausprobiert, mit einer erweiterung zum Tedmon, ging prima.