Funkamateur 05/88

 

Schwarz/Weiß-Vollgrafik für den "AC1"

A. FLÄMIG

Bei der Entwicklung der Schwarz/Weiß-Vollgrafik für den "AC1" wurde von folgenden Voraussetzungen und Zielvorstellungen ausgegangen:
einfacher Aufbau und Inbetriebnahme der Schaltung; keine wesentlichen Eingriffe in das Hardware-Konzept des "AC1 "; - Nutzung des noch freien Speicherraumes 2000H bis 3FFFH, um Kollisionen mit anderen Programmen (Editor, Texteditor, Basic-Interpreter), die meist ab 4000H laufen, zu vermeiden; - vergleichsweise geringer Hardwareaufwand; - Verfügbarkeit der Bauelemente; Nutzbarkeit des Grafik-BWS auch als normaler RAM. Aus diesen Punkten ergibt sich, daß die vorgestellte Lösung einen Kompromiß darstellt, der keinen Anspruch darauf erhebt, "der Weisheit letzter Schluß" zu sein, aber für viele Zwecke ausreichend und praktikabel ist.

Schaltungskonzeption

Die Schaltung besteht aus dem Komplex Grafik-BWS mit Adreßmultiplexer und Treiberschnittstelle Bild 1 und dem Komplex Adressengenerierung für den BWS (Bildwiederholspeicher) und Synchronisation zum Original-BWS des "AC1" Bild 2.
Die Grafik wurde unter Berücksichtigung des freien Speicherbereiches von 8 KByte als 256 x 256-Punkte-Matrix ausgelegt. Im Sinne des oben genannten Kompromisses sind effektiv 255 Zeilen mit je 234 Bildpunkten nutzbar. Der Grafik-BWS wird in jeder Fernsehzeile synchron zum Original-BWS zu- bzw. abgeschaltet. Die genannten 234 Bildpunkte entsprechen 39 Zeichen des Original-BWS. Unter Berücksichtigung des Zieles der einfachen Hardware-Synchronisation sind am lin-ken Bildrand 6 Zeichen im Original-BWS-Modus darstellbar, nach rechts anschließend folgt der Grafik-Modus, am rechten Bildrand sind wiederum 18 Zeichen im Original-Modus darstellbar. Die Differenz zu 64 Zeichen/Zeile ergibt sich aus dem zeitlichen Versatz zwischen aktueller BWS-Adresse, Auffangen des BWS-Inhaltes im Register und Auslesen des Registers im Bildpunkttakt.
Damit ist der ganze Bildschirm nutzbar. Links und rechts vom Grafik-Bereich sind z.B. Beschriftungen im normalen Zeichen-Modus möglich. Über einen weiteren Schaltungsteil ist der Grafik-Modus softwaremäßig ab 1., 33., 65 bis 193. Fernsehzeile zuschaltbar, so daß man die Größe des Grafik-Bereiches dem darzustellenden Bild anpassen kann.
Der aktuelle Zustand beim Auslesen des BWS läßt sich softwareseitig abfragen. Damit ist der Zugriff der CPU auf den BWS in der Bildaustastlücke störungsfrei möglich. Der Bildaufbau erfolgt dann natürlich entsprechend langsamer. Andererseits ist es auch möglich, die Grafik bei ausgeschaltetem Grafik-Modus im Hintergrund "schnell" aufzubauen und dann die Grafik softwaremäßig zuzuschalten.

Grafik-Bildwiederholspeicher

Der Kern des Grafik-BWS wird durch 16 x U 214 D gebildet. Die Schaltung ist prinzipiell so ausgelegt, daß man auch U 224 D einsetzen kann. Es sei jedoch darauf hingewiesen, daß sie ausschließlich mit U 214 D erprobt wurde.
Die Adressierung der Speicher-IS erfolgt über die Multiplexer D1 bis D3 bzw. über eine Gatter-Schaltung. Im allgemeinen sind die Adressen des Grafik-Modus durchgeschaltet. Beim Zugriff der CPU auf den Grafik-BWS werden die Adressen auf den CPU-Adreßbus umgeschaltet. Dieses Umschaltsignal stellt D8 bei Anliegen der entsprechenden Adressen und von /MREQ bereit. Das Auswahlsignal des Speicherblockes 2000H bis 3FFFH gelangt zeitlich verzögert (D5.3, D5.4) an E1 von D7, damit bei Aktivwerden der /CS-Signale die Adressen bereits stabil an den Speicher-IS anliegen.
Sollten sich bei der Verwendung langsamer Speicher-IS Probleme ergeben, so sind hier entsprechend Wait-Zyklen einzufügen. Die Datenausgänge der Speicher-IS sind direkt mit den Eingängen der Auffangschieberegister D16/D17 verbunden. Über die Interface-IS D9/D10, deren Richtung mit /RD zu steuern ist, liegen die Datenausgänge am Systembus und werden bei eingeschaltetem Grafik-Modus von diesem getrennt. Im Grafik-Modus liegt E1 von D7 stabil auf L-Pegel, die /CS-Signal-Generierung erfolgt durch E2, das wiederum bei ausgeschalteter Grafik stabil auf L-Pegel liegt.

