Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
cpm:turbo_pascal:tinst [2011/09/26 15:33] volkerpcpm:turbo_pascal:tinst [2024/03/21 12:11] (aktuell) – terminal_info2.pl volkerp
Zeile 1: Zeile 1:
-====== TINST ======+====== TINST.COM ======
  
 Im Anfangsbereich eines jeden Turbo-Pascal-(2.xx,3.xx)-Programms und auch von Turbo selbst liegen die Terminal-Steuercodes.  Im Anfangsbereich eines jeden Turbo-Pascal-(2.xx,3.xx)-Programms und auch von Turbo selbst liegen die Terminal-Steuercodes. 
  
-Initial werden diese mit TINST.COM eingerichtet (übrigens selbst in Turbo Pascal geschrieben). Das Programm patcht aber nur das Programm TURBO.COM, keine eigenen.  +Initial werden diese Steuercodes mit TINST.COM eingerichtet. TINST installiert außerdem die Taktfrequenz sowie Editorkommandos. TINST ist übrigens selbst in Turbo Pascal geschrieben. Das Programm patcht aber nur das Programm TURBO.COM, keine eigenen. Zum Anpassen fremder kompilierter Pascal-Programme muss deshalb das Programm zunächst in TURBO.COM umbenannt werden, ehe mit TINST die Terminaleinstellungen geändert werden können.
-Zur Anpassung fremder kompilierter Pascal-Programme oder wenn man das Programm nicht zur Hand hat, kann man auch selbst patchenDer Installationsbereich ist 125 Byte lang+
  
-Die Strings sind wie in Pascal üblich längendefiniert (1. Byte = Länge).+Wenn man TINST nicht zur Hand hat, kann man auch selbst patchen. Der Installationsbereich der Terminal-Steuercodes ist 125 Byte lang und geht bei Turbo 2.xx bzw. 3.xx von 0153h-01EFh. Im Folgenden wird dieser Bereich erläutert. Zum Auslesen der Daten aus vorhandenen kompilierten Programmen habe ich ein kurzes Perl-Programm geschrieben (s.u.). 
 + 
 +Die Strings sind wie in Pascal üblich längendefiniert (1. Byte = Länge). Länge 00 kennzeichnet einen leeren String.
  
 <code> <code>
