[comp.sys.amiga] Bug fix for FastFonts ScreenBlankers

blgardne@esunix.UUCP (Blaine Gardner) (06/23/87)

You may remember the bug in the FastFonts ScreenBlankers that I reported
here a few weeks back (dropped characters, and corrupted file transfers
caused by ScreenBlanker's activation).

I received the following patch program from Charlie Heath today and,
he's asked me to post it to the net. There are three files included
below; the readme, the C source, and the uuencoded binary. (Cut on the
dotted lines.)

Charlie stated that he "switched an Enable/Disable for Forbid/Permit
somewhere along the line" and never noticed the problem it caused. 

I've tested the patched versions of both ScreenBlankers, and they work
perfectly now. It's refreshing to see a company that responds quickly to
problems with their products.

------------------------------------------------------------------------

This is a patch program for use with Microsmiths' FastFonts V1.01.

The patch is to solve a problem with ScreenBlanker and ScreenBlanker2;
both of these programs in V1.01 of FastFonts can cause you to drop
characters when using a modem program when the blanker dims the screen.
Thanks to Blaine Gardner for reporting the problem.

These three files are copyright (c) 1987 by Microsmiths, Inc,
but may be freely distributed as long as all three files are together
in their original unmodified condition.

For instructions, after de-arcing, type "ffpatch1" from CLI, after
copying ScreenBlanker and ScreenBlanker2 to ram:

		Microsmiths, Inc
		PO Box 561
		Cambridge, MA 02140
		bix: cheath  CIS: 74216,2117

------------------------------------------------------------------------

/* FFPatch1.c								*/
/*    This program installs patches in Microsmiths ScreenBlanker V1.01	*/
/* to solve a bug which can cause comm programs to loose characters	*/
/* when the ScreenBlanker or ScreenBlanker2 blank the screen.		*/
/* This will only work with V1.01 FastFonts, though the patch will not	*/
/* be installed if the wrong version is used.				*/
/*		Microsmiths, Inc					*/
/*		PO Box 561						*/
/*		Cambridge, MA 02140					*/
/*		bix: cheath CIS: 74216,2117				*/

#include <stdio.h>


/* Patches to install for ScreenBlanker	*/
static long SB1[] = 
	{
	1561,	-120,124,
	1691,	-126,118,
	0
	};

/* Patches to install for ScreenBlanker2 */
static long SB2[] = 
	{
	1571,	-120,124,
	1651,	-126,118,
	0
	};

main(argc,argv)
int	argc;
char	*argv[];
{
printf("Patch program ) 1987, Microsmiths Inc\n");
printf("Patches for ScreenBlanker and ScreenBlanker2 V1.01\n\n");

if ( argc != 2 || strcmp(argv[1],"OK" ) != 0 )
	{
	printf("This patch solves a bug which can cause telecom programs to loose\n");
	printf("characters when either version of 1.01 ScreenBlanker is running\n\n");
	printf("To run this program, COPY both ScreenSaver and ScreenSaver2 from your\n");
	printf("FastFonts V1.01 disk to RAM: and then run this program with command line:\n");
	printf("1> FFPatch1 OK\n\n");
	printf("This will leave the patched programs in RAM:\n");
	exit(1);
	}

do_patch("ram:ScreenBlanker", SB1 );
do_patch("ram:ScreenBlanker2", SB2);

printf("\nFinished - now copy the programs from Ram: to your working disks\n");
printf("	and thank you for your support...\n	...cheath\n");
}


do_patch( filename, patcharray )
char	*filename;
long	*patcharray;
{
FILE	*fhand;
char	cval[1];
long	fpos;

printf("Patching %s ...\n",filename);

if ( (fhand = fopen(filename, "r+")) == 0L )
	{
	printf("Can't find %s - skipping\n");
	return 0;
	}

while ( fpos = *patcharray++ )
	{
	if ( fseek(fhand, fpos, 0L) != 0 )
		do_error(filename, "Error seeking in file");

	if ( fread(cval,1,1,fhand) == 0 )
		do_error(filename,"Error reading file");

	if ( cval[0] != *patcharray++ )
		do_error(filename,"Error verifying value - check for correct program version");

	if ( fseek( fhand, fpos, 0L) != 0 )
		do_error(filename, "Error seeking file position");

	cval[0] = *patcharray++;
	if ( fwrite(cval,1,1,fhand) == 0	)
		do_error(filename,"Error writing new value to file");
	}

if ( fclose(fhand) != 0 )
	do_error(filename,"Error closing file");

printf("Completed patch for %s\n",filename);
return 1;
}

do_error(err1,err2)
char	*err1,*err2;
{
printf("\nError patching file %s\n%s\n\nAborting Patches!\n",err1,err2);
exit(20);
}

------------------------------------------------------------------------

begin 777 ffpatch1
M   #\P         #          (   9L    W     $   /I   &;$[Z""!.
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
M^DIM__AF*& 8/SP ($Z25$^P?/__9@9P_V  _WA2;?_Z,"W_\E-M__*P;?_P
M;MI@%C\$3I)43[!\__]F!G#_8 #_4E)M__I@ /T*,"W_^F  _T)(YT@ 0H1*
M@&H$1(!21$J!:@9$@0I$  %A/DI$9P)$@$S? !)*@$YU2.=( $*$2H!J!$2 
M4D1*@6H"1(%A&B !8-@O 6$2( $B'TJ 3G4O 6$&(A]*@$YU2.<P $A!2D%F
M($A!-@$T $) 2$" PR( 2$ R H+#, %"04A!3-\ #$YU2$$F 2( 0D%(04A 
M0D!T#]" TX&V@6($DH-20%'*__),WP ,3G4@;P $( A*&&;\D< @"%. 3G5.
M50  2&R!&C\M  A.N@ (7$].74YU3E4  "\$."T ""\M  H_!$ZZ #!<3[A\
M  IF)"!M  H0*  ,2( (   '9Q0_//__+RT "DZZ /9<3R@?3EU.=6#X3E4 
M "\*)&T "B!2L>H !&48,"T ",!\ /\_ "\*3KH REQ/)%].74YU(%)2DA M
M  D0@$B P'P _V#H3E4  "\*0>R!!"1(($K5_    !8O"&$06$]![(*\M<AE
MZB1?3EU.=4Y5  !(YP@@)&T "'@ ( IF"G#_3-\$$$Y=3G5**@ ,9U((*@ "
M  QG##\\__\O"F%47$\X ! J  U(@#\ 3KH$@%1/B$ (*@ !  QG"B\J  A.
MN@(P6$\(*@ %  QG%"\J !).N@*26$\O*@ 23KH"%%A/0I)"J@ $0JH "$(J
M  PP!&".3E7__DCG"" D;0 (0?K_1"E(@KP(*@ $  QG"G#_3-\$$$Y=3G4(
M*@ "  QG," 2D*H "#@ /P0O*@ ($"H #4B /P!.N@)04$^P1&<0".H !  ,
M0I)"J@ $</]@P QM__\ #&80"*H  @ ,0I)"J@ $< !@J$JJ  AF""\*3KH 
MFEA/#&H  0 09BH;;0 -__\_/  !2&W__Q J  U(@#\ 3KH!\E!/L'P  6:@
M,"T #&  _VHDJ@ (,"H $$C T*H ""5   0(Z@ "  P@4E*2$"T #1" 2(# 
M? #_8 #_/DY5   O"D'L@00D2$HJ  QG&-7\    %D'L@KRUR&4(<  D7TY=
M3G5@XD*20JH !$*J  @@"F#J3E7__"\*)&T "#\\! !.N@# 5$\K0/_\9A@U
M?  ! ! @"M"\    #B5   @D7TY=3G4U? 0  ! (Z@ !  PE;?_\  @0*@ -
M2( _ $ZZ .)43TI 9P8 *@"   Q@SDY5  !(YP P)&R"QF 4)E(@*@ $4( O
M "\*3KH#XE!/)$L@"F;H0JR"QDS?# !.74YU3E4  "\*0?K_QBE(@L!"IR M
M  A0@"\ 3KH#D%!/)$!*@&8(<  D7TY=3G4DK(+&)6T "  $*4J"QB *4(!@
MYDY5  !P # M  @O &&R6$].74YU3E4  $CG #"7RR1L@L9@#B!M  A1B+'*
M9Q(F2B12( IF[G#_3-\, $Y=3G4@"V<$)I)@!"E2@L8@*@ $4( O "\*3KH#
M-%!/< !@V$Y5   P+0 (P?P !D'L@OHO, @ 3KH":EA/2H!G!' !8 )P $Y=
M3G5.50  +RT "$ZZ B983TJ 9@Y.N@(\.4""RG#_3EU.=7  8/A.50  2.<,
M(#@M  A.N@!R, 3!_  &0>R"^B1 U<A*1&T*N'P $VX$2I)F$#E\  ."RG#_
M3-\$,$Y=3G4P*@ $P'P  V8*.7P !H+*</]@Y'  ,"T #B\ +RT "B\23KH"
M+$_O  PJ +"\_____V8,3KH!NCE @LIP_V"X( 5@M$Y5__Q(>!  0J=.N@*,
M4$\K0/_\"   #&8&< !.74YU2FR"U&8&("W__&#P2'@ !$AZ !Q.N@&F+P!.
MN@'03^\ ##\\  %.N@ *5$]@SEY#"@!.50  2JR"O&<&(&R"O$Z0/RT "$ZZ
M  A43TY=3G5.5?_^0FW__C\M__Y.N@"F5$]2;?_^#&T %/_^;>I*K(+ 9P8@
M;(+ 3I!*K(+B9PHO+(+B3KH!C%A/2JR"WF<*+RR"WDZZ 7Q83TJL@N9G"B\L
M@N9.N@%L6$]*K(+V9C@P+(+82, O "\L@O).N@&"4$\P+(+64D!(P.6 +P O
M+(+N3KH!;%!/,"T "$C +P!.N@"66$]@&$ZZ 4XO+(+V3KH!>EA/("T ""YL
M@LQ.=4Y=3G5.50  2.<.(#@M  @P!,'\  9![(+Z)$#5R$I$;0JX?  3;@1*
MDF80.7P  X+*</],WP1P3EU.=3 J  3 ?(  9@@O$DZZ  I83T*2< !@X"(O
M  0L;(+:3N[_W"(O  0L;(+:3N[_@B(O  0L;(+:3N[_N"(O  0L;(+:3N[_
M<"QL@MI.[O_*+&R"VD[N_WPB+P $+&R"VD[N_RA,[P &  0L;(+:3N[_K$SO
M  8 !"QL@MI.[O_B+&R"VD[N_\1,[P .  0L;(+:3N[_UDSO  X !"QL@MI.
M[O^^(B\ !"QL@MI.[O^F3.\ #@ $+&R"VD[N_]!(YP$$3.\@@  ,+&R"T$ZN
M_Y1,WR" 3G4B;P $+&R"T$[N_F),[P #  0L;(+03N[_.B)O  0L;(+03N[^
MVBQL@M!.[O]\(F\ !" O  @L;(+03N[_+B!O  0L;(+03N[^C"QL@M B;P $
M("\ "$[N_=@B;P $+&R"T$[N_H9,[P #  0L;(+03N[^SB!O  0L;(+03N[^
M@    ^P    !        ""0        #\@   ^H   "Q   &&?___X@   !\
M   &F____X(   !V        !B/___^(    ?   !G/___^"    =@    !R
M      !R*P    )W     P%W*P   P)A    "0%A*P  "0)X    !0%X*P  
M!0(        P,3(S-#4V-S@Y86)C9&5F    (" @(" @(" @,# P,# @(" @
M(" @(" @(" @(" @(""00$! 0$! 0$! 0$! 0$! # P,# P,# P,#$! 0$! 
M0$ )"0D)"0D! 0$! 0$! 0$! 0$! 0$! 0$! 4! 0$! 0 H*"@H*"@(" @("
M @(" @(" @(" @(" @("0$! 0"                   0     !        
M              $!     0                     ! @    $         
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
E                               #\@   ^L    !   #\@  
 
end

------------------------------------------------------------------------
-- 
Blaine Gardner @ Evans & Sutherland
UUCP Address:   {ihnp4,decvax}!decwrl!esunix!blgardne
Alternate:      {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!blgardne