home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / f88 / savescr.bak < prev    next >
Text File  |  1988-05-24  |  1KB  |  41 lines

  1. \ SAVESCR.SEQ   Routine to save and restore screen.     by Tom Zimmer
  2.  
  3. decimal
  4.  
  5. \ 0 constant svseg  \ screen save segment, moved to video.seq
  6.  
  7. : svinit        ( --- )         \ screen save initialization
  8.                 defers initstuff
  9.                 0 =: svseg
  10.                 20000 16 / 1+ alloc 8 =
  11.                 abort" Could not allocate memory for Screen save routine."
  12.                 nip =: svseg ;
  13.  
  14. ' svinit is initstuff
  15.  
  16. \ nestable save and restore up to four (4) times.
  17.  
  18. : savescr       ( --- )
  19.     svseg 0= if exit then
  20.     ?MONOCHROME   \ video-seg @ 45056 =                 \ monochrome?
  21.     if
  22.                 svseg 0 2dup 4000 + 16000 cmovel>       \ Make a hole in buf
  23.                 video-seg @ 0 svseg 0 4000 cmovel
  24.     else
  25.                 svseg 0 2dup 4000 + 16000 cmovel>       \ Make a hole in buf
  26.                 vmovel>                                 \ & save screen in it.
  27.     then ;     
  28.  
  29. : restscr       ( --- )
  30.     svseg 0= if exit then
  31.     ?MONOCHROME   \ video-seg @ 45056 =                 \ monochrome?
  32.     if
  33.                 svseg 0 video-seg @ 0 4000 cmovel       \ Restore screen &
  34.                 svseg 4000 over 0 16000 cmovel          \ compress buffer.
  35.     else
  36.                 >vmovel                                 \ Restore screen &
  37.                 svseg 4000 over 0 16000 cmovel          \ compress buffer.
  38.    then ;  \ 16000 = 80 * 2 * 25 * 4
  39.     
  40.  
  41.