home *** CD-ROM | disk | FTP | other *** search
- \ SAVESCR.SEQ Routine to save and restore screen. by Tom Zimmer
-
- decimal
-
- \ 0 constant svseg \ screen save segment, moved to video.seq
-
- : svinit ( --- ) \ screen save initialization
- defers initstuff
- 0 =: svseg
- 20000 16 / 1+ alloc 8 =
- abort" Could not allocate memory for Screen save routine."
- nip =: svseg ;
-
- ' svinit is initstuff
-
- \ nestable save and restore up to four (4) times.
-
- : savescr ( --- )
- svseg 0= if exit then
- ?MONOCHROME \ video-seg @ 45056 = \ monochrome?
- if
- svseg 0 2dup 4000 + 16000 cmovel> \ Make a hole in buf
- video-seg @ 0 svseg 0 4000 cmovel
- else
- svseg 0 2dup 4000 + 16000 cmovel> \ Make a hole in buf
- vmovel> \ & save screen in it.
- then ;
-
- : restscr ( --- )
- svseg 0= if exit then
- ?MONOCHROME \ video-seg @ 45056 = \ monochrome?
- if
- svseg 0 video-seg @ 0 4000 cmovel \ Restore screen &
- svseg 4000 over 0 16000 cmovel \ compress buffer.
- else
- >vmovel \ Restore screen &
- svseg 4000 over 0 16000 cmovel \ compress buffer.
- then ; \ 16000 = 80 * 2 * 25 * 4
-
-
-