{--------------------------------------------------------}
{
{    Programa de impressao braille
{
{    Autor: Jose' Antonio Borges
{
{    Em 1994/95
{
{--------------------------------------------------------}

{$M 16384,8192}

program BraiVox;
uses winDos, dvCrt, dvWin, winProcs, strings, brVars, brMsg, brConfig, brImprime;

{--------------------------------------------------------}
{          inicializacao e abertura de arquivos
{--------------------------------------------------------}

procedure inicializa;
var resp, c2: char;
    i: integer;
    s: string;
label fim;
begin
    sintInic (0, sintambiente ('BRAIVOX', 'DIRBRAIVOX'));

    clrscr;
    setWindowText (crtWindow, 'BRAIVOX');
    delay (200);

    writeln ('--------------------------------------');
    mensagem ('BRINTRO', 0);    {'Programa de impressão Braille - v ...'}
    sintWriteln (versao);
    writeln ('--------------------------------------');
    writeln;

    if paramcount = 1 then
        nomearq := paramstr(1)
    else
        begin
            mensagem ('BRNOMARQ', 1);    {'Digite o nome do arquivo a imprimir: '}
            sintReadln (nomearq);
            if nomearq = '' then
                goto fim;
        end;

    assign (arq, nomearq);
    {$i-}  reset (arq);  {$i+}
    if ioresult <> 0 then
        begin
            mensagem ('BRARQNAO', 1);    {'Arquivo não foi achado'}
            goto fim;
        end;
    close (arq);

    mensagem ('BRARQIMP', 1);     {'Nome do arquivo ou dispositivo de saida (sugiro PRN): '}
    sintReadln (nomesai);
    if nomesai = '' then nomesai := 'PRN';

    s := maiuscAnsi (nomesai);
    impressaoDireta := (s = 'PRN') or (s = 'LPT1') or (s = 'LPT2') or (s = 'LPT3') or
       (s = 'COM1') or  (s = 'COM2');

    assign (arqsai, nomesai);
    {$i-}  rewrite(arqsai);  {$i+}
    if ioresult <> 0 then
        begin
            mensagem ('BRERRCRI', 1);   {'Erro ao criar arquivo de impressão.  Programa cancelado.'}
            goto fim;
        end;

    assumeParamDefaults;

    mensagem ('BRPADRAO', 0);   {'Assumo valores padrão (s/n) ? '}
    sintLeTecla (resp, c2);
    writeln;
    if (resp <> '') and (upcase (resp) = 'N') then
        pedeParametros;

    sobraAnterior := '';
    exit;

fim:
    delay (2000);
    sintFim;
    doneWinCrt;
end;

{--------------------------------------------------------}
{                   programa principal
{--------------------------------------------------------}

var i: integer;
    s: string;
begin
    inicializa;

    for i := 1 to ncopias do
        begin
            reset (arq, 1);
            impressao;
            close (arq);

            mensagem ('BRFIMCOP', 1);    {'Fim de impressão da copia '}
            if ncopias <> 1 then
                sintWriteInt (i);
            writeln;

            if i < ncopias then reset (arq);
        end;

    if not impressaoDireta then
        close (arqsai);

    mensagem ('BRFIMTRA', 1);    {'Fim de trabalho'}

    delay (2000);
    while sintFalando do;
    sintFim;
    doneWinCrt;
end.
