NNNNNN2Bp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN` @ @`! #%`')+-1o79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ `  ` @ `  @ ` ǀ ɠ @ ׀ ٠  @O!OaQ !Aa!!#A%a')+/3A579;=A!OEaGIKOSAUaW` @ @`! #%`')+-1o79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ `  ` @ `  @ ` ǀ ɠ @ ׀ ٠  @O!OaQ !Aa!!#A%a')+/3A579;=A!OEaGIKOSAUaWAUTO MINIX PRGE#COMMAND TOS GFIXKEYS PRG$(LIB /BUILD PRGL a7MKFS PRG)~DRELMIX PRG,@.RFLOP PRG/%SRC 1WFLOP PRGlC&KEYTBL TTP"R. .. DYER512 NOT `(oB?< NA\O/ě#rH#vL#~P+|r+|v+|~?< NA\OA:0<BBQ&, ּּ֬֬(Hz?< NA\OBg/?<1NAJ0/ yHC2`"0/ yLC(`0/ yPCn| f IN <2NuAp0/ t4/ "oJogI f""""""""Skf`JSkfBNuBNu 512K RAMDISK installed as M: version 9-Sep-1987 lmd. T`%*O*m#" - ЭЭм@"ҍ¼.A// Bg?<JNA y""h#"E?/ N N"/0<NBNu o AdpNu#"BNuNV0/"/ NB"d0< AT"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HNT-@JlB` .`N^NuNV.N>?<LNTN^NuNV n f > NX>?<NTN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NTP:|0|9o^E0//NhP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -||JDf8<&n|`RJgSDl`"``H |xr W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH no n #BW/9?<=N\>l./< NX."/<??<?NP8|g>?</< N\-|$ nJhf n0("n2)Ag./< >NX n0(r #$$.$?<HNT*@ n. ON(MBD`dp ./??<?NP,g.//< ^NP n2A|H00*p `B SJfRD n2A|H00*Jf~>/<l/ NDPB?< NTN.-M/ / nNPJL0N^NuNV-| nNN^NuNVH *n(n >.`SGlJL0N^NuNVH*n(n X.X&|`ݷm`ݻe-G nNJL8N^NuNV>?.?.?.?.?. /.N. }N>?<LNTN^NuNVHN>BW/<mNX>/<mNX>/<mNX n2n B*n`&HHм! @g H| `HRJf> /.NXJL N^NuNVH BWN#"#"By".ca*n`N`RJgHHм! @fJg2 "g 'fFH>/ RNX(@ f. / aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм! @gJ5pg M2GBRGH`BWN BW/ RNXJ@g.R/< aX`l>N ->f@>/ TNX|f>B?<ND\|f.R/< a|X`$BW/ RN X|g.R/< aVX`>?/ NXJf>*/ NXJg-|+.8?<NT>/ ?<N \<f. / aX`^.H?/.aZ\.N>RWN:(@./ NxX.a>/ ?<N \<f`.a`|g`JfBaSy"."Nz|f. /< a*XB/9"?9"NV\>N 4JL0N^NuNV|./NxX. /NNX. /NNX.?< NT>N 4N^NuNVH*n y" X"Ry"JL N^NuNVH*n. (nGVfJL8N^NuNVHN>|fp`>N`08*@$JnfU.m/.NXJ@f U0`R`.r/.NXJ@fU0`2>/.?N \J@g3#!3"!p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN L>NN^NuNVHBG`0м .N ~RG|mJLN^NuNVH*n0-|g*.Nf-g .NDB@H+@+@Bm m>N JL N^NuNVH>.>N*@ f3 !3"!p`NBF0|f>?<>NT<l|>N`>N"JFf0``3!3"!pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N<\>Gg mp`J-gJg-g;| `;| `>0- D@H/?ND\Bm +mB@JL N^NuNVHN>|fp`>N`08*@$Jn fUJnfU.m/.NXJ@fU;n 0``.r/.NXJ@fU0`d>/.?N \J@g>N"3!3"!p`0U>B-H?ND\BWB-H?ND\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N*@ f3 !3"!p`$>?-/. ?<BNP+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y!*T`ZB@0-BA2-@F@J@g>NB`:B@0-ne `*!f>a*@ f>NB`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#! PJL0N^NuNVH >.|?GG0@>N*@fB`* R*@(M9GB@0,F@9@.Pa 9!JL0N^NuNVH *nQB@0-BA2-@F@J@g>Np`(y!Ļeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #!B@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#!B@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y"(G".Nz|f3 !3"!p`>Bg/ N\ JL0N^NuNVH>N*@ fp`vJnfB@`j-g3 !3"!p`L0|g>/. / NP`0-g>/. / N0P``>/. / N@PJL N^NuNVH|BG` !f !0`RG|m3!3"!pJLN^NuNVp2.`F@H!B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@$0.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 !3"!B`0B@08*@$-f3 !3"!B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N=@B0.ѭJnf3!3"!p`^=n`8Rn>?</<!/-/ N=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N=@Jnf3!3"!p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|h` n(g-|$ n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<NX0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м$-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN\JgB@`0<>`d>ONJgB@`0<>`J.?<=NT>o n1GBG`,.?<ANT>``||b@0@! PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y"CCbNC NJg .NuNV n=h.0n/0n/NP/?.?<?NPN^NuNV n=h.0n/0n/NP/?.?<@NPN^Nu#"NA/9"NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu////NhP Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#"NN/9"Nu#"NM/9"Nu#"NA/9"Nu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z |NuAbort (null)minix.imgcannot open %sread block 0 failed (ask %d, ret %d)%s: wrong formatmalloc failed read failed (ask %ld, ret %ld) : unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   !! h!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6 *  `$    , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl 2n  fB@`-(*O*m#5Z - ЭЭм@"ҍ¼.A// Bg?<JNA y5Z"h#5^E?/ N,N"/0<NBNu o AdpNu#5^BNuNV0/"/ NB5^d0< A/"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN-T-@JlB` .`N^NuNV.0N>?<LN-TN^NuNV n f > NX>?<N-TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//N-P:|0|9o^E0//N-(P.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|0#|JDf8<&n|`RJgSDl`"``H |/8r W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNV ng.0j/<0NN>X n .N n .N0Bn`$ n 2.TAH.?.NTRn nmN v.0kN.5/95/<0NP.5/<0NX.5N NNBW?<LN-TN^NuNVBW/.?<=N-\=@l./<0N>X./<?.?<?N-P=@Jnl./<0N>XJno>/N XJnnN v>?<>N-TN^NuNVH BW/. ?<=N-\=@l. /<1N>X. /?.N \-y5 .ЮЮм -@ .ЮЮ-@/</.N,tP=@Jno0<n`B@=@0.HѮ0.HѮ nl .ѹ5 .ѹ50.Hм5 @ 0.Hм5 @!n0.Hм5 @!n0.Hм5 @1y5 nl:././././.0n"<//0/<1N .Ю=@0.".Үаg. /<1RN>X>N-@Jf. /<1aN>X*n=n`b n@d 0.`0<@=@.0./?.?<?N-P0ng. /<1jN>X0.nJnfBW?./.?<BN-PJl. /<1~N>X*nI./<?.?<?N-P<|l. /<1N>XJgYFXe0.Юe. /<1N>X./<1/NlP .Ѯ./<1/NPSFl8I./<?.?<?N-P<SFl. /<1N>XH||f `JGg"g. /<1N>X`" .Ю=@*n`6 nd 0.`0<=@>/ N X0.nJnfBF=F` l .` <=@0<y5nl0<y5=@ ng>/<7N X`Jnf=y5`RF0.HJf|JngL0R@2.HҼ5"A3@0.2.HҼ5"A2) A2.HҼ5"A3@ `F0.Hм5 @Bh0952.HҼ5"A2) A2.HҼ5"A3@ .?<IN-T>?<>N-TJL0N^NuNV./< ?.?<?N-P| g./<1N>X./<2/. NlP n g./<2N>X n Jg./<2)N>XN^NuNVH 0<y5=@0. nn 0. `0.=@=n:y55(n`0.SnJ@f0.y5 y5f.5?95NTN 0.n g*0.n 3 5*|5`0. Sn J@fJL0N^NuNVJy5g.5?95NTN N^NuNVH*|5`BR7eBy5Ry5JL N^NuNVHBn/</95N,tPJg.2m/<2CN>X-y5 .=@ .мH=@.BgNlT./<2n/QNP./<2q/]NP./<2t/NP./<2w/]NPBn`r0.@HЎ./<2z0.Hм5/ NP0.@HЎ./<2}0.Hм5/NPRn nmB@@H@BnK`$./<2/NlP0.nT мe./<2/NlP0.nn4./<2/NP.BgNTJL N^NuNV 95м-@.NL=@ nRog.2/<2N>XBn`Bn0.H @"<5 02.HҼ5"A")Ё2.HҼ5"A")Ё=@>0.@HЮ/NX>0.@HЮ/TNXRn nmtN^NuNVB 95й5й5Ѯ .м-@ 95Ѯ095r `H 95й5й5Ѯ .м-@ 95Ѯ095y5r `H 95й5й5Ѯ-y5 95й5-@ .-@ .ѮB .-@ .-@ .=@ .=@ .=@-n.NL=@ ng.2/<2N>X.NL=@ ng.2/<2N>X>/.XNX>/.\NX>/.PNXN^NuNV./</.N,P?NlT/</.N,tPЎ./<2/NlP0.|`N^NuNV=n ./</.N,P?NlT/</.N,tPЎ./<2/NP./</.N,P?NTN^NuNV. /./<2NP>?<LN-TN^NuNVH*n (n&nz`N0`2`B <5f5d>SG`R 2HfJEg,H|GH|@`H|G,`7l / *|G+/B.M*o - ЭЭм// ?<?<JNA B?< NA/@/<?<?<NMP#Aa8> NA\N5B?< NA/@/9A?<?<NMPa$> NA\Nu/<?<?<NMP#ANu/9A?<?<NMPNuB?< NA\#A|Nu/9A|?< NA\Nu yIvgNu|_?</<q a |7la4?<?<NMX|_<Ag<Rg<IfBNu0/HNupH@NuB<g/??<?<NM\ _N@NuJNuNV n C BN^NuNV0. J@fp n,X.X/Nu#ANM/9ANuNV . H@B@H@N^NuNV . B@H@N^Nu#ANA/9ANuCA 9n(<0H2 :g 9n<0H @p NB :g (:f<@`B :fRHr .g JgQJAm QrJgRHJgQJAm QrBQNuNVH naV"<ApNBB9AL?N^NuNVH na."<ApNBL?N^NuNVH"<ApNBL?N^NuNVH".pNB"<ApNBL?N^NuNVH".pNB"<ApNBL?N^NuNV`$ n H"nHA@RR DgB@`0.SnJ@fpN^NuNVB@0.H=@g>a`.8/<?<?<@NPN^NuNV.N-@g.a.NHм7./<?<?<@NPN^NuNVJg .`p-@-|=|`/< /.N7P-@Rn0.n m`0./<?<?<@NP/< /.N7P-@ .m.aN^NuNV` n am n zn nR nJfN^NuNVJGg(>qD/9G?<NN\JgB@`BG`>ONJgB@`pN^NuNV.aF=@.7a8=@BnBn=n0n"n0H@|*f=| .:g .\g 0.SnJ@fRnJng 0n (\g0n (:f*`RnRn n2n"|74nf=|>qD/.?<NN\Jgp`B@=@JnfbJnf\9q-H|gN=n0n\RnBn`" n2n2n"|74nRn0.no=|Bn`(0n"n0H"n 4n|*fp`FRn0.nm n 2nBBn n2n0H2nRnRnJ@f0.N^NuNVBn`z.H`b.7az?/<IhanX_op`Bn` 0n"|70H.gp`~Rn |Ih2nPfB@`b``|*g|?g`0n"|H0H@RnJ@flBn` .*gd .?gZRn |Ih2nPfB@N^NuNVB@=@=@`Rn0n"|G0H"|H@4nHAgB@`p=@g,0n"|GJ0g |I$2n"|H@4nfJngrBn 9*IhgB@`p=@fV`Rn0n"|q0H"|Ih4nHAgB@`p=@g 0n"|qJ0g0n"|IhJ0fJngBn`Rn |I$2n"|H@4nf`Rn |I$2n2n"|q4ng |I$2n2n .fRnBn`0nI$&Rn no`BnBn`Rn |I$2n"|H@4nf 9*Ihf,`Rn |I$2n2n"|q4nf`(`Rn |I$2n2n"|Ih4nf0.N^NuNVBnBn`Rn |H2n"|G4nf`Rn |H2n2n"|q4nfN^NuNV./.a@XH/?<?<@NPN^NuNV.8@a.aN^NuNV nJg, n (:f nP nH|=@=|`>N=@|A@Bn.]/<?<?<@NP.8CaL0n"n J0f8>RW/?<GN\J.f |\B..a` . 2.HЁ.aN^NuNV0.`.8Ea`.8ja` .8za`.8a`.8a`.8a`.8a`.Hax`.I$aj`.9a`.9 aN``.9af`|.9aX.9a$>N3q|aqF.qF/<?<?<@NP.9a`$.9a`>N3q|aqF.qF/<?<?<@NP.9;a`.9=a.9ca.9a.9a.9a.9a|.:ar.:;ah.:Ra^.:|aT.:aJ.:a@.:a6.;a,.;>a".;ua.;a.;a.;a.;a.<a.<)a.aZ.>aP.>BaF.>Ja<.>na2.>sa(.>a.>a.>a .>a``|b@0@7 PNN^NuNV#G3qD#qH.H/<G/.aP`BWa`>a`.Ih/<H@/. aVP|f BWa\`|aJ@g >aH`h`R9q-H|fBaa=@f.I$?<ANT>a> a>a> aBW/<H?<=N\=@o> /<I$?<?<>NTJng.H?<ANT>?<>NT` .>a>a.>ap`TaJ@f>a`|gB|gD`LB@`(>ap`.>a>/<q NXN^NuNV#G3qD#qH nJf >aj`.H/<G/.a>P`BWaF`>a:`.Ih/<H@/. aP|f >a`aJ@g >a`l`X9q-H|fJadJ@ar>a> a>a> a.I$/<HBg?<VNP#qHaa`|g<|g>`FN^NuNV>ajBn`" n2n.a>Rn.>a0 n2n pJf> a&N^NuNVBn nJf .Ha`L.>/.?<a\J@g |H2nB`$ n2n0H"|H4nRnJ@fN^NuNV~=|.Ha=@Jngr`BAAT@=@Bn`J.> 9H2.HЁ/?<a\J@gSn 9H2.HЁ.an`RnRn0n"yH0H"yH4n)HAf0n.?<HNT-@BnJ9HgnBn` n2n"|74nRn0n"|7J0fBn`Rn0n"|H0H"n4nRnJ@f0nBRnBn`H.> 9H2.HЁ/?<a\J@g 9H2.HЁ.aR@n`RnRn0n"yH0H"n4n"yH4n)HAfRn n2nBBn` n .fBnRRn N2n"nQfJng(Bn`RnRn N2n"|74nQfBn=|` .:g .\fBn0n6H@RnJ@f3IvNNNA-HBn`=n0n"|HJ0g`Rn0n"|HJ0g |H2n ;fBn`" |Ix2n"|H4nRnRn0.nm0nIx (\g0nIx\RnBn`0nIx"N4nRnRn0nJ6f |Ix2nB-|Ix0n"|HJ0fBn`Rn`Bn./. /.Bg?<KN -@fJnfNNNByIv.?<INT .N^NuNV=|Bn` n .fBnRRn N2n"nQfJng(Bn`RnRn N2n"|74nQf.? 2.HЁ/?<a\J@gBn=|` .:g .\fBn0n6H@RnJ@fA-HBn`=n0n"|HJ0g`Rn0n"|HJ0g |H2n ;fBn`" |Ix2n"|H4nRnRn0.nm0nIx (\g0nIx\RnBn`0nIx"N4nRnRn0nJ6f |Ix2nB-|Ix0n"|HJ0fBn`Rn`BnBW/.?<=N\-@nJnfJm2Bn.Y/]/. aP .>?<>NTBqHp` #qHB@N^NuNVBn.a n Xf =|RBn`RJng20.@=@ . o.H|n`.H|n`0. =@.H|n nH@RJ@f0.N^NuNVBAV-HR-nRN-nJ`.H` nRRR nR"nRRR`| n "nH|2A pJg: nH|0@ -PFR`RR nFH"nRRFJ@f` nRRR``|%g|\gh` nH@RJ@fF nRB`RJ nNH"nJRNJ@fN^NuNVBn`. n2n p "f n2n 02nR n2n.aH2n"Ё @ ("f, n2n.aH2n"Ё @B(0n-PRn`z .\fl n(H@`( n `2 n `( nB` n``|0g|ngְ|rg`R-n`R n"nf`R nPf~ n2n pJfN^NuNVBn> a n~.?< NT n(HHЮ @B(=|`< n2n  m( n2n ~n0n"n4nRnRn0n"nJ0f n2nB n2nB(0.N^NuNVBn`0nRn.Q/< n ??<?NPJnB@`p=@g . f n2nBBnBn`< n2n  m( n2n ~n0n"n4nRnRn0n"nJ0f n2nBJng0.` Jngp`B@N^NuNVB@=@=@BW?<ENT=@>?<ENT=@`, nf nJfByIv.?aA-Hz-nz&BnBnBnB n JPg n-P&-nz*=|-|p~`R~ n~  g./.~apX`h.H`H nzBRz`R~ n~  gRn N2n!nz&`* nzRz n~Jg n~H"nz|"@R~RzDf`-n~` . gR~ n~Pf n~BR~BW/.?<=N\-@m=|`.a.?a`-n~` . gR~ n~Pf n~BR~BW/.?<=N\-@m. .>Bg?<FNX .>?<>NT=|`.aD.?a`-n~` .>f =|R . gR~ n~Pf n~BR~Jng2>/.?<=N\-@lBW/.?<?<?<FNX .>?<>NTJng>?<B?<BNP=|`$ nzRz`H |8 rW hN n~H@R~J@f n JPg@=|`$Rn N2n2n!Q&Rn n2n pJf nzBRz nzB N2nRI!nz&-n&v-n*".va-|p=|=|`FBnRn0n"N4n"i&0H2nRnJ@f n2n Rn N2n h&Jf n2n n2nB(Sn0."n n| Jng0./U/&aP .>?<>NT`|.va԰|f0 nv (:f$ nvH|3q>?<NT`>.?/.v?<a\J@f.?!/.v?<a\J@gB@=@=@=@=|` N2n.&ar N2n h& /f N2n h&(H`$=|Bn`,=|Bn` =|```|Dg|Fgа|Tg`=n`Rn N2nRI h&"N4n#H&Jf`Rn N2n h&Jf8 nJg .&a.H/<G/.*aPJnf".?%a.G/.*a4X> a#*G3qDaJ@f#qHJnf>a`nBqH.q6a=@Jng 9q-f&Jng 9q-gJng8.?3/<q6?<a\J@f.?5/<q6?<a\J@f.?8a`.q60n/?<?<@NPJnf=n` .?9/<?<?<@NPRn nm-|q0 n=P.?;?<0.@|H/aߤ\.?=a.???<0.|H/a~\.?Aa.?C?<0.r `||PH/aP\.?EaV-|q. n=P.?H?<0.r `|H/a\.?Ja.?L?<0.@|?H/a\.?Na.?P?<0.|@H/a\.?Ra9q-H=@ nl .?Ua>a݌.?W/<?<?<@NP-|q2.?Z?< n/a\\aJ@f.?\aJnf>a\`4.?]/.v?<a\J@g nJg .&a.H/<G/.*aP#*G3qDaޠJ@f#qH>a`at9q-H=@0.|g.?ca#qH`zBqH n.Jf.?a#qH`L..a=@0.|g.?a^#qH` >?</<H?<CNP#qHaJ@fJqHf>a,`.?/.v?<aۮ\J@g.?a 9qH>a` .?/.v?<a|\J@g( nJg .&aV."a0."a` .?/.v?<a<\J@gBn`|.@ 9H2.HЁ/?<a\J@f 9H2.HЁ.at 9H2.HЁ.aۄn0n"yH0H"yH4n)HAg,Rn0n"yH0H"yH4n)HAf`J9Hg.@a.Ha` .@/.v?<aX\J@f.@/.v?<a@\J@g n"Jf >a` nJg .&a.H/<G/."aPP#*G3qDaJ@f>aB#qH`BqHaBW/<H?<=N\=@.Ix/<?.?<?NP=@Jno.Ix0n/?<?<@NPJnnafJ@f>?<>NT` .@/.v?<a4\J@f.@/.v?<a\J@gV.*ad=|`" N2n.&aDRn.@ a6 N2n h&Jf> a,` .@"/.v?<aخ\J@g nJg .&aJnfX>qRW/<Ix?<GN\J9Ixf\IxB9Iy.Ix/<IxaXH/?<?<@NP`"."?<;NT#qHg .@%ah` R.@:/.v?<a\J@g. nJg .&a."?<9NT#qH` .@=/.v?<a׶\J@g. nJg .&a."?<:NT#qH` .@@/.v?<ap\J@f2.@C/.v?<aX\J@f.@G/.v?<a@\J@g nJg .&a n"Jg.H/<G/."aZP#*G3qDaJ@f#qH>aB`J9q-H|f,a>a&> a.H?<ANT#qHaآJ@f>a`>a`.@K/.v?<an\J@g. nJg .&aH../.*aXH#qH`~.@O/.v?<a(\J@g nJg .&a."a n"Jg n"H>W`BW/?<6N\.@Ta" n"Jf >a$`."a> a> a .@sa.@?</.a\> a.@a.@?</.a֤\> aݾ.@aܢ.@?</.a~\> aݘ.@a|.@?</.aX\`R.@/.v?<a\J@g nJg .&aBn` |Ix2nBRn n'm."a֎ n"H|3qIxIyIzN>q?<NT-@ n(gI{ n0( "n2)A=@ n=h n=h>q?.?./<Ix?<?<N >q?.?./<Ix?<?<N n0H =@-|IxzBn`* nzBRzBn` nzBRzRn nmRn0.nm0.n=@Bn`0>q?.?</<Ix?<?<N RnRn n0(nnN>aۜ`t.@/.v?<a\J@g nJg .&a."a n"H|3qBW/..?<=N\=@.Ix/<?.?<?NP>?<>NTN>qBg?</<I?<?<N N>a`.@/.v?<aV\J@f.@/.v?<a>\J@gt nJg .&a nmJ.@/.v?<a\J@g>`BW/../."a݌P|f.@a\#qH`>a0`.A/.v?<aѲ\J@g nJg .&a."ad."N> /..?<?<>NT>aل`\.A/.v?<a\J@g(.AaL~p.p?< NT`.A,/.v?<a\J@g nJg .&aߞ..NBW/."?<=N\=@.Ix/<?.?<?NP=@Jno.IxN H#qHJnnN>aؤ`|.A0/.v?<a&\J@g >a؀`X.A5/.v?<a\J@g Nd`6.A;/.v?<a\J@gL nJg .&a޺>?<>NT>?<>NTNlBW?<LNT`.A@/.v?<a|\J@gd nJg .&aV>0N=@0.|H.a.AH/<?<?<@NP0.@|H.a`V.AJ/.v?<a\J@g< nJg .&a.AO/<?<?<@NP>a*`.AR/.v?<aά\J@g< nJg .&a݆.AY/<?<?<@NP>a`.A\/.v?<aX\J@g .A`/<?<?<@NP`v nJg .&a.&/.vaXJ@fJ./.vaݰX#qHf>/<q NX`JqHl.Aca> a& nf BW?<>NT>Bg?<FNX nf$>?<>NT>?<?<FNX nJg./<paX=@` .paJ@fN^NuNV#H yH#,H.q?<NTB9HBqH>a`Bn`@.Av 9H2.HЁ/?<a\J@g 9H2.HЁ.Za`*Rn0n"yH0H"yH4n)HAf./<7aX.q NhJ@g$=|`>?<>NTRn no`&BnB.//aTP`N^NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu (A)bort, (R)etry, or (I)gnore ?00123456789ABCDEF.PRG.BATAUTOEXEC.BATPATH=*.*    , : > L V "<>@*^x b00 :Wild cards not allowed in path name.File Not Found.Destination is not a valid wild card expresion.******* TEST CLI *******Command v0.33 6/26/85 LTGDone.Command is incompletely specified.. to {}Wild cards not allowed in destination.:DIR or LS [filenm.ext] [/f] [/d] [/t] /f - anything but directoryies. /d - directories only. /t - terse: names only.PATH [;[pathnm]...] With path name sets default path for batch and commands. Without path name displays current pathCAT or TYPE filenm.ext Writes filenm.ext to standard output.REM or ECHO ["string"] Strips quotes and writes string to standard output. is replaced by 0x13, by 0x10, by 0x0.CD [pathnm] With pathnm it sets default for working directory. Without pathnm displays current working directory.MD [subdirectory name] Creates a new subdirectory in current directory.RD [pathnm] Removes named directory.RM or DEL or ERA filenm Removes named file from directory.REN source_file_nm [destination_file_nm] Renames source to destination.SHOW [drive_spec:] Displays disk status for default drive or drive specified.INIT [drive_spec:] Reinitializes FAT entries this wiping disk.COPY source_file [destination_file] Copies source to destination.MOVE source_file [destination_file] Copies source to destination and deletes source.PAUSE Writes 'CR to continue...' to standard output and waits for a carriage return from standard input.EXIT Exits CLI to invoking program.VERSION Displays current version of OS.WRAP Enbles line wrap.NOWRAP Disables line wrap.CLS Clears the screen.Cannot copy to itself.Error creating file. ;PATH=PATH=BAT not found. not found.LSDIRDirectory of ... 0/0/0 0:0:0 0 CHMODUnable to change mode on subdirectorys or volumes.Invalid mode specification.Invalid mode specification.ERRCompetion code for previous command = PATHENVPATH=PATH=CATTYPEREMECHO CDDirectory not found.MDRDRMDELERARENSHOWAllocation Information: Drive Total Units on Drive Free Units on Drive Sectors per Unit Bytes per Sector INITPUTBOOTCOPYMOVEMOVEDisk full - copy failed.GETPAUSECR to continue...PUTHELPBREAKEXITVERSION.WRAPvNOWRAPwCLSECommand not found.PATH=_in_term_rm_term_brkptd_cpmopen_cpmcrea_cpmclos_cpmread_cpmwrit _div10_mod10_oscall_bios_setjmph_longjmp_devectol_super_user_zero7_hexch7_prgTail7_batTail7_autoBat7_pthSymb7_wildExp7_ncmps,_prthexh_strlen_prtdecl_pdl(_prtDclFp_ucase_gtFlNm4_chkDir_chkDst:_mkDst_mkSrc &_wrt _wrtln _dspDir _dspMsg _copyCmd_renmCmd_dspCL _setPatht_execPrg_execBat_xCmdLnb_mknum_chk_sub_chk_str_readSi_readDsk_cmain5lmul7_WSrcReqG_srcDirG_dstDirH@_rtrnFrmH_prntEnvH_pathH_basePagH_srcNmPaH_srcFlNmH_dstFlNmI$_dstNmPaIh_exeflgIv_bufIx_linp_jbq _drvq_srchbq_WAttCodqD_drvchqF_compl_cqHD XB2 ""hD<.X  $": ,80 $  $ *( * 4N(*H     *8 *  ,  F *88 Z: $("& 4(pJ   $$ . dx  $$ &<¼"D@Z  2     $     .   @"   B  D*4  4 4 8" $< \4    4. 0 T"B   64:   2  $ 4 0,,D     `!f'*O*m#'V - ЭЭм@"ҍ¼.A// Bg?<JNA y'V"h#'ZE?/ N dN"/0<NBNu o AdpNu#'ZBNuNV0/"/ NB'Zd0< A#L"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN!T-@JlB` .`N^NuNV.#N>?<LN!TN^NuNV n f > NX>?<N!TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//N!LP:|0|9o^E0//N!`P.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|#|JDf8<&n|`RJgSDl`"``H |#pr W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH`t n h(H`@Ry'v`PRy'x`F n ./<#NX>?<LN!T`|Dg|Og|dg|og`SnX no n h -gv ng.#N>?<LN!T n .N r3+zJy+zl( n ./<$NX>?<LN!T.//<\/NP> /.X/NPBF`0F u (g">/<$8NX>?<LN!T>0H/6R/NP .g">/<$KNX>?<LN!TRF|mzBF`$>0H/60H/5NPRF|m.$`NBW?<LN!TJL N^NuNVH no.$fN>?<LN!T . H>>/<'zN 0X|g*>+zWA/<$jNX>?<LN!T>RW/<)zN 0X|g*>+zWA/<$NX>?<LN!T>/./</. N PHм'z/N /. /UNP>/</. N PHм'z//.N >/<'zN X|g*>+zWA/<$NX>?<LN!T>RW/<)zN X|g*>+zWA/<$NX>?<LN!TJLN^NuNVH n (:gp` nJ(gp` nH>|am|zn| |Al|Zop`T|A|oJy'xfp`8.$N.U/<Bg?<?N!P.% N0`JLN^NuNVH:. Hŋ HE<. Hƍ BGJy'vg >|FBD`:>???RW?9+zB/.?<N!J@f 0<`RD|mp`JLN^NuNVH:. Hŋ HE<. Hƍ BGJy'vg >|FBD`:>???RW?9+zB/.?< N!J@f 0<`RD|mp`JLN^NuNVH *n(n >.`SGlJL0N^NuNVHNBW/<#eNRX>/<#eNRX>/<#eNRX n2n B*n`&HHм& @g H| `HRJf> /.N XJL N^NuNVH BWN*#'b#'fBy'`.#[a*n`N`RJgHHм& @fJg2 "g 'fFH>/ RNX(@ f.%/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм& @gJ5pg M2GBRGH`BWN.BW/ RNjXJ@g.R/<%$aX`l>N. ->f@>/ TNjX|f>B?<N\|f.R/<%1a|X`$BW/ RNZX|g.R/<%@aVX`>?/ NXJf>*/ NXJg-|2$.8?<NT>/ ?<Nb\<f.%O/ aX`^.H?/.aZ\.N>RWN(@./ NX.a>/ ?<Nb\<f`.a`|g`JfBaSy'`.'fNz|f.%i/<%Za*XB/9'b?9'`NV\>NJL0N^NuNV|./NX. /NX.%j/NX.?< NT>NN^NuNVH*n y'f X'fRy'`JL N^NuNVH*n. (nGVfJL8N^NuNVHN0>|fp`>N08*@+|JnfU.#e/.N XJ@f U0`R`.#j/.N XJ@fU0`2>/.?Nb\J@g3#&3'^&p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN>NN^NuNVHBG`0м%n.NRG|mJLN^NuNVH*n0-|g*.N-g .NB@H+@+@Bm m>N.JL N^NuNVH>.>N&*@ f3 &3'^&p`NBF0|f>?<>N HT<l|>N>NzJFf0``3&3'^&pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N\>Gg mp`J-gJg-g;| `;| `>0- D@H/?N\Bm +mB@JL N^NuNVHN0>|fp`>N08*@+|Jn fUJnfU.#e/.N XJ@fU;n 0``.#j/.N XJ@fU0`d>/.?Nb\J@g>Nz3&3'^&p`0U>B-H?N\BWB-H?N\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N&*@ f3 &3'^&p`$>?-/. ?<BN HP+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y&V*T`ZB@0-BA2-@F@J@g>N"B`:B@0-ne `*&Vf>a*@ f>N"B`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#&V PJL0N^NuNVH >.|?GG0@>N**@fB`* R*@(M9GB@0,F@9@.Pa 9&VJL0N^NuNVH *nQB@0-BA2-@F@J@g>N"p`(y&Veeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #&VB@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#&VB@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y'Z(G'Z.Nz|f3 &3'^&p`>Bg/ N\ JL0N^NuNVH>N&*@ fp`vJnfB@`j-g3 &3'^&p`L0|g>/. / NP`0-g>/. / NP``>/. / NPJL N^NuNVH|BG` &Zf &Z0`RG|m3&3'^&pJLN^NuNVp2.`F@H&ZB@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@+|0.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 &3'^&B`0B@08*@+|-f3 &3'^&B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N =@B0.ѭJnf3&3'^&p`^=n`8Rn>?</<&^/-/ N =@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N =@Jnf3&3'^&p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|` n(g-|| n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<N!X0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м+|-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN H\JgB@`0<>`d>ON HJgB@`0<>`J.?<=N HT>o n1GBG`,.?<AN HT>``||b@0@&` PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y'ZCCbNC NJg .NuNV n=h.0n/0n/N XP/?.?<?N HPN^NuNV n=h.0n/0n/N XP/?.?<@N HPN^Nu#'jNA/9'jNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNV/. /.N ʿ 9'rN^Nu C"/lD&/nm <"`\Df r`:pmn2pr`,tl 0BAHA`Ԃփd`efJojDDJojD#'r&Nu////N!`P Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#'nNN/9'nNu#'nNM/9'nNu#'nNA/9'nNu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::ZAbort (null)bad option %s usage: fixkeys [-d][-o] drive bad drive specification %s bad TOS table[%d] bad MINIX table[%d] Done Eh?read error on drive %c read error on drive %c write error on drive %c write error on drive %c Insert write-enabled copy of MINIX BOOT diskette and hit RETURN go : unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   &N&N f:ff!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6 R $ 0 $    &    6$R$b   , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* hlv . /.. ALCYON A 0dCRTSO O 2END O 3HEAD O 4LIBC A 5*README %elrem.o`bNV/. /.N 9N^Nu_ldivr_ldiv_lremlrem~~lrem~l2 ~al1 lremu.on`*////NP Nu_ldivu_lremulremuldiv.o` C"/lD&/nm <"`\Df r`:pmn2pr`,tl 0BAHA`Ԃփd`efJojDDJojD#&Nu_ldivr_ldivldivhbitL10 L30L20L110xL35,L90fL40:L60PL50NL80`L70XL100pldivu.oZ``~ C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu_ldivuldivuL20L100ZL40(L60BL50@L90TL80Llmul.oP`TNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nulmul~~lmul~sign~l1~l2 ~t1~t2L2L3L4P`0p O "R"H#/ /?N ?N`_main_etext_exit_edata_end_environstartL0.``b.yN`_main_stackptbegtextbegdatabegbss_exit _data_or egtty.o` bNV. ?/./. NPJ@fF`.?</.N\.N0@UH-H \g.Np`,.?</.N\Jf>.NB@`N^NuNV-yg Jfp`"`R n :fR``R n  g n  g n  g n  g>/./.NPJ@f`R nJg n :g n #f n #gp`BnR` 0. "nHA|=@R nJg n 0m n 9o0.`2`R nJg n :fR nJfp`N^NuNV-yg Jfp``R n :fR`r`R n  g n  g n  g n  g>/./.NPJ@fp`0`R nJg n :fR nJfB@`N^NuNV-yg JfB`J`R n :fR` `R n  g n  g n  g n  g>/./.NPJ@f`R nJg n :g n =f n =gB` n -PR`@ nH`R nH|"n "Q`R nH` n P` n P ` n P ` n P ` n P` n P `Bn`0.@"nHA|=@R nJg n 0m n 9o0."n "QS`, n P"n``H |r W h0N`$ n P"n`|\g|^g` n RR nJg n :f n PB"n R .`2`R nJg n :fR nJfB`N^NuNVHA -HBn*|` nH`R nH`Jf <`R n0"nHAH м f м`B-@`%`3`tJnf 0.`0. =@09nRn0.H |0H0.H H@|0H`$` |%g|+g<|dg|ig`` n` |%g`R nJfB <`JL N^NuNVH*n fp``H? nNTJfp`JL N^Nu0123E\^bfnrt..XTERMCAPTERM/etc/termcaprOOPS_capab_incr_fclose_getenv_strlen_fopen_strcmp_fgets_strcpy_strncmp_tgetent~~tgeten~bp~name ~_EnD__~fp~file~cp~lenL2hL3~L5zL4pL1~L6L7uL8L9L12TL11L15L16L14L13L19L20L18L17L21TL24(L23L22DL10n_tgetnum~~tgetnu~id~_EnD__ ~cp~retL10000L26L25L29L28L27L32L33L36L35L34L37L40 L39L10001,L38,L41>L44hL45JL43dL10002L10003L42L48L47L10004L46L31L30_tgetfla~~tgetfl~id~_EnD__ ~cpL10005L50L49zL53L52L51L56lL57L60L59L58,L61LL64TL63PL10006hL62hL55hL54t_tgetstr~~~tgetst~~id~area ~_EnD__~cp~ret~iL10007L66L65L69L68L67L72L73L76L75L74L77L80L79L10008(L78(L81:L84L85JL87lL88VL86~L89rL91BL92L90XL93L94L95L96L97L98L99L100L101L104L105L103L10009L10010L102L106.L107.L108L109LL110\L83~L10011L82L113L112L10012L111L71L70_tgoto~~tgoto~cm~destcol ~destlin~_EnD__~rp ~retL115`ret~dp~argno~numvalL118L119L121L122L124L125"L1264L127L114*L10013hL10015jL123L128rL129zL130L10016L10018L120L131L117L116_tputs4~~tputs4~cp ~cp~affcnt ~outc~_EnD__L133LL132hL136^L135PL134b$4D,L<$<LLL  ctime.o`NVH n.BnBn=|BnBnBn`&0.HH@|fQRn33ln30.HH@J@fRy`*/<Q0n"<00H/NPRn/<Q0n"<00H/NPo` QRnQl` Rnl` ?.?.?.?.0n"</0/</<Q/NP/NP @H//</<N <`JLN^Nudhlptx|JanFebMarAprMayJunJulAugSepOctNovDecThuFriSatSunMonTueWed%s %s %2d %02d:%02d:%02d %d ldivlremlmul_sprintfL1`days_peL2`monthsL3dL4hL5lL6pL7tL8xL9|L10L11L12L13L14L15H`daysHL16L17L18L19L20L21L22_ctime~~ctime~pt~_EnD__ ~tm~bufL24`buf~tL27PL26,L28FL25XL29~L32L31L30L35L34L33L38L37L36L41 L40L39L42L23 popen.o`>(,NVH n rfB@` n wfp`p=@ ng .YNJ@mN=@lB`Jnf*|` JUg H.NT(e0.H>NJngBW`>JngB@`pH?6NTJngB@`pH>NB/./< /</<N>N0n0v0JngB@`pH>N. 0.H?6NT`JL N^NuNV n=P.?<NT-@.?<NT-@.N`0n"<00ng.YN=@|f nf=|.?<NT.?<NT0nBP0.`N^Nu/bin/shsh-c_pipe_fork_wait_fdopen_fclose_signal_execl_close__exit_dup2L1`pids_popen~~popen~command~type ~_EnD__~piped~XtypeL10000L10002.L10003,L10005.~pidL10006ZL3`L2xL4(L7L8rL9L6L5L10007L10008L10009L10010L10011L10012L12 L11L10L10013LL10014N_pclose~~pclose~iop~_EnD__ ~fd~status~wret~intsave~quitsavL16L15L14L17L13: <<L<4D<,,$,,puts.o`<~NV./.NXH@.?< NT.H`N^Nu_fputc_fputs__io_tab_puts~~puts~s~_EnD__ ~cL18 qsort.oT` NV#>0. S@Ю//.N0PN^NuNVH>. . c\*n(n 2AH/ . 2HЁ/NP/0G/NPЮ-@&@` Jnl`>/ / NPd/ / yNP=@o`/./ yNP=@lBd>/ / NPǘ`0HѮ>/ /./ N *K`(Jnf0HѮ>/./ NP`ǹb|d(>/ / / N 0H(n`> 2H//.N0P0HЮ-@`JL8N^NuNVH *n(n >.` H0SGJ@nJL0N^NuNVH*n(n &n>.` H0SGJ@nJL8N^NuldivlmulL2`qcompar_qsort~~qsort~base~nel ~width~compar~_EnD___qsort10L5,~~qsort10~a1~a2 ~width~width~_EnD__~left ~right ~lefteq ~righteq~cmpL10N`.UN=@ng nf nf=|0.`N^Nu/bin/shsh-c_fork_wait_exit_execl_system~~system~cmd~_EnD__ ~retstat~procid~waitstaL2@L5 L4L3L8DL7DL10000bL6bL9rL1z abort.o` TNV>N?NT`N^Nu_kill_getpid_abort~~abort~_EnD__L1 abs.o`"bNVJnl 0.D@`0.`N^Nu_abs~~abs~i~_EnD__ L10000L10002L1access.o`$bNV.?. ?<!?<N\`N^Nu_callm3_access~~access~name~mode ~_EnD__L1 atol.o@`NVH*nBBE`RHHм @(f -fRz`/< /NP.0ހH|0| eJEg D` `JL N^Nulmul__ctype__atol~~atol~s ~s~_EnD__ ~total~digit~minusL4L3L2,L58L8XL7~NVBB/.?.?. /.NX??<?<N`N^Nu_callm1_len_chown~~chown~name~owner ~grp~_EnD__L1: chroot.o`"TNV.Bg?<=?<N\`N^Nu_callm3_chroot~~chroot~name~_EnD__ L1cleanup.oT`HNVHBG`,0GJg0G"<.NRG|mJLN^Nu_fflush__io_tab__cleanu~~_clean~_EnD__~iL48L5L66L36L2>L1>  crypt.o` PNVH *n(n >. N"Mr0Q`0G2G4ASA2A0SGJ@nJL0N^NuNVH*n(MG7B@=@B@-=@`T@RDb0.H@0.H@7JL8N^NuNV:H*n N"nr0Q>0/9/NP0n=P>`. NTSn>Jn>f N"n r0Q>0/</NPIpGA-H:`S: n:@#A@H м@b&MBn>`B@<F@H@@H@@H@@@@H@0.>H2HЁ @"<0@>0@|H0@|H0@|H0|HRn> n>mn> /</ NPJL8N^NuNVH*n |"Mr0Q>8/</<NPJL N^NuNV~H*n>@/</ NP~`Jn g0`pG=@ N"Mr0Q|`0F2FSFJFl.~/ /<?.N |`&0H6@2F)~A@2F@ SFJFlSGJGll>@/</ NP>@/<@/ NPJL N^NuNVzH *nI`$|`H2`|H0SFJ@fRBJg Ue`B UeI .N.`Be N~"|@r0QA~#BG` n R 0G@<Zo <;`<9o <5`<.BE`RH2`|g@0E=@|0n|(~@=@z0n|2n|i~0.z2n|@RE|mRG|mdJ9Af @ABG`BW/NlXRG|m#@I*|B`4BFz` FH@0SEJ@f|.|9o^F|Zo\FƹeB <@`JL0N^Nu:2*" <4,$ >6.&@80( 91)! ;3+# =5-% ?7/'(08@ '/7?&.6>%- 5=$, 4<#+ 3;"* 2:!) 19!"#$%&'()*+,-./0123456789:;<=>?@  91)! :2*" ;3+# <4,$?7/'>6.&=5-%      )4%/7(3-!0,1'8"5.*2$                                                                                                                                     @L1`keyL2`InitialL3@`FinalTr@L4`swapL5`KeyTr1L6`KeyTr2L7@`etr@L8`ptrL9`s_boxesL10`rots_transpo~~transp~data ~data~t ~t ~n~n~_EnD__~xL10000 L15BL14*L13JL12J_rotateT~~rotateT~key ~key~_EnD__ ~p ~ep ~data0~data28L20L19|L18L17L21`EP_f~~f~i~key ~a~x ~x~_EnD__~e~ikey~y@~k>~p ~q ~r:L10001L26L27L25L24 L10002L30fL29LL28rL33L34|L32L31L23$_setkey.~~setkey.~k ~k~_EnD__ L10003DL35b_encryptl~~encrypl~blck~edflag ~_EnD__~p ~iL39"L40L10004L10006L10007L43L44L42L41L47L48L46L45 L38 L37(L36P_cryptZ~~cryptZ~pw ~pw~salt ~_EnD__~pwb~resultL50@`result@~p ~new_etr~~iL53L52nL56L55tL54L10008L51L59L58L57L62L61L60L10009L65L66L67L68"L69L70"L73xL74(L75vL72vL71~L64~L63L76L79L80L78L77L83L82L86L85L84L87L88L81 L49ctype.o.`  AAAAAABBBBBB __ctype_dup.o`.TNVBBBBgBg?.?<)?<N`N^Nu_callm1_dup~~dup~fd~_EnD__ L1*dup2.o`4bNVBBBBg?. ?.W@?<)?<N`N^Nu_callm1_dup2~~dup2~fd~fd2 ~_EnD__ L10exec.o ` NV./ /.NP`N^NuNVA -H` n XJf n./ /.NP`N^NuNV./. /.NP`N^NuNVBnBn-n -n`Rn n XJf`Rn n XJf0.nV@@Ўм-@0.H2.HЁЮb3p`A-H0.H"n"XBn`r ."Ҽ=@0.H"n"X n -PX `* n"nRRb3p` nJf nBRRn0.nm nBXBn`r ."Ҽ=@0.H"n"X n-PX`* n"nRRb3p`| nJf nBRRn0.nm nBX ."ҼV@HH=@B//.Bg?./.NX??<;BgN`N^NuNVB/</.Bg?< /.NX??<;BgN`N^Nu_nullptr_errno_callm1_len_execl~~execl~name~arg0 ~_EnD___execveL1"_execle&~~execle&~name~argv ~_EnD__~pL56L46L3DL2b_execvf~~execvf~name~argv ~_EnD__L6~~execve~name~argv ~envp~_EnD__~stack~argorg~envorg~hp~ap~p~i~nargs~nenvps~stackby~offsetL10L9L8L13L12L11L14L7L17L180L21L20bL22L19L16L15L25,L26L29L28L30L27L24(L236_execn~~execn~name~_EnD__ ~stackL32`stackL31   exit.o`>pNVJg yNBBBBgBg?.?<BgN`N^Nu___clean_callm1_exit~~exit~status~_EnD__ L2L1: fgets.o`^NVH*n` Ǿ| gSn g.N>|fܾ|ffB` B .`JL N^Nu_fgetc_fgets~~fgets~str~n ~file~_EnD__~ch~ptr L4L3L24L100004L5JL1Tfork.o`*FNVBBBBgBgBg?<BgN`N^Nu_callm1_fork~~fork~_EnD__L1&fprintf.o`vNV./. /.NP n(g .NN^NuNV. /./9NP y(g.NN^Nu_fflush__io_tab__doprin_fprintf~~fprint~file~fmt ~args~_EnD__L24L14_printf8~~printf8~fmt~args ~_EnD__L4rL3r   fputs.o`0NVH*n`. H?NTJfJL N^Nu_fputc_fputs~~fputs~s ~s~file ~_EnD__L4"L3L2&L1&fread.o.`v&NVHBnBnJn gN`@=n .N>|g0H"nR` 0.`SnfRn0.ne0.`JLN^Nu_fgetc_fread~~fread~ptr~size ~count~file~_EnD__~c~ndone~sL2dL5ZL4L8"L9HL10PL1lL7PL6VL3dfreopen.o `2NV.NJ@gB`. /.NX`N^Nu_fclose_fopen_freopen~~freope~name~mode ~stream~_EnD__L2L1. fclose.ot`NVHBG`.0G"< 0f0GB` RG|mξ|mp`X.N n>N n(g nJg n.N|o .NB@`JLN^Nu_free_fflush_close__io_tab_fclose~~fclose~fp~_EnD__ ~iL4:L5L68L2@L38L7NL1L8L9 fopen.o`NVHBnBG`|mB`XRG0GJf n H`n>/.NX=@lB``n>/.NX=@lB`>B?.N\`HnBW/.NX=@lB``"B``|ag|rgİ|wg\`>N-@fB`z nBh n0 n1n>N/ n!_ nJf nh` nh  n"n!i 0G .`JLN^Nu_open_malloc_creat_lseek__io_tab_fopen~~fopen~name~mode ~_EnD__~i~fp~fd~flagsL4"L5L6 L1vL3 L22L8L9>L10bL7L11fL12L13L14L15L16L17FL18P$  $creat.o`$bNV.?. ?<?<N\`N^Nu_callm3_creat~~creat~name~mode ~_EnD__L1 fseek.o`NNV nh n(g nl nJg n(f n=h-n Jnf*>B n?N\/0.HSѮ` 0.H JnoJ0.H".m: n ("n") n ."nѩ ."niB@`r>/. n?N\-@ nBh`4 n(g&.N>/. n?N\-@ fp`B@`N^Nu_fflush_lseek_fseek~~fseek~iop~offset ~where~_EnD__~count~posL2L3L4L5L6L1JL72L82L10000DL10002F   fflush.o`NV n(f n(fB@`t nJhnB@`b n> n/( n?N\=@ n0(nf nBh n"n!i 0.` nhp`N^Nu_write_fflush~~fflush~iop~_EnD__ ~countL10000 L2&L1L38L4ftell.o*`NVBn n(g n0(n`J n(g6 nJg* n(f n ( "n")=@`p`<>B n?N\-@Jl .`0.HѮ .`N^Nu_lseek_ftell~~ftell~iop~_EnD__ ~result~adjustL2&L3nL4hL5nL1L6fwrite.o`j NVBnJn gP`B=n . nH?NTR n(g 0.`SnfRn0.ne0.`N^Nu_fputc_fwrite~~fwrite~ptr~size ~count~file~_EnD__~s~ndoneL2^L5TL4L8L9JL1fL7JL6PL3^getegid.o`HpNVBBBBgBgBg?</BgN=@Jnl 0.H`09H`N^Nu_callm1_M_getegid~~getegi~_EnD__~kL28L1D getenv.o`lNVH*n(y`B-M` nJg nH@RDg nJf =f R`&\ fB`JL8N^Nu_environ_getenv~~getenv~name ~name~_EnD__ ~v ~p ~qL4VL3L7L6L10000 N3 ByN^NuNVJy lNJ@lB@`#Syn8>/<?9 N\3n B@`Z` # y"yRR y  fRSy yB#p`N^NuNV`R y :f yBRN^NuNVNzJ@fB`D# N2#N2.N3N2 < `N^NuNVN`. n/NXJ@gN^-@fNNJg .` `B`N^NuNVN` n0(ngN^-@fNNJg .` `B`N^Nu/etc/group_atoi_open_lseek_close_strcmp_readL1`_gr_filL3`_grbufL4`_bufferL5`_pntL6`_bufL7 `_gfd L8`_bufcntL9 `grp _setgren~~setgre~_EnD__L11$L12:L10J_endgrenN~~endgreN~_EnD__L14hL13v_getlinez~~getlinz~_EnD__L17L16.L20L21L22L23L19L18 _skip_pe2~~skip_p2~_EnD__L28@L27:L26LL25Z_getgren^~~getgre^~_EnD__L30tL29_getgrna~~getgrn~name~_EnD__ ~grpL34L33L32L35L31 L36 _getgrgi~~getgrg~gid~_EnD__ ~grpL40.L39L38:L41TL37ZL42Z ,$getpass.o` NVBn.N.Q? /<BgN\=@` >0.S@Hм/BgN\0nSH  f0nSHB=| .Q? N3 ByN^NuNVJy lNJ@lB@`#Syn8>/<?9 N\3n B@`Z` # y"yRR y  fRSy yB#p`N^NuNV`R y :f yBRN^NuNVNzJ@fB`# N2#N2.N3N2.N3N2#N2#N2# < `N^NuNVN`. n/NXJ@gN^-@fNNJg .` `B`N^NuNVN` n0(ngN^-@fNNJg .` `B`N^Nu/etc/passwd_atoi_open_lseek_close_strcmp_readL1`_pw_filL3`_pwbufL4`_bufferL5`_pntL6`_bufL7 `_pw L8`_bufcntL9 `pwd _setpwen~~setpwe~_EnD__L11$L12:L10J_endpwenN~~endpweN~_EnD__L14hL13v_getlinez~~getlinz~_EnD__L17L16.L20L21L22L23L19L18 _skip_pe2~~skip_p2~_EnD__L28@L27:L26LL25Z_getpwen^~~getpwe^~_EnD__L30tL29_getpwna~~getpwn~name~_EnD__ ~pwdL34"L33 L32.L35HL31NL36N_getpwuiR~~getpwuR~uid~_EnD__ ~pwdL40pL39`L38|L41L37L42 ,$atoi.oX`NVH*nBGBE`RH3| g y g y g y g y g -fRz` FH|0| eJEg 0D@`0`JL N^NuL1`_c__atoi~~atoi~s ~s~_EnD__ ~total~digit~minusL5L4L3NL6ZL9dL8^L7tL10000L10002L2close.o`.TNVBBBBgBg?.?<?<N`N^Nu_callm1_close~~close~fd~_EnD__ L1*gets.o`PNVH*n`.N>|g| f|fB` B .`JL N^Nu_fgetc__io_tab_gets~~gets~str~_EnD__ ~ch~ptr L4L3L10000.L2.L56?<NT=@0.` n H|H-@ n (H|H-@ n (H|H-@ n (H|H-@ n (H|H-@ n (H|H-@ .r".t塀".၀# .က#>6?<NT=@0.`2>6?<NT=@ 9 "n @ 9 "n @ 9"n 3@0.`>6?<NT=@ 9 r"n  9 r"n @ 9 "n @ 9 "n @ 9"n @ 9"n @0.`>=|30.`(`$|tg|t g|tg|tg(`N^Nu_errno_M_callx_ioctl~~ioctl~fd~request ~u ~_EnD__~n~erase~kill~intr~quit~xon~xoff~eof~brkL3TL4L1vL5L6FL7L8:L2v               isatty.o`:pNV3t3>6?<NTJ@lB@`p`N^Nu_M_callx_isatty~~isatty~fd~_EnD__ L20L16 fstat.o`8pNVBB/. BgBg?.?<?<N=@0.`N^Nu_callm1_fstat~~fstat~fd~buffer ~_EnD__~nL14itoa.o` NVHBnByJnl"0y-Ry0.D@=@Jnf0y0Ry`R<<'`F>.HǏJnfJGo"0|02yRy=|0ƑnHƍ JFn0yB <`JLN^NuL1`nextL2`qbuf_itoa~~itoa~n~_EnD__ ~r~k~flagL4:L5\L6L9L8dL10000zL10L7L3kill.o`.bNVBBBBg?. ?.?<%BgN`N^Nu_callm1_kill~~kill~proc~sig ~_EnD__ L1*link.o`HpNVB/. /.Bg/. NX?/.NX??< ?<N`N^Nu_callm1_len_link~~link~name~name2 ~_EnD__L1D  lseek.oV`PNV3# 3>?<NT=@Jng 0.H` 9 `N^Nu_M_callx_lseek~~lseek~fd~offset ~whence~_EnD__~kL2BL1L mknod.o`>~NVBB/.?.?. /.NX??<?<N`N^Nu_callm1_len_mknod~~mknod~name~mode ~addr~_EnD__L1: mktemp.o`nNVN=@-n` nHRJfS`&0.H H@|0"n0.H =@S n Xg .`N^Nu_getpid_mktemp~~mktemp~templat~_EnD__ ~pid~k~pL4L3L2(L7TL60L5bL1jgetpid.o`*FNVBBBBgBgBg?<BgN`N^Nu_callm1_getpid~~getpid~_EnD__L1&mount.o.`J~NVB/. /.?./. NX?/.NX??<?<N`N^Nu_callm1_len_mount~~mount~special~name ~rwflag~_EnD__L1F  open.o`$bNV.?. ?<?<N\`N^Nu_callm3_open~~open~name~mode ~_EnD__L1 perror.o `:NVJym y#e>/<?<N\`.N>/.?<N\>/<?<N\0y"<.N>0y"</0?<N\>/<?<N\N^NuNVBn`Rn nHRJf0.`N^Nu*:FXhz 3DSbz#Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeMath argumentResult too largeInvalid errno : _errno_write_sys_errL1L2L3L4L5L6L7L8L9L10*L11:L12FL13XL14hL15zL16L17L18L19L20L21L22L23L24 L25L263L27DL28SL29bL30zL31L32L33L34L35_sys_ner_perror~~perror~s~_EnD__ L10000L374L38L39_slenL40L41L36~~slen~s~_EnD__ ~kL46L45L44L43     pipe.o``\NVBBBBgBgBg?<*?<N=@Jnm" n0 n1yB@`` 0.`N^Nu_callm1_M_pipe~~pipe~fild~_EnD__ ~kL2PL1XL3X  printk.oN`xNVH *n>. <.I :HŋHE|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVH?*nI HJGg|%g>N`GA-HBn -fRRn=| 0f R=|0BEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bn|lg |LfRnJgH0` Rn~`Rn~ `Rn~Jng>// N`P&@`>?/ N\&@`RnJng0-\l- .D-@> /./ N`P&@`<l -0D@<> ?/ N\&@`x=| ?`j=| 0H`Z=| -\f -|pJDf8<&n`RJgSDl`"``H |r W h4N <FlBEJnf0D@:JEl< n -f" n0f nH>NRSF>NREf` nH>NRSFl`>NSEJEf`ZJL8N^NuDOUXcdefgosux(,(null)_putclremuldivu_itoa~~itoa~p ~p~num~num ~radix~radix~_EnD__~i~q L5L6.L40L3>L9JL8LL7PL2V_ltoa`~~ltoa`~p ~p~num~num ~radix~radix~_EnD__~i~q L14xL15L13L12L18L17L16L11_printk~~printk~fmt ~fmt~arg1 ~_EnD__~buf~args ~p ~s~c~i~width~ndigit~ndfnd~ljust~zfill~lflag~lL22L19L23L21L24$L25:L28NR`BGR` H@|R 0m 9oH` n=PT>NRR` n-PX-n`.H>NR nH@RJ@fR0".SAA=@o` > NR0.SnJ@f`2>%NRH>NR``|cgR|sgf`Jf 9>/<?<N\JL N^NuNV <c y RN^Nu_Buf_Bufp_write_prints~~prints~s ~s~arglist ~_EnD__~w~k~r~valp~p~p1~cL5"L4"L6:_putRL9RL8BL10000`L7`L11L12hL13L16L15L14L17L20L19L18L21L10"L3(L2H~~putR~c ~_EnD__ L24vL23v     rand.o`>bNV/9/N .UBgNTJfB`(  m.NB` 9 >WZN*@ f.%NB`#3AX#>N .UBgNTJfB`B-PB-QBRBmVIY.N @JftI f lP` fR-Q.gHBG`4 f".VNGmG.VN>.N(@ f+KR;GV `JL8N^NuNVH n 0Jng> y m.2NB`>9Ry>WN *@`.UNn(@ fB`b g./ N X`*L.f n P0.|"n Q`LR.UNn(@ fB`./ N X.f n P0.|"n Q y |gJng >W`BWN &@./ N X(M`./ N X.N(@ fJng0 y )@RDg.>NB`V`LJnfD yJg8 y )f.KNB``.XNB` `JL8N^NuNVH nBP>N *@`N.UN &@ fB`r0.|"nQ f0.|"nQ`./ N X(K yJg y |g y )f f > N `JL8N^NuNVH .UNb*@ fB` y<*g <+g<?g n0 `.f<?g.dNB`Ⱦ<+gp`p"n2<*f.g.?< N ,T`F<*fb.?<N ,T>N ./ N X./ N X>N ./ N X> N ./ N X`޾<+f.g.?< N ,T`<+fb>N (@./ N X.?<N T/N X>N ./ N X> N ./ N X`R<?fJ.?<N ,T>N ./ N X> N (@./ N X./ N XR y *g y +g y ?f.~NB` `JL0N^NuNVH nBP yHR`>N *@`>N *@`>N *@ nP` y ^f>N *@R`>N *@ y ]g y -f yH>N R` y -fR y ]g yJf>-N `Z y(H>|RG yH<|0R@@o.NB`` >N RGFoR` yH>N R yJg y ]f8BWN y ]g.NB`R nP`.U?<NT*@ fB`h0.|"nQ`P.NB`D`:.NB`.`$ yJf.NB` >N *@ yH>N RBWN nP`S./9NhX>JGn.NB`0G|o<*g<+g <?fSG nP|f nP>N *@` yH>N RSGJGnBWN ``H |r W h0N `JL N^NuNVH *yfV `(M BB# `JL0N^NuNV 9g y R`R N^NuNVH 9f V `,*yV(y`% b&n  BBJL8N^NuNVH .gP*n.N(@ g*L` f >` . >0@|H@0|H@JL0N^NuNVJg. .g n f. /.VN XN^NuNVH*n(n g f.NB@` -XH||g.NB@`JRgH&L`>V/-R/ NPJ@gR mRH>/ NX&@ f fB@`Jng #`BJ-Qg./ N lX`h&LJ-Pg<`./ N lXJ@gp`BR-PH>/ NX&@ f`./ N lXJ@gp` JfB@`JL8N^NuNVH # # .м(#*n(n(~ `BBSGJGn.YN J@g n n!y(p` `B@`JL0N^NuNVH *n`.N-@H` 9gB@`` yJgB@`` yJfB@`R`I yHgB@`.N>|o >/9/ NPJ@gB@`h0Hѹ`> yJg yH>/ VNXJfB@`*R` yJg yH>/ VNXJgB@`R```H|(y.N J@g,0GJf0G p``B@``pH|(y.N J@g,0GJf0G p`H`B@`>` n gA-H`@(y.VN J@gp`#.N*@ g gB@``B n f n(  fB@`p:(y.VN <`@JgH"yHAf.N J@gp`rSF0HЌ#ElB@`Z`:p`P`0.NB@`:``|'b@0@h PN*n f.$NB@`JL0N^NuNVH BG*y(nV nH`.N>``RGRHg``RGRJgH>/ NXJf`\`RGRJgH>/ NXJg`6.7NBG`$` |gt|g|g|gp`#0`JL0N^NuNVH*nfB`H-H|G-H|@JGfB`$ f 2H`` 0HЍ`JL N^NuNVH BG*n`"(n `Hf0`JfRGRJf0`JL0N^Nu$()*+.?[\^|X(XnnnX  4 J 6 f288:::::::::NULL argumentregexp too bigout of spacetoo many ()unmatched ()unmatched ()junk on end*+ operand could be emptynested *?+invalid [] rangeunmatched []internal urp?+* follows nothingtrailing \^$.[()|?+*\internal disasterNULL parametercorrupted programmemory corruptioncorrupted pointersinternal foulup_malloc_strlen_index_regerro_strncmpL1`regparsL2`regnparL3`regdummL4`regcodeL5 `regsize _regcomp~~regcom~exp~_EnD__ ~r ~scan ~longest ~len~flagsL18"L19L17_regc _regL20fL21L22L23L24%L25_regnextL26L27*L286L296L30L33zL34HL35pL32pL31~~~reg~paren~flagp ~_EnD__~ret ~br ~ender ~parno~flagsL38L39L402L37d_regnode L41_regbrannL42L43_regtail L44L45.L48L47@L49^L50|L46L10000L10002L53L54_regopta L52L51L55L56>L57^L58^L59LL60KL61^L62X~~regbran~flagp~_EnD__ ~ret ~chain ~latest ~flagsL67L66_regpiec L68L64L69L70L10003L65L71~~regpie ~flagp~_EnD__ ~ret ~op~next ~flags_regatombL74@L73XL75nL76L77dL10004L10006L78_reginse ,L79L804L81L82XL83L84L85L86L10007@L87RL88~~~regatob~flagp~_EnD__ ~ret ~flagsL92 L93L91 L94L95L96L97L98L10008L99 L102L101$L103L10009RL104`L105L106L107L90 L110L111L109L108L112L10010L100L113L114L115(L116FL117XL118XL119XL120L121nL122nL123nL124L125L126L127L128L129_strcspnhL130 L131L132 :L10011 8L133 RL136 |L135 bL134 L137L138 ~~regnod ~op ~_EnD__ ~ret ~ptr L141 L140 ~~regc ~b ~_EnD__ L144 "L145 (L143 (~~regins ,~op ~opnd ~_EnD__~src ~dst ~place L148 NL147 xL151 fL150 dL149 l~~regtai ~p~val ~_EnD__~scan ~temp ~offsetL153 L156 L154 L155 L157 L158 ~~regopt ~p~val ~_EnD__L160 (L161`reginpuL162`regbolL163`regstarL164`regendp_regexec ,~~regexe ,~prog ~prog~string ~string ~bolflag~_EnD__~s L10012 HL169 ZL170L168 bL171 ~L172L173 L176 L175 L174 L177 L178 L179 L180 _regtry lL181 @L184 $L183 L185 "L182 n2H/0/ NPJEgJ,f.1N` f(BJL0N^NuNULL parm to regsubdamaged regexp fed to regsubdamaged match string_regerro_strncpy_regsub~~regsub~prog~source ~dest~_EnD__~src ~dst ~c~no~lenL10000 L20L3L1>L4VL5L86L7bL9pL10L11L12L13L14L10001L156L166L176L181L6< rindex.o.`.NVH *n. ̾f(MJf `JL0N^Nu_rindex~~rindex~s ~s~c~c ~_EnD__~result L4L5L3L2L1$scanf.o`@ ,NV. /./9BgN `N^NuNV./. /.BgN `N^NuNV./. /.?<N `N^NuNVJyg* yH3RJ@f 3`.N3N^NuNVJyg S`.?9NTN^NuNV` n JfB@` n H. @R Dfp`N^NuNV n g& n g n g n gB@`p`N^NuNV n0m n9oB@`p`N^NuNV nAm nZn0.| =@0.`N^NuNVBn# 3N yf =|`~`f`R nH>N6J@f nJgDJymJ n %g@`N>N6J@f nHyfRNRn`R=| n *f RBn nH>NrJ@gF=|Bn` 0. "nHA|=@R nH>NrJ@f`Bn nH>N|lgB@`p=@gR n cg`N>N6J@fBn nH`=|`l=| `b=|Jng neJ y0f>N>N|xfUn=|N`N30BBnJnf=|Jng y+f N`"Jng y-f=|N`>NrJ@g 09|аnly0`R nfD>N|am0>N|fn>N|3``Jng .D-@Jng n P X` ."n"Q2XJng Rn``4`(Jnf=|`,Jng09H"n"Q"nRN=|0.SnJ@g JylJngXJngRn`Jnf=|`,Jng09H"n"Q"nRN=|0.SnJ@g>N6J@f JynJng n PBXJng Rn``6`*Jnf=|R n ^f=|R`Bn-n`R n ]g nJf nJg nB`,Jng09H"n"Q"nRN=|0.SnJ@g8>N6J@f&Jyo.?9NT2.@f-n n]Jng n PBXJng Rn``(``H |rW hNR`JymN0.`N^Nu[cdosux:<dZdnb_ungetc_fgetc__io_tablmul_scanf~~scanf~format~args ~_EnD____doscanL1(_fscanf,~~fscanf,~fp~format ~args~_EnD__L2R_sscanfV~~sscanfV~string~format ~args~_EnD__L3~L4`icL5`rnc_argL6`rnc_cod_rnc~~rnc~_EnD__L9L10L11L8_ugc~~ugc~_EnD__L14L15L13_scninde~~scnind~ch ~string ~_EnD__L20L19L21L172L18,_iswhite6~~iswhit6~ch~_EnD__ L10000hL10001jL23n_isdigitr~~isdigir~ch~_EnD__ L10003L10002L10004L25_tolower~~tolowe~ch~_EnD__ L28L27~~_dosca~code~funcarg ~format~argp~_EnD__~done~base~val~sign~do_assi~width~widflag~longfla~done_so~reverse~endbracL30L31zL34fL33L37 L36L35L38jL39|L42HL41BL40XL43L44L47L48L46L45L49L10005L10006L50$L51JL54:L534L52JL56LL57ZL58L59dL60dL61nL10007L62L63L64L65L66L67"L68"L71L70&L72VL73L74L75L69L76$L77L78L79$L804L818L55bL82/U n?N\? n1_`&> n/( n?N\? n1_ nJhn0 nJhf nh` nhp`N` n"n!i n(g0.|`"` n h H|"nR `N^Nu_read_fgetc~~fgetc~iop~_EnD__ ~chL2L1L3.L4L5lL6L7L8L9L10L11L12printdat.od`zTB___stdin___stdou__stdin__stdout__stderr__io_tab*  read.o`:~NVBB/. Bg?.?.?<?<N=@0.`N^Nu_callm1_read~~read~fd~buffer ~nbytes~_EnD__~nL16setbuf.oz`p~NV nJg n(g n.N nh n!n  nJf nh n"n!i nBhN^Nu_free_setbuf~~setbuf~iop~buffer ~_EnD__L2,L3VL1lmalloc.o `h NVH0.йм*@e.NJgB@`( y!MB.N#p`JL N^NuNVHJnf=|BF`>.VG|XGJf.>N(@ V(@X ##B(y`\&l0Ќ-@e> .Xc n!K)n n ( g*`# `(*L(T f>NJ@g RF|e>B`JL8N^NuNVH>. VG|XG n&h <(y`:b8f* n!l g*`# n&h` *L(T f0Ю-@e2 .Xc n!K n!n.N .`>> Nt-@fB`&>/./.N^P.N .`JL8N^NuNVH *n(n >.`0SGJ@fJL0N^NuNVH 0. =@>Nt(@ fB`*L`B0.SnJ@f `JL0N^NuNVH (y`b *L(T f n g *` # g nf n!l n g -f n+h n*JL0N^Nu_sbrk_brkL1`bottomL2`topL3`empty_grow~~grow~len~_EnD__ ~p L10000>L6DL5j_free_malloct~~malloct~size~_EnD__ ~prev ~p ~next ~new~len~ntriesL8L11LL12L13L168L17L154L18L19(L20.L7ZL14NNN^Nu_signal_alarm_pause_alfun~~alfun~_EnD__L2_sleep~~sleep~n~_EnD__ L3. alarm.o`,TNVBBBBgBg?.?<BgN`N^Nu_callm1_alarm~~alarm~sec~_EnD__ L1(pause.o`*FNVBBBBgBgBg?<BgN`N^Nu_callm1_pause~~pause~_EnD__L1&signal.oP`NV0nSH-P0nSH 3  g J f . ` <#>0BgNT=@ nf -|Jnl .` .`N^Nu_vectab@_M_begsig_callx_signal~~signal~signr~func ~_EnD__~r~oldL10001HL10000PL10003VL2L10004L10006L1  stcatch.o`0FHB0/?9? | pNT3LTNw_M_vectab_begsigmtypeback  sprintf.oT`VNV=|=|-n-n./. /NP.BgNT .`N^Nu_fputc__doprin_sprintf~~sprint~buf~format ~args~_EnD__~_tempfiL1R doprintf.o`xNVH *n>. <.I :HŋHE|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVH?*n (nHJGg|%g.?NT`GA-HBn -fRRn=| 0f R=|0BEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bn|lg |LfRnJgH0` Rn~`Rn~ `Rn~Jng>// N`P&@`>?/ N\&@`RnJng0-\l- .D-@> /./ N`P&@`<l -0D@<> ?/ N\&@`x=| ?`j=| 0H`Z=| -\f -|pJDf8<&n`RJgSDl`"``H |r W h4N <FlBEJnf0D@:JElH n -f( n0f. nH?NTRSF.?.NTREf`. nH?NTRSFl`.?.NTSEJEf`L9JL8LL7PL2V_ltoa`~~ltoa`~p ~p~num~num ~radix~radix~_EnD__~i~q L14xL15L13L12L18L17L16L11__doprin~~_dopri~iop~fmt ~fmt ~args ~args~_EnD__~buf~p ~s~c~i~width~ndigit~ndfnd~ljust~zfill~lflag~lL22L19L23 L21L24*L25@L28BL29^L30pL31lL32pL26xL27vL33L36L37L38L39L40L34L35L10000L41L42L44L45L46L47L48L49L50L51L52L43L53.L542L55hL56PL57xL58L59L60L61L62L63L64pL65L68L69L67L10001L66L70L71L72L73L74"L75nL76ZL79ZL78jL77nL82L81rL80L85L84L83L20 putc.o`D&NVBn n 0(|gp`$ n (fp` n (g2>/ n ?N\=@ n 1|Rn`v# n h  "n R n Rh0(|mD n (f6 n > n /( n ?N\=@ n "n !i RnJngHJno n 0(ng(Jnl n h` n hp` n Bh. H|`N^Nu_write___clean__cleanu_fputc~~fputc~ch ~iop ~_EnD__~n~didwritL2L1@L32L4pL5L6L72L10000L8*L9L10$ stat.o"`D~NVB/. /.BgBg/.NX??<?<N=@0.`N^Nu_callm1_len_stat~~stat~name~buffer ~_EnD__~nL1@ stb.o4`*NVH >.*n (nJGoSGfJL0N^Nu___stb~~__stb~n~n~f ~f ~t ~t~_EnD__L2 L5L4L3 L1 stderr.o`8NV-n`R nJf .>/.?<N\N^Nu_write_std_err~~std_er~s~_EnD__ ~pL4L3L2L14stime.o`&bNV n# >?<NT`N^Nu_M_callx_stime~~stime~top~_EnD__ L1" strcat.of`<NVH *n(n -M`RJf`JfB .`JL0N^Nu_strcat~~strcat~s1 ~s1~s2 ~s2 ~_EnD__~originaL4L3L2L7$L6"L5(L12strcmp.ob`HNVH *n(n `*HgHHA`JfB@`RR`JL0N^Nu_strcmp~~strcmp~s1 ~s1~s2 ~s2 ~_EnD__L4L68L2>strcpy.o(`2NVH *n(n -M`JfB .`JL0N^Nu_strcpy~~strcpy~s1 ~s1~s2 ~s2 ~_EnD__~originaL4L3L2L1(strlen.o`*~NV-n`R nJf .`N^Nu_strlen~~strlen~s~_EnD__ ~originaL4L3L2L1&strncat.o`RNVH *n(n -MJnf `(`RJf` SngJfB .`JL0N^Nu_strncat~~strnca~s1 ~s1~s2 ~s2 ~n~_EnD__~originaL2"L1HL5(L4&L3,L8:L70L6>strncmp.o`PNVH *n(n `2HgHHA`Jg SnfB@`RR`JL0N^Nu_strncmp~~strncm~s1 ~s1~s2 ~s2 ~n~_EnD__L4DL3L5,L1FL10000:L6@L2Fstrncpy.oF`:NVH *n(n -M` SngJfB .`JL0N^Nu_strncpy~~strncp~s1 ~s1~s2 ~s2 ~n~_EnD__~originaL4"L3L2&L10sync.o`,FNVBBBBgBgBg?<$?<N`N^Nu_callm1_sync~~sync~_EnD__L1(syslib.o `NVBBBBg?. ?.?<??/<NXN^NuNVBB/. BgBg?.?<? ??<NT`N^Nu_M_callx_len_utime~~utime~name~timp ~_EnD__L1F wait.o"`D~NVBBBBgBgBg?<BgN=@Jg n00.`N^Nu_callm1_M_wait~~wait~status~_EnD__ ~kL28L1@ write.o`2pNVBB/. Bg?.?.?<?<N`N^Nu_callm1_write~~write~fd~buffer ~nbytes~_EnD__L1.call.o<`@NV3 33# ##> ?.NT`N^NuNVH.N>33 #*| |n` nR0SGJ@f> ?.NT`JL N^NuNV3 .?.NT=@Jng 0.`*Jyl09D@3p` 09`N^NuNVH*nBG`RGJf0R@`JL N^Nu_errno_M_sendrec_callm1~~callm1~proc~syscall ~int1 ~int2~int3~ptr1~ptr2~ptr3~_EnD___callxL1H_callm3L~~callm3L~proc~syscall ~int1 ~name~_EnD__~k~rp _lenL3L6L5L4L2~~callx~proc~syscall ~_EnD__ ~kL8L7L9~~len~s ~s~_EnD__ ~kL13*L12(L11.L106               message.o^`_Mstbrksz.o@`_end_brksizestsndrec.o` b0<`0<`0<2/ oN@Nu_send_receive_sendrecSENDRECEIVEBOTHL0stsetjmp.o`(* o HBNu o0/fpL.Nu_setjmp_longjmpL1 Recompiling MINIX-ST using the Alcyon C compiler It is possible to recompile the MINIX-ST operating system, the library and the commands using the Alcyon 4.14 C com- piler, that is part of the Atari ST developers kit distri- buted by Atari Corp. We have used this method extensively during the initial stages of our porting activity. As soon as the native MINIX-ST C compiler became available we switched over to that compiler. This may cause a few prob- lems if you start using the Alcyon C compiler again, since no two compilers behave excatly the same. However, we have tried to use a subset of C common to both compilers. This document describes rather briefly how to use Alcyon C for cross compiling MINIX-ST. Step 1: Make 28.TOS Compiling MINIX programs with Alcyon C is similar to but slightly more complicated than compiling TOS programs with Alcyon C. Therefore, try to compile one of the TOS tools first, as described in the document SRC\README on the 08.TOS diskette. At least make the 28.TOS diskette as described in that document. Step 2: Extract the MINIX-ST sources As described in the MINIX-ST manual the MINIX-ST program sources are found on the 06.SRC1 and 07.SRC2 diskettes, but compressed and packed into archive files. Follow the instructions in the MINIX-ST manual section 4.1 to extract the source files. Step 3: Massage the MINIX-ST sources Unfortunately the source files have to be changed slightly to make them acceptable for the Alcyon C compiler. First, all slashes in pathnames used in #include statements of C sources should be replaced by backslashes. Second, the assembly sources should be massaged to make them acceptable for the ALCYON 4.14 assembler using the following steps: - remove all occurrences of '!#' at the beginning of lines - replace '\t= ' by '\tequ ' where '\t' denotes a TAB - 2 - - replace '.ascii' by '.dc.b' - replace '0x' by '$' - replace '!' by '*' - remove '.sect\t' - replace '.data1' by '.dc.b' - replace '.data2' by '.dc.w' - replace '.data4' by '.dc.l' - replace '.space' by '.ds.b' - replace '.define' by '.globl' - replace '.extern' by '.globl' - preprocess the result by /usr/lib/cpp -DATARI_ST -DALCYON -P - append 'end' Step 4: Copy to TOS floppy To transfer the MINIX-ST source files from MINIX diskettes to TOS diskettes use the MINIX-ST program "tos". Use a tree structure on the TOS diskettes similar to the tree structure on the MINIX diskettes. Step 5: Upload RAM disk Like we did for compiling TOS tools we suggest to put the compiler tools on the RAM disk M:. The first passes of the compiler are needed in both cases. However, for linking we need different libraries and startup files. On 08.TOS in the subdirectory LIB you will find the required CRTSO.O, LIBC.A, ALCYON.A and END.O. You will also need RELMIX.PRG from 08.TOS. The easiest approach is to adapt the SRC\C2RAM.G script so that it loads all that is needed for compiling MINIX pro- grams. Step 6: Compile and link Make a GULAM script CC.G that reads: - 3 - m:\cp68 -DATARI_ST $1.c $1.i m:\c068 $1.i $1.1 $1.2 $1.3 rm $1.i m:\c168 $1.1 $1.2 $1.s rm $1.1 rm $1.2 m:\as68 -l -u -s m:\ $1.s rm $1.s so that you can compile a C source file MAIN.C by typing (do not type the ">>" prompt): >> cc main Make a GULAM script AS.G that reads: m:\as68 -l -u -s m:\ $1.s so that you can compile an assembly source file STMPX.S by typing >> as stmpx Make a GULAM script LD.G that reads: set owd $cwd cp $2.o m:\ cd m:\ link68 $2.68k = crtso.o,$2,libc.a,alcyon.a,end.o rm $2.o relmix $1 $2.68k $2 rm $2.68k mv $1.prg $owd cd $owd so that you can link an object file MEGARTC.O into a program MEGARTC by typing >> ld =4000 megartc To link operating system pieces, like the memory manager, make a GULAM script LDMM.G that reads: - 4 - set owd $cwd cp ld.inp *.o m:\ cd m:\ link68 '[s,com[ld.inp]]' relmix mm.68k mm.mix rm mm.68k mv mm.prg $owd cd $owd so that you can link the MM object files into MM by typing >> ldmm This need a file LD.INP that should read: mm.68k = head.o, main,forkexit,break,exec,signal,getset, alloc,utility,table,putc, libc.a,alcyon.a,end.o H|@6TT` <5j5h>SG`R 2HfJEgB,H|H,,H|H,H|HH|H`>H|H,,H|H,H|H,H|H&XX`.z`(BE`"N4`H |/rW hNHfJL8N^NuNVH*n (n&nz`0`` <5p5n>SG`R 2Hf>TJEg0HG0H@`0H@G0HT` <5t5r>SG`R 2Hf,XJEg* H H@ H@ H@`& H@ H@ H@ HX`.z`(BE`"N4`H |/rW hNHfJL8N^NuNVBW/.?<9?<>N-T>/.?<=N-\39N^NuNVBW?990.Hr /?<BN-P. /<?99?<?N-P|g.3/<2N>XN^NuNVBW?990.Hr /?<BN-P. /<?99?<@N-P|g.3/<3N>XN^NuNVHN$^BW/</-NX>/</-NX>/</-NX n2n B*n`&HHм4 @g H| `HRJf> /.NXJL N^NuNVH BWN"#5z#5~By5x./#a*n`N`RJgHHм4 @fJg2 "g 'fFH>/ RNX(@ f.3/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм4 @gJ5pg M2GBRGH`BWNBW/ RN2XJ@g.R/<3(aX`l>N ->f@>/ TN2X|f>B?<Nd\|f.R/<35a|X`$BW/ RN"X|g.R/<3DaVX`>?/ NXJf>*/ NXJg-|@.8?<NT>/ ?<N)*\<f.3S/ aX`^.H?/.aZ\.N*>RWN+Z(@./ N*X.a>/ ?<N)*\<f`.a`|g`JfBaSy5x.5~Nz|f.3m/<3^a*XB/95z?95xNV\>NTJL0N^NuNV|./N*X. /N*nX.3n/N*nX.?< NT>NTN^NuNVH*n y5~ X5~Ry5xJL N^NuNVH*n. (nGVfJL8N^NuNVHN#>|fp`>N$08*@9JnfU./-/.N*XJ@f U0`R`./2/.N*XJ@fU0`2>/.?N)*\J@g3#435b4p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVNl>NN^NuNVHBG`0м3r.NRG|mJLN^NuNVH*n0-|g*.N-g .N!dB@H+@+@Bm m>NJL N^NuNVH>.>N$*@ f3 435b4p`NBF0|f>?<>N,T<l|>N$>N$BJFf0``3435b4pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N#\\>Gg mp`J-gJg-g;| `;| `>0- D@H/?Nd\Bm +mB@JL N^NuNVHN#>|fp`>N$08*@9Jn fUJnfU./-/.N*XJ@fU;n 0``./2/.N*XJ@fU0`d>/.?N)*\J@g>N$B3435b4p`0U>B-H?Nd\BWB-H?Nd\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N$*@ f3 435b4p`$>?-/. ?<BN,P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y4Z*T`ZB@0-BA2-@F@J@g>N"B`:B@0-ne `*4Zf>a*@ f>N"B`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#4Z PJL0N^NuNVH >.|?GG0@>N"*@fB`* R*@(M9GB@0,F@9@.Pa 94ZJL0N^NuNVH *nQB@0-BA2-@F@J@g>N"p`(y4Zeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #4ZB@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#4ZB@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y5^(G5^.Nz|f3 435b4p`>Bg/ N\ JL0N^NuNVH>N$*@ fp`vJnfB@`j-g3 435b4p`L0|g>/. / N&P`0-g>/. / N%PP``>/. / N&`PJL N^NuNVH|BG` 4^f 4^0`RG|m3435b4pJLN^NuNVp2.`F@H4^B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@90.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 435b4B`0B@08*@9-f3 435b4B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N+=@B0.ѭJnf3435b4p`^=n`8Rn>?</<4b/-/ N+=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N+=@Jnf3435b4p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|(` n(g-|(D n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<N-X0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м9-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN,\JgB@`0<>`d>ON,JgB@`0<>`J.?<=N,T>o n1GBG`,.?<AN,T>``||b@0@4d PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y5^CCbNC NJg .NuNV n=h.0n/0n/N, P/?.?<?N,PN^NuNV n=h.0n/0n/N, P/?.?<@N,PN^Nu#5NA/95NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNV/. /.N, 95N^Nu C"/lD&/nm <"`\Df r`:pmn2pr`,tl 0BAHA`Ԃփd`efJojDDJojD#5&Nu////N-(P Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#5NN/95Nu#5NM/95Nu#5NA/95Nu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z0*02090@0G124LM124LM bAbort (null) kernelmm fs init menu seven file names expected. ----- ----- Operating system size %29D %5X Total size including menu is %D. can't open read error on file can't open %s text=%5D data=%5D bss=%5D tot=%5D hex=%4X more than 64k too big read error on file can't seek relocation info missing on file bad relocation in M4M4read error on file odd relo byte on file file header too short: M44444444bad header type. File: entry point not 0. File: MINIX is not multiple of CLICK_SIZE bytesM2M2M2M2M2M2M2M2M2kernel data space: no magic #mm data space: no magic #fs data space: no magic #M2M2Build: %s%s block read errorblock write error: unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   4R4R )*.))**.*.)!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6$ 8H . 4 F( 4 "2BF4 , ,  & "0   ".&&"   V " 4  2^ LR 4      , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* hlB "fNbd4*R"D>* dl `8 *P*O*m#B - ЭЭм@"ҍ¼.A// Bg?<JNA yB"h#BE?/ N"N"/0<NBNu o AdpNu#BBNuNV0/"/ NBBd0< A:F"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN8T-@JlB` .`N^NuNV.;N>?<LN8TN^NuNV n f > NX>?<N8TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//N8FP:|0|9o^E0//N8ZP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|;|JDf8<&n|`RJgSDl`"``H |:jr W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVBnBN# ng ng=|Jng(>/<;?<N\>?<LN8T` n 2n pH`l` n 2n pH`n3:`x3:#::#::`X3:`L3D@`@ n 2n pH>/<;NX`H |;rW hN0n R  @JfP`.; n 2.H/0NX#UXJUXg./NX./NXJg.N"`B@=@ n}o.;NJg.N"`B@=@./NX.N=@Jg.N"`B@=@Jg.N"`B@=@`v n 2.HJg n 2.H.N"`B@=@ nl.;N0.HP@=@=|A=|=|3:Sn n 2.H.N3D<3E`|-g`FSnflNL.BgNTBy:0.29:`=@>?.NT>?.?.NX=@>N Jy:f >N VJy:gNN~BW?<LN8TN^NuNVA-H n0 n1n0. |r `"n3@0.|r `"n3@ n0("n2)AT@3b0. |H =@09bn=@p29:`nS@29:`=@09D<29:`=@p29:`nS@29:`"n3@ n0(S@3 n1y: n1|-| .r "n#@ p29:`3A8-H` nBR мb.?<NT=|`.?.NTRn0.nm n33>Bg?<NVX>Bg?<NVX> 0.nR@W?.0.WRW?<NVX> 0. WSW?. RW?<NVXN^NuNVN=@./< ?.?.NP>/<<?.N\>/<<?.N\>N>NN^NuNV`x./ NX-n n $gR-n.N=@ Jg.N"`B@=@Jg.N"`B@=@.g>/<:?<N\>?.?. NX=@>/.?.N\.?.N|T>N n dfvN=@./< ?.?.NP>/<<?.N\>/<<?.N\>N>N>N V` n bg n cfJg.N"`B@=@Jg.N"`B@=@Jg.N"`B@H-@ .r -@./.0.@?0.W?.NP`xBW/.?<=N8\=@lN>/<<?<N\.N6>/.?<N\>/<<*?<N\`>?.N T`N^NuNVBnBn`Bn`0nB(Rn nm./<?. ?<?N8P=@o8Jnf N=@.0.29:`?0.WNTRn0.n0.ymnJng$> N.0n/?.?.NP ng.> ?<>N8TN^NuNV0.S@H yb=@0.S@H H@=@.?.NTBn`R0.H2.HЁЎ @=hJnf(N=@0.H2.HЁЎ @1nBn`.0.29:`?0.WNTBn`0.HЎ @Jhf0.HЎ @1n-n 0.HЎм-@=|` n"nR nJgR0.SnJ@f.0.29:`?0.WNT.?.NT`RRn n@mFRn0.ymRn nm. ?./<<,N\.?.?<NVX0.`N^NuNV=yRy0.29:`=@0.yذyD?.09֑W?<NVX0.`N^NuNV.?.NT=n `80.H=@0.HH@=@p2.`2n΁iRn0. n nn.?.NTN^NuNV nPR nPR nPR nH|=@R nH|=@R nH|=@R0.@2.AAn=@ .dfn@ .bfn` .cfn .-fn .ufn .gfn0.`N^NuNVBn`0n BRn n mBn`0nBRn nmBn n B-n`/./9UXNRX _ n  gn n  fRy: nJn./<=?<N\ .>/.?<N\>/<= ?<N\>:/<= NXN~>?<LN8TN^NuNV` n "nRR 0.SnJ@fN^NuNV.?<NT.=:NBn` 0n>/<=HNXRn nm.?<NT.=NNBn` 0n>/<=\NXRn n m.?<NT.=bNBn` 0n>/<=pNXRn n m.=vN=|`.?.NTBn`|0.Y@@nR@=@0.yEnf0.HЎ @Jhg0.HЎ @>?./<=xN\0.HЎ @>/9:NX0.HЎ @(H>0.HЎ @?(/<=N\0.HЎ @./9:NX0.HЎ @>/<=NX0.HЎ @0(||@fz.0.HЎ @?(NTBn`J0.HЎ @Jhg20.HЎ.0.HЎ @?(/<=N\Rn n@mRn n m~Rn nmT>?9SW/<=N\N^NuNV0.H=@0.HH@=@p2.`=@0n"<E0Hngp`B@=@?.0nE_0.`N^NuNVBW/.?<=N8\3B4JyB4lB` <B4`N^NuNVSyB6lF.B/<=NXR SnlN^NuNV n (:fz nJ(fn nH||3D> yD>oJy:f.>N.?N.U/<Bg?<?N8P.?;N`23:BW/.?<NJ@f>/. /<NP`.B-|U\`t n0(nf">/. /.NP nRh` nJhf0Jg" n0("n2)Ao-n`-n <԰bJfZ-|U\-|U\`& n0("n2)Ao-n <԰b. n?(N! T.?.NT nBh nBh n1n>/. /.NPN^NuNV>NB-|U\`v n0(nf$>/./. NP n1|` nJhf0Jg" n0("n2)Ao-n`-n <԰bJfZ-|U\-|U\`& n0("n2)Ao-n <԰b. n?(N! T n1| n1| n1n>/./. NPN^NuNV-|U\` n1| <԰bN^NuNV-|U\`2 nJhg. n?(N! T nBh <԰bN^NuNVJy:gVBW?90.Hr /?<BN8P. /<?9?<?N8P|g.?XN`0.@=@-n `=|0.H H@=@0.H =@BnJyD@g0.|=@>?.?.?.RW?9D>B/.?<N8=@JngSnfJng Rn`>?./<?tN"D\ . мb@N^NuNVJy:gTBW?90.r `??<BN8\. /<?9?<@N8P|g.?|N`0.@=@-n `=|0.H H@=@0.H =@BnJyD@g0.|=@>?.?.?.RW?9D>B/.?< N8=@JngSnfJng Rn`>?./<?N"D\ . мb@N^NuNV0.D@0@"<;<.?.?. /./<?N >?<LN8TN^NuNVH*nBGBF`RHHмAB @f +fR` -fRRF` H@| 0m 9oJFg0D@>0JL N^NuNVHN00BW/<:_N*X>/<:_N*X>/<:_N*X n2n B*n`&HHмAB @g H| `HRJf> /.N#XJL N^NuNVH BWN.#B #B$ByB.:Ua*n`N`RJgHHмAB @fJg2 "g 'fFH>/ RNX(@ f.?/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHмAB @gJ5pg M2GBRGH`BWN(BW/ RN+XJ@g.R/<?aX`l>N( ->f@>/ TN+X|f>B?<N+6\|f.R/<?a|X`$BW/ RN'X|g.R/<?aVX`>?/ NXJf>*/ NXJg-|.8?<NT>/ ?<N4\<f.@ / aX`^.H?/.aZ\.N6>RWN7,(@./ N6jX.a>/ ?<N4\<f`.a`|g`JfBaSyB.B$Nz|f.@'/<@a*XB/9B ?9BNV\>N(&JL0N^NuNV|./N6jX. /N6@X.@(/N6@X.?< NT>N(&N^NuNVH*n yB$ XB$RyBJL N^NuNVH*n. (nGVfJL8N^NuNVHN/>|fp`>N0R08*@JnfU.:_/.N6XJ@f U0`R`.:d/.N6XJ@fU0`2>/.?N4\J@g3#A>3BA@p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN(>>NN^NuNVHBG`0м@,.N(pRG|mJLN^NuNVH*n0-|g*.N)X-g .N-6B@H+@+@Bm m>N(JL N^NuNVH>.>N0*@ f3 A>3BA@p`NBF0|f>?<>N7T<l|>N0R>N0JFf0``3A>3BA@pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N/.\>Gg mp`J-gJg-g;| `;| `>0- D@H/?N+6\Bm +mB@JL N^NuNVHN/>|fp`>N0R08*@Jn fUJnfU.:_/.N6XJ@fU;n 0``.:d/.N6XJ@fU0`d>/.?N4\J@g>N03A>3BA@p`0U>B-H?N+6\BWB-H?N+6\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N0*@ f3 A>3BA@p`$>?-/. ?<BN7P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (yA*T`ZB@0-BA2-@F@J@g>N.B`:B@0-ne `*Af>a*@ f>N.B`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#A PJL0N^NuNVH >.|?GG0@>N.*@fB`* R*@(M9GB@0,F@9@.Pa 9AJL0N^NuNVH *nQB@0-BA2-@F@J@g>N.p`(yAeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #AB@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#AB@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*yB(GB.Nz|f3 A>3BA@p`>Bg/ N\ JL0N^NuNVH>N0*@ fp`vJnfB@`j-g3 A>3BA@p`L0|g>/. / N2P`0-g>/. / N1"P``>/. / N22PJL N^NuNVH|BG` Af A0`RG|m3A>3BA@pJLN^NuNVp2.`F@HAB@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@0.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 A>3BA@B`0B@08*@-f3 A>3BA@B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N7=@B0.ѭJnf3A>3BA@p`^=n`8Rn>?</<A/-/ N7=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N7=@Jnf3A>3BA@p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|4Z` n(g-|4 n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<N8X0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN7\JgB@`0<>`d>ON7JgB@`0<>`J.?<=N7T>o n1GBG`,.?<AN7T>``||b@0@A PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"yBCCbNC NJg .NuNV n=h.0n/0n/N7P/?.?<?N7PN^NuNV n=h.0n/0n/N7P/?.?<@N7PN^Nu#B(NA/9B(NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu////N8ZP Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#B,NN/9B,Nu#B,NM/9B,Nu#B,NA/9B,Nu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z;;;;A.S.Tanenbaum DLOdlo$$0===> >>%>1><>O>`>z>>>>>>>Abort (null)%6D%6ld%6o%06oUsage: mkfs [-L] special proto Bad switch %c, ignored. rBlock count too largeCan't open prototype file......Can't open file Directory-inode %d beyond direct blocks. Could not enter %s HaltFile has grown beyond single indirectFile system does not have enough inodesFile system not big enough for all the filesUnexpected end-of-file Error: Line %d being processed when error detected. Superblock: %06o Inode map: %06o Zone map: %06o Inode %2d: mode= uid=%2d gid=%2d size= zone[0]=%d Inode %2d: %s %d inodes used. %d zones used. %cno errorerror 1device not readyunknown commandCRC errorbad commandseek errorunknown media typesector not foundprinter out of paper (??)write faultread errorerror 12disk is read-onlymedia changeunknown unitbad sectorsinsert disk in driveBad drive specifier for specialInsert formatted, writable diskette and hit RETURN go Can't open special filemx_read: error reading filemx_readmx_write: error writing filemx_writeError: %s, sector: %d, code: %d, meaning: %s : unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   A A 565|55665Z!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6, B  0 8*   f  ,6 (  "$    .  T(4:" (h$& :($(( (L   $bP$V  F  &2,(& .D   (V0. (X02$  F,6*  F,66&\   , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl. `&@X*O*m#, - ЭЭм@"ҍ¼.A// Bg?<JNA y,"h#,E?/ NTN"/0<NBNu o AdpNu#,BNuNV0/"/ NB,d0< A'"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN&0T-@JlB` .`N^NuNV.(N>?<LN&0TN^NuNV n f > NX>?<N&0TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//N%P:|0|9o^E0//N%P.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|(|JDf8<&n|`RJgSDl`"``H |'r W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH? n # no@ n hH` n #SnX `|+g|-gܰ|=g` ng./<(?<fN \BW n /(?<=N&0\3l n ./<(?<fN \BW n /(?<`?9/<)?<fN PJg./<)1?<fN \Jyg.)L?<fN TN 0*9ڹ><`0Ho 0H` <.l0/?9?<?N&0P0Fg.)g?<fN T.l0/?9?<@N&0P0Fg.)r?<fN T0H>< JfdJg6>?9/9?<BN&0PJl.)~?<fN TBBn&9ֹB`=nN =@Jng ng ng ng, ng" ng>/<)?<fN \ ng*Jy,f.)?<wN T3,`T .U-@Jf.N 2`.`>N  n .>N (.UTfJfBWN 2` BWN >N JLN^NuNV-|-| -y-y-yB <".Ү-@.f .葮` <ѮJmJg./9N NX-@./<)NX .ЮЮ-@.f .ѮB./<)/NP./< ?9?<@N&0P| g.)?<fN TN^NuNVH.RN.Jf.R/<)?<fN \ nH` ,. `,,. ܇`",``|+g|-gְ|=g` `JLN^NuNV./<* NX> ?.?.?.?.?.?.?.?.?./. N.*N. H`:`J>?<LN&0TN4. H>/<*?<wN \`|agְ|fg|wg`N^NuNVJy(0fj#,L.,/< ?9?<?N&0P3(0Jy(0n.*,?<fN T9(1g.*7?<fN T.L/<*A/UN "PUy(0TL0.|`N^NuNV.Y/<*D/PNP.H>WN .H>WN .H>WN .H>WN N^NuNV ng y (2fL.L09(2/?9?<@N&0P0y(2g.*G?<fN TBy(2 ng0.2y(2LRy(2N^NuNVH*n (n&nz`N0`2`B <ll>SG`R 2HfJEg,H|GH|@`H|G,H|@6TT` <ll>SG`R 2HfJEgB,H|H,,H|H,H|HH|H`>H|H,,H|H,H|H,H|H&XX`.z`(BE`"N4`H |(4rW hNHfJL8N^NuNVH*n (n&nz`0`` <ll>SG`R 2Hf>TJEg0HG0H@`0H@G0HT` <ll>SG`R 2Hf,XJEg* H H@ H@ H@`& H@ H@ H@ HX`.z`(BE`"N4`H |(drW hNHfJL8N^NuNVH*nBBF`RHHм+ @f +fR` -fRRF`/< /N%HP.H|Hހ 0m 9oJFg D. JL N^NuNVHNBW/<'NBX>/<'NBX>/<'NBX n2n B*n`&HHм+ @g H| `HRJf> /.NXJL N^NuNVH BWN#l#lByl.'a*n`N`RJgHHм+ @fJg2 "g 'fFH>/ RNX(@ f.*T/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм+ @gJ5pg M2GBRGH`BWNBW/ RNZXJ@g.R/<*faX`l>N ->f@>/ TNZX|f>B?<N\|f.R/<*sa|X`$BW/ RNJX|g.R/<*aVX`>?/ NXJf>*/ NXJg-|.8?<NT>/ ?<N"R\<f.*/ aX`^.H?/.aZ\.N#>RWN$(@./ N#X.a>/ ?<N"R\<f`.a`|g`JfBaSyl.lNz|f.*/<*a*XB/9l?9lNV\>N|JL0N^NuNV|./N#X. /N#X.*/N#X.?< NT>N|N^NuNVH*n yl XlRylJL N^NuNVH*n. (nGVfJL8N^NuNVHN >|fp`>N08*@JnfU.'/.N$XJ@f U0`R`.'/.N$XJ@fU0`2>/.?N"R\J@g3#+3,+p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN>NN^NuNVHBG`0м*.NRG|mJLN^NuNVH*n0-|g*.N-g .NB@H+@+@Bm m>NJL N^NuNVH>.>N*@ f3 +3,+p`NBF0|f>?<>N%8T<l|>N>NjJFf0``3+3,+pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N\>Gg mp`J-gJg-g;| `;| `>0- D@H/?N\Bm +mB@JL N^NuNVHN >|fp`>N08*@Jn fUJnfU.'/.N$XJ@fU;n 0``.'/.N$XJ@fU0`d>/.?N"R\J@g>Nj3+3,+p`0U>B-H?N\BWB-H?N\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N*@ f3 +3,+p`$>?-/. ?<BN%8P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y+*T`ZB@0-BA2-@F@J@g>NB`:B@0-ne `*+f>a*@ f>NB`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#+ PJL0N^NuNVH >.|?GG0@>N*@fB`* R*@(M9GB@0,F@9@.Pa 9+JL0N^NuNVH *nQB@0-BA2-@F@J@g>Np`(y+eeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #+B@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#+B@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y,(G,.Nz|f3 +3,+p`>Bg/ N\ JL0N^NuNVH>N*@ fp`vJnfB@`j-g3 +3,+p`L0|g>/. / N P`0-g>/. / NxP``>/. / NPJL N^NuNVH|BG` +f +0`RG|m3+3,+pJLN^NuNVp2.`F@H+B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@0.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 +3,+B`0B@08*@-f3 +3,+B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N$=@B0.ѭJnf3+3,+p`^=n`8Rn>?</<+/-/ N$=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N$=@Jnf3+3,+p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|!` n(g-|!l n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<N& X0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN%8\JgB@`0<>`d>ON%8JgB@`0<>`J.?<=N%8T>o n1GBG`,.?<AN%8T>``||b@0@+ PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y,CCbNC NJg .NuNV n=h.0n/0n/N%HP/?.?<?N%8PN^NuNV n=h.0n/0n/N%HP/?.?<@N%8PN^Nu#lNA/9lNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu////N%P Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#lNN/9lNu#lNM/9lNu#lNA/9lNu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z124LM B H \bh124LMAbort (null)Usage: %s [+-= amount] infile outfileCouldn't open %s for inputCouldn't open %s for outputread errorM24444442bad magic %04x, must be %04xentry point (%X) must be 0no relocation info presentread errorwrite errorseek errorbad relocation word %04xword relocation ignored%D bytes assigned to stack+malloc area M44444444write errorbad chmem amount %s%s: Illegal error type: '%c'read errorodd errorM2M4write error: unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   ++ # #V""#*#V#V"!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6&2          $      H   $F6   \4  (        0^ LR @,@   , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl  `.05*O*m#$^ - ЭЭм@"ҍ¼.A// Bg?<JNA y$^"h#$bE?/ N BN"/0<NBNu o AdpNu#$bBNuNV0/"/ NB$bd0< A "NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HNT-@JlB` .`N^NuNV.!N>?<LNTN^NuNV n f > NX>?<NTN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|!%|JDf8<&n|`RJgSDl`"``H | r W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH?`t n h(H`@Ry$z`PRy$|`F n ./<!,NX>?<LNT`|Dg|Og|dg|og`SnX no n h -gv ng.!;N>?<LNT n .N36~Jy6~l( n ./<!dNX>?<LNT n #Z n . N&BW/9Z?<JGl&.Z/<!NX>?<LNTBFB:< 0El :JEg>/<$~NPXJ@g*>6~WA/<!NX>?<LNT.$~0/??<@NP0Eg&.Z/<!NX>?<LNTRF0H؀`R>//<!NPBW?<LNTJLN^NuNVH n (:gp` nJ(gp` nH>|am|zn| |Al|Zop`T|A|oJy$|fp`8.!N.U/<Bg?<?NP."N0`JLN^NuNVHBGJy$zg>. | BF`:> ??. ?<?96~B/.?<NJ@fB@`RF|mp`JLN^NuNVH*nBBF`RHHм# @f +fR` -fRRF`/< /N6P.H|Hހ 0m 9oJFg D. JL N^NuNVHNtBW/< N0X>/< N0X>/< N0X n2n B*n`&HHм# @g H| `HRJf> /.N XJL N^NuNVH BWN#$j#$nBy$h. a*n`N`RJgHHм# @fJg2 "g 'fFH>/ RNX(@ f."/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм# @gJ5pg M2GBRGH`BWN BW/ RNHXJ@g.R/<",aX`l>N ->f@>/ TNHX|f>B?<Nz\|f.R/<"9a|X`$BW/ RN8X|g.R/<"HaVX`>?/ NXJf>*/ NXJg-|=(.8?<NT>/ ?<N@\<f."W/ aX`^.H?/.aZ\.N>RWNp(@./ NX.a>/ ?<N@\<f`.a`|g`JfBaSy$h.$nNz|f."q/<"ba*XB/9$j?9$hNV\>NjJL0N^NuNV|./NX. /NX."r/NX.?< NT>NjN^NuNVH*n y$n X$nRy$hJL N^NuNVH*n. (nGVfJL8N^NuNVHN>|fp`>N08*@6JnfU. /.NXJ@f U0`R`. /.NXJ@fU0`2>/.?N@\J@g3##3$f#p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN>NN^NuNVHBG`0м"v.NRG|mJLN^NuNVH*n0-|g*.N-g .NzB@H+@+@Bm m>N JL N^NuNVH>.>N*@ f3 #3$f#p`NBF0|f>?<>N&T<l|>N>NXJFf0``3#3$f#pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?Nr\>Gg mp`J-gJg-g;| `;| `>0- D@H/?Nz\Bm +mB@JL N^NuNVHN>|fp`>N08*@6Jn fUJnfU. /.NXJ@fU;n 0``. /.NXJ@fU0`d>/.?N@\J@g>NX3#3$f#p`0U>B-H?Nz\BWB-H?Nz\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N*@ f3 #3$f#p`$>?-/. ?<BN&P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y#^*T`ZB@0-BA2-@F@J@g>NB`:B@0-ne `*#^f>a*@ f>NB`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@##^ PJL0N^NuNVH >.|?GG0@>N*@fB`* R*@(M9GB@0,F@9@.Pa 9#^JL0N^NuNVH *nQB@0-BA2-@F@J@g>Np`(y#^eeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b ##^B@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(##^B@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y$b(G$b.Nz|f3 #3$f#p`>Bg/ N\ JL0N^NuNVH>N*@ fp`vJnfB@`j-g3 #3$f#p`L0|g>/. / NP`0-g>/. / NfP``>/. / NvPJL N^NuNVH|BG` #bf #b0`RG|m3#3$f#pJLN^NuNVp2.`F@H#bB@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@60.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 #3$f#B`0B@08*@6-f3 #3$f#B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N=@B0.ѭJnf3#3$f#p`^=n`8Rn>?</<#f/-/ N=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N=@Jnf3#3$f#p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|` n(g-|Z n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<NX0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м6-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN&\JgB@`0<>`d>ON&JgB@`0<>`J.?<=N&T>o n1GBG`,.?<AN&T>``||b@0@#h PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y$bCCbNC NJg .NuNV n=h.0n/0n/N6P/?.?<?N&PN^NuNV n=h.0n/0n/N6P/?.?<@N&PN^Nu#$rNA/9$rNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu////NP Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#$vNN/9$vNu#$vNM/9$vNu#$vNA/9$vNu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::ZAbort (null)bad option %s usage: rflop [-d][-o] drive file length bad drive specification %s cannot create %s read error on drive %c write error on file %s Copied %ld bytes from %d tracks Insert (write-protected) diskette and hit RETURN go : unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   #V#V DDD!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6 R *  *J,@   , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl@ . 1.. 1BUILD C 1BC2RAM G 6CC G 7FAKEUNIXC 6lFIXKEYS C ;FS @GETSTRUCC H,LDPRG G JMINIX LMINIX C :  MKFS C T  {OUT68K H X*OUTMIX H [-PUTSTRUCC ]/README a1RELMIX C c69RFLOP C f<fRUNPRG G h?WFLOP C j@ KEYTBL C MKEYTBL PRJP>INIX PRGX#INIX O UILD PRGjaa7UILD O FQ6XXXXA u^6XXXXB 26XXXXC 6XXXXD /* This program takes the previously compiled and linked pieces of the * operating system, and puts them together to build a boot diskette. * The files are read and put on the boot diskette in this order: * * bootblok: the diskette boot program * kernel: the operating system kernel * mm: the memory manager * fs: the file system * init: the system initializer * menu: the selection menu * * The bootblok file goes in sector 0 of the boot diskette. The operating system * begins directly after it. The kernel, mm, fs, init, and menu are each * padded out to a multiple of CLICK_SIZE bytes, and then concatenated into a * single file beginning 512 bytes into the file. The first byte of sector 1 * contains executable code for the kernel. There is no header present. * * After the boot image has been built, build goes back and makes several * patches to the image file or diskette: * * 1. The last 4 words of the boot block are set as follows: * Word at 504: Number of sectors to load * Word at 506: start of data of menu in clicks * Word at 508: 0 * Word at 510: start of text of menu in clicks * * 2. Build writes a table into the first 8 words of the kernel's * data space. It has 4 entries, the text and data size in clicks for each * program. The kernel needs this information to run mm, fs, and * init. * * 3. The origin and size of the init program are patched into bytes 4-9 * of the file system data space. The file system needs this * information, and expects to find it here. * * Build is called by: * * build bootblok kernel mm fs init menu image * * to get the resulting image onto the file "image". */ #include "outmix.h" #ifdef TOS #include "fakeunix.c" #else long lseek(); #endif #define PROGRAMS 5 /* kernel + mm + fs + init + menu = 5 */ #define PROG_ORG 0 /* where does kernel begin in abs mem */ #define SECTOR_SIZE 512 /* size of buf */ #define READ_UNIT 512 /* how big a chunk to read in */ #define KERNEL_D_MAGIC 0x526F /* identifies kernel data space */ #define FS_D_MAGIC 0xDADA /* identifies fs data space */ #define CLICK_SIZE 256 #define CLICK_SHIFT 8 #define KERN 0 #define MM 1 #define FS 2 #define INIT 3 #define FSCK 4 int image; /* file descriptor used for output file */ int cur_sector; /* which 512-byte sector to be written next */ int buf_bytes; /* # bytes in buf at present */ char buf[SECTOR_SIZE]; /* buffer for output file */ char zero[SECTOR_SIZE]; /* zeros, for writing bss segment */ long cum_size; /* Size of kernel+mm+fs+init */ long all_size; /* Size of all 5 programs */ struct sizes { long text_size; /* size in bytes */ long data_size; /* size in bytes */ long bss_size; /* size in bytes */ short secs; /* #sectors written */ short nulls; /* #sectors not written */ } sizes[PROGRAMS]; char *name[] = {"\nkernel", "mm ", "fs ", "init ", "menu "}; main(argc, argv) int argc; char *argv[]; { /* Copy the boot block and the 5 programs to the output. */ int i; if (argc != PROGRAMS+3) pexit("seven file names expected. ", ""); create_image(argv[7]); /* create the output file */ /* Go get the boot block and copy it to the output file or diskette. */ copy1(argv[1]); /* Copy the 5 programs to the output file or diskette. */ for (i = 0; i < PROGRAMS; i++) copy2(i, argv[i+2]); flush(); printf(" ----- -----\n"); #ifdef PCIX printf("Operating system size %29ld %5lx\n", cum_size, cum_size); printf("\nTotal size including menu is %ld.\n", all_size); #else printf("Operating system size %29D %5X\n", cum_size, cum_size); printf("\nTotal size including menu is %D.\n", all_size); #endif /* Make the three patches to the output file or diskette. */ patch1(all_size); patch2(); patch3(); exit(0); } copy1(file_name) char *file_name; { /* Copy the specified file to the output. The file has no header. All the * bytes are copied, until end-of-file is hit. */ int fd, bytes_read; char inbuf[READ_UNIT]; if ( (fd = open(file_name, 0)) < 0) pexit("can't open ",file_name); do { bytes_read = read(fd, inbuf, READ_UNIT); if (bytes_read < 0) pexit("read error on file ", file_name); if (bytes_read > 0) wr_out(inbuf, bytes_read); } while (bytes_read > 0); flush(); close(fd); } copy2(num, file_name) int num; /* which program is this (0 - 4) */ char *file_name; /* file to open */ { /* Open and read a file, copying it to output. First read the header, * to get the text, data, and bss sizes. * Read in all of text and initialized data. Perform relocation. * Write the text, data, and bss to output. The sum of these three pieces * must be padded upwards to a multiple of CLICK_SIZE, if need be. The individual * pieces need not be multiples of CLICK_SIZE bytes. */ int fd, count, rest, filler; unsigned length, n1; long reloffset, reloshift, tot_bytes; char *buf1, buf2[1024]; register char *p1, *p2; register c, n2; struct exec exec; long b4; extern char *malloc(); if ( (fd = open(file_name, 0)) < 0) pexit("can't open ", file_name); /* Read the header to see how big the segments are. */ read_header(fd, &exec, file_name); reloshift = cum_size; reloffset = SZ_HEAD + exec.a_tsize + exec.a_dsize + exec.a_ssize; /* Pad the total size to a CLICK_SIZE-byte multiple, if needed. */ tot_bytes = exec.a_tsize + exec.a_dsize + exec.a_bsize; rest = (int)(tot_bytes % CLICK_SIZE); filler = (rest > 0 ? CLICK_SIZE - rest : 0); exec.a_bsize += filler; tot_bytes += filler; if (num < FSCK) cum_size += tot_bytes; all_size += tot_bytes; /* Record the size information in the table. */ sizes[num].text_size = exec.a_tsize; sizes[num].data_size = exec.a_dsize; sizes[num].bss_size = exec.a_bsize; sizes[num].secs = cur_sector; /* Print a message giving the program name and size, except for menu. */ if (num < FSCK) { printf("%s text=%5D data=%5D bss=%5D tot=%5D hex=%4X\n", name[num], exec.a_tsize, exec.a_dsize, exec.a_bsize, tot_bytes, tot_bytes); } /* Read in relocation info from the exec file and relocate. * Relocation info is in GEMDOS format. Only longs can be relocated. * * The GEMDOS format starts with a long L: the offset to the * beginning of text for the first long to be relocated. * If L==0 then no relocations have to be made. * * The long is followed by zero or more bytes. Each byte B is * processed separately, in one of the following ways: * * B==0: * end of relocation * B==1: * no relocation, but add 254 to the current offset * B==0bWWWWWWW0: * B is added to the current offset and the long addressed * is relocated. Note that 00000010 means 1 word distance. * B==0bXXXXXXX1: * illegal */ /* Allocate memory and read in the text+data and relocation */ length = exec.a_tsize + exec.a_dsize; if (length != exec.a_tsize + exec.a_dsize) pexit("more than 64k ", file_name); buf1 = malloc(length); if (buf1 == 0) pexit("too big ", file_name); p1 = buf1; n1 = length; while (n1 != 0) { count = (n1 < 16*1024 ? n1 : 16*1024); if (read(fd, p1, count) != count) pexit("read error on file ", file_name); n1 -= count; p1 += count; } if (lseek(fd, reloffset, 0) < 0) pexit("can't seek ", file_name); p1 = buf1; p2 = buf2; n2 = read(fd, p2, (int)sizeof(buf2)); if (n2 < (int)sizeof(long)) pexit("relocation info missing on file ", file_name); if (*((long *)p2) != 0) { p1 += *((long *)p2); n2 -= (int)sizeof(long); p2 += (int)sizeof(long); for (;;) { /* once per relocation */ if (p1 < buf1 || p1 >= &buf1[length]) pexit("bad relocation in ", file_name); getstruc((char *)&b4, "M4", p1); /* printf("%X L: %X -> %X\n", p1-buf1, b4, b4+reloshift); */ b4 += reloshift; putstruc((char *)&b4, "M4", p1); for (;;) { /* once per byte */ if (--n2 < 0) { p2 = buf2; n2 = read(fd, p2, (int)sizeof(buf2)); if (--n2 < 0) pexit("read error on file ", file_name); } c = *p2++ & 0xFF; if (c != 1) break; p1 += 254; } if (c == 0) break; if (c & 1) pexit("odd relo byte on file ", file_name); p1 += c; } } length = exec.a_tsize + exec.a_dsize; p1 = buf1; while (length != 0) { count = (length < READ_UNIT ? length : READ_UNIT); wr_out(p1, count); length -= count; p1 += count; } /* Write the bss to output. */ n1 = n2 = 0; while (exec.a_bsize != 0) { count = (exec.a_bsize < SECTOR_SIZE ? exec.a_bsize : SECTOR_SIZE); if (count > SECTOR_SIZE - buf_bytes) count = SECTOR_SIZE - buf_bytes; if (count != SECTOR_SIZE) wr_out(zero, count); else if (n1 == 0) n1 = cur_sector; else n2++; exec.a_bsize -= count; } if (n1) { sizes[num].nulls = n2 + 1; sizes[num].secs = n1 - sizes[num].secs; } else { sizes[num].nulls = 0; sizes[num].secs = cur_sector - sizes[num].secs; } free(buf1); close(fd); } read_header(fd, exec, file_name) int fd; struct exec *exec; char *file_name; { char hbuf[SZ_HEAD]; /* Read header */ if (read(fd, hbuf, SZ_HEAD) != SZ_HEAD) pexit("file header too short: ", file_name); /* fix byte order and alignment */ getstruc((char *)exec, SF_HEAD, hbuf); if (exec->a_magic != A_MAGICD) pexit("bad header type. File: ", file_name); if (exec->a_entry != 0) pexit("entry point not 0. File: ", file_name); } wr_out(buffer, bytes) char buffer[READ_UNIT]; int bytes; { /* Write some bytes to the output file. This procedure must avoid writes * that are not entire 512-byte blocks, because when this program runs on * MS-DOS, the only way it can write the raw diskette is by using the system * calls for raw block I/O. */ int room, count, count1; register char *p, *q; /* Copy the data to the output buffer. */ room = SECTOR_SIZE - buf_bytes; count = (bytes <= room ? bytes : room); count1 = count; p = &buf[buf_bytes]; q = buffer; while (count--) *p++ = *q++; /* See if the buffer is full. */ buf_bytes += count1; if (buf_bytes == SECTOR_SIZE) { /* Write the whole block to the disk. */ write_block(cur_sector, buf); clear_buf(); } /* Is there any more data to copy. */ if (count1 == bytes) return; bytes -= count1; buf_bytes = bytes; p = buf; while (bytes--) *p++ = *q++; } flush() { if (buf_bytes == 0) return; write_block(cur_sector, buf); clear_buf(); } clear_buf() { register char *p; for (p = buf; p < &buf[SECTOR_SIZE]; p++) *p = 0; buf_bytes = 0; cur_sector++; } patch1(all_size) long all_size; { /* Put the ip and cs values for menu in the last two words of the boot blk. * Put in bootblok-offset 504 the number of sectors to load. #ifdef ATARI_ST * Put in bootblok-offset 502 a checksum to make it acceptable for TOS #endif */ long menu_org; unsigned short cs, sectrs, ip = 0; char cbuf[SECTOR_SIZE]; if (cum_size % CLICK_SIZE != 0) pexit("MINIX is not multiple of CLICK_SIZE bytes", ""); menu_org = PROG_ORG + cum_size; /* where does menu begin */ cs = menu_org >> CLICK_SHIFT; /* calc nr of sectors to load (starting at 0) */ sectrs = (unsigned) ((all_size + 511L) / 512L); read_block(0, cbuf); /* read in boot block */ putstruc((char *)§rs, "M2", &cbuf[SECTOR_SIZE-8]); putstruc((char *)&cs, "M2", &cbuf[SECTOR_SIZE-6]); putstruc((char *)&ip, "M2", &cbuf[SECTOR_SIZE-4]); putstruc((char *)&cs, "M2", &cbuf[SECTOR_SIZE-2]); #ifdef ATARI_ST { short sum, i; register short *p; for (i = 0; i < PROGRAMS; i++) { putstruc((char *)&sizes[i].secs, "M2", &cbuf[SECTOR_SIZE-32+i*4]); putstruc((char *)&sizes[i].nulls, "M2", &cbuf[SECTOR_SIZE-30+i*4]); } cbuf[SECTOR_SIZE-12] = cbuf[SECTOR_SIZE-11] = '\0'; sum = 0; for (p = (short *)cbuf; p < (short *)&cbuf[SECTOR_SIZE]; p++) { getstruc((char *)&i, "M2", (char *)p); sum += i; } getstruc((char *)&i, "M2", &cbuf[SECTOR_SIZE-10]); i -= sum; i += 0x1234; putstruc((char *)&i, "M2", &cbuf[SECTOR_SIZE-10]); } #endif write_block(0, cbuf); } patch2() { /* This program now has information about the sizes of the kernel, mm, fs, and * init. This information is patched into the kernel as follows. The first 8 * words of the kernel data space are reserved for a table filled in by build. * The first 2 words are for kernel, then 2 words for mm, then 2 for fs, and * finally 2 for init. The first word of each set is the text size in clicks; * the second is the data+bss size in clicks. * The text size is 0, i.e., the whole thing is data. */ int i, text_clicks, data_clicks; long data_offset; /* See if the magic number is where it should be in the kernel. */ data_offset = 512L + (long)sizes[KERN].text_size; /* start of kernel data */ i = get_word(data_offset); if (i != KERNEL_D_MAGIC) pexit("kernel data space: no magic #",""); for (i = 0; i < PROGRAMS - 1; i++) { text_clicks = 0; data_clicks = ( sizes[i].text_size + sizes[i].data_size + sizes[i].bss_size ) >> CLICK_SHIFT; put_word(data_offset + 4*i + 0L, text_clicks); put_word(data_offset + 4*i + 2L, data_clicks); } } patch3() { /* Write the origin and text and data sizes of the init program in FS's data * space. The file system expects to find these 3 words there. */ int mag, w0, w1, w2; long init_text_size, init_data_size, init_org, fs_org, fbase, mm_data; init_org = PROG_ORG; init_org += sizes[KERN].text_size+sizes[KERN].data_size+sizes[KERN].bss_size; mm_data = init_org - PROG_ORG +512L; /* offset of mm in file */ mm_data += (long) sizes[MM].text_size; mm_data -= SECTOR_SIZE * sizes[KERN].nulls; init_org += sizes[MM].text_size + sizes[MM].data_size + sizes[MM].bss_size; fs_org = init_org - PROG_ORG + 512L; /* offset of fs-text into file */ fs_org += (long) sizes[FS].text_size; fs_org -= SECTOR_SIZE * (sizes[KERN].nulls + sizes[MM].nulls); init_org += sizes[FS].text_size + sizes[FS].data_size + sizes[FS].bss_size; init_text_size = sizes[INIT].text_size; init_data_size = sizes[INIT].data_size + sizes[INIT].bss_size; init_org = init_org >> CLICK_SHIFT; /* convert to clicks */ init_data_size += init_text_size; init_text_size = 0; init_text_size = init_text_size >> CLICK_SHIFT; init_data_size = init_data_size >> CLICK_SHIFT; w0 = init_org; w1 = init_text_size; w2 = init_data_size; /* Check for appropriate magic numbers. */ fbase = fs_org; mag = get_word(mm_data); if (mag != FS_D_MAGIC) pexit("mm data space: no magic #",""); mag = get_word(fbase); if (mag != FS_D_MAGIC) pexit("fs data space: no magic #",""); put_word(fbase+4L, w0); put_word(fbase+6L, w1); put_word(fbase+8L ,w2); } int get_word(offset) long offset; { /* Fetch one byte from the output file. */ char buff[SECTOR_SIZE]; short b2; read_block( (int)(offset/SECTOR_SIZE), buff); getstruc((char *)&b2, "M2", &buff[offset % SECTOR_SIZE]); return(b2 & 0xFFFF); } put_word(offset, byte_value) long offset; int byte_value; { /* Write one byte into the output file. This is not very efficient, but * since it is only called to write a few words it is just simpler. */ char buff[SECTOR_SIZE]; short b2; b2 = byte_value; read_block( (int)(offset/SECTOR_SIZE), buff); putstruc((char *)&b2, "M2", &buff[offset % SECTOR_SIZE]); write_block( (int)(offset/foreach i { cp68.prg c068.prg c168.prg as68.prg as68init as68symb.dat } if '!' -e m:\$i cp a:\$i m:\ endif endfor foreach i { link68.prg gemstart.o gemlib libf osbind.o relmod.prg } if '!' -e m:\$i cp a:\$i m:\ endif endfor m:\cp68 -DTOS -DATARI_ST $1.c $1.i m:\c068 $1.i $1.1 $1.2 $1.3 rm $1.i m:\c168 $1.1 $1.2 $1.s rm $1.1 rm $1.2 m:\as68 -l -u -s m:\ $1.s rm $1.s SECTOR_SIZE), buff); } pexit(s1, s2) char *s1, *s2; { printf("Build: %s%s\n", s1, s2); exit(1); } #include "getstruc.c" #include "putstruc.c" create_image(f) char *f; { /* Create the output file. */ image = creat(f, 0666); close(image); image = open(f, 2); } read_block(blk, buff) int blk; char buff[SECTOR_SIZE]; { lseek(image, (long)SECTOR_SIZE * (long) blk, 0); if (read(image, buff, SECTOR_SIZE) != SECTOR_SIZE) pexit("block read error", ""); } write_block(blk, buff) int blk; char buff[SECTOR_SIZE]; { lseek(image, (long)SECTOR_SIZE * (long) blk, 0); if (write(image, buff, SECTOR_SIZE) != SECTOR_SIZE) pexit("block write error", ""); }  { _doprnt(f, &a, _outc); } /*--------------------------------------------------------------------*/ #define NO_FLOAT /* @(#)doprnt.c 1.1 */ /* * C version of doprnt.s for ACK * three compile time options: * STACKUP fetch arguments using *p-- instead of *p++ * NO_LONGD %d and %ld/%D are equal *#ifdef __GNUC__ #include #include #else extern long gemdos(); #define creat(a,b) (int)gemdos(0x3c,a,0) #define open(a,b) (int)gemdos(0x3d,a,b) #define close(a) (int)gemdos(0x3e,a) #define read(a,b,c) (int)gemdos(0x3f,a,(long)((unsigned)c),b) #define write(a,b,c) (int)gemdos(0x40,a,(long)((unsigned)c),b) #define lseek(a,b,c) gemdos(0x42,b,a,c) #define free(a) (int)gemdos(0x49,a) #define exit(a) gemdos(0x4c,a) #define malloc myalloc char *myalloc(siz) unsigned siz; { long n; n = gemdos(0x48,(long)siz); if (n < 0) return((char *)0); return((char *)n); } abort() { printf("Abort\n"); exit(-1); } _outc(c) { if (c == '\n') _outc('\r'); gemdos(0x02,c); } printf(f, a) char *f; { _doprnt(f, &a, _outc); } /*--------------------------------------------------------------------*/ #define NO_FLOAT /* @(#)doprnt.c 1.1 */ /* * C version of doprnt.s for ACK * three compile time options: * STACKUP fetch arguments using *p-- instead of *p++ * NO_LONGD %d and %ld/%D are equal * NO_FLOAT abort on %e, %f and %g */ static char * itoa(p, num, radix) register char *p; register unsigned num; register radix; { register i; register char *q; q = p + 32; do { i = (int)(num % radix); #ifdef TOS if (i < 0) i += radix; /* Bug in Alcyon 4.14 C */ #endif i += '0'; if (i > '9') i += 'A' - '0' - 10; *--q = i; } while (num = num / radix); i = (int)(p + 32 - q); do *p++ = *q++; while (--i); return(p); } #ifndef NO_LONGD static char * ltoa(p, num, radix) register char *p; register unsigned long num; register radix; { register i; register char *q; q = p + 32; do { i = (int)(num % radix); i += '0'; if (i > '9') i += 'A' - '0' - 10; *--q = i; } while (num = num / radix); i = (int)(p + 32 - q); do *p++ = *q++; while (--i); return(p); } #endif #ifndef NO_FLOAT extern char *_ecvt(); extern char *_fcvt(); extern char *_gcvt(); #endif #ifdef STACKUP #define GETARG(typ) *((typ *)args)-- #else #define GETARG(typ) *((typ *)args)++ #endif STACKUP _doprnt(fmt, args, outc) register char *fmt; register int *args; int (*outc)(); { char buf[128]; register char *p; register char *s; register c; register i; register short width; register short ndigit; register ndfnd; register ljust; register zfill; #ifndef NO_LONGD register lflag; register long l; #endif for (;;) { p = buf; s = buf; while ((c = *fmt++) && c != '%') (*outc)(c); if (c == 0) return; ljust = 0; if (*fmt == '-') { fmt++; ljust++; } zfill = ' '; if (*fmt == '0') { fmt++; zfill = '0'; } for (width = 0;;) { c = *fmt++; if (c >= '0' && c <= '9') c -= '0'; else if (c == '*') c = GETARG(int); else break; width *= 10; width += c; } ndfnd = 0; ndigit = 0; if (c == '.') { for (;;) { c = *fmt++; if (c >= '0' && c <= '9') c -= '0'; else if (c == '*') c = GETARG(int); else break; ndigit *= 10; ndigit += c; ndfnd++; } } #ifndef NO_LONGD lflag = 0; #endif if (c == 'l' || c == 'L') { #ifndef NO_LONGD lflag++; #endif if (*fmt) c = *fmt++; } switch (c) { case 'X': #ifndef NO_LONGD lflag++; #endif case 'x': c = 16; goto oxu; case 'U': #ifndef NO_LONGD lflag++; #endif case 'u': c = 10; goto oxu; case 'O': #ifndef NO_LONGD lflag++; #endif case 'o': c = 8; oxu: #ifndef NO_LONGD if (lflag) { p = ltoa(p, GETARG(long), c); break; } #endif p = itoa(p, GETARG(int), c); break; case 'D': #ifndef NO_LONGD lflag++; #endif case 'd': #ifndef NO_LONGD if (lflag) { if ((l = GETARG(long)) < 0) { *p++ = '-'; l = -l; } p = ltoa(p, l, 10); break; } #endif if ((i = GETARG(int)) < 0) { *p++ = '-'; i = -i; } p = itoa(p, i, 10); break; #ifdef NO_FLOAT case 'e': case 'f': case 'g': zfill = ' '; *p++ = '?'; break; #else case 'e': if (ndfnd == 0) ndigit = 6; ndigit++; p = _ecvt(p, GETARG(double), ndigit); break; case 'f': if (ndfnd == 0) ndigit = 6; p = _fcvt(p, GETARG(double), ndigit); break; case 'g': if (ndfnd == 0) ndigit = 6; p = _gcvt(p, GETARG(double), ndigit); break; #endif case 'c': zfill = ' '; if (c = GETARG(int)) *p++ = c; break; case 's': zfill = ' '; if ((s = GETARG(char *)) == 0) s = "(null)"; if (ndigit == 0) ndigit = 32767; for (p = s; *p && --ndigit >= 0; p++) ; break; default: *p++ = c; break; } i = (int)(p - s); if ((width -= i) < 0) width = 0; if (ljust == 0) width = -width; if (width < 0) { if (*s=='-' && zfill=='0') { (*outc)(*s++); i--; } do (*outc)(zfill); while (++width != 0); } while (--i>=0)#include "fakeunix.c" char buf[512*2]; int doublesided; int override; int drive; extern long xbios(); main(argc, argv) char **argv; { register fd, i; register char **tostbl3; long mixtbl3[3]; long conf; char c; while (argc > 1 && argv[1][0] == '-') { switch (argv[1][1]) { case 'd': case 'D': doublesided++; break; case 'o': case 'O': override++; break; default: printf("bad option %s\n", argv[1]); exit(1); } argc--; argv++; } if (argc != 2) { printf("usage: fixkeys [-d][-o] drive\n"); exit(1); } drive = special(argv[1]); if (drive < 0) { printf("bad drive specification %s\n", argv[1]); exit(1); } /* * fetch pointer to table of 3 pointers to TOS tables */ tostbl3 = (char **)xbios(16, -1L, -1L, -1L); /* * fetch from MINIX vector 23 the address of the 'conf' table */ get(&conf, (long)(23 * 4), sizeof(conf)); /* * fetch entries 1, 2 and 3 of the conf table */ get(mixtbl3, conf + 4, sizeof(mixtbl3)); /* * sanity */ for (i = 0; i < 3; i++) { if (tostbl3[i][1] != 033) { printf("bad TOS table[%d]\n", i); exit(1); } get(&c, mixtbl3[i] + 1, sizeof(c)); if (c != 033) { printf("bad MINIX table[%d]\n", i); exit(1); } } /* * copy each of the three tables into MINIX */ for (i = 0; i < 3; i++) put(tostbl3[i], mixtbl3[i], 128); printf("Done\n"); exit(0); } get(ptr, off, len) char *ptr; long off; int len; { register sec; if (len > 512) { printf("Eh?"); exit(1); } off += 512; /* compensate for MINIX bootblock */ sec = (int) (off / 512); if (flopr(buf, sec) != 512) { printf("read error on drive %c\n", 'A' + drive); exit(1); } if (flopr(buf+512, sec+1) != 512) { printf("read error on drive %c\n", 'A' + drive); exit(1); } bcopy(buf + (int)(off % 512), ptr, len); } put(ptr, off, len) char *ptr; long off; int len; { char c; register sec; get(&c, off, 1); bcopy(ptr, buf + (int)(off % 512), len); off += 512; /* compensate for MINIX bootblock */ sec = (int) (off / 512); if (flopw(buf, sec) != 512) { printf("write error on drive %c\n", 'A' + drive); exit(1); } if (flopw(buf+512, sec+1) != 512) { printf("write error on drive %c\n", 'A' + drive); exit(1); } } special(string) char *string; { register drive; char cr[1]; if (string[1] != ':') return(-1); if (string[2] != 0) return(-1); drive = string[0]; if (drive >= 'a' && drive <= 'z') drive -= 'a' - 'A'; if (drive < 'A' && drive > 'Z') return(-1); drive -= 'A'; if (drive > 1 && !override) /* safety precaution */ return(-1); printf("Insert write-enabled copy of MINIX BOOT diskette and hit RETURN "); read(0, cr, 1); printf("\ngo\n"); return(drive); } flopr(buf, sec) char *buf; { register side, track, sector, err; sector = sec % 9; track = sec / 9; side = 0; if (doublesided) { side = track & 1; track >>= 1; } for (err = 0; err < 5; err++) if ((int)xbios(8, buf, 0L, drive, sector+1, track, side, 1) == 0) return(512); return(-1); } flopw(buf, sec) char *buf; { register side, track, sector, err; sector = sec % 9; track = sec / 9; side = 0; if (doublesided) { side = track & 1; track >>= 1; } for (err = 0; err < 5; err++) if ((int)xbios(9, buf, 0L, drive, sector+1, track, side, 1) == 0) return(512); return(-1); } bcopy(s, d, n) register char *s; register char *d; register n; { while (--n >= 0) *d++ = *s++; } . A.. ACONST H B SUPER H DLTYPE H F/* Tables sizes */ #define NR_ZONE_NUMS 9 /* # zone numbers in an inode */ #define NR_BUFS 20 /* # blocks in the buffer cache */ #define NR_BUF_HASH 32 /* size of buf hash table; MUST BE POWER OF 2*/ #define NR_FDS 20 /* max file descriptors per process */ #define NR_FILPS 64 /* # slots in filp table */ #define I_MAP_SLOTS 4 /* max # of blocks in the inode bit map */ #define ZMAP_SLOTS 6 /* max # of blocks in the zone bit map */ #define NR_INODES 32 /* # slots in "in core" inode table */ #define NR_SUPERS 5 /* # slots in super block table */ #define NAME_SIZE 14 /* # bytes in a directory component */ #ifdef i8088 #define FS_STACK_BYTES 512 /* size of file system stack */ #endif #ifdef ATARI_ST #define FS_STACK_BYTES 2048 /* size of file system stack */ #endif /* Miscellaneous constants */ #define SUPER_MAGIC 0x137F /* magic number contained in super-block */ #define SU_UID (uid) 0 /* super_user's uid */ #define SYS_UID (uid) 0 /* uid for processes MM and INIT */ #define SYS_GID (gid) 0 /* gid for processes MM and INIT */ #define NORMAL 0 /* forces get_block to do disk read */ #define NO_READ 1 /* prevents get_block from doing disk read */ #define XPIPE 0 /* used in fp_task when suspended on pipe */ #define NO_BIT (bit_nr) 0 /* returned by alloc_bit() to signal failure */ #define DUP_MASK 0100 /* mask to distinguish dup2 from dup */ #define LOOK_UP 0 /* tells search_dir to lookup string */ #define ENTER 1 /* tells search_dir to make dir entry */ #define DELETE 2 /* tells search_dir to delete entry */ #define CLEAN 0 /* disk and memory copies identical */ #define DIRTY 1 /* disk and memory copies differ */ #define BOOT_BLOCK (block_nr) 0 /* block number of boot block */ #define SUPER_BLOCK (block_nr)1 /* block number of super block */ #define ROOT_INODE (inode_nr) 1 /* inode number for root directory */ /* Derived sizes */ #define ZONE_NUM_SIZE sizeof(zone_nr) /* # bytes in zone nr*/ #define NR_DZONE_NUM (NR_ZONE_NUMS-2) /* # zones in inode */ #define DIR_ENTRY_SIZE sizeof(dir_struct) /* # bytes/dir entry */ #define INODES_PER_BLOCK (BLOCK_SIZE/INODE_SIZE) /* # inodes/disk blk */ #define INODE_SIZE (sizeof (d_inode)) /* bytes in disk inode*/ #define NR_DIR_ENTRIES (BLOCK_SIZE/DIR_ENTRY_SIZE) /* # dir entries/blk*/ #define NR_INDIRECTS (BLOCK_SIZE/ZONE_NUM_SIZE) /* # zones/indir blk */ #define INTS_PER_BLOCK (BLOCK_SIZE/sizeof(int)) /* # integers/blk */ #define SUPER_SIZE sizeof(struct super_block) /* super_block size */ #define PIPE_SIZE (NR_DZONE_NUM*BLOCK_SIZE) /* pipe size in bytes*/ #define MAX_ZONES (NR_DZONE_NUM+NR_INDIRECTS+(long)NR_INDIRECTS*NR_INDIRECTS) /* max # of zones in a file */ #define printf printk /* Super block table. The root file system and every mounted file system * has an entry here. The entry holds information about the sizes of the bit * maps and inodes. The s_ninodes field gives the number of inodes available * for files and directories, including the root directory. Inode 0 is * on the disk, but not used. Thus s_ninodes = 4 means that 5 bits will be * used in the bit map, bit 0, which is always 1 and not used, and bits 1-4 * for files and directories. The disk layout is: * * Item # blocks * boot block 1 * super block 1 * inode map s_imap_blocks * zone map s_zmap_blocks * inodes (s_ninodes + 1 + INODES_PER_BLOCK - 1)/INODES_PER_BLOCK * unused whatever is needed to fill out the current zone * data zones (s_nzones - s_firstdatazone) << s_log_zone_size * * A super_block slot is free if s_dev == NO_DEV. */ EXTERN struct super_block { inode_nr s_ninodes; /* # usable inodes on the minor device */ zone_nr s_nzones; /* total device size, including bit maps etc */ unshort s_imap_blocks; /* # of blocks used by inode bit map */ unshort s_zmap_blocks; /* # of blocks used by zone bit map */ zone_nr s_firstdatazone; /* number of first data zone */ short int s_log_zone_size; /* log2 of blocks/zone */ file_pos s_max_size; /* maximum file size on this device */ short s_magic; /* magic number to recognize super-blocks */ /* The following items are only used when the super_block is in memory. */ struct buf *s_imap[I_MAP_SLOTS]; /* pointers to the in-core inode bit map */ struct buf *s_zmap[ZMAP_SLOTS]; /* pointers to the in-core zone bit map */ dev_nr s_dev; /* whose super block is this? */ struct inode *s_isup; /* inode for root dir of mounted file sys */ struct inode *s_imount; /* inode mounted on */ real_time s_time; /* time of last update */ char s_rd_only; /* set to 1 iff file sys mounted read only */ char s_dirt; /* CLEAN or DIRTY */ } super_block[NR_SUPERS]; #define NIL_SUPER (struct super_block *) 0 /* Type definitions local to the File System. */ typedef struct { /* directory entry */ inode_nr d_inum; /* inode number */ char d_name[NAME_SIZE]; /* character string */ } dir_struct; /* Declaration of the disk inode used in rw_inode(). */ typedef struct { /* disk inode. Memory inode is in "inotab.h" */ mask_bits i_mode; /* file type, protection, etc. */ uid i_uid; /* user id of the file's owner */ file_pos i_size; /* current file size in bytes */ real_time i_modtime; /* when was file data last changed */ gid i_gid; /* group number */ links i_nlinks; /* how many links to this file */ zone_nr i_zone[NR_ZONE_NUMS]; /* block nums for direct, ind, and dbl ind */ } d_inode; getstruc(ap, s, b) char *ap; /* structure pointer */ register char *s; /* structure format */ register char *b; /* sequence of bytes */ { register int i; register long l; register char *p = ap; register int lsb = 1; static struct { char a21; short a22; } a2; static struct { char a41; long a44; } a4; while (i = *s++) { switch (i) { case '1': *p++ = *b++; break; case '2': i = (int) ((char *)&a2.a22 - (char *)&a2) - 1; while ((int)(p - ap) & i) p++; if (lsb) { i = (b[1] & 0xFF); i <<= 8; i |= (b[0] & 0xFF); } else { i = (b[0] & 0xFF); i <<= 8; i |= (b[1] & 0xFF); } *((short *)p) = i; p += sizeof(short); b += 2; break; case '4': i = (int) ((char *)&a4.a44 - (char *)&a4) - 1; while ((int)(p - ap) & i) p++; if (lsb) { l = (b[3] & 0xFF); l <<= 8; l |= (b[2] & 0xFF); l <<= 8; l |= (b[1] & 0xFF); l <<= 8; l |= (b[0] & 0xFF); } else { l = (b[0] & 0xFF); l <<= 8; l |= (b[1] & 0xFF); l <<= 8; l |= (b[2] & 0xFF); l <<= 8; l |= (b[3] & 0xFF); } *((long *)p) = l; p += sizeof(long); b += 4; break; case 'L': lsb = 1; break; case 'M': lsb = 0; break; default: abort(); } } } set owd $cwd cp $1.o m:\ cd m:\ link68 $1.68k = gemstart,$1,gemlib,libf,osbind rm $1.o relmod $1 rm $1.68k mv $1.prg $owd cd $owd . L.. LCONST H NTYPE H P#/* Copyright (C) 1987 by Prentice-Hall, Inc. Permission is hereby granted to * private individuals and educational institutions to modify and * redistribute the binary and source programs of this system to other * private individuals and educational institutions for educational and * research purposes. For corporate or commercial use, permission from * Prentice-Hall is required. In general, such permission will be granted, * subject to a few conditions. */ #define EXTERN extern /* used in *.h files */ #define PRIVATE static /* PRIVATE x limits the scope of x */ #define PUBLIC /* PUBLIC is the opposite of PRIVATE */ #define FORWARD /* some compilers require this to be 'static' */ #define TRUE 1 /* used for turning integers into Booleans */ #define FALSE 0 /* used for turning integers into Booleans */ #define HZ 60 /* clock freq (software settable on IBM-PC) */ #define BLOCK_SIZE 1024 /* # bytes in a disk block */ #define SUPER_USER (uid) 0 /* uid of superuser */ #define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */ #define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */ #define NR_TASKS 8 /* number of tasks in the transfer vector */ #define NR_PROCS 16 /* number of slots in proc table */ #define NR_SEGS 3 /* # segments per process */ #define T 0 /* proc[i].mem_map[T] is for text */ #define D 1 /* proc[i].mem_map[D] is for data */ #define S 2 /* proc[i].mem_map[S] is for stack */ #define MAX_P_LONG 2147483647 /* maximum positive long, i.e. 2**31 - 1 */ /* Memory is allocated in clicks. */ #ifdef i8088 #define CLICK_SIZE 0020 /* unit in which memory is allocated */ #define CLICK_SHIFT 4 /* log2 of CLICK_SIZE */ #endif #ifdef ATARI_ST #define CLICK_SIZE 256 /* unit in which memory is allocated */ #define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */ #endif /* Process numbers of some important processes */ #define MM_PROC_NR 0 /* process number of memory manager */ #define FS_PROC_NR 1 /* process number of file system */ #define INIT_PROC_NR 2 /* init -- the process that goes multiuser */ #define LOW_USER 2 /* first user not part of operating system */ /* Miscellaneous */ #define BYTE 0377 /* mask for 8 bits */ #define TO_USER 0 /* flag telling to copy from fs to user */ #define FROM_USER 1 /* flag telling to copy from user to fs */ #define READING 0 /* copy data to user */ #define WRITING 1 /* copy data from user */ #ifndef ATARI_ST #define ABS -999 /* this process means absolute memory */ #endif #define WORD_SIZE 2 /* number of bytes per word */ #define NIL_PTR (char *) 0 /* generally useful expression */ #define NO_NUM 0x8000 /* used as numerical argument to panic() */ #define MAX_PATH 128 /* max length of path names */ #define SIG_PUSH_BYTES 8 /* how many bytes pushed by signal */ #define MAX_ISTACK_BYTES 1024 /* maximum initial stack size for EXEC */ /* Device numbers of root (RAM) and boot (fd0) devices. */ #define ROOT_DEV (dev_nr) 256 /* major-minor device number of root dev */ #define BOOT_DEV (dev_nr) 512 /* major-minor device number of boot diskette */ /* Flag bits for i_mode in the inode. */ #define I_TYPE 0170000 /* this field gives inode type */ #define I_REGULAR 0100000 /* regular file, not dir or special */ #define I_BLOCK_SPECIAL 0060000 /* block special file */ #define I_DIRECTORY 0040000 /* file is a directory */ #define I_CHAR_SPECIAL 0020000 /* character special file */ #define I_SET_UID_BIT 0004000 /* set effective uid on exec */ #define I_SET_GID_BIT 0002000 /* set effective gid on exec */ #define ALL_MODES 0006777 /* all bits for user, group and others */ #define RWX_MODES 0000777 /* mode bits for RWX only */ #define R_BIT 0000004 /* Rwx protection bit */ #define W_BIT 0000002 /* rWx protection bit */ #define X_BIT 0000001 /* rwX protection bit */ #define I_NOT_ALLOC 0000000 /* this inode is free */ /* Macros */ #define MAX(a,b) (a > b ? a : b) #define MIN(a,b) (a < b ? a : b) /* Type definitions */ typedef unsigned short unshort; /* must be 16-bit unsigned */ typedef unshort block_nr; /* block number */ #define NO_BLOCK (block_nr) 0 /* indicates the absence of a block number */ #define MAX_BLOCK_NR (block_nr) 0177777 typedef unshort inode_nr; /* inode number */ #define NO_ENTRY (inode_nr) 0 /* indicates the absence of a dir entry */ #define MAX_INODE_NR (inode_nr) 0177777 typedef unshort zone_nr; /* zone number */ #define NO_ZONE (zone_nr) 0 /* indicates the absence of a zone number */ #define HIGHEST_ZONE (zone_nr) 0177777 typedef unshort bit_nr; /* if inode_nr & zone_nr both unshort, then also unshort, else long */ typedef long zone_type; /* zone size */ typedef unshort mask_bits; /* mode bits */ typedef unshort dev_nr; /* major | minor device number */ #define NO_DEV (dev_nr) ~0 /* indicates absence of a device number */ typedef char links; /* number of links to an inode */ #define MAX_LINKS 0177 typedef long real_time; /* real time in seconds since Jan 1, 1970 */ typedef long file_pos; /* position in, or length of, a file */ #define MAX_FILE_POS 017777777777L typedef short int uid; /* user id */ typedef char gid; /* group id */ #ifdef i8088 typedef unsigned vir_bytes; /* virtual addresses and lengths in bytes */ #endif #ifdef ATARI_ST typedef long vir_bytes; /* virtual addresses and lengths in bytes */ #endif typedef unsigned vir_clicks; /* virtual addresses and lengths in clicks */ typedef long phys_bytes; /* physical addresses and lengths in bytes */ typedef unsigned phys_clicks; /* physical addresses and lengths in clicks */ typedef int signed_clicks; /* same length as phys_clicks, but signed */ /* Types relating to messages. */ #define M1 1 #define M3 3 #define M4 4 #define M3_STRING 14 typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1; typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2; typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3; typedef struct {long m4l1, m4l2, m4l3, m4l4;} mess_4; typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;} mess_5; typedef struct {int m6i1, m6i2, m6i3; long m6l1; int (*m6f1)();} mess_6; typedef struct { int m_source; /* who sent the message */ int m_type; /* what kind of message is it */ union { mess_1 m_m1; mess_2 m_m2; mess_3 m_m3; mess_4 m_m4; mess_5 m_m5; mess_6 m_m6; } m_u; } message; #define MESS_SIZE (sizeof(message)) #define NIL_MESS (message *) 0 /* The following defines provide names for useful members. */ #define m1_i1 m_u.m_m1.m1i1 #define m1_i2 m_u.m_m1.m1i2 #define m1_i3 m_u.m_m1.m1i3 #define m1_p1 m_u.m_m1.m1p1 #define m1_p2 m_u.m_m1.m1p2 #define m1_p3 m_u.m_m1.m1p3 #define m2_i1 m_u.m_m2.m2i1 #define m2_i2 m_u.m_m2.m2i2 #define m2_i3 m_u.m_m2.m2i3 #define m2_l1 m_u.m_m2.m2l1 #define m2_l2 m_u.m_m2.m2l2 #define m2_p1 m_u.m_m2.m2p1 #define m3_i1 m_u.m_m3.m3i1 #define m3_i2 m_u.m_m3.m3i2 #define m3_p1 m_u.m_m3.m3p1 #define m3_ca1 m_u.m_m3.m3ca1 #define m4_l1 m_u.m_m4.m4l1 #define m4_l2 m_u.m_m4.m4l2 #define m4_l3 m_u.m_m4.m4l3 #define m4_l4 m_u.m_m4.m4l4 #define m5_c1 m_u.m_m5.m5c1 #define m5_c2 m_u.m_m5.m5c2 #define m5_i1 m_u.m_m5.m5i1 #define m5_i2 m_u.m_m5.m5i2 #define m5_l1 m_u.m_m5.m5l1 #define m5_l2 m_u.m_m5.m5l2 #define m5_l3 m_u.m_m5.m5l3 #define m6_i1 m_u.m_m6.m6i1 #define m6_i2 m_u.m_m6.m6i2 #define m6_i3 m_u.m_m6.m6i3 #define m6_l1 m_u.m_m6.m6l1 #define m6_f1 m_u.m_m6.m6f1 struct mem_map { vir_clicks mem_vir; /* virtual address */ phys_clicks mem_phys; /* physical address */ vir_clicks mem_len; /* length */ }; struct copy_info { /* used by sys_copy(src, dst, bytes) */ int cp_src_proc; int cp_src_space; vir_bytes cp_src_vir; int cp_dst_proc; int cp_dst_space; vir_bytes cp_dst_vir; vir_bytes cp_bytes; }; (*outc)(*s++); while (width) { (*outc)(zfill); width--; } } } #endif /* __GNUC__ */  a floppy disk, * so that we read only blocks of 512 bytes. * The MINIX loadfile has a format similar to MINIX-PC. */ #include "fakeunix.c" long size; char *minix = "minix.img"; char blk0[512]; main(argc,argv) char **argv; { register fd; register long n; register i; register char *p; register char *bminix; unsigned short *wp; int kick(); int (*pc)(); if (argc > 1) minix = argv[1]; if ((fd = open(minix, 0)) < 0) fatal("cannot open %s", minix); if ((i = read(fd, blk0, sizeof(blk0))) != sizeof(blk0)) fatal("read block 0 failed (ask %d, ret %d)", sizeof(blk0), i); wp = (unsigned short *)&blk0[sizeof(blk0)]; if (wp[-2] != 0 || wp[-3] != wp[-1]) fatal("%s: wrong format", minix); size = wp[-4] * 512L; p = (char *)gemdos(0x48,size + 1000); /* Malloc with long size */ if ((long)p < 0) fatal("malloc failed\n"); bminix = p; n = gemdos(0x/* * Load and start MINIX on the Atari ST while running TOS. * The MINIX loadfile can be a GEMDOS file or a floppy disk, * so that we read only blocks of 512 bytes. * The MINIX loadfile has a format similar to MINIX-PC. */ #include "fakeunix.c" long size; char *minix = "minix.img"; char blk0[512]; main(argc,argv) char **argv; { register fd; register long n, j; register i; register char *p; register char *bminix; unsigned short *wp; int kick(); int (*pc)(); if (argc > 1) minix = argv[1]; if ((fd = open(minix, 0)) < 0) fatal("cannot open %s", minix); if ((i = read(fd, blk0, (int)sizeof(blk0))) != (int)sizeof(blk0)) fatal("read block 0 failed (ask %d, ret %d)", (int)sizeof(blk0), i); wp = (unsigned short *)&blk0[(int)sizeof(blk0)]; if (wp[-2] != 0 || wp[-3] != wp[-1]) fatal("%s: wrong format", minix); size = wp[-4] * 512L; size += 1000L; #ifdef __GNUC__ p = (char *)Malloc(size); /* Malloc with long size */ #else p = (char *)gemdos(0x48,size); /* Malloc with long size */ #endif if ((long)p <= 0) fatal("malloc failed\n"); bminix = p; for (i = 0; (j = wp[-16+2*i]) != 0; i++) { j *= 512L; #ifdef __GNUC__ n = Fread( fd, j, p); /* Fread with long size */ #else n = gemdos(0x3f, fd, j, p); /* Fread with long size */ #endif if (n != j) fatal("read failed (ask %ld, ret %ld)", j, n); p += j; j = wp[-15+2*i] * 512L; while (j--) *p++ = '\0'; } /* * copy kick() (and some more) at the end of minix * we have to avoid overwriting kick() */ memcopy(p, (char *)kick, 1000); #ifdef __GNUC__ Super(0L); /* Super */ #else gemdos(0x20,(char *)0); /* Super */ #endif spl7(); pc = (int (*)())p; (*pc)(bminix, p); } spl7() { int (*pc)(); static short code[] = { 0x007C, /* or.w #0x700,sr */ 0x0700, 0x4E75, /* rts */ }; pc = (int (*)())code; (*pc)(); } memcopy(s1, s2, n) register char *s1, *s2; register n; { while (--n >= 0) *s1++ = *s2++; } kick(bminix,/* mkfs - make the MINIX filesystem * Andy Tanenbaum & Paul Ogilvie, Jun 1986 * * This program was initially designed to build a filesystem * with blocksize = zonesize. During the course of action the * program is being converted to handle zone_size > blocksize * but this isn't complete yet. Where routines can handle the * situation this is mentioned in the comment. * * To compile this program for MS-DOS, say cc -DDOS mkfs.c diskio.asm * To compile this program for UNIX, say cc -DUNIX mkfs.c * To compile this program for MINIX, say cc mkfs.c * This program can also be compiled for Atari ST with -DTOS */ #include #include #include #undef EXTERN #define EXTERN /* get rid of EXTERN by making it null */ #include #include #ifdef TOS # include "fakeunix.c" # define FILE char # define NULL ((char *)0) # define Atoi(x) ((x) ? atoi(x) : 0) # define COMPILERFLAG #else # define Write2 write #undef major /* These defines are used as variables in the code */ #undef minor # define Atoi atoi #endif #ifdef DOS #include "\lib\c86\stdio.h" #define COMPILERFLAG #endif #ifndef TOS #ifndef DOS #ifndef UNIX #define UNIX #endif #endif #endif #ifdef UNIX #include #include #include #define COMPILERFLAG #endif #ifdef UNIX #undef printf /* printf is a macro for printk */ #endif #define INODE_MAP 2 #define ZONE_MAP 3 #define MAX_TOKENS 10 #define LINE_LEN 200 #define BIN 2 #define BINGRP 2 #define BIT_MAP_SHIFT 13 #define N_BLOCKS 32000 /* must be multiple of 8 */ #ifdef DOS # define BREAD 4 # define BWRITE 5 #else # define BREAD 0 # define BWRITE 1 #endif int next_zone, next_inode, zone_size, zone_shift=0, zoff, nrblocks,inode_offset, nrinodes, lct=1, disk, fd, print=0, file=0, override=0, simple=0; long current_time; char zero[BLOCK_SIZE], *lastp; char umap[(N_BLOCKS+8)/8]; /* bit map tells if block read yet */ FILE *proto; #ifdef TOS int doublesided; #else long lseek(); #endif char *size_fmt = "%6D"; char *ldfmt = "%6ld"; char *mode_fmt = "%6o"; char *ldmode = "%06o"; char gwarning[] = {65,46,83,46,84,97,110,101,110,98,97,117,109,10}; /* MS-DOS and PC-IX use %ld for longs, MINIX uses %D */ /*================================================================ * mkfs - make filesystem *===============================================================*/ main(argc, argv) int argc; char *argv[]; { int i, blocks, zones, inodes, mode, usrid, grpid, badusage = 0; char *token[MAX_TOKENS], buf[BLOCK_SIZE]; int testb[2]; FILE *fopen(); long time(), ls; #ifndef TOS struct stat statbuf; #endif /* process parameters and switches */ current_time = time(0L); if (argc != 3 && argc != 4) badusage = 1; #ifndef TOS if (stat(argv[argc - 1], &statbuf) == 0) { if ( (statbuf.st_mode&S_IFMT) != S_IFREG) badusage = 1; } #endif if (badusage) { Write2(2, "Usage: mkfs [-L] special proto\n", 31); exit(1); } while (--argc) { switch (argv[argc][0]) { case '-': while (*++argv[argc]) switch (*argv[argc]) { case 'L' : print=1; break; case 'l' : print=1; size_fmt = ldfmt; mode_fmt = ldmode; break; case 'o' : case 'O' : override=1; break; #ifdef TOS case 'd' : case 'D' : doublesided=1; break; #endif default : printf ("Bad switch %c, ignored.\n",*argv[argc]); } break; default : /* process proto & special */ proto = fopen(argv[argc], "r" ); if (proto != NULL) { /* Prototype file is readable. */ getline(buf, token); /* skip boot block info. */ /* Read the line with the block and inode counts. */ getline(buf, token); blocks = Atoi(token[0]); if (blocks > N_BLOCKS) pexit("Block count too large"); inodes = Atoi(token[1]); /* Process mode line for root directory. */ getline(buf, token); mode = mode_con(token[0]); usrid = Atoi(token[1]); grpid = Atoi(token[2]); } else { /* Maybe the prototype file is just a size. Check for that. */ blocks = Atoi(argv[argc]); if (blocks < 4) pexit("Can't open prototype file"); /* Ok, make simple file system of given size, using defaults. */ inodes = (blocks/3) + 8; /* default is 3 blocks/file */ mode = 040777; usrid = BIN; grpid = BINGRP; simple = 1; } /* open special */ argc--; special(argv[argc]); nrblocks = blocks; nrinodes = inodes; } /* end switch */ } /* end while */ #ifdef UNIX /* Try writing the last block of partition or diskette. */ ls = lseek(fd, ((long)blocks - 1L) * BLOCK_SIZE, 0); testb[0] = 0x3245; testb[1] = 0x11FF; if (write(fd, testb, BLOCK_SIZE) != BLOCK_SIZE) pexit("File system is too big for minor device"); lseek(fd, ((long)blocks - 1L) * BLOCK_SIZE, 0); testb[0] = 0; testb[1] = 0; i = read(fd, testb, BLOCK_SIZE); if (i != BLOCK_SIZE || testb[0] != 0x3245 || testb[1] != 0x11FF) pexit("File system is too big for minor device"); lseek(fd, 0L, 0); #endif /* make the file-system */ cache_init(); put_block (0, zero); /* Write a null boot block. */ zone_shift = 0; /* for future use */ zones = blocks >> zone_shift; super(zones, inodes); i = alloc_inode(mode, usrid, grpid); rootdir(i); if (simple == 0) eat_dir(i); if (print) print_fs(); flush(); exit (0); } /* end main */ /*================================================================ * super - construct a superblock *===============================================================*/ super(zones, inodes) int zones, inodes; { int i, inodeblks, initblks, initzones, nrzones; long zo; struct super_block *sup; char buf[BLOCK_SIZE], *cp; sup= (struct super_block *) buf; sup->s_ninodes = inodes; sup->s_nzones = zones; sup->s_imap_blocks = (inodes + (1<> BIT_MAP_SHIFT; sup->s_zmap_blocks = (zones + (1<> BIT_MAP_SHIFT; inode_offset = sup->s_imap_blocks + sup->s_zmap_blocks + 2; inodeblks = (inodes + INODES_PER_BLOCK - 1)/INODES_PER_BLOCK; initblks = inode_offset + inodeblks; initzones = (initblks + (1<> zone_shift; nrzones = nrblocks >> zone_shift; sup->s_firstdatazone = (initblks + (1<> zone_shift; zoff = sup->s_firstdatazone - 1; sup->s_log_zone_size = zone_shift; sup->s_magic = SUPER_MAGIC; /* identify super blocks */ zo = 7L + (long) NR_INDIRECTS + (long) NR_INDIRECTS * NR_INDIRECTS; sup->s_max_size = zo * BLOCK_SIZE; zone_size = 1 << zone_shift; /* nr of blocks per zone */ for (cp = buf + sizeof(*sup); cp < &buf[BLOCK_SIZE]; cp++) *cp=0; put_block (1,buf); /* Clear maps and inodes. */ for (i = 2; i < initblks; i++) put_block (i, zero); next_zone = sup->s_firstdatazone; next_inode = 1; insert_bit(ZONE_MAP, 0, 1); /* bit zero must always be allocated */ insert_bit(INODE_MAP, 0, 1); /* inode zero used by root-directory */ /* Mark all bits beyond the end of the legal inodes/zones as allocated. */ insert_bit(ZONE_MAP,nrzones-initzones+1, 8*BLOCK_SIZE-(nrzones-initzones+1)); insert_bit(INODE_MAP, inodes+1, 8*BLOCK_SIZE - inodes - 1); } /*================================================================ * rootdir - install the root directory *===============================================================*/ rootdir(inode) int inode; { int z; z = alloc_zone(); add_zone (inode, z, 32L, current_time); enter_dir(inode, ".", inode); enter_dir(inode, "..", inode); incr_link(inode); incr_link(inode); } /*================================================================ * eat_dir - recursively install directory *===============================================================*/ eat_dir(parent) int parent; /* parent's inode nr */ { /*Read prototype lines and set up directory. Recurse if need be. */ char *token[MAX_TOKENS], *p; char line[LINE_LEN]; int mode, n, usrid, grpid, z, majord, minord, f; long size; while (1) { getline(line, token); p = token[0]; if (*p == '$') return; p = token[1]; mode = mode_con(p); usrid = Atoi(token[2]); grpid = Atoi(token[3]); if (grpid & 0200) Write2(2, gwarning, 14); n = alloc_inode(mode, usrid, grpid); /* Enter name in directory and update directory's size. */ enter_dir(parent, token[0], n); incr_size(parent, 16L); /* Check to see if file is directory or special. */ incr_link(n); if (*p == 'd') { /* This is a directory. */ z = alloc_zone(); /* zone for new directory */ add_zone(n, z, 32L, current_time); enter_dir(n, ".", n); enter_dir(n, "..", parent); incr_link(parent); incr_link(n); eat_dir(n); } else if (*p == 'b' || *p == 'c') { /* Special file. */ majord = Atoi(token[4]); minord = Atoi(token[5]); size = Atoi(token[6]); size = BLOCK_SIZE * size; add_zone(n, (majord<<8)|minord, size, current_time); } else { /* Regular file. Go read it. */ if ((f=open(token[4],BREAD)) < 0) { Write2(2, "Can't open file ", 16); Write2(2, token[4], strlen(token[4]) ); Write2(2, "\n", 1); } else eat_file(n, f); } } } /*================================================================ * eat_file - copy file to MINIX *===============================================================*/ /* zonesize >= blocksize */ eat_file(inode, f) int inode, f; { int z, ct, i, j, k; char buf[BLOCK_SIZE]; extern long file_time(); do { for (i=0, j=0; i < zone_size; i++, j+=ct ) { for (k = 0; k < BLOCK_SIZE; k++) buf[k] = 0; if ((ct=read(f,buf, BLOCK_SIZE)) > 0) { if (i==0) z = alloc_zone(); put_block ( (z << zone_shift) + i, buf); } } if (ct) add_zone (inode, z, (long) j, file_time(f) ); } while (ct == BLOCK_SIZE); close(f); } /*================================================================ * directory & inode management assist group *===============================================================*/ enter_dir(parent, name, child) int parent, child; /* inode nums */ char *name; { /* enter child in parent directory */ /* works for dir > 1 block and zone > block */ int i, j, k, l, b, z, off; char *p1, *p2; struct { short inumb; char name[14]; } dir_entry[NR_DIR_ENTRIES]; d_inode ino[INODES_PER_BLOCK]; b = ((parent-1) / INODES_PER_BLOCK) + inode_offset; off = (parent-1) % INODES_PER_BLOCK ; get_block ( b, ino); for ( k=0; ki_size += bytes; p->i_modtime = cur_time; for (i=0; i < NR_DZONE_NUM; i++) if (p->i_zone[i] == 0) { p->i_zone[i] = z; put_block(b, inode); return; } put_block(b, inode); /* File has grown beyond a small file. */ if (p->i_zone[NR_DZONE_NUM] == 0) p->i_zone[NR_DZONE_NUM] = alloc_zone(); indir = p->i_zone[NR_DZONE_NUM]; put_block(b, inode); b = indir << zone_shift; get_block(b, blk); for (i = 0; i < NR_INDIRECTS; i++) if (blk[i] == 0) { blk[i] = (zone_nr) z; put_block(b, blk); return; } pexit("File has grown beyond single indirect"); } incr_link(n) int n; { /* increment the link count to inode n */ int b, off; d_inode inode[INODES_PER_BLOCK]; b = ((n-1)/INODES_PER_BLOCK) + inode_offset; off = (n-1) % INODES_PER_BLOCK; get_block(b, inode); inode[off].i_nlinks++; put_block(b, inode); } incr_size(n,count) int n; long count; { /* increment the file-size in inode n */ int b, off; d_inode inode[INODES_PER_BLOCK]; b = ((n-1)/INODES_PER_BLOCK) + inode_offset; off = (n-1) % INODES_PER_BLOCK; get_block(b, inode); inode[off].i_size += count; put_block(b, inode); } /*================================================================ * allocation assist group *===============================================================*/ int alloc_inode(mode, usrid, grpid) int mode, usrid, grpid; { int num, b, off; d_inode inode[INODES_PER_BLOCK]; num = next_inode++; if (num >= nrinodes) pexit("File system does not have enough inodes"); b = ((num-1) / INODES_PER_BLOCK) + inode_offset; off = (num-1) % INODES_PER_BLOCK; get_block(b, inode); inode[off].i_mode = mode; inode[off].i_uid = usrid; inode[off].i_gid = grpid; put_block(b, inode); /* Set the bit in the bit map. */ insert_bit(INODE_MAP, num, 1); return(num); } int alloc_zone() { /* allocate a new zone */ /* works for zone > block */ int b,z,i; z = next_zone++; b = z << zone_shift; if ( (b+zone_size) > nrblocks) pexit("File system not big enough for all the files"); for ( i=0; i < zone_size; i++) put_block ( b+i, zero ); /* give an empty zone */ insert_bit(ZONE_MAP, z - zoff, 1); return(z); } insert_bit(block, bit, count) int block, bit, count; { /* insert 'count' bits in the bitmap */ int w,s, i; int buf[BLOCK_SIZE/sizeof(int)]; get_block(block, buf); for (i = bit; i < bit + count; i++) { w = i / (8*sizeof(int)); s = i % (8*sizeof(int)); buf[w] |= (1 << s); } put_block(block, buf); } /*================================================================ * proto-file processing assist group *===============================================================*/ int mode_con(p) char *p; { /* convert string to mode */ int o1, o2, o3, mode; char c1, c2, c3; c1 = *p++; c2 = *p++; c3 = *p++; o1 = *p++ - '0'; o2 = *p++ - '0'; o3 = *p++ - '0'; mode = (o1 << 6) | (o2 << 3) | o3; if (c1 == 'd') mode += I_DIRECTORY; if (c1 == 'b') mode += I_BLOCK_SPECIAL; if (c1 == 'c') mode += I_CHAR_SPECIAL; if (c1 == '-') mode += I_REGULAR; if (c2 == 'u') mode += I_SET_UID_BIT; if (c3 == 'g') mode += I_SET_GID_BIT; return(mode); } getline(line, parse) char *parse[MAX_TOKENS]; char line[LINE_LEN]; { /* read a line and break it up in tokens */ int k; char c, *p; for (k = 0; k < MAX_TOKENS; k++) parse[k] = 0; for (k = 0; k < LINE_LEN; k++) line[k] = 0; k = 0; parse[0] = 0; p = line; while (1) { *p = fgetc(proto); if (*p == '\r') continue; if (*p == '\n') lct++; if (*p <= 0) pexit("Unexpected end-of-file\n"); if (*p == ' ' || *p == '\t') *p = 0; if (*p == '\n') {*p++ = 0; *p = '\n'; break;} p++; } p = line; lastp = line; while (1) { c = *p++; if (c == '\n') return; if (c == 0) continue; parse[k++] = p - 1; do { c = *p++; } while (c != 0 && c != '\n'); } } /*================================================================ * other stuff *===============================================================*/ long file_time(f) int f; { #ifdef UNIX struct stat statbuf; fstat(f, & statbuf); return (statbuf.st_mtime); #else /* fstat not supported by DOS */ return( 0L ); #endif } pexit(s) char *s; { char *s0; s0 = s; while (*s0 != 0) s0++; Write2 (2,"Error: ", 7); Write2 (2, s, (int)(s0-s) ); Write2(2, "\n", 1); printf("Line %d being processed when error detected.\n", lct); flush(); exit(2); } copy (from, to, count) char *from, *to; int count; { while (count--) *to++ = *from++; } print_fs() { int i, j, k; d_inode inode[INODES_PER_BLOCK]; int ibuf[INTS_PER_BLOCK], b; struct { short inum; char name[14]; } dir[NR_DIR_ENTRIES]; get_block(1, ibuf); printf("\nSuperblock: "); for (i= 0; i<8; i++) printf("%06o ",ibuf[i]); get_block(2, ibuf); printf("\nInode map: "); for (i = 0; i < 9; i++) printf("%06o ", ibuf[i]); get_block(3, ibuf); printf("\nZone map: "); for (i = 0; i < 9; i++) printf("%06o ", ibuf[i]); printf("\n"); for (b = 4; b < 8; b++) { get_block(b, inode); for (i = 0; i < INODES_PER_BLOCK; i++) { k = INODES_PER_BLOCK * (b - 4) + i + 1; if (k > nrinodes) break; if (inode[i].i_mode != 0) { printf("Inode %2d: mode=",k, inode[i].i_mode); printf(mode_fmt, inode[i].i_mode); printf(" uid=%2d gid=%2d size=", inode[i].i_uid, inode[i].i_gid); printf(size_fmt, inode[i].i_size); printf(" zone[0]=%d\n", inode[i].i_zone[0]); } if ( (inode[i].i_mode & I_TYPE) == I_DIRECTORY) { /* This is a directory */ get_block(inode[i].i_zone[0], dir); for (j = 0; j < NR_DIR_ENTRIES; j++) if (dir[j].inum) printf("\tInode %2d: %s\n",dir[j].inum,dir[j].name); } } } printf("%d inodes used. %d zones used.\n",next_inode-1, next_zone); } int read_and_set(n) int n; { /* The first time a block is read, it returns alls 0s, unless there has * been a write. This routine checks to see if a block has been accessed. */ int w, s, mask, r; w = n/8; s = n%8; mask = 1 << s; r = (umap[w] & mask ? 1 : 0); umap[w] |= mask; return(r); } /*================================================================ * get_block & put_block for ST-TOS *===============================================================*/ #ifdef TOS struct { int fd; int len; char *ptr; char buf[512]; } fbuf; FILE *fopen(name, mode) char *name; char *mode; { fbuf.fd = open(name, 0); if (fbuf.fd < 0) return(NULL); return((FILE *)&fbuf); } fgetc(f) FILE *f; { if (--fbuf.len < 0) { fbuf.len = read(fbuf.fd, fbuf.buf, sizeof(fbuf.buf)); if (fbuf.len <= 0) return(-1); fbuf.ptr = fbuf.buf; fbuf.len--; } return(*fbuf.ptr++ & 0xFF); } long time() { return(0L); } Write2(fd, s, n) char *s; { while (--n >= 0) printf("%c", *s++); } /* * These are the get_block and put_block routines * when compiling & running mkfs.c under ST-TOS. * * It requires the BIOS routine rwabs. Since this routine just does * as it is told (read & write the sector specified), * a local cache is used to minimize the i/o-overhead for * frequently used blocks. * * The global variable "file" determines whether the output * is to a disk-device or to a binary file. */ #define PH_SECTSIZE 512 /* size of a physical disk-sector */ char *derrtab[] = { "no error", "error 1", "device not ready", "unknown command", "CRC error", "bad command", "seek error", "unknown media type", "sector not found", "printer out of paper (??)", "write fault", "read error", "error 12", "disk is read-only", "media change", "unknown unit", "bad sectors", "insert disk in drive", }; #define CACHE_SIZE 20 /* 20 block-buffers */ struct cache { char blockbuf[BLOCK_SIZE]; int blocknum; int dirty; int usecnt; } cache[CACHE_SIZE]; special (string) char *string; { char cr[1]; if (string[1] == ':' && string[2]==0) { /* format: d: or d:fname */ disk = (string[0] & ~32) - 'A'; if (disk>1 && !override) /* safety precaution */ pexit ("Bad drive specifier for special"); printf("Insert formatted, writable diskette and hit RETURN "); read(0, cr, 1); printf("\ngo\n"); } else { file=1; if ((fd=creat(string,BWRITE)) < 0) pexit ("Can't open special file"); } } get_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* get a block to the user */ struct cache *bp,*fp; /* First access returns a zero block */ if (read_and_set(n) == 0) { copy(zero, buf, BLOCK_SIZE); return; } /* look for block in cache */ fp=0; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) { if (bp->blocknum==n) { copy (bp,buf,BLOCK_SIZE); bp->usecnt++; return; } /* remember clean block */ if (bp->dirty == 0) if (fp) {if (fp->usecnt > bp->usecnt) fp=bp;} else fp=bp; } /* block not in cache, get it */ if (!fp) { /* no clean buf, flush one */ for (bp=cache,fp=cache; bp<&cache[CACHE_SIZE]; bp++) if (fp->usecnt > bp->usecnt) fp=bp; mx_write (fp->blocknum, fp); } mx_read (n, fp); fp->dirty=0; fp->usecnt=0; fp->blocknum=n; copy (fp, buf, BLOCK_SIZE); } put_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* Accept block from user */ struct cache *fp, *bp; read_and_set(n); /* look for block in cache */ fp=0; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) { if (bp->blocknum==n) { copy (buf,bp,BLOCK_SIZE); bp->dirty=1; return; } /* remember clean block */ if (bp->dirty == 0) if (fp) {if (fp->usecnt > bp->usecnt) fp=bp;} else fp=bp; } /* block not in cache */ if (!fp) { /* no clean buf, flush one */ for (bp=cache,fp=cache; bp<&cache[CACHE_SIZE]; bp++) if (fp->usecnt > bp->usecnt) fp=bp; mx_write (fp->blocknum, fp); } fp->dirty=1; fp->usecnt=1; fp->blocknum=n; copy (buf,fp,BLOCK_SIZE); } cache_init() { struct cache *bp; for (bp=cache; bp < &cache[CACHE_SIZE]; bp++) bp->blocknum = -1; } flush () { /* flush all dirty blocks to disk */ struct cache *bp; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) if (bp->dirty) { mx_write (bp->blocknum, bp); bp->dirty=0; } } /*================================================================== * hard read & write etc. *=================================================================*/ #define MAX_RETRIES 5 mx_read (blocknr,buf) int blocknr; char buf[BLOCK_SIZE]; { /* read the requested MINIX-block in core */ char (*bp)[PH_SECTSIZE]; int side,track,sector,sectnum,retries,err; extern long xbios(); if (file) { lseek (fd, (long) blocknr * BLOCK_SIZE, 0); if (read (fd, buf, BLOCK_SIZE) != BLOCK_SIZE) pexit ("mx_read: error reading file"); } else { sectnum = blocknr * (BLOCK_SIZE / PH_SECTSIZE); for (bp=buf; bp<&buf[BLOCK_SIZE]; bp++) { retries = MAX_RETRIES; sector = sectnum % 9; track = sectnum / 9; side = 0; if (doublesided) { side = track & 1; track >>= 1; } do /* err = (int)bios(4, 2, bp, 1, sectnum, disk); */ err = (int)xbios(8, bp, 0L, disk, sector+1, track, side, 1); while (err && --retries); if (retries) { sectnum++; } else { dexit ("mx_read",sectnum,err); } } } } mx_write (blocknr,buf) int blocknr; char buf[BLOCK_SIZE]; { /* write the MINIX-block to disk */ char (*bp)[PH_SECTSIZE]; int side,track,sector,sectnum,retries,err; extern long xbios(); if (file) { lseek (fd, blocknr * BLOCK_SIZE, 0); if (write (fd, buf, BLOCK_SIZE) != BLOCK_SIZE) { pexit ("mx_write: error writing file"); } } else { sectnum = blocknr * (BLOCK_SIZE / PH_SECTSIZE); for (bp=buf; bp<&buf[BLOCK_SIZE]; bp++) { retries = MAX_RETRIES; sector = sectnum % 9; track = sectnum / 9; side = 0; if (doublesided) { side = track & 1; track >>= 1; } do { /* err = (int)bios(4, 3, bp, 1, sectnum, disk); */ err = (int)xbios(9, bp, 0L, disk, sector+1, track, side, 1); } while (err && --retries); if (retries) { sectnum++; } else { dexit ("mx_write",sectnum,err); } } } } dexit (s,sectnum,err) int sectnum, err; char *s; { printf ("Error: %s, sector: %d, code: %d, meaning: %s\n", s, sectnum, err, derrtab[-err] ); exit (2); } #endif /*================================================================ * get_block & put_block for MS-DOS *===============================================================*/ #ifdef DOS /* * These are the get_block and put_block routines * when compiling & running mkfs.c under MS-DOS. * * It requires the (asembler) routines absread & abswrite * from the file diskio.asm. Since these routines just do * as they are told (read & write the sector specified), * a local cache is used to minimize the i/o-overhead for * frequently used blocks. * * The global variable "file" determines whether the output * is to a disk-device or to a binary file. */ #define PH_SECTSIZE 512 /* size of a physical disk-sector */ char *derrtab[14] = { "no error", "disk is read-only", "unknown unit", "device not ready", "bad command", "data error", "internal error: bad request structure length", "seek error", "unknown media type", "sector not found", "printer out of paper (??)", "write fault", "read error", "general error" }; #define CACHE_SIZE 20 /* 20 block-buffers */ struct cache { char blockbuf[BLOCK_SIZE]; int blocknum; int dirty; int usecnt; } cache[CACHE_SIZE]; special (string) char *string; { if (string[1] == ':' && string[2]==0) { /* format: d: or d:fname */ disk = (string[0] & ~32) - 'A'; if (disk>1 && !override) /* safety precaution */ pexit ("Bad drive specifier for special"); } else { file=1; if ((fd=creat(string,BWRITE)) == 0) pexit ("Can't open special file"); } } get_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* get a block to the user */ struct cache *bp,*fp; /* First access returns a zero block */ if (read_and_set(n) == 0) { copy(zero, buf, BLOCK_SIZE); return; } /* look for block in cache */ fp=0; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) { if (bp->blocknum==n) { copy (bp,buf,BLOCK_SIZE); bp->usecnt++; return; } /* remember clean block */ if (bp->dirty == 0) if (fp) {if (fp->usecnt > bp->usecnt) fp=bp;} else fp=bp; } /* block not in cache, get it */ if (!fp) { /* no clean buf, flush one */ for (bp=cache,fp=cache; bp<&cache[CACHE_SIZE]; bp++) if (fp->usecnt > bp->usecnt) fp=bp; mx_write (fp->blocknum, fp); } mx_read (n, fp); fp->dirty=0; fp->usecnt=0; fp->blocknum=n; copy (fp, buf, BLOCK_SIZE); } put_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* Accept block from user */ struct cache *fp, *bp; read_and_set(n); /* look for block in cache */ fp=0; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) { if (bp->blocknum==n) { copy (buf,bp,BLOCK_SIZE); bp->dirty=1; return; } /* remember clean block */ if (bp->dirty == 0) if (fp) {if (fp->usecnt > bp->usecnt) fp=bp;} else fp=bp; } /* block not in cache */ if (!fp) { /* no clean buf, flush one */ for (bp=cache,fp=cache; bp<&cache[CACHE_SIZE]; bp++) if (fp->usecnt > bp->usecnt) fp=bp; mx_write (fp->blocknum, fp); } fp->dirty=1; fp->usecnt=1; fp->blocknum=n; copy (buf,fp,BLOCK_SIZE); } cache_init() { struct cache *bp; for (bp=cache; bp < &cache[CACHE_SIZE]; bp++) bp->blocknum = -1; } flush () { /* flush all dirty blocks to disk */ struct cache *bp; for (bp=cache; bp<&cache[CACHE_SIZE]; bp++) if (bp->dirty) { mx_write (bp->blocknum, bp); bp->dirty=0; } } /*================================================================== * hard read & write etc. *=================================================================*/ #define MAX_RETRIES 5 mx_read (blocknr,buf) int blocknr; char buf[BLOCK_SIZE]; { /* read the requested MINIX-block in core */ char (*bp)[PH_SECTSIZE]; int sectnum,retries,err; if (file) { lseek (fd, (long) blocknr * BLOCK_SIZE, 0); if (read (fd, buf, BLOCK_SIZE) != BLOCK_SIZE) pexit ("mx_read: error reading file"); } else { sectnum = blocknr * (BLOCK_SIZE / PH_SECTSIZE); for (bp=buf; bp<&buf[BLOCK_SIZE]; bp++) { retries = MAX_RETRIES; do err=absread (disk,sectnum,bp); while (err && --retries); if (retries) { sectnum++; } else { dexit ("mx_read",sectnum,err); } } } } mx_write (blocknr,buf) int blocknr; char buf[BLOCK_SIZE]; { /* write the MINIX-block to disk */ char (*bp)[PH_SECTSIZE]; int retries,sectnum,err; if (file) { lseek (fd, blocknr * BLOCK_SIZE, 0); if (write (fd, buf, BLOCK_SIZE) != BLOCK_SIZE) { pexit ("mx_write: error writing file"); } } else { sectnum = blocknr * (BLOCK_SIZE / PH_SECTSIZE); for (bp=buf; bp<&buf[BLOCK_SIZE]; bp++) { retries = MAX_RETRIES; do { err=abswrite (disk,sectnum,bp); } while (err && --retries); if (retries) { sectnum++; } else { dexit ("mx_write",sectnum,err); } } } } dexit (s,sectnum,err) int sectnum, err; char *s; { printf ("Error: %s, sector: %d, code: %d, meaning: %s\n", s, sectnum, err, derrtab[err] ); exit (2); } #endif /*================================================================ * get_block & put_block for UNIX *===============================================================*/ #ifdef UNIX special (string) char *string; { fd = creat(string, 0777); close(fd); fd = open(string, 2); if (fd < 0) pexit("Can't open special file"); } get_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* Read a block. */ int k; /* First access returns a zero block */ if (read_and_set(n) == 0) { copy(zero, buf, BLOCK_SIZE); return; } lseek(fd, (long) n*BLOCK_SIZE, 0); k = read(fd, buf, BLOCK_SIZE); if (k != BLOCK_SIZE) { pexit("get_block couldn't read"); } } put_block(n, buf) int n; char buf[BLOCK_SIZE]; { /* Write a block. */ read_and_set(n); if (lseek(fd, (long)n*BLOCK_SIZE, 0) < 0L) { pexit("put_block couldn't seek"); } if (write(fd, buf, BLOCK_SIZE) != BLOCK_SIZE) { pexit("put_block couldn't write"); } } /* dummy routines to keep source file clean from #ifdefs */ flush() { return; } cache_init() { return; } #endif /* * output format for Alcyon 68K compiler */ struct head { short a_magic; /* a.out magic number */ long a_tsize; /* # bytes in program text segment */ long a_dsize; /* # bytes in program data segment */ long a_bsize; /* # bytes in program bss segment */ long a_ssize; /* # bytes in symbol table */ long a_stksize; /* initial stack size */ long a_entry; /* entry point */ short a_rlbflg; /* relocation bits suppressed flag */ }; struct more { long a_dstart; /* address of data segment */ long a_bstart; /* address of bss segment */ }; #define A_MAGICA 0x601A /* contiguous file with short format */ #define A_MAGICB 0x601B /* noncontiguous file, 'more' added */ #define A_MAGICC 0x601C /* as MAGICA, but data aligned on 2k */ #define A_MAGICD 0x601D /* as MAGICA, but data starts on 0 */ #define A_MAGICE 0x601E /* as MAGICA, but data aligned on 4k */ struct symb { char s_name[8]; /* symbol name */ short s_flag; /* symbol type flags */ long s_value; /* symbol value */ }; /* * symbol flag bits */ #define S_DEFINED 0x8000 /* defined */ #define S_EQUATED 0x4000 /* equated */ #define S_GLOBAL 0x2000 /* global (entry or external) */ #define S_EQUREG 0x1000 /* equated register */ #define S_EXTREF 0x0800 /* external reference */ #define S_DATREL 0x0400 /* DATA based relocatable */ #define S_TXTREL 0x0200 /* TEXT based relocatable */ #define S_BSSREL 0x0100 /* BSS based relocatable */ #define S_FILNAM 0x0080 /* filename symbol */ /* * relocation info: value for lower three bits of word */ #define R_ABS 0 /* absolute */ #define R_DAT 1 /* data segment relocatable */ #define R_TXT 2 /* text segment relocatable */ #define R_BSS 3 /* bss segment relocatable */ #define R_UND 4 /* undefined external symbol */ #define R_UPP 5 /* upper word of long */ #define R_PCR 6 /* pc-relative */ #define R_OPC 7 /* first word of instruction */ /* * structure format strings */ #define SF_HEAD "M24444442" #define SF_MORE "M44" #define SF_SYMB "M111111124" /* * structure sizes in file (add digits in SF_*) */ #define SZ_HEAD 28 #define SZ_MORE 8 #define SZ_SYMB 14 /* * output format for MINIX-PC and MINIX-ST. * for the i8088 longs are stored with low-order byte first. * for the 68000 longs are stored with high-order byte first. * this is a mess! * This MINIX format is a stripped down and mutilated version of * the Vrije Universiteit flavor of the ACK loadfile format. */ struct exec { long a_magic; /* contains a.out magic number */ long a_versn; /* header length and version */ long a_tsize; /* # bytes in program text segment */ long a_dsize; /* # bytes in program data segment */ long a_bsize; /* # bytes in program bss segment */ long a_entry; /* entry point */ long a_msize; /* # bytes allocated for program */ long a_ssize; /* # bytes in symbol table */ }; #define A_MAGICD 0x04100301L /* combined I & D space */ #define A_MAGICI 0x04200301L /* separate I & D space */ #define A_VERSION 0x00000020L struct nlist { char n_name[8]; /* symbol name */ long n_value; /* symbol value */ char n_sclass; /* storage class */ char n_numaux; /* number of auxiliary entries */ short n_type; /* language base and derived type */ }; /* * structure format strings */ #ifdef i8088 #define SF_HEAD "L44444444" #define SF_SYMB "L11111114112" #endif #ifdef ATARI_ST #define SF_HEAD "M44444444" #define SF_SYMB "M11111114112" #endif /* * structure sizes in file (add digits in SF_*) */ #define SZ_HEAD 32 #define SZ_SYMB 16 putstruc(ap, s, b) char *ap; /* structure pointer */ register char *s; /* structure format */ register char *b; /* sequence of bytes */ { register int i; register long l; register char *p = ap; register int lsb = 1; static struct { char a21; short a22; } a2; static struct { char a41; long a44; } a4; while (i = *s++) { switch (i) { case '1': *b++ = *p++; break; case '2': i = (int) ((char *)&a2.a22 - (char *)&a2) - 1; while ((int)(p - ap) & i) p++; i = *((short *)p); p += sizeof(short); if (lsb) { b[0] = (char)i; i >>= 8; b[1] = (char)i; } else { b[1] = (char)i; i >>= 8; b[0] = (char)i; } b += 2; break; case '4': i = (int) ((char *)&a4.a44 - (char *)&a4) - 1; while ((int)(p - ap) & i) p++; l = *((long *)p); p += sizeof(long); if (lsb) { b[0] = (char)l; l >>= 8; b[1] = (char)l; l >>= 8; b[2] = (char)l; l >>= 8; b[3] = (char)l; } else { b[3] = (char)l; l >>= 8; b[2] = (char)l; l >>= 8; b[1] = (char)l; l >>= 8; b[0] = (char)l; } b += 4; break; case 'L': lsb = 1; break; case 'M': lsb = 0; break; default: abort(); } } } Recompiling MINIX-ST TOS tools This file contains instructions for recompilation of the TOS programs found on the 08.TOS diskette that is part of the MINIX-ST distribution. The description assumes that you have the following hardware and software available: - an Atari ST with at least 1M of memory - a double sided floppy disk drive (or a hard disk) - the Alcyon 4.14 C compiler that is part of the Atari ST developers kit - the public domain line oriented command interpreter GULAM.PRG made available by Prabhaker Mateti of the CWRU Department of Computer Engineering, Cleveland If you miss some of these items you can use these instruc- tions as guidelines for alternative routes. Other compilers might work as well, but we haven't tried. If you can not find a copy of GULAM.PRG you may type the individual com- mands found in the scripts by hand, or translate them into a script for another command interpreter, like COMMAND.TOS. Step 1: Make 28.TOS This section explains how you can prepare a copy of 08.TOS suited for compilation. It suffice to execute this procedure only once. - Start by making a copy of the single-sided 08.TOS diskette onto a new single-sided diskette 18.TOS, for example by dragging the FLOPPY DISK A: icon onto the FLOPPY DISK B: icon when your are in the GEM desktop. - Enable the 512K RAM disk "M:" present on the newly created 18.TOS (made by Landon Dyer) by renaming AUTO\DYER512.NOT into AUTO\DYER512.PRG. - Reboot your machine from the 18.TOS diskette. - Copy the contents of the diskette onto the RAM disk. - Take a new double-sided diskette and label it 28.TOS. - 2 - - Copy the contents of the RAM disk onto 28.TOS. - Upload GULAM.PRG onto 28.TOS. The 28.TOS is ready for use. Reboot from it whenever you want to recompile parts of it. Step 2: Filling the RAM disk During the real compilation we assume that the compiler tools (programs and libraries) are present on the RAM disk M:. The files that are being compiled are found on 28.TOS in drive A:. A GULAM script is provided to upload all required compiler tools onto the RAM disk. Boot from 28.TOS and start GULAM.PRG. Assuming that you have all of the Alcyon 4.14 C compiler tools available on a single (double-sided) diskette you can type (Do not type the lines starting with a ":" and do not type the ">>" prompt of GULAM): >> cd m:\ >> cp a:\src\c2ram.g m:\ : Insert diskette with complete Alcyon 4.14 >> c2ram The GULAM script C2RAM.G reads: foreach i { cp68.prg c068.prg c168.prg as68.prg as68init as68symb.dat } if '!' -e m:\$i cp a:\$i m:\ endif endfor foreach i { link68.prg gemstart.o gemlib libf osbind.o relmod.prg } if '!' -e m:\$i cp a:\$i m:\ endif endfor Step 3: Recompiling TOS tools The procedure below describes how to recompile WFLOP.C into the TOS program WFLOP.PRG, as an example. You should have uploaded your RAM disk with the compiler tools as described in the previous section. Then continue by typing: : Insert 18.TOS >> cd a:\src >> cc wflop >> ldprg wflop - 3 - CC and LDPRG are GULAM scripts. CC.G reads: m:\cp68 -DTOS -DATARI_ST $1.c $1.i m:\c068 $1.i $1.1 $1.2 $1.3 rm $1.i m:\c168 $1.1 $1.2 $1.s rm $1.1 rm $1.2 m:\as68 -l -u -s m:\ $1.s rm $1.s LDPRG.G reads: set owd $cwd cp $1.o m:\ cd m:\ link68 $1.68k = gemstart,$1,gemlib,libf,osbind rm $1.o relmod $1 rm $1.68k mv $1.prg $owd cd $owd Ideally the LDPRG.G script looks like: m:\link68 $1.68k = m:\gemstart,$1,m:\gemlib, m:\libf,m:\osbind m:\relmod $1 rm $1.68k but LINK68.PRG cannot handle backslashes in pathnames. To recompile all the supplied TOS tools use the script RUNPRG.G. This should result in a number of .PRG files identical to the ones in the ROOT directory of 08.TOS. /* * TODO MINIX: * - is shared text useful for the ST? how do cope with (relocatable) * data references in text * - if useful, how do we force text alignment on CLICK_SIZE? here? */ #include "out68k.h" #ifdef TOS #include "fakeunix.c" #else extern long lseek(); #endif struct head head; char buff[8192]; int fi, fo; char *progname; char *chmemstr; main(argc,argv) int argc; char *argv[]; { register part, n; register long left; register long last, stop, here, diff; register prev, curr; char h[SZ_HEAD]; progname = argv[0]; if (argc > 1) switch (argv[1][0]) { case '-': case '+': case '=': chmemstr = argv[1]; argc--; argv++; } if (argc != 3) error('f', "Usage: %s [+-= amount] infile outfile", progname); if ((fi = open(argv[1], 0)) < 0) error('f',"Couldn't open %s for input",argv[1]); if ((fo = creat(argv[2], 0666)) < 0) error('f',"Couldn't open %s for output",argv[2]); /* * read header and copy to output */ if (read(fi, h, sizeof(h)) != sizeof(h)) error('f', "read error"); getstruc((char *)&head, SF_HEAD, h); if (head.a_magic != A_MAGICA) error('f', "bad magic %04x, must be %04x", head.a_magic, A_MAGICA); if (head.a_entry != 0) error('f', "entry point (%X) must be 0", head.a_entry); if (head.a_rlbflg != 0) error('f', "no relocation info present"); minixhead(); /* * copy text+data */ left = head.a_tsize + head.a_dsize; part = sizeof(buff) - SZ_HEAD; while (left) { n = left > part ? part : left; if (read(fi, buff, n) != n) error('f', "read error"); if (write(fo, buff, n) != n) error('f', "write error"); left -= n; part = sizeof(buff); } /* * skip symbols */ if (head.a_ssize) if (lseek(fi, head.a_ssize, 1) < 0) error('f', "seek error"); /* * read relocation, modify to GEMDOS format, and write. * Only longs can be relocated. * * The GEMDOS format starts with a long L: the offset to the * beginning of text for the first long to be relocated. * If L==0 then no relocations have to be made. * * The long is followed by zero or more bytes. Each byte B is * processed separately, in one of the following ways: * * B==0: * end of relocation * B==1: * no relocation, but add 254 to the current offset * B==0bWWWWWWW0: * B is added to the current offset and the long addressed * is relocated. Note that 00000010 means 1 word distance. * B==0bXXXXXXX1: * illegal */ last = 0; curr = 0; stop = head.a_tsize + head.a_dsize; for (here = 0; here != stop; here += 2) { prev = curr; curr = rword(); if (curr == R_ABS) continue; if (curr == R_UPP) continue; if (curr == R_OPC) continue; if (curr != R_DAT && curr != R_TXT && curr != R_BSS) error('f', "bad relocation word %04x", curr); if (prev != R_UPP) { static ignored; if (ignored == 0) error('w', "word relocation ignored"); ignored = 1; continue; } diff = here - 2 - last; if (last == 0) wlong(diff); else { while (diff > 255) { wbyte(1); diff -= 254; } wbyte((int)diff); } last = here - 2; } if (last == 0) wlong(0); else wbyte(0); wbyte(-1); /* flush buffer */ } minixhead() { long mh[8]; char mb[32]; long stack; long chmem(); mh[0] = 0x04100301L; mh[1] = 0x00000020L; mh[2] = head.a_tsize; mh[3] = head.a_dsize; mh[4] = head.a_bsize; mh[5] = 0; stack = 0x00010000L - (mh[3] + mh[4]); if ((mh[0] & 0x00200000L) == 0) /* not SEPARATE */ stack -= mh[2]; while (stack < 0) stack += 0x00010000L; if (chmemstr) stack = chmem(chmemstr, stack); printf("%D bytes assigned to stack+malloc area\n", stack); mh[6] = stack + (mh[3] + mh[4]); if ((mh[0] & 0x00200000L) == 0) /* not SEPARATE */ mh[6] += mh[2]; mh[7] = 0; putstruc((char *)mh, "M44444444", mb); if (write(fo, mb, sizeof(mb)) != sizeof(mb)) error('f', "write error"); } long chmem(str, old) char *str; long old; { register long num, new; long atol(); num = atol(str+1); if (num == 0) error('f', "bad chmem amount %s", str+1); switch (str[0]) { case '-': new = old - num; break; case '+': new = old + num; break; case '=': new = num; break; } return(new); } /* VARARGS2 */ error(t,s,a,b,c,d,e,f,g,h,i,j) char t; char *s; { printf("%s: ",progname); printf(s,a,b,c,d,e,f,g,h,i,j); printf("\n"); switch (t) { case 'w': return; case 'f': exit(1); case 'a': abort(); default: error('w',"Illegal error type: '%c'",t); } } rword() { static char b[8192]; static char *p; static int n = 0; short b2; if (n == 0) { p = b; n = read(fi, b, sizeof(b)); if (n <= 0) error('f', "read error"); if (n & 1) error('f', "odd error"); } getstruc((char *)&b2, "M2", p); n -= 2; p += 2; return(b2 & 0xFFFF); } wlong(l) long l; { char b[4]; putstruc((char *)&l, "M4", b); wbyte(b[0] & 0xFF); wbyte(b[1] & 0xFF); wbyte(b[2] & 0xFF); wbyte(b[3] & 0xFF); } wbyte(c) { static char b[8192]; static int next = 0; if (c == -1 || next == sizeof(b)) { if (write(fo, b, next) != next) error('f', "write error"); next = 0; } if (c == -1) return; b[next] = c; next++; } #include "getstruc.c" #include "putstruc.c" #include "fakeunix.c" #define NT 80 /* track per side */ #define NS 9 /* sectors per track */ #define NB 512 /* bytes per sector */ char buf[NS*NB]; int doublesided; int override; char *file; int drive; main(argc, argv) char **argv; { register fd, ntrack, i; register long nbyte, length; long atol(); while (argc > 1 && argv[1][0] == '-') { switch (argv[1][1]) { case 'd': case 'D': doublesided++; break; case 'o': case 'O': override++; break; default: printf("bad option %s\n", argv[1]); exit(1); } argc--; argv++; } if (argc != 4) { printf("usage: rflop [-d][-o] drive file length\n"); exit(1); } drive = special(argv[1]); if (drive < 0) { printf("bad drive specification %s\n", argv[1]); exit(1); } file = argv[2]; length = atol(argv[3]); fd = creat(file, 0666); if (fd < 0) { printf("cannot create %s\n", file); exit(1); } for (ntrack = 0, nbyte = 0; ; ntrack++, nbyte += i) { i = sizeof(buf); if (length - nbyte < (long)i) i = (int)(length -nbyte); if (i == 0) break; if (floprt(buf, ntrack) != 0) { printf("read error on drive %c\n", 'A' + drive); exit(1); } if (write(fd, buf, i) != i) { printf("write error on file %s\n", file); exit(1); } } printf("Copied %ld bytes from %d tracks\n", nbyte, ntrack); exit(0); } special(string) char *string; { register drive; char cr[1]; if (string[1] != ':') return(-1); if (string[2] != 0) return(-1); drive = string[0]; if (drive >= 'a' && drive <= 'z') drive -= 'a' - 'A'; if (drive < 'A' && drive > 'Z') return(-1); drive -= 'A'; if (drive > 1 && !override) /* safety precaution */ return(-1); printf("Insert (write-protected) diskette and hit RETURN "); read(0, cr, 1); printf("\ngo\n"); return(drive); } floprt(buf, track) char *buf; { register side, err; extern long xbios(); side = 0; if (doublesided) { side = track & 1; track >>= 1; } for (err = 0; err < 5; err++) if ((int)xbios(8, buf, 0L, drive, 1, track, side, NS) == 0) return(0); return(-1); } cc build ldprg build cc relmix ldprg relmix cc minix ldprg minix cc mkfs ldprg mkfs cc rflop ldprg rflop cc wflop ldprg wflop cc fixkeys ldprg fixkeys #include "fakeunix.c" #define NT 80 /* track per side */ #define NS 9 /* sectors per track */ #define NB 512 /* bytes per sector */ char buf[NS*NB]; int doublesided; int override; int zerotail; char *file; int drive; main(argc, argv) char **argv; { register fd, tracks, ntrack, i, oldi; register long nbyte; while (argc > 1 && argv[1][0] == '-') { switch (argv[1][1]) { case 'd': case 'D': doublesided++; break; case 'o': case 'O': override++; break; case 'z': case 'Z': zerotail++; break; default: printf("bad option %s\n", argv[1]); exit(1); } argc--; argv++; } if (argc != 3) { printf("usage: wflop [-d][-o] drive file\n"); exit(1); } drive = special(argv[1]); if (drive < 0) { printf("bad drive specification %s\n", argv[1]); exit(1); } file = argv[2]; fd = open(file, 0); if (fd < 0) { printf("cannot open %s\n", file); exit(1); } nbyte = 0; oldi = sizeof(buf); tracks = NT; if (doublesided) tracks *= 2; for (ntrack = 0; ntrack < tracks; ntrack++) { if (oldi == sizeof(buf)) { i = read(fd, buf, sizeof(buf)); if (i < 0) { printf("read error on file %s\n", file); exit(1); } nbyte += i; oldi = i; while (i < sizeof(buf)) buf[i++] = 0; } else if (oldi != 0) { i = 0; while (i < oldi) buf[i++] = 0; oldi = 0; } if (oldi == 0 && zerotail == 0) break; if (flopwt(buf, ntrack) != 0) { printf("write error on drive %c\n", 'A' + drive); exit(1); } } if (zerotail) printf("Copied %ld bytes, zeroed %ld bytes, total %d tracks\n", nbyte, ((long)tracks*sizeof(buf))-nbyte, tracks); else printf("Copied %ld bytes to %d tracks\n", nbyte, ntrack); exit(0); } special(string) char *string; { register drive; char cr[1]; if (string[1] != ':') return(-1); if (string[2] != 0) return(-1); drive = string[0]; if (drive >= 'a' && drive <= 'z') drive -= 'a' - 'A'; if (drive < 'A' && drive > 'Z') return(-1); drive -= 'A'; if (drive > 1 && !override) /* safety precaution */ return(-1); printf("Insert formatted, writable diskette and hit RETURN "); read(0, cr, 1); printf("\ngo\n"); return(drive); } flopwt(buf, track) char *buf; { register side, err; extern long xbios(); side = 0; if (doublesided) { side = track & 1; track >>= 1; } for (err = 0; err < 5; err++) if ((int)xbios(9, buf, 0L, drive, 1, track, side, NS) == 0) return(0); return(-1); } `45*O*m#$ - ЭЭм@"ҍ¼.A// Bg?<JNA y$"h#$E?/ N HN"/0<NBNu o AdpNu#$BNuNV0/"/ NB$d0< A "NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN$T-@JlB` .`N^NuNV.!\N>?<LN$TN^NuNV n f > NX>?<N$TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|!c|JDf8<&n|`RJgSDl`"``H | r W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH?`z n h(H`JRy$`VRy$`LRy6`B n ./<!jNX>?<LN$T`H |!$rW hNSnX no n h -gp ng.!yN>?<LN$T n .N36Jy6l( n ./<!NX>?<LN$T n #ZlBW/9Zl?<=N$\>JGl&.Zl/<!NX>?<LN$TB6<|PJy$gFBE`|fl.$/<??<?N$P8JDl&.Zl/<!NX>?<LN$T0HѮ6`0D$BRD|e` JCgBD`0D$BRDCmBCJCf Jy6gH>/<$NXJ@g*>6WA/<!NX>?<LN$TREFmJy6g6>/<0F/N

