• Need help with LordMenu utility

    From Donald Tidmore@1:261/38 to All on Saturday, December 30, 2006 00:15:50
    I need to know if anyone with a LOT of Pascal coding experience can try their hand at fixing the LordMenu utility. I've tried to do it and have no idea how to do it. Its written for compilation in either Turbo Pascal or Borland Pascal, and neither one has any known way to force the program to write strings
    of ANSI characters to a file, so that the file does not contain lines longer than 128 spaces.

    Michael Preslar found out back in 2005 when LORDMENU's 3rdalt.txt files stopped
    working with LORD v4.07 (beta at the time), that the problem was that LordMenu was writing lines to the file that were a thousand or so characters long per line. And as a result, LORD started choking on the files.

    I tried once to rewrite Lordmenu using Virtual Pascal, but could not figure out
    how to do that correctly. I would appreciate it very much if someone could fix
    the stupid program permanently to write ansi lines that would not exceed 128 spaces in length.

    I've got the program's source code online at my Castle Camelot web-site. URL is
    http://www.fidotel.com/public/camelot/IGM-Code/lm2-code.zip

    Please let me know if anyone is able to figure out a solution to this problem.
    Various people including Jay Hodges and Michael Preslar have tried to fix LordMenu, but to date, no one has succeeded in fixing the 3rdalt.txt problem.
    Thanks, Donald.

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Donald Tidmore@1:261/38 to All on Saturday, December 30, 2006 00:15:00
    MSGID: 1:261/38 15cf92f7
    REPLY: 1:112/91.0 45945db4
    TZUTC: -0500
    CHARSET: LATIN-1
    I need to know if anyone with a LOT of Pascal coding experience can try their hand at fixing the LordMenu utility. I've tried to do it and have no idea how to do it. Its written for compilation in either Turbo Pascal or Borland Pascal, and neither one has any known way to force the program to write strings of ANSI characters to a file, so that the file does not contain lines longer than 128 spaces.

    Michael Preslar found out back in 2005 when LORDMENU's 3rdalt.txt files stopped working with LORD v4.07 (beta at the time), that the problem was that LordMenu was writing lines to the file that were a thousand or so characters long per line. And as a result, LORD started choking on the files.

    I tried once to rewrite Lordmenu using Virtual Pascal, but could not figure out how to do that correctly. I would appreciate it very much if someone could fix the stupid program permanently to write ansi lines that would not exceed 128 spaces in length.

    I've got the program's source code online at my Castle Camelot web-site. URL is http://www.fidotel.com/public/camelot/IGM-Code/lm2-code.zip

    Please let me know if anyone is able to figure out a solution to this problem. Various people including Jay Hodges and Michael Preslar have tried to fix LordMenu, but to date, no one has succeeded in fixing the 3rdalt.txt problem. Thanks, Donald.

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Björn Felten@2:203/2 to Donald Tidmore on Wednesday, January 03, 2007 00:26:09
    I need to know if anyone with a LOT of Pascal coding experience can try their hand at fixing the LordMenu utility.

    Sure, I'd be happy to help.

    Pascal or Borland Pascal, and neither one has any known way to force the program to write strings of ANSI characters to a file, so that the file does not contain lines longer than 128 spaces.

    The obvious solution to this is not to use files of type 'text' but rather the "normal" 'file', and then add the CR/LFs to the file in the code.

    I've got the program's source code online at my Castle Camelot web-site. URL is http://www.fidotel.com/public/camelot/IGM-Code/lm2-code.zip

    I downloaded it, compiled it (there seems to be an EXEC.PAS missing, but I managed to program around it), and ran it with no problems.

    Can you please add some more info about the problem?

    - Exactly what error message (if any) do you get?

    - Do I need some special data file in order to force it to "choke"?

    - What memory sizes are you using?

    - Do you get the same error/problem regardless of platform you compile it to?

    Those for starters... :)

    ---
    * Origin: news://felten.yi.org (2:203/2)
  • From Scott Adams@1:112/91 to Donald Tidmore on Thursday, January 04, 2007 01:30:32
    Quoting Donald Tidmore to All <=-

    I need to know if anyone with a LOT of Pascal coding experience can
    try their hand at fixing the LordMenu utility. I've tried to do it
    and have no idea how to do it. Its written for compilation in either Turbo Pascal or Borland Pascal, and neither one has any known way to
    force the program to write strings of ANSI characters to a file, so
    that the file does not contain lines longer than 128 spaces.
    Michael Preslar found out back in 2005 when LORDMENU's 3rdalt.txt
    files stopped working with LORD v4.07 (beta at the time), that the
    problem was that LordMenu was writing lines to the file that were a thousand or so characters long per line. And as a result, LORD
    started choking on the files.
    I tried once to rewrite Lordmenu using Virtual Pascal, but could not figure out how to do that correctly. I would appreciate it very much
    if someone could fix the stupid program permanently to write ansi
    lines that would not exceed 128 spaces in length.
    I've got the program's source code online at my Castle Camelot
    web-site. URL is http://www.fidotel.com/public/camelot/IGM-Code/lm2-code.zip
    Please let me know if anyone is able to figure out a solution to this problem. Various people including Jay Hodges and Michael Preslar have tried to fix LordMenu, but to date, no one has succeeded in fixing the 3rdalt.txt problem. Thanks, Donald.

    Would've helped to see the code here. I'll forget to go to the
    URL :). But doing Ansi isn't that hard. Have you checked
    out Swag it has a whole section just on Ansi source codes.


    ... "I'm paying off karma at a vastly accelerated rate" - Ivanova.
    --- Fringe BBS
    * Origin: EWOG II - The Fringe - 904-733-1721 (1:112/91)
  • From Donald Tidmore@1:261/38 to Bj÷rn Felten on Thursday, January 04, 2007 01:52:24
    I need to know if anyone with a LOT of Pascal coding experience can try
    their hand at fixing the LordMenu utility.
    Sure, I'd be happy to help.
    ..... <snip>

    I downloaded it, compiled it (there seems to be an EXEC.PAS missing, but I managed to program around it), and ran it with no problems.

    I don't have the actual EXEC.PAS file. Its something that Charlie Wardick created or found somewhere. I have a TPU file for it, which I use all the time.
    Its in this archive for LPEDIT: http://www.fidotel.com/public/camelot/CodeBack/lpe-unit.zip. Its required by the Chasware Library code that Charlie created, which I use all the time.

    Can you please add some more info about the problem?
    - Exactly what error message (if any) do you get?

    There's no error message in regards to LordMenu's usage. It creates the 3rdalt.txt fine one would think from the lack of error messages. But when one tries to actually use it in LORD, Lord chokes on it. Preslar has explained to me it applies to all versions of LORD eventually, but always to LORD 4.07/4.08 beta. LORD expects the ansi code to end in 128 spaces per line, and when it gets a thousand characters in each line of the file, it does not like it much.
    Usage of a 3rdalt.txt is built into LORD, so the data file has to use the TXT extension. But I suppose one could rewrite Lordmenu to write an intermediary ANS file, limiting it to 128 spaces maximum per line. And then resave that as 3rdalt.txt. But I get headaches every time I try to fix the program myself, either actual ones or figurative ones.

    - Do I need some special data file in order to force it to "choke"?

    Not that I know of. But the Lordmenu-created 3rdalt.txt file even causes programs like Pablo Draw to choke. I have not used in over a year, but Thedraw
    didn't like the 1,000 characters per line file much either.

    - What memory sizes are you using?

    Not completely sure on that one. I think that i used the default
    memory settings for it that are used by BPW.EXE: Real Mode, 16384 bytes Stack Size; 0 Low Heap Limit; 655,360 High Heap Limit.

    - Do you get the same error/problem regardless of platform you compile it
    to? > Those for starters... :)

    I believe I tried one time to compile lordmenu.pas in Virtual pascal, but had no luck figuring out how exactly to do it. And Free pascal v2.00 won't compile
    the Chasware Library code files at all (chasattr.pas and chasware.pas) and I have no ideas as to how to fix that situation.

    Hope the additional information is helpful. Donald

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Björn Felten@2:203/2 to Donald Tidmore on Thursday, January 04, 2007 12:01:42
    I don't have the actual EXEC.PAS file. Its something that Charlie
    Wardick created or found somewhere. I have a TPU file for it, which I
    use all the time.

    I understood that it is one of those gazillion of variants of performing 'exec' with different memory saving tricks (swap, EMS and so on). Tricks that are no longer needed so I always recommend removing this stuff and rather use the standard 'exec' function.

    There's no error message in regards to LordMenu's usage. It creates the 3rdalt.txt fine one would think from the lack of error messages. But
    when one tries to actually use it in LORD, Lord chokes on it.

    Ahhh... I see, so it's not really the LM program that needs to be fixed, but
    the LORD itself -- you need a fix around a serious bug in LORD, yes? No source code for that I imagine?

    I'll see what I can do about it...

    ---
    * Origin: news://felten.yi.org (2:203/2)
  • From Donald Tidmore@1:261/38 to Scott Adams on Friday, January 05, 2007 23:53:10
    Would've helped to see the code here. I'll forget to go to the
    URL :). But doing Ansi isn't that hard. Have you checked
    out Swag it has a whole section just on Ansi source codes.
    ... "I'm paying off karma at a vastly accelerated rate" - Ivanova.

    The program itself is fairly short, so I'll copy it here from the Wordpad program for you. http://www.fidotel.com/public/camelot/IGM-Code/lpe-code.zip archive online has the Chasattr.pas and Chasware.pas files that I used with the
    program, and LordLock is the basic unit from DDIGM and DDPLUS. The basic problem is that I don't really understand the code -- created by Robert Fogt over a dozen years ago, -- especially in regards to how it creates the 3rdalt.txt file. The end-result however will not work in LORD due to the individual lines going up to 1,000 spaces each.

    Bjorn Felten thinks he can solve the problem by having the program write the ansi strings to an *.ANS file, and then changing its filename to 3rdalt.txt. I just don't do ANSI coding very much, so its been difficult to fix the program myself. And others who have tried are busy with other projects, or they don't have a working solution yet. SO I really appreciate your help guys with the situation. Lloyd Hannesson was handling the program but he got tired of BBS's and LORD stuff, and retired completely from doing both in Fall 2005. Donald. ===============================================================

    PROGRAM lordmenu; {December 2005 Beta}

    USES dos, crt, LordLock, ChasWare;

    CONST version = '`%Version `$1.32 Beta';

    Compile_Date: STRING = 'December 04, 2005.';

    var flag,miscint, x, y : integer;
    newok : boolean;
    { s: string; } {disabled 12/04/05}
    datafile : text;
    backup : text;
    menu : text;
    igms : text;
    test : text;
    lordpath : string;
    mych : char;
    saveexit:pointer;
    RIP : boolean;
    igmcount : integer;

    Data_String: STRING[255]; {12/04/05}
    Program_Path: STRING; {12/04/05: Path info for lordmenu.dat config
    file}
    Party_Path_FN: STRING; {12/04/05: Path info for 3rdparty.dat}
    Text_File_FN: STRING; {12/04/05: Path info for ANSI or RIP text fi le}
    { ==================================================================== =======
    ===== }


    PROCEDURE LWRITE(s: STRING); {Added 12/04/05 from lordstat.pas}
    VAR f,g,h: STRING;
    Done: BOOLEAN;
    q: BYTE;
    BEGIN
    Done:= FALSE;

    IF NOT POS('`',S) > 0 THEN
    BEGIN
    WRITELN(s);
    EXIT;
    END;

    REPEAT
    IF s[POS('`',S)+1] IN ['0','1','2','3','4','5','6','7','8','9','!','@','#', '$','%'] THEN
    BEGIN
    g:= '';

    FOR Q:= 1 TO POS('`',S)-1 DO
    g:= g + s[q];

    WRITE(G);

    CASE s[POS('`',S)+1] OF
    '1': TextColor(1); {Color: 1 - Dark Blue}
    '2': TextColor(2); {Color: 2 - Dark Green}
    '3': TextColor(3); {Color: 3 - Dark Cyan}
    '4': TextColor(4); {Color: 4 - Dark Red/Magenta}
    '5': TextColor(5); {Color: 5 - Dark Violet}
    '6': TextColor(6); {Color: 6 - Brown}
    '7': TextColor(7); {Color: 7 - Light Gray}
    '8': TextColor(8); {Color: 8 - Dark Gray}
    '9': TextColor(9); {Color: 9 - Light Blue}
    '0': TextColor(10); {Color: 10 - Light Green}
    '!': TextColor(11); {color: 11 - Light Cyan}
    '@': TextColor(12); {Color: 12 - Bright Red}
    '#': TextColor(13); {Color: 13 - Light Violet}
    '$': TextColor(14); {color: 14 - Yellow}
    '%': TextColor(15); {color: 15 - White}
    END; {CASE}

    f:= '';

    FOR Q:= (POS('`',S)+2) to Length(s) DO
    f:= f + s[q];

    s:= f;
    END; {IF S[....] - Ending}

    UNTIL POS('`',S) = 0;

    WRITE(s);
    END; { LWrite ====================================== }

    { 11/22/05: Fixed indentation to here. 05:19 pm }


    PROCEDURE LWriteLn(s: STRING); {Added 12/04/05 from lordstat.pas}
    VAR f,g,h: STRING;
    Done: BOOLEAN;
    q: BYTE;
    BEGIN
    Done:= FALSE;

    IF NOT POS('`',S) > 0 THEN
    BEGIN
    WRITELN(s);
    EXIT;
    END;

    REPEAT
    IF s[POS('`',S)+1] IN ['0','1','2','3','4','5','6','7','8','9','!','@' ,'#','$
    ','%'] THEN
    BEGIN
    g:= '';

    FOR Q:= 1 TO POS('`',S)-1 DO
    g:= g + s[q];

    WRITE(G);

    CASE s[POS('`',S)+1] OF
    '1': TextColor(1);
    '2': TextColor(2);
    '3': TextColor(3);
    '4': TextColor(4);
    '5': TextColor(5);
    '6': TextColor(6);
    '7': TextColor(7);
    '8': TextColor(8);
    '9': TextColor(9);
    '0': TextColor(10);
    '!': TextColor(11);
    '@': TextColor(12);
    '#': TextColor(13);
    '$': TextColor(14);
    '%': TextColor(15);
    END; {CASE}

    f:= '';

    FOR Q:= (POS('`',S)+2) to Length(s) DO
    f:= f + s[q];

    s:= f;
    END;
    UNTIL POS('`',S) = 0;

    WRITELN(s);
    END; {LWriteLn ====================================== }


    procedure myexit;
    begin
    ExitProc:=Saveexit;

    clrscr;

    halt(0);
    end; {myexit}


    function UCase(s:string) : string;
    var plz : integer;
    zlp : string;
    begin
    for plz := 1 to length(s) do zlp[plz]:= upcase(s[plz]); UCase := zlp;
    end; {UpCase}


    function sgoto_xy(x,y:integer) : string; var
    s,s2: string;
    begin
    s:=#27+'[';
    str(y,s2);
    s:=s+s2;
    str(x,s2);
    s:=s+';'+s2+'f';
    sgoto_xy := s;
    end; {sgoto_xy}


    function lord2ansi(s: string): string; var az : integer;
    bz : char;
    cz : string[255]; {12/04/05: Changed from STRING; to STRING[255]; DG T}
    begin
    cz:='';
    for az := 1 to length(s) do begin
    if s[az]='`' then begin
    bz:=s[az+1];
    case bz of
    '1' : cz:=cz+'[0;40;34m';
    '2' : cz:=cz+'[0;40;32m';
    '3' : cz:=cz+'[0;40;36m';
    '4' : cz:=cz+'[0;40;31m';
    '5' : cz:=cz+'[0;40;35m';
    '6' : cz:=cz+'[0;40;33m';
    '7' : cz:=cz+'[0;40;37m';
    '8' : cz:=cz+'[1;40;30m';
    '9' : cz:=cz+'[1;40;34m';
    '0' : cz:=cz+'[1;40;32m';
    '!' : cz:=cz+'[1;40;36m';
    '@' : cz:=cz+'[1;40;31m';
    '#' : cz:=cz+'[1;40;35m';
    '$' : cz:=cz+'[1;40;33m';
    '%' : cz:=cz+'[1;40;37m';
    end; {case bz}
    end; {color}
    if (s[az-1]<>'`') and (s[az]<>'`') then cz:=cz+s[az];
    end; {length s}

    lord2ansi:=cz;
    end; {lord2ansi}


    function stripped(t : string) : string; begin
    for miscint := 1 to length(t) do if t[miscint] ='`' then delete(t,miscint,2); stripped := t;
    end; {stripped}


    Procedure GetNewColor(ch1,ch2 : char;flag:byte;var f,b:byte;var newok:boolean);
    var
    sb,c:byte;
    begin
    newok:=true;
    case ch2 of
    '1'..'9' : c:=byte(ch2)-48;
    '0': c:=10;
    '!': c:=11;
    '@': c:=12;
    '#': c:=13;
    '$': c:=14;
    '%': c:=15;
    '^': if flag=1 then c:=0;
    else
    NewOk:=false;
    end;

    case ch1 of
    '`' : if c<>b then f:=c;
    '~' : begin
    sb:=c mod 8;
    if sb<>f then
    b:=sb;
    end;
    end;
    end;


    (* {replaced by LWrite and LWriteln. 12/04/05}
    Procedure SWriteColors;
    var
    j,f,b:byte;
    ch1,ch2,c3:char;
    newyes:boolean;
    begin
    f:=7;b:=0;
    c3:='~'; if flag=0 then c3:='`';
    if x > 0 then GotoXy(x,y);
    textcolor(f);textbackground(b);
    for j:=1 to length(Data_String) do
    begin
    ch1:=Data_String[j];
    If (ch1 in ['`',c3]) and (j<length(Data_String)) then
    begin
    ch2:=Data_String[j+1];
    GetNewColor(ch1,ch2,flag,f,b,newyes);
    If newyes then
    begin
    textcolor(f);textbackground(b);
    inc(j);
    end;
    end
    else
    write(ch1);
    if wherex >79 then exit;
    end;
    if x=0 then BLANK(1);
    end; { SWriteColors ========================================== } *)


    (* function fileExists(var s : string) : boolean; {Replaced by EXIST function 12/04/05}
    begin
    fileExists := fSearch(s, '') <> '';
    end; *)


    procedure make_menu;
    var xyz, t: string;
    begin
    clrscr;
    Party_Path_FN:=lordpath+'3RDPARTY.DAT';

    IF NOT EXIST(Party_Path_FN) then
    begin
    LWriteLn(' `!You need to set the correct path to `@LORD `!bef ore making the
    menu.');
    LWriteLn(' `%-=<`9press a key`%>=-');

    mych:=readkey;
    mych:=#0;

    EXIT;
    end; {not file exists 3rdparty.dat}

    LWriteLn(' `!Writing file now ....');

    ASSIGN(test,'LMTEST.TXT');
    REWRITE(test);
    Party_Path_FN:=lordpath+'3RDPARTY.DAT';

    ASSIGN(igms,Party_Path_FN);
    reset(igms);

    WHILE not eof(igms) do
    begin
    readln(igms,Data_String);
    if (pos(';',Data_String) <> 1) and (Data_String <> '') then writeln(test,Data_String);
    end; {not eof(igms)}

    CLOSE(igms);
    CLOSE(test);


    Text_File_FN:= lordpath+'3RDALT.TXT';

    IF EXIST(Text_File_FN) then begin
    ASSIGN(backup,lordpath+'3RDALT.BAK');
    REWRITE(backup);
    ASSIGN(menu,Text_File_FN);
    reset(menu);

    WHILE not eof(menu) do begin
    readln(menu,Data_String);
    writeln(backup,Data_String);
    end; {eof(menu)}

    CLOSE(menu);CLOSE(backup);

    BLANK(1);

    LWriteLn(' `!Old menu saved as 3RDALT.BAK');

    BLANK(1);
    end; {3rdalt.txt exists}

    ASSIGN(menu,Text_File_FN);
    REWRITE(menu);

    if RIP then begin
    writeln(menu,'[0;30;40m[2J');
    writeln(menu,'');
    write(menu,'!|1K|*|w0000270L02|1B0Z0E020QOY0209000F080700000F0700000Z|Y0000010 0');
    write(menu,'|1U2T8W00000000<>0<>0|1U3X8W00000000<>1<>1|1U518W00000000<>2<>2');
    write(menu,'|1U658W00000000<>3<>3|1U798W00000000<>4<>4|1U8D8W00000000<>5<>5');
    write(menu,'|1U9H8W00000000<>6<>6|1UAL8W00000000<>7<>7|1UBP8W00000000<>8<>8');
    write(menu,'|1UCT8W00000000<>9<>9|1UDX8W00000000<>0<>0');
    write(menu,'|1B1Y0E020QOY020A000F080700000F0700001Y|1U0Q8W00000000<><enter><>^ M');
    writeln(menu,'|1UF18W00000000<><enter><>^M|#|#|#');
    end; {rip}

    write(menu,'[?7h[40m[2J[0;34m░░░░░░░░░░░░░░░░░░░░░░░░░░ [1;46m▒[5C▒[40m▀[46m▒[3C▒[40m▀[46m▒[3C▒[40m▀▄ [s'); write(menu,'[u[0;34m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░[2;1H▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ [1;46m▓[40m▄▄ ▄ [46m▓[40m▄[s');
    write(menu,'[u[46m▓[1C[40m▄ [46m▓[40m▀▄ ▄ [46m▓[40m▄▀ ▄ [0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒[3;1H▓▓▓▓▓▓▓▓▓▓▓▓[s'); write(menu,'[u▓▓▓▓▓▓▓▓▓▓▓▓▓▓ [1;37mChoose your path wisely [0;34m▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓');


    x:=3;
    y:=4;
    igmcount:=0;

    ASSIGN(igms,'LMTEST.TXT');
    reset(igms);

    WHILE not eof(igms) do begin
    inc(igmcount);
    if (((igmcount-1) mod 40) = 0) and (igmcount<>1) then begin
    if rip then write(menu,sgoto_xy(1,5)) else write(menu,sgoto_xy(1,2));
    for miscint:=1 to 23 do writeln(menu,'');
    write(menu,'[?7h[40m[2J[0;34m░░░░░░░░░░░░░░░░░░░░░░░░░░ [1;46m▒[5C▒[40m▀[46m▒[3C▒[40m▀[46m▒[3C▒[40m▀▄ [s');
    write(menu,'[u[0;34m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░[2;1H▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒
    ▒▒▒▒▒ [1;46m▓[40m▄▄ ▄ [46m▓[40m▄[s');
    write(menu,'[u[46m▓[1C[40m▄ [46m▓[40m▀▄ ▄ [46m▓[40m▄▀ ▄ [0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒[3;1H▓▓▓▓▓▓▓▓▓▓▓▓[s');
    write(menu,'[u▓▓▓▓▓▓▓▓▓▓▓▓▓▓ [1;37mChoose your path wisely [0;34m▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓');
    x:=3;
    y:=4;
    end;

    readln(igms,Data_String);
    readln(igms,Data_String);

    if ((igmcount mod 2)=0) then x:=42
    else
    begin x:=3; BLANK(1);
    end;

    str(igmcount,xyz);
    if (pos('$$$ LORDOPOLY $$$',ucase(stripped(Data_String)))>0)
    then LWriteLn(' `0$$$ `9LORD`%opoly `0$$$')

    else if (pos('LORD COUNTY FAIR:',ucase(stripped(Data_String)))>0)
    then LWriteLn(' `!LORD COUNTY FAIR:')

    else if (pos('SEARCH THE FOREST FOR VIOLET',ucase(stripped(Data_String) ))>0)
    then LWriteLn(' `%Search for `#Violet`2''s `0Cottage');

    write(menu,sgoto_xy(x,y)+'[1;40;37m[[1;40;36m'+xyz+'[1;40;37m][40;37m '+lord2ansi(Data_String));
    end; {eof(igms)}
    CLOSE(igms);

    writeln(menu,'[0;40;37m');

    CLOSE(menu);

    ASSIGN(test,'LMTEST.TXT');
    {$I-}
    erase(test);
    {$I+}
    x:=0;

    BLANK(1);

    LWriteLn(' `!Completed `%... `!The `$Other Places `!in `@LORD `!now uses the');
    LWriteLn(' `!menu I created `%... `!Go play `@LORD `!and check it out.');

    BLANK(1);

    LWriteLn(' `%-=<`9press a key`%>=-');

    mych:=readkey;
    mych:=#0;
    end; {make_menu}


    begin {main program}

    LWriteLn(' `!Loading `%.....');

    SaveExit:=Exitproc;
    ExitProc:=@myexit;

    Party_Path_FN:='3RDPARTY.DAT';

    IF NOT EXIST(Party_Path_FN) then
    begin
    Program_Path:='LORDMENU.DAT';

    IF NOT EXIST(Program_Path) then
    begin
    ASSIGN(datafile, 'LORDMENU.DAT');
    REWRITE(datafile);
    CLOSE(datafile);
    end; {no lordmenu.dat}

    ASSIGN(datafile,'LORDMENU.DAT');
    reset(datafile);
    read(datafile,lordpath);
    CLOSE(datafile);

    end {no 3rdparty.dat}
    else begin
    Lordpath := paramstr(0);
    delete(lordpath,pos('LORDMENU.EXE',lordpath),12);
    end;{3rdparty.dat found}

    Party_Path_FN:=lordpath+'3RDPARTY.DAT';
    IF NOT EXIST(Party_Path_FN) then lordpath := '`$UNKNOWN!! `%set this first.';

    repeat

    clrscr;

    LWriteLn(' `!Lord Menu '+version+' `%by `$Donald Tidmore.');
    BLANK(1); {12/04/05}

    (* x:=(length(stripped(Data_String)) div 2);
    y:=2; {12/04/05: changed 3 to 2. Y is Line N umber.}
    SwriteColors; *)
    x:=5;
    y:=4; {12/04/05: Changed Y from 5 to 4.}

    LWriteLn(' `0Lord Menu `!creates an alternate menu that is displayed by '); LWriteLn(' `@LORD `!when a player enters `!Other Places `0from the main menu.');

    BLANK(1);
    LWriteLn(' `!You must have the game of `@LORD `!version 3.50 or higher '); LWriteLn(' `!installed on your system.');

    BLANK(1);
    LWriteLn(' `!You must run this program every time you add or remove an IGM.');
    LWriteLn(' `!Or when you change IGM entry lines inside the 3rdparty.dat file.');

    BLANK(1);
    LWriteLn(' `@[`$1`@] `0LORD Path: `$'+LordPath);
    LWriteLn(' `#Note: `%Change the LORD Path if it is not correct.');

    LWriteLn(' `@[`$2`@] `0Create Menu `!with RIP support');
    LWriteLn(' `@[`$3`@] `0Create Menu `!without RIP support');
    LWriteLn(' `@[`$4`@] `0Uninstall LORD Menu.');
    LWriteLn(' `@[`$5`@] `0Quit');

    BLANK(1);
    LWriteLn(' `!Option 2 is the preferred menu. `0Only use option 3 if you hate RIP');

    BLANK(1);
    LWriteLn(' `!Enter 1,2,3,4,5 or Q `%(for Quit) `0-=> `$ ');

    mych:=readkey;
    mych:=upcase(mych);

    IF Mych = 'Q' THEN Mych:= '5'; {12/04/05}

    case mych of
    '1' : begin
    clrscr;x:=0;

    gotoxy(1,5);
    LWriteLn(' `!Enter the path to your `!LORD directory');

    readln(lordpath);
    if not (lordpath[length(lordpa th)]='\') then lordpath:=lordpath+'\';

    Party_Path_FN:= lordpath+'3RDP ARTY.DAT';

    IF NOT EXIST(Party_Path_FN) th en begin
    BLANK(1);
    LWriteLn(' `!ERROR!! Could not find 3rdparty.dat, incorrect path');

    BLANK(1);

    LWriteLn(' `%-=<`9press a ke y`%>=-');

    mych:=readkey;
    mych:=#0;
    lordpath := '`$UNKNOWN!! `%se t this first.';
    end;{not fileexists}
    end; {1}

    '2' : begin
    RIP:=TRUE;
    make_menu;
    end; {2}

    '3' : begin
    RIP:=FALSE;
    make_menu;
    end; {3}

    '4' : begin
    x:=0;
    clrscr;

    BLANK(1);
    Text_File_FN:=lordpath+'3RDALT .TXT';

    IF EXIST(Text_File_FN)
    then begin
    ASSIGN(menu,Text_File_ FN);
    {$I-}
    erase(menu);
    {$I+}
    if ioresult <> 0 then begin
    LWriteLn(' `! ERROR Could not delete 3rdalt.txt, you must delete the file from DOS.');

    end {ioresult < >0}
    else begin LWri teLn(' `!Successful...3rdalt.txt deleted... LORD is
    back to normal.');

    end;

    BLANK(1);
    LWriteLn(' `%-=<`9pr ess a key`%>=-');

    mych:=readkey;
    mych:=#0;
    end {file 3rdalt.txt e xists}
    else begin

    LWriteLn(' `!Could n ot find 3rdalt.txt!!!!');

    BLANK(1);

    LWriteLn(' `!Either LORD menu has not been installed, or the Path is incorrect.');

    BLANK(1);
    LWriteLn(' `%-=<`9pr ess a key`%>=-');


    mych:=readkey;
    mych:=#0;
    end; {3rdalt.txt does not exist}
    end; {4}

    '5' : begin
    Party_Path_FN:= '3RDPARTY.DAT' ;

    IF NOT EXIST(Party_Path_FN) th en begin
    ASSIGN(datafile, 'LORDMENU.DAT ');
    REWRITE(datafile);
    write(datafile,lordpath);
    CLOSE(datafile);
    halt(0);
    end; {no 3rdparty.dat}
    halt(0);
    end; {5}
    end; {case}
    until ((mych='Q') and (mych='R'));

    end. {main program}


    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Donald Tidmore@1:261/38 to Bj÷rn Felten on Friday, January 05, 2007 23:59:06
    I don't have the actual EXEC.PAS file. Its something that Charlie
    Wardick created or found somewhere. I have a TPU file for it, which I
    use all the time.
    I understood that it is one of those gazillion of variants of performing 'exec' with different memory saving tricks (swap, EMS and so on). Tricks that are no longer needed so I always recommend removing this stuff and rather use the standard 'exec' function.
    There's no error message in regards to LordMenu's usage. It creates the
    3rdalt.txt fine one would think from the lack of error messages. But
    when one tries to actually use it in LORD, Lord chokes on it.
    Ahhh... I see, so it's not really the LM program that needs to be fixed, but
    the LORD itself -- you need a fix around a serious bug in LORD, yes? No source
    code for that I imagine?
    I'll see what I can do about it...

    The only person legally and contractually allowed to work on the LORD programs is Michael Preslar, who develops it for Metropolis Gameport. Lordmenu used to work reliably with LORD until the last year of v4.07's development, in regards to the 3rdalt.txt file. Then LORD started choking on it. I think it was around the same time that Michael changed to Free Pascal v2.00 for LORD programming, and it is much fussier about things than Borland Pascal is. As far as I know, there's no problem with the RIP file that the program makes. I've never used LORD with RIP graphics, so have no idea if that part of the program still works or not.

    If I understand what Michael told me in early 2006 about Lord's problem with the 3rdalt.txt it was that LORD expects to see ansi string data lines that don't exceed 128 spaces maximum per line. So when it tries to load the file that has 1,000-space lines, it literally chokes on it. But I have no idea how to make a program write fixed length ansi lines to a file to cover that situation. Donald.

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Björn Felten@2:203/2 to Donald Tidmore on Sunday, January 07, 2007 05:15:03
    If I understand what Michael told me in early 2006 about Lord's problem with the 3rdalt.txt it was that LORD expects to see ansi string data
    lines that don't exceed 128 spaces maximum per line. So when it tries
    to load the file that has 1,000-space lines, it literally chokes on it.

    At first I didn't notice that you kept on saying "spaces", so I assumed it was just a case of not assigning enough space for a read-line procedure.

    But now that I've noticed that this seems to be a "space" (aka character #32) issue, I'm starting to get really puzzled.

    1. Why in Heavens Name would anyone want to write 128, and even 1000, spaces
    *on* *one* *line* ?

    2. Why would the L.O.R.D. program care about what it sends, as long as it can read all the data that it shall send? Spaces or no spaces?

    The default(?) 3rdalt.txt file that your program generates has two long lines (400 and 466 characters long), do you mean that those lines are not a problem for the L.O.R.D. program?

    ---
    * Origin: news://felten.yi.org (2:203/2)
  • From Scott Adams@1:112/91 to Donald Tidmore on Thursday, January 11, 2007 00:14:45
    Quoting Donald Tidmore to Scott Adams <=-

    Would've helped to see the code here. I'll forget to go to the
    URL :). But doing Ansi isn't that hard. Have you checked
    out Swag it has a whole section just on Ansi source codes.
    ... "I'm paying off karma at a vastly accelerated rate" - Ivanova.

    The program itself is fairly short, so I'll copy it here from the
    Wordpad program for you. http://www.fidotel.com/public/camelot/IGM-Code/lpe-code.zip archive
    online has the Chasattr.pas and Chasware.pas files that I used with
    the program, and LordLock is the basic unit from DDIGM and DDPLUS.
    The basic problem is that I don't really understand the code --
    created by Robert Fogt over a dozen years ago, -- especially in
    regards to how it creates the 3rdalt.txt file. The end-result however will not work in LORD due to the individual lines going up to 1,000
    spaces each.

    Yeah. That's probably the biggest issue. Most line feeds
    in code only got 128 characters. I'm not sure why he
    would make lines that big.

    Bjorn Felten thinks he can solve the problem by having the program
    write the ansi strings to an *.ANS file, and then changing its
    filename to 3rdalt.txt. I just don't do ANSI coding very much, so its
    been difficult to fix the program myself. And others who have tried
    are busy with other projects, or they don't have a working solution
    yet. SO I really appreciate your help guys with the situation. Lloyd Hannesson was handling the program but he got tired of BBS's and LORD stuff, and retired completely from doing both in Fall 2005. Donald.

    Did you check out SWAG the ansi section? If I recall it has
    a whole file on ansi codes and pretty easy to figure out.
    If Bjorn can't help you I'll see what i can. But the file
    and code is big. If you have specific questions or something
    for me to look for please let me know. Otherwise i'd just
    be reading line by line and not sure what to look for
    exactly. :)

    Is it just the Ansi stuff?


    ... Bad DM!: Hey! You're hogging the chips... What do you mean "I DIE??!?
    --- Fringe BBS
    * Origin: EWOG II - The Fringe - 904-733-1721 (1:112/91)
  • From mark lewis@1:3634/12 to Donald Tidmore on Thursday, January 11, 2007 11:30:09

    LORD expects the ansi code to end in 128 spaces per line, and when
    it gets a thousand characters in each line of the file, it does not
    like it much. Usage of a 3rdalt.txt is built into LORD, so the
    data file has to use the TXT extension. But I suppose one could
    rewrite Lordmenu to write an intermediary ANS file, limiting it to
    128 spaces maximum per line. And then resave that as 3rdalt.txt.
    But I get headaches every time I try to fix the program myself,
    either actual ones or figurative ones.

    looks to me like you are coming at it the hard way... what is wrong with simply
    cutting the strings at 126 characters and putting them into the file?? there's no reason to use any intermediate files for anything... renamed or not... the routine should not be all that hard, either...

    )\/(ark


    * Origin: (1:3634/12)
  • From Donald Tidmore@1:261/38 to Bj÷rn Felten on Thursday, January 11, 2007 23:42:10

    At first I didn't notice that you kept on saying "spaces", so I assumed it was just a case of not assigning enough space for a read-line procedure.
    But now that I've noticed that this seems to be a "space" (aka character
    #32) issue, I'm starting to get really puzzled.
    1. Why in Heavens Name would anyone want to write 128, and even 1000, spaces *on* *one* *line* ?

    I honestly can't remember details on why its a problem. I just know that when I run LordMenu and create a 3rdalt.txt file with it, then LORD won't display it. You get a few words on a line, and that's all. And it may be that ansi files have to be limited to lines that are 255 spaces long. I probably got mixed up when I said 128-space lines.

    2. Why would the L.O.R.D. program care about what it sends, as long as it
    can read all the data that it shall send? Spaces or no spaces?
    The default(?) 3rdalt.txt file that your program generates has two long
    lines (400 and 466 characters long), do you mean that those lines are not a problem for the L.O.R.D. program?

    I just don't know the answer to your second question. But when I load the Lordmenu-created 3rdalt.txt file into Qedit, I see individual lines that are each 1,000 spaces in length. That may just be a Qedit thing. All I know for sure is that I can't figure out how to fix the situation on my own.

    I tried loading the file made by LordMenu into Pablo Draw. It just shows one single line of ansi gibberish when I did that. I can't find anything in its small docs file about how to resave files to use a defined-length for each line
    of data. As for TheDraw, when I tried to use it, I never could figure out how to make it NOT save ANSI files in animated mode, which always resulted in ANS files that were way too big.

    I just hoped that someone with more experience working with ANSI data would know how to fix the program so it worked reliably. But so far that does not seem to be happening. Is it time to "stick a fork in it, say its done, and toss Lordmenu in the trash?" I wonder that now and then. Donald.

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Donald Tidmore@1:261/38 to Scott Adams on Thursday, January 11, 2007 23:52:20

    Did you check out SWAG the ansi section? If I recall it has
    a whole file on ansi codes and pretty easy to figure out.
    If Bjorn can't help you I'll see what i can. But the file
    and code is big. If you have specific questions or something
    for me to look for please let me know. Otherwise i'd just
    be reading line by line and not sure what to look for
    exactly. :)
    Is it just the Ansi stuff?

    I just don't understand ANSI file editing very well, so I've not tried to figure out solutions to the issue. I tried for a full month to do this and that with the original Lordmenu code I got from Robert Fogt, but nothing would work. As far as I know, the data file it creates in RIP mode works fine. And I have no idea if it would make any difference if it wrote the file as 3rdalt.ans or not.

    I tried renaming Lordmenu's 3rdalt.txt file to 3rd_alt.ans, and viewing it in Pablo Draw. I have around 27 igms installed in my Lord game - most of them are
    either mine or ones that i have loved using for years. Anyway, all that displays in PABLO is the colored letters for L.O.R.D., the phrase/line "Choose your path wisely", and one single line of IGM entries. Which is for the last two igms in the file. The other 26 igm entries don't get shown on the screen.
    The same thing happens when LORD itself tries to display that 3rdalt.txt file.


    Is it possible in Borland Pascal to write the ansi symbols to a buffer, that only holds 255 characters? Write the buffer's content to a file, and clear the
    buffer. Then repeat the process until every line of the 3rdparty.dat that is processed by LORDMENU has been translated into ANSI characters, and written to a file? That's the only thing I think would work, but I don't know how to put it into pascal code statements to see if that concept would work. Donald

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Dennis Collins@3:770/355 to Donald Tidmore on Saturday, January 13, 2007 03:09:00
    Hi Donald

    Load the ansi file into TheDraw, to change from animation mode it's ALT-J followed by 'Normal'. then simply do a file save in 'Ansi' mode select when prompted 'None' then simply enter the max line length in bytes.

    The door I have under devolopment currently uses limited length ansi files
    also the file extension doesn't matter.

    cheers Dennis

    ... "I can't C!" screamed the blinded programmer.
    --- FMail 1.48
    * Origin: The Maze BBS... Christchurch... New Zealand (3:770/355)
  • From Sean Dennis@1:18/200 to Dennis Collins on Friday, January 12, 2007 14:07:51
    Hello, Dennis.

    13 Jan 07 03:09, you wrote to Donald Tidmore:

    The door I have under devolopment currently uses limited length ansi
    files also the file extension doesn't matter.

    I was told years ago to keep the ANSI under 70 chars in length for each line, but I've found that to be very problematic with certain BBS software for some reason. When I do ANSI stuff for my doors, I generally go with 65 characters. But I've been thinking about just putting everything into one big DAT (resource) file for speed and efficency...if I ever get back to writing doors again. :)

    Later,
    Sean

    //sean@outpostbbs.net | http://outpostbbs.net | ICQ: 19965647

    --- GoldED/2 3.0.1
    * Origin: Outpost BBS - Johnson City, TN - bbs.outpostbbs.net (1:18/200)
  • From Björn Felten@2:203/2 to Donald Tidmore on Saturday, January 13, 2007 20:29:10
    1. Why in Heavens Name would anyone want to write 128, and even 1000,
    spaces
    *on* *one* *line* ?

    I honestly can't remember details on why its a problem.

    I'm not asking you why it's a problem (after all that's for me to find out, no? :) ) I'm asking you what good 128, or even 1000, *SPACES* (the ones you create with the long key at mid bottom of your keyboard) will do. Are you sure you don't mean *CHARACTERS* ?

    I tried loading the file made by LordMenu into Pablo Draw.

    As I said before, LordMenu does nothing wrong. It produces perfect ANSI sequences -- at least when I run it. If L.O.R.D. chokes, it's *THAT* program that has a serious bug.

    Can you send me a copy of one of your problem 3rdalt-files, maybe I might have better luck solving your problem. If you don't know how to send it via FidoNet you can try sending it to "b (at) felten (dot) se".

    I just hoped that someone with more experience working with ANSI data would know how to fix the program so it worked reliably.

    But of course! No problem. If only I get satisfactory answers to my question. :)

    ---
    * Origin: news://felten.yi.org (2:203/2)
  • From Donald Tidmore@1:261/38 to Dennis Collins on Saturday, January 13, 2007 14:29:08
    Hi Donald
    Load the ansi file into TheDraw, to change from animation mode it's ALT-J followed by 'Normal'. then simply do a file save in 'Ansi' mode select when prompted 'None' then simply enter the max line length in bytes.
    The door I have under devolopment currently uses limited length ansi files also the file extension doesn't matter.
    cheers Dennis
    ... "I can't C!" screamed the blinded programmer.

    I tried that, but it did not work. There's no "Normal" setting in the ALT-J Animation Menu. And saving 3rdalt.txt (created by Lordmenu) in ANSI mode, with
    255 max bytes per line, using an output file 3rd_alt.txt did not help any. When I loaded 3rd_Alt.txt, it looked just like the original file. Shows "L.O.R.D." in squashed ascii characters, the phrase line "Choose your path wisely", then it just shows the final line for the menu. Which is entries 27 followed by 26. I have 27 igms installed.

    On the ALT-J menu, the only choices are R(everse scan), F(lip mirrors...), Top,
    Left, Clock, Circles, Checkerboard, Angle, Gate, Pyramid, Squares, Scrambled, Door, Diamond, Wiggle, and Wiggle-Out. None of which make any sense to me. Am
    I supposed to edit the 3rdalt.txt in Thedraw using an ANS extension? Donald

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Dennis Collins@3:770/355 to Donald Tidmore on Sunday, January 14, 2007 18:56:00
    Hi Donald Load the ansi file into TheDraw, to change from
    On the ALT-J menu, the only choices are R(everse scan),
    F(lip mirrors...), Top, Left, Clock, Circles, Checkerboard,
    Angle, Gate, Pyramid, Squares, Scrambled, Door, Diamond,
    Wiggle, and Wiggle-Out. None of which make any sense to me.

    ahhhhhhh ok then TheDraw is NOT in animation mode, if you select any of the effects listed eg Door then it will convert the currently loaded ansi into an animated ansi, if you then ALT-J the Normal prompt will show up.

    Am I supposed to edit the 3rdalt.txt in Thedraw using an
    ANS extension? Donald

    I have the lord menu util here, will have a look at the 3rdalt file format and see if I can point you in the right direction.

    cheers Dennis

    ... A fool and his money are SYSOP material.
    --- FMail 1.48
    * Origin: The Maze BBS... Christchurch... New Zealand (3:770/355)
  • From Dennis Collins@3:770/355 to Donald Tidmore on Sunday, January 14, 2007 19:11:00

    Am I supposed to edit the 3rdalt.txt in Thedraw using an
    ANS extension? Donald

    NO the draw doesn't care about the file extension.

    Ok I have just had a look at LordMenu and the 3rdalt.txt file, it is a standard ansi file except with a TXT extension, I ran LordMenu on my system and then simply opened the 3rdalt.txt file in thedraw. It showed as an ansi screen with no problems.

    cheers Dennis

    ... "Windows Performance", on the next "In Search Of".
    --- FMail 1.48
    * Origin: The Maze BBS... Christchurch... New Zealand (3:770/355)
  • From Donald Tidmore@1:261/38 to Bj÷rn Felten on Tuesday, January 16, 2007 23:16:08
    I'm not asking you why it's a problem (after all that's for me to find
    out, > no? :) ) I'm asking you what good 128, or even 1000, *SPACES* (the ones you >create with the long key at mid bottom of your keyboard) will do. Are you sure > you don't mean *CHARACTERS* ?

    I wasn't used to thinking in terms of characters or bytes in terms of line lengths. Yes, I meant characters of data per line. LordMenu itself is not exactly broken, as I have been told by Dennis Collins and others. It is simply
    that LORD can not handle the file because its individual lines are too long. I
    think, but am not positive, that the problem started when Michael Preslar switched to Free Pascal 2.00 for his Lord development work.

    When LordMenu creates 3rdalt.txt, it writes the ANSI sequences made from translating the data (igm names and menu position numbers only) from the LORD 3rdparty.dat file into ANSI. Trouble is that in Borland Pascal, there is no standard method that I know of for writing a specific number of characters to a
    line before a CR/LF is added, and a new line of data is written. And if there is a way to compile the program in Virtual Pascal or Free Pascal I don't know if that would change anything.

    Can you send me a copy of one of your problem 3rdalt-files, maybe I
    might > have better luck solving your problem. If you don't know how to send it via > FidoNet you can try sending it to "b (at) felten (dot) se".

    I'll send you an archive containing those files tonight via email. I've done that today already for Dennis Collins who also is trying to fix the problem for
    me. And I appreciate a great deal your help Bjorn, and that of everyone else who has looked into this matter for me.

    I've been told that all versions of LORD have the problem with the 3rdalt.txt file having those extremely long lines of data, but have not personally been able to verify that is true. Donald

    --- BBBS/LiI v4.01 Flag-5
    * Origin: Prism bbs (1:261/38)
  • From Scott Adams@1:112/91 to Donald Tidmore on Tuesday, January 16, 2007 23:59:14
    Quoting Donald Tidmore to Scott Adams <=-

    Did you check out SWAG the ansi section? If I recall it has
    a whole file on ansi codes and pretty easy to figure out.
    If Bjorn can't help you I'll see what i can. But the file
    and code is big. If you have specific questions or something
    for me to look for please let me know. Otherwise i'd just
    be reading line by line and not sure what to look for
    exactly. :)
    Is it just the Ansi stuff?

    I just don't understand ANSI file editing very well, so I've not tried
    to figure out solutions to the issue. I tried for a full month to do this and that with the original Lordmenu code I got from Robert Fogt,
    but nothing would work. As far as I know, the data file it creates in
    RIP mode works fine. And I have no idea if it would make any
    difference if it wrote the file as 3rdalt.ans or not.

    You checked out SWAG like I suggested? Theres also old websites
    out there teaching Ansi codes and such. Many of the old
    Ansi Artist groups did tutorials as well.

    I must admit I only studied them slightly enough to get
    what I needed at the time. Like a Reboot util for the
    BBS or other Utils. I've drawn wimpy ansis but never
    studied in depth.

    I tried renaming Lordmenu's 3rdalt.txt file to 3rd_alt.ans, and
    viewing it in Pablo Draw. I have around 27 igms installed in my Lord
    game - most of them are either mine or ones that i have loved using
    for years. Anyway, all that displays in PABLO is the colored letters
    for L.O.R.D., the phrase/line "Choose your path wisely", and one
    single line of IGM entries. Which is for the last two igms in the
    file. The other 26 igm entries don't get shown on the screen. The
    same thing happens when LORD itself tries to display that 3rdalt.txt
    file.

    Sounds like it is reading the first 26 but since the last 2 entries
    are the typical string length (256) they only display the
    last two lines. This might be a good clue. Sounds like
    the program is not doing line feeds or separators and so
    reading it one screen. Hrm...Unfournately I'm swamped this
    week but maybe before I close the BBS down on 2/1 I can
    look at the loop code for this you sent. Might have more
    time next week.

    Is it possible in Borland Pascal to write the ansi symbols to a
    buffer, that only holds 255 characters? Write the buffer's content to
    a file, and clear the buffer. Then repeat the process until every
    line of the 3rdparty.dat that is processed by LORDMENU has been
    translated into ANSI characters, and written to a file? That's the
    only thing I think would work, but I don't know how to put it into
    pascal code statements to see if that concept would work. Donald

    Well if you do a Loop to read a line of string or just a set number
    say 256. I'm looking at my 3rd data file and I see one line
    per entry. So if some reason they are 1000 characters long
    then it sounds like its reading 5 lines from that one line. Sounds
    like whatever program is doing it isn't putting a End of Line
    character in place.

    I'll try to get back to this when I get time....





    ... "The year is 2258. The name of the place is Babylon 5."
    --- Fringe BBS
    * Origin: EWOG II - The Fringe - 904-733-1721 (1:112/91)