Hello, Guest the thread was called1.8k times and contains 11 replays

last post from Dirk Vroomen at the

80x50-Zeichen für den C-128:

  • Hallo,


    Joseph Heaverin hatte in der Compute!’s Gazette von Dezember 1989 mal einen Hex-Dump einer 80×50-Zeichen Routine veröffentlicht. Ich habe die VDC-Register auf PAL angepasst und einige Anpassungen am Bank-Switching vorgenommen. Derzeit funktioniert der Basic-Editor vollkommen transparent und diverse Programme (u.a. Buddy-Assembler). Das Banking muss ich noch weiter anpassen, da nach einem Kernel-Aufruf immer fix zur Bank 15 zurückgesprungen wird.


    Wer möchte, kann dies gerne mal ausprobieren. Würde mich über Feedback freuen. Aber bitte nur an einem Monitor testen, der den Interlaced-Modus des VDC korrekt darstellen kann. Der 1084S-P1 gehört wohl nicht dazu, das habe ich selbst geprüft.





    Screenshot: http://www.vroomen.de/C128/C128-80x50.JPG


    Anleitung: http://www.vroomen.de/C128/80x50zeichen-anleitung.txt


    D64-Image: http://www.vroomen.de/C128/c128-80x50.d64


    Original-Dokument: http://www.vroomen.de/C128/C128-80x50.pdf


    Gruss Dirk

  • Ja, läuft auf dem 1901 auch. Das Bild steht dabei etwas weit rechts. Dies liegt am erhöhten Wert für Register 0 - normal 126, bei dir jetzt 128. Wenn man den zurück auf 126 setzt wird das Bild allerdings instabil, laut Hydrophilic aus dem commodore128.org-Forum liegt das daran, dass der VDC nicht genug Zeit hat, das RAM upzudaten und man dem VDC dies durch den höheren Wert in Register 0 quasi erlaubt. Das Register 0 ändert allerdings auch die Raster-Rate. Der Standard-Wert von 126 erzeugt eine Raster-Rate von 1000*1/((126+1)*8/16) = ~ 15,748 kHz - dies ist ziemlich dicht am NTSC-Standard von 15.734 kHz. Commodore hat den Wert auch für PAL übernommen. Hier wäre eigentlich 15,625 kHz richtig gewesen, was sich genau beim Wert 127 im Register 0 ergeben würde: 1000*1/((127+1)*8/16) = 15,625 kHz.


    Du nimmst für Register 4 den Wert 78, was auf (78+1)*8 = 632 Rasterzeilen hinauskommt. Dichter an PAL wäre ein Wert von 77 -> (77+1) * 8 = 624 Rasterzeilen. Commodore selber nimmt in der Standardkonfig übrigens den Wert 39 was non-interlace auf 40*8 = 320 Zeilen (also 640 Zeilen interlace) hinausläuft. Warum Commodore hier so stark vom Standard-PAL abweicht ist mir unklar, vielleicht hat der für PAL "falsche" Wert in Register 0 auch hiermit zu tun. Ich habe ehrlich gesagt leider kaum Ahnung von den Toleranzen der verschiedenen Fernsehsysteme...


    Theoretisch "richtiger" für PAL 80x50 wäre also ein Wert von 77 in Register 4 und ein Wert von 127 in Register 0. Hierbei tritt dann allerdings das oben genannte Problem auf, dass das Bild instabil wird, weil das RAM nicht rechtzeitig aktualisiert wird. Hier hilft dann Register 36 weiter, hiermit kann man die RAM-Refresh-Zyklen des VDC beeinflussen und herabsetzen, so dass weniger häufig aktualisiert wird - damit hat der VDC mehr Zeit zwischen den Refreshs. Der Standardwert ist hier 5, ich habe keine Probleme diesen bis auf 0 herabzusetzen. Für die obige Registereinstellung reicht aber schon ein Wert von 4 - bei meinem C128.


    Jetzt steht das Bild immer noch etwas zu weit rechts, hier kann man Register 2 nutzen. Der Wert 104 sieht hier bei mir gut aus. Ich habe leider noch keine Möglichkeit dies direkt an PAL zu testen, da ich das BAS-Signal noch nicht von der 9-poligen Buchse abgegriffen habe. Ein Kabel ist aber in Arbeit. Vielleicht kannst Du das mal mit deinem Equipment testen?


    P.S.: Um auf exakt die 625-PAL-Zeilen zu kommen müsste man eigentlich Register 5 nutzen können (Vertical total adjust). Aber wann immer ich hier eine 1 (oder einen anderen ungeraden Wert) reinschreibe, wird das Interlace instabil, so als ob das 2. Halbbild ein paar Pixelzeilen zu tief einsetzt... warum das so ist und ob man auf eine andere Weise ein "sauberes" PAL-Signal erzeugen kann, hab ich noch nicht rausfinden können. Entscheidend ist wohl eher, was die modernen Geräte noch so schlucken. Die schalten ja (leider) gerne mal einfach schwarz, wenn das Signal nicht 100% korrekt ist.

  • Es geht auch Umgekehrt, in einer 64'er war mal was unter Tips & Tricks 40 Zeichen mit dem VDC, Ich hab den Bericht mal angehängt. Das Listing selbst hab ich nicht auch noch Eingescannt da es Komplett mit List am Abgedruckten Bildschirm steht.

  • tokra :


    Danke für den Hinweis und die ausführliche Erklärung. Die hätte ich etwas früher benötigt, in den "Fachbüchern" findet man ja selten Praxis-taugliche Infos. Andererseits konnte ich beim Austesten der Register einige nette Effekte beobachten: Anfangs waren die Werte so vollkommen falsch, dass ich sogar Farbinformationen über die Monochrom-Leitung auf dem TFT erzeugen konnte. Erkennen konnte man natürlich überhaupt nichts.


    Die Verschiebung war mir nicht aufgefallen, mit den Werten 77 in Reg-4, 127 in Reg-0, 102 in Reg-2 und 4 in Reg-36 ist die Ausgabe auf der Monochrom-Leitung auch in Ordnung. Die DRAM-Refresh-Rate habe ich hier auch noch nicht wirklich benötigt. Egal was ich hier reinschreibe, es scheint zu funktionieren.


    Die Auswirkung der Änderung konnte ich hier auch direkt sehen (leichte Verschiebung nach links und oben). Ich hatte zuerst die Befürchtung, das meine Video2Vga-Box hier etwas "optimiert", aber das Signal wird sauber durchgereicht und nicht noch irgendwie angepasst.


    Gikauf :


    Den 40-Zeichen-Modus habe ich hier auch getestet. Leider ist der Hintergrund zu hell und die Zeichen laufen nach links oben schräg durch. Zu erkennen sind die Zeichen aber einwandfrei. Wenn ich die Werte für mein System entsprechend angepasst habe, melde ich mich nochmal. Auf dem VDC geht ja so Einiges incl. Grafik, sogar mit einem 16kB-VDC. Theoretisch müsste man wohl für jeden Monitor einen eigenen Register-Satz zur Verfügung stellen, falls der Monitor einen bestimmten Modus überhaupt unterstützt. Deswegen hat Commodore wohl damals die ganzen Funktionen nicht offensiv publik gemacht, oder Sie hatten damals einfach nur keine Zeit mehr ;-)


    Gruss Dirk

  • Zum 40-Zeichenmodus gab es in 64er 3/90 auch eine andere Registerbelegung, die bei etwas besser funktioniert:


    Ich muss bei mir allerdings die Zeilen

    Code
    1. 40 sys rs,63,0
    2. 60 sys rs,51,2


    anpassen, sonst erhalte ich kein stabiles Bild. Und wenn man schon dabei ist:

    Code
    1. color6,15:color5,7:printchr$(27)"r":scnclr
  • Vor langer Zeit hab ich mich auch mal an Interlace am C128 versucht.


    http://www.zimmers.net/anonftp…/vbmlib.ntsc%2bpal.readme


    Soweit ich mich erinnern kann ist es überhaupt nicht trivial passende Settings zu finden, die auf allen Monitoren sauber funktionieren. Viele Interlace Programme zeigen nur durch Zufall auf manchen Monitoren sauberen Interlace an versagen aber auf anderen. Ich meine mich zu erinnern dass die "richtigen" Settings auf ein altes Posting von Fred Bowen zurückgehen in comp.sys.cbm oder dem Vorgänger

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • "ame fix, and the timing has been adjusted to be more PAL like. The horizontal
    frequency was not changed, but the vertical frequency adjusted to 25Hz. This
    was done by raising the number of scanlines to 629. The address of the odd
    frame in memory also had to be changed."


    Da hatte jemand keine Ahnung von dem was er tut.

  • Der war auch nicht schlecht:


    "The composite monitor issue was fixed. This has been done by filling the
    whole 64k VDC RAM with $00."


    Allerdings ist die Reduktion auf 40x25-Zeichen (bei doppelter Pixelbreite: Bit 4 in Reg 25) auf der Monochrom-Leitung wirklich nicht so einfach. Alle Varianten die ich bisher getestet habe führen immer zu einem nach links oben laufenden Text. Bei einfacher Pixelbreite klappt Alles, das kann man dann aber auch lassen oder einfach ein Window deklarieren.


    Aber irgendwann wird das gehen, basta ;-)

  • Sehr schön der VBM-Viewer, kannte ich noch gar nicht.


    Wo wir schon gerade bei Programmen, die den VDC ausnutzen sind. Ich hatte 1993 mal meine gesammelten Werke dazu als Public-Domain-Disk veröffentlicht:


    64K VDC Tooldisk


    Die Krönung ist dabei PaintPreview für GEOS128, das GeoPaint-Grafiken komplett am Bildschirm anzeigt (640x720) Punkte. Außerdem dabei eine BASIC-Erweiterung zur Nutzung der Auflösung 720x700 inkl. obligatorischem Fraktal-Programm. Ich hatte damals anhand der 128er Sonderhefte die ursprüngliche GRAFIK80-Anwendung aus 64er 12/85 an diese Auflösung angepasst. Der "Graphic Booster" aus der Schweiz war mir seinerzeit immer zu teuer.

  • Hallo tokra,


    etwas spät, aber ich habe die Ursache gefunden:


    Alle von Dir vorgeschlagenen Varianten funktionieren mit "echten" Monitoren einwandfrei! (An drei C-128 mit jeweils 2 verschiedenen Monitoren getestet.)


    Das Problem hier war entweder das Monochrom-Signal am RGBI-Port oder mein Adapter. Ich tippe eher auf das Monochrom-Signal. Weiß jemand, warum hier nur 3 Farben realisiert wurden? Diese Einschränkung erscheint mir eher aufwändig: Entweder nur zwei oder alle??


    Gruß Dirk