home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MADTRB3.ZIP / ILETTERS.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-11-13  |  15.4 KB  |  366 lines

  1.    {*******************************************************************
  2.     * These routines aid the programmer in displaying banner messages *
  3.     * in the middle a monochrome monitor.. To use the routines, see   *
  4.     * the example below. Currently, this routine supports upper case  *
  5.     * letters only, the period (.), and the space ( ).                *
  6.     *   EXAMPLE:                                                      *
  7.     *                                                                 *
  8.     *   var                                                           *
  9.     *    phrase  : phrase_chars;      -Max len of phrase is 25        *
  10.     *    disp_message : big_message;  -Where big messages are built   *
  11.     *                                                                 *
  12.     *   begin                                                         *
  13.     *     phrase := 'HELLO THERE';    -Remember -  only upper case    *
  14.     *     add_letter(disp_message,phrase);     -Build big message     *
  15.     *     banner(disp_message,length(phrase)); -Display the message   *
  16.     *   end.                                                          *
  17.     ******************************************************************* }
  18.  
  19.   type
  20.     Letter_def = array[63..90] of array [1..8] of array [1..11] of char;
  21.     phrase_chars = string[25];
  22.     cstring = array [0..255] of char;
  23.     big_message = array [1..8] of cstring;
  24.     astring = string [255];
  25.  
  26.   var
  27.     byte_str      : astring;
  28.     r,c           : integer;
  29.  
  30.   const
  31.     BIG_LETTERS : Letter_def = (('           ',
  32.                                  '           ',
  33.                                  '           ',
  34.                                  '           ',
  35.                                  '           ',
  36.                                  '           ',
  37.                                  '           ',
  38.                                  '     @@    '),
  39.                                 ('           ',
  40.                                  '           ',
  41.                                  '           ',
  42.                                  '           ',
  43.                                  '           ',
  44.                                  '           ',
  45.                                  '           ',
  46.                                  '           '),
  47.                                 ('    @@     ',
  48.                                  '  @@  @@   ',
  49.                                  '@@      @@ ',
  50.                                  '@@      @@ ',
  51.                                  '@@@@@@@@@@ ',
  52.                                  '@@      @@ ',
  53.                                  '@@      @@ ',
  54.                                  '@@      @@ '),
  55.                                 ('@@@@@@@    ',
  56.                                  '@@     @@  ',
  57.                                  '@@      @@ ',
  58.                                  '@@@@@@@@   ',
  59.                                  '@@     @@  ',
  60.                                  '@@      @@ ',
  61.                                  '@@     @@  ',
  62.                                  '@@@@@@@@   '),
  63.                                 ('   @@@@    ',
  64.                                  ' @@    @@  ',
  65.                                  '@@      @@ ',
  66.                                  '@@         ',
  67.                                  '@@         ',
  68.                                  '@@      @@ ',
  69.                                  ' @@    @@  ',
  70.                                  '   @@@@    '),
  71.                                 ('@@@@@@     ',
  72.                                  '@@    @@   ',
  73.                                  '@@     @@  ',
  74.                                  '@@      @@ ',
  75.                                  '@@      @@ ',
  76.                                  '@@     @@  ',
  77.                                  '@@    @@   ',
  78.                                  '@@@@@@     '),
  79.                                 ('@@@@@@@@@  ',
  80.                                  '@@         ',
  81.                                  '@@         ',
  82.                                  '@@@@@      ',
  83.                                  '@@         ',
  84.                                  '@@         ',
  85.                                  '@@         ',
  86.                                  '@@@@@@@@@  '),
  87.                                 ('@@@@@@@@@  ',
  88.                                  '@@         ',
  89.                                  '@@         ',
  90.                                  '@@@@@      ',
  91.                                  '@@         ',
  92.                                  '@@         ',
  93.                                  '@@         ',
  94.                                  '@@         '),
  95.                                 ('   @@@@    ',
  96.                                  ' @@    @@  ',
  97.                                  '@@      @@ ',
  98.                                  '@@         ',
  99.                                  '@@   @@@@@ ',
  100.                                  '@@      @@ ',
  101.                                  ' @@    @@  ',
  102.                                  '   @@@@    '),
  103.                                 ('@@      @@ ',
  104.                                  '@@      @@ ',
  105.                                  '@@      @@ ',
  106.                                  '@@@@@@@@@@ ',
  107.                                  '@@      @@ ',
  108.                                  '@@      @@ ',
  109.                                  '@@      @@ ',
  110.                                  '@@      @@ '),
  111.                                 ('   @@@@    ',
  112.                                  '    @@     ',
  113.                                  '    @@     ',
  114.                                  '    @@     ',
  115.                                  '    @@     ',
  116.                                  '    @@     ',
  117.                                  '    @@     ',
  118.                                  '   @@@@    '),
  119.                                 ('        @@ ',
  120.                                  '        @@ ',
  121.                                  '        @@ ',
  122.                                  '        @@ ',
  123.                                  '        @@ ',
  124.                                  '@@      @@ ',
  125.                                  ' @@    @@  ',
  126.                                  '   @@@@    '),
  127.                                 ('@@         ',
  128.                                  '@@     @@  ',
  129.                                  '@@   @@    ',
  130.                                  '@@ @@      ',
  131.                                  '@@@@       ',
  132.                                  '@@  @@     ',
  133.                                  '@@    @@   ',
  134.                                  '@@      @@ '),
  135.                                 ('@@         ',
  136.                                  '@@         ',
  137.                                  '@@         ',
  138.                                  '@@         ',
  139.                                  '@@         ',
  140.                                  '@@         ',
  141.                                  '@@         ',
  142.                                  '@@@@@@@@@  '),
  143.                                 ('@@@    @@@ ',
  144.                                  '@@ @  @ @@ ',
  145.                                  '@@  @@  @@ ',
  146.                                  '@@      @@ ',
  147.                                  '@@      @@ ',
  148.                                  '@@      @@ ',
  149.                                  '@@      @@ ',
  150.                                  '@@      @@ '),
  151.                                 ('@@      @@ ',
  152.                                  '@@      @@ ',
  153.                                  '@@@     @@ ',
  154.                                  '@@ @@   @@ ',
  155.                                  '@@  @@  @@ ',
  156.                                  '@@   @@ @@ ',
  157.                                  '@@     @@@ ',
  158.                                  '@@      @@ '),
  159.                                 ('   @@@@    ',
  160.                                  ' @@    @@  ',
  161.                                  '@@      @@ ',
  162.                                  '@@      @@ ',
  163.                                  '@@      @@ ',
  164.                                  '@@      @@ ',
  165.                                  ' @@    @@  ',
  166.                                  '   @@@@    '),
  167.                                 ('@@@@@@@    ',
  168.                                  '@@     @@  ',
  169.                                  '@@      @@ ',
  170.                                  '@@     @@  ',
  171.                                  '@@@@@@@    ',
  172.                                  '@@         ',
  173.                                  '@@         ',
  174.                                  '@@         '),
  175.                                 ('   @@@@    ',
  176.                                  ' @@    @@  ',
  177.                                  '@@      @@ ',
  178.                                  '@@      @@ ',
  179.                                  '@@      @@ ',
  180.                                  '@@   @  @@ ',
  181.                                  ' @@    @@  ',
  182.                                  '   @@@@  @ '),
  183.                                 ('@@@@@@@    ',
  184.                                  '@@     @@  ',
  185.                                  '@@      @@ ',
  186.                                  '@@     @@  ',
  187.                                  '@@@@@@@    ',
  188.                                  '@@   @@    ',
  189.                                  '@@     @@  ',
  190.                                  '@@      @@ '),
  191.                                 ('   @@@@    ',
  192.                                  ' @@    @@  ',
  193.                                  '@@         ',
  194.                                  '  @@@@@@   ',
  195.                                  '       @@  ',
  196.                                  '        @@ ',
  197.                                  ' @@    @@  ',
  198.                                  '   @@@@    '),
  199.                                 ('@@@@@@@@@@ ',
  200.                                  '    @@     ',
  201.                                  '    @@     ',
  202.                                  '    @@     ',
  203.                                  '    @@     ',
  204.                                  '    @@     ',
  205.                                  '    @@     ',
  206.                                  '    @@     '),
  207.                                 ('@@      @@ ',
  208.                                  '@@      @@ ',
  209.                                  '@@      @@ ',
  210.                                  '@@      @@ ',
  211.                                  '@@      @@ ',
  212.                                  '@@      @@ ',
  213.                                  ' @@    @@  ',
  214.                                  '   @@@@    '),
  215.                                 ('@@      @@ ',
  216.                                  '@@      @@ ',
  217.                                  '@@      @@ ',
  218.                                  '@@      @@ ',
  219.                                  ' @@     @@ ',
  220.                                  '  @@   @@  ',
  221.                                  '   @@ @@   ',
  222.                                  '     @     '),
  223.                                 ('@@      @@ ',
  224.                                  '@@      @@ ',
  225.                                  '@@      @@ ',
  226.                                  '@@      @@ ',
  227.                                  '@@      @@ ',
  228.                                  '@@  @@  @@ ',
  229.                                  '@@ @  @ @@ ',
  230.                                  '@@@    @@@ '),
  231.                                 ('@@      @@ ',
  232.                                  ' @@    @@  ',
  233.                                  '  @@  @@   ',
  234.                                  '   @@@@    ',
  235.                                  '   @@@@    ',
  236.                                  '  @@  @@   ',
  237.                                  ' @@    @@  ',
  238.                                  '@@      @@ '),
  239.                                 ('@@      @@ ',
  240.                                  ' @@    @@  ',
  241.                                  '  @@  @@   ',
  242.                                  '   @@@@    ',
  243.                                  '    @@     ',
  244.                                  '    @@     ',
  245.                                  '    @@     ',
  246.                                  '    @@     '),
  247.                                 ('@@@@@@@@   ',
  248.                                  '      @@   ',
  249.                                  '     @@    ',
  250.                                  '    @@     ',
  251.                                  '   @@      ',
  252.                                  '  @@       ',
  253.                                  ' @@        ',
  254.                                  '@@@@@@@@@  ')
  255.                                  );
  256.  
  257.    procedure FastDisp(var s: astring; var r,c: integer);
  258.     { ******************************************************************
  259.       *   Display thing quickly ... from PC magazine Oct 1, 1985       *
  260.       ****************************************************************** }
  261.       begin
  262.          INLINE (
  263.             $8B/$5E/$04/
  264.             $8B/$3F/
  265.             $4F/
  266.             $8B/$5E/$08/
  267.             $8B/$07/
  268.             $48/
  269.             $8B/$5E/$0C/
  270.             $32/$ED/
  271.             $8A/$0F/
  272.             $80/$F9/$00/
  273.             $74/$40/
  274.             $C4/$76/$0C/
  275.             $46/
  276.             $BB/$40/$00/
  277.             $8E/$C3/
  278.             $26/$F7/$26/$4A/$00/
  279.             $03/$F8/
  280.             $D1/$E7/
  281.             $26/$8B/$16/$63/$00/
  282.             $83/$C2/$06/
  283.             $B8/$00/$B8/
  284.             $26/$8B/$1E/$10/$00/
  285.             $81/$E3/$30/$00/
  286.             $83/$FB/$30/
  287.             $75/$03/
  288.             $B8/$00/$B0/
  289.             $8E/$C0/
  290.             $EC/
  291.             $A8/$01/
  292.             $75/$FB/
  293.             $FA/
  294.             $EC/
  295.             $A8/$01/
  296.             $74/$FB/
  297.             $A4/
  298.             $47/
  299.             $E2/$F1/
  300.             $FB
  301.                 )
  302.       end;  { FastDisp }
  303.  
  304.  
  305.   procedure add_letter(var dis_message: big_message; phrase: phrase_chars);
  306.     { ******************************************************************
  307.       *   Build the big message in storage for later display           *
  308.       ****************************************************************** }
  309.     var
  310.       i,j        : integer;
  311.       phrase_ctr : integer;
  312.       small_letter : char;
  313.       let_pos    : integer;
  314.  
  315.     begin
  316.       let_pos := 0;
  317.       for phrase_ctr := 1 to length(phrase) do begin
  318.         if phrase[phrase_ctr] = ' ' then
  319.           begin
  320.             small_letter := '@';
  321.           end
  322.         else
  323.           begin
  324.             if phrase[phrase_ctr] = '.' then
  325.               begin
  326.                 small_letter := '?';
  327.               end
  328.             else
  329.               begin
  330.                 small_letter := phrase[phrase_ctr];
  331.               end;
  332.         end;
  333.  
  334.         for i := 1 to 8 do begin
  335.           for j := 1 to 11 do begin
  336.             dis_message[i,j+let_pos] :=  BIG_LETTERS[ord(small_letter),i,j];
  337.           end;
  338.         end;
  339.         let_pos := let_pos + 11;
  340.       end;
  341.     end;
  342.  
  343.  
  344.   procedure banner(var banner_message: big_message; len: integer);
  345.     { ******************************************************************
  346.       *           display the big message in 'banner_message'          *
  347.       ****************************************************************** }
  348.     var
  349.       scn_col    : integer;
  350.       str_cnt    : integer;
  351.       bl_row     : integer;
  352.       hold_line  : array [0..117] of char;
  353.  
  354.     begin
  355.       for str_cnt := 1 to len  * 11 do begin
  356.         for bl_row := 0 to 7 do begin
  357.           move(mem[$B000:1460+bl_row*160],hold_line[0],117);
  358.           move(hold_line[2],mem[$B000:1460+bl_row*160],115);
  359.           c := 69;
  360.           r := bl_row +10;
  361.           byte_str := banner_message[bl_row+1,str_cnt];
  362.           fastdisp(byte_str,r,c)
  363.         end;
  364.       end;
  365.     end;
  366.