/./<",NPBW?<LN$TJLN^NuNVH n (:gp` nJ(gp` nH>|am|zn| |Al|Zop`T|A|oJy$fp`8."KN.U/<Bg?<?N$P."N0`JLN^NuNVHBGJy$g>. | BF`:> ??. ?<?96B/.?< NJ@fB@`RF|mp`JLN^NuNVHNzBW/< N6X>/< N6X>/< N6X n2n B*n`&HHм# @g H| `HRJf> /.N XJL N^NuNVH BWN#$#$By$. a*n`N`RJgHHм# @fJg2 "g 'fFH>/ RNX(@ f."/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм# @gJ5pg M2GBRGH`BWNBW/ RNNXJ@g.R/<"aX`l>N ->f@>/ TNNX|f>B?<N\|f.R/<"a|X`$BW/ RN>X|g.R/<"aVX`>?/ NXJf>*/ NXJg-|=.8?<NT>/ ?<NF\<f."/ aX`^.H?/.aZ\.N>RWNv(@./ NX.a>/ ?<NF\<f`.a`|g`JfBaSy$.$Nz|f."/<"a*XB/9$?9$NV\>NpJL0N^NuNV|./NX. /NX."/NX.?< NT>NpN^NuNVH*n y$ X$Ry$JL N^NuNVH*n. (nGVfJL8N^NuNVHN>|fp`>N08*@6JnfU. /.NXJ@f U0`R`. /.NXJ@fU0`2>/.?NF\J@g3##3$#p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN>NN^NuNVHBG`0м".NRG|mJLN^NuNVH*n0-|g*.N-g .NB@H+@+@Bm m>NJL N^NuNVH>.>N *@ f3 #3$#p`NBF0|f>?<>N,T<l|>N>N^JFf0``3#3$#pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?Nx\>Gg mp`J-gJg-g;| `;| `>0- D@H/?N\Bm +mB@JL N^NuNVHN>|fp`>N08*@6Jn fUJnfU. /.NXJ@fU;n 0``. /.NXJ@fU0`d>/.?NF\J@g>N^3#3$#p`0U>B-H?N\BWB-H?N\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N *@ f3 #3$#p`$>?-/. ?<BN,P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y#*T`ZB@0-BA2-@F@J@g>NB`:B@0-ne `*#f>a*@ f>NB`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@## PJL0N^NuNVH >.|?GG0@>N*@fB`* R*@(M9GB@0,F@9@.Pa 9#JL0N^NuNVH *nQB@0-BA2-@F@J@g>Np`(y#Ȼeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b ##B@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(##B@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y$(G$.Nz|f3 #3$#p`>Bg/ N\ JL0N^NuNVH>N *@ fp`vJnfB@`j-g3 #3$#p`L0|g>/. / NP`0-g>/. / NlP``>/. / N|PJL N^NuNVH|BG` #f #0`RG|m3#3$#pJLN^NuNVp2.`F@H#B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@60.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 #3$#B`0B@08*@6-f3 #3$#B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N=@B0.ѭJnf3#3$#p`^=n`8Rn>?</<#/-/ N=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N=@Jnf3#3$#p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|` n(g-|` n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<NX0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м6-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN,\JgB@`0<>`d>ON,JgB@`0<>`J.?<=N,T>o n1GBG`,.?<AN,T>``||b@0@# PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y$CCbNC NJg .NuNV n=h.0n/0n/N

  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl l #include #include #include #define SUCCESS 0 #define FAILURE 1 void put(unsigned char * ptr, char * comment, char * name); void putone(unsigned char ch); char * comments[] = { "unshifted", "shifted", "capslocked" }; char * names[] = { "keynorm", "keyshft", "keycaps" }; FILE * fdes; void main(int argc, char * argv[]) { register i; unsigned char ** tostbl; char * def_tbl = (char *) -1L; fdes = stdout; if (--argc) { if ((fdes = fopen(*++argv, "w")) == (FILE *) 0) { fprintf(stderr, "can't open output file %s\n", *argv); exit(FAILURE); } } /* * fetch pointer to table of 3 pointers to TOS tables */ tostbl = (unsigned char **) Keytbl(def_tbl, def_tbl, def_tbl); /* * sanity */ for (i = 0; i < 3; i++) { if (tostbl[i][1] != 033) { fprintf(stderr, "bad TOS table[%d]\n", i); #ifdef USE_DESKTOP getchar(); #endif exit(1); } } /* some lines comment */ fprintf(fdes, "/* %s: contains the current key maps retrieved\n", *argv); fprintf(fdes, " * from the TOS environment.\n"); fprintf(fdes, " * Use in the directory 'kernel'\n */\n\n"); /* * copy each of the three tables into stdout or header file. */ for (i = 0; i < 3; i++) put(tostbl[i], comments[i], names[i]); exit(SUCCESS); } void put(unsigned char * ptr, char * comment, char * name) { int i; int j; fprintf(fdes, "/* Scan codes to ASCII for %s keys */\n", comment); fprintf(fdes, "PUBLIC unsigned char %s[] = {\n", name); for (i=0; i < 16; i++) { fprintf(fdes, "/*%02x*/ ", i*8); for (j=0; j<8; j++) putone(ptr[i*8+j]); fprintf(fdes, "\n"); } fprintf(fdes, "};\n\n"); } void putone(unsigned char ch) { switch (ch) { case '\'': fprintf(fdes, " '\\'',"); break; case '\\': fprintf(fdes, " '\\\\',"); break; case '\b': fprintf(fdes, " '\\b',"); break; case '\r': fprintf(fdes, " '\\r',"); break; case '\t': fprintf(fdes, " '\\t',"); break; case 0x9c: fprintf(fdes, " '@',"); break; default: if ((ch > 0x1f) && (ch < 0x7f)) fprintf(fdes, " '%c',", ch); else fprintf(fdes, " 0x%02X,", (unsigned char) ch); } } keytbl.ttp = start.o keytbl.c tcstdlib.lib tctoslib.lib  eminix) register char *bminix; /* begin of minix as read in */ register char *eminix; /* end of minix as read in */ { register char *lowmem; /* copy it to low core */ register long bootpc; /* at offset 4: start address */ register int (*pc)(); /* same but casted to func */ bminix += 4; bootpc = ((long *)bminix)[0]; bminix += 4; lowmem = ((char *)8); while ((long)lowmem < 0x0400) /* don't clobber TOS vars */ *lowmem++ = *bminix++; lowmem += 0x0200; /* length of TOS area */ bminix += 0x0200; while (bminix < eminix) *lowmem++ = *bminix++; pc = (int (*)())bootpc; (*pc)(); } fatal(f, a1, a2, a3, a4, a5, a6) char *f; { printf(f, a1, a2, a3, a4, a5, a6); printf("\n"); exit(1); } ``V>>> TURBO-C <<<< for ATARI-ST Release 1 (C) 88 Borland International G#J$VH3 k  Ј<.@// ?<?<JNAO pBAA4|`g |`.gg4TB|"O4SBQBt SAe!dB)SAe !eHiR@`/ R@Hzd"k, ON&? 9g @N 9g @NNp?<LNAH>(H*|E$tGMS@g$C-XL TN*$f/C/ NNXOpN/ "M MNXO*@BC`&0H u (g?CJ NNTOpNZRC|m/C] RNXOC RN|BCM` 0H/60H"v0H uNXORC|mB@NL|NuH<*H$IGI/ C TN XO//C TNXOBC`80H?C TNTOBD`2ID5N,RD|mCH TNRC|mC TNL<NuH0EGB@|'gnQ@g0S@gDY@g4`V|\g|@g>`HC SNx`nC SNl`bC SN``VC SNT`JC" SNH`>C) SN<`2<c<dB@?C0 SNTO`B@?C8 SN TOL Nu/QOM-O, ICHza&XOPO,_NuH@B@H@"VraJ@kNu.np`H8]O$H&I(o&BCx%p JR@gfJ@g@NBEgBA< <b;k`|<*f<`&<0< b ACp a $Wb<gt<.f6<*f4`$<0< b ACp a j$Wb~4gv<lf gfgr@dV|?@0;NFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [0`AB(`0AB(` [2"La@``JEj `p0?4 LaTO@`@JEj `0H?4 La`TO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@N0\OLxNup`H Ov Jj|-?|D`g|+?|`g| ?|`~?|`vH Ov ?|`dH Ovf?|`L|0f|x?|`2|X?|`$H Ovf?|` |0?|$H>C8jxA aA pJWF@?@gA 2SAk ae(Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`XH0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 H:$H&I(Sx&gBJg>+g@,k $ڹd SfRe`&// Ka$"J@f(S`& L\Nu3 p`p/aXONuH&H(ov<rgv<wg v<afg <+fVCg<bg<tg`p\CJfj g La ` aJfZ(H <a)HgL0@0;R Ka|g@9@;0V@ l)H()H Cd# LLNup`p`p 3`a)b*a)b* Ap`Ar(WVNu?/ AtaJAa@G6<`Gp+g Ka"QA a&_6Nu_TMP_XXX.XXX/ &H+g+g.a>J@f.0+a~J@k"+g ka@B@7@&_Nu3 p`H&H(k6+"+g0DtaJk+fT"SA"L Ip Wf(| ?/ " 0a>"_2JkJAp QH@" 0aLJj`&0" La|g&'LB@LNup`H6&Hp Cgp@CfJpC?/ ?<=NAPOJk*80<Cf^pCgB?<?p/?<BNAO Jj*`0r߲f*r Cg$pCW|?/ ?<NAXO0<`|c??<>NAXOJkpNua3pNu/?<ANA\OJkpNua3pNuH :&($H|fN2 f`HN: SJf`0 J"0ND(g Jl0NP3` Jf 3x L8Nu|b$??/?<BNAO JkNua3pNu0<`D@| |"b;NupNu   // &PR<e&/?<HNA\OJo @!CC& "A`xE*$R f4/< ?<HNA\OJo`$@Ap !| %H$*#*A"P` )d I"Q f`rd ` #@#C"nA$_&Nu`Nu/ g`$HQ e&A&"P`g I"Q f`: / ?<INA\O`, nf$A*"P` Q c I"Q f"Ja$_NuH8$H&I(R"l f &)K`b& Ыeg `p&)K`h )ѫ&)K`> I"Q gb Шeg `> & K` +Ѩ Шf )Ѩ l f $/ ?<INA\OLNu/ G& g/ &S?<INA\O`G* g/ &S?<INA\O`&_NuH0$H|g|$brGRgJ3kSJtgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"# 8NuANd @Nu?<NATONu??<NAXONu//??<?NAO Nu//??<@NAO Nu??/?<BNAO Nu/ ???<NM\O$_Nu/ /?<&NN\O$_Nu/ /// /?<NNO @$_Nuunshiftedcapslockedkeynormkeyshftkeycapswcan't open output file %s bad TOS table[%d] /* %s: contains the current key maps retrieved * from the TOS environment */ /* Scan codes to ASCII for %s keys */ PUBLIC unsigned char %s[] = { /*%02x*/ }; '\'', '\\', '\b', '\r', '\t', '@', '%c', 0x%02X,$$$t^ B|. D6 R0v4^. ~HX`%*O*m#" - ЭЭм@"ҍ¼.A// Bg?<JNA y""h#"E?/ N N"/0<NBNu o AdpNu#"BNuNV0/"/ NB"d0< AT"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HNT-@JlB` .`N^NuNV.N>?<LNTN^NuNV n f > NX>?<NTN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NTP:|0|9o^E0//NhP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -||JDf8<&n|`RJgSDl`"``H |xr W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH no n #BW/9?<=N\>l./< NX."/<??<?NP8|g>?</< N\-|$ nJhf n0("n2)Ag./< >NX n0(r #$$.$?<HNT*@ n. ON(MBD`dp ./??<?NP,g.//< ^NP n2A|H00*p `B SJfRD n2A|H00*Jf~>/<l/ NDPB?< NTN.-M/ / nNPJL0N^NuNV-| nNN^NuNVH *n(n >.`SGlJL0N^NuNVH*n(n X.X&|`ݷm`ݻe-G nNJL8N^NuNV>?.?.?.?.?. /.N. }N>?<LNTN^NuNVHN>BW/<mNX>/<mNX>/<mNX n2n B*n`&HHм! @g H| `HRJf> /.NXJL N^NuNVH BWN#"#"By".ca*n`N`RJgHHм! @fJg2 "g 'fFH>/ RNX(@ f. / aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм! @gJ5pg M2GBRGH`BWN BW/ RNXJ@g.R/< aX`l>N ->f@>/ TNX|f>B?<ND\|f.R/< a|X`$BW/ RN X|g.R/< aVX`>?/ NXJf>*/ NXJg-|+.8?<NT>/ ?<N \<f. / aX`^.H?/.aZ\.N>RWN:(@./ NxX.a>/ ?<N \<f`.a`|g`JfBaSy"."Nz|f. /< a*XB/9"?9"NV\>N 4JL0N^NuNV|./NxX. /NNX. /NNX.?< NT>N 4N^NuNVH*n y" X"Ry"JL N^NuNVH*n. (nGVfJL8N^NuNVHN>|fp`>N`08*@$JnfU.m/.NXJ@f U0`R`.r/.NXJ@fU0`2>/.?N \J@g3#!3"!p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVN L>NN^NuNVHBG`0м .N ~RG|mJLN^NuNVH*n0-|g*.Nf-g .NDB@H+@+@Bm m>N JL N^NuNVH>.>N*@ f3 !3"!p`NBF0|f>?<>NT<l|>N`>N"JFf0``3!3"!pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N<\>Gg mp`J-gJg-g;| `;| `>0- D@H/?ND\Bm +mB@JL N^NuNVHN>|fp`>N`08*@$Jn fUJnfU.m/.NXJ@fU;n 0``.r/.NXJ@fU0`d>/.?N \J@g>N"3!3"!p`0U>B-H?ND\BWB-H?ND\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N*@ f3 !3"!p`$>?-/. ?<BNP+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y!*T`ZB@0-BA2-@F@J@g>NB`:B@0-ne `*!f>a*@ f>NB`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#! PJL0N^NuNVH >.|?GG0@>N*@fB`* R*@(M9GB@0,F@9@.Pa 9!JL0N^NuNVH *nQB@0-BA2-@F@J@g>Np`(y!Ļeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #!B@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#!B@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y"(G".Nz|f3 !3"!p`>Bg/ N\ JL0N^NuNVH>N*@ fp`vJnfB@`j-g3 !3"!p`L0|g>/. / NP`0-g>/. / N0P``>/. / N@PJL N^NuNVH|BG` !f !0`RG|m3!3"!pJLN^NuNVp2.`F@H!B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@$0.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 !3"!B`0B@08*@$-f3 !3"!B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N=@B0.ѭJnf3!3"!p`^=n`8Rn>?</<!/-/ N=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N=@Jnf3!3"!p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|h` n(g-|$ n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<NX0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м$-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN\JgB@`0<>`d>ONJgB@`0<>`J.?<=NT>o n1GBG`,.?<ANT>``||b@0@! PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y"CCbNC NJg .NuNV n=h.0n/0n/NP/?.?<?NPN^NuNV n=h.0n/0n/NP/?.?<@NPN^Nu#"NA/9"NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu////NhP Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#"NN/9"Nu#"NM/9"Nu#"NA/9"Nu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z |NuAbort (null)minix.imgcannot open %sread block 0 failed (ask %d, ret %d)%s: wrong formatmalloc failed read failed (ask %ld, ret %ld) : unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   !! h!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6 *  `$    , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* dl T b`-(*O*m#5Z - ЭЭм@"ҍ¼.A// Bg?<JNA y5Z"h#5^E?/ N,N"/0<NBNu o AdpNu#5^BNuNV0/"/ NB5^d0< A/"NB0<NBN^Nu o2/0/ HSoQBNu o0/JfBNuf SNuNV0..?<HN-T-@JlB` .`N^NuNV.0N>?<LN-TN^NuNV n f > NX>?<N-TN^NuNV.X/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//N-P:|0|9o^E0//N-(P.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -|0#|JDf8<&n|`RJgSDl`"``H |/8r W h4N |<FlBEJnzf0D@:JEl@ n| -f$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNV ng.0j/<0NN>X n .N n .N0Bn`$ n 2.TAH.?.NTRn nmN v.0kN.5/95/<0NP.5/<0NX.5N NNBW?<LN-TN^NuNVBW/.?<=N-\=@l./<0N>X./<?.?<?N-P=@Jnl./<0N>XJno>/N XJnnN v>?<>N-TN^NuNVH BW/. ?<=N-\=@l. /<1N>X. /?.N \-y5 .ЮЮм -@ .ЮЮ-@/</.N,tP=@Jno0<n`B@=@0.HѮ0.HѮ nl .ѹ5 .ѹ50.Hм5 @ 0.Hм5 @!n0.Hм5 @!n0.Hм5 @1y5 nl:././././.0n"<//0/<1N .Ю=@0.".Үаg. /<1RN>X>N-@Jf. /<1aN>X*n=n`b n@d 0.`0<@=@.0./?.?<?N-P0ng. /<1jN>X0.nJnfBW?./.?<BN-PJl. /<1~N>X*nI./<?.?<?N-P<|l. /<1N>XJgYFXe0.Юe. /<1N>X./<1/NlP .Ѯ./<1/NPSFl8I./<?.?<?N-P<SFl. /<1N>XH||f `JGg"g. /<1N>X`" .Ю=@*n`6 nd 0.`0<=@>/ N X0.nJnfBF=F` l .` <=@0<y5nl0<y5=@ ng>/<7N X`Jnf=y5`RF0.HJf|JngL0R@2.HҼ5"A3@0.2.HҼ5"A2) A2.HҼ5"A3@ `F0.Hм5 @Bh0952.HҼ5"A2) A2.HҼ5"A3@ .?<IN-T>?<>N-TJL0N^NuNV./< ?.?<?N-P| g./<1N>X./<2/. NlP n g./<2N>X n Jg./<2)N>XN^NuNVH 0<y5=@0. nn 0. `0.=@=n:y55(n`0.SnJ@f0.y5 y5f.5?95NTN 0.n g*0.n 3 5*|5`0. Sn J@fJL0N^NuNVJy5g.5?95NTN N^NuNVH*|5`BR7eBy5Ry5JL N^NuNVHBn/</95N,tPJg.2m/<2CN>X-y5 .=@ .мH=@.BgNlT./<2n/QNP./<2q/]NP./<2t/NP./<2w/]NPBn`r0.@HЎ./<2z0.Hм5/ NP0.@HЎ./<2}0.Hм5/NPRn nmB@@H@BnK`$./<2/NlP0.nT мe./<2/NlP0.nn4./<2/NP.BgNTJL N^NuNV 95м-@.NL=@ nRog.2/<2N>XBn`Bn0.H @"<5 02.HҼ5"A")Ё2.HҼ5"A")Ё=@>0.@HЮ/NX>0.@HЮ/TNXRn nmtN^NuNVB 95й5й5Ѯ .м-@ 95Ѯ095r `H 95й5й5Ѯ .м-@ 95Ѯ095y5r `H 95й5й5Ѯ-y5 95й5-@ .-@ .ѮB .-@ .-@ .=@ .=@ .=@-n.NL=@ ng.2/<2N>X.NL=@ ng.2/<2N>X>/.XNX>/.\NX>/.PNXN^NuNV./</.N,P?NlT/</.N,tPЎ./<2/NlP0.|`N^NuNV=n ./</.N,P?NlT/</.N,tPЎ./<2/NP./</.N,P?NTN^NuNV. /./<2NP>?<LN-TN^NuNVH*n (n&nz`N0`2`B <5f5d>SG`R 2HfJEg,H|GH|@`H|G,H|@6TT` <5j5h>SG`R 2HfJEgB,H|H,,H|H,H|HH|H`>H|H,,H|H,H|H,H|H&XX`.z`(BE`"N4`H |/rW hNHfJL8N^NuNVH*n (n&nz`0`` <5p5n>SG`R 2Hf>TJEg0HG0H@`0H@G0HT` <5t5r>SG`R 2Hf,XJEg* H H@ H@ H@`& H@ H@ H@ HX`.z`(BE`"N4`H |/rW hNHfJL8N^NuNVBW/.?<9?<>N-T>/.?<=N-\39N^NuNVBW?990.Hr /?<BN-P. /<?99?<?N-P|g.3/<2N>XN^NuNVBW?990.Hr /?<BN-P. /<?99?<@N-P|g.3/<3N>XN^NuNVHN$^BW/</-NX>/</-NX>/</-NX n2n B*n`&HHм4 @g H| `HRJf> /.NXJL N^NuNVH BWN"#5z#5~By5x./#a*n`N`RJgHHм4 @fJg2 "g 'fFH>/ RNX(@ f.3/ aVX H> M2GBRG.Ra`BG`RG M2GJg5pHHм4 @gJ5pg M2GBRGH`BWNBW/ RN2XJ@g.R/<3(aX`l>N ->f@>/ TN2X|f>B?<Nd\|f.R/<35a|X`$BW/ RN"X|g.R/<3DaVX`>?/ NXJf>*/ NXJg-|@.8?<NT>/ ?<N)*\<f.3S/ aX`^.H?/.aZ\.N*>RWN+Z(@./ N*X.a>/ ?<N)*\<f`.a`|g`JfBaSy5x.5~Nz|f.3m/<3^a*XB/95z?95xNV\>NTJL0N^NuNV|./N*X. /N*nX.3n/N*nX.?< NT>NTN^NuNVH*n y5~ X5~Ry5xJL N^NuNVH*n. (nGVfJL8N^NuNVHN#>|fp`>N$08*@9JnfU./-/.N*XJ@f U0`R`./2/.N*XJ@fU0`2>/.?N)*\J@g3#435b4p`U0JL N^NuNVBW?. /.a:\N^NuNVBW?. /.a"\N^NuNV>?. /.a\N^NuNVNl>NN^NuNVHBG`0м3r.NRG|mJLN^NuNVH*n0-|g*.N-g .N!dB@H+@+@Bm m>NJL N^NuNVH>.>N$*@ f3 435b4p`NBF0|f>?<>N,T<l|>N$>N$BJFf0``3435b4pJL N^NuNVN^NuNVH*n0-| |f, -<o >/-?N#\\>Gg mp`J-gJg-g;| `;| `>0- D@H/?Nd\Bm +mB@JL N^NuNVHN#>|fp`>N$08*@9Jn fUJnfU./-/.N*XJ@fU;n 0``./2/.N*XJ@fU0`d>/.?N)*\J@g>N$B3435b4p`0U>B-H?Nd\BWB-H?Nd\0JL N^NuNVBW?. /.a\N^NuNVBW?. /.a\N^NuNV>?. /.a\N^NuNVH>N$*@ f3 435b4p`$>?-/. ?<BN,P+@U -JL N^NuNV>B?.a\N^NuNVH>.^GORG>a*@ fB` >/ aXJL N^NuNVH (y4Z*T`ZB@0-BA2-@F@J@g>N"B`:B@0-ne `*4Zf>a*@ f>N"B`(M*U`JL0N^NuNVH n*PB@0. X@me n `F(MB@0. HH@B@H@B@0-n 9@B@0,F@9@( n ;n B@0-F@;@#4Z PJL0N^NuNVH >.|?GG0@>N"*@fB`* R*@(M9GB@0,F@9@.Pa 94ZJL0N^NuNVH *nQB@0-BA2-@F@J@g>N"p`(y4Zeeecd(T`e2 BA2-IHABAHAЁ" BB4,JHBBBHB҂b #4ZB@`n BA2-IHABAHAЁf T0(mB@0-F@;@ T*`* BA2,IHABAHAЁfB@0-lB@0,F@9@(`(#4ZB@JL0N^NuNVH *n.a>. ^GORG>a-@fB`J n(PPg2d`Sn Jn f`B0. B0. `%Sn Jn f>/.aXJL0N^NuNVN^NuNVN^NuNVH >.HμgR*y5^(G5^.Nz|f3 435b4p`>Bg/ N\ JL0N^NuNVH>N$*@ fp`vJnfB@`j-g3 435b4p`L0|g>/. / N&P`0-g>/. / N%PP``>/. / N&`PJL N^NuNVH|BG` 4^f 4^0`RG|m3435b4pJLN^NuNVp2.`F@H4^B@N^NuNVHBG`>aRG|mJLN^NuNVH 0.8*@90.@BUB-+| BB> Bg/ N\> ?< / N\JL0N^NuNVH>.|e3 435b4B`0B@08*@9-f3 435b4B` JL N^NuNVH *n(n >.B@=@=@``Rnnc L2n  fB@0.ncf>?.B@0.W B2.Ё//-/ N+=@B0.ѭJnf3435b4p`^=n`8Rn>?</<4b/-/ N+=@B0.ѭnb4 -o+mB@0.JL0N^NuNVH*n>?./. /-/ N+=@Jnf3435b4p` B0.ѭ -o+mB@0.JL N^NuNV=|Bn n(g -|(` n(g-|(D n(g .м-@ n0(| =@Bn=n`=|` n  f.=|Jng 0.R@|l N2n| Rn`\ n  fRJngLp2.|A=@0.n|l^0.n` N2n| Rn0.SnJ@fR ` N2n"n QR RnSnRn nlJnf>0.S@@/ nNXJnfB@0.N^NuNVH*nH|=G`H>Bg?<N-X0SGJ@n0.JL N^NuNVH*nH=@ M2n$BG-M`H M2G $f: n $g.?< NT.$?<NT 2HЁR-@RGnm 2HЁg.?< NT0.JL N^NuNVH*n 0.8м9-@~.a&M`RJg :fJgc .Am .On*K`K0.`BW/ ?<o n1GBG`BW/ ?<NN,\JgB@`0<>`d>ON,JgB@`0<>`J.?<=N,T>o n1GBG`,.?<AN,T>``||b@0@4d PN0JL8N^NuNV n am n zn n nHRJfN^NuNVH *n (n`RJff .JL0N^NuNVH *n (nf .JL0N^NuNVH *n(M`RJf HJL0N^NuNVN^NuNVH *n(n `$H>a0H>a&op`lp` JfJfB@JL0N^NuNVH>.|am |zn|0JLN^Nu _B0Z"y5^CCbNC NJg .NuNV n=h.0n/0n/N, P/?.?<?N,PN^NuNV n=h.0n/0n/N, P/?.?<@N,PN^Nu#5NA/95NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNV/. /.N, 95N^Nu C"/lD&/nm <"`\Df r`:pmn2pr`,tl 0BAHA`Ԃփd`efJojDDJojD#5&Nu////N-(P Nu C"D"/&/f r`@pe:fpr`2t(ȼf 0BAHA`Ԃed`ef&( Nu#5NN/95Nu#5NM/95Nu#5NA/95Nu Stack Overflow$C runtimeCON:LST:DOUXcdefgosuxH:::Z0*02090@0G124LM124LM bAbort (null) kernelmm fs init menu seven file names expected. ----- ----- Operating system size %29D %5X Total size including menu is %D. can't open read error on file can't open %s text=%5D data=%5D bss=%5D tot=%5D hex=%4X more than 64k too big read error on file can't seek relocation info missing on file bad relocation in M4M4read error on file odd relo byte on file file header too short: M44444444bad header type. File: entry point not 0. File: MINIX is not multiple of CLICK_SIZE bytesM2M2M2M2M2M2M2M2M2kernel data space: no magic #mm data space: no magic #fs data space: no magic #M2M2Build: %s%s block read errorblock write error: unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $   4R4R )*.))**.*.)!!!!"CP/M-68K(tm), Version 1.2, Copyright (c) 1983, Digital Research XXXX-0000-6543216$ ^*&b:&<6$ 8H . 4 F( 4 "2BF4 , ,  & "0   ".&&"   V " 4  2^ LR 4      , ,D( 0 <    >  h 0HN&  jp".86 Jp &""@2&"fNbd4*R"D>* hlB bcc(R14),R1 add.l $fffffbd0(R14),R1 cmp.l R1,R0 beq L128 *line 219 move.l $a(R14),(sp) move.l #L129,-(sp) jsr _pexit addq.l #4,sp L128: *line 220 move $fffffff6(R14),(sp) jsr _myalloc move.l R0,$ffffffe4(R14) *line 221 *line 222 tst.l $ffffffe4(R14) bne L130 *line 222 move.l $a(R14),(sp) move.l #L131,-(sp) jsr _pexit addq.l #4,sp L130: *line 223 move.l $ffffffe4(R14),R13 *line 224 move $fffffff6(R14),$fffffff4(R14) *line 225 bra L134 L133: *line 226 cmp #16384,$fffffff4(R14) bcc L10006 move $fffffff4(R14),R0 bra L10008 L10006:move #16384,R0 L10008:move R0,$fffffffc(R14) *line 227 *line 228 move.l R13,(sp) move $fffffffc(R14),R0 and.l #$ffff,R0 move.l R0,-(sp) move $fffffffe(R14),-(sp) move #63,-(sp) jsr _gemdos addq.l #8,sp move $fffffffc(R14),R8 cmp.l R8,R0 beq L135 *line 228 move.l $a(R14),(sp) move.l #L136,-(sp) jsr _pexit addq.l #4,sp L135: *line 229 move $fffffffc(R14),R0 sub R0,$fffffff4(R14) *line 230 add $fffffffc(R14),R13 L134: *line 231 tst $fffffff4(R14) bne L133 L132: *line 232 *line 233 clr (sp) move $fffffffe(R14),-(sp) move.l $fffffff0(R14),-(sp) move #66,-(sp) jsr _gemdos addq.l #8,sp tst.l r0 bge L137 *line 233 move.l $a(R14),(sp) move.l #L138,-(sp) jsr _pexit addq.l #4,sp L137: *line 234 move.l $ffffffe4(R14),R13 *line 235 lea $fffffbe4(R14),R12 *line 236 move.l R12,(sp) move.l #$400,-(sp) move $fffffffe(R14),-(sp) move #63,-(sp) jsr _gemdos addq.l #8,sp move R0,R6 *line 237 *line 238 cmp #4,R6 bge L139 *line 238 move.l $a(R14),(sp) move.l #L140,-(sp) jsr _pexit addq.l #4,sp L139: *line 239 *line 239 tst.l (R12) beq L141 *line 240 add.l (R12),R13 *line 241 sub #4,R6 *line 242 add.l #4,R12 L144: *line 243 *line 244 *line 245 cmp.l $ffffffe4(R14),R13 blo L10009 move $fffffff6(R14),R0 andi.l #$ffff,R0 add.l $ffffffe4(R14),R0 cmp.l R0,R13 blo L145 L10009:*line 245 move.l $a(R14),(sp) move.l #L146,-(sp) jsr _pexit addq.l #4,sp L145: *line 246 move.l R13,(sp) move.l #L147,-(sp) move.l R14,-(sp) add.l #-1088,(sp) jsr _getstruc addq.l #8,sp *line 247 *line 248 move.l $ffffffec(R14),R0 add.l R0,$fffffbc0(R14) *line 249 move.l R13,(sp) move.l #L148,-(sp) move.l R14,-(sp) add.l #-1088,(sp) jsr _putstruc addq.l #8,sp L151: *line 250 *line 251 *line 251 sub #1,R6 bge L152 *line 252 lea $fffffbe4(R14),R12 *line 253 move.l R12,(sp) move.l #$400,-(sp) move $fffffffe(R14),-(sp) move #63,-(sp) jsr _gemdos addq.l #8,sp move R0,R6 *line 254 *line 255 sub #1,R6 bge L153 *line 255 move.l $a(R14),(sp) move.l #L154,-(sp) jsr _pexit addq.l #4,sp L153: *line 256 L152: *line 257 move.b (R12)+,R7 ext.w R7 and #255,R7 *line 258 *line 259 cmp #1,R7 bne L149 *line 260 add.l #254,R13 L150: bra L151 L149: *line 261 *line 262 *line 263 tst R7 beq L142 *line 264 *line 265 btst #0,R7 beq L155 *line 265 move.l $a(R14),(sp) move.l #L156,-(sp) jsr _pexit addq.l #4,sp L155: *line 266 add R7,R13 L143: bra L144 L142: *line 267 *line 268 L141: *line 269 move.l $fffffbcc(R14),R0 add.l $fffffbd0(R14),R0 move R0,$fffffff6(R14) *line 270 move.l $ffffffe4(R14),R13 *line 271 bra L159 L158: *line 272 cmp #512,$fffffff6(R14) bcc L10010 move $fffffff6(R14),R0 bra L10012 L10010:move #512,R0 L10012:move R0,$fffffffc(R14) *line 273 move $fffffffc(R14),(sp) move.l R13,-(sp) jsr _wr_out addq.l #4,sp *line 274 move $fffffffc(R14),R0 sub R0,$fffffff6(R14) *line 275 add $fffffffc(R14),R13 L159: *line 276 tst $fffffff6(R14) bne L158 L157: *line 279 clr R6 move R6,$fffffff4(R14) *line 280 bra L162 L161: *line 281 cmp.l #$200,$fffffbd4(R14) bge L10013 move.l $fffffbd4(R14),R0 bra L10015 L10013:move.l #$200,R0 L10015:move R0,$fffffffc(R14) *line 282 *line 283 move #512,R0 sub _buf_byte,R0 cmp $fffffffc(R14),R0 bge L163 *line 283 move #512,R0 sub _buf_byte,R0 move R0,$fffffffc(R14) L163: *line 284 *line 285 cmp #512,$fffffffc(R14) beq L164 *line 285 move $fffffffc(R14),(sp) move.l #_zero,-(sp) jsr _wr_out addq.l #4,sp bra L165 L164: *line 286 *line 287 tst $fffffff4(R14) bne L166 *line 287 move _cur_sect,$fffffff4(R14) *line 288 bra L167 L166: *line 289 add #1,R6 L167: L165: *line 290 move $fffffffc(R14),R0 ext.l R0 sub.l R0,$fffffbd4(R14) L162: *line 291 tst.l $fffffbd4(R14) bne L161 L160: *line 292 *line 292 tst $fffffff4(R14) beq L168 *line 293 move R6,R0 add #1,R0 move $8(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move R0,14(R9) *line 294 move $fffffff4(R14),R0 move $8(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move 12(R9),R1 sub R1,R0 move $8(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move R0,12(R9) bra L169 L168: *line 295 *line 296 move $8(R14),R0 ext.l R0 asl.l #4,R0 add.l #_sizes,R0 move.l R0,R8 clr 14(R8) *line 297 move _cur_sect,R0 move $8(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move 12(R9),R1 sub R1,R0 move $8(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move R0,12(R9) L169: *line 299 move.l $ffffffe4(R14),(sp) move #73,-(sp) jsr _gemdos addq.l #2,sp *line 300 move $fffffffe(R14),(sp) move #62,-(sp) jsr _gemdos addq.l #2,sp L122: tst.l (sp)+ movem.l (sp)+,R6-R7/R12-R13 unlk R14 rts .globl _read_hea .text _read_hea: ~~read_hea: ~fd=8 ~exec=10 ~file_nam=14 ~_EnD__=18 link R14,#-36 ~hbuf=-32 *line 312 *line 313 move.l R14,(sp) add.l #-32,(sp) move.l #$20,-(sp) move $8(R14),-(sp) move #63,-(sp) jsr _gemdos addq.l #8,sp cmp #32,R0 beq L171 *line 313 move.l $e(R14),(sp) move.l #L172,-(sp) jsr _pexit addq.l #4,sp *line 314 *line 315 L171: *line 316 move.l R14,(sp) add.l #-32,(sp) move.l #L173,-(sp) move.l $a(R14),-(sp) jsr _getstruc addq.l #8,sp *line 318 *line 319 move.l $a(R14),R8 move.l (R8),R0 cmp.l #$4100301,R0 beq L174 *line 319 move.l $e(R14),(sp) move.l #L175,-(sp) jsr _pexit addq.l #4,sp L174: *line 320 *line 321 move.l $a(R14),R8 tst.l 20(R8) beq L176 *line 321 move.l $e(R14),(sp) move.l #L177,-(sp) jsr _pexit addq.l #4,sp L176: L170: unlk R14 rts .globl _wr_out .text _wr_out: ~~wr_out: ~buffer=8 ~bytes=12  {  B ,#-  ( ), ~  B#, ~   ~,( h)  #H,-( h)   #, h   ~,( ) d ( ) $ * ( ~ .* @  * .( ), ~ .2 @ @ z6  8  {: $ B: ,#- & ># ,( h)' D ) J#-,( h) * N#L,-( h)+ R , X#, h.  zZ / \1 {^ 6 B^ ,#- 9 b# ,( ): h 2 < l# ,( h)= p @ 2 v( ),( h) A z#,-( h)B ~ C #, hE H z F H { N B ,#- P # ,( h) Q  ,-( h) R # ,( h) S ( ),-( h)T  U #, hW  z X Y {c B ,#d  ~- @/ - ,-( h) f ( ),  h  ( ), @ j ( ), * n , ( ), r   @, s  t \ *, u T y d z  |  *,   #0,  #9,  `  #,     ,-( )   @, ~ X#, ~  *, ~  ~, @   ,  , ~ # , ~  , ~  ~,   B ( )+,( )+ X #,   B n  , ~ .   d ( h)+  ( h)+, - @/ -  z   { B ,#  ~- @/ - ,-( h)  ( ),     ( ), @  $( ), *  ,( ( ),   , *, ~ B.#, ~  4 ~,-( h)  6 @,-( h) 8  >#, h @ ~,  B#0,  F#9,  `J  N#,    P ,-( )  R *, ~ BT#, ~  Z ~,-( h)  \ @,-( h) ^  d#, h f ~, @ h   j , ~ l# , ~ r , ~ t ~,    v( )+,( )+ & x#,  z  < | , ~ .~ R R d( h)+ ( h)+, - @/ -  z   {  B ,#-  ~- @/ - ,-( h)  ( ),    ( ),    ,( ),   ,( ), V   V,|( ) .  6  @,-( h)  ( ), V ( V) #, h !  ( )+, @"  @#  L$ #%, @%  6) b d @*  x, z( ) / #-,( )0  2 #,  4 #,z( ) 8  # ,x( ) ; #0,( )<  > #,  @ #0,x( )D    G  ( )+, @H  @K #0, @L  M #9, @N  P #0, @Q .  U  #*, @V  X ( )+, @Z . \  . (a  "# , c & @, e > .( i ( * ~k , ~n .#., @o 2 T s j 6( )+, @t 8 @w :#0, @x > y B#9, @z F | J#0, @} .N   R#*, @ V  Z( )+, @ .\   .`   d# , ~ h @, ~ j#, ~  .l j T nv( ) r#l, @ v  z#L, @ ~    #,v( ) d( )  0  ( )+, @  @   @, ~ . F  \ #,v( ) r #, @ .   #,v( )  # , @ .   #,v( )  #, @  dv( )    @,( h)  ( )+,-( h)   ,-( h)   #, h  ~,  .    @,( h)  ( )+,-( h)   ,-( h)   #, h  ~,  .  " #,v( ) 8 dv( )  N  ( )+,r( )  d  #-,( )+  r( ), ~ ` ~   ~,r( )   d # ,( h)   r( ),-( h)     ,-( h)    #, h  ~,  .  N ( )+, *  z   #-,( )+ $ *, ~ `& ~ ( ~, * # z *# ,( h) $ . *,-( h) % 0 ,-( h)& 2 ' 8#, h( : ~, ) .< 3  @# ,x( ) 5 F#?,( )+6 .J <  N# ,x( ) ? T( )+, @@ V B Z @,( )+D  .\ I  `# ,x( ) L f( )+,|( )M j  O n# *,|( )S  dv ~T x @V |#, ~ Y @ |( ), Z . V^  #, a V d( )b  c #, ~d  lg  . l   @,( )+m . o . q F  ~r # , Vs # , ~ u  ( V)+, ~v  ~, w  ~_EnD__=14 link R14,#-6 movem.l R7-R7/R12-R13,-(sp) ~room=-2 ~count=-4 ~count1=-6 ~p=R13 ~q=R12 *line 339 move #512,R0 sub _buf_byte,R0 move R0,$fffffffe(R14) *line 340 move $c(R14),R0 cmp $fffffffe(R14),R0 bgt L10016 move $c(R14),R0 bra L10018 L10016:move $fffffffe(R14),R0 L10018:move R0,$fffffffc(R14) *line 341 move $fffffffc(R14),$fffffffa(R14) *line 342 move _buf_byte,R13 add.l #_buf,R13 *line 343 move.l $8(R14),R12 *line 344 bra L181 L180: *line 344 move.b (R12)+,(R13)+ L181: *line 344 move $fffffffc(R14),R0 sub #1,$fffffffc(R14) tst r0 bne L180 L179: *line 347 move $fffffffa(R14),R0 add R0,_buf_byte *line 348 *line 348 cmp #512,_buf_byte bne L182 *line 349 *line 350 move.l #_buf,(sp) move _cur_sect,-(sp) jsr _write_bl addq.l #2,sp *line 351 jsr _clear_bu *line 352 *line 353 *line 354 L182: *line 355 *line 355 move $fffffffa(R14),R0 cmp $c(R14),R0 beq L178 *line 356 move $fffffffa(R14),R0 sub R0,$c(R14) *line 357 move $c(R14),_buf_byte ` tNV0..?<HNT-@JlB` .`N^NuNV.zN>?<LNTN^NuNV n f > N^>?<NTN^NuNV.^/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -||JDf8<&n|`RJgSDl`"``H |r W h4N |<FlBEJnzf0D@:JEl@ n| -*line 358 move.l #_buf,R13 *line 359 bra L185 L184: *line 359 move.b (R12)+,(R13)+ L185: *line 359 move $c(R14),R0 sub #1,$c(R14) tst r0 bne L184 L183: L178: tst.l (sp)+ movem.l (sp)+,R12-R13 unlk R14 rts .globl _flush .text _flush: ~~flush: ~_EnD__=8 link R14,#-4 *line 365 *line 365 tst _buf_byte beq L186 *line 366 move.l #_buf,(sp) move _cur_sect,-(sp) jsr _write_bl addq.l #2,sp *line 367 jsr _clear_bu L186: unlk R14 rts .globl _clear_bu .text _clear_bu: ~~clear_bu: ~_EnD__=8 link R14,#0 movem.l R7-R7/R13-R13,-(sp) ~p=R13 *line 375 move.l #_buf,R13 bra L190 L191: *line 375 clr.b (R13) L189: *line 375 add.l #1,R13 L190: *line 375 cmp.l #$200+_buf,R13 blo L191 L188: *line 376 clr _buf_byte *line 377 add #1,_cur_sect L187: tst.l (sp)+ movem.l (sp)+,R13-R13 unlk R14 rts .globl _patch1 .text _patch1: ~~patch1: ~all_size=8 ~_EnD__=12 link R14,#-526 movem.l R7-R7/R13-R13,-(sp) ~menu_org=-4 ~cs=-6 ~sectrs=-8 ~ip=-10 *line 392 clr $fff$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNVH no n #pBW/9p?<=N\>l.p/<NX./<??<?NP8|g>?</<N\-| nJhf n0("n2)Ag.p/<NX n0(r #.?<HNT*@ n.N(MBD`dp ./??<?NP,g.//<NP n2A|H00*p `B SJfRD n2A|H00*Jf~>/<r/ NJPB?< NTN4-M/ / nNPJL0N^NuNV-|t nNN^NuNVH *n(n >.`SGlJL0N^NuNVH*n(n X.X&|`ݷm`ݻe-G nNJL8N^NuNV>?.?.?.?.?. /.N.N>?<LNTN^NuDOUXcdefgosuxN@@@`|NuAbort (null)minix.imgcannot open %sread block 0 failed (ask %d, ret %d)%s: wrong fo4( V), Vx ( V)y {{  |(D| |(O} |(U~ |( X |(c |(d |(e |(f |( g |($o |((s |(,u |(0x |(4 |(8 " |(<  |(@  |(D \ |(H  |(L 8 |(P  |(T  |(X  |(\  |(`  |(d  |(h r |(l  {   , ~  |( ), ~  ~, *  *,       dz( )    , ~ ` ~  ~,   d   2  |( ), V  #-,( V)  H  #0,x( )  H  |( ), V  ( V), ~  ~   ~,-( h)  ( ), V ( V) #rmatmalloc failed read failed (ask %ld, ret %ld) _size_blk0lremuldivu_gemdos_myalloc~~myallo~siz~_EnD__ ~nL2.L16_abort:~~abort:~_EnD__L4z_printfL3Z__outc^~~_outc^~c~_EnD__ L6vL5~~printf~f~a ~_EnD____doprntL7_itoa~~itoa~p ~p~num~num ~radix~radix~_EnD__~i~q L12L13L14L11L10L17L16L15L9 _ltoa~~ltoa~p ~p~num~num ~radix~radix~_EnD__~i~q L22,L23PL21RL20jL26vL25xL24|L19~~_doprn~fmt ~fmt~args ~args ~outc~_EnD__~buf~p ~s|~c~i~width~ndigit~ndfnd~ljustz~zfillx~lflagv~lrL30L33L32L10000L31L27RL34L35L38L39L40"L41L42"L36*L37(L43nL466L47RL48dL49`L50dL44nL45lL10001L51L52L54L55L56L57L58L59L60L61L62L53L63L64L65L66L67*L68@L69@L70@L71NL72\L73`L74vL75L76L79L80L78L10002L77L81L82L83L84L85L86L87 L90 L89L88L934L92L918L96JL95  ~? n#, ~@ ( V, ~ ),( h) A ( ),-( h)B  C #, h F  #,( ) I  #,( )J  M   O # ,( h)P  R  ,( h) S  ,-( h) T # &,-( h)U  V #, h X  ,( h) Y # <,-( h)Z  [  #, h ]   ,( h)^  R`  hb  ~d $( h) e &#L,-( h)f * g 0#, hi  z2 j 4l {6 q B6 ,#-w :( h) x <( ),-( h) y @#=,-( h)z D { J#, h | L ~,( )} P .  T( ),( h)  X# D,-( h) ^ J d#, h  Z f ,( h)  h#-,( h)  n#,-( h)  t( ),-( h)  x#?,-( h) fffff6(R14) ~cbuf=-522 *line 395 *line 395 move.l #$100,-(sp) move.l _cum_size,-(sp) jsr lrem addq.l #8,sp tst.l r0 beq L193 *line 395 move.l #L195,(sp) move.l #L194,-(sp) jsr _pexit addq.l #4,sp L193: *line 396 move.l _cum_size,$fffffffc(R14) *line 397 move.l $fffffffc(R14),R0 asr.l #$8,R0 move R0,$fffffffa(R14) *line 400 move.l $8(R14),R0 add.l #$1ff,R0 divs #512,R0 ext.l R0 move R0,$fffffff8(R14) *line 402 move.l R14,(sp) add.l #-522,(sp) clr -(sp) jsr _read_blo addq.l #2,sp *line 403 move.l R14,(sp) add.l #-18,(sp) move.l #L196,-(sp) move.l R14,-(sp) sub.l #8,(sp) jsr _putstruc addq.l #8,sp *line 404 move.l R14,(sp) add.l #-16,(sp) move.l #L197,-(sp) move.l R14,-(sp) sub.l #6,(sp) jsr _putstruc addq.l #8,sp *line 405 move.l R14,(sp) add.l #-14,(sp) move.l #L198,-(sp) move.l R14,-(sp) add.l #-10,(sp) jsr _putstruc addq.l #8,sp *line 406 move.l R14,(sp) add.l #-12,(sp) move.l #L199,-(sp) move.l R14,-(sp) sub.l #6,(sp) jsr _putstruc addq.l #8,s|  #, h   ~,( ) d( )  p  ( ),( h)  # ,-( h)  J #, h p d( ) `  ( ),( h)   ,-( h)  #-,( h)   #, h  d( )  Z    ( ),( h)  #>,-( h)   #, h  z   {  B ,#-@  - @/ - ,-( h) ( h)   ( ),-( h)  #=,-( h)   #, h   ~,( )    ( ),( h)  # ,-( h)   J #, h    ( ),( h)   ,-( h)  #-<,( h)  ( ),-( h) "  (#, h  * ,( )  2( ), ~  6( ), ~  :( ), ~ ># , ~  D ~,( )  H( ), ~  L( ), ~  P( ), ~  T ~,( )  X#,-( h)  ^( ),-( h) b  h#, h  j ~,( ) dn( ) `r 0 v#, ~  z( ), ~ .~ F 0  ~  F  ~,( )  ( ), ~  ~   ~,( )  ( ), ~  ~   ~,( )   #,( )   \  ( ), ~  ~,  \ ( ), ~  ~,  ( ), ~  ~ n#, ~ # , ~  ~, V  ( ),( V)  ( ), ~  ~ n#, ~ # , ~   ~, V ! ( ),( V) # ( ), ~$  ~% n#, ~& # , ~'  ~, V ( ( ),( V) * ( ), ~+  ~, n#, ~- # , ~.  ~, V /   f, ( V) 2 #,( )3  r 8 ( ),( h) 9  ( ),-( h) : $( ),-( h) ; (( ),-( h) < ,( ),-( h) = 0( ), V> 4 V, V? 6 V, V@ 8# , ~A >( V, ~ ),-( h) B B# ,-( h)C H D N#, h _ r T( ), ~ ` X( ), ~ a \ ~,( ) d `( ), ~e Xd#, ~ f j( ), ~ g n( ), ~h r ~, ~i t k x ( ),( h) l |# ,-( h)m  Jn #, h q  ( ),( h)r  s  ~,( )v d( )w  y  ( ),( h) z # ,-( h){  J| #, h   ( ),   ( ),( ) .   #@,( )  "  ( ), ~ . 8 " #@, ~  8  ~,( )   ,( h)  ( ), ~ B#, ~   ~,-( h)  ( ),-( h)  #?,-( h)   #, h  ( ), V  V, ~  N   ( ),( h)  # d,-( h)   J #, h  N ( ), ~   ~,( )  ( ),   d ( ) $  z &( h)  (( ),-( h)  ,( ),-( h)  0#B,-( h) 4  :#, h d<  >  p *line 408 *line 409 clr $fffffdf2(R14) bra L202 L203: *line 410 move $fffffdf2(R14),R0 asl #2,R0 ext.l R0 add.l R14,R0 move.l R0,(sp) add.l #-42,(sp) move.l #L204,-(sp) move $fffffdf2(R14),R0 ext.l R0 asl.l #4,R0 add.l #_sizes,R0 move.l R0,-(sp) add.l #12,(sp) jsr _putstruc addq.l #8,sp *line 411 move $fffffdf2(R14),R0 asl #2,R0 ext.l R0 add.l R14,R0 move.l R0,(sp) add.l #-40,(sp) move.l #L205,-(sp) move $fffffdf2(R14),R0 ext.l R0 asl.l #4,R0 add.l #_sizes,R0 move.l R0,-(sp) add.l #14,(sp) jsr _putstruc addq.l #8,sp L201: *line 409 add #1,$fffffdf2(R14) L202: *line 409 cmp #5,$fffffdf2(R14) blt L203 L200: *line 412 *line 413 clr R0 move.b R0,$ffffffeb(R14) ext.w R0 move.b R0,$ffffffea(R14) *line 414 clr $fffffdf4(R14) *line 415 lea $fffffdf6(R14),R13 bra L208 L209: *line 416 move.l R13,(sp) move.l #L210,-(sp) move.l R14,-(sp) add.l #-526,(sp) jsr _getstruc addq.l #8,sp *line 417 move $fffffdf2(R14),R0 add R0,$fffffdf4(R14) L207: *line 415 B ( ),( h)  F# ,-( h) L J R#, h   T( ),   ,X( ),   \ ,( h)  ^#,-( h)  d( ),-( h)  h#?,-( h) l  r#, h t ~, * v#, * z  ~ ( ),( h)  # ,-( h)  J #, h  d( )   ( ),  #, * #,    ( ),  v   ( ), ~ X#, ~  ( ), ~  ~,  v *    ( ),( h)  # @,-( h)  J #, h  *  ,( h)  # V,-( h)   ,-( h)  #-@,( h)  l #, h  ( ), ~   ~,( )   ,( h)  # ,-( h)   ,-( h)  #-@,( h)    #, h   #, *    , ( ),     ,( h)   #,-( h)   ( ),-( h)   #?,-( h)       "#, h   $ ~, *  &#, *  (   , ( ),( h)   0# ,-( h)  6 J  <#, h    >( )+, @  @ @ B B#, @  F#, @  J !  N#, #  . T (  d V @)  X 2,  \#, @-  ` H /  d ( ),( h) 0  h# ^,-( h)1  n J2  t#, h5 H  v @, 7 t . x =   |( ), ~ >  ( ), ~ ?   ~,( ) A  ( ), C .  Š F    #,( )G   ¶ H  ( ), ~I .  J ¶  #, ~ K    ~,( ) M  ( ),( h) N   ,-( h)O   P  #, h R  ( ), ~ S   ~,( ) U  ( ), X Š d ( )Y    \    * ]   *,( )_ .  b   #,( )c   $ d  ( ), ~e .  :f $  #, ~ g :   ~,( )j  #, ~k   |, ~ l  ( ), ~m   Po  #, ~p   |, ~ q   ~,( ) u P  #,( )v   f x  ( ),( h) y  # ,-( h)z  & {  ,#, h| . . | f d 2( )  6 Ò   : f,( ) . B è Ò  F#, *  |  H( ), ~  L ~   N ~,( )  d R( )  V  þ d Z( )  ^   b *, ~  d#, ~   f( ), ~  j ~ n l#, ~  n# , ~  t ~, l   v ~,( l)   z( ), ~   ~( ), ~   ~ n #, ~  # , ~   ~, l    ( l), ~   ~, ~   ( ), ~   ~ n #, ~  # , ~   ~, l    ~, ( l) .     ( ), ~   ~ n #, ~  # , ~   ~, V  ( V)   f, ~   ( ), ~   ~ n #, ~  # , ~   ~, l    ( l), ~   ~, ~   ( ), ~   ~ n #, ~  # , ~   ~, l    ~, ( l)    ( ),( h)   #I,-( h)     #, h   ( ),( h)   #>,-( h)     #, h  d ( h)+  ( h)+, *- @/ -  z     {   B  ,#-$    ,( h)   #- ,( h)   &# ,-( h)   ,( ),-( h)   0#?,-( h)  4   :#, h  <# , ~  @ Ě   D( ),( h)   H# İ,-( h)  N J  T#, h  Ě  V ,( h)   X#- ,( h)   ^# ,-( h)   d ( ),-( h)  h l  n#, h   p ( ), V   t( V), ~  v#, ~  |   ( ),( h)   # ,-( h)   J  #, h      ( ), V  d ( V)       ( ),( h)   # ,-( h)   J  #, h 4 z     {  B  ,#-   @- @/ - ,-( h)&  #, ~'   |, ~ (   ~,( ) *   ( ), ~ +  ( ), ~,    -   ( ), ~. .  & /   ( ), ~ 0 &   ~,( ) 2  ( ),( )4   |, 5  # ,  7  ( ), 9 .  < < R  ( )+,( )+ ? <  ( ), ~ @  #,( )A d  B   R E h  ( ), ~F   ~, |I  #, |J   ~ M  $# ,( h) N  * f,-( h)O  0 ƔP  6#, hR  8 ƪ Y ~  >( ), ~ Z  B ( ), ~[  F ]  J( ), ~ ^  N ~, ( ) `  R ( ), |b  Z# , d . ` g   d( )+,( )+ j   f ( ), ~ k  j#, ( )l d n m  p p  d r( h)+ q  t( h)+, - r z x s  zu { | y B | ,#-| d  |}   D   # ,( h)    f,-( h)   Ɣ  #, h   ƪ D z     {  B  ,#   @- @/ - ,-( h)  # ,  .  ǜ Dz  ( )   #,   ǜ  #+ ,  v  Dz    |  #, f  d ( h)+   ( h)+, -  z     {  B  ,#-   @- @/ - ,-( h)  ( )   #,-( h)    ,-( h)     #, h d     Ⱥ   # ,( h)   # ,-( h)   J  #, h  Ⱥ   ,( )   ( ), ~  "#, ~   $ ~,( )   (( ), ~  ,#, ~ \ 2#, ~  6 ~   8 ~,( )   < ,( h)   >#- ,( h)  D-( h)  F   L#, h   N ,( h)   P#-,( h)   V# ,-( h)   \ ,-( h)   ^#,( h)  `   f#, h   h ,( h)   j#-,( h)   p# (,-( h)   v ,-( h)   x#,( h)  z   #, h    ,( h)   #-,( h)   # >,-( h)    ,-( h)   #- ,( h)     #, h    ,( h)   #- ,( h)   # T,-( h)    ,-( h)   #,( h)     #, h  ( ) .  j  ɀ  ( ), ~ n #, ~   ~   , ~    ~,( h)   #-*,( h)   # ɖ,-( h)   ( ), ~   ~ n #, ~  # , ~    ~,-( h)   # ,( h)       #, h    ( ), ~  n #, ~   ~  , ~   ~,( h)  #-(,( h)   # ɬ,-( h)  ( ), ~  ~ n#, ~ # , ~   ~,-( h)   #,( h) &  ,#, h   .#,( )   j 2#,( )! 8 ɀ%  : ~ & < ~,( )' @ ~ ( B ~,( )* F( ) , ,J( ), - .N 0  R ,( h) 1 T# ,-( h) 2 Z ,-( h) 3 \#-,( h)4 b l5 h#, h 7 j( ), ~ 8 n ~,( ); 0 r#, >  t , ~ ? v#- , ~@ | ~, A v~  E F  ,( h) F #-,( h) G # \,-( h) H  ,-( h) I #-,( h)J  lK #, h M ( ), ~ N  ~,( ) P #4,( ) R  ,( h) S #-,( h) T # r,-( h) U  ,-( h) V #-,( h)W  X #, h Z add.l #2,R13 L208: *line 415 move.l R14,R0 add.l #-10,R0 cmp.l R0,R13 blo L209 L206: *line 418 *line 419 move.l R14,(sp) add.l #-20,(sp) move.l #L211,-(sp) move.l R14,-(sp) add.l #-526,(sp) jsr _getstruc addq.l #8,sp *line 420 move $fffffdf4(R14),R0 sub R0,$fffffdf2(R14) *line 421 add #4660,$fffffdf2(R14) *line 422 move.l R14,(sp) add.l #-20,(sp) move.l #L212,-(sp) move.l R14,-(sp) add.l #-526,(sp) jsr _putstruc addq.l #8,sp *line 425 move.l R14,(sp) add.l #-522,(sp) clr -(sp) jsr _write_bl addq.l #2,sp L192: tst.l (sp)+ movem.l (sp)+,R13-R13 unlk R14 rts .globl _patch2 .text _patch2: ~~patch2: ~_EnD__=8 link R14,#-14 ~i=-2 ~text_cli=-4 ~data_cli=-6 ~data_off=-10 *line 443 move.l _sizes,R0 add.l #$200,R0 move.l R0,$fffffff6(R14) *line 444 move.l $fffffff6(R14),(sp) jsr _get_word move R0,$fffffffe(R14) *line 445 *line 446 cmp #21103,$fffffffe(R14) beq L214 *line 446 move.l #L216,(sp) move.l #L215,-(sp) jsr _pexit addq.l #4,sp *line 447 L214: *line 448 clr $fffffffe(R14) bra L219 L220: *line 449 clr $fffffffc(R14) *line 450 *line 451 *line 452 *line 453 *line 454 *line 455 move $fffffffe(R14),R0 ext.l R0 asl.l #4,R0 move.l R0,R8 move.l #_sizes,R1 move.l $0(R8,R1.l),R0 move $fffffffe(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move.l 4(R9),R1 add.l R1,R0 move $fffffffe(R14),R1 ext.l R1 asl.l #4,R1 add.l #_sizes,R1 move.l R1,R9 move.l 8(R9),R1 add.l R1,R0 asr.l #$8,R0 move R0,$fffffffa(R14) *line 456 move $fffffffc(R14),(sp) move $fffffffe(R14),R0 asl #2,R0 ext.l R0 add.l $fffffff6(R14),R0 move.l R0,-(sp) jsr _put_word addq.l #4,sp *line 457 move $fffffffa(R14),(sp) move $fffffffe(R14),R0 asl #2,R0 ext.l R0 add.l $fffffff6(R14),R0 move.l R0,-(sp) add.l #$2,(sp) jsr _put_word addq.l #4,sp L218: *line 448 add #1,$fffffffe(R14) L219: *line 448 cmp #4,$fffffffe(R14) blt L220 L217: L213: unlk R14 rts .globl _patch3 .text _patch3: ~~patch3: ~_EnD__=8 link R14,#-36 ~mag=-2 ~w0=-4 ~w1=-6 ~w2=-8 ~init_tex=-12 ~init_dat=-16 ~init_org=-20 ~fs_org=-24 ~fbase=-28 ~mm_data=-32 *line 471 clr.l $ffffffec(R14) *line 472 move.l _sizes,R0 add.l $4+_sizes,R0 add.l $8+_sizes,R0 add.l R0,$ffffffec(R14) *line 473 move.l $ffffffec(R14),R0 add.l #$200,R0 move.l R0,$ffffffe0(R14) *line 474 move.l $10+_sizes,R0 add.l R0,$ffffffe0(R14) *line 475 move $e+_sizes,R0 move #9,R1 asl R1,R0 ext.l R0 sub.l R0,$ffffffe0(R14) *line 476 move.l $10+_sizes,R0 add.l $14+_sizes,R0 add.l $18+_sizes,R0 add.l R0,$ffffffec(R14) *line 477 move.l $ffffffec(R14),R0 add.l #$200,R0 move.l R0,$ffffffe8(R14) *line 478 move.l $20+_sizes,R0 add.l R0,$ffffffe8(R14) *line 479 move $e+_sizes,R0 add $1e+_sizes,R0 move #9,R1 asl R1,R0 ext.l R0 sub.l R0,$ffffffe8(R14) *line 480 move.l $20+_sizes,R0 add.l $24+_sizes,R0 add.l $28+_sizes,R0 add.l R0,$ffffffec(R14) *line 481 move.l $30+_sizes,$fffffff4(R14) *line 482 move.l $34+_sizes,R0 add.l $38+_sizes,R0 move.l R0,$fffffff0(R14) *line 483 move.l $ffffffec(R14),R0 asr.l #$8,R0 move.l R0,$ffffffec(R14) *line 484 move.l $fffffff4(R14),R0 add.l R0,$fffffff0(R14) *line 485 clr.l $fffffff4(R14) *line 486 move.l $fffffff4(R14),R0 asr.l #$8,R0 move.l R0,$fffffff4(R14) *line 487 move.l $fffffff0(R14),R0 asr.l #$8,R0 move.l R0,$fffffff0(R14) *line 489 move.l $ffffffec(R14),R0 move R0,$fffffffc(R14) *line 490 move.l $fffffff4(R14),R0 move R0,$fffffffa(R14) *line 491 move.l $fffffff0(R14),R0 move R0,$fffffff8(R14) *line 494 move.l $ffffffe8(R14),$ffffffe4(R14) *line 495 move.l $ffffffe0(R14),(sp) jsr _get_word move R0,$fffffffe(R14) *line 496 *line 496 cmp #-9510,$fffffffe(R14) beq L222 *line 496 move.l #L224,(sp) move.l #L223,-(sp) jsr _pexit addq.l #4,sp L222: *line 497 move.l $ffffffe4(R14),(sp) jsr _get_word move R0,$fffffffe(R14) *line 498 *line 498 cmp #-9510,$fffffffe(R14) beq L225 *line 498 move.l #L227,(sp) move.l #L226,-(sp) jsr _pexit addq.l #4,sp *line 499 L225: *line 500 move $fffffffc(R14),(sp) move.l $ffffffe4(R14),-(sp) add.l #$4,(sp) jsr _put_word addq.l #4,sp *line 501 move $fffffffa(R14),(sp) move.l $ffffffe4(R14),-(sp) add.l #$6,(sp) jsr _put_word addq.l #4,sp *line 502 move $fffffff8(R14),(sp) move.l $ffffffe4(R14),-(sp) add.l #$8,(sp) jsr _put_word addq.l #4,sp L221: unlk R14 rts .globl _get_word .text _get_word: ~~get_word: ~offset=8 ~_EnD__=12 link R14,#-518 ~buff=-512 ~b2=-514 *line 514 move.l R14,(sp) add.l #-512,(sp) move.l #$200,-(sp) move.l $8(R14),-(sp) jsr ldiv addq.l #8,sp move R0,-(sp) jsr _read_blo addq.l #2,sp *line 515 move.l #$200,-(sp) move.l $8(R14),-(sp) jsr lrem addq.l #8,sp add.l R14,R0 move.l R0,(sp) add.l #-512,(sp) move.l #L229,-(sp) move.l R14,-(sp) add.l #-514,(sp) jsr _getstruc addq.l #8,sp *line 516 move $fffffdfe(R14),R0 and #-1,R0 bra L228 L228: unlk R14 rts .globl _put_word .text _put_word: ~~put_word: ~offset=8 ~byte_val=12 ~_EnD__=14 link R14,#-518 ~buff=-512 ~b2=-514 *line 530 move $c(R14),$fffffdfe(R14) *line 531 move.l R14,(sp) add.l #-512,(sp) move.l #$200,-(sp) move.l $8(R14),-(sp) jsr ldiv addq.l #8,sp move R0,-(sp) jsr _read_blo addq.l #2,sp *line 532 move.l #$200,-(sp) move.l $8(R14),-(sp) jsr lrem addq.l #8,sp add.l R14,R0 move.l R0,(sp) add.l #-512,(sp) move.l #L231,-(sp) move.l R14,-(sp) add.l #-514,(sp) jsr _putstruc addq.l #8,sp *line 533 move.l R14,(sp) add.l #-512,(sp) move.l #$200,-(sp) move.l $8(R14),-(sp) jsr ldiv addq.l #8,sp move R0,-(sp) jsr _write_bl addq.l #2,sp L230: unlk R14 rts .globl _pexit .text _pexit: ~~pexit: ~s1=8 ~s2=12 ~_EnD__=16 link R14,#-4 *line 540 move.l $c(R14),(sp) move.l $8(R14),-(sp) move.l #L233,-(sp) jsr _printf addq.l #8,sp *line 541 move #1,(sp) move #76,-(sp) jsr _gemdos addq.l #2,sp L232: unlk R14 rts .globl _getstruc .text _getstruc: ~~getstruc: ~ap=8 ~s=R13 ~s=12 ~b=R12 ~b=16 ~_EnD__=20 link R14,#0 movem.l R4-R7/R11-R13,-(sp) *line 5 move.l $c(R14),R13 *line 5 move.l $10(R14),R12 ~i=R7 ~l=R6 ~p=R11 *line 8 move.l $8(R14),R11 ~lsb=R5 *line 9 move #1,R5 ~a2=L235 .bss L235: `a2: .ds.b 4 .text ~a4=L236 .bss L236: `a4: .ds.b 6 .text *line 19 bra L239 L238: *line 20 move R7,R0 bra L241 L242: *line 21 *line 22 move.b (R12)+,(R11)+ bra L240 *line 23 L243: *line 24 *line 25 move.l #$2+L235,R0 sub.l #L235,R0 move R0,R7 sub #1,R7 *line 26 bra L246 L245: *line 27 add.l #1,R11 L246: *line 27 move.l R11,R0 sub.l $8(R14),R0 move R7,R1 ext.l R1 and.l R1,R0 bne L245 L244: *line 28 *line 28 tst R5 beq L247 *line 29 move.b $1(R12),R7 ext.w R7 and #255,R7 *line 30 asl #8,R7 *line 31 move.b (R12),R0 ext.w R0 and #255,R0 or R0,R7 bra L248 L247: *line 32 *line 33 move.b (R12),R7 ext.w R7 and #255,R7 *line 34 asl #8,R7 *line 35 move.b $1(R12),R0 ext.w R0 and #255,R0 or R0,R7 L248: *line 36 *line 37 move R7,(R11) *line 37 add.l #2,R11 *line 37 add.l #2,R12 bra L240 *line 38 L249: *line 39 *line 40 move.l #$2+L236,R0 sub.l #L236,R0 move R0,R7 sub #1,R7 *line 41 bra L252 L251: *line 42 add.l #1,R11 L252: *line 42 move.l R11,R0 sub.l $8(R14),R0 move R7,R1 ext.l R1 and.l R1,R0 bne L251 L250: *line 43 *line 43 tst R5 beq L253 *line 44 move.b $3(R12),R0 ext.w R0 and #255,R0 ext.l R0 move.l R0,R6 *line 45 asl.l #$8,R6 *line 46 move.b $2(R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 *line 47 asl.l #$8,R6 *line 48 move.b $1(R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 *line 49 asl.l #$8,R6 *line 50 move.b (R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 bra L254 L253: *line 51 *line 52 move.b (R12),R0 ext.w R0 and #255,R0 ext.l R0 move.l R0,R6 *line 53 asl.l #$8,R6 *line 54 move.b $1(R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 *line 55 asl.l #$8,R6 *line 56 move.b $2(R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 *line 57 asl.l #$8,R6 *line 58 move.b $3(R12),R0 ext.w R0 and #255,R0 ext.l R0 or.l R0,R6 L254: *line 59 *line 60 move.l R6,(R11) *line 60 add.l #4,R11 *line 60 add.l #4,R12 bra L240 *line 61 L255: *line 62 *line 63 move #1,R5 bra L240 L256: *line 64 *line 65 clr R5 bra L240 L257: *line 66 *line 67 jsr _abort bra L240 L241: ext.l R0 move.l #L258,R8 move #5,R1 L259: cmp.l (R8)+,R0 dbeq R1,L259 move.l 20(R8),R8 jmp (R8) .data L258: .dc.l $31 .dc.l $32 .dc.l $34 .dc.l $4c .dc.l $4d .dc.l $0 .dc.l L242 .dc.l L243 .dc.l L249 .dc.l L255 .dc.l L256 .dc.l L257 .text L240: *line 68 L239: *line 69 move.b (R13)+,R7 ext.w R7 bne L238 L237: L234: tst.l (sp)+ movem.l (sp)+,R5-R7/R11-R13 unlk R14 rts .globl _putstruc .text _putstruc: ~~putstruc: ~ap=8 ~s=R13 ~s=12 ~b=R12 ~b=16 ~_EnD__=20 link R14,#0 movem.l R4-R7/R11-R13,-(sp) *line 5 move.l $c(R14),R13 *line 5 move.l $10(R14),R12 ~i=R7 ~l=R6 ~p=R11 *line 8 move.l $8(R14),R11 ~lsb=R5 *line 9 move #1,R5 ~a2=L261 .bss L261: `a2: .ds.b 4 .text ~a4=L262 .bss L262: `a4: .ds.b 6 .text *line 19 bra L265 L264: *line 20 move R7,R0 bra L267 L268: *line 21 *line 22 move.b (R11)+,(R12)+ bra L266 *line 23 L269: *line 24 *line 25 move.l #$2+L261,R0 sub.l #L261,R0 move R0,R7 sub #1,R7 *line 26 bra L272 L271: *line 27 add.l #1,R11 L272: *line 27 move.l R11,R0 sub.l $8(R14),R0 move R7,R1 ext.l R1 and.l R1,R0 bne L271 L270: *line 28 move (R11),R7 *line 28 add.l #2,R11 *line 29 *line 29 tst R5 beq L273 *line 30 move R7,R0 ext.w R0 move.b R0,(R12) *line 31 asr #8,R7 *line 32 move R7,R0 ext.w R0 move.b R0,$1(R12) bra L274 L273: *line 33 *line 34 move R7,R0 ext.w R0 move.b R0,$1(R12) *line 35 asr #8,R7 *line 36 move R7,R0 ext.w R0 move.b R0,(R12) L274: *line 37 *line 38 add.l #2,R12 bra L266 L275: *line 39 *line 40 move.l #$2+L262,R0 sub.l #L262,R0 move R0,R7 sub #1,R7 *line 41 bra L278 L277: *line 42 add.l #1,R11 L278: *line 42 move.l R11,R0 sub.l $8(R14),R0 move R7,R1 ext.l R1 and.l R1,R0 bne L277 L276: *line 43 move.l (R11),R6 *line 43 add.l #4,R11 *line 44 *line 44 tst R5 beq L279 *line 45 move.l R6,R0 ext.w R0 move.b R0,(R12) *line 46 asr.l #$8,R6 *line 47 move.l R6,R0 ext.w R0 move.b R0,$1(R12) *line 48 asr.l #$8,R6 *line 49 move.l R6,R0 ext.w R0 move.b R0,$2(R12) *line 50 asr.l #$8,R6 *line 51 move.l R6,R0 ext.w R0 move.b R0,$3(R12) bra L280 L279: *line 52 *line 53 move.l R6,R0 ext.w R0 move.b R0,$3(R12) *line 54 asr.l #$8,R6 *line 55 move.l R6,R0 ext.w R0 move.b R0,$2(R12) *line 56 asr.l #$8,R6 *line 57 move.l R6,R0 ext.w R0 move.b R0,$1(R12) *line 58 asr.l #$8,R6 *line 59 move.l R6,R0 ext.w R0 move.b R0,(R12) L280: *line 60 *line 61 add.l #4,R12 bra L266 L281: *line 62 *line 63 move #1,R5 bra L266 L282: *line 64 *line 65 clr R5 bra L266 L283: *line 66 *line 67 jsr _abort bra L266 L267: ext.l R0 move.l #L284,R8 move #5,R1 L285: cmp.l (R8)+,R0 dbeq R1,L285 move.l 20(R8),R8 jmp (R8) .data L284: .dc.l $31 .dc.l $32 .dc.l $34 .dc.l $4c .dc.l $4d .dc.l $0 .dc.l L268 .dc.l L269 .dc.l L275 .dc.l L281 .dc.l L282 .dc.l L283 .text L266: *line 68 L265: *line 69 move.b (R13)+,R7 ext.w R7 bne L264 L263: L260: tst.l (sp)+ movem.l (sp)+,R5-R7/R11-R13 unlk R14 rts .globl _create_i .text _create_i: ~~create_i: ~f=8 ~_EnD__=12 link R14,#-4 *line 551 clr (sp) move.l $8(R14),-(sp) move #60,-(sp) jsr _gemdos addq.l #6,sp move R0,_image *line 552 move _image,(sp) move #62,-(sp) jsr _gemdos addq.l #2,sp *line 553 move #2,(sp) move.l $8(R14),-(sp) move #61,-(sp) jsr _gemdos addq.l #6,sp move R0,_image L286: unlk R14 rts .globl _read_blo .text _read_blo: ~~read_blo: ~blk=8 ~buff=10 ~_EnD__=14 link R14,#-4 *line 560 clr (sp) move _image,-(sp) move $8(R14),R0 ext.l R0 move.l #9,R1 asl.l R1,R0 move.l R0,-(sp) move #66,-(sp) jsr _gemdos addq.l #8,sp *line 561 *line 561 move.l $a(R14),(sp) move.l #$200,-(sp) move _image,-(sp) move #63,-(sp) jsr _gemdos addq.l #8,sp cmp #512,R0 beq L288 *line 561 move.l #L290,(sp) move.l #L289,-(sp) jsr _pexit addq.l #4,sp L288: L287: unlk R14 rts .globl _write_bl .text _write_bl: ~~write_bl: ~blk=8 ~buff=10 ~_EnD__=14 link R14,#-4 *line 568 clr (sp) move _image,-(sp) move $8(R14),R0 ext.l R0 move.l #9,R1 asl.l R1,R0 move.l R0,-(sp) move #66,-(sp) jsr _gemdos addq.l #8,sp *line 569 *line 569 move.l $a(R14),(sp) move.l #$200,-(sp) move _image,-(sp) move #64,-(sp) jsr _gemdos addq.l #8,sp cmp #512,R0 beq L292 *line 569 move.l #L294,(sp) move.l #L293,-(sp) jsr _pexit addq.l #4,sp L292: L291: unlk R14 rts .data L4: .dc.b $41,$62,$6f,$72,$74,$a,$0 L75: .dc.b $28,$6e,$75,$6c,$6c,$29,$0 L97: .dc.b $a,$6b,$65,$72,$6e,$65,$6c,$0 L98: .dc.b $6d,$6d,$20,$20,$20,$20,$0 L99: .dc.b $66,$73,$20,$20,$20,$20,$0 L100: .dc.b $69,$6e,$69,$74,$20,$20,$0 L101: .dc.b $6d,$65,$6e,$75,$20,$20,$0 L104: .dc.b $73,$65,$76,$65,$6e,$20,$66,$69,$6c,$65,$20,$6e,$61,$6d,$65,$73,$20,$65,$78,$70,$65,$63,$74 .dc.b $65,$64,$2e,$20,$0 L105: .dc.b $0 L110: .dc.b $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 .dc.b $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 .dc.b $20,$2d,$2d,$2d,$2d,$2d,$20,$20,$20,$20,$20,$2d,$2d,$2d,$2d,$2d,$a,$0 L111: .dc.b $4f,$70,$65,$72,$61,$74,$69,$6e,$67,$20,$73,$79,$73,$74,$65,$6d,$20,$73,$69,$7a,$65,$20,$20 .dc.b $25,$32,$39,$44,$20,$20,$20,$20,$20,$25,$35,$58,$a,$0 L112: .dc.b $a,$54,$6f,$74,$61,$6c,$20,$73,$69,$7a,$65,$20,$69,$6e,$63,$6c,$75,$64,$69,$6e,$67,$20,$6d .dc.b $65,$6e,$75,$20,$69,$73,$20,$25,$44,$2e,$a,$0 L115: .dc.b $63,$61,$6e,$27,$74,$20,$6f,$70,$65,$6e,$20,$0 L120: .dc.b $72,$65,$61,$64,$20,$65,$72,$72,$6f,$72,$20,$6f,$6e,$20,$66,$69,$6c,$65,$20,$0 L124: .dc.b $63,$61,$6e,$27,$74,$20,$6f,$70,$65,$6e,$20,$0 L127: .dc.b $25,$73,$20,$20,$74,$65,$78,$74,$3d,$25,$35,$44,$20,$20,$64,$61,$74,$61,$3d,$25,$35,$44,$20 .dc.b $20,$62,$73,$73,$3d,$25,$35,$44,$20,$20,$74,$6f,$74,$3d,$25,$35,$44,$20,$20,$68,$65,$78,$3d .dc.b $25,$34,$58,$a,$0 L129: .dc.b $6d,$6f,$72,$65,$20,$74,$68,$61,$6e,$20,$36,$34,$6b,$20,$0 L131: .dc.b $74,$6f,$6f,$20,$62,$69,$67,$20,$0 L136: .dc.b $72,$65,$61,$64,$20,$65,$72,$72,$6f,$72,$20,$6f,$6e,$20,$66,$69,$6c,$65,$20,$0 L138: .dc.b $63,$61,$6e,$27,$74,$20,$73,$65,$65,$6b,$20,$0 L140: .dc.b $72,$65,$6c,$6f,$63,$61,$74,$69,$6f,$6e,$20,$69,$6e,$66,$6f,$20,$6d,$69,$73,$73,$69,$6e,$67 .dc.b $20,$6f,$6e,$20,$66,$69,$6c,$65,$20,$0 L146: .dc.b $62,$61,$64,$20,$72,$65,$6c,$6f,$63,$61,$74,$69,$6f,$6e,$20,$69,$6e,$20,$0 L147: .dc.b $4d,$34,$0 L148: .dc.b $4d,$34,$0 L154: .dc.b $72,$65,$61,$64,$20,$65,$72,$72,$6f,$72,$20,$6f,$6e,$20,$66,$69,$6c,$65,$20,$0 L156: .dc.b $6f,$64,$64,$20,$72,$65,$6c,$6f,$20,$62,$79,$74,$65,$20,$6f,$6e,$20,$66,$69,$6c,$65,$20,$0 L172: .dc.b $66,$69,$6c,$65,$20,$68,$65,$61,$64,$65,$72,$20,$74,$6f,$6f,$20,$73,$68,$6f,$72,$74,$3a,$20,$0 L173: .dc.b $4d,$34,$34,$34,$34,$34,$34,$34,$34,$0 L175: .dc.b $62,$61,$64,$20,$68,$65,$61,$64,$65,$72,$20,$74,$79,$70,$65,$2e,$20,$46,$69,$6c,$65,$3a,$20,$0 L177: .dc.b $65,$6e,$74,$72,$79,$20,$70,$6f,$69,$6e,$74,$20,$6e,$6f,$74,$20,$30,$2e,$20,$46,$69,$6c,$65 .dc.b $3a,$20,$0 L194: .dc.b $4d,$49,$4e,$49,$58,$20,$69,$73,$20,$6e,$6f,$74,$20,$6d,$75,$6c,$74,$69,$70,$6c,$65,$20,$6f .dc.b $66,$20,$43,$4c,$49,$43,$4b,$5f,$53,$49,$5a,$45,$20,$62,$79,$74,$65,$73,$0 L195: .dc.b $0 L196: .dc.b $4d,$32,$0 L197: .dc.b $4d,$32,$0 L198: .dc.b $4d,$32,$0 L199: .dc.b $4d,$32,$0 L204: .dc.b $4d,$32,$0 L205: .dc.b $4d,$32,$0 L210: .dc.b $4d,$32,$0 L211: .dc.b $4d,$32,$0 L212: .dc.b $4d,$32,$0 L215: .dc.b $6b,$65,$72,$6e,$65,$6c,$20,$64,$61,$74,$61,$20,$73,$70,$61,$63,$65,$3a,$20,$6e,$6f,$20,$6d .dc.b $61,$67,$69,$63,$20,$23,$0 L216: .dc.b $0 L223: .dc.b $6d,$6d,$20,$64,$61,$74,$61,$20,$73,$70,$61,$63,$65,$3a,$20,$6e,$6f,$20,$6d,$61,$67,$69,$63 .dc.b $20,$23,$0 L224: .dc.b $0 L226: .dc.b $66,$73,$20,$64,$61,$74,$61,$20,$73,$70,$61,$63,$65,$3a,$20,$6e,$6f,$20,$6d,$61,$67,$69,$63 .dc.b $20,$23,$0 L227: .dc.b $0 L229: .dc.b $4d,$32,$0 L231: .dc.b $4d,$32,$0 L233: .dc.b $42,$75,$69,$6c,$64,$3a,$20,$25,$73,$25,$73,$a,$0 L289: .dc.b $62,$6c,$6f,$63,$6b,$20,$72,$65,$61,$64,$20,$65,$72,$72,$6f,$72,$0 L290: .dc.b $0 L293: .dc.b $62,$6c,$6f,$63,$6b,$20,$77,$72,$69,$74,$65,$20,$65,$72,$72,$6f,$72,$0 L294: .dc.b $0  ,( h) [ #- ,( h)\ -( h)]  Ɣ^ #, h` ʈ d( h)+ a ( h)+, - b z c e { i B ,#-o  , ~p #, ~ q  ~,( ) s ( ),( h)t  " u  ~,( ) x #Ro,( )y  8 { # N,( h) | # d,-( h)}  J~ $#, h 8 &( ) .* z ː .( )  2( ), ~ 6 ~ n8#, ~ : ~, V <# , ~  B( V, ~ ), ~  F( ), ~ J ~ nL#, ~ N# , ~ T ~, l  V( l), ~ Z ~, ~  \( ), ~ ` ~ nb#, ~ d# , ~ j ~, l  l( l), ~ p ~, ~ r#, ~  t ~,( )  x( ),( h)  |( ), ~ n#, ~  ~  ( ), ~   ~,-( h)  ˦ #, h  ( ),( h)  ( ), ~ n#, ~  ~  ( ), ~   ~,-( h)  #,( h)  ˦ #, h  ˼ #,( )  z #,( )  ː  z   {  B ,#-$ ( )  , ~  + , ~  + , ~   ~,( )  ( ), ~ #, ~   ~,( )  + , ~   ~,( )  + , ~ # , ~ n ~, ~  ~   ~,( )  + , ~   + , ~  + , ~   ~,( )  ( ), ~  #, ~  & ~,( )  * + , ~  0 ~,( )  4+ , ~  :+ , ~ @# , ~ nB ~, ~ D ~  F ~,( )  J + , ~  P$+ , ~  V(+ , ~  \ ~,( )  `0+ ,( )  h4+ , ~  n8+ , ~  t ~,( )  x( ), ~ |#, ~  ~ ~,( )  ( ), ~    ~,( )  ( )   ( ), ~ #, ~   ~,( )  ( ), ~ #, ~   ~,( )  ( ), ~   ~,( )  ( ), ~   ~,( )  ( ), ~   ~,( )  ( ),( )   ( ),( h)!  " "  ~,( ) % #-%&,( )&   ( # ,( h) ) # 2,-( h)*  J+ #, h .  ( ),( h)/  " 0  ~,( ) 3 #-%&,( )4  H 6 # ^,( h) 7  # t,-( h)8  J9 #, h = H ( ),( h) > ( ),-( h) ?  #,( h)@ " ˦A (#, h C *( ),( h) D .( ),-( h) E 2#,( h)F 4 ˦G :#, h I <( ),( h) J @( ),-( h) K D#,( h)L F ˦M L#, hO ͊ zN P PR {R W BR ,#- [ V ,( h) \ X#-,( h) ] ^#,-( h) ^ d( ),-( h)_ h ` n#, h a p ~,-( h)b r c x#, h e z#,-( h) f ( ),-( h)g  h #, hi  , ~ j  ~,( h) k #-,( h) l # $,-( h) m  ,-( h) n #-,( h)o  lp #, h r ( ), ~ s B#-, ~t . :v : z w y {  B ,#-   ( ),( )   ,( h)  #-,( h)  #,-( h)  ( ),-( h)   #, h   ~,-( h)   #, h  #,-( h)  ( ),-( h)   #, h  , ~   ~,( h)  #-,( h)  # ,-( h)    ,-( h)  #-,( h)   #, h   ,( h)  #-,( h)  $#,-( h)  *( ),-( h) .  4#, h  6 ~,-( h) 8 Ɣ >#, h  z@  B {D  BD ,#-  H ( ),( h)  L( ),-( h)  P# X,-( h) V  \#, h  ^#,( h)  b#L,-( h) f  l#, h n zn  p {r Br ,# v ~- @/ - ,-( h)  z ( ),   ~( ),   ( ),  #,  | Т | { |  | { .    @, ~ . &  < ( )+,( )+ . R  h #+ Ќ, ~ # Ќ, ~  ~, @ #, @ . ~ є #,  ~  , ~  ( ), ~  @, ~  ~  B ~, ~   є  Ѫ d     ( ), @   @  B#, @  n#, @  ( ), ~   ~  B#, ~   ~, @  .   ( ), @   @  B#, @  n#, @  ( ), ~   ~  B#, ~   ~, @ #   @,( ) % #,  ' #,  ( . R -  #+ , ~ . # , ~ /  ~, @ 0  #, @ 2 .   5  #,  8   , ~ 9 ( ), ~ :  @, ~ ;  ~ < B ~, ~ =   A . d   B " D D &( ), ~ E * ~ F B,#, ~ G 0 ~ H 2 ~, * J n4#, * L 6( ), ~ M : ~ N B<#, ~ O @ ~ P B ~, * R nD#, * T F( ), ~ U J ~ V BL#, ~ W P ~ X R ~, * Z nT#, * \ V( ), ~ ] X ~ ^ BZ#, ~ _ ^ ~ ` ` ~, * a .b Z e D f( ), ~ f h ~ g Bj#, ~ h n ~ i p ~, * k nr#, * m t( ), ~ n x ~ o Bz#, ~ p ~ ~ q  ~, * s n#, * u ( ), ~ v  ~ w B#, ~ x  ~ y  ~, * { n#, * } ( ), ~ ~  ~  B#, ~   ~   ~, *  Z  *,( )  #,   #,   . R  p #,   . R  ҆    . R  Ҝ  V  . R  &  ~  # Ҳ, V  #, ~   ( V)+, ~   ~,  ( V), V  ( V)  {  Ҳ |(1  |(2  |(4  |(L  |(M  |(  |( <  |( h  |(   |( p  |( ҆  |( Ҝ  {   ( )+, @   @      d( h)+  ( h)+, - @/ -   z     {  B ,#   ~- @/ - ,-( h)   ( ),   ( ),   ( ),   #,   |   ( |   {  |  j |  {  . Ԁ  Ԗ  @, ~  . Ԭ    ( )+,( )+  .    #+ , ~  # , ~   ~, @  #, @  .     $#,    & , ~  (( ), ~  , @, ~  . ~  B0 ~, ~  2   0 4( ), @  6#,   d8   : F  > @, ~  @ ~  B ~,( )  D#, @  F @, ~  H ~  J ~,( )  .N \  F R @, ~  T ~  V ~,( )  Z#, @ ! \ @, ~ " ^ ~ # ` ~,( ) ' \ b#,  ( .d , r h#+ T, ~ - n# T, ~ . t ~, @ / v#, @ 1 .x Ո 4 ՞ |#,  7 Ո ~ , ~ 8 ( ), ~ 9  @, ~ :  ~ ; B ~, ~ <  ՞ ? մ ( ), * A #,  D d  E   G  *, ~ H  ~ I  ~,( ) K #, * M  *, ~ N  ~ O  ~,( ) Q #, * S  *, ~ T  ~ U  ~,( ) W #, * Y  *, ~ Z  ~ [  ~,( ) \ .  `   *, ~ a  ~ b  ~,( ) d #, * f  *, ~ g  ~ h  ~,( ) j #, * l  *, ~ m  ~ n  ~,( ) p #, * r  *, ~ s  ~ t  ~,( ) x  #,  y .  }  #,  ~ .       .   "  V  .   Ԭ  ~  # 8, V  #, ~  N ( V)+, ~    ~, N  ( V), V  ( V)  {  8 |(1  |(2  |(4  |(L  |(M  |(  |(   |(   |( r  |(   |(   |( "  {  Ԁ ( )+, @   @   Ԗ  z d( h)+  ( h)+, - @/ -   z"   $  {&  B& ,#-  *( h)  ,( ),-( h)  0#<,-( h)  4   :#, h  < ~, P  B P,( h)  H#>,-( h)  L   R#, h  T#,( h)  X( ),-( h)  \#=,-( h)  `   f#, h  h ~, P   zn   p  {r  Br ,#-  v( h)  x P,-( h)  ~( ), ~   ~  # , ~  n ~, ~   ~,-( h)  #B,-( h)     #, h   ( ),( h)  #,-( h)   P,-( h)  #?,-( h)     #, h  #, ~   @  # V,( h)  # l,-( h)   J  #, h  ׂ z     {  B ,#-  ( h)   P,-( h)  ( ), ~   ~  # , ~  n ~, ~   ~,-( h)  #B,-( h)     #, h   ( ),( h)  #,-( h)   P,-( h)  #@,-( h)      #, h  #, ~    # ,( h)   # ,-( h)  & J  ,#, h  2 z.   0  {   |(A,b,o,r,t, ,  * |((,n,u,l,l,),   |( ,k,e,r,n,e,l,  , |(m,m, , , , , ! B |(f,s, , , , , # X |(i,n,i,t, , , % n |(m,e,n,u, , ,1 ' 4 |(s,e,v,e,n, ,f,i,l,e, ,n,a,m,e,s, ,e,x,p,e,c,t ( |(-e,d,., , *  |(21 ,  |(3 , , , , , , , , , , , , , , , , , , , , , , 1 - |(J , , , , , , , , , , , , , , , , , , , , , , ' . |(a ,-,-,-,-,-, , , , , ,-,-,-,-,-, ,1 0 & |(sO,p,e,r,a,t,i,n,g, ,s,y,s,t,e,m, ,s,i,z,e, ,  1 |(%,2,9,D, , , , , ,%,5,X, ,1 3 < |( ,T,o,t,a,l, ,s,i,z,e, ,i,n,c,l,u,d,i,n,g, ,m 4 |(e,n,u, ,i,s, ,%,D,., , 6 D |(c,a,n,',t, ,o,p,e,n, ,+ 8  |(r,e,a,d, ,e,r,r,o,r, ,o,n, ,f,i,l,e, , :  |(c,a,n,',t, ,o,p,e,n, ,1 <  |(%,s, , ,t,e,x,t,=,%,5,D, , ,d,a,t,a,=,%,5,D, 1 = |( ,b,s,s,=,%,5,D, , ,t,o,t,=,%,5,D, , ,h,e,x,= > |(%,4,X, ,! @  |(m,o,r,e, ,t,h,a,n, ,6,4,k, , B  |()t,o,o, ,b,i,g, ,+ D d |(2r,e,a,d, ,e,r,r,o,r, ,o,n, ,f,i,l,e, , F  |(Fc,a,n,',t, ,s,e,e,k, ,1 H  |(Rr,e,l,o,c,a,t,i,o,n, ,i,n,f,o, ,m,i,s,s,i,n,g I |(i ,o,n, ,f,i,l,e, ,) K @ |(sb,a,d, ,r,e,l,o,c,a,t,i,o,n, ,i,n, , M V |(M,4, O  |(M,4,+ Q  |(r,e,a,d, ,e,r,r,o,r, ,o,n, ,f,i,l,e, ,1 S ^ |(o,d,d, ,r,e,l,o, ,b,y,t,e, ,o,n, ,f,i,l,e, ,3 U İ |(f,i,l,e, ,h,e,a,d,e,r, ,t,o,o, ,s,h,o,r,t,:, , W  |(M,4,4,4,4,4,4,4,4,3 Y  |(b,a,d, ,h,e,a,d,e,r, ,t,y,p,e,., ,F,i,l,e,:, ,1 [  |(e,n,t,r,y, ,p,o,i,n,t, ,n,o,t, ,0,., ,F,i,l,e \ |(:, ,1 ^  |( M,I,N,I,X, ,i,s, ,n,o,t, ,m,u,l,t,i,p,l,e, ,o) _ |("f, ,C,L,I,C,K,_,S,I,Z,E, ,b,y,t,e,s, a  |(5 c  |(6M,2, e ( |(9M,2, g > |(<M,2, i T |(?M,2, k ɖ |(BM,2, m ɬ |(EM,2, o  |(HM,2, q \ |(KM,2, s r |(NM,2,1 u d |(Qk,e,r,n,e,l, ,d,a,t,a, ,s,p,a,c,e,:, ,n,o, ,m v |(ha,g,i,c, ,#, x N |(o1 z 2 |(pm,m, ,d,a,t,a, ,s,p,a,c,e,:, ,n,o, ,m,a,g,i,c { |( ,#, }  |(1  t |(f,s, ,d,a,t,a, ,s,p,a,c,e,:, ,n,o, ,m,a,g,i,c  |( ,#,  ^ |(  $ |(M,2,   |(M,2,  X |(B,u,i,l,d,:, ,%,s,%,s, ,%  l |(b,l,o,c,k, ,r,e,a,d, ,e,r,r,o,r,  V |('   |(b,l,o,c,k, ,w,r,i,t,e, ,e,r,r,o,r,   |(  {b,l,o,c,k, ,r,e,a,d, ,e,r,r,o,r,  V |('   |(b,l,o,c,k, ,w,r,i,t,e, ,e,r,`2 NV0..?<HNT-@JlB` .`N^NuNV.N>?<LNTN^NuNV n f > N^>?<NTN^NuNV.^/ /.NPN^NuNVH *n>. <.I :HŋHEJElF|0|9o^E0>f м :SEf `JL0N^NuNVH *n.. <.I 0//NP:|0|9o^E0//NP.f м :SEf `JL0N^NuNVrH?*n(n GA-H|` ? nNTHg|%fJGgBnz -fRRnz=| x 0f R=|0xBEH|0m|9n |0`|*f>`` G`BCBD|.f:H|0m|9n |0`|*f>`` GRC`Bnv|lg |LfRnvJgH0`Rnv~`Rnv~ `Rnv~Jnvg>// NP&@`>?/ N\&@`RnvJnvg0-\rl- .rD-@r> /.r/ NP&@`<l -0D@<> ?/ N\&@`z=| x?`l=| x>g`Z=| x-\|f -||JDf8<&n|`RJgSDl`"``H |r W h4N |<FlBEJnzf0D@:JEl@ n| -TTTDLf$ n0xf n|H? nNTR|SF?.x nNTREf` n|H? nNTR|SFl`?.x nNTSEJEf`LJL8N^NuNV ng.2/<NDX n .N& n .N6Bn`$ n 2.TAH.?.NTRn nmN |.3N./9/<sNP./<NX.N NNBW?<LNTN^NuNVBW/.?<=N\=@l./<NDX./<?.?<?NP=@Jnl./<NDXJno>/N XJnnN |>?<>NTN^NuNVH BW/. ?<=N\=@l. /<NDX. /?.N \-y .ЮЮм -@ .ЮЮ-@/</.NP=@Jno0<n`B@=@0.HѮ0.HѮ nl .ѹ .ѹ0.Hм @ 0.Hм @!n0.Hм @!n0.Hм @1y nl:././././.0n"<p/0/<N .Ю=@0.".Үаg. /<NDX>N-@Jf. /<)NDX*n=n`b n@d 0.`0<@=@.0.,,44TTTTT,d,4<<<< T/?.?<?NP0ng. /<2NDX0.nJnfBW?./.?<BNPJl. /<FNDX*nI./<?.?<?NP<|l. /<RNDXJgYFXe0.Юe. /<sNDX./</NrP .Ѯ./</NPSFl8I./<?.?<?NP<SFl. /<NDXH||f `JGg"g. /<NDX`" .Ю=@*n`6 nd 0.`0<=@>/ N X0.nJnfBF=F` l .` <=@0<ynl0<y=@ ng>/<N X`Jnf=y`RF0.HJf|JngL0R@2.HҼ"A3@0.2.HҼ"A2) A2.HҼ"A3@ `F0.Hм @Bh092.HҼ"A2) A2.HҼ"A3@ .?<INT>?<>NTJL0N^NuNV./< ?.?<?NP| g./<NDX./</. NrP n g./<NDX n Jg./<NDXN^NuNVH 0<y=@0. nn 0. `0.=@TTT$ <<<< <<TTT=n:y(n`0.SnJ@f0.y yf.?9NTN 0.n g*0.n 3 *|`0. Sn J@fJL0N^NuNVJyg.?9NTN N^NuNVH*|`BReByRyJL N^NuNVHBn/</9NPJg.5/< NDX-y .=@ .мH=@.BgNrT./<6/QNP./<9/]NP./<0.@HЮ/NX>0.@HЮ/TNXRn nmtN^NuNVB 9ййѮ .м   ,d,<<<<<<<<<<<-@ 9Ѯ09r `H 9ййѮ .м-@ 9 Ѯ09yr `H 9 й$й(Ѯ-y0 94й8-@ .-@ .ѮB .-@ .-@ .=@ .=@ .=@-n.NR=@ ng./<pNDX.NR=@ ng./<NDX>/.XNX>/.\NX>/.PNXN^NuNV./</.NP?NrT/</.NPЎ./</NrP0.|`N^NuNV=n ./</.NP?NrT/</.NPЎ./</NP./</.NP?NTN^NuNV. /./<NP>?<LNTN^NuNVH*n (n&nz`N0`2`B <>SG`R 2HfJEg,H|GH|@`H|G,H|@6TT` <>SG`R 2HfJEgB,H|H,,H|H,H|HH|H`>H|H,,H|H,H|H,H|H&XX`.z`(BE`"N:`H |rW hNHfJL<<<<<<<<<<<<\d\d\T8N^NuNVH*n (n&nz`0`` < >SG`R 2Hf>TJEg0HG0H@`0H@G0HT` <>SG`R 2Hf,XJEg* H H@ H@ H@`& H@ H@ H@ HX`.z`(BE`"N:`H |rW hNHfJL8N^NuNVBW/.?<?<>NT>/.?<=N\3N^NuNVBW?90.Hr /?<BNP. /<?9?<?NP|g./<NDXN^NuNVBW?90.Hr /?<BNP. /<?9?<@NP|g./<NDXN^NuDOUXcdefgosuxN@@@`124LM124LM hAbort (null) kernelmm fs init menu seven file names expected. ----- ----- Operating system size %29D %5X Total size including menuTTTTTTTDOUXcdefgosuxN@@@`124LM124LM hAbort (null) kernelmm fs init menu seven file names expected. ----- ----- Operating system size %29D %5X Total size including menu is %D. can't open read error on file can't open %s text=%5D data=%5D bss=%5D tot=%5D hex=%4X more than 64k too big read error on file can't seek relocation info missing on file bad relocation in M4M4read error on file odd relo byte on file file header too short: M44444444bad header type. File: entry point not 0. File: MINIX is not multiple of CLICK_SIZE bytesM2M2M2M2M2M2M2M2M2kernel data space: no magic #mm data space: no magic #fs data space: no magic #M2M2Build: %s%s block read errorblock write error is %D. can't open read error on file can't open %s text=%5D data=%5D bss=%5D tot=%5D hex=%4X more than 64k too big read error on file can't seek relocation info missing on file bad relocation in M4M4read error on file odd relo byte on file file header too short: M44444444bad header type. File: entry point not 0. File: MINIX is not multiple of CLICK_SIZE bytesM2M2M2M2M2M2M2M2M2kernel data space: no magic #mm data space: no magic #fs data space: no magic #M2M2Build: %s%s block read errorblock write error_image_cur_sec_buf_byt_buf_zero_cum_siz_all_siz_sizesPlremu