Rolf-Dieter Klein

Das mc-Grafik-Terminal

Teil 1: Hardware

Bisher war es nur wenigen möglich, von hochauflösender Grafik Gebrauch zu machen: Entweder ist sie umständlich zu bedienen oder zu teuer. Mit dem mc-Grafik-Terminal soll das anders werden. Das Terminal besteht aus einer Europakarte, die neber einem Z80-Prozessor auch einen Grafikprozessor beinhaltet.

Die Software zur Bedienung des Terminals ist knapp 8 KByte groß und ermöglicht neben einer Teilemulation des TVI950 (wordstarfähige Teilmenge) die Emulation des T4014 (Tektronix-kompatibel) und einen eigenen Grafik-Modus mit vielen einfach zu bedienenden Befehlen der mc-Grafik-Sprache. Die Auflösung des Grafikbildschirms ist 512 × 256 Punkte, die bei Auswahl eines anderen Grafikprozessors auch 512 × 512 Punkte sein kann. Bei 512 × 256 Punkten stehen vier Bildschirmebenen zur Verfügung, die von der Software zum Scrollen gebraucht werden oder im Grafikmodus für bewegte Grafik verwendet werden können.

Bild 1 zeigt die Anschlüsse zur Außenwelt. Das Terminal besitzt zwei serielle Schnittstellen, die eine ist gedacht zum Anschluß des Computers, die andere für den Anschluß einer Tastatur. Beide sind bidirektional, da die Tastatur auch programmiert werden soll. Am Ausgang steht ein BAS-Signal zur Verfügung, das direkt an einen Standard-Monitor angeschlossen werden kann. Ferner sind die Ausgänge HSYNC, VSYNC und Video für Spezialanwendungen und für die Farberweiterung vorhanden.


Bild 1. Diese Signale verbinden die Grafik-Terminal-Platine mit der Außenwelt


Zwei Prozessoren

Bild 2 zeigt das Blockschaltbild der Platine. Ein Z80A übernimmt die Steuerung des Terminals. 8 KByte EPROM sind für die Steuersoftware vorhanden, die im nächsten Heft vorgestellt wird.

4 KByte RAM werden für einen internen Bildwiederholspeicher und einen Ringpuffer für die Zeichenebene gebraucht, wobei etwa 1/2 KByte frei bleibt für Anwendersoftware, die auch ladbar ist. Mit den neuen 8 K × 8-Bit-RAMs, die leider noch sehr teuer sind, kann der Speicher auf 16 KBytes erweitert werden, und dann läßt sich dort auch ein programmierbarer Zeichengenerator unterbringen. Doch vorerst genügen die 4 KByte.

Zwei STI-Bausteine (MK 3801), die eine serielle Schnittstelle, Timer, Interruptcontroller und Parallelports beinhalten, ermöglichen die Steuerung und Kommunikation. Als Grafikprozessor wurde der EF-9366 der Firma Thomson gewählt, da er der einzige ist, mit dem sich auf einer Europakarte ein komplettes Grafikterminal unterbringen läßt und der außerdem den schnellsten Vektorgenerator (1 Mio. Bildpunkte/s) besitzt.

Dem Grafikprozessor steht ein vom Hauptspeicher getrennter Bildwiederholspeicher von 64 KByte zur Verfügung.

Beim EF-9366 ist er in vier Bildebenen von je 512 × 256 Punkte aufgeteilt. Es wird immer nur eine Bildebene ausgelesen, aber in den anderen kann gleichzeitig geschrieben werden, wodurch ein unsichtbarer Bildaufbau mög. lich ist.

Die Auswahl der Bildebenen erfolgt über Steuerbits der STI-A. Die STI-B kann auch entfallen, wenn keine Tastatur benötigt wird und das Terminal als Peripheriegerät betrieben wird: Die Software merkt dies automatisch und die Baudrate ist dann fest auf 9600 Baud eingestellt.


Bild 2. Das Grafik-Terminal als Blockschaltbild


Der EF-9365 erlaubt die Darstellung von 512 × 512 Punkten, dieser Grafikprozessor kann nach Umstellen einer Brücke verwendet werden. Die Software ist aber für den 9366 zugeschnitten, da sich dort wegen des fehlenden Zeilensprungverfahrens ein flimmerfreies Bild ergibt, was für die Textdarstellung (z. B. Wordstar) wichtig ist. Daher ist die Version mit dem EF-9366 die Standard-Version.

Bild 3 zeigt den Anschluß, beispielsweise an den mc-CP/M-Computer, für den das Terminal auch gedacht ist, wobei es natürlich auch mit jedem beliebigen Computer zusammenarbeiten kann.


Bild 3. Anschluß des Terminals an einen Computer (beispielsweise der mc-CP/M Computer) und der Anschluß der Tastatur


Verschiedene Konfigurationen

Das Terminal wird zum einen über die Datenleitungen mit dem Computer verbunden, zum anderen gibt es eine zusätzliche Leitung mit dem Namen RTS. Sie dient dazu, den Computer zu bremsen, wenn der Datenfluß zu hoch ist, da wegen der Grafikeigenschaften des Terminals ein ununterbrochener Datenstrom nicht immer möglich ist. Beim Anschluß an den mc-CP/M-Computer muß in der Monitorsoftware die SIO dafür programmiert werden, dies geschieht durch Ändern des Statuswortes auf Auto-enable (im Schreibregister 3 muß der Wert E1 anstelle des Wertes C1 programmiert werden). DCD und CTS geben die Übertragung nur dann frei, wenn die entsprechenden V.24-Leitungen auf +12 V liegen (am Chip 0 V).

Die Baudrate ist normalerweise 9600 Baud, jedoch kann auch 28800 als Spezialrate am Terminal eingestellt werden, nicht jedoch 19 200. Natürlich lassen sich alle darunterliegenden Normbaudraten einstellen.

Als Tastatur kann jede serielle Tastatur verwendet werden, z. B. die dafür entwickelte mc-Tastatur mit eigenem Z80, die demnächst vorgestellt wird. Soll eine parallele Tastatur verwendet werden, so kann eine Zusatzschaltung verwendet werden (2).

Bild 4 zeigt eine andere Konfiguration. Das mc-Grafik-Terminal kann auch als Peripheriegerät eingesetzt werden. Es wird dann von CP/M aus wie ein Drukker gesehen bzw. wie ein Plotter.


Bild 4. Das Terminal kann auch als Peripheriegerät angeschlossen werden


Bild 5 schließlich zeigt die Möglichkeit, das System auf Farbe zu erweitern. Dazu wird einfach eine in der Anzahl von Ebenen gewünschte Zahl von Platinen verwendet, die mittels einer einfachen Synchronisationsschaltung gekoppelt werden. In der Software gibt es dann Befehle, mit denen einzelne Ebenen angesprochen werden können, wenn nur eine serielle Schnittstelle zum Computer existiert. Im anderen Fall kann die Leistung dieser Anordnung voll ausgefahren werden, da sich alle CPUs am Bildaufbau beteiligen können.


