# display_message --- copy contents of message file to screen

   integer function display_message (fd)
   integer fd

   include SE_COMMON

   character lin (MAXCOLS)
   integer row, col, end_of_file, k
   integer getlin, length

   string more " M O R E  T O  C O M E "

   if (Toprow > 1) {
      Topln = max (1, Topln - (Toprow - 1))
      Toprow = 1
      }

   end_of_file = NO
   for (row = Toprow; row <= Botrow - 3; row += 1) {
      if (getlin (lin, fd, Ncols) == EOF) {
         end_of_file = YES
         break
         }
      Toprow += 1
      Topln += 1
      call loadstr (lin, row, 1, Ncols)
      }

   if (end_of_file == NO) {
      k = (Ncols - length (more)) / 2
      for (col = 1; col <= k; col += 1)
         call load ("*"c, row, col)
      for (k = 1; more (k) ~= EOS; {k += 1; col += 1})
         call load (more (k), row, col)
      for (; col <= Ncols; col += 1)
         call load ("*"c, row, col)
      Toprow += 1
      Topln += 1
      row += 1
      }

   do col = 1, Ncols
      call load ('-'c, row, col)
   Toprow += 1
   Topln += 1

   if (Topln > Lastln)
      call adjust_window (1, Lastln)
   if (Curln < Topln)
      Curln = min (Topln, Lastln)

   First_affected = Topln  # must rewrite the whole screen

   call mesg ("Enter o- to restore display"s, HELP_MSG)

   if (end_of_file == YES)
      return (EOF)
   return (OK)
   end