-#                    ;Screen-Installationsbereich +0124  AFrequency:     DEFW    4               ;Operating frequency of CPU (1-12 MHz) 
-#                    ;---------------------------- + 
-#                     +                  ;Screen-Installationsbereich 
-#                    ;Terminal >> +                  ;---------------------------- 
-#  0153  TermTypStr: DEFB 20,'No Terminal selected' +                   
-#  0168  Width: DEFB 80 ;Bildschirmbreite (1-256) +                  ;Terminal >> 
-#  0169  Height: DEFB 24 ;Bildschirmhoehe  (1-256) +0153  TermTypStr:    DEFB    20,'No Terminal selected' 
-#  016A   DEFB 0 ;wozu das? +0168  Width:         DEFB    80              ;Bildschirmbreite (1-256) 
-#         +0169  Height:        DEFB    24              ;Bildschirmhoehe  (1-256) 
-#  016B  InitialStr: DEFS 16 +016A                 DEFB                  ;wozu das? 
-#  017B  ResetStr: DEFS 16 +       
-#         +016B  InitialStr:    DEFS    16 
-#        ;Cursor >> +017B  ResetStr:      DEFS    16 
-#  018B  CursorStr: DEFS 16 ;Muster fuer Cursor-Positionierung +       
-#  019B  BinaryAddr: DEFB 0 ;0=ASCII, 1=Binary address +      ;Cursor >> 
-#  019C  ColumnOff: DEFB 0 +018B  CursorStr:     DEFS    16              ;Muster fuer Cursor-Positionierung 
-#  019D  LineOff: DEFB 0 +019B  BinaryAddr:    DEFB                  ;0=ASCII, 1=Binary address 
-#  019E  XPosition: DEFB 0 ;Pos. in Muster +019C  ColumnOff:     DEFB    
-#  019F  YPosition: DEFB 0 ; " +019D  LineOff:       DEFB    
-#  01A0  DelayCursor: DEFW 0 ;Delay after cursor address (0-255 ms) +019E  XPosition:     DEFB                  ;Pos. in Muster 
-#         +019F  YPosition:     DEFB                        
-#        ;Line >> +01A0  DelayCursor:   DEFW                  ;Delay after cursor address (0-255 ms) 
-#  01A2  ClearScrStr: DEFS 6 ;Clear screen +       
-#  01A8  HomeStr: DEFS 6 ;Home cursor (Dieser String ist leer, +      ;Line >> 
-#        ;wenn Clear screen schon Home macht) +01A2  ClearScrStr:   DEFS                  ;Clear screen 
-#  01AE  InsLineStr: DEFS 6 ;Insert line +01A8  HomeStr:       DEFS                  ;Home cursor (Dieser String ist leer, 
-#  01B4  DelLineStr: DEFS 6 ;Delete line +                                             ;wenn Clear screen schon Home macht) 
-#  01BA  DelayLine: DEFW 0 ;Delay after Clear, Delete and Insert (0-255 ms) +01AE  InsLineStr:    DEFS                  ;Insert line 
-#         +01B4  DelLineStr:    DEFS                  ;Delete line 
-#        ;Highlight >> +01BA  DelayLine:     DEFW                  ;Delay after Clear, Delete and Insert (0-255 ms) 
-#  01BC  EraToEolStr: DEFS 6 ;Erase to end of line +       
-#  01C2  HLStartStr: DEFS 6 ;Start highlighting +      ;Highlight >> 
-#  01C8  HLEndStr: DEFS 6 ;End highlighting +01BC  EraToEolStr:   DEFS                  ;Erase to end of line 
-#  01CE  DelayHL: DEFW 0 ;Delay after EraToEol and HighLight +01C2  HLStartStr:    DEFS                  ;Start highlighting 
-#                     +01C8  HLEndStr:      DEFS                  ;End highlighting 
-#  01D0  +01CE  DelayHL:       DEFW                  ;Delay after EraToEol and HighLight 
 +                   
 +01D0  
 </code> </code>
 +
 +===== Erläuterungen =====
 +
 +Auszug aus dem Handbuch:
 +
 +**L.2.1 Terminaltyp**
 +
 +Geben Sie den Namen des Terminals ein, das Sie installieren wollen. Wenn Sie 
 +TINST beenden, werden die Werte gespeichert und der Terminalname erscheint auf 
 +der Liste der Terminals. Falls Sie später TURBO Pascal nochmals für das Terminal 
 +installieren müssen, können Sie es auf der Liste anwählen.
 +
 +**L.2.2 Soll ein Initialisierungsstring an das Terminal geschickt
 +werden?**
 +
 +Wenn Sie Ihr Terminal initialisieren wollen, wenn Turbo startet (z.B. um Befehle 
 +auf Funktionstasten zu programmieren), antworten Sie Y auf diese Frage. Wenn 
 +nicht, drücken Sie RETURN.
 +
 +**L.2.3 Soll ein Resetstring an das Terminal geschickt werden?**
 +
 +Hier können Sie einen String definieren, der bei Beendigung von TURBO Pascal an 
 +das Terminal geschickt wird. Die obige Beschreibung des Initialisierungsbefehls 
 +gilt hier ebenfalls.
 +
 +**L.2.4 CURSOR LEAD-IN Befehl**
 +
 +Cursor Lead-in ist eine spezielle Sequenz von Zeichen, die Ihrem Terminal 
 +mitteilt, daß die folgenden Zeichen eine Adresse auf dem Bildschirm sind, auf 
 +die der Cursor plaziert werden soll. Wenn Sie diesen Befehl definieren, werden 
 +Ihnen die folgenden zusätzlichen Fragen gestellt:
 +
 +**L.2.4.1 Soll der CURSOR POSITIONING Befehl zwischen Zeiten- und
 +Spaltenadresse geschickt werden? **
 +
 +Bei einigen Terminals muß der Befehl zwischen 
 +den zwei Zahlen, die die Reihen- und Spaltencursoradresse definieren, stehen.
 +
 +**L2.4.2 Soll der CURSOR POSITIONING Befehl nach der Zeile und Spalte
 +geschickt werden ?**
 +
 +Bei einigen Terminals muß der Befehl nach der Definition der Zeilen- und 
 +Spaltenadresse des Cursor stehen.
 +
 +**L.2.4.3 Spalte zuerst?**
 +
 +Bei den meisten Terminals muß die Adresse in folgendem Format stehen: zuerst 
 +REIHE, dann SPALTE. Wenn dies bei Ihrem Terminal so ist, antworten Sie mit N. 
 +Wenn Ihr Terminal zuerst die SPALTE benötigt und darin die REIHE, antworten Sie 
 +Y.
 +
 +**L.2.4.4 Offset der ersten Zeilennummer**
 +
 +Geben Sie die Zahl ein, die zur Zeilenadresse addiert werden soll.
 +
 +**L.2.4.5 Offset der ersten Spalte**
 +
 +Geben Sie sie Zahl ein, die zur Spaltenadresse addiert werden soll.
 +
 +**L.2.4.6 Binäre Adresse?**
 +
 +Den meisten Terminals muß die Cursoradresse in binärer Form geschickt werden. 
 +Falls das auch für Ihr Terminal gilt, geben Sie Y ein. Wenn Ihr Terminal die 
 +Cursoradresse in ASCII Ziffern erwartet, geben Sie N ein. Sie werden dann 
 +zusätzlich gefragt:
 +
 +**L.2.4.6.1 2 oder 3 ASCII Ziffern?**
 +
 +Geben Sie die Anzahl von ASCII-Ziffern in der Cursoradresse Ihres Terminals
 +an.
 +
 +**L.2.5 CLEAR SCREEN Befehl**
 +
 +Geben Sie den Befehl ein, der den gesamten Bildschirminhalt löscht (wenn nötig 
 +sowohl für den Vorder-, als auch für den Hintergrund).
 +
 +**L.2.6 Führt CLEAR SCREEN auch den Cursor in HOME Position?**
 +
 +Dies ist normalerweise der Fall; wenn dies für Ihr Terminal nicht zutrifft, 
 +geben Sie N ein und definieren den Cursor HOME Befehl.
 +
 +**L.2.7 DELETE LINE Befehl**
 +
 +Geben Sie den Befehl ein, der die Cursor-Zeile ganz löscht.
 +
 +**L.2.8 INSERT LINE Befehl**
 +
 +Geben Sie den Befehl ein, der an der Cursorposition eine ganze Zeile einfügt.
 +
 +**L.2.9 ERASE TO END OF LINE Befehl**
 +
 +Geben Sie den Befehl ein, der die Zeile von der Cursorposition bis zum rechten
 +Zeilenende löscht.
 +
 +**L.2.10 START OF 'LOW VIDEO' Befehl**
 +
 +Wenn Ihr Terminal über verschiedene Bildintensitäten verfügt, dann geben Sie 
 +hier den Befehl ein, der den Bildschirm abdunkelt. Wenn dieser Befehl definiert 
 +ist, wird die folgende Frage gestellt:
 +
 +**L.2.10.1 START OF 'NORMAL VIDEO' Befehl**
 +
 +Definieren Sie den Befehl, der den Bildschirm auf Normalbild setzt.
 +
 +**L.2.11 Zahl der Zeilen auf Ihrem Bildschirm**
 +
 +Geben Sie die Zahl der horizontalen Zeilen Ihres Terminals an.
 +
 +**L.2.12 Zahl der Spalten auf Ihrem Bildschirm**
 +
 +Geben Sie die Zahl der vertikalen Spaltenpositionen an.
 +
 +**L.2.13 Verzögerung nach CURSOR ADDRESS (0-255ms):\\
 +Verzögerung nach CLEAR, DELETE und INSERT (0-255ms):\\
 +Verzögerung nach ERASE TO END OF LINE und HIGHLIGHT On/Off (o255 ms)**
 +
 +Geben Sie die gewünschte Verzögerung in Millisekunden für die angegebenen 
 +Funktionen ein. <RETURN> bedeutet Null (keine Verzögerung).
 +
 +**L.2.15 Arbeitsfrequenz Ihres Mikroprozessors in MHz (für
 +Verzögerungen)**
 +
 +Da die weiter oben angegebenen Verzögerungen von der Arbeitsfrequenz Ihrer CPU 
 +abhängen, müssen Sie diesen Wert definieren. Die Installation ist beendet, die 
 +Installationsdaten werden auf die Diskette geschrieben und Sie kehren in das 
 +höhere Menü zurück (siehe Abschnitt 1.6). Die Installationsdaten sind auch in 
 +der Installationsdatendatei gespeichert. Das neue Terminal erscheint in der 
 +Terminalwahlliste bei zukünftigen TINST-Läufen.
 +
 +
 +
 +===== Beispiele =====
 +
 +| 0153 | TermTypStr:  ^ 13,ADDS 20/25/30  ^ 4,ANSI  (=DEC Rainbow, 8 bit)      ^ 18,Kaypro with hilite ^ 19,Wyse WY-100/200/300 ^ 16,PC 1715 IWF/Jahn |
 +| 0168 | Width:       | 80                | 80                                 | 80                    | 80                     | 80                  |
 +| 0169 | Height:      | 24                | 24                                 | 24                    | 24                     | 24                  |
 +| 016A | ???:         | 0                 | 0                                  | 0                     | 0                      | 0                   |
 +| 016B | InitialStr:  | 03,1B,'0','P'     | 00                                 | 00                    | 00                     | 00                  |
 +| 017B | ResetStr:    | 00                | 00                                 | 00                    | 00                     | 00                  |
 +| 018B | CursorStr:   | 04,1B,'Y',00,00   | 08,1B,'[','0','0',';','0','0','H'  | 04,1B,'=',00,00       | 04,1B,'=',00,00        | 03,1B,00,00         |
 +| 019B | BinaryAddr:  | 1                 | 0                                  | 1                     | 1                      | 1                   |
 +| 019C | ColumnOff:   | 32                | 1                                  | 32                    | 32                     | 128                 |
 +| 019D | LineOff:     | 32                | 1                                  | 32                    | 32                     | 128                 |
 +| 019E | XPosition:   | 3                 | 7                                  | 4                     | 4                      | 3                   |
 +| 019F | YPosition:   | 4                 | 4                                  | 3                     | 3                      | 2                   |
 +| 01A0 | DelayCursor: | 0                 | 0                                  | 0                     | 0                      | 0                   |
 +| 01A2 | ClearScrStr: | 01,0C             | 04,1B,'[','2','J'                  | 01,1A                 | 02,1B,'*'              | 01,0C               |
 +| 01A8 | HomeStr:     | 00                | 03,1B,'[','f'                      | 00                    | 00                     | 00                  |
 +| 01AE | InsLineStr:  | 00                | 04,1B,'[','1','L'                  | 04,0D,1B,'E',0D       | 02,1B,'E'              | 00                  |
 +| 01B4 | DelLineStr:  | 00                | 04,1B,'[','1','M'                  | 02,1B,'R'             | 02,1B,'R'              | 00                  |
 +| 01BA | DelayLine:   | 0                 | 0                                  | 0                     | 0                      | 0                   |
 +| 01BC | EraToEolStr: | 02,1B,'K'         | 03,1B,'[','K'                      | 01,18                 | 02,1B,'T'              | 01,16               |
 +| 01C2 | HLStartStr:  | 00                | 04,1B,'[','1','m'                  | 03,1B,'C','1'         | 02,1B,')'              | 00                  |
 +| 01C8 | HLEndStr:    | 00                | 04,1B,'[','0','m'                  | 03,1B,'B','1'         | 02,1B,'('              | 00                  |
 +| 01CE | DelayHL:     | 0                 | 0                                  | 0                     | 0                      | 0                   |
  
 **Beispiel PC 1715** **Beispiel PC 1715**