Bild 5. Mit mehreren Terminalplatinen kann die Grafik auf Farbe erweitert werden


Die Hardware

Nun zur Schaltung. Bild 6 zeigt die Schaltung des CPU-Teils, Bild 7 die Schaltung des Grafikprozessor-Teils. Der Z80 wird mit einem 3,6864-MHzTakt betrieben, der gleichzeitig zur Baudratenerzeugung verwendet wird. Die Reset-Schaltung ist mit einem Timer 555 gelöst, um optimale Zuverlässigkeit des Systems zu erreichen.

Die Speicherbereiche sind wie folgt aufgeteilt: EPROM von Adresse 0 bis 1FFFH mit einem 2764. Wenn nicht die mc-Software verwendet wird, kann auch ein 2732 verwendet werden, beispielsweise bei einer Anwendung als Single-Board-Computer mit Grafikausgabe. Als RAMs werden die Bausteine 6116 verwendet; hier ist darauf zu achten, daß es auf dem Markt ähnliche Bausteine 2 K × 8 gibt, die sich wegen unterschiedlicher Bedeutung von einzelnen Pins nicht ein setzen lassen. Die Zugriffszeit sollte besser als 250 ns sein.

Der Speicherbereich geht von 3800H bis 47FFH, wenn man beide Sockel zusammen nimmt. Da die Decodierschaltung nicht eindeutig decodiert, treten die Bereiche auch auf anderen Adressen auf. Bei der Verwendung von 8 K × 8 RAMS, ergibt sich ein Bereich von 2000H bis 5FFFH. Die Software unterstützt zur Zeit aber nur den 4-KByte-Speicherbereich. Bei der I/O-Decodierung wurden einige Standard-Bereiche verwendet, die auf den ersten Blick nicht ganz einsichtig sind. Der GDP liegt auf der Adresse 70H bis 7FH, da es für diesen Bereich schon einige Software gibt. Die STI A auf 80H bis 8FH und STI B von 90H bis 9FH. Dabei ist dieser Bereich so gewählt, daß er mit Adressen des mc-CP/M-Computers nicht kollidiert, da durch Verbinden der CPU-Anschlüsse mit dem ECB-Bus eine einfache Emulation möglich ist, wobei mit einer Zusatzschaltung nur der Adreßbereich 70H bis 9FH durchgelassen werden darf.

Der Decoder 74139 erhält nicht alle Adressen als Auswahl, weshalb die STI, der GDP und der Speicherbereich mehrmals im Adreßraum auftreten.

Die V.24-Anpassung geschieht mit den Treibern 75188 und 75189, wobei die Steuerleitungen CTS und RTS per Software und über Ports realisiert werden.


Bild 6. Die Schaltung des CPU-Teils


Bild 7. Die Schaltung des Grafikprozessor-Teils


Ein komplexer Grafikprozessor

Der Grafikprozessor erhält einen eigenen Taktoszillator von 14 MHz, der alle wichtigen Signale erzeugt. Über einen Teiler 74163 werden die verschiedenen Takte erzeugt. Bild 8 zeigt alle wichtigen Signale. Der Multiplexer 74153 dient der Seitenauswahl. Für den EF-9366 ist der linke Schaltungsteil in Bild 7 verantwortlich. Eine 4-Bit-Seitenadresse gelangt an den Multiplexer. Die Eingänge 0,1 dienen der Auswahl einer LeseSeite, die Eingänge 2 und 3 zur Auswahl für die Seite, auf die bei einem Schreibzugriff geschrieben wird. Der Multiplexer erhält dazu die Information, ob ein Lese- oder Schreibzugriff vorgenommen wird, über das Signal BLK. Der Ausgang DW, der ja direkt ein Schreiben vorgibt, ist leider zu zeitkritisch, um dafür Verwendung zu finden. BLK gibt an, ob ein Bild dargestellt wird oder nicht, da es das Bildfenster bestimmt. Wird geschrieben, so erfolgt es nicht während des Auslesens, sondern an einer unsichtbaren Stelle. Daher ist beim Schreiben das Signal auf High und beim Auslesen auf Low. Nun gibt es aber genau einen Fall, bei dem es nicht so ist, nämlich beim schnellen Bildschirmlöschen mit einem speziellen GDP-Befehl. Dort wird während des Auslesens geschrieben, und unsere Schaltung versagt, da sie nicht eine unsichtbare Seite löschen kann. Dies wäre aber auch beim DWSignal der Fall. Die mc-Terminal-Software berücksichtigt aber alle diese Fälle, und nur wenn direkt auf den GDP zugegriffen wird, was über einen Grafik-Befehl möglich ist, muß darauf geachtet werden, daß beim Bildlöschen zunächst der GDP auf den dunklen Schirm gestellt und dann der Befehl ausgeführt wird.

Der Baustein 25LS2538 übernimmt die Bausteinauswahl; über den Eingang POL können alle Ausgänge invertiert werden, um z. B. alle Bildpunkte beim Auslesen selektieren zu können.

Die Ausgabe der Bildpunkte erfolgt über das Schieberegister 74166, das nur bei dem sichtbaren Teil (BLK-Signal) mit Daten geladen wird. Am Ausgang QH erscheint die serielle Bildinformation, wobei das Signal High ein dunkles Bildfeld bedeutet. Das Videosignal wird anschließend mit den Synchronsignalen gemischt und ein BAS-Signal erzeugt. Der Widerstand R11 kann entfallen, wenn eine höhere Ausgangsspannung beim BAS-Signal gewünscht wird.


Bild 8. Das Timing der GDP-Steuerung


Aufbau und Test

Bild 9 zeigt das Layout der zweiseitigen Platine; Bild 10 den Bestückungsplan. Die Platine besitzt auf der einen Seite eine VG-Leiste, von der nur die ECBVersorgungsspannungen +5 V, +12 V und - 12 V verwendet werden. Damit kann die Platine direkt in den mc-CP/M Computer eingeschoben werden. Eine separate Kontaktleiste ermöglicht aber auch den Anschluß der Versorgungsspannungen über einen kleinen Stecker, wenn das Terminal als selbständiges Gerät aufgebaut wird.


tabelle: Liste der verewendented Bauteile


Bild 9. Die Schaltung befindet sich auf einer zweiseitigen Leiterplatte, die Lötseite oben und die Bestückungsseite unten