Adressengenerierung für den BWS

Im Ausgangszustand (entspricht linkem Bildrand) werden D25, D12, D24.3/D24.4 über das rückgesetzte FF D20.1/D20.2 und die /LD-Impulse des Original-BWS (abzunehmen z.B. am Ausgang von DG 10) ständig auf Null gesetzt. Wenn das 8. Zeichen einer Zeile erreicht ist, kippt das FF D20.1/D20.2 nach Ansteuerung durch D13, das durch die entsprechenden Zählerausgänge des Original-BWS gesteuert wird. Der Bildpunktzähler D25, der mit D11 als Ringzähler geschaltet ist, zählt von 0 bis 7. VDCLK ist vom Original-BWS abzunehmen. Den Impuls des Zählerstandes 7 nutzen D12 und D24.3/D24.4 als Zählimpuls. Sie erzeugen die BWS-Adressen ABWS0 bis ABWS4. Gleichzeitig dient der Zählimpuls zur Betriebsartumschaltung der Auffangschieberegister D16/D17 (MC=H:Parallelbetrieb). Die Schieberegister übernehmen die Bildinformation und schieben sie mit VDCLK seriell aus.
Das FF D20.1/D20.2 steuert über D20.3, D20.4, D21.1, D21.2, D21.3 weiterhin in jeder Femsehzeile die Ausgabe der Bildinformation entweder aus dem Original-BWS des "AC1" oder aus dem Grafik-BWS. Das Signal BAC1 ist vom Ausgang D34 des Original-BWS abzugreifen.
FF D24.1/D24.2 realisiert die auswählbare Zuschaltung des Grafik-Modus ab den oben genannten Fernsehzeilen. Das Busregister D15, das durch einen OUT-Befehl geladen wird (IOSEL7), gibt eines der Gatter D22.1 bis D23.4 frei. Der als 1 aus 8 geschaltete Dekoder D14 (H-aktiv!) liefert bei Erreichen der jeweiligen Fernsehzeile H-Signale. Von diesen wird eines entsprechend dem Auswahlort in D5 als L-Signal durchgeschaltet. Dieses L-Signal setzt D24.1 auf H, es gibt den Weg für die Grafik-Bildinformation über D20.3 frei. Außerdem wird damit E2 von D7 angesteuert (/CS-Signale für die Speicher-IS). Während der Zählzeiten 0 und 1 des Ringzählers für den Bildpunkttakt liegt SGE auf H-Pegel (wichtig für den Einsatz von U 224 D).
Das FF D24.1/D24.2 wird während der Bildaustastlücke vom Übertragungsimpuls von D44 des Original-BWS zurückgesetzt. Dieser Zustand läßt sich über IN-Befehle (IOSEL6) und ein Gatter von D18 abfragen.
ABWS5 bis ABWS12 des Grafik-BWS werden wie folgt zugeordnet:
ABWS 5 D43 Q1 ABWS 9 ABWS 6 D43 Q2 ABWS 10 ABWS 7 D43 Q4 ABWS 11 ABWS 8 D43 Q8 ABWS 12 D44 QI D44 Q2 D44 Q4 D44 Q8

Aufbau und Inbetriebnahme

