Funkamateur 05/88 |
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.
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.
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.
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
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.
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.
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 |