From:	SMTP%"VMSSERV@kcl.ac.uk" 19-AUG-1996 18:20:46.35
To:	everhart@star.zko.dec.com
CC:	
Subj:	XBIN.29-OF-31

-+-+-+-+-+-+-+-+ START OF PART 29 -+-+-+-+-+-+-+-+
XQ,`60bTJdcI%-"1ANje6PB!!#"Z!!`60-8!!$CL)JEJ!-)$`60!N!2r`60+J!!Jb!!*!$$@B
X-)'i!#(!"-)"`60!@!83QF`5B,J!3,bi!$#mZ!!K1ZJId%"p1AL"I6qm!$"k!6Y"19`5Bq
X851F$1#KZ!!JZ,Hp@F!!3,!!J#!#3!fBH%#`60!)E!Yr`5B4Q$Lm-6VVY)PL25J"Q!!%
XJF!`26J!!%NF!!3,!!J#!!!!fB!!24+,IlhCJ!!U%K85'lrP%kk#1T3McY!lh4+EHp
XdCJ!!C"!Zrl*)J!J!!!4R#LYZrm6`5B9Q!!!(T+,HjNCJ!!*NK82c`60!m8kk#2TFMdk
XY!$S!!3!%!,J!Q!#d!!S!!R!"'d$ZC%*R2bh`5B9#mYleC)9%kk$,)`60(cY!lh4+EHp
XdCJ!!J'!+$'hreHpdCJ!!G%*R2bh`5B9#mYleC)9%KYleC1ZJ`60f-"ml31pd5Qh`5BG'B
X!!`26*1ZJHJ-#`60!0X$m!%l3M!D!!*!$6LC!3H`60!6L4)B"B`5B#NkkrZKBMc`60!5NCR-$!
X'`60I`60!6YA!YFYQjNkk"mTJ"JMX!!-!)#Y(leB`60,!!f8N"J`26NK86VS#@PL25J"QiNk
Xk"kBV4qp@F!"-hac!6Pj1G8SYldTR$%*R2bh`5B6%kk$)3`60(kRd6R919`5Brq51FI!%+
XR5(J3!%kk$')JAbY)lfK#TdKj!!(*#%kk$`26!JAbY)r1T\1807#!!%kk$$iJAbY
X)lea#TdKi)!"1ZJ`60Z)`26mV51k#3UG)H3!!J\1806F\18071\180F
X+)`26mV51k53UG)H3!!J!"1ZJ`5Bi\1807@5UhmkQFd5Uh`5BA'FZ5Uh`5BD'FS5UhZJQF
XL5UhZMQFF5UhZNQF@5UhZPQF33UG1ZJd))"m-J!!!3!"X(NUYlfKR##mYlfJJAk!
XI5'hlk6mm!0*1ZJFkA)qTp#"YlS*"k#!!+dMZKL"Ylec4r!!!J!!V51pN3UG)EHk
XH5'hr$NKYqi*#Ccmm!!`26)H2rr3QG#TkN6)`26mV51kD5UhZQQB%6VVqbLmYlTUSFd*
XRU)G#CkL+3UFr2!#!,bhZQUQq)`26q`60r!!!CJ41Z`5BkN3QlrrQ!!!-Ti!(B!HJ!q,`5Br
XqI!KJ!!"qF!(!Jh)"`60NG)38*"5%'cJ%U!Cb3J!q+)*J!)"!!!C`603)`60`60!I)!6LL#J
X!#S6YZ)-J#S2YZ)-JB"BJ!q+)*J!)"!!!C`603)`60`60!I)!6LL#J!F!(!KA)"`60NG)38*
X"5%'cJ%U!C`60iJ"H+)#S$YZ)-J+J"J"L!`26iSJU!$!(iN!q!`260'5NCX!2pq-#lrrNM
X!jB""lI1#dF!JK$!Zrrj)`601@!3HhhJY(!))-`60,`5Brq5-$PJ%(YlhV4`60##`268QlrrJa
XZ!3$rrQd!rc"-h`60$i6Pj1G8j@rBC)j`60-)-'h`5BG#m)5'lqKNkk#iT"lIZ#+%J`60,Hp
Xd6Ud!+J!(!"i!C!!Xrp)!+2r8!`26lrd`60"Drm-!9`5Br+!`26MrhJ"D5LhZC@F'3Hhm9bK
X)2M`60""'"+3HlpKLe)!!JpEHp8rja"l`5Bf',8MrQ%*Zrk*#CdKZriBJAk)(2S!`60(cY
X!lh4+EHpdC`60K"lIZ#,8J!#$im!3jJ#Mim!4*J"$im!4%`5B,J!)5'lqKLm-5'hlJUQ
X,3QFr"d+RUBJ`60(c`60!$%B!!9I!4!")J%cI%-"1ANje6PEqq%SYldTR%%)YldT#Ccm
XYlda1ZJPZ-"p"lIj!+dM`5B6R!!%#h`5B5dT!Cd)JEHp1-""%3$(!!K3JEHp1)HJ!!J1
XBF!!3,Hp,$%!!!@B-3Hhpm#Y)ldjJ!!#X%#h`5B5l!YlS"R!!#J3HhqN!!V51p12c`60
X!`26+R)F!!3,Hp,5N"Q`26%KYr(j)EIZ#5'hlJNKYqi+TLf!L\2808,`60")E`5Bm!6VS
X+-%KYqi*)EIb*5'lr!%KYqi+TLbmYrZ")EIZ#3UFr2!!"5'hqj%+R)'h`5B6NKS!!B
Xr2!(e5'd!LMmm!!5TkL"Yldj++!!'CJC`60!@!!!8SJEHp1)AJ$Q!!#-$J#`26%4!)'h
X`5B6M#!3QFJEHp12a!JEHp1,bJ!!L"Yldj)D!!3(c`60!!8KYlda1ZJC)-"ml31pd5Qh
X`5BG'B!!1*`60##e!r`5Ba#CcmYlda)E`5Blm5'hqr%kk#`26)`60(cY!lh4+EHpdCJ!!X(!!%#h
Xqr!a!!!`26R`26R!!%#h\1007*R#R$C1d$`5BG'!!!)i`60,IlqX'hmk'BNF!!3,Hp,5N"
XR#K!Yr`5Bf`60,Hp,CK"`60!"!YldY+3'CD5Uhr!'C8F!!3,Ilp,`60")E`5Bm!6VS*`26M!Yr`5Bk
V
X`60EIcSCJK"lIb-)!KJ"N(Yr*!!)!K)E`5Bm!,`60")EIZ#5'hlJUQ,3QFr2!$@3UHTL$!
XI3QFr,Hp-6VS(M$!IB!$qGR!"'d$`5B5R!!B#a#CcmYlda1ZJGb-"m-EIrClh4Q"R"
XN1d$`5BG#"Yldj)D!!36VVp"`26L2B!$q3%jH6R919`5Br`6051F"##KZ!"!JEJ!--""1V3!
XU!!-!$J#3!iS!!`60#m!!B!b#m-2c`60!!8KZrr")E`5Brk5'lrmUQ03QF`5B,`5Brk,blrmUP
XQ-"mp32rq-#lrrV"YraCR!!#@1flrr`5Bm@5Qhr`26QFL3QFr2!!,,`60a1ZJ%'8)mr2!!
X"2c`60!!5m-6VS!pP#2B!!!D%*R\180Cj`26#22c`60!!6mm!!X`5B$%kk!043Mf"
X'5Qhr`26QC!)'i!$#!m!*!$rm#S!!)H!"!(5)!-3!!0C`60S3"dL!$%!!!fBF)'i!#(!
X,-)"`60!@!5)'i!$,RS!!*Q"R$r1d$r`26R!!60m3J%jH)`26p2l`60!-(S"1d%j@!!!-EJ!
X,!!aQ$(!"'d$qpR!$28!!$$!Z!!a1AL"I6qm!"Mk!6Y"19J!!F!`26\180A"k
X!6Y"19J!!)'i!$!a3!!CQ)#"Z!!`60J+!!#X+i!%'B52c`60!!6mm!!%`5B,J!36VS!%P#
X2F!"1AL"I6qm!$"k!6Y"19`5BrF5'lrr+Kd,bi!#+Kc5'lrkULB,bi!#$mZ!!a)E`5Br
XN5'lrjNKZrpbTM8KZrp`60r22rm2ccrr+LT2c`60!!cmm!!1SQdKYrqbSR8SZ!!pQ"(!
X,B!*`60#$m!U*a)E`5BrF2c`60!%$mm!"#SX%KZrqUSQ5mZrrbSFdjH6R919`5Bq83QFr,Hp
X8,bh`5B9NKYr`604)H6q3"%Kj9%9B9%kk!pi`60(dT!CMC)EIm%5'lrP%kk!(K3MdT!CL!
X)lJ!'rl`60YEHp@rm4#CdKZrj3JAh!+SQ!qJ$!I5N"R"%kk!!C1ANje3QFr,Hp8,bh
X`5B9NKYr`6041ZJ4J-"p1G8j@!!!JEJ!)*#i!$#)YlhC$lHpkB""`60!"!BX`60$P5#!a!!$
XJLE'"8i*Ul#Y"lhC1ANje6PB!!#"Z!!JaEHp8!"BJEJ!))@h`5B9J!`60)'i!##`26Z!!`60
X!%L"Z!!K#+!!D)'i!#%*S!"a#CbmZ!!JJAh!*SQ!qJ$!I6Pj1G8j@!!!`5B,J!+5'h
XlJNKYqi*)EIZ#UBY#CcmZ!!K#TkQ)-"p1ANje6PErlR!+28$rrQ!!!+bTY%*R2cc
XrrdKYlR#TF"!I-#hZF%kY!#S!!`60!1!!%!BJ!'!)3!N!1%3QF`5B,Hjk5'lrqUNX-"m
X-3!!$CJ!!EL!ZrrU`60VHkDCJ!!BNKYlRUSF8*R,bhZHLmYlTT)E`5BrfU@`60`60(`60a!!!T
XQ3N*R,blrpLmYlRT#TkPS-"p+3'FZF!`26J1#!YlR+`60VHkDCL!`5B,HkDU5)JEHkD5'J
X!%+LM6VS!)#mYlTUT)f!%F!"J$P0Zrrj+E`5BrqE!$r6(!!6Pj1GDLH5'hr)ULK2c`60
X!#Mmm!"1SNdKYr*bSK%kk!)C)EImUU+%r2!!"2c`60!"ULE2c`60!\3006kSNcmYlcj
X#CkL52c`60!#Mmm!$LSNdKYr+LSK%*R5'hmU+L--"m'3!!91d$r'%kk!`26!r2!!$U)F
Xr2!!*U)Sr2!!$2c`60!9DL65'hmbDL%2c`60!T6mm!`26@SNdKYqi1SK%*RU)G#CkL+,bh
XZQUPT6R8r2!"I2c`60!%kL6,bh`5B1UL%6R919`5Bm!2bhr'$mm!$LSNc"Yld!`5B#%KZr`60"
X1ZJ2q5'lr!+L%6Pj1G8j@rrK"lIZ#+dM`5B1NKYraUSSdKZrrJr,ImB2c`60!,$!YraJ
X'3!!Q2`60!r2!!mU+G)E`5BriU+01ANje6PB!!#m(IJ!J,J!)NDh`5B4Q!+)#h`5B3Y'YldC
X54dUYldCYm$!Ylcl34`60a!!8"`5B#M!m!8#3!'h`5B2Mi!-#h`5B2JC!!!Sr!$mm!"kSNcm
X(3QHSNYpYlciZ(djH6R919`5Bq',`60FpEJ!@rj`60YEJ!5rlBYEJ!1rjK#,`5BqJ(@i!$2q
XKF!!Y32qL9Bp)E`5Bq'FJ!I!8kk!U!q(b"Z!!J`60V`5BqH28F!'#iZri*1AL"I6qm!%%l
X3K8K28%91!!"19`5Bq',`60FpEJ!@rj`60YEJ!5rlBYEJ!1rjK#,`5BqJ(@i!$2qKF!!Y32q
XL9Bp)E`5Bq'FJ!I!8kk!PJq(b"Z!!J`60V`5BqH28F!'#iZri*1AL"I6qm!%%l3KdK28%9
X18NB!!%j@riC)j`60-!,#i!`26$eZ!"MrR#e'rlBYEJ!3rjK#,`5BqJ9Bp)E`5Bq'F!!I!%k
Xk!KBq(fBf3QlrSP@25'lrKR!!(`60"1ZJ)f2KpQ)#eZ!!crULeZ!!MrTLe'rlC9MdK
XZriC`60!"m!6VS#*MiI28F!'NcZ!-$rINjH)`26p2l`60!56Y#(5%0548`26843!!6PErKLm
X(2@i!`262qF,@i!%2qf,@i!$2qB9Bp)E`5Bq'F!!I!%kk!9iq(b"Z!!JJV`5Bqf28F!`26Li
XZri*1AL"I6qm!$Nl3L84*8N0548`26843!!6PErKMeZ!"$rR#eZ!!crYLeZ!!MrQ%)
XZrk"9MdKZriC`60!"m!6VS"@MeI!"*1AL"I6qm!#Nl3KdK%48a`269%8!!%j@riBpEJ!
X3rj`60YEJ!-rlBYEJ!)rjK#,`5BqJ9Bp)E`5Bq'F!!I!%kk!5`60pA`60!56PiJAdr`5B!!T1d)P
X)8d984Na23dX!!#*I)"qK(Lk)6Y`2619`5Br1)%maEJ!)!"LJ!6e!!!T1AL"I9)p1d`26(
X"B!*3`608j@rmiJ6b`26Z!!J!)$`26Z!"!!'#*Z!!`60K83!N3QJ!,%+S!#j+!@B%S!*J!U!
X$28!!%L*Z!!`60LU!!S6PiLAdr`5B!!T1d8j@rm!J6c`26Z!!J!`26L`26Z!!S!%U!628!!$Nj
XH)PpFMdl46PErcL"2-@i!$J!B-@i!$!!X)@i!#!!ZS%3p3!!36PiLAe#26Y%LAa!
XI)`26pQ"R!'SQ"J"(!'TQ!qJ%l4)Pm3(b"ICJ5L!'!#TJ\1812#Q!
X#TJSqJ%l4)Pm3(b"ICJ5L#'!#TJJ\1812@!#TJN\300C
XICJ5L3@!#TN%qJ%l4)Pm3(b"ICJ5L$'!#TJ`60\1812@!#TJdqJ%l
X4S'%`5B3!!%6R@JBdjeS$C1G5"`5B!!3J,`60!)3QHTlL"I8%p1d!!!!Li!N!-+!*!$QN*
Xi#NUGcNkk!#4#CdKj!!$rrdK`5B!!4)9cmm!!%L1`5BrH6V83!#"Y!'a1N!#Tp`26Q2,ca
XD49*23QHTS#4A@Bm`5B2%4"9%`26#CkQJ)`26FJ8#*i#3JN8Q!1-YKQ#M)DB!*#'9(*rrb
Xlb@EZUD1TSeQ2,ca%8N9-3QHTS#"AS#8J81*!*!eJ"M)BeE83!`26()rrLTSdje)`26m
Xb'$3BX`26KAbIrk5N*RrNl`60)2`60JAc)B0"L`60Q`26I*rrT+3QIq6`5B!JqL"I-KJd',"#EJU
X3!%`26Y"Y"!3I!!!M!3Crj1m!!!)#m!"#p"!!3L,`60!),em!"%MR2!!N!#B"5%,%`60bJ
X!+J`26)4FM`26e%4)3T!$`60-(3JNcI!$`60L(dje)#m!"#p"!!3L,`60!),em!"%MR-3"1ZJ#
XF60m!M#)I6R8J,`60!%,d%!"#)`5B!!J`5BA`60!%51Fa!%kk!(`60J!8cI!)`60L(dje)#m!"#p
X"!!3L,`60!),em!"%MR-3"1ZJ!X60m!M#)I6R8J,`60!%,d%!"#)`5B!!J`5BA`60!%51Fa!%k
Xk!!`60J!8cI!)`60L(dje5S"U(%U"DJa%J%5"6VS!)%5"6R9%J%kk!"C\1806R9+J@S
X+4)`261ZJ!'4)"1G5im!!$rrl+!B`60BL!(!!6R@`60Kf)-J-`26)3$)!3N")3%jeXSGL'Li
X!3N")3)$"5%")4ci!5%H1`606!(5%Fb"dje*!!Q!H+)iSQbKf,iJ-(!Kc)$`60X!Z!dK
X(cX")4p+(C3L5JQ)%4)`261G90!B141G3#3!j!!!*!$S!!!%EJ!N!1!!*!$)!!%2c`60
X!!DR`60!*)r2!!"UI!!TMmm!!'Tm!#k2c`60!!DR`60!0B\2008"$$\2008%X2c`60
X!!DR`60!8ir2!!"UI!"EMmm!!'Tm!)S2c`60!!DR`60%Q3r2!!#UI!CB$mm!!+Tm"TH2c`60
X!!UR`60'TJr2!!#UI!DKMmm!!+Tm!ab2c`60!!UR`60!*!$#NL!!!6-!!!%c!#3"#FQ3A9
XdEd9iG(*KBh4`5BFL!a,M-b)+NJ-6Nj-5"#D@aX)%G`5BEf4YB@i!N!-F49K88J#3!`60`26
X*3diM!*!`26J%C548B!N!@!!*!$'`60!V!4N!2!`26,!!!"!!"N!*!)"`260dEh!!N!-(39"
X36!#3"3%!(rrrm"!!!"!A`60!I3`26i!$d"I!"p!Ai!r3`26F!(8"#ImK#3!aJ3%"1B%*!
X$'"!3(rJ3N!-B%"!6Q"#3!aJ3%"ri%*!$'"!3%j\2009Iq\20091B%*!
X$'"!3(rJ3%)rk%"A!"e!Ai!r3`26m!(d"H!!p!A`60!I3%!!!%"rrrr!Irrr`60(rrrm"r
Xrrr!Irrr`60(rrrm"rrr\1010\201E
Xrrr!Irrr`60(rrrm"rrr\1010\201E
Xrrr!Irrr`60(rrrm"rrr\100C!#3!a8!8!"3!*X")J!"!3#3"`60(d!*!%`263#
X3"F`60"L`60!"!*!)!IB!N!39!*!`26d!'3!!\18088\1806$`60!%!$f!I!!!`60%!N!F
X"p`60#3"!`60!8!"3!,3"FJ$5998!N!--!`26!!4J$%!CS!eP99!*!$$!"3!`26!!a!'i!2"
X993#3!`60`60!8!"3!2)"QJ$a998!N!--!`26!!8!$N!Di!me99!*!$$!"3!`26!!j!'D!34
X993#3!`60`60!8!"3!,3"FJ%1998!N!--!`26!!8!$%!@J"%999!*!$$!"3!%B!a!'Z!4*
X993#3!`60`60!8!"3!13"L`60$b998!N!-N!!%!N!9'!0)!@J%B"!*25`60#3"3S!4J!k!4L
X)!ei`60,`5Bm!N!0`60!!%!N!9@!33!DJ`26+"!*25`60#3"3S!4J"+!8U)8`264SDA-JDA-JEQp
Xd)(4SC5"bCA`26eCA0dC@3JFf9RE@9ZG#"QD@aP,Jd09'KTFb\1006)'Pc)(0PCfe
XPER3J)ei`60)'pQ)`26ia)'`26bBfKTGQ8Z!*!$YJ!#!*!`269J%B!'S"AJ3(4AKdFQ`26MG!)
X!N!9@!--!DJ%*"!44G@Pd!*!`26#J"'!%S"ASKp9'KTFb"TFb"KEL"04P-JGQpXG@e
XP,L!J3A9dEd9iG(*KBh4`5BFL"hD@aX)'j`5BG#"LC5"KBQaP)(4`5B)("eG#"dD'8JCQP
XXCA-JD@iJCQpXC'9bFbi0$84`5B)(P`5BG5"hDA0S)(4`5B)'9iG(*KBh3JG'KP)'CTE'9
Xc)'`26ZHAGKH6m!N!61!!3!N!@%!2S!Q!`26!"!46DfP`60!*!`26CJ$k!(S"3!3%8h4`5BF!#
X3"@B!4J"k!1B%%9*PF'aKBf8J9'KTFb"'D@aP!J#3"B3!4J#B!1B%`26P\2809
XJ38a-)%4eF'aTBf`26dCA-!N!8+!%B!@J`26!L`26E5AM$6)'`26XFQ9KC(NJCAKTFh4c,Jd
X04'mJH@pe)(GTFfJJG'mJFQ9`60E'`26MC5"TG#"hDA4S)(4SC5"QD@aP,fC`5BE'4PFL"
XQFQpY)(4SC5"KFQ0SDACP2`60#3!kJ!!J#3"AB"$J#+!93%"`260VDA!!N!9f!,X!LJ%
X""!46G'p`60!*!`26#J"'!'S"9)Kd9'KP)%C*6%8JdPi`60db"MB@jZEh3JBQ8JCAKdFQ`26
XMG'9N,Jd035"'6da%49)JGfPdD#"dD'`26d)'jKE@8JB@abC@`26NH5"PH'PcG(-J+(P
X`5BG5"MB@l9G#"bCA"XB@0P)'%J4Np-4%95)(GTG'JJB5"'58a`26+5i!N!0-!!%!N!9
Xf!2S!LJ`26!"!*25`60#3"3S!4J"U!8#),%0KEQj`5BG#"bC@`26N)0*H-0-Z$3e8D'9H-L"
XKFQ0SDACP)'Pc)'4KE@`26RC@3Z!*!$@J!#!*!`264J$5!`26S"'!3%8fYTF!#3"8B!I`60"
XD!-8%"`260dEh!!N!8+!%B!1J%BL#E5AM$6)'Pc)'a`5BBfYPC#"KEQ3JBf`26ZEQpd)'*
XP)'e`5BC'PQD@9N,J#3!fS!!J#3"9B!b!"U!3i%"`260VDA!!N!9@!(8!DJ#l"!46G'p
X`60!*!`26#J"'!%S"$SJf35"QD@aP)'9bFQpb)#KH-5NJD'`26c)'pMBh9bFQ9N)(GSD@a
XP)'`26MBf9cFfPZCb!JdPi`60dbiJ!*!$C!!#!*!`269J%B!'S"AJ3%8fYTF!#3"9B!a3"
XU!3X%"`260dEh!!N!8+!%B!5J`26HL$"8D'Pc)(C`5BE(9YC5"TFb"QG@aX,Jd0dPi`60db"
XMEh9XC#"ZEh3JBQ8JGh*TG(4PELi!N!0+!!-!N!8Y!))!33$)"!*25`60#3"5d!,`60"
X"!(8%"`26`26eDA3!N!8*!`26J!'3$)N!!!N!B*!!S!'3"3L!P3BA0cGfpbC$S!N!-"`26!!
X0!*!`26NJ%V!+3"H`603%6h"PEJ#3"!5!!$X%d!"0"!C)D@4NC@i!N!9h!5X!L3`26l"!C
X$B@jMC@`60!N!8L!%!!0J%,J!#3"L%"+`60!c!AX%"89UC@0d!J#3"6`60"+`60"1\18064
XbDACP!J#3"8d!13#r!4-!N!G0!4)!`5B`60%M!*!(B3%R!')"Ii!!N!8%`26!!8"(N!G)J
X!N!DY!5X!`5B`60`26l"!G`26H(4bB@0d!J#3"3B!"J!@!-H)'P0PE'9MG#"%CA0dD@jKG'P
X`5BEL"'EfaNCA,*!*!`26)J!'!$)!2BJ(9QpXG@eP1J)!N!8i!!B!5!!hL!G\3407)
Xk!*!%iJ!+!*!`26V3%d!,m"K!3%6'pKC!#3"J5l!`26!%c33'5'PNC'9Z!*!`26P!%d!+B
X"K!3'3f`26ZBf9X!*!`26-3%F!%8"Mi!!N!C1!63!B!'%"!9`26DQ9MG!)!N!9R!63!H3'
X%"!9%FQPfC3)!N!8a!!`60!`60`60%D!*!(-3%C!--"+J#3"iB"-!#(!Bf!!*!("*3!C36
XdL!#3"JB!$!!A!BD)+9"XC@`26cC5"XEf`26N)`26i`60Ff9RE@9ZG`26iaAM)JEfBJG'KP)'`26
XbBfKTGQA*!*!%G!!#!*!`26GJ$V!)S"-33%8fYTF!#3"AB!Q!#+!0i%"`260dEh!!N!8
X+!%B!DJ%aL%$5AM$6)'0`5BG@aN)'j`5BG#"LC5"PH(4bB@0dC@3JF(*`5BF'9bE(NZ$3e
X8D'9H-5"KFQ0SDACP)'Pc)'4KE@`26RC@3Z!*!$0!!#!*!`26Q3'0!+d"d`603#6dX!N!@
XC!6S!V3'!"!44G@Pd!*!`26$3!0!)d"diJ#AM!!!!%!N!-aF`60!!-(-!!!*Q!#`266,!3
X-!*!$(!*Q!!a%394"!*!$DPT`268Nm!N!0f4`26*`266!#3!i*$6d4`26!!)!MP0*@N8!N!1
Xb49K88J#3!lj#6N4-!*!$bN019%`60!N!2@4P*`264J#3!q**3diM!*!$lN4-6dF!!`60$
Xk38a59!!*!5T%594-!!d"SJ!!rrmS!*!%)91`60!!$rr`60J!!DS!)93d!!$rrbJ!!ES
X!)9-J!!,rrcJ!!Ei!)93m!!(rra`60!)mi!N!ErrbJ!*J#3"Iq3"!!!*T3!)9-)!!$
Xrr`60J!*U)!)91d!)$rrbJ!*Xd!)9-F\1009Zd!)90N\2009`60`60!)9-N!)$
XrrbJ!*aF!)9-d!I6rr`60`60!+"X!)93`60!IE\1006$3!N!3"pIrr$!!S63#3"!(hrrm
X-!#KQ!*!`26d`5Brr$!!SI`60!K8lJ!e`5Brr+!!SM`60#3"I$rrbJ!+*m!N!AarrmS!#L`5B!*!
X`26mrrr+!!S`5B`60#3"!%%rrmS!#M2!*!%!3lrrbJ!+0m!N!3"%I\2C06l\2C065rrm
XS!#Mr!*!`26m`5Brr+!!T$`60#3"G,rr`60`60!+4m!)908!0ErrbJ!+8F!N!A`60rrmS!#Ql!*!
X`26mIrr+!!UG3#3"I2rrbJ!+dF!N!3""2rr+!!Vm`60#3"!%1rrmS!#a$!*!%!4(rrbJ
X!,+%!N!3"%`5Brr+!!Y$`60#3"!(drrm-!#eh!*!%!IErr`60`60!,F8!N!3"pIrr$!!Zh3#
X3"I,rrbJ!,m-!N!3"prrr$!!`601`60#3"!Nm:
$ call unpack [.XBIN.SRC]BINHEX.TEST3;1 -
 1224958432 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 464 7 16
$!
$ create 'f'
X$! make_VMS.com
X$!
X$! For AXP + DECC, probably will on VAX\1D07 too.
X$! David Mathog, Biology Division, Caltech
X$!`20
X$!
X$! Check C compiler
X$ if f$search("sys$system:decc$compiler.exe") .nes. ""
X$   then
X$     cc = "cc /decc /nolist /prefix=all /define=(__VMS)"
X$     linkopt = ""
X$   else
X$     if f$search("sys$system:vaxc.exe") .nes. ""
X$       then
X$`09  define sys sys$library
X$         cc = "cc /nolist /define=(__VMS)"
X$         linkopt = ",vaxcopt.opt/option"
X$       else
X$         write sys$output "Unable to locate a C compiler"
X$         exit
X$     endif
X$ endif
X$
X$ CC xbin
X$ link/nomap xbin'linkopt'
X$!
X$ library/help/create xbin.hlb\0908p
X$!
X$ set file/prot=w:re *.*.*
$ call unpack [.XBIN.SRC]MAKE_VMS.COM;6 790636925 "" 2 8 16
$!
$ create 'f'
XFrom:`09MX%"mathog@seqaxp.bio.caltech.edu" 12-JUN-1996 19:26:11.23
XTo:`09MX%"Info-VAX@Mvb.Saic.Com"
XCC:`09
XSubj:`09Re: How to encode/decode BINHEX format files under VMS?
X
XReturn-Path: <infovax-request@ulcc.ac.uk>
XReceived: from cayman.kcl.ac.uk by alder.cc.\160A(MX V4.2 AXP) with SMTP;
X          Wed, 12 Jun 1996 19:26:09 EDT
XReceived: from vmsfe.ulcc.ac.uk by cayman with SMTP (PP); Wed, 12 Jun 1996
X          19:25:51 +0100
XReturn-Path: <Info-VAX-Request@Mvb.Saic.Com>
XFrom: mathog@seqaxp.bio.caltech.edu
XSubject: Re: How to encode/decode BINHEX format files under VMS?
XDate: 6 Jun 1996 15:42:00 GMT
XOrganization: Biology Division, Caltech, Pasadena CA 91125
XMessage-ID: <4p6u88$5cm@gap.cco.caltech.edu>
XReply-To: mathog@seqaxp.bio.caltech.edu
XTo: Info-VAX@Mvb.Saic.Com
XX-Gateway-Source-Info: USENET
XSender: infovax-request@ulcc.ac.uk
X
XIn article <152357@cup.portal.com>, Chris_F_Chiesa\200F writes:
X>I've got a thing here called XBIN, which alleges to decode BinHexed files
X>on VMS.  Not sure where I got it, but you should be able to do a WWW search
X>for it.  If worse comes to worst, I could perhaps be persuaded to mail it
X>to you (C source and/or executable, up \2706; I recommend\3107), but I'm
X>generally not all that reliable or rapid a respondent...  Too much else keep-
V
X>ing me busy!
X>
X
XI've also got XBIN here. It will debinhex a Mac file, creating three
Xoutput files corresponding to  `20
X
X  name_info
X  name_data
X    and
X  name_rsrc
X
XIt's usually not very useful unless all that's in the file is data.  I`20
Xsuppose that you could somehow or other kludge the three pieces into a
XPathworks/Mac volume though, so that they would show up on any Macs that
Xhave that mounted (I've never tried that.)
X
XMy notes on it are:
X
X  From ftp://infolane.com/pub/picutils/unix/decode/binhex.tar.Z
X  25-SEP-1995.
X
X  Had to make a few code changes to get it to build cleanly on OpenVMS
X  AXP 6.1 + DECC 4.1.
X
X  Use make_vms.com to build it.
X
X
X$ diff xbin.c\0707_dist
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X    3   #endif lint
X    4  `20
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X    3   /*__VMS version, lint in comment, in original it was #endif\2B06*/
X    4   #endif /* lint */
X    5  `20
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X    8   #include <sys/dir.h>
X    9  `20
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X    9   #ifndef __VMS
X   10   #include <sys/dir.h>
X   11   #else
X   12   #include <stdlib.h>
X   13   #include <unixio.h>
X   14   #include <string.h>
X   15   #include <time.h>
X   16   #define MAXNAMLEN 30
X   17   #endif
X   18  `20
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  109   main(ac, av)
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  118   #ifdef __VMS
X  119   int`20
X  120   #endif
X  121   main(ac, av)
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  245   `09sprintf(files.f_data, "%s.data", namebuf);
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  257   #ifdef __VMS
X  258   /*No error checking here - if the name already has a "." then this
X  259     will fail!!!*/
X  260   `09sprintf(files.f_data, "%s_data", namebuf);
X  261   `09sprintf(files.f_rsrc, "%s_rsrc", namebuf);
X  262   `09sprintf(files.f_info, "%s_info", namebuf);
X  263   #else
X  264   `09sprintf(files.f_data, "%s.data", namebuf);
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  248   `09if (verbose)
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  267   #endif
X  268   `09if (verbose)
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  290   #ifdef BSD
X  291   `09struct timeb tbuf;
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  310   #if defined(BSD) `7C`7C\1009__VMS)
X  311   `09struct timeb tbuf;
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  313   #ifdef BSD
X  314   `09`09ftime(`26tbuf);
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  333   #if defined(BSD) `7C`7C\1009__VMS)
X  334   `09`09ftime(`26tbuf);
X************
X************
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1
X  331   `09if (fp == NULL) `7B
X******
XFile SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X  351  `20
X  352   `09if (fp == NULL) `7B
X************
X
XNumber of difference sections found: 8
XNumber of difference records found: 25
X
XDIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX
V`5DDIFFS.TXT;1-
X    SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C_DIST;1-
X    SEQAXP$DKA300:`5BSHARED.PROGRAMS.BINHEX`5DXBIN.C;15
X
XHere is make_vms.com
X
X$! make_VMS.com
X$! For AXP + DECC, probably will on VAX\1D07 too.
X$! David Mathog, Biology Division, Caltech
X$!
X$ cc/nolis/nowarn/prefix=all xbin
X$ link/nomap xbin
X$!
X$ library/help/create xbin.hlb\0908p
X$!
X$ set file/prot=w:re *.*.*
X
XRegards,
X
XDavid Mathog
Xmathog@seqaxp.bio.caltech.edu
XManager, sequence analysis facility, biology division, Caltech`20
$ call unpack [.XBIN.SRC]MODS.TXT;1 1980934973 "" 11 9 16
$!
$ create 'f'
X(From /mirrors/macintosh/unix/xbin.shar (@wuarchive.wustl.edu))
XThis is version 2.3 of xbin.  The major changes include
Xperfomance improvements from Dan LaLiberte of UIUC, fixes
Xfor 16-bit machines from Jim Budler of AMD, and a fix for
Xa bug in the run-length encoding code.
X
XThis version of "xbin" can handle all three BinHex formats
X(so far).  Thanks to Darin Adler at TMQ Software for providing
Xthe code to compute and check the CRC values for all three formats.
X(There are no plans to support binhex5.0, as its use of binary
Xencoding makes it useless for sending programs through e-mail).
X
XOther new features include "list" and "verbose" modes, the
Xability to convert several binhex files at one time, the a\3906
Xto read standard input, somewhat better error handling, and a
Xmanual page.
X
XAny extraneous mail or news headers are ignored, but xbin relies
Xon finding a line which starts with "(This file" to know when
Xthe header ends and the good stuff begins.  You can add one
Xof these by hand if it's been lost.
X
XTo compile it on USG systems, type:
X`09cc -o xbin xbin.c
X
Xor on Berkeley systems:
X`09cc -o xbin xbin.c -DBSD
X
XAs usual, please report any problems, suggestions, or
Ximprovements to me.
X
X`09Dave Johnson
X`09Brown University Computer Science
X`09ddj%brown@csnet-relay.ARPA
X`09`7Bihnp4,decvax,allegra,ulysses,linus`7D!brunix!ddj
X
X========\0808===
XHere's an informal description of the HQX format as I understand it:
X-----
XThe first and last characters are each a ':'.  After t\3509':',
Xthe rest of the file is just string of 6 bit encoded characters.
XAll newlines and carriage returns are to be ignored.
X
XThe tricky part is that there are holes in the translation string
Xso you have to look up each file character to get its binary 6 bit
Xvalue.  I found the string by looking at a hex dump of BinHex:
X
X`09!"#$%`26'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ`5B`60abcdefhijklmpqr
X
XI can't see how this aids or abets any kind of error recovery, but
Xif you ran into a char not in the list, you would know something's
Xwrong and give up.
X
XThere is some run length encoding, where the character to be repeated
Xis followed by a 0x90 byte then the repeat count.  For example, ff9004
Xmeans repeat 0xff 4 times.  The special case of a\2C08count of zero
Xmeans it's not a run, but a literal 0x90.  2b9000 => 2b90.
X
X*** Note: the 9000 can be followed by a run, which means to repeat the
X0x90 (not the character previous to that).  That is, 2090009003 means
Xa 0x20 followed by 3 0x90's.
X
XOnce you've turned the 6 bit chars into 8, you can parse the header.
XThe header format consists of a one byte name length, then the mac
Xfile name, then a null.  The rest of the header is 20 bytes long,
Xand contains the usual file type, creator/author, file flags, data
Xand resource lengths, and the two byte crc value for the header.
X
XThe data fork and resource fork contents follow in that order.
XThere is a two byte file crc at the end of each fork.  If a fork
Xis empty, there will be no bytes of contents and the checksum
Xwill be two bytes of zero.
X
XSo the decoded data between the first and last ':' looks like:
X
X`09 1       n\08074    4    2\0F0D2`09(length)
X`09+-+---------+-+----+----\0A0A\1408+
X`09`7Cn`7C name... `7C0`7CTYPE`7CAUTH`7CFLAG`7CDLEN`7CRLEN`7CHC`7C`09(contents
V)
X`09+-+---------+-+----+----\0A0A\1408+
X
X`09`09`09DLEN&0309 2`09(length)
X`09+--------\0808\1010\2006+--+
X`09`7C`09DATA FORK`09`09       `7CDC`7C`09(contents)
X`09+--------\0808\1010\2006+--+
X
X`09`09`09RLEN&0309 2`09(length)
X`09+--------\0808\1010\2006+--+
X`09`7C`09RESOURCE FORK`09`09       `7CRC`7C`09(contents)
X`09+--------\0808\1010\2006+--+
X
X------
$ call unpack [.XBIN.SRC]README.;1 -
 738208528 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 8 10 16
$!
$ create 'f'
Xsys$share:vaxcrtl/share
$ call unpack [.XBIN.SRC]VAXCOPT.OPT;1 728066217 "" 1 11 16
$!
$ create 'f'
X#ifndef lint
Xstatic char version`5B`5D = "xbin.c V\1406 2.3 09/30/85";
X#endif /* lint */
X
X#include <stdio.h>
X#include <sys/types.h>
X#include <sys/stat.h>
X#ifndef __VMS
X#include <sys/dir.h>
X#else
X#include <stdlib.h>
X#include <unixio.h>
X#include <string.h>
X#include <time.h>
X#define MAXNAMLEN 30
X#endif
X
X#ifdef MAXNAMLEN`09/* 4.2 BSD */
X#define FNAMELEN MAXNAMLEN
X#else
X#define FNAMELEN DIRSIZ
X#endif
X
X#ifdef BSD
X#include <sys/time.h>
X#include <sys/timeb.h>
X#define search_last rindex
Xextern char *rindex();
X#else
X#include <time.h>
Xextern long timezone;
X#define search_last strrchr
Xextern char *strrchr();
X#endif
X
X/* Mac time of 00:00:00 GMT, Jan 1, 1970 */
X#define TIMEDIFF 0x7c25b080
X
X#define DATABYTES 128
X
X#define BYTEMASK 0xff
X#define BYTEBIT 0x100
X#define WORDMASK 0xffff
X#define WORDBIT 0x10000
X
X#define NAMEBYTES 63
X#define H_NLENOFF 1
X#define H_NAMEOFF 2
X
X/* 65 <-> 80 is the FInfo structure */
X#define H_TYPEOFF 65
X#define H_AUTHOFF 69
X#define H_FLAGOFF 73
X
X#define H_LOCKOFF 81
X#define H_DLENOFF 83
X#define H_RLENOFF 87
X#define H_CTIMOFF 91
X#define H_MTIMOFF 95
X
X#define H_OLD_DLENOFF 81
X#define H_OLD_RLENOFF 85
X
X#define F_BUNDLE 0x2000
X#define F_LOCKED 0x8000
X
Xstruct macheader `7B
X`09char m_name`5BNAMEBYTES+1`5D;
X`09char m_type`5B4`5D;
X`09char m_author`5B4`5D;
X`09short m_flags;
X`09long m_datalen;
X`09long m_rsrclen;
X`09long m_createtime;
X`09long m_modifytime;
X`7D mh;
X
Xstruct filenames `7B
X`09char f_info`5B256`5D;
X`09char f_data`5B256`5D;
X`09char f_rsrc`5B256`5D;
X`7D files;
X
Xint pre_beta;`09/* options */
Xint listmode;
Xint verbose;
X
Xint compressed;`09/* state variables */
Xint qformat;
XFILE *ifp;
X
X/*
X * xbin -- unpack BinHex format file into suitable
X * format for downloading with macput
X * Dave Johnson, Brown University Computer Science
X *
X * (c) 1984 Brown University
X * may be used but not sold without permission
X *
X * created ddj 12/16/84
X * revised ddj 03/10/85 -- version 4.0 compatibility, other minor mods
X * revised ddj 03/11/85 -- strip LOCKED bit from m_flags
X * revised ahm 03/12/85 -- System V compatibility
X * revised dba 03/16/85 -- (Darin Adler, TMQ Software)  4.0 EOF fixed,
X *`09`09`09   4.0 checksum added
X * revised ddj 03/17/85 -- extend new features to older formats: -l, stdin
X * revised ddj 03/24/85 -- check for filename truncation, allow multiple files
V
X * revised ddj 03/26/85 -- fixed USG botches, many problems w/multiple files
X * revised jcb 03/30/85 -- (Jim Budler, amdcad!jimb), \3308for compatibility
X *`09`09`09   with 16-bit int machines
X * revised dl  06/16/85 -- (Dan LaLiberte, l\0906@uiucdcs) character
X *`09`09`09   translation speedup
X * revised ddj 09/30/85 -- fixed problem with run of RUNCHAR
X */
Xchar usage`5B`5D = "usage: `5C"xbin `5B-v`5D `5B-l`5D `5B-o`5D `5B-n name`5D`20
V`5B-`5D filename`5C"`5Cn";
X
X#ifdef __VMS
Xint
X#endif
Xmain(ac, av)
Xchar **av;
X`7B
X`09char *filename, *macname;
X
X`09filename = ""; mac\0E0A
X`09ac--; av++;
X`09while (ac) `7B
X`09`09if (av`5B0`5D`5B0`5D == '-') `7B
X`09`09`09switch (av`5B0`5D`5B1`5D) `7B
X`09`09`09case '`5C0':
X`09`09&0209filename = "-";
X`09`09&0209break;
X`09`09`09case 'v':
X`09`09&0209verbose++;
X`09`09&0209break;
X`09`09`09case 'l':
X`09`09&0209listmode++;
X`09`09&0209break;
X`09`09`09case 'o':
X`09`09&0209pre_beta++;
X`09`09&0209break;
X`09`09`09case 'n':
X`09`09&0209if (ac > 1) `7B
X`09`09&0209`09ac--; av++;
X`09`09&0209`09macname = av`5B0`5D;
X`09`09&0209`09filename = "";
X`09`09&0209`09break;
X`09`09&0209`7D
X`09`09&0209else
X`09`09&0209`09goto bad_usage;
X`09`09`09default:
X`09`09&0209goto bad_usage;
X`09`09`09`7D
X`09`09`7D
X`09`09else
X`09`09`09filename = av`5B0`5D;
X`09`09if (filename`5B0`5D != '`5C0') `7B
X`09`09`09setup_files(filename, macname);
X`09`09`09if (listmode) `7B
X`09`09&0209print_header();
X`09`09`09`7D
X`09`09`09else `7B
X`09`09&0209process_forks();
X`09`09&0209/* now that we k\0D06e size of the forks */
X`09`09&0209forge_info();
X`09`09`09`7D
X`09`09`09if (ifp != stdin)
X`09`09&0209fclose(ifp);
X`09`09`09macname = "";
X`09`09`09ifp = NULL;&0209/* reset state */
X`09`09`09qformat = 0;
X`09`09`09compressed = 0;
X`09`09`7D
X`09`09ac--; av++;
X`09`7D
X`09if (*filename == '`5C0') `7B
Xbad_usage:
X`09`09fprintf(stderr, usage);
X`09`09exit(1);
X`09`7D
X`7D
X
Xstatic char *extensions`5B`5D = `7B
X`09".hqx",
X`09".hcx",
X`09".hex",
X`09"",
X`09NULL
X`7D;
X
Xsetup_files(filename, macname)
Xchar *filename;`09`09/* input file name -- extension optional */
Xchar *macname;`09`09/* name to use on the mac side of things */
X`7B
X`09char namebuf`5B256`5D, *np;
X`09char **ep;
X`09int n;
X`09struct stat stbuf;
X`09long curtime;
X
X`09if (filename`5B0`5D == '-') `7B
X`09`09ifp = stdin;
X`09`09filename = "stdin";
X`09`7D
X`09else `7B
X`09`09/* find input file and open it */
X`09`09for (ep = extensions; *ep != NULL; ep++) `7B
X`09`09`09sprintf(namebuf, "%s%s", filename, *ep);
X`09`09`09if (stat(namebuf, `26stbuf) == 0)
X`09`09&0209break;
X`09`09`7D
X`09`09if (*ep == NULL) `7B
X`09`09`09perror(namebuf);
X`09`09`09exit(-1);
X`09`09`7D
X`09`09ifp = fopen(namebuf, "r");
X`09`09if (ifp == NULL) `7B
X`09`09`09perror(namebuf);
X`09`09`09exit(-1);
X`09`09`7D
X`09`7D
X`09if (ifp == stdin) `7B
X`09`09curtime = time(0);
X`09`09mh.m_createtime = curtime;
X`09`09mh.m_modifytime = curtime;
X`09`7D
X`09else `7B
X`09`09mh.m_createtime = stbuf.st_mtime;
X`09`09mh.m_modifytime = stbuf.st_mtime;
X`09`7D
X`09if (listmode `7C`7C verbose) `7B
X`09`09fprintf(stderr, "%s %s%s",
X`09`09`09listmode ? "`5CnListing" : "Converting",
X`09`09`09namebuf, listmode ? ":`5Cn" : " ");
X`09`7D
X
X`09qformat = find_header(); /* eat mailer \1806 `26cetera, intuit \3D07*/
X
X`09if (qformat)
X`09`09do_q_header(macname);
X`09else
X`09`09do_o_header(macname, filename);
X
X`09/* make sure host file name doesn't get truncated beyond recognition */
X`09n = strlen(mh.m_name);
X`09if (n > FNAMELEN - 2)
X`09`09n = FNAMELEN - 2;
X`09strncpy(namebuf, mh.m_name, n);
X`09namebuf`5Bn`5D = '`5C0';
X
X`09/* get rid of troublesome characters */
X`09for (np = namebuf; *np; np++)
X`09`09if (*np == ' ' `7C`7C \0E08/')
X`09`09`09*np = '_';
X
X#ifdef __VMS
X/*No error checking here - if the name already has a "." then this
Xwill fail!!!*/
X   `09sprintf(files.f_data, "%s_data", namebuf);
X   `09sprintf(files.f_rsrc, "%s_rsrc", namebuf);
X   `09sprintf(files.f_info, "%s_info", namebuf);
X#else
X`09sprintf(files.f_data, "%s.data", namebuf);
X`09sprintf(files.f_rsrc, "%s.rsrc", namebuf);
X`09sprintf(files.f_info, "%s.info", namebuf);
X#endif
X`09if (verbose)
X`09`09fprintf(stderr, "==> %s.`7Binfo,data,rsrc`7D`5Cn", namebuf);
X`7D
X
X/* print out header information in human-readable \1C06 */
Xprint_header()
X`7B
X`09char *ctime();
X
X`09printf("macname: %s`5Cn", mh.m_name);
X`09printf("filetype: %.4s, ", mh.m_type);
X`09printf("author: %.4s, ", mh.m_\1606);
X`09printf("flags: 0x%x`5Cn", mh.m_flags);
X`09if (qformat) `7B
X`09`09printf("data length: %ld, ", mh.m_datalen);
X`09`09printf("rsrc length: %ld`5Cn", mh.m_rsrclen);
X`09`7D
X`09if (!pre_beta) `7B
X`09`09printf("create time: %s", ctime(`26mh.m_\1E06time));
X`09`7D
X`7D
X
Xprocess_forks()
X`7B
X`09if (qformat) `7B
X`09`09/* read data and resource forks of .hqx file */
X`09`09do_q_fork(files.f_data, mh.m_datalen);
X`09`09do_q_fork(files.f_rsrc, mh.m_rsrclen);
X`09`7D
X`09else
X`09`09do_o_forks();
X`7D
X
X/* write out .info file from information in the mh structure */
Xforge_info()
X`7B
+-+-+-+-+-+-+-+-  END  OF PART 29 +-+-+-+-+-+-+-+-
================== RFC 822 Headers ==================
Return-Path: VMSSERV@kcl.ac.uk
Received: by galaxy.zko.dec.com (UCX V4.0-10B, OpenVMS V6.2 VAX);
	Mon, 19 Aug 1996 18:18:04 -0400
Received: from newt.kcl.ac.uk by mail11.digital.com (8.7.5/UNX 1.2/1.0/WV)
	id SAA16024; Mon, 19 Aug 1996 18:04:49 -0400 (EDT)
Received: from bay.cc.kcl.ac.uk by newt.kcl.ac.uk with SMTP (PP) 
          id <23398-0@newt.kcl.ac.uk>; Mon, 19 Aug 1996 23:04:25 +0100
Received: by alder.cc.kcl.ac.uk (MX V4.2 AXP) id 734;
          Mon, 19 Aug 1996 23:04:44 EDT
Date: Mon, 19 Aug 1996 23:04:30 BST
From: Kings College London File Server <VMSSERV@kcl.ac.uk>
To: everhart@star.zko.dec.com
Message-ID: <009A71AB.3DBB0720.734@alder.cc.kcl.ac.uk>
Subject: XBIN.29-OF-31
