' JJJJ ?\>' L-=l>  ԠéԠˠ!8Ͱ#?,> 8=_.:;<>[m o$! ~# #-~ (#0 0Wy8 88Oy! ~ ()08 80#OzW{_W{_}!@~ɯ2: :ķ=!ľɯ!@23So( @G:( _2<!t~6u:_ JƇ!Ķ2:2a{_:tķ(Fu(<:=2 0!P!6#5u(>:Ͱ!(,>,P>|Ͱ _!F#~fw6!"m ĻEͩ*o~ʯ21my_L2ty2( 2tu:tķ/$/2t:ķ &1mͩAͰJ 8 >1Ͱ0Ͱo2:ķq~#fo: !ĶNo File> Ͱ> _:ķ(Ͱ ͩ~#Ͱ PSUBMIT STARTUPHEXRTUPBIOS... Dcon56 ; 8" drives attached. ŸŸ3 tˉCOM$$$ SUB> _ DIR LISTqTYPEuUSERDFU GO ERA ESAVEREN jGET JUMP:mD:/!i; !i;/:>:(y2E!|"*wɍ`?M^EE??++ ԩ ŭ ?  JL ``LLLÓãݯ`i>2:! >*|559=DM@|m}m>2:j*~#bxA!>:!>:!>a>2! "ía>2!"*" *>::*!~#*">>a n& $Lq<`ΧԠĠڸčԠԠ͠Ԡ؍2>o:= gw8H<8H=` }Hx / hJ Leh<> > @A @A>i =<>+ LeÍڍh@(L>*// -П( ( $8` %  ZNx`. }x$50x.$50xL JJJJ`Hjf5 }h $50x`  Ȍ` Hx  -(hL(h8֩`Lx (`H݌hHhHh݌>?F؅G(jf5(  ;  R( FGj 0x j $xxH` ( Rh RL.xxH h  !"#$%&'()*+,-./0123456789:;<=>?x&& 8 , P ; ' / \ ; & ; x)*++`FGG8`0($ p,&" cI꽌ɪVɭ&Y & &Y &   꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`V0 ^ *^ *>`+*xS&x'8*3IxiU ,>J>V J>V `8'x0| &HhHh V Y V '&Y V x ꪽV ' `Hh`:wx2p(#* 6?w(#6 . (#* 6?w(#6 #6Sm #~?  x!  # ### >!~ =3(A(S SmS(Wx2!̝(h=`O> ͷբ K{ ͩ | xͷ  > ͷ (> Ͱx 0 >.Ͱ ( 6?# All?ͻfY>ͩǯG7>232 ("mͩ>2!6!~8 =w4!@~ ( ( ( ͿͿ > Ϳx (=Read ErrÃЯ2*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C :ٷ:ddslO s#r:EϷ͊:==»y==»*Ww#*"͸*:G#š"͸:!پw4!iw:Z!E~=26 w ~>2!E5T*C!"C"C!w# F! w͌xѯ2͢*C ~<wʃG:٠!٦ʎì 4~ʶ¬:<ʶ$ʶïZͻЯx>2>2ͻ:!پZկ2:EϷẅ́͊Ͳ> *C ^OT *C~wD -'  -@ͦ~^*C Ox! N!Fwyxʋ>ڋ>*Cw~#+w#w+ɯ2E22i^ *C :ٷ~w~͔͔# # ::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | sӖ-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5:AϾ#~$=2Ek͌ ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:مo$*C~i6iw**{#zr+s{ozg**͕** Ѿ,w͜͸Ͳ!!N#F$**O!~#O: \зSЀ*C :ٷqn& ^#V>O^"*}:*)=":O:١o"*C *C!ͮ~2~2ͦ:٦2ͮ:ЯO:فw:w |g}o*ٯ# 2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>گ*w#w*w#w'û*ڷ! J*""!N#F*^#V*~#foyx*{_zW+*x: 2 p&x~+é7ͯ2 H! >w_: ! Ͼ5ͤNkͱ¦ͱxʊ#Nx: Ϸ! ϖ2 ͤ! 5™#wO~x½p Hy<< ڷʑ :!qMD# O͐  :ϷE B 2>: Ϸb# : Ϸy! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! Ͼ Hù H H $O͐: 2 *CN# ʽ̙̥̫̱"C{2!"E9"1Aϯ22!ty)K!G_^#V*Cΐ~؃E؜إث ,&-AGMSϛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6: !q!͓"r!~2>~2į2\!!!~( (#~(#x2ͩP_ >D{ "J22 !>(w_L!į€6D!>ü8 No Room>= !5 6>S(ͻʉE7@(/2o&)|(+!; < :!(File Exists!3= (#"m G!~(p p2͝Ã_LÌ2{2*C~=2u:B2~2wE:A*C϶w>"!""ٯ2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*٤W}_*"}o|g":ٷʑ*C6:ٷʑw:2E**E}DQ>2C0T"I !>"H>2J: !͢:d::d!s~B#1!P!J߇o~,foɷp:BB Apple ][ CP/M 56K Ver. 2.20 (C) 1980 Microsoft ;ۯ2>EE??++B#1!P!J߇o~,foɷp;ۯ2:޷;ۯ2e ]~6(*} *:޽ y(3:޷s:2G<2x/a2:oa":޷zޯ2{![:޷ <2:>sɯ2>!>2!;:*     1>2>2*"?ۯ2:08 !"Y"BT"->2:8Y"/:8Y"F~!xq!;`~0,~!M;!x~>.~8[q>:޷ 2y2!!{o!:=8 ~y!3w.y2Cɯ2>!w#w#wOa."y .:g"*"!~((5:# :*޽ :޼ $| 8g,"ޯ2!"_!ޅoN!޷((+! ~O#O:x >2ޯ2:޷*(*D*:wk*(:$_"~28 ?@wx( !;!܅ony 2$8!2E!y>>?22!ɯog"$2E!.B...X&*}(8.|8&"$պ`~(,qy2E[22G: 2:O*:P!O#~#'۹~y/:02?"2O: K*:*(0**:8'(*:08* *: 8(*7!w˹#~(=5:!( +_ywɷ+ͱ*:]lc_O{- OMG!~_ :( 6>83! ~èCfuÇKmVÉÎÓãݯ`iޓښ:ޓڦJޓڲZޓھjޓzޓߊ / !~ `66= !; !{g1:Q!͢گ22>2!"2!"͎>2REZILOG COMG SQ/USQ HIS=+,/01QUICKIES0Q0{}FIND4DDTAQM+,FLS COMA SQ COMjUSQ COMO !"#$%&'HELP COM(C2m # +~# (~ >';">'; ë͜SYMTBL=!$*?  ͜PC =*A  ͜OFFSET=*=  *G |ʗ͜COMNTS=*G *I  ͜CTLTBL=!!~###<¨+++ Õ!z ~ "M *= "K  ,# *= "K *M *K ~#"XxZ) ?32c 2e ͜? Õ:8 /28 ;͜Trim On Õ͜TRIM OFF ͕:h /2h g͜CODE ON Õ͜CODE OFF Õ͜Y/N purge all symbols & CTL?j:y YʒNʕx!z ~  ,#>2c ͣ ORG z{ͽ>H;  !$##~ʕ++~#~INDEX ASMRXYZ[\]^_`abINDEX DOCXcdefghijklmAPXMODEMDOC'xy|}~INDEX COM !NEW CAT >IB *G |A*A +A##F>2c 5>#~\7 ;) *A +O###~IʟE) #^#V*A X"k 2c SB(W;͜: INVALID CTL ENTRY Õͼ2c ë#{2Q ~#,ʈ ʈ ʕ:A /o:B /g#>2c ͣDEFS |}ͽ>H; "A ë>2c RCPMLIST0Q8H12=>[\]vwTYPESQ DOC4TYPESQ COM?56789:;<DU-V75 COM.DEFGHISQ/USQ HQS()*3?@SQ/USQ DQC ABDU-V75 AQMJKLMNOPQ^_`abcdeHELP HLP5RSTUVWX; "; *9  ~ͽ#}}}9~ DF>.;#}X99 "9 :; :< Õ##"O ,  ʕ!{ ~.¤s͙ҧ*n ç!$^#V#~ʕF#~;#· ç*=  Õ!z ~  "= Õ:d 2\2h!z :{ +~#~Z#F#~+Af#~+f-fF>2c #~;/ͣ EQU ~+~ͽ>H; 2c ##~#Z>2e y !z ~# wâCongratulations, you found the patch area!*9 *O "; !z ~ Sʌ=o,*O ";  ,#"; *= "9 *ͣDEFW *A *= ^#VK*A ##"A ë ë>2c *A *= ~ @ڵͣDEFB 2m ~ f>H;:m 2m k0;#*A #"A :k ƒ:l -*A ":m 2m "*A *= ~ ڭ">,;MͣDEFM 2m >';:m <2m ~;~';#*A #"A :k :l (*A (:m <`REZILOG ORIGINALLY BY W. CHRISTENSEN (AS OF 10/31/81) Z-80 Version 3 $Copyright 1980,1981 !9"!1!͜ Memory open to *+  ͱ2c 2e 1!j!y ~ ʕ; AHBTC DʭEFʽK4L\MLOPʫQlRr S T UZSIDFIX FIXYZHIMEM ASM-.DU-V75 AQMYfghijklmnopqDU-V75 DQCrstuREAD1ST /0xyUPDATE 0QA z|MAST CAT ~APMODEM7DOC ::z @2\##]""~ ?#.?"~ .#4> ?>2r 2s c>2s c2s 2r 2c :Q 2R 2S !z ~ ʫ,ʟ ʟ=ʩ"A ʫ ʟ,#"C 2S :S ʿ:R =*C :A :B ҕ:r *A *= ~# #~# #+ *A >BBK ~ +:= /_:> /WX>2c ͣEND 100H 2c :d ʕ>ͨ2d ͜++ASM FILE CLOSED++ Õ:d !e] š !$m "? ##63!eW  *= | \ ø   Õ!eZ  Õ !eLD SP,HL..2LD ,A....LD (),A..7SCF.......SUB ......SUB ......EX DE,HL..XOR ......XOR ......EX (SP),HL@BIT.......RES.......SET.......RLC ......RRC ......RL .......RR ....... SLA ......(SRA ......8SRL .:t ~|>';05~ />H; 0; 0*E ~͐+*E #^#Va:s |;|:8 oÕ:f ©05z>0ʒzʝ{ͽ>H;:f { ڴÐSk >2i 0Ò0Db+üb 0*E ~8ͽ>H; M0+ûM|D#"E F!M Õ͜++UNEXPECTED EOF Õ!z ~    : ,#~T Õ +O ###Ѿ2t ڟ :t I W B S E K!~#+<ʙ w#Ž Ä +++×:t KE B W I S!!~###< ###!+~{ z `is#r#:t w##w!!~#+<7#..... ADD HL,...DEC ...... DEC ......DI........DJNZ......EI........EX AF,AF'.EXX.......vHALT......IN A,()..INC ......INC ......JP .......JP........JR........ JR .......:LD A,..... LD A,()..*LD HL,....Lڔڔ ڔ ڔڔڃڔڔڔڔڔڔڔڔڔÔ#~+”>2j ~#ͽ”z°0:j ° 0 #~:4 = +.;³*A :t ? ##"A _!` ͟*G m "I 6#63͜++NO, THAT WOULD OVERLAY THE DISASSEMBLER BECAUSE OFFSET IS TOO SMALL: ? p p p ͩ s#r##? ʣ ʣ w#Ð pp   :ڻ 0))))o? ì :d !e] > !$͇^#V#~#G " > |. ,>+;| g>0;|0;>);>,;> ;>;;ͣDEFB :4 Z*E +~>H;+>2t *E ~!~;#~.;>';';;;*E ~µ~>S;>P;!~M;#~;ͣAF*E ~*E ~!~M;o$ڽ>0;>X >Y24 M#~.#~M27 #F"E M!w"E #~27 G!0#~M*A _RK~j+B0~0;>I;:4 ; "E MMD>2f >(;D>);MM2f :g  Ò M !(HL):4 #~!2 :7 g >-;|/1;z+ {###  !!^#V#z<* ×C ~;#2 >:; >,;~; # ͇!!^#V#z<ʊ " >,~> > #f >ͨÕ!!? , :ڲ 0))))o?á s#r#?w#Û 6#6×͟!z ~ O# I ,+zD........@ LD........LD........NOP.......OR .......OR .......OUT (),A.JP (HL)...POP ......PUSH ..... RET ......RLA.......RRA.......RET.......RRCA......RLCA...... RST.......SBC A,....SBC A,...."LD ,HL...W*E ͐>2g ͒2g *E #~>H;>I;;*A #"A ôú7ùÿ  ?WgxÆ÷Òóöùüÿ M M ͐ MM0+*E #:4 #"E *E ~ [~# > >  >ͨÕzͭzͱ{ͭ{ͱ!eZ ` !e` ʿ !eT >2d 2c ͇͜++WRITING .ASM ENABLED USE Z COMMAND OR E CONTROL TO CLOSE FILE++ Õ͟*I ##6*G ͜++NO FILE ACCESSES PERMITTED UNTIL .ASM CLOSEDý~;#NZZ.NCC.POPEP.M.BCDEHLMAF .......... ..............................ADC A,....ADC A,....ADD A,....ADD A,....AND ......AND ......CALL .....CALL....../CPL.......?CCF.......CP .......CP .......'DAA..of the comments table Õ!z ~ .|A"G "I 6#6Õ͜++NO!! <2300H! Õ>2c *A ڡH~+ʠ-ʠ# k>:;:8 ¡005*A  á2c *A >2c 0X24 2j *A *= "E #"A F! ~:O#~#~2t :h ʱ*E :t ~ ʕ*I s#r##w #"I 6#6pÕ*G ~#+<7#z+?{##~#.+R*G ^#V#z<ʕ>;;F#~;j #R~#<+T]##~#~#O ;~.~0:AG0))))o#r͐##~#fo|ʀ!͐͐͐i͐##~#fo͐s#r͐~#fo͐s#r!!͐~#folç͐##6#6͐͐s#r!ç!9ÿûeÔ!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is.. ADD .,...POP ......PUSH ....."LD ,....*LD ,....#INC ......+DEC ......FLD........pLD........ADD A,....ADC A,....SUB ......SBC A,....AND ......XOR ......OR .......CP .......4INC ......5DEC ......6LD.. 1!9DM͐!͐s#rz5!͐##w#w͐~#fo!9DM`iw#w! ~#fo͐n! ~#fo͐n}¥! ~#fo`i^#Vr+sn}¢!Y! ~#fo͐n! ~#fo͐nѯgW!9u!9DM͐͐s#rz!"p :i +05[k >2f }2f 2i 2j > ;> ;>*_:e :d !c {{ f:S f!R 59w >N !x ^#6 !x #~ aڅ{҅_wÅ2c 2e ~;#~¤#ɯ2$!$"? > 2z !"!>I2!*G |"I 6#6#    Õs͙^#V~!"p 2|\<͜++FILE NOT FOUND Õ*p |\\!c~#"p ځ͜++UNEXPECTED EOF Õ>w\\\<2|!"p \\<͜++CLOSE ERROR Õ͜++WRITE ERROR *p w,"p \! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 G! 6G! 6! ~#fo! n&! ^#Vr+s~#fo! ͳѯgs#r0! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s0! n}! 6#6! ^#Vr+s~#fo! s#r͐n}0͐|0! ^#V+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77you don't want put in the catalog. This may be 1 or more file names. It cannot be zero names. If you want everything cataloged, put a name such as 'DUMMY.FIL' in the catalog. The format is as follows: Each name is on a separate line. The first na7s!&\͐ ͐͐ ͉͐;`is͐ ͐͐ )͐;`in&#&\!9!9DM! n&0ͯڐ! n&9ͯÚe!9DM`iw#w͐~#fon&͗}͐ ?͐^#Vr+snѯg`is#rè͐!9/!7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/o7:,*:*" }|2q S I :qwD ! {w7*!9& 6C#6O#6M” *|ª !\&ü !\&*|¼ !!l&!~#fo > + #~ ## a{ !p !!r+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s͐6! ! s#r! n}‡! ^#Vr+s!҇! ^#Vr+s! n}~!0Á! sL͐! ^#Vr+sns{ʰ! ^#Vr+sÇ! n}! ^#Vr+s!! ^#Vr+s6 ú! ^#Vr+s`ins ! ^#nnn' on each disk. The UCAT routine then takes this as the name of the disk. 3) Put the following files on this master disk: MAST.CAT FMAP.COM UCAT.COM CAT.COM -anyname.nnn 4) Type: FMAP Ame is preceeded by a '('. The last is followed by ')'. Example: (ASM.COM PIP.COM STAT.COM) 2) Pick a disk which will contain the master catalog 'MAST.CAT'. You m-u-s-t serial number (3 digits) all your diskettes, placing a file '-anyname.9DM! n&|$! n&)! n&!9DM! n&aͯZ! n&zͯ7*~# e e+*&!7:O*o`  !\&!7*!&*!&!, !\&!TELk#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r*w#!:**!*!ѷ! , FNxg>Goyn!$O#6M” *|ª !\&ü !\&*|¼ !!l&!~#fo > + #~ ## a{ !p !!Vr+s`ins͐6!9%!9DM! ^#Vr+sn`is{z`in} [͐! "͐`in&"#|w!À-!À!9Ï !9DM͐n}ʹ! ^#Vr+sn&͌×û!9DM͐͐ ͐^#Vr+s͐ ͐0͐*K͞+655O'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z~#"*s*u/#"u*+"7,2q*&:q):m=m=r:qo&~Ô17*x\!*{#7*|DM**><~# x ><~+ x|} J!7e uÑ7*^#V#z+V+^+'* !E!Broken pipe 7:)~:,"s!"u*|ʩ**s®! ~©6*u*+"*"*u#"uu7:)~:,"s!"u*|*u/*!a{   `OE!y6$ -7rBo&))T])))!y!>15:<15>{15Y/e56!'":}15Y/!:&1515\0!:</"͞) :<@"ͧ*͞)Z!:<>L">15! s#r~#fo#|#! ~#fo^#Vr+s`i~#foͨ!  6#6!  ~#fo#|T!Oͫ!  ~#foͮ!  ~#fo͉s#rͨ! s#r! s#r! ~#fo! ~#fok">~#fo|! ~#fok">##6! ^#Vr+s)! ! ~#fos#r! ^#Vr+sÊ!  ~#fo!!ͬ # !ͦ ! Ͳ !  !  Ͳ !9 %s -> %s: Can't open %s for input pass 1 Can't create %s analyzing, squeezing, Can't open %s for input pass 2 ERROR - write failure in %s done.)à1ó1!9DM*6}! 66#6`i~#fo! ~#foB! ~#fo`i~#fo)~#foͪ`i^#Vr+s! ~#fo! !ͧ!/ !ͧ`iw#w`i~#fo͡! s#rzœ! 6 #6`i~#fo! ! ~#fos{ `i~#fo! 6`i^#Vr+ss! n}! ͪ! n}`ͭ!9 ~#fo͐#)~#fos#r! ^#Vr+s͐ ^#Vr+s`i^#Vr+s*6++"6l͐ ͐s#r! ~#fo͐ ~#fo)w#wz! ^#Vr+s`i^#Vr+s!9Can't open %s ! ! ~#foA !9 Output drive =%s ERROR - Ignoring %s Ambiguous name %s ignored %s ignored ( already squeezed?).QQQ &Ü&Û%&:'!ßcNk'è(!9DM! ~#fo! ~#fo!Gͦ ! ! ~#foͩ #|)>15>@2G>)15ç"#(l'ͷ**͞)!2"ͫ'-L3#ͷ&"x0e5G)͍'ͫ'ͷ**͞)b)~F9#^#V##!2)))U~,L3G~`2<2<#~2<~?>|ʹ+>1o! ~#fo͐)~#fo#n}0L! 6! ~#fo͐)~#fo#w#||! ~#fo͐)~#fo#!!z}>26!! ~#fo͐)~#fò|¶*6&|g}o}26!64! ~#fo͐)~#fo#"6! ~#fo͐)~#fo#n}! ~#fo͐)`is{ ! 6`is2!`is{2`in}A!k`in} c`i6 *6}c! !`in&k!9ÉÜ&Û%ó1*ö1&!9DM{26{26{26! ~#fo͐ ~#fo)"6! 6#6`i6#6͐͐ ~#fo҆*6}Æ! ~#fo͐)~#fon}<1.5 08/29/81File squeezer version %s by Richard Greenlaw 251 Colony Ct. Gahanna, Ohio 43230 Accepts redirection and pipes. Omit other parameters for help and prompt Parameters are from command line or one-at-a-time from standard input and are outpu} ! 6!q*6}o!:!!:!:!|!*6}o*6!s#r*6w#w*6*6tempin.$$$tempin.$$$tempout.$$$ ! ~#fo!S!ͬ >!  ! ~#foͯ #|Z ! ~#fo!s!ͬ ! Ͳ >!">!ͦ ͵ ! ͸ ! Ͳ ! ~#fo!  ͻ !ͦ ! ! ~#foͩ #| ! ~#fo!!ͬ ,͵ ! ; ! s#rz!  ! ~#fo #|!T#=2<#^#V#^#V#"<^#V"<:<~#*<!:<@ʏ#"<*<#w"<*<~ʫ#¶#,L3;+"<*<+"2>! ! !ͧ!c !ͧ>2>>:2>>2>`i!s#r! ~#fo͐)"61*6&|g}o}26! ~#fo͐)~#fo#n}\!!z}! ~#fo͐)~#fo#̓!:! ~#fo͐)~#fo#͆#|! ~#fo͐)~#fo#!!z}!64*6}F͐! s#r͐͐ ~#fo'! ~#fo͐)!* `i~#fon}?, ! ~#fo!b !; 2 `i^#Vr+s ! 6!>! > ! ~#fo#n}:i ! ~#fo##q ! ~#fo! > ! `is#r`i~#fon} `i~#fon}. `i~#fo#n}· `i~#fo6 `i~#fo##n}q Q ! ~#fo!} !; 2 `i~#fo###6`i~#fo##t drives and input file names. Empty to quit. *D % &Û%:&ã !9DM! ~#fon}-j *>}͝}2>2 ! ~#fo#n}: ! ~#fon&5 | ! ~#fo##n} ! ~#fo!; 8 ! ~#fon}2>2 ! ~#fo!M !; 2 ! ~#fo`is#r`i~#fon}8 `i~#fon}~#fo! ͱ! ~#fo! ʹͷ*)L!ͺ#|>ͽ>22O!"0O! 9*** rescaling ***, l*"Ó"!9DM! ~#fo!vf! ~#fo*>f! ~#fo#n}:¸! ~#fo##s#r! ~#fo! ~#fon&i! ^#Vr+sn}¸*)Lͩ!*)L%5u $ &!9DM*>}3%*)L!<% $`iw#w͐$͐k">~#fo|ʼ$͐k">~#fo͐k">###~#fo͐k">##n&͐k">~#fo͐!W% $`i^#Vr+s2$!u% $`iw#w͐3%͐+Ln&'%͐),M! !ôî`i~#fo#|`*.O! ~#fo}/o|/g|g}o".O`i~#fo! ~#fo#?#|`!ô! ~#fo#|ʮ*.O! ~#fo|g}o".O! ~#fo! ~#fo#?#|®!ô!ô!9H ý!9DM! ~#fo?#`is#r! ~#fo! ~#fo)~#fo! |g}os! n*2OѯgWs*0OU>22O! n}M!R`in&Ï! ~#foQ"0O#|q!"0O*0O),M~#fo"3O*0O+Ln}22Of!9!9DM`iw#w`i~#fo`i~#fok">w#w`i~#fok">##6`i~#fok">###6#6`i~#fok!>*>!"!!!Bug - bad state 6"ä+Û%ó1!9DM! ~#fo! ~#fo-"! ~#foz"!|"!0"!3"Write error in putw() ß"k'Û%ó1!9DM! ~#fo! ~#fo͖"#|"!"!͙"!͜"Write error in putc() ")!9DM`i^#Vr+ss#r! ~#fo###! ~#fos#r! ~#fo! ~#fos#r! ~#fo! ~#fok">~#fo! ~#fok">~#fos#r! ~#fo##! ~#fok">##n&! ~#fok">##n&Ns! ~#fo+!! ~#foK`! ~#fo~#fo")L! 9!! s#r! ~#fo! ~#fof! w#w*)L`is#r! ~#fo! ~#foE`i~#fok">###~#fo! s#r`i~#fok">~#fo! s#r! ~#foͩҫ! ~#fo#ü*)L! ~#fo! s#r! ~#foͩ! ~#fo#*)L! ~#fo! s#r#fo!9!9DM! n! nѯgWͩ= ! n&B ! n&!9DM! ~#fok">~#fo! ~#fok">~#foҋ !&! ~#fok">~#fo! ~#fok">~#fo ! ~#fok">##n! ~#fok">##nѯgW !&!&s#r`i~#fo! ~#fo `i~#fo! ~#foq! ~#fo`i~#fo#)~#fo! ~#fo`i~#fo)~#fo|q`i^#Vr+s! ~#fo`i~#fo)~#fo! ~#fo| ! ~#fo! ~#fo)! ~#fo`i~#fo)~#fos#r! ~#fo`i~#fo)! ~#fos#r! ~#fo`i~#fo! ~">6#6`i^#Vr+sæ!9!9DM! s#r! s#r! s#r! ~#fo! ~#fok">~#fo! ~#fo! ~#foғ! ^#Vr+s! ~#fo! ~#fok">~#fos#r! ^#Vr+sC! ~#fo#! s#r! 6! w#w! ~#foo! ~#fo! ~#fo"`is#r`i~#fo#|.#*>`i~#fo">`i~#fo7#!9I#r+ &!9DM*>}#!#C#`iw#w͐Һ#͐|’#͐!#F#͐k">~#fo!$F#`i^#Vr+sg#!$C#!9 Counts after 1st algorithm and maybe scaling %4X 9DM`iw#w`i~#fo3`i~#fo+L6`i^#Vr+s !9B<!9DM! ~#fok">###~#fo`is#r! ~#fok">~#fo! s#r`i~#fo#|! ~#fo#|! ~#fo+L! ~#fos! ~#fo),M*.O! ~#fo|g}os#r! ~#fo! ~#fo! ~#fof! ~#fo! ~#fof! ^#Vr+s`i^#Vr+s1! 9T !!9DM`i6! 6*2O! nѯgW! n}‹`in&Ï`in*3O! ng|g}os*3O! nѯg"3O*2O! nѯgW}22O`in&Ï*2O&+`in*3O! ng>2!>!"r+ó1!9DM*!>};!R!!!">2!>! ~#fo!">*>>a!>p!>m!>z!!>2!>!!!">! ~#fo!">*>¶!*>Ҷ!*>#">Å!*>>!>!>!>!!*>">>2!>*>>2!>!>2!>*>">>2`is#r`i~#fo|?! ~#fo+`i~#fo! ~#fo`i^#Vr+s!9Qý !9DM`i6#6! ~#fo! ~#fo~#fo! s#r! ~#fo! ~#fo! ^#Vr+s)~#fos#r! ~#fo+!! ~#foK! ~#fo~#fo! s#r`i~#fok">! s#r! ~#fok">~#fo! s#r! ~#fo! ~#foa! ~#fo|a! ~#fok">! ~#fos#r! 6! ^#Vr+s! n}+! ~#fo! w#w! ~#fo! ~#fok">~#fo! ~#fo͉s#r! ^#Vr+sÒ! 9ý!9DM! ~#fo++~#fo͐+Ln&͐͐!% $`i^#Vr+s$!9 Encoding tree - root=%3d %3d w=%5u d=%3d l=%3d r=%3d Huffman codes %3d %4X l=%2d c=%4x ä%+d/!y9DM! `i͞%͐`i͡%%!9%//!9DM! n&%|ͣ&! n&|2q /4%4:qw 4! {w7:)~:,"s!"u*|ʗ4**sœ4! ~—46*u*+"*"*u#"uc47*!9& 6C#6O#6M4*|4!\&5!\ n}.! 6#6! ^#Vr+s~#fo! s#r͐n}u.͐|u.! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s+.͐6! ! s#r! n}.! ^#Vr+s!.! ^#Vr+s! n}.!0.! sÑ.͐! ^#Vr+sns{.! ^#Vr+s.! n}&/!!q'͐##^#Vr+sz=(͐^#Vr+s! ns&!͐͐~#fot'g(!͐##6#6͐͐s#r͐^#Vr+s! ns&ô(3Å33!9DM͐(!)͐##~#fo(!)͐##~#fo !\&!TELk762÷4Û%ó17*^#V#z>2+V+^+I2*-2!g2!0232Broken pipe 7,2q*&:q):ʱ2=ʱ2=r:qo&2ö1u27*ͼ2\!*Ϳ2#  3 >1h1!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{U/`in}%?/! ! s#r! 6#6! s! s! s͐n}-”,! ^#Vr+s! 4͐n}0¤,! 4͐n&+},! +,!! s#r! ^#Vr+sn`is{. -! +! s#r! 4! ^#%|ͣ&+r+!y9DM! `i&`i&!9!9DM͐`is#r͐n}d&! ^#Vr+sL&! ^#Vr+s͐ns! ^#Vr+sn}d&͐Ó&!9â&u2!9DM͐!͐͟&s#rz&!͐##w#w͐~#fo&ù2!9DM͐͐&9DM! n&aͯ(0! n&zͯ20,0!9DM͐͐ ҂0͐^#Vr+s͐ o0͐0w0͐7s!&0͐ ͐͐ ͉͐/0`is͐ ͐͐ )͐/0`in&#&0!9!9DM! n&0ͯ1! n&9ͯ ^#Vr+s!&/! ^#Vr+s6 .<3~# x¨3 ><3~+ x3|}3Ü57:,*3:*3}Vr+sn`is`in&,}D8-Ut-X}-Oʆ-C-S-)/͐~#fo|t-! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 Ì-! 6Ì-! 6! ~#fo! n&! ^#Vr+s~#fo! +ѯgs#ru.! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+su.!s#rz '!͐͐s#r͐##6#6͐~#fo@'2!9DM͐Z'!͐~#fo='w'2à13!9DM͐+|—'! n&n'͐++|µ'! n&!q'͐+++|'! n&!q'͐++++| (! n} '! !q'! n& 10!9DM`iw#w͐~#fon&1}X1͐ ?͐^#Vr+snѯg`is#r1͐_1!9n1/!9DM! n&k1|ʕ1! n&Ú1! n&7:O*o`  !\&!7*!1&*!2&1!,n! ~#fo͐n}=+! ~#fo`i^#Vr+sn}:+!i+*! ~#fo͐n! ~#fo͐nѯgWi+!9x+2!9DM͐n}ʢ+! ^#Vr+sn&u+À+ê+k'!9DM͐͐)ͧ+|+͉͐͐ͧ+|+͐!,,004!9DM͐|*)*͐+++|/*!)*͐##^#Vr+szY*͐^#Vr+sn&*!͐͐~#fo)`is#r!ږ*͐##^#Vr+s*͐##͐?+s#r͐͐s#r͐^#Vr+sn&*!9!9DM`iw#w! ~#fo͐&*|5!!l&!~#foF5> +=5#~+5##5a{ !pr5!*w#S5:**j5*!ѷ! , FNxg>Goy5$ncreased execution speed, although the conveniences of operating on lists of files, automatic name generation for squeezed files, and output drive specifiers were also added in the later versions. Early versions called the following chain of fun)>15>@2G>)15ç"#(l'ͷ**͞)!2"ͫ'-L3#ͷ&"x0e5G)͍'ͫ'ͷ**͞)b)~F9#^#V##!2)))U~,L3G~`2<2<#~2<~?>k2*&&&>002(x0J:*>0:2*2 *  *  *#ڑW+}ʢzŒÈi`:ʱ)=¬   : Total of $k in $ files with $k space remaining.$>:> _frequency distribution and builds the decoding and encoding structures. Then wrt_head in file TR2.C writes control information and the decoding structure to the output file. In the second pass, encoded bytes consisting of bits and pieces of bit s+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77\21>:21>21`*K͞+) (35'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|ztrings are generated by function gethuff in file TR2.C and are simply written to the output by squeeze. Development History of SQ There have been seven operational pre release versions of SQ. The motive for change in each case was primarily i!a{   `OE!y6$ -7rBo&))T])))!y!>15:<15>{15Y/e56!'":}15Y/!:&1515\0!:</"͞) :<@"ͧ*͞)Z!:<>L">15"#"*{ozg"*"> ͎E**y**{ozgEE**#{z*!+"!""*+}ʝ ʁ*> b##"*+"k*^#V#" >  ^#~))))!o&:/o*"*#" >k*+}P" ance of the various byte values being encoded. Outline of SQ The interesting work begins in function squeeze in file SQ.C. In the first pass, init_huff in file TR2.C reads the input through the first encoder, getcnr, in file TR1.C, collects the #z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/o1.5 08/02/81File unsqueezer version %s by Richard Greenlaw 251 Colony Ct. Gahanna, Ohio 43230 Accepts redirection and pipes. Omit other parameters for help and prompt Parameters are from command line or one-at-a-time from standard input and are ou n}-! 6#6! ^#Vr+s! ^#Vr+sn! sͻ|_͐ ?! nѯg`is#r͐͐?o!9Áê"L"!9DM! n&{|ͣ®! n&~|ͣûs"!y9DM! `i͵`i͸!9$!9DM͐!͐~#fo#")! ~#fo͐)~#fo#n}O! ~#fo͐)!s#r! ~#fo͐)")d*)&|g}o}2)! ~#fo͐)~#fo#n}!!ͭͰ! ~#fo͐)~#fo#Ͷ!-! ~#fo͐)~#fo#͹#|! ~#fo͐)~#fo#! !ͭͰ!)4*)}yt ambiguous name %sA Iïø&Áoò)fó!9DM`i!- ~#fo #|z !- ~#fo!z! q!' w#w!"1 `i# vʸ !- ~#fo!! j`i# ! s#r"5! s#r! ~#fo`i& s! ^#Vr+sn} ! 6!1(`i~#fo" 5* 5#|!0u"5* 5TT! ~#fo"5|F!TT*5++"5* 5T!9cÁ!9DM`iw#w*5#"5! ~#fo`"5#|!@!"5`i~#fo))1*5|g}o)~#fo`is#r`i~#fo))1*5"5|g}o)~#fo`is#r`i~#fcksum error in %s Á$+$!9DM*)}P! )`is{ M! )`ise!`is{e`in}t!Þ`in} –`i6 *)}–! !`in&Þ!9üI+$.$!9DM{2){2){2)! ~#fo͐ ~#fo)")! 6#6`i6#6͐͐tput drives and input file names. Empty to quit. *J ÀøIxò !9DM! ~#fon}- ! ~#fo#n&8 F͝}225}ʏ ! ^#Vr+s!"05! ~#fo#n} ! ~#fo#; "05| ! ~#fo#! !> ö ! ~#fo#n}:O ! ~#fon&A |5 ! ~#pecifierCan't create %s /ó.$)fC$â$*)}@! )! *)}ʢ!-!#!-&!-!!)*)}ʢ*)!s#r*)w#w*)*),tempin.$$$tempin.$$$tempout.$$$dâ! ~#fo͐)~#fo#n}c! )! ~#fo͐)~#fo#ͪ#|¯! ~#fo͐)~#fo#!!ͭͰ>2)!! ~#fo͐)~#foͳ|*)&|g}o}2)!)4! ~#fo͐)fo##n}2 !"05! ~#fo! D ! ~#fon}21ö O ! ~#fo! !> ö ! ~#fo`is#r`i~#fon}ʩ `i~#fon}*ʃ `i~#fon}? ! ~#fo! !> ö `i^#Vr+s] ! ~#foG !9 BAD COUNT %s Output drive =%s ERROR - Ignoring %s Can't accep! !-! n&#|0!!*)&|g}o|E! |e!+++|e! n} }! !! n&!File output error; disk full? !"5!c"5]!9DM*5*5+"5* 5TT! ~#fo`is#r!! ! ~#fo8 #|/! !! X! ~#fo*1X! !! ! ; ! > `i> !)9Can't open %s %s is not a squeezed file %s -> %s: %s has invalid decode tree size Can't create %s Write error in %s ERROR - che! s#rzʜ!' ~#fo*05Ҝ! ~#fo|g}o! s! n& Y! n&~ҍ! n} v y ʄ ʄÇÙ!' ^#Vr+sÍ! 6.! n&/ *25}ʬ! / j! ! 5 #|! !! X`i2 ! s#rz2*1! ~#fo"1s#rz!͐##w#w͐~#fo,Á!9DM͐)`is#rzr͐)! s#rzr͐?͐x!x!9Í$1%!9DM͐|¤̈́f͐+++|»!͇f͐##^#Vr+sz͐^#Vr+sn&f!͐͐~#fo͊сoy($G##g'a{ !p'!*w#›':**ʲ'*!ѷ! , FNxg>Gis{="`in} "͐! !͐`in&!#|:"!C"!!C"!9!9DM! n&aͯw"! n&zͯ!9DM! n&0ͯڦ"! n&9ͯ!9DM! n&Aͯ"! n&Zͯ"!9DM͐n} #! ^#Vr+sn&͐~#fo2%!͐##6#6͐͐s#r͐^#Vr+s! ns&r%@&Ñ&!9DM͐ҍ!ê͐##~#fo¦!ê͐##~#fo`is#r͐͐͐~#foi͐!ê͐+?`*|*u>&*~#&"*s*u>&#"u*+"&7*|DM**͋&o&><&~+ x&|}×&'7:,*͔&:*ʹ&}|2q &&:qw&! {w# ! 6! ~#fo! n&! ^#Vr+s~#fo! vѯgs#r ! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s ! n}Ž ! 6#6! ^#Vr+s~#fo! s#r͐n} ͐| ! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+sé ͐6! !`is#r!"͐##^#Vr+sf͐##͐?+s#r͐͐s#r͐^#Vr+sn&f!9!9DM͐`is#r͐n}ʙ! ^#Vr+sÁ! ^#Vr+s͐ns! ^#Vr+sn}™͐!9ç%!9DM͐͐s#rz!͐`is#r#͐$!97:O*o`  !\&!7*!m$&*!}$&m$!, !\&!TELk7î$&I+$7*^#V#z¶$+V+^+$*ͥ$!$!ͨ$ë$Broken pipe 7,2q*""# #!9DM͐͐ a#͐^#Vr+s͐ N#͐0V#͐7s!&ì#͐ ͐͐ ͉͐#`is͐ ͐͐ )͐#`in&#&ì#!9û#{"!9DM`iw#w͐~#fon&͸#}$͐ ?͐^#Vr+snѯgis#r͐##~#fo|ʃ!͐͐͐l͐##~#fo͐s#r͐~#fo͐s#r!!͐~#fooê͐##6#6͐͐s#r!ê!9ù&!9DM͐!͐~#foͶ!9DM`iw#w! ~#fo͐7*!9& 6C#6O#6M.'*|D'!\&V'!\&*|V'!!l&!~#foʎ'> +ͅ'#~s'##g'a{ !p'!*w#›':**ʲ'*!ѷ! , FNxg>G s#r! n}J!! ^#Vr+s!J!! ^#Vr+s! n}A!!0D!! s!͐! ^#Vr+sns{s!! ^#Vr+sJ!! n}ʤ!! ^#Vr+s!Ҥ!! ^#Vr+s6 }!ú!! ^#Vr+s`ins!! ^#Vr+s`insñ͐6!9!)!9DM! ^#Vr+sn`͐s#r͐##6#6͐~#fo5$%!9DM͐+|U! n&,͐++|s! n&!/͐+++|’! n&!/͐++++|! n} ·! !/! n&!/͐##^#Vr+sz͐^#Vr+s! ns&!&:q):)%=)%=r:qo&7:)~:,"s!"u*|ʇ%**sŒ%! ~‡%6*u*+"*"*u#"uS%ð%.$$7*ͪ%\!*ͭ%7:)~:,"s!"u! ^#Vr+s! 4͐n}0"! 4͐n&y}?! |B!! s#r! ^#Vr+sn`is{.Š! |! s#r! 4! ^#Vr+sn`is`in&}DʶUXO CJ S{ ç!͐~#fo|! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 ! 6n! ~#fo͐n}>! ~#fo`i^#Vr+sn};!j! ~#fo͐n! ~#fo͐nѯgWj!9 #{"õ#À!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{!`in}%½!! ! s#r! 6#6! s! s! s͐n}-!9"2!!]~ 0+ )>2F!e~ =F)\a:n!"4g1!~:‚*͛1}*͊@Gʨұ Ҩ*~#Â~#  #~:ʹÂ*~͕#~n rugged workout. Text files are compressed 33% to 46% depending on the richness and distribution of the alphabet. V0, for which listings have not survived, took 5:10 (five minutes, 10 seconds) to squeeze itself! This was improved to 4:23 by the z_ærCB@ǻ jPj581{t_e/ߌZx|7vc}a5oN2. %G4ᦔh}(7>2R۔{%=S~}lL+|7vc}v眰 't6Z@Z MAx:ejUNѺF-q9(Nwc7WU+]k56XNBY#id Response $ HELP ERROR -- EOF on HELP File $ Type CTRL-C to return to CP/M, "*" to select all, or enter selection - $ections are -- $HELP HLP Type "A"=Abort, CTRL-C=CP/M, =Cont -$ HELP FATAL ERR:The HELP Subsystem for Online Documentatily, those versions used a dummy function for get_cnr, the repeated value encoder, although the actual code was present. This was to simplify debugging and because USQ did not yet have the inverse of that translation. The benchmark for comparisons (kbYQ^-e;=(Jf2VUx(aO#὇kS{(yĚ8 Cu}\Zb%ԿGLwc7VWa`k%Ų ""ymCpuc`*&\b{l lVMS{I}ݦ#>Qj4ٵeAy|j?Y > >2!͕>A2}l~:} :}<2}>.> Oî"~͕O~: :GchA\ȃBw=7z2bk|w;|c G|/9* ߃X7Wm<|S+(c?Mº1,D~`sJۇս= P~ qHuոv)Zu|o=ܔ ej؍U|/dr6+ʻ/+J&ty0a\]Qƻ-,Y@q,'{~6?X1E\TN//ێICSDcԸ 4A `<9C庇qt%o$Ak|7v7؍m5?i<7*ƽ4{jkwE_ËM@6&=-#vjw;|IC}cHwͮ龗>?EqnG ^W簹6c{&\b=2v߉SQ/USQ.HISQ r !"#$&%(')+*-,./0213546879;:=<>?@ABwas not consistent because files were lost at two points. In effect, the current SQ.COM squeezed itself! It typically acheived 6-7% compression on a machine code file of 8K to 10K bytes. Of course machine code is not a practical case, but it is aݍvGCjȼRa5=R܌J%G4aQ;7]G: t|} PTMSJ{Mi to continue -$ HELP File Selections are -- $HELP HLP Type "A"=Abort, CTRL-C=CP/M, =Cont -$ HELP FATAL ERROR -- File not Found$ HELP ERROR -- Invalctions to get a byte of encoded data: gethuff, getbit, get_cnr, getc_crc and getc. It wrote through putce and putc. That's a lot of function calling. In addittion, gethuff and getbit were passed pointers to functions to identify get_cnr. Actual%Ų=`5%E ǻ~S:{7wxF4/9MUrJDJet+bYQװ.u\|5,s6q?M]ވL(a0UEJwc7V55h56(kcEy6vI|mSE1EWHc6ĺ+kSHxeE_ÞZQc{CDCEFGHoJKILMPONR%V RΦW5X5>`Œ-7Q~FNgOݨRӜd onTiN9bEIxvc74ҦݨRӌKם~ ؍`… `PQi|d>¢+optimizer option of the compiler, which simply generates in-line code rather than subroutine calls for all local and external variable accesses. It was further improved to 4:18 (and restored to its original length) by the -e compiler option whic slight loss of ground to 1:30, but more productive work. V0 through V4 worked from Huffman code bit strings of indefinite length accessed through an array of pointers. Each string was byte alligned (unlike the final encoded data). V5 was a 0CCH ;THIS IS WHAT IS NORMALLY THERE JZ CONT ;IT IS, SO CONTINUE JMP BOOT ;IT IS NOT, SO ALREADY HAVE RUN HIMEM, EXIT CONT LHLD BDOS+1 ;LOAD CURRENT BDOS JMP SHLD HIMEM-2 ;PUT IN FRONT OF HIMEM calling getbit eight times and packing the bits. This is the obvious method because the Huffman translation produces variable length bit strings, not a byte for a byte. V1 introduced the variable codebyte to the getbit function. It was rotated ea seperate returns from each to avoid unnecessary work. The changes of V1 and V2 reduced run time to 1:41, a whopping 61% reduction! V3 incooperated getbit into gethuff. This wasn't difficult because getbit was called only once by gethuff. It racations 6 and 7. ;This causes a jump to 3 locations before HIMEM. This program then ;writes a jump to the old BDOS vector from HIMEM (around your program). ; BOOT EQU 0 ;BOOT ADDRESS BDOS EQU 5 ;BDOS ADDRESS JMP HIMEM EQUh specifies the origin of the external variable area to allow direct addressing. (The BDS linker resolves only function names - externals are actually like FORTRAN COMMON and are normally accessed relative to a pointer kept in RAM!). Subsequent im rugged workout. Text files are compressed 33% to 46% depending on the richness and distribution of the alphabet. V0, for which listings have not survived, took 5:10 (five minutes, 10 seconds) to squeeze itself! This was improved to 4:23 by the MVI A,JUMP ;LOAD A JMP OP-CODE STA HIMEM-3 ;PUT IN FRONT OF BDOS ADDRESS LXI H,HIMEM-3 ;LOAD THE NEW JUMP-TO ADDRESS SHLD RESET+1 ;STORE IN RESET VECTOR JMP BOOT END ; HIMEM.ASM Version 1.0 ; by Gordon Banks ; 2/28/81 ; ;This program sets a "HIMEM" (to borrow a term from Apple BASIC) ;which serves to protect a region of memory from being overwritten ;by on in 1:27 (on a slightly smaller file), another 14% reduction. V4 removed the pointers to functions mentioned earlier and substituted direct calls. However, at this point the real translation for repeated values was enabled. The net result was a 09600H ;STARTING ADDRESS FOR PROTECTED ROUTINE RESET EQU 0DAF0H ;WHERE CP/M LOADS THE BDOS ADDRESS JUMP EQU 0C3H ;JMP OP-CODE ; ; ; ORG 0100H ; LDA BDOS+2 ;WHAT VALUE IS ALREADY THERE CPI provements came mostly from recoding the key routine. Copies of gethuff and its partner getbit are attached for versions V1 through V6 and the complete listings (20 pages) for V6 are included. In V0 through V2, gethuff forms an output byte by ch time a bit was removed, so that subsequent calls had to shift it only one bit position. This involved considerable change. Timing is uncertain now. V2 continued to improve the getbit function by customizing the three basic cases and providingem knows how much memory is available for transient programs ;by the jump vector in locations 6 and 7. This vector is reset (to ;CC06 hex for 56k CP/M) every time a warm boot is done. This program ;changes the reset routine to put a new vector into lother programs (such as BASIC programs compiled by BASCOM). ;This is needed by Apple users since the usual method of protection ;is to use MOVCPM to lower the system in memory, but this is not ;currently being made available by Microsoft. ; ;The systcomplete redesign of the storage and retreival of the array of code strings. I had finally succeeded in proving that the maximum length code string would fit in the same space as the sum of all frequency counts, so scaling in init_huff was made mornJ0e7M8M*q=jo56gѨ ~= {(ݟ#.@C/9%%/nkaX1/x:uSՄIEUH{R!fcs:oķA{H&ܨ rl6\MxwIhtR^v>=H3^䪕zc?=^Cpԇ*ǚ<߃B"~So߈ntKy|ckbS/'j~ ~F]{ډ)3^?̱/։_)WV>!Xҟo8sҌ?ն!8Vf?@a`eC3}6Up2lNB+|m+ßO;͆{h4 -{?7%ek6u"X,mRF~QמD {b|^??̱/։N78 *#X~ second variant, changing the variable cbitsrem to a char from an integer saved another 5%. V6 restructures the gethuff of V5, replacing the while loop with a custom (goto) loop with the exit condition tested only in a special case. The two basiyo<֖i‹vtJ1- uc1?Д^C0#ӮMψ|7vC鐈,N& ETTus qH%gāϢ|%yx,J>5ݗB"m#>ωw4JДkS{4=uˊrd7u{/Wlb&nl98f/9 t Qd {h d)Qi, x1]rt߀Syy0+.1ʏa.ۛ+] s?My-⟰~2Yͫzsa] ??T=%ډ)3^y:W:C4V0e rigorous to fit them into unsigned integers (16 bits). This redesign paved the way for a relatively simple method of processing the code strings several bits at a time, rather than singly in an eight pass loop to form an output byte. At thiiSܭck?ebl,ybsBuS,:AXV_KxMΠQ{Yߖ2HS坡l;srv)/_'A;vavG6L()yݵs6_o)4l-Ƌb1q8OJ.zђO'hvMg{4[zuâRTJ eRJ%G~âĺ2FY}l]%Ru)cL؍. Cy龗x/Qq8 CS:W9~]MI::t]Ο{E;F,1 %֝?^lH~AG2|ucﶣ(KV^C=ement was probably a factor of 5. DONE A0>aking credit for the enabling of the repeated character encoding) was about 4.5 : 1, or a reduction of 78%. The true improvant of V5. The overall performance improvement ratio, scaled for the one major change in the benchmark workload (but not taking credit for the enabling of the repeated character encoding) was about 4.5 : 1, or a reduction of 78%. The true improv TYPESQ.DOC as of 7/6/81 by Bob Mathias and Keith Petersen, W8SDZ TYPESQ.COM is a program primarily for use on remote CP/M systems to allow typing "squeezed" files. It does not accept wild cards, but will accept multiple file names on the commr!  ~#fo))6##`i s#r!  ^#Vr+s `i ! s#rz *6! ~#fo"6! ~#fo|g}o! s#r! ~#foҍ ! ~#fo ! ~#fo  ! ~#fo  ! ~#fo  ! ~#fo  ! ~#fo , ! ~#fo*6# ! !  E1!&,2#%"d/04b(ͨ&&)*͹(}(~7#^#V#/" 1)))S~+2G~`24;29;#~23;~?>o"=2-;#^#V#^#V#"5;^#V"7;:9;ʙ"* ;!:4;@ʪ""7;*K;#w"K;*K;~""/+25:+"K;*K;+"K;! BE 3 DIGITS$^!twd!}wx*++NO '-NAME.NNN' IN NAMES.SUB ++REISSUE: UCAT -NAME.NNN$h!twp!}w4(!4w#)4 xŒ*++TOO MANY IGNORE NAMES FOR TABLE$*++NO IGNORE NAMES IN MAST.CAT$*++EOF READING FãáêPFóè!9DM!) , `i!* ~#fo #|o !* ~#fo!W f Can't open %s * !"6  `i vʾ !* ~#fo! õ %s is not a squeezed file # `i ! s#r":! s#r! ~#fo`i s! ^#Vr+sn} !+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#.¶66*>?w#> w#.7:77and line, separated by spaces. The output to the console is "filtered" (like MLIST) to eliminate control characters other than CR, LF, TAB, or FORMFEED. The source code file TYPESQ.C is compiled the same way as USQ. See SQBUILD.DOC for instructions`i~#fo)~#foͧ`i^#Vr+s! ~#foҫ!5i TYPESQ is used to print files squeezed by SQ.COM.ͪ!tã To run this program, type 'TYPESQ ' ͪîͭ!9i; !9DM! ~#fo#n}:g ! ~#fon&ͺ|: ! ~#fo##n}7 >"K;6!/>"M;*K;~*3;*M;s#r#*5;s#r#*7;s#r#*/;s#r#*1;s#r#:9;w#"M;{#*>;*M;s#r#*@;s#r#*B;s#r#*:;s#r#*<;s#r#:D;w#"M;{#|?†ð3 ÷;Ï!9DM! ~#fo! ͤ>26>:26>26`i6#6`i~#fo! ~#fo! ~#fo*K͞+&c 0:'+FÎr7 :2!q: ʊ *M8 ^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z 6!6!  !":!  ! !* ~#fo!3 ? %s -> %s: !L O `i ! s#r! ~#fo| ! ~#foں !* ~#fo! ñ %s has invalid decode tree size # !"6!"6!  w#w!  ~#fo! ~#fo, !  ~#fo))6`i s#!a{   `OE!y6$ -7rBo&))T])))!yg!>3͹(>3>@2:;u *1;";.04:/;2/;";|¶!}§!=/04ʽ!ª!=004>G>)3!#'͇&)*͹( . TYPESQ is based on USQ by Richard Greenlaw, and was written by Bob Mathias, with suggestions from Keith Petersen.  CR, LF, TAB, or FORMFEED. The source code file TYPESQ.C is compiled the same way as USQ. See SQBUILD.DOC for instructions! ~#fo! ! Output drive =%sͽ! ~#fon}26 g ! ~#fo!I ^ ERROR - Ignoring %sͽ ! ~#fo`is#r`i~#fon} `i~#fon}*ʛ `i~#fon}? ! ~#fo! Can't accept ambiguous name %sͽ `i^#Vr+su >2&! ~#fo!9 ;#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/oRROR - checksum error in %s `i !&9? P!9DM*&}p ! &6 `is{ m ! &6 `isÅ !9 `is{… < `in}” !þ `in} ¶ `i6 *&}¶ ! !9 `in&þ !9 ãÑ!9DM{2&{2&{2&! ~#fo! ~+s! n}6! ^#Vr+s!6! ^#Vr+s6 L! ^#Vr+s`insb! ^#Vr+s`insl͐6!9z!9DM͐n}ʤ! ^#Vr+sn&wÂ!9DM! n&Aͯ! n&Zͯ!9DM! n&aͯ! n&zͯ#6! ~#fo! ~#fos#r! ~#fo^#Vr+sn&=!9!9DM͐`is#r͐n}p! ^#Vr+sX! ^#Vr+s͐ns! ^#Vr+sn}p͐ß!9î!9DM! ~#fo~#foͫ.!y9DM! `i͐`i!9ion/pipe specifier! ! ~#fo`i~#fo)~#fo# !.! ~#fo`i~#fo)~#fo# #| ! ~#fo`i~#fo)~#fo#!ÒCan't create %s ! !&4*&}:`i~#fo! s#r! ~#fo! ~#fo~#fo! ~#fo! ~#fo)! ~#fo! ~#fo#)is{.0! 7! s#r! 4! ^#Vr+sn`is`in&:}D\UʘXʡOʪCS!9͐~#fo|! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 ð! 6ð! 6! ~#fo! n&! ^#Vr+s~#fo! 1ѯgs#rÙ! ^#Vr+s!`is#r`i~#fo!#`i~#fo`is#r`i~#fo2!9D.t!y9DM! `i>`iA!9ræ!9DM! n&l|ͣŸ! n&o|ͣé !9DM! ~#fo!͐ͦs#rz!! ~#fo##w#w! ~#fo~#foP!9#fo~#fo)"&! 6#6`i6#6`i~#fo! ~#fo~#fo҆*&}BÆ! ~#fo`i~#fo)~#fon}o! ~#fo`i~#fo)~#fo#n}‘! &! ~#fo`i~#fo)~#fo# #|! ~#fo`i~#fo)~#fo#!Can't open %s ! >2&! *&&|g}o}2&ä!&4! ~#fo`i~#fo)~#fo#"&! ~#fo`i~#fo)~#fo#n}ʼ! ~#fo`i~#fo)!â.TEMPOUT.$$$s#r! ~#fo`i~#fo)"&*&&|g}o}2&! ~#fo`i~#fo)~#fo#n} !Bad redirectos#r! ~#fo^#Vr+s! ns&=nGê!i9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{e`in}%O! ! s#r! 6#6! s! s͐n}-! ^#Vr+s! 4͐n&4}! 7!! s#r! ^#Vr+sn` :* :#|!0u":* :FF! ~#foͶ":|8!FF*:++":* :F!9UP!9DM`iw#w*:#":Ҿ! ~#foR":#|!2!":`i~#fo))6*:|g}o)~#fo`is#r`i~#fo))6*:":|g}o)~#fo`is#r`i~#fo|c`i~#fo#n&#|A!4File output error; disk full? !*&&|g}o|V! |v!+++|v! n} Ž! !! n&!!":!c":ùO!9DM*:*:+":* :FF! ~#foͶ`is#r!`i~#fo"  !9DM! ^#Vr+sn`is{_`in} @͐! ͐`in&#|\!e!e!9tn!9DM͐͐ ͐^#Vr+s͐ ұ͐0ù͐7s!&͐ ͐͐ ͉͐q`is͐ ͐͐ )͐qMgX71xJ%|%y(=i_v_y@>%(.ru>X7&^eU9F!mwc7֯k#hv]Ur0_:6. {B*W_Ɩ9=(xtGJ\:68~SpK?YL1ߝΆ_'Pif[kNY vy#uRxvʭ+tgվvS>{ -} CmO)n)yMw6h.՞ns< eU;Z_'9avS~:Z ŪO/O7q'+9a`[ɶmR2u澱r)>ԯ6Kg^^8+g)DO5EΦQ9nƶG ĺ(_·l o$ϢJl4<'x|ϗp2Yͅuy^?wPu)NL).C$su"ဢLv8`QnXmݗCΩf\>ټ6ՊDP&L|nxßOw ?VBP=bl^ċ=_«zs2Yͅu5*Qמ]?ԫNr0}N=J3孌>}y޽} wg!~)~:N5>{ &!7,2q*&:q):I=I=r:qo&7:)~:,"s!"u*|ʧ**s¬! ~§6*u*+"*"*u#"us# 7*\!*7:bG؎=u*KKrT~S ^7X=0?7S'ߍXA{9kj|dsB_U h龘ƏwMb{huXIso{P&. CO64v{Qci 8C$Dï+c٫`!ZJ6td>.IojM(j5]s5iύ[;͆bZK؜cs~2YGZ꣮=%ډ)3^ >ԫNr0׶]EPA t/gXҬdcWq[Cз%uPuaxn:ʦT?D= ܨ {Yָ@b _{R+W^Wi y5ءj**ql#˲^qJI[b|7vc~u}%tҖ7ScU?HxH x/JY=_P?MG\0%1ԋM%G-qeM>t6A4lE6 "d:" is the disk the HELP File resides on (optional) and "topic" is the name of the HELP File (topic.HLP, like CPM.HLP). Please refer to the HELP File "HELP.HLP" for more information. o7}@/nVt;n oaq@/=`q(anZiٍ@bxsşn mkre~[dtΏtB\jZ T6 8v,RplG/1axl^ @(C\AֶFaAsg?bݠkwZ!mmk۱ $VǏ0SG Y:Vqeoǘ* *ܣ,K# xn8-{i3\q>~  xV(AK{Ay-:)F!MrP%mȃG>gi7^R=n*io}7vCu[{kM==(xtGJ\:68~SpDY7z?+n uμ??VRC^eo >xqiZܟxL =#E?hϗ~q8O`<#,W(kS{Q; uɇcrbrrJ|X?@omation you are now reading is displayed. If the user desires information on a specific topic and he has a HELP File of that name (ie, CPM.HLP is a HELP File on CP/M), he may issue of HELP Command of the form -- HELP d:topic where!;QOiY4~ׂ{#ZRgchANT>QΉi=y{:C{~RC^bZe]d!-^G&Lri xp4HeL/4|&_ 8v,RplG/1axl^ @(C\AֶFaAsg?bݠkwZ!mmk۱ $VǏ0SG Y:Vqeoǘܨkcl֖&{CԸT?ǻ{ ,4< !W2 >ctor may be invalid++ :O26 ++CANNOT WRITE UNLESS READ ISSUED s26 ++WRITE failed++ 6 Operands in brackets [...] are optional Numeric values: 'n' are decimal, 'x' hex +[n] step in [n] sectors; -[n] step out [n] se ** #>2\y y \D2|~.ʡ ʢ ;ʢ #y ~ ;#.#> ¢ ~ ; ͙ z( z *`*Ha ~ ; ͙ z*+| z :2͙ {$ @:1> x1F$POÁl~ ;#AOy2:ʥ|^#V#"!~#fo=*H`*|2g *"!"*#DMBK:=*H*`)o|g 6 :!WOʲ Ubbʚ| w#K+>*w> !Wɯʲ+yv~͇͇}  $6 Ϳ!W~ #ä>^>U > > `_O > :4 , no sector read. 26 Use G command following F, or R or S following T ~;] fyZ BK y;y#Z `i} , , :A~ }, }, {ʱ#}‘F:H1 ~ ~>.{#}1 ͿF{|Ϳ{|2212>2!"F:˜ ~ ;#2+ʫ - =ʃ#?uACʸ DF G HLfMNʨPQʹRl S T UViW XZ/ʿ26 ?26 +++ Out of memory +++ 6 Disk Informat  "#y * ~ ;#~ ;,- "͙ { yZ *. ~ ;:y 26 ++Can't read - not positioned Position by: Track then Sector, or Group >< >>: x y  *| *"* +"*"z *#*Q *#*J "!"] **ډ 6 G=*DM >:: >,6 T=* 6 , S=* 6 , PS=* Ϳ~#Z #- Z #BK ,H. A~ ; ~  ( ! x: : ͙ {:BK >-*#}R|wFʂzk{E ͊: ͊Ϳ* , |~> œ>(~ , #>., ~ ~> >)6 ++FREE++ :2ʿ>:, ~#  :y >2, ,:<2:8*ڤ"BK*"*`iҀ:š+Ú* :g:š&i"DMɯ26 ++not within tracks 0-* 6 ++ >226 ++READ failed, se~;  W T( SD Gʼ  *ڤH>2a z*`2g W ****+:G}2:GŒ "*2:2-« o&" ͙ *ڤ"2 H`2W bk:)= :o*ion: Tracks: *# 6 Sec/trk: * 6 Grpsize: : >*F~N Q #~7 #͙ zo {o ƀ_ɯ26 ++BAD DISPLACEMENT (NOT 0-7F) ~# ~ ;,->#0: AG0))))oâ #~ ;,-#0:0bk));26 = AT : Ϳa ~<#~<͙ >{:G*}b( 2*`*Hg !~#":͙ {z!F~~Ҥ ҫ ʫ ʫ ʫ~ î,}( *`*Hz6 ++EOF++ Ϳa :R26 ++Can't dump ~ *#"!~~N_#~N:BW#eC *+"|"!:!!>2:ʚ!26 ++NO "<" SAVE COMMAND ISSUED ~#ɯ2F!W6 a 4G~ for hex: To find "IN 0" use: =<0> or "(tab)H,0(CR)(LF)" use: =<9>H,06f>]ߩ{ӽv~/}/dÒSzjsn9|  o^KT/T{jҧg_lX]u?cj_;ڜ[Zi 8˟\ޯtd.m8p5S3>-8S}FHGIJKoLMNOPQRSTUVWXYZ[\^]_`azZڽoei1/g/R?w2荭~}=2`z?ߕ껍 VWy/ƾN{g^5f (Type any char. to continue) N New disk P Toggle printer switch Q Quiet mode (no msgs) R Read current sector Snn Sector nn Tnn Track nn Unn Set User nn for Find command (CP/M-2 only) V[nn] View [nn] ASCII sectors |M7,aX7]S3Ծr:,-wo(A}, 8+n^r|LW{QQWs}or½UUfV9t[\g{/.[V-usq#{jqg}7_fy4ZUtt[\rjsnaÒStd.m8V}R/>:oS3PONSE CALL PRINTMESSAGE JMP HELP1 ; VALID RESPONSE -- LOOK FOR AND PRINT INFORMATION SECTION HELP2: INR C ; 1 MORE THAN NUMBER OF POSSIBLE SELECTIONS CMP C ; GREATER THAN NUMBER OF POSSIBLE SELECTIONS? JNC BADRESPONSE LHLD FIRSTENTRY ; GET> < save current sector into mem. buff. > restore saved sector ? give help A[ff,tt] ASCII dump (Type any char. to continue) C Change: CHaddr,byte,byte... (hex) or CAaddr,data... (Ascii) Allowed for ̀ʂV+ۜ[ow^e^_W.wsXSW~:-oZe^ߩ說?q1vn^_sw3xjS KSji1ۜ[z-s{/ˀ/ծT}u2S?}}qLUVS_fy]3t}qLUn4w=gڜ[ڼ^,m\zˀYƩ5f@4w=tUV8n^7/]jεw{?cx})6˩Wו7oc{ɀ8WyWwz~̾ <<-}7Ջyof@sni~/8w}Zp>Ym8'3>]_f2b^ް,6[5nOghchWUUp/? ̥oc'}u2k W Write current sector X Exit program Z[nn] Sleep [nn tenths] /[nn] Repeat [nn (decimal) times] (Type any char. to continue) Cancel a function with C or Ctl-C. Suspend output with S or Ctl-S. Separate commands with ";". Exa|m-}u2>-8S}zrb|m4 8pՕ]VO˻fmVulszzFsSW?EOS3>66Nm̫kj/zrblǞmm-}u26wkO[}=0]V7lpj/aOKsK0uW?Eްi1 8,fsKvDU-V75.ASMb  "!#$%&(')+*-,./0123456789;:<=>?@BADCEimbedded hex. or CHfrom-thru,byte e.g. ch0-7f,e5 or CAfrom-thru,byte D[ff,tt] Dump (hex+ASCII) Fn.t Find file Gnn CP/M Allocation Group nn H[ff,tt] hex dump L Log in drive Lx Log in drive x M[nn] Map [from group nn] 2fC 87O殧zzòznozZy]pjj }5T机ojV^qwS3V}tyje{w{3Z=V-, 8>]ߩ/^_z{jڛ*sM6^++VYLUo~S36~.keR^ztin%KS3ԾV-u }K#ɷ|g}o  }o|gBKx-!: T]x: 0:OÅ*.:^#"^#"~#2~#2^#"^#"^"!~:w* ""wmple: g0 +;d;z#20;/ would step in, dump, sleep 2 sec, and repeat until control-c typed. All "nn" usage except "/", "T", and "S" are HEX. Use #nn for decimal. See DU.DOC for complete examples. y#x}/o|/g7,}覆x{jڛ*w[]rjwKzTf,66箧z i ո\qj- 8M͹M>m-Vm-pjW?Eް3b|{jlȞ6)_ ˛pjs!{jy/f˽/^~^bl M~{럹۸V+g)u* /+vd(xBj0P)@Nۻ<2`+jBnumh?>_݊]jϫ~̀~|Fpp7Ovx#ׇϟz=nڏWgP+koW{Ƴe W6ch*'IkEeAa]W [ p ۡF2@"5e+Ic4p ۇޚlڻۿm<;35NK}RsXU/B5.U3vzk~x|0^}m7]LyM{9{ӂ33 7OKr73 j|͹k_ˀx߮b>-8S}{383v5?< nt1x=)kzqq__̀{{^ܮO?_ԋZ7gɀ6?}|]y_^[]\͹vOy<@d xnU5kzqqT^ڨjC23 Kgv5?< /_{qe+w-wsv5?< /n_⹍RU\ލXԋ2`ܻ}Y*h#^\Ǘ3ˊsbKcgqg|V^cj Z՜2Fndu98gWw\le9je']u/syg@voWq_[-_ dF+n5f˽ۗxƳ׫jV^ccӰm^\SO]N Hi}7{[ljWTdf$_}7dfWx߫NߦϘɗ3R}2TxD}J2߹F_(uoZf|4^9t@F_j9ߨ(CfLixǽHO>{ϟh$3S//w{Hk픞ԭdkՔw<k}DoAs)C֔wÛ<7s{w{/~@u"V3`̀z.?O;\ާ /AOD1Δw,xjֲVd3V:ũ23]ѭe ^3 חcM7\͍u[\뵸w]8g ~Z[6N}U+/彏[ZjeOjFLn2`sK㖾[z˻y-Vߍ^L?"{1Xg-o.`U+_̀3b쪷 WsO Tmݼwdw{/19ˀrm<{}n_.՜kn:kw1cc583f@vq#N5. @~|AUf]|ݕחR}iwoX?}_nde@vO}g97jε[}Z~V测ѸٍS/.?cƾ2`s+ i.6~/8w287~ _{EB5p2`̀͆X}+wsKq[lzqS_m-SKg*m^_m]O]VfW̞/ hsnyn^OVxzþyj2E_Rjiczy\޿4gͫԟj^Ãou߼ JZ}~&ZcWuyZq2`ۻ}9m<}V߸WsiV{W{^ƾ}X׻t\e@v6.UO+Sfr:~k秾p5 839z&R}_tO[_OU[g7/z&mԋ ZS_3 ^^\r3 7_brƗ3˗Ƴ׫jV^cN'n\Nfj ߭/gҸ+ܯ5r_̀{/_Ƴݸ4N KWs/><}? ˻oXOw!/]j]]'?cn.ƾ73 O\.re w{ox.۫3c_\OOkoWw-2T2~[ ߪ(JZ]<$nxqle?(f@_*߆hԦ ch*i{E|j=5"cP[/'h>ES3[Mˠ.:[O=m/h chnWh^u܎i{ES] ꢩ ESgCs{|A]4u14@]=m/h chnD Richard Conn :HELP: How to use the HELP Command Th HEL Comman i execute i on o thre ways: (1) by just typing 'HELP' (2) by typing 'HELP FILENAME', where FILENAME is the name of a dis o CP/ i genera an specifi CP/ command i particular I i designe a a interactive on-lin assistanc system. HEL pull i file name .HL fro dis an display thes t th use i page mode Thes Љ!1{Vv >!~\Ygg<Ak, ۇ"ua=;gо:::d 'VgdBQ&e 0Éաa^w*D#mmC3P!&ߴ ķ:DixǿeqgmO?G.ABx#/6\;(o__uX{u?ou fyasB fyWlU12z^uA]4u14Dz-2 8VȢePMAp x R8 ~d~CyePMM8ʠ.:[eо:r/fϻu ۇúdCE]V]0ȠہG졶w{HŷCO-;DESgCs < =^{urQQ|ePMAp M =Rallow hi t selec entrie fro it Th use ma selec a man entrie a h desire i an orde h desire b simpl typin th lette o hi selection Onc th use ha mad hi selection hel wil loo u th bod o tex h selecte file ar o tw basi type -- indexe an non-indexed. Indexe file ar thos .HL file whic star wit a index Thi i a exampl o a indexe file Whe HEL load a indexe file i display thi inde t th use an i{G14ݹh'Zh Ƞ/cУaQ>ȠN W Vv0j+,=wtiS*t5꯯6^ T߷^i.﮼SdpS' K #|u?uGH>a۲Xk{E7tbuHdл7y|| oķ:A_d*Ի8Bddֻ_ց/f@^\6^OUw73`{MØA ۍȀe a an give tim ar displaye t him HEL ca b ver usefu too fo on-lin referenc t th user It i conjunctio wit th man HL file no available ha alread prove t be of significant value. Welcome to the HELP Command How to use the HELP Command How to write .HLP Files Help on CP/M in general :HELP: Welcome to the HELP Command Welcom t th HEL Command Th HEL Comman i designe t assis you th CP/͠ user i th uszTFEH q1>}peP+g zƃ zY^XA.tU5 9Z!nU-=EW[0 k3bVҳ6^^XB/q.3HcozQV <P+9e ~d~C'Vaֵ:fjw5Ʃb ߖUA# *an displa i t hi i page mode Whe th use ha finishe readin hi selection HELР the return hi t th inde menu Typin Control- wil retur th use t CP/M. Non-indexe file ar thos .HL file whic d no s Abˠ0=A 2`{0© __= n6d7)2`{m o}|̠wy,O A.3h_X0˅Օ;fr=gdBQ&e > AyV+bP߷z j^Xl]f!ˠS@̠wc"3ClX7e+3`{mˠB AbS2h!@ AbS`e z+X7Իe zX7$fл2hޭ.fлˠgd z`} fл؁e~C[]̠we~M:fл؊e~õ Ab5A k9Au̠w1e~C'jt>g z3e~CûG Abˠk file named FILENAME.HLP (3) by typing 'HELP FILENAME.EXT', where FILENAME.EXT is the name of a file created in the format of a help file I th use type jus 'HELP' h wil receiv th HELP.HL hel fistem Alteration Guide A th reade ca see CP/ support contex editor a assemble (Intel-compatable) an debugge system Thes ar availabl i th basi CP/ package Ther i larg variet o othe softwar availablation on CP/M CP/ i monito contro progra fo microcompute syste developmen whic use IBM-compatibl flexibl disk (flopp disks fo mas storage Usin microcompute mainfram base o Intel' 808 o Zilog' Z8 microp above ar o tw basi types indexe an non-indexed an eac typ i relate t th othe an i o th sam basi format Grouping of Information Informatio displaye t th use i groupe b th indesourc an machine-executabl form. Digita Research th designe o CP/M ha provide se o si manual whic describ th us an operatio o CP/ i detail. These manuals are: 1 A Introductio t CP/ F Indexed .HLP Files Indexe .HLР file ar simpl ASCI file whic d no star wit colo (: a th firs characte o th file Thi typ o .HLР fil consist o on o mor norma ASCI tex ll (no bein displaye t you) Fo al othe form o th HEL command th use wil se th specifie hel fil information Generall speaking th nam o th hel fil shoul b indicativ o it subject lik CPM.HL shoul contai hee configuratio whic use a Inte 808 o Zilo Z8 Microprocesso an ha a leas 16 byte o mai memor wit u t fou IBM-compatabl diskett drives. Th CP/ monito provide acces t program throug comprehensiv fil manrocessor CP/͠ provide genera environmen fo progra construction storage an editing alon wit assembl an progra debu facilities A importan featur o CP/ i tha i ca b easil altere t execut wit an comput i indexe HLР file an ma als b groupe b line beginnin wit For Fee (^L characters Groupin i a effectiv wa t logicall organiz informatio s tha meanin wil b mor clea t th use an unit o informatio will neature an Facilities 2. ED: A Context Editor for the CP/M Disk System 3. ASM: CP/M Assembler User's Manual 4 DDT CP/ Dynami Debuggin Too User' Manual 5. CP/M Interface Guide 6. CP/M Syine a th firs line o th fil followe b informatio section whic begi wit lin whos firs characte i colo an en wit eithe th firs lin o th nex informatio sectio o th en o th file. :HELP: General Informl informatio o CP/M. :HELP: How to write .HLP files File use b th HEL progra ar eithe simpl CP/M-standar file o栠 ASCIɠ tex o ASCIɠ file generate b th Wor䠠 Sta tex editor/formatter Thes files a mentioneagemen system Th fil subsyste support name fil structure allowin dynami allocatio o fil spac a wel a sequentia an rando fil access Usin thi fil system u t 6 distinc program ca b store i bot inate b carriag return/lin fee characte combination) Th informatio i suc hel fil consist o al tex afte th leadin colo u t eithe th terminatin end-of-fil mar (control-Z o ne lin whic start wit colon.ot pass between screen displays. Non-Indexed .HLP Files Non-indexe .HL file ar simpl ASCI file whic star wit colo (: a th firs characte o th fil an consis o ASCI tex (wit eac lin term whic ca ru unde CP/ wit littl o n modification Suc softwar include severa assembler (bot 808 an Z80) symboli debugger severa high-leve language (includin FORTRAΠ I֠ {compiler} BASIC- {translator} CBASͫzsa] ??G]{o'8{IAu"JU)+#x@Q9u[ʖ;3,9PIG~5Jn#x`%9Tn|l k'7޻jE|ޝ!~#x`ek,Nu\rk,C?ۜ\qmuRh^`6gm+ir n]DJ!b{չg՜~9aO3Jܦ[>Ǚ;ȩUy:Zqn>[f[FʭR_ApM0b')ƧÈv7]/CPw';N G6MXR~}v>Ls IF YOU DON'T TRUST THIS SAVE IT AS A DIFFERENT NAME FIRST ******* HAVE FUN AND ENJOY ****** * CALLS THE SAME ADDRESS Addendum by Bob Fisher - De Paul University Th abov patc MA work bu i depend o wha addres you cp runs at. TrI {translator} man interpretiv BASICs ALGOL FOCAL an C) an severa special-purpos application program (suc a tex formattin system an accountin systems). Refe t th indicate manual and/o th CP/ hel fil fo furt B,9 ;Yes, type+siz=9 chrs SIZNO: CALL WRTMSG ;Print type (size) LHLD NCOLS ;Get # of columns to do LDA TEMP1 ;Get # columns done INR A ;Bump it to bytes 12c2,12e3,and 12e6. The previous patch left this offset to be interpreted as an opcode. The result can be benign or disastrous depending on the size of your cpm.  **************************************************************** PATCH TO MAKE ZSID.COM THE SAME DUMP DISPLAY AS DDT AND SID RESEARCH BY DATAFACS SYSTEMS, INC. **************************************************************** DO THE N8XLl'៦ؼc'6'\7{r5Wo^u5wPu)gWa}N=\it2HS坡l;smۥPif[eLo>h7X)~[-l-KޝNY]A,?ךK7q:)\̭AAPɶ ּ6aE-Q*J:|°V. Ow ?Vf{[e{Qťb/'"~2Yy instead the followin S125F 125F 5F AF (SAME AS ABOVE) 1260 ?? . S12C0 CD 18 (PUT IN A RELATIVE JUMP) 12C1 ?? 01 12C2 ?? 00 (THIS DOESN'T MATTER) 12C3 06 06 (DON'T CHANGE) he information.  tex formattin system an accountin systems). Refe t th indicate manual and/o th CP/ hel fil fo furt)?tP:|_vzTA=Jkͥ8-oe HdN 'rymŠR~A<>OGqNύ[Jf?%b,3ۛOXEb|&f៦ؼcsB?K8ºڜLzj~NL3y?kE :pM<@- e˝ޙm}4-_2Y$b{aԧύg )[[c 12C5 ?? . "" * S12E1 CD 00 <---- PUT THIS IN HIT RETURN * 12E2 ?? 00 "" * 12E3 ?? 00 "" * 12E4 CD 00 "" * 12E5 ?? 00 "" * 12E6 ?? 00 "" 12E7 13 . <-- **** DONE **** CONTROL C OR G0 ZERO AND SAVE THE PROPER AMOUNT FOLLOWING: ZSID ZSID.COM S125F 5F AF <--- PUT THIS IN HIT RETURN 1260 ?? . "" S12C0 CD 00 <---- PUT THIS IN HIT RETURN 12C1 ?? 00 "" 12C2 ?? 00 "" 12C3 06 ?? <---- LEAVE THIS ALONE 12C4 06 01 <---- PUT THIS IN HIT RETURN C}Եvb OAIDï\C+b48- e˝ޙ'fY y@ /ISm"Cm:CP#& 覢5Ol/[l?7n)w ?VclL6~2Yͫzsa] ;C}k?C$su"WZk.ġ zDyi>@vC"h ߖZ {Z;H >a7zdoZ hWDY%" a7z|e ve o chD5@F.n =Dg}!=A}@"$ V Cmvoe (DfpC@zBt<7y|?c4cdp,AHO; Tx~@e Nɠ 1&m? [ot5oi_pfW\ާptyj}2[;N0T# 2 ]ų\-U2>#A (щou(f@Ws ոd ûG"*4|eBXmxHAķ:3X++wԟSɂl?5a]7p?G)2~[Kg2֛' choeg<ϟ#j2eύ[;c~6LvXd,=~2Yͅu5DpQמ<ǂ>ԫNr0|N=Jyy*#Oߟ ,!zyS8V vw~j~*-<2--ޙtߢ%_9 1 X_giƵݏ3ZN)/2,4eC0zMW}#uRhEO])aY_=ka&B 1_,ýAX<!]7_!汍]Dۣg xV;}yU0c"@&iPA_Ơ?@8NԨ5mB=/([k (!="F_O$jtȀE@y?ԫNr0ǎb{mMz:-oe(*㕪||w^ mvS7̹BSF J3X'~c/8ߌ̇3,?oܾ:)4/MD #4̵n],?a1%d\՛ j`^kO> O|?K_qWZk.ġ>}nV'+ 별d1x|w^qT,Z{c חzaygơ R8 ~d~ 2OM‰D-H)^3~[Kfл/Am"s((et?QX2ho8u[`Ƞہ AGFRdЗ1H; Ekxdо::e ?z_fWd 'jt>8t;2L< @<$щou(f@,UVokssV+ާ3 ~p=Ƞayzv5zIgp"QoW choez6choepIa=; YAt >IzI/։_I.rRrr㻵

