Unit Emulvt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Program: EMULVT.PAS Object: Delphi component which does Ansi terminal emulation Not every escape sequence is implemented, but a large subset. Author: François PIETTE Email: francois.piette@ping.be http://www.rtfm.be/fpiette francois.piette@f2202.n293.z2.fidonet.org 2:293/2202@fidonet.org, BBS +32-4-3651395 Creation: May, 1996 Version: 2.03 Legal issues: Copyright (C) 1997 by François PIETTE This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented, you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Updates: Jul 22, 1997 Some optimization Adapted to Delphi 3 Sep 05, 1997 Version 2.01 Dec 16, 1997 V2.02 Corrected a bug int the paint routine which caused GDI resource leak when color was used. Feb 24, 1998 V2.03 Added AddFKey function * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Classes

TCustomEmulVT - TCustomEmulVT is an visual component wich does the actual display } { of a TScreen object wich is the virtual screen } { No property is published.
TEmulVT - Same as TCustomEmulVT, but with published properties
TLine - TLine is an object used to hold one line of text on screen
TScreen - TScreen is an object to hold an entire screen of line and handle } { Ansi escape sequences to update this virtual screen

Functions

AddFKey - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
FileToFKeys - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
FKeysToFile - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Register - F8 - FF

Add or remove minus sign before dollar sign to } { generate code for debug message output } {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Types

PFuncKeysTable
PFuncKeyValue
PXlatTable
TFuncKey
TFuncKeysTable
TFuncKeyValue
TKeyBufferEvent
TXlatTable

Constants

BottomMargin
B_BLACK
B_BLINK
B_BLUE
B_BROWN
B_CYAN
B_GREEN
B_MAGENTA
B_RED
B_WHITE
EmulVTVersion
FKeys1
FKeys2
FKeys3
F_BLACK
F_BLUE
F_BROWN
F_CYAN
F_GREEN
F_INTENSE
F_MAGENTA
F_RED
F_WHITE
ibm_iso8859_1_G0
ibm_iso8859_1_G1
LeftMargin
MAX_COL
MAX_ROW
NumPaletteEntries
Output
RightMargin
TopMargin

Variables


Functions


function AddFKey(var FKeys : TFuncKeysTable; ScanCode : Char; Shift : TShiftState; Ext : Boolean; Value : TFuncKeyValue) : Boolean;

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

procedure FileToFKeys(var FKeys : TFuncKeysTable; FName : String);

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

procedure FKeysToFile(var FKeys : TFuncKeysTable; FName : String);

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

procedure Register;

F8 - FF

Add or remove minus sign before dollar sign to } { generate code for debug message output } {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


Types


PFuncKeysTable  = ^TFuncKeysTable

PFuncKeyValue   = ^TFuncKeyValue

PXlatTable      = ^TXlatTable

TFuncKey = record
ScanCode : Char;
Shift : TShiftState;
Ext : Boolean;
Value : TFuncKeyValue;
end;

TFuncKeysTable  = array [0..63] of TFuncKey;

TFuncKeyValue   = String[50]

TKeyBufferEvent = procedure (Sender : TObject; Buffer : PChar; Len : Integer) of object

TXlatTable      = array [0..255] of char;

Constants

BottomMargin = 4

B_BLACK = $00

B_BLINK = $80

B_BLUE = $01

B_BROWN = $06

B_CYAN = $03

B_GREEN = $02

B_MAGENTA = $05

B_RED = $04

B_WHITE = $07

EmulVTVersion = 203

FKeys1 = ( (ScanCode: #$48; Shift: []; Ext: TRUE ; Value: #$1B + '[A'), { UP } (ScanCode: #$50; Shift: []; Ext: TRUE ; Value: #$1B + '[B'), { DOWN } (ScanCode: #$4D; Shift: []; Ext: TRUE ; Value: #$1B + '[C'), { RIGHT } (ScanCode: #$4B; Shift: []; Ext: TRUE ; Value: #$1B + '[D'), { LEFT } (ScanCode: #$49; Shift: []; Ext: TRUE ; Value: #$1B + '[I'), { PREV } (ScanCode: #$51; Shift: []; Ext: TRUE ; Value: #$1B + '[G'), { NEXT } (ScanCode: #$47; Shift: []; Ext: TRUE ; Value: #$1B + '[H'), { HOME } (ScanCode: #$4F; Shift: []; Ext: TRUE ; Value: #$1B + '[F'), { END } (ScanCode: #$52; Shift: []; Ext: TRUE ; Value: #$1B + '[L'), { INS } (ScanCode: #$0F; Shift: []; Ext: FALSE; Value: #$1B + '[Z'), { RTAB } (ScanCode: #$53; Shift: []; Ext: TRUE ; Value: #$7F ), { DEL } (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + '[M'), { F1 } (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + '[N'), (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + '[O'), (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + '[P'), (ScanCode: #$3F; Shift: []; Ext: FALSE; Value: #$1B + '[Q'), (ScanCode: #$40; Shift: []; Ext: FALSE; Value: #$1B + '[R'), (ScanCode: #$41; Shift: []; Ext: FALSE; Value: #$1B + '[S'), (ScanCode: #$42; Shift: []; Ext: FALSE; Value: #$1B + '[T'), (ScanCode: #$43; Shift: []; Ext: FALSE; Value: #$1B + '[U'), (ScanCode: #$44; Shift: []; Ext: FALSE; Value: #$1B + '[V'), { F10 } (ScanCode: #$85; Shift: []; Ext: FALSE; Value: #$1B + '[W'), { F11 } (ScanCode: #$86; Shift: []; Ext: FALSE; Value: #$1B + '[X'), { F12 } (ScanCode: #$3B; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[V'),{ SF1 should be 'Y' } (ScanCode: #$3C; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[Z'), (ScanCode: #$3D; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[a'), (ScanCode: #$3E; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[b'), (ScanCode: #$3F; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[c'), (ScanCode: #$40; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[d'), (ScanCode: #$41; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[e'), (ScanCode: #$42; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[f'), (ScanCode: #$43; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[g'), (ScanCode: #$44; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[h'), (ScanCode: #$85; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[i'), (ScanCode: #$86; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[j'),{ SF10 } (ScanCode: #$3B; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[k'), { CF1 } (ScanCode: #$3C; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[l'), (ScanCode: #$3D; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[m'), (ScanCode: #$3E; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[n'), (ScanCode: #$3F; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[o'), (ScanCode: #$40; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[p'), (ScanCode: #$41; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[q'), (ScanCode: #$42; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[r'), (ScanCode: #$43; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[s'), (ScanCode: #$44; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[t'), (ScanCode: #$85; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[u'), (ScanCode: #$86; Shift: [ssCtrl]; Ext: FALSE; Value: #$1B + '[v'), { CF12 } (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ) )

Function keys (SCO Console)

FKeys2 = ( (ScanCode: #$48; Shift: []; Ext: TRUE ; Value: #$1B + '[A'), { UP } (ScanCode: #$50; Shift: []; Ext: TRUE ; Value: #$1B + '[B'), { DOWN } (ScanCode: #$4D; Shift: []; Ext: TRUE ; Value: #$1B + '[C'), { RIGHT } (ScanCode: #$4B; Shift: []; Ext: TRUE ; Value: #$1B + '[D'), { LEFT } (ScanCode: #$49; Shift: []; Ext: TRUE ; Value: #$1B + '[5~'), { PREV } (ScanCode: #$51; Shift: []; Ext: TRUE ; Value: #$1B + '[6~'), { NEXT } (ScanCode: #$52; Shift: []; Ext: TRUE ; Value: #$1B + '[2~'), { INSERT } (ScanCode: #$53; Shift: []; Ext: TRUE ; Value: #$7F ), { DELETE } (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + 'OP'), { F1->PF1 } (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + 'OQ'), { F2->PF2 } (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + 'OR'), { F3->PF3 } (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + 'OS'), { F4->PF4 } (ScanCode: #$57; Shift: []; Ext: FALSE; Value: #$1B + '[28~'), { F11->Aide } (ScanCode: #$58; Shift: []; Ext: FALSE; Value: #$1B + '[29~'), { F12->Exécuter } (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ) )

Alternate function keys (ordinary VT keys)

FKeys3 = ( (ScanCode: #$48; Shift: []; Ext: TRUE ; Value: #$1B + '[A'), { UP } (ScanCode: #$50; Shift: []; Ext: TRUE ; Value: #$1B + '[B'), { DOWN } (ScanCode: #$4D; Shift: []; Ext: TRUE ; Value: #$1B + '[C'), { RIGHT } (ScanCode: #$4B; Shift: []; Ext: TRUE ; Value: #$1B + '[D'), { LEFT } (ScanCode: #$49; Shift: []; Ext: TRUE ; Value: #$1B + '-'), { PREV } (ScanCode: #$51; Shift: []; Ext: TRUE ; Value: #$1B + '+'), { NEXT } (ScanCode: #$47; Shift: []; Ext: TRUE ; Value: #$1B + 'H'), { HOME } (ScanCode: #$47; Shift: [ssCtrl]; Ext: TRUE ; Value: #$1B + 'C'),{ HOME } (ScanCode: #$4F; Shift: []; Ext: TRUE ; Value: #$1B + 'R'), { END } (ScanCode: #$52; Shift: []; Ext: TRUE ; Value: #$1B + 'I'), { INSERT } (ScanCode: #$53; Shift: []; Ext: TRUE ; Value: #$7F ), { DELETE } (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + 'OP'), { F1->PF1 } (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + 'OQ'), { F2->PF2 } (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + 'OR'), { F3->PF3 } (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + 'OS'), { F4->PF4 } (ScanCode: #$43; Shift: []; Ext: FALSE; Value: #$1B + 'OP'), { F9 } (ScanCode: #$44; Shift: []; Ext: FALSE; Value: ''), { F10 } (ScanCode: #$57; Shift: []; Ext: FALSE; Value: #$1B + 'OQ'), { F11 } (ScanCode: #$58; Shift: []; Ext: FALSE; Value: #$1B + 'OS'), { F12 } (ScanCode: #$0F; Shift: []; Ext: FALSE; Value: #$1B + 'Z'), { RTAB } (ScanCode: #$40; Shift: []; Ext: FALSE; Value: #$1B + 'K'), { F6 } (ScanCode: #$53; Shift: [ssCtrl]; Ext: TRUE ; Value: #$1B + 'D'), { CDEL } (ScanCode: #$52; Shift: [ssCtrl]; Ext: TRUE ; Value: #$1B + 'L'), { CINS } (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ), (ScanCode: #$00; Shift: []; Ext: FALSE; Value: '' ) )

A-Series Telnet function keys (ordinary VT100 keys + specials)

F_BLACK = $00

F_BLUE = $01

F_BROWN = $06

F_CYAN = $03

F_GREEN = $02

F_INTENSE = $08

F_MAGENTA = $05

F_RED = $04

F_WHITE = $07

ibm_iso8859_1_G0 = ( #$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, { 00 - 07 } #$08, #$09, #$0A, #$0B, #$0C, #$0D, #$0E, #$0F, { 08 - 0F } #$10, #$11, #$12, #$13, #$14, #$15, #$16, #$17, { 10 - 17 } #$18, #$19, #$1A, #$1B, #$1C, #$1D, #$1E, #$1F, { 18 - 1F } #$20, #$21, #$22, #$23, #$24, #$25, #$26, #$27, { 20 - 27 } #$28, #$29, #$2A, #$2B, #$2C, #$2D, #$2E, #$2F, { 28 - 2F } #$30, #$31, #$32, #$33, #$34, #$35, #$36, #$37, { 30 - 37 } #$38, #$39, #$3A, #$3B, #$3C, #$3D, #$3E, #$3F, { 38 - 3F } #$40, #$41, #$42, #$43, #$44, #$45, #$46, #$47, { 40 - 47 } #$48, #$49, #$4A, #$4B, #$4C, #$4D, #$4E, #$4F, { 48 - 4F } #$50, #$51, #$52, #$53, #$54, #$55, #$56, #$57, { 50 - 57 } #$58, #$59, #$5A, #$5B, #$5C, #$5D, #$5E, #$5F, { 58 - 5F } #$60, #$61, #$62, #$63, #$64, #$65, #$66, #$67, { 60 - 67 } #$68, #$69, #$6A, #$6B, #$6C, #$6D, #$6E, #$6F, { 68 - 6F } #$70, #$71, #$72, #$73, #$74, #$75, #$76, #$77, { 70 - 77 } #$78, #$79, #$7A, #$7B, #$7C, #$7D, #$7E, #$7F, { 78 - 7F } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 80 - 87 } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 88 - 8F } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 90 - 97 } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 98 - 9F } #$B1, #$AD, #$9B, #$9C, #$0F, #$9D, #$B3, #$15, { A0 - A7 } #$20, #$43, #$A6, #$AE, #$AA, #$C4, #$52, #$C4, { A8 - AF } #$F8, #$F1, #$FD, #$20, #$27, #$E6, #$14, #$FA, { B0 - B7 } #$2C, #$20, #$A7, #$AF, #$AC, #$AB, #$20, #$A8, { B8 - BF } #$41, #$41, #$41, #$41, #$8E, #$8F, #$92, #$80, { C0 - C7 } #$45, #$45, #$45, #$45, #$45, #$49, #$49, #$49, { C8 - CF } #$44, #$A5, #$4F, #$4F, #$4F, #$4F, #$4F, #$78, { D0 - D7 } #$ED, #$55, #$55, #$55, #$55, #$59, #$70, #$E1, { D8 - DF } #$85, #$A0, #$83, #$61, #$84, #$86, #$91, #$87, { E0 - E7 } #$8A, #$82, #$88, #$89, #$8D, #$A1, #$8C, #$49, { E8 - EF } #$64, #$A4, #$95, #$A2, #$93, #$6F, #$94, #$F6, { F0 - F7 } #$ED, #$97, #$A3, #$96, #$9A, #$79, #$70, #$98)

Ethernet to screen

ibm_iso8859_1_G1 = ( #$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, { 00 - 07 } #$08, #$09, #$0A, #$0B, #$0C, #$0D, #$0E, #$0F, { 08 - 0F } #$10, #$11, #$12, #$13, #$14, #$15, #$16, #$17, { 10 - 17 } #$18, #$19, #$1A, #$1B, #$1C, #$1D, #$1E, #$1F, { 18 - 1F } #$20, #$21, #$22, #$23, #$24, #$25, #$26, #$27, { 20 - 27 } #$28, #$29, #$2A, #$2B, #$2C, #$2D, #$2E, #$2F, { 28 - 2F } #$30, #$31, #$32, #$33, #$34, #$35, #$36, #$37, { 30 - 37 } #$38, #$39, #$3A, #$3B, #$3C, #$3D, #$3E, #$3F, { 38 - 3F } #$40, #$41, #$42, #$43, #$44, #$45, #$46, #$47, { 40 - 47 } #$48, #$49, #$4A, #$4B, #$4C, #$4D, #$4E, #$4F, { 48 - 4F } #$50, #$51, #$52, #$53, #$54, #$55, #$56, #$57, { 50 - 57 } #$58, #$59, #$5A, #$5B, #$5C, #$5D, #$5E, #$5F, { 58 - 5F } #$60, #$61, #$62, #$63, #$64, #$65, #$66, #$67, { 60 - 67 } #$68, #$69, #$D9, #$BF, #$DA, #$C0, #$C5, #$6F, { 68 - 6F } #$70, #$C4, #$72, #$73, #$C3, #$B4, #$C1, #$C2, { 70 - 77 } #$B3, #$79, #$7A, #$7B, #$7C, #$7D, #$7E, #$7F, { 78 - 7F } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 80 - 87 } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 88 - 8F } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 90 - 97 } #$20, #$20, #$20, #$20, #$20, #$20, #$20, #$20, { 98 - 9F } #$B1, #$AD, #$9B, #$9C, #$0F, #$9D, #$B3, #$15, { A0 - A7 } #$20, #$43, #$A6, #$AE, #$AA, #$C4, #$52, #$C4, { A8 - AF } #$F8, #$F1, #$FD, #$20, #$27, #$E6, #$14, #$FA, { B0 - B7 } #$2C, #$20, #$A7, #$AF, #$AC, #$AB, #$20, #$A8, { B8 - BF } #$41, #$41, #$41, #$41, #$8E, #$8F, #$92, #$80, { C0 - C7 } #$45, #$45, #$45, #$45, #$45, #$49, #$49, #$49, { C8 - CF } #$44, #$A5, #$4F, #$4F, #$4F, #$4F, #$4F, #$78, { D0 - D7 } #$ED, #$55, #$55, #$55, #$55, #$59, #$70, #$E1, { D8 - DF } #$85, #$A0, #$83, #$61, #$84, #$86, #$91, #$87, { E0 - E7 } #$8A, #$82, #$88, #$89, #$8D, #$A1, #$8C, #$49, { E8 - EF } #$64, #$A4, #$95, #$A2, #$93, #$6F, #$94, #$F6, { F0 - F7 } #$ED, #$97, #$A3, #$96, #$9A, #$79, #$70, #$98)

F8 - FF } { Ethernet to screen

LeftMargin = 6

MAX_COL = 132

MAX_ROW = 50

NumPaletteEntries = 16

Output = ( #$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, { 00 - 07 } #$08, #$09, #$0A, #$0B, #$0C, #$0D, #$0E, #$0F, { 08 - 0F } #$10, #$11, #$12, #$13, #$14, #$15, #$16, #$17, { 10 - 17 } #$18, #$19, #$1A, #$1B, #$1C, #$1D, #$1E, #$1F, { 18 - 1F } #$20, #$21, #$22, #$23, #$24, #$25, #$26, #$27, { 20 - 27 } #$28, #$29, #$2A, #$2B, #$2C, #$2D, #$2E, #$2F, { 28 - 2F } #$30, #$31, #$32, #$33, #$34, #$35, #$36, #$37, { 30 - 37 } #$38, #$39, #$3A, #$3B, #$3C, #$3D, #$3E, #$3F, { 38 - 3F } #$40, #$41, #$42, #$43, #$44, #$45, #$46, #$47, { 40 - 47 } #$48, #$49, #$4A, #$4B, #$4C, #$4D, #$4E, #$4F, { 48 - 4F } #$50, #$51, #$52, #$53, #$54, #$55, #$56, #$57, { 50 - 57 } #$58, #$59, #$5A, #$5B, #$5C, #$5D, #$5E, #$5F, { 58 - 5F } #$60, #$61, #$62, #$63, #$64, #$65, #$66, #$67, { 60 - 67 } #$68, #$69, #$6A, #$6B, #$6C, #$6D, #$6E, #$6F, { 68 - 6F } #$70, #$71, #$72, #$73, #$74, #$75, #$76, #$77, { 70 - 77 } #$78, #$79, #$7A, #$7B, #$7C, #$7D, #$7E, #$7F, { 78 - 7F } #$C7, #$FC, #$E9, #$E2, #$E4, #$E0, #$E5, #$E7, { 80 - 87 } #$EA, #$EB, #$E8, #$EF, #$EE, #$EC, #$C4, #$C5, { 88 - 8F } #$C9, #$E6, #$C6, #$F4, #$F6, #$F2, #$FB, #$F9, { 90 - 97 } #$FF, #$F6, #$FC, #$A2, #$A3, #$A5, #$DE, #$20, { 98 - 9F } #$E1, #$ED, #$F3, #$FA, #$F1, #$D1, #$AA, #$BA, { A0 - A7 } #$BF, #$20, #$AC, #$BD, #$BC, #$A1, #$AB, #$BB, { A8 - AF } #$A0, #$A0, #$A0, #$A6, #$A6, #$A6, #$A6, #$AD, { B0 - B7 } #$2B, #$A6, #$A6, #$2B, #$2B, #$2B, #$2B, #$2B, { B8 - BF } #$2B, #$AD, #$AD, #$AD, #$A6, #$AD, #$2B, #$A6, { C0 - C7 } #$2B, #$2B, #$AD, #$AD, #$A6, #$AD, #$2B, #$AD, { C8 - CF } #$AD, #$AD, #$AD, #$2B, #$2B, #$2B, #$2B, #$2B, { D0 - D7 } #$2B, #$2B, #$2B, #$A0, #$A0, #$A0, #$A0, #$A0, { D8 - DF } #$20, #$20, #$20, #$AD, #$20, #$20, #$B5, #$20, { E0 - E7 } #$20, #$20, #$20, #$20, #$20, #$F8, #$20, #$20, { E8 - EF } #$A0, #$B1, #$20, #$20, #$20, #$20, #$F7, #$20, { F0 - F7 } #$B0, #$B0, #$B0, #$20, #$20, #$B2, #$A0, #$20)

F8 - FF } { Keyboard to Ethernet

RightMargin = 6

TopMargin = 4


Variables