home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug174.arc / FILECARD.LBR / EDITSCR.LYB / EDITSCR.LYB
Text File  |  1979-12-31  |  9KB  |  331 lines

  1. Procedure EditScr;
  2. Begin
  3.    Quit := false;
  4.    Repeat
  5.       Flag1 := false;
  6.       Y := 1; X := 1;
  7.       ReadKey;
  8.       Gotoxy((X+12),(Y+12));
  9.       Repeat
  10.          Flag2 := false;
  11.          Read(Kbd,Key);
  12.  
  13.          If Key = chr(27) then      {Quit}
  14.             Begin
  15.                Flag1 := true;
  16.                Flag2 := true;
  17.             End;
  18.  
  19.          If Key = chr(11) then      {Cursor up}
  20.             Begin
  21.                Flag2 := true;
  22.                Y := (Y-1);
  23.                If Y < 1 then Y := 1;
  24.                Gotoxy((X+12),(Y+12));
  25.             End;
  26.  
  27.          If Key = chr(5) then      {Cursor up}
  28.             Begin
  29.                Flag2 := true;
  30.                Y := (Y-1);
  31.                If Y < 1 then Y := 1;
  32.                Gotoxy((X+12),(Y+12));
  33.             End;
  34.  
  35.          If Key =  chr(10) then     {Cursor down}
  36.             Begin
  37.                Flag2 := true;
  38.                Y := (Y+1);
  39.                If Y > 10 then Y := 10;
  40.                Gotoxy((X+12),(Y+12));
  41.             End;
  42.  
  43.          If Key =  chr(24) then     {Cursor down}
  44.             Begin
  45.                Flag2 := true;
  46.                Y := (Y+1);
  47.                If Y > 10 then Y := 10;
  48.                Gotoxy((X+12),(Y+12));
  49.             End;
  50.  
  51.          If Key = chr(13) then      {Carriage return}
  52.             Begin
  53.                Flag2 := true;
  54.                Y := (Y+1);
  55.                X :=1;
  56.                If Y > 10 then Y := 1;
  57.                Gotoxy((X+12),(Y+12));
  58.             End;
  59.  
  60.          If Key = chr(8) then       {Cursor left}
  61.             Begin
  62.                Flag2 := true;
  63.                X := (X-1);
  64.                If X < 1 then
  65.                Begin
  66.                   X := 56;
  67.                   Y := (Y-1);
  68.                   If Y < 1 then
  69.                   Begin
  70.                      X := 1;
  71.                      Y := 1;
  72.                   End;
  73.                End;
  74.                Gotoxy((X+12),(Y+12));
  75.             End;
  76.  
  77.          If Key = chr(19) then       {Cursor left}
  78.             Begin
  79.                Flag2 := true;
  80.                X := (X-1);
  81.                If X < 1 then
  82.                Begin
  83.                   X := 56;
  84.                   Y := (Y-1);
  85.                   If Y < 1 then
  86.                   Begin
  87.                      X := 1;
  88.                      Y := 1;
  89.                   End;
  90.                End;
  91.                Gotoxy((X+12),(Y+12));
  92.             End;
  93.  
  94.          If Key = chr(12) then      {Cursor right}
  95.             Begin
  96.                Flag2 := true;
  97.                X := (X+1);
  98.                If X = 47 then Write(chr(7));
  99.                If X > 56 then
  100.                Begin
  101.                   X := 1;
  102.                   Y := (Y+1);
  103.                   If Y > 10 then
  104.                   Begin
  105.                      X := 1;
  106.                      Y := 1;
  107.                   End;
  108.               End;
  109.               Gotoxy((X+12),(Y+12));
  110.          End;
  111.  
  112.          If Key = chr(4) then      {Cursor right}
  113.             Begin
  114.                Flag2 := true;
  115.                X := (X+1);
  116.                If X = 47 then Write(chr(7));
  117.                If X > 56 then
  118.                Begin
  119.                   X := 1;
  120.                   Y := (Y+1);
  121.                   If Y > 10 then
  122.                   Begin
  123.                      X := 1;
  124.                      Y := 1;
  125.                   End;
  126.               End;
  127.               Gotoxy((X+12),(Y+12));
  128.            End;
  129.  
  130.          If Key = chr(1) then  {Left end}
  131.          Begin
  132.             Flag2 := true;
  133.             X := 1;
  134.             Gotoxy((X+12),(Y+12));
  135.          End;
  136.  
  137.          If Key = chr(6) then  {Right end}
  138.          Begin
  139.             Flag2 := true;
  140.             X := 55;
  141.             Gotoxy((X+12),(Y+12));
  142.          End;
  143.  
  144.          If Key = chr(18) then  {Beginning of field}
  145.          Begin
  146.             Flag2 := true;
  147.             X :=1;
  148.             Y := 1;
  149.             Gotoxy((X+12),(Y+12));
  150.          End;
  151.  
  152.          If Key = chr(3) then  {End of field}
  153.          Begin
  154.             Flag2 := true;
  155.             X := 55;
  156.             Y := 10;
  157.             Gotoxy((X+12),(Y+12));
  158.          End;
  159.  
  160.          If Key = chr(26) then  {Erase field}
  161.          Begin
  162.             Flag2 := true;
  163.             For Y := 1 to 10 do
  164.             Begin
  165.                For X := 1 to 55 do
  166.                Begin
  167.                   Ltr[X,Y] := (' ');
  168.                   Gotoxy((X+12),(Y+12));
  169.                   Write(Ltr[X,Y]);
  170.                End;
  171.             End;
  172.             X :=1;
  173.             Y:= 1;
  174.             Gotoxy((X+12),(Y+12));
  175.          End;
  176.  
  177.          If Key = chr(9) then {Insert character}
  178.             Begin
  179.                Flag2 := true;
  180.                If X < 55 then
  181.                Begin
  182.                   For I := 55 downto (X+1) do
  183.                   Begin
  184.                      Ltr[I,Y] := Ltr[(I-1),Y];
  185.                      Gotoxy((I+12),(Y+12));
  186.                      Write(Ltr[I,Y]);
  187.                   End;
  188.                   Ltr[X,Y] := (' ');
  189.                   Gotoxy((X+12),(Y+12));
  190.                   Write(Ltr[X,Y]);
  191.                   Gotoxy((X+12),(Y+12));
  192.                End;
  193.             End;
  194.  
  195.          If Key = chr(127) then   {Delete character}
  196.             Begin
  197.                Flag2 := true;
  198.                X := (X-1);
  199.                If X <1 then
  200.                Begin
  201.                   X := 56;
  202.                   Y := (Y-1);
  203.                   If Y <1 then
  204.                   Begin
  205.                      Y := 1;
  206.                      X := 1;
  207.                   End;
  208.                   Gotoxy((X+12),(Y+12));
  209.                End;
  210.  
  211.             If X < 55 then
  212.                Begin
  213.                   For I := X to 54 do
  214.                   Begin
  215.                      Ltr[I,Y] := Ltr[(I+1),Y];
  216.                      Gotoxy((I+12),(Y+12));
  217.                      Write(Ltr[I,Y]);
  218.                   End;
  219.                   Ltr[55,Y] := (' ');
  220.                   Gotoxy(67,(Y+12));
  221.                   Write(Ltr[55,Y]);
  222.                   Gotoxy((X+12),(Y+12));
  223.                End;
  224.  
  225.                If X = 55 then
  226.                Begin
  227.                   Ltr[X,Y] := (' ');
  228.                   Gotoxy((X+12),(Y+12));
  229.                   Write(Ltr[X,Y]);
  230.                   Gotoxy((X+12),(Y+12));
  231.                End;
  232.  
  233.             End;
  234.  
  235.          If Key = chr(17) then      {Delete to end of line}
  236.          Begin
  237.             Flag2 := true;
  238.             For Q := X to 55 do
  239.             Begin
  240.                Ltr[Q,Y] := (' ');
  241.                Gotoxy((Q+12),(Y+12));
  242.                Write(Ltr[Q,Y]);
  243.             End;
  244.             Gotoxy((X+12),(Y+12));
  245.          End;
  246.  
  247.          If Key = chr(14) then      {Insert line}
  248.          Begin
  249.             Flag2 := true;
  250.             If Y < 11 then
  251.             Begin
  252.                For R := 10 downto (Y+1) do
  253.                Begin
  254.                   For Q := 1 to 55 do
  255.                   Begin
  256.                      Ltr[Q,R] := Ltr[Q,(R-1)];
  257.                      Gotoxy((Q+12),(R+12)); Write(Ltr[Q,R]);
  258.                   End;
  259.                End;
  260.                For Q := 1 to 55 do
  261.                Begin
  262.                   Ltr[Q,Y] := (' ');
  263.                   Gotoxy((Q+12),(Y+12)); Write(Ltr[Q,Y]);
  264.                End;
  265.             End;
  266.             X := 1;
  267.             Gotoxy((X+12),(Y+12));
  268.          End;
  269.  
  270.          If Key = chr(25) then      {Delete line}
  271.          Begin
  272.             Flag2 := true;
  273.             If Y < 10 then
  274.             Begin
  275.                For R := Y to 9 do
  276.                Begin
  277.                   For Q := 1 to 55 do
  278.                   Begin
  279.                      Ltr[Q,R] := Ltr[Q,(R+1)];
  280.                      Gotoxy((Q+12),(R+12)); Write(Ltr[Q,R]);
  281.                   End;
  282.                End;
  283.                For Q := 1 to 55 do
  284.                Begin
  285.                   Ltr[Q,10] := (' ');
  286.                   Gotoxy((Q+12),22); Write(Ltr[Q,10]);
  287.                End;
  288.             End;
  289.             If Y = 10 then
  290.             Begin
  291.                Ltr[Q,10] := (' ');
  292.                Gotoxy((Q+12),22); Write(Ltr[Q,10]);
  293.             End;
  294.             X := 1;
  295.             Gotoxy((X+12),(Y+12));
  296.          End;
  297.    
  298.          If not Flag2 then
  299.          Begin
  300.             Gotoxy((X+12),(Y+12));
  301.             If X < 56 then
  302.             Begin
  303.                Ltr[X,Y] := Key;
  304.                Write(Ltr[X,Y]);
  305.             End;
  306.             X := (X+1);
  307.             If X = 47 then Write(chr(7));
  308.             If X > 56 then X := 56;
  309.             Gotoxy((X+12),(Y+12));
  310.          End;
  311.          Until Flag1;
  312.          Gotoxy(70,22);
  313.          Write('Correct ?');
  314.          Gotoxy(70,23);
  315.          Write('(Y/N) ');
  316.          Read(Kbd,Key);
  317.          Key := upcase(Key);
  318.          If Key = chr(27) then
  319.          Begin
  320.             Assign(Disk,'MENU.COM');
  321.             Execute(Disk);
  322.          End;
  323.          If Key = ('Y') then Quit := true;
  324.          Gotoxy(70,22);
  325.          Write('         ');
  326.          Gotoxy(70,23);
  327.          Write('         ');
  328.       Until Quit;
  329.       Clrscr;
  330. End;
  331.