Beiträge von LogicDeLuxe im Thema „Automatisch erkennen ob C128 im 40 oder 80 Zeichen Modus ist“

    In der Zerro-Page Adresse $E7 bzw. 238 wird abgelegt, die rechte Grenze des Fensters. Die Adresse braucht man nur auslesen, bei Ergebnis 39 oder 79 hat man dann die Antwort.

    Eine einzelne Zeropage-Adresse samt geschriebenem Inhalt zu überwachen ist jetzt auch nicht einfacher, als die Videochips auf Zugriffe zu überwachen. Und sobald ein Programm die Hardware am KERNAL vorbei anspricht, und erst recht im C64-Modus bringt das ohnehin nichts.

    1.) das dargestellte Bild einfach durch Schreibzugriffe ins RAM geändert wird, ohne dass unbedingt in VIC-Register geschrieben wird, und

    Stimmt schon. Eine Umschaltung vom VDC zurück zum VIC kann da unter gehen. In der Regel geht eine Umschaltung allerdings auch mit der Umschaltung zwischen 1 und 2 Mhz einher, was dann wieder ein VIC-Zugriff wäre.

    2.) dass im 128er-Modus ständig auf VIC-Register zugegriffen wird, die mit der BIlddarstellung gar nichts zu tun haben, wie z.B. das Interrupt-Acknowledge-Register oder die oben erwähnten zusätzlichen Tastaturleitungen.

    Das ist allerdings schon etwas kniffeliger. VIC-Interrupt ist da eher unbedeutend, denn ohne den VIC aktiv zu nutzen, hat man da doch gar keine Verwendung für.

    Die Tastaturabfrage ist allerdings ein Argument. Da müßte man den VCD wohl die Priorität geben, wenn beide Chips zeitnah angesprochen werden. Funktioniert natürlich auch nur, wenn die Tastatureingaben immer auch sofort Auswirkungen auf den VDC haben. Um das wirklich sicher zu machen, müßte man wohl schon Zugriffe auf $d02f bei der Erkennung noch explizit ausschließen. Dazu müßte man die unteren 6 Bit vom Adressbus auch noch überwachen.

    Ein weiterer Fall, wo so eine Erkennung nicht funktioniert, sind natürlich Programme, welche den VDC als RAM-Disk zweckentfremden.

    Na, ich würde eher sagen, da alle zusätzlichen Tasten die auf einer 128´er Tastatur drauf sind durch den vic laufen sollte man doch da auch ein Register abfragen können ob 40/80 gedrückt ist, oder nicht.

    Die Taste spielt doch nur beim Reset eine Rolle.

    Wie man letztendlich umschaltet, wurde auch schon erwähnt:

    Umschalten kann man mit ESC+"X" (nacheinander) oder eben mit printchr$(27)"x" als Befehl

    Und das bezieht sich wohlgemerkt lediglich auf die KERNAL-Routinen. Jede Software kann die Chips nach Belieben ansprechen.

    Es gibt keine Taste, über die man den aktuellen Zustand abfragen könnte.