Zunächst ist der Schaltungskomplex nach Bild 1 aufzubauen. SGE ist auf L-Pegel zu legen. Der Speicherblock muß sich von der CPU einwandfrei lesen und beschreiben lassen. Das Verzögerungsglied R1/C1 kann ggf. etwas variiert werden (C1 vergrößern). Führt eine Vergrößerung bis auf C1 = 2 nF nicht zum Erfolg, so sind u.U. die Speicher-IS zu langsam, und es sind über einen einfachen WAIT-Generator ein oder mehrere WAIT-Zyklen einzufügen.
Funktioniert der Speicherblock einwandfrei, so wird das Steuerteil zunächst ohne D14, D15, D22, D23, D24.1 und D24.2 ausgebaut und in Betrieb genommen. Bei normaler Funktion muß die Umschaltung zwischen Original- und Grafik-BWS in jeder Fernsehzeile zu erkennen sein. Nimmt man schließlich auch den letzten Teil der Schaltung in Betrieb, so kann über einen OUT-Befehl (siehe Tabelle 1) der Grafikbereich zu- bzw. abgeschaltet werden. Dazu ist mit dem M-Befehl des Monitors z.B. ab 1900H folgende Bytefolge einzugeben 00 09 61 0D 3E 00 D3 1C C9. "a CR" löscht die Grafik. Es ist sinnvoll, diese Ausgabe (Ld) A,0: OUT 1CH,A) im Initialisierungsteil des Monitorprogramms mit unterzubringen, um bei Inbetriebnahme des "AC1" die Grafik automatisch auszuschalten. Der Grafik-BWS ist mit dem P-Befehl zu löschen.

Austausch-Bauelemente

Verschiedene Teile der Schaltung sind auch mit anderen Bauelementen realisierbar, wenn die angegebenen nicht zur Verfügung stehen. Der Multiplexer kann z.B. nach dem in [1] angegebenen Prinzip mit 4 Stück DS 8212 D aufgebaut werden. Auch mit D 151 D u.a. ist der Aufbau möglich. In Schaltungsteilen, an die keine hohen Geschwindigkeitsanforderungen zu stellen sind, habe ich auch CMOS-IS eingesetzt. D14 ist prinzipiell durch einen DS 8205 D ersetzbar, allerdings sind dessen Ausgänge dann zu negieren. Pin 5 von D20 ist dabei an E1 zu legen.
D15 ist durch einen DS 8212 D ersetzbar. Die Information muß mit einem L-Impuls am STB-Eingang gespeichert werden. Der Negator für /IOSEL7 entfällt dann. Die Abfrage der Fernsehzeile, die momentan ausgelesen wird, kann auch über ein Bit des PIO-Kanals auf der Hauptleiterplatte erfolgen (D18 entfällt). Allerdings ist dazu auch die Grundsoftware zu verändern, wenn im eingeschalteten Grafik-Modus der Grafik-BWS von der CPU beschrieben oder gelesen werden soll.
Diese Bemerkungen sind als prinzipielle Vorschläge zu verstehen. Ich habe sie nicht erprobt.

Grundsoftware

Tabelle 3 zeigt das Hex-Listing für das Setzen bzw. Löschen eines Punktes und das Zeichnen einer Geraden. Die Übergabe der Koordinaten geht aus Tabelle 2 hervor. Die linke untere Bildschirmecke hat die Koordinaten (01,01). Die Programme sind über CALL-Befehle aufrufbar:
CALL 0C055H Programm "Punkt",
CALL 0C07EH Programm "Gerade".
Die Programme laufen ab 0C000H. Bei Transformierung in andere Speicherbereiche sind die unterstrichenen Bytes entsprechend zu ändern. Der Speicherbereich 18E0H bis 18ECH wird mit Hilfszellen belegt (s. Tabelle 2). Entsprechend dem Zustand einiger Zellen wird ein Punkt gelöscht oder gesetzt und man kann berücksichtigen, ob das Bild bei ein- oder ausgeschaltetem Grafik-Modus aufzubauen ist.
Ist ein umfangreicheres Bild zu "zeichnen", so läßt es sich in einem Bereich außerhalb des Grafik-BWS zwischenspeichern. Anschließend ist es bei ausgeschalteter Grafik mit einem Blocktransferbefehl in den Grafik-BWS zu laden und der Grafik-Modus wieder einzuschalten. In Zelle 18E2H steht der H-Teil dieses Zwischenspeicheranfangs. Wird sie mit 20H geladen, so wird der Grafik-BWS direkt beschrieben. Je nachdem, ob Bit 7 in Zelle 18EAH gesetzt oder nicht gesetzt ist, geschieht das bei ausgeschaltetem oder eingeschaltetem Grafik-Modus.
Die Benutzung der Grafik in einem BASIC-Programm ist möglich, indem man die Hilfszellen mit den entsprechenden Steuerbytes beschreibt (POKE) und die Maschinenunterprogramme mittels CALL-Befehl aufruft.

247 KByte 150 KByte 181 KByte 211 KByte
Bild 1 Tabelle 1 und 2 Tabelle 3 Bild 2