split screen / scrolling eines Bilschirmteils

  • Ich versuche gerade, den Bildschirm in 2 Bereiche aufzuteilen. Im oberen Bildschirmbereich möchte ich vertikal scrollen, MODE1 (8Pixelzeilen auf einmal reicht mir erstmal) und unten möchte ich einen statischen Bereich haben. (in Mode 0)


    Ich hab nun versucht, in einer bestimmten Rasterzeile per CRTC Reg. 12/13 die Adresse des Bildschirmspeichers zu verändern, um dieses zu erreichen, aber so scheint es nicht zu klappen. Das mit dem Mode-Wechsel klappt jedoch sehr gut. (Aber damit hat ja auch der CRTC nichts zu tun!)


    Muss ich irgendwas beachten, wenn ich in die CRTC-Register schreibe? Kann ich das nur zu bestimmten Zeitpunkten tun? Oder muss man das von mir gewünschte Ergebnis irgendwie anders realisieren?

    Nilquader of SPRING

  • Hy, hau da doch am besten den TFM an, der weiss das bestimmt aus dem Rückenmark raus ;) Sein Scrolling ist so ziemlich das weicheste was ich aufm CPC je gesehen habe.
    Seine Email Addy findest du auf seiner Future Os Seite.

    Wie man in den Wald hineinschreit...

  • Das TFM-Scrolling ist sicher ganz nett, ich brauch aber was deutlich einfacheres, was nicht so viel Rechenzeit benötigt. Ausserdem bräuchte ich wahrscheinlich ewig, bis ich einen von TFM geschriebene Assemblerroutine durchschauen würde.


    Ein paar zeilen Codebeispiel oder zumindest die prinzipielle Vorgehensweise würde mir schon reichen. Ich hab bisher halt noch nicht viel mit CRTC-Hardwareeffekten gemacht...

    Nilquader of SPRING

  • Also TFM, das interessiert mit auch.


    Im oberen Bildbereich scrollen und im unteren Bildbereich weiterhin zur Aufnahme von Texteingaben bereit.


    mfg

  • Quote


    Das Umschalten wird durch Interrupts erledigt.


    Das ist das Entscheidende, welches ich von dir wissen möchte, wie das im ASM-Code ausschaut mit dem Interrupt und dem Screen kopieren.


    danke.


    mfg

  • Gibt es eigentlich ein Datenbyte im CPC, wo die Zeilen gezählt werden, welche gerade gezeichnet werden? Im c64 gibt es so eine Adresse.


    mfg

  • Quote from "TFM"

    Also im Prinzip geht das so: Man benutzt zwei 16 KB Bildschirmspeicher. Und auf halber Höhe des Bildschirms wird umgeschalten.


    Das Umschalten wird durch Interrupts erledigt. Wenn man als 2. Bildschirmspeicher den Block 0 bis &3FFF nutzt, dann muß man auch den Interrupt Modus 2 des Z80 nutzen.


    So hab ich es auch probiert. Hab nach der Hälfte des Bildaufbau das entsprechende Register im CRTC geändert. Habe den Block ab &c000 und &4000 genommen. Aber irgendwie hat das bei mir nur Chaos produziert und nicht das gewünschte Ergebnis produziert...

    Nilquader of SPRING

  • Der Screen soll geteilt werden , eine hälfte oben , andere hälfte unten.
    In der oberen hälfte soll auf der ganzen Breite gescrollt werden.
    Die ersten 16kb &4000-&7fff und die zweiten 16kb ab &c000.


    mfg

  • Also das versteht ich nicht. der Winape/Wincpc stürtzt auch ab.


    Geht das nicht einfacher, wie du sagtest?
    Oder mach mal ein ganz kleines Beispiel in deutsch.


    Danke.


    mfg

  • Das Beispiel hab ich auch schon ausprobiert. Hatte auch gehofft, dass es etwas einfacher geht...


    Ich glaube nicht, dass der abstürzt. Du siehst halt einen Speicherbereich, in dem gerade nichts wirklich sinnvolles steht.

    Nilquader of SPRING