home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************************
- * These routines aid the programmer in displaying banner messages *
- * in the middle a monochrome monitor.. To use the routines, see *
- * the example below. Currently, this routine supports upper case *
- * letters only, the period (.), and the space ( ). *
- * EXAMPLE: *
- * *
- * var *
- * phrase : phrase_chars; -Max len of phrase is 25 *
- * disp_message : big_message; -Where big messages are built *
- * *
- * begin *
- * phrase := 'HELLO THERE'; -Remember - only upper case *
- * add_letter(disp_message,phrase); -Build big message *
- * banner(disp_message,length(phrase)); -Display the message *
- * end. *
- ******************************************************************* }
-
- type
- Letter_def = array[63..90] of array [1..8] of array [1..11] of char;
- phrase_chars = string[25];
- cstring = array [0..255] of char;
- big_message = array [1..8] of cstring;
- astring = string [255];
-
- var
- byte_str : astring;
- r,c : integer;
-
- const
- BIG_LETTERS : Letter_def = ((' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' @@ '),
- (' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ' '),
- (' @@ ',
- ' @@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ '),
- ('@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@@ '),
- (' @@@@ ',
- ' @@ @@ ',
- '@@ @@ ',
- '@@ ',
- '@@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@ '),
- ('@@@@@@@@@ ',
- '@@ ',
- '@@ ',
- '@@@@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@@@@@@@@ '),
- ('@@@@@@@@@ ',
- '@@ ',
- '@@ ',
- '@@@@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@ '),
- (' @@@@ ',
- ' @@ @@ ',
- '@@ @@ ',
- '@@ ',
- '@@ @@@@@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ '),
- (' @@@@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@@@ '),
- (' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ '),
- ('@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@ ',
- '@@@@@@@@@ '),
- ('@@@ @@@ ',
- '@@ @ @ @@ ',
- '@@ @@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ '),
- ('@@ @@ ',
- '@@ @@ ',
- '@@@ @@ ',
- '@@ @@ @@ ',
- '@@ @@ @@ ',
- '@@ @@ @@ ',
- '@@ @@@ ',
- '@@ @@ '),
- (' @@@@ ',
- ' @@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@ ',
- '@@ ',
- '@@ ',
- '@@ '),
- (' @@@@ ',
- ' @@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @ @@ ',
- ' @@ @@ ',
- ' @@@@ @ '),
- ('@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@@@@@@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ '),
- (' @@@@ ',
- ' @@ @@ ',
- '@@ ',
- ' @@@@@@ ',
- ' @@ ',
- ' @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@@@@@@@@@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ '),
- ('@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@@@ '),
- ('@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- ' @@ @@ ',
- ' @@ @@ ',
- ' @@ @@ ',
- ' @ '),
- ('@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ ',
- '@@ @@ @@ ',
- '@@ @ @ @@ ',
- '@@@ @@@ '),
- ('@@ @@ ',
- ' @@ @@ ',
- ' @@ @@ ',
- ' @@@@ ',
- ' @@@@ ',
- ' @@ @@ ',
- ' @@ @@ ',
- '@@ @@ '),
- ('@@ @@ ',
- ' @@ @@ ',
- ' @@ @@ ',
- ' @@@@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ '),
- ('@@@@@@@@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- ' @@ ',
- '@@@@@@@@@ ')
- );
-
- procedure FastDisp(var s: astring; var r,c: integer);
- { ******************************************************************
- * Display thing quickly ... from PC magazine Oct 1, 1985 *
- ****************************************************************** }
- begin
- INLINE (
- $8B/$5E/$04/
- $8B/$3F/
- $4F/
- $8B/$5E/$08/
- $8B/$07/
- $48/
- $8B/$5E/$0C/
- $32/$ED/
- $8A/$0F/
- $80/$F9/$00/
- $74/$40/
- $C4/$76/$0C/
- $46/
- $BB/$40/$00/
- $8E/$C3/
- $26/$F7/$26/$4A/$00/
- $03/$F8/
- $D1/$E7/
- $26/$8B/$16/$63/$00/
- $83/$C2/$06/
- $B8/$00/$B8/
- $26/$8B/$1E/$10/$00/
- $81/$E3/$30/$00/
- $83/$FB/$30/
- $75/$03/
- $B8/$00/$B0/
- $8E/$C0/
- $EC/
- $A8/$01/
- $75/$FB/
- $FA/
- $EC/
- $A8/$01/
- $74/$FB/
- $A4/
- $47/
- $E2/$F1/
- $FB
- )
- end; { FastDisp }
-
-
- procedure add_letter(var dis_message: big_message; phrase: phrase_chars);
- { ******************************************************************
- * Build the big message in storage for later display *
- ****************************************************************** }
- var
- i,j : integer;
- phrase_ctr : integer;
- small_letter : char;
- let_pos : integer;
-
- begin
- let_pos := 0;
- for phrase_ctr := 1 to length(phrase) do begin
- if phrase[phrase_ctr] = ' ' then
- begin
- small_letter := '@';
- end
- else
- begin
- if phrase[phrase_ctr] = '.' then
- begin
- small_letter := '?';
- end
- else
- begin
- small_letter := phrase[phrase_ctr];
- end;
- end;
-
- for i := 1 to 8 do begin
- for j := 1 to 11 do begin
- dis_message[i,j+let_pos] := BIG_LETTERS[ord(small_letter),i,j];
- end;
- end;
- let_pos := let_pos + 11;
- end;
- end;
-
-
- procedure banner(var banner_message: big_message; len: integer);
- { ******************************************************************
- * display the big message in 'banner_message' *
- ****************************************************************** }
- var
- scn_col : integer;
- str_cnt : integer;
- bl_row : integer;
- hold_line : array [0..117] of char;
-
- begin
- for str_cnt := 1 to len * 11 do begin
- for bl_row := 0 to 7 do begin
- move(mem[$B000:1460+bl_row*160],hold_line[0],117);
- move(hold_line[2],mem[$B000:1460+bl_row*160],115);
- c := 69;
- r := bl_row +10;
- byte_str := banner_message[bl_row+1,str_cnt];
- fastdisp(byte_str,r,c)
- end;
- end;
- end;