Alle Brücken sind auf der Platine schon voreingestellt und müssen nur bei Änderungen der Standard-Version verändert werden. J1 dient der Einstellung bei anderen RAMS (8 K × 8 Bit), J2 für den Einsatz des 9366 und J3 zur Einstellung der Baudrate, wobei die Übertragungsrate 9600 Baud beträgt, wenn alle Pins offen sind. RS 1 ist ein Widerstandsarray, wahlweise können aber auch Einzelwiderstände eingesetzt werden. Alle Kondensatoren mit der Bezeichnung CV.. sind Entstörkondensatoren und tauchen daher im Schaltplan nicht auf. Beim Aufbau sollten ausschließlich Sokkel verwendet werden, was die Fehlersuche erheblich erleichtert. Nach dem Einschalten des Terminals muß der Bildschirm gelöscht sein und links oben ein Cursor blinken. Ist dies der Fall, so läuft der größte Teil der Platine. Wird der Bildschirm nicht gelöscht und erscheint kein Cursor, ist aber eine Umrandung beim Monitor sichtbar, so liegt ein Fehler im CPU-Teil, andernfalls umgekehrt. Es empfiehlt sich, das fertige EPROM im Handel (GES) zu kaufen und es nicht selbst abzutippen, obwohl im nächsten Teil das komplette Listing erscheint. Es würden sich dabei nur sehr viele Fehler einschleichen, gerade bei einem 8-KByte-Programm. Wird der mc-CP/M-Computer angeschlossen, so muß nach dem Reset die Meldung des Computers auf dem Bildschirm erscheinen. Zeigt der Bildschirm nur wirre Zeichen, so ist die Baudraten-Einstellung zu überprüfen. Bei der Eingabe von Zeichen über die Tastatur müssen diese am Computer ankommen, ist dies nicht der Fall, so ist die Spannung an den Leitungen CTS zu prüfen, die im Normalfall auf +12 V liegen muß. Verschwinden Zeichen bei der Ausgabe von längerem Text (mit Scrollen), so ist die CTS-Leitung am Eingang des Computers (und/ oder DCD) zu prüfen, die die Ausgabe anhalten muß, wenn sie auf -12 V liegt. Der Puffer des Terminals beträgt 1024 Zeichen und die Ausgabe wird kurz vor Überlauf gesperrt. Ansonsten sind die Oszillatoren genau zu testen und auch die Reset-Schaltung. Die verwendeten Bauteile sind in der Tabelle aufgeführt.

Optionen und Zusatzschaltungen

Für den Anschluß von Tastaturen mit Parallelausgang kann eine Schaltung zur Parallel/Seriell-Wandlung verwendet werden (2].

In Bild 11 ist die Synchronisationsschaltung abgebildet, wie sie für jede zusätzliche Farbebene gebraucht wird. Ein Terminal wird als Master erklärt, darauf werden alle anderen Platinen synchronisiert. Es wird das CSYNC-Signal als Vergleich verwendet, da es HSYNC- und VSYNC-Informationen enthält. Das Signal ist in der Schaltung auch als HSYNC bezeichnet. Alle Slave-Platinen werden ohne Taktoszillator (14 MHz) aufgebaut, wobei es genügt, den 7404 (IC 9) herauszulassen. An Pin 8 des nun nicht mehr vorhandenen ICs wird dann ein neuer Takt angeschlossen, der von der Zusatzschaltung kommt. Stimmt CSYNC des Masters nicht mit CSYNC des Slave überein, so wird ein Taktpuls beim Slave ausgelassen, dadurch verschiebt sich das Timing. Nach einer Weile (einige Sekunden) sind beide CSYNC-Signale identisch und der Takt ist von da an gleich.


Bild 11. Eine Schaltung zur Synchronisation mehrerer Einheiten


Dieses Verfahren hat sich gut bewährt und ist einfach zu realisieren. Beim Nachbau ist darauf zu achten, daß 14 MHz schon sehr kritisch sind und kurze Leitungen wie auch gute Entblokkung Voraussetzung für das Funktionieren der Schaltung sind. Es empfiehlt sich auch, den Mastertakt nochmals getrennt auf der Zusatzplatine zu erzeugen und dem eigentlichen Master über ein Oder-Gatter zuzuführen, so daß alle Takte der Platinen genau synchron anfangen. Das ist aber nicht Voraussetzung der Schaltung, da Master und Slave nur auf einen Taktzyklus genau synchronisiert werden. Sind die Verzögerungszeiten aber gleich, so sind die beiden Teilbilder absolut deckungsgleich. Am Schluß sei noch darauf hingewiesen, daß die Originalplatine (TERM 1) sowie das EPROM nur bei der Firma GES/Graf (Postfach 1610, 8960 Kempten) zu erhalten sind. Alle Original-Platinen werden mit Lötstopplack und alle Bausätze mit hochwertigen IC-Sockeln geliefert.

(Fortsetzung folgt)

Literatur

[1] Klein, Rolf-Dieter: CRT-Controller unter stützt Grafikfunktionen. ELEKTRONIK 1981, Heft 8, Seite 63.

[2] Klein, Rolf-Dieter: Umwandlung. In diesem Heft.


Nochmals: Datenbanken

