program FX80;{   This program will control most of the frequently used -- and also some infrequently used -- configuration parameters for the Epson FX80.  The code compiles 'as is' using TURBO Pascal.  Feel free to modify it in any way.  A nice project might be a font creation routine.  Please get word to me concerning any changes. I'd like to see them.  Go to it!                                  Mark Davis                                  2315 Mtn Oaks Cir                                  Birmingham, AL  35226 }type   Command_type = string[3];   Prompt_type  = string[30];var   Input  : integer;   Exit   : boolean;   Esc    : char;   Command: Command_type;procedure Give_printer(Command: Command_type);{    Sends a string of up to 3 chars to printer }          begin             write(Lst, Esc, Command);          end;function Get_parm(Prompt: Prompt_type): integer;{    Returns an integer taken after prompt     for keyboard input.}var  parm: integer;         begin            textcolor(Yellow);            gotoXY(26,24);            write(Copy(Prompt,1,Length(Prompt)));            readln(parm);            Get_parm := parm;            gotoXY(26,24);            ClrEol;            textcolor(Green);         end;procedure Scrn_put(X,Y:integer; text:Prompt_type);{    Put a menu line on the screen at X,Y     }         begin            gotoXY(X,Y);            writeln(Copy(text,1,Length(text)));         end;begin     Esc := chr(27);     textcolor(Yellow);     textbackground(Black);     Scrn_put(26,2,'EPSON SETUP PROGRAM');     textcolor(Green);     Scrn_put(5,4,' 0 - reset');     Scrn_put(5,5,' 1 - pica');     Scrn_put(5,6,' 2 - elite');     Scrn_put(5,7,' 3 - comp.');     Scrn_put(5,8,' 4 - emph. pica');     Scrn_put(5,9,' 5 - dbl-str. pica');     Scrn_put(5,10,' 6 - dbl-str. elite');     Scrn_put(5,11,' 7 - dbl-str. comp.');     Scrn_put(5,12,' 8 - dbl-str. emphasised pica');     Scrn_put(5,13,' 9 - sngl-str. exp. pica');     Scrn_put(5,14,'10 - sngl-str. exp. elite');     Scrn_put(5,15,'11 - sngl-str. exp. comp.');     Scrn_put(5,16,'12 - sngl-str. emph. exp. pica');     Scrn_put(5,17,'13 - dbl-str. exp. pica');     Scrn_put(5,18,'14 - dbl-str. exp. elite');     Scrn_put(5,19,'15 - dbl-str. exp. comp.');     Scrn_put(5,20,'16 - dbl-str. emph. exp. pica');     Scrn_put(40,4,'17 - proportional mode ON');     Scrn_put(40,5,'18 - proportional mode OFF');     Scrn_put(40,6,'19 - unidirectional mode ON');     Scrn_put(40,7,'20 - unidirectional mode OFF');     Scrn_put(40,8,'21 - half-speed mode');     Scrn_put(40,9,'22 - normal speed');     Scrn_put(40,10,'23 - set left margin');     Scrn_put(40,11,'24 - set right margin');     Scrn_put(40,12,'25 - set form length');     Scrn_put(40,13,'26 - set skip over perf.');     Scrn_put(40,14,'27 - skip over perf OFF');     Scrn_put(40,15,'28 - select character set');     Scrn_put(40,16,'29 - n/72 line spacing');     Scrn_put(40,17,'30 - n/216 line spacing');     Scrn_put(40,18,'31 - 1/8 line spacing');     Scrn_put(40,19,'32 - 1/6 line spacing (standard)');     Scrn_put(40,20,'33 - copy ROM to RAM');     textcolor(Yellow);     Scrn_put(28,21,'99 - EXIT TO DOS');     textcolor(Green);     Exit := false;     repeat     begin          gotoXY(23,23);          write('Select option by number: ');          ClrEol;          read(Input);          {  parse Input and select output string  }          case Input of              0 : Command := '@';              1 : Command := '!'+chr(0);              2 : Command := '!'+chr(1);              3 : Command := '!'+chr(4);              4 : Command := '!'+chr(8);              5 : Command := '!'+chr(16);              6 : Command := '!'+chr(17);              7 : Command := '!'+chr(20);              8 : Command := '!'+chr(24);              9 : Command := '!'+chr(32);             10 : Command := '!'+chr(33);             11 : Command := '!'+chr(36);             12 : Command := '!'+chr(40);             13 : Command := '!'+chr(48);             14 : Command := '!'+chr(49);             15 : Command := '!'+chr(52);             16 : Command := '!'+chr(56);             17 : Command := 'p1';             18 : Command := 'p0';             19 : Command := 'U1';             20 : Command := 'U0';             21 : Command := 's1';             22 : Command := 's0';             23 : Command := 'l'+chr(get_parm('left margin at:'));             24 : Command := 'Q'+chr(get_parm('right margin at:'));             25 : Command := 'C'+chr(get_parm('form length: '));             26 : Command := 'N'+chr(get_parm('number of lines:'));             27 : Command := 'O';             28 : Command := 'V+chr(0);             29 : Command := 'A'+chr(get_parm('n/72 spacing, n = '));             30 : Command := '3'+chr(get_parm('n/216 spacing, n = '));             31 : Command := '0';             32 : Command := '2';             33 : Command := ':'+chr(0)+chr(0)+chr(0);             99 : Exit := True;          end; {case}     if not Exit then Give_printer(Command);     end; {until}   until Exit;end.9 : Exit := True;          end; {case}     if not Exit then Give_printer(Command)