IMD 1.18: 22/01/1996 5:15:44 micro cornucopia kaypro user group disk 6 word processing utilities   åååååååååå  6-DISK DOCCHOP C CHOP COM CP C CP COMCRC COMCRCKLISTCRC D COMDUMP C DUMP COM' !"#EDIT COM€$%&'()*+,-./0123EDIT COML456789:;<=EDIT DOCP>?@ABCDEFGEDIT HLPHENTAB C IJENTAB COMKLMåå KAYPRO USER DISK #6 ----------------------------------------------------------------------- Contributed by Gordon Banks 1360 Scaife Hall, U of Pittsburgh Pittsburgh,PA 15261 ROFF: A UNIX-like text formatter that allows pretty-printing of files created with a text editor. Documentation in ROFF.DOC. ----------------------------------------------------------------------- Contributed by Rex Buddenburg 1910 Ash EPSMODE4ASM6NOPQRSTEPSMODE4COM UVFONT DATWMS C XMS COMYZ[\README TXT]ROFF COM€^_`abcdefghijklmROFF COMnoROFF DOCoutputfile MS: This program allows you to specify how many linefeeds you want between lines in a file (multiple space). RTW: This program remvoves trailing whitespace from a text file. USAGE: RTW ' a la UNIX. The only restriction is that the device or filename following one of these angle brackets must not have a space prece#include /* copyright (c) 1982 Peter Baker */ /* chop - chop ( truncate ) a file after n bytes */ static char usage[] = "Usage: chop n infile outfile"; main( argc, argv ) int argc; char **argv; { FILE fdin, fdout, byte; int n, i; if( argc != 4 ) fatal( usage ); else if( ( fdin = fopen( argv[2], "rb" ) ) == NULL ) fatal( "Chop cannot open input file" ); else if( ( fdout = fopen( argv[3], "wb" ) ) == NULL ) fatal( "Chop cannot open output file" ); else { n putfile >outputfile TRUNC: This program truncates each line in a text file at a specified column. USAGE: TRUNC -n outputfile (where n is the column #) WRAP: This program pretty prints a file. See WRAP.DOC. ----------------------------------------------------------------------- To verify the files on this disk type CRC. ----------------------------------------------------------------------- ----------------------------------------------------------------------- õ ë*®Íï ÷ÿÍ<Í Ê(Ã%*®#"®+ÃÆÃ!"²!9Íõ ë*®Íï ÕÿÍ<Â]!9Íõ ë*®Íï ÓÿÍ<Í Ê�*®#"®+ë!9Íõ Íï ÕÿÍ<ʇ!Ê!ÿÿ"²!"°!9Íõ ë*®Íï å!0ÑÍXÊÄ!9Íõ ë*®Íï å!9ÑÍYÍ ÊýÃØ*®#"®+Ó*° ÍÑå! 9Íõ ë*®Íï ÑÐÿ"°ÃÍ*²ë*°ÍÑëá"®á"°á"²ëÉ!9"É*++"Íõ åͳÁ*å!9ÑÍŽÊ`*++"Íõ åÍ‹ÁÃ>É*++"Íõ }2:Íð å*++"Íõ åÍÅÁÁÃ>É*++"Íõ "*å*++"Íõ åÍÞÁÁÃ>É!å!9Íõ åÍÅÁÁÉ!9Íï }2!9Íõ "ÍúÉ!9Íõ "!þÿå!9Íõ åÍÅÁÁÉ*Íï ding. i.e. wrap f1.txt >LST: is in good form wrap f1.txt > LST: will be misunderstood Some of the utilities will give you a usage prompt when you enter them. As for the others, usage is described below. CHOP: This program will chop off a file after n bytes. CP: This program will copy from one file or device to another. DUMP: This program will dump a binary file (or whatever) in HEX so you can search through the file for binary patterns= atoi( argv[1] ); for( i = 0 ; i < n ; i++ ) { byte = getc( fdin ); if( byte == EOF ) break; else putc( byte , fdout ); } fclose( fdout ); fclose( fdin ); } } fatal( msg ) char *msg; { printf( "\n%s\n", msg ); }   Í Ê*Íï ÛÿÍ Í Ê,*#"+Íï åÍ-ÁÃúÉ:Íð Ãz!9Íï åÍý ÁÊ*#"+å!9Íï Ñ}*6Ê!9Íï å:Íð åͬ ÁÁÊÊÍ56EþÿÃ`É*#"+Íï Í<Ê�É!"*Íï å!0ÑÍXÊÂ*Íï å!9ÑÍYÍ ÊïÃÎã* ÍÑå*#"+Íï ÑÐÿ"ÃË! }2! "$" !""*#"+Íï ë!"$!9Íõ åÍ$ÁÃÈ!0}2!" !9Íõ åÍ$ÁÃÈ!0}2!" !9Íõ åÍ$ÁÃÈ!9Íõ åÍ-ÁÃÈ!9Íõ Íï |µÊ�!9åÍõ #Íú +Íï åÍ-Á*+"Ão! åÍÁÃÈÃÈÍ5du(oDx`cosÍúÉ!9Íõ å! ÑÍcÊì!9Íõ 0Ãû!9Íõ AöÿåÍ-ÁMD!x<Âz�>ÚjS\>)ë)ëÒ#å áÒ& =ÂëñðëÍÉëÃÉëáN#F#x±ÊN~#»~#Â7ºÂ7Åáé "¦> w+ ÂX¯w w##w wàÿ ë#~+þ:ƒ~##ͨÖ@~#·Èþ.Ê”ͨÃë*¦++·Èͨw#ÚxææþaøÖ ÉO!ƒ ~_#V²Àå!$åÍ% ëáár+sbk#|µÉ "¦> w+ ÂX¯w w##w wàÿ ë#~+þ:ƒ~##ͨa ~þÿÊ # à ÁÑÕÅë~#Fëðÿ6,pùÿw62S ‘ ëÍÂå!9Íõ ÁÅy=åͰáÊ ÕëÍO>þwÂd ÑÕÍÑÍÑ<Ê !` s 6#6Íÿ ~+¶Âœ ÕåÅÍ% Áëás#r{²ÑÊ ë¯ÉÁÑÕÅ{þ Ú½ !  ͹ #Ø^Í!É!B ¯w#w!` ~<Ê 6ÿÍ !u ~þrÊ G!g ÕÍõ }·Ê ë*^ xþuÊ >w#Âú %åÅÍ% ÁÁÑ{=ÕͰÍ<áÀ!7É!4 N#FÅá"^ É͈ {þ Ò² ¯¹+ÂZ åÕ*^ å!åÍR ÁÁÑÕë‘ s{²ÑáÊù ÕåÍõ #Íú +ë*^ F!| Ñ>b¾Ê„ xþ Ê- þÊù ·Ê- h&ÉáÁÑÕÅå{þ ÐÍ !‘ ~!g N#F¹À¯wG+wO#É͈ {þ Ú¾ ÁÑáåÕÅà +å!9~þ Âè å!| ~þbÊå !â 5Âã > áÃè 6á> *^ wãåå`i#Íú ᯾á ÁÑÕ; fclose( infile ); fclose( outfile ); } error( msg ) char *msg; { printf( msg ); exit( -1 ); } nally copy É*+"å!ÑÍXÊ!:Íð åÍ-ÁÃÉ+*"å!9Íõ ""*+"#*$Í<Êh*".|æ€g|µÊh*+"#*"ÍÉ""!""*"å* ÑÍ�Ê�*"å!ÑÍ€Í Ê¥Í*"|µÊš!-åÍ-Á*"åÍÌÁÃ* øÿÍ<Ê¿*"ë!Í«Ãã* öÿÍ<ÊÙ*"ë! ÍíÃã*"ë!Í«åÍ$Á* öÿÍ<Ê*"ë! ÍíëÃ* +å*"ÍåÍÌÁá""É*+%": %"8 %"6 Üÿ "‡ "… "ƒ yÿ 6"X +6„+ùÕ!€^6*F+N+ÅòSÊb3!å!9~#·Ê¯þ ÊjOþ"ʃþ'ʃ +Ñ}|Õå+#~·Êš¹Â�6#ã~#þ<ÊÏþ>Êá!4áÃjá6ÿ#6ÿ*å!åÍ**# |µÊÌåÍŸ Ãå!ÝåÍÏ "ßÃìrå!! åÍÏ "# ÁÁÚùáÑÕÃj  Í#include /* copyright (c) 1982 Peter Baker */ /* cp - copy from one file to another */ /* optionally copy a binary file ( -b option ) */ char use[] = "\nUsage: cp [-b] fromfile tofile\n"; main( argc, argv ) char *argv[]; int argc; { FILE infile, outfile; int binfile; char c; if( argc < 3 ) error( use ); /* error exits! */ if( *argv[1] == '-' ) { if( argc != 4 ) error( use ); /* error exits! */ if( *(argv[1]+1) == 'B' ) /* 'b' for unix systems!!! */ÅÕ%,å!åÍ% ÁÁÁ|µ!ÿÿÈø!9n&:⠷ʬ ɯ2/ >ÃY 7*å!9Íõ ë!P :/ w!B ÁÅx†wÒP #4áÉ>2/ >2. :Z ·Äx ÍØ Åx±ÊÅ ÕåÅÕëÍÑ:. OÍÁ·Â’ !€ÿ DMá€ÑÃg áÑ:. þÂÅ á«  Í!ÿÿÃË Write error - Disk full $Ñ`iÍÂå€ÍáÃ0 !9~=+åͰáÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!Â:»Â:,ɯÉ|µÊ&!¯ÉÁÑÅ|º}!À»À-ÉëÃcë|ºÂc}»Ê#z¼Êxõ¬!òtñÐ-ÉñØ-É{½!Ø-Éëz¼Âz{½ÂzÃ#ëz¼Âz{½Âz!Éëø||g}oÞëø¯|g}oìëø)ùÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂàS\)ë)ëÒè =ÂàɯõÃýz¬õ¬ëüÉë|·ôÉÍCan't open > or < file.$ÃÀwÑÁÅÕ*G ÚC ë! þ9íRÚC *G ë"G ëÉ!ÿÿÉÒ*ß}´Ê° åÍ- ÁÉñ=:W <*X ¾ØÈë ͯ2W  Í– Ã[  Í·ÈÍþÊþÊ þ • > _*X ~+¾Ð#4N s> »ÌÉÍ > !œ ͹ ØÅ:Z ¹ÂÏ Í[ 2W _~ÃÒ ÍÁþ Âè Âã  Í> Ãð Âñ þÊ­ þÊù Ãð !ÿÿÉÁÑÕÅ*# }´Ê Õåͬ ÁÁÉë> å!  ͹ ÑØÕë}þ Â.  ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö ÚË þòË _~O·À7Ãù ÁáÑÕåÅ!¨  Õåö ¾Âñ #ÂÞ Ñái&ÉáÑ ~·ÂÚ ! binfile = true; else error( use ); /* error exits! */ } else binfile = false; if( binfile ) infile = fopen( argv[2], "rb" ); else infile = fopen( argv[1], "r" ); if( infile == 0 ) error( "\nCannot open input file\n" ); if( binfile ) outfile = fopen( argv[3], "wb" ); else outfile = fopen( argv[2], "w" ); if( outfile == 0 ) { fclose( infile ); error( "\nCannot open output file\n" ); } while( ( c = getc( infile ) ) != EOF ) putc( c, outfile )  Ã# Usage: cp [-b] fromfile tofile ;*(å*&å*$å! 9Íÿ å!ÑÍm ÊQ!åͪÁ! 9Íÿ ##Íÿ Íù ÓÿÍF ʱ! 9Íÿ üÿÍ* ʃ!åͪÁ! 9Íÿ ##Íÿ #Íù ¾ÿÍF ʦ!"(î!åͪÁ÷!"(*(|µÊÝ! 9Íÿ Íÿ å!ãåÍÙ ÁÁ"$Ãö! 9Íÿ ##Íÿ å!æåÍÙ ÁÁ"$*$ÍF Ê!èåͪÁ*(|µÊ-! 9Íÿ Íÿ å!åÍÙ ÁÁ"&ÃH! 9Íÿ Íÿ å!åÍÙ ÁÁ"&*&ÍF Êa*$åÍ© Á!åͪÁ!9å*$åÍ7 ÁÑ}#Í* ÊŒ!9Íù å*&åͶ ÁÁÃa*$åÍ© Á*&åÍ© Áá"$á"&á"(3ÉÍ0!9Íÿ åÍ8Á!ÿÿåÍÊÁÉ Usage: cp [-b] fromfile tofile rbr Cannot open input file  >w# %åÅÍ/ ÁÁÑ{=ÕͺÍ<áÀ!7É!> N#FÅá"h ÉÍ’ {þ Ò¼¯¹+Âd åÕ*h å!åÍ\ ÁÁÑÕë› s{²ÑáÊ ÕåÍÿ #Í +ë*h F!† Ñ>b¾ÊŽ xþ Ê7 þÊ ·Ê7 h&ÉáÁÑÕÅå{þ ÐÍ) !› ~!q N#F¹À¯wG+wO#ÉÍ’ {þ ÚÈ ÁÑáåÕÅà +å!9~þ Âò å!† ~þbÊï !ì 5Âí > áÃò 6á> *h wãåå`i#Í ᯾á ÁÑÕÅÕ%,å!åÍ/ ÁÁÁ|µ!ÿÿÈø!9n&:ì ·Ê¶ ɯ29 >Ãc ·Êå!9Íÿ ë!Z :9 w!L ÁÅx†wÒZ #4áÉ>29 >28 :d·Ä‚Íâ Åx±ÊÏ ÕåÅÕëÍÑ:8 OÍÁ·Âœ !€ÿ DMá€ÑÃq áÑ:8 þÂÏ áµ  Í!ÿÿÃÕ Write error - Disk full $Ñ`iÍÌ å€ÍáÃ: !9~=+åͺáÕV+^+F+NáëÉ~oŸgÉ~,ë! Í÷ ëÃ**+å*,Í åÍÖÁá",É*+%"D %"B %"@ Üÿ "‘ "� "� yÿ 6"b+6„+ùÕ!€^6*F+N+Åò]Êl3!%å!9~#·Ê¹þ ÊtOþ"Ê�þ'Ê� +Ñ}|Õå+#~·Ê¤¹Â—6#ã~#þ<ÊÙþ>Êë!#4áÃtá6ÿ#6ÿ*#å!%åÍ**-|µÊÖåÍ© Ãå!çåÍÙ "éÃörå!+åÍÙ "-ÁÁÚáÑÕÃt ÍÍCan't open > or < file.$ÃÊwÑÁÅÕ*Q ÚMë! þ9íRÚM*Që"QëÉ!ÿÿÉÜ*é}´ÊºåÍ7 ÁÉ2Í:a<*b¾ØÈë ͯ2a Í Ãe Í·ÈÍþÊþÊ(þ Ÿ> _*b~+¾Ð#4N s> »ÌÉÍ(> !¦ Íà ØÅ:d¹ÂÙÍe2a_~ÃÜÍÁþ Âò Âí Í> Ãú ÂûþÊ·þÊ Ã#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 wiwbw Cannot open output file "!9" É* ++" Íÿ åͽÁ* å!9Ñ͘ Êj* ++" Íÿ åÍ•ÁÃHÉ* ++" Íÿ }2$:$Íú å* ++" Íÿ åÍÏÁÁÃHÉ* ++" Íÿ "%*%å* ++" Íÿ åÍèÁÁÃHÉ!å!9Íÿ åÍÏÁÁÉ!9Íù }2$!9Íÿ ""ÍÉ!9Íÿ "%!þÿå!9Íÿ åÍÏÁÁÉ*"Íù Í* Ê*"Íù ÛÿÍ* Í* Ê6*"#""+Íù åÍ7ÁÃÉ:$Íú Ä!9Íù åÍ ÁÔ*%#"%+å!9Íù Ñ}*%6Ô!9Íù å:$Íú åͶ ÁÁÔÔÍ?@OþÿÃjÉ*"#""+Íù ÍF ʧÉ!"'*"Íù å!0ÑÍb ÊÌ*"Íù å!9ÑÍc Í* ÊùÃØí*' ÍÛ å*"#""+Íù ÑÐÿ"'ÃÕ! }2)#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!ÂD »ÂD ,ɯÉ|µÊ0 !¯ÉÁÑÅ|º}!À»À-ÉëÃm ë|ºÂm }»Ê- z¼Ê‚ õ¬!ò~ ñÐ-ÉñØ-É{½!Ø-Éëz¼Â„ {½Â„ Ã- ëz¼Â„ {½Â„ !Éëø||g}oè ëø¯|g}oö ëø)Ãà ÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>Âê S\)ë)ëÒò =Âê ɯõÃz¬õ¬ëüÓ ë|·ôÓ MD!x<Âz�>Ú jS\>)ë)ëÒ(#å áÒ0 = ëñðëÍÓ ëÃÓ ëáN#F#x±ÊX~#»~#ÂAºÂAÅáé "°> w+ Âb¯w w##w wàÿ ë#~+þ:Â�~##ͲÖ@~#·Èþ.ÊžͲÃ�ë*°++·ÈͲw#äÑsæþaøÖ ÉO!� ~_#V²Àå!$åÍ/ëáár+sbk#|µÉ "°> w+ Âb¯w w##w wàÿ ë#~+þÃú !ÿÿÉÁÑÕÅ*-}´Ê ÕåͶ ÁÁÉë> å!ª ÍÃ ÑØÕë}þ Â8  ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö ÚÕ þòÕ _~O·À7à ÁáÑÕåÅ!²  Õåö ¾Âû #Âè Ñái&ÉáÑ ~·Âä !k ~þÿÊ # Ã$ ÁÑÕÅë~#Fëðÿ6,pùÿw62] › ëÍÌ å!9Íÿ ÁÅy=åͺáÊ$ ÕëÍY>þwÂn ÑÕÍÑÍÑ<Ê$ !j s 6#6Íÿ ~+¶Â¦ ÕåÅÍ/Áëás#r{²ÑÊ$ ë¯ÉÁÑÕÅ{þ ÚÇ !ª Íà #Ø^Í!É!L ¯w#w!j ~<Ê$ 6ÿÍ) ! ~þrÊ G!q ÕÍÿ }·Ê ë*h xþuÊ 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???! "."*!",*"#""+Íù õ!".!9Íÿ åÍ.ÁÃÒ!0}2)!"*!9Íÿ åÍ.ÁÃÒ!0}2)!"*!9Íÿ åÍ.ÁÃÒ!9Íÿ åÍ7ÁÃÒ!9Íÿ Íù |µÊ§!9åÍÿ #Í +Íù åÍ7Á*'+"'Ãy! åÍ ÁÃÒÃÒÍ?d#u2oNxjcysÍÉ!9Íÿ å! ÑÍm Êö!9Íÿ 0Ã!9Íÿ AöÿåÍ7ÁÉ*'+"'å!ÑÍb Ê+:)Íú åÍ7Áà É: *,å!9Íÿ ",*'+"'#*.ÍF Êr*,.|æ€g|µÊr*'+"'#*,ÍÓ ",!",*,å**ÑÍ™ Ê‹*,å!ÑÍŠ Í* ʯÍ *,|µÊ¤!-åÍ7Á*,åÍÖÁÃ**øÿÍF ÊÉ*,ë!͵ Ãí**öÿÍF Êã*,ë! Í÷ Ãí*,ë!͵ åÍ.Á**öÿÍF Ê *  Í@ ++ 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$€Í!"‚ë*~ëñ .C CRC = D5 74 --> FILE: CHOP .COM CRC = FF D2 --> FILE: CP .COM CRC = A6 63 --> FILE: CP .C CRC = 79 B9 --> FILE: DUMP .C CRC = 12 5A --> FILE: DUMP .COM CRC = 97 1B --> FILE: ENTAB .C CRC = 80 38 --> FILE: ENTAB .COM CRC = A5 70 --> FILE: WRAP .C CRC = 8C 83 --> FILE: WRAP .COM CRC = 95 33 --> FILE: WRAP .DOC CRC = F7 05 --> FILE: MS .C CRC = 1C 72 --> FILE: MS .COM CRC = 46 AC --> FILE: RTW .C CRC = D6  match - :® ̓ :¯ ·ÊJ ÍM Í@ Quantity of lines failed parse test - :¯ ̓ :° ·Ê~ ÍM Í@ Quantity of file(s) not found - :° ̓ *‡ ùÉdÍ”  Í” Æ0ÃT ÿ �Ò– €Wy³Ê© ö0ÍT 0zÉtiilÃÿ 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 !*‚#"‚ɯ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 EB5 --> FILE: RTW .COM CRC = 1D 49 --> FILE: TRUNC .C CRC = 0F 7B --> FILE: TRUNC .COM CRC = F7 D8 --> FILE: CRC .COM CRC = B2 07 --> FILE: D .COM CRC = 66 48 --> FILE: 6-DISK .DOC CRC = 09 43 --> FILE: EPSMODE4.COM CRC = CE DA --> FILE: EPSMODE4.ASM CRC = 38 04 --> FILE: ROFF2 .C CRC = 6A E0 --> FILE: ROFF1 .C CRC = 79 2B --> FILE: ROFF .H CRC = 8F 8A --> FILE: ROFF .COM CRC = 5E 5B --> FILE: ROFF .DOC CRC = 68 96 --> FILE: SIGNS .COM CRC = BD 15 --> FILE: FONT .DAT CRC = E8 92 --> FILE: EDIT .COM CRC = 7C 20 --> FILE: EDIT .DOC CRC = 14 8B --> FILE: EDIT .HLP CRC = 8D B2 --> FILE: CHOP 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 *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 "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ë"ˆ *„ )ë*= ude #define MAXWIDTH 100 /* maximum number of bytes on a line */ unsigned staddr; /* starting address */ int aflag = 0; /* 0 if no addresses, 1 if addresses req'd */ int b7flag = 0; /* 0 if leave bit 7 alone on display */ int cflag = 0; /* 0 if no ascii chars, 1 if req'd */ int gcnt = 0; /* 0 for no group count, > 0 for spec'd grouping */ int width = 32; /* default of 32 bytes per line */ main( argc, argv ) int argc; char **argv; { static FILE fd; static int curarg; É_{•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;ñÂ× {ÉÅ ¯)¹Úî ‘#Âæ ÁÉÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇE fd; { static char byte, bytstr[MAXWIDTH+1]; static int pos; /* current position in byte string */ static unsigned addr; addr = staddr; pos = 0; putchar( '\n' ); if( aflag ) putaddr( addr ); while( ( byte = getc( fd ) ) != EOF ) { if( gcnt && ( ( pos % gcnt ) == 0 ) ) { if( pos > 0 ) /* don't do it at the beginning of line */ { putchar( ' ' ); /* a space is a reasonable separator */ } } bytstr[pos++] = printable( byte ); printf( "%2x", byte & 0xf^#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Í**• +"• *( ë*� "� Ø*� #"� Ã*&ë /* current argument count */ curarg = 1; /* start with 1st actual arg */ while( --argc > 0 ) { while( *argv[curarg] == '-' ) { switch( *(argv[curarg]+1) ) { case 'A': case 'a': aflag++; staddr = atoi( argv[curarg]+2 ); break; case 'B': case 'b': b7flag++; break; case 'C': case 'c': cflag++; break; case 'G': case 'g': gcnt = atoi( argv[curarg]+2 ); break; case 'W': case 'w': width = atoi( arg/* copyright (c) 1982 Peter Baker */ /* dump - dump an object (binary) file in hex, optionally preceded by an address. format: dump [-an -b -c -gn -wn] fname [options] [fname] ... where: -an selects an address preceding each line of hex starting at n -b clear bit7 on ascii dump but not on hex -c dump characters (ascii) at the end of each line -gn groups the hex every n bytes. (default = 4) -wn sets the width to n bytes per line n is some decimal number */ #inclf ); if( pos == width ) { if( cflag ) { bytstr[pos] = '\0'; /* terminate the string */ printf( " %s", bytstr ); } pos = 0; putchar( '\n' ); if( aflag ) putaddr( addr ); } addr++; } if( cflag && ( pos > 0 ) ) { bytstr[pos] = '\0'; printf( "\t%s", bytstr ); } putchar( '\n' ); } putaddr( hexad ) unsigned hexad; { printf( "%4x: ", hexad ); } usage() { printf( "\nUsage: dump [-an -b -c -gn -wm] fname [options] [fname] ..." ); *( ÍÔ ë*‘ "‘ Í Ã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 Âöv[curarg]+2 ); if( width > MAXWIDTH ) { printf( "\nmaximum width = %d\n", MAXWIDTH ); width = 32; } break; default: usage(); } curarg++; argc--; } if( argc < 1 ) { usage(); /* no filename for the argument */ } if( ( fd = fopen( argv[curarg], "rb" ) ) != NULL ) { dump( fd ); fclose( fd ); } else { printf( "\ndump cannot open %s\n", argv[curarg] ); } curarg++; } } dump( fd ) register FIL  printf( "\n where: -an selects addresses preceding each line" ); printf( " starting at n" ); printf( "\n -b reset bit 7 on character dump" ); printf( "\n -c character dump at end of each hex line" ); printf( "\n -gn groups the hex every n bytes" ); printf( "\n -wn set the width to n bytes per line" ); printf( "\n n is a decimal in any of the above" ); putchar( '\n' ); exit( 1 ); } /* isprint - is the character a prial in any of the above*å*å*å!"!9Í^ë*ÍXàÿÍ¥Â^!9Í^ë*ÍXöÿÍ¥͉Âz!9Í^ë*ÍX÷ÿÍ¥͉ʑÎ*#"+Ã/Ã!"!9Í^ë*ÍXÕÿÍ¥ÂÆ!9Í^ë*ÍXÓÿÍ¥͉Êö*#"+ë!9Í^ÍXÕÿÍ¥Êð!Ãó!ÿÿ"!"!9Í^ë*ÍXå!0ÑÍÁÊ-!9Í^ë*ÍXå!9ÑÍÂ͉ÊfÃA*#"+Ãü* Í:å! 9Í^ë*ÍXÑÐÿ"Ã6*ë*Í:ëá"á"á"ëÉ� !9"É*++"Í^åÍ Á*å!9ÑÍ÷ÊÉ*++"Í^åÍô ÁçÉ*++"Í^}2ƒ:ƒÍYå*++"Í^åÍ. ÁÁçÉ*++"Í^*¿å!9Í^"¿*")!"'! åÍfÁ*|µÊ]*)åÍhÁ*¿åÍ–Á}2Á#͉Ê)* |µÊ†*'ë* Í[ëÍ¥͉Ê¢*'å!ÑͽÊ¢! åÍfÁ*'#"'+Âå:ÁÍYåÍÁÑ}Í�!}å:ÁÍY&åÍ—ÁÁ* å*'Í‘Ê* |µÊ*'Â6Í�!�å!ÂåÍ—ÁÁ!"'! åÍfÁ*|µÊ*)åÍhÁ*)#")+Ã]* |µÊ<*'å!Ñͽ͉Ê[*'Â6Í�!†å!ÂåÍ—ÁÁ! åÍfÁá"¿ÉÍ�!Šå!9Í^åÍ—ÁÁÉÍ�!�åÍ—ÁÍ�!ÍåÍ—ÁÍ�!åÍ—ÁÍ�!åÍ—ÁÍ�!FåÍ—ÁÍ�!€åÍ—ÁÍ�!°åÍ—ÁÍ�!ååÍ—Á! åÍfÁ!åÍ) ÁÉ!9ÍXå! ÑÍÁÊ!9ÍXå6#ã~#þ<Ê8 þ>ÊJ !‚ 4áÃÓ á6ÿ#6ÿ*‚ å!„ åÍ*Œ |µÊ5 åÍÃå!F åÍ8"H ÃU rå!Š åÍ8"Œ ÁÁÚb áÑÕÃÓ o  ÍÍCan't open > or < file.$Ã) wÑÁÅÕ*° Ú¬ ë! þ9íRÚ¬ *° ë"° ëÉ!ÿÿÉ;*H }´ÊåÍ–ÁÉ^4:À <*Á ¾ØÈë ͯ2À  Íÿ ÃÄ  Í·ÈÍþÊþʇ þ Âþ > _*Á ~+¾Ð#4N s> »ÌÉ͇ > !Í"ØÅ:à ¹Â8ÍÄ 2À _~Ã;ÍÁþ ÂQ ÂL Í> ÃY ÂZþÊþÊbÃY!ÿÿÉÁÑÕÅ*Œ }´ÊzÕåÍÁÁÉë> å! Í"ÑØÕë}þ — ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿntable character. */ isprint( c ) char c; { return ( ( c >= ' ' ) && ( c <= '~' ) ) ? true : false; } /* convert c to a printable character, reset bit 7 if req'd */ printable( c ) char c; { if( b7flag ) { c &= 0x7f; /* clear bit7 */ } return ( isprint( c ) ) ? c : '.'; } tf( "\t%s", bytstr ); } putchar( '\n' ); } putaddr( hexad ) unsigned hexad; "„*„å*++"Í^åÍG ÁÁçÉ!å!9Í^åÍ. ÁÁÉ!9ÍX}2ƒ!9Í^"�Íc É!9Í^"„!þÿå!9Í^åÍ. ÁÁÉ*�ÍX͉Ê| *�ÍXÛÿ͉͉Ê• *�#"�+ÍXåÍ– ÁÃc É:ƒÍYÃã !9ÍXåÍfÁÃó *„#"„+å!9ÍXÑ}*„6Ãó !9ÍXå:ƒÍYåÍÁÁÃó Ãó ÍžŸ ® þÿÃÉ É*�#"�+ÍXÍ¥Ê É!"†*�ÍXå!0ÑÍÁÊ+ *�ÍXå!9ÑÍÂ͉ÊX Ã7 à *† Í:å*�#"�+ÍXÑÐÿ"†Ã4 ! }2ˆ! "�"‰!"‹*�#"�+ÍXà !"�!9Í^åÍ� ÁÃ1 !0}2ˆ!"‰!9Í^åÍ� ÁÃ1 !0}2ˆ!"‰!9Í^åÍ� ÁÃ1 !9Í^åÍ– ÁÃ1 !9Í^ÍX|µÊ !9åÍ^#Íc+ÍXåÍ– Á*†+!~ÑÍÂ͉Ê!Ã!É*|µÊ0!9åÍX&}æoÑ}!9ÍXåÍæÁ|µÊK!9ÍXÃN!.É maximum width = %d rb dump cannot open %s %2x %s %s%4x: Usage: dump [-an -b -c -gn -wm] fname [options] [fname] ... where: -an selects addresses preceding each line starting at n -b reset bit 7 on character dump -c character dump at end of each hex line -gn groups the hex every n bytes -wn set the width to n bytes per line n is a decim !"# con:rdr:pun:lst:Ö Ú4þò4_~O·À7ÃbÁáÑÕåÅ! Õåö ¾ÂZ#ÂGÑái&ÉáÑ ~·ÂC!Ê~þÿÊy#ÂkÃÁÑÕÅë~#Fëðÿ6,pùÿw62¼úëÍ+å!9Í^ÁÅy=åÍáʃÕë͸>þwÂÍÑÕÍÑÍÑ<ʃ!És 6#6Íÿ ~+¶ÂÕåÅÍŽ Áëás#r{²Ñʃë¯ÉÁÑÕÅ{þ Ú&! Í"#Ø^Í!É!«¯w#w!É~<ʃ6ÿ͈!Þ~þrÊuG!ÐÕÍ^}·Êtë*ÇxþuÊj>w#Âc%åÅÍŽÁÁÑ{=ÕÍÍ<áÀ!7É!�N#FÅá"ÇÉÍñ{þ Ò¯¹+ÂÃåÕ*Çå!åÍ»ÁÁÑÕëú s{²ÑáÊbÕåÍ^#Íc+ë*ÇF!åÑ>b¾Êíxþ Ê–þÊb·Ê–h&ÉáÁÑÕÅå{þ Ð͈!ú !"!9åÍ^+Ícå!Ñͽʾ*)ë!9Í^Í^ÍXÓÿÍ¥ÊK*)ë!9Í^Í^#ÍXÃ*#"+*)ë!9Í^Í^##åÍÁ"Ã3*#"+Ã3* #" +Ã3*)ë!9Í^Í^##åÍÁ" Ã3*)ë!9Í^Í^##åÍÁ" * å!dÑͽÊúÍ�!Oå!dåÍ—ÁÁ! " Ã3Í}Ã3ÍždAda‰B‰b”C”cŸGŸg¼W¼wÃý*#"+!9åÍ^+Íc#Ã0!9Í^å!ÑÍÌÊ`Í}*)ë!9Í^Í^å!dåÍ8ÁÁ"͉Ê–*åÍ+Á*åÍÁóÍ�!gå*)ë!9Í^Í^åÍ—ÁÁ*#"+ÃÉÉÍ"†ÃØ ! åÍj ÁÃ1 Ã1 Íž| d‚ u‘ o­ xÉ cØ sÍc É!9Í^å! ÑÍÌÊU !9Í^0Ãd !9Í^AöÿåÍ– ÁÉ*†+"†å!ÑÍÁÊŠ :ˆÍYåÍ– ÁÃj É@Â*‹ å!9Í^"‹ *†+"†#*�Í¥ÊÑ *‹ .|æ€g|µÊÑ *†+"†#*‹ Í2"‹ !"‹*‹ å*‰ÑÍøÊê *‹ å!ÑÍé͉Ê Íj *‹|µÊ !-åÍ– Á*‹ åÍ5 ÁÃ| *‰øÿÍ¥Ê( *‹ ë!ÍÃL *‰öÿÍ¥ÊB *‹ ë! ÍVÃL *‹ ë!ÍåÍ� Á*‰öÿÍ¥Êl *‹ ë! ÍVëÃw *‰+å*‹ ÍåÍ5 Áá"‹ É*+%"£%"¡%"ŸÜÿ "ð "î "ìyÿ 6"Á +6„+ùÕ!€^6*F+N+Åò¼ ÊË 3!„ å!9~#·Ê þ ÊÓ Oþ"Êì þ'Êì  +Ñ}|Õå+#~·Ê ¹Âö   ~!ÐN#F¹À¯wG+wO#ÉÍñ{þ Ú'ÁÑáåÕÅÃ}+å!9~þ ÂQå!å~þbÊN!K5ÂL> áÃQ6á> *Ç wãåå`i#Íc᯾áÂÁÑÕÅÕ%,å!åÍŽÁÁÁ|µ!ÿÿÈø!9n&:K·Êɯ2˜>ÃÂ{å!9Í^ë!¹:˜w!«ÁÅx†wÒ¹#4áÉ>2˜>2—:à ·Äá ÍAÅx±Ê.ÕåÅÕëÍÑ:—OÍÁ·Âû!€ÿ DMá€ÑÃÐáÑ:—þÂ.á Í!ÿÿÃ4Write error - Disk full $Ñ`iÍ+å€ÍáÙ!9~=+åÍáÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!£»Â£,ɯÉ|µÊ�!¯ÉÁÑÅ|º}!À»À-ÉëÃÌë|ºÂÌ}»ÊŒz¼Êáõ¬!òÝñÐ-ÉñØ-É{½!Ø-Éëz¼Âã{½ÂãÃŒëz¼Âã{½Â?æÊã$Íl,Ä#:?æÂô$Íu-Íl,Ã$:)?æÀ>åÊ%>ÕÍ7Íl,>ÑÍ7>@2)?Ã$å* ?"?áR3Í©7:?æþö2?É"?|·ÂO%}·Â@%Ï3Í©7Éõñõ·ÊV%ÂC%ñÏ4Í©7Éñ>�GÈ>)Í7Ã[%#Í”+Í:*ñõÍ…-ÍÍÃÂÃ�/Ã�[ï[ÿ Ã@0Ãù à à ÃlçÃêÅ!üÿ9ùDMÍ¡*À6#6!c å* åͤÑÑ*¾6#6!o ë`is#r* ¯w#w*©a¯w#w*”¯w#w*¶¯w#w*L6!€ åͧÑ! åͪÑÍ�þÿ|ÚuÍ�++|µÂr! ~#fo##~#foåÍ­ÑÃuͰÍM¶|µÊÉ! ¯w#wÍ�å*ÆÑåÍ�å*LÑnëás{·Ê»! ^#Vr+sÇ*¶¯w#wÃ& *%a6ÍMÀ|µÊ ÍM¾|µÊ Í\å!¹ å*%aåͤÑÑÑà #Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• Í·ÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2r+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍGþ.¶ÍƯww#Ã?Åþ*>?ÊéÍñÚçw#ÂÇÁÍñØÃÞ> w#ÂéÁÉÍþ.7Èþ:7Èþ7ÈÑÑÃÜ ÍM©a|µÍ�å*©aÑs#rÃÜ ! ~#foåÍ�Ñ6Í� åÍ� åÍ ÑÑÃÜ Ão ! n&àÿ|Úd ! n&€ÿ|Úo !åÍ ÑÃÜ Í�|ÿ|µÂ½ !åÍ Ñ! n}þ ² ! ~#foåÍ�Ñ6Í� åÍ� åÍ ÑÑú !åÍ ÑÃÜ ! ~#foå`i^#Vr+sëÑå! nëásÃQ ë!9ùëÁÉ%s%c              \  Å!9ùDM! ~#foåÍ�~#foÑn}þ Ê\! ~#foåÍ�~#foÑn}þ ÂjÍ�^#Vr+sÃ(ÁÉÅ!9ùDMÍ�n}·Ê ! ^#Vr+sënå! nÑ}»Â�!ÁÉÃt!ÁÉÁÉüà Ãä\Ã)JÃ7JÃÏNï[Å!øÿ9ùDM`i¯w#w! ¯w#wÍ\ë! s#rÍ�åÍ� åͪÑÑ! ~#foåÍ� ~#foÑã!Éëø||g}oÃëø¯|g}oÃëø)Ã"ÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂIS\)ë)ëÒQ =ÂIɯõÃfz¬õ¬ëü2ë|·ô2MD!x<Âzz�>ÚjS\>)ë)ëÒ‡#å áÒ� =ÂëñðëÍ2ëÃ2ëáN#F#x±Ê·~#»~# ºÂ Åáé "> w+ ÂÁ¯w w##w wàÿ ë#~+þ:Âì~##ÍÖ@~#·Èþ.ÊýÍÃìë*++·ÈÍw#ÃæþaøÖ ÉO!ì ~_#V²Àå!$åÍŽ ëáár+sbk#|µÉ "> w+ ÂÁ¯w w##w wàÿ ë#~+þ:Âì~##ÍÖ@~#·Èþ.ÊýÍÃìë*!½ å*%aåͤÑÑ*%aå*ÆåͳÑÑ*’¯w#w*Æå*’åͶÑÑÍ�åÍ\’å*ÆÑn&å͹ÑÑ|µÊ *Æå*’åͼÑÑå*Ñs#rÍ\#|µÂ‘ ÃT *Æå*’åͶÑÑÍ\’å*ÆÑn}þ, *’^#Vr+s*Æå*’åͼÑÑå*##Ñs#rÍ\#|µÂõ ÃT *�6#6à *�6#6à *�¯w#w*Æå*’åͶÑÑ*¸¯w#w*º¯w#wÍ¿|µÊT ÃW ͰÃuë!9ùëÁÉDEFAULT.$$$+-0123456789.$/?vrs. 14 by scott fluhrer, neal somos, & Micro Cornucopia%d>>ÃÈ ÃMdÃgdÅ!9ùDM! n&åÍ ÑÍM©a|µÊ÷ ! n&å!åÍÅ ÑÑÁÉÃÿ ï[Åþ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉÈ':7?·Âh#D/ÍÞ6ñÉå:?æÂ>$:?æÂÕ$:)?æÊ$Íl,:å>·ÂÎ#Íà)Ÿ#>6Í7:+?Í7Ãû#*+?|µÂ°#»2Í©7Ãû#>6Í7:+?Í7>#Í7>6Í7:,?Í7Ãû#*+?"?Íà)Âò#>Í7:+?Í7>sÍ7>@2?Ãû#À2Í©7Ãê#ÍÇ)Â$:"?=2"?áñÍ÷)ÉÍà)Â$>sÍ7Ãê#ÍŽ)Â5$Æ2:å>·Ê/$Ë2Í©7Ãê#ü3Í©7Ãê#* ?"?*+?"?:)?æÊŸ$:å>·Â€$Íà)Âs$>>Í7:+?Í7Ñ2Í©7Ãû#Ô2Í©7¯2?Ãû#Íà)Âs$>Í7:+?Í7>{Í7Ñ2Í©7Ãê#Íà)¸$:)?æÀ‘$>}Í7Ñ2Ãv$:)?æÀÄ1.ÍŽ)ÂÏ$>&Í7¯Í7Ú3Ãv$:)n}þ0ÊUþ1ÊUþ2ÊUþ3ÊUþ4ÊUþ5ÊUþ6ÊUþ7ÊUþ8ÊUþ9ÊUþ$Ê+þ.ÊEþ/Ê_þ?Ê®þ+Êæþ-ÊAÃ�! ¯w#w! ~#foåÍ� ~#foÑn&åÍ­Ñ|µÊ´Í� Í?å! ~#foåÍ� ^#Vr+sëÑn&ÐÿÑë! s#rÃ]Í�|µÊÃ!ÿÿÃßÍ�|µÂÛÍ�ë! s#rÃ!Í�+|µÊñÍ�+++|µÂ ! å~#foåÍ�Ñëás#rÃ!! å~#foåÍ�ÑÍúëás#r`i6#6ÃÜÍ\ë! s#rÍ� ^#Vr+sôÍ\ë! s#rÍ� ^#Vr+sôͰÍ�åÍ� åͳÑÑ#|µÂ}!Ãß!åÍ\#åͶÑÑë! s#rÍ�|µÂ«!èå͹Ñ!ÃßôͰÍ�åÍ� åͳÑÑ#|µÂÌ!Ãß!åÍ\+åͶÑÑë! s#rÔÍ� ^#Vr+sÍ�|µÊ ! 6*ùÍKÍžÃ+ÂfžÂfmÈÃ'Ã+ÃFÃŽÃrÃÃû Í– þ8Ê{ æÄ‚w#w#wÑÁÉÍÆÃÞá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o! åÍü ÑÁÉ? Ã# ï[ÃxdÃgdÃÝ[õ\Â#Å!ûÿ9ùDM`i¯w#w! ¯w#wÍ� n}·ÊQ Í� å!è åÍ ÑÑÍ\”|µÂ� Í ë! sÍM©a|µÊ~ ! n&å!åÍ ÑÑý Í\”+ÈÍkå*–ÑåÍ Ñë! s! n}þʽ ! n&å!ë åÍ ÑÑ! n}þÊî þ Ê) þÊ= þÊ= þÊæ þÊ þÊ þ ÊA ÃD Í\”|µÂ !î åÍ ÑÃÜ *”^#Vr+sëÈÍkå*–ÑåÍ ÑÃÜ ! ~#foåÍ�Ñ6Ãß Í�|µÂQ !ð åÍ ÑÃÜ `i^#Vr+s! ~#foåÍ�Ñn}þ “ ! ~#foåÍ�Ñ6Í� åÍ� åÍ ÑÑÃã ! n}þº !ò åÍ Ñ! ~#foåÍ�Ñ6Ãã !ÿ åÍ Ñ!åÍ Ñ!åÍ Ñ! ~#foåÍ�Ñ6ÃÜ `i¯w#w!åÍ ÑÍ� å!åÍ   #6`i¯w#wÃÜÍ�+++|µÂ&! ^#Vr+sÃÜÍ�|µÂ;! 6#6ÃÜ!ÿÿÃßÍ� ^#Vr+sÍ�|µÊg! 6#6`i¯w#wÃÜÍ�++++|µÂ‚! ^#Vr+sÃÜÍ�|µÂ—! 6#6ÃÜ!ÿÿÃßÍ�|µÊ­Í�ÃßÍ�+++|µÂÁÍ�#ÃßÍ�++++|µÂÖÍ�+Ãß!ÿÿÃßÃÞë!9ùëÁÉ?ÃqÃ]ÃÒ#Ã�$ÃU%Ãg&Ãá&Ã~'à (Ã)Ãb)Ãa4ÿ6Ãt*ídê+Ãê9Ã,ÃeÃ\eÃÒeï[Ãl,ÃM]Ê]Ñ,Ãì]Ã@0À=Ã2^Ãz^ÃÕeÃêeÃ<-Ã)JÃ7JÉOÃlPÃQÃÃ-ÃêÃc.Ã�.ÃíeÃxdÅ!Úý9ùDMÍ\’å*ÆÑn&åÍíÑ>p½Â›>¼Ê*>l½Â§>¼Ês>½Â³>¼Ê>i½Â¿>¼Ê¿>a½ÂË>¼Êè>d½Â×>¼Êr>c½Âã>¼Ê�>m½Âï>¼Êá>t½Âû>¼Êå>h½Â|µÂ!"åÍ)Ñ* ¯w#wÃË!Ã9ÍM[ |µÊ1!"åÍGÑ!åÍJÑ! ¯w#wÍM|µÊO!ÃÑ!ÍM¸|µÂ\ÍP*Æå*’åÍSÑÑë! s#rÍ�#|µÂ‰!ÃÑ!!’ å*Æå*’åÍVÑÑÑ|µÂ¯!ÃÑ!*Äs#rÕ*ÂÑs#rÍY|µÂÖ!ÃÑ!Í�|µÊûÍMÂ|µÊï!ÃÑ!*Â6#6Íóë`is#rz³Ê'Í�å!’ åÍ�åÍ�åÍ\ÑÑÑÑÃûÃË!! 6#6ÃA*¼6#6Í_|µÊP!ÃÑ!*¸6#6ÍP*Æå*’åÍSÑÑ#|µÂ€!ÃÑ!ÍbÃÑ!*¼¯w#wÃBÍü|µÊ¢!ÃÑ!Í\å!"åÍ)ÑÑÃË!Íü|µÊÁ!ÃÑ!Í\|µÊãÍ\|µÊãÍ\åÍ\ÑÍÒé!ÃÑ!Í\å*Ñs#rÍ\øÿå!Ú!åÍ ÑÑå*ÔÑs#rz³Â#!ÃÑ!!å*ÐåÍMÔåÍ#ÑÑÑÍMÔåÍ&Ñ*Ðë! s#r̓n}þÊ€̓n&å!ã!åÍ)ÑÑ! ^#Vr+sÃTÃË!Í\’#å*ÆÑn}þ=ÂJÍ,|µÊ§!ÃÑ!*’å~#fo##ëás#rÍ\’å*ÆÑn}·Ââ*Lå!æ!åÍ)ÑÑÃË!! ¯w#wÍ\’å*ÆÑn}·Ê7! ^#Vr+sëå*LÑå*’^#Vr+sëå*ÆÑnëásÃêÍ�å*LÑ6ÃË!Í|µÊX!ÃÑ!*¶6#6ÃË!Íü|µÊu!ÃÑ!Í\|µÊŽÍ\åÍ\ÑÍå”!ÃÑ!! åÍ\åÍ ÑÑ!¡ åÍ\#åÍ ÑÑ! åÍ/Ñå!¡ åÍ/ÑÑ{ÿ|Úß!ê!åÍ)Ñ!ÃÑ!!¡ å! åÍ2ÑÑÍ\#åÍÑÍ\åÍ ^#Vr+sÃ$ ! ¯w#wÍ�Ûÿ|Ò¬!Í�Íkå*"Ñ~#fo|µÊ�!Í�å!#åÍ)ÑÑÍ�Íkå*"Ñ~#foåÍ�Íkå*"Ñ##~#foå! #åÍ)ÑÑÑÞ!Í�å!-#åÍ)ÑÑ! ^#Vr+sÃ!ÃË!!@#åÍ)ÑÃË!!b#åÍ)ÑÃË!!ÃÑ!!ÃÑ!ë!&9ùëÁÉedit.hlp%c%s Line too long ?? %s Write?? edit.tmp%d ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ ! %d %d-in memory -in temp file-Illegal type at %d line numb>¼Êð>u½Â>¼Êƒ>j½Â>¼Êg>n½Â+>¼Ê%>r½Â7>¼Êˆ>w½ÂC>¼Ê¨>f½ÂO>¼ÊÈ>#½Â[>¼ÊJ>>½Âg>¼Êu><½Âs>¼Ê‘>q½Â>¼Ê®>s½Â‹>¼Ê9>x½Â—>¼Ê*>g½Â£>¼Ê6>v½Â¯>¼Ê†>=½Â»>¼Ê”>%½ÂÇ>¼Ê³>:½ÂÓ>¼Ê¨>^½Âß>¼Ê/>&½Âë>¼Ê�>"½Â÷>¼Ê>~½Â>¼Ê¤>!½Â>¼Ê >@½Â>¼Ê¯!>*½Â'>¼Êº!ÃÅ!! ¯w#wÍð|µÊ@!ÃÑ!Íóë`is#rz³ÊpÍ� åÍ�åÍöÑÑÍ�å*Ñs#rÃ@ÃË!! 6#6Ã2Íù|µÊ�!ÃÑ!Íóë`is#rz³Ê¼!åÍ�åÍöÑÑÍ�å*Ñs#rÃ�ÃË!Íü|µÊÍ!ÃÑ!Í\|µÂÜ!ÃÑ!Í\åÍÿÑÃË!Í\’#å*ÆÑn&åÍíÑå!åÍeÑÑë! s#rÍ�åÍ\ÑÍúÒ?!åÍ�åÍöÑÑ! ^#Vr+sÃ!"åÍ)Ñ!åÍ\åÍöÑÑ!k"åÍ)ÑÍ\#ë! s#rÍ�åÍ\åÍ\åÍhÑÑÑÍÚ¥!åÍ�åÍöÑÑ! ^#Vr+sÃjÃË!Íü|µÊ¶!ÃÑ!Í\åÍ\ÑÍÚÏÍ\|µÂÕ!ÃÑ!Í\å*Ñs#rÍ\ë! s#rÍ�åÍ\åÍ\åÍhÑÑÑÍÚ,!åÍ�åÍöÑÑ! ^#Vr+sÃñÃË!Íü|µÊ=!ÃÑ!Í\|µÂL!ÃÑ!Ík|µÊhÍnÍ\å!»"åÍ)ÑÑÚ!åÍ\åÍöÑÑÍ\åÍ\ÑÍå‰Ú*^#Vr+sÃLÃË!Íü|µÊ«!ÃÑ!Í\åÍ\ÑÍÒÁ!ÃÑ!Í\å*Ñs#r!åÍ\ðÿåÍeÑÑë! s#rÍ�åÍ\ÑÍÚ!åÍÑ! åÍ\#åÍÑÑÍ\#å*Ñs#rÃË!! åÍ5Ñ|µÊ9!ÃÑ!Í\”++++|µÂL!ÃÑ!Í\”ÈÍkå*–Ñå! åÍ8ÑÑ#|µÂw!ÃÑ!*”^#Vr+sÃË!! åÍ5Ñ|µÊœ!ÃÑ!! åÍ;ÑÃË!! åÍ5Ñ|µÊ¼!ÃÑ!! åÍ>ÑÃË!Í\’#å*ÆÑn}þ=Â*’^#Vr+s! åÍ5Ñ|µÊ!ÃÑ!! å* åÍAÑÑÃË!!ú!å* åÍDÑÑ|µÂ6!û!åÍ)ÑÃG* å!"åÍ)ÑÑÃË!Í|µÊX!ÃÑ!*¾å~#fo|ªg}«oëás#rÃË!Í|µÊƒ!ÃÑ!*À¯w#wÃË!Í|µÊŸ!ÃÑ!*À6#6ÃË!Í\’#å*ÆÑn}þ!ÂÞ*’^#Vr+s! 6#6Ãæ! ¯w#wÍ|µÊô!ÃÑ!Í\ |µÊÍ�er %d %d-being used by parsel %d-lru = %d %d-Not being used Kathy, don't do that, it tickles Now Kathy, stop fooling around È#ï[Å!9ùDM!Ê#åÍ…#ÑÍ�n}·Ê°#Í�å!Ì#åÍ…#ÑÑÍ�n}·ÊÈ#Í�å!Ï#åÍ…#ÑÑÁÉ %s%sÃØ#à Å*’^#Vr+s*Æå*’åÍÕ#ÑÑÍ\’å*ÆÑn}·Ê$!ÁÉÍM¸|µÊ$$!ÁÉÍ\�|µÂ9$Í\å*Ñs#rÍ\�þÿ|ÒT$Í\å*##Ñs#rÍ\åÍ\ÑÍÚ�$Í\ÿÿ|Ú�$Í\åÍ\ÑÍúÒ†$!ÁÉ!ÁÉÁÉÜ$ÃíeÃ’RÃxdï[ÅÍM¸|µÊç$Í\åÍ\ÑÍÚç$Í�$|µÂç$ÍM¼åÍ\åÍ“$ÑÑ|ªg}«o|µÊç$*^#Vr+sÃ�$Í�$|µÊ%Í–$Í\å!H%åÍ™$ÑÑ�ÿ|µÂA*’^#Vr+sÍð|µÊ$!ÃÑ!Íóë`is#rz³Ê>Í�åÍÑÃ$ÃË!Íü|µÊO!ÃÑ!Í\åÍ\ÑÍÒe!ÃÑ!Í\#åÍÿÑÃË!Íð|µÊ€!ÃÑ!Íóë`is#rz³ÊšÍ�åÍÑÀÃË!Íð|µÊ«!ÃÑ!ÍM¸|µÊ»!ÃÑ!Íóë`is#rz³ÊÕÍ�åÍÑûÍ\åÍÿÑÃË!! 6#6Í|µÊø!ÃÑ!*Ò¯w#w*ÐëÕ*ÐÑs#rÍóë`is#rz³Ê™!’ åÍ�åÍ ÑÑÍ� |µÊFÍ�åÍÑ!’ ë! s#r̓n}·Êƒ̓n&åÍÑ|µÊu!ÃÑ!! ^#Vr+sÃR!åÍÑ|µÊ–!ÃÑ!ÃÍMÒ|µÊ·!å!åÍMÔåÍÑÑÑ*Ö¯w#w!’ åÍÑ|µÊâ!’ åÍ\åÍÑÑÃÂÃË!! ¯w#wÃêÍ|µÊþ!ÃÑ!!�åÍöÑÑ! ^#Vr+sÃëÃË!Íü|µÊ(!ÃÑ!Í\åÍ\ÑÍÒ>!ÃÑ!Í\åÍ\#åÍhÑÑë! s#rÍ�åÍ\åÍ\åÍhÑÑÑÍÚ¡Í�å*Ñs#r!åÍ�åÍöÑÑ! ^#Vr+sÃVÃË!Íü|µÊ²!ÃÑ!Í\åÍ\ÑÍÒÈ!ÃÑ!Í\ïÿå!åÍeÑÑå*Ñs#r! s#rÍ�åÍ\ÑÍÚ !åÍ�åÍöÑÑ! ^#Vr+sÃíÃË!! ¯w#wÍ�Íkå* Ñ~#fo4ó|µÊ !Í�å!Â"åÍ)ÑÑÍ�Íkå* Ñ~#foë|µÂ !Å"åÍ)Ñó Í�Íkå* Ñ~#foä|µÂ« !Ó"åÍ)Ñó !á"åÍ)ÑÍ�Íkå* Ñ##~#foå!ï"åÍ)ÑÑÍ�Íkå* Ñ~#foå!ö"åÍ)ÑÑ!  !ÁÉÍ\åÍ\ÑÍÒ,%ÍMº|µÂ'%!P%åÍ™$Ñ!ÁÉ*º6#6*^#Vr+sëÁÉÁÉ! %d ?? Ã^%Ãa4ï[Å!xÿ9ùDM`iåÍ�ŒåÍX%ÑÑÍM¾|µÊ‹%Í�Œå!R&åÍ[%ÑÑÍ�Ž|µÊ=&!† ¯w#wÍ�†ë`in}·Ê2&Í�†ë`in&àÿ|ÒÚ%Í�†ë`in&@å!V&åÍ[%ÑÑÃ$&Í�†ë`in&€ÿ|Ú&Í�†ë`in&|¢g}£oå!Z&åÍ[%ÑÑÃ$&Í�†ë`in&å!^&åÍ[%ÑÑ!† ^#Vr+sÜ%!a&åÍ[%ÑÃI&`iå!c&åÍ[%ÑÑë!ˆ9ùëÁÉ%d ^%c@%c%c %s ÅÍM¸|µÊw&!ÁÉÍ\�|µÂ�&Í\#å*Ñs#rÍ\�þÿ|Ò¨&Í\å*##Ñs#rÍ\åÍ\ÑÍÚÕ&Í\ÿÿ|ÚÕ&Í\åÍ\ÑÍúÒÚ&!ÁÉ!ÁÉÁÉÃç&à Å*’^#Vr+s*Æå*Ò|µÊ/*ÐÃ/*Ðå*Ö^#Vr+sëÑnë`isÍMÖþ|µÂt/*Ò^#Vr+s*Ö¯w#wÍMÒ|µÂt/ÍMÔåͽ.Ñ!…/åÍÀ.Ñ`in&Ã|/ë!9ùëÁÉedit2.tmpÕ/ÃÕeÅ!þÿ9ùDM* 6Ì#6 `i¯w#wÍ�Ûÿ|Ò0Í�Íkå*"ѯw#wÍ�Íkå*"ÑåÍ�ëás#r`i^#Vr+sï/*[ ¯w#w!70åÍ’/Ñ*s#rÕ*Ñs#rë!9ùëÁÉedit.tmpÃ[0Ã2^Ãeï[ÃÒeÃ�/Ã\eÃ…?Ã4fÅ!ðÿ9ùDM* ¯w#wÍ�å* åÍC0ÑÑ!åÍ�åÍF0ÑÑë`is#rz³Â¥0!.4åÍI0ÑÃ%4ÍM[ |µÊ¹0ÍM[ åÍL0ÑÍO0! 6#6! ¯w#w! ¯w#wÍ�Ûÿ|Ò•1Í�Íkå*"Ñë! s*ÔÑs#rÍMÔ#|µÂ+!ÁÉ*Ò^#Vr+s€!ëÍËå*ÐåÍMÔåÍ€*ÑÑÑå€!ëÍËÑÍåÊq+ÍMÔåÍz*Ñ! +å̓*Ñ!ÁÉ*ÐëÕ*ÐÑs#r!ÁÉÁÉedit2.tmpedit2.tmpedit2.tmpð+÷.Å!9ùDMÍMÒ|µÂã+ÍMÖå*ÐÑåÍMÐÑÍåÂã+!ÁÉ! ^#Vr+sÕÍ­+ëás{·Êþ+Ãã+!ÁÉÁÉà ,à Å*’^#Vr+s*Æå*’åÍ,ÑÑÍ\’å*ÆÑn}·ÊH,!ÁÉÍM¸|µÊW,!ÁÉÍ\�|µÊe,!ÁÉ!ÁÉÁÉÅÍM¸|µÊ|,!ÁÉÍ\�|µÊŠ,!ÁÉ!ÁÉÁÉÚ,à Ã2^Å!9ùDM*’^#Vr+sÍM¸|µÊ¿,!ÁÉÍ\�|µÊÍ,!ÁÉ*Æå*’åÍ”,ÑÑÍ\’å*ÆÑn}·Â-Íw }·Â-!~#foåÍ�ÑÍåÂÛ5Í�+åÍd4Ñë! s#rÍ�Íkå*"Ñë! s#rÍ�åÍ�+Íkå* Ñ~#foÑÍúë! s#rÍ�|µÊ¢5! ^#Vr+sën}þ ‘5Ô5Ãz5! ^#Vr+sÃq5Í�n}·ÊÛ5! ~#foå! ^#Vr+sëÑåÍ�nëás! ^#Vr+sâ5Í�åÍd4Ñë! s#rÍ�Íkå*"Ñë! s#rÍ�åÍ�Íkå* Ñ~#foÑÍúë! s#rÍ�|µÊk6! ^#Vr+sën}þ ÂZ6Ã]6ÃC6! ^#Vr+sÃ:6Í�n}þ Ê¥6! ~#foå! ^#Vr+sëÑåÍ�nëás! ^#Vr+sÃk6! ~#foåÍ�Ñ6ë! 9ùëÁÉÃÈ6Ãö?Ã/AÅ!ôÿ9ùDM`i6#6Í�Íkå* Ñ~#fo4ó|µÊ/7Í�Í’åÍä&ÑÑÍ\’å*ÆÑn}·Ê$'!ÁÉÍM¸|µÊ3'!ÁÉÍ\�|µÂH'Í\å*Ñs#rÍ\�++|µÂX'!ÁÉÍ\|Úr'Í\åÍ\#ÑÍÒw'!ÁÉ!ÁÉÁÉÃ�'Ã�[à Ãz^Ãê9Å!zÿ9ùDMÍM¾|µÊ¹'Í�Šå!(å*%aåÍ�'ÑÑÑÃÂ'*%a6*%aå`iåÍ„'ÑÑ!(å`iå͇'ÑÑ|µÂæ'Ã(Í�Šå*Ñs#r`iå!Š ^#Vr+sÕÍŠ'ÑÑÕ'ë!†9ùëÁÉ%-8.8d.Ã;(Ãa4Ã�[à ÃM]ï[Ê]ÿ6Ãê9Å!öþ9ùDM`iå̓åÍ#(ÑÑ`iå!ö(å*%aåÍ&(ÑÑÑ*%aå!… åÍ)(ÑÑ!… n}·Â…(Ãí(`iåÍ,(Ñå!… åÍ,(ÑÑ{ÿ|Ú°(!ý(åÍ/(ÑÃí(! )å`iåÍ2(ÑÑ!… å`iåÍ2(ÑÑ!)å`iåÍ2(ÑÑ̓åÍ5(Ñ`iå̓åÍ8(ÑÑë! 9ùëÁÉ%s /* Lin#rÍ�Íkå*"Ñ6Í�Íkå*"Ñ6#6Í�Íkå*"Ñ##åÍ�ëás#rÍ�Íkå* Ñ6ý#6Í�Íkå* Ñ##åÍ�ëás#rÃá1*Úë! s#rÍ�Íkå* Ñ6#6íÍ�Íkå* Ñ##åÍ�Ûÿëás#r! ~#fo6Í�Íkå* ÑåÍ�ëás#r!åÍ� åÍ�åÍR0ÑÑÑë! s#rÍ�üÿ|ÒQ2! ~#foåÍ�€Í?Ñ6! s#r! s#rÍ� ÿý|Òû2! ~#foåÍ� Ñn}þ«2! ~#foå! ^#Vr+sëÑ6! 6#6Ãí2! ~#foåÍ� Ñn}þ Êí2! ~#foå! ^#Vr+sëÑå! ~#foåÍ� Ñnëás! ^#Vr+sÃb2Í�ÁÉÃ-* åÍ�åÍ—,ÑÑÃ5-Í\’å*ÆÑåÍ�åÍ—,ÑÑ!ÁÉÁÉÅ*’^#Vr+sÍM¸|µÊZ-!ÁÉÍ\�|µÂo-Í\å*Ñs#rÍ\�þÿ|ÒŠ-Í\å*##Ñs#rÍ\åÍ\ÑÍÚ·-Í\ÿÿ|Ú·-Í\åÍ\ÑÍúÒ¼-!ÁÉ!ÁÉÁÉÅ*’^#Vr+sÍM¸|µÊá-!ÁÉÍ\�|µÂ.*6#6Í\å*##Ñs#rÍ\ÿÿ|Ò.!ÁÉÍ\�+|µÂ*.Í\å*##Ñs#rÍ\ÿÿ|ÚW.Í\åÍ\ÑÍÚW.Í\åÍ\ÑÍÒ\.!ÁÉ!ÁÉÁÉÅ!9ùDMÍ�åÍ�ÑÍͩ҅.Í�É.Í�ÁÉÁÉÅ!9ùDMÍ�åÍ�ÑÍúͩү.Í�ó.Í�ÁÉÁÉÃÃ.Ã\eÃÒeÃÕeÅ!ýÿ9ùDMÍMÖ|µÂþ.ÍMÒ|µÊþ.€!ëÍËå*ÐåÍMÔåͺ.ÑÑÑÍMkå* Ñ~#foåÍ�ÑÍÒ#7Ã/7`i^#Vr+sÃ×6`i^#Vr+sÍ�|µÊ8Í�Íkå* Ñ~#foåÍ�ÑÍåÂ8Í�+åÍÂ6Ñë! s#rÍ�Íkå*"Ñë! s#rÍ�åÍ�+Íkå* Ñ~#foÑÍúë! s#rÍ�|µÊû7! ^#Vr+sën}þ Âê7Ãí7ÃÓ7! ^#Vr+sÃÊ7Í�6Í�åÍÂ6Ñë! s#rÍ�Íkå*"Ñë! s#rÍ�åÍ�Íkå* Ñ~#foÑÍúë! s#rÍ�|µÊ‘8! ^#Vr+sën}þ €8Ã8Ãi8! ^#Vr+sÃ`8Í�ë! s#r! ^#Vr+sën}þ Ê´8Ã�8! ^#Vr+sÕ! ^#Vr+sënëás{·ÊÚ8ô8Í�#ë! s#rÍ�Íkå* Ñ~#foe too long /* */Ã)ÿ6Å!9ùDMÍ�åÍ)ÑÍ\åÍ�ÑÍúÒP)Í\å*Ñs#rÃ`)Í�å*Ñs#rÁÉÃk)çà Å*’^#Vr+s*Æå*’åÍe)ÑÑå*Ñs#rÍ\#|µÂª)!ÁÉÍ\ÿÿ|ÚÈ)Í\åÍ\#ÑÍÒÍ)!ÁÉ*Æå*’åÍh)ÑÑÍ\’å*ÆÑn}·Êû)!ÁÉÍM¸|µÊ *!ÁÉÍ\�|µÂ*Í\å*Ñs#rÍ\�þÿ|Ò:*Í\å*##Ñs#rÍ\åÍ\#ÑÍÚh*Í\ÿÿ|Úh*Í\åÍ\ÑÍúÒm*!ÁÉ!ÁÉÁÉÆ*ÃfÃÒeÃeÃ4fÃÕeÅ!9ùDM*Ð^#Vr+sÕ! nëásÍMÐå*ÐÑÍåÂ…+ÍMÒ|µÂ+!Œ+åÍw*Ñå*ÔÑs#rÍMÔ#|µÂè*!ÁÉÍMÔåÍz*Ñ!å!–+åÍ}*ÑÑåÛÿ|µÂ03ÍU0å*[ Ñs#rÍM[ #|µÂ03!34åÍI0ÑÍO0Ã%4Í�Ûÿ|Úl3!å*ÚåÍM[ åÍX0ÑÑÑ++++|µÊl3!J4åÍI0ÑÍO0Ã%4! ¯w#wÍ�þ|Òô3! ~#foåÍ�Ñn}þ ¿3! ^#Vr+s*6#6*^#Vr+sÃæ3! ~#foåÍ�Ñn}·Âæ3Í�|µÊã3Ã4Ãæ3Ãô3! ^#Vr+sÃt3! ^#Vr+sÃÕ0Í�åÍL0ÑÍ�#Íkå* Ñ6Ì#6 ë!9ùëÁÉ?? Error with temp file Error with temp file Ãg4Ãö?Å!öÿ9ùDM`i6#6Í�Íkå* Ñ~#fo4ó|µÊÎ4Í�Íkå* Ñ~#foåÍ�ÑÍÒÂ4ÃÎ4`i^#Vr+sÃv4`i^#Vr+s! ¯w#wÍ�|µÊÛ5Í�Íkå* Ñ  4ó|µÊ59Í�Íkå* Ñ^#Vr+s! ^#Vr+sÃç8Í�#Íkå* Ñ~#fo4ó|µÊ`9Í�åÍÅ6ÑÍ�|µÊs9Í�+åÍÅ6Ñ*^#Vr+s* 6#6Í\åÍ�ÑÍúÚ§9*^#Vr+sÍ\åÍ�ÑÍúÚÃ9*##^#Vr+sÍ\åÍ�ÑÍúÚá9*^#Vr+së! 9ùëÁÉÃö9Ãö?ÃM]ÙCÅ!ðÿ9ùDMÍM 4ó|µÂR:*È 6Ì#6 * 6ý#6*Ä ¯w#w*Æ 6#6*"6#6*$¯w#w`i6#6Í�Íkå* Ñ~#fo4ó|µÊ±:Í�Íkå* Ñ~#foåÍ�ÑÍúÚ¥:ñ:`i^#Vr+sÃY:`i^#Vr+sÍ�åÍí9Ñë! s#rÍ�Íkå*"Ñë! s#rÍ�åÍð9ÑåÍ�åÍð9ÑÑs#r! ^#Vr+sÃ!åÍŒ=Ñë! s#r! ¯w#wÍ�åÍ\ÑÍÚî>Í�Íkå*"Ñå! ^#Vr+sëÑnë! s! n}·Â—>! ^#Vr+sÕÍŒ=Ñë! s#r! ¯w#wÃ*>! n}þ ÂÉ>! å! åÍ�=ÑÑ|µÊÀ>!A?å̓=ÑÃ/?`i^#Vr+s! å! n&åÍ�=ÑÑ|µÊë>!R?å̓=ÑÃ/?Ã*>! å!åÍ�=ÑÑ|µÊ ^#Vr+s`i^#Vr+sÜFÍ�Íkå*"ѯw#wë!9ùëÁÉÃBGÃÄGÃŽFÅ!þÿ9ùDM`i¯w#wÍ�Ûÿ|Ò‰GÍ�Íkå*"Ñ~#fo|µÂ}GÃ’G`i^#Vr+sÃPGÍp½Â¹P>¼ÊÔP>g½ÂÅP>¼ÊòP>½ÂÑP>¼ÊQÃQÍMÄ|µÊãP!ÁÉ*Ä6#6ÃQÍMÂ|µÊQ!Áfoå̓ Ñn}þ Â!Y!E[åÍ3WÑ!T[åÍ3WÑ!  ^#Vr+sÃÜX!g[åÍ3WÑ!i[å`iåÍ6WÑÑ!j[å`iåÍ9WÑÑ|µÊfY̓^#Vr+s!Ã[!  ¯w#w!  ¯w#w̓ å̓~#foÑÍúÒÀY!  ^#Vr+sëë`iå! ~#foå̓ Ñnëás!  ^#Vr+sÃvY!  ¯w#w̓ ë!… n}·Ê$Z!  ^#Vr+sëë`iå̓ ë!… nëás̓ {ÿ|ÚZ!l[åÍ3WÑ!Ã[!  ^#Vr+sÃÈY̓ ë! s#r̓~#fo#ë!  s#r!  ^#Vr+sëë`iå! ~#foå̓ Ñnëás̓ {ÿ|Ú…Z!~[åÍ3WÑ!Ã[! ~#foå!  ^#Vr+sëÑn}·ÂCZ̓å̓ëás#r!  ¯w#w̓ ë`in}·ÊöZ! ~#foå̓ Ñå̓ ë`inëás!  ^#Vr+sûZ! ~#foåÍfoåÍ�#Ñn}·ÂU÷V`i¯w#wÍ�åÍMc ÑÍúÒEUÍ�)ë!D ¯w#w`i^#Vr+sÃU! ^#Vr+s`i¯w#wÍ�åÍMc ÑÍúÒ4VÍ�)ë! ~#fo|µÊ(VÍ�Íkå*ð Ñnå!„ ~#foåÍ�ÑnÑ}»ÂÍUÍ�Íkå*ð Ñ###~#foë! s#rÃñUÍ�Íkå*ð Ñ~#foë! s#rÍ�âÿ|µÂVÍ�ˆåÍ�ëás#rÃ(VÍ�|µÊ(VÍ�)ë!D 6#6`i^#Vr+sÃVU`i¯w#wÍ�åÍMc ÑÍúÒwVÍ�)ë! åÍ�)ë!D ~#foëás#r`i^#Vr+sÃ:V`i¯w#wÍ�åÍMc ÑÍúÒ±VÍ�)ë! ~#fo|µÊ¥VôV`i^#Vr+sÃ}V÷VÃoTÍ�ˆ~#fo##|µÊðVÍMî |µÊêV!„ ~#foåÍ�ˆ~#fo#Ñn}·ÂðV!Ã'WÍMì |µÂW!„ ~#ë!9ùëÁÉÃ_ÃÙbÃä\Ã�cÃäcÅ!hÿ9ùDM!ž ^#Vr+së~#foë! s#rÍ�žë!– s#r! ^#Vr+sënë`is{·Êib`in}þ%ÂSb! ë!� s#r!” 6#6!‘ s!� s!� sÍ�n}þ-¨_! ^#Vr+s!� 4Í�n}þ0¸_!‘ 4Í�n&åÍ_Ñ}·ÊÕ_! åÍ_ÑÃØ_!ë!’ s#r! ^#Vr+sënë`is{þ. `! åÍ_Ñë!” s#r!� 4! ^#Vr+sënë`is`in&åÍ_Ñ}þDÊL`þUʈ`þXÊ‘`þOÊš`þCÊà`þSÊaÃ=bÍ�–~#fo|Òˆ`!� ^#Vr+së6-Í�–åÍ�–~#foÍúëás#r!’ ^#Vr+s! 6 à`! 6à`! 6!’ å~#foå! n&å!– ^#Vr+së~#foå!� åÍ _ÑÑÑѯgÍúëás#rÉa!� ^#Vr+sÕ!– ^#Vr+së~#foÉ*Â6#6ÃQ!ÁÉ!ÁÉÃvPÁÉÃ7QÃa4ÃTÃ0WÃM]ÿ6Ãê9ÃU%Å!ðþ9ùDM! å̓åÍ"QÑÑ̓å! å`iå! åÍ%QÑÑÑÑ|µÂqQÉR̓å̓å! å`iå! åÍ(QÑÑÑÑÑ|µÂšQÉRÍMÂ|µÊERÍMì |µÂER! åÍ+QÑåÍ�ÑÍÒER̓å! å`iåÍ�ë! s#rÕ! ÑåÍ%QÑÑÑÑ|µÊER`iå~#foåÍ�Ñëás#r! å~#foåÍ�Ñëás#r̓å̓å! å`iå! åÍ(QÑÑÑÑÑ|µÂBRÉRÚQ̓åÍ.QÑ! å̓åÍ1QÑÑÍMÄ|µÊxR!å̓åÍ4QÑÑ̓å*Ñs#rë!9ùëÁÉÛRÃa4ÃTÅ!wÿ9ùDM`iåÍ��åÍ•RÑÑ!å!‡ å!… å`iå͘RÑÑÑÑÃËRë!‰9ùëÁÉÅ!9ùDMÍMc âÿ|µÂïR!ÁÉÍMc Íkå*ðƒ Ñ6!Ã[ë!9ùëÁÉOverflow error! Overflow error! %s ^^^^^^^| ^^^^^^^| .Overflow error! Overflow error! Ö[à _Å!9ùDM! åÍ�åÍ“[ÑÑÁÉø[à _ÃxbÅ!yÿ9ùDM!‹ å`iåͲ[ÑÑ`iå͵[Ñë!‡9ùëÁÉÃé[ÃxdÃgdÃ\eÅ!þÿ9ùDMÍ�|µÂ\Íà[ì\Í�+++|µÂ\!åÍã[Ñì\Í�##^#Vr+së|µÂ•\!åÍ�åÍ�~#foåÍæ[ÑÑÑë`is#r!ÿÿ|Òh\Í�##^#Vr+sëì\Í�##åÍ�€Í?+ëás#rÍ�åÍ�ëás#rÍ�^#Vr+sën&ì\ë!9ùëÁÉû\ÃÒeÅ!9ùDMÍ�üÿÚÓ\!ÁÉÍ�~#foå͸\ÑÁÉÁÉÅ!9ùDM! n&Ðÿ|ͯÚ]!  ëás!’ ^#Vr+sÉa!� n}·Â$a!” 6È#6!– ^#Vr+së~#foë! s#rÍ�n}·Ê‰aÍ�”|µÊ‰a!� ^#Vr+sÕ! ^#Vr+sënëás!” ^#Vr+s!’ ^#Vr+sÃ?aÍ��6! ë!� s#r!� n}·Âàa!’ ^#Vr+s!ÿÿ|Úàa!œ ^#Vr+sÕ!‘ n}·Ê×a!0ÃÚa! ëásÃ¥aÍ�œå!� ^#Vr+sënëás{·Ê b!œ ^#Vr+sÃàa!� n}·Ê:b!’ ^#Vr+s!ÿÿ|Ú:b!œ ^#Vr+së6 ÃbÃPb!œ ^#Vr+sÕ`inëásÃfb!œ ^#Vr+sÕ`inëásÃG_Í�œ6ë!˜9ùëÁÉÃ~bÿ Å!9ùDMÍ�n}·Ê¨b! ^#Vr+sën&åÍ{bÑÆbÁÉÅ!9ùDM! n&¿ÿ|ͯÚÕb! n&¥ÿ|Í©ÁÉÁÉÃßbÃÙbÅ!ÿÿ9ùDMÍ�åÍ� ÑÍìÒ-cÍ�^#Vre both the filename and drive designation are optional. Comment 1) After any change that rearranges lines, the line numbers are automatically adjusted, so it's a good idea to look at the code again before you make any more changes, to check out the new line numbers - unless you LIKE suprise deletions and substitutions, in which case, by ALL MEANS go ahead and live dangerously! Comment 2) Whenever I say, "specified range of lines", I mean two numbers separated by a comma, like 1,3 or ault filename to "file" $= tells you last line number .= tells you current line number (useful if you've turned off the numbers) u=com sets the user command to "com" u= tells you what the user command is *************************************************************** Commands Concerning Files *************************************************************** I know, I know, they're ALL concerned with files, but read on... COMMAND r x:filename Reads in file "filename" fro+sÕÍ�öÿÚcÍ�0Ã"cÍ�7ëás!&ÃxcÍ� åÍ�åÍ� Ñ͉åÍ�åÍÜbÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍÜbÑÑÑ`in&#&Ãxcë!9ùëÁÉÇcÃä\Å!þÿ9ùDM`i¯w#wÍ�~#fon&åÍ„cÑ}·ÊÔcÍ� Í?åÍ�^#Vr+sënѯgÐÿë`is#rÕcÍ�ÃÛcë!9ùëÁÉÃêcÃdÅ!9ùDM! n&åÍçcÑ|µÊd! n&àÿÃd! n&&ÁÉÁÉÅ!9ùDM! n&Ÿÿ|ͯÚId! n&…ÿ|Í©ÁÉÁÉÍ Å_þ Âbd Í ÍÁÉÍ7Å:ŸO*¡ëÍÁÉ:w·oʇd¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ ªdÅ ÍÁ. &ÉódÜfÍ7:ŸÍ,ÚÅå*ŸåͰdÑë:£*¡·ÊÕd}|æ2qã å¾ÊeãëÕÍÑáþÿÂüdÑÁÃ:qw 10,999. Comment 3) A dollar sign ($) stands for the last line of the file; within a search string it stands for end-of-line. A period (.) stands for the current line in the file; within a search string it stands for "any character" - a sort of wild card. ******************************************************************** Miscellaneous Commands ******************************************************************** COMMAND DESCRIPTION Control-P Will send everything typed on the scree The Fantastic Great Wonderful EDIT by Scott Fluhrer and Neal Somos This file created May 7, 1981 by Kathy Bacon. This is supposed to be a help file for Scott's QED editor in BDS C. When in EDIT itself, you can get a brief listing of the available commands, but here I tried to give a little more explan- ation and a few examples of some of the niftier features, for anyone who hasn't used an editor of this type before. EDIT can be invoked by typing A>EDIT x:filename wherm drive x. The default is the currently logged in disk if no designation is given. w x:filename Writes "filename" to disk x. Again, "x" is optional. So, for that matter, is the filename: if you don't specify, it will use the current default filename (there is a default even if you've never specified one during your EDITing - it USED to write out a file with the descriptive title " ", but that wasn't too cool...) f Tells you the current default filename. f=file Sets ÕÍÑþÿÊ÷d! Ñ{æwëÁÉÍ7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·ÊTe=ÊTe=Âr:qo&ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊ²e*¡ëÍ*sëÕÍÑþÁÊÅþ·e! ~þ€Â²e6*uÁÉ*£+"£*¡€"¡*u#"uÃ~eÃ#Í Åë!\Í&Í!ÁÉà :w&o·ÀÅ ÍÁ·!È,Éà fÃÕeÃeÍ7*ŸÅåÍfÑ\ÍþÿÁÊ!å*ŸåÍ fÑÑÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊšf*¡€€~#Âqf"¡*sëÍ·*ušf#"u*£+"£Ã^fÁÉÍ Í,ÚÅ FN¯xg>G�oy òÀf$ÁÉëd thereafter to the printer. To stop, type another Control-P. h Will list a brief description of all commands u This is the "user-defined-command". To set it, you just say u=com and u is set equal to "com". "com" can be anything you want - a complicated search-and-substitute you'll be doing a lot, a ".,$" , or whatever. # Toggles the line numbers on or off. < Turns the prompts on. > Turns the prompts off. = Has various uses: f=file sets def  the default filename to "file". q Quits the editor. If you try to quit without first writing the file (via "w") to disk, EDIT will scream (well, ACTUALLY it will only BEEP) at you. If you don't want your most recent changes anyway, and you find this behavior obnoxious, read on... q! Quits quietly. n x:filename This command will cause "filename" to be read form drive x and be used to EDIT the file you are in - i.e. "filename" should be a file of EDIT commands. This can be us******************************************* Print Commands *********************************************************** All line number designations for these commands are OPTIONAL. -------------------------------------------------- (line#)p Displays the line designated, and sets dot (.) to "line#". (range)l Displays the range of lines specified, showing all control characters as up-arrows followed by some character. A tab (^I) is the only control character that this editor ALLO range of lines specified. (line#)i INSERTS lines of text BEFORE the (opt.) line number. To stop, type a single period (.) on a line. (line#)j JOINS the line following "line#" to the end of "line#", making the two one line. (range)m(dest) MOVES the range of lines specified to the destination specified. They are deleted from their original location. (range)t(dest) COPIES the range of lines specified to the destination specified. The lines are NOT deleted form their orig/string/ Will search FORWARD through the file for the next occurrence of "string", and print it out. ?string? Will search BACKWARD through the file for the last occurrence of "string". A "print" is implied. g/string/ Will search and print out all occurrences of "string" in the file. v/string/ Will print out all lines in the file which DO NOT contain "string". The "Search and Substitutes": --------------------------- (range)s/search/replace/ Will substitute "replace" for thed to add one of your files to another (there's no explicit command for this). Copy the text you want to add into a file, precede it with an "a" for append, and follow it with a period ".", and then use the file to EDIT the file you want to add the text to. NOTE!! If a filename is not specified, it will use the current default filename - which will probably NOT contain EDIT commands.... **************************************************************** Commands Concerning LiWS you to put in, but other sneaky little devils culd creep in... (range) Displays the range specified with all control characters shown as an up-arrow followed by a letter . The only control character this editor will allow you to insert is a tab (^I) but others may creep in, the sneaky little devils. (line#): Prints from (line#) to (line# + 16); sets dot equal to (line#). (line#)& Prints from (line# - 16) to (line#), leaves dot at (line#). (line#)" Prints from (line# +inal location. Example: 141>a 142 line one of ridiculous text 143 line two 144 third boring line 145 fourth insipid line 146 boring boring boring 147 . 146>142,143m146 146>142,146 142 third boring line 143 fourth insipid line 144 line one of ridiculous text 145 line two 146 boring boring boring 146>146t142 146>142,147 142 boring boring boring 143 third boring line 144 fourth insipid line 145 line one of ridiculous text 146 line two 147 boring boring boring ****************e FIRST occurrence of "search" on all lines in "range". (range)s/search/replace/p Will do the same, but will print the final result. (range)s/search/replace/gp Will substitute for ALL occurrences on each line. The "Interactive Substitute": ---------------------------- (range)x/search/replace/p Will search and display each occurrence (singly, of course!) of "search" in "range". The search string will be marked on each line by up-arrows (^); if a tab ines **************************************************************** (line#)a APPENDS lines of text AFTER the (optional) line number. To stop, type a single period (.) on a line. (line#)ac APPEND COMMENT to (line#). This will automatically add a "/*" onto the line you specify - you then type in the text of your comment, and hit , and it adds the closing "*/". (range)c CHANGES the line or lines specified. To stop, type a single period on a line. (range)d DELETES the line or 1) up to (line# + 17), leaves dot at (line#). (line#)~ Prints from (line# - 16) up to (line#), sets dot to (line# - 16). (line#)% Prints from (line# - 8) up to (line# + 8) to show the context of a line. ***************************************************************** Search and Substitute Commands ***************************************************************** These come in several flavors.....depending on your tastes... The General "Searches": ----------------------   s in the search string it will be marked by vertial lines (|). After displaying the search string, it will wait for you to reply : type a period (.), and it will do the substitution of "replace" for "search"; answer with a carriage return and it will NOT. A "/" is generally used to delimit the search and replace strings, but another character can be used, like a "@". -------------------------------------------------- There are also some "special charanged q! - Quits quietly & - .-16,.p r - Reads in files " - .+1,.+17p s - Search and substitute ~ - .-16,.p '.' set to .-16 t - Line copy = - Tells you what ., $, etc is u - User defined command # - Toggles line numbers v - Global if not > - Turns prompts off w - Writes out a file < - Turns prompts on x - Interactive substitute / - Forward search h - Help (I don't know what to do!) ? - Backward search Turns prompts on x - Interactive substitute / - Forward search he (snooze) /* a boring function */ 313 . 312>s/(*~)/&,fizzle/p 312 snore (snooze, fizzle) /* a boring function */ 312>s//&,zzzzz/p 312 snore (snooze, fizzle, zzzzz) /* a boring function */ 312> The combination "*." stands for any number of any character. Note that it matches the LONGEST occurrence of the search string. This is useful, but can be tricky if you're not careful. Notice also that it will remember the last search string if you just say // , but can be tricky if you're not carefer blanks */ col++; } if( c == EOF ) break; putchar( c ); if( c == NEWLINE ) col = 1; else col++; } } /* * example: if tabsize == 8 then tab stops will be at: * 1 9 17 25 33 ... */ settab( tabs, tabsize ) char *tabs; int tabsize; { int i; for( i = 1 ; i < MAXLINE ; i++ ) if( (i % tabsize) == 0 ) tabs[i+1] = true; else tabs[i+1] = false; } BOOLEAN tabpos( col, tabs ) char *tabs; int col; { if( col > MAXLINE ) return( true ); elsacters" that can appear in these "search" and "replace" strings: CHARACTER MEANING & In a "replace" string, "&" stands for the string you just searched for. $ In a "search" string, stands for the end-of-line. ^ Stands for the beginning-of-line. * Zero, one, or many of the character immediately following it. . A "wild-card": any character. ~ "not" character: a match will occur for anything EXCEPT the character immediately following the "~". /* copyright (c) 1982 Peter Baker */ #include /* * Replace blanks by tabs using standard input and output. * * Heavily derived from Software Toolworks by Kernighan and Plauger. */ #define BOOLEAN int #define MAXLINE 133 #define BLANK ' ' #define TAB 0X09 #define NEWLINE '\n' main( argc, argv) char *argv[]; int argc; { int c; /* int because it has to be able to hold EOF */ int col, i, newcol; BOOLEAN tabpos(); BOOLEAN tabs[MAXLINE]; int tabsize; /* ta - Appends text to lines \ - Force character ac - Appends comments to lines ~ - Not character c - Changes lines . - Any character d - Deletes lines * - 0, 1, or many characters g - Global search ^ - Begining of line i - Inserts text before lines $ - End of line j - Joins two lines together & - The searched for string l - Prints line with control characters m - Line move n - Use a command file ^ - .,$ p - Prints lines % - Display context q - Quits : - .,.+16p '.' unche return( tabs[col] ); } / if( argc > 1 ) { if( *(argv[1]+1) == 'T' ) tabsize = atoi( argv[1]+2 ); else  You could try to find "th~is", for example. This is especially useful if you're a lousy speller. \ The "force" character: if you want to actually look for a string containing one of these special characters, precede it with a "\" to "force" it into the string. Some Example Substitutions: -------------------------- 309>a 310 I think I am losing my mind. 311 . 310>s/t*.n/am so bore/p 310 I am so bored. 310>s/so/& & & /p 310 I am so so so bored. 310>a 311 312 snorab at every tabsize'th column */ if( argc > 1 ) { if( *(argv[1]+1) == 'T' ) tabsize = atoi( argv[1]+2 ); else tabsize = 8; } else tabsize = 8; settab( tabs, tabsize ); col = 1; while( 1 ) /* repeat until break */ { newcol = col; while( (c = getchar()) == BLANK ) /* collect blanks */ { newcol++; if( tabpos( newcol, tabs ) ) { putchar( TAB ); col = newcol; } } while( col < newcol ) { putchar( BLANK ); /* output leftov  ÃE!öþ9ù* å* å*å*å*å!9Í! å!ÑÍ€ Êt!9Í! ##Í! #Í ¬ÿÍh Êk!9Í! ##Í! ##åÍãÁ" Ãq!" Ãz!" ! 9å* åÍKÁÁ!"!|µÊ/*" Íu"àÿÍh ÊØ* #" +* å! 9åͯÁÁ|µÊÕ! åÍ)Á* "Ü*å* ÑÍ� Êù! åÍ)Á*#"+ÃØ*#Íh ÊÃ/*åÍ)Á*öÿÍh Ê$!"Ã,*#"+ÃŽá"á"á"á" á" ! 9ùÉ*Iå!"I*Iå!…ÑÍ� ʪÃq*I#"I+ÃU*Ië!9Í! Í ëÍh ʘ*I#ë!9Í! 6ç*I#ë!9Í! 6Ãfá"IÉ!9Í! å!…ÑÍ€ ÊÈ!ÉÃÜ!9Í! ë!9Í! Í ÉÉ*áå*ßå*Ýå!"Ý!9Í! ë*Ýz·> S\)ë)ëÒ = ɯõÃ) z¬õ¬ëüõ ë|·ôõ MD!x<Â= z�>ÚB jS\>)ë)ëÒJ #å áÒR =ÂB ëñðëÍõ ëÃõ ëáN#F#x±Êz ~#»~#Âc ºÂc Åáé "Ò > w+ „ ¯w w##w wàÿ ë#~+þ:¯ ~##ÍÔ Ö@~#·Èþ.ÊÀ ÍÔ ï ë*Ò ++·ÈÍÔ w#ÃÆ :æþaøÖ ÉO!¯ ~_#V²Àå!$åÍQëáár+sbk#|µÉ "Å!Ô Õåö ¾Â# Ñái&ÉáÑ ~·Â!�~þÿÊ<#Â.ÃFÁÑÕÅë~#Fëðÿ6,pùÿw62½ëÍî å!9Í! ÁÅy=åÍÜ áÊFÕëÍ{ >þwÂ�ÑÕÍÑÍÑ<ÊF!Œs 6#6Íÿ ~+¶ÂÈÕåÅÍQÁëás#r{²ÑÊFë¯ÉÁÑÕÅ{þ Úé!ÌÍå#Ø^Í!É!n¯w#w!Œ~<ÊF6ÿÍK!¡~þrÊ8G!“ÕÍ! }·Ê7ë*ŠxþuÊ->w#Â&%åÅÍQ ÁÁÑ{=ÕÍÜ Í<áÀ!7É!`N#FÅá"ŠÉÍ´{þ ÒÞ¯¹+†åÕ*Šå!åÍ~ ÁÁÑÕë½ s{²ÑáÊ%ÕåÍ! #Í& +ë*ŠF!¨Ñ>b¾Ê°xþ ÊYþÊ%·ÊYh&ÉáÁÑÕÅå{þ ÐÍK!½~!“N#F¹À¯wG+wO#ÉÍ´{þ ÚêÁÑáåÕÅÃ@+å!9~þ  å!¨~þbÊi d,comp ; Query compressed call pmsg call conin cpi 'Y' jz yescom cpi 'y' jz yescom lxi d,nn call pmsg mvi c,146 ; turn off compressed mode call list jmp next2 yescom: lxi d,yy call pmsg mvi c,15 ; turn on compressed mode call list next2: lxi d,dbw ; Query double width call pmsg Š mvi c,1BH ; double width lead-in (Graftrax +) call list mvi c,'W' call list call conin cpi 'Y' jz yesdbw cpi 'y' jz yesdbw lxi d,nn call pmsg mvi c,0 ; turn double width oÍ àÿÍh Â$!9Í! ë*ÝÍ öÿÍh ÍL Â@!9Í! ë*ÝÍ ÷ÿÍh ÍL ÊWÃT*Ý#"Ý+ÃõÃI!"á!9Í! ë*ÝÍ ÕÿÍh ÂŒ!9Í! ë*ÝÍ ÓÿÍh ÍL ʼ*Ý#"Ý+ë!9Í! Í ÕÿÍh ʶ!ù!ÿÿ"á!"ß!9Í! ë*ÝÍ å!0ÑÍ„ Êó!9Í! ë*ÝÍ å!9ÑÍ… ÍL Ê,Ã*Ý#"Ý+ÃÂ*ß Íý å! 9Í! ë*ÝÍ ÑÐÿ"ßÃü*áë*ßÍý ëá"Ýá"ßá"áëÉ*+%"f%"d%"bÜÿ "³ "± "¯yÿ 6"„+6„+ùÕ!€^6*F+N+ÅòÊŽ3!Gå!9~#·ÊÛþ Ê–Oþ"ʯþ'ʯ +Ñ}|Õå+#~·Êƹ¹6#ã~#þ<Êûþ>Ê !E4áÖá6ÿ#6ÿ*Eå!GåÍ *O|µÊøåÍËÃå! å ; This program queries user for various EPSON MX-80FT ; modes and sets them accordingly. ; Written by James R. Hossenlopp 9/5/1982 ; 3465 Big Ridge Road, Spencerport, N.Y. 14559 ; for general CPM systems cout equ 0002 ; Console out function cin equ 0001 ; Console in function string equ 0009 ; String output function BDOS equ 0005 ; Standard CPM entry PRINT equ 0005 ; List output function READBUF equ 000ah ; Read console buffer function org 100h ; set for com file LXI H ! 5 > áà 6á> *Š wãåå`i#Í& ᯾áÂB ÁÑÕÅÕ%,å!åÍQ ÁÁÁ|µ!ÿÿÈø!9n&: ·ÊØɯ2[ >Ã… Âå!9Í! ë!|:[ w!nÁÅx†wÒ| #4áÉ>2[ >2Z :†·Ä¤Í Åx±Êñ ÕåÅÕëÍÑ:Z OÍÁ·Â¾ !€ÿ DMá€ÑÓ áÑ:Z þÂñ á×  Í!ÿÿÃ÷ Write error - Disk full $Ñ`iÍî å€ÍáÃ\ !9~=+åÍÜ áÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!Âf »Âf ,ɯÉ|µÊR !¯ÉÁÑÅ|º}!À»À-ÉëÃ� ë|ºÂ� }»ÊO z¼Ê¤ õ¬!ò  ñÐ-ÉñØ-É{½!Ø-Éëz¼Â¦ {½Â¦ ÃO ëz¼Â¦ {½Â¦ !Éëø||g}oÃÊ ëø¯|g}oÃØ ëø)Ãå ÁÑÅ{•ozœgÉ+|/g}/oÉDM!ff (Graftrax +) call list jmp next3 yesdbw: lxi d,yy call pmsg mvi c,1 ; turns on double width (Graftrax +) call list next3: lxi d,emp ; Query emphasized call pmsg call conin cpi 'Y' jz yesemp cpi'y' jz yesemp lxi d,nn call pmsg mvi c,1bh call list mvi c,'F' ; turns off emphasized mode call list jmp next5 yesemp: lxi d,yy call pmsg mvi c,1bh call list mvi c,'E' ; turns on emphasized mode call list next5: lxi d,italic ; Query italicized call pmsg caÍû" Ãrå!MåÍû"OÁÁÚ%áÑÕÖ2 ÍÍCan't open > or < file.$ÃìwÑÁÅÕ*s Úoë! þ9íRÚo*së"sëÉ!ÿÿÉþ * }´ÊÜåÍYÁÉta:ƒ<*„¾ØÈë ͯ2ƒ ÍÂÇ Í·ÈÍþÊþÊJþ ÂÁ> _*„~+¾Ð#4N s> »ÌÉÍJ> !ÈÍåØÅ:†¹Âû͇2ƒ_~ÃþÍÁþ   Í> à ÂþÊÙþÊ%à !ÿÿÉÁÑÕÅ*O}´Ê=ÕåÍØÁÁÉë> å!ÌÍåÑØÕë}þ ÂZ ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö Ú÷þò÷_~O·À7Ã%ÁáÑÕå,0 ; SAVE CPM ORIGINAL STACK FOR SMOOTH RETURN DAD SP SHLD OLDSP LXI SP,STKTOP lxi d,intro ; List Header call pmsg ; send string lxi d,double ; Query double strike call pmsg call conin ; yes or no ( Y or N ) cpi 'Y' jz yesds cpi 'y' jz yesds lxi d,nn ; no call pmsg mvi c,1bh ; escape call list mvi c,'H' ; turn off double strike call list jmp next1 yesds: lxi d,yy call pmsg ; yes mvi c,1bh call list mvi c,'G' ; turn on double strike call list next1: lx  ll conin cpi 'y' jz yesita cpi 'Y' jz yesita lxi d,nn call pmsg mvi c,1bh call list mvi c,'5' call list next10: lxi d,papout ; Query paper out sensor option Š call pmsg mvi c,1bh ; Start escape sequence call list call conin cpi 'y' jz igpout cpi 'Y' jz igpout lxi d,nn call pmsg mvi c,'9' ; Enable paper out sensor call list next11: nop ; was perf skip but setting top of form seemed ; to cancel it. next12: lxi d,0ffffh ; Pause before repainting header l CALL LIST ; NOT EXACTLY A FULL FORM MVI C,'C' ; FORM = 113.14286 CALL LIST MVI C,113 CALL LIST jmp cpm yesita: lxi d,yy ; Yes send italics command call pmsg Š mvi c,1bh call list mvi c,'4' call list jmp next10 igpout: lxi d,yy ; Yes disable paper out sensor call pmsg mvi c,'8' ; ignore paper out sensor call list jmp next11 yperf: lxi d,yy ; Yes jump over perforations call pmsg mvi c,'N' call list mvi c,3 ; Jump by three (3) lines call list jmp cpm1 concall list call conin cpi 'y' jz yperf cpi 'Y' jz yperf lxi d,nn call pmsg mvi c,'O' ; Disable auto jump over perforations call list cpm1: mvi a,0dh ; All Done ! call conout mvi a,0ah call conout LHLD OLDSP SPHL RET ; return to CPM next7: lxi d,yy ; Set 1&1/2 line feed. Š call pmsg mvi c,1bh call list mvi c,'A' call list mvi c,18 call list ; mvi c,1bh ; Remove for Graftrax80 ; call list ; mvi c,'2' ; call list MVI C,1BH ; SET FORM TO 44 LINES CALL LISTmphasized Mode? ( Y or {N} ) ==>$' nn db 13,'No,$' yy db 13,'Yes,$' norm db 13,10,10,' Normal Line Feed? ( {Y} or N ) ==>$' half1 db 13,10,10,' 1&1/2 Normal Line Feed? ( Y or {N} ) ==>$' space2 db 13,10,10,' Double Line Feed? ( Y or {N} ) ==>$' complf db 13,10,10,' Compressed Line Feed? ( Y or {N} ) ==>$' italic db 13,10,10,' Italicized Mode? ( Y or {N} ) ==>$' papout db 13,10,10,' Ignore Paper Out Sensor? ( Y or {N} ) ==>$' perf db 13,10,10,' Skip Over Page Perfoll: dcr e nop nop nop nop jnz lll dcr d jnz lll lxi d,intro ;Repaint header call pmsg lxi d,norm ; Normal line feed? call pmsg call conin cpi 'n' jz next6 cpi 'N' jz next6 lxi d,yy call pmsg mvi c,1bh call list mvi c,'A' call list mvi c,12 call list ; mvi c,1bh ; Remove for Graftrax80 ; call list ; mvi c,'2' ; call list MVI C,1BH ; SET FORM TO 66 LINES CALL LIST MVI C,'C' CALL LIST MVI C,66 CALL LIST jmp cpm Šnext6: lxi d,nn ; One and 1out: PUSH B PUSH D PUSH H MOV E,A ; PASS CHAR. IN "E" FOR CPM CALL MVI C,cout ; CONSOLE OUT FUNCTION CALL CALL BDOS POP H POP D POP B RET conin: MVI C,cin ; CONSOLE IN FUNCTION CALL CALL BDOS RET PMSG: MVI C,string ; STRING OUTPUT FUNCTION CALL CALL BDOS RET list: PUSH B PUSH D PUSH H MOV E,C ; PASS CHAR. IN "E" FOR CPM CALL MVI C,PRINT ; LIST DEVICE FUNCTION CALL CALL BDOS POP H POP D POP B RET NOCR: LDAX D ; SIMILAR TO STRING ROUTINE BUT DOES NO MVI C,'C' CALL LIST MVI C,44 CALL LIST jmp cpm next8: lxi d,yy ; Set double spaced line feeds call pmsg mvi c,1bh call list mvi c,'A' call list mvi c,24 call list ; mvi c,1bh ; Remove for Graftrax80 ; call list ; mvi c,'2' ; call list MVI C,1BH ; SET FORM TO 33 LINES CALL LIST MVI C,'C' CALL LIST MVI C,33 CALL LIST jmp cpm next9: lxi d,yy ; Set compressed line feed call pmsg mvi c,1bh call list mvi c,'1' call list MVI C,1BH ; SET FORM TO 113 LINESration? ( Y or {N} ) ' db 13,10,' provides auto formfeed at page length - three lines' db 13,10,' answer here please ==>$' BUFF: DS 32 ; CONSOLE BUFFER OLDSP: DS 2 DS 64 ; STACK AREA, 32 LEVEL STKTOP: DS 2 end /2 line feed? call pmsg lxi d,half1 call pmsg call conin cpi 'y' jz next7 cpi 'Y' jz next7 lxi d,nn call pmsg spc2: lxi d,space2 ; Double spaced? call pmsg call conin cpi 'y' jz next8 cpi 'Y' jz next8 lxi d,nn call pmsg cmplf: lxi d,complf ; Compressed line feed? call pmsg call conin cpi 'y' jz next9 cpi 'Y' jz next9 lxi d,nn call pmsg cpm: lxi d,perf ; Query auto form feed before perforations call pmsg mvi c,1bh ; Start escape sequence T CPI '$' ; AUTOMATICALLY SEND CR AT END OF STRING RZ CALL CONOUT INX D JMP NOCR intro db 0CH,1AH,'Epson MX80-F/T with Graftrax + Set-up Program',13,10 db 'Answer questions yes or no by entering ( Y or N )',13,10 db ' Just entering Carriage Return will enter default value { }$' comp db 13,10,10,' Compressed Mode? ( Y or {N} ) ==>$' double db 13,10,10,' Double Strike Mode? ( Y or {N} ) ==>$' dbw db 13,10,10,' Double Width Mode? ( Y or {N} ) ==>$' emp db 13,10,10,' E  !9"ð12ÌÍ®™Í®ͨþYÊ6þyÊ6ͮʹHÍ´ÃF$ͮʹGÍ´nÍ®ͨþYÊgþyÊgÍ®’Í´Ãr$ͮʹÇͮʹWÍ´ͨþYÊ�þyÊ�ͮʹè$ͮʹôÍ®ͨþYÊÎþyÊÎͮʹFÍ´ÃÞ$ͮʹEÍ´äÍ®ͨþyÊgþYÊgͮʹ5ʹͮʹͨþyÊzþYÊzÍ®9Í´ÿÿÂ(Â(ÌÍ®*Í®ͨþnÊtþNÊt$ͮʹAÍ´ Í´Í´CÍ´BÍ´ÃÅÍ®VÍ®ͨþyÊ÷þYÊ÷Í®ˆÍ®ͨþyÊþYÊÍ®´Í®ͨþyÊEþYÊEÍ®BͮʹͨþyʈþYʈÍ®OÍ´> Í›> Í›*ðùÉ$Í®Íç;*å*å*å! 9̓ +++Í® Ê9Í´!åͼÁ!åÍNÁ! 9̓ ̓ å!åÍ] ÁÁ"ÍÊ Ê}Í´!å! 9̓ ̓ åͼÁÁ!åÍNÁ! 9̓ ##̓ #åÍBÁ"!9å*åÍ» ÁÑ}#Í® Êö!9Í} åÍ‹ Á!9Í} öÿÍÊ Êó!"*å*ÑÍñ ÊóÃè*#"+ÃÌ! åÍ‹ ÁÃÝÃ’á"á"á"3É Usage: ms -n infile r ms can't open %s for reading *@å*>å*<å!"<!9̓ ë*<Í} àÿÍÊ Âƒ!9̓ ë*<Í} öÿÍÊ Í® Ÿ!9̓ ë*<Í} ÷ÿÍÊ Í® ʶó*<#"<+ÃTè!"@!9̓ ë*<Í} ÕÿÍÊ Âë!9̓ ë*<Í} ÓÿÍÊ Í® Ê*<#"<+ë!9̓´AÍ´Í´Í´CÍ´,Í´ÃÅ$ͮʹAÍ´Í´Í´CÍ´!Í´ÃÅ$ͮʹ1Í´Í´CÍ´qÍ´ÃÅ$ͮʹ4Í´Ã$Í®8Í´Ã$$Í®NÍ´Í´ÃèÅÕå_ÍáÑÁÉÍÉ ÍÉÅÕåYÍáÑÁÉþ$ÈÍ›ÃÁ Epson MX80-F/T with Graftrax + Set-up Program Answer questions yes or no by entering ( Y or N ) Just entering Carriage Return will enter default value { }$ Compressed Mode? ( Y or {N} ) ==>$ Double Strike Mode? ( Y or {N} ) ==>$ Double Width Mode? ( Y or {N} ) ==>$ Emph/* copyright (c) 1982 Peter Baker */ /* multiple space from an input file to the standard output */ /* ms -n infile */ #include main( argc, argv ) int argc; char **argv; { FILE fd; int i, n; char c; if( argc != 3 ) { printf( "\nUsage: ms -n infile \n" ); exit( 1 ); } if( ( fd = fopen( argv[2], "r" ) ) == NULL ) { printf( "\nms can't open %s for reading\n", argv[2] ); exit( 2 ); } n = atoi( argv[1]+1 ); while( ( c = getc( fd ) ) != EOF ) { putchDJQ_QQQa ^QQ_QQ^b NQPPPQNc \RQQQR\d _PP^PP_e _PP^PPPf NQPPSQNg QQQ_QQQh _DDDDD_i AAAAQIFj QRTXTRQk PPPPPP_l Q[UQQQQm QYUUUSQn DJQQQJDo ^QQ^PPPp DJQQUJEq ^QQ^TRQr NQPNAQNs _DDDDDDt QQQQQQNu QQQQQJDv QQQQU_Qw QJJDJJQx QQJDDDDy _ABDDH_z @@@@@@@ .ÉÌIJ .ÉÌIJ1 .ÉÌIJ2 .ÉÌÄÖ .ÉÌÄÖ1 .ÉÌÄÖ2 .ÉÌÅ  K.ÉÌÔ  T.ÉÍÏÄ u.É Í} ÕÿÍÊ Ê!Ã!ÿÿ"@!">!9̓ ë*<Í} å!0ÑÍæ ÊR!9̓ ë*<Í} å!9ÑÍç Í® Ê‹Ãf*<#"<+Ã!*> Í_å! 9̓ ë*<Í} ÑÐÿ">Ã[*@ë*>Í_ëá"<á">á"@ëɦ!9"¤É*¤++"¤̓ åÍAÁ*¤å!9ÑÍÊî*¤++"¤̓ åÍÁÃÌÉ*¤++"¤̓ }2¨:¨Í~ å*¤++"¤̓ åÍSÁÁÃÌÉ*¤++"¤̓ "©*©å*¤++"¤̓ åÍlÁÁÃÌÉ!å!9̓ åÍSÁÁÉ!9Í} }2¨!9̓ "¦͈É!9̓ "©!þÿå!9̓ åÍSÁÁÉ*¦Í} Í® Ê¡*¦Í} ÛÿÍ® Í® ʺ*¦#"¦+Í} åÍ»ÁÈÉ:¨Í~ Ã!9Í} åÍ‹ ÁÃ*©#"©+å!9Í} Ñ}*©6Ã!9Í} å:¨Í~ åÍ: asized Mode? ( Y or {N} ) ==>$ No,$ Yes,$ Normal Line Feed? ( {Y} or N ) ==>$ 1&1/2 Normal Line Feed? ( Y or {N} ) ==>$ Double Line Feed? ( Y or {N} ) ==>$ Compressed Line Feed? ( Y or {N} ) ==>$ Italicized Mode? ( Y or {N} ) ==>$ Ignore Paper Out Sensor? ( Y or {N} ) ==>$ Skip Over Page Perforation? ( Y or {N} ) provides auto formfeed at page length - three lines answer here please ==>$ar( c ); if( c == '\n' ) { for( i = 1 ; i < n ; i++ ) putchar( '\n' ); } } } toi( argv[1]+2 ); else   ÁÁÃÃÍÃÄÓþÿÃîÉ*¦#"¦+Í} ÍÊ Ê+É!"«*¦Í} å!0ÑÍæ ÊP*¦Í} å!9ÑÍç Í® Ê}Ã\Ã1*« Í_å*¦#"¦+Í} ÑÐÿ"«ÃY! }2­! "²"®!"°*¦#"¦+Í} Ã9!"²!9̓ åͲÁÃV!0}2­!"®!9̓ åͲÁÃV!0}2­!"®!9̓ åͲÁÃV!9̓ åÍ»ÁÃV!9̓ Í} |µÊ+!9å̓ #͈ +Í} åÍ»Á*«+"«Ãý! åÍ�ÁÃVÃVÍád§u¶oÒxîcýs͈É!9̓ å! ÑÍñ Êz!9̓ 0É!9̓ AöÿåÍ»ÁÉ*«+"«å!ÑÍæ ʯ:­Í~ åÍ»ÁÃ�É^0*°å!9̓ "°*«+"«#*²ÍÊ Êö*°.|æ€g|µÊö*«+"«#*°ÍW"°!"°*°å*®ÑÍ#~+þ:Â~##Í6Ö@~#·Èþ.Ê"Í6Ãë*4++·ÈÍ6w#Ã(Á*æþaøÖ ÉO! ~_#V²Àå!$åͳëáár+sbk#|µÉ "4> w+ Âæ¯w w##w wàÿ ë 6#6Íÿ ~+¶Â* ÕåÅͳÁëás#r{²Ñʨ ë¯ÉÁÑÕÅ{þ ÚK !. ÍG #Ø^Í!É!Ð ¯w#w!î ~<ʨ 6ÿÍ­ ! ~þrÊš G!õ Õ̓ }·Ê™ ë*ì xþuÊ� >w#ˆ %åÅͳ ÁÁÑ{=ÕÍ>Í<áÀ!7É! N#FÅá"ì ÉÍ {þ Ò@ ¯¹+Âè åÕ*ì å!åÍà ÁÁÑÕë s{²Ñáʇ Õå̓ #͈ +ë*ì F! Ñ>b¾Ê xþ Ê» þʇ ·Ê» h&ÉáÁÑÕÅå{þ ÐÍ­ ! ~!õ N#F¹À¯wG+wO#ÉÍ {þ ÚL ÁÑáåÕÅâ +å!9~þ Âv å! ~þbÊs !p 5Âq > áÃv 6á> *ì wãåå`i#͈ ᯾ᤠÁÑÕÅÕ%,å!åͳ ÁÁÁ|µ!ÿÿÈø!9n&:p ·Ê: ɯ2½ >Ãç ¶1å!9̓ ë!Þ :½ w!Ð ÁÅx†wÒÞ #4áÉ>2½ >2¼ :è·Ä Íf Åx±ÊS ÕåÅÕë*ùÍKÍžÃ+PžáGoZÃ'Ã+ÃFÃŽÃrÃ7 :²2É!³q:³þ ÊŠ *³MÍ8 ÃÖá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/oÊ*°å!ÑÍÍ® Ê3Í�*°|µÊ(!-åÍ»Á*°åÍZÁá*®øÿÍÊ ÊM*°ë!Í9Ãq*®öÿÍÊ Êg*°ë! Í{Ãq*°ë!Í9åͲÁ*®öÿÍÊ Ê‘*°ë! Í{ëÜ*®+å*°ͤ åÍZÁá"°É*+%"È %"Æ %"Ä Üÿ " " " yÿ 6"æ+6„+ùÕ!€^6*F+N+ÅòáÊð3!©å!9~#·Ê=þ ÊøOþ"Êþ'Ê +Ñ}|Õå+#~·Ê(¹Â6#ã~#þ<Ê]þ>Êo!§4áÃøá6ÿ#6ÿ*§å!©åÍ *±|µÊZåÍ- Ãå!kåÍ] "mÃzrå!¯åÍ] "±ÁÁÚ‡áÑÕÃø” ÍÍCan't open > or < file.$ÃNwÑÁÅÕ*Õ ÚÑë! þ9íRÚÑ*Õë"ÕëÉ!ÿÿÉ`*m}´Ê> åÍ» ÁÉʰ:å<*æ¾ØÈë ͯ2å The files named .CPM are actually .COM files for CP/M. If you copy the files to a CP/M system without using 22DISK, just rename all *.CPM to .COM ÍÑ:¼ OÍÁ·Â !€ÿ DMá€ÑÃõ áÑ:¼ þÂS á9  Í!ÿÿÃY Write error - Disk full $Ñ`iÍPå€Íáþ !9~=+åÍ>áÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!ÂÈ »ÂÈ ,ɯÉ|µÊ´ !¯ÉÁÑÅ|º}!À»À-ÉëÃñ ë|ºÂñ }»Ê± z¼Êõ¬!òñÐ-ÉñØ-É{½!Ø-Éëz¼Â{½Âñ ëz¼Â{½Â!Éëø||g}oÃ,ëø¯|g}oÃ:ëø)ÃGÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂnS\)ë)ëÒv =ÂnɯõËz¬õ¬ëüWë|·ôWMD!x<Ÿz�>Ú¤jS\>)ë)ëÒ¬#å áÒ´ =¤ëñðëÍWëÃWëáN#F#x±ÊÜ~#»~#ÂźÂÅÅáé "4> w+ Âæ¯w w##w wàÿ ë#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• ÍæÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2r+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍÆþ.¶ÍÆ66ÑÁÉÅþ*>?ÊéÍñÚçw#ÂÏÁÍñØÃÞ> w#ÂçÁÉÍþ.7Èþ:7Èþ7ÈÍ$ Ãé Í·ÈÍþÊþʬþ Â# > _*æ~+¾Ð#4N s> »ÌÉͬ> !* ÍG ØÅ:è¹Â] Íé2å_~Ã` ÍÁþ Âv Âq  Í> Ã~  þÊ; þʇ Ã~ !ÿÿÉÁÑÕÅ*±}´ÊŸ ÕåÍ: ÁÁÉë> å!. ÍG ÑØÕë}þ ¼  ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö ÚY þòY _~O·À7Ç ÁáÑÕåÅ!6  Õåö ¾Â #Âl Ñái&ÉáÑ ~·Âh !ï ~þÿÊž #Â� è ÁÑÕÅë~#Fëðÿ6,pùÿw62á  ëÍPå!9̓ ÁÅy=åÍ>áʨ ÕëÍÝ>þwÂò ÑÕÍÑÍÑ<ʨ !î s  þ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉ*×:"¸:ál.ÍÖ3:Õ:æþö2Õ:É"¸:|·Â�!}·ÂŽ!ã.ÍÖ3Éõñõ·Ê¤!‘!ñã/ÍÖ3Éñ>�GÈ>)Í¢3é!#Í«'ñõÍœ)ÍÞÍÜ)̓(Ͱ0þÊÊØ!Í�&Î+ͽ1ÑÉ#Íœ%Âå! /ÍÖ3ñÍ,(õÍr&Í�&Íœ)ñÍÞÍÜ)̓(ÍG(É~þùÄm7#^#V#Í"Ͱ0ÉÅåë)))£R~õæþ�+̽1ñæ‡G~õæ`°2Ú:ñæ2ß:#~æ2Ù:~æ?>ÊS"=2Ó:#^#V#Õ^#V#ë"Û:ë^#Vë"Ý:Ñ:ß:·Ê}"*Æ:ë!:Ú:æ@ÊŽ""Ý:áÁÉå*ñ:#w"ñ:áÉå*ñ:~þÿʪ"·Âµ"ø*ͽ1ÍÛ9áÉ+"ñ:áÉå*ñ:+"ñ:áÉå!·="ñ:6ÿ!Õ="ó:áÉå*ñ:~·áÈþÿÉåÑÑ*=X"?XÃc!‡å*EXå*GXÑå*IXÑå*KXÑ#å!Bå! n&å! ~#foå!CXåÍu ÑÑÑÑÑÑ*CXå*IXÑÍúå*KXÑÍú"MXÃcÃfë!9ùëÁÉÃuÃU2Å!þÿ9ùDM! ~#fo#n&åÍrÑë`is! ~#fo##n&åÍrÑë! s`in}þFÂÄ! n}þIÂÄ!Ãi`in}þFÂÞ! n}þOÂÞ!Ãi`in}þTÂø! n}þIÂø!Ãi`in}þBÂ! n}þPÂ!Ãi`in}þBÂ,! n}þRÂ,!Ãi`in}þCÂF! n}þEÂF!Ãi`in}þHÂ`! n}þEÂ`!Ãi`in}þIÂz! n}þNÂz!Ãi`in}þL”! n}þS”!Ãi`in}þN®! n}þF®! Ãi`in}þPÂÈ! n}þLÂÈ! Ãi`in}þRÂâ! n}þMÂâ! Ãi`in}þSÂü! n}þPÂü! Ãi`in}ÑÑÃf! å! ~#foåÍo ÑÑë! s#r*)X|µÊz ! n&å! ~#foå!? Ãn get_val returned arg_val=%d, arg_typ= %c å!åÍl ÑÑÑÑ*)X|µÊ• !ˆ Ë å!åÍl ÑÑ`i~#fo>½Â§ >¼Êv > ½Â³ >¼Ê‚ >½Â¿ >¼ÊŽ >½ÂË >¼Ê” >½Â× >¼ÊÁ >½Âã >¼Êñ > ½Âï >¼Ê% >½Âû >¼ÊS >½Â >¼Ê€ >½Â >¼Ê­ >½Â >¼ÊÚ >½Â+ >¼Ê> ½Â7 >¼Ê7>½ÂC >¼Êd>½ÂO >¼Êy> ½Â[ >¼ÊŽ>½Âg >¼ÊÃ> ½Âs >¼Ê ÃcÍr !"-XÃcÍr !"-XÃcÍr Ãc!‡å!å!å! n&å! ~#foå!/XåÍu ÑÑÑÑÑÑÃcÍr *5Xå!å!å! n&å! ~#foå!1XåÍu ÑÑÑÑÑÑÃc*5X+å!å!å!ÉÃÇ0ÃÃ,#ÃÃq#ÃãÅ!oÿ9ùDM*)X|µÊL!• ~#foå!5ÃA TEXT:<%s>å!åÍÑÑÑ!• ~#fon}þ Êy!• ~#fon}þ Êy!• ~#fon}þ †!• ~#foåÍÑ*9XÍÒ8*9X+"9X!• ~#foë!� s#r!� s#r!� ~#fon}·Ê8!� ~#fon}þ Êë!� ~#fon}þ Êë!� ~#fon}þ  !� ^#Vr+sÕ!� ^#Vr+sënëásÃ5!� ^#Vr+sÕ!� ^#Vr+sën&€|²g}³oëásð*7XÍÒh!• ~#foåÍ Ñ!• ~#foåÍ Ñ*7X+"7Xð!• ~#fon}þ Ê*-X|µÂ�!• ~#foåÍ Ñð`iå!• ~#foåÍÑÑ+|µÂ°`iåÍÑÃ�óë!‘9ùëÁÉÃÑÇ0ÃtÃÃŒù3ÃÅ!9ùDM*)X|µÊ*AXå! ~#foå!ôà SPACE %d liõ*Ù:ë*ó:s#r#ë*Û:ës#r#ë*Ý:ës#r#ë*Õ:ës#r#ë*×:ës#r#:ß:w#"ó:ñáÉåõ*ä:ë*ó:s#r#ë*æ:ës#r#ë*è:ës#r#ë*à:ës#r#ë*â:ës#r#:ê:w#"ó:ñáÉåõ*ó:+~2ß:+V+^+ë"×:ëV+^+ë"Õ:ëV+^+ë"Ý:ëVÃÅö(Ç0Â-ÃÖCþ0Ã1ð ÃX1Ãf ÃüÃ&/Å!_û9ùDM!§ ~#foå!¥ åÍ¡ÑÑ!æÃô Version 5.1 å!åͤÑÑà !åͧÑÃþ!")X!¥ ~#fo+|µÂb!&ÃU USAGE: format file1 more than one file OK å!åͤÑÑͪ!§ ^#Vr+s!¥ ^#Vr+s!ÍÒ¤ !§ ^#Vr+së~#foå`iåÍ­ÑÑ`iå!§ü Now processing <%s>å!åͤÑÑÑ`in}þ-Âä! n}þDÂä!")XÃn!› å`iåͰÑÑ#|µÂ! `iå! à þUÂ! n}þLÂ! Ãi`in}þMÂc! n}þ1Â0!Ãi! n}þ2ÂA!Ãi! n}þ3ÂR!Ãi! n}þ4Âc!Ãi!ÿÿÃië!9ùëÁÉÃ�þ0Ã=Ã�2ü2Å!wÿ9ùDM!� ~#foå! åÍuÑÑ`i6#6`i~#foë! n}þ Êè`i~#foë! n}þ Êè`i~#foë! n}þ Êè`i^#Vr+sã`i~#foë! åÍxÑ!� ~#foå`i~#foë! nëás!� ~#fon}þ+Ê0!� ~#fon}þ-Â<`i^#Vr+sÃW!� ~#fon&åÍ{Ñ|µÂW!€Ãk`i~#foë! åÍ~ÑÃkë!‰9ùëÁÉÀÇ0Ã|3ÃÅ!þÿ9ùDM*)X|µÊ·!aYå!šì brk: OUTBUF=<%s>å!åÍwÑÑÑ!aYåÍzÑë`is#rz³Êë`i~#foaY6 `i~#fo#aY6!aYåÍ}Ñ!"_Y>2aYÃùë!9ùë n&å! ~#foå!3XåÍu ÑÑÑÑÑÑ*3X"1XÃc!‡å*1X#å!På! n&å! ~#foå!5XåÍu ÑÑÑÑÑÑÃc!‡å!å!å! n&å! ~#foå!EXåÍu ÑÑÑÑÑÑÃc!‡å!å!å! n&å! ~#foå!GXåÍu ÑÑÑÑÑÑÃc!‡å!å!å! n&å! ~#foå!IXåÍu ÑÑÑÑÑÑÃc!‡å!å!å! n&å! ~#foå!KXåÍu ÑÑÑÑÑÑÃcÍr !‡å!å!å! n&å! ~#foå!7XåÍu ÑÑÑÑÑÑÃc!‡å!å!ÿÿå! n&å! ~#foå!9XåÍu ÑÑÑÑÑÑÃc!OXå! ~#foåÍx ÑÑÃc!ÖXå! ~#foåÍx ÑÑÃc!‡å!å!å! n&å! ~#foå!;XåÍu ÑÑÑÑÑÑ*;XåÍ{ ÑÃc*AXÍÒ×!‡åÍ{ Ñ!‡å!yÿå*=X#å! n&å! ~#foå!=XåÍu ÑÑÑÑne(s), LINENO= %då!åÍ¿ÑÑÑÑÍÂ*AXå*MXÑÍÒ1ÁÉ*AX|µÂ<ÍÅ*MX#å*AXÑÍúå! ~#foåÍËÑÑåÍÈÑ*AXå! ~#foÑ"AX*)X|µÊ™*AXå!€ÃŽ LINENO = %då!åÍ¿ÑÑÑ*AXå*MXÑÍÒªÍÎÁÉÁÉúÇ0þ0Ã=Å!wÿ9ùDM*)X|µÊÿ!� ~#foå!ÙÃô GETTL command line= <%s>å!åͱÑÑÑ`i¯w#w!� ~#foå`i~#foÑn}þ ÊY!� ~#foå`i~#foÑn}þ ÊY!� ~#foå`i~#foÑn}þ ÊY`i^#Vr+sÃ!� ~#foå! åÍ´ÑÑ`i~#foë! åÍ·Ñ`i~#foë! n}þ'Ê£`i~#foë! n}þ"¬`i^#Vr+s`i~#foë! å!� ~#foåÍ´ÑÑ*)X|µÊ÷!� ~#foå!ÞÃì title = <%s>å!åͱÑÑÑÃúë!‰9ù can not open <%s>å!åͤÑÑÑÃnͳ!› å! åͶÑÑ|µÊ[ ! n}þ.ÂO ! å͹ÑÃX ! åͼÑÃ$ *AXÍÚo *aY}·Êw !‡åÍ¿Ñ`iå!€ Ö Done processing <%s>å!åͤÑÑÑÃnÍÂë!¡9ùëÁÉö þ0Å!"-X!"/X!"3X!P"5X!"1X!"7X!ÿÿ"9X!"+X!B"CX!"EX!"GX!"IX!"KX!"=X!"?X!"AX*CXå*IXÑÍúå*KXÑÍú"MX!"_Y>2aY!"]Y!F ÃH å!OXåͳ ÑÑ!X ÃZ å!ÖXåͳ ÑÑÁÉÃ~ ÃoÇ0ÃrÃtÃîüÅ!ùÿ9ùDM! ~#foåÍi Ñë`is#r*)X|µÊÅ `i~#foå!® ú COMAND %då!åÍl ÑÑÑ`i~#fo#|µÂ ! ~#foå!à Ã÷ UNKNOWN COMMAND: <%s> å!åÍl ÑÁÉÃù3Ãà3Ç0Å!9ùDM! ~#fo€ÍåÂ@! ~#foå! ~#foëás#rï! n}þ+Âk! ~#foå~#foå! ~#foÑëás#rï! n}þ-™! ~#foå~#foå! ~#foÑÍúëás#rï! ~#foå! ~#foëás#r! ~#foå! ~#foå! ~#fo~#foåÍÑÑëás#r! ~#foå! ~#foå! ~#fo~#foåÍÑÑëás#r*)X|µÊ9! ~#fo~#foå!Ã. SET *param = %då!åÍ ÑÑÑÁÉÁÉÃCþ0Å!sÿ9ùDM!‘ ~#foå`iåÍ@ÑÑ!‡ ¯w#w!‡ ~#foë`in}þ Ê�!‡ ~#foë`in}þ Ê�!‡ ~#foë`in}þ «!‡ ^#Vr+sÃd!‰ ¯w#w!‘ ~#foå!‰ ~#foÑå!‡ ~#foë`inëás{·Êõ!‡ ^#Vr+s!‰ ^#Vr+sóÃøë!�9ùëÁ  ëÁÉÃÇ0ÃÃUÃ×ÃŒù3ÃÅ!úÿ9ùDM*)X|µÊO! ~#foå!:ÃD PUT<%s>å!åÍÑÑÑ*AX|µÊe*AXå*MXÑÍÒhÍ *1XåÍ Ñ! ~#foåÍÑ*3X"1X*MXå*AXÑÍúå*/X+åÍÑÑåÍÑ*AXå*/XÑ"AX*)X|µÊã*/Xå*AXå!ÁÃ× LINENO=%d, LSVAL=%då!åÍÑÑÑÑ*AXå*MXÑÍÒôÍÃ÷ë!9ùëÁÉÃÃtÅ!üÿ9ùDMÍ`i¯w#w! ~#foå`i~#foÑn}þ Â;`i^#Vr+sÃ! ~#foå`i~#foÑn}þ Ê\`i~#fo"1X! ~#foå`i~#foÑn}þ Š*1X"1X`i^#Vr+sÃ\! ¯w#w! ~#foå! ~#foÑå! ~#foå`i~#foÑnëás{·Ê×! ^#Vr+s`i^#Vr+sÃ’ÃÚë!9ùëÁÉÃþÇ0Ã=ÃÏ$Ã|3ù3ÃL%ÃtÃ4Å!Vr+s! ^#Vr+sÃ{"! ~#foåÍ…!ÑÃ##ë! 9ùëÁÉÃ5#Ãà3Ã|3Å!9ùDM!å*5Xå*1XÑå! ~#foåÍ2#ÑÑÍúëÍËåÍ/#ÑÑ"1XÁÉÁÉÃ#Ã=ÃX þ4Ç0Ã|3Å!úÿ9ùDM! ~#foåÍt#Ñ! å! å! ~#foåÍw#ÑÑÑ! ~#foå!¾#ÃÂ#%s å! ~#foåÍz#ÑÑÑë! s#rz³Â‚$*)X|µÊ$! ~#foå!÷#Ã$ after sscanf out = <%s>å!åÍ}#ÑÑÑ! ~#foåÍ€#Ñë! s#r! å! å! ~#foåÍw#ÑÑÑ`i¯w#w`i~#foå! ~#foÑÍúÒ‚$! ~#foå`i~#foÑ6 `i^#Vr+sÃM$*)X|µÊ»$! ~#foå!™$ð$ getwrd will return %då!åÍ}#ÑÑÑ! ~#foÃÆ$ë!9ùëÁÉÃÕ$Ã|3Å!üÿ9ùDM! ~#foåÍÒ$Ñë! s#r! ~#foå! ~ ~#foåÍÚÑÑÑ! ~#foåÍÝÑ*1XåÍàÑ`i¯w#w! ~#foå`i~#foÑn}·Ê‘! ~#foå`i~#foÑn&€|¢g}£o|µÊl!_åÍãÑÃ…! ~#foå`i~#foÑn&åÍãÑ`i^#Vr+sÃ(! åÍãÑ! åÍãÑ*9X|µÂ°*9X+"9XÃÀ! ~#foåÍÝÑÃÃë!9ùëÁÉÃÕÃÍ Ã‚-Å!þÿ9ùDM`i¯w#w! ~#foå`i~#foÑn}·ÊL ! ~#foå`i~#foÑn}þ#Â' !å! ~#foåÍÏÑÑÃ@ ! ~#foå`i~#foÑn&åÍÒÑ`i^#Vr+sÃãÃO ë!9ùëÁÉÅ!þÿ9ùDM`i¯w#w! ~#foå`i~#foÑn}·ÊÁ ! ~#foå`i~#foÑnå! nÑ}»Âµ ! ~#foå`i~#foÑå! nëás`i^#Vr+sÃf ÃÄ ë!9ùëÁÉÃÖ Ã!Â-Å!òÿ9ùDM! å! å! ~#foåÍÐ ÑÑÑë! s#r!å*Ñs#r! 6#6`i6#6`i~#foå! ~#fo~#foÑÍúÒy-*##n}·ÊD)Ãy-! ¯w#w! ~#foå`i~#fo)Ñ~#foå! ^#Vr+sëÑn}þ<Êš)þ|Ê�*þ+Ê2+þ)ÊI+þ}Ê`+þ]Êw+þ>ÊŽ+ÃQ-! ~#foå`i~#fo)Ñ~#foå! ~#foÑn}·ÂÄ)õ+*å! ~#foå`i~#fo)Ñ~#foå! ~#foÑå͹(ÑÑ#|µÂ>*! ~#foå`i~#fo)Ñ~#foå! ~#foÑå!!*Ã0*Can't open %s å!åͼ(ÑÑÑÍ¿(*6!I*ÃU*å!åÍæÑÑÑ!œ ~#foåÍéÑ!œ ~#foåÍìÑ!œ ~#foåÍïÑë!” s#r*)X|µÊ’!” ~#foå!}Ç wid = %då!åÍæÑÑÑ*5Xå*1XÑÍúë!Ž s#r!aYåÍïÑë!� s#r!” ~#foå!� ~#foÑ#ë!’ s#r*)X|µÊB!Ž ~#foå!” ~#foå!� ~#foå!’ ~#foå!Ã4 new_out_width=%d, outw=%d, wid=%d, line_len=%då!åÍæÑÑÑÑÑÑ!’ ~#foå!†å!Ž ~#foåÍòÑÑÑÍÒ§!†å!Ž ~#foåÍòÑÑå!� ~#foÑÍú#ë!– s#r*_Yå!– ~#foå!aYåÍõÑÑÑÍø!œ ~#foå!aYåÍûÑÑ!¿ÃÁ å!aYåÍûÑÑ*)X|µÊü!aYå!ÝÃñ PUTWRD:OUTBUF=<%s>å!åÍæÑÑÑ*_Y##fo+Ñë`is#r`i~#fon}þ Ê3%`i~#fon}þ Ê3%`i~#fon}þ ÂC%`i^#Vr+së6à %ë!9ùëÁÉÃ[%Ç0ÃÏ$Ã|3ù3Å!øÿ9ùDM*)X|µÊÄ%! ~#foå! ~#foå! ~#foå!Œ%÷% spread:line=<%s>, nextra=%d, no_words=%då!åÍO%ÑÑÑÑÑ! ~#foÍÒæ%! ~#foÍÚé%í(*]Y|µÍ�"]Y! ~#fo+ë! s#r! ~#foåÍR%Ñ! ~#foåÍU%Ñ+ë`is#r`i~#foå! ~#foÑå!…åÍX%ÑÑë! s#r! ~#foå! ~#fo#Ñ6*)X|µÊ·&! ~#foå`i~#foå! ~#foå*]Yå!Š&é& DIR=%d, nholes=%d, i=%d, j=%då!åÍO%ÑÑÑÑÑÑ`i~#foå! ~#foÑÍúÒh(! ~#foå! ~#foÑå! ~#foå`i~#foÑnëás*)X|µÊH'! ~#fo#ë`is#r`i~#foå! ~#foÑÍÚ7!! åÍÓ Ñ`i^#Vr+sà !`i¯w#w`i~#foå! ~#foÑÍÚs!`i~#foë! n&åÍÓ Ñ`i^#Vr+sÃ=!Ãv!ë!9ùëÁÉÈ!Û4Ã|3Å!öÿ9ùDM! ~#foåÍ‚!Ñë`is#r! ~#fo6! ¯w#w! ^#Vr+s`i~#fo ëÍë! s#r! ~#foå! ~#foÑå! ~#fo0ëás`i~#fo ëÍËë`is#r`i~#fo|µÊ."! ~#foå! ~#foÑÍúÚµ!! ~#fo|·òs"! ~#foå! ~#foÑÍúÒs"! ^#Vr+s! ~#foå! ~#foÑ6-! ¯w#w! ~#foå! ~#foÑÍúÒ#! ~#foå! ~#foÑnë! s#6! ~#foå! ~#foÑå! ~#foå! ~#foÑnëás! ~#foå! ~#foÑå! ~#foëás! ^#TEMPOUT.$$$ëás#r! ~#foå`i~#fo)Ñå*Ñs#rÃŽ+*#ån&|²g}³oëásÃL)*#ån&|²g}³oëásÃL)*#ån&|²g}³oëásÃL)*#ån&|²g}³oëásÃL)! ~#foå`i~#fo)Ñ~#foå! ~#foÑn}·Âç+!»+ÃÚ+Bad redirection/pipe specifierå!åͼ(ÑÑÍ¿(! ~#foå`i~#fo)Ñ~#foå! ~#foÑå* åÍÅ(ÑÑ*#å!$,Ã0,TEMPOUT.$$$åÍÈ(ÑÑ#|µÂw,!B,ÃN,TEMPOUT.$$$å!U,Ãi, Can't create <%s> å!åͼ(ÑÑÑÍ¿(*#4*##n}·Â-`i~#foë! s#r! ~#foå! ~#fo~#foÑÍúÒò,! ~#foå! ~#fo)Ñå! ~#foå! ~#fo#)Ñ~#foëás#r! ^#Vr+sÕ,! ~#fo^#Vr+"_YÃë!˜9ùëÁÉÃÃŒÃÌÇ0Å*?X"=X*?X#"?X*EXÍÒK*EX+åÍÑ*=Xå!OXåÍÑÑ*GXåÍÑ*EXå*GXÑ#"AX*)X|µÊˆ*AXå!rÃ} LINENO=%då!åÍÑÑÑÁÉÁÉÕÇ0Â-Å!þÿ9ùDM*)X|µÊÑ! ~#foå!´ÃÆ SKIP %d line(s)å!åÍ�ÑÑÑ`i¯w#w`i~#foå! ~#foÑÍúÒ*)X|µÊý!!åÍ’Ñ! åÍ’Ñ`i^#Vr+sÃ×Ãë!9ùëÁÉÃ&ÃŒÃÌÅ*IXåÍ Ñ*KXÍÒQ*=Xå!ÖXåÍ#ÑÑ*KX+åÍ ÑÁÉÁÉÃ^Ç0Â-Å!þÿ9ùDM*)X|µÊž! ~#foå!}Ó INDENT %d spaces(s)å!åÍXÑÑÑ`i¯w#w`i~#foå! ~#foÑÍúÒÎ! åÍ[Ñ`i^#Vr+säë!9ùëÁÉÃæÃX Ãi4ÃUÂ-Å!þÿ9ùDM*9X|·ú³! å! å! ~#foå`i~#foå! ~#foå! ~#foÑn&å!+'Ã;'[%c i=%d j=%d] å!åÍO%ÑÑÑÑÑ! ~#foå`i~#foÑn}þ ÂQ(*]Y|µÂŠ'! ~#fo+å! ~#foÑÍË#ë! s#rç'! ~#foå! ~#foÑÍËë! s#r! ~#foå! ~#foÑÍúë! s#r! ~#fo+ë! s#r*)X|µÊ(! ~#foå! ~#foå!ö'à ( nblanks=%d, nextra=%då!åÍO%ÑÑÑÑ! ~#foÍÒQ(! ~#foå! ^#Vr+sëÑ6 ! ^#Vr+sÃ(`i^#Vr+s! ^#Vr+s÷&*)X|µÊª(! ~#foå!(ß( after spreading, line is: <%s>å!åÍO%ÑÑÑí(ë!9ùëÁÉÃË(Ã1Ç0ÃÖCÃß4þ0Ãn5Å!øÿ9ùDM*##sÕ*#ÑsÕ*Ñs! ~#foå! ~#fo~#fo)Ñ  s`i^#Vr+s*^#Vr+sÃN-! ~#foå! ~#foëás#r! ~#foå! ~#fo~#fo)ѯw#wÃm-! ~#fo+|µÊb-Ã|,! ^#Vr+s`i^#Vr+sÃ)ë!9ùëÁÉÑ-Ãæ5Ç0ÃÖCÃÙCÅ!9ùDM*#n&|¢g}£o|µÊ.! n}þ ÂÊ-*#å! åÍ…-ÑÑ*#å! n&åÍ…-ÑÑ#|µÂ.!ë-à .File output error; disk full? å!å͈-ÑÑÍ‹-*#n}·Ê6.*#n&|¢g}£o|µÊ.! åÍŽ-Ñ|µÊV.!åÍŽ-Ñ+++|µÂV.Í‹-! n}þ Ân.! å!åÍŽ-ÑÑ! n&å!åÍŽ-ÑÑ*#n&|¢g}£o|µÊ½.! n}þ ¬.! å!åÍŽ-ÑÑ! n&å!åÍŽ-ÑÑ*#n&|¢g}£o|µÊã.! n&å!åÍŽ-ÑÑ*#n&|¢g}£o|µÊ$/! n&å#6! ~#foå! ~#foëás#r! ~#fo^#Vr+sÕ! nëásë&ÁÉÁÉÃK7ÄEÅ!9ùDM! ~#fo~#foåÍH7ÑÁÉÁÉÃt7ÃEÇEÃØEÅ!þÿ9ùDMÍ�ÍëÒ�7!Ãà8! ~#fo##~#foÍå¬7!Ãà8! ~#fo##~#fo€ëÍËÍúë`is#rÍ�å! ~#foå! ~#fo~#foåÍk7ÑÑÑåÍ�ÑÍåÊ8!ÿÿÃà8Í�+€Í?ë`is#r! ~#fo##~#fo|µÊ­8!€å! ~#foå! ~#foåÍ�ÑåÍn7ÑÑÑ! ~#fo##å~#foåÍ�Ñëás#r! ~#foå~#foåÍ�ÑÍúëás#r!å!ÿÿå! ~#fo~#foåÍq7ÑÑÑÃà8! ~#fo##6#6! ~#foå! ~#foëás#r!Ãà8ë!9ùëÁÉÃø8ÃQAÃ�2ÃûAÃU2Å!iÿ9ùDMÃÙ2! n}þ-Â"3! 6ÿ#6ÿ! ^#Vr+s! ^#Vr+sënë! sÕÍ¿2Ñ|µÊc3Í� Í?å! nѯgÐÿë`is#rÃ"3Í�åÍ�ÑÍ?Ãs3ë!9ùëÁÉÅ!þÿ9ùDM`i¯w#w! ^#Vr+sën}·Ê©3`i^#Vr+sÊ3Í�ð3ë!9ùëÁÉÅ!9ùDMÍ�åÍ�ÑÍÚØ3Í�ÃÜ3Í�ÁÉÁÉÅ!9ùDMÍ�åÍ�ÑÍÒÿ3Í�Ã4Í�ÁÉÁÉÅ!þÿ9ùDMÍ�ë`is#rÍ�n}·Ê14! ^#Vr+sÃ4! ^#Vr+sÕÍ�nëás! ^#Vr+sën}·Â14Í�Ã`4ë!9ùëÁÉÃo4Â-Å!9ùDMÍ�n}·Ê™4! ^#Vr+sën&åÍl4ÑÃw4ÁÉÅ!9ùDMÍ�|·ò¶4Í�Íúú4Í�ÁÉÁÉÃÄ4Ã3>Å!9ùDM! åÍ�åÍÁ4ÑÑÁÉÁÉÅ!þÿ9ùDM`i¯w#w! ~#foåÍ�Ñnå!&Æ=!å! ~#foå! ~#fo~#foåÍ¢<ÑÑÑë`is#r!ÍÚ>=!ÿÿÆ=! ~#fo##6ÿ#6! ~#foå! ~#foëás#r! ~#fo^#Vr+sën&Æ=ë!9ùëÁÉÕ=ÃîFÅ!9ùDMÍ�|µÂ´=! n&åÍ’=ÑÁÉ! ~#fo##~#foÍåÂÐ=!ÿÿÁÉ! ~#fo^#Vr+sÕ! nëás! ~#fo##^#Vr+s!ÁÉÁÉÅ!9ùDM! n&aÍùͯÚ/>! n&zÍͯÁÉÁÉÃE>Ã^BÑBÃU2Ã×BÃýFÅ!òÿ9ùDM! ^#Vr+së~#foë! s#rÍ�ë! s#r! 6! ^#Vr+sënë! s{·Ê>AÍ�n}·Â§>! n&ÃHA! n&åÍ6>Ñ|µÊ»>Ãz>! n}þ%Êù>! nå! åÍ9>ÑÑÍåÊë>! n&ÃHAÃö>! ^#Vr+sÃ;A! 6#!/Ã/sending ROBO <%c> å!å͈-ÑÑÑÁÉÃ>/ÃE7ÃìCÃæ5Ãh7Ãß4ÃDÃ\DÅ*n}·Ê~/*åÍ)/Ñ*n&|¢g}£o|µÊ~/!n/Ãy/tempin.$$$åÍ,/Ñ*#n}·Ê…0*#å!åÍ//ÑÑ*#åÍ2/Ñ*#åÍ)/Ñ* å!¿/ÃË/TEMPOUT.$$$åÍ5/ÑÑ|µÊ0* åÍ,/Ñ* å!ð/Ãü/TEMPOUT.$$$åÍ8/ÑÑ!0Ã0tempin.$$$å!0Ã&0tempout.$$$åÍ8/ÑÑ*##n}·Ê…0*~#foå!I0ÃU0Ñ}þXÊk?þOÊt?þDÊ}?þUÊ£?þSÊ/@þCÊÂ@Ãþ@! 6ã?! 6ã?! åÍ9>Ñ-Íå£?! 6ÿ#6ÿ! ^#Vr+s! ¯w#w! n&å! åÍ9>ÑåÍ?>ÑÑ#|µÂÒ?! n&ÃHA! n&å! ^#Vr+sën&åÍ?>ÑÑë! s{þÿÊ!@Í� å! nѯgÍ?å! nѯgë! s#rÃÒ?! ^#Vr+sÃA! åÍ9>ÑÍ� ~#foë! s#r! ^#Vr+sënë! s{·Ê @! nåÍ�nÑ}»Â€@! ^#Vr+sà@`in}·Â�@! ^#Vr+sÕ! nëásÃH@`in}·Â¿@! 4Í�6! ^#Vr+sÃz>`in}·Âð@Í�n&å! ^#Vr+së~#foåÍB>ÑÑ! 4! ^#Vr+sÃz>!9ùëÁÉà 1çDÅ!9ùDM! ~#foå!åÍ�åÍ 1ÑÑëás#rz·ò:1!ÿÿÁÉ! ~#fo##¯w#w! ~#fo~#foÁÉÁÉÃa1Ù<Ã�=Å!úÿ9ùDM`i6‡#6Í� ë! s#rÍ� åÍ[1Ñë! s#r!ÍåÊ 1Í�#|µÂ¦1!ÃL2! ^#Vr+sÕÍ�ëás{þ Âð1Í�åÍ� #ÑÍóÒí1Í�++n}þ Âí1! ^#Vr+së6 Ã#2`i^#Vr+sz³Ê#2Í� åÍ[1Ñë! s#rz³Ê#2Í�Íå¦1Í�ÍåÂ?2Í� åÍ�åÍ^1ÑÑÍ�6Í� ÃL2ë!9ùëÁÉÃ[2Ã>Å!9ùDM! n&åÍX2Ñ|µÊ‚2! n&àÿÇ2! n&ÁÉÁÉÅ!9ùDM! n&0ÍùͯÚ¸2! n&9ÍͯÁÉÁÉÃÂ2Ã�2Å!ûÿ9ùDM`i¯w#w! 6#6Í� në! s{þ Êõ2! n}þ Â3! ^#Vr+sfoë! s#rÍ�n}·ÊT;Í�“|µÊT;!� ^#Vr+sÕ! ^#Vr+sënëás!“ ^#Vr+s!‘ ^#Vr+sà ;Í��6! ë!� s#r!� n}·Â—;!‘ ^#Vr+s!ÍÒ—;!› ^#Vr+së6 Ãp;Í�›å!� ^#Vr+sënëás{·ÊÀ;!› ^#Vr+s×;!� n}·Êñ;!‘ ^#Vr+s!ÍÒñ;!› ^#Vr+së6 ÃÊ;Ã! n&ÃHAë!9ùëÁÉÃWAÃQAÅ!ÿÿ9ùDMÍ�åÍ� ÑÍìÒ§AÍ�^#Vr+sÕÍ� ÍëÒ”AÍ�0ÜAÍ�7ëás!&ÃòAÍ� åÍ�åÍ� Ñ͉åÍ�åÍTAÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍTAÑÑÑ`in&#&ÃòAë!9ùëÁÉÃBÃ�2Å!þÿ9ùDM`i¯w#wÍ�~#fon&åÍþAÑ}·ÊNBÍ� Í?åÍ�^#Vr+sënѯgÐÿë`is#rÃBÍ�ÃUBë!9ùëÁÉÅ!9ùDM! n}þ Í�Ê�B! n}þ Í�Ê�B! n}þ Í�ÁÉÁÉ×BÃ^BÅ!ÿÿ9ùDMÍ�~#fonë`isÕÍ”BÑ|µÊÆBÍ�^#Vr+sßB`in&ÃÎBë!9ùëÁÉÃãBÃmCÃU2Ã�2Å!9ùDM! n&åÍÝBÑë! sÕ For more details on the directed I/O (NDIO in our version) see NDIO.C Sample calls: A>roff filename1 filename2 filename3 +) this would send the formatted version of these three files to the console and to the cp/m list device A>roff filename1 +)]>filename1 this would format filename1 and send it to the list device, console, robot-typewriter, and back to filename1. For more details on using the directed I/O, see NDIO.C Note the difference between ) which redirects to the *Ÿ:¡wÉÍ7Å*Ÿë!Äÿ9åååÍ&á 6C#6O#6MÑÍþÿÂ7GáÁÃ*¡ë!\Í&*£ë!lÍ&�¯!¡å~#fo´ÊpG> +#~·ÂaGá##ÃUGá!€pœG!àw#Â}GÁ:þ**Ê”G*ù!åÃàÕÅÍÑÕÍÁÑ·Â!€ëÃãÍ Í,ÚÅ FN¯xg>G�oy òßG$ÁÉve the form of a period followed by two letters. A command line should have nothing on it but the command and its arguments (if any); any text would be lost. A command argument can be either ABSOLUTE or RELATIVE : .in 5 sets the indent value to 5 spaces .in +5 sets the indent value to the CURRENT value plus 5 .ls -1 sets the line spacing value to the current value minus one Also, all commands have a minimum and maximum value that will weed ouÍÚBÑ|µÊC! ån&ÉÿëásÃCC! n&åÍàBÑ}·Ê>C! ån&ÐÿëásÃCC!ÿÿÁÉ! nå! n&+ÑÍÒbC!ÿÿÁÉÃkC! n&ÁÉÁÉÃvCçCÃ>Å!9ùDM! n&åÍpCÑ|µÍ££C! n&åÍsCÑ|µÍ£ÁÉÁÉÅ!9ùDM! n&AÍùͯÚÒC! n&ZÍͯÁÉÁÉà Í7Å:ŸO*¡ëÍo`ÁÉÍ Åë!\Í&Í!ÁÉÍ7Å*Ÿë!+DÍ&*¡ë!;DÍ&+DÍÁþÿÊ!ÉÑÑÉ,Í Åë!\Í&Í!ÁÉTELÌkÃÃÃhDÃGÇ0ÃÖCÍ7*o^#V#z³ÂpD+V+^+ÕÂ{D*måÍ_D!™Då!åÍbDÃeDBroken pipe Í7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·ÊãD=ÊãD=Âr:qo&ÉÃôDÃìCçDÍ7*ŸÅåÍîDÑlist device with \n's expanded to \r \n, and } which redirects to the printer (same port) but without expanding \n's. N.B.: dio.c accepts +outfile as output to both file and console, ndio.c does not (it wants +>foo ). Using ROFF, you can make nice printouts of a file, with as little or as much help from the program as you want, depending on the commands. There are default values for all parameters, so if you don't put any commands in at all, your file will come out with filMay 7, 1981 ROFF This version of ROFF, based on the formatter in Kernighan and Plauger's book SOFTWARE TOOLS, is written in BDS C, and employs the directed i/o functions that go along with that package. Well, half of the directed I/O anyway - it doesn't use redirected input because I wanted to be able to format more than one file at a run. Please ignore any "odd" comments to myself in ROFF1.C and ROFF2.C; I tried to find them all but there may be a few extra silly remarks around. t any odd command settings (like setting the line spacing to zero, for example. It won't let you do that, but it could be changed if you REALLY have a burning desire to do so). Some commands cause a "break", which is noted in the table below. Before such a command goes into effect, the current line of text is put out, whether it is completely filled or not. (this is what happens at the end of a paragraph, for example.) A LINE BEGINNING WITH SPACES OR A TAB WIL\ÍþÿÁÊ!å*ŸåÍñDÑÑÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊ‚E*¡€€~#ÂYE"¡*sëÍ·*u‚E#"u*£+"£ÃFEÁÉÃ#Í7*£|µÈÅDM*¡ë*ŸÍÒEÚ¶E><êªEí°ÁÉ~# x±ÂªEÁÉ ë ë><êÆEí¸ÁÉ~+ x±ÂÆEÁÉ|ºÀ}»ÉÃÞEûGÍ7:ŸÍ,ÚÅå*ŸåÍÛEÑë:£*¡·ÊF}|æ2qã å¾Ê1FãëÕÍÑáþÿÂ'FÑÁÃ:qwÕÍÑþÿÊ"F! Ñ{æwëÁÉ:w·oÊRF¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ ÂuFÅ ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊÎF*¡ëÍ*sëÕÍÑþÁÊÅþÂÓF! ~þ€ÂÎF6*uÁÉ*£+"£*¡€"¡*u#"uÚF:woåÍ2wá&ÉÍ7led, right-justified lines. The default line-length is 80 characters; the default page-length is 66 lines per page. "Filled lines" means that as many input words as possible are packed onto a line before it is printed; "non-filled" lines go through the formatter w/o rearrangement. "Right-justified" simply means that spaces are added between words to make all the right margins line up nicely. To set a parameter, use the appropriate commands below. All commands ha  L CAUSE A BREAK, AND WILL BE INDENTED BY THAT MANY SPACES (OR TABS) REGARDLESS OF THE INDENT VALUE AT THAT TIME (this is a "temporary indent", which can also be set explicitly). An all blank line also causes a break. If you find that seem to have some lines that are indented strangely, and it's not obvious WHY, look at which commands are causing a break, and which aren't. For instance: .fi .ti 0 this is a line of text .in 8 <- blank line more text for the machine to pl---------------------------------------------| | | margin 4 - (includes footer) | - ------------------------------------------------- To change the default for any parameter, simply alter ROFFGLOB recompile ROFF1.c and ROFF2.c, and re-clink them with NDIO.CRL (you can use DIO.CRL, but it doesn't have all the features of NDIO ) ************************************************************ A Few Extra Comments on Some of the Commands: ******************************************************** n lines .m3 no n = 2 1st bottom margin to n lines .m4 no n = 2 bottom-most margin to n lines .nf yes stop filling lines .pl n no n = 66 sets page length to n .rm n no n = 80 sets right margin to n .sp n yes n = 1 space down n lines .ti n yes n = 0 sets temporary indent of n .ul n no n = 1 underline next n lines ---------------------------------------------------------------------- Here's what the page parameters look like: _ __________________________ a witty header title for page # Each time this is printed at the top of a page, the current page number will be substituted for the "#". ------------------------------------ If you want to send the output to a file, and don't want the page breaks in there ( that's what I did for this ) set margins 1-4 to zero. nce are .ul underlined .nf WOULD PROay with At first glance it seems obvious that the line "this is a line of text" will be indented zero spaces, but it won't - it will be indented 8. The indent command does NOT cause a break (although the .ti does) so it will not cause the line to be put out before setting the indent value to 8. Then, when the blank line is encountered, it will cause a break - and "this is a line of text" will be indented incorrectly. *********************** Table of Commands ********************** If you want to center lots of lines, but don't want to count them, do something like this: .ce 1000 lots and lots of words to be centered .ce 0 -------------------------------------- To underline a few words on a line: .fi .ul Some of the words in .ul this sentence are .ul underlined .nf WOULD PRODUCE: Some of the words in this sentence are underlined. ---- ---- ----------- (obviously yo_______________________ | | top margin - (includes header) | | |-----------------------------------------------| | | top margin 2 | | |-----------------------------------------------| P | : : | A | :<-indent : | G | : : | E | :lots and lots of silly text and: | L | :other garbage. Get the picture?: | E | :This is a temp. indentation: | N | : : | G | : right margin -> : | T | : : | H | : : | | |-----------------------------------------------| | | margin 3 | | |--*********** Command Break? Default Function ------- ------ ------- --------- .bp n yes n = +1 begin page numbered n .br yes cause a break .ce n yes n = 1 center next n lines .fi yes start filling lines .fo string no empty sets footer to string .he string no empty sets header to string .in n no n = 0 sets indent value to n .ls n no n = 1 sets line spacing to n .m1 no n = 2 sets topmost margin to n .m2 no n = 2 sets 2nd top margin tou don't have to turn the fill on and off if it's already on ) ------------------------------------ A new paragrah may be caused by using the temporary indent command, like .ti +5 or by simply beginning the paragraph with a tab, as you would if you were just typing. ------------------------------------ Headers and Footers. A page number can be incorporated into any header or footer by putting a "#" in the title where you want the number to go: .he This is  /* * roff -a text formatter (based on SOFTWARE TOOLS by Kernighan & Plauger) * * This program appears in the BDS C Users Group "Just Like Mom's" * disk. I found no mention of the Author(s) of this program so I guessed * the authorship based on the style of comments describing functions, which * also appears in "crypt.c" written by kathy bacon and neal somos. * * * * Suggestion for compiling and linking (change to suit). * Note roff1 mentioned twice in clink command. * * cc1 ro /* right margin -> default PAGEWIDTH */ int CEVAL; /* set equal to number of lines to be centered */ /* default is 0 */ int ULVAL; /* set equal to number of lines to be underlined */ int SPVAL; /* blank lines to be spaced down */ int CURPAG; /* current output page number; init = 0 */ int NEWPAG; /* next output page number; init = 1 */ int LINENO; /* next line to be printed; init = 0 */ int PLVAL; /* page length in lines; init=66 */ int M1VAL; /* margin before#define NEWLINE '\n' #define TAB '\t' #define BLANK ' ' #define SQUOTE 0x27 /* single quote */ #define DQUOTE 0x22 /* double quote */ #define PAGELEN 66 #define FI 1 /* fill lines */ #define TI 2 /* temporary indent */ #define BP 3 /* begin page */ #define BR 4 /* causes break */ #define CE 5 /* center line(s) */ #define IN 7 /* left indent */ #define LS 8 /* line spacing */ #define NF 9 /* no fill */ #define PL 10 /* set page length */ #define RM 11 /* set right margin */ /* 7 MAY 81 */ /* based on the formatter presented in Kernighan and Plauger's SOFTWARE TOOLS, modified for BDS C */ #include "ROFF.H" main(argc, argv) int argc; char **argv; { char filename[20], line[ MAXLINE ]; struct _buf iobuf; dioinit (&argc, argv); /* directed I/O */ fprintf(STDERR,"\nVersion 5.1\n"); while (0) putchar('\7'); debug = FALSE; if (argc == 1) { fprintf(STDERR,"\nUSAGE: format file1\n more than one file OK "); exit(); } argv++; while ( --argc ff1.c -e 5000 -o * cc1 roff2.c -e 5000 -o * cc1 ndio.c -o * clink roff1 roff2 roff1 ndio -o roff -s * * Note that dio.h used with ndio is not the same as distributed with BDS C * * Above notes by Chuck Forsberg * */ /* 4 MAY 81 */ #include "bdscio.h" #include "ndio.h" int debug; int PAGESTOP; #define STDERR 4 /* send error messages to console while in DIO */ #define DEBUG ( debug != 0 ) #define HUGE 135 /* generally large number */ #define PAGEWIDTH 80 /* see RM_DEF */ and including header */ int M2VAL; /* margin after header */ int M3VAL; /* margin after last text line */ int M4VAL; /* bottom margin, including footer */ int BOTTOM; /* last live line */ char HEADER[ MAXLINE ]; /* header title */ char FOOTER[ MAXLINE ]; /* footer title */ /* defaults for global parameters */ #define FI_DEF 1 #define LS_DEF 1 #define IN_DEF 0 #define RM_DEF 80 #define TI_DEF 0 #define CE_DEF 0 #define UL_DEF -1 #define M1_DEF 2 #define M2_DEF 2 #define M3 #define SP 12 /* add blank line(s) */ #define UL 13 /* underline line(s) */ #define FO 14 /* footer title */ #define HE 15 /* header title */ #define M1 16 /* top margin */ #define M2 17 /* second top margin */ #define M3 18 /* first bottom margin */ #define M4 19 /* bottom-most margin */ int FILL; /* set to YES or NO */ int LSVAL; /* line spacing value -> default will be 1 */ int TIVAL; /* temporary indent -> default 0 */ int INVAL; /* left indent -> default 0 */ int RMVAL;> 0 ) { strcpy (filename, *argv++); /* get next argument */ fprintf(STDERR,"\nNow processing <%s>",filename ); if (filename[0] == '-' && filename[1]=='D') { debug=TRUE; continue; } if (ERROR == fopen( filename, &iobuf )) { fprintf(STDERR,"\ncan not open <%s>", filename ); continue; } init_defaults(); while ( fgets( line, &iobuf ) != 0 ) /*until EOF or CPMEOF */ { if (line[0] == COMMAND ) comand (line); else text (line); } if (LINENO  #define COMMAND '.' /* all commands starts with this */ #define CONSOLE -5 /* one of output options */ #define PRINTER -4 /* another */ #define FILE -3 /* another */ #define UNKNOWN -1 /* returned if doesn't recg. command */ #define NO_VAL -32760 /* returned when no argument w/commad */ #define WE_HAVE_A_WORD 1 /* returned by getwrd func. */ #define NO 0 #define YES 1 #define UNDERLINE '\137' #define CR 0x0D #define BACKSPACE '\b' #define NUMSIGN '#' /* for title strings */ _DEF 2 #define M4_DEF 2 int DIR; /* for "spreading" of lines */ int OUTWRDS; /* no. words in outbuf; init = 0 */ char OUTBUF [ MAXLINE*2 ]; /* lines to be filled collected here */   > 0 || OUTBUF[0] !='\0') space (HUGE); /* flush last output */ fprintf(STDERR,"\nDone processing <%s>", filename ); } /* end while (--argc > 0 ) */ dioflush(); } /* end main() */ /******************************************************************** initializes the global variables governing the execution of the format commands. ********************************************************************/ init_defaults() { FILL = FI_DEF; /* yes we want filled lines */ LSVAL tring ) char *string; { char local[ MAXLINE ]; int i, j, k; strcpy ( local, string ); for (i=0; local[i]==' ' || local[i]=='\t' || local[i]=='\n' ; i++); for (j=0; (string[j]=local[i]) != '\0' ; i++, j++ ) ; return; } /********************************************************************* Truncates white-space characters at the end of a string. *********************************************************************/ trunc_bl (string) char *string; { char *ptr; int k) return( FI ); if ( let1=='F' && let2=='O') return( FO ); if ( let1=='T' && let2=='I') return( TI ); if ( let1=='B' && let2=='P') return( BP ); if ( let1=='B' && let2=='R') return( BR ); if ( let1=='C' && let2=='E') return( CE ); if ( let1=='H' && let2=='E') return( HE ); if ( let1=='I' && let2=='N') return( IN ); if ( let1=='L' && let2=='S') return( LS ); if ( let1=='N' && let2=='F') return( NF ); if ( let1=='P' && let2=='L') return( PL ); if ( let1=='R' && let2=='M') return( RM ); d lines */ brk(); /* flush out last unfilled */ FILL = YES; break; case NF : /* non-filled lines */ brk(); /* flush out */ FILL = NO; break; /* down and cry */ case BR : /* just cause a break */ brk(); break; case LS : /* set line spacing value */ set (&LSVAL, arg_val, arg_typ, LS_DEF, 1, HUGE ); break; case TI : /* set temporary left indent */ brk(); set ( &TIVAL, arg_val, arg_typ, TI_DEF, 0, RMVAL ); break; case IN : /* set left indent */ set = LS_DEF; /* line spacing = 1 */ INVAL = IN_DEF; /* left margin indent 0 */ RMVAL = RM_DEF; /* right margin = page width */ TIVAL = TI_DEF; /* left margin temporary indent 0 */ CEVAL = CE_DEF; /* next n lines to be centered - 0 */ ULVAL = UL_DEF; /* next n lines to be underlined - 0 */ PAGESTOP = FALSE; PLVAL = PAGELEN; M1VAL = M1_DEF; /* top and bottom margins */ M2VAL = M2_DEF; M3VAL = M3_DEF; M4VAL = M4_DEF; CURPAG = 0; NEWPAG = 1; LINENO = 0; BOTTOM = PLVAL - M3; k = strlen (string); ptr = &string[ k-1 ]; /* char before terminating nul */ while (*ptr==BLANK || *ptr==TAB || *ptr==NEWLINE) *ptr-- = '\0'; } /******************************************************************* performs the formatting command returned by comtyp - sets global variables ( indenting, underlining, etc. ) *******************************************************************/ comand ( line ) char *line; { int c_type; /* command type */ int arg_val; /* argumen if ( let1=='S' && let2=='P') return( SP ); if ( let1=='U' && let2=='L') return( UL ); if ( let1=='M') { if (let2=='1') return( M1 ); if (let2=='2') return( M2 ); if (let2=='3') return( M3 ); if (let2=='4') return( M4 ); } return( UNKNOWN ); /* no match */ } /********************************************************************* Skips white-space characters at the beginning of a string. *********************************************************************/ skip_blanks ( s( &INVAL, arg_val, arg_typ, IN_DEF, 0, RMVAL-1 ); TIVAL = INVAL; break; case RM: /* set right margin */ set ( &RMVAL, arg_val, arg_typ, RM_DEF, TIVAL+1, HUGE ); break; case M1: /* set topmost margin */ set ( &M1VAL, arg_val, arg_typ, M1_DEF, 0, HUGE); break; case M2: /* set second top margin */ set ( &M2VAL, arg_val, arg_typ, M2_DEF, 0, HUGE); break; case M3: /* set first bottom margin */ set ( &M3VAL, arg_val, arg_typ, M3_DEF, 0, HUGE); break; case M4: /* setVAL - M4VAL; OUTWRDS = 0; /* no. of words in outbuf */ OUTBUF [0] = '\0'; DIR = 0; strcpy ( HEADER, "\n" ); strcpy ( FOOTER, "\n" ); } /***************************************************************** this function decodes the command type, returning the type, or UNKNOWN. *******************************************************************/ int comtyp (line) char *line; { char let1, let2; let1 = toupper( line[1] ); let2 = toupper( line[2] ); if ( let1=='F' && let2=='I't value, if any */ char arg_typ; /* relative (+ or -) or absolute */ int i; c_type = comtyp (line); if DEBUG fprintf(STDERR,"\n\nCOMAND %d",c_type); if (c_type == UNKNOWN) /* IGNORE ALIEN ORDERS */ { fprintf(STDERR, "UNKNOWN COMMAND: <%s>\n", line); return; } arg_val = get_val ( line, &arg_typ ); if DEBUG fprintf(STDERR, " \n get_val returned arg_val=%d, arg_typ= %c ", arg_val, arg_typ ); if DEBUG fprintf(STDERR,"\n\n"); switch (c_type) { case FI : /* fille   bottom-most margin */ set ( &M4VAL, arg_val, arg_typ, M4_DEF, 0, HUGE); break; case CE : /* center next arg_val lines */ brk(); set ( &CEVAL, arg_val, arg_typ, CE_DEF, 0, HUGE); break; case UL : /* underline next arg_val lines */ set ( &ULVAL, arg_val, arg_typ, UL_DEF, 1, HUGE ); break; case HE : /* get header title for pages */ gettl ( line, HEADER ); break; case FO : /* get footer title for pages */ gettl ( line, FOOTER ); break; case SP : /* space dow*****************************************************/ center (line) char *line; { TIVAL = max(( RMVAL+TIVAL-strlen(line))/2, 0 ); return; } /************************************************************** get next word from input line ***************************************************************/ int getwrd (in, out ) char *in, *out; { int i, j, n; /* find first non-blank */ skip_blanks (in); replace_char ( in, TAB, BLANK); /* replace tabs w/space */ /* scan off a word */ typ=='-' ) i++; else if ( !isdigit( *typ ) ) return( NO_VAL ); return ( atoi( &local[i] )); } /***************************************************************** sets a global parameter like line-spacing, underlining, etc. Also checks that the new value is within the range of that parameter. Assigns the default for that parameter if no value is specified. ******************************************************************/ set ( param, val, arg_typ, defval, minval, maxval ) int * position in output */ line[j+1] = '\0'; if DEBUG fprintf(STDERR,"\nDIR=%d, nholes=%d, i=%d, j=%d", DIR, nholes, i, j ); for ( ; i 0 ) space (HUGE); set ( &CURPAG, arg_val, arg_typ, CURPAG+1, -HUGE, HUGE); NEWPAG = CURPAG; break; case PL : /* set page length */ set (&PLVAL, arg_val, arg_typ, PAGELEN, M1VAL+M2VAL+M3VAL+M4VAL+1, HUGE); BOTTOM = PLVAL - M3VAL - M4VAL; break; } return; } /******************************************* if ( 1 == (n = sscanf( in, "%s ", out))) { if DEBUG fprintf(STDERR,"\nafter sscanf out = <%s>",out); j = strlen (out); replace_char (out, NEWLINE, BLANK); for (i=0; i 0; nblanks-- ) line[--j] = BLANK; } } if DEBUG fprintf(STDERR,"\nafter spreading, line is:\n<%s>", line); return; } /**************************************************************** end current filled line *****************************************************************/ brk() { int l; if DEBUG fprintf(STDERR,"\nbrk: OUTBUF=<%s>", OUTBUF); if ( 0!= ( l = strlen (OUTBUF))) { OUTBUF[l] = NEWLINE; OUTBUF[l+1] = '\0'; put (OUTBUF); *********************** gets the number ( if any ) associated with any command *******************************************************************/ int get_val ( line, typ ) char *line, *typ; { int i; char local[ MAXLINE ]; strcpy (local, line); /* local copy */ /* skip over the command line */ for (i=1; local[i]!=' ' && local[i]!='\t' && local[i]!='\n' ; i++ ) ; skip_blanks (&local[i]); /* find the number */ *typ = local[i]; /* relative or absolute */ if ( *typ=='+' || ******/ spread ( line, nextra, no_words) char *line; int nextra; /* no. extra places left in line */ int no_words; /* no. words in the line */ { int i, j, nblanks, nholes; if DEBUG fprintf(STDERR,"\n\nspread:line=<%s>, nextra=%d, no_words=%d", line, nextra, no_words ); if (nextra <= 0 || no_words <= 1) return; DIR = !(DIR); nholes = no_words - 1; trunc_bl (line); i = strlen(line) - 1 ; /* last character of string */ j = min (MAXLINE - 2, i + nextra); /* last    } OUTWRDS = 0; OUTBUF[0] = '\0'; return; } { int i; if DEBUG fprintf(STDERR,"\n SKIP %d line(s)", n); for ( i=0; i= 1 */ else putchar( title_str[i]); return; } /******************************************************************* put out num in string of width >= w ******************************************************************/ putdec ( num, w ) int num; int w; { int i, nd; char chars[10]; nd = itoc ( num, chars, 10 ); for ( i=nd + 1; i<=w; i++ ) putchar (BLANK); for ( i=0;i<=nd; i++) putchar ( chars[i] ); return; } /******************************************************** puts out page header *******************************************************************/ phead() { CURPAG = NEWPAG; NEWPAG++; if ( M1VAL > 0 ) { skip ( M1VAL - 1 ); puttl ( HEADER, CURPAG ); } skip ( M2VAL ); LINENO = M1VAL + M2VAL + 1; if DEBUG fprintf(STDERR,"\nLINENO=%d", LINENO); return; } /********************************************************************* puts out page footer *************************************************************************************** replace c1 in string with c2 ****************************************************************/ replace_char (string, c1, c2) char *string, c1, c2; { int i; for (i=0; string[i] != '\0'; i++) if (string[i] == c1) string[i] = c2; return; } /******************************************************************** produces n empty lines *********************************************************************/ skip (n) int n; ************************************************************** convert int num to char string in numstr *********************************************************************/ itoc ( num, numstr, size ) int num; char *numstr; int size; /* largest size of numstr */ { int absnum, i, j, k, d; absnum = abs (num); numstr[0] = '\0'; i = 0; do { i++; d = absnum % 10; numstr[i] = d + '0'; absnum = absnum/10; } while ( absnum != 0 && i 0 ) { puttl ( FOOTER, CURPAG ); skip ( M4VAL - 1 ); } return; } /******************************************************************* put out title line with optional page no. *******************************************************************/ puttl ( title_str, pageno ) char *title_str; int pageno; { int i; for ( i=0; title_st[i] != '\0'; i++ ) if ( title_str[i] == NUMSIGN )    numstr[i] = '-'; } for ( j=0; j", com_line); i=0; whi*****************/ put (line) char *line; { int i, j, k; if DEBUG fprintf(STDERR,"\n\nPUT<%s>",line); if (LINENO == 0 || LINENO > BOTTOM ) phead(); indent (TIVAL); putline (line); TIVAL = INVAL; skip (min (LSVAL-1, BOTTOM-LINENO)); LINENO = LINENO + LSVAL; if DEBUG fprintf(STDERR,"\nLINENO=%d, LSVAL=%d",LINENO, LSVAL); if (LINENO > BOTTOM) pfoot(); return; } /*********************************************************** concatenates the word onto the end of OUTBUF for filled tex********************** yet ANOTHER version of text !!! no. 59,999,999 get it right this time Kath dear *******************************************************/ text (line) char *line; { char wrdbuf [MAXLINE]; int i, j, k; char *p1, *p2; if DEBUG fprintf(STDERR,"\n\nTEXT:<%s>", line); if (line[0] == BLANK || line[0] == NEWLINE || line[0] == TAB) leadbl (line); if (ULVAL > 0) /* set high bits of all non-white space chars */ { ULVAL--; p1 = p2 = line; while (*p2) { if (*p2*****************************/ int count_char (string, ch) char *string, ch; { int n; char *p; p = string; n=0; while (*p) if (*p++ == ch) n++; return (n); } /*********************************************************** remove all occurrences of ch; first, last, and no. of occurrences returned in parameters ************************************************************/ remove_char (string, ch, first, last, n_ch) char *string, ch; int *first, *last, *n_ch; { char *p1, *p2; finle ( com_line[i]!= ' ' && com_line[i]!='\t' && com_line[i]!='\n') i++; strcpy ( local, com_line ); skip_blanks (&local[i]); /* strip quote if found */ if ( local[i]==SQUOTE || local[i]==DQUOTE) i++; strcpy ( ttl, &local[i] ); if DEBUG fprintf(STDERR,"\ntitle = <%s>", ttl); return; } /****************************************************************** space n lines or to bottom of the page *******************************************************************/ space (n) int n;t ************************************************************/ putwrd (wrdbuf) char *wrdbuf; { int i, j, k; char s[MAXLINE], ch; int line_len, outw, new_out_width, wid; int nextra; if DEBUG fprintf(STDERR,"\nwrdbuf = <%s>",wrdbuf); skip_blanks (wrdbuf); trunc_bl (wrdbuf); wid = strlen (wrdbuf); if DEBUG fprintf(STDERR,"\nwid = %d",wid); line_len = RMVAL - TIVAL; outw = strlen (OUTBUF); new_out_width = wid + outw + 1; /* one for blank */ if DEBUG fprintf(STDERR,"\nnew_out_w == TAB || *p2 == BLANK || *p2 == NEWLINE) *p1++ = *p2++; else *p1++ = *p2++ | 0x80; } } if (CEVAL > 0) { center (line); put (line); CEVAL--; } else if ( line[0] == NEWLINE || FILL == NO ) put (line); else while (WE_HAVE_A_WORD == getwrd (line, wrdbuf)) putwrd (wrdbuf); return; } /*********************************************************** put out a line of text with correct indentation underlining if specified *******************************************d_char (string, ch, first, last); *n_ch = count_char (string, ch); p1=p2=string; while (*p1 = *p2++) if (*p1 != ch) p1++; return; } /************************************************************** a new putline routine; sends line to current output ***************************************************************/ putline (line) char *line; { int i; if (ULVAL >=0) { replace_char (line, NEWLINE, CR); puts (line); indent (TIVAL); for (i=0; line[i] != '\0'; i++) if (line[i]  { if DEBUG fprintf(STDERR,"\nSPACE %d line(s), LINENO= %d", n, LINENO); brk(); /* flush out last unfilled line */ if (LINENO > BOTTOM) return; /* end of page */ if ( LINENO == 0 ) /* top of page */ phead(); skip( min( n, BOTTOM+1-LINENO )); /* can't skip past bottom */ LINENO = LINENO + n; /* obvious */ if DEBUG fprintf(STDERR,"\n LINENO = %d", LINENO); if (LINENO > BOTTOM) { pfoot(); /* print footer if bottom */ } return; } /*********************************idth=%d, outw=%d, wid=%d, line_len=%d", new_out_width, outw, wid, line_len ); if (new_out_width > min (line_len, MAXLINE-1)) { nextra = min (line_len, MAXLINE-1) -outw + 1; spread (OUTBUF, nextra, OUTWRDS); brk(); } strcat (OUTBUF, wrdbuf); strcat (OUTBUF, " "); if DEBUG fprintf(STDERR,"\nPUTWRD:OUTBUF=<%s>",OUTBUF); OUTWRDS++; return; } /************************************************************** returns no. of ch in string **********************************  & 0x80) putchar (UNDERLINE); else putchar (line[i]); putchar (CR); putchar (NEWLINE); if (ULVAL==0) ULVAL--; } else puts (line); return; }  return (n); } /*********************************************************** remove all occ ,!9ÍW å:¼ÍX åÍ ÁÁÃ,Ã,Í� ØçþÿÃÉ*º#"º+ÍW ͤ Ê?É!"¿*ºÍW å!0ÑÍÀ Êd*ºÍW å!9ÑÍÁ ͈ Ê‘ÃpÃE*¿ Í9 å*º#"º+ÍW ÑÐÿ"¿Ãm! }2Á! "Æ"Â!"Ä*º#"º+ÍW ÃM!"Æ!9Í] åÍÆÁÃj!0}2Á!"Â!9Í] åÍÆÁÃj!0}2Á!"Â!9Í] åÍÆÁÃj!9Í] åÍÏÁÃj!9Í] ÍW |µÊ?!9åÍ] #Íb +ÍW åÍÏÁ*¿+"¿Ã! åÍ£ÁÃjÃjÍ� µd»uÊoæxcsÍœÉ!9Í] å! ÑÍË ÊŽ!9Í] 0Ã�!9Í] AöÿåÍÏÁÉ*¿+"¿å!ÑÍÀ ÊÃ:ÁÍX åÍÏÁãÉp*Äå!9Í] "Ä*¿+"¿#*Æͤ Ê *Ä.|æ€g|µÊ *¿+"¿#*ÄÍ1 !"# con:rdr:pun:lst:Ö Ú3 þò3 _~O·À7ÃaÁáÑÕåÅ!  Õåö ¾ÂY #ÂF Ñái&ÉáÑ ~·ÂB !É~þÿÊx #Âj  ÁÑÕÅë~#Fëðÿ6,pùÿw62» ùëÍ* å!9Í] ÁÅy=åÍáÊ‚ ÕëÍ· >þwÂÌ ÑÕÍÑÍÑ<Ê‚ !Ès 6#6Íÿ ~+¶Â ÕåÅÍ�Áëás#r{²ÑÊ‚ ë¯ÉÁÑÕÅ{þ Ú% ! Í! #Ø^Í!É!ª¯w#w!È~<Ê‚ 6ÿ͇ !Ý~þrÊt G!ÏÕÍ] }·Ês ë*ÆxþuÊi >w#Âb %åÅÍ� ÁÁÑ{=ÕÍÍ<áÀ!7É!œN#FÅá"ÆÉÍð {þ Ò¯¹+ åÕ*Æå!åͺ ÁÁÑÕëù s{²ÑáÊaÕåÍ] #Íb +ë*ÆF!äÑ>b¾Êì xþ Ê• þÊa·Ê• h&ÉáÁÑÕÅå{þ Ð͇ !ù "Ä!"Ä*Äå*ÂÑÍ÷ Ê#*Äå!ÑÍè ͈ ÊGÍ£*Ä|µÊ<!-åÍÏÁ*ÄåÍnÁõ*Âøÿͤ Êa*Äë!Í Ã…*Âöÿͤ Ê{*Äë! ÍU Ã…*Äë!Í åÍÆÁ*Âöÿͤ Ê¥*Äë! ÍU ëð*Â+å*ÄÍ~ åÍnÁá"ÄÉ*¿å*½å*»å:ÂÍX "¿!}2Â!"½!9åÍ] +Íb å!Ñͼ Êͱ"»#͈ ͈ Ê*»öÿ͈ ͈ Ê5*½#"½+ë! 9Í] å*»Ñ}Ãã*»öÿͤ ÊZ*½#"½+ë! 9Í] å*»Ñ}! 9Í] ë*½6*¿}2Â*½ëá"»á"½á"¿ëÉ*+%"¢%" %"žÜÿ "ï "í "ëyÿ 6"À+6„+ùÕ!€^6*F+N+Åò»ÊÊ3!ƒå!9~#·Êþ ÊÒOþ"Êëþ'Êë +Ñ}|Õå+#~·Ê¹Âõ6Ã�!ÿ9ù*å!9å!úåÍÁÁÁ"å!Ñͼ ʪ*+"å!ÑÍÀ ÊŠ!9ë*ÍW àÿ͈ Êe!9ë*ÍW ÷ÿ͈ ͈ Ê~!9ë*ÍW öÿ͈ ͈ ʇÊÃ**#ë!96ÍÈ!´å!9åÍÐÁÁÃá"!ú9ùÉ%s º!9"¸É*¸++"¸Í] åÍUÁ*¸å!9ÑÍö Ê*¸++"¸Í] åÍ-ÁÃàÉ*¸++"¸Í] }2¼:¼ÍX å*¸++"¸Í] åÍgÁÁÃàÉ*¸++"¸Í] "½*½å*¸++"¸Í] åÍ€ÁÁÃàÉ!å!9Í] åÍgÁÁÉ!9ÍW }2¼!9Í] "ºÍœÉ!9Í] "½!þÿå!9Í] åÍgÁÁÉ*ºÍW ͈ ʵ*ºÍW Ûÿ͈ ͈ ÊÎ*º#"º+ÍW åÍÏÁÜÉ:¼ÍX Ã!9ÍW åÍeÁÃ,*½#"½+å!9ÍW Ñ}*½6Ã~!ÏN#F¹À¯wG+wO#ÉÍð {þ Ú& ÁÑáåÕÅÃ|+å!9~þ ÂP å!ä~þbÊM !J 5ÂK > áÃP 6á> *Æ wãåå`i#Íb ᯾áÂ~ ÁÑÕÅÕ%,å!åÍ� ÁÁÁ|µ!ÿÿÈø!9n&:J ·Ê ɯ2— >ÃÁ @Éå!9Í] ë!¸:— w!ªÁÅx†wÒ¸ #4áÉ>2— >2– :·ÄàÍ@ Åx±Ê- ÕåÅÕëÍÑ:– OÍÁ·Âú !€ÿ DMá€ÑÃÏ áÑ:– þÂ- á  Í!ÿÿÃ3 Write error - Disk full $Ñ`iÍ* å€ÍáØ !9~=+åÍáÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!¢ »Â¢ ,ɯÉ|µÊŽ !¯ÉÁÑÅ|º}!À»À-ÉëÃË ë|ºÂË }»Ê‹ z¼Êà õ¬!òÜ ñÐ-ÉñØ-É{½!Ø-Éëz¼Ââ {½Ââ Ë ëz¼Ââ {½Ââ/* * Remove Trailing Whitespace. * From The C Programming Language by Kernighan and Ritchie page 61. */ #include #define MAXLINE 250 main() { int n; char line[MAXLINE]; while( (n = getline(line, MAXLINE) ) > 0 ) { while( --n >= 0 ) if( line[n] != ' ' && line[n] != '\t' && line[n] != '\n' ) break; line[n+1] = '\0'; printf( "%s\n", line ); } } #ã~#þ<Ê7þ>ÊI!�4áÃÒá6ÿ#6ÿ*�å!ƒåÍ*‹|µÊ4åÍ Ãå!EåÍ7 "GÃTrå!‰åÍ7 "‹ÁÁÚaáÑÕÃÒn ÍÍCan't open > or < file.$Ã(wÑÁÅÕ*¯ Ú«ë! þ9íRÚ«*¯ë"¯ëÉ!ÿÿÉ:*G}´ÊåÍ• ÁÉ–1:¿<*À¾ØÈë ͯ2¿ ÍþÃà ͷÈÍþÊþʆþ Âý> _*À~+¾Ð#4N s> »ÌÉ͆> ! Í! ØÅ:¹Â7ÍÃ2¿_~Ã:ÍÁþ ÂP ÂK Í> ÃX ÂYþÊþÊaÃX !ÿÿÉÁÑÕÅ*‹}´ÊyÕåÍ ÁÁÉë> å! Í! ÑØÕë}þ – ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ   !Éëø||g}oÃ ëø¯|g}oà ëø)Ã! ÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂH S\)ë)ëÒP =ÂH ɯõÃe z¬õ¬ëü1 ë|·ô1 MD!x<Ây z�>Ú~ jS\>)ë)ëÒ† #å áÒŽ =Â~ ëñðëÍ1 ëÃ1 ëáN#F#x±Ê¶ ~#»~#Ÿ ºÂŸ Åáé "> w+ ÂÀ ¯w w##w wàÿ ë#~+þ:Âë ~##ÍÖ@~#·Èþ.Êü ÍÃë ë*++·ÈÍw#Ã@"æþaøÖ ÉO!ë ~_#V²Àå!$åÍ�ëáár+sbk#|µÉ "> w+ ÂÀ ¯w w##w wàÿ ë#~+þ:Âë ~##ÍÖ@~#·Èþ.Êü ÍÃë ë* ý6ýá¬þýåý ý6óýáÙ'Ù«þýåý ý6ýáªþýåý ý6LýáÙ(Ù©þýåý ý6ýá¨þýåý ý6MýáÙ)Ù§þýåý ý6ýá¦þýåý ý6VýáÙ*Ù¥þýåý ý6ýá¤þýåý ý6WýáÙ+Ùýwÿý6þýåá+å!ãV+^ãåÍÛ%Ò'Ù,ÙýnþýfÿÕÍÌѯíjêtë!ÃþÍt'ý^þýVÿå!ðÿÕÍÌѯíjêtë!ÃþÍt'V+^!'ëár+sÙ,ÙÍ)%(Í:%þÊwÍE%¯áã4# 4ê(Ã¥ÑÑÙ-ÙÍËÙ.Ù:tsl!üÿ9ùë!8í°ýåáÄþ ͽÙ/Ù3esac reppu tpecca lliw margorp sihT :snoitcurtsnI2!å2Å!Îÿ9ùë!^2í°6ÍÙ0Ù;)etalsnart lliw srettel esac rewoL( .sknalb dna sretcarahc:!å:Å!Æÿ9ùë!´ÙÝwÝ6ÿÝå!ãV+^ãåÍÛ%Ò)ÙÙÙ ÙÝåáÈþ åW_Õgoå! åÝåáüÿ åÕÍYÙ ÙÝwþÝ6ýÝåá++å!ãV+^ãåÍÛ%ÒýÙ ÙÙ ÙÝnÿÝfÕÍÌÑÍÆÝ^ýÝVþå!Ͷáë¯íjêtë!xþÍt'åÝnýÝfþÕÍÌÑë!üÿÍl'W^Ù Ù!Àÿëár+sÙ ÙÙ ÙÍ)%(Í:%þÊwÍE%¯áã4# 4êþÃ^ÑÑÙÙÙÙÍ)%(Í:%þÊwÍE%¯áã4# 4ê*ÃÑÑÙÙ!ÃÙ !×ü9ùÙ!|'Ù!Îÿ9|'¯íRÚjÙÙ !Zëýåáäü ëí¸ÙÙ ZYXWVUTSRQPONMLKJIHGFEDCBA!Žëýåáƒþ ëí¸ÙÙîüýåý ý6'ýáíüýåý ý6ýáÙÙìüýåý ý6ýáëüýåý ý6èýáÙÙêüýåý ýwýáéüýåý ý6dýáÙoå!ãåýnðýfñÕÍÌÑë!„þÍt'å!ãÅW^SÕ3ýnðýfñÕÍÌÑë!„þÍt'å!ãÅW^SÕ3ÍFÖ ÙOÙýåáÄþ ågoãågoå!ãå !åÅ!þÿ9ùë!w í°ÍFÙPÙÙPÙÍ)%(Í:%þÊwÍE%¯áã4# 4êÁ ÃD ÑÑÙQÙýåáÄþ ågoãågoå!ãå!åÅ! eå3 ÍFÙRÙÙRÙÍ)%(Í:%þÊwÍE%¯áã4# 4êà ÑÑÙSÙýåáÄþ ågoãågoå!ãå!åÅ! eå3 ÍÙTÙÙTÙÍ)%(Í:%þÊwÍE%¯áã4# 4êsÃì ÑÑÙUÙýåáÄþ ågoãågoå!ãåÍÙVÙýåáÄþ ågoãågoå!ãåÍÙWÙÙXÙÙXÙÍ)%(Í:%þÊwÍE%¯Ãk ÙYÙÚáÑãåÕW_g>€¥ö@oåÕͬÑááÑãZUË| >:í°>ÍÙ1Ù-.dne ot nruter egairrac a dna doirep a retnE,!å,Å!Ôÿ9ùë! ,í°0ÍÙ2ÙÍÙ3Ùgäüýåý ýnýá}þ.|Ê×Ù4ÙÙ5Ù :enil tupnI !å Å!õÿ9ùë!‹  í°ÍÙ6Ù_______!åÅ!ùÿ9ùë!º í° ÍÙ7Ùýåáäü åÕÍYÙ8Ùgäüýåý ýnýá}þ.|Â. Ù9ÙÙ9ÙÍ)%(Í:%þÊwÍE%¯Ã·Ù:Ùýw÷ý6öýåá÷ÿ å!ãV+^ãåÍÛ%ÒÒ Ù;Ùýnöýf÷ÕÍÌÑë!ÞüÍt'åýnöýf÷ÕÍÌÑë!åüÍt'W^SÕ3Wå!ͶáÍ0Ù;Ùå!ͶáásÙ;ÙÍ)%(Í:%þÊwÍE%¯áã4# 4êÓ ÃF ÑÑÙ<Ùýwùý6øýåáùÿ å!ãV+^ãåÍÛ%ÒrÙ=ÙÙ>Ùèüýåý ýwýáçüýåý ý6 ýáÙÙæüýåý ýwýáåüýåý ý6ýáÙÙýwÿý6þýåá+å!ãV+^ãåÍÛ%Ò§ÙÙÙÙýnþýfÿÕÍÌÑë!ÞüÍt'6 ÙÙÙÙÍ)%(Í:%þÊwÍE%¯áã4# 4ê¨ÃNÑÑÙÙÃþýåý ýwýáÂþýåý ýwýáÙÙÁþýåý ýwýáÀþýåý ý6ýáÙÙ¿þýåý ýwýá¾þýåý ý6 ýáÙÙ½þýåý ýwýá¼þýåý ý6 ýáÙÙ»þýåý ýwýáºþýåý ý6dýáÙ Ù¹þýåý ýwýá¸þýåý ý6eýáÙ!Ù·þýåý ýwýá¶þýåý ý6nýáÙ"Ùµþýåý ýwýá´þýåý ý6oýáÙ#Ù³þýåý ý6ýá²þýåý ý6èýáÙ$Ù±þýåý ý6ýá°þýåý ý6éýáÙ%Ù¯þýåý ý6ýá®þýåý ý6òýáÙ&Ù­þýåý”Ú[˺(GË:Ëú¯Ë}È!íRëɯÉDÍsx怴gÁÕ3å!åå3ÝåýåÅ9åÝáë Ýåýãý ÍÈýááýáÝáѯéÍɹ ¸(<ÍͶ8Íxö|·ÈÍæÔx¯É|· ÍÝ#ú….ÉþÊw-Ìþ#ÍÝ#þÊwþ À> ÉÅÕ¯ËNÂT]ËF('###ÍU$8Cþ(?ÍU$8:þ(6+++þ (ˆ#w+> ¿ÑÁÉ###ÍU$8þ(G+++ˆþ ËÆËŽ#Np+yÑÁþ É++Nwy+ËÆËÎï!ÃwRead beyond EOÆÝåÝ!PYÝ9ÝÝÝÝÝåG¯!ݾþ HÝfÝnÿ¸(ËîøÿÝ ÕåÝ~Ý^³(ËæÝVÝfÝnÁůÍáÑáåË^ åáѯݾÂ�Ë~(!z³()¯¼ ,ÝFþÌÌôÌ·ÌfÌ Ì|üÿÝ Óëár+sÝáÑÁùáÅÕÉÝFýåÝfÝnÿãÍæÚ|·(Ͷ0Ën({²( ÍxãÍæ8Ͷ8Íxãþ > w+çáÉã6 +*+ùÃÍ*+w!|'Ù*£ÿååÝáýáù ¯w#ü#w!€~þ8 F##NÍ$ù Í$Ã6^#Vëé!}!!Œ!­!ñ!ÿ !ñ!È!àÍF$ÃwString too lonçCall by reference precision erroòIndex or value out of rangåAttempted divide by zerïMultiply overflo÷Stack overflo÷Floating point overflow/underflo÷ -- statement  Šͳ ÙÙgÝnå!åý!ZAÍ"ÍlÒsÙÙgÝnÕÍÌÑÝuÃÅÙÙgÝnå!åý!zaÍ"ÍlÒ¼ÙÙgÝnÙÙàÿÙÙÕÍÌÑÝuÃÅÙÙÝ6 ! ÃÙ Èþͳ ÙÙ tad.tnof!øÿ9ùë!Úí°ÝåáÈþ ÍÙÙýwýý6üýåá+++å!ãV+^ãåÍÛ%ÒÙ?ÙÙ@ÙýnüýfýýtûýuúÙAÙýnúýfûÕÍÌÑë!ÞüÍt'W^å!ͶáýsÙBÙgýnÙBÙýtûýuúÙCÙýnúýfûÀÿýtûýuúÙDÙýnúýfûW_ëÍï%Òª ÙEÙýwûý6úÙFÙýnúýfûÕÍÌÑÍÆý^øýVùå!Ͷáë¯íjêtë!xþÍt'V+^ýrõýsôÙGÙýnôýfõÕÍÌѯíjêtë!ÃþÍt'V+^ýrõýsôÙHÙýnúýfûýtñýuðÙIÙýw÷ý6öýåá÷ÿ å!ãV+^ãåÍÛ%ÒÀ ÙJÙÙKÙýnôýfõý^öýV÷å!Ͷáë¯íjêtÕë!ðüÍt'V+^áÍ&Í ÍöÙKÙýróýsòÙLÙýnôýfõý^òýVóåýnöýf÷ÕÍÌѯíjêtÕë!ðüÍt'V+^áÍÆÑë¯íRýtõýuôÙMÙýnòýfó¯íRÂ\ ÙNÙýåáÄþ ågoãåg  ûáÉÍxþT(*þt(&þF(+þf('þ (鯼ÂÙå!òÍF$ÍÝ#þ ùáÍþ#ÃÍPÍPåÝfÝnÿp¯GáÉÍxþEÈþeÈþ Èþ,ÈÍæØëÉÕåÝå¯OG Íæ8xͶ8s¯¹(Í'ÇÍxþ (]þ (Yþ (Uþ (Qþ (Mþ#(1þ_(-þ$()þ{8 þ[8þ:8ÃOþa8ñæßþA8í þ0ÚOW¯¹ÒOzW>¹( ¯¹(ÍxÕ3 ŽÍxÃp¯¹Ê„ÝfüÝnûåÝ~ùÝ!Ý9Ý G¯_Ý~¾(¯�(G¯WÝ>“_¯_æ¯{¹(Ý+#ܯ>»(#¯> ¾+ Ù¯gkÑ9ùÝáÝ~ù�ÝfÝnÿwáÑüÿÝ É!!9¯G ùÝá᯼ÂÙå!òÍF$ÍÝ#þ ùáåÝåÃkÃÙ¯OåÝfÝnÿÝFý+ãÍæÚ|·(Ͷ0ã#¯wáÉãÍæ8GͶ8BÍxþ (;þ (7þ(3ã x¹8w+Ú᯼ÂQå!}ÍF$ ÍE%!òÍF$áÍÝ#Ͷ0øÍþ#Ã|ã¯G #qáÉÝFý Í+¸(#þ ùNÍ$+ù Í$áÑ#ù¯ëéÝåÍiÝåÝF¸ Í‚ËÆ###goÍÚ ÍÆ ÍÆá#ÝáÑùëéÝåÍiÝåÝF¸ Í‚ˆ###¯¸ÂŸgoÍÚÕÙåÙÑ!Îÿ9¯íRÚ`Ý!Ý9Ý PYÉøÿë ëÕÝ ÝFÝfÝnÅåËV ýåå¯goÍO Ò á| }ýáÝ~Ý^³(ÝVÝfÝnÁÅ>ÍáËæáÁËÖÑÉáåËf(ôÝz³È¯ÝFÝ+ÌmÌìÌBÌüÌ«ÞüÿÝ ë åÕÝNÝng)))ÝVÝ^åG~þ (#ËX(õáy�(8 PGã ÍÆûBãNãÍÆã#÷áÑÉÝFþÝ~�Ý+Ý+( 8 G ÍÆûÝFÝ+ÝNÍÆõÝ+ÉÝ+Ý+ÕݾÝ~¢8ë ë ‘(8 Gy ÍÆûOAOÍÆøÑÉTRUEFALSEÝFýÝ~Ý+Ý+Ý+ÝN Å�( 8G ÍÆûÁ¯¸( ÅÝ+ÝNÍÆõÁy�(GÝ+ûÝ+ÉÕÝVÿÝ^þÝåÁÝ!úÿÝ9Ý~(Ý˾õÅ! Ͷ&ÁñÝË ~(ÝË ¾õÅ!Ͷ&Áñ§('ËyG(!4ê+~Íê&ð! 4ê+~Íê&ð!4ê+~Íê&! 4ê+~Íê&! ëå Í®ÑËÊ‹! Ͷ&ÝËþËÝåýãý ÍÈýáÝåѯݾ ÀÑýáÝá!9ùë¯é¯ÅŽ#ùÁɯÅž#ùÁɯÝwýËÿ~(Ý4ýËÿ¾ýåá+ÍÇ& ý6ÉýËÿv ýåá+·Í÷&ý5êêÝ5ÀýËÿþɯÝùÑýáݾ ÚeÝá! 9ù!ååë¯7é}“(Ø(‡ý¦Ñ!"9ùë(7>éͪ&¦w+ùÑ! 9ùë¯éº(¼ ë SxDM!=È)Ë#Ë0÷ ô|ªõËz(z/W{/_Ë|(|/g}/o#¯¼ ½ ñ¯É-# ñë¬zð"BKëgoË(Ë0##Í+"¯ýwýwý#ý#Ó¯ýáÝùÁëÑÝáÁù`i»ÙGOÙéÍÇ%õ6+++6 å 6 #û6#ûÍ"(û8iõå*¬ÿ¯GW^~þ # ù>¸0D*¬ÿ>†_~þ:á(GñÖAGå*¬ÿ>†_~þ > áþ:(å*¬ÿ5*+~ááÍÍ"xþ8Iá!Ï#ÍF$ñ7ø%ñþL(þC ìÍ"þO åÍ"þN Þáüÿ ËþÍ"þS ÎÍ"þT Çáüÿ ËöÍ"ñ·Ã¸%wá Í"8ò(ùþ.(w#ñ£H (é#úÍÝ#þa8þ{0æ_þ ÉÍÇ%õå+++Ëf###%(6ÿëáÍY"·ÊO"ÃB"ëÍñø%ÍÇ%y%4Âr#õåØÿËfÊ3####åÍ‘%§ëÍÑÕ"Í·Â-#áå!5~< #5~< #5áå'ëÍÑÕ"Í·Â-#ÑÕ! 6!'ëÍáå+ËFˆ"(w#¯w#w 44~þ0#4 #4ÑÕ!Íáå!4 #4 #4¼ÂÙå!òÍF$áìåÝfÝnÿqá¯GÉÍ+åÝfÝnÿp+qá¯GÉÕå!DãÍxþ (ùþ- þ+ Íxþ:0%Ö08!ã͈ãêpÍ'þ:0Ö00⯸ÁÑÈx/Gy/O¯É¯¼ eÁÑ!òÍF$ÍÝ#þ ù!£T]·íjèíjèíZèíjè_íZÉÕåÝfÝnÿÝVþÝ^ýãÍæÚ###ÍU$++Fwx+0ËÎãw+z³ áüÿÝ áÑz³ Çé!ßÃwType error on inpuôError in input, try again ŠÕåþÿë9ëÍxþ (ùþ-(þ+ÌxÅÄx3Íxþ0ÚÙþ:ÒÙÍxõ3Í'þ.(7þe(;þE(7þ08þ:8ä> õëåÍ©DMáå#4 ËûÝfÝnÿr+s+p+qáùááÑÉË@ ÕµËH ÍÍxõ3Í'þ-(þ+ �Íxõ3‰ÕýÝåýååë9åÝáÝ4 ëá~+åþ.(:þe(DþE(@þ (8Ý5Íšáå#~Ö0! 6+w¯+w+w+w Ýåýãý ÍÈýáÍÄùåÅÝ Ëz(Ý6-Ý+¯goGíRëÝwÝ+O'͆è͆d͆ ͆EÍŽGÝ Ý#Ý~þ-   ¹ Ý60 Ý+Aá~ã�8 ( W ÍÆ úÝNÍÆÝ+öÝáÝ+Ý+Ý+ë!9ùëѯɯíR0û¸ ¹È>0€ÝwÝ+ ¯GÉåüÿÝ ë ëÝfÝnÝNÝ++ãÍÒã|µ ðz³ ÞáÃ>¯¼ ½ ÍE%¯É+++Ë~(ÍE%¯###ÉËv###Êö¯ÍÇ%YÍø%ÍY">Ð+++ËÎ###ÉÍÇ%õÅåÕ`iå###Í‘%áËVÊœËf 8###å'ëÍáåëÍ·Â|#áå§ëÍáåëÍ·Â|#á+++(EË^(AåªëÍÑÕ"Íáå!5~< #5~< #5áå'ëÍÑ"ÍÁÅx±Ê&ÑÁáz³## ËÆ¯"w#w#wÚÿåëÃ0ˆ++å`i¯º(¼ ë S_xDM!=()ë8 )ë0õ 0òï)ëó+}¤Æ ¯E˸Ë$õË}(Ë|Âtx±( ëíjëâùÃtñyðë¯goíRÉÅýåÍO 0 å###Í+"¯ áwýáÁÑ###Íy +++Ë~### 8Ír%8ÍU$O8þ (þ (++q+¯ëé+++Ëί+++ËŽËÆ#q#ë¯éÙx±ÄZÙý#ýfýný#ý#|µ###Ä+"ìÃý#ýfýný#ý#|µ###Ä+"ìÃåÍÛ%ÒÈá`iåÍå%0áÉÕÃæååÕÍå%ÒâÑáPYÕÍÛ%0ÑáÉÑáÕå!ÍF$áÍ!!ÍF$áÍ!!.ÍF$Ãwindex or value  exceeds bound Ë|( -ÍE%ë¯goíR'ͪèͪdͪ ͪͪÉ -- Module å!OÅÍF$áå|æðo¯g ͪͪáå|ægå! ÍF$áèͪdͪ ͪͪ!.ÍF$Áá¯É/¯ íR0ûÃE%¯å¼ Õ*­ÿ~+¾Ú &^#~þ Ê &ÑáÃ&Ë~ ÞËFáÊ&Ã&¯¼Ê&Ë~Â&ËNÂ&Ã&gi#9åAÍÝÑÕ! 6ÑÕ!§ëÍÑÕ!Íá%6ûÿ6áñÃr#!—#Ãw)~6<(3ÚÿÍ‘%å'ëÍáåëÍ· "áå§ëÍáëÍ· áñ^##wø%!—#þ !¡#þ !¸#þÿ !Á#ÃwDisk erroòError in extending filåDisk fulìDirectory fulìBad filename ŠÍÇ%*¬ÿå^#~áþ 84þ ø%#6øÍÇ%*¬ÿ6Oë Í Í$ ÍE%ø%ÍÇ%õ*¬ÿ6#~þP( 4^qñ·Ã¸%5 Í$ñ7ø%~·ÈõæOÍE%ñø#ñÍÇ%%~#¾?Â%õå×ÿËfÊÊ$###Í‘%ÑÕÍáåûÿ4~þ0#4 #4áåÚÿë!Íáå�ëÍáåûÿ4~þ0#4 #4áåÚÿë!Íáñ·Ã%áå~ÆÒ%ÚÿÍ‘%ÑÕÍáåÚÿëÍ· áå�ëÍáåÚ¾Ý6Ý6ÿ´¯á=á¯O~þ- Oþ+ +~Ö0Úþ ÒG+~þ (Ö0Úþ ÒÕWx‡‡€‡‚ÑGxËA(íDGÝ~ݦ€úc(GÅÍšÁù íDGÅ͈ÁùýáÝá!9ùáÑÁ¯ÉáãÍ©ÉáãÍ©ëÉ! Õë!Äí¸ÑÃÝ! Õë í¸ÑÝ4êÝ4êÍÄÝ4àÃPÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw ! ÍÆ&ÊÝ~Ý® ÝwÝ~<Ý– êÝwÝ˾ÝË ¾!ûÿ9ùå¯w#ü+åýáÕÅ!ë +¾8 ö+ü#Í»·ÁÑõýåá+·Í÷&ñ8ýËüÆ!Íõ&Ä! Ñw#ú!9ùÝË~Ê‹ÝËþËË|Èëgo¯íRÉáÑÁ˹ÅÕéT]ÃÆÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw >€Ý® Ýw ÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw !ÍÆ&( ! ÍÆ&Ê‹Ý~Ý– ( Oò㯑þ8ËyÊ‹!ë í¸Ã‹ÝË$ñ0Ë#Ë#0Ë"Ë"LáåÕ$Ñq#s#rÑááÑ!(FÅÕ!#6!*ëÍÑÕ!Íáå!4 #4 #4ÑÕ!§ëÍÑÕ!Íá+ËF&(ñ· 6##N×ÿq+õ'6ÿÁpñ· õÛÿåÍU$á 6Þÿw+õØÿñ·(ËÞø%˞ø%Ñ###Íy 8o+++Ëv Ë~ Íí###ͪ%ÍQ%+++ËÆËŽËÖ˞˦¯ëéýåÍO 0 ###Í+"+++ýáÉýáýåågoÍO 0 á| }ýáÉ! ÃwToo many open output fileó!; ÃwBad output file namåý#}ý¾( ý#ý#ô¯É|ý#ý¾(}ý#ä¯ÉýåÁ¯7ÉÍÝ#0ûå!9¯G åANÍ$+ù Í$ÁáÍ&!ÍÝ#þ ùÅãÁr+{PYÁùëÑ_Å>É<Ýã!åÅ9åÝãÑùշȯÙGOåÙ2¯íRѯíRÚjÉÝåÑýåý#ëýfýn|µ(åíRá0åÙÑåíRáÙ0 #!  ÿëÍ· áñ· áñ7á6ñ·õ<+w_##ñ~ø%ÍÇ% ͷʸ%>ÿø%ÍÇ%Íø%ÍÇ%YÍø%ÍÇ%õÍ‘%ëÍþÿÊ|#ñáÑÁÙñýáÝááÑÁÍÇ%õå%6ÿ#6ÿáÍ‘%ëÍÆÁxø%ÍÇ%å€Íá$^ÍÍÇ%õÍ‘%ëÍñáÑÁÙñýáÝááÑÁÉÙÑÙÅÕåÝåýåõÙÅÕåÕÙÉ|ªú&¯íR?É|ªú&¯7íRÉ|ªú&¯7íR?É|ªú&¯íRÉb¯Ë$ɯ7ÉÑáù¯ÉÍ&ÐÃo|ªõËz(z/W{/_Ë|(|/g}/o#¯º (³(!= ñ¬òF&ë¯goíR¯W_É= DMË(ËgoË(Ñ7ɯëËt <)Ã^&ë<·íR?Úu&·ËËË*Ë=Âl&ñë!ò�&íB¯É ¯ÉÍ—&ÐÃoË|( Í&ØgoíR¯ÉÍ&ëÉ!#9ë!  É~/Æw#~/ÎøÉ¯~æ+¶+üÉ!9¯~æ+¶+¶(##>€®wÉ·Å~w+úÁÉ·Åüÿ *_Í� ÓÿÍê ÍÎ Ê>*_#"_+ë!9Í£ Í� ÕÿÍê Ê8!Ã;!ÿÿ"c!"a!9Í£ ë*_Í� å!0ÑÍ Êu!9Í£ ë*_Í� å!9ÑÍ ÍÎ Ê®É*_#"_+ÃD*a Í å! 9Í£ ë*_Í� ÑÐÿ"aÃ~*cë*aÍ ëá"_á"aá"cëÉ*+%"è%"æ%"äÜÿ "5 "3 "1yÿ 6"+6„+ùÕ!€^6*F+N+ÅòÊ3!Éå!9~#·Ê]þ ÊOþ"Ê1þ'Ê1 +Ñ}|Õå+#~·ÊH¹Â;6#ã~#þ<Ê}þ>Ê�!Ç4áÃá6ÿ#6ÿ*Çå!ÉåÍ *Ñ|µÊzåÍMÃå!‹åÍ}"�Úrå!ÏåÍ}"ÑÁÁÚ§áÑÕô ÍÍCan't open > or < file.$ÃnwÑÁÅÕ*õ Úñë! þ9íRÚñ*õë"õëÉ!ÿÿÉ€ *�}´Ê^å switch (c) { case TAB : col = nexttab( col ); break; case NEWLINE: col = 1; break; default : col++; } } } nexttab( col ) int col; { int i; i = (col-1) % TABSIZE; if( i == 0 ) return col + TABSIZE; else return (TABSIZE-1) + col; } >2Ý>2Ü:·Ä&͆ Åx±Ês ÕåÅÕëÍÑ:ÜOÍÁ·Â@ !€ÿ DMá€Ñà áÑ:ÜþÂs áY  Í!ÿÿÃy Write error - Disk full $Ñ`iÍp å€ÍáÃÞ!9~=+åÍ^ áÕV+^+F+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!Âè »Âè ,ɯÉ|µÊÔ !¯ÉÁÑÅ|º}!À»À-Éëà ë|ºÂ }»ÊÑ z¼Ê& õ¬!ò" ñÐ-ÉñØ-É{½!Ø-Éëz¼Â( {½Â( ÃÑ ëz¼Â( {½Â( !Éëø||g}oÃL ëø¯|g}oÃZ ëø)Ãg ÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂŽ S\)ë)ëÒ– =ÂŽ ɯõë z¬õ¬ëüw ë|·ôw MD!x<¿ z�>ÚÄ jS\>)ë)ëÒÌ #å áÒÔ =ÂÄ ëñðëÍw ëÃw ëáN#F#x±Êü ~#»~#Âå ºÂå Åáé #~wúÁɯ¼(#~+ÉÕ*¬ÿ^W#~!ÑÉOGÅÝåÁ F+Ná ngÉOGÅÝåÁ F+Ná F+n`ÉOGÅÝåÁ F+N+~=(Û¯çOGÅÝåÁ F+N+~á =(¯rW+sºÉ¯íRÝåÑɯíRýåÑÉ1 .ÎÃÄÖD x.ÎÃÍÏD {.ÎÅ×  S.ÏÒÇÁN ¨.OUMSÇ À.ÏÖÅÒLAYt®PERRÏR o.ÐÓÔÁT �.ÑÍÕÌT o.ÒÃÓÅT –.ÒÅÁÄÍÛÁÉÍÐ:<*¾ØÈë ͯ2 ÍDà  Í·ÈÍþÊþÊÌþ ÂC> _*~+¾Ð#4N s> »ÌÉÍÌ> !JÍgØÅ:¹Â}Í 2_~ÀÍÁþ – ‘ Í> Þ ŸþÊ[þʧÞ !ÿÿÉÁÑÕÅ*Ñ}´Ê¿ÕåÍZÁÁÉë> å!NÍgÑØÕë}þ ÂÜ ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö Úyþòy_~O·À7çÁáÑÕåÅ!V Õåö ¾ÂŸ#ÂŒÑái&ÉáÑ ~·Âˆ!~þÿʾ#°ÃÈÁÑÕÅë~#Fëðÿ6,pùÿw62?ëÍp å!9Í£ ÁÅy=åÍ^ áÊÈÕëÍý ÃÇ;* å*å*å!P"! 9Í£ å!ÑÍ Êu! 9Í£ ##Í£ åÍeÁ"*å!ÑÍ Ê[*Íw "*å!ÑÍ Êo!Ãr*"!" !9åÍ÷Ñ}#ÍÎ Ê* å*ÑÍ ʪ!9Í� åÍ«ÁÃÇ!9Í� öÿÍê ÊÇ!9Í� åÍ«Á!9Í� Ãó* åÍÁ" Ã!" Ã* #" +ÃÍã Ñ ß ÃèÃ{á"á"á" 3É*å!9Í£ +ë*Í  ë"*Íê ÊL!9Í£ ë*ëá"ëÉÃ\*+ë!9Í£ ÃBÃB*cå*aå*_å!"_!9Í£ ë*_Í� àÿÍê ¦!9Í£ ë*_Í� öÿÍê ÍÎ ÂÂ!9Í£ ë*_Í� ÷ÿÍê ÍÎ ÊÙÃÖ*_#"_+ÃwÃË!"c!9Í£ ë*_Í� ÕÿÍê Â!9Í£ ë "T > w+  ¯w w##w wàÿ ë#~+þ:Â1 ~##ÍV Ö@~#·Èþ.ÊB ÍV Ã1 ë*T ++·ÈÍV w#ÃH 2æþaøÖ ÉO!1 ~_#V²Àå!$åÍÓëáár+sbk#|µÉ/* copyright (c) 1982 Peter Baker */ /* * Truncate lines at the specified column. Default = 80. */ #include #define NEWLINE '\n' #define TAB '\t' static int TABSIZE = 8; main(argc,argv) char **argv; int argc; { int len, i, col; char c; len=80; if(argc>1) { i=atoi(argv[1]); if( i < 0 ) i = -i; len = ( i<1 ? 1 : i ); } col = 1; while( (c = getchar()) != EOF ) { if( col <= len ) putchar(c); else if( c == NEWLINE ) putchar(c); >þwÂÑÕÍÑÍÑ<ÊÈ!s 6#6Íÿ ~+¶ÂJÕåÅÍÓÁëás#r{²ÑÊÈë¯ÉÁÑÕÅ{þ Úk!NÍg#Ø^Í!É!ð¯w#w!~<ÊÈ6ÿÍÍ!#~þrʺG!ÕÍ£ }·Ê¹ë* xþuʯ>w#¨%åÅÍÓÁÁÑ{=ÕÍ^ Í<áÀ!7É!âN#FÅá" ÉÍ6{þ Ò`¯¹+ÂåÕ* å!åÍ ÁÁÑÕë? s{²ÑáʧÕåÍ£ #ͨ +ë* F!*Ñ>b¾Ê2xþ ÊÛþʧ·ÊÛh&ÉáÁÑÕÅå{þ ÐÍÍ!?~!N#F¹À¯wG+wO#ÉÍ6{þ ÚlÁÑáåÕÅÃÂ+å!9~þ –å!*~þbÊ“!�5‘> áÖ6á> *  wãåå`i#ͨ ᯾áÂÄÁÑÕÅÕ%,å!åÍÓÁÁÁ|µ!ÿÿÈø!9n&:�·ÊZɯ2Ý>à ÊÓå!9Í£ ë!þ:Ýw!ðÁÅx†wÒþ#4áÉ"  /* copyright (c) 1982 Peter Baker */ /* Wrap files to the standard output with any of a number of handy options. This program grew all out of proportion with people continually asking for an extra feature. Please don't curse me for the poor code ... I was only trying to do them a favour. Do not try to add any more features without restructuring the whole thing or it is liable to explode!!! */ #include #define NEWLINE '\n' #define CR '\r' #define TAB '\t' filep = fopen( filename, "r" ); if( filep == 0 ) printf( "\nwrap cannot open: %s\n", filename ); else { wrap(); fclose( filep ); if( length > 0 ) putchar( FORMFEED ); putchar( NEWLINE ); } fnum++; } } wrap() { static int c; /* this is an int so it can hold an EOF */ static int spcs, i, lntemp; fillbuf(); /* this is needed here for some unknown reason */ linecnt = 0; colcnt = indent; pagecnt = 1; if( headings ) prhdg( pagecnt++ ); if( sskip '-w' */ break; case 'p': case 'P': length = atoi( argv[optnum] + 2 ); break; case 'h': case 'H': headings = true; length -= 3; /* to acct for hdg space */ break; case 't': case 'T': tabs = true; tabsize = atoi( argv[optnum] + 2 ); if( tabsize == 0 ) tabsize = 8; /* default */ break; case 'd': case 'D': date = true; headings = true; datecode = argv[optnum] + 2; break; case 'l': he tab if already done */ else putchar( c ); if( c == '\n' ) doindent(); if( headings && ( c == FORMFEED ) ) { prhdg( pagecnt++ ); doindent(); } else if( c == FORMFEED ) doindent(); if( length > 0 ) if( linecnt >= length ) { putchar( FORMFEED ); if( headings ) prhdg( pagecnt++ ); putchar( CR ); /* cursor at col 0 */ doindent(); linecnt = 0; colcnt = indent; } } } prhdg( pagenum ) int pagenum; { putcha#define BKSPC '\b' #define FORMFEED '\f' #define SPACE ' ' #ifndef true #define true 1 #define false 0 #endif /* * See 'wrap.doc' for info and options. */ int BIGBUF = 0x1000; /* 4K ... could be up to ~ 40K */ int width = 80; int length = 60; /* standard 8 1/2 by 11 inch paper */ int headings = false; int tabs = false; int tabsize; int slinenum = 0; /* start printing at line N */ int indent; int date = false; char *filename; FILE filep; char *datecode; int colcnt; inlinenum ) /* wait for the slinenum'th line before we print */ for( lntemp=0 ; lntemp < slinenum ; lntemp++ ) while( ( ( c = bgetc() ) != '\n' ) && ( c != EOF ) ) ; doindent(); while( ( c = bgetc() ) != EOF ) { switch( c ) { case NEWLINE: colcnt = indent; linecnt++; break; case CR: colcnt = indent; break; case TAB: spcs = tabsize - ( (colcnt-indent) % tabsize ); /* this starts tabs at the indent column not 0 */ if( spcs == 0 )  case 'L': slinenum = atoi( argv[optnum] + 2 ); break; case 'i': case 'I': indent = atoi( argv[optnum] + 2 ); break; case 'b': case 'B': BIGBUF = atoi( argv[optnum] + 2 ); break; default: usage(); } optnum++; /* process next option */ } #ifdef DEBUG printf( "argv[1] = %s\n", argv[1] ); printf( "\nwidth = %d\n", width ); printf( "argv[2] = %s\n", argv[2] ); printf( "length = %d\n", length ); #endif while( argc-- ) { filename = argv[fnum]; r( NEWLINE ); doindent(); printf( " File: %s", filename ); printf( " Page: %d", pagenum ); if( date ) printf( " Date: %s", datecode ); putchar( NEWLINE ); putchar( NEWLINE ); } usage() { /* The msg is broken up due to C/80 limiting line length to 100 chars. */ static char *msg = "[-h] [-ttabsize] [-dstring] fname [fname fname ...]"; printf( "\nUsage: wrap [-wpagewidth] [-ppagelength] %s\n", msg ); printf( "where:\t-wN sets the pagewidth to N\n" ); t linecnt; int pagecnt; main( argc, argv ) int argc; char *argv[]; { static int fnum = 1; /* arg # of the first filename if no opt */ static int optnum = 1; if( --argc < 1 ) usage(); /* this exits !! */ while( *argv[optnum] == '-' ) /* options ?? */ { if( --argc < 1 ) /* must be one arg left */ usage(); /* usage() exits! */ fnum++; /* since this arg is an option */ switch( *(argv[optnum] +1) ) { case 'w': case 'W': width = atoi( argv[optnum] + 2 ); /*  spcs = tabsize; colcnt += spcs; if( tabs ) for( i=0 ; i= width ) { putchar( NEWLINE ); doindent(); colcnt = indent; linecnt++; } if( tabs && ( c == TAB ) ) ; /* don't print t#  printf( "\t-pN sets the pagelength to N\n" ); printf( "\t-h turns on headings at the top of each page\n" ); printf( "\t-tN expands tabs to every Nth column\n" ); printf( "\t-dstring sets the date to string and turns on headings\n" ); printf( "\t-lN starts printing at the Nth line of the file\n" ); printf( "\t-iN indents each line N spaces\n" ); printf( "\t-bN sets the file buffer to N bytes\n" ); exit(1); } static unsigned numchars = BIGBUF; /* Number of chars in buffer. Set to BI9Í Í "*å!žåÍåÁÁ"*ÍRÊ8Í< ! å*åÍD ÁÁÃaÍu*å͵Á*å!ÑÍjÊY! åÍÁ! åÍÁ*!#"!+ÃçÉÍÏ!"*"!"* |µÊŸ*#"+åÍ´Á*|µÊì!"s*så*ÑÍyÊìÃÉ*s#"s+í͈"möÿÍ6Êà*m#Í6Í6ÊéÃÉþÍh͈"m#Í6ʳ*mï*"*#"+ÃË*"ÃË*å*ÍÕë* Íëå* ãÍÕ"o*oÍRÊH* "o*ë*o"* |µÊˆ!"q*qå*oÑÍyʈÃ}*q#"q+Ãa! åÍÁÃrÃË*+"ÃË!"*"ÃË*#"+ÃËÍK   ‹• ä*å*ÑÍnÊò! åÍÁÍh*"*#"+* |µÊ*m÷ÿint i; for( i=0 ; i !"â !9Í ë*Þ ÍÕÿÍRÂ� !9Í ë*Þ ÍÓÿÍRÍ6ʱ *Þ #"Þ +ë!9Í ÍÕÿÍRÊ« !î !ÿÿ"â !"à !9Í ë*Þ Íå!0ÑÍnÊè !9Í ë*Þ Íå!9ÑÍoÍ6Ê! Ãü *Þ #"Þ +÷ *à GBUF to get bgetc() started. */ static int remchars = 0; /* # of available chars remaining in buffer */ static char *begbuf; /* pointer to beginning of buffer */ static char *curbyte; /* pointer to next available byte in buffer */ static char kickit = true; /* initialize flag */ bgetc() { if( remchars-- > 0 ) return( *curbyte++ ); else { if( numchars < BIGBUF ) { numchars = BIGBUF; /* reset for next file */ return( EOF ); } else { fillbuf(); return( bgetcÍRÍ6Ê Ã*måÍÁ*möÿÍRÊ%Íh* |µÊ7*môÿÍRÍ6ÊP*#"+åÍ´ÁÍhÃ`*môÿÍRÊ`Íh*å!ÑÍjʰ*å*ÑÍnʰ! åÍÁ* |µÊ™*#"+åÍ´Á! åÍÁÍh!"*"ÃïÉ! åÍÁÍhÍ< !·å*åÍD ÁÁÍ< !Êå!9Í åÍD ÁÁ*|µÊûÍ< !Ûå*åÍD ÁÁ! åÍÁ! åÍÁÉîÍ< !"å* åÍD ÁÁÍ< !PåÍD ÁÍ< !uåÍD ÁÍ< !•åÍD ÁÍ< !ÆåÍD ÁÍ< !îåÍD ÁÍ< !' åÍD ÁÍ< !Z åÍD ÁÍ< !| åÍD Á!åÍÖÁÉ*�+"�#å!ÑÍjʪ*…#"…+ÍÉÃÌ*å*ÑÍ¥ÊÅ*"!ÿÿÉÃÌÍÏ͈ÉÉ:‡Í|µÊ*åÍ;Á"ƒ#ÍRÊ Í< !£ åÍD ÁÍ< !Ä åÍDÃ/@P<!9åÍ +Íå!ÑÍyÊ?Í*#)ë!9Í Í ÍÓÿÍRÊç!9åÍ +Íå!ÑÍyÊvÍ*!#"!+*#)ë!9Í Í #ÍÔ*#)ë!9Í Í ##åÍä Á"ÃÜ*#)ë!9Í Í ##åÍä Á"ÃÜ!" *+++"ÃÜ!" *#)ë!9Í Í ##åÍä Á" * ÍRÊ!" ÃÜ!"!" *#)ë!9Í Í ##"ÃÜ*#)ë!9Í Í ##åÍä Á"ÃÜ*#)ë!9Í Í ##åÍä Á"ÃÜ*#)ë!9Í Í ##åÍä Á"ÃÜÍÃÜÍK•w•W²p²PÏhÏHátáTdD7l7LTiTIqbqBÃŽ*##"#+Ã?!9åÍ +Í#|µÊl*!)ë! Íçå!9Í ë*Þ ÍÐÿÑ"à Ãñ *â ë*à ÍçÉ.!9", É*, ++", Í åÍÉ Á*, å!9ÑͤÊv *, ++", Í åÍ¡ ÁÃT É*, ++", Í }20 :0 Íå*, ++", Í åÍÛ ÁÁÃT É*, ++", Í "1 *1 å*, ++", Í åÍô ÁÁÃT É!å!9Í åÍÛ ÁÁÉ!9Í}20 !9Í ". Í É!9Í "1 !þÿå!9Í åÍÛ ÁÁÉ*. ÍÍ6Ê) *. ÍÛÿÍ6Í6ÊB *. #". +ÍåÍC Áà É:0 ÍÃ� !9ÍåÍÁà *1 #"1 +å!9ÍÑ}*1 6à !9Íå:0 ÍåÍÂÁÁà à ÍKL [ þÿÃv É*. #". +ÍÍRʳ É!"3 *. Íå!0ÑÍnÊØ *. Íå!9ÑÍoÍ6Ê Ãä ù *3  Íçå*. #". +ÍÑÐÿ"() ); } } } fillbuf() { static unsigned int i; if( kickit ) { if( ( begbuf = sbrk( BIGBUF ) ) == -1 ) { printf( "\nError: cannot allocate buffer.\n" ); printf( "Try smaller buffer size.\n" ); exit(1); } kickit = false; } i = 1; curbyte = begbuf; /* read until either EOF or buffer is full */ while( ( *curbyte++ = getc( filep ) ) != EOF ) if( i == BIGBUF ) break; else i++; remchars = numchars = i; curbyte = begbuf; } doindent() {  Á!åÍÖÁ!}2‡!"Í*ƒ"…*…#"…+å*åÍCÁÑ}#Í6ÊV*å*ÍÍ>ÊKÃVÃS*Í#"Í+Ã*Í""�*ƒ"…É*få!"f*få*ÑÍyʙÎ*f#"f+Ãr! åÍÁÃá"fÉr wrap cannot open: %s File: %s Page: %d Date: %s[-h] [-ttabsize] [-dstring] fname [fname fname ...] Usage: wrap [-wpagewidth] [-ppagelength] %s where: -wN sets the pagewidth to N -pN sets the pagelength to N -h turns on headings at the top of each page -tN expands tabs to every Nth column -dstring sets the$  3 Ãá ! }25 ! ": "6 !"8 *. #". +ÍÃÁ !": !9Í åÍ:ÁÃÞ !0}25 !"6 !9Í åÍ:ÁÃÞ !0}25 !"6 !9Í åÍ:ÁÃÞ !9Í åÍC ÁÃÞ !9Í Í|µÊ³ !9åÍ #Í+ÍåÍC Á*3 +"3 Ã… ! åÍÁÃÞ ÃÞ ÍK) d/ u> oZ xv c… sÍ É!9Í å! ÑÍyÊ!9Í 0Ã!9Í AöÿåÍC ÁÉ*3 +"3 å!ÑÍnÊ7:5 ÍåÍC ÁÃÉ@Í*8å!9Í "8*3 +"3 #*: ÍRÊ~*8.|æ€g|µÊ~*3 +"3 #*8Íß"8!"8 *8å*6 Ñͥʗ*8å!ÑÍ–Í6Ê»Í*8 |µÊ°!-åÍC Á*8åÍâ ÁÃ)*6 øÿÍRÊÕ*8ë!ÍÁÃù*6 öÿÍRÊï*8ë! ÍÃù*8ë!ÍÁåÍ:Á*6Ê!ë*txþuÊ>w#Â%åÅÍ;ÁÁÑ{=ÕÍÆÍ<áÀ!7É!JN#FÅá"tÉÍž{þ Òȯ¹+ÂpåÕ*tå!åÍhÁÁÑÕë§ s{²ÑáÊÕåÍ #Í+ë*tF!’Ñ>b¾Êšxþ ÊCþÊ·ÊCh&ÉáÁÑÕÅå{þ ÐÍ5!§~!}N#F¹À¯wG+wO#ÉÍž{þ ÚÔÁÑáåÕÅÃ*+å!9~þ Âþå!’~þbÊû!ø5Âù> áÃþ6á> *t wãåå`i#Í᯾áÂ,ÁÑÕÅÕ%,å!åÍ;ÁÁÁ|µ!ÿÿÈø!9n&:ø·ÊÂɯ2E>Ão27å!9Í ë!f:Ew!XÁÅx†wÒf#4áÉ>2E>2D:p·ÄŽÍîÅx±ÊÛÕåÅÕëÍÑ:DOÍÁ·Â¨!€ÿ DMá€ÑÃ}áÑ:DþÂÛáÁ Í!ÿÿÃáWrite error - Disk full $Ñ`iÍØå€ÍáÃF!9~=+åÍÆáÕV+^+Fent each line (including headings) N spaces. -bN Will set the file buffer size to N bytes. BUGS: - Sometimes an extra formfeed is inserted at the end of the run? - Tabs can make the line extend past the left margin - A carriage return not expected to do a line feed - Headings must all fit on a line - It should be made recusive so all characters that expand (ie tabs) are correctly handled Patch Locations for WRAP switches öÿÍRÊ*8ë! ÍëÃ$*6 +å*8Í,åÍâ Áá"8É*+%"P%"N%"LÜÿ "� "› "™yÿ 6"n+6„+ùÕ!€^6*F+N+ÅòiÊx3!1å!9~#·ÊÅþ Ê€Oþ"Ê™þ'Ê™ +Ñ}|Õå+#~·Ê°¹Â£6#ã~#þ<Êåþ>Ê÷!/4áÀá6ÿ#6ÿ*/å!1åÍ%*9|µÊâå͵Ãå!óåÍå"õÃrå!7åÍå"9ÁÁÚáÑÕÀ ÍÍCan't open > or < file.$ÃÖwÑÁÅÕ*] ÚYë! þ9íRÚY*]ë"]ëÉ!ÿÿÉè*õ}´ÊÆåÍCÁÉõ*:m<*n¾ØÈë ͯ2m ͬÃq Í·ÈÍþÊþÊ4þ «> _*n~+¾Ð#4N s> »ÌÉÍ4> !²ÍÏØÅ:p¹ÂåÍq2m_~ÃèÍÁþ Âþ Âù Í> à  WRAP ---- Printing Utility This utility will print any number of files with newlines put in at the appropriate column. The default column is 80. Form feeds are also optional by specifying a pagelength. The default is no form feeds. OPTIONS: -wN Sets the page width to N characters wide. Default = 80 -pN Sets the page length to N lines long. Default = 60 If N = 0 then n+NáëÉ~oŸgÉ~#foÉëáãs#rëÉÁÑÅ}³o|²gÉÁÑÅ}«o|ªgÉÁÑÅ}£o|¢gÉ|µÈ!,ÉÁÑÅ|º}!ÂP»ÂP,ɯÉ|µÊ<!¯ÉÁÑÅ|º}!À»À-ÉëÃyë|ºÂy}»Ê9z¼ÊŽõ¬!òŠñÐ-ÉñØ-É{½!Ø-Éëz¼Â�{½Â�Ã9ëz¼Â�{½Â�!Éëø||g}oôëø¯|g}oÃÂëø)ÃÏÁÑÅ{•ozœgÉ+|/g}/oÉDM!z·>ÂöS\)ë)ëÒþ =ÂöɯõÃz¬õ¬ëüßë|·ôßMD!x<Â'z�>Ú,jS\>)ë)ëÒ4#å áÒ< =Â,ëñðëÍßëÃßëáN#F#x±Êd~#»~#ÂMºÂMÅáé "¼> w+ Ân¯w w##w wàÿ ë#~+þ:™~##;Ö@~#·Èþ.ʪ;Ùë*¼++·È;w#ðæþaøÖ ÉO!™ ~_#V²Àå!$åÍ;ëáár+sbk#|µÉ "¼> w+ Ân¯w w##w Version 1.4 Sept/21/82 Parameter Wrap Patch Default Value Argument Location Decimal Hex Bytes Buffer Size -b4096 0103 4096 00 10 Page Width -w80 0105 80 50 00 Page Length -p60 0107 60 3C 00 Heading flag (Default: off) -h 0109 0 00 00 Tabs flag (Default: off) -t 010B 0 00 00 Tab Size -t8 011D 8 08 00 Start line number -l0 011F 0 00 00 Indent column -i0 0121 0 00 00 þÊÃþÊÃ!ÿÿÉÁÑÕÅ*9}´Ê'ÕåÍÂÁÁÉë> å!¶ÍÏÑØÕë}þ ÂD ÅÍÁ> _ÍáÉÿÿÿÿÿÿÿ !"# con:rdr:pun:lst:Ö Úáþòá_~O·À7ÃÁáÑÕåÅ!¾ Õåö ¾Â#ÂôÑái&ÉáÑ ~·Âð!w~þÿÊ&#ÂÃ0ÁÑÕÅë~#Fëðÿ6,pùÿw62i§ëÍØå!9Í ÁÅy=åÍÆáÊ0ÕëÍe>þwÂzÑÕÍÑÍÑ<Ê0!vs 6#6Íÿ ~+¶Â²ÕåÅÍ;Áëás#r{²ÑÊ0ë¯ÉÁÑÕÅ{þ ÚÓ!¶ÍÏ#Ø^Í!É!X¯w#w!v~<Ê06ÿÍ5!‹~þrÊ"G!}ÕÍ }·o formfeeds are inserted. -h Print the filename and page number at the top of each page. -tN Expand tab characters to every N'th column. -dstring Will print string in the date field of each heading. The heading option is automatically specified with the -d option. NOTE: String must not contain blanks. It is reasonable to enter the date as SEPT/3/82---2:00pm -lN Start printing at line N. -iN Will ind%   The values of these parameters can be altered by patching the WRAP object file. Use DDT to modify the desired options, exit with ^C, then type: SAVE 22 WRAP.COM to save the modified object file. åååååååå&  åååååååååå'  åååååååååå