Sowohl für das Genie-III als auch für den QX-10 werden mittlerweile leistungsfähige Datenbank-Programme angeboten. Das Genie-III-Programm „DIS“ (Daten- . Informations-System) von Trommeschläger erlaubt es dem Anwender, alle Datenfelder wie Bezeichnung, Eingabelänge, Kommentare usw. selbst zu definieren und so seinen individuellen Bedürfnissen anzupassen. Auch Druckroutinen und Möglichkeiten zur mathematischen Verknüpfung zwischen einzelnen Datenfeldern sind integriert. Die Bedienerführung ist dialogorientiert in drei Menüebenen. Das von Epson für den QX-10 lieferbare Datenbank-Programm heißt „EDDI“ (Epson's datenbank-orientiertes Datei-Informationssystem). Es ermöglicht das Anlegen von Datensätzen und Dateien, das spätere Einfügen und Ändern, das Sortieren und auch das Rechnen innerhalb der Datenfelder. Es gibt sechs Feldtypen: Rechenfeld, Datumsfeld, umgekehrtes Namensfeld, numerisches Feld, Zeichenfeld und druckaufbereitetes Feld. Letzteres dient zur formatierten Ausgabe von Zahlen. EDDI läßt auch das Erstellen von Auswahldateien zu, z. B. alle Adressen, die „Firma" enthalten, gesondert zusammenzustellen. Datenschutz ist per Paßwort möglich.

FTZ gibt nach

Das Fernmeldetechnische Zentralamt der Deutschen Bundespost wird, wie wir in Erfahrung bringen konnten, wegen der massiven Nachfrage von Industrie und Anwendern in Zukunft akustisch gekoppelte Telefon-Modems auch hierzulande außer im Originate-auch im Answer-Modus zulassen. Im Klartext heißt das: Zukünftige Modems dürfen nun auch in Deutschland einen Umschalter besitzen, mit dem man die Lage der Tonfrequenzpaare umschalten kann Dadurch wird es auch offiziell möglich, zwei Akustikkoppler miteinander in Verbindung treten zu lassen. Bisher war es Vorschrift, daß wenigstens auf einer Seite der Verbindung ein galvanisch gekoppeltes Modem installiert war.

mc-Meinungsumfrage.

Im Auftrag von mc führt derzeit die Dr.-Richter-Forschungsgrüppe eine Umfrage durch. Zu diesem Zweck wurden Fragebogen an bestimmten ausgewählten Verkaufsstell en im Bundesgebiet dem mc-Heft Nr. 6/ 1983 beigelegt beziehungsweise an einige repräsentativ ausgewählte Abonnenten versandt.

Sollten Sie zu jenen Lesern gehören, die einen solchen Bogen erhalten, aber ihn noch nicht zurückgesandt haben, so ersuchen wir Sie hiermit nochmals, uns auf diesem Wege Ihre Meinung zukommen zu lassen. Denn Sie haben damit die Möglichkeit, Ihre mc konstruktiv zu beeinflussen. Die Redaktion ist interessiert daran, Ihren Wünschen und Anregungen soweit wie möglich entgegenzukommen.

Bitte haben Sie auch Verständnis da für, daß der Fragebogen relativ umfangreich ist. Eine solche Erhebung macht man nicht alle Tage, und des halb haben wir ziemlich alles hineingepackt, wovon wir glauben, daß Sie dazu eine Meinung haben könnten.

Selbstverständlich ist der Fragebogen auch so ausgelegt, daß er leicht per Computer ausgewertet werden kann - oder hätten Sie von mc etwas anderes erwartet?!


Rolf-Dieter Klein

Das mcGrafik-Terminal Teil 2: Software

Nachdem im ersten Teil die Schaltung des Grafik-Terminals Desprochen wurde, soll hier die Betriebssoftware vorgestellt werden. Es handelt sich dabei um ein Programm von 8 KByte, das Funktionen wie Terminalemulation (TVI 950), Tektronix 4010Modus, einen Logo-Modus und die mc-Grafik-Sprache beinhaltet. Flächenfüll-Algorithmen sind darin genauso enthalten wie ein Kreisgenerator.

Das Terminal kann, wie schon im Hardware-Teil angedeutet, auf zwei verschiedene Arten eingesetzt werden. Einmal als zusätzliches Peripheriegerät, einmal als eigenständiges Terminal, wenn es mit einer Tastatur versehen wird. Beim Anschluß des Terminals ist darauf zu achten, daß die beiden Eingänge CTS des Kanals A und B richtig beschaltet sind. Sie müssen einen Ruhepegel von +12 V haben, denn sonst verschwindet der Cursor des Terminals nach Eingabe bestimmter Zeichen (z. B. BEL) und TERM1 wartet auf CTS als Freigabe. Umgekehrt muß zumindest der Ausgang D des Kanals A mit dem Computer verbunden sein, damit der Hostrechner angemalten werden kann, sobald zu viele Dacen aufeinander folgen.

Die Baudrate

Bild 1 zeigt eine Tabelle, in der die Jumperstellen eingetragen sind. Ohne jede Brücke sind 9600 Baud eingestellt, was auch die empfohlene Betriebsart darstellt. Die Jumper befinden sich direkt neben dem Widerstandsnetzwerk. Bit 7 der STIB ist dabei das höherwertige Bit der Baudrate, opt1 und opt2 (Bit 3 und Bit 2) sind nicht verwendet. Die Baudrate 19 200 Baud läßt sich wegen der verwendeten Quarzfrequenz mit der STI nicht einstellen, dafür stehen aber noch ein paar höhere Geschwindigkeiten (14 400, 28 800) zur Verfügung. Das Terminal kann insgesamt mit drei verschiedenen Grafik-Prozessoren ausgerüstet werden: mit dem EF 9365, dem EF 9366 und dem neueren EF 9367.


; stib sw-belegung
; 7	6	5	4	3	2	1	0
; baud	baud	baud	baud	opt1	opt2	dtr	cts

; baud rate table
; 1111 = 9600 baud
; 1110 = 4800 baud
; 1101 = 2400 baud
; 1100 = 1200 baud
; 1011 =  600 baud
; 1010 =  300 baud
; 1001 =  110 baud
; 1000 =   75 baud
; 0111 =   50 baud
; 0110
; 0101
; 0100
; 0011
; 0010
; 0001 = 14400 baud
; 0000 = 28800 baud

Bild 1. Zur Baudrateneinstellung


2 Ebenen 512 × 512

Bildfenster quadratisch

EF 9365

Quarz: 14 MHz
Jumper: J2 auf 65

Bild 2. Der EF 9365 erzeugt dieses Bildformat


4 Ebenen 512 × 256

Bildfenster quadratisch

EF 9366

Quarz: 14 MHz
Jumper: default

Bild 3. Der EF 93665 sein Bildformat


a) 4 Ebenen 512 × 256
b) 2 Ebenen 512 × 512

Bildfenster Rechteck

EF 9367

Quarz: 12 MHz

Jumper:

a) x-trennen, f trennen, auf 0v-legen
b) x-trennen, J2 auf 65 legen.
x Pin 19 (im Layout bezeichnet, Lötseite)
f = Pin 89 (im Layout bezeichnet, Bestückungsseite)

Bild 4. Das Bildformat des EF 9367


Bild 5. Die Aufteilung in vier Bildebenen


Wir wollen standardmäßig den EF 9366 verwenden, der auch der preisgünstigste ist. Mit ihm erhält man eine Auflösung von 512 × 256 Pixel in je 4 Bildebenen. Bild 2 zeigt das Arbeitsergebnis des EF 9365, Bild 3 das des EF 9366 und Bild 4 das für den EF 9367. Der EF 9367 erzeugt ein Rechteckfenster, während die anderen Prozessoren quadratische Bildfenster besitzen. Beim EF 9367 tritt ein Vektor unter Umständen gespiegelt wieder ins Bild, wenn die Endpunkte außerhalb liegen, da in unserer Schaltung der X9Ausgang nicht ausgewertet wird.

Die Bilddarstellung des EF 9366

Wir arbeiten also mit dem EF 9366 und erhalten eine Aufteilung nach Bild 5. Es zeigt vier Bildseiten mit je 512 × 256 Bildpunkten. Es kann immer nur eine Seite auf dem Bildschirm dargestellt werden, daher gibt es einen Lesezeiger. Geschrieben werden kann aber auch in eine unsichtbare Seite. Dafür ist der Schreibzeiger gedacht. Wie wir später noch genauer sehen, gibt es die Möglichkeit der quasisimultanen Darstellung zweier Seiten, bei der die Seiten synchron (durch einen Grafik-Befehl veranlaßt) mit der Bildwechselfrequenz geschaltet werden. Es ergibt sich dann ein leicht flimmerndes Bild, ähnlich wie beim Zeilensprungverfahren. Dafür sind aber zwei Seiten „gleichzeitig“ sichtbar und es läßt sich dann mit Grauabstufung arbeiten (wenn auf zwei Seiten das gleiche Bild ist, wirkt es heller als wenn nur eine Seite das Bild zeigt). Damit können auch Fadenkreuze und vieles mehr dargestellt werden.

Die Textdarstellung

