[comp.binaries.atari.st] v01i057: IDLE 1.2 -- screen saver

koreth@ssyx.ucsc.edu (Steven Grimm) (05/13/88)

Submitted-by: ljdickey@water.waterloo.edu (Lee Dickey)
Posting-number: Volume 1, Issue 57
Archive-name: idle12

Here is (ahem) yet another version of IDLE, version 1.2.
(Version 1.1 had yet another bug.)
Reminder: IDLE 1.2 replaces NIGHT, NITE, and earlier versions of IDLE,
all of which had serious bugs.  IDLE blanks the screen after 6 minutes
of no activity (up from 3 in 1.1) and unblanks upon keyboard/mouse
input or BIOS text output.

All IDLE does is zero the palette AND shift the video RAM pointer 32K
below the normal location.  Since that area is normally all zeros,
zeroing the video palette will display it as all black.  IDLE checks
to see that that piece of RAM is all zeros, and if it is not, it leaves
the video pointer as it was, but still zeros the palette.  This has the
effect of blanking the screen in color mode, but only reversing black
and white in monochrome mode.  The check for nonzeros is done slowly,
so strange things _might_ show on the screen for up to 20 seconds.
But not to worry: IDLE does _not_ write to the video RAM.

IDLE can _still_ cause problems with programs that change the screen RAM
location *** without user input and after 6 minutes of no input. ***
Since such a program might later restore the screen RAM location to
_either_ what it was when changed (the blank area) (case A) _or_ what
it was before it was blanked (case B), depending on the program design,
I cannot fix IDLE to handle all possible cases.  (Should I make IDLE
crash the program on purpose in such a case?)  Currently IDLE avoids
further fiddling with the screen location after detecting such a change.
That means problems in case A if the program changes back to what it
_thinks_ is the original screen.

To customize the delay before blanking, change the LONG integer that is
located immediately after the branch instruction at the start of the program,
at an offset of 32 bytes from the start of the .PRG file, and followed
with the ASCII string "IDLE" in the next 4 bytes.  The default value is
72000 decimal (00011940 hex) for 6 minutes (6*60*200).

I have only tested IDLE with a monochrome monitor, but it is supposed
to work with color too, as described.

- Moshe Braner

---------------------- cut here --------------------
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 idle12.prg
M8!H   *@                             &   :8  1E 241,10    !(z
MYX# 0.< ? < ,#H!6F960?H!5E.0:G!!^() 0_H!6G '(M!"F%'(__HS_  "y
M   !=DIY   !?F9.,_P  0   79!^(( $"@  >%($"@  S/    !@# Z 1H1x
M0  #X$@10  !8"(,0  !9AQ!^(( $"@  >%($"@  [!Z /9G"#/\  (   %Vw
M0?H XC 0:@I">0   7XP/'T 44 P@"!Z -1*L   9@9*L  $9S P.@"V#$  v
M 686,#H MA' @@/@2!' @@$S_  "   !=C/\?0    %\,_P  0   7Y&WTS?u
M P$O.O\63G5)1$Q%     $CG@, P+P *#$   V8"82),WP,!+SK_YDYU241,t
M10    !(YX# 80I,WP,!+SK_\$YU0.< ? < ,#H .F<J#$   68.,#H .!' s
M@@/@2!' @@%!^() 0_H +G '(-E1R/_\0GD   %V(_K^F    7A&WTYU    r
M 1E                                                         q
M  !(>@ T/SP )DY.7(](>@"</SP "4Y!7(]R"G#_4<C__E')__A!^O_:D>\ p
M!$)G+P@_/  Q3D%"@$'X@@ 0*  !X4 0*  #!$  @#/    !@N& (\    &$o
M('@!& RH241,1?_X9QYP I*!0?H &B)P&  D<!@,)G 8&"21(HM8@5'(_^Q.n
M=0   +0   $8   !%    /X   $@    #    0(   $D    $ T*"4E$3$4Zm
M('1H92!#4E0@<')O=&5C=&]R#0H)(" @(&)Y($UO<VAE($)R86YE<@T*"79El
M<G-I;VX@,2XR("T@:6YS=&%L;&5D#0H*     #X&"A0R#C@("'P(A@@^! 0$k
#! 0 j
 i
end