Zeile 58: Zeile 216:
 018B  CursorStr:   03,1B,00,00             <- 3 Zeichen: ESC,128+Y,128+X 018B  CursorStr:   03,1B,00,00             <- 3 Zeichen: ESC,128+Y,128+X
 019B  BinaryAddr:  1                       <- X und Y werden binär angegeben 019B  BinaryAddr:  1                       <- X und Y werden binär angegeben
-019C  ColumnOff:   128                     <- die 128 ist zu zu addieren +019C  ColumnOff:   128                     <- die 128 ist zu zu addieren 
-019D  LineOff:     128                     <- die 128 ist zu zu addieren+019D  LineOff:     128                     <- die 128 ist zu zu addieren
 019E  XPosition:                         <- Position des X-Werts im CursorStr 019E  XPosition:                         <- Position des X-Werts im CursorStr
 019F  YPosition:                         <- Position des Y-Werts im CursorStr 019F  YPosition:                         <- Position des Y-Werts im CursorStr
Zeile 68: Zeile 226:
 01B4  DelLineStr:  00 01B4  DelLineStr:  00
 01BA  DelayLine:   0 01BA  DelayLine:   0
-01BC  EraToEolStr: 01,16+01BC  EraToEolStr: 01,16                   <- 1 Zeichen: ^V
 01C2  HLStartStr:  00 01C2  HLStartStr:  00
 01C8  HLEndStr:    00 01C8  HLEndStr:    00
