IMD 1.18: 22/01/1996 5:13:11 micro cornucopia kaypro user group disk 5 mx-80 graphics   åååååååååå  CRC COMGRAF COM€ GRAF COM€ !"#$%&GRAF COMp'()*+,-./01234GRAFPLOTC 56GRAFLINEC 78GRAFINVTC 9GRAFCIRCC :;GRAFFILEC <=DEMO COM€>?@ABCDEFGHIJKLMDEMO COM€NOPQRSTUVWXYZ[\]DEMO COMA^_`abcdefGRAF DOC€ghijklmnopqrstuvGRAF DOC!wxyz{DEMO C +|}~€�GRAF C ?‚ƒ„…†‡ˆ‰ååÃ#CRC.COM 5.0 6/18/82CRCKFILE???!9"‡ 1‡ ÍM Í@ CRC Ver 5.0 CTL-S pauses, CTL-C aborts :]þ ÂOÍ@ ++Searching for CRCKLIST file++ÍÊÇÍ@ Now searching for "CRCKFILE" file++ ! Í ÍÂ1‡ Í.Â) F!×  ÍñÂÍ¡Â]ÍñÂ͸Â!â ÍýÃÇÍ”ÃÇÃ0CRCKLIST???CRCKFILE???!9"‡ ‰ M à*,ë*.}“|šÚ‰!".ë*,{•zœÒ{**ëÍ Í·Âu€*.".ÃG*.",€Í!".ë**ë*,}´>È*.#".ɯ22)! ",". Í<ÂÙ ÇÍÃî NO FILECRC FILE$! × Í >.Í ¯Í@ Checking wiGRAFUTILC Š‹ŒTITLE GRF;�Ž��‘’“”SMALL GRF•MEDIUM GRF–—˜™HUGH GRFZš›œ�žŸ ¡¢£¤¥BAR1 GRF ¦§BAR2 GRF ¨©CIRCLE GRF;ª«¬­®¯°±LINE GRF²³´STAR GRF?µ¶·¸¹º»¼CRCKLISTCRC½D COM¾¿À5-DISK DOCÁååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååth file - !× ~·ÊÍT #ÃÍM ÍM ¯2­ 2® 2¯ 2° É!× >2Õ åÍ3áþÂo:Õ ·Â�:¸ ·ÊÍ@ ***No CRC Files found***$>·Éæþ ʉþ ʉw#:Õ <2Õ þPÚ6:Õ ·Ê.6¯ÉÍ@ Can not parse string !× ~·Ê½ÍT #ñÍM !× ÊÕ> ¾ÊÐ6 #ÂÈ6^#6!× ~·ÊéÍT #ÃÝ!¯ 4ÍM ɾÀ#x¹ÈÃñå]Í #eÍ ¯wá~·Ê ÍT #Ã>2· Í@ - Ís ÒMÍ@ File not found !° 4à >2Ò ÍoÀ:µ G:² ¸Â„:´ G:³ ¸Â„Í@ *Match* ¯2¸ !­ 4¯ÉÍ@ <-- is, was --> :´ Í) > ÍT :µ Í) ÍM ¯2¸ !® 4¯<ÉÍÀ2´ ~#þ ÊëÍ@ Not a space between CRC values¯<ÉÍÀ2µ G¯É-CATALOG???åå  Í@ ++ Now searching for "-CATALOG" file++ !õ Í ÍÂ) Í.Â) !× Íå”>.¾Â”#Íô”Í͔͡”ÍÍ›Íø›ÍøÊtþK›ÍÍ›͸›*« ÍýÃ=:¸ ·Â=Í”Ã="« Í ÀÍ ʳþ À ª~#þ.ÀÍ ÊÈþ À ¿É~þ ÊÖþ À#~þ ÊÖþ ÊÖ¿ÉÍôÀÍøÈþ.À+¿ÉÍøÀ~#þ0Úþ:Ò¿Éþ0É~#þ!ÚþÒ¿ÉþAÉÍ.ÀOÍ.ÀGy°¿É~#þ0ÚMÖ0þ ÚKæÖþ ÚMþÒM¿É·É:m2± þFÂSÄCRCKLIST$$$›Íø›ÍøÊtþK›‰, ݈ õ*€ë*‚}“|šÚù!"‚ë*€{•zœÒë*~ëÍ]Í·ÂÊ€*‚"‚Ü ÖÍñÃî DISK FULL: CRCFILE$€Í!"‚ë*~ëñ9åÍœ&Ñ!XåÍœ&Ñ!‡åÍœ&Ñ!žåÍœ&ÑÍp!ñPå!åÍe*ÑÑ!ˆMåÍã)Ñ!·åÍœ&ÑÍpþÿë!ìÿÚ"![^#Vëé“Ãó·" ‡ù"Ÿ«"Ï"ÛRÿçÉCommand: RESTART? Restart command ignored. QUIT? Exit command ignored. GRAF recognizes the following commands: BORDER draws a border around the graph KILL removes all border points LINE allows the user to draw straight lines ERASE is used to erase lines CIRCLE is used to plot circles NO CIRCLE is used to erase circles PLOT allows the user to plot indivi match - :® ̓ :¯ ·ÊJ ÍM Í@ Quantity of lines failed parse test - :¯ ̓ :° ·Ê~ ÍM Í@ Quantity of file(s) not found - :° ̓ *‡ ùÉdÍ”  Í” Æ0ÃT ÿ �Ò– €Wy³Ê© ö0ÍT 0zÉtiil9s#r!9^#V!èÍÔ$Ê# !d åÍœ&Ñ!"RÉ!9^#VÕ!9^#VÕ! 9^#VÕ!9^#VÕÍñë!9ùÉ ------- Line Plotting Function ------- ------- Line Erasing Function ------- Input the coordinates of the first endpoint. Horizontal coord: Vertical coords: Input the coordinates of the second endpoint. Horizontal coord: Vertical coord (1000 to ABORT command): Function aborted. Í�$*R|µÊ� !¤ åÍœ&ÑØ !Ð åÍœ&Ñ!û åÍœ&ÑÍ É ------- Point Plotting Function ------- ------- Point Erasing Function ------- Enter*‚#"‚ɯ2i2}! "€!"‚]Í]Í<ÂS ;ÍÃî NO DIR SPACE: CRCFILE$1‡ >2Ò Ís Ò :· ·Ê~Í# ++FILE NOT FOUND++$:± þFÂ*‚}æÂ’"€>õ͇ñ†]Í<ÂÊ ³ÍÃÊ CANNOT CLOSE CRCFILE$ÃîCRCKLISTCRCSK FULL: CRCFILE$€ÍÍà å w# ÂþÑÍÉ!]ÍÍùÍ� DONE$!eÍ ÊS!]QÍ !eZÍ Í@ --> FILE: XXXXXXXX.XXX CRC = ÍoÊSÃ) \Í<‘Í@ ++OPEN FAILED++à !"² !"Ó *Ó |þÊÈ Í·Ê¹ÍþÊ) \Í·ÂÖ!€~2¶ #"Ó Í Ã�þÂî:³ Í) > ÍT :² Í) ¯ÉÍ@ ++FILE READ Edual points UNPLOT removes individual points DUMP sends a copy of the graph to the printer INVERT allows color inversion: black <-> white SAVE saves a copy of an existing graph on disk GET retrieves a previously SAVEd graph TELL returns the current graph dimensions RESTART erases the current graph QUIT returns control to CP/M To execute a command, only the first letter needs to be typed (in upper or lower case). ? Í�$!�åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑ"R*R@ëÍ%Ê!ñPå!åÍe*ÑÑ!@å!°åÍœ&ÑÑͺÃ#7Í�$!åÍœ&Ñ!IåÍœ&ÑͺÍpÉ Epson MX-80 Bit-Plot Graphics Utility. Don Brittain 3 January 1983 Í�$!„åÍœ&Ñ!ˆMåÍp(Ñ:ˆMo&åÍ»IÑÃE!"RÍÝÍp!"RÍÝÍp!"RÍ`Íp!"RÍ`Íp!"RÍ.Íp!"RÍ.Íp!"RÍx Íp!"RÍx ÍpÍì ÍpÍ… Íp!"RÍÖÍp!"RÍÖÍpͽÍp!ŽåÍœ&Ñ!ˆMåÍp(Ñ:ˆMo&åÍ»IÑYÍÔ$ÊGÍÃO!™åÍœ&ÑÍp!´åÍœ&Ñ!ˆMåÍp(Ñ:ˆMo&åÍ»IÑYÍÔ$Ê|Íu:Ä!¼åÍœ&ÑÍp!ÔåÍœ&Ñ!þåÍœ&Ñ!'åÍœ&Ñ!HåÍœ&Ñ!våÍœ&Ñ!•åÍœ&Ñ!¶åÍœ&Ñ!ÛåÍœ&Ñ! åÍœ&Ñ!/åÍœ&Ñ!_åÍœ&Ñ!�åÍœ&Ñ!ÁåÍœ&Ñ!êåÍœ&Ñ!åÍœ&Ñ! the coordinate 1000 to QUIT. Í�$üÿ!Æ åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!9^#V!èÍÔ$ÊY !"RÉ!Ú åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!9^#V!èÍÔ$Ê� !"RÉ*R|µÊ­ !9^#VÕ!9^#VÕÍ?ÑÑà!9^#VÕ!9^#VÕÍéÑÑÍ É Horizontal coord: Vertical coord: Í�$þÿ!T åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r*Rëͺ$ë!9~#foPëÍ%ÊG *Rëͺ$å!PÑëÍè%ë!9s#r!9^#VÕÍÑÉHow many spaces do you want in the left margin? Í�$øÿ!^ åÍœ&Ñ!‹ åÍœ&Ñ!¨ åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë! 9s#r!½ åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!Ì åÍœ&Ñ!ç åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!ü åÍœ&RROR++ ¯<É*² |æ€õ):¶ …oñÊ% |î g}î—o"² ÉõÍ2 ñæþ Ú; ÆÆ0ÃT ã~ÍT #~·ÂA ãÉ> ÍT > ÅÕåæ_ÕÍh ÑÍáÑÁÉ:± þFÀ{͇ɀͯ2h2|:· ·Ê² !\º  Í :\2Æ !º \ Í \ÍÃÚ !Æ \ Í \Í!º \ Í \Í<7È=懇‡‡‡Æ�o&åÇ  Í á] Í ¯2h2|2· ÉÍ ÀÍ À~æþ$#É~# x±Â ÉÑ Í:± þFÂ} *‚}æÂ= "€>õ͇ñÂ1 ]Í<Âu  ^ ÍÃu CANNOT CLOSE CRCFILE$]ÍÍ� ++ABORTED++$Ñ Í:Ò ·Ê~ ¯2± ÍM Í@ Quantity of file CRC that matched - :­ ̓ :® ·Ê ÍM Í@ Quantity of file CRC that did not!ØåÍœ&Ñ!ˆMåÍp(ÑåÍXGÑ"R*R@ëÍ%ÊC!ñPå!åÍe*ÑÑ!@å!èåÍœ&ÑÑͺ!åÍœ&Ñ!ˆMåÍp(Ñ:ˆMo&åÍ»IÑBÍÔ$Êm!"R!ñPå!åÍe*ÑÑ!ñPå! åÍe*ÑÑ*Rå*RåÍ8ÑÑ!CåÍœ&ÑÉ Horizontal size: The maximum horizontal dimension is %d.Vertical size: The maximum vertical dimension is %d.Do you want the initial graph to be white or black? Type HELP for assistance. Í�$øÿ*R|µÊx!M åÍœ&ÑÀ!x åÍœ&Ñ!¢ åÍœ&Ñ!Ð åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë! 9s#r!ä åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!÷ åÍœ&Ñ!& åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!: åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!  Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!9^#V!èÍÔ$Ê4 !åÍœ&ÑÍpÃ] !9^#VÕ! 9^#VÕ! 9^#VÕ!9^#VÕÍ ë!9ùÉ ------- Graph Inversion Function ------- Input the horizontal range. Beginning value: End value: Input the Vertical range. Beginning value: End value (1000 to ABORT): Command aborted. Í�$úÿ*R|µÊF!ëåÍœ&ÑÃN!åÍœ&Ñ!DåÍœ&Ñ!yåÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!�åÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!ŸåÍœ&Ñ!ˆMåÍp(ÑåÍXGÑë!9s#r!9^#V!èÍÔ$ÊÌ!ÂåÍœ&Ñ!"RÉ!9^#VÕ!9^#VÕ! 9^#VÕÍöÑÑÑÉ ------- Circle Plot9^#V*RÍ%ʘ! 9^#V!ͺ$å*R+ëͺ$ÑëÍè%ë!9s#r!9^#Vë)å! 9^#V!RÍŒ%Ñ#R^#VÕ!9^#V!Í(%å!åÍ™ÑÑÿÍj&ÑÍŒ$å!9^#Vë)å!9^#V!RÍŒ%Ñ#RÑs#rÉÍ�$þÿ!ë!9s#rû! 9å~#fo+ëás#r! 9^#V!Í%Êè!9^#V! 9~#foÍŒ%ë!9s#rì!9^#VëÉÍ�$!9^#V! 9~#foÍÔ$Ê8! 9^#V!9~#foÍÔ$Ê8! 9^#VÕ! 9^#VÕÍGÑÑÃF! 9^#V!9~#foÍè%åÍ‚Ñå! 9^#V!9~#foÍè%åÍ‚ÑÑëÍ%ÊÜ!9^#V! 9~#foÍ%ʰ!9^#VÕ!9^#VÕ!9^#VÕ!9^#VÕͬë!9ùÃÙ! 9^#VÕ! 9^#VÕ!9^#VÕ!9^#VÕͬë!9ùÃF! 9^#V!9~#foÍ%Ê!9^#VÕ!9^#VRÍŒ%#RÑs#rÃß!"RÉÍ�$üÿ!åÍàÑ! 9^#VÕÍ%Ñ*Rëͺ$ë!9s#r!ë!9s#rÃf!9å~#fo#ëás#rë+!9^#V!9~#foÍ%ÊÔ*RåÍÑ!DMÑ`i#DM+`ië*RÍ%ÊÅ!9^#Vë)å`iRÍŒ%Ñ#R^#VÕ!åÍ;7ÑÑË! 9^#VÕÍ%ÑÃU! åÍàÑÉÍ�$üÿ*R+ë!9s#r*R+ë!9s#r*R|µÊo!DMÃ`i#DM+`ië*RÍ%Ê7!åÅÍ?ÑÑ!9^#VÕÅÍ?ÑÑà !DMÃE`i#DM+`ië*RÍ%ÊlÅ!åÍ?ÑÑÅ!9^#VÕÍ?ÑÑÃ?ÃÙ!DMÃ}`i#DM+`ië*RÍ%ʤ!åÅÍéÑÑ!9^#VÕÅÍéÑÑÃw!DMò`i#DM+`ië*RÍ%ÊÙÅ!åÍéÑÑÅ!9^#VÕÍéÑÑì!"RÉÍ�$!å!åÍ;7ÑÑ!Aå!åÍ;7ÑÑ!!9^#VëÍlMáÍJ*R|µÊD!9^#V!ͺ$å!9^#VáÍè%ë!9s#r!9^#V!ͺ$ë!9~#foÍè%DMÃ\`i#DM+`ië!9~#foÍô$ÊA!9å`iÍlMáÍJ!9ÍüI!9ÍîIÍ¡LÍ"J!9ÍüI!9ÍîIÍ¡LÍ:JÍÎJÍ"JÍoÑÑë! 9s#r!9^#V! 9~#foå!9^#V`iåÍ?ÑÑ!9^#V! 9~#foÍè%å!9^#V`iåÍ?ÑÑ!9^#V`iå!9^#V!9~#foåÍ?ÑÑ!9^#V`iå!9^#V!9~#foÍè%åÍ?ÑÑÃVÃn!9^#V!ͺ$å!9^#VáÍè%ë!9s#r!9^#V!ͺ$ë!9~#foÍè%DMÉ`i#DM+`ië!9~#foÍô$Ên!9å`iÍlMáÍJ!9ÍüI!9ÍîIÍ¡LÍ"J!9ÍüI!9ÍîIÍ¡LÍ:JÍÎJÍ"JÍoÑÑë! 9s#r!9^#V! 9~#foå!9^#V`iåÍting Function ------- ------- Circle Erasing Function ------- Input the coordinates for the center of the circle. Horizontal Coord: Vertical Coord: Input the radius (1000 to ABORT): Function aborted. Í�$*R|µÊî!LåÍœ&ÑÃö!xåÍœ&Ñ!ŸåÍœ&Ñ!ˆMåÍp(Ñ*R|µÊ!ˆMåÍL"ÑÃ+!ˆMå*Rå*RåÍZ!ÑÑÑ!ñPå! åÍe*ÑÑ!ñPå!åÍe*ÑÑ!"RÉ ------- Graph Retrieval Utility ------- ------- Graph Save Utility ------- Enter the name of the graph: Í�$!ååÍœ&Ñ*Rå! åÍœ&ÑÑ*Rå!!åÍœ&ÑÑÉ The current graph dimensioÕ!9^#VÕ!9^#VÕÍQë!9ùÃF! 9^#VÕ! 9^#VÕ!9^#VÕ!9^#VÕÍQë!9ùÉÍ�$*R|µÊl! 9^#VÕ! 9^#VÕÍ?ÑÑÃ�! 9^#VÕ! 9^#VÕÍéÑÑÉÍ�$!9^#V!Í%Ê !9^#VëÉ!9^#Vëͤ%ÉÍ�$úÿ*R|µÊ†!9^#VBKÃË`i#DM+`ië!9~#foÍô$ʃ!9å!9^#VëÍlMáÍJ!9å`ië!9~#foÍè%ÍlMÍ"J!9^#VëÍlMÍ"J!9ÍüIÍ:JÍÎJÍ:JÍ¡LáÍJ!9^#VëÍlMÍ"J!9^#V!9~#foÍè%ÍlMÍ"J!9ÍüIÍ:JͨKÍ:J͸JÍMë!9s#r!9^#VÕÅÍ?ÑÑÃÅÃP!9^#VBKØ`i#DM+`ië!9~#foÍô$ÊP!9å!9^#VëÍlMáÍJ!9å`ië!9~#foÍè%ÍlMÍ"J!9^#VëÍlMÍ"J!9ÍüIÍ:JÍÎJÍ:JÍ¡LáÍJ!9^9^#VÕ!åÍ;7ÑÑÉÍ�$!å!åÍ;7ÑÑ!Kå!åÍ;7ÑÑ!9^#V!Í%Êa!9^#VÕ!åÍ;7ÑÑ!å!åÍ;7ÑÑÃ!9^#V!ÿå!åÍ;7ÑÑ!å!åÍ;7ÑÑÉÍ�$þÿ!ë!9s#rè!9å~#fo#ëás#rë+!9^#V! 9~#foÍ%ÊÚ! å!åÍ;7ÑÑ! å!åÍ;7ÑÑ×ÉÍ�$þÿ!ë!9s#rÃÿ!9å~#fo#ëás#rë+!9^#V! 9~#foÍ%Ê$! å!åÍ;7ÑÑÃîÉÍ�$!åÍ„Ñ!9^#VÕÍÛÑÉÍ�$þÿ! 9^#V*RÍ%Êè! 9^#V*RÍ%Êè! 9^#V!ͺ$å*R+ëͺ$ÑëÍè%ë!9s#r!9^#Vë)å! 9^#V!RÍŒ%Ñ#R^#VÕ!9^#V!Í(%å!åÍ™ÑÑÑͶ%å!9^#Vë)å!9^#V!RÍŒ%Ñ#RÑs#rÉÍ�$þÿ! 9^#V*RÍ%ʘ! éÑÑ!9^#V! 9~#foÍè%å!9^#V`iåÍéÑÑ!9^#V`iå!9^#V!9~#foåÍéÑÑ!9^#V`iå!9^#V!9~#foÍè%åÍéÑÑÃÉÍ�$!9ÍüIÍçIÍ4MÊ”!íåÍœ&Ñ!ÿÿÉ!DMâ`i#DM+`iÍlM!9ÍîIÍ4MÊì`iëͺ$ÍlMÍ"J! 9ÍüIÍ:JÍÎJÍ"J`iPYÍŒ%ÍlMÍ:JÍIMÊé`iÉÜÉArgument error in SQRT. Í�$þÿ! 9^#V! 9~#foÍ%Â6 !9^#V!9~#foÍ%ÊD !Õ åÍœ&ÑÍpÃÔ !9^#V!9s#rÃf !9å~#fo#ëás#rë+!9^#V!9~#foÍô$ÊÔ ! 9^#VBKÃ� `i#DM+`ië! 9~#foÍô$ÊÑ !9^#VÕÅÍ!ÑÑÊÀ !9^#VÕÅÍéÑÑÃÎ !9^#VÕÅÍ?ÑÑÇ ÃU ÉArgument error in INVERT: command aborted. ns are -- Horizontal size: %3d Vertical size: %3d Í�$üÿ!ë!9s#r*R|µÂ[!ÿë!9s#r!9^#V!ëͺ$ë!9s#r!ë!9s#rÔ!9å~#fo#ëás#rë+!9^#V!9~#foÍ%Êò!DM÷`i#DM+`ië! 9~#foÍ%Êï!9^#VÕ!9^#Vë)å`iRÍŒ%Ñ#RÑs#rñÃ*R|µÊ3!DMÃ`i#DM+`ië! 9~#foÍ%Ê0!å`iRÍŒ%#RÑs#rÃÃ*RëÍ(%ð!ë!9s#rÃ×!ë!9s#rÃ×!ë!9s#rÃ×!ë!9s#rÃ×!ë!9s#rÃ×!?ë!9s#rÃ×!ë!9s#rÃ×!ÿë!9s#rÃ×Í&@N\jx†”¢×!DMÃå`i#DM+`ië! 9~#foÍ%Ê!9^#VÕ`i#VëÍlMÍ"J!9^#V!9~#foÍè%ÍlMÍ"J!9ÍüIÍ:JͨKÍ:J͸JÍMë!9s#r!9^#VÕÅÍéÑÑÃ’ÉÍ�$úÿ*R|µÊ+!9^#VBKÃp`i#DM+`ië!9~#foÍô$Ê(!9å!9^#VëÍlMáÍJ!9å`ië!9~#foÍè%ÍlMÍ"J!9^#VëÍlMÍ"J!9ÍüIÍ:JÍÎJÍ:JÍ¡LáÍJ!9^#VëÍlMÍ"J!9^#V!9~#foÍè%ÍlMÍ"J!9ÍüIÍ:JͨKÍ:J͸JÍMë!9s#rÅ!9^#VÕÍ?ÑÑÃjÃõ!9^#VBKÃ=`i#DM+`ië!9~#foÍô$Êõ!9å!9^#VëÍlMáÍJ!9å`ië!9~#foÍè%ÍlMÍ"J!9^#VëÍlMÍ"J!9ÍüIÍ:JÍÎJÍ:JÍ¡LáÍJ!9^#VëÍlMÍ"J!9^#V!9~#foÍè%ÍlMÍ"J!9ÍüIÍ:JͨKÍ:J͸JÍMë!9s#rÅ!9^#VÕÍéÑÑÃ7ÉÍ�$ôÿ!9å   Í�$!9^#V!RÍŒ%å! 9^#V!ͺ$å*R+ëͺ$ÑëÍè%)Ñ#R^#VÕ! 9^#V!Í(%å!åÍ™ÑÑÑÍŒ$ÉÍ�$úÿ*Rëͺ$ë!9s#r!9^#VÕÍ $Ñ!J"å!’MåÍþ&ÑÑë!9s#r!9^#VÕ!9^#VÕÍ,ÑÑ!9^#VÕ!9^#VÕÍ,ÑÑ!ë!9s#rÃß!!9å~#fo#ëás#rë+!9^#V!9~#foÍ%Ê="!DMÃ"`i#DM+`ië*RÍ%Ê:"!9^#VÕ!9^#Vë)å`iRÍŒ%Ñ#R^#VÕÍR,ÑÑÃü!ÃÎ!!9^#VÕÍé,ÑÉwÍ�$úÿ!9^#VÕÍ $Ñ!w#å!’MåÍþ&ÑÑë!9s#r!9~#¶Â’"!’Må!y#åÍœ&ÑÑ!—#åÍœ&ÑÉ!9^#VÕͳ*Ñ"R!9^#VÕͳ*Ñ"R*Rëͺ$ë!9s#r!’Må!¬#åÍœ&ÑÑ*Rå!Û#åÍœ&ÑÑ*Rå!ò#åÍœ&ÑÑ!ë!9s#rà #!9å¶%ÉÍ�$þÿ! 9N#F! ^#VÕ`i^#VáÍ:&ÊÒ+! ^!ÍŒ$Ê7+!ÿÿÉ!ûÿå`iÑån&ÍŒ$ëás`i~#¶Â]+ÅÍÚ.Ñ! ^#VÕ! ^#VÕ! ^ÕÍð>ÑÑÑë!9s#r!Íô$ʵ+!9~#¶Âœ+!ß+!å`iÑån&Ͷ%ëás!ÿÿÉ! ^#V`is#r!9~#foë! s#r`iå~#fo#ëás#rë+^!ÿÍŒ$ÉÍ�$!üPå! 9^#VÕÍR,ÑÑÉÍ�$!9N#F! 9^#VÕÅÍR,ÑÑëÍ%Ê*,!ÿÿÉ! 9^#VÕ`iëÍU&åÍR,ÑÑëÍ%ÊO,!ÿÿÉ`iÉÍ�$! 9N#F! ^#VÕ`i^#VáÍ:&ʇ,!9^#V!ÿÍŒ$åÅ͈-ÑÑÉ!9^#VÕ`iå~#fo#ëás#rë+Ñs!ÿÍŒ$ÉÍ�$!ÿÿå! 9^#VÕ͈-ÑÑÉÍ�$!æPDM`i_QëÍH&Êè,`i DMõÿåÍé,ÑÃÈ,ÉÍ�$þÿ! 9N#F!ë!9s#r$þÿ!æPDM`i~·Ê,'`i DM_QëÍ:&Ê)'!ÉÃ'! 9^#Vë#^!+ÍÔ$ë!9s#r! 9^#Vë^ëÃ/(!9~#¶Êe'!Ãh'!å! 9^#VÕÍ;ÑÑë! s!ÿÿÍÔ$ʉ'!ÉÃB(!9~#¶Êœ'!ß'!Ͷ%å! 9^#VÕÍ;ÑÑë! s!ÿÿÍÔ$ÊÆ'!ÉÃB(!9~#¶ÊÙ'!ÃÜ'!Ͷ%å! 9^#VÕÍ;ÑÑë! s!ÿÿÍÔ$Ê(!É!åÍõIÍ"J! ^ÕÍnEë!9ùÃB(!úÿ"ÜP!ÉÍ&rU'wŒ'aÉ'%(!ë! s!ë! s#r!ë`is#r! s#r! s#r`iÉÍ�$þÿ! 9^#VBK!æPåÍ�)Ñë!9s#r!ÿÿÍã$ʺ(!9^#V! Íã$ʺ(!9^#VÕ`i#DM+ÑsÃ~(!ë`is!9^#V!ÿÿÍÔ$Êæ(`ië! 9~#foÍÔ$Êæ(!É! 9^#VëÉÍ�$þÿ! 9^#V!9ss#r!ë!>9s#r!N9å~#fo#ëás#rë+^!F9s#r!0Íó$Êh1!F9^#V!9Íô$Êh1!>9^#V! ÍŒ%ë!F9~#foÐÿë!>9s#rÃ1!F9^#V!.ÍÔ$ÊÝ1!ë!@9s#r!N9å~#fo#ëás#rë+^!F9s#r!0Íó$ÊÝ1!F9^#V!9Íô$ÊÝ1!@9^#V! ÍŒ%ë!F9~#foÐÿë!@9s#rÃ1!F9^#V!lÍÔ$Ê.2!N9å~#fo#ëás#rë+^!F9s#r!:9å!R9å~#foëás#rëüÿÍüIáÍJÃÝ2!F9^#V!dÍÔ$Êd2!:9å!R9å~#fo##ëás#rë++^#VëÍlMáÍJÃÝ2!F9^#V!eÍÔ$”2!F9^#V!fÍÔ$”2!F9^#V!gÍÔ$ʺ2!9å!R9å~#foëás#rëøÿ͇Má͇MÃÝ2!:9å!R9å~#fo##ëás#rë++^#VëÍ^MáÍJ!F9^#VëÙ4!9å!å!>9ÍüIÍ"JÍE6ë!~#fo#ëás#rë+!9^#V!9~#foÍ%Êj#!DMÃ/#`i#DM+`ië*RÍ%Êg#!9^#VÕÍ+Ñå!9^#Vë)å`iRÍŒ%Ñ#RÑs#rÃ)#Ãû"!9^#VÕÍé,ÑÉr ERROR: %s does not exist on the current drive. The graph in %s has the following dimensions: Horizontal size: %3d Vertical size: %3d Í�$!DMÃ$`i#DM+!9^#V`i^ÕÍ»IÑå`i’MÑsz³Ê?$Ã$!.å`i#DM+’MÑs!Gå`i#DM+’MÑs!Rå`i#DM+’MÑs!Få`i#DM+’MÑs!å`i’MÑsÉ|¢g}£o´É|/g}/o´ÉéáÅ^#V#DM!9ë9ùÕ`iÍœ$ëáùÁë|µÉz¬2 MÍ9%ë: M·ú¤%}´ÉÍR%ë}´É}“ÂÞ$|’Êí$!¯É}“Âí$|’ÊÞ$!}´Éë|ªú%}“|š?>`i~·Êv-! ^!ÍŒ$Ê--!ÿÿåÅ͈-ÑÑë!9s#r! ^ÕÍê<Ñë!9å~#foͶ%ëás#r! ^!ÍŒ$Êv-*gQå! ^#VëÑs#r! ^#Vë"gQ!ë! s!9^#VëÉÍ�$þÿ! 9N#F! ^!ÍŒ$Êý-! ^#VÕ`i^#VáÍè%ë!9s#r!9^#VÕ! ^#VÕ! ^ÕÍdBÑÑÑÿÿÍÔ$Êý-!å`iÑån&Ͷ%ëás!ÿÿÉ! 9^#V!ÿÿÍÔ$Ê6.!ûÿå`iÑån&ÍŒ$ëás!ë`is#r! s#r!É`i~#¶ÂG.ÅÍÚ.Ñ! ^#V!ÍÔ$Ê€.!å!9å! ^ÕÍdBÑÑÑÿÿÍÔ$Âä-! 9^#VëÉ! ^#V`is#r! ^#VÕ! ^#Váë! s#r!å`iÑån&Ͷ%ëás! 9^#VÕ`iå~#fo#ëás#rë+Ñs!ÿÍŒ$ÉÍ�$þÿ! 9N#F! ^#V!ÍÔ$Ê/`ië!#r! 9å~#fo+ëás#r!Í%ÊU)!9^#VÕÍ�)ÑDMÿÿÍã$ÊU)`iå!9å~#fo#ëás#rë+Ñs`i ÍÔ$ÂU)Ã)!å!9^#VëÑs`iÿÿÍÔ$ʇ)!9^#V! 9~#foÍÔ$ʇ)!É! 9^#VëÉÍ�$þÿ! 9N#FÅÍ+ÑÍŒ$ë!9s#rëÃÇ)`iå~#fo+ëás#r!ÿÿÉÜ)Í&³) Ä)Ä)Ú)!9^#VëÉÍ�$!9N#F`i~·Ê*!ñPå`i#DM+^ÕÍe*ÑÑÿÿÍÔ$Ê*!ÿÿÉÃï)!ñPå! åÍe*ÑÑÉÍ�$!9N#F`i~·Êa*! 9^#VÕ`i#DM+^ÕÍe*ÑÑÿÿÍÔ$Ê^*!ÿÿÉÃ3*!ÉÍ�$!9N#F!PYÍŒ$DM`i ÍÔ$ʤ*! 9^#VÕ! åÍR,ÑÑÿÿÍÔ$ʤ*!ÿÿÉ! 9^#VÕÅÍR,ÑÑÉÍ�$þÿ! 9^#VÕÍ+ÑDMÿÿÍÔ$Âì*! 9^#VÕÍ+Ñë!9s#r!ÿÿÍÔ$Êð*!ÿÿÉ!9^#V!ÍØ%PYÍ9ù!49s#rÃÀ4!:9ÍüIÍçIÍ4MÊa3!9å! å!>9ÍüIÍ]JÍ"JÍß5ë!9ù!49s#r!-å!69å~#fo+ëás#rëÑsÄ3!9å! å!>9ÍüIÍ"JÍß5ë!9ù!49s#rÃÀ4!9å! å!>9ÍüIÍ"JÍE6ë!9ù!49s#rÃÀ4!9å!å!>9ÍüIÍ"JÍE6ë!9ù!49s#rÃÀ4!:9ÍüIÍMë!49s#rÕÍžHÑë!89s#rÃØ4!F9^#V!eÍÔ$Ê 4!Ã4!å!B9^#V!ÿÍÔ$Ê%4!Ã-4!B9^#Vëå!9å! 9͇M͇M͇Më!9ù! 9ë!49s#rÕÍžHÑë!89s#r!Èë!@9s#rÃØ4!:9ÍüIÍMë!F9s#r!F9^#VÕ!9ë!69s#rëÑsÃÀ4Í&oè2d3u‡3x­3sÓ3eõ3fõ3cm44!9ë!49~#foÍè%ë!89s#r!89^#V!@9~#foÍ%Êû4!@9^#V!89s#r!D9~Îo&Ézæo&Éë|ªú %}“|š>Îo&É|æo&Éz2 MÍ9%: M·ú¤%|µÉ|·òD%/g}/o#z·òR%/W{/_ÃR%ÅDM!>2ŸM)ë)ëÒe%#}‘o|˜gÒ}% :ŸM=2ŸMÂ]%Á}´É:ŸM=2ŸMÂ]%Á}´ÉÅDM!>)ë)ëÒœ% =”%Á}´É}/o|/g#}´É|µÊí$ÃÞ$|²g}³o´Éë{æ_Êå%|´ò]&|7g}oÂË%´Éë{æ_Êå%)Âà%}´Éë}“o|šgµÉëáÅN#F#ë ëN#F#z¸Ú &{¹Ò &##^#VëÁéëáÅBK^#Vz·ú3&#y¾Ê-&###Ã&#x¾Â(&#~#foÁéë}“|š>?Îo&Éë}“|š>Îo&Éë{æ_Êå%|·g}oÂ]&´É|ªg}«o´É~# x±Âr&ÉÑ!9ÅÕ¡M~#‰&!–&ãéÁ|µÉ§ÉÍ�$!ñP"§M! 9å! 9^#VÕ!ç&åÍA0ÑÑÑÉÍ�$!9^#Vë"§M! 9å! 9^#VÕ!ç&åÍA0ÑÑÑÉÍ�$*§Må! 9^#VÕÍe*ÑÑÉÍ� s#rÉ*gQ|µÊ%/*gQë!9s#r*gQ^#Vë"gQÃL/! ^#VÕÍp/Ñë!9s#rz³ÂL/!ë! s#rÃö.!å`iÑån&Ͷ%ëás!9^#V! s#rÉÍ�$*«M|µÂ‹/!åÍ 8Ñ"©M"«M*«MDM!9^#V*«M"«MPYëÍH&ʰ/`i"«M!É*«Më*©MÍI&Êï/*«Më*©MÍè%ÿþÍŒ$ë!9s#rÕÍ 8Ñʧ/!9^#V*©M"©M`iÉÍ�$!9^#Vë"­M! 9å! 9^#VÕ!#0åÍA0ÑÑÑ!å*­MÑsÉÍ�$!9^#VÕ*­M#"­M+Ñs!ÿÍŒ$ÉÍ�$¼ÿ!L9N#F!N9å~#fo#ëás#rë+^!F9s#rz³ÊÞ5!F9^#V!%ÍÔ$ÊÍ5!ë!9s!ë!D9s#r! ë!B9s#r!ÿë!@9s#r!N9^#Vë^!F9s#r!-ÍÔ$Êè0!ë!D9s#r!N9å~#fo#ëás#rë+^!F9s#r!F9^#V!0ÍÔ$Ê1!0ë!B9  #¶Ê65!>9å~#fo+ëás#rë#ë!89~#foÍ%Ê65!B9^#VÕ`iÍœ$ÑÃ5!ë!69s#rÃS5!69å~#fo#ëás#r!49^#Vë~·Ê“5!69^#V!@9~#foÍ%Ê“5!49å~#fo#ëás#rë+^Õ`iÍœ$ÑÃD5!D9~#¶ÂÊ5!>9å~#fo+ëás#rë#ë!89~#foÍ%ÊÊ5! å`iÍœ$ÑÃ�5ÃÛ5!F9^#VÕ`iÍœ$ÑÃM0ÉÍ�$! 9N#F`iÍlMÍ"J! 9ÍüIÍ:JÍâKÍM¯M^Õ!9å~#fo+ëás#rëÑs!9å`iÍlMÍNJáåÍüIͨKáÍJÍmJÂë5!9^#VëÉÍ�$þÿ!9N#F! 9ÍüIÍçIÍ4MÊ7! 9ÍüIÍMÍŒ$ë!9s#r! 9å! 9ÍüIÍçIÍ_KÍçIÿÿÿÍäJáÍJ`ië;%ÍlMÍ"J!9ÍüIÍ:JÍâKÍM)ë!9~#fo¯M^Õ!9å~#fo+ëás#rëÑs! 9å`ië;%ÍlMÍNJáåÍüIͨ%Â?!9^#V! Í%Ê?!ýÿ"ÜP!ÿÿÉ!9^#Vë))){QDM! 9^#VÕ! 9^#VÕ! ^#VÕ`i^ë)°O^#VëÍœ$ÑÑÑÉÍ�$úÿ!DM!9^#V!9s#r!9^#V!$~·ÊÕ?!9^#V!$^Õ!€ÑëÍè%DMë!9~#foÍI&Ê·?!9^#VBKÅ!9^#VÕ! 9^#VÕ͘@ÑÑÑÊÕ?!ÿÿÉ!9^#V`iÍè%ëÍU&ë!9s#rz³Ê@@!9^#VÕ!9^#V`iå! 9^#VÕÍáFÑÑÑë!9s#rz³Ê@@!9^#V!9~#foÍè%ëÍØ%PYÉ!9^#V!ÍØ%PYDM`ië!9~#foÍH&Ê�@!9^#V`iÍè%å!9^#V`iå! 9^#VÕ͘@ÑÑÑÊ�@`iÉ!9^#VëÉÍ�$!9N#F!€å!åÍ;7ÑÑÅ!!åÍ;7ÑÑ"ÜP|µÊÇ@!ÿÿÉ! 9^#VÕ!$ ^!€å!9^#VÕÍHÑÑÑ!$ ^! 9~#foÍŒ$ëÍ;ÑÑÑÉÍ�$øÿ!{Që! 9s#r!ë!9s#rÃF;! 9å~#foëás#r!9å~#fo#ëás#r!9^#V! Í%Êp;! 9^#V!^#V!�:ÍÔ$Âz;Ã%;!øÿ"ÜP!ÿÿÉ!ÓQDMÊ;`iDM`i~#¶Ê«;!9^#VÕ`i^#VÕÍ@HÑÑÊ«;Â;! ^#V!9s#r!9^#V!ÍŒ$#ë!9s#r!9^#V!ÍŒ$Ê7ëÉÍ}&*¡MDM*£MëÍëo&ÉÍ}&Í\7o&ÉÍ}&*¡Më*+++ë*£MDM*¥MëéÅ!9N#F#^#Vkb6#> 6 #=‡7>6#=Â�7ë þ: >ÂÃ7 æþAÚý7þ[Ò´7Ö@ÃÀ7þaÚý7þ{Òý7Ö`w# þ.ÊÞ7·Ê÷7ÊÆ7Í8w#ÃÇ7{…o|Îg ·Ê÷7Í8w#Âè7!¯ÁÉ!ÿÿ|·ÁÉþaØþ{ÐÖ É!9^#V*ÀMë!þ9}“|šÚ/8*ÀMë"ÀMë|µÉ!¯ÉÍ�$üÿ!å!�å!þMåÍHÑÑÑ!å:€o&ÍŒ$þMÑs!P:"ÂM!þMDM!"~N*~NëÍ%Ê=:`i^! ÍÔ$›8`i^! ÍÔ$Ê£8`i#DMÃ8`i^z³Ê=:`i^!>ÍÔ$ÊÉ8!ë!9s#rÃâ8`i^!<ÍÔ$Êî9!ë!9s#r`i#DM^! ÍÔ$Â9`i^! ÍÔ$Ê!$ sz³ÂA`i!å~#fo#ëás#r!ÉÍ�$:¹Oo&|µÂ§A!ÿ}2¸O!}2ºO}2¹O!¸Oå! åÍ;7ÑÑ! å!åÍ;7ÑÑ:ºOo&ÍÔ$ÊuA!}2¹O!É! å:¹Oo&#}2¹O¸O#Ñs! å:¹Oo&#}2¹O¸O#Ñs!"ºP:¹Oo&DMë! 9~#foÍ%ÊÇA! 9^#VBKÅ*ºP¸Oå!9^#VÕÍHÑÑÑ`ië*ºP"ºP`ië:¹Oo&ëÍè%}2¹O`iÉÍ�$þÿ! 9N#F!ë!9s#rÃ%B!9å~#fo#ëás#r!9^#V!9~#foÍ%Ê[B! 9^#VÕÍ;7Ñå`i#DM+Ñs!ÍÔ$Â[BÃB!9^#VëÉÍ�$!9^#V!Í%‰B!9^#V! Í%Ê“B!ýÿ"ÜP!ÿÿÉ!9^#Vë))){QDM! 9^#VÕ! 9^#VÕ! ^#VÕ! ^ë)¼P^#VëÍœ$ÑÑÑÉÍ�$úÿ!DM!9^#V!9s#r!9^#V!$~·ÊKC!99^#V! Í%Ê=!ýÿ"ÜP!ÿÿÉ!9^#Vë))){QDM! ^#VÕ! ^#VëÍœ$Ñë!9s#r!ë! s! s! s`is!�:ë! s#r!9^#VëÉÍ�$!€NDMÃ…=`i&DM`i°OëÍH&Ê =!% ^z³Êª=Ã}=!ùÿ"ÜP!ÿÿÉÅ! 9^#VÕÍt7ÑÑÊÅ=!úÿ"ÜP!ÿÿÉ! 9^#V!ÍŒ$Êß=Å!åÍ;7ÑÑÅ!åÍ;7ÑÑÿÍÔ$Ê">! 9^#V!ÍŒ$Ê>Å!åÍ;7ÑÑÿÍÔ$Ê>!ÿÿ"ÜP!ÿÿÉÃB>! 9^#V!ÍŒ$ÍÔ$ÊB>!ûÿ"ÜP!ÿÿÉ!ë!! s#r!# s!$ s`iå!9^#V!Ñs#r! 9^#V!ÍŒ$#ë!% s!ÍŒ$Êœ>!Í>å!9^#V!Ñs#rï>!³>å!9^#V!Ñs#r!ÉÍ�$!å! 9^#V!%Ñs!ÉÍ�$!9N#FÅ!åÍ;7ÑÑ!ë!% s!ÉÍ�$!9^#V!ÍÅ*¡MëÍ·Â'G*¡M!4ÂG#4*¥M+"¥M}´ÂïFÁÉo&"ÜPÁ*¥MÉÍ�$Üÿ!9å!.9^#VÕÍt7ÑÑ!9å!åÍ;7ÑÑÉÍ�$üÿ! 9N#F!ë!9s#r`i^!-ÍÔ$Ê�G`i#DM!ë!9s#rãG`i^!+ÍÔ$Ê£G`i#DM!ë!9s#r`i^ÕÍ©IÑÊãG!9^#V! ÍŒ%å`i#DM+^áÐÿë!9s#rîG!9~#¶ÊûG!9^#Vëͤ%ÃH!9^#VëÉÅ! 9F+N+V+^+~+ngx±Ê"Hw# ÃHÁÉÅ!9^#V#N#F#nëx±Ê>Hs# Ã3HÁÉ!9Åÿ^#V#~#fox±ÊdH¾ÂiH·ÊdH# ÃPHÁ!ÉÁÚsH!}´É!ÿÿ}´É!9Åÿ^#VÕ#~#fox±Ê›H~·Ê›H# ÊHáÁÉ!9~#fo¯¾Ê³H#êHë}´É!9Å^#VÕ#^#V#N#FëÑÃPH!9Å^#VÕÕ#^#V#N#FëÑÊHÅÿ!9^#VÕ#~#foëx±Ê›H~·ÊI9Ãâ8`ië!9s#r`i#DM~·ÊF9`i^! ÍÔ$Â49`i^! ÍÔ$ÊC9!å`i#DM+ÑsÃF9Ã9!9^#VÕÍê<Ñ!9~#¶Êx9!¶å!9^#VÕÍç:ÑÑë!9s#rÑ9!å!9^#VÕÍ;ÑÑë!9s#r!9^#V!ÿÿÍÔ$Êë9!Q:å!€åÍyHÑÑ!9^#VÕ!€åÍäHÑÑ!s:å!€åÍäHÑÑ!€åÍžHÑå!€å!åÍdBÑÑÑ! åÍu:ÑÃ::`iå*~N#"~N+)ÂMÑs#r`i#DM~·Ê::`i^! ÍÔ$Â(:`i^! ÍÔ$Ê7:!å`i#DM+ÑsÃ::Ã:Ãr8!ÂMå*~NåÍÑÑåÍu:ÑÉCan't open file for redirection: Í�$;,!9~#¶Ê�:!“:åÍ2GÑÍ*7ÉA:$$$.SUBÍ�$!ýÿ"ÜP!ÿÿÉÍ�$!Écon:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:Í�$! 9^#VÕ!å! 9^#VÕ^#V!$^Õ!€ÑëÍè%DMë!9~#foÍI&Ê-C!9^#VBKÅ!9^#VÕ! 9^#VÕÍDÑÑÑÊKC!ÿÿÉ!9^#V`iÍè%ëÍU&ë!9s#rz³Ê¶C!9^#VÕ!9^#V`iå! 9^#VÕÍéFÑÑÑë!9s#rz³Ê¶C!9^#V!9~#foÍè%ëÍØ%PYÉ!9^#V!ÍØ%PYDM`ië!9~#foÍH&ÊD!9^#V`iÍè%å!9^#V`iå! 9^#VÕÍDÑÑÑÊD`iÉ!9^#VëÉÍ�$!9N#F!€å!åÍ;7ÑÑÅ!!åÍ;7ÑÑ"ÜPÍÔ$ÂID*ÜPÍÔ$ÊdD!"ÜP!å!€å!€åÍ$HÑÑÑÃpD*ÜP|µÊpD!ÿÿÉ! 9^#VÕ! 9^#VÕ!$ ^!€åÍHÑÑÑÅ!"åÍ;7ÑÑ"ÜP|µÊ¨D!ÿÿÉ!$ ^! 9~#foÍŒ$ë!$ sz³ÂÚD`i!å~#fo#ëás#r!ÉÍ�$üÿ!9N#F!ë!9s#rÃE!9å~#f  # ÃöHëÊH!9Å^#VÕÕ#^#V#N#Fá¯ÃöHÅ!9^#V#në~·Ê8I»Ê>I#Ã+I!¯ÁÉ|µÁÉÅ!9^#V#n믾ÊZI#ÃQIx±Ê8I +~»ÂZIÃ>I!9~þ Ê�Iþ Ê�Iþ Ê�IäI!9~þAÚ¤Iþ[Ò¤I!}·É!9~þaÚ¤Iþ{Ú�I!¯É!9~þ0Ú¤Iþ:Ò¤IÃ�I!9~þaÚÌIþ{ÒÌIÖ o&·É!9~þAÚâIþ[ÒâIÆ o&·ÉÑ!åëë*eQÃJÑ!åëë*cQw#w#w#wÉë*cQ~#~#~#~Éá"ÄP*cQV+^+ÕV+^Õ*ÄPéá"ÄP*eQÑs#r#Ñs#r*ÄPé*eQë*cQ"eQë"cQÉ*cQ¯>žw#ÂcJÉ*cQ~·Â.M#ÂrJÃ#M¯=Áɯ<ÁÉÅ*cQë*eQ###·ú¡J®úƒJÃ¥J®úJ¾ÚJƒJ+§J¯ÁÉÅ*cQë*eQ¯Ž#ÂÃJÁÉÅ*cQë*eQ¯ž#ÂÙJÁÉÅ*cQë*eQ¦#ÂîJÁÉÅ*cQë*e�:^?AüA�:ÔBÞDÞDQ¶#ÂKÁÉÅ*cQë*eQ®#ÂKÁÉ*cQ~/w#Â(KÉ*eQ~æ?ÈÅG*cQ^#V#~#fo)ë)ëÒMK#ÂEKDM*cQs#r#q#pÁÉ*eQ~æ?ÈW*cQ###~·ú„Kå·~w+ÂvKáÂrKÉå7~w+ˆKá„KÉÕ~#™KáO·ðÃ`JÅ*cQÐPÍ–Ky2ÎP*eQØPÍ–K:ÎP©2ÎPÍLÐP*cQw#ÂÑKÁ:ÎP·ú]JÉÅ*cQÐPÍ–Ky2ÎP*eQØPÍ–KÍLÔP*cQw#ÂLÁ:ÎP·ú]JÉ!ÔP¯w#ÂL> 2ÏP!ÐP·~�w#Â,LŸæOÔP!ØP·ž#ÂALyÞÂ\L!ÐP4!ÏP5Â&LÉ!ÏP5ÊŽL!ÐP·~�w#ÂiLŸOÔP!ØP·Ž#Â|LyÎÂ\LÃPLÔP!ØP·Ž#—LÉÅ*eQØP~#ªL*cQÔP~#ºL!ÐP¯w#ÂÈL> 2ÏP!ÐP·~�w#ÂÙLÒMÐP!ØP·Ž#ÂíLÎÒMÆPÊP¬:¬:¬:¬:¬:¬:�:�:�:�:�:�:�:�:µ:iQº:iQ¿:oQÄ:oQÉ:oQÎ:oQÓ:oQØ:oQÝ:uQâ:uQRp=ÂøL!ÏP5ÂÓL*cQÐPw#ÂMÁÉ͇JÊ.M!¯É͇JÊ#M!¯<É͇Jú.MÃ#M͇Jú.MÊ.MÃ#M͇Jú#MÃ.M͇Jú#MÊ#MÃ.Më*cQs#r#6#6Éë*cQs#r#z·òfM6ÿ#6ÿÉ*cQ^#VëÉÉ0123456789abcdef£¸           return(p); }  /********************************************************/ /* */ /* Point-Plotting routines for MX-80 Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define HSIZE 320 #define VSIZE 328 #define NO 0 #define YES 1 extern int horsize, versize, flag; extern short grafbuf[HSIZE][VSIZE/8]; pixplot(h,v) /* Plots point (in the graphics RAM image) */ /* having coordinates (h, v). */ int h,v; { int w; if((v0; --n) p=p*x;    /********************************************************/ /* */ /* Line-Plotting Routines for MX-80 Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define NO 0 #define YES 1 extern int horsize, versize, flag; extern int pixplot(), unpixplot(); lineplot(x,y,h,v) /* plots segment from (x,y) to (h,v) */ int x,y,h,v; { if((x==h)&&(y==v)) noline(x,y); else if(abs(y-v)h)||(y>v)) { printf("Argument error in INVERT: command aborted.\n\n"); command(); } else for(j=y; j<=v; j++) for(i=x; i<=h; i++) if(get(i,j)) unpixplot(i,j); else pixplot(i,j); } get(h,v) /* returns the value (0 or 1) of the pixel at (h,v) */ int h,v; { return(power(2,v%8)&grafbuf[h][(versize-1)/8-v/8]); }  pixplot(l,i); } else for(i=y; i<=v; i++) { k=h; k=(k-x)*(i-y); l=k/(v-y)+x; unpixplot(l,i); } }  register i; if(x<0) { printf("Argument error in SQRT.\n\n"); return(-1); } for(i=0; i=(x-i/2)) return(i); } (x0) return(x); else return(-x); } horline(x,y,h,v) /* plots line having abs(slope) <= 1 */ /* assumes x < h */ int x,y,h,v; { re /********************************************************/ /* */ /* Circle-Plotting Routine for MX-80 Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define NO 0 #define YES 1 extern int flag; extern int pixplot(), unpixplot(); circle(x,y,r) /* plots circle with center (x,y) and */ /* radius = r */ int x,y,r; { register i; int end, sqt; long li, lr; lr=r; if(f /********************************************************/ /* */ /* Graph Inversion for MX-80 Bit-Plot Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define HSIZE 320 #define VSIZE 328 extern int versize; extern int pixplot(), unpixplot(), power(); extern short grafbuf[HSIZE][VSIZE/8]; invert(x,h,y,v) /* Changes all pixels with coords (a,b) */ /* satisfying x < a < h and */ int x,h,y,v; gister i; long k; short l; if(flag) for(i=x; i<=h; i++) { k=v; k=(k-y)*(i-x); l=k/(h-x)+y; pixplot(i,l); } else for(i=x; i<=h; i++) { k=v; k=(k-y)*(i-x); l=k/(h-x)+y; unpixplot(i,l); } } vertline(x,y,h,v) /* plots line having abs(slope) >= 1 */ /* assumes y < v */ int x,y,h,v; { register i; long k; short l; if(flag) for(i=y; i<=v; i++) { k=h; k=(k-x)*(i-y); l=k/(v-y)+x; lag) { end=r-r/4; for(i=r/4-r; i<=end; i++) { li=i; sqt=sqrt(lr*lr-li*li); pixplot(x+i,y+sqt); pixplot(x+i,y-sqt); pixplot(x+sqt,y+i); pixplot(x-sqt,y+i); } } else { end=r-r/4; for(i=r/4-r; i<=end; i++) { li=i; sqt=sqrt(lr*lr-li*li); unpixplot(x+i,y+sqt); unpixplot(x+i,y-sqt); unpixplot(x+sqt,y+i); unpixplot(x-sqt,y+i); } } } sqrt(x) /* Cluge returning approximate square-root of integers */ long x; {    /********************************************************/ /* */ /* File-Handling for MX-80 Bit-Plot Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define HSIZE 320 #define VSIZE 328 extern int horsize, versize; extern short grafbuf[HSIZE][VSIZE/8]; static char grafname[13]; #include "libc.h" savegraf(h,v,name) /* saves graph having dimensions h x v */ /* under the filename NAME.GRF */ åÍÏ Ñ!åͨÑ!‡ åÍŒ Ñ!#åͨÑÉtitlePRELIMINARY VERSION 1.0 3 January 1983Don Brittain 4200 Spruce St. #208 Philadelphia, PA 19104 (215) 386-2684This program was written to illustrate the power of GRAF. All the examples were created with this preliminary version. Actually, GRAF is just an interactive 'shell' allowing (minimal) access to the modules grafutil.c, grafplot.c, grafline.c, graf- circ.c, grafinvt.c, and graffile.c. These modules were originally written to be included in C progr fclose(fp); } graffcb(name) /* changes "name" to NAME.GRF */ char *name; { register i; for(i=0; (grafname[i]=toupper(name[i]))!='\0'; i++); grafname[i++]='.'; grafname[i++]='G'; grafname[i++]='R'; grafname[i++]='F'; grafname[i]='\0'; } rcle (ellipse?) plotting command:circleand the ability to plot (or unplot) points and lines:lineIn order to use GRAF, simply type 'graf' after CP/M signs on, enter the dimensions of the graph when asked, then (following the 'command:' prompt) type HELP. A list of GRAF commands, together with a brief description of their actions, will be displayed on your console. Have fun!starÍtúÿ!9^#VÕÍL Ñ!º å!B¡åÍÕÑÑë!9s#r!9~#¶ÂÒ !B¡å!¼ åÍsÑÑ!Ú åÍsÑÉ!9^#VÕÍÑ"@¡!9^#VÕÍÑ"O¡*O¡ëÍ‘ë! int h,v; char *name; { FILE *fopen(), *fp; int vrt; register i,j; vrt=(versize+7)/8; graffcb(name); fp=fopen(grafname,"w"); putw(h,fp); putw(v,fp); /* NO ERROR CHECKING !!!!! */ for(j=0; jÑ! ^#V!Í«Êä!å!9å! ^ÕÍÈ+ÑÑÑÿÿÍ«ÂH! 9^#VëÉ! ^#V`is#r! ^#VÕ! ^#Váë! s#r!å`iÑån&Í�ëás! 9^#VÕ`iå~#fo#ëás#rë+Ñs!ÿÍcÉÍtþÿ! 9N#F! ^#V!Í«Êi`ië! s#rÉ*Š |µÊ‰*Š ë!9s#r*Š ^#Vë"Š Ã°! ^#VÕÍÔÑë!9s#rz³Â°!ë! s#rÃZ!å`iÑån&Í�ëás!9^#V! s#rÉÍt*L6|µÂï!åÍq!Ñ"J6"L6*L6DM!9^#V*L6"ÿŸ!ÉÍêr,wca ü!ë! s!ë! s#r!ë`is#r! s#r! s#r`iÉÍt!9N#F`i~·Ê}! å`i#DM+^ÕÍÉÑÑÿÿÍ«Êz!ÿÿÉÃS! å! åÍÉÑÑÉÍt!9N#F`i~·ÊÅ! 9^#VÕ`i#DM+^ÕÍÉÑÑÿÿÍ«ÊÂ!ÿÿÉ×!ÉÍt!9N#F!PYÍcDM`i Í«Ê! 9^#VÕ! åͶÑÑÿÿÍ«Ê!ÿÿÉ! 9^#VÕÅͶÑÑÉÍtþÿ! 9^#VÕÍgÑDMÿÿÍ«ÂP! 9^#VÕÍgÑë!9s#r!ÿÿÍ«ÊT!ÿÿÉ!9^#V!ͯPYÍ�ÉÍtþÿ! 9N#F! ^#VÕ`i^#VáÍÊ6! ^!ÍcÊ›!ÿÿÉ!ûÿå`iÑån&Ícëás`i~#¶ÂÁÅÍ>Ñ! ^#VÕ! ^#VÕ! ^ÕÍT(ÑÑÑë!9s#r!ÍËÊ!9~#¶Â!Ãë!9ù!49s#rÃ$!9å!å!>9Í´2ÍÚ2Í©ë!9ù!49s#rÃ$!:9Í´2Í76ë!49s#rÕÍV1Ñë!89s#rÃ<!F9^#V!eÍ«Êo!Ãr!å!B9^#V!ÿÍ«ʉ!Ñ!B9^#Vëå!9å! 9Í?6Í?6Í?6ë!9ù! 9ë!49s#rÕÍV1Ñë!89s#r!Èë!@9s#rÃ<!:9Í´2Í76ë!F9s#r!F9^#VÕ!9ë!69s#rëÑsÃ$ÍêoLdruëxs7eYfYcÑã!9ë!49~#foÍ¿ë!89s#r!89^#V!@9~#foÍæÊ_!@9^#V!89s#r!D9~#¶Êš!>9å~#fo+ëás#rë#ë!89~#foÍæÊš!B9^#VÕ`iÍsÑÃi!ë!69s#r÷!69å~#fo#ëás#r!49^#Vë~·Ê÷!69^#V!@9~#foÍåÊ÷!49å~#fo#ëás#rë+^Õ`iÍsÑè!D9~#¶Â.tþÿ!ë!9s#rÃ#!9å~#fo#ëás#rë+!9^#V! 9~#foÍåÊH! å!åÍŸ ÑÑÃÉÍt!åͨÑ!9^#VÕÍÿÑÉ|¢g}£o´É|/g}/o´ÉéáÅ^#V#DM!9ë9ùÕ`iÍsëáùÁë|µÉz¬2A6Íë:A6·ú{}´ÉÍ)ë}´É}“µ|’ÊÄ!¯É}“ÂÄ|’ʵ!}´Éë|ªúÝ}“|š?>Îo&Ézæo&Éë|ªú÷}“|š>Îo&É|æo&Éz2A6Í:A6·ú{|µÉ|·ò/g}/o#z·ò)/W{/_Ã)ÅDM!>2@6)ë)ëÒ<#}‘o|˜gÒT :@6=2@6Â4Á}´É:@6=2@6Â4Á}´ÉÅDM!>)ë)ëÒs =ÂkÁ}´É}/o|/g#}´É|µÊÄõ|²g}³o´Éë{æ_ʼ|´ò4|7g}o¢´Éë{æ_ʼ)·}´Éë}“o|šgµÉëáÅN#F#ë ëN#F#z¸Úà{¹Òä##^#VëÁéëáÅBK^#Vz·ú #y¾Ê##L6PYëÍÊ`i"L6!É*L6ë*J6Í ÊS*L6ë*J6Í¿ÿþÍcë!9s#rÕÍq!ÑÊ !9^#V*J6"J6`iÉÍt!9^#Vë"N6! 9å! 9^#VÕ!‡åÍ¥ÑÑÑ!å*N6ÑsÉÍt!9^#VÕ*N6#"N6+Ñs!ÿÍcÉÍt¼ÿ!L9N#F!N9å~#fo#ëás#rë+^!F9s#rz³ÊB!F9^#V!%Í«Ê1!ë!9s!ë!D9s#r! ë!B9s#r!ÿë!@9s#r!N9^#Vë^!F9s#r!-Í«ÊL!ë!D9s#r!N9å~#fo#ëás#rë+^!F9s#r!F9^#V!0Í«Êg!0ë!B9s#r!ë!>9s#r!N9å~#fo#ëás#rë+^!F9s#r!0ÍÊÊÌ!F9^#V!9ÍËÊÌ!>9^#V! Ícë!F9~#foÐÿë!>9s#rÃr!F9^#V!.Í«ÊA!ë!@9s#r!N9å~#fo#ëás#rë+^!F9s!å`iÑån&Í�ëás!ÿÿÉ! ^#V`is#r!9~#foë! s#r`iå~#fo#ëás#rë+^!ÿÍcÉÍt! å! 9^#VÕͶÑÑÉÍt!9N#F! 9^#VÕÅͶÑÑëÍåÊŽ!ÿÿÉ! 9^#VÕ`iëÍ,åͶÑÑëÍåʳ!ÿÿÉ`iÉÍt! 9N#F! ^#VÕ`i^#VáÍÊë!9^#V!ÿÍcåÅÍìÑÑÉ!9^#VÕ`iå~#fo#ëás#rë+Ñs!ÿÍcÉÍt!ÿÿå! 9^#VÕÍìÑÑÉÍt!  DM`i‚ ëÍÊL`i DMõÿåÍMÑÃ,ÉÍtþÿ! 9N#F!ë!9s#r`i~·ÊÚ! ^!ÍcÊ‘!ÿÿåÅÍìÑÑë!9s#r! ^ÕÍN&Ñë!9å~#foÍ�ëás#r! ^!ÍcÊÚ*Š å! ^#VëÑs#r! ^#Vë"Š !ë! s!9^#VëÉÍtþÿ! 9N#F! ^!!>9å~#fo+ëás#rë#ë!89~#foÍæÊ.! å`iÍsÑÃÃ?!F9^#VÕ`iÍsÑñÉÍt! 9N#F`iÍ$6ÍÚ2! 9Í´2Íò2Íš4Í76P6^Õ!9å~#fo+ëás#rëÑs!9å`iÍ$6Í3áåÍ´2Í`4áÍÇ2Í%3ÂO!9^#VëÉÍtþÿ!9N#F! 9Í´2ÍŸ2Íì5Êi ! 9Í´2Í76Ícë!9s#r! 9å! 9Í´2ÍŸ2Í4ÍŸ2ÿÿÿÍœ3áÍÇ2`iëÍ•Í$6ÍÚ2!9Í´2Íò2Íš4Í76)ë!9~#foP6^Õ!9å~#fo+ëás#rëÑs! 9å`iëÍ•Í$6Í3áåÍ´2Í`4áÍÇ2!9^#VÕÅ!9Í´2ÍÚ2ÍCë!9ùëÉ*ù͘!ÍÃŽ ÍTÍ¢ ëÉÍT*B6DM*D6ëÍëo&ÉÍTÍÀ o&ÉÍT*B6ë*+++ë*D6DM*F6ëéÅ!9N#F#^#Vkb6#> 6 #=Âë >6#=Âô ë þ:#Ãò#x¾Âÿ#~#foÁéë}“|š>?Îo&Éë}“|š>Îo&Éë{æ_ʼ|·g}oÂ4´É|ªg}«o´É~# x±ÂIÉÑ!9ÅÕB6~#Â`!mãéÁ|µÉ§ÉÍt! "H6! 9å! 9^#VÕ!¾åÍ¥ÑÑÑÉÍt!9^#Vë"H6! 9å! 9^#VÕ!¾åÍ¥ÑÑÑÉÍt*H6å! 9^#VÕÍÉÑÑÉÍtþÿ!  DM`i~·Ê`i DM‚ ëÍÊ!ÉÃß! 9^#Vë#^!+Í«ë!9s#r! 9^#Vë^ëÃ!9~#¶Ê<!Ã?!å! 9^#VÕÍk$ÑÑë! s!ÿÿÍ«Ê`!ÉÃ!9~#¶Ês!Ãv!Í�å! 9^#VÕÍk$ÑÑë! s!ÿÿÍ«Ê�!ÉÃ!9~#¶Ê°!ó!Í�å! 9^#VÕÍk$ÑÑë! s!ÿÿÍ«ÊÚ!É!åÍ­2ÍÚ2! ^ÕÍÒ.ë!9ùÃ!úÿ"#r!0ÍÊÊA!F9^#V!9ÍËÊA!@9^#V! Ícë!F9~#foÐÿë!@9s#rÃç!F9^#V!lͫʒ!N9å~#fo#ëás#rë+^!F9s#r!:9å!R9å~#foëás#rëüÿÍ´2áÍÇ2ÃA!F9^#V!dÍ«ÊÈ!:9å!R9å~#fo##ëás#rë++^#VëÍ$6áÍÇ2ÃA!F9^#V!eÍ«Âø!F9^#V!fÍ«Âø!F9^#V!gÍ«Ê!9å!R9å~#foëás#rëøÿÍ?6áÍ?6ÃA!:9å!R9å~#fo##ëás#rë++^#VëÍ6áÍÇ2!F9^#VëÃý!9å!å!>9Í´2ÍÚ2Í©ë!9ù!49s#rÃ$!:9Í´2ÍŸ2Íì5ÊÅ!9å! å!>9Í´2Í3ÍÚ2ÍCë!9ù!49s#r!-å!69å~#fo+ëás#rëÑsÃè!9å! å!>9Í´2ÍÚ2ÍCë!9ù!49s#rÃ$!9å! å!>9Í´2ÍÚ2Í©   >Â'! æþAÚa!þ[Ò!Ö@Ã$!þaÚa!þ{Òa!Ö`w# þ.ÊB!·Ê[!Ê*!Íh!w#Ã+!{…o|Îg ·Ê[!Íh!w#ÂL!!¯ÁÉ!ÿÿ|·ÁÉþaØþ{ÐÖ É!9^#V*a6ë!þ9}“|šÚ“!*a6ë"a6ë|µÉ!¯ÉÍtüÿ!å!�å!Ÿ6åͼ0ÑÑÑ!å:€o&ÍcŸ6Ñs!´#"c6!Ÿ6DM!"7*7ëÍåÊ¡#`i^! Í«Âÿ!`i^! Í«Ê"`i#DMÃã!`i^z³Ê¡#`i^!>Í«Ê-"!ë!9s#rÃF"`i^!<Í«ÊR#!ë!9s#r`i#DM^! Í«Âe"`i^! Í«Êh"ÃF"`ië!9s#r`i#DM~·Êª"`i^! Í«˜"`i^! Í«ʧ"!å`i#DM+Ñsê"Ãr"!9^#VÕÍN&Ñ!9~#¶ÊÜ"!¶å!9^#VÕÍK$ÑÑë!9s#rÃõ"!å!9^#VÕÍk$ÑÑë!9s#r!9^#V!ÿÿÍ8#Ñs!"[9:Z8o&DMë! 9~#foÍæÊ++! 9^#VBKÅ*[9Y8å!9^#VÕͼ0ÑÑÑ`ië*[9"[9`ië:Z8o&ëÍ¿}2Z8`iÉÍtþÿ! 9N#F!ë!9s#rÉ+!9å~#fo#ëás#r!9^#V!9~#foÍåÊ¿+! 9^#VÕÍŸ Ñå`i#DM+Ñs!Í«¿+Ãz+!9^#VëÉÍt!9^#V!ÍåÂí+!9^#V! ÍæÊ÷+!ýÿ"ÿŸ!ÿÿÉ!9^#Vë)))ž DM! 9^#VÕ! 9^#VÕ! ^#VÕ! ^ë)]9^#VëÍsÑÑÑÉÍtúÿ!DM!9^#V!9s#r!9^#V!$~·Ê¯,!9^#V!$^Õ!€ÑëÍ¿DMë!9~#foÍ Ê‘,!9^#VBKÅ!9^#VÕ! 9^#VÕÍr-ÑÑÑʯ,!ÿÿÉ!9^#V`iÍ¿ëÍ,ë!9s#rz³Ê-!9^#VÕ!9^#V`iå! 9^#VÕÍM0ÑÑÑë!9s#rz³Ê-!'Ãá&!ùÿ"ÿŸ!ÿÿÉÅ! 9^#VÕÍØ ÑÑÊ)'!úÿ"ÿŸ!ÿÿÉ! 9^#V!ÍcÊC'Å!åÍŸ ÑÑÅ!åÍŸ ÑÑÿÍ«ʆ'! 9^#V!ÍcÊy'Å!åÍŸ ÑÑÿÍ«ʃ'!ÿÿ"ÿŸ!ÿÿÉæ'! 9^#V!ÍcÍ«ʦ'!ûÿ"ÿŸ!ÿÿÉ!ë!! s#r!# s!$ s`iå!9^#V!Ñs#r! 9^#V!Íc#ë!% s!ÍcÊ(!1(å!9^#V!Ñs#rÃ(!(å!9^#V!Ñs#r!ÉÍt!å! 9^#V!%Ñs!ÉÍt!9N#FÅ!åÍŸ ÑÑ!ë!% s!ÉÍt!9^#V!ÍåÂy(!9^#V! Íæʃ(!ýÿ"ÿŸ!ÿÿÉ!9^#Vë)))ž DM! 9^#VÕ! 9^#VÕ! ^#VÕ`i^ë)Q8^#VëÍsÑÑÑÉÍtúÿ!DM!9^#V!9s#r!9^#V!$~·Ê9)!9^#V!$^Õ!€ÑëÍ¿^#V#~#fox±Ê1¾Â!1·Ê1# Ã1Á!ÉÁÚ+1!}´É!ÿÿ}´É!9Åÿ^#VÕ#~#fox±ÊS1~·ÊS1# ÃB1áÁÉ!9~#fo¯¾Êk1#Ãb1ë}´É!9Å^#VÕ#^#V#N#FëÑÃ1!9Å^#VÕÕ#^#V#N#FëÑÃB1Åÿ!9^#VÕ#~#foëx±ÊS1~·Ê½1# î1ëÃB1!9Å^#VÕÕ#^#V#N#Fá¯Ã®1Å!9^#V#në~·Êð1»Êö1#Ãã1!¯ÁÉ|µÁÉÅ!9^#V#n믾Ê2#à 2x±Êð1 +~»Â2Ãö1!9~þ ÊG2þ ÊG2þ ÊG2Ã\2!9~þAÚ\2þ[Ò\2!}·É!9~þaÚ\2þ{ÚG2!¯É!9~þ0Ú\2þ:Ò\2ÃG2!9~þaÚ„2þ{Ò„2Ö o&·É!9~þAÚš2þ[Òš2Æ o&·ÉÑ!åëë*„ Ã¸2Ñ!åëë*‚ w#w#w#wÉë*‚ ~#~#~#~Éá"e9*‚ V+^+ÕV+^Õ*e9éá"e9*„ Ñs#r#Ñs«ÊO#!µ#å!€åÍ11ÑÑ!9^#VÕ!€åÍœ1ÑÑ!×#å!€åÍœ1ÑÑ!€åÍV1Ñå!€å!åÍÈ+ÑÑÑ! åÍÙ#ÑÞ#`iå*7#"7+)c6Ñs#r`i#DM~·Êž#`i^! ͫŒ#`i^! ͫʛ#!å`i#DM+ÑsÞ#Ãf#ÃÖ!!c6å*7åÍÑÑåÍÙ#ÑÉCan't open file for redirection: ÍtÍ"!9~#¶Êó#!÷#åÍ–0ÑÍŽ ÉA:$$$.SUBÍt!ýÿ"ÿŸ!ÿÿÉÍt!Écon:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:Ít! 9^#VÕ!å! 9^#VÕÍk$ÑÑÑÉÍtøÿ!ž ë! 9s#r!ë!9s#rê$! 9å~#foëás#r!9å~#fo#ëás#r!9^#V! ÍåÊÔ$! 9^#V!^#V!$Í«ÂÞ$É$!øÿ"ÿŸ!ÿÿÉ!ö DMÃî$`iDM`i~#¶Ê%!9^#VÕ`i9^#V!9~#foÍ¿ëͯPYÉ!9^#V!ͯPYDM`ië!9~#foÍÊi-!9^#V`iÍ¿å!9^#V`iå! 9^#VÕÍr-ÑÑÑÊi-`iÉ!9^#VëÉÍt!9N#F!€å!åÍŸ ÑÑÅ!!åÍŸ ÑÑ"ÿŸÍ«­-*ÿŸÍ«ÊÈ-!"ÿŸ!å!€å!€åÍÜ0ÑÑÑÃÔ-*ÿŸ|µÊÔ-!ÿÿÉ! 9^#VÕ! 9^#VÕ!$ ^!€åͼ0ÑÑÑÅ!"åÍŸ ÑÑ"ÿŸ|µÊ .!ÿÿÉ!$ ^! 9~#foÍcë!$ sz³Â>.`i!å~#fo#ëás#r!ÉÍtüÿ!9N#F!ë!9s#rÃk.!9å~#fo#ëás#r!9^#V!9~#foÍåÊÉ.`i#DM+^!9s#r!9^#V! Í«ʱ.! å!9^#VÕÍŸ ÑÑ!9^#VÕ!9^#VÕÍŸ ÑÑÃ\.!9^#VëÉÍt!9^#V!ÍåÂ/!9^#V! ÍæÂ/!9^#Vë)DMë!9~#foÍ Ê)!9^#VBKÅ!9^#VÕ! 9^#VÕÍü)ÑÑÑÊ9)!ÿÿÉ!9^#V`iÍ¿ëÍ,ë!9s#rz³Ê¤)!9^#VÕ!9^#V`iå! 9^#VÕÍE0ÑÑÑë!9s#rz³Ê¤)!9^#V!9~#foÍ¿ëͯPYÉ!9^#V!ͯPYDM`ië!9~#foÍÊó)!9^#V`iÍ¿å!9^#V`iå! 9^#VÕÍü)ÑÑÑÊó)`iÉ!9^#VëÉÍt!9N#F!€å!åÍŸ ÑÑÅ!!åÍŸ ÑÑ"ÿŸ|µÊ+*!ÿÿÉ! 9^#VÕ!$ ^!€å!9^#VÕͼ0ÑÑÑ!$ ^! 9~#foÍcë!$ sz³Â*`i!å~#fo#ëás#r!ÉÍt:Z8o&|µÂ +!ÿ}2Y8!}2[8}2Z8!Y8å! åÍŸ ÑÑ! å!åÍŸ ÑÑ:[8o&Í«ÊÙ*!}2Z8!É! å:Z8o&#}2Z8Y8#Ñs! å:Z8o&#}2Z8Y#r*e9é*„ ë*‚ "„ ë"‚ É*‚ ¯>žw#Â3É*‚ ~·Âæ5#Â*3ÃÛ5¯=Áɯ<ÁÉÅ*‚ ë*„ ###·úY3®ú;3Ã]3®ú73¾Ú73Â;3+Â_3¯ÁÉÅ*‚ ë*„ ¯Ž#Â{3ÁÉÅ*‚ ë*„ ¯ž#‘3ÁÉÅ*‚ ë*„ ¦#¦3ÁÉÅ*‚ ë*„ ¶#»3ÁÉÅ*‚ ë*„ ®#ÂÐ3ÁÉ*‚ ~/w#Âà3É*„ ~æ?ÈÅG*‚ ^#V#~#fo)ë)ëÒ4#Âý3DM*‚ s#r#q#pÁÉ*„ ~æ?ÈW*‚ ###~·ú<4å·~w+Â.4áÂ*4Éå7~w+Â@4áÂ<4ÉÕ~#ÂQ4áO·ðÃ3Å*‚ q9ÍN4y2o9*„ y9ÍN4:o9©2o9ÍÍ4q9*‚ w#‰4Á:o9·ú3ÉÅ*‚ q9ÍN4y2o9*„ y9ÍN4ÍÍ4u9*‚ w#¼4Á:o9·ú3É!u9¯w#ÂÓ4> 2p9!q9·~�w#Âä4ŸæOu9!y9·ž#Â^#VÕÍø0ÑÑÊ%Ãæ$! ^#V!9s#r!9^#V!Íc#ë!9s#r!9^#V!ÍcÊh%!9^#Vë^Õ! 9^#VëÑsz³Âh%!öÿ"ÿŸ!ÿÿÉ!9^#V!ÍcÊŸ%!9^#Vë#^Õ! 9^#Vë#Ñsz³ÂŸ%!öÿ"ÿŸ!ÿÿÉ! ^#VÕ! 9^#V!Ñs#r!9^#Vë##^Õ! 9^#Vë##Ñs!9^#Vë###^Õ! 9^#Vë###Ñs!$å! 9^#V!Ñs#rÅ! 9^#VÕ!9^#VÕ!9^#VÕ!9^#VÕ!9^#V!^#VëÍsë! 9ù!ÍåÊE&!ÿÿÉ!9^#VëÉÍt!9^#V!ÍåÂs&!9^#V! ÍæÊ}&!ýÿ"ÿŸ!ÿÿÉ!9^#Vë)))ž DM! ^#VÕ! ^#VëÍsÑë!9s#r!ë! s! s! s`is!$ë! s#r!9^#VëÉÍt!!7DMÃé&`i&DM`iQ8ëÍÊ'!% ^z³Ê))¡ ^z³Â/!ýÿ"ÿŸÍ­2ÿÿÿÿÉ!9^#Vë)))¤ ^#VBK!9^#Vëý/Å!åÍŸ ÑÑÿÍ«Ê\/!ýÿ"ÿŸÍ­2ÿÿÿÿÉÅ!#åÍŸ ÑÑ!ë!$ s! 9å!! ^#VëÍ6ÍŸ2Íé3ÍÚ2!$ ^ëÍ$6Íò2Íp3Í3áåÍ´2Íp3áÍÇ2ÃÐ/!úÿ"ÿŸÍ­2ÿÿÿÿÉÍê;/o/¬/¯/!ë!# s! 9Í´2ÍŸ2Íì5Ê 0!ë!! s#r!$ s!úÿ"ÿŸÍ­2ÿÿÿÿÉ! 9Í´2Í76Ícë!$ s! 9Í´2ÍŸ2Í4Í76ë!! s#r! 9Í´2ÉÍT!ÃR0ÍT"Å*D6ë!€"D6ÍÁÅ*B6ëͷ‹0*B6!4Â}0#4*F6+"F6}´ÂS0ÁÉo&"ÿŸÁ*F6ÉÍtÜÿ!9å!.9^#VÕÍØ ÑÑ!9å!åÍŸ ÑÑÉÅ! 9F+N+V+^+~+ngx±ÊÚ0w# ÃÍ0ÁÉÅ!9^#V#N#F#nëx±Êö0s# Ãë0ÁÉ!9Åÿ  ù4yÞÂ5!q94!p95ÂÞ4É!p95ÊF5!q9·~�w#Â!5ŸOu9!y9·Ž#Â45yÎÂ5Ã5u9!y9·Ž#ÂO5ÉÅ*„ y9~#Âb5*‚ u9~#Âr5!q9¯w#€5> 2p9!q9·~�w#‘5Ò¼5q9!y9·Ž#Â¥5ÎÒ¼5°5!p95‹5*‚ q9w#ÂË5ÁÉÍ?3Êæ5!¯ÉÍ?3ÊÛ5!¯<ÉÍ?3úæ5ÃÛ5Í?3úæ5Êæ5ÃÛ5Í?3úÛ5Ãæ5Í?3úÛ5ÊÛ5Ãæ5ë*‚ s#r#6#6Éë*‚ s#r#z·ò66ÿ#6ÿÉ*‚ ^#VëÉÉ0123456789abcdefQ¡$Â(ƒ*`+$8,B.B.          g9k9$$$$$$$$$$$$$$$Œ $Œ o copy DEMO.COM to another disk, be sure to also copy all the .GRF files on this disk. The .GRF files contain the graphs used in the DEMO program.) GRAF is really only a 'shell' which allows the user access to the underlying functions contained in the various 'graf????.c' files found on this disk. The power of these functions is only hinted at by the GRAF shell. By using the underlying functions directly, C programs can easily be written to plot functions, draw recursive figures, plot solution Epson MX-80 Bit-Plot Graphics Don Brittain Preliminary Version 1.0 4200 Spruce St. #208 3 January 1983 Philadelphia, PA 19104 OVERVIEW GRAF is an interactive program allowing the user to create reasonably high resolution graphics images on an Epson MX-80 dot-matrix printer equipped with GRAFTRAX. GRAF allows the user to plot (or 'unplot') points, lines, circles, borders, and solid boxes. [Here, 'plot' means to turn a pixel on (black) and 'unplot' means to turn a pixel off (#$’ ($’ -$’ 2$’ 7$’ <$’ A$˜ F$˜ 8¡Ô&s to equations, etc. The next two sections discuss the more technical aspects of GRAF. DESCRIPTION OF THE FILES This disk contains the following files related to GRAF: GRAF.COM This is the interactive routine that allows the user to create simple graphics images. GRAF.C Source code (in C) for the above. This program uses all the GRAF????.C modules described below. DEMO.COM is a demonstration program which illustrates some of the types of images GRAF will create. DEMO.C white).] Graphics images created with GRAF can be saved in CP/M files (with default extension .GRF) and later retrieved for modifica- tion or printing. This way a 'user library' of standard images (logos, report headings, etc.) can be generated. Although this version of GRAF is only preliminary (see the section titled 'THE FUTURE OF GRAF'), it is still fairly powerful. For a demonstration of what types of images can be created with GRAF, run the program DEMO on this disk. (Note: if you wish t   Source code for the above. *.GRF These files contains the graphics images used in the DEMO program. GRAFUTIL.C contains the basic utility routines to be used by all programs utilizing this graphics package. These routines include initialization of the graph (all white or all black), creation or removal of a border around the graph, and the routine to send the graph to the MX-80. GRAFPLOT.C contains the routines to plot or unplot a particular pixel. GRAFLINE.C contains routin. (Source code for the library is included.) This means that programs which are typed in exactly as found in K&R don't cause the assembler to choke (even if they use float, long, short, static, register, printf, fopen, . . .). Interfacing assembly language sub- routines is easy (although there is no #asm directive) and C II even supports bdos and bios (!) calls through the standard i/o library. The resulting machine code runs quickly, although the complile time and program size are both reasonabZTEC C II by Manx Software Systems. The only nonstandard command used was the i/o call 'bdos(bc,de)' which calls BDOS with BC=bc and DE=de. This command was used to send information to the printer, and it only appears in grafutil.c (and demo.c). If your C compiler does not have such a function in its i/o library, you will have to write this function separately. (Place it at the end of the grafutil.c file.) Or, you might try using i/o redirection (after changing the BDOS calls to putchar's or prinher than satisfied customer)! Back to the issues at hand: In order to use the graf????.c modules in a C program it is necessary to define several external variables (all are integers): horsize is the horizontal dimension of the graphics matrix versize is the vertical dimension of the graphics matrix flag is an external flag which is usually used by the subroutines as an indication to plot or unplot. (When 'flag' is equal to 0, the subroutines unplot, but when es for plotting or unplotting line segments, given the coordinates of the two endpoints. GRAFINVT.C contains the routine to 'invert' (ie change black to white and white to black) any rectangular region of the graph (with sides parallel to the axes). GRAFCIRC.C contains a preliminary circle plotting routine, which plots or unplots a circle given the radius and the coordinates of its center. GRAFFILE.C contains the file-handling routines. These routines allow the user to save the ly long. Error messages, whether given by the compliler, assembler, or linker, are right on the money and allow errors to be corrected quickly. AZTEC C II does have some shortcomings, however, the most 'serious' of which being lack of i/o redirection (which perhaps is better described as a shortcoming of CP/M), and I have run into two minor 'bugs': The compiler dies (without a word of warning) if the current disk does not have enough space for the .ASM file it is creating, (both the assembler and tf's). However, since the routines distinguish between the CONSOLE and LIST devices, this may not work satisfactorily. (All inter- action with the user is through the console. The printer is only used to print the graphs.) Now for an advertisement: AZTEC C II for $199 is one of the best bargains around. This implementa- tion supports the entire C language as described in Kernighan and Ritchie, and comes complete with a compiler, an assembler, a linking loader, and an exhaustive i/o library'flag' is nonzero, they plot.) After reading Kidder's 'Soul of a New Machine' I was going to rename this variable 'mode-bit'. All pixel-plotting is done in RAM. The current routines support up to 320 x 320 pixel graphs, though this size can be increased or decreased simply by changing the constants HSIZE and VSIZE to the approriate dimensions. (Note: VSIZE must actually be set to 8 more than the vertical dimension you desire. This is because the plotting routines work with bits, whcurrent graphics image in a CP/M file of type .GRF, and later retrieve the image for further modification or printing. The interdependence of the graf????.c files is illustrated below. graf.c | | grafutil.c / \ / \ graffile.c \ grafplot.c / | \ grafline.c | grafcirc.c | grafinvt.c TECHNICAL ASPECTS The entire GRAF package was written in standard UNIX 7 C. It was compiled using Alinker give error messages under the same conditions), and declarations of external arrays must include the (correct) size of the array (as opposed to a statement of the form: external int array[][]; ). I have not tested how the compiler reacts to declarations of the form: external int **array; Being a good bargain at $199, AZTEC C II is an incredible deal at the special Micro C price of $149 (see the back cover of issues 7 and 8). No, I am not associated with Manx Software Systems in any way (ot  ereas the actual graphics buffer is stored as bytes -- for example, a 1 x 5 graph actually takes an entire byte of RAM (wow!). Horizontal coordinates are mapped in one-to-one correspondence with bytes (actually, arrays of bytes) whereas a vertical coordinate maps to a particular bit in a particular (array of) byte(s).) If you change HSIZE and VSIZE, you MUST change them in all graf????.c files which have HSIZE and VSIZE defined -- otherwize, the results will be unpredictable. (I'm speaking from exge. [grafutil.c] border() plots (if flag=1 ) or unplots (if flag=0 )a border around the current image. [grafutil.c] pixplot(h,v) plots a pixel having coordinates (h, v). If h>horsize int h,v or v>versize this does nothing. [grafplot.c] unpixplot(h,v) similar to pixplot, but this function unplots points. int h,v [grafplot.c] lineplot(x,y,h,v) plots a line segment from (x, y) to (h, v). int x,y,v,h No assumptions are made concerning the relationships of the variables ( <, ts are virtually guaranteed to be disastrous -- the plotting routines will be altering the program code! Unless you need to make hugh plots, or memory is at a premium, it is probably best to only alter 'horsize' and 'versize' in any particular application. This package supports the following functions: (The file name in brackets following the description indicates the file in which the function is defined. The user-interface functions in GRAF.C are not described here.) init(h,v) clears t doesn't exist on the current drive, an error message is displayed on the console. Otherwise, the dimensions of the retrieved graph are displayed. This command, if successful, alters 'horsize' and 'versize'. [graffile.c] Remarks: To utilize the graphics subroutines, it is only necessary to link them to the C program which requires them. (They must first be compiled, of course.) If your C compiler/assembler package does not support linking, then the files may be included directly in tperience; actually, from several bad experiences.) NOTE: If your C compiler supports declarations of external arrays without their size, then you can alter the external declarations external short grafbuf[HSIZE][VSIZE/8]; to read esternal short grafbuf[][]; and remove #define HSIZE 320 #define VSIZE 328 from all files except grafutil.c. Then changing graph dimensions is easy: simply modify HSIZE and VSIZE in grafutil.c. Although HSIZE and VSIZE govern how much RAM >, =). This function uses pixplot and unpixplot. (As usual, if flag=0 the line is unplotted. Otherwise, it is plotted.) [grafline.c] invert(x,h,y,v) inverts (white <-> black) all points with int x,h,y,v coordinates (a,b) satisfying x<=a<=h and y<=b<=v . Note the order of the variables! This function is especially useful for making bar graphs (and checker- boards!) [grafinvt.c] get(h,v) returns the value of the bit corresponding int h,v to the pixel with coordinhe graphics region from 0 to h horizontally, int h,v and 0 to v vertically. If flag=1 the region is set to all white, and if flag=0 the region is set all black. This function is usually used to initiallize a graph, and for this purpose it is called via init(horsize, versize). [grafutil.c] grafprnt(n) sends a copy of the graph (horsize x versize) to the int n MX-80. The image is produced using the low-resolution (480 dots/line) bit-plot graphics function in the GRAFTRAX packahe program (using #include) but this requires modification of the 'external' declarations and the #define statements. (They should be removed.) Of course, this lengthens the compile time of the application program considerably. To create the GRAF.COM file I used the following AZTEC C II command: ln graf.o -f graf where the file GRAF. (the filetype is 3 blanks) contains the list grafutil.o grafplot.o grafline.o grafinvt.o grafcirc.o graffile.o -l libc.lib If you'ris allotted for the graphics image, the external variables 'horsize' and 'versize' govern how much of this RAM is actually accessed by the plotting routines. Thus the actual graph size is horsize x versize . Obviously it is necessary that horsize <= HSIZE and versize <= VSIZE-8. GRAF checks that this is true, but none of the subroutines do. Thus it is left to the programmer to make sure these conditions are met before the subroutines are called. If 'horsize' or 'versize' are too large, the resulates (h,v). savegraf(h,v,name) saves a copy of the current graph image as int h,v the CP/M file NAME.GRF. Only the region char *name having horizontal coordinates less than h and vertical coordinates less than v is saved. Thus the usual invocation is savegraf(horsize,versize,name). The size of the resulting file is of course depen- dent on h and v. [graffile.c] getgraf(name) is used to retrieve a previously saved graph having char *name filename NAME.GRF. If the file  e wondering why I didn't simply include graf.o in the list and then execute ln -f graf it's because the latter command results in a '.COM' file having the name ' . '. (Yes, that's all blanks.) You then have to execute the following idiotic command: A>ren graf.com= At least the linker doesn't call the file ' .COM'. If it did that, then any inadvertent bump of the -key at system level would cause CP/M to start executing GRAF!! Of course, the -o option could be usis has the advantage of allowing precision on what regions can be inverted, but causes the function to work rather slowly. For large regions, invert() should operate on bytes (or even words) everywhere except the vertical edges. This could increase speed by a factor of 5 or 10. It would also be nice to be able to invert regions of dif- ferent shapes. There is no 'fill', 'paint', or 'color' command. This makes it very difficult to fill in regions of a graph after some lines, points, or circles erhaps error-checking should be done condition- ally using C's #ifdef command. That way, the error-checking could be easily removed from a thoroughly debugged application. The circle routine appears to draw ellipses since the MX-80 puts more space between horizontal columns than vertical rows. (Similary, squares look like horizontally-long rectangles.) The 960 bits/inch graphics mode on the MX-80 reverses the problem -- it squeezes the horizontal dots too close together. Thus some kind of scal large graphs can't be built up out of smaller components, and if you blow it in some small region you may have to recreate the entire graph (even with the all the un- plot options). I suggest building large graphs in stages, and saving the images often. That way, if you blow it at some late stage, it is not necessary to recreate the entire graph -- simply retrieve the most recently saved image. Although bar graphs are especially easy to create (with the invert() function), there is no conveniened to rename the .COM file. The file DEMO.C contains so many character strings that the -z option must be used to compile it on AZTEC C II: ln -z2900 demo.c (Numbers smaller than 2900 might work. I didn't try for the smallest one.) THE FUTURE OF GRAF In its present form, GRAF is supports only the minimum number of commands required of an interactive graphics program. As more modules are written, GRAF will be expanded. However, the real power of this graphics package lies in thhave been plotted. (Invert() works fine at the beginning, but it never erases or covers anything.) I recommend the following form for a fill command: fill(x,y) will fill the region containing the point (x,y). int x,y It examines the adjacent bits and fills as follows: ^^^^^ ^^^^^ (continues ^) XXXXX XXXXX XXX XXXXX XXX X X X XXXXXXXXXXXXXX X X XX XXXXXXXXXXXXXXXXX XX X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>>> X @ ing routines should be written (perhaps to be called by grafprnt()) to take care of this problem. Also, there is presently no way to plot only por- tions of a circle (arcs). There is no way to enlarge or shrink a graph. Sometimes it is de- sirable to change the scale of a graph late in the game. Thus, it would be nice to have a function which changes 'horsize' and 'versize' and then scales the existing graph accordingly. The inversion routine (invert()) operates on bits rather than bytes. Tht way to label the graphs. A 'label' command would be great here. I suggest the following functions: x-axis(label) plots a horizontal axis and labels it 'label'. (This one's easy to write.) y-axis(label) plots a vertical axis and labels it 'label'. (This one's not so easy.) To implement these, it might be best to simply define a new grafprnt() function (called lablprnt()?) which prints the graph along with the labels. Note that there is currently no convenient way to put text inside ae fact that the modules may be easily included in any C program. Present deficincies of this package include the following: Only minimal error-checking takes place in any of the subroutines. This is especially critical in the file-handling portion. (If there's no room on the current disk for another .GRF file, savegraf() dies a sudden death.) I wonder what happens when pixplot() is handed negative num- bers? (I think it will quite happily rewrite random portions of the executing .COM file!) P XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>>> X X XXXXXXXXXXXXXXX (continues->) X X X XX XXXXXXXXXXXX X XX XXXX X X Before Fill(@) After Fill(@) (I don't know if this makes sense to amyone but me. But the point is that fill actually has to examine more than just the bits in the current row or column that it is filling -- a 'hole' of only one bit should not be interpretted as a 'hole' by fill().) There is no 'copy' or 'move' command. Thus   graph. PROJECTS For those of you with a lot of ambition, I recommend the following projects. (Most of which are non-trivial.) letters Write a function which prints nice (smooth) large letters at a given location on a piece of paper. This involves creating a lot of .GRF files containing the alphabet and rewriting the grafprnt() function (grafprnt() will only print one graph in a given vertical region). Another (easier?) way to imple- ment this project would be to write the ortability of the FORTH language is great, but the transportability of its screens on disk isn't too good. CONCLUDING REMARKS As with all of my programs, suggestions, criticisms, and improvements concerning GRAF or any of its modules are always welcome. I would appreciate being informed of any applications of these routines. I would also like to know of any other MX-80 graphics programs in existence (and preferably in the public domain). I hope that GRAF proves to be a useful additio have it still fit in the TPA. (GRAF.COM is already 46k!) I'd appreciate having a nice math routines library, even without any tie-ins to graphics! recursive Since C supports recursion, the routines already drawings written can be used to easily create some nice recursively-drawn pictures. See Hofstader's 'Godel, Escher, and Bach', and 'LISP', by Winston and Horn, for references. 3-D graphics Here's a real biggy. This project makes the existing GRAF look ridiculously trivial. /********************************************************/ /* */ /* GRAF Demonstration Program */ /* */ /* Uses the following .GRF files: */ /* TITLE, SMALL, MEDIUM, HUGH, BAR1 */ /* BAR2, CIRCLE, LINE, and STAR */ /* */ /* Don Brittain 3 January 1983 */ /* 4200 Spruce St. #208 phone: */ /* Philadelphia, PA 19104 (215) 386-2684 */ /* */ /********************************************************/ #define HSIZE 320 #define VSIZE 328 'move' or 'copy' function described above, then have the letters program simply move the corresponding LETTER.GRF files to the appropriate places in a large rectangular graph. An advanced version of this program will print upper and lower case, possibly in different fonts and sizes. (I'd really love to have each chapter of my PhD thesis start with one of those nice, big, capital Gothic letters!!) functions Write a module for GRAF which allows the user to plot elementaryn to your program library. Don Brittain 4200 Spruce St. #208 Philadelphia, PA 19104 (215) 386-2684  FORTH Rewrite the entire package (or your own graphics package) in FORTH. I originally planned to write GRAF in FORTH, but after receiving AZTEC C II I couldn't resist writing it in C. FORTH has the advantage (and disadvantage) of being interpretive. (You wouldn't believe how many times I got to sit around watching my disk drive go through 10 or 15 minutes of calisthentics just to produce a worth- less GRAF.COM file. My refrigerator has been empty for a week.) The transp#define LIST 5 #define ESC 27 short grafbuf[HSIZE][VSIZE/8]; int horsize, versize; int flag=1; char grafname[13]; #include "libc.h" main() { bdos(LIST,12); crlf(8); graph("title"); crlf(3); margin(23); pr("PRELIMINARY VERSION 1.0\n"); margin(23); pr(" 3 January 1983"); crlf(19); margin(27); pr("Don Brittain\n"); margin(23); pr("4200 Spruce St. #208\n"); margin(22); pr("Philadelphia, PA 19104\n"); margin(26);  functions such as sin, cos, exp, and ln, in addition to recognizing + - * /. This is a very extensive project: It will be neces- sary to implement a 'desk calculator' similar to the one in K&R, a math routines library or module, (for integer or floating point math, keeping in mind that pixplot(), etc. only except small, posi- tive integers), and (probably) some 'virtual memory' routines, since I find it hard to believe that all this can be added to the present GRAF file and   pr("(215) 386-2684"); crlf(12); pr("This program was written to illustrate the power of GRAF. All\n"); pr("the examples were created with this preliminary version.\n\n"); pr("Actually, GRAF is just an interactive 'shell' allowing (minimal) \n"); pr("access to the modules grafutil.c, grafplot.c, grafline.c, graf-\n"); pr("circ.c, grafinvt.c, and graffile.c. These modules were originally\n"); pr("written to be included in C programs requiring graphics. GRAF\n"); gister i,j; graffcb(name); fp=fopen(grafname,"r"); if(fp==NULL) { printf("\nERROR: %s does not exist on ",grafname); printf("the current drive.\n\n"); return(); } horsize=getw(fp); versize=getw(fp); vrt=(versize+7)/8; printf("\nThe graph in %s has the following dimensions:",grafname); printf("\n\tHorizontal size: %3d",horsize); printf("\n\tVertical size: %3d\n\n",versize); for(j=0; j white"); printf("\n\tSAVE saves a copy of an existing graph on disk"); printf("\n\tGET retrieves a previously SAVEd graph"); printf("\n\tTELL returns the current graph dimensions"); printf("\n\tRESTART erases the current graph"); printf("\n\tQUIT returns; command(); case 'U' : flag = NO; complot(); command(); case 'D' : comdump(); command(); case 'I' : cominvt(); command(); case 'S' : flag = NO; getsave(); command(); case 'G' : flag = YES; getsave(); command(); case 'T' : comtell(); command(); case 'R' : printf("\nRESTART? "); gets(tempbuf); if(toupper(*tempbuf)=='Y') main(); else printf("\nRestart command ignored.\n"); command(); case 'Q' : printf("\nQUIT? ");art(); } printf("Do you want the initial graph to be white or black? "); gets(tempbuf); if(toupper(*tempbuf)=='B') flag = NO; putchar(14); putchar(10); init(horsize,versize); printf("\nType HELP for assistance.\n\n"); } comline() /* User interface to the lineplot() subroutine */ { int x,y,h,v; if(flag) printf("\n\t------- Line Plotting Function -------\n\n"); else printf("\n\t------- Line Erasing Function -------\n\n"); printf( external */ int flag = YES; /* so that the functions in the various */ /* GRAF???? files have access to them */ static char tempbuf[10]; extern int border(), lineplot(), grafprnt(), invert(), circle(); extern int savegraf(), getgraf(); main() { printf("\n\t\tEpson MX-80 Bit-Plot Graphics Utility."); printf("\n\t\t Don Brittain 3 January 1983\n\n"); start(); command(); } command() /* This is the main user interface routine. It */ /* reads the console th control to CP/M"); printf("\n\nTo execute a command, only the first letter "); printf("needs to be typed (in "); printf("\nupper or lower case).\n\n"); command(); default : putchar(7); puts(tempbuf); printf("?\n"); command(); } } start() /* This routine sets up the matrix size using the external */ /* variables horsize and versize. Note that the actual */ /* graphics buffer is always HSIZE * VSIZE / 8 bytes long. */ /* horsize and vertize really only restric gets(tempbuf); if(toupper(*tempbuf)=='Y') exit(); else printf("\nExit command ignored.\n"); command(); case 'H' : printf("\nGRAF recognizes the following commands:\n"); printf("\n\tBORDER draws a border around the graph"); printf("\n\tKILL removes all border points"); printf("\n\tLINE allows the user to draw straight lines"); printf("\n\tERASE is used to erase lines"); printf("\n\tCIRCLE is used to plot circles"); printf("\n\tNO CIRCLE is used to erase circ"Input the coordinates of the first endpoint.\n"); printf("\tHorizontal coord: "); x=atoi(gets(tempbuf)); printf("\tVertical coords: "); y=atoi(gets(tempbuf)); printf("Input the coordinates of the second endpoint.\n"); printf("\tHorizontal coord: "); h=atoi(gets(tempbuf)); printf("\tVertical coord (1000 to ABORT command): "); v=atoi(gets(tempbuf)); if(v==1000) { printf("Function aborted.\n\n"); flag=YES; return(); } lineplot(x,y,h,v); } comen calls the appropriate */ /* graphics function */ { printf("Command: "); gets(tempbuf); switch(toupper(*tempbuf)) { case 'B' : flag = YES; border(); command(); case 'K' : flag = NO; border(); command(); case 'L' : flag = YES; comline(); command(); case 'E' : flag = NO; comline(); command(); case 'C' : flag = YES; comcircle(); command(); case 'N' : flag = NO; comcircle(); command(); case 'P' : flag = YES; complot()t the portion of */ /* the buffer the routines can access (thereby increasing */ /* the speed of some of the routines for small graphs). */ { printf("\nHorizontal size: "); horsize=(atoi(gets(tempbuf))); if(horsize>HSIZE) { putchar(7); printf("The maximum horizontal dimension is %d.", HSIZE); start(); } printf("Vertical size: "); versize=(atoi(gets(tempbuf))); if(versize>(VSIZE-8)) { putchar(7); printf("The maximum vertical dimension is %d.", VSIZE-8); st  plot() /* Interface to pixplot() and unpixplot() */ { if(flag) printf("\n\t------- Point Plotting Function -------\n\n"); else printf("\n\t------- Point Erasing Function -------\n\n"); printf("Enter the coordinate 1000 to QUIT. \n"); plotaux(); } plotaux() { int h,v; printf("\tHorizontal coord: "); h=atoi(gets(tempbuf)); if(h==1000) { flag = YES; return(); } printf("\tVertical coord: "); v=atoi(gets(tempbuf)); if(v==1000) { flag ; } comtell() /* Prints the current graph dimensions -- useful mainly */ /* for debugging the file-handling routines */ { printf("\nThe current graph dimensions are --"); printf("\n\tHorizontal size: %3d",horsize); printf("\n\tVertical size: %3d\n\n",versize); }  subr. */ { int x,y,r; if(flag) printf("\n\t------- Circle Plotting Function -------\n\n"); else printf("\n\t------- Circle Erasing Function -------\n\n"); printf("Input the coordinates for the center of the circle.\n"); printf("\tHorizontal Coord: "); x=atoi(gets(tempbuf)); printf("\tVertical Coord: "); y=atoi(gets(tempbuf)); printf("Input the radius (1000 to ABORT): "); r=atoi(gets(tempbuf)); if(r==1000) { printf("Function aborted.\n\n"reak; case 2 : fill=3; break; case 3 : fill=7; break; case 4 : fill=15; break; case 5 : fill=31; break; case 6 : fill=63; break; case 7 : fill=127; break; case 0 : fill=255; } for(i=0; i80) n=80-versize/5; grafprnt(n); } cominvt() /* Interface to the inversion subr. (black <-> white) */ { int x,y,h,v; printf("\n\t------- Graph Inversion Function -------\n\n /********************************************************/ /* */ /* Utility Routines for MX-80 Bit-Plot Graphics */ /* */ /* Don Brittain 3 January 1983 */ /* */ /********************************************************/ #define HSIZE 320 #define VSIZE 328 #define NO 0 #define YES 1 #define LIST 5 #define ESC 27 short grafbuf[HSIZE][VSIZE/8]; /* MUST be EXTERNAL */ extern int horsize, versize, flag; extern int pixplot(), unpixplot(); init(h,v) /* Clears or fill); flag=YES; return(); } circle(x,y,r); } getsave() /* Interface to getgraf() and savegraf() -- routines */ /* to store and retrieve graphics images */ { if(flag) printf("\n\t------- Graph Retrieval Utility -------\n\n"); else printf("\n\t------- Graph Save Utility -------\n\n"); printf("Enter the name of the graph: "); gets(tempbuf); if(flag) getgraf(tempbuf); else savegraf(horsize,versize,tempbuf); putchar(10); putchar(14); flag=YES setline(8); clmar(n); v=(versize+7)/8; for(j=0; j1Ï¿ÿÿÿÿÿÿþÿÿÿÿÿ¿Ïñþ?C|xÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø‡ÿÿÿÿøøøøàøøøøøøøøøÀ8øøøøÿÿÿþñÏ?ÿÿÿ¿ÿÿÿÿÿÿþýðèØ¸xøøøøø‡øÿÿÿÿÿÿÿÿÿÿ?Ïóýþÿÿÿ¿ßïïÿûýýþÿÿþþýýû÷ïïþýóÏ?ÿÿÿÿÿÿÿÿÿÿø‡ÿÿÿÿÿÿÿÿÿÿÿÿ�ðÿÿÿÿÿ???#????ÿÿÿ?Çùþÿÿÿþÿÿÿÿÿÿ¿ß÷ûýýþþÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþù÷ÿþùÇ?ÿÿÿÿÿ } else { bdos(LIST,n-256); bdos(LIST,1); } } crlf(n) /* printer carriage-return-linefeed */ int n; { int i; for(i=0; i>>>>>>>>¾~.6:<>><:6.~¾>>>>>>>>>>¾�áÑÉÅ?ªªªªªªªªªëëëëëëëkkkk]~?????>>>> >>>>====]k~~~¾¾¾¾¾¾ÝÝ]]]]]]]]]]œœªªªªªªªªªªª***************IIIIIIIIIIIIIIIIIIIIIIIIIIˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿ@@@@@BBBBBBBBBBBBBDDDDDDDD„„„„ˆˆˆˆˆˆˆˆˆˆˆˆ‰‘‘‘‘‘‘‘’’"""$$$$$$$$((HHHHHHPPPPPP��        ÀÀÀ@@@@@€€€€€€€€€€€€€€€€@@@@@@@@     ��������ˆHHHHHHHDDDDD$$$$""""""""!ˆˆˆˆˆˆˆˆˆ„„„„„„„„„„„„€€€€€ÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÀÿàà@@@@@@ @@@@@@@@@ ÿàÿÿ@@@@@ÿ@@@@@@@pNA@@@€?À@@@@@@@@@@@@À?ÿ@@@@@@@@@@@@@€ÿ@@@@@@@@@@@@@@ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ @@@@@@@@€€€€€€€€€€€€€€€€€@@@@@@@@ ÿÿÿÿÿÿÿÿ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððð,,        ÿ€@  @€€@  @€€@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€ÿÿ @€ÿÿ€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ€@ @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @ �``��``��``�ÿÿ @€€@  @€€@  @€€@  @€€@  @€ÿÿ€A""A€€A""A€€@! !@€€@! !@€ÿÿ @€€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€€@ ÿÿ��``�� @�ˆP PˆˆPÿÿ€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ !   @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @ÿ€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@   @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@  @€€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@ @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€ÿÿ€@  @€€@  @€€@  @€€@  @€€@ ÿû!@€€@! !@€€@! !@€€@! !@€€@  ÿ€€@ ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ !A��A!  !A��A!  !A� @€ÿÿ @€€@  @€€@  @€€@  @€€@ ÿÿ @€€@  @€€@ €@  @€€@  @€ÿÿˆP PˆˆP PˆˆP PˆˆP Pˆÿÿ @€"  �A!  !A��A! ÿøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ????????ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ????????ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþÿÿððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÿÿÿÿÿÿÿÿÿÿððððð#  ,Èÿ€€€€€�‚Œ� À€€€€€€€ƒ„ˆ°À€€€€€€€�‚Œ� À€€€€€€€�‚„ˆ� À€€€€€€€�‚„ˆ� ÀÀ€€€€€€€�‚„„ˆ�  À€€€€€€€€�‚‚„ˆˆ��  ÀÀ€€€€€€€€€��‚‚‚„„„ˆˆˆ����     ÀÀÀÀÀÀ€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ßßßßßïïïï÷÷÷ûûûýýýþþÿÿÿÿÿÿÿÿÿ¿¿ßßïï÷÷ûýýþÿÿÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿÿ¿¿ßï÷ûýþÿÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿÿ¿Ï÷ûüÿÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿÿÿ `€0@€  À`€ @€ @@€ @€€ @@@€€ ßßßßßßßßßßßïïïïïï÷÷÷÷÷ûûûýýýþþþÿÿÿÿÿÿÿ¿¿¿ßßïï÷ûûýýþÿÿÿÿÿþþþþÿÿÿÿÿÿ¿¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿŸïñþÿÿÿÿÿÿÿ?Ïñþÿÿÿÿÿÿÿ?Çøÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ‡øÿÿÿÿÿÿÿÿáþÿÿÿÿÿÿÿ?Ãüÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿàÿÿÿÿü|€>Ààðx€àp€`€`€ À0@€ @@€€ÿÿÿÿÿÿÿÿÿÿ¿¿ßßï÷ûûýþÿÿÿÿÿÿ¿Ï÷ûüÿÿÿÿÿÿÿ?ßçùþÿÿÿÿÿÿŸçøÿÿÿÿÿÿÿŸãüÿÿÿÿÿÿÿ�ðÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ‡øÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ?Áþÿÿÿÿÿÿÿƒüÿÿÿÿÿÿÿÿüÿÿüþþ€?Àà0À`€0@€0@€  @€ @€ @€€ @@@@@€€€€€€€€€€¿¿¿¿¿ßßßïïï÷÷÷ûûýýþþÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿŸçùþÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ?Ïñþÿÿÿÿÿÿÿ?Çùþÿÿÿÿÿÿÿÿÿ8Àp€`€`€`€0À À0@€ @€ @€€ ßßßßßßßßïïïïï÷÷÷ûûýýýþþÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿ¿Ï÷ûüÿÿÿÿÿÿÿ?ßçûüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿøüþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ�þÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ?ÇùþÿÿÿÿÿÿÿçùþÿÿÿÿÿÿŸçûýþÿÿÿÿÿÿŸïï÷ûýýþþþÿÿÿÿÿÿ`€`€à8Ààðøü~€€?À?Ààÿÿàÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ?Áþÿÿÿÿÿÿÿƒüÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ‡øÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ�óüÿÿÿÿÿÿÿ?ÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿¿ßï÷ûýþÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿŸï÷ûüÿÿÿÿÿÿÿ?ßïóýþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿŸïóüÿÿÿÿ€ 0@€0À0@€  @€ @€ @@€ @€€ @@€€€÷÷÷÷÷÷÷÷÷÷ûûûûûûýýýýþþþþÿÿÿÿÿÿÿ¿¿ßßïï÷÷ûûýýþÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿¿ßï÷ûýþÿÿÿÿÿÿ¿ßï÷ùþÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿ¿Ï÷ûüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿÿÿ¿ÏóýþÿÿÿÿÿÿŸÿÿ`€ 0À À À0@€ @€ @€ @€€ ðx€à0À 0À  À @@@€€€€€€¿¿¿ßßï÷ûûüÿÿÿÿÿÿÿ?ßïóüÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ?Ïñþÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ‡øÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€?À?Ààðx€<À0@€ ßßßïï÷ûýþÿÿÿÿÿÿ¿Ïñþÿÿÿÿÿÿÿ?Ãüÿÿÿÿÿÿÿ‡øÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿ?Àÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸçùþÿÿÿÿÿÿŸçøÿÿÿÿÿÿÿŸãüÿÿÿÿÿÿÿ�ñþÿÿÿÿÿÿÿ?Çøÿÿÿÿÿÿÿÿà8Àà8À0À p€ 0À `€  À @€ @€€÷÷÷÷÷÷÷ûûûûýýýþþÿÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßï÷ûüÿÿÿÿÿÿÿ?ßïóýþÿÿÿÿÿÿŸïóüÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ�óüÿÿÿÿÿÿÿ?Ïñþÿÿÿÿÿÿÿ?Çøÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ?Çøÿÿÿÿÿÿÿÿáþÿÿÿÿÿàð<Ààx€à8À0À`€0@€  @€ @@€€ýýýýýýÏóýþÿÿÿÿÿÿŸï÷ùþÿÿÿÿÿÿ¿ßïï÷ûýýþþÿÿÿÿÿÿÿ€€€€€ @€`€ 0À p€àx€àðø|€>Àààÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿáþÿÿÿÿÿÿÿ?Ãüÿÿÿÿÿÿÿ�ðÿÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ�ñþÿÿÿÿÿÿÿ?Çùþÿÿÿÿÿÿÿ?Çûüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿÿÿ¿ßçûýþÿÿÿÿÿÿ¿ßïï÷ûýýþþÿÿÿÿÿÿ¿¿¿¿ßßßßßßß @@@@€€ @€ @€0À8À8Àp€àp€<Ààø|€ÿÿÿÿ?Ãüÿÿÿÿÿÿÿ�ñ@@€€€ýýýýýýýýýýþþþþþÿÿÿÿÿÿÿÿÿ¿¿ßßßïï÷÷ûûýýþÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßßï÷ûýþÿÿÿÿÿÿ¿ßçûýþÿÿÿÿÿÿ¿Ï÷ûüÿÿÿÿÿÿÿ?ßçûüÿÿÿÿÿÿÿ?ßçùþÿÿÿÿÿÿÿ?ÏóüÿÿÿÿÿÿÿŸçùþÿÿÿÿÿÿ p€ 0À 0À`€ `€  À À @€ @€€ @@@€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ßßßïï÷÷ûûûýþþÿÿÿÿÿÿ¿ßßï÷ûûýþÿÿÿÿÿÿ¿ßïï÷ùþÿÿÿÿÿÿÿ?ßï÷ûüÿÿÿÿÿÿÿ?ßïóýþÿÿÿÿÿÿŸïóýþÿÿÿÿÿÿŸçûüÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ�óüÿÿÿ8À0À ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððððððððððððp�ððððððððp�ððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿáþÿÿÿÿÿÿÿ?Çùþÿÿÿÿÿÿÿ?ßï÷ûûýýýý À8Ààð$  þÿÿÿÿÿÿÿãüÿÿÿÿÿÿÿ�ñþÿÿÿÿÿÿÿ?ÇùþÿÿÿÿÿÿŸçøÿÿÿÿÿÿÿŸçùþÿÿÿÿÿÿŸçûüÿÿÿÿÿÿÿ?ßçûýþÿÿÿÿÿÿŸï÷ûýþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿÿ¿¿ßßßïïïï÷÷÷÷÷÷÷÷ @@€€ @€`€ À`€`€`€8Àp€àp€<Àÿÿÿÿÿÿ�ñþÿÿÿÿÿÿÿ?ÇøÿÿÿÿÿÿÿŸãüÿÿÿÿÿÿÿ�óüÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿÿÿŸïóýþÿÿÿÿÿÿŸï÷ùþÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿¿ßßßïï÷÷÷ûûûûûýýýýýýýýý @@€€ @€ @€`€ `ÿÿÿÿ¿Ï÷ûýþÿÿÿÿÿÿ¿ßï÷ûýþþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿ßßïï÷÷ûûýýþþÿÿÿÿÿÿÿ¿¿¿¿ßßßßïïïïïï÷÷÷÷÷÷÷÷÷÷÷ @@@@€€€ @€€ @€ @€0@€ @€`€0@€ ÀÿÿŸçûüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿÿÿ¿ßçûýþÿÿÿÿÿÿŸï÷ûüÿÿÿÿÿÿÿ?ßï÷ûýþÿÿÿÿÿÿ¿ßï÷ûýþþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿ßßïï÷ûûýýþþþÿÿÿÿÿÿ¿¿¿ßßßïïï÷÷÷÷÷ûûûûûûýýýýýýýýýýýý @@@€€€ @€€ @€ @€ À`€ðððÿÿü|€<À`€ 0À °@  àÀ    @    Àà  @° À0 €`À<€|þÿÿÿàp€à 0À a€€@#$€C$d‚ƒD((F�‚d$C€�B"  @€€` À0 à€xàÿÿÿÿøà8À 0À`€ˆp`� !@€A""A€A""A€A!  ÀÀ0 �p0L‚À À0 àð€|À?ÿÿ?À>À8À0À€0À 0À p€`€8Àp€ÿÿÿÿÿÿÿÿÿ?Ïñþÿÿÿÿÿÿÿ?Çùþÿÿÿÿÿÿÿçùþÿÿÿÿÿÿÿ?Ïóüÿÿÿÿÿÿÿ?Ï÷ùþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿ¿ßçûýþÿÿÿÿÿÿ¿ßï÷ûýþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿¿ßßïï÷÷÷ûûûýýýþþþþþÿÿÿÿÿÿÿÿÿÿ @@€€ @€ @€ @€0@€0À 0Àà8À0ÀÿÿŸçøÿÿÿÿÿÿÿŸçùþÿÿÿÿÿÿŸçùþÿÿÿÿÿÿŸïóüÿÿÿÿÿÿÿ?ßçûüÿÿÿÿÿÿÿ?ßçûýþÿÿÿÿÿÿŸï÷ûýþÿÿÿÿÿÿ¿Ï÷ûûýþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿¿ßïïï÷÷ûûýýýþþþÿÿÿÿÿÿÿÿÿÿ––? ? ? ? ? ??????????????????????????????????????????????????? ? ? ? ? ?ÿÿÿÿÿÿÿÿ¿ßïðÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ßïðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @€0À`€ÿÿÿÿÿÿÿ?ßçûýÿÿÿÿÿÿÿŸï÷ùÿÿÿÿÿÿÿ¿ßçûýÿÿÿÿÿÿÿ¿ßï÷ûýÿÿÿÿÿÿÿ¿ßï÷ûýÿÿÿÿÿÿÿÿ¿ßïï÷ûýýÿÿÿÿÿÿÿ¿ßßï÷÷ûûýýÿÿÿÿÿÿÿÿÿ¿¿ßßßïïï÷÷÷ûûûûýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !!!AA�� !!A�� !A� !A� !A�!A� a�!Áÿ 0À À  À@A&(Ä À!"A�AB$$B�A! ‘``�ƒB$ !@À À0À0 À8ààøÿÿððð p€ 0À0À0@�0@‘ 4Bƒ� @¡"$B��‚D((D‚�A"’a`�ˆ‚A"  ‘`€` €@0 À0 À8€xüÿÿÿü|€<À`€ 0À 0@� `�  A‚  A‚ "Aƒ AA¢$$Dƒ„HH00(H„ƒƒB$¢A`�ˆ„C! Â!‚A0Á €`À0À0ðàÿÿÿÿàp€à 0À `ƒ Ãc„!B„!B„!!C„� AÂ$$(DEƒˆˆP PPˆƒED($¤ÂA€€€€€€€€€ @@€€ @€0@€`€ À À `€`€`€`€ÿÿÿÿÿ?ÏóüÿÿÿÿÿÿÿŸçùþÿÿÿÿÿÿ¿ÏóýþÿÿÿÿÿÿŸïóýþÿÿÿÿÿÿŸï÷ùþÿÿÿÿÿÿ¿ßïóýþÿÿÿÿÿÿ¿ßï÷ûýýþÿÿÿÿÿÿ¿ßïï÷ûýýþÿÿÿÿÿÿ¿ßßïï÷÷ûûýýýþþÿÿÿÿÿÿÿÿ¿¿¿¿¿ßßßßßßßßßßß @@@@@€€€€ @€€ @€ @€  @€`€ `€ 0@€`€ 0Àÿÿÿÿÿÿÿÿÿ?ßçùþÿÿÿÿÿÿ¿Ï÷ùþÿÿÿÿÿÿŸï÷ùþÿÿÿÿÿÿ¿ßçûýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßßßßßo÷øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@@ÿÿÿ÷÷÷÷÷÷÷ïß¿ÿÿÿ÷÷÷÷÷÷÷÷ÿÿÿ÷÷÷÷÷÷÷÷ïß¿ÿÿççÿÿÿÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@@ÿ@@@@@@@@ÿÿðððððøôòñððñöøðøôòñððóôøðøôòñðñòôøðøôóððñòôøðøöñððñòôøðð%   �„B!„B!„b„B! ‚aÁ �`€p àøàÿÿÿøà8À 0Ãa†1B„"Dˆ"Dˆ"Dˆ"Dˆ!B„ ¡BÂÄ$(0(I…† ‘�````�� †…E(($¤ÂBa �„DB!„D"ˆD"ˆD2 Ä"Æ!„C0 ‚a�p À8àüÿÿ?À>À8Á0à 1Æ"Ì&É$É$É$I‰$H‘"Dˆ"BDˆ!BBÄÄ((000II‰Š ¡ @@@   ††II)((¤¤BB!ˆD""‰HD"’ID$’I$’I$šE2‰d‰fŒc†aðøÿÿÿñó s�6Ë5Ê5JµJµJ•%J•)R”%I’$$I‰’"$DHˆ!"BD„„01IIJŠŠ !!!!ÁÀÀÀÀÀ!!! ††JJI))ˆ„DB""ˆHD$’II$’RI¥R*•RªUªU.Û%še›fæãÃ?€ÿÿÿ¿ßoüÿüøÿøðÿðàÿà @€ÿ€@  @@@@@@€€€€€€€€€€@@@@@@  @€ÿ€@  @@@@@€€€€€€ÿÿÿ¿ÿ_ÿ·k×®[¶[­VªUU©*R”¤%II’’"$DDHˆˆ!""BBB„„„„ """""AAAAA�����AAAAA!!!!! „„„DDBB"""‘‰‰HD$$$’’JI)¥TRªªU­j¶m·Ýo÷¿_ÿ¿oÿß?ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿßï·Û[k««UUUU•¥¥%%%IIIII‰‰‰‰‰!!!!!!!!!!AAAAAAAAAA��������������������AAAAAAAAAA!!!!!!!!!!‘‘‘‘‘IIIII)©©©©UUÕµµmݽýýÿÿÿÿÿÿÿÿÿÿðÿðàÿà?ÀÿÀ??ÀÿÀ?€ÿ€þÿþàÿàþÿþÿÈ@~ÿ~üÿüøÿø @@@@@€@ ÿ @€€€€€€@@@@@@  !!!!!!AAAAAA������A! ÿ !A������AAAAAA!!!!!! €€€€€€@@@@@ &  ÿÿðÿðÿÿÿüÿüÿÿÿàÿàÿÿÿ€ÿ€üÿü --> FILE: CRC .COM CRC = B2 07 --> FILE: GRAF .COM CRC = D0 A4 --> FILE: GRAFPLOT.C CRC = 31 6B --> FILE: GRAFLINE.C CRC = DA 9D --> FILE: GRAFINVT.C CRC = 6D F2 --> FILE: GRAFCIRC.C CRC = 6F CA --> FILE: GRAFFILE.C CRC = 42 A1 --> FILE: DEMO .COM CRC = 52 3B --> FILE: GRAF .DOC CRC = E1 3C --> FILE: DEMO .C CRC = 54 DB --> FILE: GRAF .C CRC = 54 EC --> FILE: GRAFUTIL.C CRC = 3B CB --> FILE: TITLE .GRF CRC = 8C C1 --> FILE: SMALLÿÿÿðÿðÿÿÿþÿþÿÿÿÿÿÿÀ?ÿ?À .GRF CRC = 48 23 --> FILE: MEDIUM .GRF CRC = 57 5F --> FILE: HUGH .GRF CRC = 37 69 --> FILE: BAR1 .GRF CRC = 8B 88 --> FILE: BAR2 .GRF CRC = F6 6C --> FILE: CIRCLE .GRF CRC = 65 65 --> FILE: LINE .GRF CRC = 61 F0 --> FILE: STAR .GRF CRC = 3A 75 --> FILE: D .COM CRC = 66 48 --> FILE: 5-DISK .DOC CRC = DE F5€ÿ€øÿøàÿàÿ'  Ãÿ Hit Space: ÍKÃK : k Used: /k Not used: k ë*% ÍÔ DMÃf : remain on 1 !9" !Ñ ùÍJÍú> Í# µÊ->! Í. Ò*ͪÍe> Í# µÊ<Í×Í * ùÉv ÍK É ÍK  ÍK É!B r+s+p+qA ? Í Úp*A É*? É:]þ$ÂŽ Ål]ÍQ !]6 !E 6!C 6 :C Í Ú*C &l ~2D þU¼:E 2 :D þSÂÊ:E 2:D þFÂØ:E 2:D þVÂæ:E 2:D þPÂô:E 2 :D ÖNÆÿŸ2E ! É_{•ozœgÉO{‘oz˜gÉi`N#F‘o˜gÉo&•oœgÉ_{–_z#žWëÉà þÈÅOÍK ÁÃ= YÃáã -ÂS Éáã{-Â_ É!¨ s+p+q*¦ å« ͼ 2ª <2© :¨ !© ¾Ú—  ÍK !© 4Ã� !© 6:ª =!© ¾Ú» *© &« NÍK !© 4œ Éáã>õ3ÊÕ Íá Æ0õ3}´ÂÄ Z;ñÂ× {ÉÅ ¯)¹Úî ‘#Âæ ÁÉÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ^#Vë"; *; ˆ ͪ  å*; Áq#pÃ�Ãn*„ " É!‹ p+q*Š )ë*= ^#Vë"; !Œ 6> !Œ ¾Úi*Œ &ë*; >¦OÍK :Œ <2Œ ÂE:/ÒÖ *; ^#V*% ÍÔ DMÍf kÍK :ÒÖ *; NÍf ÍE*; ~þ€Ú»WÍK þÍE *; ~þ€ÚÓSÍK ÃÖÍEÉ Í= !— 6:!— ¾Ú':/Ò :Ò –Í= !:— ¾Ò‰Í= :— <2— Ââ* "• !"‘ >!• Í. Ò *• ë*&͵ ë"( *• ë*&͵ >Í µÊj*( #"( *DM*( ëÍV"( !"� ( � Í ÒúÍK!"� }2— :— <2— O:¹Úð*� ë*� å*‘ Á "“  “ Í Úâ>!— ¾ÒÓÀÍ= *“ DMÍ**• +"• *( ë*� "� Ø*� #"� Ã*&ëåC 4Ø:Ò!4Ã:Ò!5É( Í µÖŸ! ¦ÒI3Í= ÿÍ: [Í= ÉÍt:\þÊa:\=_Í: :]þ Ât Å?]Í\ : Òƒ! 6?ÃŽÿ Í: 2  Å ]ÍQ  Å?\Í\ ÅÍ: DM, ÍQ !Ñ "= *3 ##)ë*= "; */ &#Íì "! *3 #"#  !! Íò "% >ÿ!1 Í. Ÿ2' É\Í: 2 : þÿÊ©: 懇‡‡‡Æ€o&"* ~þåÊ›*# +"# ** DMÍY Ò›** DMÍ  å*; Áq#p* " . å** #DM*; ëá -Âe**  å*; Ñw* #" )ë*= å*; ëás#r*; "; Í: 2 ÃÉ!S 6!"V * "n >!S ¾Òd*S &T ) ^#Vë"K O!l ^#Vë"M :S =2S M K Í Òa*K "G * KAYPRO USER'S DISK #5 MX-80 GRAPHICS SOFTWARE This is a graphics display packaage for use with the MX-80 with GRAFTRAX. This had really been a major project for Don. It was written to compile under AZTEC C II. Don sent me some samples of the output and they are very very stunning. You'll have to see for yourself! Don's documentation is in GRAF.DOC. To verify the files on this disk type CRC. Contributed By: Don B*( ÍÔ ë*‘ "‘ Í Ã3É*1 #"ž "  "¢ *5 "œ >œ Í# µÊR :œ ÒB *ž +"ž !œ Íò ë+s#rÃ( !¤ 6Í: "š *š ~2¥ *¢ #"˜ *˜ +"˜ >Í µÊ¶ :¥ 2¥ Ò’ *  +"  :¤ <2¤ O>¹Ò³ !¤ 6*š #"š *š ~2¥ Ãp ̓Í: ÆAOÍK �Í= *ž Ͱ�Í= * Í·›Í= * Ͱ�Í= *# Í·›Í= *  Ͱ¬Í= ÉÉ. æg æ”ÂS -ÂA É>ÿØ>É!  ~þ?Êl W æº>À#Â^ :·À /æÉ!:' ·Â—  ·Ê‘ #‹ É W ²Ê¢ #™ Éi`N#F�oˆgÉDM!>õ)ë—)ë�‘o|˜gÒÎ ñ=¼ ÉDM!>)ë)ëÒã =ÂÛ É^#Vë) Âì É^#Vë|·g}o ÂöåM "I ë*K Íö )ë*= ^#Vë"O I G Í ÚÇ*G )ë*= N#F*O ëÍ? þÿÂJ*G #"G Ã(*I )ë*= ^#V*O DMÍ? þÿÂm*I +"I ÃJI G Í ÚÄ*G )ë*= ^#Vë"Q *I )ë*= å*G )ë*= ãN#Fáq#p*I )ë*= å*Q ëás#r*G #"G *I +"I ÃK I Í G M åÍ ÑÍ Ò!M G Í Ò:S <2S O!T å*G ëás#r*S &l ) å*M ëás#r*I "M Ã^I K Í ÒX:S <2S O!T å*K ëás#r*S &l ) å*I ëás#r*G "K ÃíûÉ!"„ "†  † Í Ò#*† #"† )ë*= å*„ #"„ )ë*= ãN#Fáq#p † Í Ÿõ*„ )ë*= å*† ) ë*= ^#VáN#FÍ? ÖÖŸÁH¡Ò *† #"† )ë*= ^#Vë";  *; ^#Vë"ˆ *„ )ë*= rittain, 4200 Spruce Street #200, Philadelphia, PA 19104