ZhsH7PZ `Jndn8C:OR}N*bZus:+ЖX+$GLWװޓ-G)?x$Y;0 k)?Ư04ł| ύoIٚM A Ǥtu}; | C`\-U2`Czdk ߖPg+ \Hѣ )zB"d9t}7¢3ԭ428tVOڻkx}_7OA C x@wuuobDȠGA@QK!>RZ+DFl =D ٮF"O=R[kz#3L2 G=<,< $je j3|(Z8[{raVŬ chjfg<2gЗ1 'PB/q0paVŬ chDu}Z 2 Ƞ}ut[ʀ-]?S/.?cbڜ[x=π['shs^}q?7/]3 nsisnit5oJ}q7_3 w6}K|i1OМ=_p+u_',uRxvʭ;ܰT[`!Xvi¶Oz;VT*tR𯷔w ,pq3Y6K4ŦcSĆ=__כr5Wo.z=ډC$su"WyYJ+Us#ړP=/3VLr^ A}?残G+y ]b .˯ln< 'v5ܥ6mY,IXj)2’A{}C0..3` g=T,<',Ήo֯{ oC_dpB?>_O oEbUr9umt/3ҽ3*\-d>`H^dAA_ƠGà Qg~C'VD7C2h_V2`s WƩ?od 62WO N$C0^}>96 ]~~1jX.^ང?7n)4~f{) ՟b,=^EH>!%ۀ`!X¶|=z&OQKԊX՚WZ_eßOw qܟ.+],bZKX,mR~g+r)C}Ե'];1=v,^?ԫNr0GlAt_\v+_oa};˶`J'rfdL* +?dbV՜^!ç@" Vdu~l*0 EV9Kl3d^aV?\e=ۯ{(Sn}qS: CU'?Jߢ%bJ)^m|q={oF\:A!Q̀bksni3 !֏#z'=>28 ;DuaeC>ZZ?s#,S23kQQгe cdЗ1(>$Ae+=]5]e6}_oK:2~[zkdpjK?BzP"flvࠒAuoK\-%38t?0?U]^dЯ:w3giꓹTU]ڜ{9zŸ3qyq ~d~Ch 29{j‰DF?.A<2~[Kf%G<2`zRh 62=d~ímY5=+G7y3X z"yd^{n9ͷ)uugh!g!XNdл^d~#Ƞ3A]4ugdpC !:F_˭xI 8ң ߖ:2‘?&$rcϤΠDp0N~U_OS;TՕ%c. A1hePH3Yۜ[dD}GD0KsKgi;f6]8/cO o=OXl5([A R \e\k 2o+Y[ Zuk __!랗}l9Rj__3ho__![?}q?5e Qɀkq~F9p-N֚Ժe![̠ہG}&N$R"sԄ@~ *3hxA j"etxd^p-N? ߖŒȠkqFjw2f@}\3sQ 29S23*cA_ʠV j̺Ѕ\tKA_!ge z1~p0N7/]V/7{~e΀ez,֚Ab9k |qr gh' h&7ih_,ߩ҆n >Gob!I,&NT疗2vΠ/c𐳧&H2v2=6:9)ZSdp,$H2v2s7? "B|"B r772}ozd PɠZ\"B ן+]qs]y_[ݯ7,ϩM5fL$gq M-VµZ?eAO)O=Aj{=[Ap 3G!=ʀ&l=5uYeobսsV =t7ZH (hjn'۲X+atȠ&9~xy>2~[Jdg<2~[k' evUȠ/cHגq MHTgpI}@"$38wH?&e e Yt} 3>GA9*Ƞ.:3L2Job)DϠЏ.cP42ɠ/cN jشi׆ne+Zj; j^Xl]fо:::$2`\MT/-cJZ\] Wǵ8}΀PVŽ*fZZ‰D= @e rdЗ1W5s<2b3`?c}q^ռ6ծz/^SyU0c-/lvq ͉v.3L2h_&È}]y_wXJئn12`Z\]V}/3~[' ar oXuYeob@~]|{x)>B)2n k,}X,$mv P YDaɠEepCSٝmYO§new>K1E+OhB Տk!΀o{3gH3,zƙ(,? chgpI}@" }14N Q?&e Π/cPȢ3Ã1{xXJr#fԟ6ߖZ33Tv3>#B ץBsKW^<}2o7H4\Wq#j Q?x6*p CjN' K7kuPZxIgȀ`-cl~[j=s# D̘H4/l3{jԓ~j^ȡ3WG![=q=.^Cg~ÉDwoWjA%@v5j7H4/'_# Po~BfDlk9诖S Cm!z5 #|}}r$E 27G\P]}Х<@ P'2<3vAVS+s;$2~[KN$j@D&?t"\-5doK*le?(eVBH_ݵ^ G z$F8jE!gSdp,B($@P("ᏱR?|rE<H<uE0=[8|}eN$j Go ߖU2>G3WGp-Sd^[aZ?23\-ꯖSdл^d~C ]{A,@cd 8Q; ᝍ3QX2P( 2/;mYH9mZo202fl;xA sЋq΀Zgq>,f2DNfо:Ẁн?ǜ믕 Wq,֚R?|$Q/uAH<VȠwxjT!Ƞs-~q֟O݇eлɃ"!~* 2h\_ W8lT9ˠ}u\_dE/c837^/,fn־Add<AvS#)2~[k͠/c3Bp|Rt[)2x Տ$3vࠒuPdЗ1W}X,ˠ/c8uP^A_Z\"sT2x۲X+D3A_!gt۲Xk{x)>2n k,{uX>,f}IBCϹ(@>?Cfо:2`Fee > Aw9n9D{A w"fl9l~[k%?y<Od]o"A吳 W#k3w־Add>rv~jA{}íȠ2n弬uԄleoW 2gpC>3L2q MHTgpI}@"$3 Q 'doW W#ˀ[9/g82zabaӦGD0} [2O,^*Bl=_ݣ )28fuJgo23PQgg\ O}.}X/Ϡ/cpe:{%9nl@0CrfmY5C2~[kd_A</3~[kd+ʠw+ʠ!p ߖŒȠ}.O=۲X#~xy>2ho9ˀ}F_ƠGà oЅz"AbA u@xY0Ƞ‰D P"f /c$E6ߖZ3X zk,vOȠw+G΀Ia}X,ˀї1 ~'_}=5kY=4 ߖD̠GA0c}gہG14N3GobDȠ_u14N Q۲XG?Q82hodG142Cp^kYέPAp MHTgpCs-3 }_uFg<2w ch2`_~'tAg\-3BA{}'_;>0N6-/}Zp΀^__m-mT T߷^i.wg̀iu9O5_{w{%|0}@?nle?;gpCSGgdS r@ i8CGN$j=_AQDEt;pЁ @2>G3`֢ j/82ho>`N$v. !hv\2\gdо:L B=_e ;l<33r^F9e z1~p0znyw'flp^$(,7Ի}0C)Z3QX2P( 2ʠVM? 3۸QeOӂ3wٺ̀r憍3QX2P( 2ʠVNKO^\ƮT ߟ>[5 1ݢwT ߟF5eC"fj[ߖZ3C bPVτGzFA ۺ2e zЋ zXMz#=^ W nWz#fm\5Aʌ:O=ΠJ ]e 7v1{=B}{ G\-N$ZP z B/Ƞn#|}5j}{! oL 2e *|jA{}3P~DjA_3@ iϐ]߮֘5exdо::em^dBBP^[?"~ ߖ*\2hhIp[HdP#hEȠ.G졶4= mt;pȠہ:~'| 18&p(AS kZWq MHTgg<28$k!QA_ )Zf^{"Q@u졶. Eq߹3`T8$~'=< Qm wHA9 Ƞ(f@w~[.i[}Zpj銻i;fYmy]~{E j}΀pwZڸT [>z*R=|dо:2`^]62\oK\-%3C/2hޭn/= A nu{|BP,,A3}2oj-0CVgہ!([[RvS#)2~[rX>fꆳmYR?|dЗ1xY}/3x nE.= A nud9{j‰D= ߖD̠GA0Í|e 3Ϡ3jדo ߖD̠;0__ $Ȁo{/\m}Zp~_ݘ3؁ہG14N38$A >~' 2DHTg}G}BA臟3֧졶Dep,J8QD{Sd~'뫁V@ˠw1eƠEgp& K*?>@>童:f'ÃAԆ3`\[ݯʷzO T0vn 18 $3;E 18&p(u7PgdpC>xdPM fpT۲X#.T2PD8 ]#뷥b /cP|H# *7ÏeCs"ˠ 2`tjA PΠw1e~Cu{M o>0qGQPp@־A-Sg $mvq ͵̐Π/c-3>#voƳfЗ1$B:H_P YtbeCPہG14Ce exd9A_ HA_@ 2e > Aځce14aϠ/cPKA_ƠA9e Ll\-N$jddușA_dt`lCCmh14O=A_Ơ~#HdG$[?5Z >Gb]k buZdлFIZ}2hoIkt]ԄleŷfЗ1'5:.O=Aײ֭x ߖ3~[zK*ɀ6zk,8i8=""' gлA{}Cdj/2`2pҰC>2' KFl7ƿE1nŠ~3x7Ʃ?-ƾڼo奪tU\- '?ȠwȠ!2p\uA QQ72h_e dj/l!GQ{"7"|}G'728t!*FZdBT ơ yIK3qb0CK6Cm]f ٸ~[k͠/cp|2="&= AqAbAqAb1B bMAqȠwK,v z6m/s((`2vtoa y^dP̓p6]uԄ33A8ۻ`њ#Job,eo*cA9ˀP,wc_}o;Koد\]3Vvg}p&|!vX}=5rGMZt;pЁyBPed.3j‰D A_!g_?urA9:0O8k9AʌZgp,'Rsn be%AZ$|}5jr oķ:q CΊ&|}?[0GZPf^C2~[k͠wȠN|C! oķ:A83'B+eЗ1 S *| WG0NT=w{M7, !GcguXؔˠ/c8uXˠ/c8A(;g /uX^dЗ1 }XqΠ}uDNfH[{G`}>R-{ e vࠒAu<2/coFX}~ƐƞAXxd}:sT2($ʀ=7_ws9O Tx=Uq36_ߦG 'Y3($ʀJp’A GdЗ1 'PBl4px_rcEg|XB/q.3h_ QN$ WGLʑ31akbA{} I9lt!v`C2C`7? ʀ.?O?&e8[ߖZ3C/2hP{A,:ep2Πw2hǤ z"yd^{cRY?&EǤ3[2C2h_1)/π620r14 } EA_DmO&9Pɠ3\M3y e "'3h_VˀpE o*le?(Ad$}Xq&^_3DNsa=;gPH3D5[!l zͩ}ld `L‚,f wr o(GcGj _Ow~# *\-3C6Nwy*` o_s_C2~[k%^_3DNeP+g aeZ98f멕9b]f le ~ ߖ*le? h$ʀPnz߿KԟV7wq>e za<2h]̠wȠB{3C6Nwyd~C3ÊG7Z0=q# 0=f. o(Gc3C =Vˀ\-Wdg<2ԂJ+ϻ12DNfо: 3λ1l^dѶ@?QX2hoKΠ/cPȢ3h_V2`/53QX2P(CmxHA_3@ iaf7O5J=]ͫ[5 1U[6 j09,8S}[1 k3V&ou ٺ̠}ut[ʀ62ŃdPP9A3n $A_ 2p2st`>C2n A_ 2p2BF 83v_Զe m֢RSbS?ˠ Qg}JD0zwRVͮp5Ue dऍn*t;pPg#뷥 ۡ=̠wQQ2ho |3CEq>,X} ]⿑R?(dо:"'$ʀ|7wfԟV7wq>f3giӛ^ VvX0㐳qj2e zF2Ƞ~jµT?k0xl\-fЗ1sAzAqAbˠɠw1 ˠɠw!æȠɠwM`7| z2h? ʠwa2h<ޭ!V =珂2CMˠ? =(fO]V[C ydP#hE`њ#Jgdо:O=\8SD*3jG|Bu-gP C~/Ř۲X>(,FG( W)^_3h뫁T΀(5:l|jAA{}CLp\-fл^d~C'ա zX7t[ʠ}u? ʀ[^ʀ~g<2`?&z,֚AzA V2C bЉou(=,PSd~CLfAAp CΊj9$QDp0C)zlB+e =3[?3=T2hy/IA(eIaہJt;p=ԖV0!Txi5pK⫁+^fp>O2T2>#stA!QP &6j ,X߰ 'bުZ2` aupȠ/cЋq=ȠN Wgz3j} Wl| ߖZ3’A{}g23cdPH3~kԇ qșbЅ2’A 9ep,A_!g0㐳e|8FϠ(" "2(Ƞ/c~ed}gQac^ zp2vC]~XQ8XCˠ}uDNf Yo[7%fhmt;pPɠہ:nq2cP[2`۽.JzFA۽=T ꢩdpIobDȠop/x"G%B o^KjW^k)Vslo}tigɀ<ơ R8 ~>?^KYg~M#A]@N1{-<=:d뷕/#bi Y7D5p 2o+3h_7edMqCSGx~@}~j{^yU=yUa 9Z!vॲ2M)[^jEA k3b7rkeP+ jx7OYC_M~ ˠV5 /^{U^_տ^ j^XlyasB/tjV6Ʃ?_a ,/q9Z!VfCK6^O j^XAsِHg.>U9,Z8gP+ fC޿.f{R竁epn_v@v2 2~[*֑[#c F_6h-!u?u+= Ƞ(f|;43QX2P( 2ʠVMSͮp5箿6wS_nĬ 8xdpCs-3$3g}G}peP+ĦM2zauA_` WG'VDh_oEkg [1he !q>,^*1ɠ`[7ĩp*7 8usgp~u^-3Ԃ: oW'~u\33Mob)0ï~u\3($ʀvjzQ\,?&0ob dpVmY#~-\-dg<2($ʀ_>Fǰ' KobEdp<۲X# ߖ*e g9obn=7\SƩ?0A k3by ˼owXyqgh[}a]nRobeXB/qΠVm7tti>-8S}g}\W,Z8gP+6ћ ^N^tt1iˠV5 )z!\7]zn2zasBॲ2MvyڸQeP+g k3b[UK7w6NˠVgya5 1ߛ ? ˠV5 #c $62oEkg [1he}GD0HہG 1 8 }14N QA_ )Zf}JoR2~[g^{ C%!sP2(,7'?u/~ƃ@Zz!WY W @@zn! $@R[Yˀ8&)#3L2Jx$j}7¢3ԭ45^~69w+A k3b[,Ul~q]/ڼ^,'b  j_V߭߯mS2Y^XlyasB]ÙW\VˠV5 1Z~Vͪ}+\͹ۛ+A k3b`83՜kCXB/qΠV)//[2zasB7O4h/36_ƥ}qs‡eP+ j͆ظ{}Zp2zasB ~e3w~XB/qΠV߯7,zq2zasBlٻ߯+w?cԋyw{-|XB/qΠVm{{]*4^~?vyL}2zasBl7r}5ӂ37A k3blH쪷}2zasB/^TہGVȢme m֢RSbS?' K7:3QX2P( 2ʠVM&d]y/FO T}q6_Ӧa ٺ̀BU}GD0c^n= ߖP+0B20/=~r>cFp Mw ^A+ԻSgpA k3by+>KU_V/>/KUӂˠV5 A,Z8gP+6<\Z7/?ieP+ jؔz!ן W\ާTߍnb 9Z!6Oߛ?-7n+w_<}WՋ}Zp~2zasB7OWg}_w?-}q7}z2zasB7O&_zi]{nyɆeP+ jXorvglC/ boҸaDo7dx}T{΋I[2oEkg [1he%΋}’A GdЗ1 'PBlڴy ٕb6 ٺ̀A_s<2($ʀX2`!ї1 'PBZ_oxqxy<=^^Z2eP+ jXla? {iセ^ư0疗 j^XlyasBl^~xӟ̥}Zӵ?upXNu3{aS2}KB5VԮ3F+*RZ+ame"V ch28$뷥 >GgdCS53L2~[kSxdB\-fg<2P2 ߖZ33cAp M 1m)5O=?&,23L2~[Jk chDuėa1{xX2䑒"W/RF򯩳HIV/{/*ž{f_6]$<ҋoL~caϣ7&j10 ea#d#}/ rl3īώk#%Y7CzYzf3L2tA9:0rJD0J}߷d3ݹh<䴽ˣ^~=eEgrVzk!7%Gޖ|6y^7A(v5Λ_ 4휍Ze;2Q+$O2&9gnAZYwxߏA)eGȣi5(xycJOD飡ulPF/GgdCS5( 7BvEU")Z elԀ/2pب2ڨ2lQehڨ_dhڨ_dqi(cF ᫁E0HTZȀPVzUb1woWq3Z8G4(8\8G1G-˿ʡ9P;o`g^zȦ1T˜xn: G7M}D#i iCe_r <`G:N8#LJ#seaݷL(^1  #seak-8yt_YYv]{1nHi=^~D4п~yVpvtDU-V75.DOC^  !#"%$'&)(*,+-/.021345o768:9;<>=?A@CBDEFGHIJ竻}~jqF`Fp"~j/*kQ}Fp1 Py#%YAeӅ u]љP 6PD1-]M5HEWA3K _әc!o#M  #`{G 2+FGJL("E{~]~3+ERROR WRITING FILE++ $::P:E"":O7:Oc:Q xgO:ʋ:Or2Ð!l\2|2h_ 0ò~Ͳ#