LnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)O^b+TRECTS.TEXT h+!/ h/!4+TILE24.FONTh0!4.TPIXELMAP.CODE* h,!%TPIXELMAP.LIB/'h-!.TPIXELMAP.TEXT h,!$+TRECTS.CODE h,!'TRECTS.LIB'h,! -SKELETON.TEXTh+!"-TABLET.DRIVER  h2!*TFONT.CODEh h/!$TFONT.LIBm'h/!ר*TFONT.TEXT[ h.!#+TILE12.FONTo h/!4+TILE18.FONTu'h.! -ICONDEMO.TEXTDh-!)ICONS.PIC!@h1!,MAGRITTE.PIC!@h1!-MASKDEMO.CODE< h-!MASKDEMO.LIBB'h-!ר-MASKDEMO.TEXT1 h-!III.GRX.05CS.05u' +CENT12.FONT h0!44+CENT18.FONT h0!4+CENT24.FONTh0!4 *ESCHER.PIC!@h1!-ICONDEMO.CODES h.!ICONDEMO.LIBY >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@L  Program TRects; Uses {$u *Lib/rastercore.lib} (MemoryManager, (RasterCore; Const maxLength= 40;   Var Ret_Dynamic, Ret_Segs: Integer; (aRect, bRect, cRect: rect; (  procedure Intro; begin $write ( chr(28) ); { Clear screen fi O^bhear the entire graphics screen and turn it on} #Max_VPort; #Fill_VPort; #Grafix_On; % #{ #Fill in your procedure calls here. #} # #CloseRCore; #CloseMemory; End. ln('Unable to open RasterCore'); )CloseMemory; )Exit ( Program ); &end; { if } # #{ Setup the pencolor, fillcolor and graphics mode 'if they differ from the default } #GrafixMode ( Col140 ); #PenColor ( S_White ); #FillColor ( S_Black ); % #{Cl1writeln('Unable to open Memory Manager'); 1Exit ( Program ); & end )else -begin 1writeln('Ret_Dynamic= ',Ret_Dynamic ); 1writeln('Ret_Segs= ',Ret_Segs ); -end; &end; { if } # #OpenRCore ( col140, 2 ); #if ErrorFlag then &begin )write Program Skeleton; Uses {$u *lib/rastercore.lib} (MemoryManager, (RasterCore;  Var Ret_Dynamic, Ret_Segs: Integer; (  Begin # #OpenMemory ( true, 256, 100, Ret_Dynamic, Ret_Segs ); #if ErrorFlag then &begin )if FatalError then -begin rst } $writeln('This demo program shows how the rectangle manipulation routines'); $writeln('can be used to create and modify the Rect data structure.'); $writeln; $writeln('These routines are:'); $writeln(' Set_Bounds_Rect,'); $writeln(' Set_Center_Rect,'); $writeln(' Sect_Rect,'); $writeln(' Center_Rect,'); $writeln(' Offset_Rect, and'); $writeln(' Size_Rect.'); $writeln; $writeln('When the program ''beeps'', press to continue.'); $writeln; $writeln('Press to cont(TRECTS t, bRect, cRect); (ShowMessage('SectRect( aRect, bRect, cRect)'); (ShowRect(cRect, true); ( (CloseRCore; (CloseMemory;   End. etBoundsRect (aRect,75,225,125,175); (ShowMessage('SetBoundsRect (aRect,75,225,125,175)'); (ShowRect( aRect, false); (SetBoundsRect(bRect, 25, 125, 75, 180); (ShowMessage('SetBoundsRect(bRect,25,125,75,180)'); (ShowRect(bRect, false); (SectRect( aRec(SetCenterRect( aRect, 100, 100, 75, 75); (ShowMessage('SetCenterRect (aRect,100,100,75,75)'); (ShowRect( aRect, true); (CenterRect( aRect, 75, 75); (ShowMessage('CenterRect ( aRect, 75, 75 )'); (ShowRect( aRect, false); ( (FillVPort; (Grid; ( (S( (OffsetRect( aRect, 75, 75); (ShowMessage('OffsetRect ( aRect, 75, 75)'); (ShowRect( aRect, false); ( (aRect:= bRect; (SizeRect(aRect, 125, 75 ); (ShowMessage('SizeRect ( aRect, 125, 75)'); (ShowRect( aRect, false); ( (FillVPort; (Grid; ( de ( BW280 ); * ({Clear the entire graphics screen and turn it on} (Fill_VPort; (Grafix_On; * (Grid; ( (SetBoundsRect( aRect, 100, 200, 50, 100 ); (bRect:= aRect; (ShowMessage('SetBoundsRect (aRect,100,200,50,100)'); (ShowRect( aRect, true); iteln('Ret_Dynamic= ',Ret_Dynamic ); 6writeln('Ret_Segs= ',Ret_Segs ); 2end; +end; { if } ( (OpenRCore ( BW560, 2 ); (if ErrorFlag then +begin .writeln('Unable to open RasterCore'); .CloseMemory; .Exit ( Program ); ( end; { if } ( (GrafixMoeadln; #end; { ShowRect } #  Begin ( (Intro; ( (OpenMemory ( true, 256, 100, Ret_Dynamic, Ret_Segs ); (if ErrorFlag then +begin .if FatalError then 2begin 6writeln('Unable to open Memory Manager'); 6Exit ( Program ); 2end .else 2begin 6wr*Set_Bounds_Rect ( textBox, 0, h * maxLength, 0, v ); &OffSetRect ( textBox, 10, 10 ); &PenMode ( Store ); &FillColor ( S_Black ); &FillRect ( textBox ); &MoveTo ( 10, 10 ); &R_String ( outString ); & &LoadRState ( state ); &write ( chr(7) ); &r.h, str1); )str ( BotLeft.v, str2 ); )str ( TopRight.h, str3 ); )str ( TopRight.v, str4 );  end; &outString:= concat ('BotLeft= (',str1,',',str2,')', 8' TopRight= (',str3,',',str4,')'); &with Cur_RState.C_CharSize do 2, (str3, (str4: string; # textBox: rect; #begin { ShowRect } &SaveRState ( state ); &FillColor ( S_White ); &if filled then FillRect ( anyRect ); &PenMode ( Invert ); &FrameRect ( anyRect ); & &with anyRect do begin )str ( BotLefts_Rect ( box, 0, h * maxLength, 0, v ); $OffSetRect ( box, 10, 20 ); $FillRect ( box ); $MoveTo ( 10, 20 ); $R_String ( msg ); end;  procedure ShowRect(anyRect: rect; filled: boolean); var outString: string; (state: rcoreState; (str1, (str,RLineTo ( h, 0 ); (end; (for i:=0 to h div gridSize do begin ,MoveTo ( i*gridSize, 0 ); ,RLineTo ( 0, v ); (end;  end;  end;  procedure showMessage ( msg: string );  var box: rect;  begin $with Cur_RState.C_CharSize do (Set_Boundinue...');  readln; $write ( chr(28) ); end;  procedure Grid; const gridSize= 50;  var i: integer;  begin with ScreenMap.MaxSize do begin (for i:=0 to v div gridSize do begin ,MoveTo ( 0, i*gridSize ); @dccg !"#$%&'(O^bxLIBRARY FILES: *lib/rastercore.lib $$ '&,(&` && & && d2d&) צ$SetBoundsRect (aRect,100,200,50,100)  KK&-OffsetRect ( aRect, 75, 75)   }K&.צSizeRect ( aRect, 125, 75) & ddKK&*צ#SetCenterRect (aRect,100,100,75,75)  KK&,צCenterRect ( aRect, 75, 75 ) & K}ǯ&)צ$SetBoundsRect (aRect,75,225,125,175)  }KǴ&)"SetBoundsRect(bRect,25,125,75,180)  &+צSectRect( aRect, bRect, cRect)&/&'//pen RasterCore/&&& & && d2d&) צ$SetBoundsRect (aRect,100,200,50,100)  KK&-OffsetRect ( aRect, 75, 75)   }K&.צSizeRect ( aRect, 125, 75) & ddKK&*צ#SetCenterRect (aRect,10ƀ& & &0&<8/&d///7Unable to open Memory ManagerSצ Ret_Dynamic=   Ret_Segs=  &/4Unable to o0&;& ء&&&CP lP ƀP ƀP ̀ƀצ BotLeft= ( ƀCZƀ,[ƀlǫƀ)Ǭƀצ TopRight= (Ǹƀƀƀצ,ƀƀƀ)ƀPƀ'$('%&)ƀ &-&& Press to continue...^'2ȡ2& '&'2ȡ2& '& J \تP+'$('%&)+ &-+& & &Z4٨צ Set_Center_Rect,צ Sect_Rect,צ Center_Rect,צ Offset_Rect, andצ Size_Rect.צ9When the program 'beeps' you must press to continue.?This demo program shows how the rectangle manipulation routinesצ9can be used to create and modify the Rect data structure.These routines are:צ Set_Bounds_Rect,(MoveTo (75, 90 ); (R_String('inverted'); (MoveTo ( 95, 110 ); (MaskSelect ( S_Black ); (Pattern_Mask(a_pattern, a_mask); (MaskSelect ( S_White ); (write( chr(7) ); (readln; ( ({Show tiling with the pattern} (MoveTo(5, 90); (R_String('tiling');tern transferred through the Mask} (MoveTo(95, 165); (R_String('masked'); (MoveTo(95, 175); (Pattern_Mask(a_pattern, a_mask); (write ( chr(7) ); (readln; ( ({Show the effect of MaskSelect} (MoveTo (90, 100 ); (R_String('mask'); 165); (R_String('Mask'); (MoveTo(5, 175); (Solid_Mask(a_mask); (write ( chr(7) ); (readln; ( ({Show the pattern} (MoveTo(40, 165); (R_String('Pattern'); (MoveTo(40, 175); (Pattern_Rect(a_pattern); (write ( chr(7) ); (readln; ( ({Show the Pat= 14 downto 7 do 1begin 4size:= size+2; 4SizeRect ( a_rect, size, size ); 4PenColor(color); 4FrameRect(a_rect); 1end; { for } ( end; { with } ( ({back to the screen} (CurrentMap(ScreenMap); (PenColor(S_White); ( ({Show the mask} (MoveTo(5, ,LineTo ( TopRight.h, BotLeft.v ); (end; ( ({Create the pattern} (Alloc_XMap(a_pattern, 17, 17, NibbleMap); (Current_Map(a_pattern); (SetBoundsRect(a_rect, 8, 8, 8, 8); (with a_rect do +begin .DotAt(BotLeft.h, BotLeft.v); .size:= 1; .for color:l_VPort; ( (FrameRect ( a_mask.bounds ); (with a_mask.bounds do begin ,for i:= 0 to 5 do begin 0MoveTo ( 0, 0 ); 0RMoveTo ( sqr(i) div 2, 0 ); 0RLineTo ( TopRight.h, TopRight.v ); ,end; ,MoveTo ( BotLeft.h, TopRight.v ); GrafixMode ( Col140 ); (PenColor ( S_White ); (FillColor ( S_Black ); * ({Clear the entire graphics screen and turn it on} (Max_VPort; (Fill_VPort; (Grafix_On; * ({Create the mask} (Alloc_XMap(a_mask, 17, 17, BitMap); (Current_Map(a_mask); (Filin 6writeln('Ret_Dynamic= ',Ret_Dynamic ); 6writeln('Ret_Segs= ',Ret_Segs ); 2end; +end; { if } ( (OpenRCore ( col140, 2 ); (if ErrorFlag then +begin .writeln('Unable to open RasterCore'); .CloseMemory; .Exit ( Program ); ( end; { if } ( ($readln; $write ( chr(28) ); end;  Begin ( (Intro; ( (OpenMemory ( true, 256, 100, Ret_Dynamic, Ret_Segs ); (if ErrorFlag then +begin .if FatalError then 2begin 6writeln('Unable to open Memory Manager'); 6Exit ( Program ); 2end .else 2begill'); $writeln('attribute routines:'); $writeln; $writeln(' Mask_Select, and'); $writeln(' Align_Pattern'); $writeln; $writeln('When the program ''beeps'' you must press to continue.'); $writeln; $writeln('Press to continue...'); ln; $writeln('These routines are:'); $writeln; $writeln(' Solid_Mask,'); $writeln(' Pattern_Rect,'); $writeln(' Tile_Rect, and'); $writeln(' Pattern_Mask,'); $writeln; $writeln('The program also demonstrates the effects of the pattern f: integer; (Ret_Segs: integer; (size: integer; ( ( procedure Intro; begin $write ( chr(28) ); { Clear screen first } $writeln('This demo program demonstrates the visual effect of the'); $writeln('pattern fill routines.'); $write Program TPixelMap; Uses AppleStuff, ({$u *Lib/rastercore.lib} (MemoryManager, (RasterCore;  Var a_mask: pixelmap; (a_pattern: pixelmap; (a_rect: rect; (color: integer; (i: integer; (Ret_Dynamic (MoveTo(5, 100); (Tile_Rect(a_pattern, 45, 45); (write ( chr(7) ); (readln; ( ({Alter the alignment and show the effect on Tile_Rect} (MoveTo(5, 10); (R_String('(8,8)'); (MoveTo (5, 2 ); (R_String('floating'); (MoveTo(5, 20); (AlignPattern(false, 8, 8); (Tile_Rect(a_pattern, 45, 45); (RMoveTo ( 20, 20 ); (Tile_Rect(a_pattern, 45, 45); (write ( chr(7) ); (readln; ( ({Alter the Fixed_Pattern attribute and show the effect on Tile_Rect} (MoveTo(80, 10); (R_String('(8,8)'); (MoveTo(80, 2 )LIBRARY FILES: *lib/rastercore.lib $$ & &%Zd& צmask&KZ& inverted&_n& && &%&&Z& צtiling&d& --&$ & (8,8)&& floating&& &' --&$& --&$P & צ(8,8)&P& צfixed&P& &' --&$& --&$&/&'//'&/8-ǯ& &"(ǥ& Pattern&(ǯ& &#_ǥ& masked&_ǯ& &%Zd& צmask&KZ& inverted&_n& && &%&&Z& צtiling&d& --&$ & (8,8)&& floating&& &' --&$& --&$P &&& & &/ &&)&ġ!&.&&'&&ǥ& צMask&ǯ& &"(ǥ& Pattern&(ǯ& &#_ǥ& masked&_n Memory ManagerU Ret_Dynamic=   Ret_Segs=  &/4צUnable to open RasterCore/&&& & &&&/&&&ȡ!&  Align_Pattern9When the program 'beeps' you must press to continue.צPress to continue.../&d///7צUnable to ope Tile_Rect, and Pattern_Mask,צ=The program also demonstrates the effects of the pattern fillattribute routines:צ Mask_Select, andצ 7This demo program demonstrates the visual effect of theצpattern fill routines.צThese routines are: Solid_Mask,צ Pattern_Rect,)+,-.@nccgTPIXELMA ; (R_String('fixed'); (MoveTo(80, 20); (AlignPattern(true, 8, 8); (Tile_Rect(a_pattern, 45, 45); (RMoveTo ( 20, 20 ); (Tile_Rect(a_pattern, 45, 45); (write ( chr(7) ); (readln; # (CloseRCore; (CloseMemory;   End. 1 Q " " O^bx(color:= Random mod 16; $ for i:= S_Black to S_White do if color= values[i] then aNewOne:=False; $until aNewOne;  values[maskNumber]:= color;  PenColor ( color );  end;  procedure GetOut; begin #CloseRCore; #CloseMemory; #exit ( Progress to continue...'); $readln; $write ( chr(28) );  end;  procedure NewColor ( maskNumber: integer ); var aNewOne: boolean; (color: screenColor; (i: integer;  begin $repeat $ aNewOne:= True; best'); $writeln('color combination originally! Pressing the Escape key will'); $writeln('cause the program to exit.'); $writeln; $writeln('After making sure that the diskette volume /RCORE.DISK2 is'); $writeln('mounted and that interlace is off, prriteln('The program beeps when this is finished,'); $writeln('and you must press to continue...'); $writeln;  writeln('Following this is a loop that reconstructs the image using'); $writeln('random color combinations. Obviously Saul chose the$writeln('BuildMask procedure takes a little while to construct a mask.'); # writeln;  writeln('Then the program quickly reconstructs the original image by'); $writeln('layering each mask with the proper color onto the screen.');  writeln; $we colors in the image.'); $writeln; $writeln('As it builds a mask for a color it strips that color out of'); $writeln('the original image. This occurs at a leisurely pace, since the'); demo program uses a digital image created by Saul Bernstein'); $writeln('to show the power of masking technology...'); $writeln; $writeln('First it recalls Saul''s image from a disk file and gradually'); $writeln('builds a separate mask for each of thlack..S_White] of pixelMap; (pMask: ^maskBuffer; (retDynamic: integer; (retSegs: integer; (values: packed array [S_Black..S_White] of mByte; (   procedure Intro; begin $write ( chr(28) ); { Clear screen first } $writeln('This Program MaskDemo; Uses AppleStuff, ({$u *lib/rastercore.lib} (MemoryManager, (RasterCore;  Const Escape= 27;  Type maskBuffer= packed array [1..3456] of mByte;   Var ch: char; (i: integer; (masks: array [S_B023456789:am );  end;  Begin #OpenMemory ( true, 400, 100, retDynamic, retSegs ); #if ErrorFlag then &begin )if FatalError then -begin 1writeln('Unable to open Memory Manager'); 1Exit ( Program ); & end )else -begin 1{ 1writeln('Ret_Dynamic= ',Ret_Dynamic ); 1writeln('Ret_Segs= ',Ret_Segs ); - } -end; &end; { if } # #OpenRCore ( col140, 2 ); #if ErrorFlag then &begin )writeln('Unable to open RasterCore'); )CloseMemory; )Exit ( Program ); &end; { if } # #{ Setup the pencolor, fiצ;color combination originally! Pressing the Escape key willcause the program to exit.:After making sure that the diskette volume /RCORE.DISK2 is to continue...:Following this is a loop that reconstructs the image using9random color combinations. Obviously Saul chose the bestcedure takes a little while to construct a mask.;Then the program quickly reconstructs the original image byצ9layering each mask with the proper color onto the screen.(The program beepsa separate mask for each of the colors in the image.צ;As it builds a mask for a color it strips that color out of?the original image. This occurs at a leisurely pace, since theצ=BuildMask pro@This demo program uses a digital image created by Saul Bernstein*to show the power of masking technology...?@A@nccgMASKDEMO or i:= S_Black to S_White do begin +if keypress then begin /read ( ch ); /if ( ch=chr(Escape) ) then GetOut; +end; +NewColor (i); +SolidMask ( masks[i] ); 'end; # for i:= 1 to 10000 do; #until False; # #GetOut;  End. end; # #GrafixPage ( 1 ); #GrafixOn; #for i:= S_Black to S_White do begin # PenColor ( i ); 'SolidMask ( masks[i] ); #end; # #write ( chr (7) ); { "beep" } #readln; # #repeat 'FillVPort; 'for i:= S_Black to S_White do values[i]:=255; 'fcalMap ( masks[i], ord ( pMask ), ImaxSize.h, maxSize.v, BitMap ); 'end; 'values[0]:= i; 'BuildMask ( ScreenMap, masks[i], 1, values ); ' 'SolidMask ( masks[i] ); 'if keypress then begin +read ( ch ); +if ( ch=chr(Escape) ) then GetOut; 'end; ##LoadScreen ( '/rcore.disk2/magritte.pic'); #PenColor ( S_Black ); #for i:= S_Black to S_White do begin 'with ScreenMap do Alloc_XMap ( masks[i], maxSize.h, maxSize.v, BitMap ); 'if ErrorFlag then begin ' New ( pMask ); ' with ScreenMap do Pasllcolor and graphics mode 'if they differ from the default } #GrafixMode ( Col140 ); % #{Clear the entire graphics screen and turn it on} #Max_VPort; #Fill_VPort; # #Intro; # #GrafixPage ( 2 ); #Fill_VPort; #GrafixOn; ess to continue...@ȡڥá١&D4 N&//&ǐd//>/7צUnable to open Memory Manager&/4Unable to open RasterCore/&& &&&&צ/rcore.disk2/magritte.pic&9&멀ȡ ''&//  ''&0' &( &" pixelMap; (screenStrip: pixelMap; (iconStrip: array [1..iconsStrip] of integer; (stripSize: point; (tempRect: rect; (tries: integer; (  procedure Intro; begin $write ( chr(28) ); { Clear screen first } $writeln('Thrner: point; (fColor: screenColor; (i: integer; (nTries: integer; (icons: pixelMap; (pattern: pixelMap; (retDynamic: integer; (retSegs: integer; (iconSize: point; (saveStrip:  Program IconDemo; Uses AppleStuff, ({$u *lib/rastercore.lib} (MemoryManager, (RasterCore;  Const Escape= 27; (maxTries= 3; (nColors= 16; (nIcons= 20; (iconsStrip= 7; (  Var ch: char; (coCEFGHIJKLMNOPQ1 O^bxLIBRARY FILES: *lib/rastercore.lib $$ á&&멀ȡ& &"&멀ȡ멀ȡ-á &"'멀ȡ&'//'&D8wx<5^d|Unable to open RasterCore/&& &&&&צ/rcore.disk2/magritte.pic&9&멀ȡ ''&//  ''&0' &( &"á&&멀ȡ& &"&멀ȡ멀ȡ-á &"'멀ȡ&'//'&D8wis demo program uses the pattern fill routines to show'); $writeln('menus of icons that overlay the screen, then disappear,'); $writeln('leaving the screen intact.'); $writeln; $writeln('Occasionally, a menu icon is ''burned'' onto the screen,'); $writeln('gradually revealing a digital image drawn by Saul Bernstein'); $writeln('after a famous M.C. Escher print.'); $writeln; $writeln('The program first loads a set of icons from a file onto the'); $writeln('screen, then transfers them to a bitma nColors; /until fColor <> Cur_RState.C_PenColor; /FillColor ( fColor ); / /SolidMask ( icons ); + MaskSelect ( (Cur_RState.C_MaskSelect + 8 ) mod nColors ); + PenColor ( fColor ); /SolidMask ( icons ); / +end; + +for i:=1 to 2000 do; { k ( h, v + stripSize.v ); +for i:= 1 to iconsStrip do begin /RMoveTo ( 0, -iconSize.v ); /PenColor ( random mod nColors ); /MaskSelect ( random mod nColors ); /iconStrip[i]:= random mod nIcons; /GetIcon ( iconStrip[i] ); /repeat 2fColor:= random mod+corner.v:= corner.v - stripSize.v div 2; + + +OffsetRect ( screenStrip.bounds, corner.h, corner.v ); + +CurrentMap ( saveStrip ); +MaxVPort; + +MoveTo ( 0, 0); +PatternRect ( screenStrip ); +CurrentMap ( ScreenMap ); + +with corner do MoveTofor tries:=1 to nTries do begin +with stripSize do /SetBoundsRect ( screenStrip.bounds, 0, h-1, 0, v-1); + +corner.h:= -iconSize.h div 2 + random mod ScreenMap.MaxSize.h; +corner.v:= -iconSize.v div 2 + random mod ScreenMap.MaxSize.v; # #iconSize.h:= 20; #iconSize.v:= 24; #stripSize.h:= iconSize.h; #stripSize.v:= iconsStrip * iconSize.v; #with stripSize do Alloc_XMap ( saveStrip, h, v, NibbleMap ); # #repeat 'AlignPattern ( false, 0, 0 ); 'nTries:= 1 + random mod maxTries; ' #MoveTo ( 0, 0 ); #PatternRect ( ScreenMap ); ' #CurrentMap ( ScreenMap ); #GrafixPage ( 2 ); #LoadScreen ( '/rcore.disk2/escher.pic'); #pattern:= ScreenMap; # #GrafixPage ( 1 ); #FillColor ( S_DarkBlue ); #FillVPort; #screenStrip:= ScreenMap;#{Clear the entire graphics screen and turn it on} #Max_VPort; #Fill_VPort; # #Intro; # #FillVPort; #GrafixOn; #LoadScreen ( '/rcore.disk2/icons.pic'); #with ScreenMap do Alloc_XMap ( icons, maxSize.h, maxSize.v, BitMap ); #CurrentMap ( icons );nable to open RasterCore'); )CloseMemory; )Exit ( Program ); &end; { if } # #{ Setup the pencolor, fillcolor and graphics mode 'if they differ from the default } #GrafixMode ( Col140 ); #PenColor ( S_White ); #FillColor ( S_Black ); % teln('Unable to open Memory Manager'); 1Exit ( Program ); & end )else -begin 1writeln('Ret_Dynamic= ',Ret_Dynamic ); 1writeln('Ret_Segs= ',Ret_Segs ); -end; &end; { if } # #OpenRCore ( col140, 2 ); #if ErrorFlag then &begin )writeln('U$offset.v:= 4 * iconSize.v + iconSize.v * (iconNumber div 5); $OffsetRect ( icons.bounds, offset.h, offset.v ); end;  Begin #Randomize; #OpenMemory ( true, 256, 100, retDynamic, retSegs ); #if ErrorFlag then &begin )if FatalError then -begin 1wri$CloseRCore; $CloseMemory; $exit ( program );  end;   procedure GetIcon ( iconNumber: integer ); var offset: point;  begin  SetBoundsRect ( icons.bounds, 0, iconSize.h-1, 0, iconSize.v-1 ); $offset.h:= iconSize.h * (iconNumber mod 5); ; $writeln('mounted and that interlace is off, press to continue...'); $readln;  write ( chr(28) );  end;  procedure GetOut; begin $write ( chr (7) ); { "beep" } $ $GrafixPage ( 2 ); $GrafixOn; $for i:= 1 to 10000 do; # program to pause;'); $writeln('pressing another key will cause the program to continue.'); $writeln; $writeln('Pressing the Escape key will cause the program to exit.'); $writeln; $writeln('After making sure that the diskette volume /RCORE.DISK2 is')p, so that they can'); $writeln('be used as masks.'); $writeln; $writeln('Then the program proceeds to display menus of these icons'); $writeln('using random color combinations at random locations.'); $writeln; $writeln('Pressing a key will cause theill time } + +if keypress then begin /read ( ch ); /if ( ch=chr(Escape) ) then GetOut /else begin 3repeat until keypress; 3read (ch); /end; +end; + +if tries <> nTries then begin /with corner do MoveTo ( h, v ); /PatternRect ( saveStrip ); ' end; ' 'end; ' 'AlignPattern ( true, 0, 0 ); # 'with corner do MoveTo ( h, v + stripSize.v ); 'for i:= 1 to iconsStrip do begin +RMoveTo ( 0, -iconSize.v ); +GetIcon ( iconStrip[i] ); +PatternMask ( pattern, icons ); 'end; ' 'MaskSelect pen RasterCore/&&& & &&&צ/rcore.disk2/icons.pic&9 ''&/ && '&#'&&/rcore.disk2/escher.pic&9' && &(' 8989&/&'>?>?ȡ+89&) &-4/&d///7Unable to open Memory ManagerUצ Ret_Dynamic=  צ Ret_Segs=  &/4Unable to oצ:After making sure that the diskette volume /RCORE.DISK2 isצ to continue...&&'ȡ&/ : צ/Pressing a key will cause the program to pause;8pressing another key will cause the program to continue.7Pressing the Escape key will cause the program to exit.9screen, then transfers them to a bitmap, so that they canצbe used as masks.9Then the program proceeds to display menus of these iconsצ4using random color combinations at random locations.d' onto the screen,צ;gradually revealing a digital image drawn by Saul Bernstein!after a famous M.C. Escher print.צ;The program first loads a set of icons from a file onto the8This demo program uses the pattern fill routines to show7menus of icons that overlay the screen, then disappear,צleaving the screen intact.צ6Occasionally, a menu icon is 'burneRTUVWX@nccg. ICONDEMO in +read ( ch ); +if ( ch=chr(Escape) ) then GetOut ' else begin /repeat until keypress; /read (ch); ' end; 'end; ' #until False; # End. ( (Cur_RState.C_MaskSelect + 8 ) mod nColors ); 'with corner do MoveTo ( h, v + stripSize.v ); 'for i:= 1 to iconsStrip do begin +RMoveTo ( 0, -iconSize.v ); +GetIcon ( iconStrip[i] ); +PatternMask ( pattern, icons ); 'end; ' 'if keypress then beg&)''9+&-&& & (&#'&9& @@ȡo&&&&11'ˡ& &"'&&& &"@@ȡ$á>ˡ & &#>>&'9& ??ȡ$&1 &%'&&9& ??ȡ$&1 &%$á&'//'& write ( chr(28) );  end; "procedure DoOpen(filename: string; var font_tag: handle); %begin { DoOpen } (Open_Font ( filename, font_tag ); % if ErrorFlag then +begin + writeln('Unable to open ', filename); .CloseRCore; .CloseMemory; .exphics modes and colors.'); $writeln; $writeln('Pressing the Escape key will cause the program to exit.'); $writeln; $writeln('After making sure that the diskette volume /RCORE.DISK2 is'); $writeln('mounted , press to continue...'); $readln; r; (Ret_Segs: integer; ( " procedure Intro; begin $write ( chr(28) ); { Clear screen first } $writeln('This demo program cycles through the fonts available'); $writeln('in the Raster Graphics ToolKit and shows them in various'); $writeln('graze: point; (fontIndex: integer; (FontInfo: Array [ 1..maxFonts ] of Handle; (fontName: string; (GrfMode: integer; (itemp: integer; (jtemp: integer; (i: Integer; (Ret_Dynamic: intege Program TFont; Uses AppleStuff, ({$u *lib/rastercore.lib} (MemoryManager, (RasterCore, (RasterFont;  Const Escape= 27; (maxFonts= 6;   Var aChar: string; (ch: char; (Colors: integer; (cSiZ\]^_`abcdefO^bhLIBRARY FILES: *lib/rastercore.lib $$ ,9 5t4|=0p+&-&& & (&#'&9& @@ȡo&&&&11'ˡ& &"'&&& &"@@ȡ$áit(program); +end; { if } %end; { of DoOpen } +  procedure GetFontName ( index: integer ); "begin { GetFontName } &case index of *1: fontName:='tile12'; *2: fontName:='tile18'; *3: fontName:='tile24'; *4: fontName:='cent12'; *5: fontName:='cent18'; *6: fontName:='cent24'; &end; "end; { of GetFontName } "  Begin (Intro; ( ({Initialize} (Randomize; (OpenMemory ( true, 256, 100, Ret_Dynamic, Ret_Segs ); (if ErrorFlag then +begin .if FatalError then 2begin 6writeln('Unable to open MeTFONT ugh, you should close a font when you're )done with it.} ( (CloseRCore; (CloseMemory;   End. f KeyPress then read ( ch ); * (Until ch=chr(Escape); ({Terminate when the escape key is pressed} ( (for i:= 1 to maxFonts do +CloseFont(FontInfo[i]); ({This is not really necessary here, since we're closing RasterCore )immediately. In general, tho*Raster_String ('Third Wave Graphics'); *Raster_LF ( 1.0 ); *Raster_String ('presents'); *Raster_LF ( 1.0 ); *Raster_String ('the Raster Graphics Toolkit'); * *{Delay long enough to see the display} *if not KeyPress then for i:= 1 to 8000 do; ( iRight.v ); *Raster_LF ( 4.0 ); *Raster_String ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'); *Raster_LF ( 1.0 ); *Raster_String ('abcdefghijklmnopqrstuvwxyz'); *Raster_LF ( 1.0 ); ( Raster_String ('0123456789!@#$%^&*()_+=-|\'); *Raster_LF ( 2.0 ); 2: aChar:='b'; 23: aChar:='c'; * end; * Raster_Char ( aChar[1] ); .R_TextExtent ('a',cSize.h,cSize.v); .R_MoveTo( cSize.h+1, 0); *end; * *{Move back to the starting point} *with Cur_RState.C_PixelMap.Bounds do -moveto ( BotLeft.h + 10 , TopotLeft.h + 10 , TopRight.v ); *Raster_LF ( 1.0 ); * *{ Display the font name } *GetFontName ( fontIndex ); *Raster_String ( fontName ); *Raster_LF ( 2.0 ); * *{Display a few characters.} *for i:= 1 to 3 do begin * case i of 21: aChar:='a'; 2-Until jtemp <> itemp; *FillColor ( jtemp ); * *{Clear the entire graphics screen and turn it on} *Max_VPort; *Fill_VPort; *Grafix_On; *Screen_On; * *{Move to the top left corner of the screen } *with Cur_RState.C_PixelMap.Bounds do -moveto ( BPenColor ( itemp ); * *if ( Colors=2) then -{Set the fill color to the inverse of the pen color} -jtemp:= S_White - itemp *else -{Select a random fill color, different from the pen color} -Repeat /jtemp:= random mod Colors; GrafixMode ( cp280 ); ,3: GrafixMode ( bw560 ); ,4: GrafixMode ( Col140 ); *end; * *{Select a random pen color} *if GrfMode in [1,3] then Colors:=2 *else Colors:=16; *itemp:= random mod Colors; *if (Colors=2) and (itemp=1 ) then itemp:=S_White; *e screen} *Screen_Off; * *{Select one of the fonts} *fontIndex:= 1 + fontIndex mod maxFonts; *Select_Font ( FontInfo [ fontIndex ] ); * *{Select a random graphics mode} *GrfMode:= Random mod 4 + 1; *Case GrfMode of ,1: GrafixMode ( bw280 ); ,2: .CloseMemory; .Exit ( Program ); ( end; { if } ( ({Open the fonts} (for i:= 1 to maxFonts do begin ( GetFontName ( i ); ,DoOpen( concat ('/rcore.disk2/',fontName,'.font'), FontInfo [i] ); (end; ( ( (fontIndex:=0; (Repeat * *{Turn off thmory Manager'); 6Exit ( Program ); 2end .else 2begin 6writeln('Ret_Dynamic= ',Ret_Dynamic ); 6writeln('Ret_Segs= ',Ret_Segs ); 2end; +end; { if } # (OpenRCore ( Bw560, 2 ); (if ErrorFlag then +begin .writeln('Unable to open RasterCore'); pffnccggijklnpqrs  tile12rps LIBRARY FILES: *lib/rastercore.lib $$ a./.&cc' '& @ABCDEFGHIJKLMNOPQRSTUVWXYZ?abcdefghijklmnopqrstuvwxyz?0123456789!@#$%^&*()_+=-|\@Third Wave Graphics?presents?the Raster Graphics Toolkitc@fcfȡcc ,,ácfcfȡ1ccc&/&'//'&R&O,@@cfcfȡHcaPbPcP a./.&cc' '& @ABCDEFGHIJKLMNOPQRSTUVWXYZ?abcdefghijklmnopqrstuvwxyz?0123456789!@#$%^&*()_+=-|\@Third Wave Graphics?presents?the Raster Graphics T``&"&&& ` ---a-éaÄaa&-áab-bbaˡb& & &&& ' '& ?07@cfcfȡHcaPbPcP  Ret_Dynamic= d  Ret_Segs= e &/4צUnable to open RasterCore/cfcfȡJcgg /rcore.disk2/ g7]g.fontbg1ccc0& 0010&/RRعZ7tile12תP^7צtile18PO7tile24תP@7צcent12P17cent18תP"7צcent24P aTG:- x/&dde///7צUnable to open Memory ManagerUprogram to exit.צ:After making sure that the diskette volume /RCORE.DISK2 isצ#mounted , press to continue...٪P/8Unable to open 4This demo program cycles through the fonts available8in the Raster Graphics ToolKit and shows them in variousgraphics modes and colors.7Pressing the Escape key will cause the ")2;<?BGLOTV]dgmsz!)2:CLR[ckv$+49@FIJMS                      00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ))))))))))))))))))))+2AOdtv} %3ADJT_iv ,@O`n%,5INZgu%/9EQfq~tvwxyz{|}~  tile18rps0 C}y`x>P@ "  @  #>v  V$H#@~‚ /0B@" h@ ! 4q(Q( E R& p$LH:(HA}s  (0D@A  @ ! " ywn]u~ *LΜ) p'HVP (0H B A@  ʼ A)0o"1($E@DA!Br 0P@H B"! A 4q(P)beL!( A/H I!H!@~" (pH@CD B$Q! a P(bD(RED dΔp0!I"H!;$ (E@#A" !/PX(b0D(HDHb 1 0<   @   "!y@p=9 x/ A H@Ay'>bu  >|                                    SY^gpx|  x . tile24rps?10??~000`<<66  <0 ?x``0`l6ƀ l 0`0Rs`?11c10c` `a` xl3 ``p`0  0`<<fc  F0 `026ƌ0 ` 0`60f0 6`< `0`lf` 0< 0`ax ` ``0310```30fx6 ` < `0c00`c@6f ` <0?` `xxc`a x 0` Y 0 ` 1`fx 6`< `030`cc0 0 >?<~~x a 660 < 8I?3` <`0`m00sp 1`0 <0``< `x`~ 0806` c`0 9 8Gxc` c 6``  3`p̌<`< `700` À1c  `< <0fa6 0  ~> 8G`` 0 000`č6`< `g00``6 ``< 0f 0f`30c6`0 >?,Ix`la< ` `<`< ` 0` 0` À1ƀ  `< f0f0ac 0  >?0 9È` 11f` ` `p ```0 `lx6 `f00x`0fl``  `x`> 06g`3c``?F 3`8?a`< `  ```8g<`< `0`0` fl  `<~??10f`p``0000 0l3 ```0p0 0<800 =00? 0f`g`0 `>? c|na0< 0  0`?0 p?01?`00  p0pp 0`?0x8p <888<pqp<8wp8ppppp?cp@9wppp<?px?8x<8p888pxxp;88p=<x<<x<|xqp=?8xwwpxpxp0pw8x9xpw;8p08p>p~<|?|989p8|<~x><}pp?>}y<w>8<p8pp8px8p8pp0?p?<<q?8xx?p?>>pp8ppp88p0w?p<q?8<8p??ppp8p<xp8<q<x<8?@??~y      !      .@Nfw)<<<<<<<<<<<<<<<<<<<<?I^l.>Rbt "3H[k{'9Obv'-;Y`p (8JZjx .<pppy88ppxpp|awpq~8ރppxp?8<??888p<88pqxppp?8888|88??88?8p8888qqp?888pp  century12rps ???~;|0p??8??{x<?;q<Á0py?<???9p8>>|98x88s<<xp88p8?8Á0p???pÁ7p<8xx<8p;8<8===<8sx<p8p8?m?~pÁqpx9?~p88|?pw?x8pw8s;8p8888p8p8x9???9?~ppp88p~>p|ppq8pp{?8x8p88p??x88p8xx><}x??>}y<8w88xpx0?p~p8pppp8xx?<;?888p<}88p89?888px<88ppppqp?x=?88w8>|;89?888pp?>?x8?8988p88p;8x>pqp?<8Á8pxppqcp~8ppGNW`iv !',4;FMTZ]^ag                 $0======================LTTT^drr| !!!!!!!!!!!!!!!!!!!!$-;GVhks{+.29BIUbv ,>N[k|$05BP[iu !)8G^l|" century18rpsH17=x:~  0 LJ?xp22; @<'H"~'EI (AD!1 %23C!$EW*z7„)  1O$E) (!A " x.egڽ7vəSU2.%R2`C P  $$(pDADAA   T$?@RX`B@A A $!"( A1 EB)F "T(;d(? B '"7A A) ( A(P A  -PP0!D B˓ ?t P!B.@H>$) ADP!  PP !$B, x@ @ po`p<#x?:~s {pxn?1G:<ƍ@                      gns|      ?% century24rps?8`F~080~|?O>???ag||>|8sxx?` xx@`pށ ppsp0?3~a080l p?31 p1  <s8pp88`x `9`88xp07ppcp 7;33rǃ?8C \`88܀vr@p88q!<0pp`1ppp8>30a080p`; ?03a vc ǀ8C|s`p880x 11lq<g8880 cp;3L$ID3$9ID# O39;8C0ps|>!pp88 w8p pw=q><?>??0>3> g3 <<p8pp8888p83xG33~8c;  {080x8<p 8  @rpp88xÀp`xp8p8p8Á988pqN318`3`8s 888 8; `ppp8x<pp8q<Á8q<<38@s8 0c؃ `spp8810pppp pp8Á988.38#p?g ??| 1<<3x8sp8`8 8pps8xp18` 88h@p@0 p 8p 0{pppppxxx8 <ppp|pps s8 'N 8sppC0;80?~` ;pppp`p8 8=  spppxpppp0x8 08pp<<pp`s8 7np8spp080`p8x9` ><>p188<0 p8pp0pp<8pp <ppxpps<<88spp~; q0?0 8sp ~;q~8 88`` x<1p8s8~  ?|p???`~  0|8x|?8p>>Th1>O]jy -:EXj|888`xxppppsq8cp8sppc0>xƁ9#88`~0 ?q pppp~<<888pp8ppppsp8Cpcpxfx p1s0>pA888`xp`30?q pppxo<<8=`p8pppffffffffff((f"`ff(fff(p`f(pffffffff ((` (fff࣎`(fff(p࣎fffffffffff((ffff`f裎ffffffffffff((((fff`f(fffff`(( |`000~?~??? x~03~~>>?`? 0 ? a88 `8xx>8 x<`8>88<8x8ssqΟ a8s q?0 v 8?pvq08p8ppp`px0;88<x0pp8sqp`8sqp?9 0 ;p887p p8qpp0ppp`p98808p` x`8pp@8p1|pp8sq<`xL p? 10 @9@?p88`p`8ypppp`x=x 8  x < ` pp`p{`<<8p@xp|~~|><ȏ???8sq (Oqp#C0 >!΀ 88800=9pppp?`8x0p|3pcxp<q pp0p`<<x8` 8p8p8px0 78x oq<p p8sq38I'>`c0 >`g 88`pa#8<q{0 >0<08<΃s  98c@p?<q0pppa<<x?8 x <8ppp>q88@` 8cs78G?`s0 >`01>n8`8p<X p/`? > ~8 pc`<?p<p<c<<8 <8pp pq88`  ~>8I'`ppsp8p08 p,ĈpxϏ#{0 > 8 8<<898c =q0pp~p8g<< 8108pppppsp8p 80ffffffffff((fffffffffff((w裎(ablet orffffffff ((`ffffff࣎裎f(蠎ontinue fffffffffff((`ffff(`fff`` (袈𠈢fP)Vffffffffff(f蠀ffݎff fffpf胎(蠈x裀ff`f𿈀ԎUUU耈((UUUw 裀w࣎裢OOՀ裀"fwUUppUUw裎ww裎(OOOUUUUUUUUf (U 蠎UUU fp耎UUU耈蠈w݀裎OȭUUUUUUU(UUUUp܈耎UUU裈w耈裎OȭOUUUUUUUUUU((P࣎UU裎裎UUw w裎裎w ,O UUUUUUUUf((U(UUU`f(UUUpww耈耎࣎UUUUUUUUUUUՀ(胎UwffUUU`p(p(U[OH0UUUUUUUUUU (PUUffUUՀU (p-P" awffff`UUUp(ࠈUUUwp裎裎O(O Հ"UUp((裈(UUww(耎www裎裎(ʩUUUUUUUUf((PU UUU(`fUUU݀裎w (裎(`)OUUUUUUfUU UUUUUUUw裎w࣎p(蠎_ OJUUUUUUUUUU(((UUUUwpw裎pऐe ComputUUUUUUUU`(((胈UUUfUUU(ww(UUUUUUUUUUU (U`UUU`w((ࣀpUuUiI UUUUUUUUUU((UUffUUUw`裀(pԈTX4@l(wffff`fՎUUUp((pUUUp݀࣎p" `f裎UUpUU(裎裎 8UUUUUUUUf(((U(UUU``f裎UUU(࣎(w((w裎裎" "UUUUUUfUU(U(裎UUUUUUՀ((w(܀(p裎1 UUUUUUUUUU((U"UUՀp裎fUU w裎 ety(%(-(UUUUUUUU`(((UUUfUUU(ߎp裎+=10 UUUUUUUUUUU((U(` UUU`w興(裎Ufull%:pUUUUUUUUUU(((UU(fffUUUf (200:penffffff`f(fff((fff裎f裎0  lff`f(ff`f(((`ff`(蠎p裎裎($=""52fffffffff(` ࠈff`fff裎࣎wP`ffffffff((f(fffffp`ffffpwf(裀裈P,ffffffff`(fffffff࣎裎`(w(裎Offfffff`(ffff裎`fff裎(f裎胈裎OO33333333333DDAAA33@@G3t3A@03?3G@@ttG@tG03ablet or3333333333DDAA333D333D33pAGD?A?@83ontinue w ffpfpwpw( wwwp裎w裀 E B B`"w(f fwww( 裎࣎(w࣎w胎(B wwwwwwww(w(裎www (ࣀwww(胈U( 裎胀(wwwwfwf`(pwww((www(p裀U 裈(@LfA`,wwwwwwww((p݀www`wwwPՀ 裎wwwwwwwwff(((w݀(wwwfffwww(裎U(܀裎裎wwwwwwwwwww((w wfffp`(wwwf``P( (聀r u x { wwwwwwwwww(((w࣎"pwwf(www `U(p  pffwww((www(࣎p裎࣎x z | ~ "f"f(pww裎(ppw(裎裎(J O S Z wwwwwwwww((w wwwwww裎裎( ߀(胎耎FKNTwwwwwwf(wpww(裈pwww 裎UՂ裎w 裎 wwwwwwwww((p (裎www࣎`www P࣎裎p!&.wwwwwwwff((w裎 www(fffwww(ݎU( p裀(wwwwwwwwwww(((w(w`fffwww```P(((ܑʈ`wwwwwwwwww((w裎www``f裎(www(pffU蠎((𠎀ऐvy(ff胈Îwwww(www(p裎裀PхӽQP"("fwwp`裎€wpwww(裎ww裎裈ȄטJwwwwwwww(w"(耎www(www((P(w(裎 OOwwwwwwpw` wwwwp(pwww(w U(p(w(裎` ^$wwwwwwwww(p݀裎www܀pwww PՎ聎裎OL~]Owwwwwwwff((wwwwfff耈www裎p(U((p裎࣎ONwwwwwwwwwww((wpw`fffwww`P(聀OOwwwwwwwwww((wࣀwww``pwww ff蠈OOpfffff܎(ˆfff݀f裎裎 ""ffff` 蠎蠈ffw胎w࣎裎OOL\333333333ADDAA3tt33AGt3G333tGH33tGttG8GH0  l33333333ADDAA3ApGA033?G3x033pD?G3GGGt{x?$=""5233333333ADDAA03GpGA338303G333AtGD@0ADD@tDfull%:p33333333DA3t@033GAt033GD{tG@Dt3A?GDDGtG200:pen3333333333DDADDD3G83x03t330GA@DtA03c333333333DDADtG033G3tt33pH303t@DtD@AG30 ;8t333Dt**(*GDDADA***?;;GpGt;;GtG;GttGG*GtAt33AG**D@GtGAGA***;;ApGtx;;p{DttAv { *******DDAD*tG**833tG***Dt8;Gt;D@D;A@pG*****3**3DDD*@G***tGtG***t8GtDG;Dt@AtGtG'*25*********DADDA*AG***8tGtG**tG08@tG{GttG8DpHxQTW\*******DADDA*G@D**8333xDD***DAp?{t;tD?8tGtG**********DDADDpp3tx3xx;*@*tDDGAtDA8(*@p*********ADDAAGt**t3x33GDG***00;GxDGApDAt3*;333D@G**(*tADDD***8@{tG;{tGt{tGAGtGtL#Np Q%*t@tG333Dtx**(*@pGtDtD***{;DA@tG{;G8DpGGDA **&*&ݪ*******@DADDA*GGp**8@A33Gp***DG8{tGAAD@A8pt@A>J*****3**3xAD*t***GtGt***GAxtG@t;AGApDAGtGtLN L*********DDADDA*pDtt***GtGGtD**Gt@38GttGGtGH8fʐpL*******DDADDA*DtD**8G033D***@AG?G;G@AGttA L***********ADDAD@(G3Gx8*p*GDAtDGDDG(*  **********DADDA*Dt**G3;33Dt***0;ppDADD?@08*L@(8;330033Dt*A*(**GADA***8DtG;8GtG?GttGtG J*@Gt333Gx(*(*@pGDG@A***?{DDtGt?{t8DGttGD&٥e*******DDAA*tt**xA33t***t?GtDp8A@DAx@G@D@׭@fת*****0**AA*G***tG@(***tD8Gt@AG;A{tDAAtGtG̢*********DDAA*G@GG**tGtGA***GtH3;tGG8tGtHA@********DDAA*@G**{t3x***@Dt{8p;tADtG?@eת***********DAAA*t3pG**x;txGD@tAGtx(*" "**********DDAAA*DG**@t3;333A(**0tA@DDA{p08*1)0333333033333t;ApD333DGtD3xtG;tGAGtGtety(%(-(3G333Gtx0333@p@tpD333{?DGtGx?G@tGGt+=10 333333333ADDAD3@t333?Gtxt33pGt;tHGt8tGGtxD8%Ў<3333333@ADDAD3GtA338333xA333AD@t{G3GDDxDGtGtD >H33333333DDADD3Gt338D3t@t333G;tGD3DDDD?p@tD<`,<033333333DA3Dt333GDtGp333GDtGDt3@DpGD8tDGtGt<8`$UUUUUUUTUUUTUUUUUPUUUUUR$C#DDDL<I%R RUUUUUP@P@$ @ $UUUUUUUUU%*))anm-^n(o(?{aoH,nm-^nmZ***^nZ***-^nm **&*&݀-^n+o:c)aH^m-^j?s."gs?{?xnm-^nmZ***-^H**-^nm>J-^o~*c))Xnm-^h1/{7b&v.{?{*m-^nmZ***-^nmZ***-^nmLN L-ZnmZ***amZ)*^*j-(az{"?{ak1Jm-^nmZ(HHH,K-^nmfʐpL-XnmZ*H**-^hj-n9c{r?{?Jom-^nmZ***HH)aH*e^nm L-(Z*^Z*(j-~Hzb)*im-^n(zH^nm  -Z*-Z(**-^nmZ)*(Z*-.a "a.(:`m-^nm*2HHHHnmL@(**H8(*))*H]Z*-*{&".{?{H]Z*-]Z*****-]Z*****-]Z J*o*~)J]Z*-](~a{?*zH((]Z*-]Z****-]Z****-]Z&٥e(-]o)H:~+)()a-Z*-{7b"7{?{xH]Z*-]Z*****-HH***-]Z@׭@f׀*-~++8)a)-]Z*-.?s."gb?{?)Z*-]Z*****-]Z*****-]Z̢*-]Z*****Z**](*1~7"{?H~Z*-]Z***`HHH*)]ZA@*]Z**HH)b*`*-X**(~/7"{?o>Z*-]Z***HH*-]Z@e*-X***(-Z**((**ox"+)^Z*-](~oH(]Z" "-]*****-]Z***(]* ":+)Z*-]Z*0aHHHa-]Z1)((+~))******1?""b?{?.xH**********************ety(%(-(*~Hox))a******~?{g)H*H*************a*******+=10 (*~*+o:)*)`****?s("s?{?o***********HH******full%:p**o)H::())H.******{7b"".{?{xa****************.****200:pen*************)a*(*(*)az"?{ao)H****(H*.**0  l**(***HH********?b{"?{gH~+*******HJH*b***$=""52^(nH)z)HJnn^no{.b.{?Hnn^nnnmZ*-^nnnm`*-^nnn^o(:*)nn^nn((~a)hnn^nnnmZ*-^nmZ*-^nnnv { Z**(*Ynn)hZ*(n^~Hz""a)(an^nnn((HHHHnnncZ**Z*-^nnnm)**n^)za"?H:)Hn^nnn(HHnn (*z+o81)******?".""b?{?{****************a****(H:o()))`******x8{"b*x?{ahH****************.**********HHH))a*******{.7"{?o:*******HHH)H******j*H*+:+)*(***1j{7 "7{?{H~***********HH,**************)a*(*(*/) ":)H*****)aHHHa**************.**(*1'{g:*****(HHH)H*a***zo~())a)]Z*-(z{.{?HH]Z*-]Z****-]Z*****-]Z*~H8o(1))]Z*-]((~oo.HHH,YZ*-]Z*****-]Z*****-]Z-o)H:~)))K-]Z*-]{""""g{?{?XZ*-]Z*****-]Z****-]Z*-+~))]Z*-*(h{/".r7{?H]Z*-]Z*****-]Z**a**-]Z-]Z***HH*-]**)?b{"?{a(H~+Z*-]Z**HHHH,*-]Z*]z(:+:a)()a-X*-z?s"s?{?oZ*-]Z*****-HH(**-]Z(]Z*-]**(*((*~ "a(+)aZ*-]Z(HHHHH-]Z******-]Z*))***)a"?>)JZ*-]Z*(HH*]Z-*o))JJnm-^(o{?b?{g.(HHnm-^nmZ*(*-^nmZ***-^nm-o(zaa()nm-^(zooHHXnm-^nmZ***-^nmZ***-^nm^xj*o+1)*b^nm-^njx?"""r?{?{m-^nmZ***-^nmZ**a-^nm-^.H8ooo)))anm-^nz?b"bbs?{g)*|nm-^nmZ***-^nmZ**-^nm-Z*Z**HH)b)*-^j-1~~7g{?(om-^nmZHaH-^nm-Z(X+:+*-^j-^n{7g 7{?{H~m-^nmZ***-HH*.^nm-(*-**)^n**(Xj-o( ":)m-^nm((Ha^nm-X*-***-^nmZ.**j-0"{a+)m-^nm(HHH)H,anm^x(ann^n((~?c.z?{aoHnn^nnnmZ*-^nnnm*-^nnn ?hܙ^~H8.*))()nn^n(*o****HHlin^nnnmZ*-^nnnmZ*-^nnn^nh(x:)bHnnn^nnh8{*" g{?{?xnn^nnnmZ*-^nnHZ*^nnn<`,<0^n~xhx)))nn^nn1o{.".v6{?*hn^nnnmZ*-^nnnmZa-^nnn<8`$Z*mZ*H)-^nn^.az{&?{a(1n^nnnHHHHH^nnn%ЎH*o(~o))J*****?{?{oH**********************o~b`).****(o~/zH(**********************( @  (*| ? * z@|?p/**@ |*? (p@|?p/@~*?****p @  ( |? * (p@|?p[OH0/***@|***?( p@|? * p@|?p-P" a*( B  (*| *?* ***p@|?p@|?pO(O/@  *|* ?  (*p@|?p@|?pʩB | *** ?***(p@|?p@|?p`)O(*@*|?(* **p@|?p@|?p_ OJ/*@ |*? (p***@***|*? * **p@|?pe Comput**@|? (p*@| *?p@|?p/@|*?****p( * @  ( | ?*(*((*p@|?puUiI /**@|*?*p@|?**** p@|?pTX4@l*@ * | ?**  p@|?p@|?p"  ( @ **| (*?*p@|?p@|?p 8B |***?***+****p@|?p@|?p" "* @ |?******p@|?p@|?p1 /*@|*?*p***@*| ?* * ** @|?pety(%(-(@|?p*@| (?****  p@|?p+=10 /@|?p( @  (*|***? * *p@|?pfull%:p/**@|*?*p@|?**** p@|?p200:pen@|?p@|?p0  l( ( B  *|* (?**(  p@|?p$=""52@ |*?******p@|?pablet or@ |*?******p@|?pontinue  /*@(|*?*p***@(|**?***  p*@|* *? * **p@|?p*@*|*?*p(**@***|((?** **p@|?p,O **@**|?** p*@|*?p@|?p *B |*****?***(p@|?p@|?pOȭ @*(|?***p@|?p@|?pOȭO/* @*|*?*p@|?pr u x { /*@**|*?( p***@|( *?(* p ( (B  **| *?* **p@|?p@|?px z | ~ ( B  (*|((? ( * p@|?p@|?pJ O S Z *B** |***?**+****z@|?p@|?pFKNT@*|?p@|?p@|?p  @|? p**@|*( ?* * **p@|?p!&.* @|?(****p@|?p@|?p/*@ |*? p@ * ( | *?*+p@|?pʈ`/**@ *|***?*p(**@*|*?* p@|?pvyB  (*|* ? * p@|?p@|?pPхӽQP/**@  (*| ? (*+ *p@|?p@|?pȄטJ *B** | *** ?**(p@|?p@|?p OO**@ |? ( p@|?p@|?p` ^$ @|*?*****p**@(|* *?* ( +****p@|?pOL~]O(*@(|?(* **p @|?p@|?pON/*@ |*?*p @  ( | ? * + p@|?pOO/**@(|***? p *@|?* p@|?pOO**@  (*| (*?* *p@|?p@|?p *@  *|* ? (  + p@|?p@|?pOOL\ *B* |*****?***(p@|?p@|?pO (@**|?***p@|?p@|?pOO @ |*? ****p(**@**|**(?* +****p@|?pP` @((|?***p @| ?p@|?pP,/*@~*? p/ ( @  ( |*(?* *(p@|?pP)V/***@(|***?*p*@|?** p@|?px @  (*|* (?( (p@|?p@|?pOO(  @  *|**?  +p@|?p@|?pOOO*@*| * ? * **p@|?p @| ?******p@|?pB***|*?******p@|?p(@|?p@|?p@LfA`,U@P`~UUUUUxPUUPUU`@Tx`~x@pUUUUTUU`~UUx`UU~x`~xTP@AU`PUUPx`~x`~xL#Np Q%PAA@TuUT@x`~x`~x **&*&T@UUUUU`TUU~Ux`~x`~x>JTPU`U~UUUx`~x`~xLN LPP`~UUx@UUUTUUU@PU`UU~Px`~xfʐpLU`P~UxU`~x`~x LP`~UUUUUx@PUPWPP`UU~U@x`~x  UUUUP`@T~UUx`UUUUU~x`~xL@(@@ATP`@UP~Ux`~x`~x J@AUAW@tUTUUx`~x`~x&٥eTT@UU`TUU~UUUUUx`~x`~x@׭@f@TPP`@U~UUUx`~x`~x̢PUTP`T@~UUx@UUU@U@PP`UTUUU~x`~xA@`~xP`UUUUU~x`~x@e`~x@UPa@TP~P@x`~x" "UUPP`T@~UUx`UUUUU~x`~x1)`~x`~xety(%(-(@APPU`P@~PPx`~x+=10 TPU`@UU~UUUUx`~xfull%:p@TP`@U~PUUUx`~x200:penPTP`@T~UUx@UUU@AU`U@UUU~x0  lPU@UU`UUU~x`~x$=""52AuPT@~PUx`~xablet orUUPP`~UUx`~xontinue   B  **| * ? ( *  p@|?pE B B` B  (*|** ?*(  p@|?pB P`U~UUxUU@UUU`UUP~UUx`~xQTW\PUUUU`U~@UxU`~x`~xU@UUUUUaTUU~Ux`~x`~xUPT`U~TUx`~x`~x'*25UUP`U~UUx`~xUPT@P`~UUx@UUUU@`UU~x@ATTaTP~@x`~x`~xPU@AW`P~Px`~x`~xTT@TUTUU`@UU~UUUUUx`~x`~xP`~Ux`~x`~xU`xUUUTUP`UUU~UUx`~x@P`U~UUUx`~x`~xUUP`PP~UUxAPaU~x`~xUUU@TUU`U~UUxUUPU`UU~x`~xP@AW@TuUP~x`~x`~xA@PAWUU`UTx`~x`~xU@@UUUUU`TUU~Ux`~x`~xUUU`P~Ux`~x`~xUP`UUUUUUxUU@PUU`UU~UUUUx`~xU`U~UUx`~x`~xUP`UUUxAUPTTuPUP~x`~xUUTUU`P~UUxUT`UPU~x`~xTAAW@t@UU~@x`~x`~x ?hܙ@AU@PP`@x`~x`~xU@UUUUUaTUU~Ux`~x`~x<`,<0PU@@`U~@Ux`~x`~x<8`$UP`PP~UUUUUxUUPU@U`UUU~UUUUx`~x%Ў<UP`U~TUxU`~x`~x >HUTP`UUxAAP@tUTUUx`~xcUUUTUU`U~UUxU@`UU~x`~x PAU`Ux`~x`~xUUUP@Ta@TTx`~x`~xv { PUPTAP`UUU~Px`~x@P`@UU~PUUUx`~xTTTUUU`@UU~UUUUUx`~x`~x`~x,169<AFKPSW`e{*٩*&&&8֪אڅ؈ئ( `IiHIih`/X\oqsuwy{}"'5MRchpu'2>EJQX[^afl(=N`98ON`DRFUy99y::`Hx ( "dh) 6x6Խս)Iӭ)(I Fjԥ ```>ֹ?׹9:,F0 ^ j,F ^JK`8BHCh`` ؊*` " ( è=È`GȭH`>È`,80Lj HH`L! #=I` " (Ù=`ÍGȱÍH`Ù>`9ҩ [  O N<n;N:n9Fӭ=*)= x (x)1- 1 6" "#Y7`$7 (7,80/0  8 `% (8Lj/0 `,80LjЅѥĥŰ=I - )JI ,GHйБȥё`,80Lj (,80Lj HH`! (DL8H\0`(d  $,($  ,CGraphics Tablet Driver -- Copyright (C) 1983 by Apple Computer Inc.O.TABLET ! >1 pHoH` (& (# (an__8G80,>!SHOLES 1!1!2@23#3#4$4$5%5%6^67&7&8*8*9(9(0)0)-_-=+=+\|QWERTYUI OP[{]}`~`~ASDFGHJ K L ;:;:'"'"ZXCVBNM ,<,<.>.>/?/?d0hp00000>" <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>8  8>> ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>> 7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CHARSET )((8*,;((*,((+)((9/(p((>3  =9 :9 .(+( 8#8# %3(8 ((,+)(%.4$)?((,(103 TAAUTP`PU@~Ux`~xTP@ATTuPU~Px`~x