Dieses kurze Maschinencode-Programm errechnet völlig selbständig drei neue Zeichensätze aus dem Sinclair-Zeichensatz. Dabei handelt es sich um:
Zusätzlich wurde eine Routine eingebaut, die es ermöglicht, jeden aufgerufenen Zeichensatz zu spiegeln. Dies ist ein mehr oder weniger guter Gag; vielleicht findet mancher aber auch eine vernünftige Anwendung dafür.
Das MC-Programm, das 143 Byte umfaßt, wird vom Basic aus in den Speicher eingelesen. Am Ende der Demonstration erfolgt automatisch eine gesonderte Abspeicherung des MC; auf diese Weise kann er in jedem anderen Programm genutzt werden (CLEAR 59999: LOAD "zsg" CODE).
Insgesamt besteht der MC aus fünf Routinen, die sich teilweise gegenseitig als Unterprogramm aufrufen. Es ist daher nur schwer möglich, das Programm im Speicher zu verschieben. Somit eignet es sich nur für Besitzer eines Spectrum 48K.
Rein theoretisch könnte man es jedoch für den Spectrum 16K umschreiben, da es nur sehr wenig Speicher beansprucht (jeweils die Länge eines Zeichensatzes + MC-Programm = 768 + 143 = 911 Byte, und dies für drei völlig neue Zeichensätze, die normalerweise 2304 Byte benötigen). Das Umrechnen geschieht in Bruchteilen von Sekunden; der neue Zeichensatz ist daher nach jedem RANDOMIZE USR sofort bereit.
Da ich keinen Assembler besitze (den MC habe ich von Hand codiert), konnte ich nur ein ausreichend dokumentiertes Disassemblerlisting erstellen.
Zusätzlich ist noch eine kleine Überraschung enthalten. POKE 60860,178 (normalerweise 170): RANDOMIZE USR 60839 erzeugt einen weiteren Alternativzeichensatz.
Bei ihm werden jedoch einige Buchstaben unleserlich, so dass er nicht mehr gesondert ausgeführt wurde. Außerdem ist eine Kombination aus Schräg- und Fettschrift möglich: RANDOMIZE USR 60800: RANDOMIZE USR 60908 (nicht 60905!). Die wichtigsten Informationen sind noch einmal im Basic-Demonstrationsprogramm zu finden.