IMD 1.16: 29/05/2007 18:22:25 FOGCPM.053 6/86 --FOGCPM053FONTSY COM FONTSY COM(-06-00 86 FONTSY DOC !"#$%&'FONTSY DOC()-CPM053 DOCFONTSY BASB*+,-./012FONTCODECOM3456789:;<=>?@ABFONTCODECOMVCDEFGHIJKLMFONTCODEBASNOPQRSTUVWXYZ[\]CHARFLIPCOM^_`abcdefghijklmCHARFLIPCOM noCHARFLIPBAS#pqrstCLARE FNT3uvwxyz{CLS DAT|GOTHIC FNT@}~HERON FNT.KIWI FNT/RAVEN FNTHL080 COMHL132 COMHL DOCHEADLINEASMHEADLINEASM&HEADLINESUBThis is the disk name. Ï+"6# x+:`i* ">"/##~>;+> 6*s#r w+͊1>2 u+#w+>36*s#rw+6*xDM"+ڍ+s#r#À+! >2:*ã+6*x+Á*~#ʽ+#~+ҽ+~+x 6*s#rw+ɯ2,x_O:*+2,x_O6*9w#w+x,+r+s=,w>#w+Á*~7^#VE,E,!~ѧ7x1P*x1! ?q)0!-*r,!$$D!LD!>|/g}/o|!c"!-ͱ%!-w/[+-0-0r,!d?:o&"3*3|)d*3"5!I*7n&-9-9r,*7#"7*7*5z|]}|,*!"<(!09'(!9'(@!-Ͱ-9'(!)!9'(! Ͱ-9'(!x9'(! Ͱ-9'(!K9'(!*9'(! Ͱ-9'(!(9'!͎%!9ͱ%9!(̀.j>!(r,!9V/"A!Ó9*7!e-`/"C*C|;)?go*C|M)go|g}o|s*C-*79ͼ,*C|!*79ͼ,*7#"7*7*Az|}|!9V/|go9!e-!\.|g}o|(!09'*9!-Er,(!'!9'!9'(!(9'!EdC(!(9'9!.|G9!-9r,Q3 (!09'(!9'(@!-Ͱ-9'(!(9'(!(9'(!H9'(!K9'(!(9'(!(9'(!'!9'!9'(!(9'!!>V/*7z|}|(>*7!?e-9'(!(9'@*7"7*7|)(!(9'(!(9'(!9'(!(9'(!(9'!v͎%!Nͱ%N!({. !"<*<|µ(!09'(!)!d9'(8!-Ͱ-9'(! Ͱ-9'(!D'*Q0'(! Ͱ-9'(! 9'(!9'(!9'(! Ͱ-9'!͎% $!SG%!SV/"V!_S*7!e-`/"C*C|.)go*C|?)?go|g}o|[(!*'o*7#"7*7*Vz|s}|!Sw/[+"Q*Q|ڐ)ڟ(!*'o*Q|ڬ)ҵ!"Q*<|(!09'(!)!l9'(?!-Ͱ-9'(! Ͱ-9'(!*9'(!9'(!9'(!d9'(!"9'(!9'(!9'(! Ͱ-9'!v͎%!Xͱ%!XV/|b)!XV/"[!X*7!e-`/|ڎ)goX*7!e-`/|ڬ)?go|g}o|*7#"7*7*[z|}|t!Xw/N*7!Xw/[+-Xr,*<|‹ (!09'(!)!X9'(=!-Ͱ-9'(! Ͱ-9'(!9'(!9'(!9'(! Ͱ-9'!͎% $!]G%*]|ڂ )ҋ !"](!09'X!({. _!r, !X`/-!-_r,(!)!v9'(0!-Ͱ-9'(! Ͱ-9'(!\'!99'(!(9'(!.'*Q0'(!(9'(!'!_9'(!(9'(!'*] '!9'(!(9'(!9'(! Ͱ-9'(!'!ͨGbr,! -!b̀.L!b`/|ڣ )go!b`/|ڷ )?go|g}o| (!*'Ë !bw/[+"<*<3jo L(!'!NV/"e!ç N*7!e-`/"g*g|- )ڣ (N*7!e-'X!({.a *g-ir,j i!Xr,*g+ V/"l*l|ʣ *l"n!z !"p*g+ DM*C!e-!-{. )!(9' *C+"Cu *g+ DM*C!e-`/*Q"r*g+ *C#!e-`/"t*t|+ )> *t"t!"p)*r)*t!i͝-'*p|e )!(9'G"!-̀.L*C##"C*C*nz| }|Ґ )*]+! Ͱ-9'*7#"7*7*ez| }| L͜!$$D9!LD!c"!Hͱ%!c"!Kͱ%!c"!Xͱ%!c"!Sͱ%!Sw/[+"Q!c"!vͱ%!vw/[+"]!!c"*y+ ͱ%*y+ !({. *y|h )?go*y|z )go|g}o|ʨ *y+ "*ͥ,*y+ !(̀.*y| >!r,*y| >!->r,*y->-!->r,*y#"y*y|$)1 !d?d3/)|go=):*3|g}o|\!d?_Î(!0'! Ͱ-9'(!9'!u'!*9'`)/)|go=):*/|g}o|ʽ(!(9'(!`'!99'(!(9'`)/)|go=):*+|g}o| !d? ÿ(! Ͱ-9'(!*'!.9'(!9'(!9'(!9'(!(9'!z(!'*7 '!(͎%!{ͱ%{!(\.*7|ڇ)?go|g}o|{!(̀.T!{V/|ڲ)T!{V/"~!"{*y!e-`/|)go{*y!e-`/|)?go|g}o|(!*'!l9'T*y#"y*y*~z|6}|*7|G)g! --! --r,!{-r,*7#"7*7|ڊ)T(!Z'!V$D!LD!͒(!9'!d?`)/)|!d?!(!0'! Ͱ-9'(!*'!"-'!9'!"-'!4'(!'9'`))͜ *try again.7 is a bad file name or drive - YO]Writing CLS.DAToWhole decimal numbers only.Clear Screen character+entries with a to generate CLS.DAT0one byte at a time in Decimal numbers. End your'Please enter your clear screen sequence/1CLS.DAT, the clear screen data file, not found.cNo fonts found on x not found - try again. tildespace Printing ==> Option or ?  Enter banner text.rows4. Set banner spacing is:3. Set print character is:+12. Set column to start printing is: Column_1. Change fonts is: ySet Font Defaults decimal  variableNumber of rows$ for the default value of 3.<be reset from the value contained in the font. Enter a bare=The number of rows between large characters in the banner may[Set Rows Between Characters&yCharacter, decimal value or ? >for each large character to be printed with its own character.?square with an ASCII decimal value of 239. Enter only?%ASCII value. Example: The Gemini-10X has a 6 by 6 graphic?genter it or enter a minimum of two decimal numbers to use the?in the upper 128 characters. Just use a single keystroke to?can be set to any printable character or to a printer character?-The single character used by FONTSY to print all large lettersoSet Print CharacterColumn to start printing2Enter a bare for the default of column 1.4lines of a smaller font. Allow room for descenders.8 Reset the left margin to center a banner or to allow twoGPrinting now starts at columngSet Left Margin yBanner text? 3Enter to change font defaults, ^C to exit.Characters available in .FNT. are:Available fonts on drive  *.FNT:Font name or Drive ? - A: List of fonts on drive A:*NExamples: KIWI Use the font named KIWI.FNT+{Enter the name of the font you wish to use..Prints banners using fonts created by FONTCODE@FONTSY Version 1.0 9/15/85  (C) 1985 Merlin R. NullCLS.DAT'I+\u@X (2<FPZ0dnxd ,Ea*jjs|",6@JT^hr| .s'G LL&U0^:mDNXblv*3ER ]ccox  *4>HR\f!p[zw~ $-6$E.R8eBtLV`jt    * 9 B K T c u       ( 2 < F P- Z6 dK nT x] l u          0 C j |  " , 6 T @ Ju  ^ h> rT |e           + 1 F & :[ 0b D N X'l-v_t *3<E NT c*p4>HR\f:pgzv![[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 DSCT"DM*"/*1 ##"/>22*^#V"##^#V" 2!b!!""!"6#6P>2>2>2ççÞ_rG ®G#"C_*C+~ # G#"C+~7ȷ> ͉G> ÉG;?!"++!9" !́ $!́!́!R"!O" |U> 6#s#r#=J>2>2>22!"!$\">&20ÿ26#}~|~ͅ3 STO͌Ü *.. . ........ͯ1*|£:*|  s#r  {o w#6"**>2p Ö!9N#F ~#~I~+O~#~I+^#V###'###'|[~#fo!cͅ3 Internal Error - No Line Number ë ~#ͅ3 at lineͫ ><®<0 J}_|W!ͫJ~#fo>ͅ3 at address|ͩ3}ͩ3 > J> J~#*/ ͫJ~#foɏT!9"!7 *= "!^ * ! ~<ʊ =ʊ #~# v #Ë3Syntax Error in DATRETURN without GOSU Type MismatcOut of DatIllegal Function CalOverfloOut of Memor Subscript Out of Rang Division By ZerOut of String SpacString Formula Too CompleRESUME without Erro2Field Overflo3Internal Erro4Bad File Numbe5File Not Foun6Bad File Mod7File Already Ope9Disk I/O Erro:File Already Exist=Disk Ful>Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erro3 ̀!F">]"͊w>}1|¹3 }ͱDH"G`i"!""!#"" ,(#""634*K*K*K*K"6́5*K"64*K*K ”",Z(#~#"x}1"D !>(#n1}1u,@A # 8#(#"M#G{,xM#PX@Aڛ#!%Oz"yʆ# ʻ# †#O{,y#@Aڛ# †#{ ʕ#,> ʕ#ʕ#ʛ#ʛ##@AR#"ʦ# #@A# ʦ#,# #@A# #*( 4:#{,#6!%n1O #+~ ##6!%ɷw##NJTeN#" $!9"$"$y2$*|-$*!%"A~#*&͟J:M$~%$_$6b$6"&ʈ$ʔ$34*K*K*K*Ká$́5*Ká$4*K*K*&͟J$~#"&,5$ %:%5$~%!"~,"$#"~$$# $%"$#"&x" % %+~ %y}1á$ͅ3?Redo from Start *$ͯ1!D%͎%* $:$O4$*$+~+r%d%d% +w f%}%++~#fou,"$!$5*$~2%#~#^#Vw3++ͥ1)Hڍ:%3 *|%!%n1}1u,*]Pw+O/MW;PxXG{M!i4X:i:h/<!iOp#6M Ps"Sw!h~w PogtQs"wO*f||O*f*h>P"f`i"h!f^#V#N#F#fTP:uGw#TP!h~7w?##wy7O!lOPÁP!lPPfs"bxO!OOy!hyͧP3 B'&(3 M'&(3 X'&(3 '&(3 B'H(3 M'H(3 X'H(3 ͭ'H(3 B''3 M''3 X''3 ͭ''Kc'Kc'"Kl'H~# d'x23:('œ'7n1<T(~ʕ'xI#É'C(7~ʘ' xI#ß'>23:(F#~#fox'T(''~#xI''å1'>"xIG:x' J*+~<(=(###~(* J!'**~=-(/<T(C(=9(> xI'>,xIW*#^ ~(x(+=x(:=x( Jz{ڐ({_Â(3 |(}ͱDʫ(G`i"++"!("!("2&)D ù?iG}o|g(> xI+|( J!"!"2&)!"!"2&)!~6#w n& ^#Vʹ*|N !\)ÇP:ʭ^#V2^#V#"!":* n~!)͗3Nʪ)D i& +**{<) J{)=> xI)|¹}*)<)*})|¹})|*!*#n&*>!>!>!>!>!>^#V#!Kq*>d*>d*>d*>d*>d*>^#V#!K×*|* G8,ʌ*Û* G8,ʯ*~#foñ*##N hR^#V#3 *3 *3 z*|*|͈RR^#V*^#V#+R23 3 3+3 tJj+?J|ù3 a+3 j+G++:ʷ+!g ANOÎ+:ʺ+!k ͇P:K2K:K++:K®+ð+|/g}/oO:K+!K+8,+!D ö:KgoW*K|7g+:K++> ,|/g}/o,!),G|%,,o& Gȯ|g}o,,B,>O,~+~?~Z,+#g,+ g,3 W1ԯ,~##++%2>ͰJ+V+^+ʢ,+r+so23 u,~͎1-ʑ",",*,|¹}ʹ ڹ+<,{*,,~#^#V`i#N#F ͰJ*,ͥ13 ڹ1#-#-ͥ1ͥ1~#~#foͰJ3 |¹BKm-PY3 |¹BK ^- o_A-3 z¹zu- {-_ҁ-o}`i͎1ͥ1DM3  ͳ-~ʹ#~#fon&ͥ13 z-}1~-s#-D ù3 |¹!9>}1$͍P3 "K>.3 K>.3 K>ͰJ23>!-LJ7>-?J~#4.x}1>^.>^.>^.>^.>^.>͕.!+>Â.>Â.>Â.>Â.>Â.>͕.ʑ.~#fo##GN.y.#~#fo~#fo.#. °. y.y<..).)ͥ1ͥ1ɀ.x¹ű. y<2.F~B/B/#~#foyͫJO #~#foxF/6/#%/F/!.4 "/2.ͥ1ͥ1*.&~ͥ1o&~ʹ#^#V++ͥ1o&3 ~<ʹ1~#~#foͰJ6++=634ͥ1å1`Nĉ//S/R////I/R////O/I//L_!/4/5*/"/~#N#F#10 0 ͫJ/yx0 /+++6@#yw#xw+++6###!/~6B0W0/͡0*/#~#~/D ð!*/"/~#^#V#ڞ0}0ͫJd0|‰0d0++~_w#~Ww#d0W0*/DM~#^#V#00ê0+z1+{1##{z~#q#p_ʪ0y0x0DMê0~#0ê0YP+++"/6@###{_zW+r+sɷJ1*/|(1D ó/^#V+"/w#s#r+++r+s##!Q1V1*3{z*3?l1}|~# r1yG1xͰJG1x#N#F& Æ1W1%2o2*3*3;J1ͨ21%2o2###õ11ͅ3 during G.C. ë1ͅ3 ëͅ3 Internal Error - String Space Corrup#N#F*/yxj2*/yxj2++`i+V+^;J1##6+6+~6  >@++*/"/s#r+͡0*/#~_#~WҘ2D ÿr+s##6"/###!/~#foʼ2;J¬2<*/"/*/}o|g6@#s#r#6"/*3*3"/}w>#w##;J2++6+6ɴ//! 3>23|F3+})N#B3~#fo :353!9"!4 ~ͫJ#ù!4!9"^#V#!~wڤ!9"ɧ~ J#=y3͋3~ J#Ë3G~#ʧ3#™3++Ͳ30:ڽ3 J*^cMccM__{bb]__ _+_ LbbE=4*K}/o|/g#"K|@4hR4!K~wɯ2KE=*4O@4*K@4hRE=*4O>>5~͓#E4Ó3!Kc4>!KK2j4# i4!KAN!KJ5K>>ڌ4>|}+!6IM5R+6!K>͊O2K!5P!5IM!KIM~_#~W#~O9TÊP!<ÇP:R4ɇ<o&@4hR*K*K5"K`i"K!K^#V#N#F#!5ÈQ'Tx{T!K6Rwg>̈́T@TN5:3Gw#N5I5c5!KJ5KE=KE=A5*K||$5:K555|/g}/o5!">:K5$5"K>234aj5 L}4=4 >>23`h5~&`=-76+76++=7.6eI6Es6+=la6La6qa6Qr6:3ʌ6>Ì6~%6#6!6dʌ6D£66+=V=+=ڑ7£6_{_6 7§63E=!45E= £6676+=!4!5ã66+=ã6434E=54=E=44h876+o576-3#60:3W:3ڍ9ʅ9q8vDGŒ8"K`i"K#~+9-80OxG9#~8`xE8y ҭ8>23 9|ҭ88í8"K`i"K5#W;:379A9E9E9ͷ;605;+~0T9.5ʆ9E=>"w#6+w96-/</ y9:#p#w#6!3#z :ڪ:ͯ;z;v<{̔4=;8ʼ9p#6!3#:3~ 9*9+9+=-+_:{0:#+=:++w99:6%ڱ:): ;/>`4<>`4p#=;!K5:<4>$55=?;5/{_#zW#yO++N<4#5p#@<>|<!=>;N#F#*K/}o|gҏ<"Kp#=|<;w1_cƤ~@zZrN vH Tʚ;@B''d #~: += += +=0?<=:3R=7-+++==Oq=Hq=+}=چ=5H#ʲ=Ì=D öM!͞=ڜ=}0?)))صoÞ=M!==}=0? =? ))))صo=a{ 5E=:K:K4:32323D öD öK~#fo*m##n&ȇ*mK~#foGgO=0h#~+0h0h y|hxͤfxlhg~th#~Uhth~#fodh&>7fÒh#~!if)fÒh͢fBf*"m)f/`xiDM*O*QLʷh+x+¢hy3 }ͱDHG!' ~? ?#~?`i@>>O #~goPY!' ůw/A:CH=H=S?ѯH<H!% ^#Vr+s3 }\D!">}ͱDʨ? PYž?!?`i>?!' ~*?/AOE3 }ͱDH!&?! ~+ng3 }ͱDH! n&*~GGDM'~'?4N#V p@zw w+s#r#6#6DM:F@!" s#r#6Ë@! {zVʃ@(>w<@<H!! {w:G˜@@!! ~(>!) ̹@'?̹@G~#¼@*~=G( ~@+~#5O ~+~@@@7>*T]% N#F+q#p###6 A/A:C>(A>w+w!(@7?*' 6#67~H#^#fk_xAN#~:|A++@Hy@HH> #A~.¦A͹A7ÒA#“A2>ͥ1z HH> ùAʭA> AíA3 [A(>><H!>>> ͰJ[A:>!>H>< H>*>~G#N#F++ͥ1 OfBIfBRG*>|fB!">}_ͱDyBOE{ͱD Hz[A ͋E"#>> ͰJ66/A~B<HB><H3 !>6# CmC3 [A2>!>C!>C(>>HO!)>  ~#GIy¼C~ ʹC>.GI ¦C: W:C> GIGIDI>–C~*6?# CO!!4 D#4 D#4y""DH><">>2!xG":<2*">!pD"3 ">-B*|nD##nl?]D.g?*>3 ÅD3 2>­E">íE3 áD3 2>®E">îEH<H=_!~#foD##{D++D*D"q#p#s#4#5++###DM !">~#fo-E+V+^##*>{zDBK^#V+*>s#r! DM?E*> DM~2s#r# 6# xBE !T]~#foHxZEyZE~#~+*"s#r(zz*>|ʛE! s#r#w¥E2E}ͱDG! ^#V:>E*>{H+s#r! w#w! ~#fo!GF>FBK>!)F)#F))"F !F#= F}_}la)H9F#xH"E! "E!) "E!}o|gGhFbk:EʮFG}FFDM*E*EG"EPYF}o|g*E#"EKFFDM*E*EG"EPYÓF2G*E! ~#foGs#rF:GF!F!& "@~# xGDMkGH`G! w!( V6 8GzwiGH`G! ~![G! ^#V! s#rDMXGRGG}ͱDHʋGG`i"!G"G@AD !>3 |¹,G-:H*!"{1f$%G!G*G#|}!">6>4>?>=>:>7>5>2>3>@>C>D o&N !"!%"&;H:%LHͅ3?LHprIÀH:CI>\2CIfHKHGI+zH~GIÎH+GIŽHGIDI!%2CIÑHrIORH:CIʧH>\GI2CIyIJI7 8I I HLHIJILHHLHGI> GI>sHH>#zH I6DI!%\IÎH ڎHx<>Iyq#GI ŽH> GIrI)I ʎHÑH:%DIw J>^GI@GIDI~ kI> GIGI#\I͊!* ʏI#~+<ʎI= J II ڠI4+~# xI~=I*!"xI"> xI> xI:=;J> ͚> ͚*vI!K[J!KVJK[JK[Jw#w#w#w#!J>KÇJ>KlJ ~#=‹J!lJ#~ ʞJ ʞJɅo$ɧGw#´J{z!-\_!(kn!(tw!H}!K͉͆!(͏͒!(͛͘!!9ͪ!ͤ͡!(Ͷ!!>ͯ*7z|}|͹>*7!?Ϳ!(@*7"7*7|)!(!("!(+!(14!(:!v!NN!( !"<*<|6#KOKL@TO L!HT!Ky#L+K@T?HTLTO%LL;OL!KOʑL:K@T:K/N͊ON2K:KN@Tx/F+N+=M!K$M!K>q#p#='M!KIM"JM ML*JOS:KS!KN#FQsOqʆMGܸNͶOx oMfMN!K͒O~Mj0 TeB׳]h!I.k LTOML;O!KIM͜)!Kq#~++w+qM@TDNn"~`35zr1{r1h!IO@TyO2KGNO@T:KLYN/VP.P͜)9TdP'TRP!K6Rg>̈́T|ԽR!>(PakTsPRsP@T!K~+>w@TzRÊP1T@T:KTҝP/OÍPzRP1TR@TȯGQ"Ky2KFoRR!D*K:KÖ́T|S{>2KS/))R =R!K~7w?##wy7O*K*K"K"KajSX`SSJS\E!KS/kT jT7>{_zW}o|g=aT|g}oړTCZQÆT o-yOzW{_xGÖTK*KDM^#V#N#F#xyHT:K:K7|/G}/O!>kT jT7>{_zW}o|g=aT|g FONTSY and FONTCODE 9/16/85 Banner Printing System (C) 1985 Merlin R. Null This Library should contain: FONTSY .COM Multiple font banner printer FONTSY .BAS MBASIC source for the above FONTSY .DOC This documentation CLARE .FNT A 54 character 70 column serifed font HERON .FNT A 95 character 50 column serifed font KIWI .FNT A boldface version of the above RAVEN .FNT A 56 character 65 column sans serif font GOTHIC .FNT The 77 character font from GOTHIC.COM DINGBAT .FNT A small collection of designs FONTCODE.COM Encodes or modifies fonts for FONTSY FONTCODE.BAS MBASIC source for the above FONTSY .CRC CRC and other stats for verification The compiled MBASIC programs should run on any 8080 or Z80 machine with at least a 52K TPA (59K CP/M), not counting the extra space taken from the TPA by an expanded CCP. On smaller systems, the source should be recompiled with BASCOM, otherwise the string space will run into the operating system and crash. BRUN.COM, the external runtime package, is not required. These programs were written because I needed better sign making programs for LOSCON, the annual Science Fiction convention of the Los Angeles Science Fantasy Society. Last year the only useable banner program I had was GOTHIC. I found the old public domain banner program much too crude for good signs and they are too light to be read across a large room. I also wanted to have several fonts on line. Inspiration came from BIGLET@.LQR a modified form of LETTERS.LQR by Daniel Lieberman. These were not programs but collections of banner letters in text format that were printed by concatenating the files into a giant banner file with PIP. The idea of having text files you can modify with your word processor was what I was looking for, but 200K of disk space per font was not the answer. Thank You, Daniel, for giving me the key idea for what has become the FONTSY banner programs. INSTALLATION Both FONTSY and FONTCODE are self installing. The only information you need for installation is the decimal values of your clear screen sequence. The programs look for the clear screen data file, CLS.DAT. If it is missing, the programs will go into the installation routine and you will see: CLS.DAT, the clear screen data file, not found. Please enter your clear screen sequence one byte at a time in Decimal numbers. End your entries with a to generate CLS.DAT Clear Screen character 1 If the installation was correct, you will see the screen clear and the program start. If the installation information scrolls off the screen, the installation failed. Erase CLS.DAT and try again. If you do not like the clear screen operation, just enter 10 (line feed) in place of the clear screen sequence request and repeat it for as many blank lines you would like in place of the clear screen. The clear screen installation will take up to 9 characters or blank lines. Any time you move the program to a new disk and forget to copy CLS.DAT the installation routine will run and ask you for the clear screen sequence again. If both FONTSY and FONTCODE are on the same disk, they will both use the same CLS.DAT file. Only one of them has to be installed. The installation is the same whether you use the compiled or interpreted versions. The fonts can be used as is, but you might want to use FONTCODE to change the defaults. If your printer has a graphic block, you can set that to the default. If you always print a certain font at 17 pitch, as I often do, you might want to change the column offset default. All the fonts included in this library, except GOTHIC.FNT are centered for 80 columns at 10 pitch. FONTSY The Multiple Font Banner Printer Five fonts are supplied for FONTSY in this library. They are: CLARE, HERON, KIWI, RAVEN and GOTHIC. CLARE is a 70 column serifed font with upper case only. It is  probably the best looking of the fonts. HERON is a 50 column high, full character set, serifed font. KIWI is a similar, but boldfaced font. RAVEN is a 65 column sans serif font with upper case only. Most of the rest of the character set is included. GOTHIC is nothing more than the extracted font from GOTHIC.COM. I made only two minor changes to it. The GOTHIC font is large enough that it will not fit in 80 columns. I use 17 pitch and reduced linefeeds to make it work on the standard size tractor feed paper. It will print much faster with FONTSY as FONTSY will only use a single pass to print each line. GOTHIC.COM uses 3 passes to print an "O" followed by an "X" and finally an "*". I have also included a small set of designs in DINGBAT.FNT. You might try adding a new design to this "font". The best effect can be obtained with FONTSY by using solid graphic blocks available on most dot matrix printers or by downloading a block in place of one character. If this is not available or you have a letter quality printer, use the @ sign as the print character. All fonts are set to use the @ sign in the 1.0 release of FONTSY. This can be changed on the fly with FONTSY or changed permanently with FONTCODE. With FONTSY the data files are only about 6-8K for a full 95 character font. That is because there is not a full character or bit map of the font. The data only includes two bytes for each segment on a given row. First, what column to start printing and second, how many pixels in succession. If it is the last segment in a given row, the 8th bit is set high on the second byte to represent the carriage return, line feed. 3 other bytes in the font header give the default print character, default column to start printing and the default number of rows between large characters. Running FONTSY Fonts may be loaded in FONTSY from the CP/M command line by entering: FONTSY  If no fontname is specified in the command tail, you will be prompted to enter the name of the font. The extension .FNT is not required. If you do not recall what fonts are available, just enter a drive name (A:) to get a list of fonts on that drive. A; will work fine also. At the next prompt you have two choices. You may enter your banner text followed by a to print your banner. Or a without any text input will take you to the menu to change default font parameters or fonts. The print screen with HERON.FNT loaded looks like this: FONTSY Version 1.0 9/15/85 (C) 1985 Merlin R. Null ---------------------------------------------------------------- Heron version 1.0 (C) 1985 Merlin R. Null Characters available in HERON are: space ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } tilde Enter to change font defaults, ^C to exit. Banner text ?_ Only the characters listed above the prompt are available for the particular font you are using. If a lower case letter is missing from the font, FONTSY will substitute the upper case letter. If any other character is not available, FONTSY will ignore your input for that character only. In the example above a full character set is available, so all printing characters may be used. If you enter , you will see the following menu: Set Font Defaults ------------------------------------------------ 1. Change Fonts is: HERON.FNT 2. Set margin is: 7 columns 3. Set print character is: 64 decimal 4. Set banner spacing is: 3 rows Enter banner text. Option or ? _ OPTION 1. Simply goes back to the initial screen to enter a new font. The initial screen would have been bypassed, if you loaded a font directly from CP/M. OPTION 2. Allows you to reset the amount of space under the banner. I hope that later there smaller size fonts will be available so that this option can be used to set for more than one line of text. OPTION 3. Allows you to change the print character. In the distribution fonts CLARE, HERON, RAVEN and GOTHIC, this is set to the @ sign. This is because the @ sign is the densest character of the standard set. You may change this to any other printing character by simply entering it at the option 3 prompt: Set Print Character" --------------------------------------------------------------- The single character used by FONTSY to print all large letters can be set to any printable character or to a printer character in the upper 128 characters. Just use a single keystroke to enter it or enter a minimum of two decimal numbers to use the ASCII value. Example: The Gemini-10X has a 6 by 6 graphic square with an ASCII decimal value of 239. Enter only for each large character to be printed with its own character. Character, decimal value or ? _ If you want to specify a character by its ASCII decimal number, it must be at least two characters long. Numbers over 255 will be rejected. OPTION 4. Allows you to set the number of rows between the large characters in the banner. Once this option is set the default value included with the font is lost. If you want the font default value back and forgot what the value was, you should reload the font with option 1. A at "Number of rows?" will set a default of three rows. Entering a without any selection at the option menu returns to the text entering screen. If you have a dot matrix printer with a download character set, you may want to change the @ sign to a solid block for darker banners. On the Gemini-10X the maximum size block of this type is 5 X 7 pins. For a slightly smoother character set in the banner, omit the corner dots in this block. If your printer does not have the download character set, check to see if there are graphics blocks accessed some other way. FONTCODE Do you want to modify a font, reset the font defaults on one of the distribution fonts or create your own? FONTCODE will let you change existing fonts, extend them to add missing characters or create your own from scratch. FONTCODE creates the compressed data files that FONTSY uses for printing banners. To generate a new font, you simply create a text file with your word processor in non document mode that is exactly like each large letter you want in a font. There will be some distortion of the letter on the screen. Normally a letter on screen should be made to appear too wide. The rows on a printer are usually more compressed. If you need a sample, use FONTCODE to extract a character from one of the standard fonts. Each file in a font must hav e the same main filename. They should only differ in the extension. For example: HERON.065 Contains the raw data for the large letter A. HERON.066 Contains the raw data for the large letter B. HERON.067 Contains the raw data for the large letter C. HERON.068 Contains the raw data for the large letter D. etc. The number in the extension is the decimal ASCII value of the large letter. You need not create all 95 possible characters for your font. A font could contain only one character and still be encoded by FONTCODE. You could even create a non alphabet "font" that would have something like an apple when you hit "A" and a bat when you hit "B" or any other block graphic image. These could be used to decorate a banner printed with one of the regular fonts. DINGBAT.FNT is an example of this type of "font". Running FONTCODE If you want to modify an existing encoded font, you can specify the font at the CP/M command line by entering: FONTCODE The extension is not required. You may also select an encoded font to modify at the main menu. If you have selected a font from CP/M, your font will be indicated by the menu. Otherwise it will look like this: FONTCODE Version 1.1 9/16/85 by Merlin R. Null Encodes or decodes font data files used with the FONTSY banner printer." The current font is: 1. Load an existing font (encoded) 2. Load a single font character (text) 3. Load a full set of font characters (text) 4. Open a new font 5. Unload a single character from the current font 6. Unload all of the current font to text files 7. Save the current font 8. Change font defaults 9. EXIT Option (1-9)? _ Option 1. Load an existing font (encoded). Will just load an encoded font, if you forgot to name it at the CP/M command line. Option 2. Load a single font character (text). This is how you bring in a modified character to a previously encoded font or add a new character. After selecting this option, characters are added to the font by entering a single keystroke followed by . Option 3. Load a full set of font characters (text). This will create an encoded font from scratch. You will be prompted for, font name title, print character (the default character to print each pixel), margin (offset to center the banner) and number of rows between each large character. FONTCODE will then look for all source files for the font you have named. These files must have exactly the same filename as your output font. They will differ only in the extension. The source files have numeric extension and the output file should have the extension .FNT. You can specify the extension of the encoded font to be something other than FNT, but to use this font with FONTSY, you would have to give the extension to load it. It takes quite a while to encode a full font. FONTCODE would have to read in 95 files. Disk access is what takes the time. Option 4. Open a new font. This just sets up the fontname, title and defaults so that font source files may be read in one at a time with function 2. Do not open a new font if all you want to do is modify an existing font. This option is just for generating encoded fonts from scratch. Option 3 does not require this option. Option 5. Unload a single character from the current font. This will recreate a source (text) file for single character. Use this if you want to modify only a few characters. Try this on one of the fonts in this library to see the structure of the source files. Option 6. Unload all of the current font to text files. If you want to do extensive modification of a font, or use an existing font as a framework for generating a new one, you can recreate the source for an entire font at one time. Be sure you have lots of disk space available. This will generate from 100K to over 200K for a large font. The source files for the font HERON take up 196K with a 2K block size on my system. If you have 1K blocks, This number will be reduced a fair amount. Option 7. Save the current font. If you forget to save a modified font, you will be prompted to do so before you exit or load a new font. 8. Change font defaults. Use this option to change the title or any of the font default values on previously encoded fonts. If you have a system that is limited to 64 directory entries and want to encode a font with a large number of characters you will have to start the font with what will fit in your directory, leaving room for the output font and then add the rest of the large characters to the font one at a time. Font Structure The encoded font contains a header with five records containing the title and copyright notice for the font, an optional comment or subtitle record, plus the font default values: Print character, margin value and rows between banner charact ers. This is followed by one record for each character. Within each field blank lines are represented by the single byte FF hex. A segment of pixels to print is defined by two bytes. The first giving the row to print (with an offset of decimal 32), followed by the number of pixels to print (also with an offset of 32 decimal). If this segment is the final one in a row, the 8th bit is set on the number of pixels byte. Example: @@@@@@@@@@ @@@@@@ ^ ^ column 16 column 35 This would be encoded as: 30h 2Ah 43h A6h. These four bytes replace 41 bytes of spaces and @ signs, the carriage return and line feed. The final byte in the record is followed by 0Dh 0Ah as the record delimiter. The reason for the 32 offset is to avoid MBASIC's tab expansion of CHR$(9). MBASIC tries to convert this to spaces. LEGAL NOTICE FONTSY, FONTCODE, this documentation and all fonts except GOTHIC.FNT are NOT "Public Domain." Copyright on each is held by the author: Merlin R. Null P. O. Box 9422 N. Hollywood, CA 91609 (818) 762-1429 Permission is given only for private, nonprofit use of FONTSY. Feel free to make copies of the programs for your own use or for your friends. However, they may NOT be sold or included with any collection of programs for sale or used as an inducement to buy another product or program without the written permission of the author. Permission is also given for nonprofit computer clubs to include this program in distribution disks, provided total charges for the entire disk of programs, copying and shipping do not exceed $20.00. My vote of thanks goes to those clubs that have kept their charges under $10.00. Portions of the compiled programs FONTSY.COM and FONTCODE.COM are COPYRIGHTED BY MICROSOFT, 1981 MBASIC, BASCOM and BRUN are Trademarks of Microsoft Corporation CP/M is a registered trademark of Digital Research, Inc.are NOT "Public Domain." 10 ' FONTSY.BAS Version 1.0 (C) Copyright 1985 by Merlin R. Null 20 ' Banner printing program. Requires external fonts encoded with 30 ' FONTCODE. This program may not be sold separately or as part of any 40 ' collection of programs or used as an inducement to buy any other 50 ' product or program without the written permission of the author: 60 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818) 762-1429 70 DEFINT A-Z 80 DIM FONTCHAR$(95) 90 ON ERROR GOTO 1920 100 BL$=CHR$(7) 110 OPEN "I",#1,"CLS.DAT" 120 WHILE NOT EOF(1) 130 LINE INPUT #1, A$ 140 CLS$=CLS$+CHR$(VAL(A$)) 150 WEND 160 CLOSE #1 170 ' Read CP/M Command Tail for Font. Compiled Version Only. 180 CTLEN=PEEK(128) 190 IF CTLEN<2 THEN 240 200 FOR I=2 TO CTLEN 210 FONT$=FONT$+CHR$(PEEK(128+I)) 220 NEXT I 230 GOTO 520 240 OPT=0 250 ' Enter Font Screen 260 PRINT CLS$ 270 PRINT"FONTSY Version 1.0 9/15/85 (C) 1985 Merlin R. Null" 280 PRINT STRING$(64,45) 290 PRINT TAB(8)"Prints banners using fonts created by FONTCODE" 300 PRINT STRING$(3,10) 310 PRINT"Enter the name of the font you wish to use." 320 PRINT STRING$(3,10) 330 PRINT"Examples: KIWI Use the font named KIWI.FNT" 340 PRINT" A: List of fonts on drive A:" 350 PRINT STRING$(4,10) 360 PRINT ' Here after directory call or error 370 LINE INPUT"Font name or Drive ? ";FONT$ 380 IF FONT$="" THEN 260 390 FONTLEN$="" 400 FOR I=1 TO LEN(FONT$) ' Case and ";" conversion 410 BYTE=ASC(MID$(FONT$,I,1)) 420 IF BYTE>96 AND BYTE<123 THEN MID$(FONT$,I,1)=CHR$(BYTE-32) 430 IF BYTE=59 THEN MID$(FONT$,I,1)=":" 440 NEXT I 450 IF LEN(FONT$)=2 AND MID$(FONT$,2,1)=":" THEN PRINT CLS$ ELSE 520 460 DIR$=FONT$+"*.FNT" 470 PRINT"Available fonts on drive ";FONT$;" are:" 480 PRINT 490 FILES DIR$ 500 PRINT 510 GOTO 360 520 IF INSTR(FONT$,".")=0 THEN FONT$=FONT$+".FNT" 530 GOSUB 1730 'Load font 540 'Enter Banner Text Screen 550 PRINT CLS$ 560 PRINT"FONTSY Version 1.0 9/15/85 (C) 1985 Merlin R. Null" 570 PRINT STRING$(64,45) 580 PRINT:PRINT 590 PRINT TITLE$ 600 PRINT COMMENT$ 610 PRINT:PRINT 620 PRINT"Characters available in ";FONT$;" are:" 630 PRINT 640 FOR I=1 TO 293 STEP 64 650 IF LEN(FONTLEN$)>I THEN PRINT MID$(FONTLEN$,I,63) ELSE PRINT 660 NEXT I 670 PRINT:PRINT 680 PRINT"Enter to change font defaults, ^C to exit." 690 PRINT:PRINT 700 LINE INPUT"Banner text? ";TXT$ 710 IF TXT$<>"" THEN 1490 720 OPT=0 730 ' Option 2. Set Left Margin 740 IF OPT<>2 THEN 940 750 PRINT CLS$ 760 PRINT TAB(15)"Set Left Margin" 770 PRINT STRING$(56,45) 780 PRINT STRING$(3,10) 790 PRINT"Printing now starts at column";MARGIN 800 PRINT STRING$(4,10) 810 PRINT"Reset the left margin to center a banner or to allow two" 820 PRINT"lines of a smaller font. Allow room for descenders." 830 PRINT"Enter a bare for the default of column 1." 840 PRINT STRING$(4,10) 850 INPUT"Column to start printing";MARGIN$ 860 FOR I=1 TO LEN(MARGIN$) 870 BYTE=ASC(MID$(MARGIN$,I,1)) 880 IF BYTE<48 OR BYTE>5 7 THEN PRINT BL$;:GOTO 750 890 NEXT I 900 MARGIN=VAL(MARGIN$) 910 IF MARGIN>255 THEN PRINT BL$;:GOTO 750 920 IF MARGIN<1 THEN MARGIN=1 930 ' Option 3. Set Print Character 940 IF OPT<>3 THEN 1150 950 PRINT CLS$ 960 PRINT TAB(17)"Set Print Character" 970 PRINT STRING$(63,45) 980 PRINT STRING$(4,10) 990 PRINT"The single character used by FONTSY to print all large letters" 1000 PRINT"can be set to any printable character or to a printer character" 1010 PRINT"in the upper 128 characters. Just use a single keystroke to" 1020 PRINT"enter it or enter a minimum of two decimal numbers to use the" 1030 PRINT"ASCII value. Example: The Gemini-10X has a 6 by 6 graphic" 1040 PRINT"square with an ASCII decimal value of 239. Enter only" 1050 PRINT"for each large character to be printed with its own character." 1060 PRINT STRING$(5,10) 1070 LINE INPUT"Character, decimal value or ? ";PRNCHAR$ 1080 IF LEN(PRNCHAR$)<2 THEN 1150 1090 FOR I=1 TO LEN(PRNCHAR$) 1100 IF ASC(MID$(PRNCHAR$,I,1))<48 OR ASC(MID$(PRNCHAR$,I,1))>57 THEN 950 1110 NEXT I 1120 IF VAL(PRNCHAR$)>255 THEN 950 1130 PRNCHAR$=CHR$(VAL(PRNCHAR$)) 1140 ' Option 4. Set Rows Between Characters 1150 IF OPT<>4 THEN 1270 1160 PRINT CLS$ 1170 PRINT TAB(15)"Set Rows Between Characters" 1180 PRINT STRING$(61,45) 1190 PRINT STRING$(6,10) 1200 PRINT"The number of rows between large characters in the banner may" 1210 PRINT"be reset from the value contained in the font. Enter a bare" 1220 PRINT" for the default value of 3." 1230 PRINT STRING$(7,10) 1240 INPUT"Number of rows";SPACING 1250 IF SPACING<1 THEN SPACING=3 1260 ' Option Menu Screen 1270 PRINT CLS$ 1280 IF PRNCHAR$=""THEN PC$=" variable"ELSE PC$=STR$(ASC(PRNCHAR$))+" decimal" 1290 PRINT TAB(15)"Set Font Defaults" 1300 PRINT STRING$(48,45) 1310 PRINT STRING$(3,10) 1320 PRINT"1. Change fonts is: ";FONT$ 1330 PRINT 1340 PRINT"2. Set column to start printing is: Column";MARGIN 1350 PRINT 1360 PRINT"3. Set print character is:";PC$ 1370 PRINT 1380 PRINT"4. Set banner spacing is:";SPACING;"rows" 1390 PRINT 1400 PRINT" Enter banner text." 1410 PRINT STRING$(4,10) 1420 PRINT"Option or ? "; 1430 OPT$=INPUT$(1) 1440 IF OPT$=CHR$(13) THEN 550 1450 IF ASC(OPT$)<49 OR ASC(OPT$)>52 THEN PRINT BL$;:GOTO 1270 1460 OPT=VAL(OPT$) 1470 ON OPT GOTO 260,750,950,1160 1480 GOTO 550 1490 PRINT"Printing ==> "; 1500 FOR I=1 TO LEN(TXT$) 1510 CHAR=ASC(MID$(TXT$,I,1))-31 1520 IF CHAR<1 THEN 1700 1530 PRINT MID$(TXT$,I,1); 1540 IF PRNCHAR$="" THEN PCHAR$=CHR$(31+CHAR) ELSE PCHAR$=PRNCHAR$ 1550 ARRLEN=LEN(FONTCHAR$(CHAR)) 1560 IF ARRLEN=0 THEN 1700 1570 FOR BYTE=1 TO ARRLEN STEP 2 1580 LINEFLAG=0 1590 IF MID$(FONTCHAR$(CHAR),BYTE,1)=CHR$(255) THEN LPRINT ELSE 1620 1600 BYTE=BYTE-1 1610 GOTO 1680 1620 COLUMN=ASC(MID$(FONTCHAR$(CHAR),BYTE,1))+MARGIN-32 1630 LENGTH=ASC(MID$(FONTCHAR$(CHAR),BYTE+1,1))-32 1640 IF LENGTH>95 THEN LENGTH=LENGTH-128:LINEFLAG=-1 1650 LPRINT TAB(COLUMN) STRING$(LENGTH,PCHAR$); 1660 IF LINEFLAG THEN LPRINT 1670 IF INKEY$=CHR$(3) THEN 550 1680 NEXT BYTE 1690 LPRINT STRING$(SPACING-1,10) 1700 NEXT I 1710 GOTO 550 1720 END 1730 OPEN "I",#1,FONT$ 1740 LINE INPUT #1,TITLE$ 1750 LINE INPUT #1,COMMENT$ 1760 LINE INPUT #1,PRNCHAR$ 1770 LINE INPUT #1,MARGIN$ 1780 MARGIN=VAL(MARGIN$) 1790 LINE INPUT #1,SPACING$ 1800 SPACING=VAL(SPACING$) 1810 FOR J=1 TO 95 1820 LINE INPUT #1,FONTCHAR$(J) 1830 IF FONTCHAR$(J)<>"" THEN 1850 1840 IF J>65 AND J<92 THEN FONTCHAR$(J)=FONTCHAR$(J-32):GOTO 1890 1850 IF FONTCHAR$(J)="" THEN 1890 1860 IF J=1 THEN FONTLEN$="space ":GOTO 1890 1870 IF J=95 THEN FONTLEN$=FONTLEN$+"tilde":GOTO 1890 1880 FONTLEN$=FONTLEN$+CHR$(J+31)+" " 1890 NEXT J 1900 CLOSE #1 1910 RETURN 1920 IF ERR=53 AND ERL=1730 THEN CLOSE #1 ELSE 1960 1930 PRINT CLS$;STRING$(5,10) 1940 PRINT FONT$;" not found - try again.";BL$ 1950 RESUME 360 1960 IF ERR=53 AND ERL=490 THEN PRINT ELSE 2000 1970 PRINT"No fonts found on ";FONT$ 1980 PRINT 1990 RESUME 360 2000 IF ERR=53 AND ERL=110 THEN CLOSE #1 ELSE 2240 2010 PRINT STRING$(18,10) 2020 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 2030 PRINT"Please enter your clear screen sequence" 2040 PRINT"one byte at a time in Decimal numbers. End your" 2050 PRINT"entries with a to generate CLS.DAT" 2060 PRINT 2070 FOR I=1 TO 9 2080 PRINT"Clear Screen character";I; 2090 LINE INPUT C$ 2100 IF C$="" AND I>1 THEN 2190 2110 IF C$="" THEN 2080 2120 IF LEN(C$)>3 THEN 2080 2130 FOR J=1 TO LEN(C$) 2140 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 2080 2150 NEXT J 2160 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 2170 CLR$=CLR$+C$ 2180 NEXT I 2190 PRINT"Writing CLS.DAT"; 2200 OPEN "O",#1,"CLS.DAT" 2210 PRINT #1,CLR$ 2220 CLOSE #1 2230 RESUME 110 2240 IF ERR=64 THEN CLOSE ELSE 2290 2250 PRINT CLS$;S TRING$(5,10) 2260 PRINT BL$;CHR$(34);FONT$;CHR$(34);" is a bad file name or drive - "; 2270 PRINT"try again." 2280 RESUME 360 2290 ON ERROR GOTO 0 S.DAT, the clear screen data file, not found." 2030 PRINT"Please enter your clear screen sequence" 2040 PRINT"one byte at a time in Decimal numbers. End your" 2050 PRINT"entries with a to generate CLS.DAT" 2060 PRINT 2070 FOR I=1 TO 9 2080 PRINT"Clear Screen character";I; 2090 LINE INPUT C$ 2100 IF C$="" AND I>1 THEN 2190 2110 IF C$="" THEN 2080 2120 IF LEN(C$)>3 THEN 2080 2130 FOR J=1 TO LEN(C$) 2140 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 2080 2150 NEXT J 2160 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 2170 CLR$=CLR$+C$ 2180 NEXT I 2190 PRINT"Writing CLS.DAT"; 2200 OPEN "O",#1,"CLS.DAT" 2210 PRINT #1,CLR$ 2220 CLOSE #1 2230 RESUME 110 2240 IF ERR=64 THEN CLOSE ELSE 2290 2250 PRINT CLS$;Sø+"6# x+:`i* ">"/##~>;+> 6*s#r w+͊1>2 u+#w+>36*s#rw+6*xDM"+ڍ+s#r#À+! >2:*ã+6*x+Á*~#ʽ+#~+ҽ+~+x 6*s#rw+ɯ2,x_O:*+2,x_O6*9w#w+x,+r+s=,w>#w+Á*~7^#VE,E,!~ѧ7x1P*x1~7!~#fo~ʁ,7,#~+~w!e4z-V5Ͷ@&!E*ͷC!O-i[E-!͑[!)V|/g}/o|*!;9!- =!-ͼF͠BE0GD0ͷC!ͩV3!<-ͷC:o&"6*6|O)ږ*6"8!{*:n&E<GD<ͷC*:#":*:*8z|}|^WU@!0͔>U@!-͔>U@!S-͔>U@!,͔>U@!,͔>U@!S-͔>U@!S-͔>U@!,p>!3͔>3!<-EU@!,p>!?͔> U@!S-͔>U@!,p>!B͔>U@!S-͔>U@!S-͔>U@!h,͔>U@!?,͔>U@!,͔>U@!+͔>U@!+͔>U@!+͔>U@!y+͔>U@!_+͔>U@!U+͔>U@!S-͔>U@!D+p>!^EͷCU@!E͔>!EͥF|ڶ)go!EͥF|)?go|g}o|U@!*p>ÖU@!0͔>U@!S-͔>U@!S-͔>!EͼF͠B"H!"J*HJJ ,)u ^ U@! A!+͔>U@! D͔>!+<!< =͖J!O-i[3!͑[!;9!? =!;9!B =!;9!L =!;9!O =!;9!R =!!;9*:GB  =*:#":*:|)ڰ!ͩVÖ3!<-E!6U@! A!*͔>U@! D͔>U@!*͔>U@!c*͔>U@!S-͔>U@!S-͔>U@!9*p>!3p>!5*p>!S-<!U =U!S-E!UͥF|u)go!UͥF|ډ)?go|g}o!U͛F|ڥ)?go|g}o|U@!*͔>8!UͥF"XU@!+*p>!3p>!*p>*X͋>͖JR *J|U@!*p>! *p>!Zp>!*͔>U@!S-͔>!"J!"]8U@! A!)͔>U@! D͔>!)<!< =͖J͖JU@!0͔>U@!)͔>U@!S-͔>U@!S-͔>U@!i)͔>U@!S-͔>U@!S-͔>U@! A!O)͔>U@! D͔>U@!A)p>!3p>!.)p>! *X+6E͛F#"_U@*_!Dp>FA!S-p>*_!Dp>*Xg>͖JR *X#"X*X|*)U@!S-͔>U@!S-͔>U@*J!_}o|gg>! )p>!a͔>U@!S-͔>!"]͖J1 ÖU@! A!(͔>U@!S-͔>U@!S-͔>U@!S-͔>U@!(͔>U@!w(͔>U@!B(͔>U@!S-͔>U@!((͔>U@!S-͔>U@!S-͔>U@!S-͔>!(<!< =͖J͖J!"]Ö3!<-E !6U@!'p>!3p>!'͔>U@!'͔>U@!l'͔>U@!S-͔>!T'<!U =!U͛F|e )t U@!*͔> U!S-E!UͥF"d*d|ڕ )go*d|ڦ )?go|g}o|–*d"fU@!S-͔>U@!G'p>!3p>!8'p>*d͋>͖J%? 3!<-E !6U@! A!''p>!3p>!'͔>U@!S-͔>U@!S-͔>U@!&͔>U@!&͔>U@!W&͔>U@!S-͔>!7&<f;!h͢<h!xD!3&͡Eh!xD!/&͡E|g}o|ʙ U@!S-͔>Ü ÖU@!S-͔>U@!&p>!3p>!%͔>U@!S-͔>U@!S-͔>U@!%p>!? *fGB !S-E; *f"d*d6E͛F"_U@*_#!Dp>*_FA!S-p>*_!Dp>*dg>͖J%*f#"f*f|O ) U@!S-͔>Ö3!<-Eo !6U@! A!%͔>U@!S-͔>3!%)F3xD!%GDkͷC!O-i[3!͑[!ͩV!"n!O-i[k!͑[!ͩVU@!%p>!k͔>!kdZ*n| U@!%p>!3p>!%p>!k͔> 3!k"YU@!%p>!3͔>!%i[3!͑[!?!?͔>!?!B͔>!?!L͔>!?!O͔>!?!R͔>!Ü !?*pGB ͔>*p#"p*p|ڬ )ڃ !ͩV!"]Ö3!<-E !6͖J!"]Ö*]|/g}/o|. U@!m%p>!3p>!c%p>!^hͷCh!3&͜Eh!/&͜E|g}o|–5U@!S-͔>U@!9%p>͢9!S-EC ͩJr!S-ͷC*X6EDM!ͪDuͷC!u͛F|ڂ )Ҕ 5%!uGDuͷC3!%)F3xD!uGDZͷC!O-i[Z!͑[!!;9!x =!"{"}!x͛F#x*d!ͪD!5*͜Ex*d!ͪD! E͜E|g}o|K*d+"d*d|3) !ErGDrͷCõ*d"!Ç*}|{!ErGDrͷC!"}x*!ͪDͷC! E!E*{A*{}o|g"{*{#"{*}|!5*͜E! E!͜E|g}o|*{ErGDrͷC!5*͜E! E!͜E|g}o|+*}#"}*}|ʃ!5*͡E! E!͡E|g}o|r *}ErGDrͷC!"}͢9!S-E͖J*#"**z|}|W*}ErGDrͷC!)V|*#"*7|) *XGBrC!ͩVͩJ<!S-E*]|/g}/o|hU@!S-͔>U@!*%p>!3p>! %p>!S-<f;!h͢<h!xD!3&͜Eh!xD!/&͜E|g}o|–!<͛F"!<*:!ͪDͥF"*|ڗ)?go*|ک)go|g}o|*E*:<D*|!%*:<D*:#":*:*z|}|w<!%)F|$<!%GD<ͷC<!%)F<!%)F}o|g|I)R!@63!S-ͷC?!S-ͷCB!S-ͷCL!S-ͷCO!S-ͷCR!S-ͷC!ä*:GB S-C*:#":*:|ڴ)ڎ3!<ͷCͩJ!E!E!ͩVU@!S-͔>U@!S-͔>U@!*p>!$͔>͖J1 Ö!E!E"͢9!S-EͩJ*fGB ͛F"*|*d6EDM!ͪDͷC!͛F|t5%!GDͷC3!%)F3xD!GDͷC!%i[!͑[*"!ã!"*fGB DM*!ͪD!EE!?!S-͔>*+"Þ*fGB DM*!ͪDͥF"*fGB *#!ͪDͥF"*|C)V*"!"*"!?* A*!LDp>*|ʍ!?!S-͔>͢9!S-E͖J*##"**z|}|Ү!ͩVͩJU@!0͔>U@!S-͔>U@!S-͔>U@! A!$͔>U@!S-͔>U@!S-͔>U@!$͔>U@!j$͔>U@!E$͔>U@!S-͔>U@!$͔>U@! D͔>!$<! =!S-͡E?!S-͡E|g}o|–!͛F|x)ڇU@!*p>!S-E?!ͷCU@!0͔>U@!S-͔>U@!S-͔>U@! A!#͔>U@!S-͔>U@!S-͔>U@!#͔>U@!{#͔>U@!O#͔>U@! D͔>!9#<! =!͛F|)-U@!*p>Û!S-EAB!ͷCU@!0͔>U@!S-͔>U@!S-͔>U@! A!#͔>U@!S-͔>U@!S-͔>U@!"͔>U@!"͔>U@!a"͔>U@!S-͔>U@!#"͔>U@!!͔>U@!S-͔>U@!S-͔>U@!S-͔>!!<f;!L͢*:#":*:*z|n}|!LͼF͘Ar-U@!*p>!LͼF͠BELͷCL!S-EL!!ͷCU@!0͔>U@!S-͔>U@!S-͔>U@! A!!͔>U@!S-͔>U@!S-͔>U@!S-͔>U@!w!͔>U@!:!͔>U@! ͔>U@! ͔>U@! D͔>! <f;!O͢<O!S-EOO! ͷC!O͛F"!öO*:!ͪDͥF|x)goO*:!ͪDͥF|ږ)?go|g}o|ʲU@!*p>ñ*:#":*:*z|}|^!OͼF͘Aj-U@!*p>ñU@!0͔>U@!S-͔>U@!S-͔>U@! A! ͔>U@!S-͔>U@!S-͔>U@!S-͔>U@!e ͔>U@!$ ͔>U@!͔>U@!͔>U@! D͔>!<f;!R͢<R!S-ER!ͷC!R͛F|ڕ)ڤU@!*p>!R͛F"! R*:!ͪDͥF|)goR*:!ͪDͥF|)?go|g}o|U@!*p>*:#":*:*z|}|ҳͩJt@|go͂@Af-|g}o|S*J#"JV*J|nU@!*͔>qU@!S-͔>U@!S-͔>U@!p>!3p>!p>!*͔>U@!S-͔>U@!X͔>U@!͔>U@!͔>U@!͔>͖J1 ͥ@ͥ@t@|go͂@Ab-|g}o|!ͩV @U@!S-͔>U@!*p>!p>!3p>!͔>3!<-ͷC͖J1 ͥ@t@|go͂@A^-|g}o|l!ͩVotͥ@ t@|go͂@AZ-|g}o|ʠ!ͩVãèͥ@ t@|go͂@AV-|g}o|!ͩVÊU@! D͔>U@!*p>!c͔>U@!9͔>U@!͔>U@!͔>U@!S-͔>!EU@!p>*:g>!S-<! =!S-͡E*:|R)?go|g}o|X!S-E!͛F|})!͛F"!*p!ͪDͥF|ک)go*p!ͪDͥF|)?go|g}o|U@!*p>!͔>*p#"p*p*z|}|ҏ*:|)2! EGD! EGDͷC!GDͷC*:#":*:|U)U@!p>!%i[E-!͑[!?!͔>!ͩVͥ@t@|¢U@!*͔>å3!<-ͷCU@!r͔>͖J1 ͥ@t@7|U@!*͔>U@!2͔>U@!͔>͖J1 ͥ@@51unload a character, unload a font or save a font.=5A font must be loaded or a new one opened to add a character,uBad font name - try again.Writing CLS.DATWhole decimal numbers only.Clear Screen character+entries with a to generate CLS.DAT0 one byte at a time in Decimal numbers. End your'<Please enter your clear screen sequence/fCLS.DAT, the clear screen data file, not found.  not found. Encoded font 5Heron. This is followed by HERON.066, HERON.067 etc.1Example: HERON.065 = the letter 'A' for the font6"Fontname + decimal number of the character to include.0[Filenames to be included should have the format:!No files found for 3Row(s) between characterslines included for spacing.>value of 3. Use 0 only if each large character file has blank>' to any value between 0 and 99. A accepts the defaultBh The number of rows between large characters in the font may be set Set Rows Between Characters 1 Column to start printing to start printing.; you want to start printing at column 1 or the column number:=!if the font being used has descenders. Enter , if9z!The margin is the number of columns below the descenders, !Set Margin!@!Character or decimal value?!ASCII decimal value of 239. Enter for default of '@'.;&"Example: The Gemini-10X has a 6 by 6 graphic block with an;d"Just enter it with a single keystroke or the decimal value.9"printable character including those with the 8th bit set.="The default character used to print banners may be set to any#Set Default Print Character<#Comment line text? )R#or, if none is wanted, to leave it blank.8~#entered. Enter to retain existing comment line9#One additional line of comments or a font subtitle may be#Enter Comments or Subtitle$Title? )$Heron version 1.0 (C) 1985 Merlin R. Null"H$keep the existing title. Example:4m$It must not exceed 70 characters. Enter to7$You may enter a title or copyright notice for the font. $Enter Title)$*** ABORTING *** ^C Entered from Keyboard%.FNT%:#% (Y/N) -%Abandon 8%0'<% f% (Y/N)?p%Abandon modified font: %O %Writing % to %Changing %Erasing %BAK%.%Save the current font.%Unloading character: #% to text files (Characters 32-126).&Unloading all of 2&y6&Y:&Do you wish to continue (Y/N):Z&and a free directory entry for each character of the font.<&font you will need from 100k to over 200k of free disk space?&This will take a while and use a lot of disk space. For a full' to text files.*'Unload all of ;' character: J'Unloading W'Character to unload: 6o'to a file. Enter to return to the main menu.:'enter with a single keystroke, the character you want sent',1'To unload a single character to a text file from (Font Name? +(Example: B:BRILLIG.FNT2E(included. A bare exits to the main menu.=z(the default of FNT will be used. A drive for the font may be?(Enter the file name of your font. If no extension is specified(Open a New Font )characters included in the font 1) character # D)Working on R)^S to Pause ^C to Abort(l)Go take a break, this will take a while.,)Loading a full set of font characters (text))Font to load? ))Load a full set of font characters (text) * not found *Source file * character #.*Adding 8* '<*Enter the character you wish to add to 1f*file. A bare to exits to the main menu.A*Enter a single keystroke followed by to load a character#*Load a single font character (text)+Encoded font to load? '+Load an Existing Encoded Font (Encoded)G+Option (1-9)? X+9. EXITb+8. Change font defaults|+7. Save the current font/+6. Unload all of the current font to text files2+5. Unload a single character from the current font+4. Open a new font,,3. Load a full set of font characters (text)&B,2. Load a single font character (text)"k,1. Load an existing font (encoded), ,Title: ,The current font is: ,FONTSY banner printer.0,Encodes or decodes font data files used with the9-FONTCODE version 1.1 9/16/85 (C) 1985 Merlin R. Null?-H-CLS.DATR-IV-p\@XH (2<FPZd&nx'*099BR^wWN",6@J T^+h4r=|FOXajs| ,0)u  ^   ,&;:JDt \Xnbzlv&8 MZ e*4>HR HR\f p&z)8GTY ^gp$.8-B?L^Vg`mj1 rtu~   - (6 2? <H FU Pt Z d n x   %    * 3 < E N `    " , 6 @; r J T ^6 hR |[ ^ o ~            / &A 0M :Y De Nq X} b l v        .    1 : C *O 4R >[ Rr \ f p z    K68 W{+ $ 3 r n . L B V ` j ~ h   ) ; w     $ R [ d m v ( 2 < F P Z d  x    " % 7  ? V t     ,  " r 6 6@ VJ `T y^ h |         $ - < I h  & 0 : D N X b l v  - A J \ k }         H   V* r4 > R \ f p z     ) ; O ^      ,5>$G.P8_BqLV`jt#~& Vq@F -(62;<tZoPnd^x.;X,bm2A"a6s@JThr|[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 r4!DM*"F*7##"F\5>2i42l4*^#V"j4##^#V"m4 2o4!ʽ4!!""p4!H5"E56#6P>2L5>2K5>2J5i45l454_!!!!*f !*f"d*d"__B`B!9"5{7 !5{75!5V5!55!R"Q5!O"S5{7|ʰ5> 66#s#r#=¥5>2 5>25>2525!5"5!$\"5>&25͋4J6#}5|5J STO65q7*5.. . ........H*-5|5:*5l6*(5|l6r6{7  s#r{7  {7w#6"+5*5*(5>2*575!9N#F{7~#~Ҥ6~+ʪ6~#~ڤ6+^#V###Â6###Â6|ʶ6~#fo!6J Internal Error - No Line Number 5{7~#S7J at liner67q7>:7<737 7:7<70Qa377}_|W!I7a~#fo>J at address|J}Jq7> Qa> Qa~#*7a~#foɸk!9" 5!Ò7* 5͘7" 5!7* 5q7!7~<7=7#~#77#JSyntax Error in DATRETURN without GOSU Type MismatcOut of DatIllegal Function CalOverfloOut of Memor Subscript Out of Rang Division By ZerOut of String SpacString Formula Too CompleRESUME without Erro2Field Overflo3Internal Erro4Bad File Numbe5File Not Foun6Bad File Mod7File Already Ope9Disk I/O Erro:File Already Exist=Disk Ful>Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erroo͎74!9>ʸ94w>H|6͎7}[E_9B_`i"5!9"55!o:"75K: ,̓:&:5:MMxK*c*c*c*bE:TML*cE:TMaK*c*c 9,Z̓:~#T:xHE:͟7!>6̓:ͳHHͺCͅXf: “:ƒ:"¨:G{,x¨:PXͅX:!/=Oz"y: ; :O{,yU;ͅX: :{ :,> ::::U;ͅXҭ:"; );ͅX); ;,); !;ͅX); );*5( 4:U5O;{,O;6!/=ͳHO O;+~ C;#6!/=ɷw#*;|N#"d;!9"_;"a;y2c;*5|ʈ;*55!r<"-5A~#*/>a:U5¨;~r<-<º;MMý;TM"/>;;xK*c*c*c*b;L*c;aK*c*c*/>a <~#"/>,ʐ; r<:U5r<Ð;~rx"g< g<+~ \!+DG!+MP!+VY!y+_b!_+hk!U+qt!S-z}!D+͎7͝>Á?͎7ͨ>Á?͎7ͳ>Á?͎7s>Á?͎7͝>ã?͎7ͨ>ã?͎7ͳ>ã?͎7?ã?͎7͝>Q?͎7ͨ>Q?͎7ͳ>Q?͎7?Q?cþ>bþ>"c>H~# ¿>x2,K:@5x?H?>"OͳH<ͯ?~>ͽ`#>͞?"O~> Ľ`#>>2,K:@5x?F#~#foxH?̯???6?~#ͽ`*???HH?>"ý`G:D5xH?ea*E5+~*A5*E5~=҈?/<ͯ?͞?=Ô?> ý`H?>,ͽ`W*E5#^ ??+=?:H5=?eaz{?{_?͎7|'@}[@B_`i"5++"E5!2@";5!-@"952@5k@͟76+Wͮ^}o|gO@> ͽ`+|D@ea!H5"E5!"52@5k@!C5~6#w{7 n&{7 ^#VA|ͩ7!@g:*56^#V2*5^#V#"(5!"(5:*5*+5{7 n6~!@JN@͟7i&6 +ZA*E5{ ͽ`!A|6}*E50A!>!>!>!>!>^#V#!cöA>éA>éA>éA>éA>éA>^#V#!bAA G}CAA G}CA~#foA##ͩ7íi^#V#͎7B͎7B͎7z9B|9B|ii^#VB^#V#WBj2U5͎7͎7xB͎7͹aͯB̈́a|6͎7æB͎7ͯBÌBB:U5B!7͆e,gB:U5B!7g:c2c:cC%C:cBB|/g}/o,g:c%C!c$C}CC!͟76:cgoW*c|7gAC:cAC+>PC|/g}/oYC!nCG|jCaCo& Gȯ|g}oqC͇C>”C~+~?~ŸC+#ҬC+ C͎7͜HC~##++jI>a+V+^+C+r+sʹI͎7ͺC~H!"C"C*C|6}6 6+<&D{*C.D~#^#V`i#N#F a*CH͎76ZHhDhDHH~#~#foa͎7|6BKͲDPY͎7|6BK ңD o_ÆD͎7z6zʺD D_Do}`iHHDM͎7 D~6#~#fon&H͎7zE}ZH~Es#E͟76͎7|6!9>H3!%͎7"c>]E͎7c>WE͎7b>a2,K>!.E͑a"O>.Ë́a~#yExH>ãE>ãE>ãE>ãE>ãE>E!+>E>E>E>E>E>EE~#fo##GNFyF#~#fo~#foF#F E yFy<.F)F)HH 2Fx6ű=F y<2(FF~ڇFڇF#~#foyaO #~#foxʋF{F#jFËF!(F4 gF2(FHH*(F&~Ho&~6#^#V++Ho&͎7~<6ZH~#~#foa6+pTMMxKHH C FF!FG*GGD GGGGuGYGuG G#G _!F46G5*F"F~#N#F#vGPG a9Gyx[G 9G+++6@#yw#xw+++6###!F~6ڇG͜G6GG*F#~#~6G͟7 6!*F"F~#^#V#GGaéG|GéG++~_w#~Ww#éG͜G*FDM~#^#V#@HHG+zI+{I##{z~#q#p_Gy5Hx5HDMG~#5HGYP+++"F6@###{_zW+r+sɷʏH*F|mH͟76&G^#V+"Fw#s#r+++r+s##!HH*EJ{z*GJ?ұH}|~# ·HyGZHxaGZHx#N#F& H͜HjIôI*EJ*GJbIIIjIʹI###H?IJ during G.C. 5?IJ 5J Internal Error - String Space Corrup#N#F*FyxگI*FyxүI++`i+V+^b4I##6+6+~6  >@++*F"Fs#r+G*F#~_#~WI͟76r+s##6"F###!F~#foJbI<*F"F*F}o|g6@#s#r#6"F*GJ*EJ"F}w>#w##b,J++6+6F&GPJ>2IJ|‹J+})N#҇J~#fo :IJzJ!9"5!54 ~a#6!54!9"5^#V#!5~w5!9"5ɧ~Qa#=¾JJ~Qa#JG~#J#J++J0:KQaS-YB!S-bL!S-kO!S-tR!S-}!ä͊TTK*c}/o|/g#"c|ͅKͭiTK!c~wɯ2c͊ToK,gͅK*cͅKíi͊ToK g>>*M~4#ÊK4#K! cèK>! cb2K# ®K! cÆe! c͏Lc>>K>|}+!EMÎdWL4j+6!c>f2b!AMAh!=MÎd! cÎd~_#~W#~O~kg!Tgi*Lɇ<o&ͅKíi*c*cZL"c`i"c!c^#V#N#F#!AMhlkx{ak!c6Ajwg>kÅkÓL:,KGw#“LLèL! cLc͊Tb͊TL*c||<͊T*cL͢L! T͜L͸KhKLL:c2c:cgUiL:cM MM|/g}/o%M!gU:c.MiL"c>2,K"Laj$M L}\K͂KRU>2K`h%M~&ʥT-|M+|M+pTcN. NeʎME¸MpTlʦMLʦMqʦMQʷM:,KM>M~%N#'N!(NdMDM1NpT͛TpTNM_{_@NPNM3K͊T!1L.M͊T M1N|MpT!1L!LM1NpTMaKxK͊TcLK=͊TKKDGO"b`i"c#~+IP- P0OxGIP#~P`xE>Py O>2KNP|O6PO"b`i"cLL#W]R:K|PÆPPҊPR60aL#S+~0ʙP.aLP͊T>"w#6+P6-/</ ҾP:#p#w#6! K#zRQQRzRͻS{K=R[OQp#6!K#:-K~ Q*Q+QpT-+_:5{0JQ#pTJQ++w@QQJQ6%QnQT;K|Q"O+6%"LeQ͆L]RQ_xRR#SRSP_yNNQPNQ{_xQRRQRySORGO#SQ*-K=RPPoKѯQ͆L7]RyNNOzWOPNR*R/< S/>ͥKLS>ͥKp#=CS!bILSL>iLLL`T?SWL/{_#zW#yO++ғS L#LLp#څS>SfT>SN#F#*c/}o|gS"cp#=SSw1_cƤ~@zZrN vH Tʚ;@B''d #~: pT pT pT0?<=:,KҗT7-++pT-UOʶTHʶT+TT%MH#TT͟76M!TT}0?)))صoTM! UU}-U0? U? ))))صo Ua{ L͊T:c:cL:K2K2K͟76͟76?go|g}o| !*&!*p#"p*p*z|}|ҏ*:|)2! ͕͈! 4!*0*:#":*:|U)!!%͔E-!͠!ͅ!!͎7}[E_B_!' ~dV dV#~YV`i@X:V>O #~goPY!' ůwtX:q4:[`_=Z_=˜VѯK_<`_!% ^#Vr+s͎7}ʡ[!" V}[V PYV!V`i>*5T]% N#F+q#p###6 UXtX:p4:[>mX>w+w!( X7?*5' 6#67~]_#^#fk_ڽXN#~:X++@]_y@]_]_U #Y~.XX7X#X2 VHz ]_]_> XX> YX͎7͠XmUU a͠X:U!Uc_U a66tX~ Z<`_Z<ZT_Y!%w#w#w#w~;Z=X) p# AZ͡[ _͎7͠XmUU<T_͎7!U6# 2[òZ͎7͠X2 V!U.[!V.[mUUT_O!nU  ~#͌`y[~ Z>.͌` Z:H5 W:I5[> ͌`͌`܉`UZ~*6?# 2[O!!4R[#4R[#4y"g[`_><"V>2#5!^"$5:!5<2!5*5""V!["5͎7" VrY*15|ʳ[##nͱVâ[.ͬV*"V͎7[͎72$V\"%V\͎7[͎72$V\"%V\E_\BK^#V+*'Vs#r! DMÄ\* V DMIs#r# 6# x‡\ !15T]~#foE_xŸ\yŸ\~#~+*35"35s#refault * V|\! s#r#w\2\}[B_! ^#V:$V]*%V{H_+s#r! w#w! ~#fo!0_E]Ã]BK>!)X])#Y]))g] f]#=N]}_}la)c_~]#xc_"\! "\!) "\!}o|g0_ڭ]bk:\]0_]^DM*\*\G^"\PY^}o|g*\#"\]^DM*\*\G^"\PY]2/_*\! ~#fo0_s#r6^:/_C^!C^!& gW~# xH^DMͰ^W_ͥ^! w!( V6 }^zwͮ^W_ͥ^! ~!à^! ^#V! s#rDM͝^͗^0_}[E_^B_`i"5!^"&5 _ͅX͟7!>6͎7|6,_-:#5E_*$5!4"&5{ZHf$%+_!$_*&5_%|}!"5>6>4>?>=>:>7>5>2>3>@>C>͟7o&6ͩ7!"5!/="/>À_:<‘_J?Ñ_pͷ`_:`>\2`«_ʐ_͌`+ʿ_~͌`_+͌`_͌`͉`!/=2`_ͷ`Oʗ_:`_>\͌`2`yV`̏`7 }` V` `ʑ_V`̏`ʑ_.`ʑ_͌`> ͌`>ø_8`>#ÿ_Q`6͉`!/=͡`_ _x<>a`yq#͌` _> ͌`ͷ`n` __:<̉`wq7Qa>^͌`@͌`͉`~ °`> ͌`͌`#á`4*E5 `#~+<`=ea ͽ`~=Ca*E5!H5"E5ͽ`"E5> ͽ`> ý`:K5=ʀa> 4> 4*`!ca!bÛacabaw#w#w#w#a>ba>ca ~#=a!a#~ a aɅo$ɧGw#a{z6#cAgcLcͅkOQc!k!cy#Ic+Nfe2b:b6fͅkx/F+N+=Ud! cid!b>q#p#=ld!bÎd"7b`dOd;d*7bAgb~q+fqfNsY+ff W~w+ff!cfͭi gUk!bw#gÅk#g}Xg,g^gXg4j!cF#^#V#Nk^g} c~#FgG++NyÍkbDg!cUk>ʛgsg@~kͩglkʗg!c6Ajg>k|j!>mgakUkgEigÅk!c~+>wÅkͿigvkʅk:c^kg/<j҅k4jgk!ch~_#~W#~Ok#4 k.kkG~_#~W#~Oi^jͿi1hvkʅk>OgͿiDhvkiͅkȯG%i"by2bFojj!D*c:cOҁhc4 kÙhͩhg.*b:bOz҂hͩhg.*c:cÏhx<=h{_zWxG)yOHGkͿihvkakͅk%iy+F+F+Fw`h|igyi:cO|g}oxG-|h}h^jElaOh!c~Gx=iƀ;kw4jw+ɷ kk|.k{>2c^j/))/j ='j!c~7w?##wy7O*c*c"c"cajSXͥjðk үk7>{_zW}o|g=¦k|g}okCZQk o-yOzW{_xGkc*cDM^#V#N#F#x#~Ok#4 k.kkG~_#~W#~Oi^jͿi1hvkʅk>OgͿiDhvkiͅkȯG%i"by2bFojj!D*c:cOҁhc4 kÙhͩhg.*b:bOz҂hͩhg.*c:cÏhx<=h{_zWxG)yOHGkͿihvkakͅk%iy+F+F+Fw`h|igyi:c10 ' FONTCODE.BAS Version 1.1 (C) Copyright 1985 by Merlin R. Null 20 ' Creates encoded data files for use with the FONTSY banner 30 ' printer from multiple source files created with a word processor. 40 ' This program may not be sold separately or as part of any 50 ' collection of programs or used as an inducement to buy any other 60 ' product or program without the written permission of the author: 70 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818) 762-1429 80 DEFINT A-Z 90 DIM CHARCODE$(95) 100 ON ERROR GOTO 3730 110 BL$=CHR$(7) 120 OPEN "I",#1,"CLS.DAT" 130 WHILE NOT EOF(1) 140 LINE INPUT #1, A$ 150 CLS$=CLS$+CHR$(VAL(A$)) 160 WEND 170 CLOSE #1 180 FONT$="" 190 ' Read font name in CP/M command tail. Compiled version only 200 CTLEN=PEEK(128) 210 IF CTLEN<2 THEN 260 220 FOR I=2 TO CTLEN 230 NEWFONT$=NEWFONT$+CHR$(PEEK(128+I)) 240 NEXT I 250 GOTO 590 260 PRINT CLS$ 270 PRINT"FONTCODE version 1.1 9/16/85 (C) 1985 Merlin R. Null" 280 PRINT 290 PRINT"Encodes or decodes font data files used with the" 300 PRINT"FONTSY banner printer." 310 PRINT:PRINT 320 PRINT"The current font is: ";FONT$ 330 IF FONT$<>"" THEN PRINT"Title: ";TITLE$ ELSE PRINT 340 PRINT" ";COMMENT$ 350 PRINT:PRINT 360 PRINT"1. Load an existing font (encoded)" 370 PRINT"2. Load a single font character (text)" 380 PRINT"3. Load a full set of font characters (text)" 390 PRINT"4. Open a new font" 400 PRINT"5. Unload a single character from the current font" 410 PRINT"6. Unload all of the current font to text files" 420 PRINT"7. Save the current font" 430 PRINT"8. Change font defaults" 440 PRINT"9. EXIT" 450 PRINT 460 PRINT"Option (1-9)? "; 470 OPT$=INPUT$(1) 480 PRINT OPT$ 490 IF ASC(OPT$)<49 OR ASC(OPT$)>57 THEN PRINT BL$;:GOTO 260 500 PRINT CLS$ 510 PRINT:PRINT 520 OPT=VAL(OPT$) 530 NOTUSED=0 540 ON OPT GOTO 560,720,910,1160,1300,1460,1690,1960,2010 550 ' Option 1. Load an existing font (encoded) 560 PRINT TAB(15)"Load an Existing Encoded Font (Encoded)" 570 PRINT STRING$(3,10) 580 LINE INPUT"Encoded font to load? ";NEWFONT$ 590 GOSUB 2420 ' Case conversion & font name check 600 OPEN "I",#1,FONT$ 610 LINE INPUT #1,TITLE$ 620 LINE INPUT #1,COMMENT$ 630 LINE INPUT #1,PRNCHAR$ 640 LINE INPUT #1,MARGIN$ 650 LINE INPUT #1,SPACING$ 660 FOR I=1 TO 95 670 LINE INPUT #1,CHARCODE$(I) 680 NEXT I 690 CLOSE 700 GOTO 260 ' Return to main menu 710 ' Option 2. 720 IF FONT$="" THEN ERROR 201 730 PRINT TAB(15)"Load a single font character (text)" 740 PRINT STRING$(3,10) 750 PRINT"Enter a single keystroke followed by to load a character" 760 PRINT"file. A bare to exits to the main menu." 770 PRINT:PRINT 780 PRINT"Enter the character you wish to add to ";FONT$;" "; 790 LINE INPUT CHAR$ 800 IF CHAR$="" THEN 260 ' Exit to menu if no input 810 IF ASC(CHAR$)<32 OR ASC(CHAR$)>126 OR LEN(CHAR$)>1 THEN PRINT BL$:GOTO 780 820 CHARS=ASC(CHAR$) 830 PRINT"Adding ";FONT$;" character #";CHARS 840 GOSUB 2120 ' Encode character 850 IF NOTUSED>0 THEN PRINT BL$;"Source file ";CHARIN$;" not found" 860 PRINT 870 NOTUSED=0 880 NOTSAVED=-1 890 GOTO 780 ' Again? 900 ' Option 3. Load a full set of font characters (text) 910 PRINT TAB(15)"Load a full set of font characters (text)" 920 PRINT STRING$(3,10) 930 LINE INPUT"Font to load? ";NEWFONT$ 940 GOSUB 2420 ' Case conversion & font name check 950 GOSUB 2970 ' Set font defaults 960 PRINT CLS$ 970 PRINT"Loading a full set of font characters (text)" 980 PRINT:PRINT 990 PRINT"Go take a break, this will take a while." 1000 PRINT:PRINT 1010 PRINT TAB(7)"^S to Pause ^C to Abort" 1020 PRINT STRING$(4,10) 1030 PRINT"Working on ";FONT$;" character # "; 1040 FOR CHARS=32 TO 126 1050 N=LEN(STR$(CHARS-1))+1 1060 PRINT STRING$(N,8);SPC(N);STRING$(N,8);CHARS; 1070 GOSUB 2120 ' Encode single font character 1080 NEXT CHARS 1090 PRINT:PRINT 1100 PRINT 95-NOTUSED;"characters included in the font ";FONTOUT$ 1110 PRINT 1120 NOTSAVED=-1 1130 GOSUB 2070 ' hold 1140 GOTO 260 ' Return to main menu 1150 ' Option 4. Open a new font 1160 PRINT TAB(20)"Open a New Font" 1170 PRINT:PRINT:PRINT 1180 PRINT"Enter the file name of your font. If no extension is specified" 1190 PRINT"the default of FNT will be used. A drive for the font may be" 1200 PRINT"included. A bare exits to the main menu." 1210 PRINT 1220 PRINT"Example: B:BRILLIG.FNT" 1230 PRINT:PRINT:PRINT 1240 LINE INPUT"Font Name? ";NEWFONT$ 1250 GOSUB 2420 ' Case conversion & font name check 1260 GOSUB 2970 ' Set new font defaults 1270 NOTSAVED=-1 1280 GOTO 260 ' Return to main menu 1290 ' Option 5. Unload a single character to a text file 1300 IF FONT$="" THEN ERROR 201 1310 PRINT"To unload a single character to a text file from ";FONT$;"," 1320 PRINT"enter with a single keystroke, the character you want sent" 1330 PRINT"to a file. Enter to return to the main menu." 1340 PRINT 1350 LINE INPUT"Character to unload: ";CHAR$ 1360 IF LEN(CHAR$)>1 THEN PRINT BL$:GOTO 1300 1370 IF CHAR$="" THEN 260 1380 CHAR=ASC(CHAR$) 1390 IF CHAR<32 OR CHAR>126 THEN 260 1400 CH=CHAR-31 1410 PRINT 1420 PRINT"Unloading ";FONT$;" character: ";CHAR 1430 GOSUB 2750 ' Write large character text file 1440 GOTO 1340 ' Another character to unload? 1450 ' Option 6. Unload all of an current font to text files 1460 IF FONT$="" THEN ERROR 201 1470 PRINT TAB(5)"Unload all of ";FONT$;" to text files." 1480 PRINT:PRINT 1490 PRINT"This will take a while and use a lot of disk space. For a full" 1500 PRINT"font you will need from 100k to over 200k of free disk space" 1510 PRINT"and a free directory entry for each character of the font." 1520 PRINT 1530 INPUT"Do you wish to continue (Y/N)";ANS$ 1540 IF LEFT$(ANS$,1)="Y" OR LEFT$(ANS$,1)="y" THEN PRINT ELSE 260 1550 PRINT 1560 PRINT"Unloading all of ";FONT$;" to text files (Characters 32-126)." 1570 PRINT:PRINT 1580 PRINT"Unloading character: "; 1590 FOR CH=1 TO 95 1600 IF CHARCODE$(CH)="" THEN 1650 1610 CHAR=CH+31 1620 N=LEN(STR$(CHAR)) 1630 PRINT STRING$(N+1,8);SPC(N);STRING$(N,8);CHAR; 1640 GOSUB 2750 ' Write large character text file 1650 NEXT CH 1660 PRINT 1670 GOTO 260 ' Return to main menu 1680 ' Option 7. Save current font 1690 IF FONT$="" THEN ERROR 201 1700 PRINT TAB(15)"Save the current font." 1710 PRINT 1720 FONTBAK$=LEFT$(FONT$,INSTR(FONT$,"."))+"BAK" 1730 OPEN "I",#1,FONT$ 'See if output font already exists 1740 CLOSE #1 'Close, if found, else error trap gets it 1750 RENAMEFONT=-1 1760 OPEN "I",#1,FONTBAK$ 'See if .BAK exists. 1770 CLOSE #1 'Close, if found, else error trap gets it 1780 PRINT"Erasing ";FONTBAK$ 1790 KILL FONTBAK$ 1800 IF RENAMEFONT THEN PRINT"Changing ";FONT$;" to ";FONTBAK$ ELSE 1820 1810 NAME FONT$ AS FONTBAK$ 1820 PRINT"Writing ";FONT$ 1830 OPEN "O",#1,FONT$ 1840 PRINT #1,TITLE$ 1850 PRINT #1,COMMENT$ 1860 PRINT #1,PRNCHAR$ 1870 PRINT #1,MARGIN$ 1880 PRINT #1,SPACING$ 1890 FOR J=1 TO 95 1900 PRINT #1,CHARCODE$(J) 1910 NEXT J 1920 CLOSE 1930 NOTSAVED=0 1940 GOTO 260 ' Return to main menu 1950 ' Option 8. Change font defaults" 1960 IF FONT$="" THEN ERROR 201 1970 GOSUB 2970 ' Set font defaults 1980 NOTSAVED=-1 1990 GOTO 260 ' Return to main menu 2000 ' Option 9. EXIT 2010 IF NOT NOTSAVED THEN 2050 2020 PRINT"Abandon modified font: ";FONT$;" (Y/N)?"; 2030 ANS$=INPUT$(1) 2040 IF ANS$<>"Y" AND ANS$<>"y" THEN 260 2050 END 2060 ' Hold before return to menu subroutine 2070 PRINT 2080 PRINT" "; 2090 WHILE INKEY$="":WEND 2100 RETURN 2110 ' Encode character text file subroutine 2120 TMP$="" 2130 EXTENSION$=MID$(STR$(CHARS),2) 2140 IF LEN(EXTENSION$)<3 THEN EXTENSION$="0"+EXTENSION$ 2150 CHARIN$=LEFT$(FONT$,INSTR(FONT$,"."))+EXTENSION$ 2160 OPEN "I",#2,CHARIN$ 2170 FOR LINES=1 TO 200 2180 LINE INPUT #2,TXT$ 2190 COL=0:SEGLEN=0 2200 FOR CHAR=LEN(TXT$) TO 1 STEP -1 2210 IF MID$(TXT$,CHAR,1)<>" "AND MID$(TXT$,CHAR,1)<>CHR$(9) THEN 2240 2220 NEXT CHAR 2230 TMP$=TMP$+CHR$(255):GOTO 2360 2240 FOR BYTE=1 TO CHAR 2250 IF SEGLEN=95 THEN TMP$=TMP$+CHR$(127):SEGLEN=0 2260 BYTE$=MID$(TXT$,BYTE,1) 2270 IF BYTE$=CHR$(9) THEN COL=COL+8-(COL MOD 8) ELSE COL=COL+1 2280 IF SEGLEN THEN 2300 2290 IF BYTE$<>" " AND BYTE$<>CHR$(9) THEN TMP$=TMP$+CHR$(COL+31) 2300 IF BYTE$<>" " AND BYTE$<>CHR$(9) THEN SEGLEN=SEGLEN+1 2310 IF SEGLEN=0 THEN 2340 2320 IF BYTE$=" " OR BYTE$=CHR$(9) THEN TMP$=TMP$+CHR$(SEGLEN+32) :SEGLEN=0 2330 IF INKEY$<>"" THEN GOSUB 2670 2340 NEXT BYTE 2350 TMP$=TMP$+CHR$(SEGLEN+160) 2360 IF EOF(2) THEN 2380 2370 NEXT LINES 2380 CHARCODE$(CHARS-31)=TMP$ 2390 CLOSE #2 2400 RETURN 2410 ' New font subroutine 2420 IF NEWFONT$="" THEN 260 2430 IF NOT NOTSAVED THEN 2480 2440 PRINT 2450 PRINT"Abandon ";FONT$;" (Y/N) "; 2460 INPUT ANS$ 2470 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 260 2480 FOR I=1 TO LEN(NEWFONT$) 2490 BYTE=ASC(MID$(NEWFONT$,I,1)) 2500 IF BYTE>96 AND BYTE<123 THEN MID$(NEWFONT$,I,1)=CHR$(BYTE-32) 2510 IF BYTE=59 THEN MID$(NEWFONT$,I,1)=":" 2520 NEXT I 2530 IF INSTR(NEWFONT$,".")=0 THEN NEWFONT$=NEWFONT$+".FNT" 2540 IF INSTR(NEWFONT$,".")-INSTR(NEWFONT$,":")>9 THEN ERROR 64 2550 FONT$="" 2560 TITLE$="" 2570 COMMENT$="" 2580 PRNCHAR$="" 2590 MARGIN$="" 2600 SPACING$="" 2610 FOR I=1 TO 95 2620 CHARCODE$(I)="" 2630 NEXT I 2640 FONT$=NEWFONT$ 2650 RETURN 2660 ' Quit or hold subroutine for compiler only 2670 IF QUIT$=CHR$(3) THEN CLOSE ELSE 2720 2680 PRINT:PRINT 2690 PRINT BL$;"*** ABORTING *** ^C Entered from Keyboard" 2700 GOSUB 2060 ' Hold before return 2710 GOTO 260 ' Return to main menu 2720 IF QUIT$<>CHR$(19) THEN WHILE INKEY$="":WEND 2730 RETURN 2740 ' Write large character text file subroutine 2750 CODELEN=LEN(CHARCODE$(CH)) 2760 IF CODELEN=0 THEN 2950 2770 EXT$=MID$(STR$(CHAR),2) 2780 IF LEN(EXT$)=2 THEN EXT$="0"+EXT$ 2790 CHAROUT$=LEFT$(FONT$,INSTR(FONT$,"."))+EXT$ 2800 OPEN "O",#1,CHAROUT$ 2810 FOR BYTE=1 TO CODELEN STEP 2  2820 LINEFLAG=0 2830 IF MID$(CHARCODE$(CH),BYTE,1)=CHR$(255) THEN PRINT #1,"" ELSE 2860 2840 BYTE=BYTE-1 2850 GOTO 2930 2860 COLUMN=ASC(MID$(CHARCODE$(CH),BYTE,1))-31 2870 LENGTH=ASC(MID$(CHARCODE$(CH),BYTE+1,1)) 2880 IF LENGTH>127 THEN LENGTH=LENGTH-128:LINEFLAG=-1 2890 LENGTH=LENGTH-32 2900 PRINT #1,TAB(COLUMN) STRING$(LENGTH,PRNCHAR$); 2910 IF LINEFLAG THEN PRINT #1,"" 2920 IF INKEY$<>"" THEN GOSUB 2670 2930 NEXT BYTE 2940 CLOSE #1 2950 RETURN 2960 ' Set font defaults subroutine 2970 PRINT CLS$ 2980 PRINT:PRINT 2990 PRINT TAB(20)"Enter Title" 3000 PRINT:PRINT 3010 PRINT"You may enter a title or copyright notice for the font." 3020 PRINT"It must not exceed 70 characters. Enter to" 3030 PRINT"keep the existing title. Example:" 3040 PRINT 3050 PRINT"Heron version 1.0 (C) 1985 Merlin R. Null" 3060 PRINT STRING$(3,10) 3070 LINE INPUT"Title? ";TEMP$ 3080 IF TEMP$="" AND TITLE$="" THEN 260 3090 IF LEN(TEMP$)>70 THEN PRINT BL$;:GOTO 2970 3100 IF TEMP$<>"" THEN TITLE$=TEMP$ 3110 PRINT CLS$ 3120 PRINT:PRINT 3130 PRINT TAB(20)"Enter Comments or Subtitle" 3140 PRINT:PRINT 3150 PRINT"One additional line of comments or a font subtitle may be" 3160 PRINT"entered. Enter to retain existing comment line" 3170 PRINT"or, if none is wanted, to leave it blank." 3180 PRINT STRING$(3,10) 3190 LINE INPUT"Comment line text? ";TEMP$ 3200 IF LEN(TEMP$)>70 THEN PRINT BL$;:GOTO 3110 3210 IF TEMP$<>"" THEN COMMENT$=TEMP$ 3220 PRINT CLS$ 3230 PRINT:PRINT 3240 PRINT TAB(20)"Set Default Print Character" 3250 PRINT:PRINT 3260 PRINT"The default character used to print banners may be set to any" 3270 PRINT"printable character including those with the 8th bit set." 3280 PRINT"Just enter it with a single keystroke or the decimal value." 3290 PRINT 3300 PRINT"Example: The Gemini-10X has a 6 by 6 graphic block with an" 3310 PRINT"ASCII decimal value of 239. Enter for default of '@'." 3320 PRINT:PRINT:PRINT 3330 INPUT"Character or decimal value";PRNCHAR$ 3340 IF LEN(PRNCHAR$)<2 THEN 3400 3350 FOR I=1 TO LEN(PRNCHAR$) 3360 IF ASC(MID$(PRNCHAR$,I,1))<48 OR ASC(MID$(PRNCHAR$,I,1))>57 THEN PRINT BL$;:GOTO 2970 3370 NEXT I 3380 IF VAL(PRNCHAR$)>255 THEN PRINT BL$;:GOTO 2970 3390 PRNCHAR$=CHR$(VAL(PRNCHAR$)) 3400 IF PRNCHAR$="" THEN PRNCHAR$="@" 3410 PRINT CLS$ 3420 PRINT:PRINT 3430 PRINT TAB(23)"Set Margin" 3440 PRINT:PRINT:PRINT 3450 PRINT"The margin is the number of columns below the descenders," 3460 PRINT"if the font being used has descenders. Enter , if" 3470 PRINT"you want to start printing at column 1 or the column number" 3480 PRINT"to start printing." 3490 PRINT STRING$(3,10) 3500 INPUT"Column to start printing";MARGIN$ 3510 IF MARGIN$="" THEN MARGIN$="1" 3520 FOR I=1 TO LEN(MARGIN$) 3530 IF ASC(MID$(MARGIN$,I,1))<48 OR ASC(MID$(MARGIN$,I,1))>57 THEN PRINT BL$;:GOTO 3410 3540 NEXT I 3550 IF VAL(MARGIN$)>200 THEN PRINT BL$;:GOTO 3410 3560 PRINT CLS$ 3570 PRINT:PRINT 3580 PRINT TAB(20)"Set Rows Between Characters" 3590 PRINT:PRINT:PRINT 3600 PRINT"The number of rows between large characters in the font may be set" 3610 PRINT"to any value between 0 and 99. A accepts the default" 3620 PRINT"value of 3. Use 0 only if each large character file has blank" 3630 PRINT"lines included for spacing." 3640 PRINT STRING$(3,10) 3650 INPUT"Row(s) between characters";SPACING$ 3660 IF SPACING$="" THEN SPACING$="3" 3670 IF LEN(SPACING$)>2 THEN PRINT BL$;:GOTO 3560 3680 FOR I=1 TO LEN(SPACING$) 3690 IF ASC(MID$(SPACING$,I,1))<48 OR ASC(MID$(SPACING$,I,1))>57 THEN PRINT BL$;:GOTO 3560 3700 NEXT I 3710 RETURN 3720 ' Error handling 3730 IF ERR=53 AND ERL=2160 THEN NOTUSED=NOTUSED+1 ELSE 3850 3740 IF NOTUSED=95 THEN PRINT BL$ ELSE 3840 3750 PRINT:PRINT 3760 PRINT"No files found for ";FONT$;"!";BL$ 3770 PRINT 3780 PRINT"Filenames to be included should have the format:" 3790 PRINT"Fontname + decimal number of the character to include." 3800 PRINT"Example: HERON.065 = the letter 'A' for the font" 3810 PRINT"Heron. This is followed by HERON.066, HERON.067 etc." 3820 GOSUB 2070 ' Hold before return 3830 RESUME 260 ' Return to main menu 3840 RESUME 2390 ' Encode character subroutine 3850 IF ERR=53 AND ERL=600 THEN CLOSE ELSE 3910 3860 PRINT 3870 PRINT BL$;"Encoded font ";FONT$;" not found." 3880 FONT$="" 3890 GOSUB 2070 ' Hold before return 3900 RESUME 260 ' Return to main menu 3910 IF ERR=53 AND ERL=1730 THEN CLOSE #1 ELSE 3930 3920 RESUME 1760 3930 IF ERR=53 AND ERL=1760 THEN CLOSE #1 ELSE 3950 3940 RESUME 1800 3950 IF ERR=53 AND ERL=120 THEN CLOSE #1 ELSE 4190 3960 PRINT STRING$(18,10) 3970 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 3980 PRINT"Please enter your clear screen sequence" 3990 PRINT"one byte at a time in Decimal numbers. End your" 4000 PRINT"entries with a to generate CLS.DAT" 4010 PRINT 4020 FOR I=1 TO 9 4030 PRINT"Clear Screen character";I; 4040 LINE INPUT C$ 4050 IF C$="" AND I>1 THEN 4140 4060 IF C$="" THEN 4030 4070 IF LEN(C$)>3 THEN 4030 4080 FOR J=1 TO LEN(C$) 4090 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 4030 4100 NEXT J 4110 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 4120 CLR$=CLR$+C$ 4130 NEXT I 4140 PRINT"Writing CLS.DAT"; 4150 OPEN "O",#1,"CLS.DAT" 4160 PRINT #1,CLR$ 4170 CLOSE #1 4180 RESUME 120 4190 IF ERR=64 THEN PRINT BL$ ELSE 4240 4200 FONT$="" 4210 PRINT"Bad font name - try again." 4220 GOSUB 2070 ' Hold before return 4230 RESUME 260 ' Return to main menu 4240 IF ERR=201 THEN PRINT BL$ ELSE 4290 4250 PRINT"A font must be loaded or a new one opened to add a character," 4260 PRINT"unload a character, unload a font or save a font." 4270 GOSUB 2070 ' Hold before return 4280 RESUME 260 ' Return to main menu 4290 ON ERROR GOTO 0 ' Quit, unexpected error haracteÄ+"6# x+:`i* ">"/##~>;+> 6*s#r w+͊1>2 u+#w+>36*s#rw+6*xDM"+ڍ+s#r#À+! .>2:*ã+6*x+Á*~#ʽ+#~+ҽ+~+x 6*s#rw+ɯ2,x_O:*+2,x_O6*9w#w+x,+r+s=,w>#w+Á*~7^#VE,E,!~ѧ7x1P!vD!ͦ6!6!f1|/g}/o|!L!9͚!9!7ͱ <<Nò!1!ͱ ?N!<"!["6!-͌ "!1"! ͌ "! "!"!"! "! ͌ "! "!"!"! !*:BN!B"!B!|ڴ)go!B!|)?go|g}o|!?"!"!"!d w!E0%H!EN!"!"!> w!E0%K!ENK!H _!?bn! "K!!!ͦ6K!6!1!"!"!K! !w!N0N! ! N! ! |g}o|!"!ͦ6H!6! !H"*Q|/g}/o|ʠ*S#"S!L*S ͚*S"~ !*Uz|e}|v*~ !"U*S|go!f1|g}o|ʝ!"Q!B!7"W!"! !K"! ͦ6K!6*W͋%n!1!"! "!"!"͢*S"Y!`*[ "~ " !*U}o|g! ͌ **~́*[#"[*[*Yz|t}|*SX*[ !"]!û*[ DM*_!A ! *_#"_*_*]z|}|Җ*[ ! *[ DM*a!A ccN*a+"a*a|)!c!*_}o|g#c cN!{!c"c!N*[+"[*[|h)~%*SÖ*[ cN!{!c"*[+"[*[|ڦ)t%E!!!E!"f!>E*[!A !"h*h|)?go*h|)go|g}o|*hͱ *[E͘*h|:! *[E͘*[#"[*[*fz|R}|!E!E! f!}o|g"jE! f!|ʛ!E!E! f!}o|g#"l*l*j}o|g|ڲ)ڻ!!"l%|goͪ|g}o|!13|goͪ|g}o|' !<"* M ! ͌ "!H! "38|e !<"h Ë ! ͌ "! !?"3|goͪ|g}o|ʷ !1ú v ! ͌ "!?!P "!& "! "! "!"!"!1 ! *[!w!n͚n! *[|> )?go|g}o|D n!! !n!|i ) !n!"q! n*a!A !|ڕ )gon*a!A !|ڳ )?go|g}o| !?! " *a#"a*a*qz| }|{ *[| ) ! ͱ s! ͱ sNs!nsN*[#"[*[|A ) !| ! ͦ6!6!{!s"!13R͢ Writing CLS.DAT Whole decimal numbers only. Clear Screen character+ entries with a to generate CLS.DAT0 one byte at a time in Decimal numbers. End your') Please enter your clear screen sequence/S CLS.DAT, the clear screen data file, not found. BAD FILE NAME not found . :  Done. O Writing  Reading  y Y- already exists. Do you wish to overwrite it6 Output filename must be different from Input filename.#A Output filename or to exit"g Input filename or to exit Option? : The input file must be 100 lines or less in length.+ 2. Create a mirror image of the input file./1. Rotate a character graphic file 180 degrees.'4 For modifying banner font source files6^CHARFLIP version 1.0 (C) 1985 Merlin R. Null 9/14/85CLS.DATIH\ (2<FPZdnx&5>PYhq",6@JT ^h(r:|?Hnbky )0&E0v:DNXblvn\ \x~    ?*K4T>kHnRtfpz:Vq$M L* .9 8H B th Vw ` jv d ~        ' D 2N Y l {    - (M <_ Fk Pq Z[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 :U;RDM*"2"*7##"0">22*^#V"##^#V" 2!h!!""!"6#6P>2>2>2ííä_y#;U=i=ʨ;ͷ;yʏ;;Ï; µ;;~4{####6+~++;!9"& !͇&*!͇!͇!R"!O"&|[> 6#s#r#=P>2>2>22!"!$\">&26A%6#}„|„& STO͒â*.. . ........1$*|©:*|&  s#r&  {uw#6"**>2vÜ!9N#F&~#~O~+U~#~O+^#V###-###-|a~#fo!i& Internal Error - No Line Number ñ&~#& at lineͱ><´<0͎<}_|W!-=~#fo>& at address|+&}+&> ͎<> Î<~#*5-=~#foɄ*G!9"!=*C"!d*!~<ʐ=ʐ#~#|# &Syntax Error in DATRETURN without GOSU Type MismatcOut of DatIllegal Function CalOverfloOut of Memor Subscript Out of Rang Division By ZerOut of String SpacString Formula Too CompleRESUME without Erro2Field Overflo3Internal Erro4Bad File Numbe5File Not Foun6Bad File Mod7File Already Ope9Disk I/O Erro:File Already Exist=Disk Ful>Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erro|¿9}37ʂ:h:`i"!}"!" ,ʴ͊(͵&*B>*@>*>>*<>͑((*@>͑(͞&*B>*@> },Z~#x#J!>##Q3 !"6G{,x6PX3ڄ!Oz"yo ʤ oO{,y3ڄ o{ ~,> ~~ʄʄ3;"ʏ ·3ڷ ʏ,ʷ ¯3ڷ ʷ*( 4:{,6!#O +~ #6!ɷw#øOTO 122N#"!9""y2*|*!"A~#*!=:6~ʻH͊(K͑("q}͵&*B>*@>*>>*<>Ê(*@>Ê͞&*B>*@>*!=ʮ~#", :~!"~,"#"~# "#"x" +~ y#Ê&?Redo from Start *1$!-w*:O*+~+[MM +w Of++~#foQ"!5*A~2v#~#^#V%++'$ͫ:ړ:9*|¹!##Q*RC?Command error?File not found?Can't enter file~͉G#C!CC!CC!CCNDCOMSCNC"">C2D:DG:DO*.(D# D2D (DD2C*+++"y=*">:=2|=*y= G:?C ND2=2=2=2=2=2=2=<2=2=Ců2x=E.>ͷE9+969A99+19619A19͖19+969A9͖@>L<>L"@>UH~# Mx2i&:…_*#<=~~;#r,_*~ʁ ;#È>2i&:F#~#fox=~#;ø'$>";G:xʢ<*+~<=###~*â ;>,;W*#^ ga+=a:=a͢<z{y{_k9|µ}37ʔ:`i"++"!"!"2Jÿh29}o|g> ;+|â!>!>!>!>!>^#V#!@>ù GTD^#V#VE29992B>:C>Ҳͼ:C>ŠÌ|/g}/oiB:C>ڼ!C>²!Jü:C>goW*A>|7g:@>+>|/g}/o!G|o& Gȯ|g}o>+~+~?~6+#C+ C9#ԋ~##++ħ$>2=+V+^+~+r+s$9Q~$=F""*|¿}ʿ ڿ+<ڽ{*~#^#V`i#N#F 2=*'$9ڿ͗#'$'$~#~#fo2=9|¿BKI PY9|¿BK : o_ 9z¿zQ  W _] o}`i$'$DM9 ͏ ~ʿ#~#fon&'$9z« }͗#~ڨ s#Þ Jÿ9|¿!9>#> > > > > >!!+>!>!>!>!>!>!!~#fo##GNC!yC!#~#fo~#foL!#B! 2! yL!y<.V!)V!)'$'$o!x¿űz! y<2e!F~!!#~#foy-=O #~#fox!¸!#§!!!e!4 ¤!2e!'$'$*e!&~'$o&~ʿ#^#V++'$o&9~<ʿ͗#~#~#fo2=6+ͭ/͊(͵&'$'$K+++6"9"<"?"#B"E"{H"zK"|N"}Q"#T"W"#Z" ]"`" _!-"4s"5*.""."~#N#F#ڳ"" -=v"yxҘ" v"+++6@#yw#xw+++6###!-"~6""s"##*."#~#~s"Jö!*0""."~#^#V# #"-="| #"++~_w#~Ww#""*0"DM~#^#V#}#=#,#+zZ$+{Z$##{z~#q#p_,#yr#xr#DM,#~#r#,#YP+++"."6@###{_zW+r+sɷ#*4"|ª#Jùc"^#V+"4"w#s#r+++r+s##!##*%{z*%?#}|~# #yG͗#x2=G͗#x#N#F& $#ͧ$$*%*%@=V$*%P$ͧ$$###7$|$& during G.C. ñ|$& ñ& Internal Error - String Space Corrup#N#F*0"yx$*2"yx$++`i+V+^@=q$##6+6+~6  >@++*4""4"s#r+##*."#~_#~W%Jr+s##6"2"###!4"~#fo>%@=.%<*0""."*2"}o|g6@#s#r#6"2"*%*%"4"}w>#w##@=i%++6+66"c"Í%>2%|%+})N#%~#fo :%·%!9"!4 ~-=#ÿ!4!9"^#V#!~wڪ!9"ɧ~͎<#=% &~͎<# &G~#)&#&++4&0:?&ÎP"f`i"h!f/&*@>}/o|/g#"@>|&DÑ&!B>~wɯ2C>/&iB&*@>&D/&IB>>g(~͙#&Ù`&!F>&>!F><>2&# &!F>@!F>'Z>>>'>|}+!(?͔'qE+6!B>> B2;>!~(~C!z(?!F>?~_#~W#~OͻF C!K/ CͼDg'ɇ<o&&D*@>*B>͗'"@>`i"B>!@>^#V#N#F#!~( DͩFx{ҞF!D>6~Ewg>GF':i&Gw#'''!F>'@>/<>/'*@>||('!G/'&ͥ&"(Y':B>2B>:C>Ҥ0ͦ':C>C(H(N(|/g}/ob(!0:C>k(ͦ'"@>>2i&_'aja( L}͙&Ϳ&0>2B&`hb(~&/-ʹ(+ʹ(+ͭ/ڠ).F)e(E(ͭ/l(L(q(Q(:i&)>)~%S)#d)!e)d)D%)n)ͭ//ͭ/*%)_{_}))))p&/!n'k(/ %)n)ù(ͭ/!n'!(%)n)ͭ/%)̞&ĵ&/';'=/5'' ')T])))O |)"@>ù(yͬ&7)t$_')͠'*)ͼ&;''p'ͼ&&)y'p'S'{ "*0_)\*!B>/<*:L>=*y\*:D>X*:B>\*:D>/\*ä0*j*6+'|*6-p<:l&W:i&,,*.!F&F :l&_ ʵ*x*µ*{µ*Aqͭ/*E*D*0ʵ*,ʵ*.*+60{*+:w{+p2l&!F&6 y'*<>*>>2D&͞+E~?+:+0+ #~+>DG+"<>`i">>#~+ʆ+-]+0OxG҆+#~D+`xE{+y /+>2D&Ë+|/+s+/+"<>`i">>͉'#W͚-:D&++++9.60̞'`.+~0+.Ğ',/>"w#6++6-/</ +:#p#w#6!F&#zҏ,,-1.z ..{'= .͘*>,p#6!E&#:j&~ C,*C,+W,ͭ/-+_:{0‡,#ͭ/҇,++w},D,ʇ,6%3-ʫ,O/&,_*+6%_','Ě-,_x .$.`..L.+,_yċ),),{_x- .$.- .yP.O .GO`.#-*j&= .P4,ͬ&ѯ9-'7Ě-yċ)OzWO)Y-g-/<Ҿ-//!F>'A' ã--/-CO_'-7/&-~)-͍)-/.t#_'.?/&-=60#..L.60#=.{ L./>&҉.>&p#=€.!<>͆'ü.Y'>ͦ'͉'/?L.͔'/{_#zW#yO++.G'#͉'p#.>./>L.N#F#*@>/}o|g/"@>p#=.L.w1_cƤ~@zZrN vH Tʚ;@B''d #~: ʭ/ ʭ/ ʭ/0?<=:i&/7-++ͭ/j0O/H/+/0b(H#400JüM! 00}0?)))صo 0M!F0D0}j00? \0? ))))صoF0a{ (/:C>:B>S':B&2C&2B&JüJüˮEA]EoETUR_ESUMdESTOR^UΌENU͖ESEԏSEhNIGHTANDOMIZņTOvPÝPACETRINGTRWAeGίIQTEПUšAVŖYSTE͉ϛAœAHEΞROF{RO|SRSRSRSRSRSRSRSRSRSRSұSIN9}37ʂ::!' ~ʡ1 ʡ1#~–1`i}3w1>O #~goPY!' ůwͱ3:w6ʝ:=ʗ:=1ѯÈ:<ʝ:!% ^#Vr+s9}6!"]1}37*2 PY 2!2`i>y2!' ~Ĭ1ͱ379}37ʂ:!&H2! ~+ng9}37ʂ:! n&*~|:ʑ9DM'~̩14N#V pʝ2zw w+s#r#6#6DM:2!" s#r#6 3! {zV30w<3<ʝ:!! {w:l:3}3!! ~0!) ;3ͩ1;3s:~#>3*~ʿ9( ~h3+~#5O ~+~t3z3J37>*T]% N#F+q#p###6 ’3ͱ3:w6>ª3>w+w!(H37?*' 6#67~ʚ:#^#fk_3N#~:3++@ʚ:y@ښ:Қ::1 #O4~.(4;474#42F1'$z ʚ:ښ:> ;4/4> T4/4930:1<ʑ:!*1:1> 2=3::1!*1 ::1<‹:*1*[1~:#N#F++'$ O4I4R:*]1|4!"]1}_3747{37Ž:z3 8"#:1> 2=66ͱ3~G5<ʝ:\5<\5‘:;5!%w#w#w#w~x5z3) p# ~56 _930:1<ʑ:9!:16# o65932F1!;1k6!C1k60:1ʑ:O!0  ~#;y>6~ ;6>.; (6: W:W6> ;;;:16~*6?# o6O!!46#46#4y"¤6ʝ:><"[1>2!9":<2*"_1!6"9"]1ͯ4*|6##n16.1*_19792a1/8"b1/89#792a108"b108ʂ:<ʂ:=_!~#foW7##{m7++C7*v7"q#p#s#4#5++###DM !"d1~#foʯ7+V+^##*]1{z{7BK^#V+*d1s#r! DM7*]1 DM%s#r# 6# x7 !T]~#foʂ:x7y7~#~+*"s#r>2Jb!,*]1|8! s#r#w'82 8}37:! ^#V:a1R8*b1{ʅ:+s#r! w#w! ~#fo!m:‚88BK>!)ҕ8)#Ö8))Ҥ8 ң8#=‹8}_}la)ڠ:һ8#x :"8! "8!) " 8!}o|gm:8bk: 809m:8M9DM* 8*8̈́9"8PYL9}o|g*8#"88M9DM*8* 8̈́9"8PY92l:*8! ~#fom:s#rs9:l:ʀ9!9!& ä2~# x…9DM9ʔ:9! w!( V6 ʺ9zw9ʔ:9! ~!9! ^#V! s#rDM99m:}37ʂ: ::`i"!:"J:3J!>9|¿,D:-:ʂ:*!"{͗#f$%h:!a:*S:|}!">6>4>?>=>:>7>5>2>3>@>C>Jo&T!"!"ý::v:&?:p;;:;>\2;::;+:~;;+;;;;!2;;;O::;);>\;2;yʓ;;7 ʺ; ʓ; M;:Ó;;:k;:;> ;>:u;>#:Ž;6;!;; ;x<>ʞ;yq#; ;> ;;ʫ; ;;:v;wɺÎ<>^;@;;~ ;> ;;#;͐~#* <#~+<<=ܢ< y<|< "<4+~# ;~=€<*!";"> ;> ;:=ʽ<> ͠> ͠*;!@><@><<><w#w#w#w#ѧfշ=><> =>@>< ~#= =!<#~ = =Ʌo$ɧGw#6={zg&GOxGpg)>gx>gy>g͇pgxͤfx!tgK>eyg~#fo###~=kgyg6#6xiBKDMPY`i bkT]*m*m"m"m|ʠg##6|ʪg##6Bf^,^#V!~#fog&*m~#foɇ!mK*m~#fo~>K~#fo*m##n&ȇ*mK~#foG6#N>~BM>ʉ>FOʎ>!F!B>y#†>+y>F?Fr?͒FIBç>r?@BU?!F>~B?:C>F:M>/ObD4A!|=qAu=!F>MA?>u=!F>@A:B><=A!<>ͱA!u=ͯAx>!C>5>U@o!B>N#FqE+6J?!B>>N B&A2;>:<>sAFx/~5#M?<>!F>Nwy#]?F<>ÁB!<>~B!F>ÕBB!B!M>Ï?!C>>F+N+=’?!F>æ?!<>>q#p#=©?!<>?"t=͝?͌?x?*t=~ByF:C>yF!L>N#FbDAq@G:A8Bx ??sA!B>B@j0 TeB׳]h!I.k r?͒FIBO@r?@B!F>?o!C>q#~++w+qj@FDNn"~`35zr1{r1h!I~BFyO2L>@~BF:C>U?@/OqEG2E>!L> B:E>2;>x!F><>ZACAA48B:;>&A!D>~++wF!<>4#+A4U@+6!F><># CAɯ# PAPAsA/!;>Oyw#kAG:B>œA!;>Vwz# AxtAyF!;>ͯAAxA!C>wyFA~w# ±Ar?͒FIBAr?@B!F>@r?͒FIBAr?@BU?!F>ó@y2L>!B>{=~q+Bq#BNsY+BB W~w+-B&B!B>*BDIB͒F!<>w#OBF`B}͕BiBÛB͕BqE!?>F#^#V#NYF͛B}F>~#ƒBG++NyF<>ÁB!@>͒F>BҰBoͻFBͩFB!D>6~Eg>G|?E!>ªBak͒FB͂DBF!C>~+>wFD CͳFF:C>ʛFC/QC~_#~W#~OYF#4HF.GYFG~_#~W#~O9EÛEDnCͳFF>OCDÁCͳF-EFȯGbD")>y2+>FoDEME!D*@>:B>OҾCC>4HFCCg.*)>:+>OzҿCCg.*@>:B>Cx<=C{_zWxG)yOHGYFD DͳFʞFFbDy+F+F+Fw`h|ZDgy>D:@>O|g}oxG-|2D}-DÛEElaO,D!C>~GxzDƀxFwqEw+ɷHFyFͩFx{ҞF!D>6~EwgDzŸD >G|kF{>2C>͛E/~D#~+~+~+~LUX)!"C>9EÛE͆EDMEz-EzB1E|G||1EF1EoO_yW!D>~/woG}_}W}O͆E͞F||DM!>))lE =dE!B>~7w?##wy7O*@>*B>"B>"@>ajSXEyFJS\E!C>yF/~Ex8EG@G@FúEE-FEx|FEEFejSXFFch|$F{_zW}o|gF">">x!>~w#4F-F@FaFoJ!C>qx!C>kFF#~怩OÛF 4LFgo"@>"B>ͩFs#r#q#pûFͳF͞FͻF"@>`i"B>*@>*B>DM^#V#N#F#xyF:C>:B>7|/G}/O!>F F7>{_zW}o|g=F|g}oGCZQG o-yOzW{_xGG@>*B>DM^#V#N#F#xyF:C>:B>7|/G}/O!>F F7>{_zW}o|g=F|F-EFȯGbD")>y2+>FoDEME!D*@>:B>OҾCC>4HFCCg.*)>:+>OzҿCCg.*@>:B>Cx<=C{_zWxG)yOHGYFD DͳFʞFFbDy+F+F+Fw`h|ZDgy>D:@>O|g}oxG-|2D}-DÛEElaO,D!C>~GxzDƀxFwqEw+ɷHFyFͩFx{ҞF!D>6~EwgDzŸD >G|kF{>2C>͛E/~D#~+~+~+~LUX)!"C>9EÛE͆E10 ' CHARFLIP.BAS version 1.0 (C) 1985 Merlin R. Null 20 ' For modifying banner font source files. 30 ' This program may not be sold separately or as part of any 40 ' collection of programs or used as an inducement to buy any other 50 ' product or program without the written permission of the author: 60 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818) 762-1429 70 DEFINT A-Z 80 DIM LIN$(100) 90 ON ERROR GOTO 1040 100 OPEN "I",#1,"CLS.DAT" 110 WHILE NOT EOF(1) 120 LINE INPUT #1, A$ 130 CLS$=CLS$+CHR$(VAL(A$)) 140 WEND 150 CLOSE #1 160 BL$=CHR$(7) 170 PRINT CLS$ 180 PRINT"CHARFLIP version 1.0 (C) 1985 Merlin R. Null 9/14/85" 190 PRINT STRING$(54,45) 200 PRINT" For modifying banner font source files" 210 PRINT STRING$(3,10) 220 PRINT"1. Rotate a character graphic file 180 degrees." 230 PRINT:PRINT 240 PRINT"2. Create a mirror image of the input file." 250 PRINT STRING$(3,10) 260 PRINT" The input file must be 100 lines or less in length." 270 PRINT:PRINT 280 PRINT"Option? "; 290 OPT$=INPUT$(1) 300 PRINT OPT$ 310 IF ASC(OPT$)<49 OR ASC(OPT$)>50 THEN PRINT BL$:GOTO 170 320 PRINT:PRINT 330 INPUT"Input filename or to exit";FILENAME$ 340 GOSUB 920 ' Check the name 350 INFILE$=FILENAME$ 360 PRINT:PRINT 370 INPUT"Output filename or to exit";FILENAME$ 380 GOSUB 920 ' Check the name 390 OUTFILE$=FILENAME$ 400 IF OUTFILE$=INFILE$ THEN PRINT BL$; ELSE 430 410 PRINT"Output filename must be different from Input filename." 420 GOTO 360 430 IF OUTFILE$=""THEN 670 440 OPEN "I",#2,OUTFILE$ 450 CLOSE 460 PRINT:PRINT 470 PRINT OUTFILE$;" already exists. Do you wish to overwrite it"; 480 INPUT ANS$ 490 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 670 500 PRINT 510 OPEN "I",#1,INFILE$ 520 PRINT"Reading ";INFILE$ 530 WHILE NOT DONE 540 ROW=ROW+1 550 LINE INPUT #1,LIN$(ROW) 560 IF LEN(LIN$(ROW))>MAXLEN THEN MAXLEN=LEN(LIN$(ROW)) 570 IF ROW=100 OR EOF(1) THEN DONE=-1 580 WEND 590 OPT=VAL(OPT$) 600 PRINT 610 PRINT"Writing ";OUTFILE$ 620 OPEN "O",#2,OUTFILE$ 630 ON OPT GOSUB 700,860 640 CLOSE 650 PRINT 660 PRINT"Done." 670 PRINT:PRINT 680 END 690 ' Write 180 degree rotated file 700 FOR I=1 TO ROW 710 LIN$(I)=LIN$(I)+STRING$(MAXLEN-LEN(LIN$(I)),32) 720 NEXT I 730 FOR I=ROW TO 1 STEP -1 740 FOR K=1 TO LEN(LIN$(I)) 750 IF MID$(LIN$(I),K,1)<> " " THEN 770 760 NEXT K 770 FOR J=LEN(LIN$(I)) TO 1 STEP -1 780 TEMP$=TEMP$+MID$(LIN$(I),J,1) 790 NEXT J 800 TEMP$=LEFT$(TEMP$,LEN(TEMP$)-(K-1)) 810 PRINT #2,TEMP$ 820 TEMP$="" 830 NEXT I 840 RETURN 850 ' Write mirror image file 860 FOR I=ROW TO 1 STEP -1 870 TEMP$=LIN$(I) 880 PRINT #2,TEMP$ 890 NEXT I 900 RETURN 910 ' Case and ";" conversion 920 IF FILENAME$="" THEN 670 930 FOR I=1 TO LEN(FILENAME$) 940 BYTE=ASC(MID$(FILENAME$,I,1)) 950 IF BYTE>96 AND BYTE<123 THEN MID$(FILENAME$,I,1)=CHR$(BYTE-32) 960 IF BYTE=59 THEN MID$(FILENAME$,I,1)=":" 970 NEXT I 980 NAMELEN=LEN(FILENAME$)-INSTR(FILENAME$,":") 990 IF INSTR(FILENAME$,".")=0 THEN 1010 1000 EXTLEN=LEN(FILENAME$)-(INSTR(FILENAME$,".")-1) 1010 IF NAMELEN-EXTLEN>8 THEN ERROR 200 1020 EXTLEN=0 1030 RETURN 1040 IF ERR=53 AND ERL=440 THEN CLOSE ELSE 1060 1050 RESUME 500 1060 IF ERR=53 AND ERL=510 THEN PRINT CLS$ ELSE 1100 1070 PRINT STRING$(3,10) 1080 PRINT INFILE$;" not found" 1090 RESUME 670 1100 IF ERR=200 THEN PRINT CLS$ ELSE 1140 1110 PRINT STRING$(3,10) 1120 PRINT"BAD FILE NAME";BL$ 1130 RESUME 670 1140 IF ERR=53 AND ERL=100 THEN CLOSE #1 ELSE 1380 1150 PRINT STRING$(18,10) 1160 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 1170 PRINT"Please enter your clear screen sequence" 1180 PRINT"one byte at a time in Decimal numbers. End your" 1190 PRINT"entries with a to generate CLS.DAT" 1200 PRINT:PRINT 1210 FOR I=1 TO 9 1220 PRINT"Clear Screen character";I; 1230 LINE INPUT C$ 1240 IF C$="" AND I>1 THEN 1330 1250 IF C$="" THEN 1220 1260 IF LEN(C$)>3 THEN 1220 1270 FOR J=1 TO LEN(C$) 1280 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 1220 1290 NEXT J 1300 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 1310 CLR$=CLR$+C$ 1320 NEXT I 1330 PRINT"Writing CLS.DAT"; 1340 OPEN "O",#1,"CLS.DAT" 1350 PRINT #1,CLR$ 1360 CLOSE #1 1370 RESUME 100 1380 ON ERROR GOTO 0 140 1110 PRINT STRING$(3,10) 1120 PRINT"BAD FILE NAME";BL$ 1130 RESUME 670 1140 IF ERR=53 AND ERL=100 THEN CLOSE #1 ELSE 1380 1150 PRINT STRING$(18,10) 1160 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 1170 PRINT"Please enter your clear screen sequence" 1180 PRINT"one byte at a time in Decimal numbers. End your" 1190 PRINT"entries with a to generate CLS.DAT" 1200 PRINT:PRINT 1210 FOR I=1 TO 9 1220 PRINT"Clear Screen character";I; 1230 LINE INPUT C$ 1240 IF C$="" AND I>1 THEN 1330 1250 IF C$="" THEN 1220 1260 IF LEN(C$)>3 THEN 1220 1270 FOR J=1 TO LClarendon version 1.0 (C) 1985 Merlin R. Null @ 1 4 )&X'*T&,L%.:%.:%.:&,L'*T)&X ^[YX$^X#]X#]^_a^[YX$^X#]X#]^_a a_^X#]X#]X$^Y[^ DDDDDD888888DDDDDDD )'& #% #% $&!#& DDDDDDDDDDDDDDDDDD )'&%%%&') %%%%%%'*-0369 %([%([%([%([%([%([%)[%+[%%%%%%%%%%%%%%%%% %(O%.K%1I%3H%5G)2G.W+&2*G.X+&4)G/Z+'6(G/[+'7(H.[+(8(I,\*)9(K(\)*9(\)*:(\(+:)\'+;)\'+;*\&,<*[%-<+[%,<-Z$-=-Y$,=/W$,>1S$,>$-?$-@$.A%.B&/C'2E(4G*2J,/6 30-/Q+3O*5M)6L(7L'8L&)0.L%)1-M-[%(2+N,\$)4'P(]$)]$(B(^$(B(^$)B(^$)B(]#*B(]#+B)\#+B)[#,A,Z$,@/X$.?%1:%&'>G(=H);I*:J+8K-5M00P4 77777777(@7(B7(D7(E%(7(G%(7(I%(7(K%(7(L%(7(N%(7(P%)7(R%+7(S%%%%%%%%%%+7%)7%(7%(7%(7%(7%(7%(7 2.,1C*4C)6C(7C'8C&9C&)0/F)X%)1-H'W%(3)I'W$(J'W$(J'V$(J'V$(K'V$(K'V$(J(V$(J(W$)I)W$*I)W$+H*W$-E,W%.B/X%KX&JY'HZ'G[(E\*B^+@`-V:5V?2VC/VG-WJLNPRUX[ 1.,1M*5J)7H(9F';E'-8+D&,<&*=8X%*>4[%)?1\%)@/]$)@.]$)?/^$)?.^$(>/^$(>.^$(>.^$(=.^$)=.^%(<0]%(<1\%);3[&):6Y&*9',71I'AJ(?K)=L+:N-6P/2 GE-+C+/A*1@)3?(4?'5>&6>&(/,>/X%(0*>-Z%'2%>+\%'>)]$'>(]$'>(]$(>']$(>']%(>(]%)?']&*?'\&,@'['.@(Y(2A*W)*+,./147> )&P'*N&,M%.L%.L%.L&,M'*N)&P )&P'*N&,M #%.L #%.L $&-L!1M#.N&)P <(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L<(L %%%%%%%%%%%%%%%%)5%(:%(;%(;%(;(H%(;(M%(;(Q;(V;([;([;(V%(;(Q%(;(L%(;(G%(;%(;%(9%)4%%%%%%%%%%%%%%%%%% %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%(F(c%(F(c%(F(c%(F(c%(F(c%(F(c%(F(c%(F(c%(F(c%(F(c%)E*b%)E*b%*D,a%+C.`%,B2]%-A%1>%DK&CK&BL&AM'?N(=O*9Q,4U0 C=9520.,*)'&?M%4V%0Z$.\$-^#,_#+`#*`#*a#)a#)a#)b#)b#)b#)a$)a$)`$*`%*_%+^&,]'-[(/X)6T+4O-2O0/O3,O8'O %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%(c%(c%(c%(c%(c%(c%(c%(c%(b%)b%)b%)a%*`%+_%,^&-]&/['1Y'6T()*,-/148M&3V&/Z%-\%,^$,_$+`$*`$*a$)a$)a$)b$)b$)C(b$)C(a%)C(a%)C(`%*C(`&*C(_&,B)^'.@+])B[+@X)BT'DO%FO%FO%FO%FO%@BCCCCCC %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%+E(`%)E(b%(E(c%(E(c%(E(c%(E(c%(E(cEE%(E(c%(E(c%(E(c%(E(c%(E(c%)E(b%+E(`%%%%%%%%%%+`%)b%(c%(c%(c%(c%(c%(c %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%+`%)b%(c%(c%(c%(c%(c%(c 0-+)('&&(/%(0%'0$(2$(5$(c$(c$)c$)c$)c%)c%*b&+`&''()+-06`bcccccc %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%+=.`%)>.b%(@.c%(A/c%(C.c%(E.c%(C1cA>%(<=c%(:@c%(8Dc%(5Hc%(3:Q.c%)1:S-b%DT%AV%?W%=Y%:Z%8\%6]%4_%1`%/a%-b%+c%*c%)c%(c%(c%(c%%% %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%%+`%)b%(c%(c%(c%(c%(c%(c%%%%%%%%%%%%%%%%%%% %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%+[%)V%(R%(M%(H%(D%(?:51,'%%%%%'+/37;%(?%(C%(G%(K%(P%(T%)X%+\%%%%%%%%%%+`%)b%(c%(c%(c%(c%(c%(c %(c%(c%(c%(c%(c%(c%)b%+`%%%%%%%%%+X%)V%(S%(Q%(N%(L%(IGDB?=:89c59c39c0:c.9c+:c):b&;`%%%%%%%`bcccccc B<8520.,+*):U(6Y'4['1^&0`&.a%-b%,c%+d%*e$*e$*e$*e$*e$*e%)e%*d%+c%,b&-a&/`'0^'2\(3Y)7U*+,-/0247;? %(c%(c%(c%(c%(c%(c%)b%*a%%%%%%%%%%*F)c%)F)c%(F)c%(F)c%(F)c%(F)c%(F)c%(F)cF)cF)cF)cF*cF+bF,aF.`F0^GGHHIJLNR B<8520.,+*):U(6Y'4['6^&:`&;a%=b%.8*c%+:)d%*:)e$*:)e$*:)e$*9*e$*8+e$*7,e%)6,e%*4.d%+2/c%0^%*=0]%+<1[%,;1Y&.93V&EO'CO(AO)@O+c(?c,?c1?c5?c:>b?>`CHLQVZ_`bcccccc ccccccb`_[VQMHC?:5G`1Fb,Gc'Gc%Ec%@c%%%2c%5c%9c%>c(?c,?b1?`5?_:>[?CHHC?:5G`1Fb,Gc'Gc%Ec%@c%c(?c,?c1?c5?c:>b?>`CHLQVZ_`bcccccc %%%(c%(c%(c%(c%)c%*c%,b%.a%0_%1]%3[%5Y%7W%9U%+1.S%)3.Q%(5.O%(6/M%(8/K%(:.I6b%(=c?:cA6c@%(>%(<%(:=c%(8Ac%(6Ec%(46N.c%)26P.b%AR%?T%=U%;W%:Y%8[%6]%4^%2`%0a%.b%,c%*c%)c%(c%(c%(c%%% ccccccba`^\YWUS%(P%(N%(L%(I%(G%(E9b%)C9c%+A9c%Sc%Pc%Nc%Lc%%%%Mc%Oc%+C4c%)E4c%(H3c%(J4c%(L4b%(N%(Q%(SUXZ\^`abcccccc %%%/M%0M%2M%4M%6M%8Y%:\%;]%(.4^%(04_%(24`%(35`%(55a%(74a%(94a%(:5a%(<5a%(>4a%(@4a%(A5a%(C5a%(E5a%(F6a%(H5a%)J5a%)L%*N%+O%,Q%-S%1U%?W%?Y%?[%?\%?^` %%%%%%%(c%(c%(c%(c%(c%(c%(c%(c ifc`]ZWTQNKHEB?<9630-*'%%%%%% %(c%(c%(c%(c%(c%(c%(c%(c%%%%%% ^[YX$^X#]X#]^_a %%%%% _:>[?CHHC?:5G`1Fb,Gc'Gc%Ec%@c%c(?c,?c1?c5?c:>b?>`CHLQVZ_`bcccccc %%%(c%(c%(c%(c%)c%*c%,b%.a%0_%1]%3[%5Y%7W%9U%+1.S%)3.Q%(5.O%(6/M%(8/K%(:.I6b%(=c?:cA6c@%(>%(<%(:=c%(8Ac%(6Ec%(46N.c%)26P.b%AR%?T%=U%;W%:Y%8[%6]%4^%2`%0a%.b%,c%*c%)c%(c%(c%(c%%% ccccccba`^\YWUS%(P%(N%(L%(I%(G%(E9b%)C9c%+A9c%Sc%Pc%Nc%Lc%%%%Mc%Oc%+C4c%)E4c%(H3c%(J4c%(L4b%(N%(Q%(SUXZ\^`abcccccc %%%/M%0M%2M%4M%6M%8Y%:\%;]%(.4^%(04_%(24`%(35`%(55a%(74a%(94a%(:5a%(<5a%(>4a%(@4a%(A5a%(C5a%(E5a%(F6a%(H5a%)J5a%)L%*N%+O%,Q%-S%1U%?W26 FONTSY DOC()FONTSY BASB*+,-./012FONTCODECOM3456789:;<=>?@ABFONTCODECOMVCDEFGHIJKLMFONTCODEBASNOPQRSTUVWXYZ[\]FONTCODEBASCHARFLIPCOM^_`abcdefghijklmCHARFLIPCOM noCHARFLIPBAS#pqrstCLARE FNT3uvwxyz{CLS $$$Gothic (Old English) # = cent sign 132 columns required @ 1 3 >!~>#=&;*m9-J9-J:*R<&a>#r ~|zyxw#v"v!~|zyxw#v"v! ONMLKJ(gI(hH(iG(jF(kE(j93i92hD(gE(fF(eG(dH(dI%f C#ZE$XF%VG%V)iG&V(hG'U(gG'U(f99G(U(dF)U(d99C*U(eE'U(eF%T(fH"S)gJ2hM.j i!zF5iE7iD9hC;gB=gA?f@*_"e)?*`"d)~>*a+|=*`+{<*^,y;*[.x:*W1w9*S3w:(N6v;&J7v<$F9v="B7u>7u=4u;1u9/v9+v9)C3w9(D3x9'E9'F;%G v!v"w#xyz| H!yGFEDCB"~A"@"?">"="<";":" 9":";"<"=">"?"@"A"B"~CDEFG @@A4!A4"@5#?678: QSTTTTTTTTTTTTUW >>=;99:<> CBA@?>(r=(s<(t;(s:(r9(q:&p;$o<"n="m>?@A 9!t:"u;"u<=>?@AB 9'b:&A$c:'E$d;'I#e;'L#f<'O"r<'Q"s;'S"r;'T"q:'V"p:'W"o9'X"n9'Y"m9&Z"l9&["k9&\:&];&^<&_ C!qB$qA'q@(q?(Z!q>(Y#q=(X%q<(W'q;(V)q:(U(^"q9(T(_"q:&S(`"q;$R(a"q<"Q(b"q="P(c"p>9d?7e@5fA3g VVVWWWX'`X'bX'dY'fY'hY'jY'lX'n=!W(p<#W'r;:9:;<#W=!Y C!SB$TA'U(q@(V(p?(W(o>(X(o=(Y(o<(Z(n;([(n:(\(n9(](n:&\(n;$[(n<"Z(o="Y(o>Bp?@p@>sA(_"r=(`"s<(a"t;(b"s:(a$r9(`&q:&_(p;$^)o<"](n="\(m>El?Ck@AkA?m 9"q:"q;"q<%q=,q>3q?7q@=qA?qB"N5rC"U1rD"[.r`+se)si'tl&tosv B0_A3^@6]?8\>:[=(V#Z(r<(X)s;(X(t:(W(s9(V(r:&U(q;$T(p<"S(o="R)n>"Q(Z#m?9[@7\A5]B3_ B!WA$V@'U?(T>(S=(R(s<(Q(t;(P(s:(O(r9(P&q:&Q$p;$R"o<"S"n="T"m>"U"l?@ABC >!^>#^=&];*[9-Y9-Y:*Z<&\>#^ @@"_A"_4!A#^4"@%\5#?'Z61Z7/[8-]:*_ |lkjihi>!U'j'>#Q/k%=&N5l#;*L8m!9-J<9-I#X/:*H"Z.~<&\,}>#^+|@!_+{`*zabbcc 9;<===='d<)e;/f;(H'g:(M(g:(S(g9(Y(g9(\59(\69(\(h*:'\(n*<&\(t)?$\(zC"\(\({\(t\(m\(f\XQJC?=;:9999:< 9!v:#x;#{;%Z!|<%[#}<&\%~<']&~=']'~='](~=(])}=(]*}=)\+}=`~=)GW=*HW=*JV=+LV=+OV=+i"}=,i"}=,i"}=,i"}=,i"}=,h#|=+g$|=+f%|=+e&{<,d'{<+c(z;,b)z;,`(i"y:,_)i"y9-]*j"x:,[+j#v<)Y-j%u>'W.k?%U/lA#R1mD#L5nF9qI ZTOLIGE7a"mC4b$rA2c%v@0c'w!y?/c(x!{>.b*y!}=^~<-JR;,KR:,L:+M:*N9*~9)}9(|9({9'z9'y9&x9&w9%v9%u9%t:$t:$t;#t;$t<#u=#v>"w?"x@"z 9!v:#x;#{;%Z!|<%[#}<&\%~<']&~=']'~='](~=(])}=(]*}=)\+}=`~=)GW=*HW=*JV=+LV=+OV=+}=,}=,|=,{=,{=,z=+y=+x=+w<,v<+t;,s;,q:,p9-n:,l<)j>'h?%eA#bD#^G%XL 9!v9#x:${;$Z!|<$[#}=%\%~=&]&~=']'~=(](~=)])}>(]*}>)\+}>_~=a=+IV=+KU<,MU;,PU;,_#}:-`$|:,_'|:,^*|9-]*|9,\*|9,[*}9,Z*}9+\(~9+^&~9+_$9+a"9+9+;)='?&A%CE 9!v9#x:${;$Z!|<$[#}=%\%~=&]&~=']'~=(](~=)])}=*]*}>)\+}>_~?_@_A_C_E`_#}`$|_'|^*|]*|\*|[*}Z*}\(~^&~_$`" ZTOLIGE7a"mC4b$rA2c%v@0c'w!y?/c(x!{>.b*y!}=^~<-JR;,KR:,L:+M:*N9*]"~9)^#}9(_%|9(`&{9'a%g"z9'a&i"y9&b&j#x9&b'k#w9%b'l#v9%b(m#u:$b(n#t:$b(n#t;#b(n#t;$a(n#t<#a(o#t="`(o#u>"_(o#v?"])p#wA![*q#xB"Y*s#zD"V+u#|F#P0x#}I3{ 9#v;$x<%{<'Z!|<([#}=(\%~=(]&~=)]'~=)](~<)])}<)]*}<(\+}<;;v;/M*x:,R&{:)U%b!|9(W%`"}9'Y(~9&[$~:$~:$~;$m(}<$d5}=$_=}>%WF~@^B]DDx(G:{'L.~& 9#v;$x<%{<'Z!|<([#}=(\%~=(]&~=)]'~=)](~<)])}<)]*}<(\+};7:0:+999:; 9!v9#x:${;$Z!|<$[#}<&\%~=&]&~>&]'~>'](~?'])}?(]*}?(\+}?^~>)HV>*IV=+KU=+MU<+PU<+};,|;+|:,}:+~:*9*9*9)9::;;<=>@BD 9"v;#x<${=$Z!|=&[#}='\%~=(]&~=)]'~=)](~=*])}=*]*}<+\+};b~9e:edBc}|Z!{[#z\%y]&x]'w](v>!])u=#]*t<%\+s;:9:;<=%[*x>#[)z?!\(|]'~^&_%~`%~c#}>!f!}=#|<%|;:9:;<=%>#?! 9"]#:#_$;$`%<%a&<&a'=&a(='`*====*v<+r<,o;-l9/i;-f=+c?)`@(]C$ZE!W4|T4{Q4zN4zK4zH4zE4zB4z?4z<4{;2{:999+~9*:(<&>$@# ZUOLIGE7b"mC4c#p"sA2c%q"w@0c&r"y?/c's"{>.b)t"}=<,K;,L;+M:+O:*S9*}:(|<%{=#z>"z?"yA"xB"wD"uE#tG$sH&qJ'nL(kN+gPSUX[ 9#v;$x<%{<'Z!|<([#}=(\%~=(]&~=)]'~=)](~<)])}<)]*}<(\+}.b)t"}=<,I;,J;+J:+J$O:*J%S9*J&}:(I'|<%H){=#F+z>"D,z?0y>/x<0w;/u:.t9-G$s9+H&q9)J'n9(L(k9(N+g9(P:'S;&U<%X=$[>$`?A 9#v;$x<%{<'Z!|<([#}=(\%~=(]&~=)]'~=)](~<)])}<)]*}<(\+}-^0y<.`-y91_-x:._,w:-^,k"w;+^,n"v<(],q"v=&],t=%\,v>"\,v?"[,w@"Z,wA"Y-x)B#X-y(C#V-z'D$S.|&F9~%H4$ Z)zT5{O?}LE~IKGOE7m+C4r(A2a"v%@0b#y#?/c${#>.c%}"=-c&~"<-c';,b(:\:+FQ~:*GQ}9*HQ|9)IQ{9(J9(z9'z9'y9&y9&y9%z9%z9%z:${:${;#|;$}<#}=#~>"?"@" 9"_#:$`%;%a&<%b&<&b'<'b(='a*====<;;:9:;<=>&?$@"A"B"CA?=;9:-;*<'=$>"? 9"_#:$`%;%a&<%a'<&`)<=====<*;+;,:-9.:;<=>?@AB"wC#gDFHJMAP." 9"_#:$`%;%a&<%b&<&b'<'b(='a*====<;;:9:,_;+`<)a&='b&>&b'?$b(@#a*A?=;99:(^*;%_(<"`'="a&>"b&?"d%@#gA$vB'rC+dDFHJMAP.T& 9#|:%~;&;'<'U#<(V%;)W&;)X'~;*Y(|:+Z)y:+Z*v9,Z,r?&[,nD&[,jJ&[P&ZVZWSOK=lG@rCDx>8\,}<5^*};1_)}:/a(}9-c'}9+e&~9*g%~9)j#~:(;'<&?% 9![#9#]$:$^%;$^' ";&^("#;'^)#$<']+$%<%%<%&<&&<&&<&';&';+z&(:,|&(9,~&);*%*=(~%*?%~%*A#}$+C#}$+E#}#+G#|#+I#|",K#|!,A -=!+;")9#'7$%5%#30 (7*2.+ 9#p;#l<$j=%i%t=&h#v>'h"w>*h!x>+x?(I"x?)K"x?)M"w?*O"\%w?*Q"^'v?+S"_(v?+U"_)u?+W"_)u?+Y"_)u?,["_)u?,]+t?,_)t?,_)t?,_)t>-_)u>-_*u>-_)i"u=._)k"v3^=4_<6`;(Q!a:(Q"`9(R!_:&R"^;$S!]<#S"\=#T![>=<;:9; zy@?>=<;(_"y:(`"z9(a:&`;$_<"^="]>"\?@AB EDCBA@(]?(^>(_=(`<(a;(`:(_9(^:(];(\<([=(Z>(Z?%\ @?>y>@w=Bu"c=<;:9; EDCBA@(O"]?(P"^>(Q"_=(R"`<(S"a;(T"`:(U"_9(V"^:(W"];(X"\<(Y=(Z>([?%\ \\\\&)=%*<$';(_#':(`"'9(a!':&` ';$_!%<"^"#="]#">"\$%&' z=(_<(`;(a:(`9(_:&^;$]<"\="[>"Z?@AB $!a##`"! !"##;(_$!:(`9(a:&`;$_<"^="]>"\?@AB @?>=<;(_:(`9(a:&`;$_<"^$!="]##>"\"! !"# _"I)]@2^C.` ddddddd=<;:9:&d;$e<"f="g>"hi a`=<;:9:;<=>"a>#`=;99;= a`A@?>=<(b;(c:(c9(b:&a;$`="_>$]@$ZB&VDGJ b>=<;:9(b:;<="b>=<;:9(b;<="b>?@AB 9!c:"c;#c:%b9&a<&_A%\D%SHB?=<1V;)Y:&]9%`9$`9#a:"c a`'(=&)<%*;$+:#,9"':!'; '"a#"?"`$%&' 9#^9%^:&^:%@"];%C"];%E"];&G"];&J"];'L"];'N"];'Q"];'S"];'V"^;'X"^:(Z"_9)\"_:(^<%a>#c "?"`$%&Heron version 1.0 (C) 1985 Merlin R. Null @ 1 3 2#L0'>/);0'>2#L XUSZ\XUSZ\ >$P>$P>$P>$P>$P000>$P>$P>$P>$P>$P>$P000>$P>$P>$P>$P>$P R5'O3)M2*K(X1&J&[0%I%]0$H%^0$G%^---0$G%^0$F%^0%E%]1&D%[2(A'V42V6.V9 0#V0&T0)R2*Q&[5*P%]8*P$^;*P%]>*Q&[6&A*R4*D*T2.G*V1&;&J0%=%M0$>$P0%=%S1&;&V2.Y4*\6&_ :7.R52O3(A(M2&D&K(W1%F+Z0%G'\0$E(]0$C)^0$A,]0$?'I%\0$='J&Z0%;'K(W1%9'M2,O4)R32&91%;1$> \ZSUX >620/S0'[0$^ 0$^0'[0/S26> GF=$F&Q<&F&P<&G$P='G$N?'G$L:$A0T888:$A0T?'G$L='G$N<&G$P<&F&P=$F&QFG GGGGGG<<ADGJMPSVY]_ D>:7.M5*S3(W2&Z1%\0%]0$^0$^0%]1%\2&Z3(W5*S7.M:>D Z0"Z0#Z00000 0$S0&R0(Q0*W0$5'Z0$7'\0$9']0$;'^0$='^0$?'^0$A']0$C'\0$E'Z0$G'X0$I'U0$K0%M0'O 9%T6(T4*T3'X2%[1%\0%]0$G$^0$G$^0$G$^0$G$^0$F&^0%E(]1%C%J%[2'@'K'Y33L5/N8)Q =====$C=$F=$I=$L=$O0"=$R0#=$U0000#=0"==== :&J7)J5+J3(K%^2&L%^1%M%^0%N%^0$O$^0$O$^0$O$^0$O$^0$O$^0%N%^1&L&^2'I(^4)F*^67^82^< =964*B)R2(F'W1&I%[0%J%]0$K$^0$K$^0$K$^0%J%]1%I%[2'F'W3*B*W55W8< []^0+^00^04^9/^>.^B.^F.^J.^N.^RVZ^ :7.R52O3(A(M2&C'K(W1%F+Z0%G'\0$H%]0$H$^0$H$^0$H$^0$H$^0$H%]0%G'\1%F+Z2&C'K(W3(A(M52O7.R: N8%J5(H3*F)V2'E&Z1%D%\0%C%]0$C$^0$C$^0$C$^0%C%]1%D%\2&E&Z3)G(V57; 3#L1'J0)I1'J3#L 3#L1'J*/I,,J/'L FDB@'I>'K<'M:'O8'Q6'S4'U2'W2%Y2#[ @$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N@$N 2#[2%Y2'W4'U6'S8'Q:'O<'M>'K@'IBDF RRRWZ3#=#\1';)]0):-^1';.^3#=#C'^F%]G&\H'[J(XLNQ >:75*S3(W2&F&Z1%C,\0%A0]0$@'K'^0$?%N%^0$?$O$^0$?$O$^0$?%N%^0%@'K'^0'>5]1&=6\3$;8Z:&W:)S;>B 000000#50":?AA$IA$NA$SA$XA$SA$NA$IA?0":0#500000 0"`0#_0000$I$^0$I$^0$I$^0$I$^0$I$^0$I$^0$I$^0$I$^0$I$^0$I%]0%H([0'F-X1*B37M61R: C>:7-N5*S3(W2&Z1%\0%]0$^0$^0$^0$^0%]1%\2&Z3(X5)U7-R:*R='R 0"`0#_0000$^0$^0$^0$^0$^0$^0$^0$^0%]1%\2'Y3*U5-P8:7-N5*S3(W2&Z1%\0%]0$^0$^0$^0$?'^0%A%]1%B$\2&B$[3'B$Y5(B$U42P42P42P 0"`0#_0000#H$_0"H$`HHHHHHH0"H$`0#H$_0000#_0"` 0"`0#_0000#_0"` 8532':1&<000000012'`3*_58<_` 0"`0#_0000#F'_0"D+`B'J@'L>'N<'P:'R8'T'_0"6'V'^0#4'X0)Z0'\0%^0#_0 0"`0#_0000$_0$`0000000000000 0"`0#_0000#P0"LHD@<8400048<@DH0"L0#P0000#_0"` 0"`0#_0000#Y0"VSPMJGDA>;852*`0)_0000#_0"` C<85/N3*U2'Y1%\0%]0$^0$^0$^0$^0$^0%]1%\2'Y3*U5/N8:75+_3(`2100000123(`5+_7:>_` `_\XTP._L.`HD@<8400048<@DHL.`P._TX]_` `_\XTP._L.`HD@<8400048.`<._@.\D.XHL2_L.`HD@<8400048<@DHL.`P._TX\_` 0"`0#_0&\0)Y0,V0#5*S*_0"8*P*`;*M>*JADA?)J;*M0"8*P*`0#5*S*_0,V0)Y0&\0#_0"` `_]ZWT*_Q*`NK0"H0#E0000#E0"HKNQ*`T*_WZ]_` 0#[0&]0)^0,^0$5*^0$8*^0$;*^0$>*^0$A*^0$D*^0$G*^0$J*^0$M*^0$P*^0$S*^0$V0$Y0%\0'_ 0000$^0$^0$^ _\YVSPMJGDA>;852000 0$^0$^0$^000 RRRSUWY[][YWUSRRR  XUSZ\ 7%E4+D2/D1';'E$J0%>%K0$?$L0$?$L0$?$L0$?$K0%>%H1&<&D32100 `_0002&I1%J0%K0$L0$L0$L0%K1&I2(F4*B69= =964*B2(F1&I0%K0$L0$L0$L0$L0$L0%E$K1%C2)B3(C5&E =964*B2(F1&I0%K0$L0$L0$L0%K1%J%`2&I%_00000 :753(?$E2&?$H1%?$J0%?$K0$?$L0$?$L0$?$L0%?$K1&?$J2(?$G3'?5%?8"? 0"L0#L0000#L$Z0"L$]L$_L$`L$`L$X$`V(_UVX (&@%,:#05"'-4F!%0.I!$0&7%K!$/%7$L!$.%7$L!$.$7$L!$.$7$L!$.$7$L!$.$7%K!$.$8%J!%-%9(F"&+&;3O#-=$+@'J'%LO 0"`0#_0000#H0"IJKLLK0"H0#D00000 0"L"W0#L#U0@T0@U0@W00 .,*)((((%L"V)'L#T*FS,DT/AV 0"`0#_0000#>0"<:8'C6'E'N0"4'G0)I0'K0%M0#N0 0"^0#^00000 0"N0#M0000#I0"JKLK0"I0#F0000#H0"JKLJ0"G0#B00000 0"N0#M0000#I0"JKLLK0"I0#D00000 9642(F1&I0%K0$L0$L0$L0%K1&I2(F469 "N #M #2&H "1%J0%K0$L0$L0$L0%K1&I2(F4)C69< <964)C2(F1&I0%K0$L0$L0$L0%K "1%J #2&H #M "N 0"N0#M0000#F0"HIJKLG#LEDEG 0)E0)C0)A1&@&I0%?%K0$>%L0$=%L0%<%K1&:&I2-G4)G6%G LLL7421'L0%L0$L0$L1%L3 NM8532100001&N2'M00000 NMHD@<.M8.N400048.N<.M@DHMN NMHD@<.M8.N400048.N<.M@@<8.M4.N00048.N<.M@DHMN 0"N0#M0%K0'I0)G0#4'E'M0"6'C'N8'A:<:8'A0"6'C'N0#4'E'M0)G0'I0%K0#M0"N NM "I #E &A *=-M!-9-N%-5)-159-N=-MAEIMN 0%I0'K0)L0+L0$6'L0$8'L0$:'L0$<'L0$>'L0$@'L0$B'L0$D'L0$F0$H0%J0'L HGE635J15L0'[0$^ 000 0$^0'[15L35J6EGH WWWZ]^^]\[YWUTSSSSTUWZ 00#>0"<:8'C6'E'N0"4'G0)I0'K0%M0#N0 0"^0#^00000 0"N0#M0000#I0"JKLK0"I0#F0000#H0"JKLJ0"G0#B00000 0"N0#M0000#I0"JKLLK0"I0#D00000 9642(F1&I0%K0$L0$L0$L0%K1&I2(F469 "N #M #2&H "1%J0%K0$L0$L0$L0%K1&I2(F4)C69< <964)C2(F1&I0%K0$L0$L0$L0%K "1%J Kiwi version 1.0 (C) 1985 Merlin R. Null @ 1 3 3#Q1'E0)<0)<1'E3#Q VTSYZ\VTSYZ\ <(N<(N<(N<(N00000<(N<(N<(N<(N00000<(N<(N<(N<(N 0-Q0-M0-K0-I0-H1*G,V0)G)Y0(G(Z,,,,,0(G(Z0)F)Y0,C,W1=U2;U47U63U:+U 0#V0&T0)R0,Q0/P'[20P&\50P'[80Q;0R>0T6&A0V4*D2.G10J0';'M0&<&P0';'S10V2.Y4*\6&_ :7.R52O36M2*@*K1)B0)C0W0(E,Y0(C-Z0(A0Y0(?4W0(=+J0);+K13M20O4,R321);1(<1(>1'@ \ZYSTV ?964210Q0*X0$^0#_ 0#_0$^0*X10Q2469? FD<$D*R:(D*P:(E(P<(E(N>:$@2T8888:$@2T><(E(N:(E(P:(D*P<$D*RDF EEEEEEEE88888EEEEEEEE 310*+- DDDDDDDDDDDDDDDDDDDD 310013 00000258;>ADGJMPSVZ\_ D>:7532M2-S1*W0)Y0(Z0(Z0)Y1*W2-S32M57:>D Y0#Y0$Y0000000 0)Q0+P0-O0/N01M03W0(:+Y0(<+Z0(>+Z0(@+Z0(B+Y0(D+X0(F+U0(H0(J0)L0+N0+P 9)P6,P4.P3/P20P1*W0)Y0(E(Z0(E(Z0(E(Z0(E(Z0)D*Y0+B.W1235J51L8+O <<<<<<<(F<(I0"<(L0#<(O000000#<0"<<<<< :&J7)J5+J3-J2.J1*K)Z0)L)Z0(M(Z0(M(Z0(M(Z0(M(Z0(M(Z0)L)Z1+I+Z2AZ4=Z69Z85Z; ;74210,C+V0)F)Y0(G(Z0(G(Z0(G(Y0)F)W0,C,U1=U2;U47U71U; WWYZZ0+Z00Z04Z08Z06ZB6ZFJNRVZ :70P54M321*C0)E,W0(F)Y0(F(Z0(F(Z0(F(Z0(F(Z0(F)Y0)E,W1*C2354M70P: N7'J4*G2,E1-D0.C,V0+C)Y0)C(Z0(C(Z0(C(Z0)C)Y0,D+V1247; 3"K1&I0(H0(H1&I3"K 3#I1'G0)F*/F+-G-)I FDB@><+I:+K8+M6+O4+Q2+S2)U2'W2%Y2#[ <(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N<(N 2#[2%Y2'W2)U2+S4+Q6+O8+M:+K<+I>@BDF PPPPPU3#=#X1';)Y0):-Z0):/Z1';/Z3#=#B)ZC)ZD)YE)XF*UGHJLO =96421-T0*D*X0)A0Y0(?4Z0(>6Z0(=8Z0(=)L)Z0(=(M(Z0(=(M(Z0(=)L)Z0(>6Z0(?5Z0(>6Z0(=7Y0(;9X:)U:;<>A 000000000$90#<<<(H<(M<(R<(M<(H<0#<0$900000000 0#_0$^000000(G(Z0(G(Z0(G(Z0(G(Z0(G(Z0(G(Z0(G)Y0)F,W0,C0138M62Q; C>:7531N2-S1+W0)Y0(Z0(Z0(Z0(Z0)Y1+W2-T32Q50Q7.Q:+Q>'Q 0#_0$^000000(Z0(Z0(Z0(Z0(Z0(Z0(Z0(Z0)Y1*W2-S31N57:>C 0#_0$^000000(G(Z0(G(Z0(G(Z0(G(Z0(G(Z0(G(Z0(G(Z0(F*Z0(D.Z0(D.Z0(Z0)Y0+W0+W 0#_0$^000000$G(Z0#G(ZG(ZG(ZG(ZG(ZG(ZF*ZD.ZD.ZZYWW C>:7531N2-S1*W0)Y0(Z0(Z0(Z0(Z0)Y1*C#V2-B$R33M33M33M33M33M 0#_0$^000000$F(^0#F(_FFFF0#F(_0$F(^000000$^0#_ 0#_0$^000000$^0#_ 853210000000*_1,^2358<^_ 0#_0$^000000$D+^0#B/_@>+J<+L:+N+^0#8+P+]0$6+R0/T0-V0+X0)Z0']0$^0 0#_0$^000000(^0(_000000000000 0#_0$^000000$I0#EA=951111159=A0#E0$I000000$^0#_ 0#_0$^000000$V0#SPMJGDA>;8520/_0,^000000$^0#_ C>:7531N2-S1*W0)Y0(Z0(Z0(Z0(Z0)Y1*W2-S31N57:>C 0#_0$^000000$E(Z0#E(ZE(ZE(ZE(ZE(ZE(ZE)YE,VFGHKP C>:(#7($5(%31N(&2-S('1*W(1Y)/Z)/Z)/Z)/Z(1Y'(1*W&(2-S%(31N%'5%&7%%:%$>%#C 0#_0$^000000$E(Z0#E(ZE(ZE(ZA,Z=0Z94Z59Y0AV02F0.G0*H0&K0$P0 0-Q0-M0-K0-I0-H1*G,V0)G)Y0(G(Z0(G(Z0(G(Z0(G(Z0)F)Y0,C,W1=U2;U47U63U:+U WWYZZZZ0#Z0$Z000000$Z0#ZZZZZYWW _^>:7532-^1*_0000001*_2-^357:>^_ _^[WSOKG5^C5_?;730000037;?C5_G5^KOSW[^_ _^[WSOKG5^C5_?;7300000375_;5^?5[CGKKG5^C5_?;730000037;?C5_G5^KOSW[^_ 0#_0$^0'[0*X0-U00R03O0$60L0^0#9@_;85200000 0(Z0(Z0(Z0(Z0(Z00000 OOOOOQSUWYWUSQOOOOO  VTSYZ\ 7(I4.H22H14I06K0)=)L0(>(L0(>(L0(>(L0(>(L0)=)H01321000 _^000002)I1)J0)K0(L0(L0(L0)K0*J1-F2469= =96421-F0*J0)K0(L0(L0(L0(L0(L0)K0*H1-F2,E4*E6(F8&H =96421-F0*J0)K0(L0(L0(L0)K1)J)_2)I)^0000000 <96421-?0*?(J0)?(K0(?(L0(?(L0(?(L0(?(L0(?(L0)?(K0*?(J1+?2*?4(?6&?8$? 0#F0$F000000$F(W0#F(ZF(\F(\F(\F(U$\SRSU ')B$/<"37! ).6I (/3K (-+9(L (,*9(L (,)9(L (,(9(L (,(9(L (,(9(L (,(9)K (,(:)J )+);!2=5T"0?#.B)N&(PT 0#_0$^000000$H0#IJKLLK0#H0$C0000000 0#O0$O$\0DZ0DY0DY0DZ0D\00 /,*('&&&&&)O&,O$\'MZ(LY*JY,HZ/E\ 0#_0$^000000$>0#<:86+E+Q0#4+G0-I0+K0)M0'O0%P0$Q0 0#]0$]0000000 0#Q0$P000000$F0#HJKL0#L0$J000000$F0#HJKL0#L0$J0000000 0#Q0$P000000$F0#HJKL0#L0$J0000000 =96421-F0*J0)K0(L0(L0(L0)K0*J1-F2469= #M $L  $.)E #-)F,)G,(H,(H,(H,)G,*F--B.0259 9520.--B,*F,)G,(H,(H,(H,)G #-)F $.)E $L #M 0#Q0$P000000$F0#HIJKLLG$LEDEG 0-H0-F0-E0-D0-C2'B(L1&A(M0&@(N0&?(N0&>(N0&=(N0'<(M0(;(K02G10G3-G5*G7&G LLL742100+L0)L0(L0(L1)L3 QP<97532100001*Q2,P0000000 QPLHD@<85P45Q0000045Q85P<@DHLPQ QPLHD@<85P45Q0000045Q85P<<8405H01L0-P01Q045Q85P<@DHLPQ 0#Q0$P0%O0'M0)K0+I0-G0/E0$6+C+P0#84Q:<:0#84Q0$6+C+P0/E0-G0+I0)K0'M0%O0$P0#Q QPL #H $D &@ )< -85P 145Q!$(,045Q85P<@DHLPQ 0(I0*I0,K0.L00L02L0(9+L0(;+L0(=+L0(?+L0(A0(C0(E0(G0)I0+K0+M GFD63107K05M0)X0'Z0$^0#_ 00000 0#_0$^0'Z0)X05M07K136DFG SSSSVYZZYXWUSQPOOOOPQSVZ 00 0#Q0$P000000$F0#HJKL0#L0$J0000000 =96421-F0*J0)K0(L0(L0(L0)K0*J1-F2469= #M $L  Raven version 1.0 (C) 1985 Merlin R. Null @ 1 3 [YWW$^W"^^[YWW$^W"^^ ^W"^W$^WY[ DB5&B*S3*B*Q3+C(P3-C(N5-C(L:<1&>2W////1&>2W<:5-C(L3-C(N3+C(P3*B*Q5&B*SBD ' "' $' "$ BBBBBBBBBBBBBBBBBBBBB '''''' ''''''),/258;>ADGJMPSVY\_be 40-+)('/Y'-['+]'*^'*^'*^'*^'*^'+]'-['/Y()+-04 TRPNPRTVX'''''' '5U'8U':U'U'*9-['*;,]'*=+^'*>+^'*?+^'*@+^'*A+^'*B+^'*C+]'*D,['*E'*F'*G'*I'*K'*N 0*U--U+/U)1U(2U'3U'-['+]'*^'*C*^'*C*^'*C*^'*C*^'*C*^'+B,]'-@0['()+-9J03M 44444444*@4*C4*F4*I4*L4*O4*R''''''444 0)E-,E+.E)0E(1E'2E'-H,^'+J+^'*K*^'*K*^'*K*^'*K*^'*K*^'*K*^'+J+^'-H-^'N^(L^)J^+F^-B^0<^ 0-+)(''-@*['+B*]'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'+B+]'-@-['FU(DU)BU+>U-:U04U ^^'$^'(^',^'0^'4^'8^*9^.9^29^69^:9^>9^B9^FJNRVZ^ 0-8M+<:-H8-J6-L4-N2-P0-R.-T,-V*-X(-Z',\'*^'(`'&b'$d'"f 6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O6*O '"f'$d'&b'(`'*^',\(-Z*-X,-V.-T0-R2-P4-N6-L8-J:-H<>@BD RRRRRR['*7-]'*70^'*72^'*74^'*75^'*76^@-^B+^C+]C-[CDEGIL '''''',2777*D7*J7*P7*P7*J7*D772,'''''' '''''''*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'+B,]'-@0['()+-9J03M 0-+)(''-Z'+\'*]'*]'*]'*]'*]'*]'+\'-Z'3T(2T)1T+/T--T0*T '''''''*^'*^'*^'*^'*^'*^'*^'*^'+]'-['()+-0 '''''''*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*^'*^'*^'*^ ''''''C*^C*^C*^C*^C*^C*^C*^C*^C*^C*^C*^C*^^^^^ 0-+)(''-['+]'*^'*^'*^'*^'*?*^'*?*^'*?*^'*?*^'+?*]'-?*['BU(AU)@U+>U-<:-I8-K6-M4-O2-Q0-S.-U,-W*-Y(-[',]'*_'(a'&c'$e' ''''''''''''''''''''''' ''''''KGC?;73/+''''+/37;?CGK'''''' ''''''SPMJGDA>;852/,)'''''' 0-+)(''-['+]'*^'*^'*^'*^'*^'*^'*^'+]'-['()+-0 ''''''B*^B*^B*^B*^B*^B*^B*^B*^B*^B+]B-[BCDFHK 0-+)(''-['+]'*^'*^'*:"^'*9%^'*8(^'*7+^'*6+^'+5+]'8['()+-.-,+-/1 ''''''A*^A*^A*^A*^A*^?,^;0^74^38^/=]+C['8A'4B'0C',E'(G'$J 0*L--I+/G)1E(2D'3C'-C-['+C+]'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'+B+]'-@-['FU(DU)BU+>U-:U04U ^^^^^^^^^^''''''^^^^^^^^^^ 0-+)('''''''''''''()+-0 b]XSNID?:50+''''''+05:?DINSX]b b]XSNID?:50+''''''+05:??:50+''''''+05:?DINSX]b '$d''a'*^'-['0X'3U*3R-3O03L33I69<<9633I03L-3O*3R'3U'0X'-['*^''a'$d da^[XUROLIF''''''FILORUX[^ad '*^'-^'0^'3^'6^'9^'<^'*42^'*72^'*:2^'*=2^'*@2^'*C2^'*F2^'*I2^'*L'*O'*R'*U'*X'*['*^ '''''''*^'*^'*^'*^'*^'*^ eb_\YVSPMJGDA>;852/,)'''''' '*^'*^'*^'*^'*^'*^'''''' [YWW$^W"^^ '''''' *6+^'+5+]'8['()+-.-,+-/1 ''''''A*^A*^A*^A*^A*^?,^;0^74^38^/=]+C['8A'4B'0C',E'(G'$J 0*L--I+/G)1E(2D'3C'-C-['+C+]'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'*C*^'+B+]'-@-['FU(DU)BU+>U-:U04U ^^^^^^^^^^''''''^^^^^^^^^^ 0-+)('''''''''''''()+-0 b]XSNID?:pCopyright 1983 Robert C. KuhmanHEADLINE.COM v1.00 as of 11/12/83 (Print title block HEADLINE.) Enter Control-C to ABORT. Any key to continue, else '?' for HELP. $ H E A D L I N E - H E L P --------------------------- Print a large (5x7) matrix block title. Do up to 7 lines of up to 10 characters. Both UPPER/lower case characters are OK. Numbers and punctuation marks are OK. Control codes are entered as "^+letter". "ESCape" is entered as "^[" (two chars). Press "BACKSPACE" to backup 1 character. Do "Control-X" to backup and redo line. Enter "Control-C" to ABORT this program. $ H E A D L I N E M E S S A G E =============================== $Line length Ruler ||1234567890|| $ || || HEADLINE - #00: ||$ Too long! Try again, press any key. $ Output complete, back to CP/M. $!9"1:] "͸?™͸ßrât͸>02!~<8ʇ2m͸͸͸!>w#{  !~ $͸#o6!!~x"͗zWʁ*~#"O L_=7L_bk))~n͞#R ͞͞͞Y ͞KZ͗͗͗͗íN͸ ͞* ͞ YY }pp**$cdc5M2 @"AA"""> >EIQ>!!CEI1"AII6 $zIIIF>III&ABDHp6III60III>6"AA" @MP >A]U=?HHH?III6>AAA"AAA>IIIAHHH@>AAINAAAA~"A  0>AAA>HHH0>AEB=HLJ12III&@@@@~~p  pccppCEIQaAAA AAA @ @    ?HH.? A >   6AAwAA6 @  A  0>AAA>HHH0>AEB=HLJ12III&@@@@~~p  || HEADLINE - #00: ||$ Too long! Try again, press any key. $ Output complete, back to CP/M. $!9"1:] "͸?™͸ßrât͸>02!~<8ʇ2m͸͸͸!>w#{  !~ $͸#o6vCopyright 1983 Robert C. KuhmanHEADLINE.COM v1.00 as of 11/12/83 (Print title block HEADLINE.) Enter Control-C to ABORT. Any key to continue, else '?' for HELP. $ H E A D L I N E - H E L P --------------------------- Print a large (5x7) matrix block title. Do up to 7 lines of up to 16 characters. Both UPPER/lower case characters are OK. Numbers and punctuation marks are OK. Control codes are entered as "^+letter". "ESCape" is entered as "^[" (two chars). Press "BACKSPACE" to backup 1 character. Do "Control-X" to backup and redo line. Enter "Control-C" to ABORT this program. $ H E A D L I N E M E S S A G E =============================== $Line length Ruler ||1234567890123456|| $ || || HEADLINE - #00: ||$ Too long! Try again, press any key. $ Output complete, back to CP/M. $!9"1:] –";?Ÿ;årèt;">02"!"~<8ʍ2"s;;;!>w#{ !~*;#o6!~~"͝zWʇ*~#"O R_C7R_bk))~tͤ#X ͤͤͤY ͤK`͝͝͝͝óT; ͤ* ͤ YY }pp**$cdc5M2 @"AA"""> >EIQ>!!CEI1"AII6 $zIIIF>III&ABDHp6III60III>6"AA" @MP >A]U=?HHH?III6>AAA"AAA>IIIAHHH@>AAINAAAA~"A  0>AAA>HHH0>AEB=HLJ12III&@@@@~~p  pccppCEIQaAAA AAA @ @    ?HH.? A >   6AAwAA6 @  A  0>AAA>HHH0>AEB=HLJ12III&@@@@~~p || || HEADLINE - #00: ||$ Too long! Try again, press any key. $ Output complete, back to CP/M. $!9"1:] –";?Ÿ;årèt;">02"!"~<8ʍ2"s;;;!>w#{ !~*;#TITLE: HL.DOC (HEADLINE.DOC) AUTHOR: Robert C. Kuhman Sysop of the "Cro'sNest" (c)1982 RCP/M - RBBS. PURPOSE: Brief description of files associated with the "HEADLINE" program. HEADLINE prints 5 X 7 matrix block titles - up to 7 lines of up to 16 characters. DISCUSSION: Refer to the introductory text in the file "HEADLINE.ASM". FILES: 1) HL.DOC (This file) 2) HL.CRC (CRC check-list using CRC.COM) 3) HL080.COM (Ready-to-go for 80 column printer) 4) HL132.COM (Ready-to-go for 132 column printer) 5) HEADLINE.ASM (8080/Z80 CP/M 2.2 source code) 6) SUB.SUB (SUBMIT file to patch "SUBMIT.COM") 7) DEMO.SUB (Demonstration of character set) 8) HEADLINE.SUB (Print 5x7 block title for listing) 9) HEADLINE.LBR (Library file containing all files) 10) CRC.COM (CRC reference check program v5.0) REVISIONS: This document written by the author on 11/12/83. *END of DOC* ;------------------------------------------------------------------ ; ; TITLE: ; HEADLINE.ASM ; ; AUTHOR: ; Robert C. Kuhman ; Sysop of the "Cro'sNest" (c)1982 RCP/M - RBBS. ; ; PURPOSE: ; To produce large size "HEADLINE" printouts in 5 X 7 matrix ; character blocks. UPPER and lower Case characters are ok, ; as well as all numerals, and all punctuation marks of the ; ASCII character set. Control codes may be represented as ; "^?" (up-arrow/caret plus the letter). The program allows ; the user to enter up to 7 lines of up to 16 characters. ; Should the user erroneously exceed the line length allowed ; (determined by the printer width), a message prompt calls ; attention to that fact, and offers the option to retype ; the line. The built-in "HELP" function can be displayed ; after the SIGNON message, and is also the default when the ; program is not correctly executed. Once the seven lines ; of text have printed (a full page), the program formfeeds ; to the next page b"oundary, and "quietly" returns to the ; CP/M prompt (no warm boot). ; ; SUBMIT USAGE: ; HEADLINE.COM can be called and executed as part of a "SUB" ; file for batch processing of HEADLINE titles. Please note ; that SUBMIT.COM can be patched at location (0370 hex) to ; disable the lower-case to UPPER-CASE translation function. ; Use DDT.COM to replace the (5F hex) found at that location ; with (FF hex), and save the file (10 records of 128 bytes) ; under a new name, like: "SUB.COM" (or something similar). ; As an example, to print a HEADLINE title for a listing of ; this file, one could create "HEADLINE.SUB" as follows. The ; "SUB" file will execute the full 7 lines of 16 characters. ; ; (Example generated with the CP/M text editor, ED.COM) ; Notes 1) (space) means, enter a space here with editor. ; 2) (space) acts as a null command line. ; 3) This example assumes use of a 132 column printer. ; 4) Careful. Don't exceed 16 characters per line. ; ; A>ED HEADLINE.SUB ;Execute ED.COM ; ; NEWFILE ; : *i ;Insert mode "i" ; 01: XSUB ;Run XSUB.COM ; 02: HEADLINE ? ;Run HEADLINE.COM, show help ; 03: **************** ;1st HEADLINE to print ; 04: (space) ;2nd HEADLINE to skip ; 05: "HEADLINE.ASM" ;3rd HEADLINE to print ; 06: as of 11/12/83 ;4th HEADLINE to print ; 07: By Robert Kuhman ;5th HEADLINE to print ; 08: (space) ;6th HEADLINE to skip ; 09: **************** ;7th HEADLINE to print ; 10: ;^Z to exit Insert mode ; : *e ;"e" to exit ED.COM ; ; A>SUB HEADLINE ;Process "SUB" file ; execution begins,... ; ; ASSOCIATED FILES: ; 1) HL.DOC (Brief description of HEADLINE) ; 2) HL.CRC (CRC check list) ; 3) HL080.COM (Ready to run on 80 column printer) ; 4) HL132.COM (Ready to run on 132 column printer) ; 5) HEADLINE.ASM (8080/Z80 CP/M 2.2 source code) ; 6) SUB.SUB (SUMBIT file patch for "SUBMIT.COM") ; 7) DEMO.SUB (Demonstration of character set) ; 8) HEADLINE.SUB (Prints 5x7 block title for listing)  ; 9) HEADLINE.LBR (LU library of the above files) ; 10) CRC.COM (CRC v5.0 program) ; ; CREDITS: ; Conceptually based on BANNER.ASM (original author unknown), ; as implemented by Richard Conn, now rewritten with many new ; features, thus the program was renamed. ; ; COPYRIGHT STATUS: ; Copyright (c) 1983 by the author, Robert C. Kuhman, all ; rights reserved. Released to the PUBLIC DOMAIN for non- ; profit use only. ; ; ASSEMBLY: ; Assemble with either "ASM.COM" or "MAC.COM". ; ; SYSTEM REQUIREMENTS: ; A CP/M 2.2 computer supporting an 80 (or 132) column printer. ; ; REVISIONS: ; Original version 1.00 by the author on 11/12/83. ; ;------------------------------------------------------------------ ; ; VERSION AND REVISION NUMBERS ; VERS: EQU 100 ;VERSION GETS FORMATTED X.XX MONTH: EQU 11 ;MONTH OF LAST REVISION DAY: EQU 12 ;DAY YEAR: EQU 83 ;YEAR ; TRUE: EQU -1 FALSE: EQU NOT TRUE ; ; *** USER DEFINED EQUATES *** ; STDCPM: EQU TRUE ;TRUE = 100H LOAD ; ; SELECT PRINTER WIDTH CAPABILITY ; COL080: EQU TRUE ;TRUE = 80 COLUMN PRINTER COL132: EQU NOT COL080 ;IF FALSE ABOVE, 132 COLUMNS ; ; SET TO THIS EQUATE TO TRUE IF CLEAR SCREEN IS DESIRED. ; MODIFY CS1: AND CS2: TO SUIT YOUR TERMINAL TYPE. ; CLS: EQU FALSE ;TRUE = CLEAR SCREEN ; IF CLS ;CLEAR SCREEN (SET FOR H19) CS1: EQU 1BH ;CLEAR SCREEN OR LEAD-IN CHAR CS2: EQU 45H ;CLEAR AND/OR HOME CURSOR/ OR NULL ENDIF ;CLS ; ; *** END OF USER DEFINED EQUATES *** ; IF STDCPM BASE: EQU 0000H ;STD 100H LOAD ENDIF ; IF NOT STDCPM BASE: EQU 4200H ;NON STD BASE ADDR ENDIF ; IF NOT CLS ;NO CLEAR SCREEN CS1: EQU 00H ;NULL CS2: EQU 00H ;NULL ENDIF ;NO CLS ; IF COL080 ;80 COLUMN PRINTER MAXCHR: EQU 10 ;10 CHARS MAX ENDIF ; IF COL132 ;132 COLUMN PRINTER MAXCHR: EQU 16 ;16 CHARS MAX ENDIF ; ; MISC EQUATES ; CONINB: EQU 1 ;CONSOLE INPUT BYTE CONOUT: EQU 2 ;CONSOLE OUTPUT BYTE LOUT: EQU 5 ;LIST OUTPUT BDOS: EQU 0005H ;BDOS SERVICE CALL ADDR PBUFL: EQU 09H ;PRINT BUFFERED LINE CONINL: EQU 0AH ;CONSOLE INPUT LINE FCB: EQU 005CH ;FILE CONTROL BLOCK ; ; ASCII CHARACTER DEFINITIONS ; BELL: EQU 07H ;BELL BS: EQU 08H ;BACKSPACE TAB: EQU 09H ;TAB LF: EQU 0AH ;LINE FEED FORMF: EQU 0CH ;FORMFEED CR: EQU 0DH ;CARRIAGE RETURN ; ; PROGRAM BEGINS HERE ; ORG BASE+100H ;ORIGIN ; JMP START ;GET PAST MESSAGES ; ; ASSEMBLE COPYRIGHT INTO HEX FILE FOR LOAD ; CYRGHT: DB 'Copyright 1983 Robert C. Kuhman' ; ; SIGNON MESSAGE ; SIGNON: DB CS1,CS2,'HEADLINE.COM v' DB VERS/100+'0','.',VERS MOD 100/10+'0' DB VERS MOD 10+'0',' as of ' DB MONTH/10+'0',MONTH MOD 10+'0','/' DB DAY/10+'0',DAY MOD 10+'0','/' DB YEAR/10+'0',YEAR MOD 10+'0',CR,LF DB '(Print title block HEADLINE.)',CR,LF DB 'Enter Control-C to ABORT.',CR,LF DB LF CNTMSG: DB 'Any key to continue, else ''?'' for HELP. ' DB '$' ; ; HELP MESSAGE ; HLPMSG: EQU $ ;MARKER IF CLS ;CLEAR SCREEN DB CS1,CS2 ENDIF ;CLEAR ; IF NOT CLS DB CR ENDIF ; D#B 'H E A D L I N E - H E L P ',CR,LF DB '---------------------------',CR,LF,LF DB 'Print a large (5x7) matrix block title.',CR,LF DB 'Do up to 7 lines of up to ' DB MAXCHR/10+'0',MAXCHR MOD 10+'0' DB ' characters.',CR,LF ; DB 'Both UPPER/lower case characters are OK.',CR,LF DB 'Numbers and punctuation marks are OK.',CR,LF DB 'Control codes are entered as "^+letter".',CR,LF DB '"ESCape" is entered as "^[" (two chars).',CR,LF DB 'Press "BACKSPACE" to backup 1 character.',CR,LF DB 'Do "Control-X" to backup and redo line.',CR,LF DB 'Enter "Control-C" to ABORT this program.',CR,LF DB LF DB '$' ; ; MISC MSGS ; HEADCS: DB CS1,CS2 ; HEADER: DB CR,'H E A D L I N E M E S S A G E ',CR,LF DB '===============================',CR,LF DB '$' ; IF COL080 ;80 COLUMN PRINTER RULER: DB 'Line length Ruler ||1234567890|| ',CR,LF,'$' ; BOUNDS: DB CR DB ' || ||' DB ' ' ;6 SPACES TO CLEAR "TOO LONG" MSG DB CR ENDIF  ;COL080 ; ;... ; IF COL132 ;132 COLUMN PRINTER RULER: DB 'Line length Ruler ||1234567890123456|| ',CR,LF,'$' ; BOUNDS: DB CR DB ' || ||' DB CR ENDIF ;COL132 ; LINE: DB 'HEADLINE - #0' NUMBER: DB '0: ||','$' ; TOOLNG: DB BELL,CR DB 'Too long! Try again, press any key. ',BS DB '$' ; EXTMSG: DB LF,'Output complete, back to CP/M.' CRLF: DB CR,LF,'$' ; ; MAIN PROGRAM BEGINS HERE ; START: LXI H,0 ;SAVE STACK PTR DAD SP ;HL=OLD SP SHLD STACK LXI SP,STACK ;NEW STACK LDA FCB+1 ;HELP NEEDED? CPI 20H ;IF NOT A SPACE JNZ HLP ;GIVE HELP. LXI D,SIGNON ;PT TO MSG CALL DISPLY ;SND TO CON: CALL GETINP ;GET RESPONSE CPI '?' ;HELP? JNZ NHLP ;NO HELP NEEDED HLP: LXI D,HLPMSG ;PT TO MSG CALL DISPLY ;SND TO CON: JMP HEAD ;SKIP OVER NHLP: LXI D,HEADCS ;PT TO MSG JMP DSPLY ;SND TO CON: HEAD: LXI D,HEADER ;NO CS IF HELP CAME FIRST DSPLY: CALL DISPLY ;SND TO CON: ; ; INITIALIZE LINE COUNTER, AS AN ASCII ZERO (30H) ; LXI D,NUMBER ;POINT TO LINE COUNT BYTE MVI A,30H ;ASCII '0' STA NUMBER ; ; PREPARE UP TO SEVEN LINES OF INPUT ; SEVLIN: LXI H,NUMBER ;POINT TO START OF MSG MOV A,M ;GET FIRST BYTE INTO 'A' INR A ;INCREMENT ITS VALUE BY ONE CPI '8' ;SEVENTH LINE DONE (7+1)? JZ EXIT ;QUIT. STA NUMBER ;PRESENT LINE COUNT LXI D,CRLF ;PT TO MSG CALL DISPLY ;SND TO CON: LXI D,RULER ;PT TO MSG CALL DISPLY ;SND TO CON: AGAIN: LXI D,BOUNDS ;PT TO MSG CALL DISPLY ;SND TO CON: ; ; INITIALIZE THE ENTIRE LINE INPUT BUFFER ; ZERO: LXI H,INPBUF ;POINT TO INPUT BUFFER MVI E,00H ;FIRST LOOP MORE: MVI A,0 ;LOAD A ZERO MOV M,A ;ZERO THE ADDRESS INX H ;NEXT ADDRESS INX D ;NEXT COUNT MOV A,E ;COUNT INTO 'A' CPI MAXCHR+1 ;DONE? JC MORE ;DO ANOTHER? ; ; GET HEADLINE, MAXCHR LONG, POINT TO ADDR WITH 'DE' ; LXI D,INLINE ;LINE INPUT BUFFER MVI C,CONINL ;GET INPUT LINE CALL BDOS ;BDOS SERVICE ; ; PRINT HEADLINE CONTAINED IN BUFFER (INPCNT=CHAR CNT) ; HDLN: LXI H,INPCNT ;POINT TO COUNT OF INPUT BUFFER MOV A,M ;GET COUNT OF CHARS INPUTTED CPI MAXCHR+1 ;BEYOND CHAR LIMIT? JC HDLN1 ;CONTINUE IF NOT LXI D,TOOLNG ;PT TO MSG CALL DISPLY ;SND TO CON: CALL GETINP ;PAUSE FOR RESPONSE JMP AGAIN ;RETRY ; HDLN1: INX H ;PT TO FIRST CHAR ADD L ;ADD TO LOW-ORDER BYTE MOV L,A ;PT TO BYTE MVI M,0 ;STORE MVI D,80H ;PT TO MSB+1 NEXLIN: LXI H,INPCNT+1 ;SET PTR TO FIRST CHAR MOV A,M ;CHECK FOR NO CHARS ORA A ;ENDING ZERO? JZ P4CRLF ;4 CRLF'S IF SO SHLD NEXTCH CALL PRCRLF ;NEW LINE MOV A,D ;GET BIT PTR RRC ;ROTATE ANI 7FH ;MASK OUT MSB MOV D,A ;SET BIT PTR JZ P1CRLF ;NEW LINE AND THEN EXIT NEXCHR: PUSH H ;GET NEXT CHARACTER PUSH D PUSH B LHLD NEXTCH ;GET NEXT CHAR POINTER MOV A,M ;GET CHAR INX H ;PT TO NEXT SHLD NEXTCH ANI 7FH ;MASK MSB IF ANY POP B POP D POP H ; MOV C,A ;CHAR IN C ORA A ;DONE? JZ NEXLIN ;DO NEXT LINE IF SO ; ; COMPUTE POINTER TO TABLE ENTRY OF CHAR IN REG A ; ON INPUT, A=CHAR; ON OUTPUT, HL=PTR TO TABLE ENTRY (1ST BYTE) ; CONV: PUSH B ;SAVE BC PUSH D ;SAVE DE SUI 20H ;CONVERT TO 0 JC CONV2 ;INVALID CHAR CPI 7FH-20H ;IN RANGE? JC CONV1 ;INVALID CHAR STC ;SET CARRY FOR INVALID CHAR POP D ;RESTORE DE POP B ;RESTORE BC JMP CONV2 ;SKIP OVER CONV1: MOV E,A ;VALUE IN E MVI D,0 ;VALUE IN DE MOV H,D ;VALUE IN HL MOV L,E DAD H ;VALUE * 2 DAD H ;VALUE * 4 DAD D ;HL = VALUE * 5 LXI D,CHARS ;POINT TO BEGINNING OF TABLE DAD D ;HL PTS TO ELEMENT IN TABLE POP D ;RESTORE DE POP B ;RESTORE BC ORA A ;CLEAR CARRY ; CONV2: JC NEXCHR ;SKIP IF ERROR ; ; PRINT 5 CHARS FOLLOWED BY TWO SPACES ; CHAR IN C ACCORDING TO THE ENTRY PTED TO BY HL ; BIT MASK IS IN D ; LIST: PUSH B ;SAVE BC (C=CHAR) MVI B,5 ;5 BYTES/CHAR LIST1: MOV A,M ;GET BIT SET ANA D ;MASK FOR BIT IN QUESTION JZ LIST3 ;IF ZERO, PRINT CALL LSTOUT ;PRINT CHAR IN C LIST2: INX H ;PT TO NEXT BYTE DCR B ;COUNT DOWN JNZ LIST1 MVI C,20H ;$PRINT THREE SPACES CALL LSTOUT CALL LSTOUT CALL LSTOUT POP B ;RESTORE BC JMP NEXCHR ;SKIP IF ERROR LIST3: MOV E,C ;SAVE CHAR MVI C,20H ;PRINT CALL LSTOUT MOV C,E ;GET CHAR JMP LIST2 ; P4CRLF: CALL PRCRLF ;4 CALL PRCRLF CALL PRCRLF P1CRLF: CALL PRCRLF ;1 JMP SEVLIN ;DO ANOTHER ; EXIT: LXI D,EXTMSG ;PT TO MSG CALL DISPLY ;SND TO CON: MVI C,FORMF ;FORMFEED CALL LSTOUT ;SEND TO PRTR LHLD STACK ;GET OLD STACK POINTER SPHL ;LOAD SP RET ;QUIET RETURN TO CP/M ; ; SUPPORT ROUTINES ; ;... ; ; SEND CR AND LF TO LIST DEVICE ; PRCRLF: MVI C,CR CALL LSTOUT MVI C,LF ;FALL THRU TO LSTOUT ; ; SEND CHARACTER IN 'C' TO LIST DEVICE ; LSTOUT: PUSH H PUSH B PUSH D MOV E,C MVI C,LOUT ;OUTPUT TO LST: CALL BDOS POP D POP B POP H RET ; ; SEND CHARACTER IN 'C' TO CONSOLE ; BYTEO: PUSH H PUSH B PUSH D MOV E,C MVI C,CONOUT ;OUTPUT TO CONSOLE CALL BDOS POP D POP B POP H RET ; DISPLY: PUSH H PUSH B PUSH D MVI C,PBUFL ;PRINT BUFFERED LINE CALL BDOS POP D POP B POP H RET ; ; GET CHARACTER INPUT FROM CONSOLE ; GETINP: PUSH H PUSH B PUSH D MVI C,CONINB ;GET CONSOLE INPUT CALL BDOS POP D POP B POP H RET ; ; CHARACTER TABLE ; THE CHARACTERS REPRESENTED IN THIS TABLE ARE IN A 5X7 FORMAT ; AND WILL PRINT AS PER THIS EXAMPLE: ; ; ; * 00100 R 6 ; * * * 10101 E 5 ; *** 01110 A 4 ; * 00100 D 3 ; *** 01110 2 ; * * * 10101 D 1 ; * 00100 O 0 ; ^^^^^ W ; 21712 N ^ ; 24F42 B ; HHHHH I ; T ; ; ; "CHARACTER DEFINITION MAPS" ; (DRAWN IN MIRROR-IMAGE, VIEWED FROM THE RIGHT) ; "1"S MAKE UP THE IMAGE OF THE CHARACTER ; CHARS: DB 00000000b ; DB 00000000b DB 00000000b DB 00000000b DB 00000000b ; DB 00000000b ;EXCLAMATION MARK DB 00000000b DB 01111101b DB 00000000b DB 00000000b ; DB 00000000b ;" DB 01110000b DB 00000000b DB 01110000b DB 00000000b ; DB 00010100b ;# DB 01111111b DB 00010100b DB 01111111b DB 00010100b ; DB 00010010b ;$ DB 00101010b DB 01111111b DB 00101010b DB 00100100b ; DB 01100011b ;% DB 01100100b DB 00001000b DB 00010011b DB 01100011b ; DB 00000010b ;& DB 00110101b DB 01001101b DB 00110010b DB 00000101b ; DB 00000000b ;' DB 00010000b DB 00100000b DB 01000000b DB 00000000b ; DB 00011100b ;( DB 00100010b DB 01000001b DB 00000000b DB 00000000b ; DB 00000000b ;) DB 00000000b DB 01000001b DB 00100010b DB 00011100b ; DB 00100010b ;* DB 00010100b DB 01111111b DB 00010100b DB 00100010b ; DB 00001000b ;+ DB 00001000b DB 00111110b DB 00001000b DB 00001000b ; DB 00000000b ;, DB 00000001b DB 00000110b DB 00000000b DB 00000000b ; DB 00001000b ;- DB 00001000b DB 00001000b DB 00001000b DB 00001000b ; DB 00000000b ;. DB 00000011b DB 00000011b DB 00000000b DB 00000000b ; DB 00000010b ;/ DB 00000100b DB 00001000b DB 00010000b DB 00100000b ; DB 00111110b ;0  DB 01000101b DB 01001001b DB 01010001b DB 00111110b ; DB 00010001b ;1 DB 00100001b DB 01111111b DB 00000001b DB 00000001b ; DB 00100001b ;2 DB 01000011b DB 01000101b DB 01001001b DB 00110001b ; DB 00100010b ;3 DB 01000001b DB 01001001b DB 01001001b DB 00110110b ; DB 00001100b ;4 DB 00010100b DB 00100100b DB 01111111b DB 00000100b ; DB 01111010b ;5 DB 01001001b DB 01001001b DB 01001001b DB 01000110b ; DB 00111110b ;6 DB 01001001b DB 01001001b DB 01001001b DB 00100110b ; DB 01000001b ;7 DB 01000010b DB 01000100b DB 01001000b DB 01110000B ; DB 00110110b ;8 DB 01001001b DB 01001001b DB 01001001b DB 00110110b ; DB 00110000b ;9 DB 01001001b DB 01001001b DB 01001001b DB 00111110b ; DB 00000000b ;: DB 00000000b DB 00110110b DB 00000000b DB 00000000b ; DB 00000000b ;; DB 00000001b DB 00010110b DB 00000000b DB 00000000b ; DB 00001000b ;< DB 00010100b DB 00100010b DB 01000001b DB 00000000b ; DB 00010100b ;= DB 00010100b DB 00010100b DB 00010100b DB 00010100b ; DB 00000000b ;> DB 01000001b DB 00100010b DB 00010100b DB 00001000b ; DB 00100000b ;? DB 01000000b DB 01001101b DB 01010000b DB 00100000b ; DB 00111110b ;@ DB 01000001b DB 01011101b DB 01010101b DB 00111101b ; DB 00111111b ;A DB 01001000b DB 01001000b DB 01001000b DB 00111111b ; DB 01111111b ;B DB 01001001b DB 01001001b DB 01001001b DB 00110110b ; DB 00111110b ;C DB 01000001b DB 01000001b DB 01000001b DB 00100010b ; DB 01111111b ;D DB 01000001b DB 01000001b DB 01000001b DB 00111110b ; DB 01111111b ;E DB 01001001b DB 01001001b DB 01001001b DB 01000001b ; DB 01111111b ;F DB 01001000b DB 01001000b DB 01001000b DB 01000000b ; DB 00111110b ;G DB 01000001b DB 01000001b DB 01001001b DB 01001110b ; DB 01111111b ;H DB 00001000b DB 00001000b DB 00001000b DB 01111111b ; DB 01000001b ;I% DB 01000001b DB 01111111b DB 01000001b DB 01000001b ; DB 00000010b ;J DB 00000001b DB 00000001b DB 00000001b DB 01111110b ; DB 01111111b ;K DB 00001000b DB 00010100b DB 00100010b DB 01000001b ; DB 01111111b ;L DB 00000001b DB 00000001b DB 00000001b DB 00000001b ; DB 01111111b ;M DB 00100000b DB 00010000b DB 00100000b DB 01111111b ; DB 01111111b ;N DB 00110000b DB 00001000b DB 00000110b DB 01111111b ; DB 00111110b ;O DB 01000001b DB 01000001b DB 01000001b DB 00111110b ; DB 01111111b ;P DB 01001000b DB 01001000b DB 01001000b DB 00110000b ; DB 00111110b ;Q DB 01000001b DB 01000101b DB 01000010b DB 00111101b ; DB 01111111b ;R DB 01001000b DB 01001100b DB 01001010b DB 00110001b ; DB 00110010b ;S DB 01001001b DB 01001001b DB 01001001b DB 00100110b ; DB 01000000b ;T DB 01000000b DB 01111111b DB 01000000b DB 01000000b ; DB 01111110b ;U DB 00000001b DB 00000001b DB 00000001b DB 01111110b ; DB 01110000b ;V DB 00001100b DB 00000011b DB 00001100b DB 01110000b ; DB 01111111b ;W DB 00000001b DB 00001110b DB 00000001b DB 01111111b ; DB 01100011b ;X DB 00010100b DB 00001000b DB 00010100b DB 01100011b ; DB 01110000b ;Y DB 00001000b DB 00000111b DB 00001000b DB 01110000b ; DB 01000011b ;Z DB 01000101b DB 01001001b DB 01010001b DB 01100001b ; DB 01111111b ;[ DB 01000001b DB 01000001b DB 01000001b DB 00000000b ; DB 00100000b ;\ DB 00010000b DB 00001000b DB 00000100b DB 00000010b ; DB 00000000b ;] DB 01000001b DB 01000001b DB 01000001b DB 01111111b ; DB 00010000b ;^ DB 00100000b DB 01000000b DB 00100000b DB 00010000b ; DB 00000001b ;_ DB 00000001b DB 00000001b DB 00000001b DB 00000001b ; DB 00000000b ;` DB 01000000b DB 00100000b DB 00010000b DB 00000000b ; DB 00000010b ;a DB 00010101b DB 00010101b DB 00001111b DB 00000001b ; DB 01111111b ;b DB 00001001b DB 00001001b DB 00001001b DB 00000110b ; DB 00001110b ;c DB 00010001b DB 00010001b DB 00010001b DB 00010001b ; DB 00000110b ;d DB 00001001b DB 00001001b DB 00001001b DB 01111111b ; DB 00001110b ;e DB 00010101b DB 00010101b DB 00010101b DB 00001001b ; DB 00001000b ;f DB 00001000b DB 00111111b DB 01001000b DB 01001000b ; DB 00001000b ;g DB 00010101b DB 00010101b DB 00010101b DB 00011110b ; DB 01111111b ;h DB 00001000b DB 00001000b DB 00001000b DB 00000111b ; DB 00000000b ;i DB 00000000b DB 00010111b DB 00000000b DB 00000000b ; DB 00000010b ;j DB 00000001b DB 00000001b DB 00000001b DB 00101110b ; DB 00111111b ;k DB 00000100b DB 00001010b DB 00010001b DB 00000000b ; DB 00000000b ;l DB 01000001b DB 01111111b DB 00000001b DB 00000000b ; DB 00011111b ;m DB 00010000b DB 00011111b DB 00010000b DB 00011111b ; DB 00011111b ;n DB 00001000b DB 00010000b DB 00010000b DB 00001111b ; DB 00001110b ;o DB 00010001b DB 00010001b DB 00010001b DB 00001110b ; DB 00011111b ;p DB 00010100b DB 00010100b DB 00010100b DB 00001000b ; DB 00001000b ;q DB 00010100b DB 00010100b DB 00010100b DB 00011111b ; DB 00011111b ;r DB 00001000b DB 00010000b DB 00010000b DB 00010000b ; DB 00001001b ;s DB 00010101b DB 00010101b DB 00010101b DB 00010010b ; DB 00001000b ;t DB 00001000b DB 00111110b DB 00001001b DB 00001001b ; DB 00011110b ;u DB 00000001b DB 00000001b DB 00000001b DB 00011111b ; DB 00011000b ;v DB 00000110b DB 00000001b DB 00000110b DB 00011000b ; DB 00011111b ;w DB 00000001b DB 00011111b DB 00000001b DB 00011111b ; DB 00010001b ;x DB 00001010b DB 00000100b DB 00001010b DB 00010001b ; DB 00011001b ;y DB 00000101b DB 00000101b DB 00000101b DB 00011110b ; DB 00010001b ;z DB 00010011b DB 00010101b DB 00011001b DB 00010001b ; DB 00001000b ;{ DB 00110110b DB 01000001b DB 01000001b DB 00000000b ; DB 00000000b ;| DB 00000000b DB 01110111b DB 00000000b DB 00000000b ; DB 00000000 ;} DB 01000001b DB 01000001b DB 00110110b DB 00001000b ; DB 00100000b ;~ DB 01000000b DB 00100000b DB 00010000b DB 00100000b ; ; BUFFERS ; DS 50 STACK: EQU $ ;MARKER DS 2 NEXTCH: DS 2 MAXLEN: EQU MAXCHR+1 ;NUMBER OF CHARS ALLOWED IN LINE ; INLINE: DB MAXLEN ;MAX CHARS ALLOWED IN INPUT BUFFER INPCNT: DS 1 ;THE COUNT OF INPUTTED CHARS INPBUF: DS MAXCHR ;TEMPORARY BUFFER FOR EACH HEADLINE ; DS 1 ;ONE EXTRA FOR OVERFLOW CHAR ; END ;END OF PROGRAM  00010001b ;x DB 00001010b DB 00000100b DB 00001010b DB 00010001b ; DB 00011001b ;y DB 00000101b DB 00000101b DB 00000101b DB 00011110b ; DB 00010001b ;z DB 00010011b DB 00010101b DB 00011001b DB 00010001b ; DB 00001000b&XSUB HEADLINE ? **************** "HEADLINE.ASM" as of 11/12/83 By Robert Kuhman **************** FONTSY DOC()FONTSY BASB*+,-./012FONTCODECOM3456789:;<=>?@ABFONTCODECOMVCDEFGHIJKLMFONTCODEBASNOPQRSTUVWXYZ[\]FONTCODEBASCHARFLIPCOM^_`abcdefghijklmCHARFLIPCOM noCHARFLIPBAS#pqrstCLARE FNT3uvwxyz{CLS DAT|GOTHIC FNT@}~HERON FNT.KIWI FNT/RAVEN FNTHL080 COMHL132 COMHL DOCHEADLINEASMHEADLINEASM&HEADLINE$$$ This is the release date of the disk. KIWI FNT RAVEN FNT HL080 COM HL132 COM HL DOC HEADLINEASM SEADLINEASM HEADLINESUB GOTHIC .FNT D5 96 8192 64 HERON .FNT C7 0F 5888 46 KIWI .FNT 00 40 6016 47 RAVEN .FNT A1 B5 3840 30 HL080 .COM 64 71 1792 14 HL132 .COM C3 F7 1792 14 HL .DOC 49 7A 1024 8 HEADLINE.ASM 81 EA 21248 166 HEADLINE.SUB 95 F0 128 1  Fog Library Disk FOG-CPM.053 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Banner printing programs. Filename Description -06-00 .86 This is the release date of the disk. -CPM053 .DOC This is the description of the disk contents. FONTSY .COM 3BBD 21K ver. 1.0 [FONTSY 1 of 13] A Banner printing program that uses multiple fonts. Includes MBasic source and programs to modify accompanying fonts. FONTSY .DOC 1138 18K ver. 1.0 [FONTSY 2 of 13] FONTSY .BAS 1C28 9K ver. 1.0 [FONTSY 3 of 13] FONTCODE.COM DD60 27K ver. 1.0 [FONTSY 4 of 13] FONTCODE.BAS 4E43 16K ver. 1.0 [FONTSY 5 of 13] CHARFLIP.COM B971 18K ver. 1.0 [FONTSY 6 of 13] CHARFLIP.BAS E8B9 5K ver. 1.0 [FONTSY 7 of 13] CLARE .FNT F0BB 7K ver. 1.0 [FONTSY 8 of 13] CLS .DAT 24EA 1K ver. 1.0 [FONTSY 9 of 13] GOTHIC .FNT D596 8K ver. 1.0 [FONTSY 10 of 13] HERON .FNT C70F 6K ver. 1.0 [FONTSY 11 of 13] KIWI .FNT 0040 6K ver. 1.0 [FONTSY 12 of 13] RAVEN .FNT A1B5 4K ver. 1.0 [FONTSY 13 of 13] HL080 .COM 6471 2K ver. 1.0 [Headline 1 of 5] A program to print large titles on your paper (such as for a newsletter). Two versions (one for 80 column and one for 132 column printers) plus ASseMbler source are included. HL132 .COM C3F7 2K ver. 1.0 [Headline 2 of 5] HL .DOC 497A 1K ver. 1.0 [Headline 3 of 5] HEADLINE.ASM 81EA 21K ver. 1.0 [Headline 4 of 5] HEADLINE.SUB 95F0 1K ver. 1.0 [Headline 5 of 5] DD60 27K ver. 1.0 [FONTSY 4 of 13] FONTCODE.BAS 4E43 16K ver. 1.0 [FONTSY 5 of 13] CHARFLIP.COM B971 18K ver. 1.0 [FONTSY 6'