{-------------------------------------------------------------}
{
{    Telnet Falado
{
{    Variáveis Globais
{
{    Autor: Jose' Antonio Borges
{
{    Em 24/04/98
{
{-------------------------------------------------------------}

unit tnvars;

interface
uses dvcrt, dvWin, sysutils, winsock;

const VERSAO = '3.4c';

{-------------------------------------------------------------}
{                     variaveis globais
{-------------------------------------------------------------}

const
    NADA_CHEGOU  = 0;
    CHEGOU_TECLA = 1;		{ indicadores de eventos }
    CHEGOU_REDE  = 2;

    BUFSIZE = 1024;		{ tamanho do buffer de rede }
    TAMBUF_TEXTOCHEGADO = 65000;

var
    sock: integer;			{ descritor do soquete }
    emulando: boolean;    		{ desligado quando se quer terminar }
    nomeComput: string;                 { nome fantasia do computador remoto }
    nomeHost: array [0..128] of char;	{ nome verdadeiro do host }
    buf: array [0..BUFSIZE] of char;	{ buffer de recepcao de mensagens }
    porta: integer;                     { porta do servidor }

{-------------------------------------------------------------}
{	 caracteres de controle do protocolo (IACs)
{-------------------------------------------------------------}

const
    WILLTEL = #251;
    WONTTEL = #252;
    DOTEL   = #253;
    DONTTEL = #254;
    IAC     = #255;

    SUBNEG   = #250;
    SUBEND   = #240;

{ unica opcao de negociacao que preciso tratar }

    ECHO     = #1;
    TERMTYPE = #24;
    TT_IS    = #0;

{ codigos das teclas ALT }
const
    ALT_A = #30;
    ALT_Z = #44;

const
    letrasAlt: array [16..50] of char = (
          'Q','W','E','R','T','Y','U','I','O','P','*','*','*','*',
          'A','S','D','F','G','H','J','K','L','*','*','*','*','*',
          'Z','X','C','V','B','N','M');

    ALTCODES: array ['A'..'Z'] of byte = (
        $1E, $30, $2E, $20, $12, $21, $22, $23, $17, $24,
        $25, $26, $32, $31, $18, $19, $10, $13, $1F, $14,
        $16, $2F, $11, $2D, $15, $2C);

type
    TTYPE = (TERM_ANSI, TERM_TI, TERM_HP);

    PCmdAlt = ^TCmdAlt;
    TCmdAlt = record
        letra: char;
        xchave, ychave: integer;
        chave: string [80];
        acao: string [16];
    end;

    TModoFala = (falaNormal, falaLynx, falaTudo, FalaCalado, falaMudo);

var
    modoFala, salvaModoFala, modoDefault: TModoFala;
    soletrando: boolean;
    nomeArqTelas, nomeArqLynx, nomeArqAlt: shortString;

    acumulaTeclado: boolean;
    enterCRLF: boolean;
    usaAcentos: boolean;
    tipoTerm: TTYPE;
    numLinhasTerm: integer;
    bufTeclas: string;
    teclaGuard: string [16];

    ultxcur, ultycur: integer;
    esperaFala: integer;

    arqAuto: text;
    autoArquiva: boolean;

    tamTabAlt: integer;
    tabAlt: array [1..200] of PCmdAlt;
    debugging: boolean;
    colbip: integer;
    pgupComCtl: boolean;
    delayBusca: integer;
    fazendoBreak: boolean;

    bufTextoChegado: array [0..TAMBUF_TEXTOCHEGADO-1] of char;
    pInsTextoChegado, pRetTextoChegado: integer;
    tnetvoxConfigs: string;
implementation

end.
