[comp.sys.ibm.pc.misc] Help: How to remove snow checking?

slack@cis.ksu.edu (Jim Slack) (03/15/91)

Could someone please tell me how to remove snow checking from programs? 

I have a Tandy 1100FD laptop (which I *love*, by the way) which uses a CGA
screen.  There is absolutely no flicker, and thus no reason for a program
to do snow checking for this machine.  (Some of the very early IBM PCs
with CGA cards used to flicker when characters were placed in screen
memory directly.  Current computers don't usually have this problem.)

Programs that do snow checking run extremely slowly on my laptop machine,
for some reason.  (Screen operations remind me of the days of 300
baud communications!)

Here is my approach to removal of snow checking:

First, I check if there is a command line switch or configuration option to 
turn off snow checking.  If so, the problem is solved.  Otherwise, I
roll up my sleeves and try to patch the program.  I load the program into
DEBUG, and look for the byte patterns BA 03 or DA 03.  These correspond
to the ports that give information about horizontal retrace (I think).
Often, I'll find these ports accessed with MOV DX,03BA or MOV DX,03DA.
If I find a tight loop around the instruction IN AX,DX, then I've got the
place to apply the patch.  I just jump around the loop.

I've just run across a program that does snow checking, but does not appear
to use the above method.  My next step was to search for all occurrences
of hex ED (the code for IN AX,DX).  I examined all such occurrences, but
could not find a tight loop around this instruction.

Do you have any suggestions on a next step?

------------
Reply to: slack@cis.ksu.edu

jsd@swordfish.rice.edu (Shawn Joel Dube) (03/16/91)

In article <1991Mar15.045316.18068@maverick.ksu.ksu.edu>, slack@cis.ksu.edu (Jim Slack) writes:
|> Could someone please tell me how to remove snow checking from programs? 
|> 
|> I have a Tandy 1100FD laptop (which I *love*, by the way) which uses a CGA
|> screen.  There is absolutely no flicker, and thus no reason for a program
|> to do snow checking for this machine.  (Some of the very early IBM PCs
|> with CGA cards used to flicker when characters were placed in screen
|> memory directly.  Current computers don't usually have this problem.)

I believe that snow-checking is entirely up to the program so there
isn't a global variable.  Your method (modifying the code) is probably
the only method.  

Why snow-checking really slows down your machine deals with the 
way snow-checking works.  When snow-checking, a program only updates
the screen during a vertical retrace, (that is: whenever the computer
isn't drawing the screen).  I assume that with a laptop
screen that most of time, so there is very little time that a program
can modify screen memory which makes everything slow.

I hope that helped.

-- 
________________________________________________________________

  Shawn Joel Dube        "Never before have so many people known
  jsd@owlnet.rice.edu     so little about so much." -James Burke
________________________________________________________________