IMD 1.17: 30/09/2008 10:05:04 Aztec C Disk 1    PIP COM:CC COM3 ARCV COM LIBUTIL COM~CZ COM1T LIB%LN COM6 !"#AS COM4$%&'()M LIBF*+,-./0RBEGIN O 1R O 2HEADER ARC134RBUILD SUB5CC MSG6REXT ASM 7SIDSYM COM8221@:2!o6+6+6!6#6!6#6:G*o .!N6:^*M^!K6!6!6+6' :$::=2K  :ʤ\:ҷ\x'Ͳ:!\͢  :͈'! Ͳ:$: $͈Ͳ!N6' :!Cwͯ !6:^͢c!6{:/>!/H{ͯ :<2Š ::=HҮͯ !6:Ҿ:2 !6::/H͈;!6:> !/>(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB =.:,<> _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$ "}*}DM͆ ' ͯ *"!z4 :e !"͆ !z6:|!z '? 2*H#"H!{6:{ր!Ң *{& :{4 2!{4m *":ڹ ͯ !z4I '2!"!q: !4>!S :S! :2*M! ^#V͎ * :w*#" = = = = = ͯ  *M !6q  !6q  !6q  *& !6à  !6 à  !60à  *& !6  !6  !6  *& . 1 4 7 : = F P [ f q  EXMPL C 9OVLOADERO :OVBGN O ;CRC OM<LIBCSRC ARC!=>?@ABCDEFLIBASRC ARC{GHIJKLMNTINYSRC ARC*OPMATHSRC ARCͦ>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*ABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z?$CHECKSUM ERROR$CORRECT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUND$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID SEPARATOR$1 :2L> ̈́M9  :2!q: " *M n :c4 *M n :2!c:Q !c:2: !:cw>!n !5 Y : { !6!q:!lwҙ  â :0O !q:O| :O| !6:]2l:o'2o:n'2n:m'2m*mMͣ *nMͣ *oMͣ :]:   *}2D" * * *&"!q:UY: Y:ҩ: ʩ:_2ʘ:€!6<:<2!ژ!6 >!]Ҥ; !6:Q::H: !6*M : !6!q:a/>z!D COM!p+q* !q*& *M *M !p+q*!!p+q*"!p+q*$!6  !kp+q*j> >ڪ Þ !qp+q/ *pDM9: :M2r:N!r !:r *r& N!r4 !6:͔: :ͳ.!ws+p+q+p+q:w=2wN *s*u w*s#"s*u#"u' !"*M^7 !x6:!xھ **DM͆ 2yʭ :yʗ ͯ *"*6:2x÷ *"!x4d !"/ !j}=2| !"*KM^'_ !z6:|!z1 * /H:_2:!q:A/>Z!/H8: 2::=O>m:W!Q} Hmd>9>!6:2*M!E ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[ 2*">!b!ͯ >!`0ͯ !q:E:24J!46*}a!44EJ *KM^'́:‚ͯ !36'n::0:f9OY#9.3'ͳ.:020' 'ͳ'7 6'!j>A+!s!"@͓1!"<**"͓n "Dn"":!Q2҂:X!Wғä:ڤ*MEÓ:ұ@@:O2Mc;!6#6>!)*&P ~"::H:H(/Ш/ѳ +* (-/Ш/ѳ 7 г://~'@  г$P 8v: r-8 ,P׭:A֭A֭A֭A֭ г  г  г  г ;D׭ מRc;מ ,Pנמ\.מ献1מ8Eמ8OמPd_:8P}:`OTf\1duplicate output filetoo few arguments for -o optioncan't compile two files, second one ignored.c.asmrOpen ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\hl,.swt %scsave,cret,.move 3z@* z+ J r( |D _( @P * #ع Ҍ) *Q| ӳ ӳD" _ *Rؙ ӳ ӳD+ _ *TN ӳ ӳD5 _N D? _DZ _D{ _ D _D _D _D _ _%s%s_ %s.%c%c %s.l%c%c %s.d%c%c %s.lldp,.llds,.llip,.llis %s.lst,.lpsh,.lpop,.lswap,.ltst %s.itox,.utox,.xtoi %s.dldp,.dlds,.dlip,.dlis %s.dst,.dpsh,.dpop,.dswap,.dtst %s.fldp,.flds,.fst %s.itod,.utod,.xtod,.dtoi,.dtou,*M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz:b2!b6:<2é>!`ҥ*`MͭҞ!`6!6> :é:(!q:!wO! ~2*& :w>!:!4!6>:N<2N!> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>:H:H"!6!4:_jYO jM*"S*" 3@bl*M1͓!""7 *M^͆ \͔!":͎H*#"ͧÝ/ :>͛9ͯ .*#":_!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈*failure on inputNo input!wOpen failure on output3z >=>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&63z\R`苮$ @$=<@+^YPN@K * iNz N~N+I NYRѨBͤҳYHҦHJͤY<<>2 힬Qt. ;vvaR `苮dlRvdO`OC Vers. 1.06D %s (C) 1982 1983 1984 by Manx Software Systems 8080%d errors %d is next label, work: %d 3z@dמ8  r-+ Ӌ- +  Ӌ ՜]h/ = .dtox END 3zDR( D|\ _D|i _NK ln _X l _( PUBLIC %s_ %s_: push b lxi h,0 dad sp xchg lxi h,.%d dad sp sphl push d lxi d,.%d call csave 3zrl _.%d EQU %d 3z <  `@ 3z=a^QR*Yأ )Q3 @)+ W3أ T( Y ˳ _8L ˳ _8 _֜ LJ _ )ѳ t rS _D -  :\ _ r o _D - ׯ L{ _ LXI D,%d DAD D XCHG LXI H,%d DAD D J*M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ DM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈*T(H9j!p8j!`:R;;<:q;=:N>=9N׌ة@֪AT+:N>=9N;j!9o@A=:N:o@A=9N9o >=:N:o>=9N 7 1 7@5 |,>=< HDB3z Ӌ ftmgq{rmuAMAAOhANkBckEbk ӳ:kunknown option: %c3z3z;h_3zMO_D_D _ .8080 %s.begin,.c C .%d LXI H,.%d DAD D DAD D MOV E,M INX H MOV D,M XCHG PCHL .%d: DW .%d DW .%d CALL .swt DW %d DW %d,.%d DW .%d 3z<* < Ҍ_@ ְ=ָ z |,  l l  l l"l',l-l.l/l4 7l?&@cAJBlCl |` *< t]W<W |rRl_֮W t;< ӳ t׍ ֓ ӳ_ְ "l<ׯ =o CALL .%stst mov a,m ora a mov a,m inx h ora m lda ora a ` zfR_<a<A <ώZ<` |rK<%d .%d+%d LXI H,3zl r(_=< LXI H,%d-.%d DAD SP 3zl z |r(_ LXI H,%d-.%d DAD SP 3z t    <_`<-ώ&< LDA MOV L,A LHLD 3z Yn BsDp=_ DB DB %d DW %d DW 3z= QFG_ mvi h,0 3z | X* Ҍt+yc ; ؒ ӳ_ غ | ;_<׶@ַA MVI %c,0 CALL .%s 3z=؋=` `B`==o*G 3z Ҍ_ LXI %s,3z S=@CSMJG###Ϭ###F<__F LXI D,%d DAD D 3z<}3z@+ ;A z} + |,ք |rB r<<* Ҍ_ ;*ͤ(( Ϫ B r CALL .%spsh 3z<+- Ҍ4_ ;ͤ((=k CALL .%spop 3zBͤ(( Ҍa_ PUSH %s 3zBͤ(( Ҍ_ POP %s 3z=+ Ҍ|A Ҍ* ӳ ӳ Ҍ_ )ӳ *ﴳ۴@ "ش_ DAD'1@Ԏמzzxz랴"]PY'/ ;dOמ@xzШz\Ϥ~'16\&&3z+@AR\س'l ;'G[~#'$R'5נ''_֠' %s 3zyZ'-Ϭ(P( ZH(rӋ~=(/}V-(ρt@rC(s;/4~YRҌҌ󴱁r~ԁst|@Ԏ/}3z (<@@־( + Z( Y( Y=V׼( , ,ѳ ۴ 3z~(]) mov a,b ora c MOV A,%c ORA %c 3z |  | 3z X) z*:آ: B | Q{:`k`Ba::9`k: |+ '?R@ A | @A rK  Ҍ|`:9@ r`K | :::, Ҍ|@::9@ : | g<:`B`::, Ҍ|ה<:9<`k: |q; `a |m3z z+; ; B | |<>=_ r@_ 8;D3>=_;H__%s_.%d+%d%d3z ӳ ӳ ӳ ӳu_ MOV %c,%c MOV %c,%c 3za<؜ | Qس`a<A 3z tA4w_ Ҍ_ )ͥ;۩;`k= ,؆ Ҍ_A |+ '?@.AT r*`:K>":`K ,˳"@ ; `=`B`=>"``k=A ,-`˳"@ =>"= ,O˳"@ call .%slip DW -1,-1 DW 1,0 DB 0%c1H,1,0,0,0,0,0,0 call .%sad call .%sswap 3z<a<-A @   ?@FA9B(C/M` zN_ D CALL .%s%c%c 3z "< N.71B_ jmp cret RET 3z ``;`_F "< zA< |Y< z|r* |z@ώr_ Ta<Z<A A LXI H,%d DAD B mov h,b mov l,c 3z 6\!~t "[מ,"[Ϫx,`怮`,A(@)G[6\(H+_ ;`* *ѳ@؍,~ + + +"+'+(,),,U,/, ,\ؕ+e ;ϬG[: T+ *T+ *ѳ6\+Ԥ~+~+ "+7+8 ;6\: ֛+~\+ *ѳ6\:6\ ض+ *ֶ+(:6\֛+(I, Ѵ,, )7, 7,` ; O,f ;O,:~Ԭ6\֝+6\Q~, Ѵt,` ;:@ )֝+:,֛+h[T+ , ؚ,b ; }4}*֯,;[ *+, ة, х+د,;[,%d3z<4+, +ӳ[ )5U5Z;14 r 50ڋ L5Ѣ<<B+ r 9V5`=-)Od\149AԬ\d9!14=`U)Od\t5;9Y"5`=-)Od\t5;9!5* .5 5 .@*=:U)143z\d*5&6"6<6<5b-\d*C6Q66<5<<6 \06h ;5 |6:=d5Z0b-06OdTa6\d@+֤67)؎6 Yw6 tS؁6i ;Aք6 z+9RL֐6A+ P؞6j ;A+d- ׵6 ص6V ; << xr гд6:=d63z * 'ҳ x) t& | г t гӴ*?`=?`T>Z>KA\d+>>?`(? v`5@J`c? ;`*?A`?T??T????T??T??C?C???T???Т*?Т*?Т*? ;Bf?;=d?B?@R*@D @R @T @ @ ; t@<ԠÁۅ @V@H?3z\d'Xؤ@"L@ v+ q@ xVI@OdU@ rt@Y+ v" "; t@ rt x@7=dUع@ ;@ύY+; t@OdU3A\d t@ ;;` t Z@H@IZ3@) t(B%1z鴱*1BpШp?1A ;\dR040B ;03z~m1m1AL\d+1)2<1=2>2F*2522Ϥ` 2121 212111121WAH@ϬAϬBϬCϬRBϬIEC2ϪjEH@ϪhEH@ϬCϬmD`1E`1C ;[1ύD ;-ώ>.`1;=d7C23z\d+W؉2E ;q2 Uw2 Vw2w2\d+ W[2 U׃2 V؉2;=d3z tШt( cZ3(22Ϭ[1OdV׹2\dtѨtr(2(r3zS3ASSRdO3z;<;3z3;A͉+֒;RL@ %=o-= I$"@#(F>o.t#(F> I"1FB"VDFQDFA"'ZRFZ؃F Ҍ|׃F}F Ҍ|׏F[ ;EViFXiF *+@&  G MH F@G@GDGDGDGDGDGDGH H$G4G:G;-GEHG^F}F"1 G Ҍ|,3zyZ--\ Z<-rӋ~<-t@3z&+@&@=#33ϬOdX#3- ;\S3S93D3D39393D3D3Y ;AS` S3#23zn3>=3. z>b33z @6׫3\d(;4VL40ڋ0L4R0+ 3 3_Z3e ;t4Od(>4=4U485A4.@Ϭ7`=-) R14 U149AԬ\d(4ׅ3WJ4g ;\Ϭ7=+ 5554y4]5555544*ئ4Rל4Sל40ڋئ4*Ш*ִ4cY4 .*=:U)Od\14\d``9L14R4S40ڋ4JBOU t t_ڳ tRڴ۴3z t+ x)A*/=B + 0ڋ E= ) **=0 +a= \=0_=a= @ t_================o ;@m ; vt׳= vx=; v S3z t+0=A x) 0ڋ = )A*B +0ڋ >0 +(> >0>(> ) = ύp ;@ t_[>d>d>a>a>m>m>q>[>u>[>f>[>[>[>R>o ;@n ; v S3z г@Ԣ x v@ Qؼ> Ӆ.?o ;*? =k??;5A?t vv xx@ G%'p> I$LB'=eI*>eI+#GBFB"0؜G0؜G $F>===!ױGp*1\K+B"@())%FYFG"%,>9w#0H Ҍ|H }F= I<0ڋ0G ;B'6G<6GH ,VGX H Ҍ|{F0ױG1,H Ҍ|@,H X{%>eI.=BI=>===jH}FD%=I*>IRL@F> ;[10` cZ3(r/ 0[1OdV/\dtѨt0`C0 |* ;0 r0 s?;0 , @@np@23z2ؓ0OdRؒ0@ ;\dR؋0W؋0t0=dώ,<$>&@BJ@B@p\dR0=dρX81BOU0-=16Y8999_:vK+8V$L 9<=d@;6b-`$L7tﴱv񴱠:xҳYҳxMҳx:x@|@3z=J,J-J.K/K1(K3K6J*K  QJCWJB]JjJ |@=@`J=?=< <*Kύ< 'J@J?JJ $ |-|@4RLJ= |طJC־JI־J=B= I ύ3 ;=RL@C'@()I%==*=RL$L==9N#F`i^#V!֓!9s#r)|^#V! 9s#r! ֓9S!9^#V`i##~#LS! ^#V! ^#V!9s#r! ^#V!9s#r!9^#VoT!!!9^#VR!9^#V##s#r! 9s#r!!9^#VR!9^#V##s#r!9s#r! 9^#V!9~#fo8S!9^#V! 9^#V! 9^#V!@֓T!!9^#VR!9^#V##s#r!!9^#VR!9^#V##s#r! 9s#r!!9^#VR!9^#V##s#r!9s#rÒTe wSwSwSwS4wS7sS:sSS! 9^#V!9~#fo8ʰT!9^#V! 9^#V!9~#foT! 9^#V#! 9^#V͇*d#"d͇!9^#V^#V!֓)|o& ]*x#"x͉\*ͭ_DM ʓ]`i ʓ]`i\l]*ͭ_DM ]]!}27Ó]*`!\DM`i*/#"/+s*/.͌ʐ]!}27Ó]]!*/s`i2^:2^*ʹQ*z9 ^*z+"z^#V"*z^#V"x*z!מ͎\*1|^:5*^!k ;!"1}25!}2:M^:5M^!!\^̀_!"/^"~;%s ͇! 9^#VBK{^!PYDM`i! 9~#fo͚_`i!9s#rð^!!9~#fos#r!9^#V! 9~#fo͚_!9^#V^#V`i^#V9^!!9^#V͟_!9^#V^#V`;3z=<.<+$O>;)O><3zMڌ@ԊOk+A֣O + Ӌ ]O Y]O جOШҌk +أO Ӌ כO Y؅O +ѳ@Ԥ`Ok`O3z O늮QOO,A:$$$.SUB3z"OP$P늮P늮QPP$P0/0/a:3zט%;PIP:טrט Too many -I options3zטׂP:<献ׂP/<献؅P- ؖPPV!9^#VW!9^#V`i 4 6Y!9s#r`i !9^#V! ͎!9^#V^#V!9^#V! s#r!9^#V!9^#Vs#r! 9^#V!9^#V##s#r!9^#VV!9^#V͇! 9N#F!9^#V^`is!9^#V!^#V! s#r!9i^#V_!q ;Ý^s^͇! <_! =_!N_͊R!ͿOCompiler aborted by user!͇*! 9^#VQa͇! 9! 9^#V!h_͵a͇! h_͇! 9N#Fi`!9s#r! `!!9~#fo֓s#r_`i~#fo+s#r!ú_e_ __`!9^#V͇! 9N#F!9^#V!D``i^#V!7͍H`!!9^#V`i~#fo+s#rs!9^#V͇! 9N#F`i* `!"!& ^1!!7`i##=!\!9s#rz`!J!9^#V`i#~#fo\s#r!9^#V!ͱ7"`i"`i^#V*P@ϤQ@ϊ+ r<*/Q@ ;Q"* & :1 ӋrwQ ro늮jQJ@;7@֢Q늮늮؜QJ@ϊ7J % #@ 3z Q7QQ Q@ &ӳ1 r늮J<@3zR ,ь7 R61 ?R W7E?RJDR:J@Out of disk space!3zj늮jb늮r@< 3z =լLsN@b8o+׸M) ;kNSMTM;o* [(oon6oonon 7n \n FoD( Y؋o8;9p tt 7צo ^צo \צo Fצo Ҍ| vv@>RL Tw U,w z 7w z ' 3z tnwRwRwewnwew z zww t<5xww z z˴ t0aw tڴ͇!9^#V!! 9^#V=͇!9^#V!Ăƈ͇!9^#V!! 9͇͆! 9^#V!x! 9^#V! 9^#V!Ă͑4x! 9^#V! 9^#V!Ă͇!9^#V!! 9^#V!Ăp͇!9^#V!Ăx{x!!͇!9^#V!! 9^#V!ĂaĂʃ͇!9^#V!! 9^#V!ĂaĂÃ͇!9^#V!! 9^#V!Ă^#V!͵aDM!*+s`i͇!9^#V*+#"++s!֓ů222!"͇!9N#F c gX-r2w+x 0ڧ:ҧ͓a0o&͇ʃ:w*+"w.´!6w! e -ˁ2Ё+с 0:0)T]))_Ё:|/g}/o#*"*|Gc}/i6\!9ðj*~=j6\!! *~='j6\!!0*~=>j6\!*~<Uj6\!DMðj!*~=lj6\!*~>ʃj6\! DMðj!*~&ʚj6\!ðj*~|ʰj6\!*~=j6\`iͱ `i*~V#^!֓j!"Z?f!8!29^#V!k-ds< z9m- Qתr r Qתr9[-DsRL >=xs>=xs>=xs>=ys@ Tt Ut z!t Qt z&!t z% Ҍ|@RL Ϸ !w ؟t@֠tA%֋t ֋t@=Tt>Tt@ t B u Y u| | u@ "t $u Y uJz*sJzJz"Jz*Iz*Iz* Iz*'Iz*JIz*Iz!{_#zWJz:)=Y}Iz*͗Iz*Iz!{_#zWJz!{_#zWJz!{_#zWJz*zº}{º}Jz*z§}{§}Jz*}*|}}|?>_Jzz_Jz*}*|~}|>_Jz|_Jz*~*}|>?_Jz*2~*}|>_JzzJzJz{/_z/WJz{/_z/WJz*"JzJzJz)Iz o&!~͊RÿOunknown opcode: %d, PC=%d *"|`i+* g o$* o g o g?yIzIz]z]z]z]z]z]z]z]z]z]z]z]z]z]z]צo\ ;;RL@t)tB>;=\K;&E 7no o`$L+ r@;X7 | >; I 3z t0ؿoH t꘻3z o t0 o0oo<<<I, 3z Y7p tp"p"p1p z<]x/p@0pA zP@3z tppppp p pp!tp#pDpFpp z z% z z&|p z z'p z%o>~g~#fo* uzo>g^#VJzo>g^#VJz* zo>g~#fo"Jzo>g~#fo"Jz* zo>gs#rJzo>gs#rJz* zo>g^#VJzo>g^#VJz "Ն* V+^+V+^+V+^+V++~@_+~怳_*"*s#{@w#6#r#s#r#s#r#s#r#6***""*~w*#~WL=ɯ<**æ#‰ #څ‰²*~w* w#Ճ* w#**#/<+"" O _"! "H**+2 ;c**w+Q>w+ Z#~>z>w+o>*w**+Š **#O~>2Ü##ń q#6#62#q q+ ~+Rød!!j!k^#Vkjjjjjjjd.f*ihijjjjjjjejj+jjjjYjjjjjjjijijjjjjjjjjjjjjjjjjjjjIllegal char: 0x%x ͇! 9N#F! 9^#V`i#DM+s!!9s#rk!9~#fo#s#r*~V#^!֓l!9^#V!8l*~`i#DM+s6\k!`is͇*~V#^!֓>l6\*~a`l*~f`l6\*~Aʂl*~Fʂl6\!͇6\DM! 9~#foʤl!xµl! ;!`i\m6\DMÞm! ! !! ! !DM!!9s#rl!9~#fo#s#r!Y u@ Tu Uuz/u Q*uz&/uz%  wvvvvv wvv$vZv3vkv@v|vMvvuvvu wu wuu wuuuu  Y w=RL-w  ցu  .ցu  ցu  /ցu  ցu  ցu  ցu  ցu  -ցu %ցu .v .v .v  ).v  *.v  +.v  ,.v .v .v  "ցu  $ցu  #ցu v v@.vA.vz]zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{Jz{{{{{{{{{{{{{{{x~({1{F{L{b{k{{{{{{{{{{{x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~| |||:{(|R{.|t{4|{:|@|T|o|y|||~ } }}}~&}/}8}A}H}U}j}a}}}}}}}(~~/~~@~M~W~`~x~~j~n~r~|}|||||s}}}L|{{x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~~w~͇!9^#V"+! 9! 9  ~+!ߙw#>@2ޙ!ߙ~w#'O!#@2ޙ!ߙ~w#(ߙ!#(!ޙ5*  w+;͍W!͍L!<͍WL͍WWL͍LW͍LLW|é|z/W{/_*p#z6#6#s̆6#6#r#s#w̆]* ~+~w7+~w*#`i^!+`i#DM!"?`i^!V#^!֓P*? `i#DM+^"?*A|a*?Rd*?DM!99`ie|DM!99!`i~# xš!9괏"~#»!ȏӏ|!5!-~#~#~#~-w#w#w#w!0*/*-"5"7*5*-"5"-*7*/"7"/!->w#J!-~›#YÐ=ɯ<0!8~OÍ0!8fj+‹-!5#¦-!5#»-!5#ϐ-!5#-!5###@@DDFF    sppppppppss̙å???????????   ~0    !!!9N#F#^#Vkb6#> 6 #=>6#=yË 3 7( ܋P0_zW:/Z] : >ˆ AË[y@ÅaË{Ë`w# .ʣʼʋʋw#Ì{o|g ʼʋw#­&jz!|*Ӌ >?a{ 0:拷7!9^#V* *}| *"|!=!9}_|#W"ͥ o&ͥ 2!:" _ͥ :!_!9j!9F+N+V+^+~+ngxʈˆʈ# sog!9V+^+~+ngwʦ#Û|!9þ!9F+N+V+^+~+ng対Ќ#Ȍxw# Ќw|!9^#V#n~#!U80801LECHDB>@Bllddllfd extrn u$|$$$$$$$$$$  "" @    @@@@@@@@@@@@ @ @0@0@0@"@">auto<break<case=char<continue<default<do=double<else= enum>extern=float<for<goto< if=int=long>regist@~T]#Od#+  2* w#6#w#>GK+y>O~# ;DX@]×~>2 y!T]w+p6K>2ͷ*#6#w#6#>2ͷ*#6?#6>#w¬#6*|ԇ!9N#F*ӇrFloating point :runderflow%roverflow%rdivide by zeror at location 0x!9~Z^+~Z^! ͝R0:io&͝R ʄo&͝Rs*6#6]T#w˜!-:0>#ª>~#»!"-"/-*N#~]] G#o$~+y]!->!-~/w#:5?*-*/))%,="/"-8:0:5?UW!0~w+IB!NyG-W5WyÑD-Wy5WÑ1!-w#™DÑÑ1!-w#¹!1w#ɑ> !-~w#ؑO1!5#y!-4=ё=7!-~w#O1!5#%y1!5#@!-1~6#S> !-~w#f҃-!5#z=_nʛ!nʐ!static= struct< switch>typedef= union=unsigned=void< while~|__FILE__~}__LINE__~~__FUNC__0 * &"4$8(   2 00000    ~0    !!:a!9^#V!)!9^#V!9!r!L!! 9^#V##^#V"||*! 9^#V##^#V!r!L*DM`iͫʰ`iͫʰ*!(! ! ! "|!*s!!r!9^#V!͜! 9^#V!^#V!xu !!x͑ !!xu ! !x"|M*!x! r!L*DMͫʌ`i ͫʌ`iͫʌ*͸ ͜M*͜ʭ!&r!LÆ*!Lusage: arcv input [destination dir] rcan't open input: %s, erw#]y6#6#6#6Æ6#6#6#6Æ6*F#~CI!]m#oU$^+Vy]x]|/g}/o#]yx!Æx!Æ!>2*6*#4 ^&)DM)) #wz++ #w++~ˉ@җ͇!9N#F`i~`i#DM+^ͩR!ډ! ͩR!( s# y*"*",O,ͥ!Jͥ"*$!"$*"ƒ*"!4u#4*&+"&}Kʓʓo&"*&͇!9!29^#VDM1!9!DMJ`iߊ!"!!ͥͥ*"DM*$og-|!"/*-z4R}J}z4R||?/g}/o#zJ/W{/_MD!W}y/Ox/G>))h, y}o|g=`=`DM!>))ҏ =‡}{_ʾ|ɓ|7g}o¤{_ʾ)¹}{_ʾ|g}oɓ|g}o|/g}/o|g}o|g}o|}|!}|!}|0}|?>o&zo&|J}|>o&|o&}/o|/g#}}o|gBK^#Vz#y###m#xz#~#fo}|>?o&}|>o&<(orxraneqneltulleuegtuggeuflsrsuradsbngmldvudrmumntcm~MP@  r=%d %s wcan't create: %s, err=%d Out of disk space! !x6 s# yB*"*N"oP^a!!n! !:o&tns!K"2!nDM!"*5`i^! ͜`i^! ͜`i#DMû`i~5`i*#"+)2s#r`i#DM~2`i^! ͜ `i^! ͜/!`i#DM+s2î!2*!La!9~#d!h ^A:$$$.SUBa! 9! 9^#V! ͐a!9N#F! 9~#fo#s#r+^"| *%͜! 9~#fo#s#r+^"!!9~#fo##s#r++^#Vr|g  # w# &jz!|*, >?a{ 0:? 7 o& 2p:q _ :p_!9V+^+~+ngwʍ # |!9å !9F+N+V+^+~+ng対ʷ #ï x w # ÷ w|!9^#V#n~ # !|! 9F+N+V+^+~+ng) })= ++w xɯ3~# x3DM!99`i?|DM!99!Y`i~# xt!9q~#•!|z}}z||/g}/o#z/W{/_MD!}y/Ox/G>)!9!9s#r#!9~#fos#r!9^#V!9~#foW=K!9^#V! ~N !"!9^#V! !"9s#rz!9^#V! !$!l$!!9^#V! s:C*C|!9^#V!;!9^#V!Q!"9^#V!!!"9͐!9!ͻ< !"9^#V!ͻ<+!͠88!"9^#V}!9!"9^#V!))- =%}{_\|g|7g}oB{_\)W}{_\|g}og|g}o|/g}/o|g}o|g}o|ʵæ}¦|ʵ!}µ|ʦ!}|}|?>o&zo&|}|>o&|o&}/o|/g#}}o|gBK^#Vz##y### #x#~#fo}|>?o&}|>o&???????????!9q~#•!|z}}z||/g}/o#z/W{/_MD!}y/Ox/G>)!9s#r !9~#fos#r!9^#V!9~#foW=ʔ !9^#V! ~ʑ !!"9!9^#Vt6‘ !!9ͧ88*C}!9:BN!9^#V!{é !"9DM!!"9s#rü !"9~#fo#s#r`i#DM`i~ !"9^#V!W= `i^ 8`isè !"9^#V!"9s#r!<] !"9^#V!͓ 6 #= >6#=ˆ  5 ک 0_zWÓ /³ ö  : > A [ @ a { `w# .   # w# {o9!"9~#fo##s#r++^#V!9^#V! ͡6!"9~#fo+s#r!/!9^#V! A7DM|!\!9^#V! A7DM|!:!9^#V! A7DM|ʕ`i#DMâ!9^#V! DM!! !9^#V͈7!9^#V!"9s#r!!"9s#r!"9~#fo#s#r!"9^#V!W=-`i~-`i^!.ͻ<-`i#DM+^ 8!"9~#fo#s#r+s!.!9^#V! "7Z!!9^#V! 6!9~#fos#r!9I=ʆ!!l$!9^#V!9s#r!9^#V!9ͻ<!DM:Bʹ!DM:B!DM!!"9^#V͋!"92!l$*C|*C!"9s#rreplacedeleteNo modules to %s. rcannot open input: %s replacing module: %s adding module: %s Invalid object module deleting module: %s Error writting library! D8! 9^#VH;DM! 9^#V=`i!9~#fo+͓"@!"@[%*@"@*@#"@*@ <~%*@^#V!$ͻ<ˆ%J%!"C!!>DMØ%`iDM`i~#ʹ%!9^#V`i^#Vi6ʹ%Ð%! ^#V"@! 9^#V!͓<#"@*@͓<%*@^*@s{%!"C!*@͓DM! ^#V! ^"?*?lͻ<1!9~#fo#s#r+^"?!"?U*?hͻI=ʡ!!À!!`is#r! s#r! s#r`iD8!9N#F! ^/1!!! s#r`i! s#r!2"?|!!! s#r!`inͣ"Cc">R"D8!!@!ͤ7!:o&͓<@s!G$"?!@DM!"@*@<1$`i^! ͻ<"`i^! ͻ<"`i#DMï"`i~1$`i^!>ͻ<"!"@#`i^!<ͻ<#!o:Ao#}2A&A#s!"B:Ao&DM! 9~#fo<:+! 9^#VBK! 9^#V*BAͤ7`i*B"B`i:Ao=}2A`iD8! 9N#F!"BÊ+*B#"B*B! 9~#fo<ʿ+!9^#V5`i#DM+s!ͻ<¿+Ã+*BD8!9^#V)))<>DM! 9^#V! 9^#V! ^#V! ^)>^#V"8D8!DM!9^#V"B*B&^D6*B$~ʅ,*B$^!=DM! 9~#foX=h,! 9^#VBK! 9^#V*B=-ʅ,]6!! 9^#V`i=~<"B|,*B! 9^#V`i*BQ1"B|,]6*B*B=nDM! 9^#V! 9^#V! ^#V`i^ͻ< !*?#"?5*?!"h="j=! 9~2f=G+V+^+6"d=+N+V+^!h=w#Cys/w#gt!k=>^)|ڈg,€s+={Z!~*d=+"d=w!h=t#ª*d=+6-0123456789abcdefD8u!DM|!! 9^#V! 9^#VD8! 9^#V͋!l=DM`iDMx,!"C!! 9^#Vi6@! ^#V! 9^#V5%"?ͻ"8!DM`i <ʗ$`i#DM+Ͳ&}$!9~#ʺ$!5͓<ʺ$!$2R"A:$$$.SUBD8!"C!D8!con:CON:lst:LST:prn:PRN:W=1-! 9^#V`i=! 9^#V`i*B=-1-]6`i]6! 9^#VD8!9N#F͖0<]-!! 9^#V!$ ^!!9^#Vͤ7!"5"C|ʕ-!!$ ^! 9~#fo͓~š.!"C͠8!9^#V)))B>^#VBK!9^#VK/!& ^D6!`inͣW=ʊ`i DM͋jD8!9N#F!"?`i~! ^!͓<! "?! ^Ͳ&*?ͣ<"?! ^!͓<! ^#VO4!! s*?D8!9N#F!_">! ^!͓<, !! ^!͓<ʚ ! ^#V`i^#V="?*?! ^#V! ^+ͻ<ʚ !`inͣ^#V"8D8!DM!9^#V"A*A&^D6*A$~ʎ)*A$^!=DM! 9~#foX=q)! 9^#VBK! 9^#V*A9*ʎ)]6!! 9^#V`i=~<"A|)*A! 9^#V`i*AI1"A|)]6*A*A=n  9!! ^#VͲ;͓898!$ ^ͼ;8Y98ͧ8Y9͹8^/!"C͠8"=:/..=/!!# s! 9ͧ8͓8^;ʙ/!!! s#r!$ s!"C͠8! 9ͧ8;͓w#9!?~X;#9M;=ɯ<?!?O~J9?!?#9'9+H9?!?#c9?!?#x9?!?#Œ9?!?# 9?!?#´9!?~/w#9:??*?*?))9,=9"?"?9:?:??:W!?~w+:9!Ny9?:?:ỳ:9?:y?:̀:?!?w#V:9̀:̀:?!?w#v:!?w#†:> !?~w#•:O?!?#ª:y:!?4=Ž:=:!?~w#:O?!?#:y:ù:?!?=Ш=ѳ +* (,=Ш=ѳ 6 г9==,)@  гkQ Fu:< r-F ,P׬:<A֬A֬A֬A֬ г  г  г  г ;C׬ Sb;坬 ,Pן[.坬ߋ0坬FD坎FKP坬+Rc^:<F+R|:<`1QUt\1duplicate output filetoo few arguments for -o optioncan't compile two files, second one ignored.c.asmrOpen f5b8*?DM*?og!9N#F#^#V .5 25#5kb6#> 6 #=95>6#=B5 5c50_zWM5/m5p5 : >›5 A5[Ҍ5@Ø5a5{5`w# .ʶ55ʞ55w#ß5{o|g 55w#5&jz!|*5 >?a{ 0:57!9^#V*>6*C}|6*>">|!=!9}_|#W"Cb8 o&b8 2?:? _b8 :?_!9}6!9F+N+V+^+~+ngxʛ6›6ʛ6# Æ6og!9V+^+~+ngwʹ6#î6|!9F+N+V+^+~+ngx6w6# 6|!96!9F+N+V+^+~+n. 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@  C???????????$$$$$$$$$$$$$$$9'$>$>$>$>$>$>%>%> %>%>>$)*m+ $ ,*.*l,.swt %szsave,zret +yN# z+ C r! |R _! @I * #ز Ҍ) 8Qu ӳ ӳR _ 8Rؒ ӳ ӳR$ _ 8TG ӳ ӳR. _G R8 _RS _Rt _ R _R _R _R _ _%s%s_ %s.%c%c %s.l%c%c %s.d%c%c %s.lldp,.llds,.llip,.llis %s.lst,.lpsh,.lpop,.lswap,.ltst %s.itox,.utox,.xtoi %s.dldp,.dlds,.dlip,.dlis %s.dst,.dpsh,.dpop,.dswap,.dtst %s.fldp,.flds,.fst %s.itod,.utod,.xtod,.dtoi,.dtou,.dtox 7!"B!*C|1!`i"B!! ^#V"B!D8!9^#V)))>>^b8!V1b8"*?!"?*?1*?!41#4*?+"?}W1ʟ1ʟ1o&"C*?D8!9!F9^#V5DM!9!H9^#V5D6!9!5<2!9!5!"C2!9!5]6D8!9!29^#V5DMD6!9!5DM]6`iͻ<\2!"C!!D8!9N#F! ^#V+))"BO4! 9^#V2"B|2*BPY<2! 9^#V*BX=ʵ2*Bý2! 9^#V*Bͤ7*BD8!9^#V###~<#"B*B"B|3!B"B"B"B#:!??~6#;> !?~w##;@;?!?#7;=;+9X;!+9M;!<+9X;M;+9X;X;M;+9M;X;+9M;M;X;?9X;M;?9X;X;M;?9M;X;?9M;M;X;"?!"?"?|;!"?*?z;=}<}z;=||;/g}/o#z))%<, 6<}o|g=<=))L< =D<}{_{<|<|7g}oa<{_{<)v<}{_{<|g}o†<|g}o|/g}/o|g}o|g}o|<<}<|o&zo&|=}|>ailure on inputNo input!wOpen failure on output+y =T<T>=s;:,;:-:<1<^;:aU)797#,7!|!9^#V#nY7#P7xi7 +~Y7|!!9~#foʄ7#{7}!9^#V#N#F#nxʢ7s# ×7! 9F+N+V+^+~+ng77}77 7++w x7ɯ7~# x7!9~a8{8 o&!9~A8[8 o&DM!99`i"8|DM!99!<8`i~# xW8!9q8?~#x8!88|!?ê8!?~#~#~#~?w#w#w#w!?*?*?"?"?*?*?"?"?*?*?"?"?+y\S`2.Ne%=<@+^Y^\@K * i\z \~\+I \Y`ѨBͤҳYVҦVXͤYJJL74 R.S<`S `rkSdQ`QC Vers. 1.06D %s (C) 1982 1983 1984 by Manx Software Systems Z80%d errors %d is next label, work: %d +y@r坩F  r-+ Ӌ- +  Ӌ ՜\g= = ( END +yRR! R|U _R|b _\D zg _Q z _6 PUBLIC %s_ %s_: push b lxi h,0 dad sp xchg lxi h,.%d dad sp sphl push d db 221,229,253,229 lxi d,.%d call zsave +yz _.%d EQU %d +y  <  `@+y<">=^QR*Yذ )Q@ @)+ W3ذ U( f ˳ _8Z ˳ _8 _֩ ZW _ )ѳ ׁ r` _D - ׌ :i _ r | _D - ׼ Z _ LXI D,%d DAD D XCHG LXI H*B##^#VBK3`i"B! ^#VBK! ^#V`i?o&}|>o&rr+ww+a a+ xx+ C???????????$$$$$$$$$$$$$$$9'$>$>$>$>$>$>%>%> %>%>>$)*m+ $ ,*.*U( 9"~8"`:>T:;<:j;<~+y z* |) 1u}@~A=9Mנ>=:M>=9M׋ب@֩AU+:M>=9M;"9n@A=:M:n@A=9M9n >=:M:n>=9M 7 0 7@4 |,>=< HDB+y Ӌ fsmfqzrluA[AA]gA\jBqjEpj ӳ:<junknown option: %c+y+y;q_+y[]_R_R _ .8080 %s.begin,.ch  ,%d DAD D JC .%d LXI H,.%d DAD D DAD D MOV E,M INX H MOV D,M XCHG PCHL .%d: DW .%d DW .%d CALL .swt DW %d DW %d,.%d DW .%d +y<* < Ҍ%_@ֽ=  z |,  y y  y y"y'#,y-y.y/y4 7y?3@pAWByCy |` 7< tjd<d |rRy _ֻd tH<ӳ tך֠ӳ_ֽ "y<׼ =  CALL .%stst mov a,m ora a mov a,m inx h ora m  z[_` zt__<a<A<ώg<` |rX<%d .%d+%d LXI H,+yz r6_=< LXI H,%d-.%d DAD SP +yz z |r6_ LXI H,%d-.%d DAD SP +y t #<)_`<:ώ3< LDA MOV L,A LHLD +y Y{ OsQp(> `\!׻(1@Ԏ坤"Qנ(/S<dQ坬@Ш\ϤH(1`\B(A(+y+@A`\(lS<)q[lda ora a mov a,b ora c MOV A,%c ORA %c +y |  | +y X) z*:د:; |Q؈:``;a::9`: |+ '?_@A |@A rX Ҍ`:9@ r`X |-:::9 ҌM::9@:~ |t<:`;`::9 Ҍס<:9<`: |j;`a |z+y z+;; r>=_ |I%>=_ rM_ E;Q@>=_;U__%s_.%d+%d%d+y Ri Rv<;= ӳ ӳ ӳ ӳ_ MOV %c,%c MOV %c,%c +ya< |Q`a<A+y t  AP2p5{_TPICK4_ Ҍ%_ 7ͥI۩I`= ,ؓ Ҍ%_A |+ '?@;Aa r*`:X>:`X ,˳@;`=`;`=>``=A ,:`˳@=>=~ ,\˳@ call .%slip DW -1,-1 DW 1,0 DB 0%c1H,1,0,0,0,0,0,0 call .%sad call .%sswap +y<a<:A@   ?#@SAFB5C<Z`+& Ҍ%-_ Iͤ66= CALL .%spop +yBͤ66 Ҍd Ҍu_ Ҍ _ db %d,229 PUSH %s +yBͤ66 Ҍش Ҍ_ Ҍ _ db %d,225 POP %s +y=+/ Ҍ/ A Ҍ* ӳ ӳ Ҍ%K _ 7ӳ 8ﴳ۴@ "C _ DAD D CALL .%s%c%c +y i < \u ~ x _ jmp zret RET +y ا ا < _@ JMP .%d +y < _ JZ .%d +y < _ JNZ .%d +y< _ D#)%`#)C(()_( %s +yZA)/Ϭ4*PL)ZZ؏)rӋ~؄)=}Nt)ρt@r֊)sc<=,~Y%TҌҌ󴱁r~ԁst|@Ԏ=}+y 2*<@@* + Z2* Y2* Y=N* , ,ѳ ۴ +y(ؤ*`\@w*,؁*`\YߦZt*^S<ρЅq[M*)Y*`\Zؤ*Yߦ@Ԭq[=@@䖻 *+ + + + ++D+(+j+*ަ)+; |`; '?I@oA1 | |rX |^;;;A |؄;;~@ |`;أϪ; |`a;+y |+P*;!@A;:  Ҍ z z    "?[@DAByCEP`@*;g`;`;@*ׅ`;tؘ@֙A |rX z) " S `9@  V` )P@ώaM +y<@ t( |) AA |r*@+ R ? n@ "l zAl |Yl z|r* |z*@ Ҍ* + ا;:_ءQء г:._@A;Ҍ:=_Q гҌ:K_A ` ;Y_k_ a<<AA db %d,110,%d db %d,102,%d db %d,%d,%d db %d,%d,%d LXI H,%d DAD B mov h,b mov l,c +yM5=M5UM58|BX50@Ϭ8`.) Rx5 Ux59AԬ d(44Wؑ5gS<\Ϭ8_>+ 7665567767;6685R5S50ڋ58Ш85q֠5 .*=:V)d\x5 d``9 Nx5R;6S;60ڋ;6JPFV)b6UZ6Zc<x5 rT60ڋ ؓ6Ѣ >=B+ r 9W]6`.)d\x59AԬ d9"x5=`V)d\׻6;9#]6`.)d\׻6;9B#]6* S+y t+0?A x) 0ڋ 1? )A*B +0ڋ X?0 +o? c?0f?o? ) 2? ύpS<@ t_????????????????oS<@nS< v S+y г@Ԣ x v@ Q@@V@no@ vn|AJnت@S<nq@AnA@@@A@A@A@A@@AA@A@Тq@Тq@Тq@֭0;J z+ 0 dU$1>S<2K1`.c46@1R12dV71 dѨ^1`Z Qf1 |* !؂1 rd1 s?c<d1 ,:.N@|~@@+y@1dR1@S< dR1W1ػ1cώ:,J2L4@BJ@P@~ dR2cρX2P#FV=2#&/ք2pY#Pl2z鴱q2P~Ш~ֆ2AS< dR24 2BS< 2+y״2ش2AZ d+2p3<2=e3>e3Fq3|33Ϥn e3$3N373T33Z332 33J33G;X: t: vt)4;G; vx=c<;M@9#FV)p;h;0P;v(h;t#FV)p;M;#'; rL;EG'K+ t t v v x x*:@`U9+F;nFim+Fa;3F`Z @+y3 -'- "-7-8S<`\: ,\:- *ѳ`\:`\ , *,(:`\,(א- Ѵs- )~- ~-`S< ؖ-fS<֖-:Ԭ`\,`\Q- Ѵ׻-`S<:@ ),:,,[כ,Q- -bS< },}*-;[ *+&. - х+-;[.%d+y<,+E. +ӳ[ ;.+yZd./\ZZ؃.rӋ~؃.t@+y4+@4N==4. ?ש4+y @&84 d(ւ5Vؓ50ڋror %d: %s Do you wish to continue? +y;=<= tR.> tS.>lS< tB t0ڋ I> x t t_ڳ tRڴ۴+y t+ x)A*v>B + 0ڋ ،> ) *q>0 +ب> >0>> @ t_>>>>>???> ?>>>>>>oS<@mS< vt> vx=c< vG ύQS<@+y "G :7G7G%'==M>M@ %=n-=TJ$"@#oG>n.t#oG>TJ"xGB"V؋GQ؋GA"'ZיGZG ҌGG ҌG[S<'GVװGXװG *+@&  2I I .HHHHHHHHHI I$H4`H:H;tHEJH^:HG"1TH Ҍ@TH%'o>TJkMB'=J*>J+jHB;HB"0H0H $?=?!Ho*1L+B"@())%1v#0J ҌJ G=W//`\.&[+y0S<.+y<1c<+y dk/ X/U/l/q/v/{//(+ @2c<ω)W/[W/]W/{W/}W/+y0ڋ0&IS<B'}H >}HH ,VCIXQI ҌG0H1sI Ҍ@sI X{%>J.=J=>_>=_>رIGD%=K*>KփH=aH1I!,%TH HYH |YH |zz z* z@=MH"H7J=M@Tut! 9s#r!>Tut!9s#r! 9^#V!9~#fo0U!}2*#"1 ]#_!":(]:Eo&>]*#"ͳ\*Ͷ_DMʽ]`i ʽ]`i\ʖ]*Ͷ_DM ʇ]!}2Eý]*`!\DM`i*=#"=+s*=<̈́ʺ]!}2Eý]A]!*=s`i\^:\^*R*13^*+"w^#V"*w^#V"*w!͆]*?|B^:CT^!kS"zOLBOA.- d͋4O שNPV Pͬc=P3PJP x_>JP!HPJP*S<+y=<.<+kP>;pP><+yEڌ@ԊQy+A!P + Ӌ פP YפP P!Ш!Ҍy +P Ӌ P YP +ѳ@Ԥ!קPy!`!9s#r!9~#fo+s#r#|oY! 9~#fo++s#r~#Y++~#SY! 9^#V^#Vsr! 9^#V^#Vnf«XY^*4|ʩY*2DM! 9^#V*2"2*2*4̈́ʦY!Y:<`i! 9^#VYLocal table full! (use -L)^! 9^#VDMY!Y:<`iOut of memory!^:DZ!;[:o#}2\:PZq[*#FZ%'Z:CPZ'Z:o+}2^! 9^#V%T)^#VBKÀZ`i^#VBKxʢZ`i!9^#VNŸZ`iyZ:DʯZ!òZ!^! 9N#Fq[*d#^!ΒZ!!*d#^!Β[0cbd >qLύ= 'K@K?LL $ |-|@4ML= |KCLIL=B=TJ ύ3S<=M@C'@()I%=_>*=MkM=?PL=?*=JLqL =L=J-qLB'=T&kM+y tZآL!S<+yI%@& *B'@()kM+y#V+MdQMA2@#`.+;#9^#V! 9^#V! 9^#V!@Β1U!>Tut!>Tut! 9s#r!>Tut!9s#rÉU] TTTT4T7T:TU! 9^#V!9~#fo0ʧU!9^#V! 9^#V!9~#foU! 9^#V#! 9^#V^*r#"r^! 9^#V^#V!Β)^#V!Β^*.!9^#VFVDM|CV*N.CV*N^#V!9^#VFVDM`i^!9N#F_V! ^#VBKxʁV`i !9^#VN~V`iVV!^*.DMÜV! ^#VBKxV`i*,V`i !9^#VNV`iÓV!^! 9N#F!9^#V.V`i ͅVW_nf`i^#V_!qS<^Ý^^! E_!F_!W_S!QCompiler aborted by user!^*!9^#V8a^!9!9^#V!q_͜a^! q_^! 9N#F^` `!Β_`i~#fo+s#r!_]_ __ `^!9N#F! 9^#V!9``i^#V!Eͅ=`!! 9^#V`i~#fo+s#rs! 9^#V^! 9N#F`i*Ǥ`!"Ǥ!& ^)!!E`i##5!T|±`!B`i#~#foTs#rͩE"Ť`i"Ǥ`i^#V*Ť̈́a*ŤET͏Q+y #Q㉮Q#Q'Q$A:$$$.SUB+yDQcQkQ㉮bQ㉮QbQfQkQ0/0/a:+y嗌3؂QQ:<r嗏 Too many -I options+y嗌#Q:<ߋQ/<ߋQ- Q'R<+R+%R %R#Q r* %R <)R+R+Q< rr+y ӋrSR[+ _R '+#/N#ZeNSKN&S<LA.݅ӁtטN+S<B֋Nۋ0ڋ ؑN >AѠSؑN&S<LA.լdUاN dA-@" dVOͬctZNt0ڋ NUN>=լ NֺO@bU9n+N)S<ֲOnf`i FV|&W8X`i , pY`i  ͆nfu t ut!9^#VsrW^!9N#F!9^#Vn`isnf! s#rnf! s#rn! s{7Xn&)pYn&)nf T!9s#rnf ! 9^#V͒,X!9~#fo##s#r++^#V##++s#rW! s#r^!9N#F!9^#V! ^#V!0Β0ʷX`i^!ʏXn&·Xn&·X`i^!ʫXn&·X`i &/nf! ^#V«Xnf! ^#V«X! ^#Vnf ! 9s#r! ^`i#~#fos#r!E`is#rw``i~#fo#s#r+^!Β^! 9N#F`i Xa! ^a^a^! 9N#F`i*#"+s*Ë́ʓa!@S!E"`iΒ^!9N#F!9^#V#+^zRc%Gc#+^b!9!9~#fo##s#r++^#V͘c!9s#rc!9!9~#fo##s#r++^#VSc!9s#rc!9^#V^#V!0ʖb!9!9~#fo##s#r++^#VJSc!9s#r!-!9~#fo+s#rsÿb!9!9~#fo##s#r++^#VSc!9s#rc!9~#fo##s#r++^#V!9s#rc!9~#fo##s#r++^#VGc] !5Ύͷg!"hfg!5!9l!69ێ!5Ύfg!"h!69ێ*l~g*Lʇg`\!"h*hʤg!n!5ðg!5"n!5!69Վ;Lg!*hޒ"h! "d!"h!'͞k"nh!WST qM >=wwr>=wr>=wr>=xr@ Tr Us Byͼ}n&"Byͼ}sByͼ}n&By}z}{}{}{ o gK{AyK{Ay o GM*w# W{W{By o&9By}9By o GMCyzy{Byzy{By`iN#F# N#F#zڲ{¶{{Ҷ{##N#FCy`iBK^#Vz{#y{###{#x{#N#FCy^#VBy_By*s#rBy*sByBy"By*wAy* Ay*Ay*Ay*BAy*Ay!{_#zWBy:)=Q|Ay*͏Ay*͹Ay!{_#zWBy!{_#zWBy!{_#zWBy*z²|{²|By*zŸ|{Ÿ|By*|*||}|?>_Byz_By*|*||}|>_By|`i^!8m`i^!9$m!Sn* [(nwnm.nnmnm 7׾m \׾m FnD( Y؃n8;1o tt 7מn ^מn \מn Fמn Ҍמn\S<;M@t)tB>;?L;&G 7mon`kM+ r@;X7 | >;TJ +y t0طnH t+y n t0 n0nn< ><K, +y Y/o t9^#V!ͼ͉,w! 9^#V! 9^#V!ͼہ!9^#V!! 9^#V!ͼhہ!9^#V!ͼpsw!!!9^#V!! 9^#V!ͼYͼ‚ہ!9^#V!! 9^#V!ͼYͼͻہ!9^#V!! 9^#V!ͼYͼ͟ہ!9^#V!! 9^#V!ͼYͼ͗ہ 0o}_!Mx~#foo}B[(i`\!9i*=>i`\!! *=Ui`\!!0*=li`\!*<ʃi`\!DMi!*=ʚi`\!*>ʱi`\! DMi!*&i`\!i*|i`\!*=i`\`iͩ ޒ`i*d#^!Βj!"he!8!jSid!!!j!Ej^#V/jiiiiiiideahg+iii!j!jiiiM Ϸ ! v ؗs@֘sA%փs փs@=Uغs>U׼s@ s Bt Yt| |t@ "s $s YtYt@ T t Utz't Q"tz&'tz% vuuuuuvuuuRu+ucu8utuEuutt utvtvmtvtttt  Yv=M- v  yt  .yt  yt  /yt  yt  yt  yt _By*}*}|>?_By**}*}|>_ByzByBy{/_z/WBy{/_z/WBy*"ByByBy)Ay o&!}SQunknown opcode: %d, PC=%d *"|`i+* g o$* o g o g7xAyAyUyUyUyUyUyUyUyUyUyUyUyUyUyUyUyUy{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzz z z z z z z z z z z z z z z z zByzzzzzzzzzzzzzzzp} z)z>zDzZzczxzzzzzzzzzzp}p ooo)o zT"***Ύ͔Ύ͔*^#VDM!9" o&)>ۅo>}g~#fo* myo>g^#VByo>g^#VBy* yo>g~#fo"Byo>g~#fo"By* yo>gs#rByo>gs#rBy* yo>g^#VByo>g^#VBy _By o&"By o&By o&Ayͭ}^#VByͼ}^#VBy o g^#VByͭ}Pzͼ}Pz o g~#fo"Byͭ}s#rByͼ}s#rBy o gs#rByͭ}^#VByͼ}^#VBy o g^#VByͼ}Ayͼ}"By _WBy _ WBy og"By o g"By ogBy o gBy ogAy o gAyͼ}^O _"Ø! "Řy@*Ø*Ř+* 3[*Ř*Øw+I>w+ R#~>r>w+g>*w*Ø*Ř+‚ **#O~¹>2Ô##ۃ½ q#6#62q q+ ~+ ~+!혯w#>@2!~w#O!#4yQ!4!5Ã!5ʃ!~w#^O!#qyQC* 6+6+w”**#~ ~+Ą ~+ք!혯w#>@2!~w# #^!Β,k0&k*`i#DM+s`\j!`is^*d#^!ΒVk`\*axk*fxk`\*Aʚk*Fʚk`\!^`\DM! 9~#foʼk!xk!Sl1>l2>l3>l4>l5>l6>l7>lXkbkfknkrktkxkl`i^!9N#F!9ێ`i~am yt  -yt %yt &u &u &u  )&u  *&u  +&u  ,&u &u &u  "yt  $yt  #yt u u@&uA&u uu@>M Tv U$v z /v z ' +y tfvJvJv]vfv]v z zov t<-wov z z˴ t0Yv tڴ!9^#V!! 9^#V5ہ!9^#V!ͼ;!9^#V!! 9~ہ! 9^#V!w! 9^#V! }p}p}p}p}p}p}p}p}p}p}p}p}p}z{{{2z {Jz&{lz,{z2{8{L{g{q{{{}|| ||}|'|0|9|@|M|b|Y||||||| }}'}}8}E}O}X}p}}b}f}j}{{{y{{{{k|x||D{zzp}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}}o}!9^#V"9! 9! 9^#V!͜aDM!*9s`i!9^#V*9#"9+s!Βů222!"!9N#F [ _P-j2o+p 0ڟ:ҟ͋Y0o&‚:o*+"o.¬!6o! e -À2Ȁ+ɀ 0:0)T]))_Ȁ:|/g}/o#*"*|? !#  !5*  w+3ͅO!ͅD!<ͅODͅOODͅDOͅDDO|á|z/W{/_*p#z¸6#6#są6#6#r#s#wąU* ~+~w7+~w慷*#~T]#O\## 2* w#6#w>GC+y>O~# 3<P@UÏv>2 y!T]w+h6C>2ͯ*#6#w#6>2ͯ*#6?#6>#w¤#6*|̆!9N#F*ˆjFloating point :junderflow jow#w!>*=*;"C"E*C*;"C";*E*="E"=!;>w#B!;~“#QÈ=ɯ<>!F~OÅ>!F^b+ƒ;!C#ž;!C#³;!C#Ǐ;!C#ۏ;!C#!;~/w#:C?*;*=)),="=";0:>:C?MW!>~w+A:!Ny?;OCOyͻ<;OyCOͻ?!;w#‘<ͻͻ?!;w#±!?w#> !;~w#АO?!C#y!;4=ɐ=Ѥ???????????    #~0    !!##@@DDFF    ooooooooȘژ|!=!9}_|#W"ͤ͝ o&͝ 2/:0 _͝ :/_!9b!9F+N+V+^+~+ngxʀ€ʀ# kog!9V+^+~+ngwʞ#Ó|!9ö!9F+N+V+^+~+ng対ȋ#xًwً# ȋw|!9^#V#n~#!|!9^#V#n# x& +~|!!9~#foA#8}! 9F+N+V+^+~+ngځe}ځʕ u++w xuɯꋌ~# x‹!9F+N+V+^+~+ngy®Fwx# ¯Č=ï!9N#F`i^! `i^! `i#DMӌ!"K`i^@0@0@0@"@">auto<break<case=char<continue<default<do=double<else= enum>extern=float<for<goto< if=int=long>register< return=short5sizeof>static= struct< switch>typedef= union=unsigned=void< while~|__FILE__~}__LINE__~~__FUNC__@verflowjdivide by zeroj at location 0x!9~RV+~RV! S0:ao&S |o&Sk*6#6]T#w!;:>>#¢>~#³!";"=;*N#~UUG#o$~+yU!;>w#Uy6#6#6#6~6#6#6#6~.*F#~;A!Ue#oM$^+VyUxU|/g}/o#Uyp!~x{!~!>2*6*#4 ^&)DM)) #wz++˜#w++~È@ҏ!9N#F`i~`i#DM+^S!҈! S/!;~w# O?!C#y?!C#8!;?~6#K> !;~w#^{;!C#r=Wfʓ!fʈ!))`, q}o|g=X=XDM!>))҇ =}{_ʶ||7g}oœ{_ʶ)±}{_ʶ|g}o|g}o|/g}/o|g}o|g}o|}|@!-!"K`i#DM,`i^!+,`i#DM!Gێ`i^!d#^!Βʌ!G!GΎ B`i#DM+^͔Ύ͔;*K|ʠ!G<æ!G!9N#F`i^! Ѝ`i^! ؍`i#DMô!"O`i^!-!"O`i#DM `i^!+ `i#DM!"M`i^!d#^!ΒH*M w`i#DM+^"M*O|Y*MJ\*MDM!99`i]|DM!99!w`i~# x’!9ꬎ0~#³!ˎ|!C!;~#~#~#~;w#w#0 * &"4$8(   2 00000    #~0    !!##@@DDFF    ooooooooȘژlnprmlntmplnsecSysvec_$MEMRY.begin_exit_Croot_ exit_ getchar_ putchar_ fprintf_printf_format_fopen_fclose_flush_agetc_getc_aputc_putc_!6 s# y*"ͤ* "ϤsP$͝!B͝"*2!"2*0{*0!4m#4*4+"4}Cʋʋo&"ɤ*4!9!29^#VDM)!9!DMB`i׉!"ɤ!!͝͝*0DM*2og!9N#F#^#Vkb6#> 6 #= >6#=yʻ + /  ԊH0_zW2/RU : >€ Aڻ[q@}aڻ{һ`w# .ʛʴʃŠw#Ä{o|g ʴŠw#¥&jz!|*ˊ >?a{ 0:ފ7!9^#V* *ͤ}|* " !}|!}|(}|?>o&zo&|B}|>o&|o&}/o|/g#}}o|gBK^#Vz}#yw###e#xr#~#fo}|>?o&}|>o&<(orxraneqneltulleuegtuggeuflsrsuradsbngmldvudrmumntcm~MPUZ801LECHDB=?Ausqtrpllddllfd extrn %%%%%%%%%%%  "" @    @@@@@@@@@@@@ @ @ zDMª! 9^#Vr!9N#F!! 9^#Vs`i{%^! 9~#fo+s#rs!PY|DM«!! 9^#V0123456789abcdeffopenhh errno_ fopen_ )fclose_ flush_ agetc_ getc_ aputc_ 3putc_ csave .uf fcbinit_ .eq getusr_ setusr_ bdos_ rstusr_ .sb .ne .an .swt blkrd_ .ls .rs blkwr_x!DM`i~#ʢ@fprintfAPP fprintf_ csave format_ aputc_q!9^#V"! 9! 9^#V!rq*! 9^#Vsprintfb  printf_ format_ csave putchar_ .eq .lt .ng .swt .chl .um .ud .an .urr! 9! 9^#V!sͮr!9N#F!!9N#F`irʨ;!`i#DM+ sê9*&^}xʠ?`iv! *##wʠ?!!#t!p"Ȋ|«%!*Ȋ`i#~#fops#r*ȊuI"̉`i"Ή`i^#V*̉yʫ,*̉Ipv`i#~#fos#r!I`is#rá"`i~#fo#s#r+^!rx!9N#F!PYrDM`i {ʤ2! 9^#V! ͣ3{ʤ2!! 9^#Vͣ3x! 9N#F!9^#V`i~#fo#s#r+s`i^#V!Iyʯ7!ͭ8ʦ7!! `is#r!9^#V!rx@begin5*  lnprm lntmp lnsec sbot errno_ _mbot_ Sysvec_ $MEMRY .begin $_exit_ _Uorg_ _Uend_ Croot_???????????!z"{zs# y¨*"s*"u|äcroote Croot_ exit_ getchar_ #putchar_ csave movmem_ .an `i'DM yʯ!"p!ë`i##! 9^#Vz"Š{ʪ!"p!*Š{ʬ|"Š*Š!& s*Š}! 9^#V^!r{ʧ `i##!~{ʥ !"p!!I`is#r!"Ήã*|ʣ !`i##!~`i##!~{ʥ!"p!! `is#r`i"!!# s#r!% s`ix!9N#F!"Ċ`i*{ʤ`i^#V! pͭ8"Ċ!"æ`i*Ή{ʦ!"Ή!& ^}`i##!~{ʯ!"Ċ!`is#r*Ċx!9N#Fͨ "Ɗqʤ !@ 9~#fo#s#r+^"|ʮ*%tʡ! 9~#fo#s#r+^"æ!!9~#fo##s#r++^#V͠ "á!!9~#fo##s#r++^#Vͯ"á! 9^#V^#V!uʦ!!9~#fo##s#r++^#Vvͯ"!-*+"sé!!9~#fo##s#r++^#Vͯ"á! 9~#fo##s#r++^#V"á! 9~#fo##s#r++^#V"áwcd su x*~ʮ*#"+^`ixáë*`ixër!9N#F!! 9^#Vs`i y0! 9~#fo+s#rs! PY@@.lt .eq main_ _exit_ bdos_t!!!u!:o&vs! "!DM!" * wʦ `i^! x¨`i^! xʠ`i#DMì`i~ʦ `i* #" +)s#r`i#DM~ʣ `i^! x¡ `i^! xʠ !`i#DM+sã ëï!* yztzt!{DM xʠ! !{! DMà`ixʠ!DM`it!9^#V! xʦ! !{!9^#V!{!9^#V!v*Ɗr"Ɗá`i~#fo+s#r!ìs  *Ɗx!9N#F`i*Ήqʭ(!"Ή!& ^}!!I`i##t!p"Ȋ|«%!*Ȋ`i#~#fops#r*ȊuI"̉`i"Ή`i^#V*̉yʫ,*̉Ipv`i#~#fos#r!I`is#rá"`i~#fo#s#r+^!rx!9N#F!PYrDM`i {ʤ2! 9^#V! ͣ3{ʤ2!! 9^#Vͣ3x! 9N#F!9^#V`i~#fo#s#r+s`i^#V!Iyʯ7!ͭ8ʦ7!! `is#r!9^#V!rx@ ÿ?.com;RCopyright (C) 1981 1982 1983 1984 by Manx Software Systems;R!T2% !"l`!9^#V"[! 9^#V"["!"`:@\!j*d`)̓0"D`|ʿ*b`)̓0"F`|!0X!DM`iͶV̓0"`|`i+DMUW!0X`iͶV*`"`!`iͶV*`R!"l`!zw:r`K* X!@\!r`0vͿ*L`*,`Wk*N`*,`Ws!*a5W!4`*8`,VES*L`,VSSS SS SSES*:`,VES*N`,VSSS SS SSSSS3S*L`*N`W)*L`*8`*N`file: %stoo few arguments in command line.;R! 9N#F!!9s#r`i#DM+^!9s#r!0TWʆ !9^#V!9UWʆ !0!9~#fo͓Ws#r !9^#V!aTWʿ !9^#V!fUWʿ !W!9~#fo͓Ws#r !9^#V!ATW !9^#V!FUW !7!9~#fo͓Ws#r  !9^#V))))!9~#fo!9s#rD !9^#V;R!Y!9s#rI !9~#fo##s#r!9^#V^#VBKzʕ `i a0!9s#r)a^#V! s#r`i!9^#V)as#r9 ;R*`,VES! 9!SSSSES*`9SSU !*`,VES!9!SSSSES*`9!9*`*`͓WWï*`:(ï*@`*B`s#r!8`"B`!"j`*8`Z(ï*@`*B`s#r!:`"B`!"j`*:`Z(ï*`;-"H`ï*h`(ïïò!x!^#V{5Wjxxxu!{Y!ڲ!^#V%%%%%%2E%%%vâCannot read module on pass2.Branch out of range @pc=%x;R! 9N#F`i WV`i W`i W͉W+<!9s#r!9^#V!<*\<*\<*<`<!9s#r!9^#V)*F`^#V*`:`i!!9s#r%*\!9s#r%*\!9s#r%*<`!9s#rZ !}2R`!͑ , "L`K! :S`o&Z !}2S`!͑ , "N`K! :T`o&Z !}2T`!͑ , "P`K!" :U`o&Z !}2U`!͑ , ",`K!͑ !r`:QK!}2\K!}2\K`i#* X!% ! 992!9!9_D`i^!. K!!^#Vu!cKG`i^!+5Wʽ`i#DM~ʺ`i^! Wè!͑ , "^`X!͑ , "``X`i^!D X͜WcpdX1:@\!@\:Q_(Cannot have nested -f options.rCanno^#V!9s#rz*`i !Fͤ!!9s#r*:`! s#r!9^#V*:`":`̓!zX7:T`n*:`*N`# W"P`*XDM ~̓! ^#V!9s#rz! `is*<`! s#r!9^#V*<`"<`!X7!\`i Q!`is*J`! s#r!X7`i !cͤn*8`"XX*L`!DXz*:`"|X*N`!hXz*<`"X*P`!Xz*X".`undefined COMMON %.8sSTKTOPUndefined symbol: %.8s;R!9N#F! 9~#ʽÝ! ^#VBKxʽ! 9^#V`i##~#fos#rÔ;R!! 9!SES*`9!9*`!!!`8!9!DW  *`=! ^#V!9~#fo5W$! 9s#rz! 9^#V^!5Wj! 9^#V^!5W! 9^#V##~#! ^#V!9s#r!9! 9^#V,V SGT3S!!9!SES*`9!9*`!!!`8!9*`DW*`DW!!9!SES͖ !9~#Žlibrary format is invalid!;R!9^#V"`!}2`!! 9^#VW7"`|W!*l`5Wg!*`!!!`8!9!DW­*`DWʵ*`DWʵ*`DWʵ!!9^#V!!rNot an object file!;R!9^#V!5W!̓0DMW !Xͤ!4`*N`*:`*,`͓W,V3S]*N`*:`*L`WC!Xͤ!4`*L`*8`*,`͓W,V3S!4`!4`!S SS SS3S*<`,VES!4`!SSSSES*<`*:`*8`*,`!2!9:\!!r`!\0!!\W7"`|!\!%*`=:\@!!r`!\0!!\W7"`|5!\!&*`=*n`|KK*n`AC Linker Vers. 1.06D No input given!pass2 (%d)-C or -D value less than base addressBase: %04x Code: %04x Data: %04x Udata: %04x Total: %06lx .symwCannot create VDM`i*d`pW `i"d`*`*`͓WWVDM`i*b`pW8 `i"b`͙ *`5Wd *`"X`*`"Z`*`"\`! " XÓ !9!*`*8`"8`*`*:`":`*`*<`"<`.ovr;R!9~#fo+s#r#|*`!!! 98!9!9^! Wʟ !9^! W !!9s! 9a0!9s#r)a^#VBK ! ^#VBKx!`i !9 Q`i^!9^+ ͶV*Y+^! ^#V! 9^#VWʅ!9^#V! s#r ̓@`i ! ! ^#V! 9^#VW!9^#V! s#r ͜Wa!̓0DM|!%!%!(%͜W*`:!9~#fo<!9s#r!9^#V)*D`^#V<!9s#r!9^#V)*F`^#V*`;-!9s#r`i W oWʴ*`;-!9s#r`i Wõ!9^#V!9~#fo!9^#V!9~#fo͓W!9^#V!9~#foͶV!9^#V!9~#foIV!9^#V!9~#fo^V!9^#V!9~#fo W!9^#V!9~#foW!9^#V!9~#fo%W!9^#V!9~#foV!9^#V!9~#foV!9^#VW!9^#V͉W!9^#V!V W!9^#V! W!!^#V /BUh{!!^#Vxt open -f file: %s-S-X-C-D-U-B%s%s.libunknown - option '%c'unknown + option '%c';R!9~#{ ! 9^#V!| Multiple %s options.;R*[|ʱ ! 9~#ʷ !\!9s#r !\!9s#r!9^#VBK*[s:!9s#r! 5W !9^#V! 5W !9^#V! 5W !9^#V!DWj !9^#V! DWj !9^#V! DWj !9^#V! DWj !9^#V`i#DM+s*[s:!9s#r !`i#DM+s!9^#V~ʌ !9^#V*[=!"[! 9~#ʱ *[! *[+"[oW ! 9~# !  !*[##"[^#Vtoo few arguments in -f *`DW!*`DWK!*`,VES!9!SSSSES*`9!9` ͻ#*`DWʂ!! 9!S SSES*`9!9!8`"B`!"j`*8`Z(*8`"\*:`"\*`;DMDW`i WVÿ*@`*B`s#r*\*`"8`*\*`":`*`*<`"<`!PY WDM`i+DM`iTW"*`;(-(<*@`#Z(<DM*@`*B`s#r!>`"B`!"j``i)*F`^#VZ(`i{*@`#*`;-͓WDM`ipW¬`ioWʹ*@`!ͤ(ï*@`##*`;-͓W(ï*`;-(ï-(`i###! 9^#V!S3SB! 9^#VQ̓0DM! 9^#V`i###:Q*`|W`i*`s#r\`i"``i"`!`is#r!9^#V! s;R:V`ʣ! 9! 9^#V!4<͐2! 4<;R.! 9! 9^#V!4<͐2! 4<*n`#"n`;R.! 9! 9^#V!4<͐2! 4<;R.! 9! 9^#V!4<͐2! 4w#66!Yr*`!͑^)|7g,7s+=7Z!G7~*Y+"Yw!Y6#27*YE7+6-0123456789abcdef;R?DM|k7!! 9^#V! 9^#V̓7;R! 9^#V=!YDMå7`iDMx´7!"d!! 9^#VQ7Ý7! ^#V! 9^#VB"\5W7!*\!9^#V!s!!9^#V!s! 9^#V;R!9N#F!"\58*\#"\*\! 9~#fooWʒ8! 9^#V"\\8*\+"\*\|ʏ8!9^#V;"\5Wʀ8*\*\`i#DM+sU8.8*\;R!9N#F! 9^#V! 9~#foͶV"\!"\8*\#"\*\*\W8!9^#V`i#DM+^͑<5W8!8! 9 `i DM=<;R!9N#F!"\`i~ʂ=! ^! WP=!͏="\! ^CD*\W"\! ^! Wʂ=! ^#Vͪ1!! s*\;R!9N#F!<"[! ^! Wʶ=!! ^! W'>! ^#V`i^#V͓W"\*\! ^#V! ^cI*\DW'>!`in&Ws!`is#r! s#r!! 9^#V!5W`>!`in& Ws!`is#r! s#r!`i~#q>O?! ^#V!5Wʪ>!! 9! ^cIDW=! 9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&Ws! 9^#V`i~#fo#s#r+s!foWG! 9^#VBK! 9^#V*_G.GP!! 9^#V`i͓WV"_|ʂG*_! 9^#V`i*_N"_|ʂGP*_*_͓WVPY*_VPYDM`i! 9~#foWG! 9^#V`i͓W! 9^#V`i*_GGP`iP! 9^#V;R!9N#F6NG!! 9^#V! 9^#V!$ ^!R!$ ^! 9~#fo W!$ s{FH`i!~#fo#s#r!;R:_ºH!}2_!}2_}2_!_! ͗O! !͗O:_o&5WʝH!}2_!:d[o:_o#}2_&_#s!"`:_o&DM! 9~#fopWH! 9^#VBK! 9^#V*`_R`i*`"``i:!9Q!9F+N+V+^+~+ngx4Q4Q4Q# Qog!9V+^+~+ngwRQ#GQ|!9F+N+V+^+~+ngxyQwtQ# hQ|!9ÒQ!9F+N+V+^+~+ng対ʤQ#ÜQxʵQwʵQ# äQw|!9^#V#nQ#QxQ +~Q|!!9~#foQ#Q}!9^#V#N#F#nxRs# R! 9F+N+V+^+~+ngZR>R}ZRnR NR++w xNRɯdR~# xdR!9~aځR{ҁR o&!9~AڗR[җR o&DM!99`i͜R|DM!99!R`i~# xR!9R[~#R!R^#V!YB5WCB!"d!![DM)C`iDM`i~#JC!9^#V`i^#VQJC!C! ^#V"]! 9^#V! W#"]*] WʋC*]^*]s{‹C!"d!*] WʲC*]#^*]#s{²C!"d!! ^#V*]s#r*]##^*]##s*]###^*]###s!iB*]s#r*]!9^#V!9^#V!9^#V*]^#V͜R! 9!oW?D!YB*]s#r!*];R!9^#V!oWiD!9^#V! pWsD!"d!!9^#V)))ZDM! ^#V! ^#V͜R!9s#r!! s! s! s`is!YB! s#r!9^#V;R!]DMD`i'DM`i_WD`i%~ED!"d!# s! 9!S SU9M!!! s#r!$ s!"dS! 9!SEV W!$ s! 9!S SkTEV!! s#r! 9!S;R!9N#F!#͗O`i!~#£M!!$ s!`i!~#fo+s#r6NM!!"&`*&`WM*&`+"&`^!DWM*&`#"&`MM*&`!$ s!5W%N`i!~#fo#s#r!!$ s!;R!"(`;R!9N#F!!͗O*(`PYDWkN!! ^#V**`DWN!!͗O"d5WN*d5WʯN!"d!!!R!"(`!*d|ʻN!`i"(`!! ^#V"*`!;R!9^#V)))Z^R!NR"*[!"|g}oW|g}o|/g}/o|g}o|g}o|NW?W}?W|NW!}NW|?W!}|gW}|?>o&zo&|W}|>o&|o&}/o|/g#}}o|gBK^#VzW#yʶW###äW#x±W#~#fo}|>?o&}|>o&!9f."[![6[o&!9~++f."[![6[Code and data regions overlapInsufficent memory!VX_Corg_DX_Cend_zX_Dorg_hX_Dend_ X_Uorg_ X_Uend_XXXX Y W;R!ZDM`i~5?`i DM~ZW2?!?!`is#r! s#r! s#r`i;R!9N#F! ^Nʅ?!! s#r`i! s#r!ͧ0"\|k?!! s#r!`inWs*\! s#r![s# y?*"d*Z"d?Z?;R!!H]!R!:o& WH]s!A" ]!H]DM!"]*]oWA`i^! 5W\@`i^! 5Wd@`i#DM@@`i~A`i^!>5Wʂ@!"]Ö@`i^!<5WsA!"]`i#DM^! 5Wµ@`i^! 5Wʸ@Ö@`i"]`i#DM~@`i^! 5W@`i^! 5W@!`i#DM+s@ý@*]CD*]_o͓W}2_`i;R! 9N#F!"`*I*`#"`*`! 9~#fooW_I!9^#V͗O`i#DM+s!5W_I#I*`;R!9^#V)))ZDM! 9^#V! 9^#V! ^#V! ^)e[^#V͜R;R!DM!9^#V"`*`&^P*`$~%J*`$^!͓WDM! 9~#foWJ! 9^#VBK! 9^#V*`J%JP!! 9^#V`i͓WV"`|ʆJ*`! 9^#V`i*`N" `|ʆJP*`* `͓WVPYDM|ƒJ!`i*`VPYDM`i! 9~#foWJ! 9^#V`i͓W! 9^#V`i*`JJP`iP! 9^#V;R!9N#F6NoWJ!!  S|!]$S!]~#~#~#~]w#w#w#w!]*]*]"]" ]*]*]"]"]* ]*]" ]"]!]>w#S!]~U#SU=ɯ<]! ]~OS]! ]ڝS¡S+S]!]#S]!]#S]!]#T]!]#T]!]#.T!]~/w#>T:]?*]*]))\T,=TT"]"]oT:]:]?ʌTW!]~w+€TyT!Ny~S]͎T]͎TyT{S]͎Ty]͎TT]!]w#T{STT]!]w#T!]!! 9^#VͫO"_5W(E!"d!*_5W:EP"_*_P! 9^#V! W\E!͗O!͗O5WʢE! 9^#V! WʒE!͗O5WʟE!"dP!E! 9^#V! W5WE!"dP!!!! s#r!# s!$ s*_!& s`i!9^#V!s#r! 9^#V! W#!% s!8F!9^#V!s#r! 9^#V! W1FsMP!;R!9N#F)N!& ^P!͗OP!!% s!;R!9^#V)))ZDM! 9^#V! 9^#V! ^#V`i^)\[^#V͜R;R!DM!9^#V"_*_&^P*_$~.G*_$^!͓WDM! 9~#[*[/O*[!4!O#4*[+"[}N?O?Oo&"d*[;R!9!29^#VͫODMP!9!͗ODMP`i5WʋO!"d!!R͚OR*[DM*[og!9N#F#^#Vkb6#> 6 #=¾O>6#=OyoP O OO ͈PO0_zWO/P P : >4P AoP[%P@1PaoP{oP`w# .OPhP7PvPw#8P{o|g hPvPw#YP&jz!|*P >?a{ 0:ҒP7!9^#V*ZڸP*d}|ڸP*Z"Z|!=!9}_|#W"dR o&R 2m[:[ _R :m[_XDXVXhXzXXXUnknown loader item (%02x).YccccYOut of disk space!X.\...//H//rr+ww+a a+ xx+d???????????iBiBiBYBYBYBYBYBYBYBYB|A!*]ͥB"](A!*]B"]*]5WpA!A!:Q*]!~Q!A!~Q!! ͗O! AÿA`i*]#"]+) ]s#r`i#DM~ʿA`i^! 5W­A`i^! 5WʼA!`i#DM+sÿAÇA3@! ]*]U!ACan't open file for redirection: $;R*[͜R!DM`i oW(B`i#DM+CDB!9~#KB!͗O WKB!OBDO?A:$$$.SUB;R!"d!;R!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:;R! 9^#V!! 9^#VB;R!Z"]!"]B*]"]*]#"]*] oWC*]9^#V!$ ^!!9^#VR!"͗O"d|5K!!$ ^! 9~#fo W!$ s{gK`i!~#fo#s#r!;R! 9N#F! 9^#V""`*"`+""`#|K`i^! 5WʫK! !͗O`i#DM+^!͗OÃK! 9^#V;R! 9N#F! 9^#V"$`*$`+"$`#| L`i#DM+^! 9^#V͗OK! 9^#V;R!9^#V)))Z~:L!"dS!9^#V)))Z^#VBK!9^#VL!& ^P!`inWs!͗O!`in WssMP! 9!! ^#V,V SGTES!$ ^6VSSS^S!SS3SL!"dS͜WLLYLL!w#U> !]~w#UO]!]#$Uy=U!]4=U=nU!]~w#IUO]!]#\Uy=U3U]!]#wU!]]~6#ŠU> !]~w#UҺU]!]#±U=–UͥSU!ͥSU!<ͥSUUͥSUUUͥSUUͥSUUU͹SUU͹SUUU͹SUU͹SUUU"]!"]"]|/V!"]*]zkVW}́V}zkVW||vV/g}/o#zV/W{/_MD!͎V}y/Ox/G>))ҟV, ڰV}o|g=—V=—VDM!>))V =¾V}{_V|W|7g}oV{_V)V}{_V iBiBiBiBDsB[xB[}B[B[B[B[B[B[B[B[[YBFJH I YBIKK 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@ d???????????iBiBiBYBYBYBYBYBYBYBYB^*^^#V*Zs#r*^^#V*Zs#ru!ͷu*`^#V*Z s*`##^#V*Zs#ruP( 3a*hU"hU"`*`*`##s#r!*`s#ra*hU"hU"`*^ ^*`s#r*^^#V*`##s#r*^*`##s#rPa!BbDM`i~"!ͷ!!9s#rp`i#DM+^!`P!9s#r`i~a`i#DM+^!;P!9~#fopPs#r`i~p!ͷ*hU"hU"`!9^#V*`##s#r!*`s#ra!'}2b!Bb"b!"ba!"}2b!Bb"b!"ba*`*b#"b+sa!*bs!"ba!!^#VhUL! 9N#F*`#"`͵ *a!5#!*`#"`+)`s#r!`"hUL!9^#V^#V!͗Pk!ͷ!9^#V##^#VBK`i*`"`͵ `i%Qʭ!!!PYPDMÇ`i%Q`i+!Invalid expression for block allocationL*a! 9^#V!`P! 9~#fopP5*a! 9^#V!!P`P5L!`"hU!"b!"X"X!"c*a^!`Pr!sU}*b͈P*VU*qU!*ak+!9!`DMæ*`+"`*`|`i`$Q`i^#V!͈P!*ak+`i##DM`i##DM++^#V!`P!*ak+ß8L!2Q'(!!!!!e!Bbs0!9s#rz^!Bb!gͷ!Bb!{M+ê*aͧPʊ!ͷ!M+!9^#VI6ê*a*a#"a+)as#r!9^#V"aa!"ba*b"ba*`*b;P*bpP"ba*b*bpP"ba*be a*`Ha!`!!a!`!!a!*^ n&pPs*^ ^!͗Pv*^ ^!͗Pv*^ !ͷÞ!*^ s*^!!!"`"VUa͵ *a!5*`#a!BbDM`i~`i#DM+^e a*`a*`pa*`P *!1;:b! !nU!b!bd)! !bs0"a|K !b! M+!1;*bPʚ !/ !b! 9d)!4 !9s0"a|— !9!6 M+!1;ð !9~#ʰ !"b!X"a*a!!!`41!9*jU^#V*VU$Q *VU*jUs#r͵ *a!5*a^!`P !sU}͋%*a^!`P2 *aI6: !sU}*aI6*c|R !bxH*b|t *b!b!U M+!1;!1;8080 Assembler Vers. 1.06D .ZAPUnknown option '%c' ignored. More than one input, %s used. No input file given! .asmrCannot pushralrarrcretrimrlcrmrncrnzrprperporrcrstrzsbbsbiscallshldsimsphlstastaxstcsubsuixchgxraxrixtextxthlABCDEHLMPSWSPIXIYabcdehlmpswspixiymodandorxorshlshrnotMODANDORXORSHLSHRNOTL!"cL*c|!"c*^*b|ʵ:bo&ͩ!9s#r͈P[:bo& ͈Pc!9^#V! ͈Pc!'DMò!9^#V! ͈Pƒ!9^#V!͈Pʢu!DM!9^#V"`!"X"Xò!9^#V"`!&DMQ̈́!9s#r!`PU^BK6*@ba͗PDM!9^#Vͫxv*X|v-!9s@#'&<RcitlxrCannot open file %scannot open file %s Too many nested file includesToo many nested file includes %s: multiply defined.Operand out of range.Operand must be even register.Global size must be absolute.Bss size must be absolute.Location counter must always increaseCannot change type of location counterCannot equ a common block nameNull string not allowed hereToo many characters in CHAR constantC!a`i`PKP P!*ak+!9*`|*a!04!!9s#r[*`+"`*`|!9~#fo+s#r#|`i^#V!͈Pʝ!A*ak+`i##DMý`i##DM++^#V!`P!E*ak+T*a! /51*a^!`P!sU}!"`*`"VU*qU#"qU%5d %04x xx %02x %s %s xx %02x L!9N#F! ^!͈Pʞ*VU`is#r:`Uo! s!`i n&pPs*^U! s#rî`i !ͷMultilply defined symbol %sL!9N#F! ^!`P`i !ͷ!!`*bP!ͷa*``P+!ͷ!*`!P"`a*bPO!"ba*b|`!"ba6a*^Ka!*^ n&pPsa*^"Za*Z!*Z n&pPs*`^#V!͗P!ͷ!*Z s*`##^#V*Z^#VP*`##^#V*Zs#ra*Zi!*Z n&pPs*`^#V!͗PB!6ͷi! *Z s*`*Zs#r*`##^#V*`"`a*Zzu*ZVU͈P:`Uo&*`^#V͈P©*`^#V!͈P*`##^#V*VUP!Qͷ*`##^#V"`!wͷu*`^#V*Z sV*`##^#V"open input %s wCannot create output file %s .lstwCannot create listing file %s %s: %d errors. L!9N#F`i*U#"U+Zs*UͧPʓ ͵ `i`P*`#"`+)`s#r*`#"`L*U| *a*U+pP5!DM `i#DM`i*UP*a`iZ^5 !"UL!9N#F`i^#V!͈P8! ^#Ve i͵ *a!5#!*`#"`+)`s#r*`#"`!`"hUL!9N#F`i^#V!͈Pʿ! ^#V! ^#V!`Pe ! ^#V!!P`Pe ͵ #!*`#"`+)`s#r!*`#"`+)`s#r!*`"`!`"#rzc!9^#V##^BK!͈P8!"b!Bb"b! }2b̈́u!9^#V"^!9^#V###^!`P"b!"Xs!(DM!cͱ"^ðDM͈Pʗ!(DM!cͱ"^ð`iBX^"``i)W^#VBKQ!9^#VW"`!*DMQͩ!9~#fo͈P!9^#V!<͈P!.!-"`DM !9^#V"`uQ!9^#V"`Qu! "`Q!9^#V"`QP(`i"^L! 9N#F!9!9s#r`i!9sͩDM`PU^!9s#r!͈Pª!9^#V!͈P`i!9~#fo#s#r+sx!!9~#fo+s#r#s!9^#V^!`PU^!͈P !D!@opyright (C) 1981,1982,1983,1984 by Manx Software SystemsL!!9s#r!} M+! !bUnJ!VU!bUB))^s#r!"a!"b!(9~#fo+s#r!Pʪ !*9~#fo##s#r^#VBK^!-͈P{ `i#DM~x `i^J !!9s#rü !"bü !"bü !*9~#fo##s#r^#V!bnJ!(9~#fo+s#rü ! 6J5 !"cu u `i^! M+ü P C G L O Z c g l o 8 x ç :bš !*9^#V^#V!bnJç !b! M+Á :b ! M+!1;!.!bJ ! !bͲJ! !bs0"a| !b! M+Cannot redefine symbol %sL! 9N#F*jU^#V*VU$QA*VU*jUs#r! 9^#V!͈Pʇ*^UPY͗Pt͵ ! ^#V! 9^#V`i"^U!"``i"jU:`Uo&! 9~#fo͗Pʰ͵ *a! 9^#V5!"^U`i^#V"``i"jU! 9^#V}2`Uaciadcaddadianaanibsscallcccmcmacmccmpcnccnzcommoncpcpecpicpocsegczdaadaddbdcrdcxdidsdsegdweiendentryequextextrnglobalhltinincludeinrinxjcjejmjmpjncjnejnzjpjpejpojzldaldaxlhldlistlximaclibmovmvinamenlistnoporaorgorioutpchlpoppublic 9~#fo#s#rs!!9^#V#su!9^#V^0!9!9s#r!!9s#r!!9s#rp!9^#V))))PYpP!9s#r!9~#fo#s#r+^BK!`PU^!͈Pʩ!0PYPDM`iaͧP`ifͨP`iDM`iAͧP`iFͨP`iDMW_!9!9s#r!!9s#r0`i!9^#V)))pP!9s#r!9~#fo#s#r+^BK!0ͧP^`i7ͨP^_!9!9s#r!!9s#r×`i!9^#V)pP!9s#r!9~#fo#s#r+^BK!0ͧP`i1ͨP{_!9!9s#r!!9s#r!9^#V! PPY!9s#r!9~#fo`P! 9^#V! 9~#fopP! 9^#V! 9~#foxP! 9^#V! 9~#fo!P! 9^#V! 9~#fo;P! 9^#VhP! 9^#VP!9^#V!#ͷ!!n#!#^#Vn#"""""" ##0#C#V#b#invalid operator in evaluate %dL!9N#F`i^#V{%! ^#V!9s#r!9^#V!ͧPU$!9^#V!P,$*a!9^#V!0pP5!9^#V!PR$!9^#V!!Pè$!9^#V!ͧPʂ$*a!9^#VP+@pP5!9^#V!ͧPʨ$!9^#V!!P*a!5*a!9^#Vt5! ^#V!9s#r*a!9^#V^#V! pP5!9^#V###!.͈Pʢ-!9~#fo#s#r+^",[*͈PU-*.[##".[++^#V"6[!9~#fo#s#r+^",[â-!"6[v-!9~#fo#s#r+^",[*,[$Z#^!`Pʢ-*6[ P*,["6[^-!":[*,[l͈P-!9~#fo#s#r+^",[!":[-*,[h͈P-!9~#fo#s#r+^",[*,[É.!"<[ .! "<[ .!"<[ .!"<[*:[!9*<[*.[Ϳ/!9">[*:[*.[".[è.*.[##".[++^#V">[[sè.Pch.d.o-sL.u.x.y.!9*>[P":[*:[*6[P.*6[":[*2[|/.*0[#"0[*8[+"8[#*:[P/*4[`iK͈P/qU!_*ak+!jM+!9^#V!9^#V!9^#V!9^#VM+!9*qU!rM+*b#"bERROR: , line %d ERROR: , line %d L!9^#V!M+*aI6*bxH!1;%s L! 9^#VB)!9s#r!9^#V)^^#VBK! ^#VBKx `i ! 9^#V6J `i! 9^#V[~N/*<[*6[PN/*>[#">[+^`iK͈PK/!/*<[*0["0[*2[|—/k/*0[#"0[*8[+"8[#*:[Pʗ/! `iK͈Pʔ/!d/ø/*,[`iK͈Pʱ/!*0[#"0[+*0[!"X"X! 9~2XG+V+^+6"X+N+V+^!Xw#/y0/w# 00!X>^)|,0g,$0s+=0Z!c0~*X+"Xw!X0#N0*Xa0+6-0123456789abcdefL:8DM|‡0!! 9^#V! 9^#V͟0L! 9^#VI6!XDM0`iDMx0!" c!! 9^#V6J0ù0! ^#V! 9^#V;"@[ s6!*^#"^+! s#rz#!`i"^1!`i*^s#r`i"^!! s#r`iNo symbol table space left!!!L! 9^#V! Pʛ!*`"`!9s#r*hU"hUæ!*`!9s#r*`^#V!͗P!!9^#V^#V!͗P2"! ;)DM|'"! 9^#V`is#r`i##*`$L`i!9^#V$L!*`s#r`i*`##s#r/"!e"}a"!9^#V##^#V*`##^#V!9^#V͉"*`##s#r!No space for expression work area!!L!9^#VÃ#! 9^#V! 9~#fo! 9^#V! 9~#foP! 9^#V! 9~#fo P! 9^#V! 9~#fo͜O! 9^#V! 9~#foͱO! 9^#V! #r`i"([L! H*+!H͗P++!<+M+!1;Aborted by user!L! 9! 9^#V!5ͬ+L!9^#V"*[! 9! 9^#V!+ͬ+L**[! 9^#V/58L!9N#F!"0[!9^#V".[!9~#fo#s#r+^",[|ʻ/*,[%͈Pʚ/!!9s!"2[! "4[!'"6[!9~#fo#s#r+^",[-͈PM,!"2[!9~#fo#s#r+^",[*,[0͈Pw,!0"4[!9~#fo#s#r+^",[*,[*͈Pʯ,*.[##".[++^#V"8[!9~#fo#s#r+^",[,!"8[,!9~#fo#s#r+^",[*,[$Z#^!`P,*8[ P*,["8[ø,*,[5͈P5!4!L!X! 9^#V/5L!9N#F`i ͈Pe5! 9^#V! 5͈Pe5!! 9^#V5L!9N#F! 9^#V5Pʝ5!! 9^#V`iKP5P5!`iL! 9N#F! ^#V`i^#VQ5!9^#V!`P6!9^#V`i~#fo#s#r+s!`PL!XDM`i4Y$QH6`i DMI6(6L!9N#F!"V[`i~ʶ6! ^!`Pʄ6!6"V[! ^w=*V[pP"V[! ^!`Pʶ6! ^#V*!! s*V[L!9N#F!6"Y! ^!`P6!! ^!`P[7! ^#s#r!9^#V`iͧP~!L:co&L͗P2:c€!cLZ~#EL!RL]L|!d[wL!\[~#~#~#~\[w#w#w#w!_[*^[*\["d["f[*d[*\["d["\[*f[*^["f["^[!\[>w#L!\[~%O#LO=ɯ<_[!g[~**\##s*,\###^**\###s!;**\s#r**\!9^#V!9^#V!9^#V*,\^#VK! 9!Ps=!;**\s#r!*.\L!9^#V!P=!9^#V! Pʧ=!" c!!9^#V)))^YDM! ^#V! ^#VK!9s#r!! s! s! s`is!;! s#r!9^#VL!2\DM>`i'DM`ij]$Q.>`i%~8> >!" c!! 9^#VH"j]͈P\>!" c!*j]͈Pn>J"j]*j]J! 9^#V!`Pʐ>!H!H͈P>! 9^#V!`P>!H͈P>!" c*J!>! 9^#V!`P͈P>!" c*J!!!!%Q'G*^+"^^!͗P$G*^#"^'GF*^!$ s!͈PYG`i!~#fo#s#r!!$ s!L!"^L!9N#F!!H*^PY͗PŸG!! ^#V*^͗PG!!H" c͈PG* c͈PG!" c!!!UK!"^!* c|G!`i"^!! ^#V"^!L!9^#V)))`Y^/L!*H/L"*Z!"Z*ZcH*Z!4UH#4*Z+"Z}+HsHsHo&" c*ZL!9!29^#VHDMJ!9!HDM*J`i͈PʿH!" c!!/LH/L*ZDM*Zog!9N#F#^#Vkb6#> 6 #=H>6#= Q###P#xQ#~#fo}|>?o&}|>o& "                 } ax rol(%: 'a(%: |&V KQ NL YG!D A ; } zwtqnk jgda]\![ RIFC@?>9 # :#  # :    0 ##$ :    0 ##$    #  #  #    0 ##%    *   7- @    %, (     T+8," :I ;8*""c*Y9L!![!qK!:o&`P[s! ;"h[![DM!"$\*$\P:`i^! ͈P9`i^! ͈Pʘ9`i#DMt9`i~:`i^!>͈Pʶ9!"(\9`i^!<͈Pʧ:!"(\`i#DM^! ͈P9`i^! ͈P99`i"&\`i#DM~):`i^! ͈P:`i^! ͈P&:!`i#DM+s):9*(\w=*(\|L:!*&\;"(\\:!*&\;"(\*(\͈Pʤ:! ;!nJ*&\!ͲJ!/;!ͲJ!! H! 1;:`i*$\#"$\+)h[s#r`i#DM~:`i^! ͈P:`i^! ͈P:!`i#DM+s:û:g9!h[*$\:J*x^$~YC*x^$^!PDM! 9~#fo%Q !\[~w#bNO`[!d[#wNyN!\[4=[N=N!\[~w#œNO`[!d[#¯NyNÆN`[!d[#N!\[`[~6#N> !\[~w#N O\[ s#r!# s!$ s*j]!& s`i!9^#V!s#r! 9^#V!`P#!% s!l?!9^#V!s#r! 9^#V!`Pe?ͧF*J!L!9N#F]G!& ^J!H*J!!% s!L!9^#V)))^YDM! 9^#V! 9^#V! ^#V`i^)Z^#VKL!DM!9^#V"l]*l]&^J*l]$~b@*l]$^!PDM! 9~#fo%QE@! 9^#VBK! 9^#V*l] Ab@*J!! 9^#V`iPKP"n]|ʶ@*n]! 9^#V`i*l]H"p]|ʶ@*J*n]*p]P;PPY*n];PPYDM`i! 9~#fo$QA! 9^#V`iP! 9^#V`i*l] AA*J`iHyʣI I II ͼI0I0_zWI/:I=I : >hI AڣI[YI@eIaڣI{ңI`w# .ʃIʜIkIͪIw#lI{o|g ʜIͪIw#I&jz!|*³I >?a{ 0:I7!9^#V*5306+5&-!.`J dY ]R VK OD H= A6 :/ 3( , ! %  /K0F1A2<>7326-5(-#. =         /07 0 <7)4?$? *$*!- +, +;.;1*,(+)+,     ' *  #      /(0%7   / <6)3?$? *#* - +, + ;0*+(*)+,  .&  !1;Can't open file for redirection: $L*YK!DM`i P\;`i#DM+w=B;!9~#;!H`P;!;xH9A:$$$.SUBL!" c!L!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:L! 9^#V!! 9^#V;L!^Y"*\!".\ <**\"*\*.\#".\*.\ PC<**\^#V!;͈PM<))O, P}o|g=O=ODM!>))P =P}{_HP|SP|7g}o.P{_HP)CP}{_HP|g}oSP|g}o|/g}/o|g}o|g}o|ʡPÒP}’P|ʡP!}¡P|ʒP!}|P}|?>o&zo&|P}|>o&|o&}/o|/g#}}o|gBK^#VzQ#y '/ :#$9 1  #98  #   #98  (;) % ( ``.oOut of disk space!6+?>,;<1/:0298547!/? "'*'. 259 =@CHKNRX8\`f mvqt| ڇʊÑҕ™ʫ: * @ @s!}p!!sv:Lv}v!BLw!}v.;JIw!}v w!}v@"""""w!}v*w!}p!!s!}tswp!9~#ʪ3!!syp!stanj0 cotan_ tan_ csave .dldp .dpsh fabs_ .dst @sinA hh cos_ @sin_ csave .dldp .dpsh fabs_ .dlis .dad .dlt .dng .dge errno_ .dlip .dml modf_ .dlds .dst .dtoi .an .dne .dswap .dsb .dpop .dgtr!! 9stu!9vADBwt!9stͣ !9r!9svxʢ!! 9syt!9stͣ !9p!s|w@_Up!s|wwzgEp!s|wApv!stu!9~#fovs#r!9^#Vç4!!swv!s!sx!!swv!s!sxy30125zasin[ ZZ asin_ :arcsine_ acos_ csave .dldp .dpsh fabs_ "   #'*.26 :=AEK"P0TY2] b7fjnsw{########%$########%$>365.-7>365.-7rr+ww+a a+ xx+cos_sin_cotan_tan_asin_arcsine_acos_atan2_+atan_+sinh_8cosh_8tanh_Dpow_Lsqrt_Qlog10_Xlog_Xran_`randl_`exp_dfloor_lceil_lfscanf_pscanf_ssscanf_vscanfmt_xskipblanxgetnum_xgetflt_xfprintf_printf_sprintf_format_atof_ftoa_frexp_ldexp_modf_flprmflsecflterr_.flds.fldp.fst.dlis.dlds.dlip.dldp.dst.dpsh.dpop.dswap.dlis .dlt errno_ .dlip .dgt .dml modf_ .dge .dswap .dad .dpop .dsb .dlds .dtoi .an .or .dng .ddv .swtr!! 9stu!9v!swQxʭ!"y!9swxʡz+Zz+Z!!st!9stͯ !9r!! 9stu!9t!9stͯ !9r!9swE@!! 9st!9stͣ !9r!9svEkzʣ !"{|!!9sv@Q|'!}t~! 9v@zʡ!|Awp!sqrʮ!9~#ʣ!æ!!9s#r!9stu!9!9sʫ!|@tsup!! 9! 9stu!9t~! 9p!!sv>wz\,}t!svA$@}t!9svuvw!wp!stu!9v<ўwʯ1!!.dst .dlis .dlt .dgt .sb errno_ .dlip .dlds .dsb .dad ldexp_ sqrt_ .dng .dml .dpop .ddvs!! 9tuͪ! 9s!! 9tuͪ! 9s@ڢ!hADB@ڢ!h!! 9tuv!9w!9^#VBK!tx<>yʫ!!twí&!tx@zʣ!PY{DM!txAzʦ !"|}!&c???????????;;;;;;;;;;;;;;;=;Y;Y;Y;Y;Y;Y;Y;Y;Y;YY;?~AAB ;BDD 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@ .dng.dtst.dcmp.dsb.dad.ddv.dml.deq.dne.dlt.dle.dge.dgt.utod.itod.xtod.dtox.dtou.dtoifabs_.dml10{ʯ!"yz!! 9sw@nND|t}! 9w@~ʨ!! 9swxʮzézAspv!!sw>J.{l|t!swA |t!9sqrqpv!stu!9w=/i,xʧ!!sv!zAvé-!!s!s|v!!sw+r,r|w?t1Vp!s|w"%kʚp!s|!s|!spv!!sw>[x; }@!~x@pw!!!tuq! 9w!!tur!9w!!t!~pswê!!t!~tw!!txnp!~txAnp!~tx}jp!~txB$p!~tx6\>Tpu!tx]0txA ' vp!~tx'YSM8p!~txA95Nl p!~tx^U: _p!~tuv!~t!~pw!9~#ʩ/!9sinh2>> sinh_ Tcosh_ csave .dldp .dst .dlis .dlt .dng .dgt .dad errno_ .dlip .dpsh exp_ .dlds .ddv .dswap .dsb .dml .dpop fabs_r!! 9st!"!9suvʫ!! 9swt!"!suAxʫ!!suryt!suB]Lxʡ !"z!pow pow_ csave .dldp .dlis .dle .dlt .dtst errno_ .dlip .dpsh log_ .dst .dswap .dml .dgt exp_q!9rstʩ!9rsu«!9rv­!9rstʭ!"wx+Zx!! 9ryz!9{!!9r|r}{!rsB]L~ʦ !"wx+Z!rs{!9spʢ!vA$?j!yq{!9spʫ!!sr{!sr@ kADBA #6!"!! 9s}~!9{!sAsʡ!vA!yz{!"!s@DQz{5Jsʯ !!sAgt}!s@g}u!yttvz{*#"!s}~!9<>pʢ$!!s{î2!!s!yu{!!tanh"" tanh_ csave .dldp .dpsh fabs_ .dst .dlis .dgt .dlip .dlds .dad exp_ .dpop .ddv .dsb .dswap .dlt .dml .dngq!! 9rst!9u!rvALwʭ!xAuî!rv@ShCwʨ !!r!yzs{!9vAzsxA|}sx@|~log@: log10_ 'log_ csave .dldp .dpsh .dlis .dml .dle errno_ .dlip frexp_ .dst .dgt .dad .dlds .ddv .dpop .itodr!9stͧ!9u@o-T$vr!9suwʧ!"xy+Z!!! 9stz! 9{!su@3@|ʥ !!su}{!!su@vu@txyʤ,!`i)))tu`i)))tup!~pwæ/!`i)))tu`i)))t!~upwä5!`i)))tu`i)))tup!~pw!9txyʤ5!!tsw!tatan $vv atan2_ Batan_ csave .dldp .dtst errno_ .dlip {+Ztï!!s|}!9t!suA33333vʨ!{@?R!~psqt!!su>Xrpsyt*|ʨ!!swtí$!su<>vʤ!! 9stí$!! 9s! 9~rt!!su8y!~ruBB)y!~ru 5|$y|!su'=~@ru -Ey!~ru-+m()y!~ru^DՔys! 9~r!~r! 9buʯ!"wx!ry!9sqrt>> sqrt_ csave .dldp .dtst .dlis .dlt errno_ .dlip .dpsh frexp_ .dst .dml .dad .dlds .ddv .dpop .dsb .an .dswap .dv ldexp_q!9rs«!9r!9rtuʥ!"sA$ct!yuA;dGt!yuAV(H-t!yuA)y+Mt}!sk͌=u~F0t!yut!yu S(ot!yuvz!yu!yt{*wʬ4!!sr{!*)))sxst{!9spʥ9!!sr{!su!!rrzuî!rv<>pʠ!!ruî!!r!yqu!!rvApz!yqvBŦyz!yqvBXrpsytã:!!s|}!9t!{@!~|!su@rsyt!svw!!! 9rxy! 9z!!rt@hH{t@jK3|z!!r!}~!}|z!!r!}~x!rt@@{|z!!r!}~!}|t@{z!!r!}~!}pt@{!}|z*qʧ!w@3@rr{z*#"*s!rxt! 9 random ran_ erandl_ csave .llip .lswap .lldp .lml .lst .llis .ldv .lsb .xtod .dlis .ddv .dlds .dml .dpsh exp_r!s}tuvw!!ux*yx*vtuzw!u{|C*}r͠!9~pq!9q!"! 9! 9^#V!rq!9~#ª:!s6o&tʬ!"ç!su"ê!s*v"*sscanfPP sscanf_ csave scanfmt_ .anq!9^#V"!}2! 9! 9^#V!rq!9~#¤*~ʪ*#"+^!s!}2ì:¬*+"^!s!¯V*euªU*EuʯV!}2!}2}2áY*v#^!w¡Y!*pàZ*`i#DM+sêM!`is`i!9~#fout*sʭ\!!!""tz!*p"-uʨ`!"*#"éb*+uʮa*#"éb!*pãc*#"**uʨo!*p"! 9^#VqDM|¥j! 9^#V!uʧi!yv§i*xu¬b*Xu¬b!*pèo!!9^#Vtwyxz!`i! 9~#foy! 9~#fo^twfloor floor_ Vceil_ csave .dldp .dlis .dlt .dng .dpsh modf_ .dgt .dlds .dlip .dad .dstr!9stuʧ!9svwͦ!9v!9! 9swx! 9!9sr!9stuʭ!9svw͠!9v!9! 9swx! 9tyʯ !9z{A|}!9sʪ !9~#fo##s#r++^#V!9|}î"!9~#fo##s#r++^#V!9|~*#"æ@!}2`i^!^u«%`i^!~uʧ&`i#DM!}2!9"`i#DM+^"]ʥ)**#"+sî&!*sì,!}2! !9s! !9s! !9s!!79sͫG¬D:£/!9~#fo##s#r++^#V"!}2*+"#|ʢ8!*p"u¢8:ʬ3*!9qà5*!9qu|ʣ6!*pâ8:¨7**#"+s!}2ê/:ʬD: :!*!9N#F!"!9^#V"!9~#fo#s#r+^"|ʣG*%rʢE!!9s!"! "!'"!9~#fo#s#r+^"-rʡ !"!9~#fo#s#r+^"*0rʫ !0"!9~#fo#s#r+^"**rʣ*##"++^#V"!9~#fo#s#r+^"à!"ä!9~#fo#s#r+^"*s#^!tʠ* u*"ì*.rʦ!9~#fo#s#r+^"*rʩ*##"++^#V"!9~#fo#s#r+^"æ!"ê!9~#fo#s#r+^expA">> exp_ csave .dldp .dlis .dgt errno_ .dlip .dlt .dpsh fabs_ .dml modf_ .dst .dge .dlds .dad .dtoi .dpop .dsb .ddv ldexp_q!9rsB]Ltʠ!"uv+Z!9rsbwʪ!"uv!9rxy!9s8[uZwʩvA!!! 9rsAqTvR0zfscan.-"  scanfmt_ {skipblan getnum_ getflt_ csave .eq ctp__ .an .ml .lldp .lst .xtoi atof_ .dst .fst .ne .chl index_ .swt .le .itox .lt .ltst .lswap .lml .sb .lad .lng~t!9N#FABCDEFabcdef9876543210    !"!9^#V"`i#DM+^yzzìb*|ʨq!9^#V!y{zêr!9^#V!yz*fprintfAPP fprintf_ csave format_ aputc_q!9^#V"! 9! 9^#V!rq*! 9^#VsprintfPP printf_ csave putchar_ format_q! 9! 9^#V!rsfscanf}ll fscanf_ csave scanfmt_ .an agetc_ ungetc_q!9^#V"!"! 9! 9^#V!rq!9~#©*^!sʫ!"æ*t"é**u"*scanfnzz scanf_ csave scanfmt_ Cbuffs_ .an agetc_ ungetc_s*#"æ@: ;!"!!9s!}2â-r% DEFOX[#c:defhos*x@éD*v#^!wʦBͫG¬DéD!*p*ʩD!*pìDî*|§G!*puʬF!!*p*t!*pv#^!wʠJáH!*puʨK!!t!9^#VBK!}2}2}2*+"#|ʠZ!*p":®Q*-u¤Q*+uʮQ!}2áY:«S*.uʫS!}2áY:"*s#^!tʦ* u*"â!"*lrʩ"!9~#fo#s#r+^"!"í$*hrʭ$!9~#fo#s#r+^"*å3!"ä'! "ä'!"ä'!"*!9**v!9"**"à6*##"++^#V"w"î6**'rʦ-!é-*!9*"xyz!9!9"w"!"î6*##"++^#V"*!9"sà6{ c1d&e+f+g+o%s*u%x&2!9*|"**x{! 9|!rs@}ʥ!~vA|!rp"!! 9! 9rx{! 9|!!rs? .0Qzx!rs@zx!9rqrq!~|!!r!~z|!!rs?*Fzs@F?n!~zs@?!~z|!!rs? 2߼p zs@88(!~zs@!~rx!rqss@|*#!rxt! 9"|ʬD*%uʩ@!}2}2}2!"`i^!*uʫ`i#DM!}2`i^!v#^!wʨ !"* x`i^"`i#DM^!v#^!w§`i^!luʢ !}2`i#DM`i#DM+^ã<!%"æB!}2é!}2! "! "á!}2!"!"á!}2!"!"ͫG¬D!***ͦ[!9ʬD:©:ʭ!9~#fo##s#r++^#V!yzâ!y{!9~#fo##s#r++^#Vs#r*#"æ@!}2ͫG¬D!9ͬK¬D:¥#:sprintfWPP sprintf_ csave format_ .anq!9^#V"! 9! 9^#V!rDM!*s`iq!9^#V*#"+s!sfformatw format_ csave .eq ctp__ .an .ml fmtcvt_ strlen_ .dldp .dpsh ftoa_ .swt .sb .gt .chl .lt8q }ʡ8*"*|ʯ;ã9*#"*+"#*}ʯ;*`i~rʬ;!ì8!"ï<*#"*~ʦ@**ʦ@*#"+^`i~rʣ@!è<**"*|¯DãB*#"*+"#*}ʯD! `i~rʬD!ìAàG*`i~rʩF!*#"î*atof( atof_ .utod .dml10 .dswap .dad .dlis .ddv fsubshJ,,  flprm flsec flterr_ .flds .fldp ,.fst J.dlis Q.dlds X.dlip _.dldp ~.dst .dpsh .dpop .dswap .dng .dtst (.dcmp ^.dsb e.dad :.ddv B.dml .deq .dne .dlt .dle .dge .dgt ".utod ..itod !.xtod a.dtox .dtou .dtoi (fabs_ ..dml10árám*F#~ʮmn!èOҨp#oҠo$^+VyʨOxO|/g}/o#èOy£q!árxq!ár!>2*6*#4 ^&)DM)) #wz++«s#wʧI++~v@ҢSͩ_! t0:ڤ`o&t ʯao&tî`*6#6]T#w£c!u:!u3e>#¥d>çI~#¦eçI!"u"!u2u*N#~ʨOOҦjG#oҨh$~+¨hyO!u>w#ªièOyk6#6#6#6ár6#6#6#6 ">ã2*+|!á®}ڡ!)))yzuA {ʤ!|:ʤ*#"`i":ʮxy*60#6.#:y/î:ʩ60#=¢">O!~%+ʧ%*r 6#6x>0ң#*r#~>0£###6*w#"!5ʧ%x %*6.#"vê!:©)*6e#6+::'6-/<#dگ'61#d ڬ( á(0_>0w#s#"*6}!|x#ʡK~ʡK ~+§6 ~+©7!w#§8>@2!~w#¨9ң<!#¬:ң<§;!5¢9*  w+¦=çIͨʢ?!ͨʧ>!<ͨ?ç>ͨ?ʢ?ç>ͨ>â?ͨ>ʧ>â?|ʡKäD|ʡKzD/W{/_*p#z«E6#6#sçF6#6#r#s#w§FèO* ~¤H+~w7+~w©H§I*#~T]#O¯O#¦L §J2* w#6#w®K>GʦN+y>O~# ¦M¯MO@ڨOâSکQ>2 y!@.dngů222!"q!9N#F ʦ ªë-¥2ê+« 0ڪ:Ҫrs0o&qt:ʪ*+"ê.§!6ê! e¤  -®2ã +¤  0ڮ :Ү 0)T]))_ã :ʬ |/g}/o#*"*|¦}/=ɯ<**á#¤ #ڠ¤­*~w* w# * w#¯**#@frexp4ll frexp_ ldexp_ modf_ flprm .dldp .utod!9ͦ®! 9^#Vq#p!9ͦʩ! 9^#V |/g}/o#}Oͨ}/_/W~#«~#ʣ+DM*s#s## w#w¤!uT]w+«P6æN>2͢U*#6#w#6îK>2͢U*#6?#6>#w§T#6*s|ʯV!9N#F*ͮVͭ`Floating point :ªYͭ`underflowà\®Zͭ`overflowà\ͭ`divide by zeroͭ` at location 0x!9~ͥ_ͩ_+~ͥ_ͩ_! t0:ڤ`o&t ʯao&tî`*6#6]T#w£c!u:!u3e>#¥d>çI~#¦eçI!"u"!u2u*N#~ʨOOҦjG#oҨh$~+¨hyO!u>w#ªièOyk6#6#6#6ár6#6#6#6@.dlt .ddv .dlds .dad .dge .utod .dswap@@ @GzH? ěT?F]cf>S#>c{Z=ֿzf=y0==%}<6{<_^Y&; oP;4$C;hIj! 9^#V"!9~2!9q!9~2ãyڢ*/<+"" ҧIO _"! "!**+­ î**w+¬>w+ #~>!>w+ >*wçI**+¥" "çI**#O~¬%>2çS##®' & q#6#62îKqڧ( q+ ~+¡) ~+£*!w#¡+>@2!~w#¢,O!#§-y¤/!4!5¬+æ2!5ʦ2!~w#¡0O!#¤1y¤/æ.* 6+6+w§3çI**@ @@&q!9^#V!rʫ!!!sVt!u! 9~#fo##s#r! 9^#V^#V͢ DM|§! !!sVt!u! 9^#V! 9^#V+`ivusage: r progname args ... Cannot load program q!9^#V!w!!x!!y"rʤ!! !*zrʤ!*{¨*|¬!!|"***"**}ʠ**~|ʠ!***z*}ʠ!*p*.o@@@@@vr main_ csave .lt Cbuffs_ fprintf_ exit_ .chl strcpy_ strcat_ open_ read_ .ne sbrk_ .ul .sb .eq close_!x!!y"rʤ!! !*zrʤ!*{¨*|¬!!|"***"**}ʠ**~|ʠ!***z*}ʠ!*p*.o@@@zBzz!q"rqs# y¨"s* .ovbgn _Uorg_ _Uend_ main_CZ COM1T LIB%LN COM6 !"#AS COM4$%&'()C LIB*+,-./012M LIBF3456789RBEGIN $$$@@ @&= ~(_IOERR|_EOF)) #define fileno(fp) ((fp)->_unit) errno.h extern int errno; #define ENOENT -1 #define E2BIG -2 #define EBADF -3 #define ENOMEM -4 #define EEXIST -5 #define EINVAL -6 #define ENFILE -7 #define EMFILE -8 #define ENOTTY -9 #define EACCES -10 #define ERANGE -20 #define EDOM -21 fcntl.h #define O_RDONLY 0 #define O_WRONLY 1 #define O_RDWR 2 #define O_CREAT 0x0100 #define O_TRUNC 0x0200 #define O_EXCL 0x0400 #define O_APPEND 0x0800 io.h /* Copyright (C) 1982 by Manx Software Systems */ /y Manx Software Systems */ #define TIOCGETP 0 /* read contents of tty control structure */ #define TIOCSETP 1 /* set contents of tty control structure */ #define TIOCSETN 1 /* ditto only don't wait for output to flush */ struct sgttyb { char sg_erase; /* ignored */ char sg_kill; /* ignored */ short sg_flags; /* control flags */ }; /* settings for flags */ #define _VALID 0x3a #define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */ #define CRMOD 0x10 /* map input CR to NL, output NL to  libc.h /* Copyright (C) 1981, 1982 by Manx Software Systems */ extern int errno; #define FLT_FAULT 0 /* vector for floating-point faults */ extern int (*Sysvec[])(); #define NULL 0 #define EOF -1 #define BUFSIZ 1024 #define _BUSY 0x01 #define _ALLBUF 0x02 #define _DIRTY 0x04 #define _EOF 0x08 #define _IOERR 0x10 typedef struct { char *_bp; /* current position in buffer */ char *_bend; /* last character in buffer + 1 */ char *_buff; /* address of buffer */ char _flags; /* open mode, etc. */ crg c_arg; } ; extern struct channel chantab[MAXCHAN]; struct fcb { char f_driv; char f_name[8]; char f_type[3]; char f_ext; char f_resv[2]; char f_rc; char f_sydx[16]; char f_cr; unsigned f_record; char f_overfl; }; struct fcbtab { struct fcb fcb; char offset; char flags; char user; }; #define OPNFIL 15 #define CLSFIL 16 #define DELFIL 19 #define READSQ 20 #define WRITSQ 21 #define MAKFIL 22 #define SETDMA 26 #define GETUSR 32 #define READRN 33 #define WRITRN 34 #define FILSIZ 35 #define SETFILE; extern FILE Cbuffs[]; FILE *fopen(); long ftell(); #define stdin (&Cbuffs[0]) #define stdout (&Cbuffs[1]) #define stderr (&Cbuffs[2]) #define getchar() agetc(stdin) #define putchar(c) aputc(c, stdout) #define feof(fp) (((fp)->_flags&_EOF)!=0) #define ferror(fp) (((fp)->_flags&_IOERR)!=0) #define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF)) #define fileno(fp) ((fp)->_unit) #define fflush(fp) flsh_(fp,-1) #endif ctype.h /* Copyright (C) 1984 by Manx Software Systems */ extern char ctp_[]; #define @* * if MAXCHAN is changed then the initialization of chantab in croot.c * should be adjusted so that it initializes EXACTLY MAXCHAN elements of * the array. If this is not done, the I/O library may exhibit * strange behavior. */ #define MAXCHAN 11 /* maximum number of I/O channels */ /* * argument to device routines. * this is a typedef to allow future redeclaration to guarantee * enough space to store either a pointer or an integer. */ typedef char *_arg; /* * device control structure */ CR LF */ #define ECHO 0x08 /* ignored unless CBREAK is set */ #define CBREAK 0x02 /* input using BDOS(1), unless echo off then */ /* same as RAW */ stdio.h /* Copyright (C) 1982, 1984 by Manx Software Systems */ #define fgetc getc #define fputc putc #define NULL 0 #define EOF -1 #ifdef TINY struct fcb { char f_driv; char f_name[8]; char f_type[3]; char f_ext; char f_resv[2]; char f_rc; char f_sydx[16]; char f_cr; unsigned f_record; char f_overfl; }; typedef struct { char *_bp; struct fcbhar _unit; /* token returned by open */ char _bytbuf; /* single byte buffer for unbuffer streams */ int _buflen; /* length of buffer */ } FILE; extern FILE Cbuffs[]; extern char *Stdbufs; /* free list of buffers */ long ftell(); #define stdin (&Cbuffs[0]) #define stdout (&Cbuffs[1]) #define stderr (&Cbuffs[2]) #define getchar() agetc(stdin) #define putchar(c) aputc(c, stdout) #define feof(fp) (((fp)->_flags&_EOF)!=0) #define ferror(fp) (((fp)->_flags&_IOERR)!=0) #define clearerr(fp) ((fp)->_flags REC 36 #define Wrkbuf ((char *)0x80) math.h double sin(), cos(), tan(), cotan(); double asin(), acos(), atan(), atan2(); double ldexp(), frexp(), modf(); double floor(), ceil(); double log(), log10(), exp(), sqrt(), pow(); double sinh(), cosh(), tanh(), fabs(); #define HUGE 5.2e+151 #define LOGHUGE 349.3 #define TINY 7.5e-155 #define LOGTINY -354.8 setjmp.h /* Copyright (C) 1983 by Manx Software Systems */ #define JBUFSIZE (5*sizeof(int)) typedef char jmp_buf[JBUFSIZE]; sgtty.h /* Copyright (C) 1983 bisalpha(x) (ctp_[(x)+1]&0x03) #define isupper(x) (ctp_[(x)+1]&0x01) #define islower(x) (ctp_[(x)+1]&0x02) #define isdigit(x) (ctp_[(x)+1]&0x04) #define isxdigit(x) (ctp_[(x)+1]&0x08) #define isalnum(x) (ctp_[(x)+1]&0x07) #define isspace(x) (ctp_[(x)+1]&0x10) #define ispunct(x) (ctp_[(x)+1]&0x40) #define iscntrl(x) (ctp_[(x)+1]&0x20) #define isprint(x) (ctp_[(x)+1]&0xc7) #define isgraph(x) (ctp_[(x)+1]&0x47) #define isascii(x) (((x)&0x80)==0) #define toascii(x) ((x)&127) #define _tolower(x) ((x)|0x20) #defi@struct device { char d_read; char d_write; char d_ioctl; /* used by character special devices (eg CON:) */ char d_seek; /* used by random I/O devices (eg: a file) */ int (*d_open)(); /* for special open handling */ }; /* * device table, contains names and pointers to device entries */ struct devtabl { char *d_name; struct device *d_dev; _arg d_arg; }; /* * channel table: relates fd's to devices */ struct channel { char c_read; char c_write; char c_ioctl; char c_seek; int (*c_close)(); _a _fcb; char user; } FILE; #else #define BUFSIZ 1024 #define MAXSTREAM 11 #define _BUSY 0x01 #define _ALLBUF 0x02 #define _DIRTY 0x04 #define _EOF 0x08 #define _IOERR 0x10 typedef struct { char *_bp; /* current position in buffer */ char *_bend; /* last character in buffer + 1 */ char *_buff; /* address of buffer */ char _flags; /* open mode, etc. */ char _unit; /* token returned by open */ char _bytbuf; /* single byte buffer for unbuffer streams */ int _buflen; /* length of buffer */ }  ne _toupper(x) ((x)&0x5f) p_[(x)+1]&0x04) #define isxdigit(x) (ctp_[(x)+1]&0x08) #define isalnum(x) (ctp_[(x)+1]&0x07) #define isspace(x) (ctp_[(x)+1]&0x10) #define ispunct(x) (ctp_[(x)+1]&0x40) #define iscntrl(x) (ctp_[(x)+1]&0x20) #define isprint(x) (ctp_[(x)+1]&0xc7) #define isgraph(x) (ctp_[(x)+1]&0x47) #define isascii(x) (((x)&0x80)==0) #define toascii(x) ((x)&127) #define _tolower(x) ((x)|0x20) #defi@@@@unimplemented typedata type conflictdata type conflictbad syntaxstructure redeclarationmissing }syntax error in structure declarationneed right parenthesis or comma in arg liststructure member name expected heremust be structure/union memberillegal typecastincompatible structuresillegal use of structuremissing : in ? conditional expressioncall of non-function@@@as rext.asm ln -ro r.com r.o rext.o -lc pip r.lib=r.rsm[o],rbegin.o[o] CZ COM1T LIB%LN COM6 !"#AS COM4$%&'()C LIB*+,-./012M LIBF3456789RBEGIN O :R O ;HEADER ARC1<=RBUILD $$$@illegal pointer calculationillegal typeundefined symboltypedef not allowed hereno more expression spaceinvalid expression for unary operatorno auto. aggregate initialization allowedinitializer not a constanttoo many initializersinitialization of undefined structurebad declaration syntaxmissing closing braceopen failure on include fileillegal symbol namemultiply defined symbol@@  "$&')*-03579;>@BCEGILOQSVXZ\^`abdefhiklorsuwxy{}bad digit in octal constantstring space exhaustedunterminated stringillegal type for functioninappropriate argumentsbad declaration syntaxsyntax error in typecastarray dimension must be constantarray size must be positive integerdata type too complexillegal pointer reference missing bracketlvalue requiredmultiply defined labeltoo many labelsmissing quotemissing apostropheline too longillegal # encounteredmacro too longreference of member of undefined structurefunction body must be compound statementundefined labelinappropriate argumentsillegal argument nameexpected commainvalid elsebad statement syntaxmissing semicolongoto needs a labelstatement syntax extrn .begin extrn execv_ extrn execl_ extrn agetc_ extrn aputc_ extrn atoi_ extrn atol_ extrn calloc_ extrn Croot_ extrn fdopen_ extrn fgets_ extrn fopen_ extrn freopen_ extrn format_ extrn fprintf_ extrn fputs_ extrn fread_ extrn fscanf_ extrn fseek_ extrn ftell_ extrn fwrite_ extrn getchar_ extrn gets_ extrn getw_ extrn ioctl_ extrn isatty_ extrn lseek_ extrn realloc_ extrn malloc_ extrn free_ extrn creat_ extrn open_ extrn close_ extrn p@#endif with no #if#endasm with no #asm#asm within #asm blockmissing #endifmissing #endasm#if value must be integer constantinvalid use of : operatorinvalid use of void expressioninvalid use of function pointerduplicate case in switchmacro redefinedkeyword redefinedferencemissing close parenthesis on macro referencemacro arguments too long#else with no #if@\0!DM! 9^#V!z&!zA!!9^#V##^#V"Y|M!Aʊ*Y#"Yͦl!A*"!CM*Y*Y|ʳ!) !*Y! !9!!9^#V!^#V"Y|!A!!9s#r!DM!9~#fo#s#r`i*a!9^#V!k1*Y! !!9s#r!9~#H*Y! *Y`iDM( *Y! *Y!usage: sidsym input outputrCannot open input fileToo many symbolswCannot make output file0!DM*Yͥ!9s#r!z1! error in do-whilestatement syntax error in forstatement syntax error in for bodycase value must be integer constantmissing colon on casetoo many cases in switchcase outside of switchmissing colon on defaultduplicate defaultdefault outside of switchbreak/continue errorillegal charactertoo many nested includesnot an argumentnull dimension in arrayinvalid characteosit_ extrn printf_ extrn fclose_ extrn putchar_ extrn puterr_ extrn puts_ extrn putw_ extrn qsort_ extrn rename_ extrn scanfmt_ extrn scanf_ extrn setbuf_ extrn sprintf_ extrn sscanf_ extrn ungetc_ extrn unlink_ extrn bios_ extrn index_ extrn movmem_ extrn rindex_ extrn sbrk_ extrn rsvstk_ extrn setjmp_ extrn setmem_ extrn strcat_ extrn strncat_ extrn strcmp_ extrn strncmp_ extrn strcpy_ extrn strlen_ extrn strncpy_ extrn swapmem_ extrn touppe@@@9^#V! z1`i.!9^#V `i#DM+s!`is`iz0!9^#V!i!HIs# yd*"Y*"Y͑ À0!!!a !:o&Cs!h"T!DM!"*ͥW`i^! k`i^! k`i#DM`i~W`i*#"+)Ts#r`i#DM~T`i^! kB`i^! kQ!`i#DM+sT!T*̀0̀0! DM kʡ! ! ! DMñ`ikʱ!DM`i0!9^#V! k! ! !9^#V! !9^#V!C0!Dr constantnot a structureinvalid use of register storage classsymbol redeclaredillegal use of floating point typeillegal type conversionillegal expression type for switchinvalid identifier in macro definitionmacro needs argument listmissing argument to macronot enough arguments in macro referencemissing close parenthesis on macro referencemacro arguments too long#else with no #ifr_ extrn tolower_ extrn getusr_ extrn setusr_ extrn rstusr_ extrn .dv,.ud extrn .ml _ extrn scanfmt_ extrn scanf_ extrn setbuf_ extrn sprintf_ extrn sscanf_ extrn ungetc_ extrn unlink_ extrn bios_ extrn index_ extrn movmem_ extrn rindex_ extrn sbrk_ extrn rsvstk_ extrn setjmp_ extrn setmem_ extrn strcat_ extrn strncat_ extrn strcmp_ extrn strncmp_ extrn strcpy_ extrn strlen_ extrn strncpy_ extrn swapmem_ extrn touppe@  M`i~#(`i'DM%!"Y!`i##! 9^#V "kP!"Y!*kb "*!& s* ! 9^#V^!rkʽ`i##! kʫ!"Y !!`is#r!" *|!`i##! `i##! k!"Y !!`is#r`i" !!# s#r!% s`i0!9N#F!"`i*kZ`i^#V!̓"!"l`i*kl!"!& ^ `i##! kʕ!" !`is#r*0!9N#F"z!*C"`i~#fo+s#r!ò *}{_+|6|7g}o{_+)&}{_+|g}o6|g}o|/g}/o|g}o|g}o|ʄu}u|ʄ!}„|u!}|}|?>o&zo&|}|>o&|o&}/o|/g#}}o|gBK^#Vz#y####x#~#fo}|>?o&}|>o&Y???????????͡}ͷ}z͡||/g}/o#z/W{/_MD!}y/Ox/G>)), }o|g==DM!>)) =@fo!L9~#fo͍.!L9~#fo!H9~#fo"!H9^#VBK*"*!R9^#Vͥk !L9^#V`iDM@ **!R9^#Vͥʞ !L9^#V*"k `i* !L9^#V*ͳ `i*k *" **k `i"`i* !L9^#V`iDM!L9^#V*"`i*@ *PY*!J9~#foͥp `i*g `i*s#r**##s#r*"*"ð !H9^#V*ʦ !H9^#V*s#r**##s#r*"`i!H9s#r!H9^#V* *!9 *"*^#V!H9s#r*##^#V" N o@@0!9N#F`i*zʃ!"!& ^ !!`i##g !"|Q! *`i#~#fos#r*"`i"`i^#V**`i#~#fos#r!`is#r`i~#fo#s#r+^!C0!9N#F!PYCDM`i k! 9^#V! )k!! 9^#V)0! 9N#F!9^#V`i~#fo#s#r+s`i^#V!u!̓l!!`is#r!9^#V!C0!9N#F`iCʮ!`i#DM+sÐ*&^ x`i!*##o  ! !0!9N#F`i~main() { char buf[80]; printf("please enter your name: "); gets(buf); printf("hello, %s, welcome to the growing community of Aztec C users\n", buf); } @&N 2@:A _N :@_!9= !9F+N+V+^+~+ngx[ [ [ # F og! 9F+N+V+^+~+ngڝ  }ڝ ʱ  ++w x‘ ɯ ~# x§ !9F+N+V+^+~+ngy Fwx# = !9~a { o&!9~A [  o&DM!99`i|DM!99!(`i~# xC!9]A~#d!q||z͡}ͷ}z͡||/g}/o#z/W{/_MD!}y/Ox/G>)), }o|g==DM!>)) =@V!9^#V"ͯq!"*!9r!!9s!!9t"u¦*#"+|ʧ! ͪ!!9r*!9sé! !F9*v wʪ !ͪ!D9^#V!wʢ !ͪ!F9^#V!H9~#fo!J9~#fo*xyʠ!(ͪ!H9^#V!H9^#V*v!H9~#foyʡ!2ͪ*z!L9^#V.ovra:q*! 9^#V!!{!9!! |! }Error %d loading overlay: %s$ ovloader csave  `i#DM+^ʹk !! ʹ0!9N#F`i~c ! 9^#V`i#DM+^k` !5 !N!t N"*C!"C*A­ *A!4Ÿ #4*E+"E}u ʽ ʽ o&"Y*EN N*ADM*Cog!9N#F#^#Vkb6#> 6 #= >6#= yʢ     ͻ / 0_zW /9 <  : >g Aڢ [X @d aڢ {Ң `w# .ʂ ʛ j ͩ w#k {o|g ʛ ͩ w#Œ &jz!|*² >?a{ 0: 70!9"!J9^#V+!L9~#fo!H9~#fo"*!H9~#@@! strcpy_ strcat_ open_ .ge read_ .ne _mbot_ .ul close_ sprintf_ bdos_ exit_!H9~#fo!J9~#fo*xyʠ!(ͪ!H9^#V!H9^#V*v!H9~#foyʡ!2ͪ*z!L9^#V.ovra:q*! 9^#V!!{!9!! |! }Error %d loading overlay: %s$ ovloader csave @@@@@@@@@@@@[ !r"srs# y¨`i""""!9"t**DM**!9^#V*ã .ovbgn :ovexit_ _Uorg_ _Uend_ ovmain_@" mCRCK 4.2B BY KEITH PETERSEN W8SDZ modified and called CRC 1.1 by W.Swan, Alspa Computer, Inc. 05/21/82 !"9"/ 1/ eCRC: File CRC Check Utility v1.1:] -!] 6?# ­ Change instruction at 0208 (CD 65 07) to (C3 2D 04), to avoid printing message. e CRC reads the specified CP/M files, computes a Cyclic Redundancy Check (CRC) number based on the CCITT standard polynomial, and lists each filename with its CRC. This can help verify file transfers. CRC is unsupported software in the p@scanfmt(sgetc, fmt, &arg); } static sgetc(what) { if (what == 0) { if (*scnstr) return *scnstr++ & 255; quit = 1; } else { if (!quit) return *--scnstr & 255; } return -1; } scan.c /* Copyright (C) 1982, 1984 by Manx Software Systems */ #include #define EOF -1 static int maxwidth; static int (*gsub)(); char *index(); scanfmt(getsub, fmt, args) int (*getsub)(); register char *fmt; register int **args; { #ifdef FLOAT double atof(); #endif long lv; register int c, count, base; *)o|g}o"::Q:Q**"VX++FILE READ ERROR++$ZƐ'@'y~y#~f> y> _͍:F{͊2h2|:!\ M:\2!\ M\!\ M\!\ M\<7=Ɓo& M] M2h2|2>C>#>R#>CFF~$#~# xM :F²*}r">͊f`<ª ê CANNOT CLOSE CRCFILE$` ++ABORTED++$ */   scanf.c /* Copyright (C) 1982 by Manx Software Systems */ #include "stdio.h" static int scnlast; scanf(fmt, args) char *fmt; int *args; { int gchar(); scnlast = 0; return scanfmt(gchar, fmt, &args); } static gchar(what) { if (what == 0) { if (feof(stdin)) scnlast = EOF; else scnlast = agetc(stdin); } else scnlast = ungetc(scnlast, stdin); return scnlast; } fscanf.c /* Copyright (C) 1982 by Manx Software Systems */ #include "stdio.h" static int scnlast; static FILE *scnfp; fscanf(fnum(&list[c], &vals[c], base, &lv) == 0) goto stopscan; if (!suppress) { if (lflag) *(long *)(*args++) = lv; else **args++ = lv; ++count; } break; #ifdef FLOAT case 'E': case 'F': lflag = 1; case 'e': case 'f': if (skipblank()) goto stopscan; if (getflt(tlist)) goto stopscan; if (!suppress) { if (lflag) *(double *)(*args++) = atof(tlist); else *(float *)(*args++) = atof(tlist); ++count; } brublic domain. Command Format: CRC [[d:]fname [F,S,D]] d:) optional drive specification fname) any ambiguous filename (D.COM, *.*, etc) F) create a disk File CRC.CRC S) list System files only. D) list Dir (i.e. non-System) files only. Files with .$$$ or .CRC attributes are not listed. !m~F;2DC2SK2 U #2:FVÇCRC $$$guous filename (D.CO1 .* **}|!"*{z*`*"ß : DISK FULL: CRCFILE$!"*@ char suppress, lflag, widflg; char *cp; auto char tlist[130]; static char list[] = "ABCDEFabcdef9876543210"; static char vals[] = { 10,11,12,13,14,15,10,11,12,13,14,15,9,8,7,6,5,4,3,2,1,0 }; count = 0; gsub = getsub; while (c = *fmt++) { if (c == '%') { widflg = lflag = suppress = 0; maxwidth = 127; if (*fmt == '*') { ++fmt; suppress = 1; } if (isdigit(*fmt)) { maxwidth = 0; do { maxwidth = maxwidth*10 + *fmt - '0'; } while (isdigit(*++fmt)); } if@p, fmt, args) FILE *fp; char *fmt; int *args; { int gchar(); scnfp = fp; scnlast = 0; return scanfmt(gchar, fmt, &args); } static gchar(what) { if (what == 0) { if (feof(scnfp)) scnlast = EOF; else scnlast = agetc(scnfp); } else scnlast = ungetc(scnlast, scnfp); return scnlast; } sscanf.c /* Copyright (C) 1983 by Manx Software Systems */ static char *scnstr; static char quit; sscanf(string, fmt, arg) char *string, *fmt; int *arg; { int sgetc(); scnstr = string; quit = 0; return eak; #endif case '[': lflag = 0; if (*fmt == '^' || *fmt == '~') { ++fmt; lflag = 1; } for (cp = tlist ; (c = *fmt++) != ']' ; ) *cp++ = c; *cp = 0; goto string; case 's': lflag = 1; tlist[0] = ' '; tlist[1] = '\t'; tlist[2] = '\n'; tlist[3] = 0; string: if (skipblank()) goto stopscan; charstring: if (!suppress) cp = *args++; widflg = 0; while (maxwidth--) { if ((c = (*gsub)(0)) == EOF) break; if (lf*#"ɯ2l2! "!"``: NO DIR SPACE: CRCFILE$1/ ͘?:xXFile Not Found$e Sum of Listed CRCs = :Q:Qr:F:*}¶">͊ª`<  CANNOT CLOSE CRCFILE$CRC CRC*#"ɯ2l21 w# "!` $:fR:SVZ:DV!e.V!5te | |6e !]M!eMeXXXXXXXX XXX \<X++OPEN FAILED++$!"!"*z ^"\@ (*fmt == 'l') { lflag = 1; ++fmt; } switch (*fmt++) { case '%': c = '%'; goto matchit; case 'h': /* specify short (for compatibility) */ lflag = 0; goto decimal; case 'D': lflag = 1; case 'd': decimal: c = 12; base = 10; goto getval; case 'X': lflag = 1; case 'x': c = 0; base = 16; goto getval; case 'O': lflag = 1; case 'o': c = 14; base = 8; getval: if (skipblank()) goto stopscan; if (get# lag ? (index(tlist,c)!=0) : (index(tlist,c)==0)) { (*gsub)(1); /* unget last character */ break; } if (!suppress) *cp++ = c; widflg = 1; } if (!widflg) goto stopscan; if (!suppress) { *cp = 0; ++count; } break; case 'c': if (!widflg) maxwidth = 1; tlist[0] = 0; lflag = 1; goto charstring; } } else if (isspace(c)) { if (skipblank()) goto stopscan; } else { matchit: if ((*gsub)(0) != c) { (*gsub)(.c /* Copyright (C) 1981,1982,1983 by Manx Software Systems */ #include char *fmtcvt(); format(putsub, fmt, argp) register int (*putsub)(); register char *fmt; char *argp; { register int c; union { int *ip; char *cp; char **cpp; #ifdef FLOAT double *dp; #endif } args; int charcount; int rj, fillc; int maxwidth, width; int i, k; char *cp; auto char s[200]; charcount = 0; args.cp = argp; while ( c = *fmt++ ) { if ( c == '%' ) { s[14] = 0; rj = 1; fillc = ' '; ma, (O_WRONLY|O_CREAT|O_APPEND), "a+", (O_RDWR|O_CREAT|O_APPEND), "x", (O_WRONLY|O_CREAT|O_EXCL), "x+", (O_RDWR|O_CREAT|O_EXCL), "", 0, }; FILE * fopen(name,mode) char *name,*mode; { register FILE *fp; FILE *newstream(), *freopen(); if ((fp = newstream()) == NULL) return NULL; return freopen(name, mode, fp); } FILE * freopen(name, mode, fp) char *name,*mode; FILE *fp; { register struct modes *mp; register int fd; fclose(fp); for (mp = modes ; ; ++mp) { if (mp->fmode == 0) { errno = EI < maxwidth ; ++cnt) { if ((cp = index(list, c = (*gsub)(0))) == 0) { if (base == 16 && val == 0 && (c=='x' || c=='X')) continue; (*gsub)(1); break; } val *= base; val += values[cp-list]; } if (sign) *valp = -val; else *valp = val; return cnt; } printf.c /* Copyright (C) 1981,1982 by Manx Software Systems */ printf(fmt,args) char *fmt; unsigned args; { extern int putchar(); format(putchar,fmt,&args); } fprintf.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #inclgs.dp++, s, maxwidth==10000?6:maxwidth, c-'e'); i = strlen(cp = s); maxwidth = 200; goto havelen; #endif case 'c': c = *args.ip++; default: *(cp = s+13) = c; break; } i = (s+14) - cp; havelen: if ( i > maxwidth ) i = maxwidth; if ( rj ) { for (; width-- > i ; ++charcount) if ((*putsub)(fillc) == -1) return -1; } for ( k = 0 ; *cp && k < maxwidth ; ++k ) if ((*putsub)(*cp++) == -1) return -1; charcount += k; if ( !rght (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" fwrite(buffer,size,number,stream) register char *buffer; unsigned size,number; FILE *stream; { register unsigned i,max; max = size * number; for ( i = 0 ; i < max ; ++i ) { if ( putc(*buffer++,stream) == EOF ) return 0; } return number; } fseek.c /* Copyright (c) 1981, 1982 by Manx Software Systems */ #include "stdio.h" fseek(fp,pos,mode) register FILE *fp; long pos; { register int i; long curpos, lseek(); fp->_flags &= ~_EO1); goto stopscan; } } } stopscan: if (count == 0) { if ((*gsub)(0) == EOF) return EOF; (*gsub)(1); } return count; } skipblank() { while (isspace((*gsub)(0))) ; if ((*gsub)(1) == EOF) return EOF; return 0; } #ifdef FLOAT getflt(buffer) char *buffer; { register char *cp; register int c; char decpt, sign, exp; cp = buffer; sign = exp = decpt = 0; while (maxwidth--) { c = (*gsub)(0); if (!sign && (c == '-' || c == '+')) sign = 1; else if (!decpt && c == '.') dxwidth = 10000; if ((c = *fmt++) == '-') { rj = 0; c = *fmt++; } if (c == '0') { fillc = '0'; c = *fmt++; } if (c == '*') { width = *args.ip++; c = *fmt++; } else { for (width = 0 ; isdigit(c) ; c = *fmt++) width = width*10 + c - '0'; } if ( c == '.' ) { if ((c = *fmt++) == '*') { maxwidth = *args.ip++; c = *fmt++; } else { for (maxwidth = 0 ; isdigit(c) ; c = *fmt++) maxwidth = maxwidth*10 + c - '0'; } } i = sizNVAL; return NULL; } if (strcmp(mp->fmode, mode) == 0) break; } /* Don't try to optimize the next 3 lines. Since _unit is a char, assigning to it in the if statement will cause the -1 test to fail on unsigned char machines. */ if ((fd = open(name, mp->omode)) == -1) return (NULL); fp->_unit = fd; fp->_flags = _BUSY; return fp; } fdopen.c /* Copyright (C) 1984 by Manx Software Systems */ #include "stdio.h" FILE * fdopen(fd,mode) char *mode; { register FILE *fp; FILE *newstream(); ude "stdio.h" static FILE *Stream; fprintf(stream,fmt,args) FILE *stream; char *fmt; unsigned args; { int fpsub(); Stream = stream; return format(fpsub,fmt,&args); } static fpsub(c) { return aputc(c,Stream); } sprintf.c /* Copyright (C) 1982 by Manx Software Systems */ static char *buff; sprintf(str,fmt,args) char *str, *fmt; unsigned args; { int spsub(); register int i; buff = str; i = format(spsub,fmt,&args); *buff = 0; return i; } static spsub(c) { return (*buff++ = c)&0xff; } formatj ) { for (; width-- > i ; ++charcount) if ((*putsub)(' ') == -1) return -1; } } else { if ((*putsub)(c) == -1) return -1; ++charcount; } } return charcount; } fopen.c /* Copyright (C) 1981,1982,1983,1984 by Manx Software Systems */ #include "stdio.h" #include "fcntl.h" #include "errno.h" extern int errno; static struct modes { char fmode[3]; int omode; } modes[] = { "r", O_RDONLY, "r+", O_RDWR, "w", (O_WRONLY|O_CREAT|O_TRUNC), "w+", (O_RDWR|O_CREAT|O_TRUNC), "a"F; if (fp->_flags & _DIRTY) { if (flsh_(fp,-1)) return EOF; } else if (mode == 1 && fp->_bp) pos -= fp->_bend - fp->_bp; fp->_bp = fp->_bend = NULL; if (lseek(fp->_unit, pos, mode) < 0) return EOF; return 0; } long ftell(fp) register FILE *fp; { long pos, lseek(); pos = lseek(fp->_unit, 0L, 1); /* find out where we are */ if (fp->_flags & _DIRTY) pos += fp->_bp - fp->_buff; else if (fp->_bp) pos -= fp->_bend - fp->_bp; return pos; } gets.c /* Copyright (C) 1981,1982 by Manx Softwarecpt = 1; else if (!exp && (c == 'e' || c == 'E')) { sign = 0; exp = decpt = 1; } else if (!isdigit(c)) { (*gsub)(1); break; } *cp++ = c; } *cp = 0; return cp==buffer; } #endif getnum(list, values, base, valp) char *list; char *values; long *valp; { register char *cp; register int c, cnt; long val; int sign; if (maxwidth <= 0) return 0L; val = cnt = sign = 0; if ((c = (*gsub)(0)) == '-') { sign = 1; ++cnt; } else if (c == '+') ++cnt; else (*gsub)(1); for ( ; cnteof(int); if (c == 'l') { c = *fmt++; i = sizeof(long); } else if (c == 'h') c = *fmt++; switch ( c ) { case 'o': k = 8; goto do_conversion; case 'u': k = 10; goto do_conversion; case 'x': k = 16; goto do_conversion; case 'd': k = -10; do_conversion: cp = fmtcvt(args.cp, k, s+14, i); args.cp += i; break; case 's': i = strlen(cp = *args.cpp++); goto havelen; #ifdef FLOAT case 'e': case 'f': case 'g': ftoa(*ar if ((fp = newstream()) == NULL) return NULL; fp->_unit = fd; fp->_flags = _BUSY; return fp; } fread.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" fread(buffer,size,number,stream) register char *buffer; unsigned size; int number; FILE *stream; { int total; register int c,i; for ( total = 0 ; total < number ; ++total ) { for ( i = size ; i ; --i ) { if ( (c = getc(stream)) == EOF ) return total; *buffer++ = c; } } return total; } fwrite.c /* Copyri$ e Systems */ #include "stdio.h" #undef getchar char *gets(line) char *line; { register char *cp; register int i; cp = line; while ((i = getchar()) != EOF && i != '\n') *cp++ = i; *cp = 0; if (i == EOF && cp == line) return NULL; return line; } fgets.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" char *fgets(s, n, fp) char *s; FILE *fp; { register c; register char *cp; cp = s; while (--n > 0 && (c = agetc(fp)) != EOF) { *cp++ = c; if (c == '\n') break;urn EOF; return putc(c,ptr); } putw.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" putw(w,stream) register unsigned w; FILE *stream; { if ( putc(w,stream) < 0 ) return EOF; else if ( putc((w>>8),stream) < 0 ) return EOF; return w; } putc.c /* Copyright (C) 1981,1982,1983,1984 by Manx Software Systems */ #include "stdio.h" putc(c,ptr) int c; register FILE *ptr; { if (ptr->_bp >= ptr->_bend) return flsh_(ptr,c&0xff); return (*ptr->_bp++ = c) & 0xff; } static clolags |= _ALLBUF; ptr->_buff = buffer; return; } setbuf.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" setbuf(stream, buffer) register FILE *stream; char *buffer; { if (stream->_buff) return; if (buffer) { stream->_buff = buffer; stream->_buflen = BUFSIZ; } else { stream->_buff = &stream->_bytbuf; stream->_buflen = 1; } } croot.c /* Copyright (C) 1981,1982,1984 by Manx Software Systems */ #include "errno.h" #include "fcntl.h" #include "io.h" int bdf_(), ret_len = read(ptr->_unit,ptr->_buff,ptr->_buflen)) <= 0) { ptr->_flags |= len==0 ? _EOF : _IOERR; return EOF; } ptr->_bend = (ptr->_bp = ptr->_buff) + len; } return *ptr->_bp++ & 255; } puts.c /* Copyright (C) 1981,1982 by Manx Software Systems */ puts(str) register char *str; { while (*str) if (putchar(*str++) == -1) return -1; return putchar('\n'); } fputs.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" fputs(s,fp) register char *s; FILE *fp; { while ( *s )p = ptr->_buff; ptr->_bend = ptr->_buff + ptr->_buflen; ptr->_flags |= _DIRTY; return (*ptr->_bp++ = data) & 0xff; } ungetc.c /* Copyright (c) 1981, 1982 by Manx Software Systems */ #include "stdio.h" ungetc(c,ptr) int c; register FILE *ptr; { if (c == EOF || ptr->_bp <= ptr->_buff) return EOF; *--ptr->_bp = c; return c; } getbuff.c /* Copyright (C) 1983 by Manx Software Systems */ /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" FILE Cbuffs[MAXSTREAM] = { { 0,0,0, _BUcp++ = 0; break; } close(k); if (k) k = creat(fname, 0666); else k = open(fname, O_RDONLY); if (k == -1) { strcpy(0x80, "Can't open file for redirection: "); strcat(0x80, fname); strcat(0x80, "$"); bdos(9,0x80); exit(10); } } else #endif { Argv[Argc++] = cp; while (*++cp) if (*cp == ' ' || *cp == '\t') { *cp++ = 0; break; } } } main(Argc,Argv); exit(0); } exit(code) { register int fd; (*cls_)(); for (fd = 0 ; fd < MAXC } *cp = 0; if (c == EOF && cp == s) return NULL; return(s); } getchar.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" #undef getchar getchar() { return agetc(stdin); } agetc.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" agetc(ptr) register FILE *ptr; { register int c; top: if ((c = getc(ptr)) != EOF) { switch (c &= 127) { case 0x1a: ptr->_flags |= _EOF; return EOF; case '\r': case 0: goto top; } } return c; } gesall() /* called by exit to close any open files */ { register FILE *fp; for ( fp = Cbuffs ; fp < Cbuffs+MAXSTREAM ; ) fclose(fp++); } fclose(ptr) register FILE *ptr; { register int err; err = 0; if ( ptr->_flags ) { if (ptr->_flags&_DIRTY) /* if modifed flush buffer */ err = flsh_(ptr,-1); err |= close(ptr->_unit); if (ptr->_flags&_ALLBUF) free(ptr->_buff); } ptr->_flags = 0; return err; } flsh_(ptr,data) register FILE *ptr; { register int size; extern int (*cls_)(); cls_ = c(); /* * channel table: relates fd's to devices */ struct channel chantab[] = { { 2, 0, 1, 0, ret_, 2 }, { 0, 2, 1, 0, ret_, 2 }, { 0, 2, 1, 0, ret_, 2 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, { 0, 0, 0, 0, bdf_, 0 }, }; #define MAXARGS 30 static char *Argv[MAXARGS]; static char Argbuf[128]; static int Argc; int (*cls_)() = ret_; Croot() { register char *c if (aputc(*s++,fp) == EOF) return(EOF); return 0; } putchar.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" #undef putchar putchar(c) { return aputc(c,stdout); } puterr.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" puterr(c) { return aputc(c, stderr); } aputc.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include "stdio.h" aputc(c,ptr) register int c; register FILE *ptr; { if (c == '\n') if (putc('\r',ptr) == EOF) retSY,0,0,1 }, { 0,0,0, _BUSY,1,0,1 }, { 0,0,0, _BUSY,2,0,1 }, }; FILE * newstream() { register FILE *fp; fp = Cbuffs; while (fp->_flags) if (++fp >= &Cbuffs[MAXSTREAM]) return NULL; fp->_buff = fp->_bend = /* nothing in buffer */ fp->_bp = 0; return fp; } getbuff(ptr) register FILE *ptr; { char *buffer; if (isatty(ptr->_unit)) { smlbuff: ptr->_buflen = 1; ptr->_buff = &ptr->_bytbuf; return; } if ((buffer = malloc(BUFSIZ)) == NULL) goto smlbuff; ptr->_buflen = BUFSIZ; ptr->_fHAN ; ) close(fd++); if (code && (bdos(24)&1) != 0) unlink("A:$$$.SUB"); _exit(); } bdf_() { errno = EBADF; return -1; } ret_() { return 0; } open.c /* Copyright (C) 1982 by Manx Software Systems */ #include "errno.h" #include "fcntl.h" #include "io.h" #define MAXFILE 8 /* maximum number of open DISK files */ int bdf_(), ret_(), fileop(); /* * note: The ioctl function knows that the condev read/write numbers are * 2. It uses this information to patch the read/write tables. */ static structtw.c /* Copyright (C) 1982 by Manx Software Systems */ #include "stdio.h" getw(stream) FILE *stream; { register int x1,x2; if ((x1 = getc(stream)) == EOF || (x2 = getc(stream)) == EOF) return EOF; return (x2<<8) | x1; } getc.c /* Copyright (C) 1982 by Manx Software Systems */ #include "stdio.h" getc(ptr) register FILE *ptr; { register int len; if (ptr->_bp >= ptr->_bend) { if (ptr->_flags&(_EOF|_IOERR)) return EOF; ptr->_flags &= ~_DIRTY; if (ptr->_buff == NULL) getbuff(ptr); if ((losall; if (ptr->_flags & _IOERR) return EOF; if (ptr->_flags & _DIRTY) { size = ptr->_bp - ptr->_buff; if (write(ptr->_unit, ptr->_buff, size) != size) { ioerr: ptr->_flags |= _IOERR; ptr->_bend = ptr->_bp = NULL; return EOF; } } if (data == -1) { ptr->_flags &= ~_DIRTY; ptr->_bend = ptr->_bp = NULL; return 0; } if (ptr->_buff == NULL) getbuff(ptr); if (ptr->_buflen == 1) { /* unbuffered I/O */ if (write(ptr->_unit, &data, 1) != 1) goto ioerr; return data; } ptr->_bp, *fname; register int k; movmem((char *)0x81, Argbuf, 127); Argbuf[*(char *)0x80 & 0x7f] = 0; Argv[0] = ""; cp = Argbuf; Argc = 1; while (Argc < MAXARGS) { while (*cp == ' ' || *cp == '\t') ++cp; if (*cp == 0) break; #ifndef NOREDIR if (*cp == '>') { /* redirect output */ k = 1; goto redirect; } else if (*cp == '<') { /* redirect input */ k = 0; redirect: while (*++cp == ' ' || *cp == '\t') ; fname = cp; while (*++cp) if (*cp == ' ' || *cp == '\t') { *%  device condev = { 2, 2, 1, 0, ret_ }; static struct device bdosout= { 0, 3, 0, 0, ret_ }; static struct device bdosin = { 3, 0, 0, 0, ret_ }; static struct device filedev= { 1, 1, 0, 1, fileop }; /* * device table, contains names and pointers to device entries */ static struct devtabl devtabl[] = { { "con:", &condev, 2 }, { "CON:", &condev, 2 }, { "lst:", &bdosout, 5 }, { "LST:", &bdosout, 5 }, { "prn:", &bdosout, 5 }, { "PRN:", &bdosout, 5 }, { "pun:", &bdosout, 4 }, { "PUN:", &bdosout, 4 }, {return -1; } fp->offset = fp->fcb.f_overfl = fp->fcb.f_record = 0; fp->user = user; chp->c_arg = fp; fp->flags = (flag&3)+1; chp->c_close = filecl; if (flag&O_APPEND) _Ceof(fp); rstusr(); return 0; } static filecl(fp) register struct fcbtab *fp; { _zap(); /* zap work buffer, so data is not reused */ setusr(fp->user); bdos(CLSFIL,&fp->fcb); rstusr(); fp->flags = 0; return 0; } close.c /* Copyright (C) 1982 by Manx Software Systems */ #include "errno.h" #include "io.h" close(fd) { regd, tty_rd, bdosrd, }; extern int errno; read(fd, buff, len) char *buff; { register struct channel *chp; chp = &chantab[fd]; return (*Rd_tab[chp->c_read])(chp->c_arg, buff, len); } static filerd(afp,buffer,len) struct fcbtab *afp; char *buffer; unsigned len; { register unsigned l = 0; register struct fcbtab *fp; unsigned k,j; fp = afp; setusr(fp->user); if (fp->offset) { if ((l = 128 - fp->offset) > len) l = len; if (getsect(fp, buffer, l)) { rstusr(); return 0; } } if (k = (lenreturn fd; } close(fd) { register struct channel *chp; if (fd < 0 || fd > MAXCHAN) { errno = EBADF; return -1; } chp = &chantab[fd]; fd = (*chp->c_close)(chp->c_arg); chp->c_read = chp->c_write = chp->c_ioctl = chp->c_seek = 0; chp->c_close = bdf_; return fd; } static struct fcbtab fcbtab[MAXFILE]; static fileop(name,flag,mode,chp,dp) char *name; struct channel *chp; struct devtabl *dp; { register struct fcbtab *fp; int filecl(); int user; for ( fp = fcbtab ; fp < fcbtab+MAXFILE ; ++fp t_func = 6; _Eol = '\r'; break; } else if (Tty_ctl.sg_flags&CBREAK) { rd_func = (Tty_ctl.sg_flags&ECHO) ? 1 : 6; wrt_func = 2; } else { Rd_tab[2] = tty_rd; wrt_func = 2; } if (Tty_ctl.sg_flags&CRMOD) _Eol = '\n'; else _Eol = '\r'; } return 0; } raw_rd(x, buff, len) register char *buff; { int c, i; register int count; for (count = 0 ; count < len ; ) { for (i = TIME ; i-- ; ) if ((c = bdos(rd_func,0xff)) != 0) goto have_char; if (count < MIN) continue;  if ((*buff++ = bdos(kind)) == 0x1a) break; } return count; } write.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" int tty_wr(), bdoswr(), filewr(), bdf_(); int (*Wrt_tab[])() = { bdf_, filewr, bdoswr, bdoswr }; write(fd, buff, len) char *buff; { register struct channel *chp; chp = &chantab[fd]; return (*Wrt_tab[chp->c_write])(chp->c_arg, buff, len); } static filewr(afp,buffer,len) struct fcbtab *afp; char *buffer; unsigned len; { register unsign "rdr:", &bdosin, 3 }, { "RDR:", &bdosin, 3 }, { 0, &filedev, 0 } /* this must be the last slot in the table! */ }; creat(name, mode) char *name; { return open(name, O_WRONLY|O_TRUNC|O_CREAT, mode); } open(name, flag, mode) char *name; { register struct devtabl *dp; register struct channel *chp; register struct device *dev; int fd, mdmask; for (chp = chantab, fd = 0 ; fd < MAXCHAN ; ++chp, ++fd) if (chp->c_close == bdf_) goto fndchan; errno = EMFILE; return -1; fndchan: for (dp = devtaister struct channel *chp; extern int bdf_(); if (fd < 0 || fd > MAXCHAN) { errno = EBADF; return -1; } chp = &chantab[fd]; fd = (*chp->c_close)(chp->c_arg); chp->c_read = chp->c_write = chp->c_ioctl = chp->c_seek = 0; chp->c_close = bdf_; return fd; } ioctl.c /* Copyright (C) 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" #include "sgtty.h" #define TIME 10 /* number of iterations of raw_rd loop */ #define MIN 1 /* minimum number of chars returned from read */ extern -l)/128) if ((j = blkrd(&fp->fcb, buffer+l, k)) != 0) { rstusr(); return (k-j)*128 + l; } l += k*128; if (l < len) if (getsect(fp, buffer+l, len-l)) { rstusr(); return l; } rstusr(); return len; } static getsect(fp, buf, len) register struct fcbtab *fp; char *buf; unsigned len; { if (_find(fp)) return -1; movmem(Wrkbuf+fp->offset, buf, len); if ((fp->offset = (fp->offset + len) & 127) == 0) ++fp->fcb.f_record; return 0; } char _Eol = '\n'; tty_rd(x,buff,len) char *buff; { ) if ( fp->flags == 0 ) goto havefcb; errno = ENFILE; return -1; havefcb: if ((user = fcbinit(name,&fp->fcb)) == -1) { errno = EINVAL; return -1; } if (user == 255) user = getusr(); setusr(user); if (flag & O_TRUNC) bdos(DELFIL, &fp->fcb); if (bdos(OPNFIL,&fp->fcb) == 0xff) { if ((flag&(O_TRUNC|O_CREAT)) == 0 || bdos(MAKFIL,&fp->fcb) == 0xff) { errno = ENOENT; rstusr(); return -1; } } else if ((flag&(O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL)) { errno = EEXIST; rstusr();  break; have_char: if (c == '\r') c = _Eol; *buff++ = c; ++count; } return count; } raw_wr(kind, buff, len) register char *buff; { register int count; for (count = len ; count-- ; ) { if (*buff == '\n' && (Tty_ctl.sg_flags&CRMOD)) bdos(wrt_func,'\r'); bdos(wrt_func,*buff++); } return len; } read.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" #include "fcntl.h" int bdf_(), filerd(), tty_rd(), bdosrd(); int (*Rd_tab[])() = { bdf_, filered l = 0; register struct fcbtab *fp; unsigned k,j; fp = afp; setusr(fp->user); if (fp->offset) { if ((l = 128 - fp->offset) > len) l = len; if (putsect(fp, buffer, l)) { rstusr(); return -1; } } if (k = (len-l)/128) if ((j = blkwr(&fp->fcb, buffer+l, k)) != 0) { rstusr(); if ((l += (k-j)*128) == 0) return -1; else return l; } l += k*128; if (l < len) if (putsect(fp, buffer+l, len-l)) { rstusr(); return l; } rstusr(); return len; } static putsect(fpbl ; dp->d_name ; ++dp) if (strcmp(dp->d_name, name) == 0) break; dev = dp->d_dev; mdmask = (flag&3) + 1; if (mdmask&1) { if ((chp->c_read = dev->d_read) == 0) { errno = EACCES; return -1; } } if (mdmask&2) { if ((chp->c_write = dev->d_write) == 0) { errno = EACCES; return -1; } } chp->c_arg = dp->d_arg; chp->c_ioctl = dev->d_ioctl; chp->c_seek = dev->d_seek; chp->c_close = ret_; if ((*dev->d_open)(name, flag, mode, chp, dp) < 0) { chp->c_close = bdf_; return -1; } int (*Rd_tab[])(); extern int (*Wrt_tab[])(); struct sgttyb Tty_ctl; extern char _Eol; extern int tty_rd(); static int raw_rd(), raw_wr(); static int rd_func, wrt_func; ioctl(fd, cmd, arg) struct sgttyb *arg; { register struct channel *chp; chp = &chantab[fd]; if (chp->c_ioctl == 0) { errno = ENOTTY; return -1; } switch (cmd) { case TIOCGETP: *arg = Tty_ctl; break; case TIOCSETP: Tty_ctl = *arg; Wrt_tab[2] = raw_wr; Rd_tab[2] = raw_rd; if (Tty_ctl.sg_flags&RAW) { rd_func = wr static char buffer[258]; static int used; register int l; if (buffer[1] == 0) { buffer[0] = 255; buffer[1] = buffer[2] = 0; bdos(10,buffer); bdos(2,'\n'); if (buffer[2] == 0x1a) { buffer[1] = 0; return 0; } buffer[++buffer[1] + 1] = _Eol; used = 2; } if ((l = buffer[1]) > len) l = len; movmem(buffer+used, buff, l); used += l; buffer[1] -= l; return l; } static bdosrd(kind, buff, len) register char *buff; { register int count; for (count = 0 ; count < len ; ++count) { & , buf, len) register struct fcbtab *fp; char *buf; unsigned len; { if (_find(fp) < 0) return -1; movmem(buf, Wrkbuf+fp->offset, len); if ((errno = bdos(WRITRN, &fp->fcb)) != 0) return -1; if ((fp->offset = (fp->offset + len) & 127) == 0) ++fp->fcb.f_record; return 0; } tty_wr(kind, buff, len) register char *buff; { register int count; for (count = len ; count-- ; ) { if (*buff == '\n') bdos(2,'\r'); bdos(2,*buff++); } return len; } static bdoswr(kind, buff, len) register char *buff;ter struct fcbtab *fp; { extern int errno; bdos(SETDMA, Wrkbuf); if (Wfp != fp || fp->fcb.f_record != Wsct) { if ((errno = bdos(READRN, &fp->fcb)) == 1 || errno == 4) { errno = 0; setmem(Wrkbuf, 128, 0x1a); Wfp = 0; return 1; } else if (errno) return -1; Wfp = fp; Wsct = fp->fcb.f_record; } return 0; } isatty.c /* Copyright (C) 1983 by Manx Software Systems */ #include "io.h" #include "errno.h" isatty(fd) { return chantab[fd].c_ioctl; } rename.c /* Copyright (C) 1983, 1984(area); if ((cp = malloc(size)) != 0 && cp != area) movmem(area, cp, size>osize ? osize : size); return cp; } char * malloc(size) unsigned size; { register FREE *tp, *prev; char *sbrk(); int units; units = (size+sizeof(FREE)-1)/sizeof(FREE) + 1; if ((prev = last) == NULL) last = head.f_chain = prev = &head; for (tp = prev->f_chain ; ; prev = tp, tp = tp->f_chain) { while (tp != tp->f_chain && tp+tp->f_size == tp->f_chain) { if (last == tp->f_chain) last = tp->f_chain->f_chain; tp-posit.c /* Copyright (C) 1982,1983 by Manx Software Systems */ #include "io.h" #include "errno.h" posit(fd, pos) unsigned pos; { register struct fcbtab *fp; if (chantab[fd].c_seek == 0) { errno = EBADF; return -1; } fp = chantab[fd].c_arg; fp->fcb.f_record = pos; fp->offset = fp->fcb.f_overfl = 0; return 0; } ceof.c /* Copyright (C) 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" _Ceof(fp) register struct fcbtab *fp; { register char *cp; bdos(FILSIZ, &fp->fcb); if (fprn sign ? -n : n; } atoi.c /* Copyright (C) 1981,1982 by Manx Software Systems */ #include atoi(cp) register char *cp; { register unsigned i; register sign; while (*cp == ' ' || *cp == '\t') ++cp; sign = 0; if ( *cp == '-' ) { sign = 1; ++cp; } else if ( *cp == '+' ) ++cp; for ( i = 0 ; isdigit(*cp) ; ) i = i*10 + *cp++ - '0'; return sign ? -i : i; } calloc.c /* Copyright (C) 1984 by Manx Software Systems */ char *calloc(nelem, size) unsigned nelem, size; { register unsignase; unsigned nel, size; int (*compar)(); { register char *i,*j,*x,*r; auto struct stk { char *l, *r; } stack[16]; struct stk *sp; sp = stack; r = base + (nel-1)*size; for (;;) { do { x = base + (r-base)/size/2 * size; i = base; j = r; do { while ((*compar)(i,x) < 0) i += size; while ((*compar)(x,j) < 0) j -= size; if (i < j) { swapmem(i, j, size); if (i == x) x = j; else if (j == x) x = i; } if (i <= j) { i += size;  { register int count; for (count = len ; count-- ; ) bdos(kind,*buff++); return len; } lseek.c /* Copyright (C) 1982, 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" long lseek(fd, pos, how) long pos; { register struct fcbtab *fp; if (chantab[fd].c_seek == 0) { Badf: errno = EBADF; return -1L; } fp = chantab[fd].c_arg; switch (how) { case 2: /* * Close the file because CP/M doesn't know how big an open file is. * However, the fcb is still valid. */ setu by Manx Software Systems */ #include "errno.h" rename(old, new) char *old, *new; { auto char buff[60]; register int user; user = fcbinit(old,buff); fcbinit(new,buff+16); setusr(user); user = 0; if (bdos(15,buff+16) != 0xff) { bdos(16,buff+16); errno = EEXIST; user = -1; } else if (bdos(23,buff) == 0xff) { errno = ENOENT; user = -1; } rstusr(); return user; } unlink.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ #include "errno.h" unlink(name) char *name; { auto char del>f_size += tp->f_chain->f_size; tp->f_chain = tp->f_chain->f_chain; } if (tp->f_size >= units) { if (tp->f_size == units) prev->f_chain = tp->f_chain; else { last = tp + units; prev->f_chain = last; last->f_chain = tp->f_chain; last->f_size = tp->f_size - units; tp->f_size = units; } last = prev; tp->f_chain = NULL; return (char *)(tp+1); } if (tp == last) { if ((tp = (FREE *)sbrk(GRAIN)) == (FREE *)-1) return (char *)NULL; tp->f_size = GRAIN/s->fcb.f_record == 0) { fp->offset = 0; return 0; } --fp->fcb.f_record; /* backup to last record */ if (_find(fp)) return -1; for (cp = Wrkbuf+128 ; cp > Wrkbuf ; ) if (*--cp != 0x1a) { ++cp; break; } if ((fp->offset = cp-Wrkbuf) == 128) { ++fp->fcb.f_record; fp->offset = 0; } return 0; } find.c /* Copyright (C) 1984 by Manx Software Systems */ #include "io.h" static struct fcbtab *Wfp; static unsigned Wsct; _zap() /* invalidate work buffer */ { Wfp = 0; } _find(fp) regised i = nelem*size; register char *cp, *malloc(); if ((cp = malloc(i)) != (char *)0) setmem(cp, i, 0); return cp; } malloc.c /* Copyright (C) 1984 by Manx Software Systems */ typedef struct freelist { unsigned f_size; struct freelist *f_chain; } FREE; #define NULL (FREE *)0 #define GRAIN 1024 static FREE head, *last; char * realloc(area, size) register char *area; unsigned size; { register char *cp; unsigned osize; char *malloc(); osize = (((FREE *)area-1)->f_size - 1) * sizeof(FREE); freej -= size; } } while (i <= j); if (j-base < r-i) { if (i < r) { /* stack request for right partition */ sp->l = i; sp->r = r; ++sp; } r = j; /* continue sorting left partition */ } else { if (base < j) { /* stack request for left partition */ sp->l = base; sp->r = j; ++sp; } base = i; /* continue sorting right partition */ } } while (base < r); if (sp <= stack) break; --sp; base = sp->l; r = sp->r; } } ctype.c /* Copyrisr(fp->user); fp->fcb.f_name[4] |= 0x80; /* set parital close flag for MP/M */ bdos(CLSFIL, &fp->fcb); fp->fcb.f_name[4] &= 0x7f; /* clear parital close flag */ _Ceof(fp); rstusr(); case 1: pos += fp->offset + ((long)fp->fcb.f_record << 7); case 0: break; default: errno = EINVAL; return -1L; } fp->fcb.f_overfl = 0; if (pos < 0) { fp->offset = fp->fcb.f_record = 0; errno = EINVAL; return -1L; } fp->offset = (unsigned)pos & 127; fp->fcb.f_record = pos >> 7; return pos; } fcb[40]; register int user; user = fcbinit(name,delfcb); setusr(user); user = bdos(19,delfcb); rstusr(); if (user == 0xff) { errno = ENOENT; return -1; } return 0; } atol.c /* Copyright (C) 1982 by Manx Software Systems */ #include long atol(cp) register char *cp; { long n; register sign; while (*cp == ' ' || *cp == '\t') ++cp; sign = 0; if ( *cp == '-' ) { sign = 1; ++cp; } else if ( *cp == '+' ) ++cp; for ( n = 0 ; isdigit(*cp) ; ) n = n*10 + *cp++ - '0'; retuizeof(FREE); tp->f_chain = NULL; free(tp+1); tp = last; } } } free(area) char *area; { register FREE *tp, *hole; hole = (FREE *)area - 1; if (hole->f_chain != NULL) return -1; for (tp = last ; tp > hole || hole > tp->f_chain ; tp = tp->f_chain) if (tp >= tp->f_chain && (hole > tp || hole < tp->f_chain)) break; hole->f_chain = tp->f_chain; tp->f_chain = hole; last = tp; return 0; } qsort.c /* Copyright (C) 1984 by Manx Software Systems */ qsort(base, nel, size, compar) char *b' ght (C) 1984 by Manx Software Systems */ char ctp_[129] = { 0, /* EOF */ 0x20, 0x20, 0x20, 0x20, /* nul soh stx etx */ 0x20, 0x20, 0x20, 0x20, /* eot enq ack bel */ 0x20, 0x30, 0x30, 0x30, /* bs ht nl vt */ 0x30, 0x30, 0x20, 0x20, /* ff cr so si */ 0x20, 0x20, 0x20, 0x20, /* dle dc1 dc2 dc3 */ 0x20, 0x20, 0x20, 0x20, /* dc4 nak syn etb */ 0x20, 0x20, 0x20, 0x20, /* can em sub esc */ 0x20, 0x20, 0x20, 0x20, /* fs gs rs us */ 0x90, 0x40, 0x40, 0x40, /* sp ! " # */ 0x40, 0x40, 0x40, 0x40, /* } doload: *(char *)0x80 = cp - (char *)0x81; movmem(ldr_, loader, sizeof loader); (*(int (*)())loader)(&fcb, ouser); } r = 0; fcbinit(0, 0x5c); fcbinit(0, 0x6c); cp = (char *)0x81; if (*argv) { ++argv; /* skip arg0, used for unix (tm) compatibility */ for (user = 0 ; (xp = *argv++) != 0 ; ++user) { if (user == 0) fcbinit(xp, 0x5c); else if (user == 1) fcbinit(xp, 0x6c); *cp++ = ' '; while (*xp) { if (cp > (char *)0xff) goto doload; *cp++ = *xp++; } }@ argv) char *path, **argv; { return execvp(path, argv); } exec.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ #include "io.h" #include "errno.h" execlp(path, args) char *path, *args; { return execvp(path, &args); } execvp(path, argv) char *path, **argv; { register char *cp, *xp; int user, ouser; auto struct fcb fcb; auto char loader[70]; extern char ldr_[]; if ((user = fcbinit(path, &fcb)) == -1) { errno = EINVAL; return -1; } if (fcb.f_type[0] == ' ') strcpy(fcb.f_type, "COM"@ begin.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 BDOS equ 5 extrn Croot_ extrn _Uorg_, _Uend_ ; public lnprm, lntmp, lnsec ; ; The 3 "bss" statements below must remain in EXACTLY the same order, ; with no intervening statements! ; bss lnprm,4 bss lntmp,4 bss lnsec,4 ; global sbot,2 global errno_,2 global _mbot_,2 dseg public Sysvec_ Sysvec_: dw 0 dw 0 dw 0 dw 0 public $MEMRY $MEMRY: dw 0ffffh ; fcb: db 0,'???????????',0,0,0,0 ds 16 cseg public .begin public _exit $ % & ' */ 0x40, 0x40, 0x40, 0x40, /* ( ) * + */ 0x40, 0x40, 0x40, 0x40, /* , - . / */ 0x0C, 0x0C, 0x0C, 0x0C, /* 0 1 2 3 */ 0x0C, 0x0C, 0x0C, 0x0C, /* 4 5 6 7 */ 0x0C, 0x0C, 0x40, 0x40, /* 8 9 : ; */ 0x40, 0x40, 0x40, 0x40, /* < = > ? */ 0x40, 0x09, 0x09, 0x09, /* @ A B C */ 0x09, 0x09, 0x09, 0x01, /* D E F G */ 0x01, 0x01, 0x01, 0x01, /* H I J K */ 0x01, 0x01, 0x01, 0x01, /* L M N O */ 0x01, 0x01, 0x01, 0x01, /* P Q R S */ 0x01, 0x01, 0x01, 0x01, /* T U V W */ 0x01, 0x01, 0x01, 0x40, /* X Y @@); ouser = bdos(GETUSR, 255); bdos(GETUSR, user); if (bdos(OPNFIL, &fcb) == 255) { errno = ENOENT; return -1; } fcb.f_cr = 0; fcbinit(0, 0x5c); fcbinit(0, 0x6c); cp = (char *)0x81; if (*argv) { ++argv; /* skip arg0, used for unix (tm) compatibility */ for (user = 0 ; (xp = *argv++) != 0 ; ++user) { if (user == 0) fcbinit(xp, 0x5c); else if (user == 1) fcbinit(xp, 0x6c); *cp++ = ' '; while (*xp) { if (cp > (char *)0xff) goto doload; *cp++ = *xp++; } }@_ .begin: lxi h,_Uorg_ lxi b,_Uend_-_Uorg_ mvi e,0 clrbss: mov m,e inx h dcx b mov a,c ora b jnz clrbss ; LHLD BDOS+1 SPHL lxi d,-2048 dad d ;set heap limit at 2K below stack shld sbot lhld $MEMRY shld _mbot_ CALL Croot_ _exit_: mvi c,17 ;search for first (used to flush deblock buffer) lxi d,fcb call BDOS lxi b,0 call BDOS JMP _exit_ ; end .begin mbegin.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 BDOS equ 5 extrn Croot_ dseg ; ; The 3 "ds 4" statements belZ [ */ 0x40, 0x40, 0x40, 0x01, /* \ ] ^ _ */ 0x40, 0x0A, 0x0A, 0x0A, /* ` a b c */ 0x0A, 0x0A, 0x0A, 0x02, /* d e f g */ 0x02, 0x02, 0x02, 0x02, /* h i j k */ 0x02, 0x02, 0x02, 0x02, /* l m n o */ 0x02, 0x02, 0x02, 0x02, /* p q r s */ 0x02, 0x02, 0x02, 0x02, /* t u v w */ 0x02, 0x02, 0x02, 0x40, /* x y z { */ 0x40, 0x40, 0x40, 0x20, /* | } ~ del */ } ; execl.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ execl(path, args) char *path, *args; { return execvp(path, &args); } execv(path,@@( ow must remain in EXACTLY the same order, ; with no intervening statements! ; public lnprm, lntmp, lnsec lnprm: ds 4 lntmp: ds 4 lnsec: ds 4 ; public Sysvec_ Sysvec_: dw 0 dw 0 dw 0 dw 0 public $MEMRY $MEMRY: dw -1 public sbot sbot: dw 0 public errno_ errno_: dw 0 ; fcb: db 0,'???????????',0,0,0,0 ds 16 cseg public .begin public _exit_ .begin: LHLD BDOS+1 SPHL lxi d,-2048 dad d ;set heap limit at 2K below stack shld sbot CALL Croot_ _exit_: mvi c,17 ;search for first (used to flush deblo jnz .move ret ; public .ARG1,.ARG2,.ARG3,.asave ; .asave: ;support for assembly routines which must save IX and IY pop d ;save return address lxi h,2 ;compute address of arguments dad sp xra a adi 3 jpe nopush DB 221,229,253,229 ;push ix ; push iy nopush: PUSH B push d ;put return addr back lxi d,.ARG1 mvi b,6 cpyloop: ;copy args to known place mov a,m stax d inx h inx d dcr b jnz cpyloop lxi h,asmret xthl pchl ; asmret: POP B xra a adi 3 jpe nopop DB 253,225,221,225 ; pop jnz nocarry inx h inr m nocarry: lhld .ARG3 dcx h shld .ARG3 mov a,l ora h jnz ioloop pop b ;pull function code from stack ret ;all done, return number remaining ; ioerr: cpi 1 jz dontset cpi 4 jz dontset mov l,a mvi h,0 shld errno_ dontset: pop b ;pull function code from stack lhld .ARG3 ret ;return number remaining end bdos.asm ;Copyright (C) 1981,1982 by Manx Software Systems ; :ts=8 BASE equ 0 BDOS equ 5 extrn .ARG1,.ARG2,.ARG3,.asave ; public bdoshl_ bdoshl_: call .ascomment out the next 8 lines. ; db 237,176 ;ldir mov a,m stax d inx h inx d dcx b mov a,c ora b jnz movedata movedone: ; lxi h,_Uorg_ lxi b,_Uend_-_Uorg_ mvi e,0 clrbss: mov m,e inx h dcx b mov a,c ora b jnz clrbss ; ei ;no argc,argv in ROM system jmp main_ ;main shouldn't return in ROM based system end .begin csave.asm ;Copyright (C) 1981,1982,1984 by Manx Software Systems ; :ts=8 extrn .begin public .chl .chl: PCHL ; public zsave,zret zsave: POP H PUSH B MOV B,H MOV C,L L mvi a,4 outer: push psw mov e,m xchg mvi b,8 inner: dad h mov a,h sub c jc zero mov h,a inr l zero: dcr b jnz inner xchg mov m,e dcx h pop psw dcr a jnz outer ; mov e,d mvi d,0 lxi h,digits dad d mov a,m lhld string dcx h shld string mov m,a ; lxi h,number mvi b,4 xra a zcheck: cmp m jnz top inx h dcr b jnz zcheck lhld string pop psw jp notneg dcx h mvi m,'-' notneg: pop b ret ; digits: db '0123456789abcdef' end blkio.asm ; Copyright (C) 1982, 1983 by Manx Softwmvi a,11 ;clear name and ext to blanks clrlp: mvi m,' ' inx h dcr a jnz clrlp mvi a,4 zrlp: mvi m,0 inx h dcr a jnz zrlp xchg ; now HL contains fcb addr ; mov a,c ora b jz badname skipbl: ldax b cpi ' ' jz skip cpi 9 jnz skipdone skip: inx b jmp skipbl skipdone: ; push b ;save address of name mvi d,0 ;init user # userloop: ldax b call isdig jc userdone sui '0' mov e,a mov a,d add a ;*2 add a ;*4 add a ;*8 add d ;*9 add d ;*10 add e ;add in digit mov d,a inx b jck buffer) lxi d,fcb call BDOS lxi b,0 call BDOS JMP _exit_ end .begin rom.asm ;Copyright (C) 1983 by Manx Software Systems ; :ts=8 ; ; stksize should be set according to your program's needs ; stksize equ 1024 bss stack,stksize extrn main_ extrn _Corg_, _Cend_ extrn _Dorg_, _Dend_ extrn _Uorg_, _Uend_ ; ; The 3 "bss" statements below must remain in EXACTLY the same order, ; with no intervening statements! ; public lnprm, lntmp, lnsec bss lnprm,4 bss lntmp,4 bss lnsec,4 ; global errno_,2  iy ; pop ix nopop: mov a,h ora l RET ; dseg .ARG1: ds 2 .ARG2: ds 2 .ARG3: ds 2 end fmtcvt.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 dseg string: ds 2 size: dw 0 number: ds 4 cseg public fmtcvt_ fmtcvt_: ;char *fmtcvt(ptr, base, buffer, size) push b lxi h,0 shld number shld number+2 lxi h,10 dad sp mov a,m sta size mov b,a ;save size for later dcx h mov d,m dcx h mov e,m dcx h xchg mvi m,0 ;null terminate string shld string xchg dcx h mov c,m ;C = base dcxave call combdos xchg ;get back original hl value ret ; public bdos_,CPM_ bdos_: CPM_: call .asave combdos: lhld .ARG1 mov b,h mov c,l lhld .ARG2 xchg CALL BDOS xchg ;save for bdoshl call mov l,a xra a ;set zero flag mov h,a RET end bios.asm ;Copyright (C) 1981,1982 by Manx Software Systems BASE equ 0 BDOS equ 5 extrn .ARG1,.ARG2,.ARG3,.asave ; public bios_ bios_: call .asave call combios mov l,a mvi h,0 ret ; public bioshl_ bioshl_: call .asave combios: lhld .ARG1 xchg lhXI H,0 DAD SP XCHG DAD SP SPHL PUSH D DB 221,229,253,229 ;push ix ; push iy mov h,b mov l,c call .chl ; zret: DB 253,225,221,225 ; pop iy ; pop ix cret: XCHG POP H SPHL POP B XCHG MOV A,H ORA L RET ; public csave,cret csave: POP H PUSH B MOV B,H MOV C,L LXI H,0 DAD SP XCHG DAD SP SPHL PUSH D lxi h,cret push h mov h,b mov l,c pchl ; ; move - move BC bytes from (HL) to (DE), used for struct assignment ; public .move .move: mov a,m stax d inx h inx d dcx b mov a,b ora care Systems ; :ts=8 BDOS equ 5 extrn errno_ extrn .asave,.ARG1,.ARG2,.ARG3 public blkrd_ blkrd_: call .asave mvi c,33 ;set function to read sequential jmp rdwrt ; public blkwr_ blkwr_: call .asave mvi c,34 ;set function to write sequential rdwrt: push b ioloop: lhld .ARG2 xchg lxi h,128 dad d ;bump address to next sector shld .ARG2 mvi c,26 ;set DMA address call BDOS pop b push b lhld .ARG1 xchg call BDOS ;read or write sector ora a jnz ioerr lhld .ARG1 lxi d,33 dad d inr m mp userloop userdone: cpi '/' jnz nouser inx b pop psw ;throw away saved address jmp setuser nouser: pop b ;restore original address mvi d,255 ;set user # to default setuser: inx b ldax b cpi ':' dcx b mvi a,0 jnz nodrive ; ldax b ani 127 cpi 'A' jc badname cpi 'Z'+1 jnc lowerc sui 'A'-1 jmp setdrive ; lowerc: cpi 'a' jc badname cpi 'z'+1 jnc badname sui 'a'-1 setdrive: mov m,a inx b inx b nodrive: inx h ; move name in mapping to upper case mvi e,8 nameskp: inr e namelp dseg public Sysvec_ Sysvec_: dw 0 dw 0 dw 0 dw 0 public $MEMRY $MEMRY: dw 0ffffh cseg public .begin .begin: di lxi sp,stack+stksize ; ; The loop below moves the initialized data from ROM to RAM. ; If your program has no initialized data, or the initialized ; data isn't modified, then delete this loop. ; lxi h,_Cend_ lxi d,_Dorg_ lxi b,_Dend_-_Dorg_ mov a,h cmp d jnz movedata mov a,l cmp e jz movedone movedata: ; If your processor is a Z80, then remove the comment from the ; next line and  h mov d,m dcx h mov e,m lxi h,number cpnum: ldax d mov m,a inx d inx h dcr b jnz cpnum mov a,c ora a jp unsigned ; base < 0, means do signed conversion cma inr a mov c,a ;C = base lhld size lxi d,number-1 dad d mov a,m ora a push psw jp top ;number is negative, so make it positive ;note: carry is already cleared by 'ora' above lda size mov b,a lxi h,number ngloop: mvi a,0 sbb m mov m,a inx h dcr b jnz ngloop jmp top unsigned: push psw top: lxi h,number+3 mvi d,0 ld BASE+1 dcx h dcx h dcx h dad d dad d dad d xchg ;bios jump addr in DE lhld .ARG2 mov b,h mov c,l lhld .ARG3 xchg ;now arg3 in DE, and bios jump in HL pchl end fcbinit.asm ;Copyright (C) 1981,1982 by Manx Software Systems ; :ts=8 public fcbinit_ fcbinit_: push b lxi h,4 dad sp mov c,m ; BC contains name inx h mov b,m inx h mov e,m ; DE contains fcb address inx h mov d,m ; clear name to blanks mov l,e ;copy fcb address into HL mov h,d mvi m,0 ;clear drive # inx h ) : ldax b inx b cpi '.' jz namedn ora a jz alldone dcr e jz nameskp call toupper mov m,a inx h jmp namelp ; namedn: dcr e mov a,e add l mov l,a mov a,h aci 0 mov h,a ; move extension mapping to upper case mvi e,3 extlp: ldax b inx b ora a jz alldone call toupper mov m,a inx h dcr e jnz extlp ; alldone: mvi h,0 mov l,d ;return user # prefix mov a,d ora a pop b ret ; badname: lxi h,-1 mov a,h ora a pop b ret ; toupper: cpi '*' jnz nostar dcx b ;back up so we seed,defdma mvi c,26 call bdos lhld bdos+1 sphl lxi h,0 push h ;set for proper return from program jmp tpa end user.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 BDOS equ 5 extrn .asave,.ARG1,.ARG2,.ARG3 dseg oldusr: db 0 cseg public getusr_ getusr_: call .asave mvi c,32 mvi e,255 call BDOS ;get current user # mov l,a mvi h,0 ora a ret ; public setusr_ setusr_: call .asave mvi c,32 mvi e,255 call BDOS sta oldusr lda .ARG1 cpi 255 rz mvi c,32 mov e,a jmp BDOS ;set ftware Systems ; :ts=8 public strcpy_ strcpy_: lxi h,5 dad sp mov d,m dcx h mov e,m ;DE = s2 dcx h mov a,m dcx h mov l,m mov h,a ;HL = s1 push h ;save target for return cpyloop: ldax d ;while (*s1++ = *s2++) ; mov m,a ora a jz done inx d inx h ;++s2 jmp cpyloop ;} done: pop h ;return target address mov a,h ora l ret end strncpy.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 public strncpy_ strncpy_: lxi h,7 dad sp push b mov b,m dcx h mov c,m ;BC = ) 1984 by Manx Software Systems ; :ts=8 ; The C routine execl() in exec.c knows that this function is ; less than 70 bytes long. If this code is changed, then execl ; must be changed also. ; ; This routine is copied into an automatic array and invoked ; there by execl(). The code is self relocating and must ; remain so. ; bdos equ 5 defdma equ 80h tpa equ 100h public ldr__ ; ldr_(&fcb, ouser) ldr__: pop d ;throw away return pop b ;set up fcb address lxi d,9 dad d ;fix hl to point to head of loop  push b ;save return value mov c,m ;get BC value inx h mov b,m xra a adi 3 jpe longdone inx h mov e,m ;get IX value inx h mov d,m inx h push d db 221,225 ;pop ix mov e,m ;get IY value inx h mov d,m push d db 253,225 ;pop iy longdone: pop h mov a,l ora h rnz inx h ;force non-zero return inr a ;set non-zero flag ret end strcmp.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 public strcmp_ strcmp_: lxi h,5 dad sp push b lxi b,32767 jmp same ; public p cpyloop ;} done: mov m,a ;guarantee null termination pop h pop b mov a,h ora l ret end index.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 public index_ index_: lxi h,2 dad sp mov e,m ;DE = destination inx h mov d,m inx h mov l,m xchg ;e has char to look for scan: mov a,m cmp e jz foundit ora a jz noluck inx h jmp scan ; noluck: lxi h,0 xra a ret ; foundit: mov a,h ora l ret end rindex.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts star again mvi a,'?' ;and map into question ret nostar: cpi 'a' rc cpi 'z'+1 rnc sui 'a'-'A' ret ; isdig: cpi '0' rc cpi '9'+1 jnc notdig ora a ret notdig: stc ret ; end sbrk.asm ;Copyright (C) 1981,1982 by Manx Software Systems ;Copyright (C) 1983,1984 by Manx Software Systems ; :ts=8 extrn $MEMRY, sbot ; ; sbrk(size): return address of current top & bump by size bytes ; public sbrk_ sbrk_: lxi h,2 dad sp mov e,m ; get size to allocate inx h mov d,m lhld $MEMRY dad d jc sbrk.new user number ; public rstusr_ rstusr_: call .asave mvi c,32 lda oldusr mov e,a jmp BDOS ;restore old user number end setjmp.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 public setjmp_ setjmp_: lxi h,2 dad sp mov e,m ;get address of jump buffer inx h mov d,m dcx h ;get SP value back xchg mov m,e ;save SP value inx h mov m,d inx h pop d push d mov m,e ;save PC value inx h mov m,d inx h mov m,c ;save BC value inx h mov m,b xra a adi 3 jpe setdone inx h db len dcx h mov d,m dcx h mov e,m ;DE = s2 dcx h mov a,m dcx h mov l,m mov h,a ;HL = s1 push h ;save target for return cpyloop: mov a,b ;while (len) { ora c jz done ldax d ;if (*s1 = *s2) ++s1 mov m,a ora a jz padding inx d padding: inx h ;++s2 dcx b ;--len jmp cpyloop ;} done: pop h ;return target address pop b mov a,h ora l ret end strcat.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 public strcat_ ;strcat(s1,s2) strcat_: lxi h,5 dad sp push b lx lxi d,tpa ; ; bc = fcb address ; de = tpa address ; hl = address of this routine ; old user # pushed onto stack ; push h ;save loop address push d push b mvi c,26 call bdos pop d push d mvi c,20 call bdos pop b ;restore fcb address pop d ;and loading addr. lxi h,80h dad d ;bump loading addr xchg pop h push h ;restore loop address ora a ;check if eof rz ;if not, return to top of loop pop h ;throw away return addr pop d ;get old user # mvi c,32 call bdos ;restore user # lxi strncmp_ strncmp_: lxi h,7 dad sp push b mov b,m dcx h mov c,m ;BC = len dcx h same: mov d,m dcx h mov e,m ;DE = s2 dcx h mov a,m dcx h mov l,m mov h,a ;HL = s1 xchg ;now DE=s1, HL=s2 cmploop: mov a,b ;while (len) { ora c jz done ldax d ;if (*s1-*s2) break sub m jnz done ldax d ;if (*s1 == 0) break ora a jz done inx d ;++s1 inx h ;++s2 dcx b ;--len jmp cmploop ;} done: pop b mov l,a sbb a mov h,a ora l ret end strcpy.asm ;Copyright (C) 1981,1982,1983 by Manx So=8 public rindex_ rindex_: push b lxi h,4 dad sp mov e,m ;DE = destination inx h mov d,m inx h mov l,m xchg ;e has char to look for lxi b,0 xra a toend: cmp m ;scan for end of string jz scan inx h inx b jmp toend scan: mov a,b ora c jz noluck dcx b dcx h mov a,m cmp e jnz scan mov a,h ora l pop b ret noluck: lxi h,0 xra a pop b ret ; end strlen.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 public strlen_ strlen_: LXI H,2 DAD SP MOV A,M INX H Mov xchg ;save for compare lhld sbot mov a,l ;check for stack/heap overflow sub e mov a,h sbb d jc sbrk.ov lhld $MEMRY ;get old value xchg shld $MEMRY ;new value is good so save it away xchg ;return original value mov a,h ora l ret ; no space left!! sbrk.ov: lxi h,-1 xra a dcr a ret ; ; ; rsvstk(size): reserve size bytes of stack space ; public rsvstk_ rsvstk_: lxi h,2 dad sp mov a,l sub m mov e,a mov a,h inx h sbb m mov d,a xchg shld sbot ret end loader.asm ; Copyright (C221,229 ;push ix pop d mov m,e ;save IX value inx h mov m,d inx h db 253,229 ;push iy pop d mov m,e ;save IY value inx h mov m,d setdone: lxi h,0 xra a ;set zero flag ret ; public longjmp_ longjmp_: lxi h,2 dad sp mov e,m ;get address of jump buffer inx h mov d,m inx h mov c,m ;get return value inx h mov b,m xchg mov e,m ;get SP value inx h mov d,m inx h xchg sphl ;switch to original stack xchg mov e,m ;get PC value inx h mov d,m inx h push d ;save for return i b,32767 jmp same ; public strncat_ ;strncat(s1,s2,len) strncat_: lxi h,7 dad sp push b mov b,m dcx h mov c,m ;BC = len dcx h same: mov d,m dcx h mov e,m ;DE = s2 dcx h mov a,m dcx h mov l,m mov h,a ;HL = s1 push h ;save destination for return value xra a eloop: cmp m ;while (*s1) ++s1; jz cpyloop inx h jmp eloop ;} cpyloop: ;while (len) { mov a,b ora c jz done ldax d ;if ((*s1 = *s2) == 0) break mov m,a ora a jz done inx d ;++s1 inx h ;++s2 dcx b ;--len jm* OV H,M MOV L,A LXI D,0 XRA A .stl: CMP M JZ .stlx INX D INX H JMP .stl .stlx: XCHG mov a,l ora h RET end setmem.asm ;Copyright (C) 1983 by Manx Software Systems public setmem_ setmem_: push b lxi h,4 dad sp mov e,m inx h mov d,m inx h mov c,m inx h mov b,m inx h mov l,m xchg setloop: mov a,b ora c jz done mov m,e inx h dcx b jmp setloop done: pop b ret end movmem.asm ;Copyright (C) 1983 by Manx Software Systems ; :ts=8 public movmem_ ;movmem(src,dst,len) movmem_: push bh ;put back correct return addr xchg ;fall through into .lldp ; public .lldp ;load long into primary accum .lldp: lxi d,lnprm lload: mov a,m stax d inx d inx h mov a,m stax d inx d inx h mov a,m stax d inx d inx h mov a,m stax d ret ; public .lst ;store long at addr in HL .lst: lxi d,lnprm ldax d mov m,a inx h inx d ldax d mov m,a inx h inx d ldax d mov m,a inx h inx d ldax d mov m,a ret ; public .lpsh ;push long onto the stack .lpsh: ;from the primary accumulatrimary with secondary .lxr: push b lxi d,lnprm lxi h,lnsec mvi b,4 xrloop: ldax d xra m stax d inx h inx d dcr b jnz xrloop pop b ret ; public .lcm ;complement primary .lcm: lxi h,lnprm mvi d,4 cmloop: mov a,m cma mov m,a inx h dcr d jnz cmloop ret ; public .lls ;shift primary left by secondary .lls: lda lnsec ani 03fH ;restrict to 63 bits rz lhld lnprm xchg lhld lnprm+2 ;DE has low word, HL has high word lsloop: dad h ;shift high word xchg dad h ;shift low word xchg  push b swaploop: mov b,m ldax d mov m,a mov a,b stax d inx h inx d dcr c jnz swaploop pop psw ora a jz done dcr a push psw jmp swaploop done: pop b ret end toupper.asm ;Copyright (C) 1981,1982 by Manx Software Systems ; :ts=8 public toupper_ toupper_: lxi h,2 dad sp mov a,m cpi 'a' jc skip cpi 'z'+1 jnc skip sui 'a'-'A' skip: mov l,a mvi h,0 ora a ret ; ; public tolower_ ; tolower_: lxi h,2 dad sp mov a,m cpi 'A' jc skip2 cpi 'Z'+1 jnc skip2 adi 'a'-'A' skip2: mov public .ulcmp .ulcmp: push b lxi d,lnprm+3 lxi h,lnsec+3 mvi b,4 cmploop: ldax d cmp m pswchk: jc p.lt.s jnz p.gt.s dcx h dcx d dcr b jnz cmploop ;return 0 if p == s xra a pop b ret ; public .lad ;add secondary to primary .lad: ;DE is used as primary address ;and HL is used as secondary address push b lxi d,lnprm lxi h,lnsec xra a ;clear carry mvi b,4 adloop: ldax d adc m stax d inx h inx d dcr b jnz adloop pop b ret ; public .lsb ;subtract secondary from primary .l setup mov a,c ora a push psw lxi d,lnsec call setup call dodivide lxi d,lntmp lxi h,lnprm mvi b,4 remsave: ldax d mov m,a inx d inx h dcr b jnz remsave pop psw pop b jm .lng ret ; public .lud .lud: ;unsigned long divide (primary = primary/secondary) push b call dodivide pop b ret ; public .lum .lum: ;long remainder (primary = primary%secondary) push b call dodivide lxi d,lntmp lxi h,lnprm mvi b,4 uremsave: ldax d mov m,a inx d inx h dcr b jnz uremsave pop b ret ; ;  lxi h,9 dad sp mov b,m ;BC=len dcx h mov c,m dcx h mov d,m ;DE=dst dcx h mov e,m dcx h mov a,m dcx h mov l,m ;HL=src mov h,a cmp d jc movedown jnz moveup mov a,l cmp e jc movedown jz done moveup: ;src > dst dad b xchg dad b xra a adi 3 ;test if z80 jpe uploop ;not z80 use loop to move data xchg dcx d dcx h db 237,184 ;lddr pop b ret ; uploop: ;HL=dst, DE=src dcx d dcx h ldax d mov m,a dcx b mov a,b ora c jnz uploop pop b ret ; movedown: ;src < dst or pop d ;get return address lxi h,lnprm+3 lhld lnprm+2 push h lhld lnprm push h xchg pchl ; public .lpop ;pop long into secondary accum .lpop: pop d ;get return address pop h ;bytes 0 and 1 shld lnsec pop h shld lnsec+2 xchg pchl ; public .lswap ;exchange primary and secondary .lswap: lhld lnsec xchg lhld lnprm shld lnsec xchg shld lnprm lhld lnsec+2 xchg lhld lnprm+2 shld lnsec+2 xchg shld lnprm+2 ret ; public .lng ;negate primary .lng: lxi h,lnprm negate: xra a mvi jnc lsnc inr l ;carry into high word lsnc: dcr a jnz lsloop shld lnprm+2 ;put back high word xchg shld lnprm ret ; public .lur ;unsigned right shift primary by secondary bits .lur: clc ;propogate 0 bit jmp rs_sub ; public .lrs ;right shift primary by secondary bits .lrs: lda lnprm+3 ral ;set carry to MSB rs_sub: push psw lda lnsec ani 03fH ;limit to 63 places jz rsdone mov d,a rslp1: lxi h,lnprm+3 mvi e,4 pop psw ;get correct carry setting push psw rslp2: mov a,m rar mov m l,a mvi h,0 ora a ret end lsubs.asm ; Copyright (C) 1982, 1983, 1984 by Manx Software Systems ; :ts=8 extrn lnprm,lntmp,lnsec ; public .llis ;load long immediate secondary .llis: pop d ;get return addr lxi h,4 ;size of long dad d push h ;put back correct return addr xchg ;fall through into .llds ; public .llds ;load long into secondary accum .llds: lxi d,lnsec jmp lload ; public .llip ;load long immediate primary .llip: pop d ;get return addr lxi h,4 ;size of long dad d push lsb: push b lxi d,lnprm lxi h,lnsec xra a ;clear carry mvi b,4 sbloop: ldax d sbb m stax d inx h inx d dcr b jnz sbloop pop b ret ; public .lan ;and primary with secondary .lan: push b lxi d,lnprm lxi h,lnsec mvi b,4 ndloop: ldax d ana m stax d inx h inx d dcr b jnz ndloop pop b ret ; public .lor ;or primary with secondary .lor: push b lxi d,lnprm lxi h,lnsec mvi b,4 orloop: ldax d ora m stax d inx h inx d dcr b jnz orloop pop b ret ; public .lxr ;exclusive or pdodivide: mvi b,4 lxi h,lntmp ;clear quotient buffer xra a quinit: mov m,a inx h dcr b jnz quinit mvi a,32 ;initialize loop counter divloop: push psw lxi h,lnprm mvi b,8 ora a ;clear carry shlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz shlp sbb a ani 1 mov c,a mvi b,4 lxi d,lntmp lxi h,lnsec ora a ;clear carry sublp: ldax d sbb m stax d inx d inx h dcr b jnz sublp mov a,c sbi 0 jnz zerobit onebit: lxi h,lnprm inr m pop psw dcr a jnz divl xra a adi 3 ;test if z80 jpe downloop ;not z80 use loop to move data db 237,176 ;ldir pop b ret ; downloop: mov a,m stax d inx d inx h dcx b mov a,b ora c jnz downloop done: pop b ret end swapmem.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 public swapmem_ ;swapmem(s1,s2,len) swapmem_: lxi h,7 dad sp push b mov b,m dcx h mov c,m ;BC = len dcx h mov d,m dcx h mov e,m ;DE = s2 dcx h mov a,m dcx h mov l,m mov h,a ;HL = s1 mov a,c ora a jnz bok dcr b bok: d,4 ngloop: mvi a,0 sbb m mov m,a inx h dcr d jnz ngloop ret ; public .ltst ;test if primary is zero .ltst: lxi h,lnprm mvi d,4 tstlp: mov a,m ora a jnz true inx h dcr d jnz tstlp jmp false ; public .lcmp ;compare primary and secondary ; ;return 0 if p == s p.lt.s: ;return < 0 if p < s xra a dcr a pop b ret ; p.gt.s: ; > 0 if p > s xra a inr a pop b ret ; .lcmp: push b lxi d,lnprm+3 lxi h,lnsec+3 mov a,m xri 80h mov c,a ldax d xri 80h cmp c mvi b,4 jmp pswchk ,a dcx h dcr e jnz rslp2 dcr d jnz rslp1 rsdone: pop psw ret ; ; setup: lxi h,3 dad d mov c,m mov a,c ora a rp xchg jmp negate ;force positive ; public .ldv .ldv: ;long divide (primary = primary/secondary) push b lxi d,lnprm call setup push b lxi d,lnsec call setup mov a,c pop b ;get primary sign xra c ;merge signs push psw ;save for return call dodivide pop psw pop b jm .lng ret ; public .lrm .lrm: ;long remainder (primary = primary%secondary) push b lxi d,lnprm cal+ oop ret ; zerobit: pop psw dcr a jz restore push psw lxi h,lnprm mvi b,8 ora a ;clear carry zshlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz zshlp sbb a mov c,a mvi b,4 lxi d,lntmp lxi h,lnsec ora a ;clear carry daddlp: ldax d adc m stax d inx d inx h dcr b jnz daddlp mov a,c aci 0 jnz zerobit jmp onebit ; restore: ;fix up remainder if still negative mvi b,4 lxi d,lntmp lxi h,lnsec ora a ;clear carry resloop: ldax d adc m stax d inx d inxos cma mov h,a mov a,l cma mov l,a inx h hlpos: mov a,d ora a jp .um cma mov d,a mov a,e cma mov e,a inx d ; fall through into .um ; .um: push b ;save for C mov c,l mov b,h lxi h,0 call div16 pop b mov a,l ;set flags for C ora h ret ; ; div16: divides (hl,de) by bc ; returns remainder in hl, quotient in de public div16 div16: mov a,c cma mov c,a mov a,b cma mov b,a inx b MVI A,16 ;iteration count divloop: DAD H ;shift hl left XCHG DAD H ;shift de left XCHG JNC no XCHG .gt: mov a,h xra d jm .gtdiff ; signs differ ; signs alike mov a,l sub e mov a,h sbb d mvi a,0 aci 0 mov l,a mvi h,0 ret .gtdiff: mov a,h rlc ani 1 mov l,a mvi h,0 ret ; public .ng .ng: MOV A,L CMA MOV L,A MOV A,H CMA MOV H,A INX H mov a,l ora h RET ; public .sb .sb: XCHG mov a,l sub e mov l,a mov a,h sbb d mov h,a ora l ret ; public .swt .swt: xchg pop h PUSH B MOV B,D MOV C,E MOV E,M INX H MOV D,M swt.1: DCX D MOV A,D ORA A JM swt.def INX H MOV A,Crue jmp false ; public .lue .lue: call .ulcmp jm true jz true jmp false ; public .luf .luf: call .ulcmp jm false jmp true ; public .lug .lug: call .ulcmp jm false jz false jmp true ; public .utox .utox: shld lnprm posconv: lxi h,0 shld lnprm+2 ret ; public .itox .itox: shld lnprm mov a,h ora a jp posconv lxi h,-1 shld lnprm+2 ret ; public .xtoi .xtoi: lhld lnprm ret end divide.asm ;Copyright (C) 1981,1982,1983 by Manx Software Systems ; :ts=8 extrn .ng public .dv,.ud .dv: NZ .arloop ora h ret ; end bitopr.asm ;Copyright (C) 1981,1982 by Manx Software Systems public .an .an: MOV A,H ANA D MOV H,A MOV A,L ANA E MOV L,A ora h RET ; public .cm .cm: MOV A,H CMA MOV H,A MOV A,L CMA MOV L,A ora h RET ; public .or .or: MOV A,H ORA D MOV H,A MOV A,L ORA E MOV L,A ora h RET ; public .xr .xr: MOV A,H XRA D MOV H,A MOV A,L XRA E MOV L,A ora h RET end support.asm ;Copyright (C) 1981,1982 by Manx Software Systems ; Copyright (C) 1981 Thomas Fenwick ;hassle of setting up temporary subroutines in ; RAM and calling them. ; ; The functions in the package are: ; ; char in(p) Returns contents of input port p. ; char p; ; ; out(p,c) Sends character c to output port p. ; char p, c; ; CSEG PUBLIC in_, out_ ;***************************************************************************** in_: LXI H, 2 ;Get port number from stack. DAD SP MOV H, M MVI L, 0dbh ;Form input instruction of temporary SHLD TMP ; subroutine and set it up in core.  h dcr b jnz resloop ret ; ; public .lml .lml: ;long multiply (primary = primary * secondary) push b ; lxi h,lnprm mvi b,4 lxi d,lntmp ;copy multiplier into work area msav: mov a,m stax d mvi m,0 inx h inx d dcr b jnz msav ; mvi a,32 ;initialize loop counter muloop: push psw lxi h,lnprm mvi b,8 ora a ;clear carry mshlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz mshlp jnc mnext mvi b,4 lxi d,lnprm lxi h,lnsec ora a ;clear carry maddlp: ldax d adccy INR L ;carry into high part nocy: dad b ;subtract divisor jc setbit push psw mov a,l sub c mov l,a mov a,h sbb b mov h,a pop psw DCR A ;count times thru JNZ divloop ret setbit: INR E ;set quotient bit DCR A ;count times thru JNZ divloop ret end shifts.asm ;Copyright (C) 1981,1982 by Manx Software Systems ; public .ml .ml: PUSH B MOV B,H MOV C,L LXI H,0 ;CLEAR RESULT MVI A,16 ;ITERATION COUNT .mlp: DAD H ;SHIFT LEFT XCHG ; NOW SHIFT DE LEFT DAD H XCHG JNC .msk DAD B  CMP M JZ swt.3 INX H swt.2: INX H INX H JMP swt.1 swt.3: INX H MOV A,B CMP M JNZ swt.2 swt.def: INX H MOV A,M INX H MOV H,M MOV L,A POP B PCHL ; public .ue,.uf .uf: ; uge XCHG .ue: mov a,l ; ule sub e mov a,h sbb d mvi a,0 cmc aci 0 mov l,a mvi h,0 ret ; public .ug,.ul .ul: ; ult XCHG .ug: mov a,l sub e mov a,h sbb d mvi a,0 aci 0 mov l,a mvi h,0 ret ; end port.asm ; ; Direct Port I/O Functions for AZTEC C II ; ; Copyright (c) 1982 William C. Colley III ; ; I grant Ma ; DE has dividend, HL has divisor mov a,d xra h ;check if signs differ push psw ;and remember call divsub ;use same routine as modulo xchg ;and swap results pop psw jm .ng ;negate result if signs of operands differ mov a,l ora h RET ; .ud: CALL .um ;use same routine as modulo XCHG ;and swap results mov a,l ora h RET ; public .rm,.um .rm: mov a,d push psw call divsub pop psw ora a jm .ng ;negate result if dividend was signed mov a,h ora l ret ; divsub: mov a,h ora a jp hlp :ts=8 public .nt .nt: MOV A,H ORA L jz .true jmp .false ; public .eq,.ne .eq: mov a,l sub e jnz .false mov a,h sub d jz .true .false: lxi h,0 xra a ret ; .ne: mov a,l sub e jnz .true mov a,h sub d jz .false .true: lxi h,1 mov a,l ora h RET ; public .le,.ge .ge: ; ge XCHG .le: mov a,h xra d jm .lediff ; signs differ ; signs alike mov a,l sub e mov a,h sbb d cmc mvi a,0 aci 0 mov l,a mvi h,0 ret .lediff: mov a,d rlc ani 1 mov l,a mvi h,0 ret ; public .lt,.gt .lt: LXI H, TMP + 2 ;Add return instruction to temporary MVI M, 0c9h ; subroutine in core. CALL TMP ;Call temporary subroutine. MOV L, A ;Return result. MVI H, 0 ORA H RET ;***************************************************************************** out_: LXI H, 4 ;Get data and port number from stack. DAD SP MOV A, M DCX H DCX H MOV H, M MVI L, 0d3h ;Form output instruction of temporary SHLD TMP ; subroutine and set it up in core. LXI H, TMP + 2 ;Add return instruction m stax d inx d inx h dcr b jnz maddlp ; mnext: pop psw dcr a jnz muloop pop b ret ; ; public .leq .leq: call .lcmp jz true false: lxi h,0 xra a ret ; public .lne .lne: call .lcmp jz false true: lxi h,1 xra a inr a ret ; public .llt .llt: call .lcmp jm true jmp false ; public .lle .lle: call .lcmp jm true jz true jmp false ; public .lge .lge: call .lcmp jm false jmp true ; public .lgt .lgt: call .lcmp jm false jz false jmp true ; public .lul .lul: call .ulcmp jm t.msk: DCR A ;COUNT TIMES THRU JNZ .mlp ;go thru 16 times POP B mov a,l ora h RET ; public .rs .rs: XCHG mov a,e ani 31 mov e,a jz setcc MOV A,H ORA H JP .arloop ; .sign: MOV A,H STC RAR MOV H,A MOV A,L RAR MOV L,A DCR E JNZ .sign ora h ret ; public .ls .ls: XCHG mov a,e ani 31 mov e,a jz setcc lslp: DAD H DCR E JNZ lslp setcc: mov a,l ora h ret ; public .ur .ur: XCHG mov a,e ani 31 mov e,a jz setcc .arloop: MOV A,H ORA A RAR MOV H,A MOV A,L RAR MOV L,A DCR E Jnx Software Systems permission to incorporate these functions ; into the AZTEC C library subject only to the condition that my copyright ; notice remain in the source code. WCC3. ; ; These functions allow AZTEC C II to get to the machine I/O ports. They ; are more complicated than might be expected as they can't use the Z-80's ; "IN A,(C)" and "OUT (C),A" instructions and still remain 8080-compatible. ; Self-modifying code is also out of the question as that kills ROMability. ; I therefore go through the ,  to temporary MVI M, 0c9h ; subroutine in core. JMP TMP ;Call temporary subroutine and return. ;***************************************************************************** DSEG TMP: DS 3 ;Space for temporary subroutine. ;***************************************************************************** END ;Form output instruction of temporary SHLD TMP ; subroutine and set it up in core. LXI H, TMP + 2 ;Add return instruction *fmt++ ) { if ( c == '%' ) { switch ( c = *fmt++ ) { case 'x': ps = hexconv(*args++, s+7); break; case 'u': ps = dconv(*args++, s+7); break; case 'd': if ( (int)*args < 0 ) { ps = dconv(-*args++, s+7); *--ps = '-'; } else ps = dconv(*args++, s+7); break; case 's': ps = *args++; break; case 'c': c = *args++; default: goto deflt; } while ( *ps ) (*putsub)(*ps++); } else deflt: (*putsub)(c); } } static charegister int c; top: if ((c = getc(ptr)) != EOF) { switch (c &= 127) { case 0x1a: --ptr->_bp; return EOF; case '\r': case 0: goto top; } } return c; } getc(ptr) register FILE *ptr; { register int j; if (ptr != curread) { readit: curread = 0; /* mark nobody as current read */ setusr(ptr->user); if ((j = RDNSCT - blkrd(&ptr->_fcb,readbuf,RDNSCT)) == 0) return -1; rstusr(); ptr->_fcb.f_record -= j; bufeof = readbuf + j*128; curread = ptr; } if (ptr->_bp >= bufeof)t') { *cp++ = 0; break; } } main(Argc,Argv); _exit(); } exit(code) { _exit(); } getchar() { register int c; if ((c = bdos(1)) == '\r') { bdos(2,'\n'); c = '\n'; } else if (c == 0x1a) c = -1; return c; } putchar(c) { if (c == '\n') bdos(2,'\r'); bdos(2,c); return c&255; } fprintf.c /* Copyright (C) 1981,1982 by Manx Software Systems */ /* Copyright (C) 1982 Thomas Fenwick */ #include "stdio.h" static FILE *Stream; fprintf(stream,fmt,args) FILE *stream; char *fmt; unsignele ( fp->_bp ) { if ( ++fp >= Cbuffs+MAXFILE ) { errno = ENFILE; return (NULL); } } if ((user = fcbinit(name,&fp->_fcb)) == -1) { errno = EINVAL; return NULL; } if (user == 255) user = getusr(); fp->user = user; setusr(user); if (*mode == 'r') { if (bdos(OPNFIL,&fp->_fcb) == 0xff) { errno = ENOENT; rstusr(); return NULL; } fp->_bp = readbuf; curread = 0; } else { if ( writfp ) return NULL; bdos(DELFIL, &fp->_fcb); if (bdos(MAKFIL,&fp->_fcb) == 0xff) { e@@r * dconv(n, s) register char *s; register unsigned n; { *s = 0; do { *--s = n%10 + '0'; } while ( (n /= 10) != 0 ); return s; } static char * hexconv(n, s) register char *s; register unsigned n; { *s = 0; do { *--s = "0123456789abcdef" [n&15]; } while ( (n >>= 4) != 0 ); return s; } fopen.c /* Copyright (C) 1981, 1982 by Manx Software Systems */ /* Copyright (C) 1983, 1984 by Manx Software Systems */ #include "stdio.h" #include "errno.h" #define MAXFILE 4 #define RBUFSIZ 1024 #define WBUFSIZ { ptr->_fcb.f_record += (bufeof-readbuf) >> 7; ptr->_bp = readbuf; goto readit; } return *ptr->_bp++ & 255; } aputc(c,ptr) register int c; register FILE *ptr; { c &= 127; if (c == '\n') if (putc('\r',ptr) == EOF) return EOF; return putc(c,ptr); } putc(c,ptr) int c; register FILE *ptr; { *ptr->_bp++ = c; if (ptr->_bp >= writbuf+WBUFSIZ) { if (flush(WBUFSIZ)) return EOF; ptr->_bp = writbuf; } return (c&255); } flush(len) register int len; { while (len & 127) writbuf[len++] = d args; { int fpsub(); Stream = stream; return format(fpsub,fmt,&args); } static fpsub(c) { return aputc(c,Stream); } printf.c /* Copyright (C) 1981, 1982 by Manx Software Systems */ /* Copyright (C) 1983 by Manx Software Systems */ printf(fmt,args) char *fmt; unsigned args; { int putchar(); format(putchar,fmt,&args); } format(putsub, fmt, args) register int (*putsub)(); register char *fmt; unsigned *args; { register int c; char *ps; char s[8]; static char *dconv(), *hexconv(); while ( c =rrno = ENOENT; rstusr(); return NULL; } fp->_bp = writbuf; writfp = fp; } rstusr(); fp->_fcb.f_overfl = fp->_fcb.f_record = 0; return fp; } fclose(ptr) register FILE *ptr; { register int err; err = 0; if (ptr == writfp) { /* if writing flush buffer */ err = flush(ptr->_bp - writbuf); writfp = 0; } else if (ptr == curread) curread = 0; setusr(ptr->user); if (bdos(CLSFIL,&ptr->_fcb) == 0xff) err = -1; rstusr(); ptr->_bp = 0; return err; } agetc(ptr) register FILE *ptr; { @ croot.c /* Copyright (C) 1981, 1982 by Manx Software Systems */ /* Copyright (C) 1983 by Manx Software Systems */ #define MAXARGS 30 static char *Argv[MAXARGS]; static char Argbuf[128]; static int Argc; Croot() { register char *cp; movmem((char *)0x81, Argbuf, 127); Argbuf[*(char *)0x80 & 0x7f] = 0; Argv[0] = ""; cp = Argbuf; Argc = 1; while (Argc < MAXARGS) { while (*cp == ' ' || *cp == '\t') ++cp; if (*cp == 0) break; Argv[Argc++] = cp; while (*++cp) if (*cp == ' ' || *cp == '\ 1024 #define RDNSCT (RBUFSIZ/128) #define WRNSCT (WBUFSIZ/128) #define OPNFIL 15 #define CLSFIL 16 #define DELFIL 19 #define READSQ 20 #define WRITSQ 21 #define MAKFIL 22 #define SETDMA 26 #define READRN 33 #define WRITRN 34 #define FILSIZ 35 #define SETREC 36 static FILE Cbuffs[MAXFILE]; static char writbuf[WBUFSIZ]; static char readbuf[RBUFSIZ]; static char *bufeof; static FILE *curread; static FILE *writfp; FILE * fopen(name,mode) char *name,*mode; { register FILE *fp; int user; fp = Cbuffs; whi0x1a; setusr(writfp->user); if (len != 0 && blkwr(&writfp->_fcb,writbuf,len>>7) != 0) { rstusr(); return EOF; } rstusr(); return 0; } ,ptr); } putc(c,ptr) int c; register FILE *ptr; { *ptr->_bp++ = c; if (ptr->_bp >= writbuf+WBUFSIZ) { if (flush(WBUFSIZ)) return EOF; ptr->_bp = writbuf; } return (c&255); } flush(len) register int len; { while (len & 127) writbuf[len++] = - @ { g = f*f; r = (((((((R8*g R7)*g R6)*g R5)*g R4)*g R3)*g R2)*g R1)*g; f += f*r; } if (sgn) f = -f; return f; } tan.c #include "math.h" #include "errno.h" extern int errno; static double tansub(); double cotan(x) double x; { double y; y = fabs(x); if (y < 1.91e-152) { errno = ERANGE; if (x < 0.0) return -HUGE; else return HUGE; } return tansub(x,y,2); } double tan(x) double x; { return tansub(x, fabs(x), 0); } #define P1 -0.13338350006421960681e+0 #define P2 +0.34248; y = -(y+y); } else g = y*y; r = y + y* ((P(g)*g) /Q(g)); } if (flg) { if (x < 0.0) r = (b[i] + r) + b[i]; else r = (a[i] - r) + a[i]; } else { r = (a[i] + r) + a[i]; if (x < 0.0) r = -r; } return r; } atan.c #include "libc.h" #include "math.h" #include "errno.h" static int nopper() {;} #define PI 3.14159265358979323846 #define PIov2 1.57079632679489661923 double atan2(v,u) double u,v; { double f; int (*save)(); extern int flterr; extern int errno; if (u = sin.c #include "math.h" #include "errno.h" double cos(x) double x; { double sincos(); return sincos(x, fabs(x) + 1.57079632679489661923, 0); } double sin(x) double x; { double sincos(); if (x < 0.0) return sincos(x,-x,1); else return sincos(x,x,0); } #define R1 -0.16666666666666665052e+00 #define R2 +0.83333333333331650314e-02 #define R3 -0.19841269841201840457e-03 #define R4 +0.27557319210152756119e-05 #define R5 -0.25052106798274584544e-07 #define R6 +0.16058936490371589114e-09 #define R7 de "errno.h" double arcsine(); double asin(x) double x; { return arcsine(x,0); } double acos(x) double x; { return arcsine(x,1); } #define P1 -0.27368494524164255994e+2 #define P2 +0.57208227877891731407e+2 #define P3 -0.39688862997504877339e+2 #define P4 +0.10152522233806463645e+2 #define P5 -0.69674573447350646411 #define Q0 -0.16421096714498560795e+3 #define Q1 +0.41714430248260412556e+3 #define Q2 -0.38186303361750149284e+3 #define Q3 +0.15095270841030604719e+3 #define Q4 -0.23823859153670238830e+19243112270647) { f = (((0.73205080756887729353*f - 0.5) - 0.5) + f) / (1.73205080756887729353 + f); ++n; } if (fabs(f) < 2.3e-10) r = f; else { g = f*f; r = f + f * ((P(g)*g) /Q(g)); } if (n > 1) r = -r; r += Avals[n]; if (x < 0.0) r = -r; return r; } sinh.c #include "math.h" #include "errno.h" extern int errno; #define P0 -0.35181283430177117881e+6 #define P1 -0.11563521196851768270e+5 #define P2 -0.16375798202630751372e+3 #define P3 -0.78966127417357099479e+0 #define Q0@878235890589960e-2 #define P3 -0.17861707342254426711e-4 #define Q0 +1.0 #define Q1 -0.46671683339755294240e+0 #define Q2 +0.25663832289440112864e-1 #define Q3 -0.31181531907010027307e-3 #define Q4 +0.49819433993786512270e-6 #define P(f,g) (((P3*g P2)*g P1)*g*f + f) #define Q(g) ((((Q4*g Q3)*g Q2)*g Q1)*g Q0) #define YMAX 6.74652e09 static double tansub(x, y, flag) double x,y; { double f, g, xn; double xnum, xden; if (y > YMAX) { errno = ERANGE; return 0.0; } if (modf(x*0.63661977236758134308,= 0.0) { if (v == 0.0) { errno = EDOM; return 0.0; } return PIov2; } save = Sysvec[FLT_FAULT]; Sysvec[FLT_FAULT] = nopper; flterr = 0; f = v/u; Sysvec[FLT_FAULT] = save; if (flterr == 2) /* overflow */ f = PIov2; else { if (flterr == 1) /* underflow */ f = 0.0; else f = atan(fabs(f)); if (u < 0.0) f = PI - f; } if (v < 0.0) f = -f; return f; } #define P0 -0.13688768894191926929e+2 #define P1 -0.20505855195861651981e+2 #define P2 -0.84946240351320683534e+1 #define -0.76429178068910467734e-12 #define R8 +0.27204790957888846175e-14 #define YMAX 6.7465e09 static double sincos(x,y,sgn) double x,y; { double f, xn, r, g; extern int errno; if (y >= YMAX) { errno = ERANGE; return 0.0; } if (modf(y * 0.31830988618379067154, &xn) >= 0.5) ++xn; if ((int)xn & 1) sgn = !sgn; if (fabs(x) != y) xn -= 0.5; g = modf(fabs(x), &x); /* break into fraction and integer parts */ f = ((x - xn*3.1416015625) + g) + xn*8.9089102067615373566e-6; if (fabs(f) > 2.3283e-10)2 #define P(g) ((((P5*g P4)*g P3)*g P2)*g P1) #define Q(g) (((((g Q4)*g Q3)*g Q2)*g Q1)*g Q0) double arcsine(x,flg) double x; { double y, g, r; register int i; extern int errno; static double a[2] = { 0.0, 0.78539816339744830962 }; static double b[2] = { 1.57079632679489661923, 0.78539816339744830962 }; y = fabs(x); i = flg; if (y < 2.3e-10) r = y; else { if (y > 0.5) { i = 1-i; if (y > 1.0) { errno = EDOM; return 0.0; } g = (0.5-y)+0.5; g = ldexp(g,-1); y = sqrt(g) -0.21108770058106271242e+7 #define Q1 +0.36162723109421836460e+5 #define Q2 -0.27773523119650701667e+3 #define PS(x) (((P3*x P2)*x P1)*x P0) #define QS(x) (((x Q2)*x Q1)*x Q0) double sinh(x) double x; { double y, w, z; int sign; y = x; sign = 0; if (x < 0.0) { y = -x; sign = 1; } if (y > 1.0) { w = y - 0.6931610107421875000; if (w > 349.3) { errno = ERANGE; z = HUGE; } else { z = exp(w); if (w < 19.95) z -= 0.24999308500451499336 / z; z += 0.13830277879601902638e-4 *@ &xn) >= 0.5) xn += (x < 0.0) ? -1.0 : 1.0; f = (x - xn*1.57080078125) + xn*4.454455103380768678308e-6; if (fabs(f) < 2.33e-10) { xnum = f; xden = 1.0; } else { g = f*f; xnum = P(f,g); xden = Q(g); } flag |= ((int)xn & 1); switch (flag) { case 1: /* A: tan, xn odd */ xnum = -xnum; case 2: /* B: cotan, xn even */ return xden/xnum; case 3: /* C: cotan, xn odd */ xnum = -xnum; case 0: /* D: tan, xn even */ return xnum/xden; } return 0.0; } asin.c #include "math.h" #incluP3 -0.83758299368150059274e+0 #define Q0 +0.41066306682575781263e+2 #define Q1 +0.86157349597130242515e+2 #define Q2 +0.59578436142597344465e+2 #define Q3 +0.15024001160028576121e+2 #define P(g) (((P3*g P2)*g P1)*g P0) #define Q(g) ((((g Q3)*g Q2)*g Q1)*g Q0) double atan(x) double x; { double f, r, g; int n; static double Avals[4] = { 0.0, 0.52359877559829887308, 1.57079632679489661923, 1.04719755119659774615 }; n = 0; f = fabs(x); if (f > 1.0) { f = 1.0/f; n = 2; } if (f > 0.267949.  z; } if (sign) z = -z; } else if (y < 2.3e-10) z = x; else { z = x*x; z = x + x * (z*(PS(z) /QS(z))); } return z; } double cosh(x) double x; { double y, w, z; y = fabs(x); if (y > 1.0) { w = y - 0.6931610107421875000; if (w > 349.3) { errno = ERANGE; return HUGE; } z = exp(w); if (w < 19.95) z += 0.24999308500451499336 / z; z += 0.13830277879601902638e-4 * z; } else { z = exp(y); z = z*0.5 + 0.5/z; } return z; } tanh.c #include "math.h" #define P f = frexp(x, &n); if (f > C0) { znum = (f-0.5)-0.5; zden = f*0.5 + 0.5; } else { --n; znum = f - 0.5; zden = znum*0.5 + 0.5; } z = znum/zden; w = z*z; /* the lines below are split up to allow expansion of A(w) and B(w) */ Rz = z + z * (w * A(w) /B(w)); xn = n; return (xn*C2 + Rz) + xn*C1; } random.c /* * Random number generator - * adapted from the FORTRAN version * in "Software Manual for the Elementary Functions" * by W.J. Cody, Jr and William Waite. */ double ran() { stc notdigit cpi '9'+1 jnc notdigit push psw call .dml10 call .dswap pop psw sui '0' mov l,a mvi h,0 call .utod call .dad lda dpflg ora a jz skpsign lhld dexp dcx h shld dexp jmp skpsign notdigit: cpi '.' jnz nomore lxi h,dpflg mvi m,1 ;set dec. pt. seen jmp skpsign ; nomore: lxi h,0 ;clear exponent ori 20H ;force to lower case cpi 'e' jnz scaleit inx b ldax b cpi '-' jnz exppos sta esign ;set exponent negative jmp nxtchr exppos: cpi '+' jnz getexp nxtchr: inx b getexp:rt(x) double x; { double f, y; int n; extern int errno; if (x == 0.0) return x; if (x < 0.0) { errno = EDOM; return 0.0; } f = frexp(x, &n); y = 0.41731 + 0.59016 * f; y = (y + f/y); y = 0.25*y + f/y; /* fast calculation of y2 */ y = 0.5 * (y + f/y); y = y + 0.5 * (f/y - y); if (n&1) { y *= 0.70710678118654752440; ++n; } return ldexp(y,n/2); } log.c #include "math.h" #include "errno.h" double log10(x) double x; { return log(x)*0.43429448190325182765; } #define A0 -0.64124943oor.c #include "math.h" double floor(d) double d; { if (d < 0.0) return -ceil(-d); modf(d, &d); return d; } double ceil(d) double d; { if (d < 0.0) return -floor(-d); if (modf(d, &d) > 0.0) ++d; return d; } atof.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 extrn .dml10, .utod, .dswap, .dad extrn .dlis, .ddv, .dng dseg msign: ds 1 esign: ds 1 dpflg: ds 1 dexp: ds 2 cseg public atof_ atof_: push b xra a sta msign ;clear mantissa sign sta esign ;clear exponent sign sta dll .ddv ;move into range jmp dosign ; movup: ;positive exponent scale number up jnz rngerr mov a,l ;get loop count ora a jz dosign mov c,a sclp2: call .dml10 dcr c jnz sclp2 ; dosign: lda msign ;check sign of number ora a jz return call .dng ;negate accumulator return: pop b ret ; rngerr: pop b ret end ftoa.asm ; Copyright (C) 1982, 1983 by Manx Software Systems ; :ts=8 extrn .dldp, .dlds, .utod, .dlis, .dswap, .dtst extrn .dng, .dlt, .dge, .dad, .ddv, .dml10 extrn flprm dseg c0 -0.16134119023996228053e+4 #define P1 -0.99225929672236083313e+2 #define P2 -0.96437492777225469787e+0 #define Q0 +0.48402357071988688686e+4 #define Q1 +0.22337720718962312926e+4 #define Q2 +0.11274474380534949335e+3 #define gP(g) (((P2*g P1)*g P0)*g) #define Q(g) (((g Q2)*g Q1)*g Q0) double tanh(x) double x; { double f,g,r; f = fabs(x); if (f > 25.3) r = 1.0; else if (f > 0.54930614433405484570) { r = 0.5 - 1.0/(exp(f+f)+1.0); r += r; } else if (f < 2.3e-10) r = f; else { g = f*f; ratic long int iy = 100001; iy *= 125; iy -= (iy/2796203) * 2796203; return (double) iy/ 2796203.0; } double randl(x) double x; { double exp(); return exp(x*ran()); } exp.c #include "math.h" #include "errno.h" #define P0 0.249999999999999993e+0 #define P1 0.694360001511792852e-2 #define P2 0.165203300268279130e-4 #define Q0 0.500000000000000000e+0 #define Q1 0.555538666969001188e-1 #define Q2 0.495862884905441294e-3 #define P(z) ((P2*z + P1)*z + P0) #define Q(z) ((Q2*z + Q1)*z + Q0) #define EPS  ldax b cpi '0' jc expdone cpi '9'+1 jnc expdone sui '0' dad h ; exp *= 2 mov d,h mov e,l dad h ;exp *= 4 dad h ;exp *= 8 dad d ;exp *= 10 mov e,a mvi d,0 dad d ;exp = exp*10 + char - '0' jmp nxtchr ; expdone: lda esign ;check sign of exponent ora a jz addexp mov a,h ;negate if sign was minus cma mov h,a mov a,l cma mov l,a inx h addexp: xchg lhld dexp ;get digit count dad d ;add in exponent value shld dexp ;save for scaling later ; scaleit: ;scale number to correct value423745581147e+2 #define A1 +0.16383943563021534222e+2 #define A2 -0.78956112887491257267e+0 #define A(w) ((A2*w A1)*w A0) #define B0 -0.76949932108494879777e+3 #define B1 +0.31203222091924532844e+3 #define B2 -0.35667977739034646171e+2 #define B(w) (((w B2)*w B1)*w B0) #define C0 0.70710678118654752440 #define C1 0.693359375 #define C2 -2.121944400546905827679e-4 double log(x) double x; { double Rz, f, z, w, znum, zden, xn; int n; extern int errno; if (x <= 0.0) { errno = EDOM; return -HUGE; }pflg ;have not seen decimal point yet lxi h,0 shld dexp ;clear exponent to zero call .utod ;clear floating point accumulator ; lxi h,4 dad sp mov c,m ;get address of string to convert inx h mov b,m skipbl: ldax b cpi ' ' jz blank cpi 9 jnz notblank blank: inx b jmp skipbl notblank: cpi '-' jnz notneg ;not minus sign sta msign ;set negative for later jmp skpsign notneg: cpi '+' ;check for plus sign jnz getnumb skpsign: inx b ;skip over sign character getnumb: ldax b cpi '0' jhrptr: ds 2 maxdig: ds 1 ndig: ds 2 exp: ds 2 count: ds 1 fflag: ds 1 cseg rounding: ; 0.5, DB 040H,080H,00H,00H,00H,00H,00H,00H ; 0.05, DB 040H,0CH,0CCH,0CCH,0CCH,0CCH,0CCH,0CDH ; 0.005, DB 040H,01H,047H,0AEH,014H,07AH,0E1H,048H ; 0.0005, DB 03FH,020H,0C4H,09BH,0A5H,0E3H,054H,00H ; 0.00005, DB 03FH,03H,046H,0DCH,05DH,063H,088H,066H ; 0.000005, DB 03EH,053H,0E2H,0D6H,023H,08DH,0A3H,0CDH ; 0.0000005, DB 03EH,08H,063H,07BH,0D0H,05AH,0F6H,0C8H ; 0.00000005, DB 03DH,0D6H,0BFH,094H,0D5H,0E5H,07AH,066H ; = f + f* (gP(g) /Q(g)); } if (x < 0.0) r = -r; return r; } pow.c #include "math.h" #include "errno.h" double pow(a,b) double a,b; { double loga; extern int errno; if (a<=0.0) { if (a<0.0 || a==0.0 && b<=0.0) { errno = EDOM; return -HUGE; } else return 0.0; } loga = log(a); loga *= b; if (loga > LOGHUGE) { errno = ERANGE; return HUGE; } if (loga < LOGTINY) { errno = ERANGE; return 0.0; } return exp(loga); } sqrt.c #include "math.h" #include "errno.h" double sq2.710505e-20 double exp(x) double x; { int n; double xn, g, r, z; extern int errno; if (x > LOGHUGE) { errno = ERANGE; return HUGE; } if (x < LOGTINY) { errno = ERANGE; return 0.0; } if (fabs(x) < EPS) return 1.0; z = modf(x * 1.4426950408889634074, &xn); if (z >= 0.5) ++xn; n = xn; z = modf(x, &x); /* break x up into fraction and integer part */ g = ((x - xn*0.693359375) + z) + xn*2.1219444005469058277e-4; z = g*g; r = P(z)*g; r = 0.5 + r/(Q(z)-r); return ldexp(r,n+1); } fl lhld dexp mov a,h ora a jp movup ;negative exponent cpi 0ffH ;test if exponent too large jnz rngerr mov a,l cma inr a mov c,a ;save for loop later cpi 166 jnc rngerr cpi 150 jc sizeok call .dlis ;divide by 1e16 since smallest will overflow db 47H,23H,86H,0f2H,6fH,0c1H,0,0 call .ddv mov a,c ;get exponent value back sui 16 mov c,a sizeok: call .dswap lxi h,1 call .utod sclp1: call .dml10 ;compute number to divide by dcr c jnz sclp1 call .dswap ;get everybody back in place ca/  0.000000005, DB 03DH,015H,079H,08EH,0E2H,030H,08CH,03DH ; 0.0000000005, DB 03DH,02H,025H,0C1H,07DH,04H,0DAH,0D3H ; 0.00000000005, DB 03CH,036H,0F9H,0BFH,0B3H,0AFH,07BH,080H ; 0.000000000005, DB 03CH,05H,07FH,05FH,0F8H,05EH,059H,026H ; 0.0000000000005, DB 03BH,08CH,0BCH,0CCH,09H,06FH,050H,09AH ; 0.00000000000005, DB 03BH,0EH,012H,0E1H,034H,024H,0BBH,043H ; 0.000000000000005, DB 03BH,01H,068H,049H,0B8H,06AH,012H,0BAH ; ; public ftoa_ ftoa_: push b lxi h,12 dad sp mov e,m inx h mov d,m xchg shxi h,1 call .utod ;and repair if necessary inx b lda fflag ora a jz rndok lhld ndig inx h shld ndig rndok: mov h,b mov l,c shld exp lda fflag ora a jz unpack mov a,b ora a mov a,c ;move for unpack jp unpack ; F format and negative exponent ; put out leading zeros lhld chrptr mvi m,'0' inx h mvi m,'.' inx h lda ndig+1 ora a jm under mov a,c cma jmp L2 under: lda maxdig L2: ora a jz zdone zdiglp: mvi m,'0' inx h dcr a jnz zdiglp zdone: shld chrptr mvi a,0ffH ;maronents mov a,h ora a ;check sign of exponent jp posexp cma ;make positive for div and modulo below mov h,a mov a,l cma mov l,a inx h mov a,l ani 7 mov c,a ;save amount to shift call rsexp ;make power of 256 mov a,l cma inr a ;fix sign back mov l,a jmp ldrs posexp: ora l ;check if zero jz popret ;no adjustment needed mov c,l ;save to compute left shift call rsexp ;make power of 256 mov a,c ani 7 jz ldrsx inr l ;bump exponent to make right shift cma adi 9 ;compensate fo jmp qcklp sml.lp: lhld flprm inx h mov a,m cpi 1 jp numbok toosml: call .dml10 ;multiply by ten till 1 <= number < 10 dcx b ;count for exponent jmp sml.lp ; numbok: lda fflag ;check conversion format ora a jz eformat cpi 1 jz fformat lda maxdig ;if %g then precision is # sig. digits mov l,a mvi h,0 shld ndig mov a,b ;select %f if maxdig > exp > -4, else use %e ora a jm chkm4 mov a,c cmp l jnc eformat mvi a,1 ;exp < maxdig, so use %f jmp setformat ; chkm4: mov a,c cpi -4 t100: mvi b,0 tens: cpi 10 jc lt10 inr b sui 10 jmp tens lt10: adi '0' ;ascii of last digit mov e,a ;save last digit mvi a,'0' add b ;compute second digit mov m,a inx h mov m,e inx h shld chrptr ; alldone: lhld chrptr mvi m,0 pop b ret ; inverse: call .dswap lxi h,1 call .utod jmp .ddv ;implied return ; end frexp.asm ; Copyright (C) 1982, 1983, 1984 by Manx Software Systems ; :ts=8 extrn flprm extrn .dldp, .utod public frexp_, ldexp_, modf_ ; frexp_: ;return mantissa and exof end of fraction lsloop: dcx h mov a,m ral mov m,a dcr e jnz lsloop jmp lshft ; modf_: ;split into integral and fraction parts push b lxi h,12 ;pick up address to store integral part dad sp mov c,m inx h mov b,m mov l,c mov h,b mvi e,8 ;clear out integer xra a mdclr: mov m,a inx h dcr e jnz mdclr ; lxi h,4 dad sp call .dldp lhld flprm inx h mov a,m ora a jm popret jz popret adi 64 ani 7fH mov e,a dcx h mov a,m ;get sign of number ani 80H ;isolate ora e ;combine ld chrptr ;buffer for converted data lxi h,16 dad sp mov a,m sta fflag ;e/f/g format flag ; lxi h,4 dad sp call .dldp ;fetch number to convert lxi h,14 dad sp mov a,m ;fetch precision sta maxdig inr a mov l,a mvi h,0 shld ndig ; lhld flprm mov a,m ora a jp notneg call .dng lhld chrptr mvi m,'-' inx h shld chrptr notneg: lxi b,0 ;clear integer exponent call .dtst jz numbok call .dlis db 041H,0aH,0,0,0,0,0,0 adjust: lhld flprm inx h mov a,m cpi 1 jm toosml jz tentest ck decpt already output ; unpack: ;when we get here A has the position for the ;decimal point mov c,a ;save decimal point position lxi h,ndig+1 ;check if ndigits is <= zero mov a,m ora a jm unpdone ;if so just quit now dcx h ora m jz unpdone ;if so just quit now lhld flprm lxi d,10 dad d mvi m,0 ;zap guard bytes inx h mvi m,0 mvi b,0 unplp: mov a,b cpi 15 mvi a,'0' jnc zerodigit lhld flprm inx h ;skip sign byte mov a,m cpi 1 mvi a,'0' jnz zerodigit inx h ;skip exponent r +1 (c = -(x-8)) ldrsx: mov c,a ;save for loop below ldrs: xchg lhld flprm inx h mov m,e ;save exponent rsloop: dcr c jm popret lhld flprm inx h inx h mvi b,7 ora a ;clear carry rslp: inx h mov a,m rar mov m,a dcr b jnz rslp jmp rsloop ; rsexp: ora a mvi b,3 rselp: mov a,h rar mov h,a mov a,l rar mov l,a dcr b jnz rselp ret ; calcexp: call .dldp ;load into floating accumulator lhld flprm inx h mov a,m ;get exponent value cpi -64 rz mvi m,0 ;make exponent zero for  jc eformat ;exp < -4, so use %e fformat: lhld ndig dad b shld ndig mvi a,1 jmp setformat eformat: xra a setformat: sta fflag ; now round number according to the number of digits lhld ndig dcx h mov a,h ora a jp L1 lxi h,0 jmp L5 L1: jnz toomany mov a,l cpi 14 jc L5 toomany: lxi h,14 L5: dad h ;*2 dad h ;*4 dad h ;*8 lxi d,rounding dad d call .dlds call .dad ;add in rounding counstant ; call .dlis db 041H,0aH,0,0,0,0,0,0 call .dge ;check for rounding overflow jz rndok lponent push b lxi h,4 dad sp call calcexp ;calculate power of two exponent jnz retexp lxi b,0 retexp: lxi h,12 ;address second argument dad sp mov e,m inx h mov d,m xchg mov m,c ;return base 2 exponent inx h mov m,b popret: pop b ret ; ldexp_: ;load new exponent value (actualy add to exponent) push b lxi h,4 dad sp call calcexp jz popret ;do nothing if number is zero or unnormalized lxi h,12 ;fetch number to add to exponent dad sp mov e,m inx h mov d,m xchg dad b ;add expwith exponent stax b ;store away inx b inx h mov a,m ;refetch exponent inx h ;skip over exponent inx h ;skip over overflow byte cpi 7 jc expok ;limit move loop to 7 bytes mvi a,7 expok: mov e,a ;save count for loop cma adi 8 ; 7 - loop count mov d,a ;save # bytes in fraction intmov: ;copy integer part into given area mov a,m stax b inx h inx b dcr e jnz intmov ; fnorm: ;note: E is zero at start of this loop dcr d jm zfrac ;fraction is zero mov a,m ;look for non-zero byte pi 2 jnz bignum inx h inx h mov a,m cpi 27H ;number < 10000, just do divides jc quick bignum: call inverse call .dlis db 40H,19H,99H,99H,99H,99H,99H,9aH bignlp: call .dml10 inx b call .dlt jnz bignlp call inverse lhld flprm inx h inx h inx h mov a,m cpi 10 jc numbok dcx b call .dml10 jmp numbok qcklp: lhld flprm inx h mov a,m cpi 1 jnz quick tentest: inx h inx h mov a,m cpi 10 jc numbok quick: call .ddv ;divide by ten till 1 <= number < 10 inx b ;count for exponent inx h ;skip overflow add m mvi m,0 ;subtract integer portion (virtual) zerodigit: lhld chrptr mov m,a inx h shld chrptr lxi h,ndig dcr m jz unpdone mov a,b cmp c jnz mul10 lhld chrptr mvi m,'.' inx h shld chrptr mul10: call .dml10 ;multiply by 10 and re-normalize inr b jmp unplp ; unpdone: lda fflag ora a jnz alldone ; lhld chrptr mvi m,'e' inx h mvi m,'+' lda exp+1 ora a lda exp jp posexp mvi m,'-' cma inr a posexp: inx h cpi 100 jc lt100 mvi m,'1' inx h sui 100 lreturn mov l,a ;get low byte of exponent rlc ;sign extend value sbb a mov h,a ;save high byte of exponent dad h dad h dad h ; exp*8 to make power of two mov b,h ; bc = exponent mov c,l lhld flprm inx h inx h inx h ;hl = first byte of mantissa mov a,m ora a rz ;unnormalized number? give up lshft: mov a,m ani 80H ;test high bit of mantissa rnz ;mantissa >= 0.5 ? yes return ;otherwise, shift number to the left one place dcx b ;and adjust exponent lxi d,7 dad d ;address 0  inx h dcr e ;count for exponent of fraction ora a jz fnorm ; dcx h ;back up to good byte inr e ;fix exponent mov b,h ;save position in accumulator mov c,l lhld flprm inx h mov m,e ;store exponent inx h ;skip overflow byte mvi e,7 ;count of # that must be cleared frcmov: inx h ldax b mov m,a inx b dcr e dcr d jp frcmov xra a frcclr: ;clear out rest of register inx h mov m,a dcr e jnz frcclr pop b ret zfrac: ;fraction is zero lxi h,0 call .utod pop b ret fsubs.asm ;64 ;adjust from excess 64 notation mov m,a ;and save inx h mvi m,0 ;extra byte for carry mvi b,7 ;copy 7 byte fraction dloop: inx h inx d ldax d mov m,a dcr b jnz dloop inx h mvi m,0 ;clear guard byte pop b ret ; public .dst ;store double at addr in HL .dst: push b push h ;save address call dornd ;round fraction to 7 bytes pop d ;restore address lhld flprm mov a,m ;get sign ani 80H ;and isolate mov b,a ;save inx h mov a,m ;get exponent adi 64 ;put into excess 64 notldax d ora a jm dcneg ; primary is positive xra m ;check if signs the same jm p.gt.s ;differ then p > s jmp docomp dcneg: ;primary is negative xra m ;check if signs the same jm p.lt.s ;differ the p < s xchg ;both negative reverse sense of test docomp: inx h inx d ldax d cmp m ;compare exponents jm p.lt.s ;sign test ok since -64 < exp < 64 jnz p.gt.s mvi b,9 ;test overflow byte + 8 bytes of fraction cmploop: inx h inx d ldax d cmp m jc p.lt.s jnz p.gt.s dcr b jnz cmploop  in HL .fst: push b xchg lhld flprm mov a,m ;get sign ani 80H ;and isolate mov b,a ;save inx h mov a,m ;get exponent adi 64 ;put into excess 64 notation ani 7fH ;clear sign bit ora b ;merge exponent and sign stax d inx h ;skip overflow byte mvi b,3 ;copy 3 bytes of fraction fstlp: inx d inx h mov a,m stax d dcr b jnz fstlp pop b ret ; public .dlis ;load double immediate secondary .dlis: pop d ;get return addr lxi h,8 ;size of double dad d push h ;put back correct retuov a,e ani 7fH ;isolate exponent sui 64 ;adjust for excess 64 notation mov m,a inx h mvi m,0 ;extra byte for carry inx h mov m,d inx h pop d ;bytes 2 and 3 of fraction mov m,e inx h mov m,d inx h pop d ;bytes 4 and 5 of fraction mov m,e inx h mov m,d inx h pop d ;bytes 6 and 7 of fraction mov m,e inx h mov m,d inx h mvi m,0 ;clear guard byte lhld retsave pchl ; public .dswap ;exchange primary and secondary .dswap: lhld flsec xchg lhld flprm shld flsec xchg shld flprmop d lxi h,9 dad d shld VEE pop h xchg ;get prm in DE and scnd in HL ldax d ;sign of primary xra m ;check if signs same jp doadd ldax d ora a ;test which one is negative jm UfromV ;jump if primary is negative ;subtract V from U mvi b,7 lhld YU xchg lhld VEE sublpa: ;carry is already cleared ldax d sbb m stax d dcx d dcx h dcr b jnz sublpa brlpa: ldax d sbi 0 stax d dcx d dcr c jp brlpa xchg ;get destination into HL jmp subchk ;check for negative result ; UfromV:  Copyright (C) 1982, 1983, 1984 by Manx Software Systems ; :ts=8 extrn Sysvec_ extrn lnprm extrn puterr_ dseg public flprm,flsec flprm: dw acc1 flsec: dw acc2 public flterr_ flterr_: dw 0 retsave:ds 2 YU: ds 2 VEE: ds 2 expdiff:ds 1 acc1: ds 18 acc2: ds 18 ;work area for divide and multiply routines lcnt: ds 1 ;iterations left tmpa: ds 8 ;quotient tmpb: ds 8 ;remainder work area tmpc: ds 8 ;temp for divisor cseg public .flds ;load single float into secondary accum .flds: xchg lhld flsec jmp flation ani 7fH ;clear sign bit ora b ;merge exponent and sign stax d inx h ;skip overflow byte mvi b,7 ;copy 7 bytes of fraction dstlp: inx d inx h mov a,m stax d dcr b jnz dstlp pop b ret ; public .dpsh ;push double float onto the stack .dpsh: ;from the primary accumulator pop h ;get return address shld retsave ;and save for later call dornd lhld flprm lxi d,9 dad d mov d,m ;bytes 6 and 7 dcx h mov e,m dcx h push d mov d,m ;bytes 4 and 5 dcx h mov e,m dcx h push d  ;return 0 if p == s xra a pop b ret ; public .dsb ;subtract secondary from primary .dsb: lhld flsec mov a,m xri 80H ;flip sign of secondary mov m,a ;fall thru into add routine ; public .dad ;add secondary to primary .dad: ;DE is used as primary address ;and HL is used as secondary address push b ;clear extra bytes at end of accumulators lhld flprm lxi d,11 ;leave guard byte alone dad d mvi b,7 xra a clp1: mov m,a inx h dcr b jnz clp1 lhld flsec lxi d,11 ;leave guardrn addr xchg ;fall through into .dlds ; public .dlds ;load double float into secondary accum .dlds: xchg lhld flsec jmp dload ; public .dlip ;load double immediate primary .dlip: pop d ;get return addr lxi h,8 ;size of double dad d push h ;put back correct return addr xchg ;fall through into .dldp ; public .dldp ;load double float into primary accum .dldp: xchg lhld flprm dload: push b ldax d ;get first byte of number mov m,a ;save sign inx h ani 7fH ;isolate exponent sui  ret ; public .dng ;negate primary .dng: lhld flprm mov a,m xri 80H ;flip sign mov m,a ret ; public .dtst ;test if primary is zero .dtst: lhld flprm ; mov a,m ; ora a ; jnz true inx h mov a,m cpi -64 jnz true ; inx h ; inx h ; mov a,m ; ora a ; jnz true jmp false ; public .dcmp ;compare primary and secondary ; ;return 0 if p == s p.lt.s: ;return < 0 if p < s xra a dcr a pop b ret ; p.gt.s: ; > 0 if p > s xra a inr a pop b ret ; .dcmp: push b lhld flprm xchg lhld flsec  ;subtract U from V mvi b,7 lhld VEE xchg lhld YU sublpb: ;carry is already cleared ldax d sbb m mov m,a dcx d dcx h dcr b jnz sublpb brlpb: mvi a,0 sbb m mov m,a dcx h dcr c jp brlpb subchk: ;check for negative result inx h mov a,m ;check carry byte ora a ;test sign mvi a,1 jp makpos lxi d,15 dad d ;point to end of number neglp: mvi a,0 sbb m mov m,a dcx h dcr e jp neglp mvi a,81H ;make number negative makpos: lhld flprm mov m,a ;set sign of number jmp normalize ; oad ; public .fldp ;load single float into primary accum .fldp: xchg lhld flprm fload: push b ldax d ;get first byte of number mov m,a ;save sign inx h ani 7fH ;isolate exponent sui 64 ;adjust from excess 64 notation mov m,a ;and save inx h mvi m,0 ;extra byte for carry mvi b,3 ;copy 3 byte fraction ldloop: inx h inx d ldax d mov m,a dcr b jnz ldloop mvi b,5 ;clear rest to zeros xra a clloop: inx h mov m,a dcr b jnz clloop pop b ret ; public .fst ;store single at addrmov d,m ;bytes 2 and 3 dcx h mov e,m dcx h push d mov d,m ;byte 1 dcx h dcx h ;skip over carry byte mov a,m ;get exponent adi 64 ;and restore to excess 64 notation ani 7fH mov e,a dcx h mov a,m ani 80H ;isolate sign bit ora e ;combine exponent and sign mov e,a push d lhld retsave pchl ; public .dpop ;pop double float into secondary accum .dpop: pop h ;get return address shld retsave ;and save lhld flsec pop d ;exponent/sign and first fraction mov m,e ;save sign inx h m byte alone dad d mvi b,7 clp2: mov m,a inx h dcr b jnz clp2 lhld flprm xchg lhld flsec inx h inx d ldax d ;primary exponent sub m ;compute difference jp ordok xchg ;swap so primary is larger cma inr a ordok: dcx d dcx h shld flsec ;fix primary and secondary xchg shld flprm cpi 9 ;check for exp diff too large jnc normalize mov c,a ;save exponent difference push h push d adi 9 ;adjust for offset mov e,a mvi d,0 dad d ;adjust address for exponent difference shld YU p1 doadd: ;add V to U mvi b,7 lhld YU xchg lhld VEE addlp: ;carry is already cleared ldax d adc m stax d dcx d dcx h dcr b jnz addlp crylp: ldax d aci 0 stax d dcx d dcr c jp crylp jmp normalize ; public .ddv .ddv: ;double floating divide (primary = primary/secondary) push b lhld flprm xchg lhld flsec ldax d xra m ;compute sign of result stax d ;and store inx h inx d ldax d ;primary exponent sub m ;eu-ev mov c,a ;save exponent push d push h mov a,m cpi -64 jnz d.o normalize ; public .dml .dml: ;double floating multiply (primary = primary * secondary) push b lhld flprm xchg lhld flsec ldax d xra m ;compute sign of result stax d ;and store inx h inx d ldax d ;primary exponent cpi -64 jz zresult add m ;eu+ev stax d ;save exponent mov a,m ;check for mult by zero cpi -64 jz zresult push d ;save for later lxi d,9 dad d ;compute end address mvi b,8 lxi d,tmpc ;copy muliplicand into work area msav1: mov a,m stax d dcx h inx d dcr b jnke number odd mov a,m ori 1 mov m,a ret ; rndit: ; > 128 add one to fraction push b lxi b,0800H ;b = 8, and c = 0 stc ; make loop add 1 rndlp: dcx h mov a,m adc c mov m,a dcr b jnz rndlp ora a ;check for fraction overflow jnz normalize ;re-normalize number if so. pop b ret ;return if none ; normalize: lhld flprm ;get address of accum inx h mov a,m ;fetch exponent mov d,h ;save address for later mov e,l inx h mov c,a xra a cmp m ;check extra byte jnz movrgt ;non-zerob jnz divsav mvi b,8 lxi h,tmpa ;clear quotient buffer xra a quinit: mov m,a inx h dcr b jnz quinit mvi a,64 sta lcnt ;initialize loop counter divloop: lxi h,tmpa mvi b,16 ora a ;clear carry shlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz shlp sbb a ani 1 mov c,a mvi b,8 lxi d,tmpb lxi h,tmpc ora a ;clear carry sublp: ldax d sbb m stax d inx d inx h dcr b jnz sublp mov a,c sbi 0 jnz zerobit onebit: lxi h,tmpa inr m lxi h,lcnt dcr m jnz d; public .dle .dle: call .dcmp jm true jz true jmp false ; public .dge .dge: call .dcmp jm false jmp true ; public .dgt .dgt: call .dcmp jm false jz false jmp true ; public .utod .utod: push b mov a,h ora l jz zresult xchg mvi b,0 jmp posconv ; public .itod .itod: push b mov a,h ora l jz zresult xchg mvi b,0 mov a,d ora a jp posconv cma mov d,a mov a,e cma mov e,a inx d mvi b,80H posconv: lhld flprm mov m,b ;store sign inx h mov a,d ora a jnz longcvt mvi m,1 ;n accum mvi b,15 push d ;save for check at end lxi h,16 dad d ;end address for backwards move mov d,h mov e,l rmovlp: dcx d ldax d mov m,a dcx h dcr b jnz rmovlp mvi m,0 ;zap overflow byte back to zero pop d ;restore exponent addr jmp chkexp ; underflow: mvi a,1 sta flterr_ call userrtn ;check for user routine to handle errors xra a lhld flprm inx h ;leave sign alone mvi m,-63 ;set to smallest non-zero value inx h mov m,a inx h mvi m,1 mvi b,8 jmp zclr ;clear rest to zerk pop h pop h ;throw away mvi a,3 ;flag divide by zero error sta flterr_ jmp setbig ;set to biggest possible number d.ok: inx d inx h mvi b,8 cmloop: inx d inx h ldax d cmp m jnz differ dcr b jnz cmloop ;numbers are the same give 1 as the answer pop h ;throw away pop h ;get destination addr inr c ;adjust exponent mov m,c ;save exponent inx h mvi m,0 ;clear extra byte inx h mvi m,1 ;set result mvi b,8 xra a sta flterr_ jmp zclr ; differ: ;check carry to find out smaller nz msav1 pop h ;restore multiplier addr lxi d,9 dad d ;move backwards mvi b,8 lxi d,tmpb ;copy multiplier into work area msav2: mov a,m stax d dcx h inx d dcr b jnz msav2 mvi b,8 lxi h,tmpa ;clear buffer xra a clrmul: mov m,a inx h dcr b jnz clrmul mvi a,64 sta lcnt ;initialize loop counter muloop: lxi h,tmpa mvi b,16 ora a ;clear carry mshlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz mshlp jnc mnext mvi b,8 lxi d,tmpa lxi h,tmpc ora a ;clear ca move number right mvi b,8 ;search up to 8 bytes nloop: inx h cmp m jnz movleft dcr c ;adjust exponent dcr b ;count times thru jnz nloop ;zero answer zresult: xra a sta flterr_ under0: lhld flprm mvi b,10 mov m,a inx h mvi m,-64 ;so exponent will be zero after store zclr: inx h mov m,a dcr b jnz zclr pop b ret ; movleft: mvi a,8 sub b mov b,a jz chkexp ;no change in counter, no move needed dcx h ;back up to zero mov a,c stax d ;save new exponent push d ;save for roundivloop jmp divdone ; zerobit: lxi h,lcnt dcr m jz divdone lxi h,tmpa mvi b,16 ora a ;clear carry zshlp: mov a,m adc a ;shift one bit to the left mov m,a inx h dcr b jnz zshlp sbb a mov c,a mvi b,8 lxi d,tmpb lxi h,tmpc ora a ;clear carry daddlp: ldax d adc m stax d inx d inx h dcr b jnz daddlp mov a,c aci 0 jnz zerobit jmp onebit ; divdone: lhld flprm lxi d,12 dad d mvi m,0 dcx h mvi m,0 lxi d,tmpa mvi b,8 qusav: dcx h ldax d mov m,a inx d dcr b jnz qusav jmpset up exponent inx h mvi m,0 ;clear extra byte inx h mov m,e ;move number into accumulator mvi b,7 xra a jmp cnvlp ; longcvt: mvi m,2 ;setup exponent inx h mvi m,0 ;clear extra byte inx h mov m,d ;move number into accumulator inx h mov m,e mvi b,6 xra a cnvlp: inx h mov m,a dcr b jnz cnvlp jmp goodexit ; dornd: ; round the number in the primary accumulator lhld flprm lxi d,10 ;offset of guard byte dad d mov a,m cpi 128 rc ; < 128 do nothing jnz rndit dcx h ; == 128 mao ; overflow: mvi a,2 sta flterr_ setbig: call userrtn ;check for user routine to handle errors lhld flprm inx h ;leave sign alone mvi m,63 ;set exponent at max inx h mvi m,0 ;clear overflow byte mvi a,0ffH ;and set fraction to max mvi b,7 oclr: inx h mov m,a dcr b jnz oclr inx h mvi m,0 pop b ret ; userrtn: ;handle messages lhld Sysvec_ ;any routine supplied? mov a,h ora l jz myway xchg lxi h,4 dad sp mov c,m inx h mov b,m push b lhld flterr_ push h xchg call apchl umber pop d ;restore divisor address pop h ;restore dividend address mov m,c ;store exponent jc uok inr c ;bump exponent mov m,c dcx h ;and shift dividend right (logically) uok: push d ;save for later lxi d,9 dad d ;compute end address mvi b,8 lxi d,tmpb ;copy dividend into work area remsav: mov a,m stax d dcx h inx d dcr b jnz remsav pop h ;restore divisor addr lxi d,9 dad d ;move backwards mvi b,8 lxi d,tmpc ;copy divisor into work area divsav: mov a,m stax d dcx h inx d dcr rry maddlp: ldax d adc m stax d inx d inx h dcr b jnz maddlp ; mvi b,8 madclp: ldax d aci 0 stax d jnc mnext inx d dcr b jnz madclp ; mnext: lxi h,lcnt dcr m jnz muloop lhld flprm lxi d,12 dad d lxi d,tmpb-2 mvi b,10 msav: ldax d mov m,a inx d dcx h dcr b jnz msav jmp normalize ; ; public .deq .deq: call .dcmp jz true false: lxi h,0 xra a ret ; public .dne .dne: call .dcmp jz false true: lxi h,1 xra a inr a ret ; public .dlt .dlt: call .dcmp jm true jmp false ing inx d mvi a,15 sub b ;compute # of bytes to move mov c,a ;save for loop lmovlp: mov a,m stax d inx d inx h dcr c jnz lmovlp xra a lclrlp: stax d ;pad with zeros inx d dcr b jnz lclrlp pop d ;restore accum address ; chkexp: ;check for over/under flow ldax d ;get exponent ora a jm chkunder cpi 64 jc goodexit jmp overflow ; chkunder: cpi -63 jc underflow goodexit: mvi a,0 sta flterr_ pop b ret ; movrgt: ;fraction overflow inr c ;bump exponent mov a,c stax d ;save i2 pop h pop h ;clean up arguments ret apchl: pchl ; myway: call pmsg db 'Floating point ',0 lda flterr_ cpi 1 jnz notund call pmsg db 'underflow',0 jmp mycontinue notund: cpi 2 jnz notovr call pmsg db 'overflow',0 jmp mycontinue notovr: call pmsg db 'divide by zero',0 mycontinue: call pmsg db ' at location 0x',0 lxi h,5 dad sp mov a,m push h push psw call phex2 pop psw call phex pop h dcx h mov a,m push psw call phex2 pop psw call phex lxi h,10 ;newline push h call puterr_,l cma mov l,a inx h jmp goodexit ; toobig: mov a,c ora a jnz bigsigned lxi h,0ffffH ;return largest unsigned # jmp oflow ; bigsigned: mov a,b ora a jm negover lxi h,7fffH ;return largest positive # jmp oflow ; negover: lxi h,8000H ;return largest negative # oflow: mvi a,2 sta flterr_ pop b ret ; public fabs_ fabs_: lhld flprm mvi m,0 ;force to positive sign ret ; public .dml10 .dml10: push b lhld flprm inx h inr m ;adjust exponent lxi d,9 dad d xra a mvi b,8 ml10lp:  return 0; } if (read(fd, header.ovaddr, header.ovsize) < header.ovsize) return 0; close(fd); return header.ovbgn; } crbegin.asm ; Copyright (C) 1983 by Manx Software Systems ; :ts=8 public .ovbgn extrn main_ extrn _Uorg_, _Uend_ bss saveret,2 .ovbgn: lxi h,_Uorg_ lxi b,_Uend_-_Uorg_ mvi e,0 clrbss: mov m,e inx h dcx b mov a,c ora b jnz clrbss ; pop h shld saveret call main_ lhld saveret ;get return addr pchl ;return to caller end .ovbgn rext.asm extrn .begin extrn execv_ r too big jnc ltoobig ; mov b,a ;save byte count inx h ;skip overflow byte add l mov l,a jnc lxx inr h lxx: mov a,m stax d inx d dcx h dcr b jnz lxx ; mov a,c ;now check sign ora a jp goodexit mvi b,4 lxi h,lnprm d2xneg: mvi a,0 sbb m mov m,a inx h dcr b jnz d2xneg jmp goodexit ; ltoobig: xchg mov a,c ora a jm bigneg mvi m,07fH inx h mvi m,0ffH inx h mvi m,0ffH inx h mvi m,0ffH jmp oflow bigneg: mvi m,080H inx h mvi m,0 inx h mvi m,0 inx h mvi m,0 jmp oflow ;  r.c /* Copyright (C) 1984 by Manx Software Systems */ #include main(argc, argv) char **argv; { register int (*func)(); int (*prgload())(); if (argc < 2) { fprintf(stderr, "usage: r progname args ...\n"); exit(4); } ++argv; if ((func = prgload(*argv)) == 0) { fprintf(stderr, "Cannot load program\n"); exit(4); } (*func)(argc-1, argv); } #define OVMAGIC 0xf1 struct header { int magic; unsigned ovaddr; unsigned ovsize; unsigned ovbss; int (*ovbgn)(); }; static int (*prgload(xt.asm extrn .begin extrn atof_ extrn frexp_, ldexp_, modf_ extrn ftoa_ extrn asin_ extrn acos_ extrn arcsine_ extrn atan2_ extrn atan_ extrn exp_ extrn floor_ extrn ceil_ extrn log10_ extrn log_ extrn pow_ extrn ran_ extrn randl_ extrn cos_ extrn sin_ extrn sinh_ extrn cosh_ extrn sqrt_ extrn cotan_ extrn tan_ extrn tanh_ extrn execv_ extrn execl_ extrn agetc_ extrn aputc_ extrn atoi_ extrn atol_ extrn calloc_ extrn Croot_ extrn fdopen_ extrn fgets_ extrn fopen_ extrn  pop h ret ; phex2: rar rar rar rar phex: ani 15 adi '0' cpi '9'+1 jc hexok adi 'A'-'0'-10 hexok: mov l,a mvi h,0 push h call puterr_ pop h ret ; pmsg: pop b ;get address of message pmloop: ldax b inx b ora a jz pmsgdone mov l,a mvi h,0 push h call puterr_ pop h jmp pmloop pmsgdone: push b ret ; public .xtod .xtod: push b lhld flprm mvi m,0 ;clear sign inx h mvi m,3 ;set up exponent lxi d,4 dad d mov e,l mov d,h mvi b,5 xra a xtodclr: inx h mov m,a dcr b jnz  push b mov e,m xchg mvi h,0 dad h ;num*2 mov b,h mov c,l ;save dad h ;num*4 dad h ;num*8 dad b ;num*10 xchg add e inx h mov m,a mov a,d aci 0 dcx h dcx h pop b dcr b jnz ml10lp inx h mov m,a ;save last byte of result ora a jz normalize dcx h dcx h ;back up to exponent mov a,m ;check to be sure no overflow ora a jm m10ok cpi 64 jnc overflow m10ok: pop b ret end extrn execl_ extrn agetc_ extrn aputc_ extrn atoi_ extrn atol_ extrn calloc_ extrn Croot_ extrn fdopen_ extrn fgets_ extrn fopen_ extrn freopen_ extrn format_ extrn fprintf_ extrn fputs_ extrn fread_ extrn fscanf_ extrn fseek_ extrn ftell_ extrn fwrite_ extrn getchar_ extrn gets_ extrn getw_ extrn ioctl_ extrn isatty_ extrn lseek_ extrn realloc_ extrn malloc_ extrn free_ extrn creat_ extrn open_ extrn close_ extrn posit_ extrn printf_ extrn fclose_ extrn putchar_ extrn put; public .dtou .dtou: push b mvi c,0 ;flag as dtou jmp ifix ; public .dtoi .dtoi: push b mvi c,1 ;flag as dtoi ifix: lhld flprm mov b,m ;get sign inx h mov a,m ;get exponent ora a jz zeroint jp nonzero zeroint: lxi h,0 ; |x| < 1.0 so return zero jmp goodexit ; nonzero: cpi 3 ;check for too big jnc toobig ; inx h ;skip overflow byte add l mov l,a jnc xx inr h xx: mov e,m dcx h mov d,m xchg mov a,c ora a jz goodexit mov a,b ora a jp goodexit mov a,h cma mov h,a mov aargv0))() char *argv0; { int fd; char *topmem, *ovend, *sbrk(); unsigned size; struct header header; char name[20]; strcpy(name, argv0); strcat(name, ".ovr"); if ((fd = open(name, 0)) < 0) return 0; if (read(fd, &header, sizeof header) < 0) return 0; /* check magic number on overlay file */ if (header.magic != OVMAGIC || header.ovsize == 0) return 0; topmem = sbrk(0); ovend = header.ovaddr + header.ovsize + header.ovbss; if (topmem < ovend) { if (sbrk(ovend - topmem) == (char *)-1) freopen_ extrn format_ extrn fprintf_ extrn fputs_ extrn fread_ extrn fscanf_ extrn fseek_ extrn ftell_ extrn fwrite_ extrn getchar_ extrn gets_ extrn getw_ extrn ioctl_ extrn isatty_ extrn lseek_ extrn realloc_ extrn malloc_ extrn free_ extrn creat_ extrn open_ extrn close_ extrn posit_ extrn printf_ extrn fclose_ extrn putchar_ extrn puts_ extrn putw_ extrn qsort_ extrn rename_ extrn scanfmt_ extrn scanf_ extrn setbuf_ extrn sprintf_ extrn sscanf_ extrn ungetc_ extrn unlxtodclr ; mvi b,4 lxi h,lnprm lda lnprm+3 ora a jp lngok ; lngloop: mvi a,0 sbb m stax d inx h dcx d dcr b jnz lngloop dcx d ;back up to sign field mvi a,080H ;mark as negative stax d jmp normalize ; lngok: mov a,m stax d inx h dcx d dcr b jnz lngok jmp normalize ; public .dtox .dtox: push b lxi h,0 shld lnprm shld lnprm+2 lxi d,lnprm ; lhld flprm mov c,m ;get sign inx h mov a,m ;get exponent ora a jz goodexit ; |x| < 1.0 so return zero jm goodexit ; cpi 5 ;check fo@err_ extrn puts_ extrn putw_ extrn qsort_ extrn rename_ extrn scanfmt_ extrn scanf_ extrn setbuf_ extrn sprintf_ extrn sscanf_ extrn ungetc_ extrn unlink_ extrn bios_ extrn index_ extrn movmem_ extrn rindex_ extrn sbrk_ extrn rsvstk_ extrn setjmp_ extrn setmem_ extrn strcat_ extrn strncat_ extrn strcmp_ extrn strncmp_ extrn strcpy_ extrn strlen_ extrn strncpy_ extrn swapmem_ extrn toupper_ extrn tolower_ extrn getusr_ extrn setusr_ extrn rstusr_ extrn .dv,.ud extrn .ml mre3 ink_ extrn bios_ extrn index_ extrn movmem_ extrn rindex_ extrn sbrk_ extrn rsvstk_ extrn setjmp_ extrn setmem_ extrn strcat_ extrn strncat_ extrn strcmp_ extrn strncmp_ extrn strcpy_ extrn strlen_ extrn strncpy_ extrn swapmem_ extrn toupper_ extrn tolower_ extrn getusr_ extrn setusr_ extrn rstusr_ extrn .dv,.ud extrn .ml ovloader.c /* Copyright (C) 1983, 1984 by Manx Software Systems */ #define OVMAGIC 0xf1 struct header { int magic; unsigned ovaddr; unsigned ovsize; unsigned @:.lsb:.lan:.lor:.lxr:.lcm:.lls:.lur:.lrs:.ldv:.lrm:.lud:.lum:.lml:.leq:.lne:.llt:.lle:.lge:.lgt:.lul:.lue:.luf:.lug:.utox:.itox:.xtoi:.dvG.udG.umG.rmGdiv16G.mlI.rsI.lsI.urI.anK.cmK.orK.xrK.ntL.eqL.neL.leL.geL.ltL.gtL.ngL.sbL.swtL.ueL.ufL public .ovbgn, ovexit_ extrn ovmain_ extrn _Uorg_, _Uend_ bss ovstkpt,2 bss saveret,2 bss bcsave,2 bss ixsave,2 bss iysave,2 ; .ovbgn: lxi h,_Uorg_ lxi b,_Uend_-_Uorg_ mvi e,0 clrbss: mov m,e inx h dcx b mov a,c ora b jnz clrbss ; mov h,b mov l,c shld bcsave xra a adi 3 jpe savedone db 221 shld ixsave db 253 shld iysave savedone: pop h shld saveret pop d lxi h,0 dad sp shld ovstkpt ;save stack pointer for ovexit call ovmain_ xchg ;save return value ovret: lhld saveret @"*0rʫ !0"!9~#fo#s#r+^"**rʣ*##"++^#V"!9~#fo#s#r+^"à!"ä!9~#fo#s#r+^"*s#^!tʠ* u*"ì*.rʦ!9~#fo#s#r+^"*rʩ*##"++^#V"!9~#fo#s#r+^"æ!"ê!9~#fo#s#r+^"*s#^!tʦ* u*"â!"*lrʩ"!9~#fo#s#r+^"!"í$*hrʭ$!9~#fo#s#r+^"*í-!"ovbss; int (*ovbgn)(); }; static char *ovname; #asm public ovloader ovloader: lxi h,2 dad sp mov e,m inx h mov d,m xchg shld ovname_ ; call _ovld_ pchl #endasm static _ovld() { int fd, flag; auto struct header hdr; extern char *_mbot; auto char filename[64]; flag = 0; strcpy(filename, ovname); for (;;) { strcat(filename, ".ovr"); if ((fd = open(filename, 0)) >= 0) break; if (flag++) loadabort(10); strcpy(filename, "a:"); strcat(filename, ovname); } if (read(fd, &hdr@rom5  lnprm lntmp lnsec errno_ Sysvec_ $MEMRY .begin _Cend_ _Dorg_ _Dend_ _Uorg_ _Uend_ main_1@!wx"yx|§}ʡ~# y§!z"{zs# y©|sprintfWPP sprintf_ csave format_ .anq!9^#V"! 9! 9^#V!rDM ;get return addr push h ;place dummy overlay name ptr on stack push h ;place return addr on stack xchg ;restore return value to hl ret ;return to caller ; ovexit_: lhld bcsave mov b,h mov c,l xra a adi 3 jpe restdone db 221 lhld ixsave db 253 lhld iysave restdone: lxi h,2 ;get return value dad sp mov e,m inx h mov d,m lhld ovstkpt ;restore original stack pointer sphl jmp ovret end .ovbgn PlnprmlntmplnsecSysvec_$MEMRY.beginsprintf_ format_ fmtcvt_atol_atoi_qsort_"setjmp_)longjmp_)toupper_+tolower_+strcmp_,strncmp_,strcpy_-strncpy_.strcat_/strncat_/index_0rindex_1strlen_2setmem_3movmem_4swapmem_6.chl7zsave7zret7cret7csave7.move7.ARG17.ARG27.ARG37.asave7.llis:.llds:.llip:.lldp:.lst:.lpsh:.lpop:.lswap:.lng:.ltst:.lcmp:.ulcmp:.ladä'! "ä'!"ä'!"*!9**v!9"**"ì/*##"++^#V"w"ê0*##"++^#V"*!9"sì/xc+d&o%s*u%x&,!9*y"**zʭ1*"*|ʫ5ï2*#"*+"#*zʫ5*`i{rʨ5!è2!"ë6*#"*~ʢ:**|ʢ:*#"+^`i{rʯ9!ä6**"*|«>ï;*#"*+"#*zʫ>! `i{rʨ>!è;ì@*`i{, sizeof hdr) != sizeof hdr) loadabort(20); /* check magic number on overlay file */ if (hdr.magic != OVMAGIC) loadabort(30); if (_mbot < hdr.ovaddr+hdr.ovsize+hdr.ovbss) loadabort(40); if (read(fd, hdr.ovaddr, hdr.ovsize) < hdr.ovsize) loadabort(50); close(fd); return hdr.ovbgn; } static loadabort(code) { char buffer[80]; sprintf(buffer, "Error %d loading overlay: %s$", code, ovname); bdos(9, buffer); exit(10); } ovbgn.asm ; Copyright (C) 1983, 1984 by Manx Software Systems ; :ts=8 @!*s`iq!9^#V*#"+s!sformat format_ csave .eq ctp__ .an .ml fmtcvt_ strlen_ .swt .sb .gt .chl .lt8q!9N#F!"!9^#V"!9~#fo#s#r+^"|ʯ@*%rʮ>!!9s!"! "!'"!9~#fo#s#r+^"-rʡ !"!9~#fo#s#r+^4 rʥ@!*#"î*fmtcvt&& fmtcvt_!""! 9~2G+V+^+6"+N+V+^!w#¨y/w#¬é!>^)|ڭg,¥s+= Z! ~*+"w!©#¯* +6-0123456789abcdefatol atol_ csave .eq .llip .lst ctp__ .an strcmp844 strcmp_ strncmp_!9ä!9F+N+V+^+~+ngxʢ¢ʢ# íogstrcpy&& strcpy_!9V+^+~+ngwʨ#í|strncpy(&& strncpy_!9F+N+V+^+~+ngxʣwʮ# â|strcat=44 strcat_ strncat_!9ä!9F+N+V+^+~+ng対ʦ#îxʧwʧ# æw|¤!x~¥,#£ê+=ɯ<!x3!!w3~Oç !x3!!w3ڠ ¤ +¥ x!w#  x!w#¥x!w#©x!w#­x!w#¡!x~/w#¡:w?*x*!x2))ү,=§"!x2"xâ:!x3:w?ʯW!!x3~w+£¬!Nyáx͡w͡yͭx͡ywͭ͡y!xw#£ͭͭy!xw#£!yw#£> !x~w#¢ Oy!w#§!y#fos!L9~#fotu!L9~#for!H9~#fo"!H9^#VBK*"*!R9^#Vvwʤ !L9^#V`iDMé**!R9^#Vvwʧ !L9^#V*s"ä `i*xʭ!L9^#V*y`i*zʫ*"í**zʭ`i"`i*{ʦ!L9^#V`iDM!L9^#V*s"`i*{©*PYs*!J9~#foswʩ`i*xʠ`i*s#r**##s#r*"*"é!H9^#V*xʯ!H9^#V*s#r**##s#r*"`i!H9s#r!H9^#.ARG2 .ARG3 @.asaveDM!99`i͠|DM!99!`i~# x¥!9~#¦!|lsubs<dd .llis .llds .llip .lldp &.lst 8.lpsh F.lpop Q.lswap n.lng ~.ltst .lcmp .ulcmp .lad .lsb .lan .lor .lsupport .nt .eq .ne (.le '.ge B.lt C.gt \.ng f.sb o.swt .ue .uf .ug .ul|ʡâ}¢|ʡ!}¡|ʢ!}|}|?>o&zo&|}|>o&|o&}/o|/g#}}o|gBK^#Vz#yʩ###ç#x¤#~#fo}|>?o&}|>o&.lldp .llis .lml .lpsh .itox .lpop .lad .lngq!9N#F`i^! r©`i^! rʡ`i#DMí!"`i^!-rʣ!"`i#DMæ`i^!+rʦ`i#DM!st`i^!u#^!vʦ !!wx yz`i#DM+^{|}x}tå*|ʪ !w~à!watoizz atoi_ csave .eq ctp__ .an .ml .ngindex&& index_!9^#V#n~ʬʧ#ê!|rindex.&& rindex_!9^#V#nʨ#ïxʨ +~¨|!strlen&& strlen_!9~#foʥ#ì}setmem&& setmem_!9^#V#N#F#nxʪs# ï #!x4=«=ʡ&!x~w#¬#Oy!w#¯$y #æ"y!w#ª&!xy~6#­'> !x~w# )ҭ*x!w#¤*=©(ͨ ʥ,!ͨ ʪ+!<ͨ ,ê+ͨ ,ʥ,ê+ͨ +å,ͨ +ʪ+å,ͬ ,ê+ͬ ,ʥ,ê+ͬ +å,ͬ +ʪ+å,"x!"!x2"x|2!"!x2*xdividemll .dv .ud 8.um .rm Ediv16 .ngz͢u}ͨV*x¯*!9{­"*"*^#V!H9s#r*##^#V"ïsetjmpf44 setjmp_ /longjmp_!9^#V+s#r#s#r#q#p#s#r#s#r!!9^#V#N#F^#V#^#V#N#F#^#V#^#V}#<toupper,44 toupper_ tolower_!9~aڡ{ҡ o&!9~Aڧ[ҧ o&xr ,.lcm :.lls [.lur ^.lrs .ldv .lrm .lud .lum t.lml .leq .lne .llt .lle .lge .lgt .lul .lue .luf .lug .utox ).itox 8.xtoi lnsec lnprm lntmp!wç!x~#~#~#~xw#w#w#w!!x3*!x2*x"w"!w2*w*x"w"x*!w2*!x2"!w2"!x2!x>w#.ugL.ulLin_Xout_Xq!9N#F`i^! r©`i^! rʡ`i#DMí!"`i^!-rʣ!"`i#DMæ`i^!+rʦ`i#DM!"`i^!s#^!tʡ * u`i#DM+^"ì*|ʢ *vå *qsort. qsort_ csave .ml .sb .ud .ur .chl .lt .ul swapmem_ .eq .ueq!9"!J9^#V+!L9~#for!H9~#fo"*!H9~movmemR&& movmem_! 9F+N+V+^+~+ngڬ }ڬʠ ++w x ɯ~# x¦swapmem/&& swapmem_!9F+N+V+^+~+ngy§Fwx# ¨ʭ=ècsaveq .chl zsave zret cret "csave 5.move .ARG1 }z͢u||/g}/o#z/W{/_MD!ͥ}y/Ox/G>))Ҧ, ڧ}o|g=®=®shiftsWPP .ml .rs 2.ls B.urDM!>))Ҡ =¨}{_ʯ||7g}o¥{_ʯ)ª}{_ʯ|g}oªbitopr PP .an .cm .or .xr|g}o|/g}/o|g}o|g}o5 FDM `i^#VBKxp! ^!7?@! ^#V!͸>*>F##^#V! s#r*PF!!`i!9!F?m!?*PF$!9;;G>"6F*FFDM×`i^#VBKx! ^!7?! ^#V!͸>*>F##^#V! s#r*PF!!`i!9!F?!?Ð*PF$!9;;G>":F"G;!9#;U;;G;*PFY!9!:*NF DMF?_*PF^!?ʫ!?!"$F`i?̀*PF!͘!!PY?DM`i+DM`iV?*NF G\?*NF )))):*6F*8F͕?Y>!9s#r!!9^#V~">F|Q!@*>FDMa`iDM!9~#fo+s#r#|*NF!!`il!9!F?ʤ!?!`in&?s! ^!F?`i~#́Y:*:F*6F͕?Y>!9s#r! !9^#V~"DF|!!@*DFDM1`i DM!9~#fo+s#r#|ʀ*NF!!`il!9!F?t!?!! s):!9N#F! ^!?9! ^!?!`in&?s*JF#"JF+! s#r*BF|`i*BFs#r`i"@F`i"BF9!@`i$:!9^#V!q?)!9^#V!r?9!w!'!! 9^#V##^#Vͫ"NF|w! 9^#V##^#V!!'!9^#V!7?ʦ!! 9^#V##^#V!RFMþ! 9^#V!^#V!RF͐9!!RFͫ"PF|!RF!!';G;ͧ*NF"*PF^!?*PF"%!?*F|5!!9^#V!7?n! 9^#V##^#V4! 9^#V##^#V!RFK4!'usage: sqz file [output] rCannot open input file: %s .sqzwCannot create output file: %s Errors in input object file.:! 9^#V? !9^#V! 9~#fos#r!9^#V#)E^#V!7?q !9^#V##)E^#V!?7?q !9^#V##)E^#VBK !9^#V#)E^#V!?7? !9^#V##)E^#V!7? !9^#V#)E^#VBK !V!9^#V! 9~#fo͕?s#r!9^#V#)E^#V!?7?3 !9^#V##)E^#V!7?3 !9^#V#)E^#VBKë !9^#V#)E^#V!?7?ʧ !9^#V##)E^#V!?7?ʧ !9^#V##)E^#V!9^#V#)E^#V7?ʧ !DMë !V!9^#V! 9~#fo͸>s#r!9^#V! 9~#foK>s#r!9^#V! 9~#fo`>s#r#r`i)E^#V!?`i)E^#Vq!9^#V!V?]!9^#V!W?]*PF!9^#V!0?͘!!9^#V!V?ʜ!9^#V!q?ʜ*PF!9^#V#͋?@?͘!!9^#V!V?!9^#V!q?!9^#V!!P7*PF`i)E^#V͘!*PF!9^#VG!È!9^#V!? !9^#V!7È!9^#V!?G!9^#V!7È!9^#V!?n!9^#V!7È͞?##J3!9^#V! ͸>*DF!9s#r!9^#V!͸>*>F!9s#r!9^#V́!9^#V##^#V!p7!9^#V##^#V!`7port,44 in_ out_!9f."!6Ͱo&!9~++f."!6ð| \#DM`i*E"E`i*E"E\!\`i*NF |x*NF |*NF || !ͮ*NF |ͮ*E#"Eͮ!*E"E !!^#Ve?xR\!`*F#"F\͞? 0@P`p (: }Unknown loader item '%02x' :!9N#F`i?Õ`i?! 9s#r`i?͋?+! 9s#r! 9s#r!*$F)Es#r! 9^#V*$F#"$F+)Es#r`i*$Fn&?s*LF#"LF+! s#r*HF|/`i*HFs#r4`i"FF`i"HF! ^!?:!9N#FY`i*@#"@+@Bs*@V?x̀*E#"E:*@|*PF*@+?͘!!DMð`i#DM`i*@q?*PF`i@B^͘!ë!"@:*E7?*EG!ͮ*E#"E:*EF?=*@|T*EV?T*Eq?T̀Y!*E"Ew*E?G*E>?G:*E7?*E7?*E#*E͕?DM`ir?½`iq?*E!*F#"FG*E#"E!ͮBranch out of range,! 9^#V! 9^#V!7*PF"!RF4!' No output produced. :! 9^#V! 9^#V͐9!.! 9^#V9DM|ʑ! 9^#V͐9æ! 9^#V! 9^#Vͬ9:!9#;͍;!! 9#;G;*NFY!9!"E"E"E"LF"JF!"HF"BF!E"E!"E"E!"E*NF!!!&Fl!9!F?3*&FF?L!9#;͍;H!?!*8FF?ʂ!*8F.>G;!9#;U;;G;*NFY!9*8FF?ʹ!! 9#;;;G;*NFY!9!9*PF$5;*PF!!!&F!9w*PF$!9;;G>"8F*@!9^#V! 9~#fo?s#r!9^#V! 9~#fo?s#r!9^#V! 9~#fo'?s#r!9^#V! 9~#fo>s#r!9^#V! 9~#fo>s#r! 9^#V?! 9s#r! 9^#V͋?! 9s#r! 9^#V!>?! 9s#r!! 9~#fo?s#r!! ^#V   7 R n !9^#V#)E^#V!7?ʑ!9^#V##)E^#V!7?ʑ!DM`i!9^#V)Es#r!9^#V#"$F! 9^#V!9^#V)Es#r!͞? 0@P`i p !*F#"F!invalid operator in evaluate %x :!9^#V!3*PF`i)E^#V͘!3͞? `p3:*PF! 9^#V!?! 9~#fo?͘!*PF! 9^#V!>?͘!:! 9^#V! 9~#fo͸>DM͔5!9s#rzʽ!!9^#V0:!9^#V:! 9! 9^#V! 8:!9N#F!"TB!9^#V"RB!9~#fo#s#r+^"PB|*PB%7?!!9s!"VB! "XB!'"ZB!9~#fo#s#r+^"PB-7?ʅ!"VB!9~#fo#s#r+^"PB*PB07?ʯ!0"XB!9~#fo#s#r+^"PB*PB*7?*RB##"RB++^#V"\B!9~#fo#s#r+^"PB4!"\B!9~#fo#s#r@)Es#r!! 9s#r`i7 *NF! 9s#rN !?N ͞?    , ! 9^#V*$F#"$F+)Es#r! 9s#r! 9^#V! ͸>*DF!9s#rú ! 9s#r! 9^#V!͸>*>F!9s#r!PY?DM!9^#V!^J !DM!9^#V!^#V! 9s#ra !DM!9^#V!^#V! 9s#ra !DM!9^#V!^#V! 9s#ra !DM!9^#V!^#V! 9s#ra ͞?   - a `i*$F)Es#r! 9^#V*$F#"$F+)Es#r*$F#"$F+!9s#r`i!9^#V)Es#r*NF |! 9s#r`i? q? *NF |!9s#r !*$F)Es#r`i pc=%x :*E7?B*E7?B*E##*E͕?"E!"E X!*E"E!ͮ:*E*EF?y*E*EF?̀*E7?ʨ*E͸>*>F##^#V!7õ*PF*E͘!*E"E*E"E*E|̀*E?!!7!*E͕?"E*E?*E+!7!"E:*EF?7*E|7Y!"E!"E*E*Es#r!9^#VÅ! 9^#V"E!E"E!"EØ!E"EØ!E"EØ͞?Y|s*E^#V"E!9^#V"E:Ỳ*PF! 9^#V͘!:Ỳ!DM`i#DM`i*$Fq?6`i)E^#V!9s6 +^"PB*PBA#^!?4*\B ͸>*PB"\B*PB.7?!9~#fo#s#r+^"PB*7?ʍ*RB##"RB++^#V"ZB!9~#fo#s#r+^"PB!"ZBî!9~#fo#s#r+^"PB*PBA#^!?*ZB ͸>*PB"ZBÖ!"^B*PBl7? !9~#fo#s#r+^"PB!"^B1*PBh7?1!9~#fo#s#r+^"PB*PB!"`BX! "`BX!"`BX!"`B*^B!9*`B*RB!9"bB*^B*RB"RB*RB##"RB++^#V"bB:"^B*RB##"RB++^#V"PB*PB!9"bBs͞?cdRo7su@xI!9*bB͕?"^B*^B*ZBr?*ZB"^F?.#!`in&?s!`is#r! s#r!! 9^#V!7?g#!`in&?s!`is#r! s#r!`i~#x#V$! ^#V!7?ʱ#!! 9! ^j.F?#! 9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&?s! 9^#V`i~#fo#s#r+s!?:!O@DM`i~<$`i DM@?9$!$!`is#r! s#r! s#r`i:!9N#F! ^3ʌ$!! s#r`i! s#r!͔5"B|r$!! s#r!`in?s*B! s#r!@BZs# y$*"F*@"F$@$! 9^#V!$ ^!L:!$ ^! 9~#fo?!$ s{M-`i!~#fo#s#r!::D-!}2D!}2D}2D!D! 7! !7:Do&7?ʤ-!}2D!:Ao:Do#}2D&D#s!"E:Do&DM! 9~#for?-! 9^#VBK! 9^#V*EDL:`i*E"E`i:Do͕?}2D`i:! 9N#F!"E1.*E#"E*E! 9~#foq?f.!9^#V7`i#DM+s!7?f.*.*E:!9^#V)))@DM! 9^#V! 9^#V! ^#V! ^)A^#V͞::!DM!9^#V"E*E&^39*E$~,/*E$^!͕?DM! 9~#fo ^1!9;= !!:!9N#F!vB!;G;! ^1!95;! ^!?ʑ!vB! ^#V`i^#V͕?8>`;#;;5;`i~#!vB`i^#V! ^#V͕?8>`;#;;5;!vB#;:!9^#V DM7?!9^#V "zB7? !*zB>PY?:!9N#F! ^#V`i^#V? ! ^!?E !!`in?s`i~#i V$! ^#V! ^#V! ^u+"|BW?ʹ *|B|¢ !å !`in?s!! ^#V`is#r*|B! s#r`i~#fo#s#r+^!?:!Z@! 9^#V!9^#V!9^#V!9^#V*TC^#V͞:! 9!q?F)!`'*RCs#r!*VC:!9^#V!q?p)!9^#V! r?z)!"F!!9^#V)))@DM! ^#V! ^#V͞:!9s#r!! s! s! s`is!`'! s#r!9^#V:!ZCDM)`i'DM`iD?*`i%~ *)!"F!! 9^#V8"D7?/*!"F!*D7?A*$9"D*D39! 9^#V!?c*!7!77?ʩ*! 9^#V!?ʙ*!77?ʦ*!"FL9!*! 9^#V!?7?*!"FL9!!!! s#r!# s!$ s*D!& s`i!9^#V!s#r! 9!$ s!7?,3`i!~#fo#s#r!!$ s!:!"E:!9N#F!!7*EPYF?r3!! ^#V*EF?3!!7"F7?”3*F7?ʶ3!"F!!!0:!"E!*F|3!`i"E!! ^#V"E!:!9^#V)))@^:!3:"*;B!";B*9B64*9B!4(4#4*=B+"=B}3F4F4o&"F*=B:!9!F9^#V8DM!9!H9^#V839!DM!9!7F?ʴ4!9!7!"F!DM4!9!77?4!"F!DML9`i:!9!29^#V8DM39!9B*VB|?*TB#"TB*\B+"\B#*^Br??*XB`i͞:7?<! !"`BO*`B#"`B*bB~ʆ*`B*ZBq?ʆ*bB#"bB+^`i͞:7?ʃ!H*`B*TB"TB*VB|ã*TB#"TB*\B+"\B#*^Br?! `i͞:7?!Ü*PB`i͞:7?!*TB#"TB*TB!"@" @! 9~2@G+V+^+6"@+N+V+^!@w#yO/w#CP!!@>^)|dg,\s+=WZ!~*@+"@w!@P#†*@+6-0123456789abcdef: $DM|¿!! 9^#V! 9^#V:! 9^#V"!"@DM`iDMx!:!!B!L:!:o&?Bs!&"B!BDM!"LC*LCq?&`i^! 7?c%`i^! 7?k%`i#DMG%`i~&`i^!>7?ʉ%!"PCÝ%`i^!<7?z&!"PC`i#DM^! 7?¼%`i^! 7?ʿ%Ý%`i"NC`i#DM~%`i^! 7?%`i^! 7?%!`i#DM+s%%*PCJ)*PC|&!*NCͬ'"PC/&!*NC'"PC*PC7?w&!&!͐9*NC!ͬ9!'!ͬ9!! 7! '&`i*LC#"LC+)Bs#r`i#DM~&`i^! 7?´&`i^! 7?&!`i#DM+s&Î&:%!B*LC!'Can't open file for redirection:?/! 9^#VBK! 9^#V*E/,/L9!! 9^#V`i͕?>"E|ʍ/*E! 9^#V`i*E3"E|ʍ/L9*E*E͕?>PYDM|Š/!`i*E>PYDM`i! 9~#fo?/! 9^#V`i͕?! 9^#V`i*E//L9`iL9! 9^#V:!9N#F=3q?0!! 9^#V!$ ^!!9^#VL:!"7"F|<0!!$ ^! 9~#fo?!$ s{n0`i!~#fo#s#r!:! 9N#F! 9^#V"E*E+"E#|0`i^! 7?ʲ0! !7`i#DM+^!7Ê0! 9^#V:! 9N#F! 9^#V"E*E+"E#|1`i#DM+^:!9N#F`i 7?8!! 9^#V! ͘!7?8!!! 9^#V͘!:!9N#F! 9^#V͘!q?p!!! 9^#V`i>͘!q?ʕ!!`i:! 9N#F! ^#V`i^#V?!!9^#V!?͖"!9^#V`i~#fo#s#r+s!?:!O@DM`i@?"`i DM"!:!9N#F!"~B`i~ʉ"! ^!?W"!͖""~B! ^J)*~B?"~B! ^!?ʉ"! ^#V97!! s*~B:!9N#F!!"JA! ^!?ʽ"!! ^!?.#! ^#V`i^#V͕?"B*B! ^#V! ^j.*B^#V!?#!% s!?+!9^#V!s#r! 9^#V!?8+z2L9!:!9N#F03!& ^39!7L9!!% s!:!9^#V)))@DM! 9^#V! 9^#V! ^#V`i^)A^#V͞::!DM!9^#V"D*D&^39*D$~5,*D$^!͕?DM! 9~#fo?,! 9^#VBK! 9^#V*D,5,L9!! 9^#V`i͕?>"D|ʉ,*D! 9^#V`i*D3"D|ʉ,L9*D*D͕?>PY*D>PYDM`i! 9~#fo?,! 9^#V`i͕?! 9^#V`i*D,,L9`iL9! 9^#V:!9N#F=3,!! 9^#V!7DML9`i7?#5!"F!!:!9N#F! ^#V+))"E97! 9^#V͔5"E|ʐ5*EPYF?ʐ5! 9^#V*E?|5*EÄ5! 9^#V*EL:*E:!9^#V###>#"E*E"E|5!E"E"E"E*E##^#VBK5`i"E! ^#VBK! ^#V`iF?a6! ^#V`i^#V))PY7?a6! ^#V*E7?06! ^#V##^#V"E! ^#V^#V`i~#fos#r! ^#V##^#V! s#r5`i^#V*E?6`i^#V*E7?ʑ6! ^#V*E##s#r6*E))PY"E*E*E##s#r! ^#V*E##s#r`i^#V*E͕?*Es#r*E`is#r*E"E!! s#r`i`i*E7?57!"F!! 9^#VX9! ^#V! 9^#V'"dB7?A!*dB!9^#V!s!!9^#V!s! 9^#V:!9N#F!"fBÉ*fB#"fB*fB! 9~#foq?! 9^#V"jBð*jB+"jB*jB|!9^#V "hB7?*fB*hB`i#DM+séÂ*fB:!9N#F! 9^#V! 9~#fo͸>"nB!"lB*lB#"lB*lB*nB?P!9^#V`i#DM+^͘!7?M!! 9^#V:!9N#F!`in?s! ^!?ʝ!͖"ʚ!!9^#V!7?`i~#! 9`i^#V! ^#V͕?8>`;#;;5;!! s#r`is#r!9^#V! 9#;G;! $:*JA͞:!DM`i q?/'`i#DM+J)'!9~#R'!7?R'!V'4$A:$$$.SUB:!"F!:!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR::! 9^#V!! 9^#V':!@"RC!"VC'*RC"RC*VC#"VC*VC q?(*RC^#V!`'7? ('!"F!!dADM0(`iDM`i~#Q(!9^#V`i^#VX9Q(((! ^#V"TC! 9^#V!?#"XC*XC?ʒ(*TC^*RCs{’(!"F!*XC?ʹ(*TC#^*RC#s{¹(!"F!! ^#V*RCs#r*TC##^*RC##s*TC###^*RC###s!p'*RCs#r*RC!! 9^#V70! 9^#V:!9^#V)))@~A1!"F;!9^#V)))@^#VBK!9^#V1!& ^39!`in?s!7!`in?sz2L9! 9!! ^#V.>;IU;;`;#;;5;2!"F;͞?11`11!!# s! 9#;;=@2!!! s#r!$ s!"F;! 9#;G>?!$ s! 9#;;m!! s#r! 9#;:!9N#F!#7`i!~#ª2!!$ s!`i!~#fo+s#r=32!!"E*E?2*E+"E^!F?2*E#"E22*E7 8DM7?7!!`is#r!! s#r`i97*EDM5:!9^#V!"E*E##~#\7!*EDMm7! ^#VBK`i*E?Œ7! ^#V*E?7! ^#V`i?ʽ7*EPY?7! ^#V*E?7d7! ^#V*E##s#r*E! s#r`i"E!:7:*9BDM*;Bog!9N#F#^#Vkb6#> 6 #=8>6#=8y8 58 98*8 8R80_zW<8/\8_8 : >Š8 A8[{8@Ç8a8{8`w# .ʥ8ʾ8ʍ88w#Î8{o|g ʾ88w#¯8&jz!|*8 >?a{ 0:87!9^#V*@9*F}|p'`'`'`'`'`'`'`'`'p'p'p'p')z'LA'LA'RA'RA'RA'RA'RA'RA'XA'XA^A`'+Q-. `'.00 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@ @Bw#=> !B~w#=OB!B#&=y?=!B4= ==p=!B~w#K=OB!B#^=y?=5=B!B#y=!BB~6#Œ=> !B~w#Ÿ=Ҽ=B!B#³==˜=ͧ;=!ͧ;=!<ͧ;==ͧ;===ͧ;==ͧ;===ͻ;==ͻ;===ͻ;==ͻ;==="B!"B"B|1>!"B*Bzm>?}̓>}zm>?||x>/g}/o#z>/W{/_MD!͐>}y/Ox/G>))ҡ>, ڲ>}o|g=™>=™>DM!>))> =>}{_>|?|7g}o>{_>)>}{_@à&+!9N#F!9^#V!/0!ͩ !!9~#fo+s#rzʞ!.`i##DM^#V͡)l!1`i^#V͡)u!"*K0`i^#V͢!9s#rzʛ!9^#Vou0*,K/!9!.K͉+!2K|+;,!6K|+;,͛+!9͉+ͭ+!9͉+ͭ+!6K͉+ͭ+!2K͉+ͭ+!.K͉+ͭ+!4ͩ !9!usage: cnm [-s] objfile ... -S-sTotals Code: %ld Data: %ld Udata: %ld total: %ld (0x%lx) &+!9͂+͛+!!@9^#V͎!69s#rzº*:K!@9^#V!ͩ !69^#V!!! 9O!9!͝/!9^#V!͝/'!!9͂+9*@"@|!=!9}_|#W"F: o&: 2A:9B _: :A_!9l9!9F+N+V+^+~+ngxʊ9Š9ʊ9# u9og!9V+^+~+ngwʨ9#Ý9|!99!9F+N+V+^+~+ng対9#9x9w9# 9w|!9^#V#n:#9x: +~:|!!9~#fo,:##:}!9^#V#N#F#nxJ:s# ?:! 9F+N+V+^+~+ngڈ:l:}ڈ:ʜ: |:++w x|:ɯ:~# x’:DM!99`i͞:|DM!99!:`i~# x:!9:9B~#:!;@@>|g}o?|g}o|/g}/o|g}o|g}o|P?A?}A?|P?!}P?|A?!}|i?}|?>o&zo&|?}|>o&|o&}/o|/g#}}o|gBK^#Vz?#yʸ?###æ?#x³?#~#fo}|>?o&}|>o&No more disk space!Bad object file!Not enough memory!rr+ww+a a+ xx+F???????????p'p'@+͉+;,͛+ͭ+!<9^#V!9ú!9^#V!ͬ/G!9^#V!ͬ/!9!*9^#V͔.ͭ+!,9^#V͔.ͭ+!.9^#V͔.ͻ+;,ͻ+;,͛+!9~ʦ!9!@9^#V!/ͩ ÷!>9^#V!<ͩ !9͉+ͭ+! 9͉+ͭ+!09^#V!09^#V!09^#V!Aͩ !9!.K!&9^#V͔.+͉+;,͛+!2K!(9^#V͔.+͉+;,͛+!6K!*9^#V͔.+͉+;,͛+**K|¨!,9^#V!ͬ/ʕ!!.9^#V͔.ͭ+! 9͉+ͻ+;,ͭ+!<9^#V!9!*9^#V!,9~#fo/Ϳ.DM!!89s#r`i+DM#|ʛ!69^#V!!!9O!9! 9^))F0!49)!  ;|!B&;!B~#~#~#~Bw#w#w#w!B*B*B"B"B*B*B"B"B*B*B"B"B!B>w#ƒ;!B~=#’;==ɯ<B!B~O;B!Bڟ;£;+;B!B#;B!B#;B!B#<B!B#<B!B#09^#V!ͩ !69^#VrCannot open: %s, err=%d %s(%-8.8s): %s: code: %u data: %u udata: %u total: %lu (0x%lx) Gl %04x %s %-8.8s%s: is not an object file. .&+*~0͝/ !*!9^#V2*!?!9^#V2*b !$9!6(!9!9^#VJ(! ^#V! 9^#Vͧ"G͝/$!*G!9^#V!s!!9^#V!s! 9^#V&+!9N#F!"Gl*G#"G*G! 9~#fo/! 9^#V"GÓ*G+"G*G|!9^#V;"G͝/ʷ*G*G`i#DM+sÌe*G&+!9N#F!`inu/s! ^!u/!p!Q!9^#V!͝/Q`i~#Q! 9`i^#V! ^#V/͞.+͉+P,͛+!! s#r`is#r!9^#V! 9͉+ͭ+! ^!!9u+@.ʔ!!&+!9N#F!G!͂+ͭ+! ^!!9͛+! ^!u/!G! ^#V`i^#V/͞.+͉+;, `iDM`i~#+!9^#V`i^#V͡)+! ^#V"H! 9^#V!u/#"H*Hu/l*H^*Hs{l!":K!*Hu/ʓ*H#^*H#s{“!":K!! ^#V*Hs#r*H##^*H##s*H###^*H###s!J*Hs#r*H!9^#V!9^#V!9^#V*H^#V+! 9!/ !:*Hs#r!*H&+!9^#V!/J!9^#V! /T!":K!!9^#V)))X1DM! ^#V! ^#V+!9s#r!! s! s! s`is!:! s#r!9^#V&+!HDM`i'DM`iI90`i%~ù!":K!! 9^#VJ("I͝/ !G /*G"G *G.͝/ʽ !9~#fo#s#r+^"G*͝/p *G##"G++^#V"G!9~#fo#s#r+^"Gý !"GÑ !9~#fo#s#r+^"G*G2#^!u/ʽ *G /*G"Gy !"G*Gl͝/ !9~#fo#s#r+^"G!"G *Gh͝/ !9~#fo#s#r+^"G*Gä !"G; ! "G; !"G; !"G*G!9*G*G !9"G*G*G"G *G##"G++^#V"GQ*"G *G##"G++^#V"G*G!9"Gs 0c d5 o sg u# x, !9*G/"G*G*G/ *G"G*G|" *G#"G*G+"G#* DM.1+0!!`is#r! s#r! s#r`i&+!9N#F! ^Ͱ$f!! s#r`i! s#r!%"G|L!! s#r!`inͅ/s*G! s#r!2s# y¨*"K81&+!!6H!͆*!:o&u/6Hs!"G!6HDM!"H*H/ʣ`i^! ͝/=`i^! ͝/E`i#DM!`i~ʣ`i^!>͝/c!"Hw`i^!<͝/T!"H`i#DM^! ͝/–`i^! ͝/ʙw`i"H`i#DM~`i^! ͝/`i^! ͝/!`i#DM+sÞ*H$*H|!*H͆"H !*HK *K#"K*K! 9~#fo/@!9^#V6(`i#DM+s!͝/@*K&+!9^#V)))X1DM! 9^#V! 9^#V! ^#V! ^)2^#V+&+!DM!9^#V" K* K&^|)* K$~ * K$^!/DM! 9~#fo:0! 9^#VBK! 9^#V* K;  ͕)!! 9^#V`i/`/" K|g * K! 9^#V`i* K$"K|g ͕)* K*K/P/PYDM|d !`i* KP/PYDM`i! 9~#fo90ʲ ! 9^#V`i/! 9^#V`i* K; ʲ ͕)`i͕)! 9^#V&+!9N#F$/ !! 9^#V!$ ^!!9^#V͆*9s#r!͝/!9^#V!9^#V!9s#r!9^#V!ͬ/c!/!9^#V2*!9s#rzc!9^#V#!9s#r!9^#V#^!:͝/ʋ!!9~#fos#r!9^#V|)!"~0"2!9!6(!9s#r!9!6(!9s#r!9^#V!ͬ/\ *2/2!9s#r! !9!9^#V)))))!(9͆*!9^#V!9s#r!9^#V!9~#fo90c!9~#fo#s#r+^!9~#fo#s#r+s%!DMp`i#DM`i /`i!9^*!9~#fo#s#r+s! ͝/ʽ!9~#fo+s#rk! 9^! ͬ/D !.!9~#fo#s#r+s! DM`i#DM`i /D +4`i~#4!G`i^#V! ^#V/͞.+͉+P,͛+!G͉+&+!9N#F! ^#V`i^#V+0! ^!u/p!!`inu/s`i~#”0! ^#V! ^#V! ^O"Gͽ/*G|!!`inͅ/s!! ^#V`is#r*G! s#r`i~#fo#s#r+^!u/&+!0! 9^#V-&+!9N#F`i ͝/c! 9^#V! r͝/c!! 9^#Vr&+! 9N#F! ^#V`i^#V+0ʨ!9^#V!u/p!9^#V`i~#fo#s#r+s!u/&+!0DM`i.190`i DM&+!9":K!*I͝/m)"I*I|)! 9^#V!u/=!6(!6(͝/ʃ! 9^#V!u/s!6(͝/ʀ!":K͕)!æ! 9^#V!u/͝/ʦ!":K͕)!!!! s#r!# s!$ s*I!& s`i!9^#V!s#r! 9^#V!u/#!% s!!9^#V!s#r! 9^#V!u/T#͕)!&+!9N#F $!& ^|)!6(͕)!!% s!&+!9^#V)))X1DM! 9^#V! 9^#V! ^#V`i^) 2^#V+&+!DM!9^#V"I*I&^|)*I$~*I$^!/DM! 9~#fo:0! 9^#VBK! 9^#V*IG/" *G`i+͝/ ! !"G2 *G#"G*G~i *G*G/i *G#"G+^`i+͝/f !+ *G*G"G*G|² Æ *G#"G*G+"G#*G/ʲ ! `i+͝/ʯ ! *G`i+͝/ !*G#"G *G!"0"0! 9~20G+V+^+6"0+N+V+^!0w#y2/w#&3!0>^)|Gg,?s+=:Z!~~*0+"0w!03#i*0|+6-0123456789abcdef&+DM|¢!! 9^#V! 9^#Vͺ&+! 9^#V!0DM`iDMx!":K!! 9^#V͡)!ͧ"H*H͝/Q!!)*H!)!!)!! 6(! à`i*H#"H+)Gs#r`i#DM~ʠ`i^! ͝/Ž`i^! ͝/ʝ!`i#DM+sàh!G*H!Can't open file for redirection: $&+*1+!DM`i / `i#DM+$!9~#,!6(u/,!0%%A:$$$.SUB&+!":K!&+!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:&+! 9^#V!! 9^#Vͧ&+!X1"H!"H*H"H*H#"H*H /*H^#V!:͝/ü!":K!!1DM!"6(":K|!!!$ ^! 9~#fou/!$ s{H!`i!~#fo#s#r!&+! 9N#F! 9^#V"K*K+"K#|ʢ!`i^! ͝/ʌ!! !6(`i#DM+^!6(d!! 9^#V&+! 9N#F! 9^#V"K*K+"K#|!`i#DM+^! 9^#V6(!! 9^#V&+!9^#V)))[1~"!":K͂+!9^#V)))^1^#VBK!9^#V"!& ^|)!`inͅ/s!6(!`inu/sT#͕)! 9!! ^#V͔.u+ͯ,ͭ+!$ ^͞.ͻ+;,+͉+;,͛+"!":K͂+0"~":""!!# s! 9͉+u+@.#!`i!9^*!9~#fo#s#r+s! ͝/A !9~#fo+s#rD !!9^#Vs*2#"2ù͕) !9^#V!2)!"2!"~0*~0*2/ʟ *~0#"~0+/2!"~0!&+! 9! 9^#V! 8&+!9N#F!"G!9^#V"G!9~#fo#s#r+^"G| *G%͝/ʵ !!9s!"G! "G!'"G!9~#fo#s#r+^"G-͝/h !"G!9~#fo#s#r+^"G*G0͝/ʒ !0"G!9~#fo#s#r+^"G*G*͝/ *G##"G++^#V"G!9~#fo#s#r+^"G !"G !9~#fo#s#r+^"G*G2#^!u/ *N#F!"G`i~c! ^!u/1!p"G! ^$*Gͅ/"G! ^!u/c! ^#V͂'!! s*G&+!9N#F!"1! ^!u/ʗ!! ^!u/! ^#V`i^#V/"G*G! ^#V! ^D*Gͬ/!`in&ͅ/s!`is#r! s#r!! 9^#V!͝/A!`in&u/s!`is#r! s#r!`i~#R0! ^#V!͝/ʋ!! 9! ^Dͬ/! 9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&ͅ/s! 9^#V`i~#fo#s#r+s!u/&+!0DM`i~`i͕)!! 9^#V`i/`/"J|c*J! 9^#V`i*I$"J|c͕)*J*J/P/PY*JP/PYDM`i! 9~#fo90ʮ! 9^#V`i/! 9^#V`i*Iͺʮ͕)`i͕)! 9^#V&+!9N#F$!! 9^#V! 9^#V!$ ^!͆*!$ ^! 9~#fou/!$ s{'`i!~#fo#s#r!&+:J›!}2J!}2J}2J!J! 6(! !6(:Jo&͝/~!}2J!:2o:Jo#}2J&J#s!"K:Jo&DM! 9~#fo/ʻ! 9^#VBK! 9^#V*KJ͆*`i*K"K`i:Jo/}2J`i&+! 9N#F!"9 !! s#r!$ s!":K͂+! 9͉+ͭ.u/!$ s! 9͉+u+,ͭ.!! s#r! 9͉+&+!9N#F!#6(`i!~#„#!!$ s!`i!~#fo+s#r$ʡ#!!"K*K:0#*K+"K^!ͬ/#*K#"K#ç#*K!$ s!͝/$`i!~#fo#s#r!!$ s!&+!"K&+!9N#F!!6(*KPYͬ/L$!! ^#V*Kͬ/ʬ$!!6(":K͝/n$*:K͝/ʐ$!":K!!!j*!"K!*:K|ʜ$!`i"K!! ^#V"K!&+!9^#V)))Z1^D+!$D+"*2!"2*2%*2!4%+G,G,yb-+G,yG,b-G!Gw#8-+b-b-G!Gw#X-!Gw#h-> !G~w#w-OG!G#Œ-y¥-!G4=p-=-!G~w#±-OG!G#-y¥-Û-G!G#-!GG~6#-> !G~w#.".G!G#.=- ,:.! ,/.!< ,:./. ,:.:./. ,/.:. ,/./.:.!,:./.!,:.:./.!,/.:.!,/./.:."G!"G"G|.!"G*Gz./}.}z./||./g}/o#z./W{/_MD!.}y/Ox/G>)@)w#(&jz!|*) >?a{ 0:1)7!9^#V*61W)*))./ =&/}{_]/|h/|7g}oC/{_]/)X/}{_]/|g}oh/|g}o|/g}/o|g}o|g}o|ʶ/ç/}§/|ʶ/!}¶/|ʧ/!}|/}|?>o&zo&|/}|>o&|o&}/o|/g#}}o|gBK^#Vz$0#y0### 0#x0#~#fo}|>?o&}|>o&??abpgdtcmrfovunwkbsgrpsssmsrr+ww+a a+ xx+@&DM!99`i+|DM!99!+`i~# x9+!9S+2~#Z+!g+r+|!GÌ+!G~#~#~#~Gw#w#w#w!G*G*G"G"G*G*G"G"G*G*G"G"G!G>w#+!G~:.#+/.=ɯ<G!G~O,,G!G, ,+*,G!G#E,G!G#Z,G!G#n,G!G#‚,G!G#–,!G~/w#¦,:G?*G*G)),,=¼,"G"G,:G:G?,W!G~w+,,!Ny@@s#r`i^#V*&K/*Ks#r*&K`is#r*$K"K!! s#r`i`i*K͝/~'!3)DM͝/Z'!!`is#r!! s#r`i͂'*KDM&&+!9^#V!"(K*(K##~#ʥ'!*KDMö'! ^#VBK`i*(K:0'! ^#V*(K:0 (! ^#V`i+0(*(KPY:0 (! ^#V*(K90 (í'! ^#V*(K##s#r*(K! s#r`i"K!D+9(D+*2DM*2og!9N#F#^#Vkb6#> 6 #=](>6#=f(y) ~( ‚(s( ')ڛ(0_zWÅ(/¥(è( : >( A)[(@(a){)`w# .()()w#({o|g )@K???????????JJJ::::::::JJJJT1Y1^1c1h1m1r1w1|111:+ :!! 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@ @: SD45M%9~P@5A B9D 3@h!/hAR! HBY<JB_,͠@rͦ@ :VB9D R6B@63kh6рB@!Prͮ ! ,ͱ F! /HDf@ p\-Kj@%ڐ@9fPmN"RAZf !v?@4dp@BYl@n'Y63@(9|n629Y6@ 3i@p@63@U8BO5*@F@`99B@rͤ,͢@rm f !Vm 0&\e)ќ\Ȉꑑ\Ȉ(P\1ȉP(\DȈѓ:\Aȉq:\ȉ*qP8\Ȋ i\ZȊj* \Ɉ \j \ʪ葀 \Ȋ1 \ȊTST4 =M~ARCSINMV 4Q(9f N  !Pr͡ $ͧ@Prd@m!KP% p\0@dJ! ?-@@) ԈBh ҈BhOP8!,Xͥ B_.h!%XKmIf|z,b8@! fՀmmuf׀&m{ lf`!f&mf " !/m?f >!Qfа!fmph(9D8`L@dtɉٛN, v"b}@@8`MX V@VPYC [@ zkLEpq^8``@ aIp0HC` fx ~ 4-j@8`k m@!D"C r@0 *U*JRu8`w@ ͧBmHmfp&m}pY {,! 'ٕN8! ,ͭ@mf֠hʪ`"Yu@!4C<d tu.f rnX3@hͶ ͰQfmLfPrpo9D8 CY<Aͣ`"m%mfߠhf@j(3i3j 4pjp9D8 VYi: ϔ0qQD8 X@Y]@H)gdqCb@Y0>SReD8 g@YhH@uCmY^%Qq@YCt@X "^0y8zH 8-dv$pC,|Y'XJdը@@8 A( C@#8TY`Cx H@ /UQ}K.DLISɁE5H͸.DPSHE.DSWAPREE5H.FLDPRdE8.FSTRDH.UTODRDH.DTOIREDX.DTOXS U4 =M!~Pd5 \-KA%` p-(@ 4,0!,*pB Y8YLB3i6@ 3@UK(3jx60''v3@ 6p@63kh]&3k62 ffZ [m|arp@63@h!/ 6p@6܀3l(&c162@9Y?߅ spC4f+63@ 6pͻ`"T;@"@mf0V9:&mfѐ!Jmmf@&m'`Rh"f !fӀ&m;mOf !fՀ&mIph`9D8@E|-͛V ~7 @Y8@X@ `dP_DY8CP eh w=0C9i@8@j l@  ͭB0ͮ@L"3@X0O31:'1BK2Q8! ۺ,ۮ! ! ۄ"@mf7 6q6q@6i%7((E` LWٷi)H)р\Hjꑜ0 jH \ȪJI  ʧ`"mfmm2d@m KRe@Ԁp \DKReĀ0)"5„ H>"$0*#A5Ԁ"@m?fm˅N@D8(UYh29YC$Z,!XC[HDD{C8(!@ J͵$ ήBLVD8(pY 3FQpP6np 6@ 3op 4fP 6̀E8(uYDW@D ; #|z,Jʨ@B$mph0pCCy@\,z!@QfԠ&m! GƆff&mSf@"(2moE5t.DTSTRdE.FLDSBe5H.ITODRUDH.XTODRED.DTOUREDS UD@׸"3@ p\-KA8!,3@ 9|Y3hx4 Ic1f !VhAfm$fp1>Sj6m2e]rp6p4f $ ͪ ͯ xA6Ȁ3l6π3@ 6pC8\ۈͱmafm?cf !Qf 609D8}8\~8@! ͻNW۞! mm1d@"zu)/1r*:Jt`!&F!rf""*`&"q@2*rzdD )jjjz"2d FZar"r,ed"&*FIr":d "#F@r" $g")FMr"rͫ`"ͩ@,ͮ, 14r7Ь! ͱ ,fʹ@ͳ,@! XͲ.mmdfme^prp6ဳ@ 6p6cQ9!~0QS !20 #  MY0ԑU#5=Y2*QP/`aA~3 #+R3p Q#6M 3 50523L =`41B3jK51%B3KT<0MR2K#4`4A=B3T#QMR0K#1N0 #%Q=0KU#aQ=0KcQ=V0K'Eu@@D"eD8``YkX$kٶCpY6p6n3o( 6Y8Cp,! :͸$ Ͳ"`͡ L͢L۸; "ͽ,hɎds8LOG_b$Tt.CHLB5uHXCSAVED5$UH.MOVEdU%$PFREXP_BDX8.DGTBDHp.DMLDEh.DLDPRDE8`.DLIPRDĕ8.DSTRE4Ɉ.DPOPbE5t.DTSTRdE.FLDSBe5H .ITODRUDH.XTODRED.DTOUREDS`E$I91~P5 \C@`r@f+4fh!Q'Sde44i@ \K@%@"3@ 9/α,!.Q09/Q /r@E !'مZ@X"K`f !XYX",ï `+4hDXU1 H)р\jꑓ0 jH \rʩ誈q )hh)ɱ\8TSe44e@ո\K@ 4,!.Q(9/Q $r@E !'مVR@`&AhʩEu\CM@" :!QVr@DEXhh) \i \(jh*ȱɩȱ0 QaUCt@Zc7x.Vmfp 6EX@":٠Cp@Y1 H)р\jꑐ@ jH \7ȪJI Ɉ \.ȉ\)ȊhQ\eȊђ\ȉ\Wȉ*\nȊj\Ȋ  \Ȋj \Ɉq\*葀 \ 葀 \Ȋ걀 \8ds1=~Pt5@ BY4fp 9|@Z*&҂Fh .K% ih`#>m\mpfm f f0mpk 9D8h`@Y~ ?À5o@Y81 CamD8hnYdwHCS@YC,TY63o p@EXF mfР&h!/Lt"(/1r*:Jt`!&F!rd""*`&"S2*rze )A@jjz"2d &""(/^!r"bdd"#Fq!r":,d " FAr"g"&FEr""d "&"(FAr"b"gP"&$FF@r"bJd ")FMr"DdL "('F1r" `"*)F)r2b"`#&")!r2`$'F)rz$`,*'F{)r"zL`"*')r"zQԠddn¦CeP! 89rfcxFpg'XV^0rf  4a! 89rfcxFpg'XV^0rf& PEtBFX<i/p@Uli/RUi 2 r" HMXKhʲBa '6nQVhw0BFX<B : @!b(rs99@XٵSX8n¾`Bpr?9NX#+:XDBFX@Ub,#>-YV B9EX4DX "j xݕOX !.Vhh@ma1Vr@˕K-ͣ gū*@ (3hxE`X8n¯ba '1}aa*p݅h U@3@ pBY4f !,͡ V H B63i062h Au+aͬ@ rA@63@h!/ 4($l4pYp8YDCR@1f3Y*]_fV-ԭH3m60&&c1fi*]fܰH3n6€3@ 9|cA=]~0QS !20 #  MY0ԑU#5=Y3T! 1aA~3=1R2 c7R3N S# `41B0K>1%B3KT5`MR2 K#A=B3>T#'QMfphU JjPFHfҀhff@hbR$"3h 6A4f AH)P H)р\jꑖ jH \| p\<ɉ`\2Ɉі \Qɉ \ ɉ*P \KɊj \Ɋ  \Ɋj \ʪ \ȉ0 \ȉ*p \Ȋj \Ȋ  \Ȋj \Ɉq\*葀 \T 葀 \Ȋ걀 \8V DUA"3@ p-(誈k [hJq\8Se544i@\K@%@ hDf@r^b,!,!.Q09/Q 0r@E !'مYXeUV_h@іa[ X_mWd_Lt)#F1r*:Jt`!&F!rd""*`&"J2 r2le NQSe44dM-%A 2GETFLTUSe Ryp-(##KZ.%Z. %4\K p- HD2!a1̆S0p7 F1`K@`4p<@@ ZZ. K% ihA63h4eUp "+YV$Cpm2fh!/ 4mdfP[hʺ@myfhf0(rp@63l63m68YHEXV"@mfmpn9D8yo |,!Q f(f ͤ"0m*m0f 6pCD@X"5X,NpCRYlYD8`[Y\X@0 YٵY8`VY$+SKWHaY1e{% %1~P5 BY4f n!,6AI"@rm#fҐh!/ 9fHDf@ 9f0mfѐUmaf@mDf 9|k$B\Prͯ ͨPrf@hʹ@rf 8Yl&:ԗ %1~0QS !20 #+@ MY0ԑU#5=Y3:SS-1R3` #9 3 :1B3vK71%B3JKT9MR34K#A=B0T#QMR0K#1N0 #%Q=0KU#aQ=0KcQ=V0K'1V P݅l @X ewH P"/oH xOQ`f@2. pM oRPЁ<0H m@dF^ !6ـ20#60`#@(3jE* nʩ *@ \aF`Յ] U ٵ8 [/$B9EXW" !ͮ  ` fрFUaA` mh_mce[A  ͯ[ .BKp%` n$-B%@!FY2`+`jʴ*@ PdC[( EmaQ@QV@  ʣ2` ;" :@ v;d͡ପv !,òR0K#1N0 #%Q=0KU#aQ=0KcQ=V0K'T U5%E@P"3@ p\-` 9f F B"@rͣ 2( !QrA63@h!/ 4(3j6E,H\3@mn @,ffma(3kX3@h! 6Ͱm(3l3m 63j3m63k4fp 6Հp@CCo8 {lrTͻmmf fhͿ ! LͿ`m KA%@` p\4-h@1f3Y*]Z̴R"@r͡` c1UhB62D M@46u-3j*Ā3jx$Cm_fT;hͬ@ B _.h!@ ,ͳ  y@88YC 9D !,ʹ T!/ 6pPCo@ \0CY@D8FYl@IYBY3@mJffmSphp 9D8(QD8(V@Yͬ"$mjf **#=Q&msf@` FD&`EVUL`T$BFX82і,`4ͦ `4Ȅ}`@Ȍ@hʷEX" 3@)^ !A`FD& q `f0K`fՠU@і0DdBi#"Eeø`b(EtBFX<~@ e A@ a}`"EtBFX<B@`m{aTAr`U82` Y!/UL` ܀xݕc@D(~1sbYxFVjp 4p@@mfQ @9rfcxFpg'XV^m*@1 a`A}`m{aTA9rm#ESX8<  aVQV@@ X «@"$[D e e,ò x, 0² *@ aQV@r "2!4V9 u '3!'ͪ͸P[x .G%˓@ m(@[4e\Q(dGfmQVfذV"EmePa"ɠ#dp)dP;`< *1GaҐa` mh0#YUbWB9EXI",f`6DM>-XVB K2 ffUmf +. *Ƞ[TU@%60`0r64XwC@pr^l۶ .Vmwfm)of0Ͷ`M,íb#V^b,*QL9a ͇X٠$cQ@3 @Fp7*h xVP*J! .Vf,*V f *@,*ū*߁XUb,#up69LhۖʷbñbEw< Ub, *@* U* Ee`4m`D"m*_KU",*ū 0 XUb,#up6x @r ,ʩã:*SO!PUBEXF" :<* FORMATb$Tt$.CHL5uH CSAVED5$UH.MOVETeD(STRLENdd$1MFLTERRKRdEMR.DLISKRDĕ1B.DSTK REM]B.DNGK RD4M .DAD BDF.DNE  BDX.DGTKU RDHaQ=.DTOXK`RED M~.DML10%MZ4 pP0\.K%@ rP*@ :`(h#sla0 £ `*Fw ù#b 0+*@ :+* PF?qa\@c`rk#DUdF~cHFge,3k A XV^J²VmRV~c@,QVtDXU'1kh*ȱɩȱ0 Te)ӀԓP`dd$I@"8@ @9'Z.%@Z.%Z. %Z.%Z.%E-@#+:XB\#uNb3V^ b,|Z Dhʪ@! '1"E!8Z@˔#3n Fru`E"62`` H9rfcx9NYx,uFm~e\"r?sbX`V Pʠ`"#V^b,!i.So'1+/a" :H!i.So'1+/`U@U 4u)OY DETLF~^TC@Al:V: vUrYUu `y^î`'\EX "` X UgŻ€@aXڲ "pR)he3@m f ! u쫈*`10DXux[^WU\#`@E;:@ vU c`!꫁ ̪*!P260 *f*B3>0FX#`rªB6XM@:4: v`F60u@Ul-o#j "6 V00`_ qF"60Y,B3m ^*2z fD"&"(Ff@ir"b"f *'Fgir"bJf ")Fn)r"B3 *ÿ'°wd@ @V~D+aYpF $UgtFOWW WaZpEx w3o,! Ge^`AY$ y$XWX^ XW|[#ڿ:d `(2 H0ڢ2T.GqXBF#,ͪ@V"3lv|`@mR`~#0Fw8(l`E@jʭற9'QVrٵdY4l7Nq@p7MAufce9p_&fcyr3 phh1v4 @z2m Naa:M@;mpVmxo(r@ $>0:mP@f0&9Y`kvU7Vm pp39?x,um36ڃ8\t ,ۂ å¬|Z8ef$3o`34po3AxFVjrH6YLU1 {ii*IL誉ʩ \i @8\jh*ȱɩȱp*X)Ȉ 0Z~e)љ f\6eȱf\eɈh\ehQx\eɩh\$ɉ \ɉ* \(Ɋj \Ɋ pl\zɊj@j\ʪ@\ȉ \ȉ* \Ȋj \Ȋ  \Ȋj \Ɉq(\*葀 \ 葀 D5eHp CTP__쀲#.EQHɀ#.GT4(( .MLRDE.DLDSRDĕ.DLISBE5Hψ.DPSHRE.DSWAPREE5H.FLDPRdE8.FSTRDH.UTODRDH.DTOIREDX.DTOXUѠTDe@(Ԡ\.K%*eXe 3@9'I*Z¦,ç@[ Oj?M*f mfeSV?*!@` @ea\@)-aXa0e`kæk %BR/`*s#udEX yPIO=iR`Y|@Fy 1FrNb3sm#X*@V` X2EX@"#?? +üj0Y,QVuin*$asa0HXT K aR@+ ,V?;v(A`;**@X2`V`XaجEb,!=cK`dE"H2"@Xi\A񀁀`x$XW44`וu*@V 'X{GV y_Pn>D 㸬:@Cv\ `X ج ¤Ap$p˂1EX*@pHF %W)aU' |`@7 4aW + 8\ Èl `Bev880+jA @&aY'D d"DX0CEX".3n*Z@˔#3n Fru`E"6Hb,+egXZ@˔#3n Fru`EwBPZ@˔#3n Fru`EX#JC"2X!}EX(" 3i U!2"@ ;d!X8U&6HO31Fpg'X:XBp Df0&UM)Ff7nX Aa@!(" :!X@]/g pB\ ` +4uA"@` ȋ0b,+egX 9YDEu U)e*@LWXB09D *@@2"@24uABDXHf"'#}!r"bf"#gar" $f ""+FT@r"jad &()&QV de$U1aA~MODF_MMX rͰ * #+:"3meQ09/ΰIn9^o\r{6E{-YTdͯ0V0$35F@UtF#3|aVa[g7XUUF~0`3E"!4Ubb1n?9 XD sukv!$`quq @aVtF~[*1c|V~s ` #>`A\ì+}R:eP0XpM]@FGpt*@*:¤,Hf Lt#)"(/F2b"*‚v#/Dj2blgD"&"(FLirz$QPTd`F6@tgp+ u$wV!l ¨$ò6aU`fb@?I+00F 8F~[#?+L GM+ $?b+ V+k`0;+4 ÿn#?cg1F6!b ; EX#?-Wxy ?m*#BWH^g*+|Ϣx~+v:Bx[8aq> *`%*1D )y& HHApV+`XTFw[ V~[0;Ҧ@Lx&()&ǀ*2b*x#&*")G@)r2b"t#&"(GK!r2u("&$T@)r"b"u`"&$GW)r"b"u")Gh)r"DwD"('G1r" t,"'#Dir"\Ȋ걀 \8S de$I@\K@ 4`09rAxFVjiH4Z-HDf@VrA@xFVj@E I)ʑ \i \-jh*ȱɩȱ #I*Se$Di@x"3@(9rA@xFVj@+4hZ,PRINTFb$Tt.CHLB5uH CSAVED5$UH.MOVEdd$HȠPUTCHAS e5$I@\\K@ 4`09rAxFVji4Z-!4B9EXs0Y!A #+5EXF", j I)ʑ \i \:j4<mK@ ڨͩf maѠ&>ThͿ``*@ %ɎTDeȠ.DML10RUDH.DSWAPBDH.DLISDEh .DNG`TeD@Hְ \.K@% pH f3c4# ~ b&Ԯ2~#7 4A|Sq5h4|1 z_Sјz *`%*1D )y& HHApV+`XTFw[ V~[0;Ҧ@Lx&()&ǀ*2b*x#&*")G@)r2b"t#&"(GK!r2u("&$T@)r"b"u`"&$GW)r"b"u")Gh)r"DwD"('G1r" t,"'#Dir">-YW U"P4eW1}`FX@B^ "62X#"D e X!"2X!*@`(Ix,pB-dE ^ 52#/ _Vi/`VWHBFX<i HM[Da٠1}`@і,!X0L@D e B a}`8"@E p8*QV˔U8L2fGXYW u+r: vU)Ff7n FrueY! vC9D)~1sbYxFVuNb3X(^ e X!/wLX!?0zL!%E-@#+:XB\#uNb3V^ b,|Zx Dhʽb! '1"E!8Z@˔#3n Fru`E"62`` H9rfcx9NYx,uFm~e\"r?sbX`V Pʠ`"#V^b,!i.So'1+/a" :H!i.So'1+/`U@U 4ud"DX0CEX".3n*Z@˔#3n Fru`E"6Hb,+egXZ@˔#3n Fru`EwBPZ@˔#3n Fru`ETSe44e@ո\K@ 4,!.Q(9/Q $r@E !'مVR@`&AhʩEu\CM@" :!QVr@DEXhh) \i \(jh*ȱɩȱ0 Q(誈k [hJq\8Sde44i@ \K@%@"3@ 9/α,!.Q09/Q /r@E !'مZ@X"K`f !XYX",ï `+4hDXU1 H)р\jꑓ0 jH \rʩ誈qof09?x,ui`+6\h ,v ô|Z(ef"3k0+4pkh+AxFVjr 6Y4U1 ii*ILH)ёX\Hjꑓ@JjH \)Ȉ J e)ѐV\eȱPF\>eɈX\MehQX\eɩpX\ɉ \ɉ* \Ɋj \Ɋ \\ɊjZ\ʪ@\8Se$Di@x"3@(9rA@xFVj@+4hZ,PRINTFb$Tt.CHLB5uH CSAVED5$UH.MOVEdd$HȠP-`Fh5  d25Q YRpQSddTI=AP^5+p; L"x SZ4"OV (efef64Z-HDf@ qh-2f "Xu8i@!4aU " $B K2U-Uqa` /Q(9/VhhhEf ,!"Z!-rAxFVB K2 H)р\jꑓ jH \p ;ihp WȪJI\8SddDT@԰"3@hD&*(!@,!","`4ȄYx,u@Df 2*QVsa a͇T e"BNbH!'1(u@͛{W u*!G.Son2E@ eXV"3ՕA UDE/60-WU0rf Df0&`( Y  :|Z8r6Ɂ4Xt u+*QVs@іa![-T B9EXDs`0-T Bu@BFX<U,%] x%1)8~@ oRP<m@dF^ !6ـ26ށ@(3oX#JC"2X!}EX(" 3i U!2"@ ;d!X8U&6HO31Fpg'X:XBp Df0&UM)Ff7nX Aa@!(" :!X@]/g pB\ ` +4uA"@` ȋ0b,+egX 9YDEt( Ub12EX! ",$94 ` xdV#xGeBra h"`hʣb" |Z EX0V"7X3h*@if ͦL!,:P!X@ZX@F"$~[:X(2 X )hh)ɱ\8Se544i@\K@%@ hDf@r^b,!,!.Q09/Q 0r@E !'مYXeUV_h@іa[ X_mWd_Lt)#F1r*:Jt`!&F!rd""*`&"J2 r2le NSe44dM-%A 2GETNUM%Mje\K@'4p. hh K hh0K pxZ.KC@% 4\&A!ȄR1c2LÑl5 CZ.*p< AH ` Z!X(BK2E +/UTCHAS de$I@\K@ 4`09rAxFVjiH4Z-HDf@VrA@xFVj@E I)ʑ \i \-jh*ȱɩȱ #I*S e5$I@\\K@ 4`09rAxFVji4Z-!4B9EXs0Y!A #+5EXF", j I)ʑ \i \:jh*ȱɩȱ0 Te)ӀԓPU dd$I@L"8@ @9'Z.%@Z.%Z. %Z.%Z."@r^ p$!b0s0Y1 H)р\jꑐ@ jH \ȪjSQPQ de$TE@0"3@ 9'Z.%@Z!XG@XF"of !%Y" :*`@Օ] #+5YDE/4eVVdi ͇O@tXU1 H)р\jꑐ@ jH \U誈k\*eɊԒU`deu$DY@ ռ"3@ 9'Z.%Pr^ #3٠@a V:X20ef#"Ee-@E* vʷb*@ Da6`Յz U ٷH x/$B9EXt" !ͽm ` f6UaP1` mh_meRA  ;`rZl .B%@K i @[4eTpA@(dBfmQVfF Em#eX A"#d dͭ0*@1Ba0A` mchh !YUbUB9EXh",fܠ&DM>-XT|B K2 fؐFU@mf *" *zVU%60 r64XuCpr^lڪ.VmfmY@)HV^ K6B/6d :X2" |ZX߁ EX0V"7X3i*D)ͱmͲl!,;pá0Y` ٷ| AA/$Ub,ãɎdd$H.BEGIN4.SWTT54dXCRETRdX͘STRLENddD5eHp CTP__쀲.EQH`.GT4(( .MLUՕ ddD5eI@@\.%(`@eaYxVX+' ²1J+wX ` G@ UB2XtB K2I* \i \jh*ȱɩȱ ZeȪ1\eɩQQRde4TTQ11~P5p BI24KZ!{ܦHD \0:'1 / G@UBXeT0 a`89/20~VB \IxFVj@@IxFVp@h.Vh,B: $#9 '1BK2TB Y@Ix,j@ 9|@f !"BI24%@ @Vh L!%Ͷ @rpl ͥ t!Q /S#+8Y]@CRETRdX8APUTC_2UU`eUD4@`"3@ ,rA@xFVj@E i1 \i \jh*ȱɩȱ0 hJsUTeUDU%)@`"3@ XrA@xFVj@E JQ \i \jh*ȱɩȱ0 hJsPTUdUD5@"3@ 9'HDf l!%Y!&ʦ!%YfPE* k \i \jh*ȱɩȱ -eȪ3UUUEu@D"3@ 9'Pr^eUEA|\.K~?K@@`"|DXX!4 4 aLNPRMTD@LNSECe55dT8$MEMRY E4$HERRNO_b$Ttp_EXIT_d5$EPԓ d4D 1M}~CROOT_QVUT$DeIQ}~P85u ]@@@VP +( eY@ h`%@r !02rhp/%C@ Tph &:QU %:0 #)`M]R2PUc IR0KSՑc!Q ~2|˓ԣ$ :22˓gUTtUEu@$"3@ p-f !4"@5f_meS ` f4d@*:*`!"F!rBd`)FA* ,`!"F)rjz,d!Qrzd"P@rbUTtUD5@x"3@ 9'Z!%Y`4eg 4e\P /2d_o)-)Lf[`4@FaU+4hA IxFVj@IxFVj@Ix,j@E"*2**g !'Y222e8 'F\r tg"Brr,e*FGr4e)NSUeTtUD9@X"3@(9'@r^/4aS /S#+8Y*_Hef?[smeg[&:SU %:0 #M]R2PUc IR0KSՑc# F2X˕QgUQd4%Tde89]MQJGETBUF=Mn%@ hDfD& !02~[x$BhG<:٠*@K@Ys YII9=~2ːS6,F2B˓'Sd5$TE=A9~CLOSE_N~ K@%%@ pp)h`````(``(``(``(`` `` ``@o72y8t6΃0T#pP)@: d9"!Ht B K2TBD #+5YLhB 6K jpK j@Z,ï ",*1^e,f 8*@ 2^ 4aZ`h BD8`Ma`"H#[2ef^e]pe(9/YUf0hfi0O5*p0i/Q /m#f`m)pY`,j! Ɏde4TThFTELL_b$Tt.CHLB5uHΈCSAVED5$UH.MOVEdd4ϨLSEEK_ʈ.EQBHɈ .LAD4( .LSBE.LLDSRĕ.LLIS5HP.LPSHR.LSWAPRE5H .ITOXRUD.XTOIUTtUE5@ը"3@ p-B%@N@X" 3h* i ͇C i9Ef `4 #3ٵX@ $BK2誊k \i \jh*ȱVhh@[4eR 0B 9Y\m eT 0Y1 H)р\jꑐ@ jH \< kP\8eʪSUUUD5 1=MFLSH__M]@ 4p!%Y`4eg 4eS` 9/9XhD #+5L)Ff7nNa`fHDf@D& !#_u@U0B dM_+64XupBI24Ȁ@0B `de_ / U@VBXh4hX ͵ !%Y"!'1Vd@mp.%`" hPKk"3@ p- ` @(r@E!&OhҀCyDY`C"€"(lsLX!  %B 3j* "2!5S ݕsLX!c  ^ #62aFD&Ͳ +`4$͵ ô@H "2!4ePDma^A me_0DdBhsaa+4h jʤ"*.Vhh @( YE"@"4ٷ_D7!@a(r@DCAͪ-VUV ;.!HD \0:'1 `4g!V $#9 .So'1+/Q@1 H)р\jꑐ@ jH \tH( eQ\eɈ\8UUUE5@"3@ 9'Inʦ@HM4h_hʥáPͣ Lt*)1r*:Jt`!&F!rd""*`&"M2B d"QUdeUE5@"3@ 9'Inʧ`Pr^HM4hB/4eS aɎdeUE5.BEGINB4.SWTT54dX$#9@IFr0Y!A ##K@ j4huA IFr0B e!'1ɒ!" ū*@GXg!0B `e7 9BNb3&<ЕQ9]MQJ:UQ %:0 #M]R2PUc IR0KSՑc0511=2TUc5@ =J2F˕QUQe4UD%Ti@h"3@ 9'HD kfUdA@FeT(9/ s #B Nb3 !@2!bHs1 H)р\jꑐ@ jH \8PQST$19Q5BLNSECTՑPbDT%M =RERRNO_QS 62.9l*0!{?VBEY"3o*eD{YQ  ehg!V\QVZ'1V\e樫-b6C-e( ef ef ef.@xFVu@XD 62`Ȁ9EYh"Z'1BEYx\BK2f@!*_9 9/αHR@!4BK2TBK2jZ. 99B!'1 9@ Ii9m BNb3eg[&\ɩȱ XeȪ1P\8QUddtUE5@8"3@ p-`(9rfcx9B2ef4h 2` '3" 3@[a`iڦʰof֠U  9/ζLt##)1r*:Jt`!&F!rd""*`&"L2 :*e"Nrr,d#NU`dtUD4@<"3@f Lt#! 1r*:Jt`!&F!rd""*`&"B2 :*d!*#)PQUdtUD5@Մ"3@ 9'Zf W@'U0P" `$BmeRP X!peD @$#+5Lf,*@Q /Q / Vhh]bVXB9LhM`6:'10Nb3g! !٠*瀈_o)-)Lf[!fIFr!&HD kfb@eaʹ ,2!`rXfE[@D #+:" ^!%Y!%Yu@@IFrS"Z.Spͯ. B K2Tirfcx9N[D_md@*v#!'22bB`!"F!rBd`)F@j ,`!"F)rjz,gt#!*F@J*d<){rA +4hD B@,;`4EXPF"€"HG,Z'1i *倘 %B 3i ܀ %B 3m0 *@)#"Em倰 rU\Vm h@3 NtSpi6Dcy@r2 '#)i7BUY"L,fpU40DdBh͠-lʪBͮ-ͤ !`NVhf H$ eR"3hhB2c !9Q<,P I==Q~:QVU㬠U }~:TU %:2& #M]R2PUc IR0KSՑc+Y}a%Q~2SS:55%9~2P,`9MQI R2c%5=A9~24ԑPU%Y 1=M~2&SՓQSc-? -W ۨ.%BD&h$Bi@.hʰFHDJ "ìBE~D/%!%Y-(ʶBEb/$UB/6284iVr@eaͣ,VhhD y@-ͷL^!%XBn*D!`{-;LX!V _KA@xFV˄@@ o-U0BFX<BFXD2VhhA@(rh E: 0"3@U/і 7GX@#>D!XDu `of !%XKbAxFVjG\BhLXDXDiuLui e HDf(9'0[\!XLoXLF"`"&of !%Y͢ M)#"EmX! | |vU݅I/ 9/αHRQ xFV! #+D IFr 9DIB2cA=M%Q~0QS !20 #  MY0ԑU#5=Y2<T& !9QpSѠe4Te@"3@ 9'ZVhh !2~TB:"@$!&HDB O31Vpg&+4hhd@`f */2X`uLU(e!'0B3@U0B"e~7[#9@XH &:Sї %:0 #M]R2PUc IR0KSՑc(`}%9~2&P2` F2˓c+` UpS U}%2EX8V"3Օz@LX!|tEX"3n`*逈A(9Y0DdBh5EX͹-πAxFVucQQe} R:SI]}I;Uԣ %:0 #<M]R3PUc IR2KSՑc<@5 =M~3tWԑ#,5}=1~2ԕc7I}Q 2HT"@ !9Q3ːS6,F2˓'PQ e$ED(I~_EOL_Wԑ%3_p)pQ@. @h!%Y)B dM0K`Rf EB Z. %Z!%Y"%"'* @DH h٠ kegX Egū* "2!4V^ Pr^ڮheg[&<ԕc]I%Q~:Wԣ %:2 #M]R2PUc IR0KSՑc3U =M~3nSՓQSc1 9}%9~3ԗ-9IMQUMJ2UTԣ@ }~3T"@ !9Q3ːS&LF3"˓#',U23.˕Q%`,1N3˕T),M pSQRd4TT@Ք"3@ 9/αHR݅J/fE! 0 eb,BK2w@"`$5YDB9LhM`4uNlQ@f r !(2rhpج !%Y3@h!4Z$Bk40B/4eTp "/$B2cU91%9.0QS !20 #  MY0ԑU#5=Y2`Tԣ%  =M~28UTԣ" %9&2T' FpP`d44U@"3@ 9/00ea,TB E!2D&@IxFVj@IxFVu@BNb3u@`IBNbs0Nb!'1BK2ih \Ri \jh*ȱɩȱ@ <i)ʈ1 eɊ\8QVP dUT4a Y~P55 B \Pr^d@mf@EYh T/i0d@XBg! 9DIU]b0s0\r^ `es #+@`m:"P$!nQ@9/ 29BPr^ C6Ɓ4Y0 B2B 6A8FFf0^ ۘbB+6Z,~!b(s CREAT_TTCLOSE_b$Tt.CHLB5uHHCSAVED5$UH.MOVE_CEOF_%5EU5(8BDOS_4UEU5(GETUSŔdd4$hSTRCMP$UE BDF__d4DHERRNO_.EQHˠ.ULuIRS eEE5H%= Q1~RAW_RDUԥ_ pK@%\ K@Y1 H( ʊ+H \?i \jh*ȱɩȱ*~ɩɨIjHghjQ i)ʈ1\eȪ1&\/eʩ&\eʨ\eʪQ&\8UԒU`eu%ED]I%Q~TTY_WR MkGU ZegXR)!4B K2TB K2TBK2TBK`Rf EB Z. %@Z!%Y"%"'* @DH h٠of J!%XKbAxFVj@^Z-*39~P5 p- B$"3h da Vhh@UB!K23ih*1D"H- hDf0U*! !@h@@ Uh>-YVHBL@` ɎUh_FIND_b$Tt.CHLB5uHȈCSAVED5$UH.MOVEe4UDT@BDOS_ÀdU%$.EQ2YTU`d4EE@h"3@ 9/αHRXd@2J `!"F!rBd`)FA* ,`!"F)rjz,dH! * PSd$ĵ$E 1-]I~P5[f 3h8D Ppiof F!%XKbAxFVj@ZZ-*3@`4l8Du@ >-YTPU`r^˔Uh`jʢ,t*@V fܠfe*@8͡%dM0]b`r~WD #+ ,`4\fְEʫ,`4YhB K2$BI234YVBD #+5D #+5D"@$P˕4Z- /`r~ᐉb s=W`i@)Ff7n!2Tp"3kx <%4f+4f۰ 4a " Bh0 G!'1(9f0mhʥ`"!'1B$NbEtX"PrͿ "3lB$NbPrͦ, L]bs QY1 H)р\jꑐ@ jH \JjjQ nHk !ȪJI@ ceQ\ɉp\PɊJq`\bɉ \$ɉ*\Ɋj \Ɋ  \ɊjP \ʪ0\8TU e4E@`"3@ 9/αHRȫiѐ H)р\jꑑ jH \0ȫjVPdUT4a YBP 5 B \Pr^2hB)g6K hK hD'@#+5YE"@28!)%B 3i*m BU\Qf  B 9Y(rkEHh/_HuM@B\9D K@- VmhD(!:%Y~VBt\#'1B E'@~1sbYxFVujʰ "|Zrp-I` Ͳ !6fҐDB 9L 4E!2D& "1n¥@D_Heg[AxFVjpE}8!%Yb@mF`l8HoH D@f !XE d0@@mte[V &ʵ@k@ `@@aP"V"|v eawB FWX}SP_@ !$\KA@e@\KA@D  `B O312`V PeT `@+4hDX aU#`fр a0V@ [@GW&@9L+hX0F" :* ͿPrNPB K@ `4lHDu@ >-YTU`r^˔Uh`jʤ`,x*@V ffdM>-XTBLH@[6 !!4iuAFf7@Un`4hH B K2r@^Z-*of֐09/ζHDf԰ 9'Vhhʳ@"!%Y!%B\pr^hD" 4Z" e]  X!' !'3ͅArfcx9BB I248AxFVup X8F|Z^  4eT!4VmhL+/ Qf@&EH #+:!C ##K0X** 24aST TaP %eU`U ``&:ԑ 1-]I~2T! MY2XKTc"I2KTSSQ`e$TY@D"@9rHxFVj@DM(ef64Z,VhBh(D 4Z!2H(D!P- "/ñ` rVmWhB/4eX "MfK&:SSQc %:0 #M]R2PUc IR0KSՑc1IMQUMJ2P%MQUMJ2PВSc0II9=~2ˑTc) 9pSSeTĔ@,"@9rF@xFVj@DMb@D!0@ +hXeW":٠ Ee橀#"Em?'ђ!#0rVhhEX!&.Q 9f $O&#a 1B:2VPՔ# %:3X #M]R2:PUc IR0KSՑc3 95=Y563P, MQI Af2ВSc251I}~3:T&,F2˕QQTTE%@@jAhj([ʷd8Z 4 4 a1 8Sd49@"3@ 9/Pr~MѠ+4hjʦ`+4hZ"Ɏd48.BEGINB4.SWTT54dXCRETRdXTtBLK2TUVhhLX3@U `aVu62 "@KU*IxFV0C$BheaVunx .Vf@y`@eͨ .QVuI@Ff7j Eͷ R`4XwVir0D#9 Ub6Fr````V`@* ʻ"@r^ 9B``sX"DXiuIFr* h¥ mMaR!V``!$'1Ub2`@/d@2z`!"Fm@!rBd`)FA* ,`!"F)rjz,g)&DYr*e&*F}Yrdd *Sre)FVrjde *Nd@* zJ`!"F!rBd`)FA* ,`!"F)rjz,e(/_@r tep"k@rr-Y.)!.!@S~ `ŅM@-9Wnr\VG&aU` ceȱ&\~eʨ &\eʪQ\8d$D4 =M~CPM_MG6:,*Pf@zɎd$D4@BDOS_D5`.ARG1R$s(.ARG3b4dYST$5 %=M!2P5%f o,*bV+C!X"E@I)kР *H1 \e!*Hq \8ВS`dd4$@פ!$F^f!F>1 `z£qO*?,*paҐ(X fQk :A 6; UlaY?@b@NcڸJ5 ; 0 Ҹ cP .eZ@*ހYV0r6Ц8gVgYκmS >TT.JuSXlV\0Y!Xh <,XTWnX0Y'LF <,XUɎddTTQ`e5tY@ԼBXaY8VVgYy[F !L£*^:0d@2 j,T`eDUXQ=1=]P5,ڢ J50nڤJ10nɎeDUXTOLOWEU TD@0ׄ"3@ 9'K hh^ "4aRA meSFD&h`@Em$eU0"HMa`E`m@eV`FD&p %BDeB3@U(3@h  "2!4V`V< *`!#G~Y/*=D4 [qO0#D@4P nGb0+ Y0a` 0#R@50 nGb0+ 2Xnk $6`V}- ²M+ZlX-HLFaZ@'b@,me\P!dl*@ xͳ÷@L0L÷@L0@L;ͳtʷ@L;͵÷@LXL÷@LX@L;͵tʷ@L;"BE$l&>-T B@ *l.LLISRE8h.LLIPRE0.LSTR40.LPOPb5tp.LNGRE5H.LCMPbT40.LADB4(.LAN( .LXR4 .LLSU( .LRSƀSETMEMd8Ȱ.MLPSe$T511=FREE_Mo- ##K hh _IxFVu"bhDB K2U[@", |ZH ,Z@ #+ @4eUPVa(9/η(9Xh0$"3h (K kegXF#h#`V`Յh8EXEX(F#/"[݀ ",!%XK0Z,tʧ@"^IxFVuE%eTBK2TU,ʡ "^b1xFVu egYxFVj -)Ff7]n!%Y#ea 9L;v`4eaV f `4eaV f0UjTTdtUEU5(MQUMJRSTUSRMM% h4homh2d͢`Pt#*GC2*t))*FJ@1r ,dt #)r 9` #UT e4UD1=9)6P5f+ug!Esg^Phg!9B^#'β#u]eXFbde{2#j\%YpOFxɎe4UDxLONGJMT e5E$4MQI9 6P58@(a@9bdYXV^f;eS YLKvU2 l::7VLt))!GB2rl`e5E$5@pBJ²+7ܡݕFb6 pSTRCPYqX*0 [dˀ%@@ p0t!&G@@*Қ ,tX-)"GF"*t"M@)rjz,x #ǀ)r 9x #P1r ,`!"NSPRĕ811N.LLIPK B5H1AM".LPOPT Bx1QMR.LCMPST BH1M .LAN ԠBŅ(1 6.LLS TB%81Z.LRM Q BT152.LEQ `BH11.LGE  BT1U.LUF QRUD%Q=b.XTOIMO" 2u@h@˕  dhh# 0h# 얈HIR@ tS+p@E$ H:UETb**UXHW@R@ I+ $CZ@5*ހ3nXFaZ0z[Y"`_¦=K`Wnc %9&pДU4%$IMYMQ.P5:*-Hԙ4ڤQYj$BObF+T@hJIkҠ ĉK1p8TTԕ e4%E@@Ը"@ p-` p -`9`` (9/α[BLO31:$#3",* 9?hofb`r~@o eb,UXUQ H9/ζhh@[4eZ@ 09/HdMaאVrBRK2a-fU*m<`0]b^ l3@mh?mpk jʻ@Ͳ` x8t1 H)р\jꑐ@ jH \{j `\\eȪ1\ɉ\ɉ \kɉ*` \Ɋj \Ɋ  \Ɋj \ʪ \8U`TD@ "3@ 9'Z.%Ix, J@ X!XL@ áE X!T  "2!5Y X!Y !Xi/2#/ 2A@h0DdBh8C!2" :*@ū* 4aPVEh@ .LRMTH .LUMB.LEQ߁BXX.LLTBX.LGEBuH.LULBTXP.LUFTx.UTOXD.XTOI$LNTMPЁT4T9UQ`2Eh U.RM˕S`TDci@մziFK6:ϫFIͤ@ꄀK@s#=-T^W=6)4!}Z2O"y^GXҪKj=Oy0gxXU8p&:ˑ U:*˔c U6:QUM# 9pQ2 IN.LS˕TUp)!KRiQHB'գ%{s~|Z_eSHuNFKTϡxuR.ML2%8`svU"d2"`s $#+5EXF#hg##+ `4r D#9 `i9B"!'1iI`@mQeP!f !4"np *@Hu '1B: $#9 ! 2f & ;Z .%B@r^/dEX8F#?̪j!"D&0eb,iup60(ef4]lښʳ B^KEͨ`,,*˭XVdBK2TU.h³ L:z!%Y*1D#9 pBNb3"H) H \i \jh*ȱɩȱdɩɨ\ e5E$5 @ԠBXaY8VVgY<,YT4w[LF a  d@2rU e5E$4HMQI9 P5=@(a@9bdYXV^f;^eR`,n;T&#0>-Y1  jIh3RSV dDU@|BK2?.Tpnʢ6  IjɎdDUSV e$DU@Ը!%XFnu@zF`6<,YT+?.T``D Ɏe$DUSe5E$T@dBO31"+̪*`d@2b*tUQS`e4UDT@p!%XFNfYbʣ@1-C,SETMEMSՓQS`ddT@H!$aY8V` ;¬*a\P!U`v ^=`U %W xi܀\;n,Hg@@dVPVbmp؀+@8$# XW@bn@+@x$# XWbn0HF  K`&aP %"!L ¤ ,HyFaSHꎀU-u@RU<X=aTpUPì@# X GT?eWHWCG;ì*aV$BIǕî Pmf(Fl 傩zoh ł (Fǀl n`mf!@ ` hXW }VK{@X,+6m߀LFa^0 $ yFa_0! `B;*sI` Fm 4 A .LS2U)U2 6.OR˖R}Q֌}֌}Y֌}U֌.AN24.OR2)TԠ2H F.NE˓`2tX 1R.GT˓24(M]R.UE˕Q2Tx U2P5>-YTD6>$TB+'ԛ L$!FK}SL Ld` LdϊT>ω7 7 |gգ%}Iω:ՒpHD=-V<Fy_2HF#ap|°3o`]gԙ4>xuRgLt'*GBr*t\'"Jrb,t#Prbu #GWrr-YTD6>$TB+'ԛ L$!FK}SL Ld` LdϊT>ω7 7 |gգ%}Iω:ՒpHD=-V<Fy_2HF#ap|°3o`]gԙ4>xuRgLt'*GBr*t\'"Jrb,t#Prbu #GWrr_flags&_EOF)!=0) #define ferror(fp) (((fp)->_flags&_IOERR)!=0) #define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF)) #define fileno(fp) ((fp)->_unit) #define fflush(fp) flsh_(fp,-1) #endif er */ } FILE; extern FILE Cbuffs[]; FILE *fopen(); long ftell(); #define stdin (&Cbuffs[0]) #define stdout (&Cbuffs[1]@@/* Copyright (C) 1982, 1984 by Manx Software Systems */ #define fgetc getc #define fputc putc #define NULL 0 #define EOF -1 #ifdef TINY struct fcb { char f_driv; char f_name[8]; char f_type[3]; char f_ext; char f_resv[2]; char f_rc; char f_sydx[16]; char f_cr; unsigned f_record; char f_overfl; }; typedef struct { char *_bp; struct fcb _fcb; char user; } FILE; #else #define BUFSIZ 1024 #define MAXSTREAM 11 #define _BUSY 0x01 #define _ALLBUF 0x02 #define _DIRTY@B scanf_fscanf_ sscanf_scanfmt_skipblangetnum_printf_!fprintf_"sprintf_$format_&fmtcvt_2fopen_4freopen_4fdopen_8fread_9fwrite_;fseek_=ftell_=gets_Cfgets_Egetchar_Hagetc_Igetw_Kgetc_Mputs_Pfputs_Rputchar_Tputerr_Uaputc_Vputw_Xputc_Zflsh__Zfclose_Zungetc_bCbuffs_dnewstreadgetbuff_dsetbuf_glnprmilntmpilnseciSysvec_i$MEMRYi.begini_exit_ichantab_lret__lbdf__lcls__lCroot_lexit_*tʫ`i#DM!}2`i^!u#^!vʨ !"* w`i^"`i#DM^!u#^!v§`i^!ltʢ !}2`i#DM`i#DM+^ç4!%"ê9!}2é!}2! "! "á!}2!"!"á!}2!"!"ͯ> <!***͠C!9ʠ<:©:ʭ!9~#fo##s#r++^#V!xyâ!xz!9~#fo##s#r++^#Vs#r*#"ê7!}2`i^!^t¯`i^!~tʫ`i#DM!}2!9"`i#DM+^"]{ʩ!**#"+^"|ʯ@*%rʮ>!!9s!"! "!'"!9~#fo#s#r+^"-rʡ !"!9~#fo#s#r+^"*0rʫ !0"!9~#fo#s#r+^"**rʣ*##"++^#V"!9~#fo#s#r+^"à!"ä!9~#fo#s#r+^"*s#^!tʠ* u*"ì*.rʦ!9~#fo#s#r+^"*rʩ*##"++^#V"!9~#fo#s#r+^"æ!"ê!9~#fo#s#r+^"*s#^!tʦ* u*!"! 9! 9^#V!rq!9~#©*^!sʫ!"æ*t"é**u"*sscanfPP sscanf_ csave scanfmt_ .anq!9^#V"!}2! 9! 9^#V!rq!9~#¤*~ʪ*#"+^!s!}2ì:¬*+"^!s!yæJ*|ʢY!9^#V!xwyäZ!9^#V!xy*printfPP printf_ csave putchar_ format_q! 9! 9^#V!rsfprintfAPP fprintf_ csave format_ aputc_q!9^#V"! 9! 9^#V!rq*! 9^#Vsfopen- fopen_ ,freopen_ csave newstrea fclose_ errno_ strcmp_ open_ .eqrr+ww+a a+ xx+rsDM|¤!! 9^#V! 9^#Vͬr! 9^#Vt!DMî`iDMx­!"u!! 9^#Vvʡæ! ^#V! 9^#Vw"xʦ !*!9^#V!s!!9^#V!s!<9^#Vlcreat_vopen_vclose_vioctl_raw_wr_raw_rd_Rd_tab_tty_rd_read__Eol_Wrt_tab_write_tty_wr_lseek_posit__Ceof__zap__find_isatty_blkrd_blkwr_rename_unlink_close_execl_execv_execlp_execvp_ldr__calloc_realloc_free_malloc_bdoshl_bdos_CPM_bios_bioshl_fcbinit_sbrk_rsvstk_qsort_getusr_setusr_rstusr_setjmp_longjmp_strcmp_strncmp_strcpy_strncpy_+sâ!*sà%!}2! !9s! !9s! !9s!!79sͯ> <:§'!9~#fo##s#r++^#V"!}2*+"#|ʦ0!*|"t¦0:ʠ,*!9}{ä-*!9}t|ʧ.!*|æ0:¬/**#"+s!}2î':ʠ<:¤2!*s*#"ê7:¤3!"!!9s!}2æ%~ % DOX[c2dhos"x7í;*u#^!vʪ9ͯ> <í;!*|*{ʭ;!*|à<î"â!"*lrʩ"!9~#fo#s#r+^"!"í$*hrʭ$!9~#fo#s#r+^"*í-!"ä'! "ä'!"ä'!"*!9**v!9"**"ì/*##"++^#V"w"ê0*##"++^#V"*!9"sì/xc+d&o%s*u%x&,!9*y"**zʭ1*"*|ʫ5ï2*#"*+"#*zʫ5*`i{rʨ5!è2!"ë6*#"*~ʢ:**|ʢ:*#"+^`i{scan-hh scanfmt_ skipblan 0getnum_ csave .eq ctp__ .an .ml .lldp .lst .xtoi .ne .chl index_ .swt .le .itox .lt .ltst .lswap .lml .sb .lad .lng~s!9N#FABCDEFabcdef9876543210    !"!9^#V"`i#DM+^"|ʠ<*%tʭ7!}2}2}2!"`i^!sprintfWPP sprintf_ csave format_ .anq!9^#V"! 9! 9^#V!rDM!*s`iq!9^#V*#"+s!sformat format_ csave .eq ctp__ .an .ml fmtcvt_ strlen_ .swt .sb .gt .chl .lt8q!9N#F!"!9^#V"!9~#fo#s#rfdopen,BB fdopen_ csave newstreaqrDM|¤!!9^#V! s!! s`ifread~^^ fread_ csave .lt getc_ .eqq!9N#F!"í*#"*! 9~#forʪ! 9^#V"ä*+"*|ʧ!9^#Vs"tʨ**`i#DM+síæ*fwriteoll fwrite_ csave .ml .ul putc_ .eqq!9N#F! 9scanfnzz scanf_ csave scanfmt_ Cbuffs_ .an agetc_ ungetc_q!"! 9! 9^#V!rq!9~#ª:!s6o&tʬ!"ç!su"ê!s*v"*fscanf}ll fscanf_ csave scanfmt_ .an agetc_ ungetc_q!9^#V"*|«>!*|tʠ>!!*|*s!*|u#^!vʤAå?!*|tʬB!!s*ʧD!!!""py!*|"-tʢH!"*#"ãJ*+tʨI*#"ãJ!*|íJ*#"**qʢW!*|"! 9^#V}DM|¯Q! 9^#V!tʡQ!xr¡Q*xt¦J*Xt¦J!*|âW!!9^#Vpsxty!`i! 9~#fou! 9~#fo^psxvrʯ9!ä6**"*|«>ï;*#"*+"#*zʫ>! `i{rʨ>!è;ì@*`i{rʥ@!*#"î*fmtcvt&& fmtcvt_!""! 9~2G+V+^+6"+N+V+^!w#¨y/w#¬é!>^)|ڭg,¥s+= Z! ~*+"w!©#¯* +6-0123456789abcdefC ^#V! 9~#for"!"â*#"**sʦ!9^#V`i#DM+^tuʣ!ë! 9^#Vfseekn  fseek_ ftell_ csave .an flsh__ .eq .sb .itox .lswap .lldp .lsb .lst .lpsh lseek_ .llis .llt .llip .ladr!9N#F!`inss! ^!sʤ!tʡ!ä!9^#V!uʤ`i~#ʤ! puts;PP puts_ csave putchar_ .eqq!9N#F`i~ʢ`i#DM+^rsʯ!í! rfputs?PP fputs_ csave aputc_ .eqq!9N#F`i~ʫ! 9^#V`i#DM+^rsʨ!í!getbuffy Cbuffs_ newstrea Igetbuff_ csave .uf isatty_ malloc_ .ors!DM`i~ʯ`i DMtʬ!ë!`is#r! s#r! s#r`is!9N#F! ^uʯ!! s#r`i! s#r!v"|ʥ!! s#r!`inws*! s#rsetbufZ44 setbuf_ csaveq!9N#F`i~#ʪ! 9~#ʠ! 9^#V! s#r!! s#ré`igetcharPP getchar_ csave Cbuffs_ agetc_q!rsagetc_zz agetc_ csave getc_ .ne .an .or .swtq!9N#Fr"sʫ!*t"è!`inus!ív *getwIll getw_ csave getc_ .eq .ls .orq!9^#Vrtbuff_s! 9N#F! ^#V`i^#Vtʦ!9^#V!uͮ!9^#V`i~#fo#s#r+s!us!vDM`i!vYwʣ`i DMͤãs!9N#F!"`i~ʡ! ^!uʯ !ͮ"! ^x*y"! ^!uʡ! ^#Vz!! s*s!9N#F!"{! ^!uʥ!! ^!uʦ! ^#V`i^#V|"*! ^#V! ^}*~ʦ!`in&ys!`is#r! s#r!! 9^#V!ʯ!`in&us!`i yʮ`i^! z¨`i^! zʠ`i#DMì`i~ʮ`i^!>zʮ!" â `i^!<zʯ!" `i#DM^! z¡ `i^! zʤ â `i" `i#DM~ʡ`i^! z¯`i^! zʮ!`i#DM+sáé * {* |ʤ!* |" ä!* }" * zʬ!!~* !! !!! p! ͩ ë`i* #" +)s#r`i#DM~ʫ`i^! z©`i^! zʨ!`i#DM+sëãï!* q!ͩ Can't open file for redi9`i^#V! ^#Vvwxyz{!! s#r`is#r!9^#V! 9y|! ^}!9~ʧ !!r!9N#F!!p|! ^}!9{! ^!sʨ!! ^#V`i^#Vvwxyq{ç`i~#ʧ!`i^#V! ^#Vvwxyz{!ygetsj^^ gets_ csave getchar_ .ne .eqq!9^#VBKr"sputcharPP putchar_ csave Cbuffs_ aputc_q!!r;! 9^#VsputerrPP puterr_ csave Cbuffs_ aputc_q!!rV! 9^#VsaputcEPP aputc_ csave .eq putc_q!9N#F`i rʦ! 9^#V! srʦ!! 9^#Vs! s#r!! s#rbegin5*  lnprm lntmp lnsec sbot errno_ _mbot_ Sysvec_ $MEMRY .begin $_exit_ _Uorg_ _Uend_ Croot_???????????!z"{zs# y¨*"s*"u|äDMs¥!9^#Vr"sʩ!*tPYugetc getc_ csave .uf .an getbuff_ read_ .le .orq!9N#F! ^#V`i^#Vrʡ ! ^!sʥ!!`inss`i~#©t! ^#V! ^#V! ^u"vʩ *|¢ !å !`inws!! ^#V`is#r*! s#r`i~#fo#s#r+^!ss#r! s#r!`i~# p! ^#V!ʩ!!! 9! ^}~­! 9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&ys! 9^#V`i~#fo#s#r+s!uungetcVPP ungetc_ csave .eq .ueq! 9N#F!9^#V!r¡! ^#V`i^#Vsʥ!!9^#V`i~#fo+s#rs!9^#Vrection: $v*r!DM`i yʤ#`i#DM+{ê!!9~#ʧ%!pxʧ%!%stA:$$$.SUBv!"u!v!openZBLL2creat_Sopen_close_ret__csavechantab_.ltbdf__.eqerrno_strcmp_.an.chl.gt.ulfcbinit_ge* sʩ*`i#DM+sï!`is*tʡ`i!9~#fotʡ!!9^#Vfgetsll fgets_ csave .gt agetc_ .ne .eqq!9^#V"! 9~#fo+s#r!rʫ! 9^#VsDMtʫ`i*#"+s`i u«á!*s`iuʥ*!9~#fouʥ!!9^#VputwQ^^ putw_ csave putc_ .lt .urq!9N#F! 9^#Vrsʩ!! 9^#V`itrsʮ!`iputcuputc_flsh__fclose_csave.uf.anCbuffs_.ulclose_.orfree_cls__.sbwrite_.ne.eqgecrootZLL chantab_ uret__ ebdf__ Xcls__ Croot_ exit_ csave movmem_ .an .lt .eq close_ creat_ open_ strcpy_ strcat_ bdos_ main_ .chl unlink_ _exit_ errno_'''&&&&&&&&'v!!!w!:o&xs!"!DM!" *D tusr_setusr_bdos_rstusr__Ceof__zap_sss%con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:t! 9^#V!! 9^#Vͣt!u"!"é*"*#"* vʬ *^#V!wx¦ è!"y!!DMæ `iDM`i~#ʧ !9^#V`i^#Vzʧ î ! ^#V"! 9^#V!{#"*{ʨ*^*s{¨!"y!*ind_ movmem_ .an bdos_ .eq .gt .ltt)u!9^#V)))vDM! 9^#V! 9^#V! ^#V`i^)^#Vwu!DM!9^#V"*&^x*$~ʠ *$^!yDM! 9~#fozʣ ! 9^#VBK! 9^#V*ͫʠ {!! 9^#V`iy|"|ʤ*! 9^#V`i*}"|ʤ{**y~PY*~PYDM`i! 9~#foʯ! 9^#V`iy! 9^#V`i*ͫʯ{`i{! 9^#V9^#V)))!r3~¨!"st!9^#V)))!r6^#VBK!9^#Vé !& ^u!`invs!w!`inxsyz! 9!! ^#V{|}~!$ ^pqrsqtì!"stu  !!# s! 9s|vʧ!!! s#r!$ s!"st! 9swx!$ s! 9s|xw!! s#r! 9s.move Wrt_tab_ Rd_tab_ .an _Eol_ tty_rd_ .swt .lt bdos_ .eqt!9^#V)))uDM`i##~ª!"v!! 9^#Vå! 9^#V!pwä!p!9^#Vw!"!x4!"!y4*!p2 zʬ!""! }2{ä*!p2zʩ *!p2zʪ !í !"!"å !|"!y4!"*!p2zʫ ! }2{â! }2{ä}!t! 9N#F!"*! 9~#fo~ʣ! "*+"#|ʨ!* ! 9^#VBK! 9^#V*ͪʢ z!! 9^#V`ix{"|ʣ*! 9^#V`i*|"|ʣz**x}PYDM| !`i*}PYDM`i! 9~#fo~ʮ! 9^#V`ix! 9^#V`i*ͪʮz`iz! 9^#Vt!9N#Fpʪ!! 9^#V!$ ^!!9^#Vq!"r"s|ʢ!!$ ^! 9~#fot!$ s{¤ `i!~#fo#s#r!t! 9N#F! 9^#V"*+"#|ʮ%`i^! uʨ$! !r`i#DM+^!rà"! isattyBB isatty_ csave chantab_q!9^#V)))!r2^blkio[zz blkrd_ blkwr_ .asave .ARG2 .ARG1 .ARG3 errno_r!ír"*s!"s*t¦*t!4¨#4*u+"u}®ʦʦo&"v*urenamerename_csavefcbinit_setusr_bdos_.neerrno_{ʯ*#^*#s{¯!"y!! ^#V*s#r*##^*##s*###^*###s!s*s#r*!9^#V!9^#V!9^#V*^#V|! 9!vʬ!w*s#r!*t!9^#V!v¦!9^#V! }ʠ !"y!!9^#V)))uDM! ^#V! ^#V|!9s#r!! s! s! s`is!w! s#r!9^#Vt!DMí&`i'DM`i~ʧ(`i%~ʡ)å&!"y!! 9^#V"xʥ+!"y!*xʧ,p"*q! 9^#V!{ʩ.!ru!9N#Fpʤ!! 9^#V! 9^#V!$ ^!q!$ ^! 9~#for!$ s{¨`i!~#fo#s#r! u:¬$!}2!}2}2!! s! !s:o&tʯ"!}2!:o:o#}2&#s!":o&DM! 9~#fouʬ&! 9^#VBK! 9^#V*q`i*"`i:oy}2`iu! 9N#F!"ì+*#"*! 9~#fovʡ/!9^#Vs`i#DM+s!t¡/å+*positXPP posit_ csave chantab_ errno_q!9^#V)))!r3~¤!"s!!9^#V)))!r6^#VBK! 9^#V!! s#r!!# s!$ s!ceofzz _Ceof_ csave bdos_ _find_ .ug .ne .eqq!9N#F!#r`i!~# !!$ s!`i!~#fo+s#rsʭ!!"*tʠ*+"^!uʭ*"|¨ã*~«ã* pʭ:{o&"*`i#DM+s*#"ë*t! 9N#F! 9^#V"*+"#|ʩ`i^! pʣ*!p2zʣ! *`i#DM+^*ï! 9^#Vread ZZ Rd_tab_ tty_rd_ read_ _Eol_ bdf__ csave chantab_ .chl setusr_ .sb .ug rstusr_ .ur blkrd_ .ls .ul _f9^#Vt! 9N#F! 9^#V"*+"#|ʦ*`i#DM+^! 9^#Vrï'! 9^#Vlseekavv lseek_ csave chantab_ errno_ .llip setusr_ .or bdos_ .an _Ceof_ rstusr_ .utox .llis .lls .lpsh .itox .lpop .lad .lswap .lldp .lst .swt .llt .xtoi .lrsq!.eqrstusr_q!9!F9^#VrDM!9!H9^#Vrs!DM!9!tuʩ!9!t!"v!DMë!9!twʫ!"v!DMx`iunlinkK unlink_ csave fcbinit_ setusr_ bdos_ rstusr_ .eq errno_q!9!29^#VrDMs!9!tDMu`ivʧ!"w!!!rxʯ2! 9^#V!{ʯ1!rxʬ2!"ys!â5! 9^#V!{xʢ5!"ys!!!! s#r!# s!$ s*!& s`i!9^#V!s#r! 9^#V!{#!% s!<!9^#V!s#r! 9^#V!{ʮ;ts!t!9N#Fu!& ^q!rs!!% s!ioctl  Tty_ctl_ ioctl_ raw_wr_ raw_rd_ csave chantab_ errno_ write LL Wrt_tab_ write_ tty_wr_ bdf__ csave chantab_ .chl setusr_ .sb .ug rstusr_ .ur blkwr_ .ls .ul _find_ .lt movmem_ bdos_ errno_ .an .eqs&&t!9^#V)))uDM! 9^#V! 9^#V! ^#V! ^)^#Vvt!DM!9^#V"*&^w*$~ʢ *$^!xDM! 9~#foy#"àã*!$ s!vʢ `i!~#fo#s#r!!$ s!find _zap_ _find_ csave bdos_ .ne errno_ .eq setmem_r!"r!9N#F!!s*PYt¢!! ^#V*tʢ !!s"uv¤*uvʦ!"u!!!w!"!*u|ʢ !`i"!! ^#V"!E close close_ csave .lt .gt errno_ chantab_ .chl bdf__q!9^#V!r¦!9^#V! sʠ!"t!!9^#V)))uDM! ^#V! ^#Vv!9s#r!! s! s! s`is!w! s#r!9^#Vexecl5PP execl_ execv_ csave execvp_r! 9! 9^#Vsr! 9^#V! 9!`is#r!! s#r`i͢!*DMí s!9^#V!"*##~#ʥ#!*DMæ$! ^#VBK`i*u¥&! ^#V*uʩ)! ^#V`iyʦ)*PYu©)! ^#V*|©)í#! ^#V*##s#r*! s#r`i"!bdosll bdoshl_ bdos_ CPM_ .asave .ARG1 .ARG2sͫs*tDM*uogsetjmpf44 setjmp_ /longjmp_!9^#V+s#r#s#r#q#p#s#r#s#r!!9^#V#N#F^#V#^#V#N#F#^#V#^#V}#<strcmp844 strcmp_ strncmp_!9ä!9F+N+V+^+~+ngxʢ¢ʢ# íogstrcpy&& strcpy_!9V+^+~+ngwʨ#í|calloc:^^ calloc_ csave .ml malloc_ setmem_q!9^#V! 9~#forDMs"|ʦ!*t*malloc realloc_ free_ mmalloc_ csave .ne .ug movmem_ .ur .eq .uf .sb sbrk_ .uls!9N#F! ^#V+))"͢!! 9^#Vͭ.lt .ul swapmem_ .eq .ueq!9"!J9^#V+!L9~#for!H9~#fo"*!H9~#fos!L9~#fotu!L9~#for!H9~#fo"!H9^#VBK*"*!R9^#Vvwʤ !L9^#V`iDMé**!R9^#Vvwʧ !L9^#V*s"ä `i*xʭ!L9^#V*y`i*zʫ*"í**zʭ`i"`i*{ʦ!L9^#V`iDM!L9^#V*s"`i*{©*PYs*!J9~#foswʩ`i*xʠ`.ne.le.ge.lt.gt.ng.sb.swt.ue.uf.ug.ulin_out_index&& index_!9^#V#n~ʬʧ#ê!|rindex.&& rindex_!9^#V#nʨ#ïxʨ +~¨|!^#Vsexec execlp_ execvp_ csave fcbinit_ .eq errno_ strcpy_ bdos_ .ug ldr__ movmem_ .chlr! 9! 9^#Vͩr!J9!t9^#Vs"tʧ!"u!!S9^! tʥ!!U9v!! w"*! w!J9!wtʣ !"u!!!jbios%ll bios_ bioshl_ .asave .ARG1 .ARG2 .ARG3rͭo&r*s*+++*tDM*ufcbinit&& fcbinit_!9N#F#^#Vkb6#> 6 #=£>6#=¬yʤ  ʤ ¨é ͭ ڡ0_zWë/«î : >© Aڤ [Ҫ@æaڤ {Ҥ `w# .ʤ ʭ ʬͫ w#í{o|g ʭ ͫ w#® &strncpy(&& strncpy_!9F+N+V+^+~+ngxʣwʮ# â|strcat=44 strcat_ strncat_!9ä!9F+N+V+^+~+ng対ʦ#îxʧwʧ# æw|strcat_strncat_index_rindex_strlen_setmem_movmem_swapmem_toupper_tolower_atol_atoi_ctp__.chlzsavezretcretcsave.move.ARG1.ARG2.ARG3.asave.llis.llds.l"|ʩ*PYtʩ! 9^#V*uʥ*í! 9^#V*v*s!9^#V###w#"*"|  !"""*##^#VBKë `i"! ^#VBK! ^#V`itʪ! ^#V`i^#V))PYxʪ! ^#V*xʩ! ^#V##^#V"! ^#V^#V`i~#fos#r! ^#V##^#V! s#rë `i^#V*yʧ`i^#V*xʪ! ^#V*##s#rï*))PY"**##s#r! ^#V*##s#r`i^#V*z*s#r*`is#r*"!! s#r`i`i*xʮ !{DMxʪ!i*s#r**##s#r*"*"é!H9^#V*xʯ!H9^#V*s#r**##s#r*"`i!H9s#r!H9^#V*x¯*!9{­"*"*^#V!H9s#r*##^#V"ïuser4^^ getusr_ setusr_ (rstusr_ .asave .ARG1s o&s 2:t _s :_strlen&& strlen_!9~#foʥ#ì}setmem&& setmem_!9^#V#N#F#nxʪs# ïmovmemR&& movmem_! 9F+N+V+^+~+ngڬ }ڬʠ ++w x ɯ~# x¦9s!\!s!l!s!DM!t9^#V~#ʡ!t9~#fo##s#r!"é*#"!t9~#fo##s#r++^#V"|ʡ*| !\*sé*tʩ!l*s! `i#DM+s*~ʮ`ix¡*#"+^`i#DM+såâ`i}2!F!9!yz*!L9!9{COMloader=&& ldr__ ! *!jz!|*¤  >?a{ 0:ҧ7sbrk:PP sbrk_ *rsvstk_ $MEMRY sbot!9^#V*rڤ*s}|ڤ*r"r|!=!9}_|#W"sqsort. qsort_ csave .ml .sb .ud .ur .chl lip.lldp.lst.lpsh.lpop.lswap.lng.ltst.lcmp.ulcmp.lad.lsb.lan.lor.lxr.lcm.lls.lur.lrs.ldv.lrm.lud.lum.lml.leq.lne.llt.lle.lge.lgt.lul.lue.luf.lug.utox.itox.xtoi.dv .ud .um .rm div16 .ml .rs .ls .ur .an.cm.or.xr.nt.eqF swapmem/&& swapmem_!9F+N+V+^+~+ngy§Fwx# ¨ʭ=ètoupper,44 toupper_ tolower_!9~aڡ{ҡ o&!9~Aڧ[ҧ o&atol atol_ csave .eq .llip .lst ctp__ .an .lldp .llis .lml .lpsh .itox .lpop .lad .lngq!9N#F`i^!¤!x~¥,#£ê+=ɯ<!x3!!w3~Oç !x3!!w3ڠ ¤ +¥ x!w#  x!w#¥x!w#©x!w#­x!w#¡!x~/w#¡:w?*x*!x2))ү,=§"!x2"xâ:!x3:w?ʯW!!x3~w+£¬!Nyáx͡w͡yͭx͡ywͭ͡y!xw#£ͭͭy!xw#£!yw#£> !x~w#¢ Oy!w#§!y@.ARG2 .ARG3 @.asaveDM!99`i͠|DM!99!`i~# x¥!9~#¦!|lsubs<dd .llis .llds .llip .lldp &.lst 8.lpsh F.lpop Q.lswap n.lng ~.ltst .lcmp .ulcmp .lad .lsb .lan .lor .lsupport .nt .eq .ne (.le '.ge B.lt C.gt \.ng f.sb o.swt .ue .uf .ug .ul|ʡâ}¢|ʡ!}¡|ʢ!}|}|?>o&zo&|}|>o&|o&}/o|/g#}}o|gBK^#Vz#yʩ###ç#x¤#~#fo}|>?o&}|>o&C 4Ø:!4:!5(  ! I3= : [= t:\a:\=_: :] t ?]\ : ҃! 6?Î : 2   ]Q  ?\\ : DM, Q ! "= *3 ##)*= "; */ &# "! *3 #"#  !! "% >!1 . 2' \: 2 : ʩ: ƀo&"* ~ʛ*# +"# ** DMY қ** DM  *; q#p* " . ** #DM*; -e**  *; w* #" )*= *; s#r*; "; : 2 !S 6!"V * "n >!S d*S &T ) ^#V"K O!l ^#V"M :S =2S M K  a*K "G * r©`i^! rʡ`i#DMí!"`i^!-rʣ!"`i#DMæ`i^!+rʦ`i#DM!st`i^!u#^!vʦ !!wx yz`i#DM+^{|}x}tå*|ʪ !w~à!watoizz atoi_ csave .eq ctp__ .an .ml .ngq!9N#F`i^! r©`i^! rʡ`i#DMí!"`i^!-rʣ!"`i#DMæ`i^!+rʦ`i#DM!"`i^!s #!x4=«=ʡ&!x~w#¬#Oy!w#¯$y #æ"y!w#ª&!xy~6#­'> !x~w# )ҭ*x!w#¤*=©(ͨ ʥ,!ͨ ʪ+!<ͨ ,ê+ͨ ,ʥ,ê+ͨ +å,ͨ +ʪ+å,ͬ ,ê+ͬ ,ʥ,ê+ͬ +å,ͬ +ʪ+å,"x!"!x2"x|2!"!x2*xdividemll .dv .ud 8.um .rm Ediv16 .ngz͢u}ͨ@xr ,.lcm :.lls [.lur ^.lrs .ldv .lrm .lud .lum t.lml .leq .lne .llt .lle .lge .lgt .lul .lue .luf .lug .utox ).itox 8.xtoi lnsec lnprm lntmp!wç!x~#~#~#~xw#w#w#w!!x3*!x2*x"w"!w2*w*x"w"x*!w2*!x2"!w2"!x2!x>w#port,44 in_ out_!9f."!6Ͱo&!9~++f."!6ð.ng f.sb o.swt .ue .uf .ug .ul|ʡâ}¢|ʡ!}¡|ʢ!}|}|?>o&zo&|}|>o&|o&}/o|/g#}}o|gBK^#Vz#yʩ###ç#x¤#~#fo}|>?o&}|>o&M "I *K  )*= ^#V"O I G  *G )*= N#F*O ? J*G #"G (*I )*= ^#V*O DM? m*I +"I JI G  *G )*= ^#V"Q *I )*= *G )*= N#Fq#p*I )*= *Q s#r*G #"G *I +"I K I  G M   !M G  :S <2S O!T *G s#r*S &l ) *M s#r*I "M ^I K  X:S <2S O!T *K s#r*S &l ) *I s#r*G "K û!" "    #* #" )*= * #" )*= N#Fq#p   * )*= * ) *= ^#VN#F? H * #" )*= ^#V";  *; ^#V" * )*= #^!tʡ * u`i#DM+^"ì*|ʢ *vå *ctype&& ctp__ 00000   @@@@@@@@@@@@@@@ @@@@@@@ @@@@@ @@@@ csaveq .chl zsave zret cret "csave 5.move .ARG1 }z͢u||/g}/o#z/W{/_MD!ͥ}y/Ox/G>))Ҧ, ڧ}o|g=®=®shiftsWPP .ml .rs 2.ls B.urDM!>))Ҡ =¨}{_ʯ||7g}o¥{_ʯ)ª}{_ʯ|g}oªbitopr PP .an .cm .or .xr|g}o|/g}/o|g}o|g}o Hit SPACEName Ext Bytes UN At ! File(s), occupying K of K total capacity directory entries and K bytes remain on 1 !9" ! J> # ->! . *ͪe> # < * v K  K  K !B r+s+p+qA ?  p*A *? :]$Ž l]Q !]6 !E 6!C 6 :C *C &l ~2D U¼:E 2 :D S:E 2:D F:E 2:D V:E 2:D P:E 2 :D N2E !G ^#V"; *;  ͪ  *; q#pÝn* " ! p+q* )*= ^#V"; ! 6> ! i* &*; >OK : <2 E:/ *; ^#V*% DMf KK : *; Nf E*; ~ڻWK þE *; ~SK E = ! 6:! '= :/ = : = !: = : <2 * " !" >! .  * *&͵ "( * *&͵ > j*( #"( *DM*( V"( !" (   K!" }2 : <2 O:* * * "    >! = * DM** +" *( * " Ø* #" *&@@@@@*( * " 3*1 #" " " *5 " > # R : B * +" ! +s#r( ! 6: " * ~2 * #" * +" > ʶ : 2 Ғ * +" : <2 O>ҳ ! 6* #" * ~2 p K* DMf = * *% DMf = * *% DMf = *( #"( K*# DMf = * *% DMf = : AOK :K . g S -A >>!  ~?l W >#^ : /!:' —  ʑ #‹  W ʢ #™ i`N#FogDM!>))덑o|g =¼ DM!>)) = ^#V) ^#V|g}o @@@@@ _{ozgO{ozgi`N#Fogo&og_{_z#W OK = Y -S {-_ ! s+p+q*  ͼ 2 <2 : ! ڗ  K ! 4Á ! 6: =! ڻ * & NK ! 4œ >3  03} Z; { ) # @@H @@@@@@@@@@@@@@@I @@@@@@@@@@@@@@@J @@@@@@@@@@@@@@@K @@@@@@@@@@@@@@@L @@@@@@@@@@@@@@@