[comp.sys.amiga] FastFonts patch

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

Well, it looks like I'm a little too efficient (a first! :-) yesterday I
posted the patch program for the FastFonts ScreenBlanker. Now today's mail
brings another disk from Microsmiths with an enhanced patcher. This one
fixes the ScreenBlanker bug like the first, but also updates FastFonts to
version 1.02.

Charlie Heath asked that I post this version rather than the first, so
kill the first one, and use this one instead.

The readme, source, and uuencoded binary are below.

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

This is a patch program to upgrade Microsmiths FastFonts V1.01 to V1.02

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.

Also included is a patch for FF and FastFonts which can improve system
performance in multitasking.  This patch allows other tasks to run
more efficiently while FastText is being displayed; it doesn't make
a big difference in most cases, but is included since the ScreenBlanker
patch was being released.

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 (plus FFand FastFonts if
you want the multitasking enhancement) to Ram: . If you have questions,
please contact:

		Microsmiths, Inc
		POBox 561
		Cambridge, MA02140
		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.		*/
/*    Also included is a patch to improve multitasking performance when	*/
/*running FFor FastFonts.						*/
/*    This patch program will only work with V1.01 FastFonts, though	*/
/* the patches will notbe installed if the wrong version is used.	*/
/*		Microsmiths, Inc					*/
/*		POBox 561						*/
/*		Cambridge, MA02140					*/
/*		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
	};

/*Patches to install for FF	*/
static long FF1[] =
	{
	637,	10,50,
	638,	67,32,
	639,	111,67,
	640,	112,111,
	641,	121,112,
	642,	114,121,
	643,	105,114,
	644,	103,105,
	645,	104,103,
	646,	116,104,
	647,	32,116,
	648,	40,32,
	649,	99,32,
	650,	41,-87,
	1911,	-114,-112,
	1967,	-114,-112,
	2219,	86,88,
	2303,	117,-18,
	2304,	0,-1,
	2305,	0,28,
	2537,	95,111,
	0
	};

/*Patches to install for FastFonts	*/
static long FastFonts1[] = 
	{
	958,	-101,50,
	959,	48,-101,
	960,	59,48,
	961,	51,59,
	962,	49,51,
	963,	59,49,
	964,	52,59,
	965,	48,52,
	966,	109,48,
	967,	10,109,
	968,	67,32,
	969,	111,67,
	970,	112,111,
	971,	121,112,
	972,	114,121,
	973,	105,114,
	974,	103,105,
	975,	104,103,
	976,	116,104,
	977,	32,116,
	978,	40,32,
	979,	99,-87,
	980,	41,32,
	4817,	-114,-112,
	4873,	-114,-112,
	5125,	86,88,
	5209,	117,-18,
	5210,	0,-1,
	5211,	0,28,
	5993,	95,111,
	0
	};

main(argc,argv)
int	argc;
char	*argv[];
{
printf("Patch program  1987,Microsmiths Inc\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");
	printf("It can also improve multitasking system performance of FF& FastFonts.\n\n");

	printf("To run this program, COPYboth ScreenSaver and ScreenSaver2 from your\n");
	printf("FastFonts V1.01 disk to RAM: . Also copy FFand FastFonts V1.01 to RAM:\n");
	printf("if you want the performance enhancement.\n\n");

	printf("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);

do_patch("ram:FF",FF1);
do_patch("ram:FastFonts",FastFonts1);

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;
long	*ptr;

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

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

/*First verify all read values	*/
for (ptr=patcharray; fpos = *ptr++; )
	{
	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] != *ptr++)
		{
		printf("	Error verifying %s - wrong version?\n	Skipping %s\n",filename,filename);
		return 0;
		}
	ptr++;
	}

/*Next, install the patches	*/
for (ptr=patcharray; fpos = *ptr++; )
	{
	if (fseek(fhand, fpos, 0L) != 0 )
		do_error(filename,"Error seeking in file");

	ptr++;		/*Skip verify value	*/
	cval[0] = *ptr++;
	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("\n	Error patching file %s\n	%s\n\nAborting Patches!\n",err1,err2);
exit(20);
}

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

