[Btx] Serielle Attribute am Zeilenanfang

Christian Berger christian at clarke-3.de
Tue Jun 15 20:31:38 UTC 2021


Am 15.06.21 um 20:31 schrieb Stefan Bethke:
> 
> ich versuche gerade zu verstehen, ob und wie ich serielle Attribute am Zeilenanfang gesetzt werden können.
> 
> Wenn ich die Vordergrundfarbe mit z. B. ANB setze, dann habe ich in Pos 1 Blau als Vordergrund, aber ein Leerzeichen, also sieht man die Farbe nicht. Wenn ich dann mit NBD die Vorder- zur Hintergrundfarbe mache, wird Pos 2 Blau, dann kann ich mit ANY die Vordergrundfarbe auf Gelb setzen. Ab Pos 4. kann ich dann gelben Text auf blauem Hintergrund schreiben.
> 
> Wenn ich jetzt versuche, mit Backspace das ganze auf Pos 1 anzuwenden, ist mir nicht klar, wie genau das dann klappen soll. Cassandro meinte, wenn ein Zeichen ausgegeben wird, werden eventuell vorhandene Marker und damit auch alle Attribute aus der Position entfernt. Wenn ich as in Pos 1 mache, dann kommt der Zeilendefault von Weiß auf Transparent wieder zum Einsatz.
> 
> Geht das also nicht? Oder wie kann ich den Zeilendefault so ändern, das ich Attribute auch in Pos 1 setzen kann?
> 
> Bei Teletext geht das glaube ich nicht, weil es kein Backspace gibt?

Also beim Teletext geht das inzwischen sogar. Wir haben ja Level 2.5 :)

Sorry, wenn ich jetzt etwas sehr in die Grundlagen von Hardware Textmodi 
gehe, aber man muss bei den Grundlagen anfangen um die Unterschiede 
zwischen seriellem und parallelem Modus erklären zu können. Aus Gründen 
der besseren Verständlichkeit lasse ich unterschiedliche Zeichengrößen, 
Blinkmodi und 4-16 Farbzeichen weg.

Der CRTC (CRT Controller) hat für jedes Zeichen eine Speicherstelle. 
(also 40x24 Speicherstellen) Um das Bildsignal zu erstellen, ließt der 
CRTC eine Speicherstelle, schlägt die Pixeldaten für das Zeichen nach 
und schiebt sie in ein Schieberegister damit sie Pixel für Pixel 
ausgegeben werden. Gleichzeitig werden die Attribute ausgegeben so dass 
weitere Hardware sie als Vorder- und Hintergrundfarbe verwenden kann.

Im parallelen Modus ist die Speicherzelle relativ groß (32 Bit oder so) 
und da steht der Zeichencode sowie die Attribute gemeinsam drin. Bit 0-9 
sind zum Beispiel der Zeichencode, Bit 10-14 sind die Hintergrundfarbe, 
Bit 15-19 sind die Hintergrundfarbe, usw. Somit kann jedes Zeichen 
beliebige Farben haben.

Im seriellen Modus ist die Speicherzelle relativ klein (7 oder 8 Bit).
Ist der Wert der da drin steht größer als $20, so wird das entsprechende 
Zeichen ausgegeben.
Die Attribute kommen hier aber nicht direkt aus dem Speicherzelle des 
Zeichens, sondern von internen Flip-Flops innerhalb des CRTCs. Die 
werden am Anfang der Zeile vorbelegt.
Ließt der CRTC jetzt in der Speicherzelle einen Wert kleiner als $20, so 
werden die internen Attributs-Flipflops innerhalb des CRTCs verändert.

Wenn Du jetzt bei BTX im seriellen Modus eine leere Zeile hast
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....
Und Du mit dem Cursor ganz links bist und ein ANB, NBD, ANY, "Hallo 
Welt" schickst hast Du Folgendes im Speicher.
04 1D 03 H  a l  l  o  20 W  e  l  t 20 20 20 20 20 20 20 ....
Wenn Du jetzt ganz nach links springst und ein "XXX" schreibt, steht 
folgendes im Speicher:
X  X  X  H  a l  l  o  20 W  e  l  t 20 20 20 20 20 20 20 ....
Du hast somit die 3 Attributszeichen überschrieben, uberschrieben und 
auf dem Bildschirm steht "XXXHallo Welt" in weiß auf schwarzem Grund.

Ich hoffe das macht es irgendwie klar. Bei parallelen Attributen gibts 
quasi ja 2 Attribute, zum einem die der Zeichen im RAM, zum anderen die 
Attribute des gedachten Cursors welcher Zeichen in das RAM schreibt.
Beides gibt es in dem Sinne im seriellen Modus nicht.

Was im seriellen Modus auch geht ist folgendes:
Du hast Text auf dem Bildschirm:
D  i  e  s  20 i  s  t 20 e  i  n 20 T  e  s  t....
                                   ^
Jetzt kannst Du an diese ---------+
Stelle springen und ANB schreiben.
Ab diesem Moment müsste "Test" in Blau erscheinen. Springst Du noch mal 
da hin und schreibt ein Leerzeichen so ist der Text wieder weiß.
Normgerechte Dekoder (bzw alte Prestel Dekoder) machen das. Die von 
Loewe leider nicht. Für die FTZ Zulassung reicht es trotzdem.


More information about the Btx mailing list