IMD 1.11: 1/03/2006 20:33:27 CP/M 68K 1.1 Release Disk (C) -Master-SAGE-Bootable- SF0038A SN019 3-17-83 SAGE BOOT`Booting CPM... ...cannot load 2/2 bootstrap SAGEBIOSSYSCPM SYSNANN?<0|//<?/N(gA%NN0?<A |//<?/N(fC |0)3@?A /0 /?/N(fvA G |<SFCFJf`zx 0@1@VfDB( ) o@ xv00@00J@gk3@TDTC C f` Q Q$x1AFB( ,@RJpPgUEn!!J Ba*f&J!Aaf"h ! NH `JhgJ8.<00@TDJp@gp@X@f޼n.ma"fGg:JpPfp:J@LPNuH?0P/ /?8N(LNu/ E ><Ba$_C M  Q`f,)ܩ! ƕ !J p܀BaDM .fE C *کE B@H@܀aM .f$h ( &֩$ԩBGPIHC HE,8 NSF0@4N444M C`Hr`(JfB0ЄH@M bJ@f*H@4`٪BTQC *) BQBNupNuA`A` A` NNNN0Cannot read directory Cannot read disk status Cannot load CPM.SYS Illegal file type: CPM.SYSCannot load: CPM.SYSUndefined variable in: CPM.SYSWord overflow in: CPM.SYS̀V` ̸Q v"E@ v" D, v" D$=8 v",P xbSAGEBIOSSYS`CPM SYS CPM SYSCPM SYS|SAGEUTIL68K !"#$%&SAGEUTIL68K'()*+,-.SAGEUTIL68K/SAGEUTILC 01234567SAGEUTILC 89:;<=>?SAGEUTILC @ABCDEFGSAGEUTILC KHIJKLGETVAL C MGETVAL O NUNITIO O OUNITIO S PQBDOS O RBDOS S STAS68SYMBDAT,UVWGENUTIL SUBXBIOS S YZ[\]^_`BIOS S aklnopqrBOOT S bcdefghiBOOT S jBIOS S stuvwxyzBOOT 68K mBIOS S {GENCPM SUB|RELOC 68Kf}~PIP 68KDCOPY 68K}INIT 68KED 68K^STAT 68KIDUMP 68K<AS68 68KAS68 68KAS68 68K`DDT 68KDDT1 68KDDT1 68KDDT1 68KAR68 68KaLO68 68K~NM68 68KCSENDC68 68KGSIZE68 68K=C068 68KC068 68K|C168 68KC168 68KC168 68KCP68 68K}     BIOS!P*@P!!P*@P!!nz@!HpQF'0<cABXQAb!A0<CBXQAC"0<2QA !A !A v!A !A !A(!'%g0eCv!dAC0C'40Br@Q0:HA!xA8!tA!RA!VR!ZaNABaAvCBp"QACp"QaaB8kA!l!F LNuAsBv8$28"f8!gA;0@IIIB8%gpPNu@ A3B28&f2<@I(&aaNu? A8Aj A@0;N  A0Ns  C08@fF!gCJx@f0NsF HeHeHedHe JHeHe Px?@`/ @n H0; N Ns(,2:N`r<@F`* xNuNuB8Nu!NuNuCaCNuCaTCNuA/ / / / / //Ap NN0(f /h"ONu _1@ONur pQQF'8%%sB8 O NH`Ca 1ACLNuHpCa CLNuaR0;N  a(0;N4::Bh0g @ o @m @n@sHNuX``a0;N\T^^\ :TTTdvXa0;/ "hN"_Nu8X $,t  J Z 1|Nu1|Nu0( @ nH/ "h0;N"_Nu1| NuR `  &0( @ nH/ "h0; N"_Nu XX 2>Nu1>NuHp6( h Cb ga@LNu Cb ` `/] Oa&\ _J8>g*HC2x4B8?Ht8>HHCցָ `/ h!] Oa!\ _NuRxB8X8XX0NsCAg0NsAH$xD ga2k""R!Dgaz"jNL`"Jaf` *ad`B@CJ8888B@HB48BHB88f$8f"A@J8CDBDAz HA2HANuJ8J8C`aB0 B2@@B@H@+@v HAh d|RAzczRAhH@0H@!@"xD$ gk$I"Q$ gj $LNu !D"Ha:`H`"xD gg$I"Q gf$LNu"P!Dga `C`a )Ad zH@S@`H@HAAdCAgNuCt @l0BAJ@g2<}H@HAgrHICNuS@2:`H8q8s8fB8N xV( gRg8g8PgXBA8MR8LgSAR8M:fLNsJg8%fxHgIfIs`H`Jg8%gH`Jg~xHfH`AOg`H`gR8NgR8%g 8NgFRxr`gRxt`RxvHIIIsI`6H`,S8NIAg`ApA)Rg`A/AbHz.!_1|Bh aZ _8%g0/8@?`H@aLNuNu@H?F%BA8L8Mg/A0 _R8LF 2NsB8^Nr J8^gB`H@@"h"(gaSfLNuF%8HfDB@8J8Kg/Aq _R8J0NsKJ:g0<!aIIs`eeee8H`Hq`HIsI`@?8HfVF%BA8KR8JgHS/A R8K _8If*8Hf"IB8^8sfJ8^f `Is2NsB8^Nr J8^g`H@@"h"(g axSfLNu!"H@F%aF LNuF%B8HMLIfIs!R!V! ZB8NF NuB@8M8L23xr63xt83xv:NuB@8K8J2Nu""Nu?Sg]g"Rg(Xg8]g@B@@0Ns8L8M`8d8e` 8S/AR8c _afB8^83fJ8^f `a3F 2NsB8^Nr J8^g`H@@"h"(g(f(f$azSfLNuF!*adF `F!*avF `!&!*H@F!aF LNuJ83j8`f>B@8b8cg/A1 _R8b0Ns:Pg0<"aNaa3`eee(e8```1``1``/8i8aB8i8jF8aB8ja3a `J8,gP/A2J _fxAg`hF!A/AHz!_F Bh1x* a _`NF!/AB _afa3F Nu83g8aa3aNu8i`Nu83gF8aa3Nu8j`NuF!B8`edp&aB8fF NuF!cbF NuB@8e8d28c< C483<2x2z2|NuB@8c8b2Nu"&"*Nu0NsAH瀈(x xNL`NH`4H`rABaf(B8gpfg pgpLNuH`rABaZJ8fNB8g>p g6p8 e,p e&p ep ep ep ep` 8gpLNu4N`/ApAR0g _NuH"H$i0) |$f AFHz~`>|%f AHHzr`.|&f AJHzf`|'f ALHzZ`|?fN`/ApAR0g _NuH"H$i0) |$f AFHz~`>|%f AHHzr`.|&f AJHzf`|'f ALHzZ`|?f*zOp02xHzTЊf `H?NpH>;Npvvvvvvvvvvvvvvvv........VVVVVVVV< . H P0 bTdtRljr r  < B`$    f f$$$J$R$Z$b$  v$$$$  &  < T , Lx   ., * 0 n$j$r  T> 4 8hh $%%p`0p`,p`(p`$Np`p `p `p `p ` p`at|~B?L&&pa p` p=|`=|=k&A*L&SNa NN<6x vhgNuO=G`&f/BHt4+&v(ЎQb Nu =@=k&O`>+&=x A=x L=x=&xx&xL&Nu>+&"_vxvx&7vx&<6x(F<6x Ah<6xOh/ >+&<6xCh7vx&<6x>6h<6h|g Jxg$vx`$NH&Nu*Jg :6XSfNuRn*>+&>6x=*xNu'M&NuN*k&B&NNuHzJ&f*_Nu'_&NuN&f<&f bKNN&aNu @bH>;Np ?<Np?N?NpjHjH?N@>?0NpjHH?0N@ЈP@?NpjHHЈP@?N@1NpjHH1N@^?1NpjHH?1NpjHHЉP@?NpjHH3NH@a|pjHH@?6XNa^pjHH@?6XNa@pjHH@PE?Na"pjHH@=XNpHk&>6>6xpjHH@PGNua?6xNa?Na=xN>>xN@W>NpjHW>N0>=xN'L&zjMprtaj@MAX fJ* g 4 Z?S@f`? S@fL&N'L&prtaX>@@Ax? S@fL&NpH>7Ax0U@fB_L&N'L&6h Gg*ra>6h<6h|g Jxg vx` N6hAxNuaJ_pjH>Cx2S@fL&NaJ_pb2>CxT@H`a(fJ_>L&NacJ_>L&Nad``RzNNCOPYRIGHT (C) 1982, Digital Research B9 O_JNL3RN)0< B9RNBB0<B29RANBO_JN"v`0/"/NBNu"<S80<?NB#S:S&#S>S*#iBS"p;"<S"NBJ@f29Tp NBB"9S.|"ApNB$IR yUB g !gR@`/<iB?<NZ\Bp\aj/<iB?<NZ\Bp8aR yS2"yS./)@@_?! !<N`Ns @f"<SB` @f"<Sk` @"<Sp NBpNBйS. @"|iBBp#QNuNV0| .?<NTO0| .?<NTON^NuNVH *n(n JgHop`Hlp`RR`JfB@`pNqJL0N^NuNVH*n&|gJ9Tg(|fJg` B9TJg !g`BJL8N^NuNVH0|.?< NTO<0|.?<NTO>|Aa JFgB| e|1| 0|0@|$`0|0@|$.Y?< NTOB0.?<NTO0|>.?<NTOJLN^NuNVH*n>. |f J9 fa4Jg !gHH.?<NTO`JGf0|?.?<NTO`a8JL N^NuNVH*nBG|d80 @"|S./ a.XOJ@f0 @"|S00`@RG`BG|d0H@B@H@мf @ :gRG`|f6J9ff.J9ff&9fH|m9fH||np`޾|f&9fH|m9fH||op`|g0H@B@H@мf @ :fp`.iBBga`TOJ@cp`x|f~`BGBF|d$ |f0pH"|U1`HAfp`BRF`BF|d20H@B@H@мf @Jo0H@B@H@мf @  lp`RF`pNqJL N^NuNVH*nJg !gR` !fJgR  fR`#T`:J9Rg,J9Tf R`B9R yTJgR`B9RJL N^NuNVH *n.. Sހg.g?< NTOJ9gg 9;gga9gH|Hмg @|  9;gf g(|g  g  fR`  gFdB am zn H|`H  g  fR @  g  f``R`BJL0N^NuNVH*n !gJgR` !g  g  fR` NqJL N^NuNVH *n(|fBG|hdBRG`BGJg !gz|drBF !g2  g,  g&Jg"|d0B2Ёмf @RFR`B02Ёмf @BRG  g  fR|f#U`|JL0N^NuNVH*n  np`&H`p``H |UrW hDNB@NqJL N^NuNVH*n *fp?`.aJ@f RyTH`p NqJL N^NuNVH >.*n Bx |#b B2Ё @BRD`x| b B2Ё @ RD`J9Tg<?`< ByT(M0мfB29TЁ @Jf.BCBnB.0CfJ(g0Cf (:gRC`0Cf (:f|gBW/<faXOB@`FJ9fg&.T?< NTOBW/<faXOB@` 9:ff( 9Afm 9PfoBW/<faTXOB@`.iB?<aTO9iBH|@=@.iB?<NTO<|f.T@?< NTO8LRDBE|gVJGg0Dg( fJGf80Dg( f(J.gaRB.JEfB0..?<NTO`"=|.iB?<NTO<8LRD`NRF0|:.?<NTO0| .?<NTOv| b>| f0| .?<NTO |g0`H|H.?<NTORFRC`0| .?<NTO.iB?<NTO<|gHRE8LRD|f6BEJGg0Dg( fJGf0Dg( fa<`|`Jng.a&JGg.S?< NTO`.S?< NTOJLN^NuNVHJ9ff".S?< NTO>/<faXOJ9fg&.T?< NTOBW/<faXOB@`nBG0GfJ(g0Gf (:gRG`0Gf (:f.|f 9Afm 9PfoBW/<faXOB@` .iB?<aXTO>JGfJ9fg.iB?<NTO|b.iB?<NTOJ@fDBG|b:0H@B@H@мg @ g |g0pHH.?<NTO``RG``.iB?<NTO9iBHH.?<%NTO`HJ9fg@JGc*| fBW/<faXO`.TJ?< NTO`.T@?< NTOJLN^NuNVHBDJ9ff^.T?< NTO>/<faXOJ9ffB@`.T?< NTO>/<faXO=f`BG0Gf (=g0GfJ(gRG`0Gf (=fJGc0GfJ(gJ9fgx` 9=ffJ9ffJ9ffxJDfJ0Gf (=f:0GfB(RGBF |f0pH2Ff@NRGRFJ@g`=f||dBEB02Ёмf @ :gB02Ёмf @JgRE`ʺ|cB02Ёмf @ :fxBG|dD0 @"|f0H"|U1pHAfBW0мf/aXOB@`~RG`TF`NJDfXJ9fgNJ9fgD.?<aFTO>.iB?<a4TO<JGfJFf.H9iBg> 9:ff 9:fg iB` 9:fg 9:ff yiB`x .m .oxJDf..?<NTO|g.T*?< NTO`lBE~|#b"0H@B@H@мiB @"N4ERERG`J9iBm 9iBoxJDf(.iB?<NTOJ@c.T@?< NTO`.TJ?< NTOJDg.Tb?< NTOJLN^NuNVHJ9ff".S?< NTO>/<fatXOJ9ffB@`dJ9fg&.T?< NTOBW/<faXOB@`6BG0Gf (:g0GfJ(gRG`0Gf (:f6|f 9Afm 9PfnJ9ffBW/<faZXOB@`.iB?<aTO>JGcJ9Rfx.T?< NTO0|.?<NTOf 9afm 9zfn9fH|`9fHfaf 9Nfg 9YfgB@`2 9Nfg(.iB?<NTOJ@c.T@?< NTOJLN^NuNVHJ9ff".T?< NTO>/<faXOJ9ffp`J9fg&.T?< NTOBW/<faXOp`~ 90fm 99foB@`d9fH|о| cB@`NJ9fg0 >9fH@|о|dJ9ffB0.?< NTO`B@` 3TpNqJLN^NuNV9fH|3TB09T.?<NTON^NuNVH?BEBDB9TvTB.0|.?< NTO3T0|.?<NTO3T n f.iBBgaTO>`.iB?<aTO>JGc.TJ?< NTOB@`l 9 iKfBG|d 0GB(RG`9iBHS@H.?<NTO?iBB9iN.iB?<NTO>|gO0H@B@H@мg @Jg |g0pHyTfJ| | b0FH@B@H@мg @RF`0GgB( 6iK8iLKiM0H@B@H@мg.R/<iCaXOJ@f& |g0pHyTf|`|` iK iL iM0H@B@H@мg.R/<iCa0XOJ@f$ |g0pHyTf|`|`\SiKUiLBiM0H@B@H@мg.R/<iCaXOJ@f" |g0pHyTf|`| n f .g nf .f><`.iB?<NTO>`H n f.iBBgabTO`.iB?<aPTOB09T.?<NTOBG nf .f~`~|d0GJ(fRG`0`p0|.?< NTO6iK8iLKiM`X0|.?< NTO`D0|.?< NTOSiKUiLBiM`BC`|b@0@U PN 9SiKf 9UiLf 9BiMf|JEfJDfJCg.iB?<NTO|bJ.g0|.?< NTO3TxJ9Rg T`TBG|$d&0H@B@H@мh @2HABAHAҼiB"ARG` n fB9TRB9T`z`(0|.?< NTOJ@g0|.?< NTO`JEg.UaNJDf nf.T?< NTOB09T.?< NTOTB9T0NqJLN^NuNVH? >.<. *n 89T|e&BG.h ?<NTOJ@gT0`R0H@B@H@мh0 @ 0m0H@B@H@мh0 @ 9n |h00pH6|(M Sf& Uf Bf Mf If Tf  fRC(MzCb  gJgR`  fRRE`  g.*n BFa|dv0H@B@H@мh0 @ g^0H@B@H@мh0 @  gH0H@B@H@мh0 @ $fRG.Bg?aXO>` |h00pHH.?<NTORG`|fP0H@B@H@мh0 @ g:0H@B@H@мh0 @  g$BG.h ?<NTOJ@g T|`J0H@B@H@мh0 @  f*TG|e BG.h ?<NTOJ@gT`T|JFg0NqJL N^NuNVH *nBG:9TJ9Tf|d0H@B@H@мh0 @  g0H@B@H@мh0 @ !gn |h00PH`D.?aNTO:`JJGc&0H@B@H@мh @2HABAHAҼh0"ARERG|d00H@B@H@мh0 @  g0H@B@H@мh0 @  fRE`ʺ|e$BE.h ?<NTOJ@g T```RE3T.?<?aXO:>9T`RE|e BE.h ?<NTOJ@gT`nT`d0H@B@H@мh @2HABAHAҼh0"ARERG|e BE.h ?<NTOJ@gT`H |UrW hN`T0H@B@H@мh0 @  g0H@B@H@мh0 @ !f|dF0H@B@H@мh0 @  g,0H@B@H@мh0 @  g0H@B@H@мh0 @ !fRE`|f$BE.h ?<NTOJ@g T`&` 0H@B@H@мh0 @ fT``h3TJL0N^NuNVH*nBG|b0H@B@H@мh @BRG`0|.?< NTO<B09T.?< NTO.h0?<NTOJ9TfJ9TgHBG|d0H@B@H@мh0 @BRG`.h ?<NTOJ@gTB9hByTJ9Tf.aBG|d`0H@B@H@мh @ am(0H@B@H@мh @ zn |h0pH|` |h0pH2HABAHAҼh"ARG`.g?<NTOB0.?< NTOJL N^NuNVH*n.a`BWaD`(>a8`a`a` a`aJ@f.T?< NTO`a~`|J9ff.S?< NTO>/<h0aPXOBG0H@B@H@мh0 @  g:0H@B@H@мh0 @Jg&|d 0Gf2HABAHAҼh0"AQRG`0GfB(JGg T``@`B9T`| >aJ@f*|g$BW/<fa>XO`| b@0@U PNJL N^NuNVHT.g?<NTOJ9Tg2B09T.?<NTOB09T.?< NTOB9TJ9Rg4J9Rg*|h.ga`*yTB9R>/ aXO`/< aPXOB9 Jg#U.aJ9fg .faJ9Rf .ar*@`J9TgBJ9Tg .h0a`.a*|h.Ua:#T.gaB9T`/ aNXO`JL N^Nu @>g,H @2g/??N?\HPOLNs A0LNC`W Ns$/` 4/`"/`2/0/HNCLxNu/H/Nu / o H@0B@H@NuNVJ9f2gp` >N$NqN^NuNVHB>N$J@gX>N$<f >N*z<f<`,<fB`"<fJ9f4gB@`pf4`f2JfJLN^NuNVH. axH>?<N$TOJ9f4gH>?<N$TO< mRyf6`< fByf6` <fSyf6JLN^NuNVH. < f> az09f6|f` H>abJLN^NuNVH. < f H>a`< l >^a.<@H>a JLN^NuNVH9f2B9f2JgH` >N$NqJLN^NuNVHaH>a̾<fJ9f4gB@`pf4HNqJLN^NuNVH>.|fax`"` |fa``>W?<N$TOJLN^NuNVH*nH9f3g H>a`JL N^NuNVH>.> a> aJGg > aSG`JLN^NuNVH *n>. J-gS--H|I0SEJ@g< fPG|` < lTG`RG`ھyf6d>a> a>a`JL0N^NuNVH *n=yf6Jf8gV yf8H<|Rf8H|Fd<FIJFg yf8H>aRf8SF`Bf8`~B--H|H|Alba<fJ-f>a>N*z`6< g< f> a`"`<f>/ aXO`<f:J9f5g"J-gS--H|5`H>aj` >/ afXO`ľ<fJ9f4gB@`pf4`<f>/ a2XOJ-f`<f >a`x<f>#a>aB-`Z<f2>#a>aBF-H|@d5`H>ahRF``"H"M-H|H@>aDR-`JL0N^NuNVH.$T?<"?<N$XOB9f2$f3B9f4f5Bf8> N?\>N$*@ -#h#h -йh#h#h.fVNIJL N^NuNV09WF@yWByWByWJngB@RRf<#hh#hh.fVNI>N$N^NuNV.N'.VN'9fWAN%nN^NuNV.a>aVN^NuNVH. . a.VN'Jg .VN'.W N'N&<_.WN'H` >a>aJgp`&` B@` `|gڰ|Agܰ|Cgް|RgNq`~JLN^NuNVH *n(M.WN'~RH>WN%nSGf>.N%n~RH>WN%nSGf.W,N'.Wa >a- >/ /<8N/@PO0. @>N.``|g|Ag|CgNq`JL0N^NuNV.WN'0.`J.W?<aXTO`L.W?<aFTO`:.Wa".WBga,TO` .Wa`|b@0@VJ PNN^NuNVH*n>UG| g|!fp`J|m |%n|`JGm| o0<`(0Gf2+h$0Gf2!m$B@NqJL N^NuNVH*n-g.#h#h-g#hh#hh`+yh+yhJL N^NuNVH>.yfN,` |B.-n-n -yf@.NCJ@gJGg>`BWN,J@f`B@NqJLN^NuNVBW/9fD0n/aRPONqN^NuNVH>.>/9fD0G/a,PO< yfHh d0H"yf@")Ё/a _0NqJLN^NuNVH*yfDB| ޝSFJFf rހ ހ NqJL N^NuNVH?*n >.(yfH8<g 09fLR@`B@<f yf@0(R@@b޼lb0|f:M>al dtB0"yf@")Ё&@ga@`Ra8gJ yf@1lvB9fN2,`~3fL?0|HH@B@H@йfD// nN J@ggBD`0|` RF`0NqJL8N^NuNVH>. yfHhb,0<2|`? yf@ (2IHABAHAЁ @_JLN^NuNVH>.JGc: yfHhb.0<2|`F@? yf@ (2IHABAHAЁ @_JLN^NuNVH>.0H0@"yf@"i0HF2<4|aANqJLN^NuNVH>. yfH8(:|JGfDd&JGgSG>aJ@g<`DdRE>aJ@g<``Ҽ|g>a0NqJLN^NuNVH*n H||lV yf@1nBG yfH hd5pH>WN0pRG|o`0G>N$>N0pRG|oJL N^NuNVH. 09WHhF@<9fN,Hr@@.NC#f@f>N,J@g yf@# fD yf@#fHJg yfH<(>N00SFJ@f. yfH(HR@@? yfH0(R@H@B@H@/N$\O<JngRFSF>N0pJFf>B/<1N/@POpH`yWJLN^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH *n(n ~  ?HH@|gJgB@`NSGJGfJ.g> ?g HH@"yfH)HFAgB@`TTHH@|?gB@`pNqJL0N^NuNVH*n>/. / a`POg0- > / /. aPOG -p9fg>N,J@f`0NqJLN^NuNVH*n(n >/ / aPOJ@gGA-H yfH hd:~ nJgJg nHf` n` nRRSGJGf`6~ nJPgJSg n0Sf` n6` n0TTSGJGf.N<<, H|EbEf"-H|,H|Ao mF m , g>/ N+XO, 0.@>N.p`p9f/. /.aDPONqN^NuNVH*n>. ?f$9f=H>a>/ /<62N/@PO<`..NCj -? gB- B->/ /<6>N/@PO<>/9fN/9fDaPO0NqJL N^NuNVH*n(n >. gB@`pgPG|BSFJFf> / / aHPO0@>N. yf@hc yf@1Gp9f.BW/ / aPOgl, g >/ N+XO0@>N. yfH hd|SF4`H>WN0JFf`|SF0F>N$>N0JFfHNqJL0N^NuNVH*n(n >.BW/ / anPOgF, g >/ N+XOGA-H| H|"nRSFJFf0@>N.HNqJL8N^NuNVH *n(n >.BW/ / aPOg> / R/ RaPO0@>N.HNqJL0N^NuNVH*n- H|H-H|?Ht 塀NqJL N^NuNVH*n.a- H|HЁ-@n!n"n#JL N^NuNVH *n(n BW/ / a0POg*.af,H|HЁ-@n!n"n#HNqJL0N^NuNVH*nBBGB>/ /<9LN/@PO|d&m!m"m# .o-n~`n!n"n#JL N^NuNVH. H>aB yf@*hBFBD yfHhb,JFf <<0F@:0Fg yfH(HR@HހNRD` yfN JL N^NuNVH *n(yfH,H- H,HArF`>0- H|4aANqJL0N^NuNVH*n>. Jng0G>N$`` 5pH|NqJL N^NuNVH*n>. <.-Jng M2G/?N$TO _1@` M2GFJL N^NuNVH>. *yfHB0.-HH-H. HBHЁ,>/9fN/N-PONqJL N^NuNVH*nJng,-!H@-"HAA-"<-#g<`-<?- R< mBR<@mp`H-H|?Af,H- H@"yfH)HFA|f F B@`p.N6|ep`\-- GF BW/ /<4N/@PO|e0J. g ED p`">/ /<6N/@PO|ep`B@NqJL N^NuNVH *n~I J$fSGJGf yfH hcOBp"yfH)HAo0"yfH)HF- HB|ANqJL0N^NuNVH*n.a>- H@f-H|``- H@c0<``B@NqJL N^NuNVH? *n. yfH6(|Jf - g yf@ h>/ N+XOJng0>H?/ a\O=@g0.`n-#H|@ `& - fBWH?/ a\OJ@gp`?/ an\O<JFgJgB@`p8`Jgp`>JEg?SW`Bg/ a8\O>N1P<|fp`>??/ aRPOx nfV(yfN#fDfN:<SE0HйfN @BJEfBE yfH(H@n>H??aNXOxRE`#fN>- H??a0XO=@JnfnJnfR- 0.NqJL0N^NuNVH>.<. *n B.-MBE0`BWN*zN&`H>N%`>N$`H>?<N$TO`H>?<N$TO`x>N&`z>N$`l>?<N$TO`L.N'`@.N'`4N$`80< "`0ByWByWByWfN2,f=`.]aB- B-BW/ /<4N/@PO:`.]a.N6:`#fR.]Bg/ N6Z\O:`*yfR-M.]?</ N6Z\O:`l.]a|>/ /<7jN/@PO:`J.]aZBW?</ N=~\O:`,.]a/ /<6N/@PO:`.]a>/ /<8 N/@PO:`09W`9f=H|`#fN`p9f=H`yW`09W`.]a>/ /<8N/@PO:`V9fN2,>/ /9fHN3jPO`0||bf>9f>H|` .]a >?</ N=~\O:`.]a>Bg/ N=~\O:`.]a.N9`.]a.N9`0F@<yWyWyW`z.]a>Bg/ N=~\O:`\>N:`R#fNf8BWN*zN4|`F.ND`<.N-(`2.N-`p`$`|?b@0@W PNJ.g0NqJL N^NuNVH *n(mHJg H>SW` 9f=H>N2,f>|JL0N^NuNVH*nBGH`_L-H>9_LH??< N$XO+@`-H9_LgBW-H_L??< N$XO(m&l.U?/-N$\O>0+W?< N$TO.?.?<N$XO>?< N$TO. ?< N$TO f> N$>`-H>?<N$TO>`,>N$>`J@g |g2|g*|gNq0NqJL8N^NuH o<d y`_NgQG3_3_$y_r$9_PB69_m&a`Ha&<m" aapJAfV`Jg"9_~adaPJAf63_&aH$y_v$9_TSy_f$y_z$9_XgBSfNupNu>GONp``"` ````` pNuJZNuJZNuf<E4NuJb,܅$Nu"9_~a.9_<HG69_GlCRF&y_~K` aJAfrQ*9_r$E_d(9_P3_B`SCjaXJAf>&y_~6<?a4SJf$y_v(9_TSy_fNu!y_~ .9_޹_`!G"y_~"""_r"_P"_v"_T"_z"_X.(,)ܙ,|_rzB_zbc.JQ"$hfpNBR@BNupr$<JHNCLRAX Afr A"g A#g A0mpNC @JX"$Ԑ&9h(9hp o#_b cbcBJQNuaVaRaNaJaFaBa>aLRX^bz*:HRZbNuAK#3X#X yNpNNp AYNNN 9 "y)jARA$3Y)kB3YRB6#YÐ#YByY rxt$yYBC:9YgSEB2050 50 DDDQB2050 50 GZVB+JXgzXlr)klPBikEl2A7Aa<( gJ"XoB4<jˆZDDo2 )X#Yit AoI `ABSF @ Q#Zt CYHJg "HA<0`AY/aa09|Nua .yXNB&yY:9YB30|QNupNHg0<NuB@NupNHgNI@NuNJNuNKNuNMNuNLNuByXag azp NNB@NuBA6A na fJmgCZV3Zng&Hp Ae0NNp AZ`NNL CZp$IB)gB8)&;C agVG"t*SBB#;E.SF;F(RF4J*VJVB;B,BB)gV)’4<jSA;A&(&KgLSDm,D$vk"HAJAfSFBYQ;A* 3XNu0KYfNuB>O*EO,F?OGJFNu3XNu3XNu#XNuaTfaf` af aQNu3Xa0fabf&`af0a|Q29XSfaJ@Nu&yY(yY69Y 29XaJ:9X B29XځJmNupByX89X B29X؁عYYl B yXr"DJ@Nu/ajgb30g30ga fLB29XB49YB>- 09X,܇Ё'0Ђn S'00X0a*J@Nu69Y 49XB30g30f 0m0oJs0 m630 `pyY g,230 430 7 m7 29Y 3Y 7 0 70 7 aJ@NuB8YNu yX"L"0rNuHa4p NNL8xAe0(NuH0ap NNL8xAe0(Nu 30$Ae1@ B30a1m"30R!A1| $L!JNupNHgB@Nu0<Nu0Jg B0NuAZ Nu09XNu3XNuB&yY(yY:9YB30g30g aa<@B30|Q0NuAA0A  Ag Adm A|o Am Ao Nu@AY?a0aNsg/NJ _`NutB@r@fJfr `vA0 9o^AHNJL QNu insufficient memory or bad file header$ read error on program load$ bad relocation information bits$V V$ V)V.V2V6V;NON-SYSTEM FILE(S) EXIST$Enter Filename: $Enter Old Name: $Enter New Name: $File already exists$No file$No wildcard filenames$Syntax: REN Newfile=Oldfile$Confirm(Y/N)? $Enter User No: $.SUB file not found$User # range is [0-15]$Too many arguments: $ ><.,=[];|&/()+-\&()+,-./:;<=>[\]|fT  $;Pz.!<!R!Z!b!j!!"H"6!FDIRDIRSTYPERENERAUSERSUBMITV^V,,,,-CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019 error on drive $ Do you want to: Abort (A), Retry (R)$, or Continue with bad data (C)$? $ $CP/M Disk file error: $ is read-only.$ Do you want to: Change it to read/write (C), or Abort (A)? $ $ CP/M Disk $read$write$select$select$change$?????????@@@ @*@2@V@l@@@@A A(ADAvAAAC8AAAAB6BXBxBBBC8C8BC8C8C8C8C8BCCC8C8C8C8C8C8C8C8C8C8CC8C$C8C. Exception $ at user address $. Aborted. bios error: vector error: CP/M - 68k 1.1 ( K ) LYZe Yd_   ?e Yd`,  ?e Ya  e Zb e ZFcX Zp|_submitR_morecmdR_autost _usercmd _ccp_patchRcpm_bdos___LOAD_cmd_tblS_msgS_msg2S_msg3T_msg4T_msg5T*_msg6T@_msg7TJ_msg8Tb_msg9T_msg10T_msg11T_msg12T_msg13T_load_trT_first_sT_chain_sT_end_of_T_dirflagT_subpromT_sub_indT_indexT_sub_useT_userT_cur_disT_user_ptT_glb_indU_tailU_delU_scan_cm_strcmpP_decode_delim_true_ch"_fill_fcZ_user_cm_cmd_fil8_dollarD_comment_submit__cr_lf$_copy_cm_prompt_echo_cm_check_c_get_cmd _get_par*_dir_cmd _type_cm 4_ren_cmd _era_cmdh_change__transla*_execute!&_main"vstack_J_bios1$_bios2$_bios3$_bios4$_bios5$_bios6$_traphnd$T_swap$_udiv$_constat$_conbrk$_conout%n_tabout%_cookdou&_getch&Z_conin&_rawconi&_prt_lin'_newline'@_backsp'v_readlin'_copyrtVB_serialVF_bdosini)_warmboo*z_prt_err*_abrt_er+_ext_err+*_ro_err+_error,_setexc-(_set_tpa-_rdwrt-_dir_rd._dir_wr._dchksum/_dirscan/@_setaloc0p_clraloc0_chkaloc1_getaloc1P_alloc1_seldsk2,_move3j_match3_openfil4_flushit4|_close4_close_f6_alltrue62_matchit6>_search6Z_create6_delete7j_rename8 _set_att8_extsize8_setran9_fsize9L_getsize9_free_sp:_blkindx:_blknum:_setblk;_do_io;^_new_ext;_calcext<_get_rc=4_bdosrw=~_log_dskW_ro_dskW_crit_dsW__bdos?\_tmp_selCj_do_phioC_pgmldD_initexcI_initL_gblsf2_parmf_dmag_save_sug_subfcbh _subdmah0_tpa_hph_tpa_lph_tpa_hth_tpa_lth_subcomh_cmdfcbiB`a XBNf`FC Runtime V01.08, Copyright(c) 1983, Digital ResearchXXXX-0000-654321 o#v"h&IB[b#zE?/ NBNPNVB odpN^NuNV0/"/ NBzd0< Af"NB0<NBN^NuNV.izNE.iNE.iNEa:@.H`a0`"a.,`a2``|bg|cg|fgNq .qfN^NuNV.iNE.iNEa:@BnBnBy.H`t=|=|>BgBg/<?<NBn >BgBg/<?<NBn >BgBg/<?<NBn >BgBg/<?<NBn >BgBg/<(?<NBn `=|=|`.j NE.a:>/NS2XO=@Jno>/<?.NT\OH-@JmTJnoN 9Bf, 9If" 9Of 9Sf=|=|`./<j3NEXO`./<jJNEXO`$`"| g$|fg,|ogx|qg Nq nf8Jnf B@3n3lB@3f3p3r3j3h>aJyg nf,.jcNEa8|@ .yf Jylg>BgBg/<?<NBr Jyng>BgBg/<?<NBr JylfJyngB?<0NBTOB?< NBTOJyjg8.jNEa7@ .yf>BgBg/<?<NBr Jyrg>BgBg/<?<NBr Jyfg>BgBg/<(?<NBr .jNE`./<jNEXOa7H@ .yfr=|BWB?.NP\OH-@Jm>/<?.NY\O=@Jnl$./<jNEXO.kNE` .k'NE nf >NNNqN^NuNV.k9NE.kbNEa6@.H`,aP`@a`:a `4aX`.>a"`$>a#``|f|b@0@f PN .qfNqN^NuNV.kNE.kNE.kNEa6@.H`BW/<aXOyj`BW?9/<a\Oyj`.aҁyj`.a yj`.kNE.kNE9g.kNE` .lNE.l NEa5P@ .bf y3j``H |grW hN09jy .qfNqN^NuNV.l3NE.lQNE.lNEa4@.H`r>/<aXOyr`n>?9/<a~\Oyr`N.ayr`<.aցyr`*.aځyr``H |gJrW hN09ry .qf/<lNEXO` Jn f.lNE` .lNERn`v.lNE.lNE.mNE.m@NE.maNE.mNE.mNE.mNEJn f .mNE.mNE.mNEa2@ .am .nn.H|=@ .xfJn fBn.nNE0.@Hмgz @JPg& .qg0n"|gz>/<n:NEXO .qf n2.AHҼg"A0 n0(|"n3@ n0nf n0(ngp`B@NqN^NuNV n=P n0|r `=@ n0| r `=@.nZNEJn fJnf.npNE`8 nf$ nf.nNE` .nNE` .nNE.nNE.nNEa1p=@0.`"Bn`0=|=|`"=|Bn``|dgذ|egذ|ogNq nqf> n0|2.t aA2.t aA"n2 n0ngp`B@NqN^NuNV n=P n0|r`=@.nNE0.`:.nNE`D.oNE`6.oNE`(.o!NE``J@g°|gʰ|gҰ|gNq.o-NE.o7NE.ofNE.onNEa04=@0.`>=|.oNE`>=|.oNE`*=|.oNE``|ag|bgʰ|cgNq nqf n0|?2.taA"n2 n0ngp`B@NqN^NuNV n=P n0| r `=@>ZW/<oNEXO.oNE.p NE.p-NE.p5NEa/6=@0.`PBn.pRNE`X=|.phNE`D=|.p~NE`0=|.pNE``|ag|bg|cgİ|dgNq nqf< n0|2.t aA"n2 n0ngp`B@NqN^NuNV n=P n=h n0|=@ n0|@=@ n0|@=@ n=h.pNE nf.pNE` .pNE.pNE nf.pNE` .pNE.qNEJnf.q NE`*.q(NE.qDNE>/<qpNEXO.qvNEa-@.H`6 n`H n`@ n`8.qNE.NA``|dg԰|ig|og|pgNq . f n0|2.AA2.AAn"n2 n1n n0nf n0(ngp`B@NqN^NuNV.qNE=|aR=@m >?.aTTO nf`.qNEa,~@.H`&BW?<?<P?<?<*?<BgBg?<?<P?<?<@?.a `BW?<?<P?<?<*?<BgBg?<?<(?<?<@?.a `BW?<?<P?<?<*?<Bg?<?<?<(?<?<@?.a `BW?<?<P?<?<*?<Bg?<?<?<(?<?<@?.a \`R>?<?< ?<?<?<?<?<?< ?<(?<?<@?.a `>?<?< ?<?<?<?<?<?< ?<(?<?<@?.a `>?<?< ?<?<?<?<?<?< ?<P?<?<@?.a `BW?<?<P?<?<*?<Bg?<?<?<#?<?<@?.a ``VBW?<@?.a LXO`DBn`> .qg . g.?<NL*TO``|a|b@0@g PN`0.qNEa* @.H`.rNE.]NAJnmB nl:0.@H @"|00 |2.|AA2.AHҼ"A3@ `.?<NL*TO`n.r;NE.]NA n(g nPf80.@H @"|00 |2.|A2.AHҼ"A3@ `.?<NL*TO`.r[NE.rxNE.]NA0.`p>?<?<*?<?.aPO`f>?<?<?<?.aPO`J>?<?< ?<?.aPO`.Jng.?<NL*TO`|g| g|g``J.rNE0.@Hм/p _h0(|f.rNE` .rNE`.rNEa(@ .sf0.@Hм @h`L .df20.@H @"|00||@2.AHҼ"A3@`.?<NL*TO`z.rNE.]NAJnoB nl:0.@H @"|00|2.|AA2.AHҼ"A3@`.?<NL*TO`.rNE0.@Hм/p _h0(|f.rNE` .rNE`.rNE0.@Hм/p _h0(|f>.rNE0.@H @"|00 ||(2.AHҼ"A3@ `<.rNE0.@H @"|00 ||P2.AHҼ"A3@ `.sNE0.@Hм/p _h0(|f.sNE` .sNE`.s!NE0.@Hм/p _h0(|f.s5NE` .s9NE`v.s=|`6 . g.?<NL*TO``|a|b@0@h PN .am( .rn 3Jnf 3l`3n . fTN^NuNV0.@Hм @1n 0.@H @"|00|2. |A2.AHҼ"A3@0.@H @"|00|2.|A2.AHҼ"A3@0.@H @"|00|2.|AA2.AHҼ"A3@N^NuNVJn gx0.@H @"|00|2. |AA2.AHҼ"A3@0.@H @"|00 |2. |AA2.AHҼ"A3@ 0.@H @"|00 |2.|A2.AHҼ"A3@ 0.@H @"|00|2.|AA2.AHҼ"A3@0.@H @"|00|2.|A2.AHҼ"A3@0.@H @"|00|2.|AA2.AHҼ"A3@0.@Hм @1n0.@H @"|00|2.|A2.AHҼ"A3@0.@H @"|00|2.|A2.AHҼ"A3@0.@H @"|00|2.|A2.AHҼ"A3@0.@H @"|00|2.|AA2.AHҼ"A3@0.@H @"|00|2. |AA2.AHҼ"A3@`80.@H @"|00 |2. |AA2.AHҼ"A3@ Jnfp33l nfp33nNqN^NuNV0.|A@.H>/<sNEXO n f>a.=@>a20.@H @"|00 ||f .sNE|A=| n n(.H>/<tNEXO>aR.Rn`.t NEBWa`0.@H @"|00 H|=@>/<t&NEXO0.@H @"|>/<tDNEXO0.@H @"|00 |=@>/<tfNEXO0.@H @"|00|=@>/<tNEXO0.@H @"|00H|=@>/<tNEXO0.@H @"|00|=@>/<tNEXO.tNE0.@Hм @(g.tNE` .uNE0.@H @"|00H|=@p2.AA@=@>/<uNEXO.u)NE0.@H @"|00H|f.uBNE` .uFNE0.@H @"|00|=@>/<uJNEXO0.@H @"|00H|=@>/<ulNEXO0.@H @"|00H|=@>/<uNEXO.uNE0.@H @"|00||f.uNE` .uNE0.@H @"|00H|=@>/<uNEXO.uNE0.@H @"|00||f.vNE` .v NE.vNE.v*NE0.@H @"|00H|g.vCNE` .vGNE.vKNE0.@H @"|00H|g.vdNE` .vhNE.vlNENqN^NuNV0.`.vnNE`.vNE`.vNE`.vNE`.vNE`.w NE.wINE`t.wWNE.wNE`X.wNE.wNE`>.wNE.wNE`$.xNE``| b@0@h PNNqN^NuNV0.@H @"|00 H|gRBn0.@H @"|00 H|2.AHҼh"A2AfB@`p=@0.@H @"|00 |2.AHҼh"A2AfB@`pn0.@H @"|00H|2.AHҼh"A2AfB@`pn0.@H @"|00|=@0n"|h00nfB@`pn0.@H @"|00H|=@0n"|h00nfB@`pnJngRn0.|o no=|`=|Rn0.NqN^NuNV.xNEaJ@ .afB@` .bfp` . fp``N^NuNV.x:NE09,H|=@0.`.xPNE`.xeNE.xNE`.xNE.xNE`.xNE.xNE.xNE>(/<yNEXO.y)NE>*/<yMNEXO`0.y[NE`"` J@gJ|gR|gf|gz`.yqNE.yzNE.yNE.yNE.yNE.z#NE.z+NE.zDNE.zLNEa@.H`p3f309,||3,`p3f309,||3,`zp3f309,||3,ad`Rp3f3y,`: .qg.?<NL*TO`|agT|bgr|cg|dg` .qfNqN^NuNV.zcNE.zNE>(/<zNEXO.zNE>*/<zNEXO.zNEap@.H`.{NE.{5NE.YNAJng3(`^.{DNE.{gNE.Y NAJng3*`, .qg.?<NL*TO`|dg|pgt` .qfNqN^NuNV.{tNE nf.{NE`,.{NEJf.{NE.{NE`, 9мr ./<{NEXO.{NE.| NEa0@.H`.|GNE.]NA0n-H o(/</.RNePO#p33p`DBp33p`. .qg.?<NL*TO``|dgư|egn` .qfB@H#"3&NqN^NuNV.|fNE09H|g.?<AaFTO09H|g.?<Ba(TOJg ng.2?<EaTO090H|=@0.|r `=@>/<|NEXO090|=@0.|R@=@>/<|NEXO.|NE.|NEa@.H`T.?<AaTTO`X.?<Ba@TO`D nf.|NE`.2?<EaTO`.}NE.}+NE.UNA0.r `=@Jno4 n l,090|2.|AA30p3h3`.?<NL*TO`.}PNE.UNAJno4 nl,090|2.SA|A30p3h3`.?<NL*TO`6 .qg.?<NL*TO``|a|b@0@h PN .qfNqN^NuNV. H>/<}vNEXO .E f .}NE n 0r h||l,0<"n 2t i|`=@>/<}NEXO` .}NE n 0H|?@=@>/<}NEXO n 0H>W/<~NEXO n (f.~1NE` .~\NENqN^NuNV. H>/<~NEXOa=@0.`.~NE.YNA ng ng ng n g n@fp3h30.`z n P` n 0|| "n 2`l n 0||@"n 2`V n 0||`"n 2`@ n 0||"n 2`*.?<NL*TO`H |irW hN`J .E f.~NE n P`b.NE.YNAJnm4 nl, n 0|2.|AA"n 2p3h3`.?<NL*TO`.$NE.YNA0.@=@Jnm4 n@l, n 0|2.|?AA"n 2p3h3`.?<NL*TO`Vp"n Qp3h3 .E f n P`.`,.?<NL*TO``H |iJrW hNNqN^NuNVj.CNEBn.\NE.a J.g.a=@m0.NEJnf.NE` .NE./<NEXOa *@ .qgJnf.H|=@BWBg?< /?.NBn =@Jnf0=|`n-|pBtBxB|-|=|=|`./<NEXO`BW/NS2XO=@BWB?.NP\OJno>/n?.NT\OH-@Jo<.NE.NA.NE.NA=|`./< NEXO>NN`./<NEXOJngBn n`ng.0NE`j .pЮto.VNE`L g.jNE`4 .Bf .Of .Of .Tg.NE`=|JngJng.NE.a jJ.g.a|=@mL=|.NEJnf.NE` .NE./<NEXOa @ .qg .yf Jnf`.H|=@BWBg?< /?.NBr H-@Jl./<NEXO` .NE`>/NPXO=@JnoT> /n?.NY\OH-@Jl./<5NEXO` .GNE>NN` .lNE`./<NEXOBnJngbNqN^NuNV n (:f. n am n bop` nJ(fB@` `p``pNqN^NuNVBn.NE.NEa"@ .am .bn~.H|=@>BgBg/<F?<NBn >BgBg0.Y@@Hм/ ?<NBn 09FH|f.NE`=|` .qg.?<NL*TOJng.>a8.NEaX@ .yg Bn|q` .qfNqN^NuNV0.Y@=@>a8=@>a<.NE0.|=@.H>/<BgBg/<F?<NBr J@g.SNE.}NE`.NEBn09HH|Lr h=@BnBn09F|noBn09FH|no=|09HH|nm|0n06|2.|AA"N4n3@0n06|2.|A"N4n3@9Sg@ nf809JH|n=@09HH|nl09HH|n`,0.29JI|A=@Jnn09HH|n09RH|gJnfJnf ngPn0n06|2.|AA"N4n3@ yLf&0n06||"N4n3@`$0n06||"N4n3@Rn`t0.HH@J@fJn f .NE.NEBnBn> 0.@?0.W09HH|@?/?.NBr =@JngnRnRn0.|mX>/<NEXO>?./<NE\O>BgBg0.@Hм/ ?<NBr ``9Sg0Jnf0.=@`09F|n=@`09FH|n=@>09HH|29HI|?/?.NBnPO=@JngfRn nmX>/<NEXO>?./<NE\O>BgBg0.@Hм/ ?<NBr ``=|JngJRn`d09FH|n09HH|nl09HH|nRn`09H|2.|A3H09T||3T09J|2.|A3J>BgBg/<F?<NBr =@Jng.NE.NE`>aNqN^NuNV.(NE0.Y@=@BnBn09F|noBn09FH|no0.HH@J@fJnf .6NE.8NEBW?.09HH|L?/?.NBn =@JngD>?./<:NE\O>BgBg0.@Hм/ ?<NBr `d09HH|Lr hnRn` Rn`>BgBg0.@Hм/ ?<NBr .hNENqN^NuNV.NK@ .Am .Zn. . g.NK| f.HNqN^NuNVBn.NK@ .Am .Zn. . g0.HЮ @Rn` .2.HЁ @B . fNqN^NuNV.NK@| f`=| .+g .-f" .+fp`p=@.NK@ nBP .0mD .9n< n0 .HA|"n2.NK@ .0m .9o?. n00.HN^Nup `p NV OH/0BhB2.!A!n 1n 1n/NN _,_0(N^NuNVH0.". NBLxN^NuNVH0.". NCLxN^NuNVHN`ZBW/<fNSXO>/<fNSXO>/<fNSXO-|f .2. HЁ @B=|*nJgJgHHм @gR`JgBG 2HЁ @JgN5pHHм @f85pHHм @g 5pH| `5pH" 4H҂"ARG`J5pg 2HЁ @BRG f0>NNBWBg/ RNO\O|g.R/<aXXO` N2n!MRn` N2n!|.?.NTO>NJJL N^NuNV.Nd>/.?<NY\O. Nd>/. ?<NY\O>/<?<NY\O>NJN^NuNV. /./<NE(PONqN^NuNVH*nBn n HR J@g޾<%g.H?NL*TORn`B. n <-@R Df n R R.| <0fG n R =|<*f-M n=PT n R `8<0m2<9n,JnlBnH2. A|=@ n R `=|<.fBn n R <*f-M n=PT n R `.<0m(<9n"H2. A|=@ n R `B.<lg<LfR. n R A-HH`R.J.g <I` <JV#.?<?< // NI8 J.gp`pH`RR.J.g <I` <JV#.Bg?< // NI8 J.gp`pH`R.J.g <I` <JV#.Bg?<// NI8 J.gp`pH`R.J.g <I` <JV#.Bg?<// NI8 J.gp`pH`\-M n-PX`L-M n0|@B.T`2.H?NL*TORn``H |r W h0N.Nd=@0.nl Jnm=n0.n=@J.fZ .0f, n -f"Sn. nH?NL*TORRn0.SnJ@o..H?NL*TO`Rn0.SnJ@o. nH?NL*TOR`Rn0.SnJ@o..H?NL*TO`Rn`0.NqJL N^NuNVH /<?.?./ /. nN*@fB(n g%H| lp0`p7@`B NqJL0N^NuNVH*n<.H n. nfzJgJEg SE``j nf&z JgJEg SE`JEf-`NPN^NuNVHBG|l0м.NKRG`JLN^NuNVH*n0-|g*.NKj-g .NcNB@H+@+@Bm m>NNNqJL N^NuNVH*n0-| |f. -<JFo >/-?NY\O>Gg mp`4-gJg-g;| `;| `Bm +mB@NqJL N^NuNVH*nSm m mH|R` ` .NLrNqJL N^NuNVH. *n Sm mH"m|R``.H?NMjTONqJL N^NuNVH*n-fp`-g m p`Jf&-f>NbN+@fm`m-g0Hм+@ f9g .NKj-g>`>/-?NT\O;@ Jm n m fm0`m p`Sm +m mH|RNqJL N^NuNVH. *n BF:-fp`&-fTJfN>NbN+@+@fm`2m>N`"J@gm@`;| H"mR`-gA+H +@ mR-gz>/-?NY\O<Bm `n-g>< g -мb" -:>/-?NY\O<+mBm `( -:>/-?NY\O<;| +mFg mp` H|NqJL N^NuNVH>N`*@fp`H|g>N`|>Nb$B@`g8f2 - l>B?.NP\O>/<f?.NY\Og>>"/</ 2/-/ NaB|g33~p`H.?<NTO|f33~p`>N`|>Nb$B@NqJL N^NuNVBW?. /.a:\ONqN^NuNVBW?. /.a"\ONqN^NuNV>?. /.a\ONqN^NuNVHNa>JGlp`>N`|0*@tJnf.f/.NeXOJ@f 0`\`.f/.NeXOJ@f0`<>/.?N^\OJ@g>Nb$3#3~p`0NqJL N^NuNVBBgNTON^NuNVH>N`*@fp`f0.`6+n `@ . ѭ`6>NQH+@ - Ю +@`p`,`J@gư|gȰ|g`Jl+| -NqJL N^NuNV>B?.a`\ONqN^NuNVH>N`*@fp`>H|gB`..?<#NTOJ@g33~p`gJ.o -.S.ggD>"/</ 2/-/ NaB|g33~p`>!/</ 2// NaB|g33~p`V+G -+@I2Gd gR` " Ҽ2ѭ`B` -.+@+m  -NqJL8N^NuNVBW?. /.a:\ONqN^NuNVBW?. /.a"\ONqN^NuNV>?. /.a\ONqN^NuNVHNa>JGlp`>N`|0*@tJn fJnf.f/.NeXOJ@f 0`\`.f/.NeXOJ@f0`<>/.?N^\OJ@g>Nb$33~p`0NqJL N^NuNVH*n :.H>N`(@fp`xgB@`lg3 3~p`Ng./ / NXPO`6f./ / a0PO` -EJo.,ggD>"/</ 2/,/ NaB|g33~p`>!/</ 2// NaB|g .`)G ,-@&L2 мdDJo@<f , o)l .`6`< fRR` SRR`` , o)l .NqJL8N^NuNVH*n(n ..-G --@ -g -ggD>"/</ 2/-/ NaB|g33~p`>!/</ 2/./ NaB|g33~p`r+n "-¼Ё&@2 мdJo SR`Jf - o+m .` RB -@Jo>!/./ /./ NaBH,ݮ ѭ   - o+m g .`Jf .`gB>"/</ 2/-/ NaB|g33~p``>!/</ 2/./ NaB|g  .`(߭ - o+m G2JoS` .NqJL8N^NuNVH*n(n ..gA-H n(g.?<NTOp`> n(g&L.?<NTO n(Hf >NJ n(g Am Zn H| `H n(g*  f$ n(gHH.?<NTO  n(gHH.?<NTOp`~l ` <*E.?< NTO.HH̼l0| .?<NTOGJo JoSS`Jo R "ҼNqJL8N^NuNVH*n :.H>N`(@fp`JnB@`g3 3~p`g>// aPO`g>// aPO`f./ / aPO`z-EBJon ,-@B ,gJgD>"/</ 2/,/ NaB|g33~p` ,", S¼n@>!/</ 2/./ NaB|g33~p`)n ,-@&L2, мd"Jo  f < g< `SR` мe2>"/</ 2/./ NaB|g .`$`@Jf , o)l .``JL8N^NuNVH*n(n ..-G --@ -gd -ggD>"/</ 2/-/ NaB|g33~p`D -"- S¼nB>!/</ 2/./ NaB|g33~p``>/ 2aXO+n "-¼Ё&@2 мd JoS`Jn$@ .ѭ -  o+m .`x>"/</ 2/./ NaB|g33~p`8R -@Jo<>"/./ /./ NaBH".g33~p` . . .ѭ - o+m Jf .`g>>"/</ 2/-/ NaB|g33~p`p@ -+@ -"- S¼n$>!/</ 2/-/ NaB`>/ 2a XOG2JoS` .NqJL8N^NuNVH*n>. 0SGJ@oB`JL N^NuNVH*n.. <.-GJo,  f0| .?NTOHH.?NTOS` .NqJL N^NuNVH*n 0.(@tG -:f*HHм @g H|`H|TBG  o>|l8 .g2HHм @g H|`H"K4G@RGR` .fBRBG  o8|l2HHм @g H|`H"K4G@ RGR` + fp`4 nf.?<NTO.?.NTO>|nB@`pNqJL8N^NuNVH>N`*@fB@`fB@`pNqJL N^NuNVHBG|l>aRG`JLN^NuNVH 0.*@t0.@B+|BB B-I мd ` м.dB`JL0N^NuNVH>.|e3 3~p`.0*@tf3 3~p` NqJL N^NuNVH? *n.. (n,.:.BJof.?<NTO+G.x.?NTOJ@g |o89~Bp d`BD 2HЁ` 0Hހ0H0Hր0@H` NqJL0N^NuNVH|BG|l f 0`RG`33~pNqJLN^NuNVH>.p2`F@HB@NqJLN^NuNVH>.ZGB0>RGJf <##By(y*Tmb80X@me(` 2Ё&@0-G7@&(;G# \`f>a*@ fB`(M*T`JL8N^NuNVH >.|?GG0>Nd*@fB` R*@(M9G.\a 9NqJL0N^NuNVH *n](yceeebf#`J(T` 2-Ёf T0(m T*`* 2,Ёf 0-l(`(#JL0N^NuNV .]-@ n0(=@> aT-@fB`.a@ .g~0. nd=n .d&-nJng n"nRRSn``< .B2.Ё-@0.H@B@H@ѮJngSS n"nSn` .NqN^NuNVH>.HμgR*Gz.N|fp`*yz߹z NqJL N^NuNVH *n(MJgR` NqJL0N^NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNVH..,. Jf#r <`Jc #rB`a,H>a"op`lp``B@NqJL0N^NuNVH. <am <zn< HNqJLN^NuCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital ResearchXXXX-0000-654321JgNuStack Overflow$C runtimeCON:LST: | v rbdops H \  4 bdops 4 ~ N l K% `X,nK2 @^8t4nZ~NR~n$'0'@'P'`'p'''''P(((((P# //00//0R @2`2l22221234q2 23v34 4SAGE Computer System Utility Package - Version 1.0 C(onfigure, B(oot copy, F(ormat, Q(uit? BIOS Configuration Manager O(n line or F(ile change to BIOS? Enter BIOS file? %s not Sage Bios file Cannot open file: %-20s Ready to write changes to memory? Ready to update terminal? Configuration written to memory Ready to write changes to %s?  Error writing new BIOS information to %s BIOS changes abandoned BIOS data saved. T(erminal, R(emote, F(loppys, P(rinter, M(emory-disk, S(ystem, Q(uit? Terminal Configuration B(aud rate, P(arity, S(top-bits, D(ata-bits, O(ptions, Q(uit? Terminal options: B(reak key enters Prom Debugger is ignored Type B to change Remote channel configuration B(aud-rate, P(arity, S(top-bits, D(ata-bits, O(ptions, Q(uit? Currently using %2.5d baud rateusing DIP switch setting 9600 baud rate A( 1 9200 baud H( 600 baud B( 9600 baud I( 300 baud C( 4800 baud J( 200 baud D( 2400 baud K( 150 baud E( 2000 baud L( 110 baud F( 1800 baud M( 75 baud G( 1200 baud N( 50 baud X) use DIP to specify baudrate Q(uit Select baudrate from above? Setting baudrate using DIP switch settings Setting baudrate to %2.5d rate Curently parity is selected by DIP switchesEvenOddDisabled D(isable E(ven parity O(dd parity Q(uit Select parity option: Currently stop bit assignment is invalid1 stop bit1.5 stop bits2 stop bits assigned A( 1 stopbit B( 1.5 stopbits C( 2 stopbits Q(uit Select stop bit option: Selected 1 stopbit Selected 1.5 stopbits Selected 2 stopbits Currently using %1.1d data bits A( 5 data bits B( 6 data bits C( 7 data bits D( 8 data bits Q(uit Select data size option: Selected 5 databits Selected 6 databits Selected 7 databits Selected 8 databits I - Xon/Xoff for input is enableddisabled O - Xon/Xoff for output is enableddisabled D - Data set ready is ignoredchecked before transmitting P - Polling interval (in 1/64000 second) %1.5d Select option to change ( for none)? Polling Interval? Floppy Parameter Maintance Select floppy option (CR to quit)? Select item to change (CR to quit)? Number of sides (0, 1, 2)? Number of Cylinders (40, 80)? Number of Sectors per Track (8, 10, 16) IBM track format: YesNo Density - S(ingle or D(ouble? Retries? Ignore errors: YesNo H - Read 48 or 96 TPI: YesNo NCI 10 sectors/track: YesNo Read after write: YesNo Number of bytes per Sector: Gap 3 parameter? Data length? Step rate? Gap 3 for formatting? Data pattern for formatting? Skew for formatting? Current drive %c: setup: Only read allowed on 80 track drive %c - Z - A - Number of Sides: %3.3d K - Bytes per sector %4.4d B - Cylinders: %3.3d L - Gap 3 parameter: %4.4d C - Sectors per Track: %3.3d M - Data length: %4.4d D - IBM track format: Yes No N - Step rate: %4.4d E - Density: SglDbl O - Gap 3 for format: %4.4d F - Retries: %3.3d P - Pattern for format: %3.3d G - Ignore errors: Yes No R - Skew for format: %5.5d H - Read 48 on 96 TPI: Yes No Z - Standard options I - NCI 10 sects/trk: Yes No J - Read after write: Yes No Non standard typeSAGE double side, 80 track (1280 blocks)SAGE double side, 40 track ( 640 blocks)IBM single side, 40 track (320 blocks)IBM double side, 40 track (640 blocks)Network Consulting single side, 40 track (400 blocks)Network Consulting double side, 40 track (800 blocks)Network Consulting double side, 80 track (1600 blocks)Softech Universal Medium, single side, 35 track (280 blocks)No drive equipped Select drive (A or B, CR to quit? Printer Configuration Printer is disabled Printer is using (Remote) serial Channel Printer on parallel (Centronics) port with interupts Printer is on parallel port with scheduled polling Polling attempts befor schedule delay: %d Delay is 1/64000's second before re-polling %d Unknown printer mode Modes: A( printer on Remote Channel (set up using Remote serial channel parameters B( printer on parallel port with interupts C( printer on parallel port with scheduled polling D( printer is disabled Q(uit Select printer mode? Printing with Scheduled Polling selected P(olling attemps befor scheduled delay: %d D(elay in 1/64000's second before re-polling: %d Select P(olling, D(elay, Q(uit: Polling attempts (236 = 1 millisecond)? Delay in 1/64000's second before re-polling? Ram Disk Configuration Update to Online bios not allowed Ram disk is disabled (TPA fills available memory) TPA is %ld K (Ram disk fills remaining available memory) E(nable / D(isable ram disk, Q(uit? Enter TPA size in kilobytes ? CPM system configuration F( Disk I/O buffer size: %5d G( Number of disk I/O buffers: %4d Q(uit Enter Selection (A  - Q)? Update to Online bios not allowed Enter buffer size in bytes (it will be rounded to 512 bytes)? Enter number of I/O buffers (1-16)? %c( Drive configuration: (Ram disk) 1( Logical block size: %5d 1( Logical block size: Undefined 3( Number of directory entires: %5d 2( Directory track offset: %5d 4( Disk media: Fixed 4( Disk media: Removable Select Subgroup for drive %c: (1 - 4, Q)? Block size (1024,2048,4096,8192,16384) Track offset allways 0 for ram disk Directory offset (0 - 7) tracks ? Number of directory entries? Bootstrap Copy Utility Source file or device ? Ready to load bootstrap from volumnfile %s ? Error reading %s Enter starting track ? Enter number of directory entries? Error reading %s Cannot find file %s Text, Data, BSS areas not contiguous Code file too long Starting address not at 400 File not boot file Destination file or device ? Ready to store bootstrap on volumnin file %s ? Error writing %s Bootstrap data written successfully Error writing %s Bootstrap file created successfully Cannot open output file Illegal file or device %s Floppy Diskette Formatter Drive to be formatted (A or B) ? Drive not equipped More diskettes to format? Is diskette ready for formatting in drive %c: ? Format aborted Error writing drive status with format parameters Formatting . Error %d while formating Cylinder %d Head %d Error %d while checking Cylinder %d Head %d Error writting drive status with parameters Verification . Error while verifying Cylinder %d Head %d Format CompleteCannot open Cannot create CDOSUXcdosuxGFGDGFGGFGHGFGH  !!!!"__breakz__start___cpmrv~__basev_brk___BDOS___pnamef___tnamef___lnamef___xeoff_main_readchr@_configu@_boot4@_format8_readlinAF_bioscng F_chngter _chngrem _chngflo0_chngprt)_chngmem-6_chngsys._baudcon _parity_stopbit_databit\_xonoffr_mainflo)_descflo"_sf_setflop_whatflo(_writest'$_pollprt,(_prtcpmb0_chgcpmb1_checkna8l_genform9_verifyd?_getintA_ureadBn_uwriteBr_bdosB_biosB__mainB__errD_printfE__doprtE(___prtinI8___prtldI___prtshJV_exitJ__cleanuJ_fcloseK_fflushKj_fgetcK_fputcL*__filbufLr__flsbufMj__iob_closeN_creatO__creatP_creataO_creatbP__exitP_lseekP_tellQ__fileszQ_openS__openSL_openaS_openbS2_readT__rdbinU__ttyinX_writeY__chrout^__wrtbin[__clear^z___open^_isatty`"__chinit`Z___chini`|__chkc`__blkioaB__chvec_allocca_freecb$_mallocbN_freecN_reallocc_sbrkd_errno__errcpm___atab_strlendlmule_uldivrr_uldivel__strcmpe___cpyrtf^_tomsf_fstat_change_biosdat_ostatF_prtoutf_sysouth_termoutj_fd0outl_fd1outn_memoutp_remoutr__fdst /************************************************** * * * Sage Utility Routine * * * * Sage Utility routine supports system and * * disk parameter configuration. * * * * The boot routine and CPM disk parameters * * can be either copied from another bootdisk * * or from a file.  * * * * Disks can be formated using this routine * * * * CPM system configuration can be controlled * * * * Developement history: * * date modification * * --------- ------------------------------- * * 25-Feb-83 Release of version 1.0 * * 10-Mar-83 Add disk system reset to force * * new disk configuration * * * * * **************************************************/ /* * Include files */ #include /* * Global program definitions */ #define version 1 /* version number */ #define cr '\n' /* carraige return */ #define true 1 /* true value */ #define false  0 /* false value */ #define online 1 /* online update of configuration */ #define infile 2 /* file update of configuration */ #define disable 0 /* parity disabled */ #define enable 1 /* parity enable */ #define odd 0 /* parity odd */ #define even 1 /* parity even */ #define termchng 0 /* terminal request */ #define remchng 1 /* remote request */ #define bell 7 /* bell */ #define device 0  /* device I/O */ #define filename 1 /* filename */ #define rsdsk 13 /* BDOS reset disk system */ #define flush 48 /* BDOS flush disk system */ /* * Global variable definitions */ int fd0out; /* floppy A: updated */ int fd1out; /* floppy B: updated */ int termout; /* console updated */ int remout; /* remote channel updated */ int memout; /* ramdisk updated */ int sysout; /* system configuration updated */ int prtout; /* printer updated */ int change; /* modification flag */ struct cpmdef { unsigned fixed : 1; unsigned cpmunused : 3; unsigned fileoff : 3; unsigned dirsize : 6; unsigned blcksize : 3; }; struct flop { /* standard floppy definitions */ struct { unsigned cylinders : 8; unsigned sides : 8; } f1; struct {  unsigned gap3 : 8; unsigned sectrack : 8; } f2; struct { unsigned datalenth : 8; unsigned skew : 8; } f3; int bytessec; int motordel; struct { unsigned headload : 8; unsigned steprate : 8; } f4; struct { unsigned IBMflag : 1; unsigned NCIflag : 1; unsigned RAWflag : 1; unsigned dummy : 5; unsigned MFMflag : 8; } f5; struct { unsigned ignorerr : 8; unsigned retries : 8; } f6; struct { unsigned doublestp : 8; unsigned softerror : 8; } f7; struct { unsigned gap3for : 8; unsigned patfor : 8; } f8; struct { unsigned lasterr : 8; unsigned firsterr : 8; } f9; int dum[4]; struct cpmdef dskspc; }; struct serial {   /* serial channel definitions */ int baud; unsigned int par; }; struct biosinf { /* Bios information */ char name[4]; int biossize; int biosbuffers; int biosstart; int biosversion; struct flop flpy[2]; struct serial term; struct serial rem; int remdelay; int remdsr; long rambot; long ramtop; int ramdum; int prttimeo;  int prtpoltim; struct { unsigned prtopt : 8; unsigned prtmode : 8; } p; int timecntrl; struct { unsigned numbuf : 8; unsigned bufsize : 8; } cpmx; struct cpmdef ramspc; int dumblk[9]; } biosdata; struct flop ostat; struct flop fstat; /* * Outer level command processer */ main() { char command; printf("SAGE Computer System Utility Package "); printf("- Version 1.0 \n"); do { printf("\n C(onfigure, B(oot copy, F(ormat, Q(uit? "); command = readchr(); switch (command) { case 'c' : configur(); break; case 'b' : boot(); break; case 'f' : format(); break; }; } while (command != 'q'); } /*********************************************** * * * Configuration routines * * * ***********************************************/ /* * Main configuration routine */ configur() { char cngcntrl; /* configuration command */ int quit; /* quit command flag */ char s[100]; /* file name */ long ioret; /* I/O request return */ int accept; /* Request completed succesfully */ int update; /* Update online/infile */ int biosfd; /* Bios file number */ int wrtret; /* Write return */ printf("\nBIOS Configuration Manager"); do { printf("\n O(n line or F(ile change to BIOS? "); cngcntrl = readchr(); accept = false; quit = false; change = false; switch (cngcntrl) { case 'o' : accept = true; update = online; uread(128,&biosdata.flpy[0],0,0,4);  uread(128,&biosdata.flpy[1],0,0,5); uread(128,&biosdata.term.baud,0,0,2); uread(128,&biosdata.rem.baud,0,0,8); uread(128,&biosdata.prttimeo,0,0,6); break; case cr : case 'q' : accept = true; quit = true; break; case 'f' : printf("\nEnter BIOS file? "); readlin(s); biosfd = openb(s,2); if (biosfd > 0)  {ioret = read(biosfd,&biosdata,128);}; if ((ioret >= 0) && (biosfd > 0)) { if ((biosdata.name[0] == 'B') && (biosdata.name[1] == 'I') && (biosdata.name[2] == 'O') && (biosdata.name[3] == 'S')) { accept = true; update = infile; } else {printf("\n%s not Sage Bios file",s);}; } else printf("\nCannot open file: %-20s",s); break; }; } while (accept != true); if (quit == false) { fd0out = fd1out = false; sysout = termout = remout = memout = prtout = false; bioscng(update); if (change) { if (update == online) { printf("\nReady to write changes to memory? "); cngcntrl = readchr(); if (cngcntrl == 'y') { if (fd0out) uwrite(128,&biosdata.flpy[0],0,0,4); if (fd1out) uwrite(128,&biosdata.flpy[1],0,0,5); if (fd0out || fd1out) {bdos(flush,0l); bdos(rsdsk,0l);}; if (termout) { printf("\nReady to update terminal? "); cngcntrl = readchr(); if (cngcntrl == 'y') uwrite(128,&biosdata.term.baud,0,0,2); }; if (remout) uwrite(128,&biosdata.rem.baud,0,0,8); if (prtout) uwrite(128,&biosdata.prttimeo,0,0,6); printf("\nConfiguration written to memory"); }; } else { printf("\n\nReady to write changes to %s? ",s); cngcntrl = readchr(); if (cngcntrl == 'y') { wrtret = -1; ioret = lseek(biosfd,0l,0); if (ioret >= 0) wrtret = write(biosfd,&biosdata,128); if (wrtret < 0) {printf("\nError writing new BIOS information to %s", s); printf("\nBIOS changes abandoned");} else {printf("\nBIOS data saved.");}; }; }; }; if (update == infile) close(biosfd); }; return; } /* * Bios update control routine */ bioscng(update) int update; {  char chngreq; do { printf("\nT(erminal, R(emote, F(loppys, P(rinter,"); printf(" M(emory-disk, S(ystem, Q(uit? "); chngreq = readchr(); switch (chngreq) { case 't' : chngterm(); break; case 'r' : chngrem(); break; case 'f' : chngflop(); break; case 'p' : chngprt(); break; case 'm' : chngmem(update); break; case 's' : chngsys(update); break; }; } while (chngreq != 'q'); return; } /* * Terminal configuration routine */ chngterm() { extern int termout, change; char termreq; char brksel; printf("\nTerminal Configuration"); do { printf("\nB(aud rate, P(arity, S(top-bits, "); printf("D(ata-bits, O(ptions, Q(uit? "); termreq = readchr(); switch (termreq) { case 'b' : termout |=baudconv(&biosdata.term.baud,termchng);  break; case 'p' : termout |=parity(&biosdata.term.par, biosdata.term.baud, termchng); break; case 's' : termout |=stopbit(&biosdata.term.par); break; case 'd' : termout |=databit(&biosdata.term.par); break; case 'o' : printf("\nTerminal options:"); printf("\n B(reak key "); if (biosdata.term.par & 1)  {printf(" enters Prom Debugger");} else {printf(" is ignored");}; printf("\nType B to change "); brksel = readchr(); if (brksel == 'b') { biosdata.term.par ^= 1; termout = true; }; break; }; change |= termout; } while (termreq != 'q');  return; } /* * Remote channel configuration */ chngrem() { char remchr; printf("\nRemote channel configuration"); do { printf("\nB(aud-rate, P(arity, S(top-bits, D(ata-bits, "); printf("O(ptions, Q(uit? "); remchr = readchr(); switch (remchr) { case 'b' : remout |=baudconv(&biosdata.rem.baud,remchng); break; case 'p' : remout |=parity(&biosdata.rem.par,  biosdata.rem.baud,remchng); break; case 's' : remout |=stopbit(&biosdata.rem.par); break; case 'd' : remout |=databit(&biosdata.rem.par); break; case 'o' : remout |=xonoff(&biosdata.rem.par); break; }; change |= remout; } while (remchr != 'q'); return; } /* * Serial channel baudrate setup */ baudconv(pbaud,changtyp) int *pbaud; int changtyp; { int obaud; int obaud1; int baudsel; char baudchr; static int rate[14] = {0,19200,9600,4800,2400,2000, 1800,1200,600,300,200,150,110,75,50}; static int factor[14] = {0,2,4,8,16,19,21,32,64,128, 192,256,350,512,769}; obaud = *pbaud; obaud1 = *(pbaud+1); for ( baudsel = 0; baudsel <= 14; baudsel++) { if (factor[baudsel] == *pbaud) { printf("\nCurrently using ");  if (rate[baudsel] != 0) {printf("%2.5d baud rate",rate[baudsel]);} else { if (changtyp == termchng) {printf("using DIP switch setting");} else {printf(" 9600 baud rate");}; }; }; }; do { printf("\n A( 19200 baud H( 600 baud"); printf("\n B( 9600 baud I( 300 baud"); printf("\n C(  4800 baud J( 200 baud"); printf("\n D( 2400 baud K( 150 baud"); printf("\n E( 2000 baud L( 110 baud"); printf("\n F( 1800 baud M( 75 baud"); printf("\n G( 1200 baud N( 50 baud"); printf("\n"); if (changtyp == termchng) printf("\n X) use DIP to specify baudrate"); printf("\n Q(uit"); printf("\n\nSelect baudrate from above? "); baudchr = readchr(); if ((baudchr >= 'a') && (baudchr <= 'n')) {baudsel = baudchr - ('a'-1);}; if ((baudchr == 'x') && (changtyp == termchng)) {baudsel = 0; printf("\nSetting baudrate using DIP switch settings");}; if (rate[baudsel] != 0 && baudchr != 'q') {printf("\nSetting baudrate to %2.5d rate",rate[baudsel]);}; } while (baudchr != 'q'); *pbaud = factor[baudsel]; *(pbaud+1) = *(pbaud +1) & 0xfffc + 2; return (((obaud != *pbaud) || (obaud1 != *(pbaud+1))) ? true : false); } /* * Parity initialization routine */ parity(param,baudrate,changtyp) int *param; int baudrate; int changtyp; { int oparam; int parstat; int parsex; int parsel; oparam = *param; parstat = (*param & 0x1000) >> 12; parsex = (*param & 0x2000) >> 13; do { printf("\n\nCurently parity is "); if((baudrate == 0) && (changtyp == termchng))  {printf("selected by DIP switches");} else { if (parstat == enable) {if(parsex == even) {printf("Even");} else {printf("Odd");};} else {printf("Disabled");}; }; printf("\nD(isable\nE(ven parity\nO(dd parity\nQ(uit"); printf("\n\nSelect parity option: "); parsel = readchr(); switch (parsel) { case 'd' : parstat = disable; break; case 'e' : parstat = enable; parsex = even; break; case 'o' : parstat = enable; parsex = odd; break; } } while (parsel != 'q'); *param = (*param & 0xcfff) + (parstat << 12) + (parsex << 13); return ((oparam != *param) ? true : false); } /* * Stop-bit selection */ stopbit(param) int *param; { int oparam; int stopstat; int stopsel; oparam = *param; stopstat = (*param & 0xc000) >> 14; do { printf("\nCurrently "); switch (stopstat) { case 0 : printf("stop bit assignment is invalid"); break; case 1 : printf("1 stop bit"); break; case 2 : printf("1.5 stop bits"); break; case 3 : printf("2 stop bits"); break; }; printf(" assigned"); printf("\n A( 1 stopbit\n B( 1.5 stopbits\n C( 2 stopbits"); printf("\n Q(uit"); printf("\n\nSelect stop bit option: "); stopsel = readchr(); switch (stopsel) { case 'a' : stopstat = 1; printf("\nSelected 1 stopbit"); break; case 'b' : stopstat = 2; printf("\nSelected 1.5 stopbits"); break; case 'c' : stopstat = 3; printf("\nSelected 2 stopbits"); break; } } while (stopsel != 'q'); *param = (*param & 0x3fff) + (stopstat << 14); return ((oparam != *param) ? true : false); } /* * Data-bit selection */ databit(param) int *param; { int oparam; int datastat; int datasel; oparam = *param; datastat = (*param & 0xc00) >> 10; do { printf("\n\nCurrently using %1.1d data bits",5+datastat); printf("\n A( 5 data bits\n B( 6 data bits"); printf("\n C( 7 data bits\n D( 8 data bits"); printf("\n Q(uit"); printf("\n\n Select data size option: "); datasel = readchr(); switch (datasel) {  case 'a' : datastat = 0; printf("\n Selected 5 databits"); break; case 'b' : datastat = 1; printf("\n Selected 6 databits"); break; case 'c' : datastat = 2; printf("\n Selected 7 databits"); break; case 'd' : datastat = 3; printf("\n Selected 8 databits"); break; }; } while (datasel != 'q'); *param = (*param & 0xf3ff) + (datastat << 10); return ((oparam != *param) ? true : false); } /* * Xon & Xoff enable/disable routine */ xonoff(param) int *param; { int oparam; int oparam1; char selxon; int xonin; int xonout; int dsr; int delay; oparam = *param; oparam1 = *(param+1); xonin = (*param & 1); xonout = (*param & 2) >> 1; dsr = (*param & 4) >> 2; delay = *(param+1); do { printf("\n I - Xon/Xoff for input is "); if (xonin == 1) {printf("enabled");} else {printf("disabled");}; printf("\n O - Xon/Xoff for output is "); if (xonout == 1) {printf("enabled");} else {printf("disabled");}; printf("\n D - Data set ready is "); if (dsr == 0) {printf("ignored");} else { printf("checked before transmitting"); printf("\n P - Polling interval (in 1/64000 second) "); printf("%1.5d",delay); }; printf("\n\nSelect option to change ( for none)? "); selxon = readchr(); switch (selxon) { case 'i' : xonin ^= 1; break; case 'o' : xonout ^= 1; break; case 'd' : dsr ^= 1; break; case 'p' : printf("\n Polling Interval? "); getint(&delay); break; }; } while (selxon != cr); *param = (*param & 0xff00) + xonin + (xonout << 1) + (dsr << 2); *(param+1) = delay; return (((oparam != *param) || (oparam1 != *(param+1))) ? true : false); } /* * Floppy configuration routine */ chngflop() { int drv; int standard; int tmp, tmp1; char ch, ch1; printf("\nFloppy Parameter Maintance"); standard = true; if((drv = mainflop()) >= 0) { do { descflop(drv,standard); if (standard == true) { printf("\nSelect floppy option (CR to quit)? "); ch = readchr(); switch (ch) { case 'a' : sf(drv,64,2,80,8,0,0,512,42,255,80,229,0); break; case 'b' : sf(drv,64,2,40,8,0,0,512,42,255,80,229,0); break; case 'c' : sf(drv,64,1,40,8,1,0,512,42,255,80,229,0); break; case 'd' : sf(drv,64,2,40,8,1,0,512,42,255,80,229,0); break;  case 'e' : sf(drv,64,1,40,10,1,1,512,24,255,32,229,2); break; case 'f' : sf(drv,64,2,40,10,1,1,512,24,255,32,229,2); break; case 'g' : sf(drv,64,2,80,10,1,1,512,24,255,32,229,2); break; case 'h' : sf(drv,64,1,35,8,1,0,512,42,255,80,229,0); break; case 'i' : sf(drv,64,0); break; case 'z' : standard = false; break; default : if (ch != 'q' && ch != cr) putchar(bell); break; }; } else { printf("\nSelect item to change (CR to quit)? "); ch = readchr(); switch (ch) { case 'a' : printf("\nNumber of sides (0, 1, 2)? "); getint(&tmp); if((tmp >= 0) && (tmp < 3)) {biosdata.flpy[drv].f1.sides = tmp;} else {putchar(bell);}; break; case 'b' : printf("\nNumber of Cylinders (40, 80)? "); getint(&tmp); if ((tmp == 40) || (tmp == 80)) {biosdata.flpy[drv].f1.cylinders = tmp;} else {putchar(bell);}; break; case 'c' : printf("\nNumber of Sectors per Track"); printf(" (8, 10, 16) "); getint(&tmp); switch (tmp) { case 8 : setflop(tmp,512,42,255,drv); break; case 10 : setflop(tmp,512,24,255,drv); break; case 16 : setflop(tmp,256,10,255,drv); break;  default : if (tmp != 0) {putchar(bell);}; }; break; case 'd' : printf("IBM track format: "); if ((biosdata.flpy[drv].f5.IBMflag ^= 1) == 1) {printf("Yes");} else {printf("No");}; break; case 'e' : printf("\nDensity - S(ingle or D(ouble? "); ch1 = readchr(); if (ch1 == 's') {biosdata.flpy[drv].f5.MFMflag = 0;} else if (ch1 == 'd') {biosdata.flpy[drv].f5.MFMflag = 64;} else {putchar(bell);}; break; case 'f' : printf("Retries? "); getint(&tmp); if ((tmp > 0) && (tmp < 20)) {biosdata.flpy[drv].f6.retries = tmp;} else {putchar(bell);}; break; case 'g' : printf("\nIgnore errors: "); if((biosdata.flpy[drv].f6.ignorerr ^= 1) == 1) {printf("Yes");} else {printf("No");}; break; case 'h' : printf("\nH - Read 48 or 96 TPI: "); if((biosdata.flpy[drv].f7.doublestp ^= 1) == 1) {printf("Yes"); biosdata.flpy[drv].f1.cylinders = 40;} else {printf("No"); biosdata.flpy[drv].f1.cylinders = 80;}; break; case 'i' : printf("\nNCI 10 sectors/track: "); if((biosdata.flpy[drv].f5.NCIflag ^= 1) == 1) {printf("Yes");} else {printf("No");}; break; case 'j' : printf("\nRead after write: "); if((biosdata.flpy[drv].f5.RAWflag ^= 1) == 1) {printf("Yes");} else {printf("No");}; break; case 'k' : printf("\nNumber of bytes per Sector: "); getint(&biosdata.flpy[drv].bytessec); break; case 'l' : printf("\nGap 3 parameter? "); getint(&tmp); if (tmp > 0 && tmp < 256) {biosdata.flpy[drv].f2.gap3 = tmp;} else {if(tmp != 0) putchar(bell);}; break; case 'm' : printf("\nData length? ");  getint(&tmp); if (tmp > 0 && tmp < 256) {biosdata.flpy[drv].f2.datalenth = tmp;} else {if (tmp != 0) putchar(bell);}; break; case 'n' : printf("\nStep rate? "); getint(&tmp); if (tmp > 0 && tmp <= 32) { tmp1 = biosdata.flpy[drv].f4.steprate;  tmp = (tmp1 % 16)+(16*(16-((tmp+1) / 2))); biosdata.flpy[drv].f4.steprate = tmp;} else {if (tmp != 0) putchar(bell);}; break; case 'o' : printf("\nGap 3 for formatting? "); getint(&tmp); if (tmp > 0 && tmp < 256) {biosdata.flpy[drv].f8.gap3for = tmp;} else  {if (tmp != 0) putchar(bell);}; break; case 'p' : printf("\nData pattern for formatting? "); getint(&tmp); if (tmp > 0 && tmp < 256) {biosdata.flpy[drv].f8.patfor = tmp;} else {if (tmp != 0) putchar(bell);}; break; case 'r' : printf("\nSkew for formatting? "); getint(&tmp); if (tmp >= 0 && tmp < 256) {biosdata.flpy[drv].f3.skew = tmp;} else {putchar(bell);}; break; case 'z' : standard = true; break; default : if (ch != cr) {putchar(bell);}; break; }; if ((ch >= 'a') && (ch <= 'r')) { change = true; if (drv == 0)  {fd0out = true;} else {fd1out = true;}; }; }; } while (ch != cr); }; } /* * Set floppy sector parameters */ setflop(setsec,setbyt,setgap,setlen,drive) int setsec,setbyt,setgap,setlen, drive; { biosdata.flpy[drive].bytessec = setbyt; biosdata.flpy[drive].f2.gap3 = setgap; biosdata.flpy[drive].f3.datalenth = setlen; biosdata.flpy[drive].f2.sectrack = setsec; } /* * Set standard floppy parameters */ sf(drv,mfm,sid,cyl,sec,ibm,nci,byt,gap3,datal,gap3f,patfor,skw) int drv,mfm,sid,cyl,sec,ibm,nci,byt,gap3,datal,gap3f,patfor,skw; { if (sid != 0) { biosdata.flpy[drv].f5.MFMflag = mfm; biosdata.flpy[drv].f1.sides = sid; biosdata.flpy[drv].f1.cylinders = cyl; biosdata.flpy[drv].f2.sectrack = sec; biosdata.flpy[drv].f5.IBMflag = ibm; biosdata.flpy[drv].f5.NCIflag = nci;  biosdata.flpy[drv].bytessec = byt; biosdata.flpy[drv].f2.gap3 = gap3; biosdata.flpy[drv].f3.datalenth = datal; biosdata.flpy[drv].f8.gap3for = gap3f; biosdata.flpy[drv].f8.patfor = patfor; biosdata.flpy[drv].f3.skew = skw; } else {biosdata.flpy[drv].f1.sides = sid;}; if (drv == 0) fd0out = change = true; if (drv == 1) fd1out = change = true; return; } /* * Describe floppy parameters */ descflop(drive,stand) int drive; int stand; { int temp; char tempc; tempc = 'A' + drive; printf("\n\nCurrent drive %c: setup:\n",tempc); if (stand == true) { temp = whatflop(drive); writestd(temp); if (biosdata.flpy[drive