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