From 98cab31fc3659e33aef260efca55bf9f1753164c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 11 Feb 2019 11:49:19 +0100 Subject: Add source files from Michael --- system/ruc-terminal/unknown/doc/TDOC.PRT | 3012 ++++++++++++++++++++++++++++++ 1 file changed, 3012 insertions(+) create mode 100644 system/ruc-terminal/unknown/doc/TDOC.PRT (limited to 'system/ruc-terminal/unknown/doc/TDOC.PRT') diff --git a/system/ruc-terminal/unknown/doc/TDOC.PRT b/system/ruc-terminal/unknown/doc/TDOC.PRT new file mode 100644 index 0000000..f1595c8 --- /dev/null +++ b/system/ruc-terminal/unknown/doc/TDOC.PRT @@ -0,0 +1,3012 @@ +#type ("elite")##limit (16.2)##block# + +#type ("8")##center##on("b")##on("u")#Bedienungshandbuch zum ruc - Graphikterminal#off("u")##off("b")##type ("elite")# + +#center#Version 1.1 + +#center#Oktober 1986 +#free (16.0)# +ruc - Rolf Uhlig Computer +GmbH & Co Kommanditgesellschaft +Sendenhorster Straáe 82 +D - 4406 Drensteinfurt 1 +Telefon 02508/8500 + +Michael Staubermann +Mor„nenstraáe 29 +D - 4400 Mnster-Hiltrup +Telefon 02501/4320 +#pagenr (""224"", 1)##page (1)# +#kopf ("Bedienungshandbuch zum ruc - Graphikterminal")# +#h("1.", "Einige Worte zuvor")# + + +Dieses Terminalprogramm wird in zwei Versionen (fr den Basis 108 und den +Apple IIe) geliefert. Die Version ist in der Kommandozeile erkenntlich +(BASIS oder APPLE). + +Eigenschaften des Terminals: + +- Kommandozeilen fr schnelle Offline Parametereinstellung +- Statuszeile fr spezielle Betriebzust„nde +- šber 70 programmierbare Funktionstasten +- Druckerspooler 32k (4 ganze Graphikhardcopys und noch mehr) +- 7935 Zeichen Empfangspuffer +- Verschiedene Hardcopy Modi fr Text und Graphik +- 192x280 Punkte aufl”sender Graphikmodus mit zwei Helligkeitsstufen +- Zwei Graphikseiten mit getrennter Anzeige/Bearbeitung +- Viele Graphikroutinen (Bogen, Fl„chenfllung, Kreis, Rechteck...) +- Graphikmodus fr Texte in verschieden Richtungen, Dicken, Gr”ssen +- Griechische Graphikzeichen und Kursivschrift +- Graphikseiten Scrollen, Mischen, vom Host laden, zum Host schicken + + +Zum Handbuch + +Tasten werden durch Angabe ihres Aufdruckes in Grossbuchstaben angegeben und +in spitze Klammern gesetzt (z.B. ) in einigen F„llen auch durch ihren +Namen (z.B. oder ). Eine zus„tzlich zu bet„tigende Umschalt- +taste, wie SHIFT, CTRL, OPEN APPLE (kurz: OA) oder beide zusammen, wird in +der Klammer davorgestellt (z.B. ). + +Nicht druckbare Ascii-Codes (z.B. oder ), sowie Kommandopara- +meter (z.B. ) werden ebenfalls in spitze Klammern gesetzt. Komandopara- +meter werden mit Kleinbuchstaben bezeichnet. + +#page# +#h("2.", "Die Hardware")# + + +Untersttzt wird eine 80-Zeichen Textanzeige, ein Basiskeyboard oder ein +Applekeyboard mit Open-Apple Taste. Am Basis kann ein Drucker angeschlossen +werden. + + +#k("2.1", "Die serielle Schnittstelle")# + +Die Parameter der seriellen Schnittstelle k”nnen vom Host oder vom Terminal +(LOCAL) eingestellt werden (Siehe Kommando ). Es wer- +den alle 15 g„ngigen Baudrates zwischen 50 und 19200 Baud untersttzt. Pari- +tycheck kann mit gerader oder ungerader Parit„t durchgefhrt werden. Fluá- +kontrolle ist in allen Kombinationen aus RTS/CTS, DTR/DSR, XON/XOFF m”glich. +Empfohlen wird DTR/DSR oder XON/XOFF. + + Ben”tigte Verdrahtung der seriellen Schnittstelle + + Pin Priorit„t + 2 : TXD Sendedaten zum Host (RXD) 1 + 3 : RXD Empfangsdaten vom Host (TXD) 1 + 4 : RTS Ready To Send zum Host (CTS) 3 + 5 : CTS Clear To Send vom Host (RTS) 3 + 6 : DSR DataSet Ready vom Host (DTR) 2 + 7 : Masse an Host Masse 1 + 8 : DCD Eingang, nicht ben”tigt + 20 : DTR Data Terminal Ready zum Host (DSR) 2 + +Priorit„t: + 1 : Muá verdrahtet werden + 2 : Ist bei DSR/DTR Fluákontrolle zu verdrahten + 3 : Ist bei RTS/CTS Fluákontrolle zu verdrahten + +Der Datentransfer geschieht in der Regel mit 8 Datenbits. Sollte der Host +nur ber 7 Bit Datentransfer verfgen, mssen einige Einschr„nkungen bei der +Parameterbergabe von Uploads/Downloads gemacht werden (Kein Farbbit). Die +Anzahl der Datenbits kann auch in der Kommandozeile ver„ndert werden. + + +#k("2.2", "Der Reset")# + +Ein Reset bringt das Terminal in einen definierten Zustand. Alle Bildschirm- +seiten und Puffer, sowie der Druckerspooler werden gel”scht. Der Reset kann +vom Host durch + + #ib(1)# 0#ie(1)# (Hex 1B 30) + +initiiert werden, vom Basiskeyboard aus durch . Die Para- +meter in der Kommandozeile werden dem Setup entnommen. Nach dem L”schen +aller Bildschirmseiten, wird das Makro mit dem Code Hex EF aufgerufen. Dies +ist die Funktionstaste . + +#page# +#h("3.", "Die Kommandozeile")# + + +Die wichtigsten Parameter des Terminals k”nnen im laufenden Betrieb in den +beiden Kommandozeilen ge„ndert werden. Die erste Kommandozeile erscheint +beim Basiskeyboard durch Drcken von und beim Apple durch . + +Im Graphikmodus ersetzt die Kommandozeile die untersten 32 Graphikzeilen +(entspricht vier Textzeilen). Man hat also auch im Graphikmodus die M”g- +lichkeit wichtige Parameter in der Kommandozeile zu „ndern. + +Die angezeigten Einstellungen bieten auáerdem eine Informationsm”glichkeit +ber die aktuellen Parameter der seriellen Schnittstelle u.s.w. Die zweite +Kommandozeile enth„lt die Parameter der seriellen Schnittstelle. + +Alle in den Kommandozeilen angezeigten Parameter (bis auf BELL ON/BELL OFF) +k”nnen auch durch ESC-Kommandos vom Host oder im Localmodus ge„ndert wer- +den. +Ein laufender Druckvorgang wird unterbrochen, solange die Kommandozeilen +sichtbar sind. + + +#k("3.1", "Tastenfunktionen in der Kommandozeile")# + +Folgende Tasten haben in der Kommandozeile eine Wirkung: + +Taste Bedeutung +#linie ("16.2")# + oder Wechselt in die jeweils andere Kommandozeile + + Springt zum vorherigen (linken) Parameter ohne etwas zu + ver„ndern. + + Springt zum n„chsten (rechten) Parameter ohne etwas zu + ver„ndern. + + Žndert das selektierte Parameterfeld. Das selektierte + Parameterfeld ist durch Invertierung hervorgehoben. Die + m”glichen Parameter wiederholen sich zyklisch. + + Die Kommandozeile wird verlassen. Es werden keine Žnde- + rungen durchgefhrt. + + Die Kommandozeile wird verlassen. Vorher werden alle + Žnderungen permanent auf die Diskette geschrieben. Wei- + tere Einzelheiten s.u. (Setup) + + Alle Parameter werden auf ihre Defaultwerte zurckge- + setzt. Die Kommandozeile wird noch nicht verlassen, daher + kann dieser 'Reset' durch wieder aufgehoben werden. + oder Die Kommandozeile wird verlassen. Die + Žnderungen werden nur im Speicher vermerkt. Nach dem + Ein-/Ausschalten des Rechners werden die alten Parameter + von der Diskette gelesen. Wird allerdings ein Hardware- + reset (s.o.) durchgefhrt, sind diese Žnderungen nicht + verloren. + + +#k("3.2", "Setup")# + +Beim Setup, der in der Kommandozeile durch ausgel”st werden kann, +werden wichtige Parameter auf die Diskette geschrieben. Sie werden dann +'permanent' und mssen nach dem Einschalten des Terminals nicht neu einge- +stellt werden. Diese Parameter sind die +- Parameter der seriellen Schnittstelle (2. Kommandozeile) +- anderen Parameter der Kommandozeilen +- vom Benutzer programmierte Belegung der Funktionstasten +- Druckerspezifischen Hardcopyparameter + +Vor dem Setup ist zu prfen, ob der Diskettenschreibschutz entfernt wurde +(Klebeschildchen an der Diskettenseite entfernen). Der Schreibschutz sollte +nach dem Setup wieder angebracht werden. Wurde der Schreibschutz nicht ent- +fernt, wird eine Meldung 'Diskettenschreibschutz entfernen !' angezeigt. In +diesem Falle erscheint nach dem Drcken einer Taste wieder die Kommando- +zeile. +Wenn keine Diskette einliegt oder ein harter Schreibfehler auftritt, er- +scheint die Meldung 'Setup kann nicht geschrieben werden (Diskettenfeh- +ler)!'. Weitere Schreibversuche sind m”glicherweise erfolgreich. + + +#k("3.3", "Die zweite Kommandozeile")# + +Beim Basis (erste Zeile zeigt Defaultwerte fr ) + +#type ("micron")# +GER|BASIS|MON OFF|PRT OFF|SCRN ON |KEY CLK|NORVID|SCROLL|BELL ON |CUR FLH|F STRG +USA TVI MON ON PRT ON SCRN OFF CLK OFF REVVID PAGE BELL OFF CUR STD F CODE +APL HEX ON CUR OFF +UNI +#type ("elite")# + +Beim Apple (erste Zeile zeigt Defaultwerte fr ) + +#type ("micron")# +USA|APPLE|MON OFF|PRT OFF|SCRN ON |KEY CLK|NORVID|SCROLL|BELL ON |CUR FLH|F STRG +FLH TVI MON ON PRT ON SCRN OFF CLK OFF REVVID PAGE BELL OFF CUR STD F CODE + HEX ON CUR OFF +#type ("elite")# + + +Default Andere Funktion +#linie ("16.2")# +Basis + GER USA Die Zeichensatzeinstellung ist fr die gebr„uchlichsten + APL vier Zeichens„tze in der Kommandozeile m”glich. + UNI GER = Deutsch Ascii, USA = US Ascii, APL = APL-Zeichensatz + UNI = Deutscher Zeichensatz mit inversen APL Zeichen. Der + APL-Zeichensatz ent„hlt auch die Zeichen [\]{|}~. šber + ESC-Kommandos lassen weitere M”glichkeiten einstellen. + + BASIS TVI Keyboard Emulation. BASIS sendet die Funktionstastencodes + mit Bit 7 = 1. TVI sendet fr jede Funktionstaste eine + Zeichenfolge x . Die Cursortasten sowie DEL CHAR, + INS CHAR, DEL LINE, INS LINE werden wie bei TVI blich + gesendet. Weiter Einzelheiten s.u. (TVI-Emulation) + +Apple + USA FLH USA = US Ascii, FLH = Voller Ascii Zeichensatz mit Blinken + und Invers. + + APPLE TVI Keyboard Emulation. APPLE fhrt keine Codeumsetzung durch. + Wird allerdings die -Taste mit einer anderen + Taste zusammen gedrckt, wird das Bit 7 im Code auf 1 ge- + setzt. Zur TVI-Emulation siehe oben. + +MON OFF MON ON Der Monitor Modus wird mit MON ON eingeschaltet. In diesem + HEX ON Modus werden alle Steuerzeichen auf dem Bildschirm mar- + kiert ausgegeben. Bis auf die Kommandos u oder + X (um den Monitormodus auszuschalten) werden keine Komman- + dos interpretiert. Alle anderen Zeichen werden unver„ndert + dargestellt. Der Monitormodus kann auch durch MON OFF aus- + geschaltet werden. + Im Hexmodus werden keine Zeichen, sondern deren Ascii- + Codes in Hexadezimaldarstellung ausgegeben. + +PRT OFF PRT ON Parallele Druckerausgabe. Ist PRT ON eingeschaltet, werden + alle Zeichen die von der seriellen Schnittstelle kommen, + auf dem Drucker ausgegeben bzw. in den Druckerspooler ge- + schrieben. Die Bildschirmausgabe wird hiervon nicht beein- + fluát. + +SCRN ON SCR OFF Bildschirmausgabe an/aus. Ist SCRN ON eingeschaltet, wer- + den alle Zeichen die von der seriellen Schnittstelle kom- + men, auf dem Bildschirm ausgegeben. SCR OFF und PRT ON kann + zum Beispiel benutzt werden, um Daten nur an den Drucker zu + schicken, ohne daá diese auch auf dem Bildschirm erschei- + nen. + +KEY CLK CLK OFF Tastaturklick an/aus. Ist KEY CLK eingeschaltet, gibt jede + Taste (bis auf SHIFT, CTRL) bei ihrer Bet„tigung einen Ton + (Klick) von sich. CLK OFF schaltet dies ab. + +NORVID REVVID Bildschirmdarstellung. NORVID stellt hellen Text auf + schwarzem Grund dar, REVVID stellt schwarzen Text auf hel- + lem Grund dar (M”glicherweise angenehmer fr die Augen). + +SCROLL PAGE Ist SCROLL eingeschaltet, wird der Bildschirm um eine Zeile + nach oben geschoben, sobald der Cursor in der letzten Bild- + schirmzeile steht und ein Zeilenvorschub ausgefhrt + werden soll. Die erste Bildschirmzeile verschwindet. Ist + PAGE eingeschaltet, springt der Cursor in einer solchen + Situation in die erste Bildschirmzeile. Die Cursorspalte + wird dabei nicht ver„ndert. + +BELL ON BELL OFF Normalerweise erzeugt jedes empfangene einen kur- + zen Signalton. Wenn das st”rt, kann die Tonausgabe mit BELL + OFF abgeschaltet werden. + +CUR FLH CUR STD Cursordarstellung. CUR FLH zeigt einen blinkenden CUR OFF + Cursorblock. CUR STD zeigt einen nichtblinkenden Cursor- + block. CUR OFF schaltet den Cursor ab (unsichtbar). + +F STRG F CODE Funktionstastenbelegung. Ist F STRG eingeschaltet, erzeugt + eine programmierte (belegte) Funktionstaste keinen Tasten- + code, sondern sendet die programmierten Zeichen. Eine unbe- + legte Funktionstaste sendet ihren Tastencode. Ist F CODE + eingeschaltet, erzeugen auch belegte Funktionstasten einen + Tastencode und senden keine programmierten Zeichen. + + +#k("3.4", "Die zweite Kommandozeile")# + +Die erste Zeile zeigt Defaultwerte fr : + +#type ("micron")# +STATOFF|TXT| 9600|STOP 1|DATA 8|NO PAR|NO XONOFF|NO RTSCTS|NO DTRDSR +STAT ON GFX 19200 STOP 2 DATA 7 EVN PAR XON/XOFF RTS/CTS DTR/DSR + 50 ODD PAR + 75 + 109.9 + 134.6 + 150 + 300 + 600 + 1200 + 1800 + 2400 + 3600 + 4800 + 7200 +#type ("elite")# + +Default Andere Funktion +#linie ("16.2")# +STATOFF STAT ON Anzeige der Statuszeile. Der Arbeitsbereich des Bildschirms + betr„gt zwar immer 24 Zeilen, allerdings ist bei STAT ON + anstelle der 24. Textzeile die Statuszeile sichtbar. Bei + STATOFF wird der aktuelle Inhalt der 24. Textzeile sicht- + bar. Einzelheiten s.u. (Die Statuszeile) + +TXT GFX Textmodus/Graphikmodus. TXT schaltet in die 80x24 Zeichen + Textdarstellung um. GFX schaltet auf die aktuelle Graphik- + seite um. + +9600 19200 W„hlt die Baudrate fr die serielle Schnittstelle. + 50 Die Angabe erfolgt in Bits/Sekunde (Baud) + 75 + 109.9 + 134.6 + 150 + 300 + 600 + 1200 + 1800 + 2400 + 3600 + 4800 + 7200 + +STOP 1 STOP 2 W„hlt die Anzahl der Stopbits fr die serielle Schnitt- + stelle. + +DATA 8 DATA 7 W„hlt die Anzahl der Datenbits fr die serielle Schnitt- + stelle. + +NO PAR EVN PAR W„hlt Parity Check Art. NO PAR = Kein Parit„tsbit, keine + ODD PAR Parit„tsprfung. EVN PAR = Gerade Parit„t, ODD PAR = Unge- + rade Parit„t. + +NO XONOFF W„hlt XON (CTRL Q) und XOFF (CTRL S) als Protokoll fr die + XON/XOFF serielle Schnittstelle. Wird XOFF vom Host gesendet, kann + das Terminal noch 255 Zeichen empfangen, bis der Empfangs- + puffer berl„uft. Mit NO XONXOFF wird dieses Protokoll + ausgeschaltet. + +NO RTSCTS W„hlt RTS/CTS als Protokoll fr die serielle Schnittstel- + RTS/CTS le. Mit NO RTSCTS wird dieses Protokoll ausgeschaltet. + +NO DTRDSR W„hlt DTR/DSR als Protokoll fr die serielle Schnittstel- + DTR/DSR le. Mit NO DTRDSR wird dieses Protokoll ausgeschaltet. + +#page# +#h("4.", "Die Statuszeile")# + + +Die Statuszeile enth„lt 5 Felder, die ber die wichtigsten Betriebszust„nde +des Terminals Auskunft geben. Die Statuszeile ersetzt die (dann in den 'Hin- +tergrund' verlegte) 24. Zeile. Die Statuszeile kann in der Kommandozeile mit +STAT ON oder vom Host oder im Local Modus mit + + #ib(1)# }#ie(1)# (Hex 1B 7D) + +eingeschaltet werden. Ausschalten ebenso mit STATOFF oder + + #ib(1)# {#ie(1)# (Hex 1B 7B) + +Die Zuordnung der Felder: + +#type ("micron")# +Spooler | Empf„ngerpuffer | Senderpuffer | Bereit/Besch„ftigt | Local/Online +#type ("elite")# + +Kritische Zust„nde werden invers markiert. Dies sind alle F„lle, in denen +ein Puffer berl„uft. +Ist dies beim Empfangspuffer der Fall (RX FULL), gehen Daten verloren. +Sollte der Druckerpuffer voll sein (PR FULL) und das Terminal keine Eingabe +mehr annehmen, kann man durch l„ngeres Drcken von Zeichen aus +dem Druckerpuffer entfernen, damit wieder Platz frei wird. +Sollte der Senderpuffer voll sein (TX FULL), so liegt das wahrscheinlich +daran, daá der Host kein XON gesendet hat oder dieses falsch bertragen +wurde. Durch Drcken von kann man den Transmitter wieder star- +ten. + + +#k("4.1", "Spoolerstatus")# + +- Ein leeres Feld bedeutet: Der Spooler (Druckerpuffer) ist leer, es ist + nichts zum Drucken im Puffer. + +- PRINT zeigt an: Der Spooler ist gefllt. Das Terminal ist druckwillig oder + der Drucker druckt. + +- PR FULL bedeutet: Der Druckerpuffer ist voll. Da das Terminal keine wei- + teren Zeichen annimmt bis wieder Platz im Druckerpuffer ist, kann man + einzelne Zeichen mit aus dem Druckerpuffer entfernen bis PRINT + im Feld erscheint. + + +#k("4.2", "Empf„ngerstatus")# + +- Ein leeres Feld bedeutet: Im Empf„ngerpuffer ist noch Platz. + +- RX FULL zeigt an: Es gehen Empfangsdaten verloren, da der Empf„ngerpuffer + voll ist. + + +#k("4.3", "Senderstatus")# + +- TX ON bedeutet: Der Sender ist eingeschaltet. Wenn jetzt ein Zeichen ge- + sendet werden muá, wird es sofort auf die serielle Schnittstelle ge- + schickt. + Ein > vor TX ON zeigt an, daá das Terminal auf Freiwerden der seriellen + Schnittstelle wartet. + +- TX OFF bedeutet: Der Host hat entweder XOFF gesendet oder die Hardware- + fluákontrolle aktiviert, um das Terminal zu stoppen. + +- TX FULL zeigt an: Der Senderpuffer ist voll. Das Terminal nimmt keine + Eingaben mehr an bis der Puffer wieder frei ist. Dies kann mit + erzwungen werden. + + +#k("4.4", "Busy - Anzeige")# + +- READY bedeutet: Der Empf„nger ist empfangsbereit, d.h. im Empfangspuffer + sind noch mindestens 256 Zeichen frei und das Terminal hat den Host nicht + per Fluákontrolle gestoppt. + +- BUSY bedeutet: Der Empf„nger hat dem Host per Fluákontrolle angezeigt, daá + nicht mehr gengend Platz im Empfangspuffer war. Die Fluákontrolle wird + wieder freigegeben, wenn nur noch 256 Bytes im Empfangspuffer sind. + (Warnung: Wenn BUSY angezeigt wird, eine Taste gedrckt wird und der Host + #on("u")#nicht#off("u")# empfangsbereit ist, ger„t das Terminal in eine + "Deadlock-Situation", die (mit Datenverlust) nur durch einen Hardwarereset + abgebrochen werden kann.) + + +#k("4.5", "Online/Local - Anzeige")# + +- ONLINE bedeutet: Das Terminal sendet Tasteneingaben an den Host und emp- + f„ngt Zeichen und Kommandos vom Host. + +- LOCAL bedeutet: Keyboardeingaben erscheinen auf dem Bildschirm bzw. blei- + ben innerhalb des Terminals. Escape-Kommandos wirken direkt auf das Ter- + minal. + +#page# +#h("5.", "Die Bedeutung der Tasten")# + + +Zus„tzlich zu den normalerweise von der Tastatur gesendeten Tastencodes sind +einige weitere zur Verfgung gestellt worden. Beim Apple senden fast alle +Tasten mit Open-Apple zusammen einen Code mit Bit 7 = 1. Diese werden vom +Terminal als Funktions- oder Steuertasten interpretiert. Beim Basis wurden +einige bisher nur einfach belegte Tasten wie , , , +und der Zehnerblock mit Doppelfunktionen ber versehen. + + +#k("5.1", "Die Funktions- und Steuertasten")# + +Zuerst werden die Tastenfunktionen erl„utert fr ein nicht emulierendes +Terminal. Die TVI-Emulation kann in der Kommandozeile abgeschaltet werden +(1. Zeile, 2. Feld) oder mit dem Kommando + + #ib(1)# 0#ie(1)# (Hex 1B 20 30) + +Die Cursortasten liefern beim Basiskeyboard andere Tastencodes als beim +Applekeyboard. Wird das Bit 7 ignoriert (ausgeblendet), stimmen die Codes +berein. bezeichnet beim Basiskeyboard die linke obere Eckposi- +tion des Cursorblocks, die rechte obere etc. + +Basis-Taste Apple-Taste Hex-Code Bedeutung +#linie ("16.2")# + 09 Der Cursor wird an die n„chste (re- + chte) Tabulatorposition gesetzt. + Tabulatorpositionen sind alle 8 Spal- + ten. Also 1, 9, 17, 25, 33, 41, 49, + 57, 65, 73. War der Cursor in Spalte + 73 bis 79, dann wird er in die erste + Spalte der n„chst tieferen Bild- + schirmzeile gesetzt. War der Cursor + vorher auch noch in Zeile 24, dann + wird der Bildschirminhalt entweder + nach oben gescrollt (SCROLL) oder in + Homeposition gebracht (PAGE). + + 89 Back-Tab (Rckw„rtstabulator). Der + Cursor wird in die n„chste links vom + Cursor befindliche Tabulatorposition + gebracht. War der Cursor in Spalte 1, + dann steht er jetzt in Spalte 73 der + darberliegenden Zeile. War der Cur- + sor in Homeposition, dann „ndert sich + seine Position nicht. + + - Kommandozeile aktivieren. Einzelhei- + ten zur Kommandozeile siehe Abschnitt + 3.: Die Kommandozeilen. + + 18 U.a. Kommandozeile verlassen. + + 0D Zum Zeilenanfang ohne Zeilenvorschub. + Der Cursor steht dann in der ersten + Spalte der Zeile. + + 8D Zum Anfang der n„chsten Zeile. Falls + der Cursor in der letzten (24.) Bild- + schirmzeile war, wird der Bildschir- + minhalt entweder nach oben gescrollt + (SCROLL) oder in Homeposition ge- + bracht (PAGE). + + 8B/0B Cursor eine Zeile h”her. War der + Cursor in der ersten Bildschirmzei- + le, „ndert sich seine Position nicht. + + 8A/0A Cursor eine Zeile tiefer. War der + Cursor in Zeile 24, dann wird der + Bildschirminhalt entweder nach oben + gescrollt (SCROLL) oder der Cursor in + die erste Bildschirmzeile gesetzt + (PAGE). + + 16 Cursor eine Zeile tiefer. War der + Cursor in Zeile 24, dann „ndert er + seine Position nicht. Die Spalte + „ndert sich nicht. + + 88/08 Cursor eine Spalte nach links. War + der Cursor in der ersten Bildschirm- + spalte, dann steht er jetzt in der + letzten Spalte der darberliegenden + Bildschirmspalte. War der Cursor + allerdings in Homeposition, „ndert + sich seine Position nicht. + + - 95 Cursor eine Spalte nach rechts. War + der Cursor in Spalte 79, dann steht + er jetzt in der ersten Spalte der + folgenden Zeile. War der Cursor in + der letzten Zeile, dann wird der + Bildschirminhalt um eine Zeile nach + oben gescrollt (SCROLL) oder der + Cursor in Homeposition gebracht + (PAGE). + + C0 Der Cursor wird in die linke obere + Bildschirmecke gebracht (Homeposi- + tion). + + D0 Bildschirm l”schen und Cursor Home. + + 7F Dieses Zeichen wird auf dem Bild- + schirm als Punktraster dargestellt. + Der Host interpretiert es in der + Regel als Zeichenl”schbefehl. + + 8E Zeichen bei Cursorposition einfgen. + Der Cursor „ndert seine Position + nicht. Unter dem Cursor steht dann + ein Leerzeichen. Das Zeichen in Spal- + te 79 geht verloren. + + 82 Zeichen unter Cursorposition l”schen. + In Spalte 79 steht dann ein Leerzei- + chen. + + 8F Zeile bei Cursorposition einfgen. + Die Cursorposition „ndert sich nicht. + Der Inhalt der letzten Bildschirmzei- + le ist verloren. Die Zeile in der der + Cursor steht wird mit Leerzeichen + gefllt. + + 83 Zeile in der der Cursor steht l”- + schen. Die Cursorposition „ndert sich + nicht. Der Inhalt der gel”schten + Zeile ist verloren. Die letzte Bild- + schirmzeile wird mit Leerzeichen + aufgefllt. + + 08 Cursor eine Spalte nach links. Die + Funktion ist mit der von iden- + tisch. + + 15 Apple: Cursor eine Spalte nach re- + chts. Die Funktion ist mit der von + identisch. + + EF Diese Taste ist eine programmierbare + Funktionstaste (siehe e). + + 81 Diese das liefert den + Makroparametercode (siehe e). + + 1B Leitet eine Escape-Sequenz ein. + + 9B W„hrend der Funktionstastedefinition + wirkt diese Taste wie ein Local + Escape, sonst liefert sie den Code 9B. + (siehe e). + + - Local/Online umschalten. + + '00' Sendet V24-Break (Hexcode 00 mit + Rahmenfehler). Als Rahmenfehler wird + das Fehlen des oder der Stopbits + bezeichnet (Stopbitpegel ist norma- + lerweise 1, bei Break dagegen 0). + +#on("u")#Zehnerblock:#off("u")# + + ... ... E1 ... programmierbare Funktionstasten + E9 " " + EA " " + EB " " + EC " " + ED " " + + EF " " + (Dieser Code wird beim RESET des + Terminals ausgefhrt. Der Benut- + zer kann damit das Terminal nach + seinen Wnschen konfigurieren.) + + +#on("u")#Funktionstasten:#off("u")# + + ... ... C1 " " + CF " " + ... ... D1 " " + DF " " + ... ... A1 " " + AF " " +.. ... B1 " " + BF " " + +Die Programmierung der Funktionstasten geschieht mit #ib(1)# e#ie(1)#. + + +#k("5.2", "Die TVI-Emulation")# + +Wird das Terminal in den TVI-Emulationsmode gebracht, dann senden einige +Tasten andere Tastencodes oder Codesequenzen. Die Bedeutung der Escape- +Sequenzen „ndert sich dadurch nicht. +Der TVI-Modus kann in der Kommandozeile eingeschaltet werden (1. Zeile, 2. +Feld) oder durch + + #ib(1)# 1#ie(1)# (Hex 1B 20 31) + +An dieser Stelle erscheinen nur noch die Tastenbezeichnungen des Basiskey- +boards. Die entsprechenden Tasten, die beim Applekeyboard zu drcken sind, +kann man im letzten Abschnitt nachlesen. + +Folgende Tasten senden andere Tastencodes: + +Taste TVI-Code(sequenz) Bemerkung +#linie ("16.2")# + 0C #ib(1)##ie(1)# Cursor nach rechts + + 1E #ib(1)##ie(1)# Cursor in Homeposition + + 1A #ib(1)##ie(1)# Durch Drcken von + Bildschirm l”schen und Cursor Home + + 1B 57 #ib(1)# W#ie(1)# Durch Drcken von + Zeichen l”schen + + 1B 52 #ib(1)# R#ie(1)# Durch Drcken von + Zeile l”schen + + 1B 51 #ib(1)# Q#ie(1)# Durch Drcken von + Zeichen einfgen + + 1B 45 #ib(1)# E#ie(1)# Durch Drcken von + Zeile einfgen + + 08 #ib(1)##ie(1)# Cursor nach links + + 1B 49 #ib(1)# I#ie(1)# Durch Drcken von + Rckw„rtstabulator + + 0A #ib(1)##ie(1)# Cursor nach unten + + 0B #ib(1)##ie(1)# Cursor nach oben + + 1F #ib(1)##ie(1)# Durch Drcken von + Waagenrcklauf und Zeilenvorschub + + +#on("u")#Funktionstasten:#off("u")# + +Fr jede Funktionstaste, die nicht belegt wurde wird eine Codesequenz der +Form also 01 0D gesendet. Fr gilt: + +Taste Hex-Code + ... @ ... 40 ... Diese Tasten sind auf fast allen + J 4A TVI-Terminals vorhanden. + ... ` ... 60 ... + c 63 + + ... K ... 4B ... + Y 59 + + +#on("u")#Zehnerblock:#off("u")# + + ... d ... 64 ... + l 6C + m 6D + n 6E + o 6F + p 70 + + r 72 + +Alle nicht in dieser Tabelle aufgefhrten Funktionstasten senden den Basis- +tastencode. + +#page# +#h("6.", "Der Graphikmodus")# + + +#k("6.1", "Allgemeines")# + +Der Graphikmodus kann in der 2. Kommandozeile ein- und ausgeschaltet (Gra- +phik: GFX, Text: TXT) oder mit dem Kommando + + #ib(1)# $#ie(1)# (Hex 1B 24) + +eingeschaltet und mit dem Kommando + + #ib(1)# %#ie(1)# (Hex 1B 25) + +ausgeschaltet. + +Die Aufl”sung betr„gt in y-Richtung 280 Punkte und in x-Richtung 192 Punk- +te, das sind 53760 Punkte. + + +#k("6.2", "Koordinaten und Parameterbergabe")# + +Die Koordinaten fr die Graphikkommandos drfen den Bereich von -32768 bis +32767 berstreichen. Der sichtbare Bereich ist fr die X-Koordinate 0..279 +und fr die Y-Koordinate von 0..191. Der Ursprung (d.h. der Punkt (0,0) ) +des Koordinatensystems ist die linke untere Ecke. Die Graphikroutinen zeic- +hnen nur innerhalb des sichtbaren Bereichs (Clipping). + + +#k("6.2.1", "Cursorposition/Fadenkreuz")# + +Der Graphikcursor ist ein gedachter unsichtbarer Punkt, der sich im gesam- +ten (auch unsichtbaren) Bereich des Koordinatensystems befinden kann. Wenn +sich der Cursor im sichtbaren Bereich befindet, dann kann man an der Posi- +tion ein Fadenkreuz darstellen. Das Fadenkreuz kann mit + + #ib(1)##ie(1)# oder #ib(1)##ie(1)# (Hex 18) + +ein- und ausgeschaltet werden. Das Fadenkreuz wird Exklusiv-Oder (XOR) ge- +zeichnet. Das heiát, daá die Punkte an der Stelle des Fadenkreuzes inver- +tiert (umgedreht) werden. Das hat wiederum zur Folge, daá an der Graphik- +seite nichts ver„ndert wird, wenn zweimal gesendet wird. Solange +der Bereich oder die Position des Fadenkreuzes nicht ver„ndert wird, k”nnen +zwischen den beiden Kommandos auch andere Graphikkommandos ausge- +fhrt werden. + + +#k("6.2.2", "Bin„re oder dezimale Parameter")# + +Die šbergabe der x/y Koordinaten, eines Radius oder relativer Koordinaten +und in einigen F„llen auch anderer Parameter, kann auf zwei verschiedene +Arten erfolgen. Das Terminal erkennt die šbergabeart am ersten Parameterby- +te: +Bei dezimalen Parametern ist dies entweder , +, - oder eine Zahl. Bei +Bin„ren Parametern liegt das H”herwertige Byte (das erste!) im Bereich von +00..1F oder 3A..FF. Die Festlegung auf dezimale oder bin„re Parameter gilt +fr beide (X und Y) Koordinaten. + + +#k("6.2.2.1", "Bin„re Parameter")# + +Bin„re Parameter sind eine Folge von vier Bytes (mit 8 Bits). Die ersten +beiden Bytes stellen die X-Koordinate dar, die anderen beiden Bytes die +Y-Koordinate. Negative Koordinaten oder negative relative Koordinaten wer- +den durch Bilden des Zweierkomplements dargestellt. +Zu beachten ist, daá zuerst das h”herwertige (Highbyte) und dann das nie- +derwertige (Lowbyte) gesendet werden muá. + +Der Vorteil der bin„ren Parameter ist, daá die Parameterbergabe schneller +ist als bei dezimalen Parametern, da weder Host noch Terminal eine Konver- +tierung vornehmen mssen und die Anzahl der Parameterbytes in der Regel +geringer ist als bei dezimaler Parameterbergabe. + +Der Nachteil ist, daá bei XON/XOFF Fluákontrolle einige Zahlen als XON oder +XOFF interpretiert werden k”nnen und daá diese Parameter nicht auf Funk- +tionstasten gelegt werden k”nnen, wenn sie Zeichen > Hex 7F enthalten. + + +#k("6.2.2.2", "Dezimale Parameter")# + +Dezimale Parameter bestehen aus einer Folge von ASCII-Zeichen. Die beiden +Koordinaten werden durch einen Separator (Komma, CR, Semikolon o.„.) ge- +trennt. Nach dem 2. Parameter steht ein weiterer Separator. An beliebiger +Stelle in und vor den Zahlen drfen Leerzeichen () oder Pluszeichen +(+) stehen, die keine Žnderung des Ergebnisses bewirken. Ein Minuszeichen +vor einer Zahl negiert sie. + +Der Vorteil der dezimalen Parameter ist, daá sie in h”heren Programmier- +sprachen bequem und lesbar in ein Programm geschrieben werden k”nnen und daá +keine Steuerzeichen vorkommen, die die XON/XOFF - Fluákontrolle st”ren k”nn- +ten. Auáerdem k”nnen diese Parameter immer auf Funktionstasten gelegt wer- +den, da sie keine Codes > Hex 7F enthalten. + +Der Nachteil ist wie unter 6.2.2.1 geschrieben, die Zeitdauer der zweima- +liegen Konvertierung (Host, Terminal) und die in der Regel l„ngeren Parame- +ter. + + +#k("6.2.3", "Absolute oder relative Koordinaten")# + +Bei den Move- und Drawbefehlen hat man die Wahl zwischen relativen und abso- +luten Koordinaten. + +Absolute Koordinaten setzen den Graphikcursor direkt auf die als Parameter +angegebene Position. Z.B. v 200, 100; setzt den Cursor direkt auf die +Position X=200, Y=100. Die meisten Programme untersttzen nur absolute Koor- +dinaten. + +Relative Koordinaten werden zur aktuellen Position des Graphikcursors ad- +diert. Das hat den Vorteil, daá eine Routine nicht zu wissen braucht, wo der +Graphikcursor gerade steht. Man kann sich zum Beispiel Folgen von relativen +Move's und Draw's auf Funktionstasten legen, die dann im Localmodus an der +aktuellen Cursorposition irgendwelche Symbole oder Sonderzeichen zeichnen. +Z.B. q -4, 3; bewegt den Graphikcursor 4 Punkte nach links und 3 Punk- +te nach oben. + + +#k("6.2.4", "Byteparameter")# + +Byteparameter sind solche, die nur aus einem Byte bestehen. Die Werte k”n- +nen also normalerweise von 0 bis 255 oder Hex 00 bis Hex FF. In den F„llen, +in denen nicht der ganze Wertebereich genutzt wird, werden nur die nieder- +wertigsten Bits ausaskiert, die h”herwertigen werden ignoriert, wenn nicht +ausdrcklich etwas anderes angegeben ist. Im Bereich von 0 bis 7 sind Wert +und ASCII-Ziffer identisch. Bei Werten groáer als 9 geht das allerdings +nicht mehr. Sind zum Beispiel die Werte von 0 bis 15 erlaubt, dann kann man +folgende Tabelle benutzen: + +#on("u")#Wert ASCII (Hex) oder Bin„r#off("u")# + 0 0 30 00 + 1 1 31 01 + 2 2 32 02 + 3 3 33 03 + 4 4 34 04 + 5 5 35 05 + 6 6 36 06 + 7 7 37 07 + 8 8 38 08 + 9 9 39 09 + 10 : 3A 0A + 11 ; 3B 0B + 12 < 3C 0C + 13 = 3D 0D + 14 > 3E 0E + 15 ? 3F 0F + +Fr Werte zwischen 0 und 31 benutzt man dann besser die Buchstaben (Groá- +buchstaben und [\]^_ oder Kleinbuchstaben und {|}~ und ). Die Zuord- +nung entnimmt man der ASCII-Tabelle in Anhang A. + + +#k("6.3", "Die Graphikparameter")# + +Fr die Linien und Zeichen in der Graphik gibt es verschiedene Darstellungs- +weisen. Man kann die Strichdicke, die Farbe (auf einem Monochrommonitor die +Helligkeit), den Linientyp (durchgehend, gepunktet, gestrichelt etc.) und +die Bitverknpfungen (l”schen, invertieren...) festlegen. Diese Parameter +werden mit einem Kommando O ... ver„ndert. + +Mit dem Kommando + + #ib(1)# O 0#ie(1)# (Hex 1B 4F 30) + +werden all diese Parameter auf Defaultwerte zurckgesetzt. Diese Default- +werte sind: Strichdicke 1, durchgehende Linie, OR-Bitverknpfung (Punkte +setzen), helle Farbe (gelb). Ausserdem wird die Seite 0 als sichtbare und +als Arbeitsseite gew„hlt. Es wird auf ganzseitige Graphik geschaltet (falls +im Graphikmodus). + + +#k("6.3.1", "Strichdicke")# + +Die Strichdicke einer Linie ist normalerweise 1. Die Strichdicke 2 zeichnet +parallel zur ursprnglichen Linie auf beiden Seiten jeweils eine weitere +Linie der gleichen L„nge. Die Strichdicke 3 zeichnet dann auf beiden Seiten +jeweils zwei parallele Linien usw. Die Strichdicke kann von 1 bis 15 ge- +w„hlt werden. Sie wird mit dem Kommando + + #ib(1)# O 1#ie(1)# (Hex 1B 4F 31 ) + +eingestellt. ist ein Byteparameter (Kapitel 6.2.4) mit dem Wertebe- +reich 1 bis 15. + + +#k("6.3.2", "Farbe/Helligkeit")# + +Normalerweise ist Gelb (hell) eingestellt. Die Alternative ist Violett (dun- +kel). Jeweils 7 nebeneinanderliegene Graphikpunkte haben die gleiche Farbe. +Auf einem Farbmonitor kann die Farbe auch noch durch den Inhalt dieser 7 +Graphikpunkte bestimmt werden. Der Farbmodus wird von diesem Terminalpro- +gramm allerdings nicht untersttzt, da sich dann die Aufl”sung in X-Richtung +halbiert (also nur noch 140 x 192 Punkte). + +Mit dem Kommando + + #ib(1)# O 2#ie(1)# (Hex 1B 4F 32 ) + +kann die Helligkeit eingestellt werden. ist ein Byteparameter bei dem +nur das Bit 0 wichtig ist: + +Bit 0 Bedeutung + 0 dunkel/Violett ist eine gerade Zahl + 1 hell/Gelb ist eine ungerade Zahl + + +#k("6.3.3", "Linientyp")# + +Der Linientyp ist das "Muster" der Striche. Es gibt 7 vordefinierte Strich- +muster und ein vom Benutzer definiertes. Der Linientyp (im folgenden auch +Pattern genannt) wird mit dem Kommando + + #ib(1)# O 3#ie(1)# (Hex 1B 4F 33 ) + +eingestellt. ist ein Byteparameter mit dem Wertebereich von 0 bis 7. Die +Strichtypen sind folgendermaáen zugeordnet: + +#on("u")# Bitmuster (16 Bit) Name #off("u")# + 0 unsichtbare Linie + 1 ---------------- durchgehende Linie + 2 - - - - - - - - gepunktete Linie + 3 ---- ---- kurz gestrichelte Linie + 4 -------- lang gestrichelte Linie + 5 -------- - Strichpunktlinie + 6 - - ----- Strich-Punkt-Punkt Linie + 7 - - - - - - - - Benutzerdefinierte Linie + (Hier Defaultangabe) + +Die Bitmuster sind immer 16 Bit lang. Nach einem Movebefehl startet der +n„chste Draw-Befehl mit dem linkesten (niederwertigsten!) Bit des Bitmu- +sters. Das Muster wiederholt sich bei l„ngeren Linien zyklisch. Wird zwi- +schen zwei Draw-Befehlen kein Move-Befehl gegeben, dann setzt der zweite +Draw-Befehl im Bitmuster nach der gleichen Stelle fort, an der der erste +Draw-Befehl aufgeh”rt hat. Auch dicke Linien behalten das Linienmuster bei, +man sollte dann allerdings von gepunkteter auf lang gestrichelte Linie ber- +gehen, wenn man eine gepunktete dicke Linie haben will. + + +#k("6.3.3.1", "Selbstdefinierte Linientypen (Pattern)")# + +Wie in 6.3.3 angemerkt kann ein Linientyp auch vom Benutzer selbst definiert +werden. Da die L„nge 16 Bit ist, kann man mit den relativen Move's und +Draw's zusammen gut kleine Bildchen (Icons) zusammenstellen. Eine Hilfe ist +dabei auch die Bitverknpfung COPY, die im n„chsten Abschnitt erl„utert +wird. Man legt dazu zuerst das 16 Bit-Pattern als jeweils eine Zeile des +Icons fest und zieht dann von links nach rechts eine 16 Punkte lange Linie +mit dem benutzerdefinierten Pattern. Nach einem relativen Move (-16, -1) +kann der Vorgang fr die n„chste Zeile fortgesetzt werden. + +Das benutzerdefinierbare Pattern wird mit dem Kommando + + #ib(1)# O 6#ie(1)# (Hex 1B 4F 36 ) + +festgelegt. ist dabei das niederwertige (Lowbyte) des Bitmusters, +ist das h”herwertige (Highbyte) des Bitmusters. Wenn das Pattern als Muster +fr Linien (und nicht fr Icons) benutzt wird, dann sollte man darauf ach- +ten, daá das Bit 0 im Lowbyte 1 ist, damit man bei kurzen Linien, denen ein +Move vorangegangen ist, zumindestes einen Punkt sieht. + + +#k("6.3.4", "Bitverknpfungen")# + +šber Bitverknpfungen werden die Punkte auf der Graphikseite ver„ndert. Das +Linienmuster wird dazu zyklisch punktweise abgetastet und jenachdem ob das +aktuelle Bit im Linienbitmuster 0 oder 1 ist eine Ver„nderung der Graphik- +seite durchgefhrt. +Bis auf die COPY-Funktion wirken die Bitverknpfungen nur auf die Graphik- +seite, wenn der aktuelle Punkt im Linientyp-Bitmuster 1 ist. + +- Das Zeichnen einer sichtbaren Linie mit weiáen Punkten geschieht zum Bei- + spiel durch eine OR- (Oder-) Verknpfung. + +- Das L”schen einer Linie (also das Zeichnen von "schwarzen" Punkten) ge- + schieht mit einer AND- (Und-) Verknpfung (Genau genommen eine NAND-, d.h. + negierte AND-Verknpfung). + +- Das Invertieren (d.h. Weiáer Punkt wird schwarz, schwarzer Punkt wird + weiá) kann man mit einer XOR- (Exklusiv-Oder-) Verknpfung erreichen. + +- Fr Icons (siehe 6.3.3.1) und andere Zwecke, gibt es noch die COPY-Funk- + tion, die eigentlich keine einzelne Bitverknpfung ist. Ist im Linientyp + das aktuelle Bit 0, dann wird in der Graphikseite eine AND-Verknpfung + durchgefhrt (d.h. der Punkt wird gel”scht) ist das aktuelle Bit im Li- + nientyp 1, dann wird eine OR-Verknpfung durchgefhrt (d.h. der Punkt wird + gel”scht). Der Effekt ist, daá genau das Bitmuster des Linientyps in der + Graphikseite erscheint ("kopiert" wird), egal was vorher da stand, wo die + Linie gezeichnet wurde. + +Die Bitverknpfung kann mit dem Kommando + + #ib(1)# O 4#ie(1)# (Hex 1B 4F 34 ) + +festgelegt werden. ist ein Byteparameter mit dem Wertebereich 0 bis 3. + hat folgende Bedeutung: + + Bitverknpfung Verwendung +#linie ("16.2")# + 0 OR (Oder) Weiá (auf schwarzem Grund) zeichnen + 1 AND (Und) Schwarz (auf weiáem Grund) zeichnen + 2 XOR (Exklusiv Oder) Schwarze und Weiáe Punkte umdrehen (invertie- + ren) + 3 COPY (kopieren) Icons zeichnen oder Bilduntergrund berschrei- + ben + + +#k("6.3.5", "Multiparametereinstellung")# + +Die obigen Parameter (bis auf Linientyp) k”nnen alle zugleich mit einem +Kommando gesetzt werden. Das Kommando lautet + + #ib(1)# O 5#ie(1)# (Hex 1B 4F 35 ) + + ist ein Byteparameter mit dem Wertebereich 0 bis 127. Die Bits sind +folgendermaáen zugeordnet: + + Bit Bedeutung Werte +#linie ("16.2")# + 0 .. 3 : Strickdicke 1 .. 15 + 4 .. 5 : Bitverknpfung 0 = OR, 16 = AND, 32 = XOR, 48 = COPY + 6 : Farbe/Helligkeit 0 = Violett (dunkel), 64 = Gelb (hell) + +Standardeinstellung ist also ' O 5 A'. + + +#k("6.4", "Graphikseiten")# + +Das Terminal verwaltet zwei Graphikseiten mit einer Gr”áe von jeweils 8k +Byte (d.h. 8192 Bytes). + + +#k("6.4.1", "Die sichtbare Seite und die Arbeitsseite")# + +Die beiden Graphikseiten k”nnen (mssen aber nicht) getrennt voneinander +angezeigt und bearbeitet werden. Das kann sinnvoll sein, wenn eine Seite "im +Hintergrund" aufbereitet werden soll, w„hrend die andere (schon aufbereite- +te) Seite angezeigt wird. Man kann auch die 80-Zeichen Textseite anzeigen +und eine oder beide Graphikseiten im Hintergrund aufbereiten. Durch abwec- +hselndes Umschalten der Arbeits- und Anzeigeseite kann dann der Eindruck +eines bewegten Bildes erzeugt werden. Um diesen Vorgang zu beschleunigen, +kann man die Graphikseiten auch auf dem Host vorbereiten und (im Hinter- +grund) an das Terminal senden (bei 19200 Baud dauert das pro Seite ca. 4.7 +Sekunden). + +Die sichtbare und die Arbeitsseite k”nnen mit dem Kommando + + #ib(1)# O 7#ie(1)# (Hex 1B 4F 37 ) + +gew„hlt werden. ist ein Byteparameter mit dem Wertebereich 0 bis 7. + +Bit 0 von : Sichtbare Seite (0 oder 1) +Bit 1 von : Arbeitsseite (0 oder 1) +Bit 2 von : 1 = 80 Zeichen Textseite wird in den untersten 32 Graphik- + zeilen eingeblendet. 0 = Nur Graphikmode. + +#on("u")# Sichtbar Arbeitsseite Inhalt der untersten 32 Graphikzeilen#off("u")# + 0 Seite 0 Seite 0 Graphik (Seite 0) + 1 Seite 1 Seite 0 Graphik (Seite 1) + 2 Seite 0 Seite 1 Graphik (Seite 0) + 3 Seite 1 Seite 1 Graphik (Seite 1) + 4 Seite 0 Seite 0 Text + 5 Seite 1 Seite 0 Mll + 6 Seite 0 Seite 1 Text + 7 Seite 1 Seite 1 Mll + + +#k("6.4.1.1", "80-Zeichen Text und Graphik")# + +Mit dem in 6.4.1 beschriebenen Kommando k”nnen, wie beschrieben, die unter- +sten 4 Zeilen der Textzeile (d.h. ggf. auch die Statuszeile) statt der un- +tersten 32 Graphikzeilen dargestellt werden. Da es nur eine Textseite gibt +und jeder Graphikseite eine eigene Textseite zugeordnet ist, ist die Mi- +schung von Text und Graphik in der Graphikseite 1 auf diese Weise nicht +sinnvoll, da dann in den unstersten 32 Graphikzeilen nur Mll erscheint. Das +Einblenden wird vom Terminal z.B. genutzt, wenn die Kommandozeile aktiviert +wird. Man kann zum Beispiel Benutzerhinweise in die untersten 4 Zeilen der +Textseite schreiben. Zeichenbefehle arbeiten in dem unsichtbaren (ausgeblen- +deten) Teil der Graphikseite weiter. Das Ergebnis kann man sich beim Wieder- +-Einblenden ansehen. + + +#k("6.4.2", "Aufbau einer Graphikseite")# + +Eine Graphikseite besteht aus 8192 Bytes, von denen 7680 genutzt werden, 512 +sind somit (in der Graphikseite verstreut) ungenutzt. Jedes Byte besteht aus +einem Farbbit (Bit 7) und 7 angezeigten Graphikbits. Ein gesetztes Bit ent- +spricht einem sichtbaren Punkt auf dem Bildschirm. Das niederwertigste Bit +eines Bytes wird am weitesten links angezeigt. +Jede der 192 Graphikzeilen besteht also aus 40 Bytes. Jeweils 8 Graphikzei- +len sind zu Reihen zusammengefaát. Es gibt also 24 Reihen. Jede erste Gra- +phikzeile einer Reihe hat eine Anfangsadresse, die in folgender Tabelle +aufgelistet ist: + +#on("u")#Reihe Adresse Hex | Reihe Adresse Hex | Reihe Adresse Hex#off("u")# + 0 0 000 | 8 40 028 | 16 80 050 + 1 128 080 | 9 168 0A8 | 17 208 0D0 + 2 256 100 | 10 296 128 | 18 336 150 + 3 384 180 | 11 424 1A8 | 19 464 1D0 + 4 512 200 | 12 552 228 | 20 592 250 + 5 640 280 | 13 680 2A8 | 21 720 2D0 + 6 768 300 | 14 808 328 | 22 848 350 + 7 896 380 | 15 936 3A8 | 23 976 3D0 + +Um den Offset den n. Graphikzeile in einer Reihe zu finden kann man folgen- +de Tabelle benutzen: + +#on("u")#n Offset (Hex)#off("u")# +0 0 0000 +1 1024 0400 +2 2048 0800 +3 3072 0C00 +4 4096 1000 +5 5120 1400 +6 6144 1800 +7 7168 1C00 + +Beispiel: + Die Adresse des Punktes (123, 45) soll bestimmt werden. + 45 DIV 8 = 5, d.h. Y liegt in Reihe 5 mit Adresse 640 (Dezimal). 45 MOD 8 + = 5, d.h. Y liegt in der n=5. Graphikzeile von Reihe 5. Der + Y-Offset also 5120. + 123 DIV 7 = 17 d.h. X liegt im Byte mit X-Offset 17. + Die Adresse des Punktes ist also im Byte 17 + 5120 + 640 = 5777. + 123 MOD 7 = 4 d.h. Bit 4 in Byte 5777 ist der gesuchte Punkt. + + +#k("6.4.3", "Operationen auf den Graphikseiten")# + +Hier sollen nur die Operationen erl„utert werden, die nicht in andere Kate- +gorien (z.B. L”schen, Linien zeichnen etc.) passen. + +Es gibt ein universelles Kommando, mit dem zwei Graphikseiten invertiert, +kopiert, gemischt und miteinander logisch verknpft werden k”nnen. Ver„n- +dert wird bei diesem Kommando nur die Arbeitsseite. + +Das Kommando lautet + + #ib(1)# !#ie(1)# (Hex 1B 21 ) + + ist dabei ein Byteparameter mit dem Wertebereich 0 bis 15 und hat fol- +gende Bedeutung: + + Bedeutung +#linie ("16.2")# + 0 Keine Ver„nderung. Kopiert die Arbeitsseite in sich selbst (F„rbt die + Arbeitsseite allerdings mit der aktuellen Farbe/Helligkeit). + 1 Die Arbeitsseite wird invertiert. + 2 Mischt beide Seiten zusammen (OR Verknpfung). + 3 Mischt beide Seiten zusammen (OR) und invertiert das Ergebnis. + 6 Bildet den Durchschnitt beider Seiten (AND Verknpfung). + 7 Bildet den Durchschnitt beider Seite (AND) und invertiert das Ergebnis +10 Es sind die Punkte gesetzt, die in beiden Seiten verschieden sind (XOR + Verknpfung). +11 Es sind die Punkte gesetzt, die in beiden Seiten gleich sind (d.h. das + Inverse von =10). +14 Kopiert die andere Seite in die Arbeitsseite. +15 Kopiert das Inverse von der anderen Seite in die Arbeitsseite. + +Andere Werte fr wiederholen sich in der Tabelle. Die ganze Arbeitssei- +te hat nach der Operation die gew„hlte Farbe/Helligkeit. + + +#k("6.4.4", "Laden einer Graphikseite vom Host")# + +Graphikseiten k”nnen ganz oder teilweise vom Host geladen werden. Das k”n- +nen auf dem Terminal erstellte und dann an den Host gesendete (Teil-) +Graphiken sein, aber auch auf dem Host erstellte. In diesem Fall ist das +Kapitel 6.4.2 (Aufbau einer Graphikseite) interessant. + +Mit dem Kommando + + #ib(1)# /#ie(1)# + (Hex 1B 2F ...) + +kann eine Seite oder ein Teil einer Seite in die Arbeitsseite geladen wer- +den. , , , und sind Byteparameter (8 Bits). und + bilden zusammen die bin„re L„nge, d.h. die Anzahl der Datenbytes +, die die Graphik enthalten. Die L„nge kann von 0 bis Hex 2000 (dezi- +mal 8192) reichen. Die Adresse, durch und gebildet, darf von 0 bis +Hex 1FFF reichen. Zus„tzlich gilt, daá die Summe von L„nge und Adresse nicht +gr”áer als Hex 2000 sein darf, da sonst auáerhalb der Graphikseite geladen +wrde. In einem dieser Fehlerf„lle werden die folgenden Graphikdatenbytes +ignoriert. Die Datenbytes werden dann als Kommandos interpretiert, was zu +unvorhersehbaren Reaktionen des Terminals fhrt. + + +#k("6.4.5", "Graphik auf Diskette speichern/laden")# + +Um Graphikseiten, zum Besipiel fr Pr„sentationen, unabh„ngig vom Host auf +dem Bildschirm darstellen zu k”nnen, benutzt man das Kommando + + #ib(1)# S#ie(1)# (Hex 1B 53 ). + +Man kann bis zu 8 verschiedene Graphikseiten vorbereiten, auf Diskette spei- +chern und zu einem sp„teren Zeitpunkt wieder in das Terminal zurckladen. +Dieses Kommando wird auch verwendet, um eine Textseite auf Diskette zu +schreiben oder von Diskette zu lesen. ist ein Byteparameter mit dem +Wertebereich 0 bis 31, wobei die Bits folgendermaáen belegt sind: + +Bit 0..2 : "Fachnummer" der Graphikseite auf der Diskette (0 bs 7) +Bit 3 : Bei Graphikseiten immer 1 (Bei Textseiten 0) +Bit 4 : 0 heiát: die Graphikseite wird von der Diskette gelesen, + 1 heiát: die Graphikseite wird auf die Diskette geschrieben. + +Wird die Graphikseite auf die Diskette geschrieben, dann wird eine eventuell +schon in diesem "Fach" vorhandene Graphikseite berschrieben. + +Wie bei allen Graphikkommandos, bezieht sich dieses Kommando nicht unbedingt +auf die sichtbare Graphikseite, sondern auf die Arbeitsseite. + +Beispiele: + S liest die Graphikseite in Fach 0 in die Arbeitsseite. + S schreibt die Arbeitsseite in Fach 0 der Diskette. + +Da das Lesen einer Graphikseite von Diskette mit ca. 1.1 Sekunden, um eini- +ges schneller als der Datentransfer vom Host ist, sollte man bewegte Graphi- +ken auf Diskette vorbereiten und sie dann mit verschr„nkter Arbeits- und +Sichtbarkeitsseite anzeigen. +Z.B.: Seite 1 als Arbeitsseite w„hlen, Seite 0 als sichtbare Seite. Graphik + von Diskette laden (wird in Seite 1 (= Arbeitsseite) geladen) Seite 1 + als sichtbare Seite w„hlen, Seite 0 jetzt als Arbeitsseite w„hlen. Die + n„chste Graphikseite wird von der Diskette in die Seite 1 geladen etc. + Bei dieser Vorgehensweise scheinen šberg„nge kontinuierlich zu sein. + +Fr Insider: Eine Graphikseite belegt zwei Tracks (8k). Die 8 Graphikseiten + befinden sich auf den Tracks 10 bis 25 in aufsteigender Reihen- + folge. + + +#k("6.5", "Textdarstellung im Graphikmodus")# + +Nicht nur auf der 80-Zeichen Textseite k”nnen Buchstaben und Zeichen darge- +stellt werden, sondern auch auf den Graphikseiten. Die Aufl”sung ist zwar +nicht so groá wie auf der reinen Textseite, aber die Anzahl der verschiede- +nen Darstellungsm”glichkeiten ist sehr viel gr”áer. Fast alle Kommandos, die +in der Textseite angewandt werden k”nnen, haben in der Graphikseite die +gleiche Funktion. + +Textdarstellung in der Graphikseite ist haupts„chlich zum Beschriften von +Graphiken oder zum Drucken von šberschriften etc. vorgesehen. Da aber fast +alle Textkommandos (Delete/Insert Line/Character fehlt) auch im Graphikmo- +dus zur Verfgung stehen, kann man auch im Graphikmodus Textverarbeitung +oder Editor benutzen. + + +#k("6.5.1", "Zeichendarstellung")# + +Die normale Gr”áe eines Zeichens ist 6 x 10 Punkte (x * y), damit lassen +sich 46 x 19 Zeichen (874 Zeichen) voll auf dem Bildschirm darstellen. Wenn +die Gr”áe mit einem Kommando auf 5 x 8 Punkte verringert wird, dann lassen +sich 56 x 24 Zeichen (1344 Zeichen) auf dem Bildschirm darstellen. Komfor- +table Textverarbeitung l„át sich damit natrlich nicht machen, zumal die +Geschwindigkeit, mit der die Zeichen auf den Bildschirm geschrieben werden +gegenber der der reinen Textseite langsamer ist. + + +#k("6.5.1.1", "Zeichengr”áe und Schreibrichtung")# + +Die Zeichen k”nnen in verschiedenen Gr”áen und unter verschiedenen Winkeln +auf den Bildschirm geschrieben werden. Damit ist auch ein Schreiben von +rechts nach links mit auf dem Kopf stehenden Zeichen m”glich. +Bei normaler Schreibrichtung (waagerecht von links nach rechts) befindet +sich die linke untere Ecke eines Zeichens an der Position des Graphikcur- +sors. Nach dem Zeichnen des Zeichens befindet sich der Graphikcursor hinter +der rechten unteren Ecke des Zeichens. Da sich die Zeichen aus Vektoren +(Linien) zusammensetzen und nicht aus einer festen Punktmatrix, k”nnen sie +schnell beliebig gedreht und vergr”ssert (und verkleinert) werden. Der Dreh- +winkel ist wie bei allen Graphikwinkelangaben in 5 Grad Schritten anzugeben. +Die Zuordnung der Winkel zu den Parameterwerten oder ASCII-Zeichen ist im +Anhang A angegeben. + +Das Kommando + + #ib(1)# N#ie(1)# (Hex 1B 4E ) + +stellt Breite, H”he und Drehwinkel der Zeichen ein. Alle Parameter sind +Byteparameter mit dem Wertebereich 0 bis 255. Mit einem Parameter Hex 00 +kann der Defaultwert (Standardwert) fr den jeweiligen Parameter eingestellt +werden. + bezeichnet die Zeichenbreite in Punkten. Standardwert ist 6. + bezeichnet die Zeichenh”he in Punkten. Standardwert ist 10. + bezeichnet den Drehwinkel in 5 Grad Schritten. Standardwert ist 0. + +Einige ausgezeichnet Werte fr sind: + Richtung +#linie ("16.2")# + 0 Waagerecht von links nach rechts (Ost) + 9 Schr„g nach unten rechts (Sd-Ost) +18 Senkrecht von oben nach unten (Sd) +27 Schr„g nach unten links (Sd-West) +36 Waagerecht (auf dem Kopf stehend) von rechts nach links (West) +45 Schr„g nach oben links (Nord-West) +54 Senkrecht von unten nach oben (Nord) +63 Schr„g von nach oben rechts (Aufw„rts) (Nord-Ost) +72... Wie 0 ... + + +#k("6.5.1.2", "Dicke, Farbe etc.")# + +Buchstaben werden mit Vektoren (Linien) gezeichnet. Die gleichen Parameter, +die fr Striche eingestellt werden, wirken dann auch auf die Zeichen. M”g- +liche Parameter sind Farbe, Linientyp, Strichdicke und Bitverknpfung. Mit +dem Kommando + + #ib(1)# O 0#ie(1)# (Hex 1B 4F 30) + +werden alle diese Parameter auf Standardwerte zurckgesetzt. Die Standard- +werte sind in Kapitel 6.3 erl„utert. Die Beschreibung des Kommandos zur +Einstellung der Zeichenfarbe ist in Kapitel 6.3.2 beschrieben, das Einstel- +len der Zeichendicke in Kapitel 6.3.1, das Einstellen des Linientyps in +Kapitel 6.3.3 und das Einstellen der Bitverknpfung ist in Kapitel 6.3.4 +beschrieben. Auch fr die Zeichendarstellung k”nnen mehrere dieser Parame- +ter zugleich mit einem Kommando eingestellt werden. Das Multiparameterkom- +mando ist in Kapitel 6.3.5 beschrieben. + + +#k("6.5.1.3", "Zeichens„tze und Attribute")# + +Žhnlich wie bei der 80-Zeichen Textdarstellung k”nnen Zeichensatz und Text- +attribute eingestellt werden. Mit dem Kommando + + #ib(1)# z#ie(1)# (Hex 1B 7A ) + +kann einer der beiden Zeichens„tze USA oder GER (ASCII und Deutsch) gew„hlt +werden. Ein griechischer Zeichensatz ist unabh„ngig von beiden immer vor- +handen. + ist ein Byteparameter mit dem Wertebereich 0 bis 15, im Graphikmodus +sind aber nur die beiden folgende Werte sinnvoll: + +#on("u")# Zeichensatz Abweichende Zeichen#off("u")# + 2 Deutsch Ž ™ š „ ” á + 4 Ascii [ \ ] { | } ~ + +Auáerdem kann der Zeichensatz im ersten Feld der ersten Kommandozeile ein- +gestellt werden. Im amerikanischen Zeichensatz treten die deutschen Buch- +staben auáerdem im Bereich von 214 bis 219 und 251 auf. Der Graphikzeichen- +satz ist im Anhang abgebildet. + +Wie im Textmodus k”nnen Attribute mit dem Kommando + + #ib(1)# G#ie(1)# (Hex 1B 47 ) + +eingestellt werden. ist ein Byteparameter mit dem Wertebereich 0, 1, 4 +und 5. Die Werte von sind folgendermaáen zugeordnet: + +#on("u")# Bedeutung #off("u")# + 0 Normaler Text (sichtbar und aufrecht) + 1 Unsichtbarer Text (Nur der Cursor wird bewegt) + 4 Kursivschrift, die Zeichen werden schr„ggestellt + 5 Wie 1 (unsichtbarer Text) + +Das Kommando + + #ib(1)# )#ie(1)# (Hex 1B 29) + +hat wie im Textmodus die gleiche Bedeutung wie G 4. Damit wird im +Graphikmodus die Kursivschrift eingeschaltet. Mit dem Kommando + + #ib(1)# (#ie(1)# (hex 1B 28) + +wird die Kursivschrift wieder ausgeschaltet. Im Textmodus invers hervorge- +hobene Textstellen werden im Graphikmodus also durch Kursivschrift hervor- +gehoben. +Steht rechts neben der Zeichenspalte mit einem Kursivzeichen ein nicht kur- +sives Zeichen, dann wird das rechte Zeichen m”glicherweise etwas berschrie- +ben, da es in den oberen Teil des Kursivzeichens hineinragt. Das kann ver- +mieden werden, wenn nach dem Ausschalten der Kursivschrift ein Leerzeichen +ausgegeben wird. + + +#k("6.5.1.4", "Zeichen berschreiben")# + +Im 80-Zeichen Textmodus kann man Zeichen einfach bereinandertippen, das +zweite Zeichen ersetzt dann das erste. Im Graphikmodus sollen Texte auch mit +in eine Zeichnung geschrieben werden k”nnen, ohne daá Teile von Linien even- +tuell gel”scht werden. Dieser Modus bringt auáerdem eine etwas gr”áere +Schreibgeschwindigkeit mit sich. Es ist aber auch m”glich, daá die Fl„che, +in die das Zeichen geschrieben werden soll, vorher gel”scht wird, um ein +sauberes Schriftbild zu erzielen. Mit dem Kommando + + #ib(1)# &#ie(1)# (Hex 1B 26) + +kann man das vorherige L”schen einschalten, mit dem Kommando + + #ib(1)# '#ie(1)# (Hex 1B 27) + +wird der Modus des šberschreibens ausgeschaltet. + +Bei Kursivzeichen wird eine rautenf”rmige Fl„che gel”scht oder gefllt (wenn +Bitverknpfung AND eingeschaltet ist). Bei normalen Zeichen wird eine re- +chteckige Fl„che, der mit #ib(1)# N#ie(1)# eingestellten Breite und H”he, gel”scht +oder gefllt. Zu beachten ist, daá das L”schen/Fllen nur bei waagerechter +Schreibrichtung von links nach rechts funktioniert. + +Da die Gr”áe der Zeichen in weiten Grenzen mit N eingestellt werden +kann, ist es auch m”glich mit dem durch & eingeschalteten Ersetzungs- +modus schnell rechteckige Fl„chen zu fllen oder zu l”schen, wenn nicht auf +das sp„ter beschriebene Fllkommando fr beliebige Fl„chen zurckgegriffen +werden soll. Dazu schaltet man mit dem Kommando O 4 1 die Bitverkn- +pfung AND (fr Fllen) ein und gibt dann einfach ein Leerzeichen aus, das +dann invertiert dargestellt wird. + + +#k("6.5.2", "Textkommandos im Graphikmodus")# + +Fast alle Textkommandos des 80-Zeichen Textmodus wirken auch im Graphikmo- +dus. Einige Kommandos, wie Zeichen senden, Zeile senden, Cursorposition +senden, haben im Graphikmodus andere Funktionen und haben deshalb andere +Escape-Sequenzen. Textkommandos, die nicht im Graphikmodus vorhanden sind: + I (Backtab), j (Reverse Linefeed), E (Insert Line), +Q (Insert Character), R (Delete Line), W (Delete Character). + + +#k("6.5.2.1", "Die Cursorpositionierung")# + +Die Cursorpositionierungskommandos (UP, DOWN, LEFT, RIGHT) wirken im Gra- +phikmodus in die aktuelle Schreibrichtung. Beispiel: Wenn als Schreibwinkel +180 Grad eingestellt wurde (Winkel 36, also von rechts nach links auf dem +Kopf schreiben), dann muá man, um einen Backspace (d.h. ein Zeichen zurck) +auszufhren, nicht sondern wie bei normaler Schreibrichtung blich, + drcken. Die vier Cursorsteuertasten funktionieren fr beliebige +Schreibrichtungen. Alle anderen Steuertasten beziehen sich immer auf waage- +rechte Schreibrichtung von links nach rechts. + +Alle Steuertasten bercksichtigen die Zeichengr”áe (Breite und H”he). Auch +die Graphikseite wird am Ende der letzten Zeile um soviele Graphikzeilen +gescrollt, wie ein Zeichen hoch ist. + +Folgende Steuerkommandos/Tasten wirken im Graphikmodus: + +Basis-Taste Apple-Taste Hex-Code Bedeutung +#linie ("16.2")# +#ib(1)##ie(1)# 09 Der Cursor wird an die n„chste (re- + chte) Tabulatorposition gesetzt. + Tabulatorpositionen sind alle 8 Spal- + ten (wie im Textmodus). Liegt die + n„chste Tabulatorposition auáerhalb + des sichtbaren Bereichs, dann steht + der Cursor jetzt da. + +#ib(1)##ie(1)# - Kommandozeile aktivieren. + Einzelheiten zur Kommandozeile siehe + Abschnitt 3.: Die Kommandozeilen. + +#ib(1)##ie(1)# 18 u.a. Kommandozeile verlassen. + +#ib(1)##ie(1)# 0D Zum Zeilenanfang ohne Zeilenvorschub. + Der Cursor steht dann in der ersten + Spalte der Zeile. + +#ib(1)##ie(1)# 8D Zum Anfang der n„chsten Zeile. Falls + der Cursor in der letzten sichtbaren + Bildschirmzeile war, wird der Bild- + schirminhalt entweder nach oben ge- + scrollt (SCROLL) oder in Homeposition + gebracht (PAGE). + +#ib(1)##ie(1)# 8B/0B Cursor eine Zeile h”her (bzw. ber + die Zeile). War der Cursor in der + ersten sichtbaren Bildschirmzeile, + dann steht er jetzt im unsichtbaren + Bereich. + +#ib(1)##ie(1)# 8A/0A Cursor eine Zeile tiefer (bzw. "un- + ter" die Zeile). War der Cursor in + der letzten sichtbaren Zeile, dann + wird der Inhalt des Graphikbild- + schirms nach oben gescrollt, d.h. die + obersten Zeilen werden gel”scht (im + SCROLL-Modus) oder der Cursor in die + erste Zeile gesetzt (im PAGE-Modus). + +#ib(1)##ie(1)# 16 Cursor eine Zeile tiefer (bzw. "un- + ter" die Zeile). War der Cursor in + der letzten Zeile, dann „ndert er + seine Position nicht. Die Spalte + „ndert sich nicht. + +#ib(1)##ie(1)# 88/08 Cursor eine Spalte nach links (bzw. + entegegen der Schreibrichtung). War + der Cursor in der ersten sichtbaren + Bildschirmspalte, dann ist er jetzt + unsichtbar "links" davon. + +#ib(1)##ie(1)# - 95 Cursor eine Spalte nach rechts (bzw. + in Schreibrichtung). War der Cursor + in der letzten sichtbaren Spalte, + dann befindet er sich jetzt auáer- + halb des Bildschirms. Im Gegensatz + zum Textmodus wird kein Linefeed oder + Scroll ausgefhrt. + +#ib(1)##ie(1)# C0 Der Cursor wird in die linke obere + Bildschirmecke gebracht (Homeposi- + tion). + +#ib(1)##ie(1)# D0 Bildschirm l”schen und Cursor Home. + +#ib(1)##ie(1)# 7F Dieses Zeichen wird auf dem Bild- + schirm nicht dargestellt. Der Host + interpretiert es in der Regel als + Zeichenl”schbefehl. + +#ib(1)##ie(1)# 08 Cursor eine Spalte nach links (bzw. + entgegen der Schreibrichtung). Die + Funktion ist mit der von iden- + tisch. + +#ib(1)##ie(1)# 15 Apple: Cursor eine Spalte nach re- + chts (bzw. in Schreibrichtung). Die + Funktion ist mit der von + identisch. + +#ib(1)##ie(1)# 1B Leitet eine Escape-Sequenz ein. + +#ib(1)##ie(1)# - Local/Online umschalten + +#ib(1)##ie(1)# '00' Sendet V24-Break (Hexcode 00 mit + Rahmenfehler). Als Rahmenfehler wird + das Fehlen des oder der Stopbits + bezeichnet (Stopbitpegel ist norma- + lerweise 1, bei Break dagegen 0). + +Unbelegte Funktionstasten erzeugen Graphikzeichen, die im Anhang A nachge- +sehen werden k”nnen. + + +#k("6.5.2.2", "L”schbefehle")# + +Das Kommando (Clear to End Of Line) + + #ib(1)# T#ie(1)# (Hex 1B 54) + +l”scht ab der aktuellen Cursorposition bis zum Zeilenende. Die H”he des +gel”schten Balkens entspricht der Buchstabenh”he. Der Balken wird unabh„n- +gig von der Bitverknpfung immer gel”scht. Der Balken wird unabh„ngig von +der Schreibrichtung immer waagerecht gel”scht. + +Das Kommando (Clear to End Of Page) + + #ib(1)# Y#ie(1)# (Hex 1B 59) + +l”scht den Graphikbildschirm von der aktuellen Cursorposition an bis zum +Bildschirmende. Auch dieses Kommando l”scht unabh„ngig von der gew„hlten +Bitverknpfung und Schreibrichtung immer waagerecht. + +Die Kommandos + + #ib(1)# *#ie(1)# (Hex 1B 2A) + #ib(1)# ,#ie(1)# (Hex 1B 2C) + #ib(1)# +#ie(1)# (Hex 1B 2B) + #ib(1)# :#ie(1)# (Hex 1B 3A) + #ib(1)##ie(1)# (Hex 1A) + +l”schen den Bildschirm und bringen den Graphikcursor in Homeposition, d.h. +eine Buchstabenh”he unter dem oberen Bildschirmrand. + +Das Kommando + + #ib(1)# y#ie(1)# (Hex 1B 79) + +l”scht den Bildschirm und bringt den Graphikcursor in die linke untere Ecke, +d.h. den Ursprung des Koordinatensystems. + + +#k("6.6", "Die Graphikkommandos")# + + +#k("6.6.1", "Draw's und Move's")# + +Draw's sind Zeichenbefehle, die eine Linie zeichnen und den Cursor an den +Endpunkt der Linie positionieren. Move's positionieren nur den Cursor und +zeichnen nicht. Bei allen Draw's ist der Anfangspunkt der Linie die aktuel- +le Cursorposition. Die Endposition kann relativ, absolut oder mit einem +relativen Winkel angegeben werden. Der Befehl zum Setzen/L”schen eines Punk- +tes wurde mit in diese Befehlskategorie aufgenommen. + + +#k("6.6.1.1", "Punkt setzen")# + +Der Befehl zum Setzen eines Graphikpunktes ist ein absoluter Befehl, d.h. +die Koordinaten des Punktes folgen dem Kommando. Die Position des Graphik- +cursors wird durch diesen Befehl nicht ver„ndert. + +Das Kommando + + #ib(1)# m#ie(1)# (Hex 1B 6D ) + +setzt einen Punkt an die Position x/y, wenn diese innerhalb des sichtbaren +Bereichs liegt. sind dezimale oder bin„re Koordinaten. Das Aussehen +des Punktes kann durch Farbe/Helligkeit oder Bitverknpfung festgelegt wer- +den. Mit einer AND-Bitverknpfung wird der angegebene Punkt gel”scht, mit +einer OR oder COPY Bitverknpfung wird der angegebene Punkt gesetzt, mit +einer XOR Bitverknpfung wird sein Zustand umgedreht (invertiert). +Soll ein dicker Punkt gezeichnet werden, dann kann man den (relativen) +Draw-Befehl r 0, 0; benutzen, der an die Position des Graphikcursors, +einen Punkt der eingestellten Dicke zeichnet. + + +#k("6.6.1.2", "Move-Befehle")# + +Den Move-Befehl gibt es in zwei Versionen, einer relativen und einer abso- +luten. Das Kommando fr einen absoluten Move lautet + + #ib(1)# v#ie(1)# (Hex 1B 76 ) + +Dabei sind dezimale oder bin„re Koordinaten, die die neue Position +des Graphikcursors bezeichnen. Diese Position muá nicht im sichtbaren Be- +reich liegen, sondern kann auch auáerhalb des Fensters liegen. Der Wertebe- +reich von und ist -32768 bis 32767. + +Das Kommando fr den relativen Move-Befehl lautet + + #ib(1)# q#ie(1)# (Hex 1B 71 ) + +Bei diesem Befehl werden die Werte von und , die auch den gesamten +Wertebereich von -32768 bis 32767 berstreichen drfen, zu den Koordinaten +des Graphikcursors addiert. Auch hier darf die neue Position des Graphik- +cursors auáerhalb des sichtbaren Bereichs liegen. + +Die Move-Befehle setzen auáerdem das Bitmuster fr den Linientyp wieder auf +den Startwert zurck, damit der n„chste Draw-Befehl auch mit einem Punkt +beginnt. + + +#k("6.6.1.3", "Draw-Befehle")# + +Ebenso wie den Move-Befehl gibt es auch den Draw-Befehl in zwei Versionen, +einer relativen und einer absoluten. Das Kommando fr einen absoluten Draw +lautet + + #ib(1)# w#ie(1)# (Hex 1B 77 ) + +Dabei sind dezimale oder bin„re Koordinaten, die die Endposition der +Linie bezeichnen. Diese Position muá nicht im sichtbaren Bereich liegen, +sondern kann auch auáerhalb des Fensters liegen. Der unsichtbare Teil der +Linie wird dann "geclippt". Der Wertebereich von und ist -32768 bis +32767. + +Das Kommando fr den relativen Draw-Befehl lautet + + #ib(1)# r#ie(1)# (Hex 1B 72 ) + +Bei diesem Befehl werden die Werte von und , die auch den gesamten +Wertebereich von -32768 bis 32767 berstreichen drfen, zu den Koordinaten +des Graphikcursors addiert, die dann die Endposition der Linie bilden. Auch +hier darf die Endposition der Linie auáerhalb des sichtbaren Bereichs lie- +gen. + + +#k("6.6.1.4", "Turtle-Graphik")# + +Turtle-Graphik (Schildkr”ten-Graphik, obwohl hier keine Schildkr”te sicht- +bar ist) wird zur Erzeugung von "rekursiven" Graphiken, die mit L„ngen und +Winkelangaben, statt mit x/y-Koordinaten, arbeiten ben”tigt. Man stellt sich +dazu eine Schildkr”te vor, die auf ihrem Weg ber den Bildschirm eine sicht- +bare Spur zurcklassen kann (aber nicht muá). Die Schildkr”te kann einen Weg +bestimmter L„nge in ihre Blickrichtung gehen und bleibt dann stehen. Auáer- +dem kann sie sich nach links oder rechts drehen, d.h. ihre Blickrichtung +„ndert sich. Alles was man dazu braucht, ist ein Befehl, der die Richtung +der Schildkr”te ver„ndern kann und dann einen Weg bestimmter L„nge in dieser +Richtung zurcklegt. Auáerdem wird noch ein Befehl ben”tigt, der das "Spur- +verhalten" der Schildkr”te „ndert, also von "Spur sichtbar" auf "Spur un- +sichtbar" umschaltet und umgekehrt. Natrlich ist die Zeichengeschwindigkeit +nicht mit der Fortbewegungsgeschwindigkeit von Schildkr”ten zu vergleichen. +Das erste Kommando lautet + + #ib(1)# n#ie(1)# (Hex 1B 6E ) + + und sind dezimale oder bin„re Parameter. ist die L„nge der Spur +mit einem Wertebereich von 0 bis 511. ist der relative Drehwinkel der +Schildkr”te, also die Žnderung von der ursprnglichen Blickrichtung aus. +berstreicht den positiven und negativen Winkelbereich (0..71 entsprechen 0 +bis 355 in 5 Grad Schritten. -1 entspricht z.B. 355 Grad). + +Mit dem Kommando + + #ib(1)# o#ie(1)# (Hex 1B 6F) + +kann von 'Draw' einer Spur auf 'Move' umgeschaltet werden und umgekehrt. + +Um die Sichtbarkeit der Spur am Programmamfang auf einen definierten Wert zu +setzen, kann man das Kommando + + #ib(1)# O 8#ie(1)# (Hex 1B 4F 38 ) + +benutzen. ist ein Byteparameter mit dem Wertebereich 0 bis 3. + +#on("u")#Bit 0 hat folgende Bedeutung: #off("u")# + 0 Pendown. Die Schildkr”te hinterl„át eine sichtbare Spur + 1 Penup. Die Schildkr”te hinterl„át keine Spur + +#on("u")#Bit 1 hat folgende Bedeutung: #off("u")# + 0 Drawer. Es wird eine weiáe Linie gezeichnet. + 1 Eraser. Es wird eine schwarze Linie gezeichnet (gel”scht) + + +Mit dem Kommando + + #ib(1)# O 9#ie(1)# (Hex 1B 4F 39) + +wird die Turtle-Graphik initialisiert. Dieses Kommando muá nicht aufgerufen +werden bevor die Turtle-Graphik benutzt wird, sollte aber nach M”glichkeit +am Anfang eines Turtle-Graphik-Programmes benutzt werden. Das Kommando setzt +die Schildkr”te in die Mitte des Bildschirms (140, 96) mit Blickrichtung +nach oben. Der Drawer wird eingeschaltet (zeichnen) und eine sichtbare Linie +wird voreingestellt (Pendown). + + +#k("6.6.2", "Komplexere Zeichenkommandos")# + +Auáer den Kommandos zum Zeichnen von Linien und zum Bewegen des Graphikcur- +sors gibt es noch verschiedene andere Zeichenkommandos. + + +#k("6.6.2.1", "Kreise und Kreissegmente")# + +Der Mittelpunkt eines Kreises liegt immer an der aktuellen Cursorposition. +Der Radius eines Kreises ist in weiten Grenzen von 0 bis ber 30000 Punkten +w„hlbar. Clipping wird ausserhalb des Bildschirmrandes durchgefhrt. Ein +Kreis kann in 8 Segmente unterteilt werden, von denen alle oder nur einzel- +ne gezeichnet werden k”nnen. Damit ist es dann auch m”glich, Halb- oder +Viertelkreise zu Zeichnen. + +Mit dem Kommando + + #ib(1)# K#ie(1)# (Hex 1B 4B ) + +wird ein Kreis mit dem Radius um die aktuelle Cursorposition gezeichnet +(relative Kreise). legt fest, welche Segmente gezeichnet werden sollen. + sind dezimale oder bin„re Parameter. hat den Wertebereich von 0 +bis 255. +Jedes Bit in ist einem Kreissegment zugeordnet. Ist das Bit gesetzt (1), +dann wird das zugeh”rige Segment gezeichnet. Der Wert 0 entspricht dem Wert +255 (der ganze Kreis wird gezeichnet), ist aber etwas schneller, da keine +Abfrage der einzelnen Bits durchgefhrt wird. + +Die Segmente sind folgendermaáen numeriert: + + 7 0 + 6 1 + 5 2 + 4 3 + +Beispiele fr : + +#on("u")# Bedeutung #off("u")# + 0 Zeichnet einen ganzen Kreis + 15 Zeichnet einen links offenen Halbkreis +240 Zeichnet einen rechts offenen Halbkreis +195 Zeichnet einen unten offenen Halbkreis + 60 Zeichnet einen oben offenen Halbkreis + 3 Zeichnet ein Kreisviertel rechts oben + 12 Zeichnet ein Kreisviertel rechts unten + 48 Zeichnet ein Kreisviertel links unten +192 Zeichnet ein Kreisviertel links oben +etc. + +Das Aussehen von Kreisen kann durch die Parameter Farbe/Helligkeit und die +Bitverknpfung ver„ndert werden. Der Linientyp (Punkt-, Strichlinie) und die +Strickdicke haben keinen Einfluá, d.h. der Kreis wird immer mit durchgehen- +der Linie und einfacher Dicke gezeichnet. Sollen diese beiden Parameter auch +ver„ndert werden, sollte man den Befehl s fr Ellipsenb”gen verwenden. + + +#k("6.6.2.2", "Rechtecke")# + +Rechtecke werden ebenso wie Kreise relativ gezeichnet, d.h. die aktuelle +Cursorposition bildet eine Ecke des Rechtecks. Die Seiten des Rechtecks +liegen parallel zur X- und Y-Achse, gedrehte Rechtecke k”nnen aber aus 4 +relativen Draw-Befehlen zusammengesetzt werden. + +Das Kommando + + #ib(1)# J#ie(1)# (Hex 1B 4A ) + +zeichnet ein leeres Rechteck (Rahmen) an der aktuellen Cursorposition. sind dezimale oder bin„re Parameter. ist die Breite des Rechtecks +und kann den ganzen Wertebereich von -32768 bis 32767 berstreichen, ist +die H”he des Rechtecks und kann ebenfalls diesen Wertebereich berstreichen. +Je nach Vorzeichen von und wird das Rechteck links/ rechts und +oben/unten von der aktuelle Cursorposition gezeichnet. + + Cursorposition bildet die Ecke + + + unten links + + - oben links + - + unten rechts + - - oben rechts + + +#k("6.6.2.3", "B”gen und Ellipsen")# + +Um die Zeichengeschwindigkeit eines Kreises zu vergr”áern, wurde ein sepa- +rater Befehl fr Kreise eingefhrt (6.6.2.1). Da der Kreis ein Sonderfall +der Ellipse ist, kann man das in diesem Abschnitt beschriebene Kommando auch +benutzen, um Kreise mit anderen als den unter 6.6.2.1 beschriebenen Segmen- +ten oder Parametern (Dicke, Strichtyp) zu Zeichnen. + +Das Kommando + + #ib(1)# s#ie(1)# (Hex 1B 73 ...) + +zeichnet um die aktuelle Cursorposition (also relativ) einen Ellipsenbogen +mit Radius in X-Richtung und Radius in Y-Richtung, ausgehend vom +Anfangswinkel im Uhrzeigersinn, bis zum Endwinkel . Der Winkel 0 +Grad ist dabei oben (Norden). + +Alle Parameter sind dezimale oder bin„re Parameter. und haben den +Wertebereich von 0 bis 255, wobei eine ganze Ellipse einem Anfangswinkel von +0 und einem Endwinkel von 72 entspricht. Die Winkelangaben sind in 5 Grad +Schritten und k”nnen Anhang A entnommen werden.. und drfen den +vollen Wertebereich von -32768 bis 32767 berstreichen. + + +#k("6.6.2.4", "Gefllte Fl„chen")# + +Rechteckige oder rautenf”rmige Fl„chen k”nnen, wie in Abschnitt 6.5.1.4 +beschrieben, schnell gefllt werden. Fr beliebig geformte Fl„chen kann das +Kommando + + #ib(1)# |#ie(1)# (Hex 1B 7C ) + +benutzt werden. Dies ist ein relatives Kommando, da um die aktuelle Cursor- +position herum gefllt wird. ist ein Byteparameter mit dem Wertebereich +0 bis 15, der die Nummer des Musters fr die Fllung angibt. Der Fill-Befehl +arbeitet auf der aktuellen Arbeitsseite und fllt eine sichtbar begrenzte +Fl„che mit einem angegebenen Muster aus. + +Ist die Bitverknpfung OR eingestellt darf der Cursor nicht auf einem weiáen +Punkt stehen und die Fl„che muá von einer durchgehenden weiáen Linie be- +grenzt sein. +Ist die Bitverknpfung AND eingestellt, darf der Cursor nicht auf einem +schwarzen Punkt stehen und die Fl„che muá von einer durchgehenden schwarzen +Linie begrenzt sein. + +Auáer den Parametern Bitverknpfung und Helligkeit/Farbe werden keine be- +rcksichtigt. + +Bei sehr komplex geformten Figuren kann der Fall eintreten, daá die Fl„che +nicht ganz gefllt ist. Dies liegt daran, daá intern ein zu gr”áer Spei- +cherplatz zum Merken von Rcksprungcursorpositionen ben”tigt wird (Stack- +šberlauf). In diesem Fall sollte man den Cursor nocheinmal auf die nicht +gefllte Fl„che setzen und das Kommando erneut geben. + + kann folgende Werte annehmen (Werte Hexadezimal angegeben 0..F): + Bedeutung +#linie ("16.2")# + 0 Fl„che ganz gefllt + 1 Fl„che halb gefllt (grau) + 2 Jede 4. Zeile wird durchgezogen + 3 Jede 2. Zeile wird durchgezogen + 4 Jede 4. Spalte wird durchgezogen + 5 Jede 2. Spalte wird durchgezogen + 6 Jede 4. Zeile und jede 4. Spalte wird durchgezogen (grobes Raster) + 7 Jede 2. zeile und jede 2. Spalte wird durchgezogen (feines Raster) + 8 Schraffur von links unten nach rechts oben + 9 Schraffur von links oben nach rechts unten + A Schr„ges Raster (Links- und Rechtsschraffur) + B Feines Funktraster(jeder 2.Punkt in x- und y-Richtung wird gesetzt) + C Mauerwerk + D Feines Netzgeflecht + E Feine Zickzacklinie + F Benutzerdefinierbares Muster. Default: Grobe Zickzacklinie + +Ist die AND-Bitverknpfung eingeschaltet, dann sind die Punkte schwarz und +weiá in den Mustern vertauscht und in der obigen Tabelle sind die Bezeich- +nungen 'gefllt' und 'gel”scht' auszutauschen. + + +#k("6.6.2.4.1", "Definition des Musters")# + +Das benutzerdefinierbare Muster des Fill-Befehls (Muster 15) kann mit dem +Kommando + + #ib(1)# O :#ie(1)# (Hex 1B 4F 3A ) + +eingestellt werden. Das Defaultmuster wird dabei berschrieben, das neu +eingestellte Muster allerdings nicht beim Setup mitgesichert. + sind 8 Byteparameter mit dem gesamten Wertebereich 0 bis 255. Das +erste Byte wird im Fllmuster in Richtung der niedrigeren y-Positionen dar- +gestellt, das niederwertigste Bit jedes Bytes in Richtung der niedrigeren +x-Positionen. + + +#k("6.7", "Graphikdaten zum Host")# + +Bisher wurden nur Kommandos beschrieben, die der Host an das Terminal sen- +den kann. Damit der Host ber den Status des Terminals informiert werden +kann, sind auch Kommandos vorhanden, die Daten an den Host senden. Der Host +kann auch ganze Graphikseiten anfordern, so daá die auf dem Terminal er- +zeugten Graphiken nach dem Ausschalten nicht verloren sind, sondern vom Host +gespeichert werden k”nnen. + + +#k("6.7.1", "Graphikseiten zum Host")# + +Graphikseiten k”nnen ganz oder teilweise bertragen werden. Da ein angefor- +dertes Datenpaket immer ganz bertragen wird, sollte der Host, wenn keine +Fluákontrolle eingeschaltet ist, nur so groáe Bl”cke anfordern, die er puf- +fern kann (z.B. 256 Bytes). Selektives Lesen von Graphikseiten kann auch +verwendet werden, um Teile einer Graphik vom Host (und nicht vom Terminal) +ver„ndern zu lassen. Mit dem Kommando / ... kann der modifizierte Teil +dann wieder an das Terminal zurckgesendet werden. Zum Aufbau der Graphik- +seite findet man in Kapitel 6.4.2 Informationen. + +Mit dem Kommando + + #ib(1)# \#ie(1)# (Hex 1B 5C ...) + +kann eine Seite oder ein Teil einer Seite in an den Host gesendet werden. +, , und sind Byteparameter (8 Bits). und bilden +zusammen die bin„re L„nge, d.h. die Anzahl der Datenbytes, die zum Host +gesendet werden. Die L„nge kann von 0 bis Hex 2000 (dezimal 8192) reichen. +Die Adresse durch und gebildet, darf von 0 bis Hex 1FFF reichen. +Zus„tzlich gilt, daá die Summe von L„nge und Adresse nicht gr”áer als Hex +2000 sein darf, da sich die Endadresse dann ausserhalb der Graphikseite +befindet. In diesem Fehlerfall werden keine Daten gesendet. + + +#k("6.7.2", "Cursorposition zum Host")# + +Da die Graphikcursorposition einen anderen Wertebereich berstreicht als die +Position des Textcursors, wurde zum Senden der Graphikcursorposition ein +weiteres Kommando eingefhrt. Pro Koordinate werden dabei 2 Bytes, zusammen +also 4 Bytes, gesendet. Mit dem Kommando + + #ib(1)# ;#ie(1)# (Hex 1B 3B) + +kann der Host diese 4 Bytes anfordern. Die Reihenfolge der Bytes ist + . Im Gegensatz zu ? (fr die Textcursorposi- +tion) wird auch kein abschlieáendes gesendet. + + +#k("6.7.3", "Einzelne Bits zum Host")# + +Auáer ganzen Graphikseiten oder Bl”cken daraus, kann der Host auch einzelne +Bytes oder Bits selektieren und empfangen. Dazu stehen zwei Kommandos zur +Verfgung. Mit dem Kommando + + #ib(1)# _#ie(1)# (Hex 1B 5F) + +kann das Byte angefordert werden, in dem sich der Graphikcursor gerade be- +findet. Das Bit 7 ist das Farb- oder Helligkeitsbit, das Bit (xpos MOD 7) +ist das Bit, das durch den Graphikcursor addressiert wird. Wenn der Cursor +auáerhalb des sichtbaren Bereichs ist, wird ein Byte Hex 00 geliefert. + +Mit dem Kommando + + #ib(1)# -#ie(1)# (Hex 1B 2D) + +kann das Bit, daá durch die Graphikcursorposition addressiert wird, abge- +fragt werden. Dieses Kommando liefert ein Byte, in dem die Bits folgende +Bedeutung haben: + +#on("u")#Bit 0 Dezimal Bedeutung #off("u")# + 0 0 Das adressierte Bit ist nicht gesetzt + 1 1 Das adressierte Bit ist gesetzt + +#on("u")#Bit 1 Dezimal Bedeutung #off("u")# + 0 0 Die Farbe ist violett/dunkel + 1 2 Die Farbe ist gelb/hell + +Bit 2 Dezimal Bedeutung +#linie ("16.2")# + 0 0 Der Graphikcursor ist innerhalb des sichtabren Bereichs + 1 4 Der Graphikcursor ist auáerhalb des sichtbaren Bereichs. + Bit 0 und Bit 1 sind dann 0. + +Bit 4 und Bit 5 sind immer 1. Es werden also die ASCII-Ziffern "0" bis "4" +geliefert. + + +#k("6.7.4", "Parameter zum Host")# + +Die eingestellten Draw-Parameter k”nnen auch abgefragt werden. Dazu exi- +stieren zwei Kommandos. Mit dem Kommando + + #ib(1)# 4#ie(1)# (Hex 1B 34) + +k”nnen die Nummer der sichtbaren und der Arbeitsseite, im gleichen Format +wie zum Einstellen der Seiten mit dem Kommando #ib(1)# O 7#ie(1)# , angefordert +werden. Es werden ASCII-Zeichen von "0" bis "?" geliefert. Die Bits 0 bis 2 +sind folgendermaáen zugeordnet: + +#on("u")#Bit 0 Bedeutung #off("u")# + 0 Sichtbar ist Seite 0 + 1 Sichtbar ist Seite 1 + +#on("u")#Bit 1 Bedeutung #off("u")# + 0 Arbeitsseite ist Seite 0 + 1 Arbeitsseite ist Seite 1 + +#on("u")#Bit 2 Bedeutung #off("u")# + 0 Nur Graphik eingeschaltet + 1 In den letzten 32 Graphikzeilen + sind 4 Textzeilen eingeblendet + +#on("u")#Bit 3 Bedeutung #off("u")# + 0 Der Graphikmodus ist eingeschaltet + 1 Der Textmodus ist eingeschaltet + +Sinnvoll sind die Werte der Bits 0 bis 2 nur dann, wenn Bit 3 = 0 ist. + + +Mit dem Kommando + + #ib(1)# 5#ie(1)# (Hex 1B 35) + +k”nnen die Linienparameter abgefragt werden. Es wird ein Byte mit dem Wer- +tebereich von 1 bis 127 geliefert. Die einzelnen Bits sind folgendermaáen +zugeordnet: + +Bit Bedeutung +#linie("16.2")# +Bit 0..3 : Strichdicke +Bit 4..5 : Bitverknpfung (0 = OR, 16 = AND, 32 = XOR, 48 = COPY) +Bit 6 : Aktuelle Farbe (0 = Violett/dunkel, 1 = Gelb/hell) + +Die Bitbelegung entspricht der des Parameters des Kommandos #ib(1)# O 5#ie(1)# . + + +#k("6.8", "Graphikhardcopy")# + +Wie von der Textseite kann auch von den Graphikseiten ein Ausdruck angefer- +tigt werden. Dabei k”nnen keine verschiedene Helligkeitsstufen oder Farben +dargestellt werden. + + +#k("6.8.1", "Der Druckertreiber")# + +Da das Ein- und Ausschalten des Graphikmodus nicht auf allen Druckern durch +gleiche Kommandos erreicht werden kann, muá das Terminal an den vorhandenen +Drucker angepaát werden. Defaultm„áig werden die Epson-Modelle ab RX80 auf- +w„rts, sowie kompatible (IBM, Panasonic etc.) untersttzt. Die Anpassung +wird in diesem Abschnitt beschrieben. + +Mit dem Kommando + + #ib(1)# ~#ie(1)# (Hex 1B 7E ) + +k”nnen Kommandosequenzen eingestellt werden, die folgende Aufgaben haben: + + Default (Hex) Aufgabe +#linie ("16.2")# + 0 0D Einleiten der gesamten Hardcopy (Waagenrcklauf) + 1 1B 2A 04 18 01 Einschalten des Graphikmodus. Es folgen 280 Graphikby- + tes (jeweils 8 Bit) + 2 0D 1B 4A 17 Ausschalten des Graphikmodus. Zeilenvorschub ohne Zwi- + schenraum (Zeilenabstand ca. 8 Punkte) und Waagenrck- + lauf. + 3 Nichts Dieses Kommando wird nach der kompletten Hardcopy zum + Drucker gesendet. + +Wenn doppelte Punktbreite eingeschaltet ist, oder zwei Seiten nebeneinander +gedruckt werden, wird die Kommandosequenz 1 auch mehrmals in einer Zeile +gegeben. + + ist dabei ein Byteparameter mit dem Wertebereich von 0 bis 3. ist +eine Folge von bis zu 16 Bytes. Das erste dieser 16 Bytes ist ein L„ngenby- +te, das die L„nge der Kommandosequenz (oder die Anzahl der noch folgenden +Bytes) angibt. Fr die nach dem L„ngenbyte folgenden Bytes sind alle Werte +von 0 bis 255 erlaubt. + +Die Druckertreiberstrings (Kommandosequenzen) werden beim Setup in der Kom- +mandozeile auch mit abgespeichert, so daá sie nur einmal (wenn berhaupt) +und dann nie wieder eingestellt werden máen. + + +#k("6.8.2", "Die Hardcopyparameter")# + +Im Gegensatz zur Hardcopy einer Textseite kann das Aussehen einer Graphik +beim Ausdruck noch ver„ndert werden. Das Kommando + + #ib(1)# ^#ie(1)# (Hex 1B 5E ) + +druckt eine Hardcopy mit dem Parameter . ist ein Byteparameter mit +dem Wertebereich von 0 bis 15. Jedes Bit in legt eine Darstellungsweise +fest. Die Bits haben folgende Bedeutung: + +Invertieren: +Bit 0 Dezimal Bedeutung +#linie("16.2")# + 0 0 Helle Punkte auf dem Bildschirm werden auf dem Drucker schwarz + gedruckt, dunkle Punkte bleiben beim Ausdruck weiá. + 1 1 Die Graphik wird invertiert, d.h. Ein dunkler Bildhintergrund + bleibt auf dem Drucker dunkel (schwarz). + +Doppelte Breite: +Bit 1 Dezimal Bedeutung +#linie("16.2")# + 0 0 Jeder Bildschirmpunkt wird in normaler Breite gedruckt. Es + werden also 280 Punkte nebeneinander gedruckt. + 1 2 Jeder Bildschirmpunkt wird in doppelter Breite gedruckt. In + diesem Fall werden auf dem Drucker 560 Punkte nebeneinander + gedruckt. + +Doppelte H”he: +Bit 2 Dezimal Bedeutung +#linie("16.2")# + 0 0 Jeder Bildschirmpunkt wird in normaler H”he gedruckt. Es wer- + den also 192 Punkte untereinander gedruckt. + 1 4 Jeder Bildschirmpunkt wird in doppelter H”he gedruckt. In + diesem Fall werden also 384 Punkte untereinander gedruckt. + +Zwei Seiten nebeneinander drucken: +Bit 3 Dezimal Bedeutung +#linie("16.2")# + 0 0 Es wird nur eine Graphikseite (linksbndig) gedruckt. + 1 8 Die aktuelle (mit #ib(1)# O 7#ie(1)# eingestellte) Graphikseite + wird linksbndig und die andere Graphikseite nahtlos rechts + daneben gedruckt. + +Zur Kombination von M”glichkeiten (mehrere Bits sind gesetzt): + +- Eine Graphik mit doppelter H”he und doppelter Breite hat ungef„hr das + Format des Bildschirms. Ein Ausdruck besteht dann aus 560 x 384 = 215040 + Punkten. Zus„tzliches Invertieren macht die Graphik dem Bildschirmausse- + hen noch „hnlicher. + +- Werden zwei Seiten mit doppelter Breite nebeneinander gedruckt, dann re- + icht die Anzahl der Graphikspalten auf dem Drucker mit dem Defaultgra- + phikmodus nicht mehr aus. In diesem Fall sollte man die Druckertreiber + Kommandosequenz 1 tempor„r auf eine hohe (4-fache) Dichte umschalten. + Solange kein Setup ausgefhrt wird, ist diese Dichte nur solange gltig, + bis das Terminal ausgeschaltet wird. + +#page# +#h("7.", "Die Parameter der seriellen Schnittstelle")# + + +Die Parameter der seriellen Schnittstelle k”nnen vom Host durch Escape- +Sequenzen g„ndert werden. Die Žnderung der Parameter wird erst durchgefhrt, +wenn die Parameterbergabe komplett ist (d.h das letzte Byte wurde bertra- +gen). Alle šbertragungsparameter wie Stopbits, Datenbits, Parit„t und Bau- +drate werden zusammen in einem 'Rutsch' eingestellt. Die Art der Fluákon- +trolle wird mit separaten Escape-Sequenzen eingestellt. +Die Einstellung in der Kommandozeile ist im Kapitel 3 beschrieben. + + +#k("7.1", "Das šbertragungsformat")# + +Das šbertragunsformat eines Datenbytes sieht folgendermaáen aus: +(Beispiel fr 8 Datenbits, 1 Parit„tsbit und 1 Stopbit) + + +---+---+---+---+---+---+---+---+---+---+---+ + ... |"0"| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | P |"1"| ... + +---+---+---+---+---+---+---+---+---+---+---+ + Start- ---- D a t e n b i t s ---- Pari- Stop- + bit t„ts- bit + bit + --------> Zeit + +Bei 7 Datenbits ist das Bit 7 "0". P bezeichnet das Parit„tsbit. Wenn zwei +Stopbits bertragen werden steht an dieser Stelle das 1. Stopbit ("1"). + + +#k("7.2", "Die šbertragungsparameter")# + +Alle vier Parameter werden zugleich ver„ndert. Das Kommando lautet + + #ib(1)# #ie(1)# (Hex 1B 20 20 ) + + ist dabei ein Datenbyte, das wie folgt festgelegt wird: + + Bit 7 6 5 4 3 2 1 0 + +-------+-------+-------+-------+-------+-------+-------+-------+ + |Parity |Parity | Stop- | Daten-| Baudrate | + | even/ |on/off | bits | bits | | | | | + | odd | | | | | | | | + +-------+-------+-------+-------+-------+-------+-------+-------+ + + +#k("7.2.1", "Baudrate")# + +Baudrate = Anzahl der pro Sekunde bertragenen Bits (šbertragungsgeschwin- +digkeit) . + + Bits +#on("u")#Dezimal 3 2 1 0 Neue Baudrate#off("u")# + 0 0 0 0 0 Alte Baudrate (nicht ver„ndern) + 1 0 0 0 1 50 Baud + 2 0 0 1 0 75 Baud + 3 0 0 1 1 109.9 Baud + 4 0 1 0 0 134.58 Baud + 5 0 1 0 1 150 Baud + 6 0 1 1 0 300 Baud + 7 0 1 1 1 600 Baud + 8 1 0 0 0 1200 Baud + 9 1 0 0 1 1800 Baud + 10 1 0 1 0 2400 Baud + 11 1 0 1 1 3600 Baud + 12 1 1 0 0 4800 Baud + 13 1 1 0 1 7200 Baud + 14 1 1 1 0 9600 Baud + 15 1 1 1 1 19200 Baud + +Der Wert 0 kann gebraucht werden, wenn nur Datenbits, Stopbits und Pari- +t„tsbit ver„ndert werden sollen. + + +#k("7.2.2", "Datenbits")# + +Bit 4 legt die Anzahl der gesendeten und empfangenen Datenbits fest. + +#on("u")#Dezimal Bit 4 #off("u")# + 0 0 8 Datenbits + 16 1 7 Datenbits + +Mit einem anschliessenden Kommando + + #ib(1)# 6#ie(1)# (Hex 1B 20 36) + +kann das 8. Datenbit ausmaskiert (d.h auf "0" gesetzt) werden. Dies kann +notwendig sein, wenn der Host nur 7 Bit ASCII verarbeitet und auf ein ge- +setztes 8. Datenbit falsch reagiert (Steuerbit oder „hnliches). + +Mit + + #ib(1)# 7#ie(1)# (Hex 1B 20 37) + +kann die Maskierung wieder aufgehoben werden. +Zu beachten ist, daá bei 7 Bit Datentransfer zum Beispiel das Farbbit bei +Download einer Graphikseite nicht bertragen wird. + + +#k("7.2.3", "Stopbits")# + +Bit 5 legt die Anzahl der Stopbits fest. + +#on("u")#Dezimal Bit 5 #off("u")# + 0 0 1 Stopbit + 32 1 2 Stopbits + +Zu beachten ist, daá bei eingeschaltetem Paritycheck und 8 Datenbits immer +ein Stopbit bertragen wird, auch wenn 2 Stopbits programmiert wurden. (Es +k”nnen maximal 11 Bits/Daten"byte" bertragen werden.) + + +#k("7.2.4", "Parit„tsbit")# + +Bit 6 legt fest, ob Parit„tskontrolle erfolgen soll und ob ein Parit„tsbit +vorhanden ist. + +Dezimal Bit 6 +#linie("16.2")# + 0 0 Keine Parit„tskontrolle/Kein Parit„tsbit + 64 1 Parit„tskontrolle eingeschaltet. Parit„t mit Bit 7 gew„hlt + +Wenn Bit 6 = 1 ist legt Bit 7 fest, ob gerade oder ungerade Parit„t geprft +werden soll. + +#on("u")#Dezimal Bit 7 #off("u")# + 0 0 Ungerade Parit„t + 128 1 Gerade Parit„t + + +#k("7.2.5", "šbertragungsfehler")# + +Wird ein Rahmenfehler (Stopbit fehlt) oder ein Parit„tsfehler (mindestens +ein Bit verf„lscht) entdeckt, dann wird statt des empfangenen Mlls ein Byte +Hex FF vom Terminal interpretiert. Steht dies im Text, kann man es als in- +vertiertes Punktraster erkennen. Dieses Zeichen richtet wenig Schaden an, +wenn es mitten in einer Escape-Sequenz empfangen wird. + + +#k("7.3", "Die Fluákontrolle")# + +Damit keine Daten verloren gehen, wenn der Host oder das Terminal keine +solchen mehr empfangen kann, sollte eine Fluákontrolle eingeschaltet wer- +den. Das Terminal hat zwar einen Empfangspuffer von 4K Byte (4096 Zeichen), +aber auch dieser kann einmal voll sein. Der Sendepuffer von 2K Byte (2048 +Zeichen) wird in Anspruch genommen, wenn der Host dem Terminal per Fluákon- +trolle mitgeteilt hat, daá er keine Zeichen mehr empfangen kann. Das Termi- +nal wartet dann nicht aktiv auf Freigabe vom Host, sondern kann weiter ar- +beiten (Spooler, Bildschirmausgabe, Localmodus etc.). + +Wenn das Terminal den Host "gestoppt" hat, kann man das an einem "B U S Y" +in der Statuszeile erkennen, sonst steht dort "R E A D Y". +Wenn der Host das Terminal "gestoppt" hat, kann man das an einem "T X O F F" +in der Statuszeile erkennen, sonst steht dort "T X O N". + +Da dieses Terminal einen groáen Empfangspuffer hat, sollte man allerdings im +Notfall auch ohne Fluákontrolle auskommen, wenn nicht gerade umfangreiche +Graphikoperationen ausgefhrt werden sollen, bei denen der Puffer nicht +schnell genug geleert werden kann. + + +#k("7.3.1", "XON/XOFF")# + +XON/XOFF ist eine Softwarefluákontrolle. Als Stopzeichen wird + + #ib(1)#XOFF#ie(1)# (#ib(1)##ie(1)# Hex 13) + +verwendet. Als Startzeichen wird + + #ib(1)#XON#ie(1)# (#ib(1)##ie(1)# Hex 11) + +verwendet. Diese Fluákontrolle sollte nur im Textmodus verwendet werden, da +Bin„rdaten m”glicherweise Hex 11 oder Hex 13 enthalten, die dann nicht als +Protokollzeichen verwendet werden sollen. Der Vorteil dieser Art der Fluá- +kontrolle ist, daá man mit 3 Leitungen (Masse, TXD, RXD) an der seriellen +Schnittstelle auskommt. + +Das Terminal reagiert auf empfangene XON/XOFF-Zeichen sofort, d.h diese +Zeichen werden nicht in den Empfangspuffer gestellt. Diese beiden Zeichen +werden auch dann interpretiert, wenn das Terminal im Local-Modus ist. + +Die XON/XOFF Fluákontrolle kann in der 2. Kommandozeile ein- und ausgeschal- +tet werden, sowie mit dem Kommando + + #ib(1)##ie(1)# (Hex 0F) + +eingeschaltet und mit + + #ib(1)##ie(1)# (Hex 0E) + +ausgeschaltet werden. + +Zu beachten ist, daá der Sender vor dem Ausschalten noch im "TX OFF"- +Zustand sein kann. Man sollte deshalb direkt vor noch (Hex +11), also XON senden, um den Sender wieder einzuschalten. Dies wird vom +Terminal nicht automatisch gemacht, da sonst ein das im Datenstrom +vorkommt, auch noch ein Zeichen fr Fluákontrolle w„re. + + +#k("7.3.2", "DTR/DSR")# + +DTR/DSR ist eine Hardwarefluákontrolle bei der die Leitungen Pin 20 (DTR) +und Pin 6 (DSR) (in der Regel berkreuzt) angeschloáen sein mssen. +Bei dieser Art der Fluákontrolle drfen alle Zeichen bertragen werden, ohne +daá eines die Fluákontrolle steuert. Ausnahme: Wenn zus„tzlich XON/ XOFF +Fluákontrolle eingeschaltet ist werden natrlich XON/XOFF als Steuerzeichen +interpretiert. + +DTR (Data Terminal Ready)/DSR (DataSet Ready) Fluákontrolle kann in der 2. +Kommandozeile ein- und ausgeschaltet werden. Der Host kann dies mit dem +Kommando + + #ib(1)# #ie(1)# (Hex 1B 20 ) + +erreichen. Die Werte von sind + +#on("u")# Hex Bedeutung #off("u")# + 2 32 Weder RTS/CTS noch DSR/DTR Fluákontrolle + 3 33 RTS/CTS Fluákontrolle, aber keine DSR/DTR Fluákontrolle + 4 34 DSR/DTR Fluákontrolle, aber keine RTS/CTS Fluskontrolle + 5 35 DSR/DTR und RTS/CTS Fluákontrolle + +DTR/DSR Fluákontrolle wird empfohlen, da hier alle Zeichen ohne Ver„nderung +empfangen werden k”nnen. RTS/CTS Fluákontrolle kann, hardwarem„áig bedingt, +beim Einschalten von RTS ein Bit "umkippen". + + +#k("7.3.3", "RTS/CTS")# + +RTS/CTS ist eine Hardwarefluákontrolle bei der die Leitungen Pin 4 (RTS) und +Pin 5 (CTS) (in der Regel berkreuzt) angeschloáen sein mssen. +Bei dieser Art der Fluákontrolle drfen alle Zeichen bertragen werden, ohne +daá eines die Fluákontrolle steuert. Ausnahme: Wenn zus„tzlich XON/ XOFF +Fluákontrolle eingeschaltet ist werden natrlich XON/XOFF als Steuerzeichen +interpretiert. + +RTS (Ready To Send)/CTS (Clear To Send) Fluákontrolle kann in der 2. Kom- +mandozeile ein- und ausgeschaltet werden. Der Host kann dies mit dem Kom- +mando erreichen. Die Werte von sind im letzten Ab- +schnitt (7.3.2 DTR/DSR) angegeben. + + +#k("7.4", "Echo und Local/Online")# + +In einigen F„llen verlangt der Host, daá das vom Terminal empfangene Zei- +chen zurckgesendet (geechoed) wird, um eventuelle šbertragungsfehler zu +erkennen. Dieser Modus wird mit dem Kommando + + #ib(1)# D E#ie(1)# (Hex 1B 44 45) + +eingeschaltet. Zus„tzlich wird hiermit der Localmodus ausgeschaltet (d.h der +Online-Modus eingeschaltet), falls das Kommando am Terminal im Local-Modus +gegeben wurde. + +Der Echo-Modus wird mit dem Kommando + + #ib(1)# D O#ie(1)# (Hex 1B 44 4F) + +ausgeschaltet. Das Terminal befindet sich dann im Fullduplex Online-Modus. +Der Local-Modus wird auch hierbei verlassen. + +Der Local-Modus kann vom Host mit dem Kommando + + #ib(1)# D L#ie(1)# (Hex 1B 44 4C) + +eingeschaltet werden. Dabei ist zu beachten, daá der Host den Local-Modus +nicht ausschalten kann. Der Local-Modus kann vom Benutzer durch Drcken von +#ib(1)##ie(1)# am Keyboard verlassen werden. + +Im Local-Modus werden Keyboardeingabe nicht mehr an den Host geschickt, +sondern auf dem Bildschirm angezeigt bzw. durch das Terminal interpretiert. +Funktionstastensequenzen werden auch nicht an den Host geschickt. Escape- +Sequenzen die allerdings Daten senden (z.B Download von Text und Graphik +oder die Abfrage der Cursorposition), werden wie im Online-Modus ausgefhrt, +d.h. die Daten werden zum Host geschickt. + +#page# +#h("8.", "Spezielle Kommandos im Textmodus")# + + +In diesem Kapitel werden weitere Kommandos, die im Textmodus wirksam sind +und thematisch nicht in die anderen Kapitel passen, beschrieben. + + +#k("8.1", "Weitere Cursorpositionierungskommandos")# + +Zus„tzlich zu den im Graphikmodus und im Textmodus gltigen Cursorpositio- +nierungskommandos gibt es noch einige weitere. Die fnf Kommandos Zeile +l”schen, Zeile einfgen, Zeichen l”schen, Zeichen einfgen und Rckw„rtsta- +bulator sind schon in Kapitel 5 beschrieben worden. + +Hier nur noch einmal die entsprechenden Kommandos: + +Funktion Escape-Sequenz +#linie("16.2")# +Zeile einfgen #ib(1)# E#ie(1)# oder #ib(1)# L#ie(1)# +Zeile l”schen #ib(1)# R#ie(1)# oder #ib(1)# M#ie(1)# +Zeichen einfgen #ib(1)# Q#ie(1)# +Zeichen l”schen #ib(1)# W#ie(1)# +Rckw„rtstabulator #ib(1)# I#ie(1)# + +Mit dem Kommando + + #ib(1)# j#ie(1)# (Hex 1B 6A) + +kann ein umgekehrter Zeilenvorschub erreicht werden. Steht der Cursor in +Zeile 2 bis Zeile 24, dann wirkt dieses Kommando wie . Steht der Cursor +in Zeile 1, dann wird der Bildschirminhalt nach unten gescrollt und die +erste Bildschirmzeile gel”scht. + +Mit dem Kommando + + #ib(1)# =#ie(1)# (Hex 1B 3D ...) + +kann der Cursor auf eine bestimmte Position auf dem Bildschirm gesetzt wer- +den. und sind dabei Byteparameter. hat den Wertebe- +reich 32 () bis 110 ("o"), hat den Wertebereich 32 () +bis 55 ("7"). ist dabei die gewnschte x-Position + 32 (gez„hlt wird +von 0 bis 79), ist die gewnschte y-Position + 32 (gez„hlt wird von 0 +bis 23). Die Zuordnungen der ASCII-Zeichen zu den Cursorpositionen kann man +auch im Anhang A unter "Cursor" nachlesen. + +Dieser Befehl hat im Graphikmodus die gleiche Wirkung! + + +#k("8.2", "Cursormodus")# + +Mit dem Kommando + + #ib(1)# .#ie(1)# (Hex 1B 2E ) + +kann die Darstellung des Cursors ver„ndert werden. Fr sind ASCII-Zei- +chen "0", "1" und "2" zugelassen. hat folgende Bedeutung: + +#on("u")# Bedeutung #off("u")# + 0 Cursor blinkt nicht und ist unsichtbar + 1 Cursor blinkt und ist sichtbar + 2 Cursor blinkt nicht und ist sichtbar + +Mit dem Kommando + + #ib(1)# Z#ie(1)# (Hex 1B 5A) + +kann der Zustand des Cursors von sichtbar auf unsichtbar und umgekehrt umge- +schaltet werden. + + +#k("8.3", "Zeichensatz einstellen")# + +Da die Zeichens„tze von Basis und Apple unterschiedlich sind, muá hier bei +den Parametern unterschieden werden. Das Kommando zur Einstellung des Zei- +chensatzes lautet in beiden F„llen + + #ib(1)# z#ie(1)# (Hex 1B 7A ) + +wobei ein Byteparameter ist. Beim Apple hat folgende Bedeutung: + + Zeichensatz +#linie("16.2")# + 1 Full Ascii: 128 Zeichen, ASCII, normale, inverse und blinkende Zei- + chen + 4 Ascii: 128 Zeichen, ASCII, normale und blinkende Zeichen + +Beim Basis hat folgende Bedeutung: + + Zeichensatz +#linie("16.2")# + 0 = Apple II: 64 Zeichen, ASCII, normale, inverse und blinkende Zeichen + 1 = Full Ascii: 128 Zeichen, ASCII, normale, inverse und blinkende Zeichen + 2 = Deutsch: 128 Zeichen, deutsch, normale und inverse Zeichen + 4 = Ascii: 128 Zeichen, ASCII, normale und inverse Zeichen + 6 = APL: 128 Zeichen, APL, normale und inverse Zeichen + + Und mit blinkenden statt inversen Zeichen: + 8 = Apple II: 64 Zeichen, ASCII, normale, blinkende und inverse Zeichen (!) + 9 = Full Ascii: 128 Zeichen, ASCII, normale, blinkende und inv. Zeichen (!) +10 = Deutsch: 128 Zeichen, deutsch, normale und blinkende Zeichen +12 = Ascii: 128 zeichen, ASCII, normale und blinkende Zeichen +14 = APL: 128 Zeichen, APL, normale und blinkende Zeichen + +Einige ausgew„hlte Zeichens„tze k”nnen auch in der Kommandozeile eingestellt +werden. + + +#k("8.4", "Texthardcopy")# + +Einen Ausdruck des Textbildschirminhaltes auf dem Drucker kann man mit dem +Kommando + + #ib(1)# P#ie(1)# (Hex 1B 50) + +erreichen. Der auf dem Drucker eingestellte Schrifttyp wird nicht ver„n- +dert. Es werden 24 Zeilen gedruckt, die Statuszeile wird nicht gedruckt, +sondern die "darunterliegende" 24. Textzeile. Nach jeder Zeile wird und + gedruckt, der Drucker sollte deshalb kein Autolinefeed bei durch- +fhren. + +Inverse Bildschirmzeichen (80..FF) werden durch Doppeldruck (dunkler) her- +vorgehoben, Controlcharacter (00..1F und 80..9F) werden unterstrichen dar- +gestellt, das Punktraster (7F und FF) wird als unterstrichenes # darge- +stellt. + + +#k("8.5", "Zeichen-Attribute")# + +Die Zeichenattribute werden mit dem Kommando + + #ib(1)# G#ie(1)# (Hex 1B 47 ) + +eingestellt. ist ein Byteparameter, der folgende Werte annehmen kann: + +#on("u")# Attribute #off("u")# + 0 Sichtbare, normale Zeichen + 1 Unsichtbare Zeichen, es werden Leerzeichen dargestellt + 4 Sichtbare, inverse Zeichen + 5 Unsichtbare Zeichen, es werden inverse Leerzeichen dargestellt. + +Mit dem Kommando + + #ib(1)# (#ie(1)# (Hex 1B 28) + +kann auf normale Darstellung umgeschaltet werden (wirkt „hnlich G 0, +schaltet aber nicht auf sichtbare Darstellung, falls unsichtbar). + +Mit dem Kommando + + #ib(1)# )#ie(1)# (Hex 1B 29) + +kann auf inverse Darstellung umgeschaltet werden (wirkt „hnlich G 4, +schaltet aber nicht auf sichtbare Darstellung, falls unsichtbar). + + +#k("8.6", "Bildhintergrund hell/dunkel")# + +Die Bildschirmdarstellung kann von heller Schrift auf dunklem Grund (be- +zglich eines gel”schten Bildschirms) umgeschaltet werden auf dunkle Schrift +auf hellem Grund. Die Darstellung "schwarz auf weiá" ist auf einigen Monito- +ren augenfreundlicher. + +Mit dem Kommando + + #ib(1)# b#ie(1)# (Hex 1B 62) + +kann die dunkle Schrift auf weiáem Grund eingeschaltet werden. Die Darstel- +lung von inverser und normaler Schrift wird vertauscht. + +Mit dem Kommando + + #ib(1)# d#ie(1)# (Hex 1B 64) + +kann helle Schrift auf dunklem Grund eingeschaltet werden. + + +#k("8.7", "Zeichentransfer zum Host")# + +Der Host kann Teile oder den ganzen Bildschirm vom Terminal lesen. Alle +Zeichen werden als Bytes gesendet, bei denen ein gesetztes Bit 7 Invers- +schrift anzeigt. + + +#k("8.7.1", "Ein Zeichen senden")# + +Mit dem Kommando + + #ib(1)# 8#ie(1)# (Hex 1B 38) + +wird nur das Zeichen an der Cursorposition gesendet. Die Cursorposition +„ndert sich nicht. Der Cursor muá nicht sichtbar sein. + + +#k("8.7.2", "Eine Zeile senden")# + +Mit dem Kommando + + #ib(1)# 6#ie(1)# (Hex 1B 36) + +wird die Zeile, in der der Cursor steht (genauer: die Zeile der Cursorrow, +falls der Cursor unsichtbar ist) an den Host gesendet. Falls der Cursor in +Zeile 24 steht, wird nicht die Stauszeile, sondern die 24. Textzeile gesen- +det. Im Anschluá an die Zeile werden eventuell ein oder zwei eingestellte +Zeilenbegrenzer gesendet (Lineterminator). Die Programmierung der Begrenzer +ist in Abschnitt 8.7.4 beschrieben. Es werden also 80 bis 82 Zeichen gesen- +det. Die Cursorposition „ndert sich durch das Kommando nicht. + + +#k("8.7.3", "Eine Seite senden")# + +Mit dem Kommando + + #ib(1)# 7#ie(1)# (Hex 1B 37) + +wird die gesamte Bildschirmseite an den Host gesendet. Im Anschluá an jede +Zeile werden (falls eingestellt) Zeilenbegrenzer gesendet. Im Anschluá an +die gesamte Seite wird ein (eingestellter) Seitenbegrenzer (Pageterminator) +gesendet. Es werden also je nach Zeilen- und Seitenbegrenzer 1920 bis 1969 +Zeichen gesendet. Die Statuszeile wird nicht gesendet, sondern die "darun- +terliegende" 24. Textzeile. Die Programmierung der Zeilen- und Seitenbe- +grenzer ist in Abschnitt 8.7.4 beschrieben. Die Cursorposition „ndert sich +durch dieses Kommando nicht. + + +#k("8.7.4", "Terminatorzeichen definieren")# + +Mit dem Kommando + + #ib(1)# x 1#ie(1)# (Hex 1B 78 31 ) + +k”nnen die Zeilenbegrenzer der Sendekommandos festgelegt werden. und + sind dabei Byteparameter, die den Wertebereich 0 bis 255 berstrei- +chen. Ist ein Parameter Hex 00, dann wird dieses Zeichen nicht gesendet. +Wenn man also das Kommando (Hex) 1B 78 31 00 00 sendet, wird kein Begren- +zerzeichen nach der Zeile gesendet. +Voreingestellt ist ein Begrenzerzeichen; und zwar US (Hex 1F). + +Mit dem Kommando + + #ib(1)# x 4#ie(1)#

