★ APPLICATIONS ★ CREATION GRAPHIQUE ★ Symbols ohne Probleme ★![]() |
RSX Symbol (Computer Technik) | Applications Creation Graphique |
Ersatz für SYMBOL AFTER beim CPC 464 Fast jeder CPC 464-Benutzer kennt das Problem: setzt man mittels MEMORY den maximalen Speicherbereich für BASIC neu, läßt sich bis zum nächsten Reset kein SYMBOL AFTER mehr ausführen - ein unangenehmer ‘Bug' im Betriebssystem. Wenn man jedoch die Tastatur mit eigenen Zeichen belegen will, braucht man SYMBOL AFTER, da dafür nur die Zeichencodes 160- 238 (bis auf 224 und 225) verwendbar sind. Eine kleine RSX-Erweiterung kann das Problem jedoch lösen. Mit |SYMBOL.AFTER, wert läßt sich nun jederzeit bei beliebigem HIMEM der Bereich für die benutzereigenen Grafikzeichen festlegen. Um wieder auf die Standardbelegung zurückschalten zu können entsprechend dem SYMBOL AFTER ohne Wert ist auch der RSX-Befehl |SYMBOL.RESETeingebaut.Das Assemblerlisting zeigt, wie es gemacht wird. Zunächst werden in bekannter Manier (siehe Teil 2 ‘Des Schneiders Kern' c't 9/85) die RSXes eingebunden. Nun ‘kennt' das BASIC die beiden zusätzlichen Befehle. Beim Aufruf von |SYMBOL.AFTER wird dann das Maschinenprogramm abdem Label SYMAFT angesprungen. Dieses schaltet zunächst das BASIC-ROM ein und führt erst einmal eine 'Garbage Collection'. eine ‘Müllabfuhr', durch. Nicht mehr gebrauchte Strings und Speicherbereiche stellen dabei den Müll dar, der unterhalb von HIMEM abgesammelt wird. Als nächstes merkt sich das Programm den Wert von HIMEM in der Speicherzelle HOLDHI. Dann holl es sich den Werl des RSX-Befehls, auf den (IX+0) und (IX+1) zeigen und speichert ihn erstmal auf dem Stack. Daraus errechnet es, wie viel Speicher unterhalb von HIMEM für neue Symbole reserviert werden muß, wobei acht Bytes pro Symbol anlällen. und bestimmt nun den maximalen freien Speicher für BASIC. Diesen Wert übergibt es als neues HIMEM an BASIC, das alle Maßnahmen ergreift und die Variablen unter den maximalen Speicherwert verlagert. Schließlich bekommt das Betriebssystem den Startwert der benutzerdefinierbaren Symbole und die Startadresse der zugehörigen Zeichenmatrizen übermittelt. Bei |SYMBOL. RESET werden diese Werte zunächst gelöscht, dann das BASIC-ROM eingeblendet. ebenfalls eine 'Garbage Collection' durchgeführt und zum Schluß der alte HIMEM-Wert wieder geladen. Da nicht jeder über einen Assembler verfügt, ist auch ein BASIC-Lader angegeben, der die RSXes in den ausgewählten Speicherbereich (ab 42000) POKE't, aber nur. wenn auch die Prüfsumme stimmt! C'T 8608
|