Nach dem Einschalten der Term-Platine erscheint an der linken oberen Ecke im Bild ein blinkender Cursor. Die Platine ist nun bereit zur Texteingabe. Bevor wir auf die Befehle eingehen, zunächst etwas über die interne Darstellung von Texten. Wer schon einmal mit dem Grafik-Prozessor gearbeitet hat, wird wissen, daß er keine Befehle für die Verschiebung des Textfensters (Scrolling) besitzt. Daher muß das Scrolling, was auch für das Einfügen und Löschen von Zeilen gilt, per Software durch Neueinschreiben des gesamten Bildes erfolgen. Die Besonderheit hierbei ist, daß jeder Punkt einzeln neu erzeugt werden muß. Mit einem konventionellen Verfahren ohne Grafik-Prozessor wäre das recht aussichtslos, denn dazu wäre eine beträchtliche Zeit notwendig. Hier ist der GDP von Thomson jedoch so schnell, daß ein Wiedereinschreiben eines Bildes im wesentlichen nur davon abhängt, wie schnell die einzelnen Zeichen angeliefert werden. Um das Löschen des alten Bildes und das Wiedereinschreiben ohne Flimmern zu realisieren, wurden zwei Bildebenen verwendet. Eine Bildebene ist sichtbar, während die andere für das neue Bild vorbereitet wird, dann wird umgeschaltet und die neue Ebene dargestellt.

Bild 6 zeigt die Situation. Der Cursor entsteht dadurch, daß er auf der einen Bildebene geschrieben wird, auf der anderen nicht. Die Seiten werden nach dem Bildaufbau mit einer konstanten Frequenz hin- und hergeschaltet. Um die Textausgabe optimal zu gestalten, ist ein zusätzlicher Bildwiederholspeicher nötigt, denn es ist nicht mög. lich, die Bildinformation, oder gar die Zeichencodes aus dem Bildspeicher wieder rückzulesen.

Bild 7 zeigt die Speicherorganisation im CPU-Speicher. Ein Speicher mit 80 × 24 Zeichen beinhaltet die Zeicheninformationen.


Bild 6. Der Textmodus. Der Cursor wird durch Umschalten zwischen zwei Seiten betrieben


Bild 7. Die internen Bildwiederholspeicher werden über Zeiger verwaltet


Dane ben gibt es einen Speicher der Tiefe 24, in dem in einem Byte die jeweilige Anzahl der tatsächlich in dieser Zeile vorhandenen Zeichen abgelegt ist. Damit das Scrolling, Löschen und Einfügen von Zeilen möglichst schnell geht, gibt es einen weiteren Speicherraum von 24 Zeigern, die auf den Bildwiederholspeicher gerichtet sind. Eine Zeile wird gelöscht, indem die Zeigerkette verändert wird. Nach Veränderung wird das Bild auf einer Seite gelöscht und neu aufgebaut. Das Löschen geschieht durch Einschreiben des alten Inhalts im Löschmodus um Zeit zu sparen, und außerdem ist es dadurch möglich, Texte und Grafik zu mischen und beim Scrolling die Grafik nicht zu zerstören, solange sie beim Scrollvorgang nicht von Zeichen durchkreuzt wird.

Die Befehle der Grafik-Karte

Nun zu den einzelnen Befehlen. Bild 8 zeigt eine Tabelle aller vorhandenen Befehle. Der Alpha-Modus ist der Grundmodus, der auch nach Reset vorliegt. Die Befehle wurden so gewählt, daß Wordstar mit der TVI-950-Installation direkt läuft. Es sind natürlich nicht alle TVI-950-Befehle realisiert, so fehlen zum Beispiel Invers, Underline und Blinkend. Alle diese Eigenschaften können aber über Grafik-Befehle viel effektiver dargestellt werden (und außerdem wäre dazu ein weiterer Attributspeicher notwendig gewesen). Hinzugefügt wurde die Umschaltung auf den deutschen Zeichensatz mit ESC z 1. Dann werden die Zeichen „ÄÖLäöüß“ geplottet. Die Scrollgeschwindigkeit verringert sich dadurch leider, und zwar um so mehr, je mehr dieser Zeichen auf dem Bildschirm sind. Im Mittel scrollt das Terminal jedoch so schnell, daß es nicht möglich ist, die Zeichen zu lesen.

Mit einer Doppel-Escape-Sequenz kann man in einen der anderen Modi kommen. In den Grafik-Modus kommt man mit ESC ESC G. Dort gibt es eine Vielcahl von Befehlen. Mit ESC ESC A kommt man wieder in den vorherigen Modus zurück. Mund m (binär) positioniert den Schreibzeiger, mit D oder d bei Binärdaten) wird ein Vektor gezeichnet. Die Parameter werden dezimal der hexadezimal angegeben. Sie können auch ein Vorzeichen enthalten. Beispiele: M100 150cr. Es wird die Position x= 100 und y = 150 eingestellt (cr = Wagenrücklauf) Mit D0 10cr wird ein Vektor zur Position x = 0 und y = 10 gezeichnet. Mit M$FF $80cr wird die Position x = 255 und y = 128 eingestellt. Die weiteren Befehle sind in Bild 8 gezeigt. Logo-Modus Mit dem Grafik-Terminal läßt sich „Turtle-Grafik“ realisieren. Dort gibt es einen Cursor, der eine Richtung anzeigt. Dieser Cursor (Turtle) kann in Ein-GradSchritten gedreht werden. Und mit einem Schreite-Befehl kann dann entlang der eingestellten Richtung ein Vektor gezeichnet werden. Intern besitzen die Koordinaten vier Schutz-Bits, um bei kleinen Distanzen Schritte mit ausreichender Genauigkeit in der richtigen Richtung zu ermöglichen. Eine Schleife mit der Sequenz F 1 P 1 ergibt, 360mal ausgeführt, einen Kreis.

Die „Turtle“ wird durch Quasisimultandarstellung automatisch in einer zweiten Ebene eingeblendet, sie läßt sich aber auch abschalten, wenn der Befehl TO gegeben wird. Mit Doppelescape-Sequenzen können andere Modi aufgerufen werden. Dabei kann von dort wieder in den Logo-Modus zurückgesprungen werden, so daß zum Beispiel Grafik-Befehle mit Logo-Befehlen gemischt werden können.


Bild 8. Die Befehis-Liste von Term 1 (Version 3.4)


Tektronix emulieren

Insbesondere für Standard-Pakete ist der Tektronix-Modus gedacht (z. B. Plot 10). Nicht implementiert ist dabei der GinModus, bei dem ein Fadenkreuz auf dem Bildschirm sichtbar ist und in dem digitalisiert werden kann. Nun nochmal zum Grafik-Modus, im folgenden mc-Grafik genannt, zurück. Dort gibt es die Möglichkeit ein Fadenkreuz einzublenden.

Bild 9 zeigt ein Beispiel. Auf Ebene 0 sei ein Vektor gezeichnet. Durch den Befehl Y1 werden die beiden Seiten 0 und 1 synchron umgeschaltet. Die Zahl 1 gibt die Umschaltrate an (1:alle 20ms einmal). Der Befehl F blendet ein Fadenkreuz ein. Die Form des Fadenkreuzes ist voreingestellt, jedoch kann sie auch umprogrammiert werden. Dazu wird der Befehl WA verwendet. Es muß nach WA in Textform eine Codesequenz angegeben werden, die eine Figur inkremental beschreibt.