begin 777 ffpatch1
M   #\P         #          (   :C   !=P    $   /I   &HT[Z"/I.
M50  2'H VDZZ#O183PQM  ( "&862'H \"!M  HO*  $3KH.FE!/2D!G9$AZ
M -U.N@[,6$](>@$63KH.PEA/2'H!3DZZ#KA83TAZ 8U.N@ZN6$](>@'*3KH.
MI%A/2'H""4ZZ#II83TAZ BI.N@Z06$](>@)*3KH.AEA/2'H"44ZZ#GQ83S\\
M  %.NA>:5$](;( "2'H"9TZZ Q!03TAL@!Y(>@)K3KH# E!/2&R .DAZ G!.
MN@+T4$](;($Z2'H":4ZZ N903TAZ FU.N@XP6$](>@*F3KH.)EA/3EU.=5!A
M=&-H('!R;V=R86T@J2 Q.3@W+*!-:6-R;W-M:71H<R!);F,*"@!/2P!4:&ES
M('!A=&-H('-O;'9E<R!A(&)U9R!W:&EC:"!C86X@8V%U<V4@=&5L96-O;2!P
M<F]G<F%M<R!T;R!L;V]S90H 8VAA<F%C=&5R<R!W:&5N(&5I=&AE<B!V97)S
M:6]N(&]F(#$N,#$@4V-R965N0FQA;FME<B!I<R!R=6YN:6YG+@H 270@8V%N
M(&%L<V\@:6UP<F]V92!M=6QT:71A<VMI;F<@<WES=&5M('!E<F9O<FUA;F-E
M(&]F($9&H"8@1F%S=$9O;G1S+@H* %1O(')U;B!T:&ES('!R;V=R86TL($-/
M4%F@8F]T:"!38W)E96Y3879E<B!A;F0@4V-R965N4V%V97(R(&9R;VT@>6]U
M<@H 1F%S=$9O;G1S(%8Q+C Q(&1I<VL@=&\@4D%-.B N($%L<V\@8V]P>2!&
M1J!A;F0@1F%S=$9O;G1S(%8Q+C Q('1O(%)!33H* &EF('EO=2!W86YT('1H
M92!P97)F;W)M86YC92!E;FAA;F-E;65N="X*"@!4:&5N(')U;B!T:&ES('!R
M;V=R86T@=VET:"!C;VUM86YD(&QI;F4Z"@ Q/B!&1E!A=&-H,2!/2PH* %1H
M:7,@=VEL;"!L96%V92!T:&4@<&%T8VAE9"!P<F]G<F%M<R!I;B!204TZ"@!R
M86TZ4V-R965N0FQA;FME<@!R86TZ4V-R965N0FQA;FME<C( <F%M.D9& ')A
M;3I&87-T1F]N=', "D9I;FES:&5D("T@;F]W(&-O<'D@=&AE('!R;V=R86US
M(&9R;VT@4F%M.B!T;R!Y;W5R('=O<FMI;F<@9&ES:W,*  EA;F0@=&AA;FL@
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
M3TJLA6)F.# LA41(P"\ +RR%7DZZ 8)03S LA4)20$C Y8 O "\LA5I.N@%L
M4$\P+0 (2, O $ZZ )983V 83KH!3B\LA6).N@%Z6$\@+0 (+FR%.$YU3EU.
M=4Y5  !(YPX@."T "# $P?P !D'LA68D0-7(2D1M"KA\ !-N!$J29A Y?  #
MA39P_TS?!'!.74YU,"H !,!\@ !F""\23KH "EA/0I)P &#@(B\ !"QLA49.
M[O_<(B\ !"QLA49.[O^"(B\ !"QLA49.[O^X(B\ !"QLA49.[O]P+&R%1D[N
M_\HL;(5&3N[_?"(O  0L;(5&3N[_*$SO  8 !"QLA49.[O^L3.\ !@ $+&R%
M1D[N_^(L;(5&3N[_Q$SO  X !"QLA49.[O_63.\ #@ $+&R%1D[N_[XB+P $
M+&R%1D[N_Z9,[P .  0L;(5&3N[_T$CG 01,[R"   PL;(4\3J[_E$S?((!.
M=2)O  0L;(4\3N[^8DSO  , !"QLA3Q.[O\Z(F\ !"QLA3Q.[O[:+&R%/$[N
M_WPB;P $("\ ""QLA3Q.[O\N(&\ !"QLA3Q.[OZ,+&R%/")O  0@+P (3N[]
MV")O  0L;(4\3N[^ADSO  , !"QLA3Q.[O[.(&\ !"QLA3Q.[OZ       /L
M     0        C^         _(   /J   !3   !AG___^(    ?   !IO_
M__^"    =@        8C____B    'P   9S____@@   '8        "?0  
M  H    R   "?@   $,    @   "?P   &\   !#   "@    '    !O   "
M@0   'D   !P   "@@   '(   !Y   "@P   &D   !R   "A    &<   !I
M   "A0   &@   !G   "A@   '0   !H   "AP   "    !T   "B    "@ 
M   @   "B0   &,    @   "B@   "G___^I   '=____X[___^0   'K___
M_X[___^0   (JP   %8   !8   (_P   '7____N   )      #_____   )
M 0         <   )Z0   %\   !O         [[___^;    ,@   [\    P
M____FP   \     [    ,    \$    S    .P   \(    Q    ,P   \, 
M   [    ,0   \0    T    .P   \4    P    -    \8   !M    ,   
M \<    *    ;0   \@   !#    (    \D   !O    0P   \H   !P    
M;P   \L   !Y    <    \P   !R    >0   \T   !I    <@   \X   !G
M    :0   \\   !H    9P   ]    !T    :    ]$    @    =    ]( 
M   H    (    ],   !C____J0   ]0    I    (   $M'___^.____D   
M$PG___^.____D   % 4   !6    6   %%D   !U____[@  %%H     ____
M_P  %%L         '   %VD   !?    ;P    !R      !R*P    )W    
M P%W*P   P)A    "0%A*P  "0)X    !0%X*P  !0(        P,3(S-#4V
M-S@Y86)C9&5F    (" @(" @(" @,# P,# @(" @(" @(" @(" @(" @(""0
M0$! 0$! 0$! 0$! 0$! # P,# P,# P,#$! 0$! 0$ )"0D)"0D! 0$! 0$!
M 0$! 0$! 0$! 0$! 4! 0$! 0 H*"@H*"@(" @(" @(" @(" @(" @(" @("
M0$! 0"                   0     !                      $!    
M 0                     ! @    $                             
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
6           #\@   ^L    !   #\@  
 
end

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