Zeile 100: Zeile 258:
 01CE  DelayHL:     0 01CE  DelayHL:     0
 </code> </code>
-Zum Auslesen dient ein kleines Perl-Programm terminal_info.pl. 
  
 +**Beispiele Pascal880s**
 +
 +<code>
 +125
 +0153  TermTypStr:  15,PC 1715 / 1715W
 +0168  Width:       80
 +0169  Height:      24
 +016A  ???:         0
 +016B  InitialStr:  03,1B,'^','P'
 +017B  ResetStr:    03,1B,'^','@'
 +018B  CursorStr:   03,1B,00,00
 +019B  BinaryAddr:  1
 +019C  ColumnOff:   128
 +019D  LineOff:     128
 +019E  XPosition:   3
 +019F  YPosition:   2
 +01A0  DelayCursor: 0
 +01A2  ClearScrStr: 01,0C
 +01A8  HomeStr:     00
 +01AE  InsLineStr:  00
 +01B4  DelLineStr:  00
 +01BA  DelayLine:   0
 +01BC  EraToEolStr: 01,16
 +01C2  HLStartStr:  00
 +01C8  HLEndStr:    00
 +01CE  DelayHL:     0
 +</code>
 +
 +<code>
 +125
 +0153  TermTypStr:  20,KC85+D004/KC compact
 +0168  Width:       80
 +0169  Height:      24
 +016A  ???:         0
 +016B  InitialStr:  01,85
 +017B  ResetStr:    01,84
 +018B  CursorStr:   03,1B,00,00
 +019B  BinaryAddr:  1
 +019C  ColumnOff:   128
 +019D  LineOff:     128
 +019E  XPosition:   3
 +019F  YPosition:   2
 +01A0  DelayCursor: 0
 +01A2  ClearScrStr: 01,0C
 +01A8  HomeStr:     00
 +01AE  InsLineStr:  00
 +01B4  DelLineStr:  00
 +01BA  DelayLine:   0
 +01BC  EraToEolStr: 01,16
 +01C2  HLStartStr:  00
 +01C8  HLEndStr:    00
 +01CE  DelayHL:     0
 +</code>
 +
 +Zum Auslesen dient ein kleines Perl-Programm {{:cpm:turbo_pascal:terminal_info.zip|terminal_info.pl}}.
 +
 +*2024* die Version terminal_info2.pl erkennt die Turbo-Pascal-Version, mit der compiliert wurde. Beim Programm turbo.com werden außerdem die aktuell eingerichteten Editierkommandos angezeigt.
  
  • cpm/turbo_pascal/tinst.1317051234.txt.gz
  • Zuletzt geändert: 2011/09/26 15:33
  • von volkerp