Bild 10 zeigt die Codierungsvorschrift.

Bild 11 zeigt ein Beispiel. Die Pfeile zeigen die Reihenfolge, in welcher das Bild gezeichnet werden soll. Darunter ist die Codierung gezeigt. Mit WAXZ... wird der Code übertragen. Das Zeichen cr (Wagenrücklauf) dient der Trennung. Mit dem Befehl WCnr kann die Vergrößerung und Drehung dieses Symbols bestimmt werden. Der Befehl F schließlich macht es sichtbar.


Bild 9


Bild 10


Bild 11


Ein paar Programmbeispiele

Bild 12 zeigt ein Programm in Basic, das ein paar Terminalfunktionen testet.

Bild 13 zeigt ein Beispiel für den Grafik-Modus.

Bild 14 zeigt die Möglichkeit, eine Statuszeile in den Alpha-Modus einzublenden. Diese Textzeile bleibt so lange erhalten, bis der Bildschirm (z. B. mit CTRL-Z) gelöscht wird. Scrolling stört sie nicht. Als Statuszeilenhöhe stehen zwei Textzeilen (25 und 26) zur Verfüegung. Die Statuszeile wird mit Hilfe des Grafik-Befehls eingeblendet, weshalb es auch möglich ist, Zeichnungen darin unterzubringen.

Bild 15 zeigt, wie man im Logo-Modus arbeitet. Hierbei ist übrigens zu beachten, daß automatisch eine Umsetzung in ein quadratisches Raster erfolgt (512 × 256 Bildpunkte ergeben nur ein Rechteck). Der Logomodus kann auch mit einem Zusatzparameter aufgerufen werden, so daß 512 × 512 Bildpunkte verwendet werden, um den Einsatz des EF 9365 zu ermöglichen.

Bild 16 schließlich zeigt den Aufruf des Tektronix-Modus. Es ist möglich, einen Bildausschnitt zu wählen und eine Vergrößerung (eigentlich Verkleinerung) anzugeben. Damit lassen sich Bilder mit 1024 × 1024 Punkten auf einem Schirmbild unterbringen und auch Ausschnitte zeigen. Der letzte Parameter gibt an, ob ein Cursor (hier als Fadenkreuz) verwendet werden soll. Wenn ja, so wird durch das schnelle Hin- und Herschalten eine quasisimultane Darstellung erreicht. Zu beachten ist, daß bei allen diesen Darstellungen der EF 9366 verwendet werden sollte. Falls nicht, so muß über den Grafik-Modus der Befehl X2 gegeben werden, um nur alle 40 ms umzuschalten. Der EF 9365 arbeitet selbst schon mit dem Zeilensprungverfahren und ist dementsprechend langsamer. Ferner ist damit unbedingt ein lang nachleuchtender Schirm zu verwenden.


 10 CLEAR 2000 
 20 REM Beispiele fuer TERM 1 
 30 REM Rolf-Dieter Klein 19830508 
 40 REM TERMINAL-TVI -950 Funktionen
 50 PRINT CHR$(26); 'Clear Screen
 60 FOR X=0 TO 79 'Alle Spalten 
 70 Y = SIN(X/79*2*PI)*71+11 
 80 Y = INT(Y) 90 PRINT CHR$(27);"=" ; CHRS (32+Y); CHR$(32+X);"*" 
100 NEXT X 110 REM Wegschieben durch Scrollen 
120 FORI = 1T040:PRINT: NEXT I 
130 REM 
140 REM verschiedene Zeichensaetze 
150 PRINT CHR$(27);"="y; CHR$(32+5); CHRS (32)
160 PRINT CHRS (27); "zo" 'amerikan Zeichen 
170 PRINT 
180 FOR I = 32 TO 127:PRINT CHRS(I);: NEXT I 
190 PRINT 200 PRINT CHRS(27); "27" 'deutsche Zeichen 
210 FOR I = 32 TO 127:PRINT CHRS(I);:NEXT I 
220 PRINT 230 FOR I = 1 TO 1000: NEXT I 
240 REM Einfuegen, Loeschen etc. 
250 FOR J=1 TO 2 
260 PRINT CHRS (26); CHR$(27);"= $ " 
270 PRINT "Testsatz fuer Einfuegen etc." 
280 PRINT CHRS (11); cursor up 
290 FOR I = 1T010: PRINT CHR$ (27); "E"; :NEXT I 
300 FOR I = 1T010:PRINT CHRS (27); "R"; :NEXT I 
310 FOR I = 1T010:PRINT CHR$(27); "Q"; : NEXT I 
320 FOR I=1T010: PRINT CHR$(27); "W"; : NEXT I
330 PRINT 'cr ausgeben, wegen autocr von Basic
340 NEXT J

Bild 12. Ein Programmbeispiel für den TextModus


 10 REM Graphic Modus 
 20 REM Rolf-Dieter Klein 19830508 
 30 PRINT CHR$(27); CHR$(27); "GZPO" 'Graphic Modus 
 40 PRINT "M0 0; R511 255" 'Rechteck-Rahmen zeichnen 
 50 PRINT "M50 200;G3 $22; BGraphic-Befehle" 
 60 PRINT "M200 50;0100 50 0 0 1" 
 70 PRINT "l300 0 511 20 400 200" 
 80 REM Symbol definieren 
 90 PRINT "WA" ; "HHHHIJKKLLMMNO" 
100 PRINT "Y" 'zwei Seiten quasisimultan 
110 PRINT "WC2 0" 'VERGROESSERUNG 2 DREHUNG 0 
120 FOR X=0 TO 511 
130 PRINT "F";X;INT(SIN(X/100*2*PI)*120+127); 1 
140 NEXT X 
150 PRINT "A" 'in Alpha zurueck 999 PRINT "A"

Bild 13. Ein Programmbeispiel für den Grafik-Modus


10 REM Statuszeile ueber Graphic Modus 
20 REM Rolf-Dieter Klein 19830508 
30 PRINT CHR$(27); CHRS (27); "G" ohne Loeschen 
40 PRINT "P0;M0 0; R511 15" ' mit Rahmen 
50 PRINT "P5;M0 0; R511 15" ' beide Seiten 
60 PRINT "P0;G3 $22;M40 -1;BStatus Zeile doppelt hoch" 
70 PRINT "P5;M40 -1;BStatus Zeile         Hoch"
80 PRINT "A" 'wieder zurueck in Textmodus 
90 LIST

Bild 14. Einblendung der Statuszeile


 10 REM Kleine LOGO-Demonstration 
 20 REM Rolf-Dieter Klein 
 30 PRINT CHR$(27); CHRS (27); "L" 'std mode 
 40 PRINT "M255 255 90" 'umgerechnet auf 512x256 
 50 FOR 1=0 TO 360/10 
 60 GOSUB 130 ‘Muster 1 
 70 PRINT "P-10" 
 80 NEXT I 
