★ APPLICATIONS ★ DIVERS ★ Farbe mal drei ★ |
RSX Multicol (CPC Magazin) | Applications Divers |
Mit dem folgenden Programm wird Ihr Monitor erst richtig bunt. Je nach Modus mit bis zu 27 Farben. Das Programm ermöglicht es, mit dem CPC 464 die dreifache Anzahl an Farben gleichzeitig darzustellen, also je nach Bildschirmmodus 6,12 oder 27 Farben. Dazu wird der Bildschirm in drei Zonen unterteilt, für die jeweils unabhängig der komplette Farbensatz festgelegt werden kann, ebenso die Rahmenfarbe (s. Bild). "Multicol" stellt hierzu fünf zusätzliche RSX-Befehle zur Verfügung: |COLOR.ON Dieser Befehl schaltet den Mehrfarbmodus ein. Die zuletzt mit den neuen |INK- und |BORDER-Kommandos eingestellten Farben erscheinen. |COLOR.OFF Wenn der Mehrfarbmodus zu bunt wird, so kann man mit diesem Befehl wieder in den normalen Farbmodus zurückkehren. |INK, < Farbstiftnr. >, < Bildschirmzone >, < Farbe 1 >[, < Farbe2 >] (0-15) (0-2) (0-26) Für die gewählte Bildschirmzone wird die Farbe 1 und - wenn angegeben - die Farbe 2 (blinkend) für die gewünschte Farbstiftnr. eingestellt. Wurden zu viele oder zu wenig Parameter bzw. eine Zahl außerhalb des zulässigen Wertebereichs angegeben, erscheint eine Fehlermeldung. |BORDER, < Bildschirmzone >, < Farbe 1 >[, ] (0-2) (0-26) Die Rahmenfarbe der angegebenen Bildschirmzone wird eingestellt. |SPEED.INK, < Blinkdauer Farbe 1 >[, < Blinkdauer Farbe 2 >] (0-255) (0-255) Dieser Befehl stellt die Blinkfrequenz für den Mehrfarbmodus ein. Wird nur ein Wert angegeben, wird beiden Farben die gleiche Blinkdauer zugeteilt. Tippen Sie nun Listing 1 ab und speichern Sie es unter dem Namen MULTICOL.LDR ab; dann starten Sie mit RUN. Das Programm erzeugt jetzt eine Datei MULTICOL.RSX, die den Maschinencode der RSX-Befehle enthält. Sollten Fehler in den DATA-Zeilen auftreten, setzen Sie den Rechner zurück, laden das Programm erneut und verbessern die fehlerhafte Zeile. Sobald Sie eine korrekte Datei MULTICOL.RSX erhalten haben, tippen Sie Listing 2 ab und speichern es mit SAVE”MULTICOL.GO”. Mit diesem Programm können Sie die RSX-Befehle dann jederzeit initialisieren. Die Unterteilung des Bildschirms in Zonen wird durch Benutzung des Interrupts erreicht, der jede 1/300 sec ausgelöst wird. Rein rechnerisch ergeben sich dadurch 300/ 50. also 6 Farbzonen. Hier kam es jedoch zu einem unan- Die Routine sollte auch noch möglichst exakt zu jeder 1/300 sec ausgeführt werden, da sonst keine klare Obergangszone entstand (1 n$ entspr. 16 Bildpunkten). Auch wenn das unvermeidliche leichte Flackern (hervorgerufen durch unterschiedliche Befehlslängen bei der Unterbrechung) weitestgehend auf den unsichtbaren Teil des Bildschirms geschoben wurde, konnten wir nicht die vom Betriebssystem zur Verfügung gestellten Routinen zur Interrupt-Behandlung nutzen, sondern mußten uns möglichst an der Quelle einhängen. Die bei jedem Interrupt angesprungene Adresse 0038h war nicht als Vektor zu verwenden, da sie auch im ROM angesprochen werden konnte, so daß wir den von dort aus erfolgenden Sprung auf die RAM-Adresse 0B939h anzapften und die dort stehende Routine soweit wie nötig in unser eigenes Programm kopierten. Damit konnte dann ordnungsgemäß die normale Interrupt-Behandlung durchgeführt werden. Die Farbeinstellung im Takt von 50 Hertz mußte ebenfalls verhindert werden, da sonst die alten Farben ab und zu noch auf leuchteten. Dies erreichten wir durch Einschreiben eines Wertes in den Adreßvektor des für das Setzen der Farben zuständigen Interrupt-Blocks, so daß dieser nun auf einen RET-Befehl (0C9h) zeigte. Da dieser Vektor jedoch bei jedem MODE-Befehl zurückgesetzt wird, mußte auch der MODE-Befehl in der Weise umgeleitet werden, daß nach jeder Ausführung eines MODE-Befehles der Vektor erneut "entschärft” wird. Die Daten für die 16*3*2=96 Bildschirm- und die 2*3=6 Rahmenfarben sind in einer Tabelle von Adresse 0A101h bis 0A166h in nachstehender Reihenfolge abgelegt: Zone 0: INK 0, INK 1.....INK 15, BORDER (1. Farbe) Jörg Seidler + Co, CPC Magazin
|