(Hex 1B 78 34

) + +kann der Seitenbegrenzer des Kommandos #ib(1)# 7#ie(1)# festgelegt werden.

ist +ein Byteparameter, der den Wertebereich von 0 bis 255 berstreicht. Ist

+Hex 00, dann wird kein Seitenbegrenzer gesendet. +Voreingestellt ist

= (Hex 0D). + + +#k("8.7.5", "Cursorposition senden")# + +Mit dem Kommando + + #ib(1)# ?#ie(1)# (Hex 1B 3F) + +kann der Host die Position des Textcursors abfragen. Es wird eine Folge von +3 Bytes gesendet: + + ist die y-Position + 32, die x-Position + 32. Beide Parameter +k”nnen fr den Befehl #ib(1)# =#ie(1)# verwendet werden, da Sie den +gleichen Wertebereich berstreichen. + + +#k("8.8", "Textseite auf Diskette speichern/laden")# + +Genau wie Graphikseiten kann auch die Textseite auf Diskette geschrieben und +zu einem sp„teren Zeitpunkt wieder zurckgeladen werden. Bei der Textseite +wird auáerdem noch die aktuelle Cursorposition geladen/geschrieben. Man kann +sich zum Beispiel eine Datei Seitenweise auf dem Bildschirm anzeigen lassen +und diese Seiten auf Diskette abspeichern. Sp„ter kann man die Datei Offline +(im Localmodus) Seitenweise ansehen. + +Bis zu 8 Textseite lassen sich auf Diskette speichern und wieder abrufen. +Die "F„cher" fr die Textseiten sind unabh„ngig von denen fr die Graphik- +seiten. +Die Seiten werden unabh„ngig von REVVID (Schwarz auf Weiá) immer NORVID +(also Weiá auf Schwarz) abgespeichert. Beim Laden der Seite wird sie je nach +REVVID/NORVID dargestellt. + +Das Kommando fr diese Operationen lautet + + #ib(1)# S#ie(1)# (Hex 1B 53 ). + + ist ein Byteparameter mit dem Wertebereich 0 bis 31, wobei die Bits +folgendermaáen belegt sind: +Bit 0..2 : "Fachnummer" der Textseite auf der Diskette (0 bis 7) +Bit 3 : Bei Textseiten immer 0 (Bei Graphikseiten immer 1) +Bit 4 : 0 heiát: die Textseite wird von der Diskette gelesen, + 1 heiát: die Textseite wird auf die Diskette geschrieben. + +Wird die Textseite auf die Diskette geschrieben, dann wird eine eventuell +schon in diesem "Fach" vorhandene Textseite berschrieben. + +Fr Insider: Jede Textseite belegt einen halben Track (2k). Die 8 Textseiten + befindenden auf den Tracks 6 bis 9 in aufsteigender Reihenfol- + ge. + + +#page# +#h("9.", "Verschiedene Steuerkommandos")# + + +#k("9.1", "Signalton")# + +Mit + #ib(1)##ie(1)# (Hex 07) + +wird ein kurzer Signalton ausgegeben. Ein Warnton des Terminals ist sch„r- +fer (heller). + + +#k("9.2", "Keyboardclick")# + +Der Tastaturclick wird fr fast alle Tasten erzeugt. Ausnahmen sind die + und die Tasten, sowie beim Apple die Apfeltasten. Der Tasta- +turclick kann in der ersten Kommandozeile abgeschaltet werden (CLK OFF) oder +mit dem Kommando + + #ib(1)# <#ie(1)# (Hex 1B 3C) + +vom Host. Mit dem Kommando + + #ib(1)# >#ie(1)# (Hex 1B 3E) + +kann der Keyboardclick wieder eingeschaltet werden. + + +#k("9.3", "Bildschirmausgabe/Druckerausgabe")# + +Die Bildschirmausgabe, die ja normalerweise eingeschaltet ist, kann in der +Kommandozeile abgeschaltet werden (SCRNOFF) oder vom Host mit dem Kommando + + #ib(1)# `#ie(1)# (Hex 1B 60) + +abgeschaltet werden. Bis auf das Kommando + + #ib(1)# a#ie(1)# (Hex 1B 61) + +werden keine Escape-Squenzen oder Control-Codes interpretiert. Mit a +wird die Bildschirmausgabe wieder zugelassen. + +Die Druckerausgabe kann mit dem Kommando + + #ib(1)# @#ie(1)# (Hex 1B 40) + +eingeschaltet werden. Man kann dann Texte parallel auf Drucker und Bild- +schirm ausgeben. In der ersten Kommandozeile kann die Druckerausgabe auch +ein- und ausgeschaltet werden. +Man kann zum Beispiel den Schrifttyp des Druckers im Local-Modus umschal- +ten, wenn man in der Kommandozeile die Druckerausgabe (PRT ON) einschaltet. +Dazu kann man sich auch eine Funktionstaste belegen, die Bildschirmausgabe +abschaltet, Druckerausgabe einschaltet, den Schrifttyp umschaltet, Drucker- +ausgabe wieder ausschaltet und Bildschirmausgabe wieder einschaltet. + +Abgeschaltet wird die Druckerausgabe mit dem Kommando + + #ib(1)# A#ie(1)# (Hex 1B 41) + + +#k("9.4", "Scroll/Page-Modus")# + +Steht der Cursor in der letzten Zeile und soll er in die n„chst tiefere +gebracht werden (, , etc.), dann gibt es entweder die +M”glichkeit, daá der Bildschirm nach oben gescrollt wird, d.h. die 1. Zeile +verschwindet und die 24. Zeile wird gel”scht, oder daá der Cursor in der +ersten Bildschirmzeile wieder auftaucht, ohne daá der Bildschirminhalt ver- +„ndert wird. Die erste M”glichkeit heiát SCROLL-Modus, die zweite PAGE- +Modus. Die Umschaltung kann entweder in der ersten Kommandozeile erfolgen +oder mit dem Kommando + + #ib(1)# H#ie(1)# (Hex 1B 48). + +In der Kommandozeile hat man die Informationsm”glichkeit, welcher Modus +gerade aktiv ist. + + +#k("9.5", "Belegung der Funktionstasten")# + +Eine ntzliche Angelegenheit sind die programmierbaren Funktionstasten. Die +Codes der Funktionstasten sind unter anderem in Anhang A zu finden. Funk- +tionstasten k”nnen im Local-Modus aufgerufen werden, zum Beispiel fr h„u- +fig gebrauchte Terminalkommandos oder l„ngere Kommandosequenzen (Graphikmo- +dus). Im Online-Modus kann man z.B. Betriebssystemkommandos auf Funktion- +stasten legen. + +Die L„nge der Zeichen auf allen Funktionstasten darf zusammen nicht 4095 +Zeichen berschreiten. Ein akustisches Warnsignal ert”nt, wenn die Funk- +tionstastentabelle voll ist. Soll die Funktionstastendefinition auch noch +nach dem Abschalten des Terminals erhalten bleiben, dann muá in der Komman- +dozeile gegeben werden, damit der Setup samt Funktionstastende- +finitionen auf die Diskette geschrieben wird. + +Mit dem Kommando + + #ib(1)# e#ie(1)# (Hex 1B 65 ) + +wird eine Taste belegt. und sind Byteparameter. ist eine +Folge von Datenbytes, deren Bit 7 = 0 sein muá. ist der Code der Funk- +tionstaste (Bit 7 = 1), auf die die Sequenz gelegt werden soll. Durch diese +Einschr„nkung sind keine rekursiven (sich selbst aufrufenden) Tastenkomman- +dos m”glich, man kann allerdings z.B. auch nicht alle bin„ren Parameter auf +Tasten legen (Man sollte dezimale Parameter benutzen). Die Cursortasten etc. +k”nnen nicht belegt werden. +Um die Original-Tastencodes wieder zu benutzen, gibt es drei M”glichkeiten: + +- Die Tabelle der Tastendefinitionen wird ganz gel”scht (Abschnitt 9.6). +- Die Definition auf einzelnen Tasten wird durch e gel”scht. + ist dabei der Code einer zu l”schenden Taste. +- In der ersten Kommandozeile wird F CODE eingeschaltet oder das Kommando + + #ib(1)# c#ie(1)# (Hex 1B 63) + + gegeben. Dieses Kommando schaltet um, ob immer Tastencodes (A1..EF) oder, + bei belegten Tasten, die programmierte Sequenz geliefert werden soll. Im + Graphikmodus m”chte man eventuell die griechischen Sonderzeichen auf den + Funktionstasten benutzen (F CODE) und nicht die programmierten Tasten- + strings (F STRG). + + +#k("9.5.1", "Local-Escape")# + +Um Funktionstasten mit Terminalkommandos auch im Online-Modus benutzen zu +k”nnen (zum Beispiel ein Bildschirm Hardcopy) wird ein spezielles ESC-Zei- +chen statt (Hex 1B) verwendet. +Das Zeichen + + #ib(1)##ie(1)# (Hex 9B) + +teilt dem Terminal mit, daá die nun folgende Escape-Sequenz nicht an den +Host gesendet wird (was bei der Fall w„re), sondern vom Terminal in- +terpretiert werden muá. +Im Local-Modus wirkt ein wie ein normales , d.h. das Kommando +wird sowieso vom Terminal interpretiert. + + +#k("9.5.2", "Makrokommandos")# + +Ein Makrokommando hat (mindestens) drei Aufgaben: +- Der Host kann dem Terminal neue ESC-Sequenzen (mit Parametern) definieren, + z.B. um andere Terminals zu emulieren. +- Nicht nur das Terminal kann Funktionstasten aufrufen, sondern auch der + Host, wenn die Funkionstaste als Makro aufgerufen wird. +- Der Datentransfer vom Host zum Terminal kann durch Makros als Abkrzungen + h„ufig benutzter Zeichenfolgen beschleunigt werden. + +Ein Makro wird wie eine Funktionstaste mit dem Kommando + + + #ib(1)# e#ie(1)# (Hex 1B 65 ) + +definiert. und sind Byteparameter. ist eine Folge von +Datenbytes, deren Bit 7 = 0 sein muá. ist der Code der Funktionstaste +(Bit 7 = 1) oder mit anderen Worten der Makroname. +Es sind alle Codes fr zugelassen, die auch bei der Funktionstastende- +finition zugelassen sind. + +Ein Makro kann sowohl vom Terminal (auch im F CODE-Modus) als auch vom Host +mit + + #ib(1)# #ie(1)# (Hex 1B ) + +aufgerufen werden. Dem Terminal wird die Zeichensequenz des Makros so vorge- +setzt, als k„me sie von der Tastatur im Local-Modus. Wird das Makro also +bereits im Local-Modus aufgerufen, hat das immer noch den Vorteil, daá man +im F CODE-Modus weiterhin programmierte Funktionstasten benutzen kann. +Anmerkung: Wird das vor dem weggelassen, dann wird der + Code ohne Makroausfhrung an das Terminal gesendet + und i.d.R. als inverses Zeichen dargestellt. + +Sollen Byteparameter in die Zeichensequenz des Makros bernommen werden, die +zur Zeit der Makrodefinition noch nicht feststehen, dann kann man einen +Platzhalter mit dem Code Hex 81 an der Stelle einsetzen. Der Code Hex 81 +kann auf der Tastatur durch erzeugt werden. +Wird bei der Makroausfhrung ein solcher Code gefunden, wartet das Terminal +auf ein Byte von Tastatur, wenn das Makro im Local-Modus aufgerufen wurde, +oder vom Host, wenn das Makro vom Host aufgerufen wurde. Es drfen beliebig +viele Codes 81 in der Makrozeichensequenz vorhanden sein. Jeder Code wird +durch ein weiteres Zeichen von Host oder Tastatur ersetzt. + + +#k("9.5.3", "Startup-Makro")# + +Ein besonderes Makro hat den Code Hex EF. Dieser Code kann auf der Tastatur +durch (beim Apple ) erzeugt werden. + +Dieses Makro wird bei einem RESET des Terminals (Hardwarereset oder 0) +oder beim Einschalten des Terminals aufgerufen. Der Bildschirm und die Gra- +phikseiten werden vorher gel”scht. + + +#k("9.6", "Tabellen und Puffer l”schen")# + +Das Terminal enth„lt den Empfangspuffer, den Sendepuffer, den Druckerspoo- +ler und die Tabelle der Tastendefinitionen. Um einen der Puffer oder die +Tabelle zu l”schen, kann das Kommando + + #ib(1)# #ie(1)# (Hex 1B 7F ) + +verwendet werden. ist ein Byteparameter mit dem Wertebereich 0 bis 15 +und hat folgende Bedeutung: + +#on("u")# Gel”schte Tabelle oder Puffer#off("u")# + 0 Keine + 1 Tastendefinitionen + 2 Druckerspooler + 3 Empfangspuffer + 4 Sendepuffer + +Zu beachten ist, daá zwar der Sendepuffer gel”scht wird, aber eine eventu- +ell gestoppte šbertragung (TX OFF) nicht wider gestartet wird. + + +#k("9.7", "Zeitverz”gerung")# + +Mit dem Kommando + + #ib(1)# 9#ie(1)# (Hex 1B 39 ) + +kann eine Zeitverz”gerung aufgerufen werden. Man kann zum Beispiel ein Fa- +denkreuz darstellen, die Zeitverz”gerung aufrufen und das Fadenkreuz wieder +l”schen. ist ein Byteparameter mit dem Wertebereich von 0 bis 255. Die +Verz”gerung betr„gt ca. * 2 ms. + + +#k("9.8", "Transparentmodi")# + +Der Monitor- und der Hexadezimalmodus sind zum Test von unbekannten Emp- +fangsdaten oder zum Analysieren der Steuerzeichenausgabe von unbekannten +Programmen gedacht. + + +#k("9.8.1", "Monitor-Modus")# + +Im Monitor-Modus werden druckbare Zeichen wie normal dargestellt. Control- +zeichen (Hex 00..1F und 80..9F) werden invertiert dargestellt. Im APL-Zei- +chensatz kann man diese inversen Controlzeichen von den Zeichen mit Code Hex +A0..FF unterscheiden, die auch invers dargestellt werden. +Der Monitormode kann in der ersten Kommandozeile ein- und ausgeschaltet +werden. Mit dem Kommando + + #ib(1)# U#ie(1)# (Hex 1B 55) + +kann der Monitormode eingeschaltet werden. Alle Zeichen werden ohne Inter- +pretation ausgegeben, Ausnahmen sind + + #ib(1)# u#ie(1)# (Hex 1B 75) + +und + + #ib(1)# X#ie(1)# (Hex 1B 58) + +die den Monitormodus ausschalten. + + +#k("9.8.2", "Hexadezimal-Modus")# + +In diesem Modus werden nicht die Zeichen auf dem Bildschirm gedruckt, son- +dern ihr ASCII-Code in hexadezimaler Schreibweise mit zwei nachfolgenden +Blanks. Der Hexmode kann mit dem Kommando + + #ib(1)# u#ie(1)# (Hex 1B 75) + +ein- und ausgeschaltet werden. Alle Zeichen werden ohne Interpretation aus- +gegeben, auáer #ib(1)# u#ie(1)# und + + #ib(1)# X#ie(1)# (Hex 1B 58), + +die den Hexmodus wieder ausschalten. Auch der Hexmode kann in der ersten +Kommandozeile ein- und ausgeschaltet werden. + + +#k("9.8.3", "Einzelne Control-Zeichen anzeigen")# + +Um nur einzelne Controlzeichen auf dem Bildschirm darzustellen, z.B. fr den +unteren Teil des APL-Zeichensatzes (Codes 0 bis 31 oder 128 bis 159), gibt +es das Kommando + + #ib(1)# F#ie(1)# (Hex 1B 46 ). + + ist dabei ein Byteparameter mit dem Wertebereich 0 bis 255, vorzugswei- +se 0 bis 31. wir mit invertiertem Bit 7 (normal/invers) in den Bild- +schirmspeicher an der aktuellen Cursorposition geschrieben. -- cgit v1.2.3