90 PRINT "TO" 'Turtle off 
100 FOR I =1 TO 1000: NEXT I 
110 PRINT "A" 
120 END 
130 REM Unterprogramm Figur 
140 FOR N=1 TO 4 
150 PRINT "F150;p";36014 
160 NEXT N 
170 RETURN

Bild 15. Logo-Demo


 10 REM Tektronix Demo 
 20 REM Rolf-Dieter Klein 19830508 
 30 PRINT CHR$(27); CHR$(27); "TO 0 1 2 1" 
 40 FOR X=0 TO 1023 STEP 4 
 50 Y=(SIN(X/1023*2*PI )*500+512) 
 55 Y=INT(Y) 
 60 GOSUB 100 'Tektronix Ausgabe 
 70 NEXT X 
 80 FORI = 1 T01000: NEXT I 
 90 PRINT CHR$(27); CHR$(27); "A": END 
100 REM x,y trennen und Ausgeben 
105 PRINT CHR$ (28); CHR$(7); 'Pointplot mode 
110 PRINT CHR$(INT(Y/32) + 32); CHR$(Y MOD 32 + 96); 
999 RETURN
CHR$(INT (X/32)+32); CHR$ (X MOD 32 + 64)

Bild 16. Der Tektronix-Modus


Das Assemblerprogramm

Bild 17 zeigt Ausschnitte aus dem Assemblerlisting. Für eigene Programme, die ab Adresse 4700h bis 47FFh abgelegt werden können, gibt es eine Sprungtabelle, um nützliche Unterprogramme verwenden zu können.

Bild 18 zeigt den Ausschnitt der Programmiertabelle der STIs.

Bild 19 zeigt die Belegung des RAM-Speichers. Mit dem Auslesebefehl WF können damit zum Beispiel der Inhalt des Bildwiederholspeichers oder andere Parameter ausgelesen werden.


; rom = 0	ram =3800h Rev 3.4 18.4.83 R-D. Klein
cseg

start1:
	jp	start		; Start der Termi-Software
	jp	clear		; Loeschen einer Seite - Intern
	jp	clrall		; Loeschen aller Seiten
	jp	clrinvis	; Loeschen der aktuellen Schreibseite
	jp	moveto		; hl=x de=y
	jp	drawto		; hl=x de=y
	jp	setpage		; A = Schreibseite*4+Leseseite
	jp	wait		; setzen iwarten bis GDP Empfangsbereit
	jp	cmd		; A= Befehl an den GDP
	jp	csts		; STI-A Zeichen da dann 0ffh in A
	jp	ci		; STI-A Zeichen einlesen
	jp	co		; STI-A Zeichen in Register C ausgeben
	jp	psts		; STI-B Status abfragen
	jp	ri		; STI-B Zeichen einlesen
	jp	poo		; STI-B Zeichen in Register C ausgeben
	jp	get		; Zeichen von Ringbuffer holen, wenn da NOCARRY
	jp	put		; Intern i Ablage eines Zeichens im Ringbuffer
	jp	getnum		; Dezimal-/ Sedezimal-Zahl nach HL holen von Ringbuffer 
	jp	getin		; Mit Bildumschaltung Grafik -- Zeichen holen
	jp	refresh		; Mit Bildumschaltung Text -- Zeichen holen

	org	start 1+40h	; Interruptvektor-Tabelle

	defw	err	; i0
	defw	err	; i1
	defw	err	; i2
	defw	err	; i3 tb
	defw	err	; Timer d
	defw	err	; Timer c
	defw	err	; i4 ta
	defw	err	; 5
	defw	err	; Timer b
	defw	err	; Transmit Error
	defw	err	; Transmitter Empty
	defw	err	; Receiver Error
	defw	put	; Receiver Full
	defw	err	; Timer a
	defw	err	; 16
	defw	err	; i7
	defw	err	; Interrupt ignorieren

err::	
	ei
	reti

put::				;Zeichen im Ringbuffer ablegen
	push 	hl 
	push 	de 
	push 	be 
	push 	af 
	call 	csts
if a=0ffh
	call 	ci		; Zeichen holen 
	ld 	hl, (putptr)
	ld 	de,ring
	add 	hl,de
	ld	(hl), a		; Zeichen nach Ringbuffer
	ld	hl,(getptr)
; 
	ld	de,(putptr)	;
	xor	a 
	sbc	hl,de
	ld	a,h
	and	3		;0..3ff
	ld	h,a 
if h<>0 or l <>0
	ld	de,100		; DTR schalten wenn 100 
	xor	a			; Zeichen frei in Ringbuffer
	sbc	hl,de
	bit	7,h
if nz
	call	resdtr.	; Nicht Bereit
endif
endif
	ld	hl,(putptr)
	inc	hl
	ld	a,h
	and	3		;0..3ff 
	ld	h,a
	ld	(putptr),hl	;
endif
	pop	af
	pop	bc
	pop	de
	pop	hl
	ei
	reti	

setdtr::		;Bereit
	in	a,(page)
	res	1,a
	out	(page),a	
	ret

resdtr::		; Nicht Bereit
	in	a,(page)
	set	1,a
	out	(page),a
	ret

; * konstanten etc.

; Basisadressen der Peripheriebausteine 
stia	equ	80h	
stib	equ	90h
gdp	equ	70h
readout	egu	0a0h	; Leseport Rueckkanal

page	equ	stia+1

; STI-R Belegung von den Portbits
;
; 7	6	5	4	3	2	1	0
; write page	read page	vb	-irq
;
; bei dem Befehl CLR (z. B. 4) des GDP wird die Leseseite
; beim Schreiben verwendet, wenn nicht das Bit 3 im 
; Register 1 gesetzt wurde (BLK = 1 setzen).

Bild 17. Das Teillisting des Sourcodes in „STRUKTA“


Die Arbeit mit dem Terminal

Für das Arbeiten mit diesem umfangreichen Software-Paket sei geraten, einmal jeden Befehl getrennt in einem kleinen Programm zu verwenden und zu testen. Wichtig ist ferner, daß manche BasicVersionen automatisch CRLF nach einer bestimmten Anzahl von Zeichen einfügen und daher Vorsicht mit allen BinärBefehlen geboten ist (V-Befehl, m oder d oder Tektronix-Modus). Der mc-GrafikModus ignoriert zusätzliche CRLFs, auBer bei den Binärbefehlen, der Tektronix-Modus nicht.

(Der Bausatz und das PROM mit Handbuch sind von der Firma GES, Graf Elektronik Systeme, Kempten, unter der Bezeichnung TERM1 lieferbar. Hexdump und EPROM vom Franzis-Software-Service, Tel. 089/51 17-3 31.)


; initialisieren der Peripheriebausteine

siolist::

defb	2*18			; Anzahl der Eintraege
				; STI-A
