Selbst wenn dauerhaft ein Syncsignal anliegt ist das Bild doch in der Regel schwarz
...in der Regel, aber nicht immer. Wenn man z.B. eine aktuelle Ausgabe der Digital Talk auf einem 128er bootet, zeigt der VDC "Change monitor mode!" an.
Selbst wenn dauerhaft ein Syncsignal anliegt ist das Bild doch in der Regel schwarz
...in der Regel, aber nicht immer. Wenn man z.B. eine aktuelle Ausgabe der Digital Talk auf einem 128er bootet, zeigt der VDC "Change monitor mode!" an.
In der Zerro-Page Adresse $E7 bzw. 238 wird abgelegt, die rechte Grenze des Fensters.
Hex $e7 ist dezimal 231.
Hex $ee ist dezimal 238.
In $e7/231 steht die höchste Spaltennummer der aktuellen Fensterdefinition, auch auf dem VDC kann der Wert mal 39 werden. Mir fällt auch spontan ein Beispielprogramm ein, wo das der Fall ist.
In $ee/238 steht die höchste Spaltennummer der maximal möglichen Fensterdefinition, das ist in der Tat 39 auf dem VIC und 79 auf dem VDC.
Die Adresse braucht man nur auslesen, bei Ergebnis 39 oder 79 hat man dann die Antwort.
Und was soll man damit anfangen? Bereits in Beitrag Bitte melde dich an, um diesen Link zu sehen. wurde doch schon Software genannt, die beide Videoausgänge gleichzeitig nutzt. Und selbst Software, die nur einen nutzt, kann die Systemvorgaben von Kernal und Editor lustig ignorieren.
VIC-Interrupt ist da eher unbedeutend, denn ohne den VIC aktiv zu nutzen, hat man da doch gar keine Verwendung für.
Den benutzt das System von ganz alleine: Im 128er-Modus wird für den normalen System-Interrupt nicht CIA1, sondern der VIC genutzt.
Ein weiterer Fall, wo so eine Erkennung nicht funktioniert, sind natürlich Programme, welche den VDC als RAM-Disk zweckentfremden.
Guter Einwand, das macht es noch schwieriger.
da alle zusätzlichen Tasten die auf einer 128´er Tastatur drauf sind durch den vic laufen
Könnte man meinen, wär aber falsch.
Es sind 26 Tasten mehr, davon werden 24 über die drei zusätzlichen Tastaturmatrixleitungen des VIC abgefragt, eine (ASC/DIN/CAPSLOCK) über den Prozessorport und eine (40/80) über die MMU.
sollte man doch da auch ein Register abfragen können ob 40/80 gedrückt ist, oder nicht
Natürlich kann man abfragen, ob die Taste gedrückt ist (und für eine manuelle Umschaltung des Monitor-Eingangssignals würde ich tatsächlich auch diese Taste verwenden, denn die ist sonst für nichts zu gebrauchen), aber das ist dann eben immer noch eine manuelle Umschaltung, und die Ursprungsfrage schien eher in Richtung Automatikfunktion zu gehen - die ist aber so gut wie unmöglich zu realisieren, denn es sind eben immer beide Videoausgänge aktiv.
Eine Umschalterkennung könnte die Zugriffe auf den jeweiligen Videochips überwachen. Es ist schließlich anzunehmen, daß der Videochip, auf dem zuletzt zugegriffen wurde, auch der aktiv genutzte ist.
Gute Idee eigentlich, funktioniert aber nur für den VDC: Beim VIC ist es ja so, dass
1.) das dargestellte Bild einfach durch Schreibzugriffe ins RAM geändert wird, ohne dass unbedingt in VIC-Register geschrieben wird, und
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.
EDIT: Man könnte natürlich sowas versuchen wie "wenn <x> Sekunden lang nicht mehr auf den VDC zugegriffen wurde, dann wird wohl der VIC-Ausgang der aktuelle sein", aber selbst das versagt dann bei "press any key to go on".
Ansonsten hat BASIC auch eine Funktion, um herauszufinden welcher Schirm (in BASIC) gerade aktiv ist:
Bitte melde dich an, um diesen Link zu sehen.
Mit 5 ist man im 80-Zeichen-Textmode, alles andere ist 40 Zeichen.
Dabei sollte man allerdings nicht auf "=5", sondern auf ">4" testen, denn wenn der VIC Grafik anzeigt und der Cursor auf dem VDC ist, kann die Funktion auch Werte von 6 bis 9 zurückgeben.