0

UDG 4 ZXpand [Sinclair ZX81]

UDG 4 ZXpand

UDG 4 ZXpand

Endlich wieder etwas zum Sinclair ZX81 – meinem ersten Computer!

Das UDG 4 ZXpand (UDG = user defined graphics) ermöglicht es, das externer Speicher dafür verwendet wird, benutzerdefinierte Grafiken (UDG) zu speichern. Das Gerät wird dazu an den ZX81 angeschlossen und hinter dem kleinen Interface der externe Speicher (z.B. ZXpand oder ZXBlast) Funktion: Abfangen der Adreßleitungen während der Auffrischphase des geholten Speichers während der Video-Erzeugung.

Die Verwendung ist denkbar einfach, dabei hat es 3 Modi wobei jeder durch die Benutzung einer einzelnen Jumperverbindung auf dem Jumper-Block mit drei Positionen ausgewählt werden kann.

Werden die oberen beiden Pins markiert mit der Bezeichnung „64“, wird der 64 Zeichen Modus ausgewählt. Werden die unteren beiden PINs ausgewählt, markiert mit „128“, wird der 128 Zeichen Modus ausgewählt. Wird der PIN ganz entfernt wird die Funktionalität der Platine abgeschaltet und die normale WRX (HiRes Grafik) Funktion des ZXpand/ZXblast werden verwendet.

Der 64 Zeichen Modus ist ziemlich der gleiche wie die Standardzeichen Generation des ZX81. Man erhält 64 einzigartige Zeichen und deren entsprechende inversen Kopien.

Der 128 Zeichen Modus ist eine Erweiterung der Standard Zeichen Generierung und bietet 128 einzigartige Zeichen auf Kosten des Verlustes der invertieren Zeichen.

Um die UDG aus BASIC zu verwenden, wird ein alternativer Zeichensatz benötigt. Dieser kann von dem DK’tronics ROM sein oder eines das selbst mit Hilfe des UDG Designer oder einem anderen Tool erstellt wird. Am Ende sollte eine Datei auf dem Speichermedium zur Verfügung stehen das die Zeichen enthält – 512 Byte groß für jeden Zeichensatz mit 64 oder 1024 Bytes für jeden Zeichensatz mit 128 Zeichen.

Wenn die Zeichensatzdatei zur Verfügung steht, muss noch über die Adresse entschieden werden an die sie geladen werden soll. Für 64 Zeichen muss dies auf einer 512 Byte Grenze sein, z.B. 8192, 8704, 9216 usw. Für 128 Zeichen muss es auf einer 1024 Byte Grenze sein, z.B. 8192, 9216, 10240 usw….
Das ist die Basis Adresse und es muss ebenso der entsprechende Wert für das I Register kalkuliert werden, das verwendet wird um die ZX81 Hardware auf den Zeichensatz zu verweisen. Dazu wird die Basis Adresse durch 256 geteilt. Somit ergibt das für die Basis Adresse 8292 32 und für die Basis Adresse 10240 40. Dies ist die Zahl die für das I Register benötigt wird.

Das Ändern des I Register in BASIC ist nicht schwierig, verwendet aber eine klein 5 Byte große Maschinensprache Routine. Im folgenden Beispiel wird das kleine MC-Programm in Zeile 1 durch die Zeilen 2 bis 6 gepoked. Der Wert für Adresse 16515 entspricht dem Wert das für das I-Register verwendet wird und kann entsprechend der gewählten Basisadresse geändert werden. Danach werden die benutzerdefinierten Zeichen in die auswählte Adresse geladen und der USR 16514 Aufruf in Zeile 10 ändert das I-Register und nun verwendet der Zeddy den neuen Zeichensatz und der Rest des Programms wird normal ausgeführt bis das Ende erreicht wird. Am Ende ist es zu empfehlen wieder die Standardzeichen des ROMs zu aktivieren. Die wird durch einen Poke des Wert 30 (der Standard-Wert) in Adresse 16515 erledigt. Danach muss wieder ein kurzes USR 16514 gemacht werden damit das I-Register angepasst wird.

CODE:
1 REM XXXXX
2 POKE 16514,62
3 POKE 16515,32
4 POKE 16516,237
5 POKE 16517,71
6 POKE 16518,201
7 LOAD „MYCHARS;8192“
10 RAND USR 16514
20 REM REST DES PROGRAMMS DAS UDG VERWENDET
30
40

9989 REM 30 IST DER I REGISTER WERT FUER STANDARD ROM ZEICHEN
9990 POKE 16515,30
9995 REM ZURUECK ZU DEN ROM ZEICHEN
9996 RAND USR 16514
9999 STOP

Passend zum UDG 4ZXpand gibt es den UDG Designer mit dem eigene Zeichensätze erstellt werden können.
UDG Designer

Neben dem ZXpand kann das UDG auch mit dem ZXblast aus Deutschland verwendet werden.

Im englischen Forum Sinclair ZX World sind bereits einige Spiele zu finden, die von dem neuen Gerät fleißig Gebrauch machen und damit erstaunliches ermöglichen.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.