defb	stia+12,10001000b	; /16 1 Stop 8 Bit
defb	stia+13,00000001b	; receive enable
defb	stia+14,00000101b	; transmitter enable
defb	stia+8,1		; pointer to timer d
defb	stia+0,3		; /3
defb	stia+8,2		; pointer to timers
defb	stia+0,3		; /3 9600 baud
defb	stia+8,7		; pointer to control c,d.
defb	stia+0,10011001b	; /4 /4 
defb	stia+8,6		; pointer
defb	stia+0,11110010b	; I/O definieren Bit 1 =
				; dtr Ausgang
defb	stia+1,0		; page O dtr high
defb	stia+8,4
defb	stia+0,00000000b	; disable rest
defb	stia+8,5		; iera 
defb	stia+0,00010000b	; bit 4= 1 enable receive interupt
defb	stia+7,00010000b	; imra freigeben
defb	stia+8,01000110b	; Vektor Xx40

sti1list::			; STI-B
defb	2*16			; adjust for
defb	stib+12,10001000b	; /16 1 Stop 8 Bit
defb	stib+13,00000001b	; receive enable
defb	stib+14,00000101b	; transmitter enable
defb	stib+8,1		; pointer to timer d
defb	stib+0,3		; /3
defb	stib+8,2		; pointer to timer c
defb	stib+0,3		; /3 9600 baud
defb	stib+8,7		; pointer to control C,D
defb	stib+0,10011001b	; /4 /4
defb	stib+8,6		; pointer
defb	stib+0,00000010b	; I/O definieren Bit 1 - 
				; dtr Ausgang
defb	stib+1,00000000b	; dtr high Freigabe
defb	stib+8,4
defb	stib+0,00000000b	; disable rest 
defb	stib+8,5		; iera
defb	stib+0,00000000b	; disable
;
;
; STI-B Bits	7  6  5  4  3  2  1   0
;		sw sw sw sw sw sw dtr cts
;
; Baudraten Zuordnung 
bdtab::
defb	10011001b,1	; /4 /1  28800 baud
defb	10011001b,2	; /4 /2  14400 baud
defb	10011001b,3	; /4 /3   9600 baud
defb	10011001b,3	; /4 /3   9600 baud
defb	10011001b,3	; /4 /3   9600 baud
defb	10011001b,3	; /4 /3   9600 baud
defb	10011001b,3	; /4 /3   9600 baud
defb	10101010b,230	; /10 /230  50 baud
defb	10101010b,154	; /10 /154  75 baud
defb	10101010b,105	; /10 /105 110 baud
defb	10011001b,96	; /4 /96   300 baud
defb	10011001b,48	; /4 /48   600 baud
defb	10011001b,24	; /4 /24  1200 baud
defb	10011001b,12	; /4 /12  2400 baud
defb	10011001b,6	; /4 /6   4800 baud
defb	10011001b,3	; /4 /3   9600 baud

Bild 18. Die STI-Initialisierungstabelle


crpos::		defw	0	; Intern
newx::		defw	0	; Fuer drawto
newy::		defw	0	
oldx::		defw	0
oldy::		defw	0	
dx::		defw	0	
dy::		defw	0	
sign::		defb	0	; Vorzeichenmerker

stibthere::	defb 	0	; 0= STI-B nicht da

vzsto::		defb	0	; Merker fuer sin, cos
phianf::	defw	0	
phiend::	defw	0	
ha::		defw	0	
hb::		defw	0	
x0::		defw	0	; Fuer l-Befehl		
y0::		defw	0	
x1::		defw	0	
y1::		defw	0	
x2::		defw	0	
y2::		defw	0	
xkoor::		defw	0	
ykoor::		defw	0	
newxx::		defw	0	
newyy::		defw	0	
phi::		defw	0	
sitemp::	defw	0

dxx::		defw	0		
dyy::		defw	0	
ssto::		defw	0	
yaddsto::	defw	0	
xdx::		defw	0	; fuer Fuell-Befehle
ydy::		defw	0	


cirfuel::	defb	0	; Merker Ornicht fuellen
xalt::		defw	0	; Tektronix Merker	
yalt::		defw	0	
tdark::		defb	0	
offx::		defw	0	
offy::		defw	0	
scalx::		defb	0	
scaly::		defb	0	
xgra::		defw	0	; aktuelle Position
ygra::		defw	0	
f10n::		defb	0	
f1x::		defw	0	
f1y::		defw	0	; Position Fadenkreuz
pflag::		defb	0	
pmode::		defb	0	; Point Modus
		;
		;
turx::		defw	0	; Logo-Modus 
tury::		defw	0	; Position
turphi::	defw	0	
tur 1x::	defw	0	; alte Position
turty::		defw	0	
turlphi::	defw	0

turdo::		defb	0	; Turtle schreibt
teilflag::	defb	0	; 1=Teilen durch 2
		;
flagtro::	defb	0	; O=nicht parallel zu STI-8
		;

t1mp::		defb	0	; Merker prt2 
tempx::		defw	0	;
tempzeich::	defb	0	;
		;
optflg::	defb	0	; = 0 amerkian Zeichensatz
lokal::		defb	0	; = 1 dann Lokal Modus wirksam

flag::		defb	0	; Merker in getnum
flip1cnt::	defb	0	; Seitenwechselrate
flip1::		defb	0	; 0,1,2,3
flipcnt::	defb	0	;
flip::		defb	0	; 0,1 oder 2,3
fon::		defb	0	; 1= Fadenkreuz an 
fax::		defw	0	
fay::		defw	0
fap::		defb	0	; Seite 0..3
		;
faxn::		defw	0
fayn::		defw	0	
fapn::		defw	0	
		;
fadnr::		defb	0	; Nr O= std
fadw::		defw	0	; Zeiger auf Heap
wfac::		defb	0	; Vergoresserungsfaktor 1..0 
wrot::		defb	0	; Rotation 0..7

charline::	defb	0	; Merker 80,79	
linemax::	defb	0	; Merker 24,23

synstate::	defb	0	; 0,1 fuer sync
synccount::	defb	0	; Zaehler.

curatt::	defb	0	; Cursorattribute

curx::		defb	0	; Cursorposition x= 0..79	
cury::		defb	0	; Cursorposition y= 0..23

viewpage::	defw	0	; 0,1,2,3 Leseseite 
wrtpage::	defw	0	; 0,2,3,4 Schreibseite
getptr::	defw	0	; Ringbuffer Lesezeiger 
putptr::	defw	0	; Ringbuffer Schreibzeiger 
ring::		defs	1024	; 1K Ringbuffer
linecnt::	defs	24	; Anzahl der Zeichen pro Zeile
				; fuer screen
lineptr::	defs	24	; Indirekte Zeilenadresse
				; 0..23
screen::	defs	80*24	; Bildspeicher
heapptr::	defw	0	; Zeiger auf Heap
		defs	200
stack::		defb	0	; Stack
heap::		defs	256	; Heap Speicher fuer
				; Fadenkreuzdefinition

Bild 19. Die Belegung des RAM