IMD 1.17: 5/01/2010 22:19:17 cp/m distribution diskette (md3) 64k cp/m vers 2.2 rev 3.1a 1984 double sided :0™! 666 6 ~666 6 ~!}(0C Wrong revision of ROM. This version of CP/M requires ROM Rev. 3.x \XINIT COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<ܯ2 ݇!2:2a{_:ʖ:>Ľʖ:=2–!B!6#5ʖ:Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "޷"͌#>?͌͘ =_.:;<> Oޅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER"+!yO#< Ty#O 3߯21y_͸2y2ͽ:ܷ˜1͘A͌>>͌92^ :¥.!_~#fow]!v"!çREAD ERRORçNO FILE^: ! ~ 3#0 Wx x ހ ނ G ~ # 3x~#B!Y~ɯ2:=!ý:=!:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ w4!Y~ʆ͌†t=ʆf ^ T 2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Ypsp2mÆÆf ͧÆFILE EXISTS _: É: :ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~22\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: ! Â$$$ SUB"+"C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!!>2CP/M error: Drive A $invalid.$file read only.$ile R/O$:BA2!~6 O͐  :E @B2>: b# : y! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: !  Hù H H $O͐: 2 *CN# x: 2 p&>~+é72 H! >w_: ! 5ͤNkͱ¦ͱxʊ#Nx: ! 2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:Eẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2 X êRLvØóøýK,8171*!666 6 Z6666 D!ͽ>222!"!"*"~ w 66:O:>~:>!O ~y#~yph4 6:( N>!ˆ>K(!^ˆO˿!4 5~W~˾ v(˶ 0  ˾g(2>7>( (˶> 0>K( v(E:(c(~>;#+~O>;bkB85r+s###^#V Br+s+6###!(~( v F##^7>;>; r+s##6#6#6!(~?w>(~ (N C(>>;r+s##^6#Vs#{:_~r!( ˾˿ ˋ {2ú˶!#^#V#͈!!H)G(y:(o ` (y:(o :8 2 >2::(g.(.> =7g>=80:(o ͈!!͈f!9>(1C͈Xf![&!tly2y2C1͈f  ͈f#Gx ~ >  ʭʭi`#z n& ~ !͈!͈ !͈~RQ",ddF-dvdd!(0(0(0(0(0 ls: Macro :Q*E!}"]}$^}$_}!} >0"?%O;.0~<=r0:@<2@:@:@=2@<#~^0:@^0:@^07"?:?=2? &0*F=~ 0 0U 0"F=0>&2?>1&0:?0>&;:2?*@~ 1=1O+1 0x+~10:@*@~<1=11O+11 #1x+~111<*F=U 0w1G~# \1 d10P1x0G0&06 "F= ʐ1 ʐ16 Ö10}1ͱ k1å1ͱ k10ß1 ;1ù1:0 ʞ: ù1:: 1 1:"%@ʞ: ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_ Your lower drive is being re-assigned as drive A. Exchange diskettes and press [RETURN]=( !"#$%&'()Ll M:m: :J*j* *Kk Ii  Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. 3.1 Copyright '76,'77,'78,'79,'80 Digital Research, Inc. Copyright 1982,1983,1984 Morrow Designs, Inc. ************** Double Sided System ************** 1!22!Þ@$@B B HH II$@DI ABI$"$H$H@$$I! H*  $H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"DMOVCPM COMf PILOT COMv XSTATEX PLYCPMENU PILMICRO PILt !"#TUTORIALPIL=$%&'MDWORK PILV()*+,-./012345PIP COM:6789STAT COM):;<SYSGEN COM =FORMAT COM>?BACKUP COM@ASUBMIT COM BXSUB COMCAUTO COMDSETUP COM:EFGHFOREIGN COMIPAUSE COMJRETURN COMKASM COM@LMNODDT COM&PQRED COM4STUVLOAD COMWDUMP COMXKEY COM/YZ[DEFAULT KEY\DUMP ASM!]^_CBOOT MAC `CBIOS MACOabcdefghijklmINIT PILnINIT COMNpqrstINIT 001uINIT 002 vINIT 003bwxyz{|}~TERMINALDATKEY COM3o&>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*\X COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<2 !2:2a{_:ʖ:>Ľʖ:=2–!B!6#5ʖ:Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ ""͌#>?͌͘ =_.:;<> Oo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER"+!yO#< Ty#O 321y_͸2y2ͽ:˜1͘A͌>>͌92^ :¥.!_~#fow]!v"!çREAD ERRORçNO FILE^:,COPYRIGHT (C) DIGITAL RESEARCH, 1980 1] ʑ?ʑ! __0 r))) O @|r}r.g))å{O INVALID MEMORY SIZE$!$ʡ~/w/wʔ|g*"T|?¸>@G!g>0w#w!h4~:60+4XO!N#F! ix, # =!v"T!Q6!O#+hw+wT >ZxG}o|g"V! :m c p!"xp ~#c*V!:m ʅ xä SYNCRONIZATION ERROR$ {°~#o}oҼüÅ*TZ# :m G!N#F! D!9>0w#w !:4~:60+4*g"?O READY FOR "SYSGEN" OR "SAVE 00 CPM00.COM"$*V  CONSTRUCTING 00K CP/M Vers. 2.2$:0™! 666 6 ~666 6 ~!}(0C Wrong revision of ROM. This version of CP/M requires ROM Rev. 3.x  ! ~ 3#0 Wx x   G ~ # 3x~#B!Y~ɯ2:=!ý:=!:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ w4!Y~ʆ͌†t=ʆf ^ T 2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Ypsp2mÆÆf ͧÆFILE EXISTS _: É: :ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~22\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: ! Â$$$ SUB yx # *DM*s#r*s#ryOxG*0MD!!N: E G>O: \ S *C  :q n& ^#V> O^ "*}:*)= ":O:o"*C  *C !ͮ ~2~2ͦ :2ͮ : O:w:w |g}o *# ) :B O! yoxg*:B O }!N#F "*#*s#r^  ~!J  ! J *:o$*C ~i 6i w**{#z r+s{ozg**͕ **  , w͜ ͸ Ͳ ! !N#F$**O !~#:A #~$=2E k͌ : :/GyO>2!q*C " ͡  ʔ*J Ҕ^ :Oyʃ?|x | s-|N-# S:2E !~Яw > T   D ^ 6k -äPYy 5*{zBK52*C ~=2u:B 2~2wE:A *C w>" !""2B !" !r QQQâ~?ͦ ~?r Q *"C Q- Q͜QüQr Q$Q*):B  " *)*)Q;*"E :;:A  2A QÓQÜQ*C }/_|/*W}_*"}o|g":ʑ*C 6:ʑw:2E* *E }DQ>2  X êRLvØóøýK,8171  *!666 6 Z6666 D!ͽ>222!"!"*"~ w 66:O:>~:>!O ~y#~yph4 6:( N>!ˆ>K(!^ˆO˿!4 5~W~˾ v(˶ 0  ˾g(2>7>( (˶> 0>K( v(E:(c(~>;#+~O>;bkB85r+s###^#V"+"C {2!"E 9" 1A 22!ty)K!G_^#V*C   ~E , &-AGMS  !!!>2 CP/M error: Drive A $invalid.$file read only.$ile R/O$ :B A2 ! ~6  O͐  : E  @ B 2 >: b # : y! 4 5~yy 5 6y Ґ ^H @Oy H  H : – ͬ   #H : !  H ù  H  H $O͐ : 2 *C N#  x : 2 p & > ~+é 7 2 H ! >w _ : ! 5ͤ N k ͱ ¦ ͱ xʊ #N x : ! 2 ͤ ! 5™ #wO ~x½  p H    y< < ʑ  : !qMD # 2E > ! ^#V w#P :B O|^#V#"##"##"##"!O *!O *|!6ʝ 6>*w#w*w#w'û *! J * ""!N#F*^#V*~#foyx *{_zW+ * *C ^ O T  *C ~w D  -'   -@ ͦ ~^ *C  O x ! N!Fwyxʋ>ڋ>*C w~#+w#w+ɯ2E 22 i  ^ *C :~w~͔͔# #  w ~>2!E 5T *C !"C  "C !w# F! w͌ x 2͢ *C  ~<wʃG:!ʎì 4~ʶ ¬:<ʶ$ ʶïZͻ   x >2>2ͻ :!Z2:E w ̈́ ͊ Ͳ  >2>2T *C G ͻ : w ̈́ n> 2;O ^ DM;}H> "*C  ::dd slO s#r:E ͊ :==»y==»*Ww# *" ͸ *:G#š" ͸ :!w4!i w: Z!E ~=26 2*C !!~~#~O~G#n,-.‹! w! yG!x͢.:E <ʄ! q!pQ:E <. ʄ$.:E <ʄ i 6}2E x N! ~态O>G~G!~G} *C !r#r#r ^ ͥ_y#x#{ Br+s+6###!(~( v F##^7>;>; r+s##6#6#6!(~?w>(~ (N C(>>;r+s##^6#Vs#{:_~r!( ˾˿ ˋ {2ú˶!#^#V#͈!!H)G(y:(o ` (y:(o :8 2 >2::(g.(.> =7g>=80:(o ͈!!͈f!9>(1 C͈Xf![&!tly2y2C1͈f  ͈f#Gx ~ >  ʭʭi`#z n& ~ !͈!͈ !͈~RQ",ddF-dvdd!(0(0(0(0(0 ls: Macro :Q*E!}"]}$^}$_}!} >0"?%O;.0~<=r0:@<2@:@:@=2@<#~^0:@^0:@^07"?:?=2? &0*F=~ 0 0U 0"F=0>&2?>1&0:?0>& Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. 3.1 Copyright '76,'77,'78,'79,'80 Digital Research, Inc. Copyright 1982,1983,1984 Morrow Designs, Inc. ************** Double Sided System ************** 1 ! 22!Þ@$@B B HH II$@DI ABI$"$H$H@$$I! H*  $H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"D;:2?*@~ 1=1O+1 0x+~10:@*@~<1=11O+11 #1x+~111<*F=U 0w1G~# \1 d10P1x0G0&06 "F= ʐ1 ʐ16 Ö10}1ͱ k1å1ͱ k10ß1 ;1ù1:0 ʞ: ù1:: 1 1:"%@ʞ: ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_ Your lower drive is being re-assigned as drive A. Exchange diskettes and press [RETURN]=( !"#$%&'()Ll M:m: :J*j* *Kk Ii @ "A" "BHA " !$ D B I $ !$$ H@BD D$ HI DIA!$$$ $" "$D ! $"  $AB " BDD $$D!"DI$!$BH!"IB I$"D HD" " $"! @H !BI " I  $I$I$DI$ !I$@"$"$! $I$I$UUI$@ A@@"   @@   !$$"  H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"D*͂G>E!9N#F#^#V#~#fo"okb"oi`"oOGPilot - L. W. Edmondson - Morrow Designs - 1982CASEDIEIEXISTINSTALLOUTCPMCHCALLLOADLFCURCLRSCOMPILEHOLDSAVEWAITESCDEFERASTRBELLRCENDEUJMCMINMAXAPRTNRTnon!>>#͡'y+!>E+͆*!~#fo##N#F4o o!9!~#fo"{*u!!8*u ~#fo}0no!͞#!cii`"q!q:q2{2{:q2{:q2{!{j!^GStack overflow    <  zG ? 9#3!" {p-" v$ : Unrecognized instruction o!9!~#fo"{*{ i`"v*v~*¢*v#N i`"v*v i`"v2v2 v*{"v*v~*v~:*v~(!v~#*v#"v*v~ o*v#"vï*v~)!v~#*v6*v#"v>2v*v"v*v~L*v~:L*v~(L*v~A*v>ZÚ:vas!v>zs:vOG!A MD! MDz:vOGy2v:vY¶:o¶o*v#"v*v~a*v>z*v~2vÐ:vN:oo!v~#*v>o*v"v*v~A*v>Z*v~v͵*vü*v͵!*v͸ !~ʼ!ü!q:qJ :qX !>Eü:q2q:q2q*q~2q#~2q#~2q#~2q!!q##N#F+++N#F*u5ü!*v͸ !o!uü*v#*v͵*v͍ ü*v͵*vüü*v+.*v͍ !@͍ !>Eü o!~#fo"{*{~ < *{~ < *{~ F *{#"{! *{MDo o!~#fo"{*{ i`"{*{> *{~ *{#"{i *{MDo o!~#fo"{*{~ *{~2*v:*v{ ! ͡ !͡ !(͡ × o:*v} ! ͡ !͡ !)͡ × :*v  ! ͡ ! ͡ × :*v^‹ *{ ~^‹ *{ ~OG'"yʋ *{ ~OG'"yʋ *{ ~2*v*{ 6*{ ͡ *{ :*vw*{###"{× :*vOG͡ *{#"{Û n!N#F! o o!~#fo"{!~#fo"{*{ i`"{*{~@ *{~$ *{~* *{~#3 *{*{#"{*{*{#"{~*{~A *{>Z *{~0v *{>9v *{~0 *{>9 *{*{#"{*{*{#"{~E *{~A *{>Z *{~a *{>z *{~_ *{~ *{*{#"{*{*{#"{~ *{~a *{>z *{~0 *{>9 *{~_ *{*{#"#F*{͍yʌ*3v##N#FC*3v##*{jywx#wo*q#"q*q))*uͳ?i`"u*q))*u  "3v*3v*{jywx#w*3v##*{jywx#wo*3v####"3v o!~#fo"{*{~#*{  i`"{*{~o*u"5v*q))*u :5v:6v*5vN#F*{͍yf*5v##!~#~o*q#"q*q))*uͳ?i`"u*q))*u  "5v*5v*{jywx#w*5v##!~#~o*5v####"5v o!~#fo"{*{~$‘*{#"{*{~(*{#"{*{cii`*{  "7v*7v~)*7v6*u"9v*q))*u :9v::v*9vN#F*{͍y*9v##~#foMDo*{MDo*9v####"9v o!~#fo"{*{~#:*{#"{*u"=v*q))*u :=v:>vz*=vN#F*{͍yʀ*=v##~#foMDoo*=v####"=v@ o!~#fo"{!~#fo"{*{~2?v*{~2@v:?vA!?v>Z:?vOG!a MD! MD:?vOGy2?v:@vA !@v>Z :@vOG!a MD! MD:@vOGy2@v!@v:?v9o*{#"{*{#"{æ:?v(o o!~#fo"{*{~t*{> z*{~zoo*{#"{T o!~#fo"{!~#fo"{*{~«o*{~*{"Av*{"Cv*Av~oo*Av#"Av*Cv#"Cvÿ*Av~2Ev*Cv~2Fv:EvA!Ev>Za*v>z*v#"v!v:v':v#-o:v2v:v2v*v*v~aj*v>zj*v~OG!A MD! MDr*v~OGyw*v~Yʎ*v~Nʎ*v#"v*v6*v;!n!v~#ʼ*v*v>"o>2!v!!!!v͉:!va!!v>z:!vOG!A MD! MD:!vOGy2!v:!vR¼*v0ü!*q!o͉!*v͸ !~$V!o!uü!~#¼!ob!͙ü>2$v2%v*v""v!*"v͸ i`""v!~!͙yʆ!bi`"$v!$v~#ʆ*$v*q!o͉!*v͸ !~$!o!uü!~#¼!ob!͙ü!͡ ü!u:q;:qN!͍ !>E*q*q####"q:qw:q#w:q#w:q#w*v0ü!͡ ü*vwü*v ü!*v͸ i`"&v*&v~ʾ*&v#"&v*&v#*&v͵*&v!uü>2oü>2oü*oC>2o!*v͸ !Fy"2o2oü!ji`"oüͶüͽü!>E*v͵*v i`"v!*v͔*!͢y2oü*vFyʔ>P2q2qü*v1i`"qü*v1i`"(v*(v:(v2(v:)v2)v}ʼ!\͍ ñ!,*v6 ü!^*v6 ü*v#*{*{*{#"{~ *{6*{MDo o!~#fo"{*{~*B *{#"{*q#"q*qMD) )*uͳ?i`"u!*qMD) )*u  }|!~#fo*{jywx#w!~#fo##!~#~#~#~on2+v2,v!q:+v:,v# *+vMD) )*u N#FC*+v#"+v 2q2qon!9ͺ !w#w#w#w*u+7*u!!8*u ~#fo}0x*u+7o!!cix2{2{x2{y2{!{j! i`"-v*-v~*N!*-v͸ !~N!##N#F+++N#F!# Nread.pil o!9!~#fo"{*{!.fy!!*{!~f!"{!u~#$*u45!!!*{Xyw!~W*{!!>E!!~OGK3i`"u*oC*{ji`"o!q"q2q2q2q2q*oC2o2oo: Label not found Missing label o!~#fo"{*{~**{#"{*{~!͍ !>E*u"/v*qMD) )*u :/v:0vI*/vN#F*{͍yd*/v##{Pko*{͍ !͍ !>Eo*/v}o|g"/v  o!~#fo"{!~#fo"{*{~$ž*{#"{*{~(*{#"{*{cii`*{  "1v*1v~)*1v6*{~o*u"3v*q))*u :3v:4v5*3vN:EvOG!a MD! MD :EvOGy2Ev:FvAK!Fv>ZK:FvOG!a MD! MDR:FvOGy2Fv!Fv:Ev*{#"{ën!!N#FciBywx#w!!N#F!N#F~f!~#foMDo o!9!~#fo"{*{"Gv*Gv~*Gv~$*Gv~#*Gv~`*Gv~o*Gv#"Gv!"Gv*{"Iv2Kv2Lv*Iv~=*Gv6!!*{~fo*Iv~$i*Iv#~$•*Gv*Gv#"Gv6$*Iv##"Iv*Iv~#*Iv#~#*Gv*Gv#"Gv6#*Iv##"Iv!*Iv͸ i`"Iv!!s*Gv~fi`"Gv*Iv~`,*Iv#~`Z*Gv*Gv#"Gv6`*Iv##"Iv!*Iv͸ i`"Iv!!*Gv~fi`"Gv*Iv~.z*Iv"Kv*Gv*Gv#"Gv*Iv*Iv#"Iv~!Kv~#i*Kv"Gv*Iv#"Iv2Kv2Lv*Gv*Gv#"Gv*Iv*Iv#"Iv~ o!~#fo"{*{~µo*{~*{~0*{>9o*{#"{õon!!N#F!Mv/gi`Mv 6!MvMDo: can't access n!N#F͍ !͍ on!uywx#w!~#fo#~#ʌ!~#fo#N#F!N#F͍yʒ!~#fo~OGoo!~w#~wNn!U9!U!N#F͆.!y! !!U! yw!~!>o o!~#fo"{!!jv*{ci*{Dc*jvMDo o!9!~#fo"{!*{͸ !"{*{~0v*{>9v*{bo*{oTIMEOUT o!~#fo"{!~#fo"{!~#>2nv!!#~~+~ !>2{2{>2{>2{!{m>2nv*{"lv"y-:nv!~###M*{!*{fo>2nvy2ov:ovq*{"lv͍!>2{2{>2{>2{!{ͫn:ov’*{"lv! ͡ ! ͡ :ovʢ:ov!{:lv±:mv#:lv2lv:mv2mv:ov :ov ! ͡ *lv6o*lv*lv#"lv:ovw*lv!{yOx#G!{yx#n! on! on!9!!N#F͸ !:{2q:{2q:{2q:{2q!!q##N#F+++N#F*u5on:ošo!o~#«!>E*o0on*u"pv*q))*u :pv:qv*pv##w#w*pv####"pvÿo o!~#fo"{*{~ *{~OG *{#"{on!N#F! o o!9!~#fo"{!~#fo"{>2o!"rv*{͵*{#*{"tv*tv~ʼ *rv*rv##"rv:tvw:uv#w*tv~ *tv~OG!{y¯ x# *tv#"tvÔ *rvw#w!"rv*rv~#!!o*rvN#F1!y"!>2o"!*tv~ʼ *tv~OGE:*v!=$E:*|v####"|vñ$*u"~v*q))*u :~v:vҖ%*v!;$E:*v*~vN#FE:*v!9$E:*v*~v##N#FE:*v!7$E:*~v####"~v$%*u"v*qMD) )*u :v:v!&*v!5$E:*v*vN#FE:*v!3$E:*v*v####N#F+++N#F*E:*v!1$E:*v}o|g"vÜ%*v!/$E:!q"v!q:v:v#|&*v*v##N#F+++N#F*E:*v!-$E:*v####"v4&*v!+$E:*v!)$E:*v!q##N#F+++N#F*E:*v!'$E:!o~#&*v!%$E:*v*oE:*v!#$E::o '*v! $E:'*v!$E:*v!$E:*v*oE:*v!$E:*v451*vͫ1o)^(-(+(:(>(.|(#W($(*T(A:XSTATEX.PILreadreadA:XSTATEX.PILn!9!'!'k2i`"v!v~#'o*v!!8*v ~#fo}0'!o~#\)o!#!"v*v~OG!S'n!*v͸ i`"v*v _!{##N#F+++N#F!# ''!*v͸ i`"v*v#!u'!*v͸ i`"v*vb!͙'*v# _:{2q:{2q:{2q:{2q'*oC*v#ji`"o'*v#ji`"o'>2o'>2on!N#F +y!N#F5e$!>Eoa:pilotn!N#FFyLo!-!N#Fcii`!~#fo "]v!:]v:^v#ڦ*]v~;ʦ*]v~|ʦ:]v2]v:^v2^vq*]v#!:]v:^v#o*]v:]v2]v:^v2^v6qA:$$$.SUBA:$$$.SUBn!z9:_v,!!!CVy2_v:_v,!!!>E!z!N#Fciyw!!N#F!{f!!z:_vOGOo-+= o!9!~#fo"{!*{͸ i`"{!6+2`v2av!*{͸ i`"{!~*`v!͙o!u!eyª!s!ey!6+ê!q!ey"!6-ê!͙yA!bi`"bvÎ!~$a!sbi`"bvÎ!~@€!b 2bv2cvÎ!i`"bv!~+¨*`v*bv "`vê!bv:`v2`v:av#2avên*u"dv*q))*u :dv:ev*dvN#FC*dv##N#FC*dv####"dv2q2qo o!~#fo"{*{1y2fv*{~A*{~,A*{#"{&*{~P*{#"{*{1y2gv!͡ !=͡ :fv 2fv:gv 2gv:gvOG͡ :fvOG͡ o o!~#fo"{*{y2iv*{~*{~,*{#"{ñ*{~*{#"{*{y2hv:ivOG:hvOG͖io!{y !x#v *tv*tv#"tv6v o*rv##"rv o!9!~#fo"{!~#fo"{!!-!*{!/!!~f! 9!"{*{ͫ!*{ͫ!*{Fyʛ!*{Fo*{*{̈́on!~#fo"vv!~#fo"xv*vv~!*vv~ !*vv#~ !*vv#"vv!*xv6o*xv*xv#"xv*vv*vv#"vv~!0123456789abcdefABCDEFn!"!N#Ffo o!~#fo"{!>#\"o*{"zv!~w#~w!~#ʔ"*zv~ʡ"*zv~,ʡ"*zv#"zvy"!~#"o*zv~ʔ"*zv#"zv!~w#~wo"*{~"*{~,"*{6"*zv0o*{#"{"n!~A#~ #!>Z>#:#!~a#~)#!>z>#:#!~-7##~@#C#on!~A#~e#!>Z>##!~a#~#!>z>##!~_##~˜#Û#o o!~#fo"{*{~#*{~w*{~#*{6#o*{#"{ì# o!~#fo"{*{~$*{~ $*{~ $$o*{#"{#*{6$ >- + : . ^ * # $A:XSTATEX.PILwriteA:XSTATEX.PILn!ͫ1i`"v!ͫ1!Q$!W$k2i`"v!v~#«$*vͫ1!C$!o*u"|v*q))*u :|v:}v%*v!A$E:*v*|vN#FE:*v!?$E:*v*|v##N#F'*v#"v!q"q!*v͸ i`"v!~'*q*q####"q! _:{w:{#w:{#w:{#w)!!*oXy2v:v)*o!o!u~#ʘ)*u45!':vOGK3i`"u!u~#½)o!!q##N#F+++N#F*u5*v45!ͫ1i`"v!ͫ1!{'͝N*vͫ1on! !##N#F+++N#F!vhi`v 6!vMDoMicro-Decision Pilot Rev. 5.1 Copyright 1984 Morrow Designs, Inc. n!B*͍ o o!~#fo"{!~#fo"{*{ i`"{*{> **{~**{*{#"{*{*{#"{~ú**{6*{MDo a:pilot a:pilot n!q9! y1x+!y!N#Fcii`!+ci }!z!N#Fͳ-!q6!r6 !u!y}|!q!2 o>2v2v*v~#foC ! >">+0÷+ "v*v~#fo"v!v:v:v#+o*v"v*v~+o>2v>2v:v,*v~OGy,x3,>2v3,:vp,o:v2v+*v~OGyC,x,*v*v#~#fo ###"v!v:v:v#(,o:v},o*v#~#fo"v*v*v#~#fo ###"v*v~OGy­,x,*v*v#~#fo "v!N#Fcii`!*ci "v!v:v:v#,oo!v:v MD1!~#fo~OGyw!~w#~w:v2vj0n!~#fo~ʟ1!~#fo!~#fo~a1!~#fo>z1!~#fo~OG!A MD! MDÌ1!~#fo~OGyw!~w#~w11onon!!N#F! ywx#w!~#foMDoXSTATEX PILn!9!1ywx#w!w#w!!~#fo !~#fo!~#fo ~ @2!~w#~w2!!~OGyOyw!6!! o o!~#fo"{!~#fo"{͇3i`"v!v~#›2o*{*{3i`"v:vº2:v2o*{*v*v4*vMDo o!~#fo"{!~#fo"{!~#fo"{*{*{3i`"v:v 3:v)3o*{45*{*v*{4*{MDon͇3i`"v!v~#e3o!N#F!N#F*v4*vMDon2v2v>2v:v3:vOG!ͨjw ~#fo}3:vOG!ͨj w "v3*vMDo:v2vÖ34r?4a 4w4 o!~#fo"{!~#fo"{*{~OG!3n!!*{CVi`"v*vMDo!!*{Xi`"v:vc4:v}4!!*{CVi`"v!!v##N#F+++N#F*vnF74!!*{Xi`"v74!"v74 o!9!~#fo"{!~#fo"{!~#fo"{*{ :{w:{#w*{{#w:{2{:{2{!{>#9!*{ ~w#~w+[9*{N#F*{~w#~w~OGyOGc9*{:ywx#w+~t9#~ʛ9!N#F!~w#~w!~ 9!~#fo6!~³9#~9!!{ 9 #99*{MDo o!~#fo"{!w*{E::w2w:w2w:*w*w#"w6 %:!w! Ͳ<* w}@o|g}B:!w!Ͳ<o o!~#fo"{!~#fo"{*{*{#"{~2{2{!{~#ʫ:*{ ~w#~w+:*{N#F*{~w#~w:{w:o*{*{}ogͲ<:{ ::{^:*{ ~#fo}@o|g}^:*{!Ͳ<^: o!~#fo"{*{ ~#fo});*{ ~#fo}0/;o*{ ~#D;*{>*{ ~#fo}@o|g}ʮ;2v2v:v:v;*v!ͨjw ~#fo}@o|g};<*v!ͨj w !Ͳ<;<*{ *{ ~#fo};;*{ N#F*{ N#FJywx#w*{*{ ~#~*{ ~w#~w+E<*{ ~*<#~–<*{ ~wá<*v#"vc;*{ *{ ~#fo#MDx2{2{x2{y2{!{j*{N#F*{~w#~w~OGyOGo*{ ~ w*{ w#wo o!~#fo"{!~#fo"{*{ ~#fo}<*{ ~#fo} <*{MDo*{ ~#2v:v#2v*v#:vw:v#w*v###*v "v*v6*v#:vw:v#w*v###!N#Fͳ->2v2v*v~#fo? "v*< ~@-*v~#fo "vÒ-*v~#fo "v*v~wo a:pilot a:pilot o!~#fo"{!~#fo"{*{~-*{~;-*{6 .!-ci!-*{fo*{~|.*{6.*{*{~*{#"{*{#"{- o!~#fo"{*{~ʃ.*{*{~An.*{>Zn.*{~OG!a MD! MDv.*{~OGyw*{#"{9.o o!~#fo"{!N#F.1!~#fo~A.!~#fo>Z.!~#fo~a/!~#fo>z/!~#fo#~:/*{!~#fo~OG! }!~w#~w/*{6*{ 6!~#fo~C/!?! *{ dbo! ! *{ db>2v:vҪ/!~#fo~*/!?!:vOG}o|g*{ :vOG db!~w#~w!~#fo~.e0!~w#~we0!~#fo~./!~w#~wê/!~#fo~/o*{ :vOG !~#fo~a=0!~#fo>z=0!~#fo~OG!A MD! MDJ0!~#fo~OGyw!~w#~w:v2v^/>2v:v҂0!~#fo~…0oo!~#fo~*¿0!?!:vOG}o|g*{ :vOG dbo*{ :vOG !~#fo~a1!~#fo>z1!~#fo~OG!A MD! w#w*{ w#w*{ *{~r(5+5ywx#wo o!~#fo"{*{!Ͳ<*{ N#FͽU*{ ~w#~w*{ ~#fo}ʲ5*{ ~#fo|ʵ5*{ N#F"?*{ ~w#~wõ5o*{ w#w*{ ~w#~wò5 o!9!~#fo"{! ~#fo"{*{ ~#6*{>:{6:{.6!*{{7!{jç6:{;6:{§62v2v2v2v!*{ N#F͢1x7!2v2v~2v2v!v!m!v!2{2{~2{#~2{!{ͅn7*{!Ͳ*{~#fo*{ yOx#Gi`"v!v~#n=*v*{ N#F*{ N#FO!vyZ=x#n=*{ ~ wo*{ :v2{2{:v2{:v2{!{j*{*{ ~#~*{ *{ ~#fo}==ywx#w:{=:{>*{N#F*{~w#~w:{w*{ ~w#~w*{MDo o!9!~#fo"{*{ ~#o>*{ ~#fo}ʘ>*{*{ !v*{ ~#fo }| w #w">!*{ N#F'Fx>*{ #~w>*{*{ !!4?ywx#w+~#~ i`~#>*{ ~w">*{ ~w#~w">!!v##N#F+++N#F*{ N#FnFx?*{ ~@won!N#FCo o!~#fo"{!~#fo"{*{*{ͨji`"{*{Bi`"{*{"{!{~#€?o*{:{2{:{2{}ʫ?*{*{#"{6À?*{MDo o!~#fo"{!~#fo"{!{~#?*{Bo:{2{:{2{*{͵Bi`"v*{:v @:v#@*{ MDo*{:v:v#&B͎Bi`"v2v2v*v"v*{~#fo"v*v##~#fo"v*v~#fo))*v !{yr@x#ª@*v"v*v"v*v*v~#fo "v@*v"v*v##~#fo"vU@*{~#fo))*{ !vy@x#@*v"v*v"v*v*v~#fo "v!w:v@:v#•@!v:v*w*{  #*w##*{ ~#~5E*w##:{w:{#w*w"wo o!~#fo"{>2 x: xF: xOG!ͨj w ~#fo: xOG!ͨjw yOx#Gi`" x! x~#F: xOG!ͨjw ~#fo}F: xOG!ͨjw ~#F* x: xOG!ͨjw N#F: xOG!ͨjw N#FOF*{,Uo: x2 xQEn!! x##N#F+++N#F!N#FnFxXFooGFF^Gn!N#FWi`"x!x~#‘Fo*x ~DʤFo! ~#foMD!^Fn!~2x#~2x#~2x#~2x*x#:xw:x#w:x#w:x#w!~#foMDo*x#{Pk!{!j~2x#~2x#~2x#~2xF*x Wx2{2{x2{y2{!{!j~2x#~2x#~2x#~2xFo: can't write : can't read n!"ex!"gx:2kx2lx*kx*gxR]!kx~#G*ex*ex#"ex*gx*gx#"gx~:kx2kx:lx2lxèG*ex*ex#"ex6!x"_x*_x*_x##"_xGywx#w!"ex*ex~4H*ex~ʠH*ex> H*ex~HýH*_xw#w!ax~#OI!ͽU!!*axXi`"ix!ix~#OI*ax]*ax!O! !sG!O!,UOI*ex~3I*ex~HH*ex*ex#"ex6H*ex#"gx*gx~ I*gx> I*gx~ II*_x*_x##"_x:j2x2x!N#FX!z! *x!! yGNM!z! *x!! yN!:xOG}o|g"x!x:x:x#҂M*xMDÇM*xMDi`"x*x!z:xOG *{x\^*{x*x "{x!x:x2x:x#2x!~#fo#2{2{:x2{:x2{!{j>2x^L!~#fo#2{2{:x2{:x2{!{j*{x!yOx#Go*}x~2x:xOGyANx]NM!z:xOG "}x>2x*N*}x#"}x*x#"x:x L:xL*{x*{x#"{x:xw:x2x:x2xLn!9!!N#FYyNo!! yNxNoon!9!:xw:x#w!*x!~#fo }|!:w:#w!!}|!w>#w!!xyOx#G!yx#^Oo!!  #үO!!  #үO!!  #үO!~#fo"x!~#foMDoo#P#P5PPTPLPPXPC;PDPQ PAQnpU!~#P!N#FWi`"x!x~#Po*x~OG!On*x ~OG!Ono!N#F!N#F*xwQo>2x!~#fo"x!~#fo!~#fo "x*x ~#P!x:x:x#P*x*x#"x~OG:xOG ÌP>2x]P>2x]P!~#foMDoo!x:x:x#P*x~OG!On*x:v#$A*{Bi`"v!v~#\Ao!v~#ʝA*v##*v##~#~ i`~#fo"w*{*v  #ÝA*{>>#҉A*{~#fo)) *{ *vf*{ C*vMDo!v~#B*{!v  #B*v##*v##~#~ i`~#fo"w*v*{  #*{>>#yB*{~#fo)) *{ *v####fyB*{:v:v#҂B*v))*{ *{~#fo!vyOx#Gywx#w*{:vw:v#w*v))*{ C*{ MDo*v"{B*{ MDon!w~#­B!v"v*v"w2v2v*wMDo o!~#fo"{*{ !rj#MDo o!~#fo"{*{͵Bi`"w͎Bi`"w*w##~#fo"w*w!w  #WC*w!w *C #…C*w##*w##~#~ôC*w"w*w##~#fo"wC!w:wfC:w#BC!Ni`"w!w~#Co*w!w  #*w*w~#fo)) "w*w:ww:w#w*w"w*w####MDo*w> w>#w*w####C*w"wBC o!~#fo"{!{~#Co:{2{:{2{͎Bi`"w!{:w: w#ҌD*w##:{:{#ҌD*{~#fo))*{ *w##yVDx#D*{*w##~#fo  #*{ *w##~#fo##~#~D*w##:w: w#ڽD!{:w: w#7D*w##:{:{#7D*w##~#fo"wD*{ *w##~#~*w~#fo))*w !{yDx#'Eexw:fx#w3I*ex~>'I*gx"cx-I*gx#"gxH*gx"ax*gx"ex*ex> H*ex~H*ex#"ex3I!cx~#ʸI!ͽU!!*cxCVi`"ix:ix„I:jxʸI*cx]*cx!O!!dG!O!,U!x*_xx}o|g!rj>EoAJAJJ#KCJTJLJPJDKn!9!N#FWi`"wx!~#-J!wx~#3Jo*wx~OG!In!~#fo"mx!~#fo!~#fo "qx*wx ~#vJyJy2sx*wx ~OG!Ino!N#F!N#F*wxKoo!qx:mx:nx# K! y2tx:sxJ:txOGyJxK K*mx*mx#"mx:txwøJ:tx JøJ*mx!yOx#Go K!6!! ! ! !"ox!~OG!yx#jK!~OGqK!N#Fy2tx:txʕK*ox~OGyKx¼K>2tx!qx:mx:nx# K:tx K*mx*mx#"mx6 K*mx*mx#"mx*ox*ox#"ox~:tx2txuKon!z9pU!~#fo"{x!~#fo"x!~#fo "x!~#fo#{Pk!{>2{2{2{2{!{k##~2x!~#fo ~#ʯL!x~#N!N#FX:xր:x9M:x9M!"x*{x! *x!! yʦMN2x2x!"yx*yx"}x!x~#M!yx:}xL:~x#*N!~#fo#2{2{:x2{:x2{!{!yOx#Go!:x Q:x#0Q*x ~ AQ! :xOG *x*x#"x~OG:xOG PS pSpSpS Sn!9!~#fo"x!~#fo"x!~#fo "x!~#fo#{Pk!{>2{2{2{2{!{k##~2x!~#fo ~#=R!x~#U!N#FX:xր:xډR:x‰R!"x*x! *x!" yʿRo!y:xOG "x!"x*x:x2x:x2x}U*x*x#"x~2x:xOG!cQn!z! *x!! y S!!!z^ S*x*x "x!x:x2x:x#2x!~#fo#2{2{:x2{:x2{!{j>2xQ!:xOG}o|g"x!x:x:x#4S*xMD9S*xMDi`"x*x*x!z:xOG \^*x!" yʿRo!x~#ʻS!x:x:x#ڬSûS*x*x#"x6 *x*x#"x:xwpS!x:x:x#RR!x:x:x#SSi`"x!x~#S*x"x*x!y:xOG yOxGi`"x!N#FX:xր:xQT!! *x!! y}T!!!^}T!"x!y! *x!" yTo*x!y:xOG !:xOG \^!! *x!" yTo!y"x>2x!~#fo#2{2{:x2{:x2{!{j!x~#ʬS*2x#~2x!~#fo "x*x! !x!͊m##~*x" !x!͊m##~*x# !x!͊m##~on!xywx#w!{~#~ҘY!~#fo ~­Y!{~#~ڽYo!~,w#~wxY!~#foMDoRDR:PTP:CON:LST:n!9!~#Z!~#fo~Z!~# Zo!N#F]i`"x:x :x1Zo!"x!~#fo"x*x~ʕZ*x~w*x*x~ayZ*x>zyZ*x~OG! MDÁZ*x~OGyw*x#"x*x#"xCZ*x6!!}|:x¶Z:xZ!~#fo###~:Z!Y!N#Fͺ^yL[>L2x2xò[!~#fo 6D!~#fo "x*x6!~#fo#~:[!~#fo~2x2x:xA:x\!x>P>#\\!Y!N#Fͺ^yo[>C2x2xò[!Y!N#Fͺ^yʒ[>P2x2xò[!Y!N#Fͺ^y[>T2x2x!~#fo :xwo!~#fo 6o*x#"x2x2x:x:xz\!~#fo~9\!~#fo~.Q\9\o*x*x }!~w#~w[*x*x#"x6 *x#"x[*x*x#"x!N#F!~w#~w~G\!~#fo~ʥ\!~#fo~.ʥ\!~w#~wz\!~#fo~.\!~w#~w2x2x:x:x\!~#fo~"]*x*x#"x6 H]*x *x2{!{m2{2{:{2{2{!{j>2{2{2{2{!{j~#~#~#~a:{a]a!{>zna:{Aڬ`!{>Zڬ`!~#fo!~#fo{Pk!{! #~2{2{~2{+~2{!{m2{2{:{2{2{!{j>2{2{2{2{!{j~#~#~#~*{#"{f`!{~#+b!~#fo!~#fo{Pk!{dn~#~#~#~*{!yOx#G!~#~Qb!N#Fab*{!yOx#Go o!~#fo"{!~#fo!~#fo "{!~#fo"{!{:{:{#Ҷb*{*{#"{:{wÔb!~#foMDo o!~#fo"{*{~b*{> 2c*{~2c2{2{*{~09$>#|co! > >#c! ~#fo/ }2{íc! ~#fo6 }2{!~#fo"{!~#fo!~#fo "{*{~ c*{~ c*{#"{c*{~-c>2{2{*{~-d*{~+d*{#"{! ~%d#~rd*{~0rd*{#~aVd*{#>zVd*{#~OG! MD^d*{#~OGyXgdxrd*{##"{!{:{:{#Ҹd*{~aڣd*{>zڣd*{~OG! MDêd*{~OGy2{!{:{d:{Lne*{#"{ne:{0e!{>9e!~#fo!~#foN#F! N#Fͨj:{Ox*x#"x6 !x~#¬SûS*x!yOx#Gon!w#w!~#~eU!N#FͽU!~w#~w;U! on! yŠU2x2xo*x#"x:x:xU! y¯UxºU! on!N#FWi`"x!x~#Uo*x ~DV*x~V*x ! i`"x:x5V!x>>#5V*x 6!~#foMDo!>w>#wVn!~#lV!~^V#~lV!>w#weYi`"x!x~#ƒVo*x!N#FYyŸVo*x ~DV*x ! *x ! xVo*x 6!N#F!N#F!N#FXon!N#F!# y Wx/W!x{Pko!~#fo! MD 2{2{2{2{!{!~#fo" MD 2{2{2{2{!{!mͅn!~#fo# MD 2{2{2{2{!{!mͅn>2{2{>2{>2{!{mon!#~W!~#~Wo!N#F!,ͨjx "x*x ~Xo*xMDon!~#@X!~2X#~@X!>w#weYi`"x!x~#WXo*x!N#FYysXo*x ~D¥X*x ! xX*x 6o*x!~*x#w#w#w#w*x !~#~*xx}o|g!,rjMDon!~#fo#~2x#~2x#~ *x *x 6~ w~o*x*x#"x!N#F!~w#~w~*x#"x\n!N#F!~w#~w}]!~#fo!~#fo~A]!~#fo>Z]!~#fo~OG! MDø]!~#fo~OGyw!~w#~wU]on!!~#~!~#fo~^!~w#~w]!~#fo!yOx#Gon!N#F!~w#~w}Y^!N#F!~w#~w!~^on!N#F!~w#~w}ʭ^!N#F!~w#~w!N#F!~w#~w~_^!~#foMDon!~#fo!~#fo ^o!~w#~w!~w#~wý^!~#fo~^on! !{!!N#F4_!{{Pkon2{2{!~#fow#w#w#w! ~#~j_! >$>#p_o! > >#_! ~#fo/ }2{á_! ~#fo6 }2{!~#fo"{!~#fo!~#fo "{*{~ _*{~ _*{#"{_*{~-_>2{2{*{~-`*{~+ `*{#"{! ~`#~f`*{~0f`*{#~aJ`*{#>zJ`*{#~OG! MDR`*{#~OGyX[`xf`*{##"{!{:{:{#Ҭ`*{~aڗ`*{>zڗ`*{~OG! MDÞ`*{~OGy2{!{:{Ҿ`:{La*{#"{a:{0La!{>9La!~#fo!~#fo{Pk!{! #~2{2{~2{+~G  }|de:{a!e!{>z2e:{Aڸd!{>Zڸd!~#fo!~#foN#F! N#Fͨj:{OG  }|*{#"{rd!{~#ʚe!~#fo!~#fo~#fo>o>g}|*{!yOx#G!~#~e!N#Fe*{!yOx#Go o!~#fo"{!~#fo"{*{*{ fo*{#"{*{#"{e*{~eo o!~#fo"{!~#fo"{!~#fo"{*{:{2{:{2{}{f*{*{#"{*{*{#"{~Bfo o!~#fo"{!"{*{~#f*{~#fo"{*{~f*{*{#"{*{~*{#"{æf*{6*{MDo*{##"{Óf o!~#fo"{!~#fo"{*{~g*{~OG:{g:{%goo*{#"{f o!~#fo"{!~#fo"{!~#fo"{:{g*{>o>g"{:{g*{>o>g"{*{*{#"{6-*{*{rj"{!{~#ʼg*{*{*{/g*{ "{*{*{͍j0 }2{!{>9g:{'2{*{*{#"{:{w*{!yOx#Go o! ~#fo"{!~#fo"{:{rh*{>o>g"{!#~rh!!{Pk!{dn~#~#~#~*{*{#"{6-!{Pk!{:{2{2{:{2{:{2{!{l~2{#~2{#~2{#~2{!{~###h*{!{##N#F+++N#F*{h*{ "{!{Pk!{:{2{2{:k!9N#Fkb9.lkkl!9~+m/#w>+++w>#w!9N#F!9~#fo  # # #Jo!9N#F!9~#fo ## # +++ #Jo~#n#~#foy#nx#n+++~#fo##n!9!9*{*{*{i`!"{"{"{!9N#F###q#p+++q!9N#F#q#pV2.1: copyright (c) 1979 by Whitesmiths, Ltd.2    #{s m!j"g$b{CC{2{:{2{!{m>02{2{2{2{!{j##~2{!{>9@i:{'2{*{*{#"{:{w*{!yOx#Go o!~#fo"{*{~ʃi*{#"{qi*{!yOx#Go&}!!9o!9~w#~w#~w#~w+MD!9 _ #ڳi{ !94ói! 9~i+w>#w! 9N#FxjO>Gͩi!jO>G! 9q#pJo! 9~Cj+w>#w! 9N#FxWjO>GͩigjO>G! 9q#pJo! 9N#Fͩi! 9q#pJo! 9N#Fͩi! 9q#pJo!! 9~+j~j! 9N#F ! 9~w#~w! 9~w+~wîj!9q#pJo!9N#F!9~#fo ## # +++ #Jo!9N#F!9~#fo  # # #Jo~#~#~#~#~#~#~#~!9MD!9~#~#~#~ !9~w#~w#~w#~w#~w#~w#~w#~w!9MD! 9  # # #ڂk!9MD! 9  # # #!94Âk!9!9Jo#~#~+++~#~#~k#>#>+++>#~#~#~ #~{.l>#># >#k!9MD!9~#fol! 9MD!9~#fol_k!9N#F!9Alkk!9MD!9~#fol! 9MD!9~#fol_k!9N#F!9Alkk! 9MD!9~#fo#k!9MD!9~#fo#k_PC{CCR: Morrow Designs Micro-Menu system - Rev 2.5 R: Module - INIT.PIL R: Copyright 1982, 1983, 1984 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: Modified by John VanderWood 3/27/84 R: CLRS: T:{ T: Congratulations!} T: T: You have successfully installed CP/M for your Micro Decision. But you are T: not done yet. Before you can use any of the application programs provided, T: (such as NewWord or Supercalc), you need to create working diskettes which T: contain these programs. This is normally done by using the {Create Work- T: ing Diskettes}option that follows. You can create some working diskettes T: now and others later, if you like. The Create Working Diskettes function T: is always available on the Co-Pilot Utility Menu. T: T: {************************************************************************* T: * * T: * WARNING! R: Morrow Designs Micro-Menu system - Rev 2.5 R: Module - CPMENU.PIL R: Copyright 1982, 1983, 1984 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: Modified by John VanderWood 3/27/84 R: R:Put message on the screen, and chain to MICRO.PIL or MDWORK if first time up EXIST:INIT.PIL R: if not, go to Micro Menus CLRS: LF:10 TN:{Now loading Co-Pilot Menu System, Rev. 2.5 TNRN: Please stand by. . . CHN:MICRO.PIL TNR:{Preparing to Create Working Diskettes; please stand by. . . T: CPM:ERA INIT.PIL;AUTO PILOT CPMENU CH:MDWORK.PIL END: 00xx j:*install *lvl1nw def: $TERM ayrnha$MDL 'I' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *lvl0nw def: $TERM ayknha$MDL '0' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *DRAFT CLRS: LF: 6 T:} T: With{2}, your printer is going to be installed as a {DRAFT PRINTER.} T: This will be fine for general-purpose printing; however, there may T: be some printing features (like supersc * T: * * T: * Attempting to use the supplied application programs without * T: * creating working diskettes will cause improper operation of * T: * of these programs. * T: * * T: *************************************************************************} T: TNR: Press{[RETURN]}to continue: A: CLRS: T: Before creating your Working Diskettes, the Micro Decision needs T: to know a few things about your printer. T: T: There are two types of printers, parallel and serial. T: T: {Your system is currently set up for a parallel or T: centronics-type printer. If you are using a parallel T: printer, press}C{to proceed with creating your Working T: Diskettes.} T: T: If you are using a{serial}printer, the Micro Decision wWCOM1 T:} J:*BEGIN *SUPERCALC C:a=@9-2 DEF(a):$SCCOM key sc DEF(a):$SCCOM1 key default J(a):*scrun DEF:$SCCOM sc DEF:$SCCOM1 *scrun CLRS: LF:11 TNR:{Preparing to run SuperCalc. Please stand by. . . CPM:pause sc SuperCalc|$SCCOM|a:return|$SCCOM1 T:} J:*BEGIN *CORRECT CLRS: LF:11 TNR:{Preparing to run Correct-It. Please stand by. . . CPM:PAUSE CORRECT Correct-It|CORRECT|A:RETURN| T:} J:*BEGIN *PEARL ESC:*BEGIN U:*PEARLMENU *LOOP4 INMAX:1 CUR:47,18 TNR: CUR:47,18 A: M:1,2,3,4,5,6 BELLN: JN:*LOOP4 M:1,6 DEFY: $PERLDISK Welcome and File Maintenance JY:*PROMPT M:2,3 DEFY: $PERLDISK Design Forms and Reports JY:*PROMPT M:4,5 DEFY: $PERLDISK Print Reports and Enter Data *PROMPT M:1 DEFY:$PROG WELCOME DEFY:$MSG M:2 DEFY:$PROG PEARLDF DEFY:$MSG Put a formatted diskette in drive B: for Design Forms. M:3 DEFY:$PROG PEARLDR DEFY:$MSG Put the right database diskette in drive B: for Design Reports. M:4 DEFY:$PROG PEARLED DEFY:$MSG Put the rightturn|$KPCOM1 T:} J:*BEGIN *MBASIC CLRS: LF:11 TNR:{Preparing to run Microsoft BASIC. Please stand by. . . CPM:PAUSE MBASIC MBASIC|MBASIC|A:RETURN| T:} J:*BEGIN *TUTORIAL CLRS: LF:11 TNR:{Loading the tutorial menu. Please stand by. . . CH:TUTORIAL.PIL *CREATE CLRS: LF:11 TNR:{Loading the working diskettes menu. Please stand by. . . CH:MDWORK.PIL *UTILITY ESC:*BEGIN U:*MENU2 *RFRSH U:STATUS U:*CHANGEMSG *LOOP5 INMAX:1 CUR:46,18 TNR: CUR:46,18 A: M:C, JN:*LABEL2 UY:*CHANGE J:*LOOP5 *LABEL2 M:1,2,3,4,5,6,7,8,9, BELLN: JN:*LOOP5 M:1, JY:*CREATE M:2, JY:*DIR M:3, JY:*TYPE M:4, JY:*COPY M:5, JY:*FORMAT M:6, JY:*BACKUP M:7, JY:*STAT M:8, JY:*CPM M:9, J:*OTHER *DIR CLRS: LF:10 T:} T:I'm getting the directory of the current drive (Drive $DRIVE). TNR:Please stand by. . .{ CPM:DIR $DRIVE: T:} TNR:Press{RETURN}when you're done viewing the directory: A: J:*UTILITY *TYPE U:*GETFILE J(B):*RFRSH CUR:20,20 T: R:Morrow Designs Micro-Menu system - Rev 2.5 R:MD-3 double sided version R:Module - MICRO.PIL without BAZIC R:Copyright 1982, 1983, 1984 Morrow Designs, Inc. R:All Rights Reserved R:Written by Harrison Schreppel for Morrow Designs R:Modified by John VanderWood 3/27/84 R:The next lines define $drive variable to R:avoid "Variable not found" error msg. DEF: $FILE DEF: $DRIVE B DEF: $DSTDRV B R: display main menu *BEGIN ESC:*EXITMENU U:*MENU1 U:*STATUS U:*CHANGEMSG *LOOP3 INMAX:1 CUR:46,17 TNR: CUR:46,17 A: M:C, JN:*LABEL1 UY:*CHANGE J:*LOOP3 *LABEL1 M:1,2,3,4,5,6,7,U, BELLN: JN:*LOOP3 CLRS: M:1, JY:*NEWWORD M:2, JY:*SUPERCALC M:3, JY:*CORRECT M:4, JY:*PEARL M:5, JY:*QUEST M:6, JY:*MBASIC M:7, JY:*TUTORIAL M:U, J:*UTILITY *NEWWORD C:a=@9-2 DEF(a):$NWCOM key nw DEF(a):$NWCOM1 key default J(a):*nwrun DEF:$NWCOM nw DEF:$NWCOM1 *nwrun CLRS: LF: 11 TNR:{Preparing to run NewWord. Please stand by. . . CPM:pause nw NewWord|$NWCOM|a:return|$N database diskette in drive B: for Enter Data. M:5 DEFY:$PROG PEARLPR DEFY:$MSG Put the right database diskette in drive B: for Produce Reports. M:6 DEFY:$PROG PEARLFM DEFY:$MSG Put the right database diskette in drive B: for File Maintenance. CLRS: LF:10 T:{The Working diskette to use is $PERLDISK T:}$MSG T: TNR: Press any key to continue: INMAX:1 A: T: T:{Preparing to run Personal Pearl. Please stand by... CPM:pause $PROG Pearl|$PROG|a:return| T:} J:*BEGIN *QUEST CLRS: LF:3 T: Insert your{QUEST POSTING DISK}in your UPPER drive now. T: T: When you're asked to "insert your WORKING disk for QUEST," insert your{Quest T: Instructional (Data) Disk}in Drive A (your LOWER drive). If you've installed T: Quest by now, use your{Production}disk instead. T: TNR: After inserting the Quest Posting Disk in Drive B, press RETURN to proceed:{ A: C:a=@9-2 DEF(a): $KPCOM key kp DEF(a): $KPCOM1 key default J(a):*kprun DEF: $KPCOM kp DEF: $KPCOM1 *kprun CPM:pause kp Quest|$KPCOM|a:re T: T:Do you want the file to go to the screen{(S),}or the printer{(P)?} INMAX:1 TNR:Enter{S}or{P:} *LOOP6 CUR:15,23 A: M:S,P, JN:*LOOP6 M:S, CLRS: LF:10 TY:I'm getting your file. . . TY:Press{CONTROL-S}to stop and start the scrolling.{ CPMY:PIP CON:=$DRIVE:$FILE| TY:} TNRY:Press{RETURN}when you're done viewing the file: { JY:*DELAY JY:*UTILITY T:{Please make sure your printer is turned on and is on-line. TNR: Press RETURN when you're ready: A: CLRS: LF:10 TNR:I'm getting your file to print. . . CPM:PIP LST:=$DRIVE:$FILE| T:} J:*UTILITY *COPY U:*CLEAR CUR:0,22 T:Do you want to copy every file from the current drive{(Y or N)?} *INPUTLOOP8 CUR:65,22 T: CUR:65,22 INMAX:1 A: M:Y,N BELLN: JN:*INPUTLOOP8 INMAX: 13 M:N JN:*NEXT U:*GETFILE J(B):*RFRSH U:*DSTDRIVE CLRS: LF:10 T:Preparing to copy "$FILE" from Drive $DRIVE to Drive $DSTDRV. TNR:Please stand by. . .{ CPM:PIP $DSTDRV:=$DRIVE:$FILE T:} J:*UTILITY *NEXT U:*DSE , JY:*UTILITY M: 1 , JN:*SYSGEN CLRS: LF: 10 TNR: Preparing to format; please stand by. . .{ LF: 9 CPM:FORMAT| T:} J:*UTILITY *SYSGEN CLRS: LF: 6 T:} When the SYSGEN program is run, it will pause and ask for a{DESTINATION} T: Drive. At this point, enter the drive name (A-E) you wish to have the T: system transferred to (normally{B}). T: T: To{exit}from the SYSGEN program, press {RETURN} when asked to enter a T: DESTINATION drive. T: TNR: To continue, hit any key: INMAX: 1 A: CPM:SYSGEN;A| J:*UTILITY *BACKUP CLRS: T: T: T: {Use this function to make backup copies of your diskettes.} T: T: This procedure copies the entire contents of a "source" diskette T: to a "destination" diskette. The destination diskette must have T: been formatted before being used. T: T: {DRIVE A: (LOWER)}is used for the{SOURCE}diskette, and T: {DRIVE B: (UPPER)}is used for the{DESTINATION}diskette. T: T: {Don't change diskettes until you're asked to dCP/M commands directly. It can be T: used by the curious to experiment with, and learn about CP/M. T: It can also be used by experienced CP/M users to perform a T: command directly. T: T: To use this menu, just type a valid CP/M command, followed by T: RETURN. T: T: To get back to the Utility Menu now, press RETURN only. T: T: {COMMAND:} *GETCOM CUR: 13,11 INMAX: 80 A: $COMMAND R: NULL COMMAND? M: , R: If so, go back to the utility menu JY: *UTILITY CLRS: LF: 4 T:{ T:After certain CP/M commands, you must press{CONTROL-C}when finished, to return T:to the Co-Pilot Menus. T: T:Now executing your command, please stand by. . .{ CPM:$COMMAND| J:*UTILITY *OTHER U:CLEAR CUR:0,22 T:Do you want to Erase{(E),}or Rename{(R)}a file? TNR:Type{E}or{R:} *INPUTLOOPA CUR:14,23 TNR: CUR:14,23 INMAX:1 A: M: E , R , BELLN: Jn:*INPUTLOOPA M: E , JN:*RENAME U:*GETFILE J(B):*RFRSH CUR:0,22 TNR:Press{RETURN}to erase $DRIVE:$FILE, or{A}to aborTDRIVE CLRS: LF:10 T:Preparing to copy every file from Drive $DRIVE to Drive $DSTDRV. TNR:Please stand by. . .{ CPM:PIP $DSTDRV:=$DRIVE:*.* T:} J:*UTILITY *DSTDRIVE CUR:21,20 T:}What drive are you copying to? U:*DRVSEL DEF: $DSTDRV $TEMP CLRS: E: *DRVSEL INMAX:1 CUR:22,21 TNR:Enter the drive letter{(A,B,C,D,E)} *LOOP2 CUR:57,21 T: CUR:57,21 A: M:A,B,C,D,E BELLN: JN:*LOOP2 SAVE: $TEMP INMAX:80 E: *FORMAT CLRS: LF:4 T: This selection may be used to format diskettes for use with your Micro T: Decision, or to put a copy of the CP/M operating system on a diskette T: (SYSGEN). Formatting a diskette completely erases any information on it, T: so{be careful}about which diskette you insert in the drive for formatting. T: T: {1} Format a diskette T: {2} Sysgen a diskette T: T: To exit without formatting or sysgening any diskettes, press{E}. LF:2 TNR:----->} *FRMTLOOP CUR:8,15 TNR: CUR:8,15 INMAX:1 A: M: 1 , 2 , E , BELLN: JN:*FRMTLOOP M: o so on the screen.} T: T: Press{RETURN}when you are ready to proceed, or T: To{exit}without backing up any diskettes, press{E}. T: TNR: -----> { INMAX:1 A: M: E , Jy:*UTILITY T:{ CPM:BACKUP| T:} J:*UTILITY *STAT U:*CLEAR CUR:0,22 T:Do you want to check the size of a file{(F),} or the space remaining on a TNR:diskette{(D)}? Enter{F}or{D:} *INPUTLOOP9 CUR:30,23 TNR: CUR:30,23 INMAX:1 A: M: D , F , BELLN: Jn:*INPUTLOOP9 M: F , JN:*STATDSK R: Perform stat on a file U:*GETFILE J(B):*RFRSH CLRS: LF:8 T:} T:Checking the size of $DRIVE:$FILE TNR:Please stand by. . .{ CPM:STAT $DRIVE:$FILE T:} TNR:Press{RETURN}to go back to the Utility Menu: A: J:*UTILITY *STATDSK R: perform stat on a disk CLRS: LF: 7 T:Checking the amount of space remaining on the disk in drive $DRIVE. T:Please stand by. . .{ CPM:STAT $DRIVE: T:} TNR:Press{RETURN}to go back to the Utility Menu: { A: J:*UTILITY *CPM CLRS: T: T: This menu allows you to enter t: INMAX:1 A: M: , JN:*UTILITY CLRS: LF: 11 T:Now erasing $DRIVE:$FILE{ T: CPM:ERA $DRIVE:$FILE T:} J:*UTILITY *RENAME U:*GETFILE J(B):*RFRSH DEF:$OLDNAME $FILE U:*CLEAR CUR:22,20 T:} The present name of the file is $OLDNAME. T: Enter the new name of file:{ CUR:52,22 INMAX:13 A: SAVE:$FILE CLRS: LF: 10 TNR:Now renaming $DRIVE:$OLDNAME. The new name is $DRIVE:$FILE.{ CPM:REN $DRIVE:$FILE=$DRIVE:$OLDNAME T:} J:*UTILITY R:===================================================================== R: R: Menu displays R: *MENU1 CLRS: T: T: {C O - P I L O T M A I N M E N U} T: T: This menu is your road map through the CP/M operating system. To T: perform these functions, just enter the appropriate number after T: the prompt below, then follow the instructions given. LF:1 T: {1 NewWord} Word Processing T: {2 SuperCalc} Financial Analysis T: {3 Correct-It} Spelling Checke or erase a file T: ESC Return to Main Menu T: T: Enter your selection:} E: R: R:===================================================================== R:PEARL MENU *PEARLMENU CLRS: T:{ P E R S O N A L P E A R L T: T: F U N C T I O N S E L E C T I O N M E N U} LF:2 T: See your Personal Pearl manual for a full description of these options. LF:2 T: {1} Welcome (Demonstration) T: {2} Design Forms T: {3} Design Reports T: {4} Enter Data T: {5} Produce Reports T: {6} File Maintenance T: {ESC} Return to Main Menu LF:3 T:{ Enter your selection:} E: R: R:========================================================================= R: Subroutines invoked from above R: *STATUS R: This routine refreshes the status lines (20-24) on the screen CUR:0,19 T:----------------------------------------------------------------------------- T: CURRENT DRIVE:{$DRIVE:} T: nnot find "$FILE" on Drive $DRIVE.} Please check your spelling. T: You may search on another Drive{(D),}re-enter the file name{(R),}or TNR: abort{(A)}the command. {Type D, R, or A: } *LOOP7 CUR:42,23 TNR: CUR:42,23 INMAX:1 A: M:D,R,A BELLN: Jn:*LOOP7 M:A R: variable 'B' is set as a condition flag to indicate abort was selected Cy:B=1 Jy:*UTILITY M:R Jy:*GETFILE U:*CHANGE J:*EXISTCHK *EXITGF U:*CLEAR E: *CLEAR CUR:21,20 T: T: T: TNR: E: R:============================================================================ *CHANGEMSG R: This routine simply puts a message in the status area to indicate what to R: press to change the current drive. CUR: 15,22 T:}To change the current drive, prer / Corrector T: {4 Personal Pearl} Data Base Manager T: {5 Quest} Bookkeeper System T: {6 MBASIC-80} Microsoft BASIC T: {7 CP/M Tutorial Menu} CP/M Learning Tool T: {U Utility Menu} T: {ESC Exit to CP/M} LF:1 T: {Enter your selection:} E: R:===================================================================== R: *MENU2 CLRS: T: {C O - P I L O T U T I L I T Y M E N U} T: T: This menu allows you to perform a number of everyday utility functions. T: Select the job to be done by entering the number corresponding to the T: function desired. For some of the functions to work, you should set T: the{CURRENT DRIVE}to the drive that will be used. T:{ T: 1 Create a working diskette T: 2 Display a diskette directory T: 3 View or Print a file T: 4 Copy a file or files T: 5 Format or Sysgen a diskette T: 6 Make a backup diskette T: 7 Check diskette and file size T: 8 Execute a CP/M command T: 9 Renam T: TNR: E: R:===================================================================== *CHANGE R: This routine is used to change the current drive R: All messages appear in the status area of the screen. U:*CLEAR INMAX:1 CUR:0,22 T: {Enter the new drive ( A,B,C,D,E ) *LOOP2 CUR:16,20 A: M:A,B,C,D,E, BELLN: JN:*CHANGE SAVE: $DRIVE U:*CLEAR *EXIT U:*CHANGEMSG INMAX:13 E: R:=========================================================================== *GETFILE C:B=0 U:*CLEAR CUR:22,20 T:Press RETURN to use the file shown (if one is shown), TNR: or type a different file name:{$FILE CUR:53,21 INMAX:13 A: M: , SAVEN: $FILE *EXISTCHK EXIST:$DRIVE:$FILE Jy:*EXITGF U:*CLEAR BELL: CUR:22,20 T: T:{I caess{C}. E: R:============================================================================ R: This routine waits until a key is pressed, and goes back to the Utility R: Menu. *DELAY WAIT: M: TIMEOUT , JY:*DELAY J:*UTILITY R:============================================================================ *EXITMENU CLRS: LF: 11 T: To re-enter the menu system, type{PILOT CPMENU}followed by a RETURN.{ LF: 5 END:  T: T: TNR: E: R:============================================================================ *CHANGEMSG R: This routine simply puts a message in the status area to indicate what to R: press to change the current drive. CUR: 15,22 T:}To change the current drive, prR: Morrow Designs Co-Pilot Menu system - Rev 2.5 R: Module - TUTORIAL.PIL R: Copyright 1982, 1983, 1984 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: Updated by John VanderWood 3/20/84 R: ESC:*RETURN *BEGIN CLRS: LF: 1 T: {A N O V E R V I E W O F C P / M} LF: 2 T: This is the Co-Pilot Menu's on-line CP/M tutorial. It is not meant T: to be a thorough presentation on using CP/M, but is intended to be T: a "quick reference" guide for people who are just learning to use T: CP/M. For additional information or variations on any of the T: commands shown, just type the number shown next to the command. T:{ T: 1 Use of control keys in CP/M T: 2 DIR - Display a list of files on a diskette T: 3 ERA - Erase a file or group of files from a diskette T: 4 REN - Rename a file T: 5 STAT - Report system status T: 6 TYPE - Display a file on the screen or print it T: 7 PIP - Move is will stay in effect T: until you press CONTROL-P a second time to turn off the routing to T: the printer, or until you press the RESET button on the computer. T: T: {CONTROL-S} - This is used to pause or "freeze" text that is scrolling by T: by on the screen, normally after a TYPE command. Pressing any other T: character will resume the scrolling on the screen. T: T: {CONTROL-X} - This will erase a mistyped command line that you have typed T: at the CP/M prompt "A>" or "B>". T: TNR: See your CP/M manual for more control codes. Press RETURN to continue: A: J:*BEGIN *DIR CLRS: LF: 2 T: { The DIR Command} LF: 2 T: This command displays a list of all files on a diskette. Its format is: T: T: { DIR x:} T: T: where "x:" is an optional disk drive letter (A:, B:, etc.). If no disk T: drive letter is typed, CP/M gives you a list of the files on the drive T: that is currently logged. T: T: {EXAMPLE -} To get a list of all the files on drive B, you wouldor copy files T: 8 SYSGEN - Put CP/M on a diskette T: ESC Return to the Main Menu T: T: Pick a subject:} INMAX:1 *ACTION CUR:36,20 TNR: CUR:36,20 A: M:1,2,3,4,5,6,7,8, BELLN: Jn:*ACTION M:1 JY:*CONTROL M:2 JY:*DIR M:3 JY:*ERA M:4 JY:*REN M:5 JY:*STAT M:6 JY:*TYPE M:7 JY:*PIP J:*SYSGEN *CONTROL CLRS: T: { Control Keys in CP/M} T: T: There are four "control codes" which have special meaning to CP/M. To T: enter a control code, hold the [CTRL] key down and press the appropriate T: letter key. These are the control codes that are used by CP/M 2.2: T: T: {CONTROL-C} - This is used with CP/M to re-initialize the system. Anytime T: you change diskettes while working directly with CP/M (as opposed to T: through the menus), you should type control-C so that CP/M will know T: that a diskette was changed. T: T: {CONTROL-P} - This code is used to tell CP/M that characters sent to the T: screen should also be sent to the printer. Th type: T: T: { DIR B:} T: U:*PAUSE J:*BEGIN *ERA CLRS: LF: 2 T: {The ERA Command} LF: 2 T: This command is used to erase files from a diskette. The format is: T: T: { ERA FILENAME} T: T: where FILENAME is any valid CP/M filename. The filename may be preceded T: by a disk drive letter (e.g. ERA B:FILENAME). If you don't type a drive T: letter, then CP/M assumes you mean the current drive. T: T: {EXAMPLE -} To erase a file called "LETTER.TXT" from drive B, type: T: T: { ERA B:LETTER.TXT} T: U:*PAUSE J:*BEGIN *REN CLRS: LF: 2 T: {The REN Command} LF: 2 T: You may change the name that you have given to a file with the REN command. T: To use the REN command, you would type: T: T: { REN NEWNAME=OLDNAME} T: T: Notice how the new name comes first. This seems illogical to some people, T: so you may have to get used to it. T: T: {EXAMPLE -}To change the name of the file "LETTER.TXT" on drive B to the new T: name "MEMO.TXT," you woulT: {The TYPE Command} LF: 2 T:The TYPE command is used in CP/M to display a file on the screen. To use the T:TYPE command, enter: T: T: { TYPE FILENAME} T: T:This will cause the file called "filename" to be sent to your terminal screen. T:While the file is rolling quickly up your screen, you can press CONTROL-S to T:stop this "scrolling." To continue scrolling, press any other key. T: T:By preceding the TYPE command with a CONTROL-P, the file will also be sent to T:the printer. Be sure the printer is turned on and on-line first. T:{ T:EXAMPLE -}To view a file called "LETTER.TXT" on drive B, enter: T: T: { TYPE B:LETTER.TXT} T: T:This command will only work to display text files. Displaying non-text files T:such as files ending in "COM," may cause your terminal to do strange things. T: U:*PAUSE J:*BEGIN *PIP CLRS: LF: 2 T: {The PIP Command} LF: 2 T:This command is used to move files around. It can be used to move files from T:one diskette to another, frofrom its Drive A, you must use SYSGEN to place a copy of CP/M on the T:diskette first. This is because the CP/M operating system always expects to T:find a copy of itself on the diskette in drive A. T: T:Using a non-sysgened diskette in drive A usually results in the error message T:"NOT A SYSTEM DISKETTE. PRESS RESET TO TRY AGAIN." U:*PAUSE J:*BEGIN *PAUSE CUR:0,23 TNR: Press{RETURN}to continue: { INMAX:1 A: E: *RETURN CLRS: LF:10 T:{ TNR:Returning to the Main Menu. Please stand by. . . CH:MICRO.PIL d type: T: T: { REN B:MEMO.TXT=B:LETTER.TXT} T: U:*PAUSE J:*BEGIN *STAT CLRS: LF: 2 T: {The STAT Command} LF: 2 T:This command may be used to report the size of a file, or the amount of space T:left on a diskette. Here are some examples of its use: T: T: {STAT A:} - Reports space remaining on the disk in drive A. T: {STAT FILENAME} - Reports the size of the file FILENAME. T: {STAT B:FILENAME} - Reports the size of the file FILENAME on drive B. T: {STAT C:*.*} - Reports the size of all files on drive C. T: T:The characters *.* are called "wildcards," meaning that they will match any T:character name. There are many forms of wildcards, all of which are fully T:covered in the CP/M reference manual. T: T:There are other more advanced uses of STAT, like making a file so it won't T:show up in a directory list, or so it can be looked at but not changed (read- T:only). These are also covered in the CP/M reference manual. T: U:*PAUSE J:*BEGIN *TYPE CLRS: T: m a diskette to the screen, or from a diskette to T:the printer. There are many different ways to use PIP; the following examples T:illustrate the most common forms: T: T: {PIP B:=A:FILENAME} - Makes a duplicate copy on drive B, of the file T: "FILENAME" on drive A. T:{ T: PIP C:NEWNAME=B:FILENAME} - Makes a duplicate copy on drive C, of the file T: "FILENAME" on drive B, calling it "NEWNAME" on T: drive C. T: T: {PIP B:=A:*.*} - Copies all files from drive A to drive B. T: T:Your CP/M reference manual has more information on the PIP command, including T:the use of "wildcards" when copying files. T: U:*PAUSE J:*BEGIN *SYSGEN CLRS: LF: 2 T: {The SYSGEN Command} LF: 2 T:This command is used to place a copy of CP/M in its reserved place on a T:diskette. The use of this command is fully explained in the Micro Decision T:User's Guide. T: T:Anytime you want to create a diskette that can be used to boot the Micro Dec- T:ision  R:Morrow Designs Micro-Menu system - Rev 2.5 R:MD-3/3P version Module - MDWORK.PIL without BAZIC R:Copyright 1982, 1983, 1984 Morrow Designs, Inc. R:All Rights Reserved R:Written by Harrison Schreppel for Morrow Designs R:Modified by John VanderWood 3/27/84 *BEGIN ESC:*RETURN CLRS: LF: 3 T: {CREATE A WORKING DISKETTE} LF: 2 T: This operation creates a "working diskette" for any of the T: supplied software. When done, you will have a diskette with all T: the necessary files for a particular application program, and it T: will be installed for your equipment--automatically! In addition, T: your distribution copies of the software will be backed-up, and T: can be put away for safe keeping. T: T: You must have a spare diskette for each of the working disk- T: ettes to be created. The diskette doesn't have to be blank, but T: any information on it will be erased. To create a complete set of T: dislaced T: on your NewWord Working Diskette.} You will need a spare disk, the NewWord T: Distribution Diskette, and the Correct-It Distribution Diskette before T: continuing. T: TNR: Press any key to continue: INMAX: 1 A: CLRS: LF: 2 T: Before NewWord can be installed for your system, you must select your T: printer type from the list below. If you are not sure what to choose, T: talk to your dealer. If you have no idea how to respond and no-one is T: around to help, select "2 Draft Printer." T: T: {1} Simple {8} NEC Spinwriter 2000 series T: {2} Draft printer {9} NEC Spinwriter 3500 series T: {3} Typewriter printer {10} NEC Spinwriter 5500 series T: {4} Qume Sprint 11 {11} Okidata Microline 84 (step 2) T: {5} Silver Reed EXP550 {12} Okidata models 92/93 T: {6} Diablo 1610/20/40/50 {13} Epson MX80/100 & FX80/100 T: {7} Diablo 630 {14} C.Itoh Prowriter T: T: bylnxn J:*SELTERM *12 DEF: $PRINT bymnxn J:*SELTERM *13 DEF: $PRINT bynnxn J:*SELTERM *14 DEF: $PRINT byonxn J:*SELTERM *15 DEF: $PRINT byenh3a'M'o'r'r'o'w' 'M'P'1'0'0'/'2'0'0'/'3'0'0' 'S'e'r'i'e's' 'P'r'i'n't'e'r0D0A00.xxxn J:*SELTERM *SELTERM DEF: $MDL 'M'i'c'r'o' 'D'e'c'i's'i'o'n' 'L'e'v'e'l' c:a=@9-3 j(a):*lvl4nw c:a=a+1 j(a):*lvl3nw c:a=a+1 j(a):*lvl2nw c:a=a+1 j(a):*lvl1nw C:a=a+1 j(a):*lvl0nw *lvl4nw def: $TERM ayonha$MDL 'I'V' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *lvl3nw def: $TERM ayonha$MDL 'I'I'I' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *lvl2nw def: $TERM aynnha$MDL 'I'I' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *lvl1nw def: $TERM ayrnha$MDL 'I' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *lvl0nw def: $TERM ayknha$MDL '0' 'T'e'r'm'i'n'a'l0d0a00xx j:*install *DRAFT CLRS: LF: 6 T:} T: With{2}, your printer is going to be installed as a {DRAFT PRINTER.} T: This will be fine for general-purpose printing; however, there may T: be some printing features (like supersckettes, you'll need 14 spares. T: T: T: Press{RETURN}when you're ready to go, or TNR: Press{ESC}to go back to the Main Menu. A: *MAIN U:*MSG *SELECT CLRS: LF: 4 T: Following is a list of the programs included with your Micro T: Decision. To create a working diskette containing one of these T: programs, enter its number after the "Option" prompt. LF:2 T: {1} NewWord & Correct-It T: {2} SuperCalc T: {3} Correct-It only T: {4} Personal Pearl T: {5} Quest T: {6} MBASIC T: {ESC} Return to{MAIN MENU} T: {R} Review instructions T: *ACTION CUR:0,19 TNR: CUR:0,19 TNR: {Option: INMAX:1 A: M:1,2,3,4,5,6,R, BELLN: JN:*ACTION T:{ M:R JY:*MAIN CLRS: M:1 JY:*NEWWORD M:2 JY:*SUPERCALC M:3 JY:*CORRECTIT M:4 JY:*PEARL M:5 JY:*QUEST M:6 JY:*MBASIC *NEWWORD LF: 7 T: T: For convenience, {the spelling checker "Correct-It" will also be p {15 Morrow's MP100/200/300 series} *NWLOOP1 CUR:0,20 T: CUR:0,20 TNR:}Please select your printer and press RETURN: { INMAX:3 A: #ptr M: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10, 11, 12, 13, 14, 15, BELLN: JN:*NWLOOP1 *NWLOOP2 CUR:0,20 TNR: CUR:0,20 TNR:}You selected printer number{#ptr.} Is that correct? Type{Y}or{N}: INMAX: 1 A: M:Y,N BELLN: JN:*NWLOOP2 M:N JY:*NWLOOP1 CASE (#ptr):*1,*DRAFT,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12,*13,*14,*15 *1 DEF: $PRINT byanxn J:*SELTERM *2 DEF: $PRINT bybnxn J:*SELTERM *3 DEF: $PRINT bycnxn J:*SELTERM *4 DEF: $PRINT bydnxn J:*SELTERM *5 DEF: $PRINT byenxn J:*SELTERM *6 DEF: $PRINT byfnxn J:*SELTERM *7 DEF: $PRINT bygnxn J:*SELTERM *8 DEF: $PRINT byhnxn J:*SELTERM *9 DEF: $PRINT byinxn J:*SELTERM *10 DEF: $PRINT byknxn J:*SELTERM *11 DEF: $PRINT  ripting) that will not work T: unless you reinstall NewWord with the NWINSTAL.COM program. Refer T: to the{Nuts & Bolts}section of the NewWord User's Guide for details T: on reinstalling NewWord for a specific printer. A briefer discus- T: sion of the same topic appears in the Correct-It User's Guide. LF:2 TNR: Press any key to continue: { INMAX: 1 A: J:*2 *install CLRS: LF:11 T:{Insert the SPARE diskette in the UPPER drive and close the latch. TNR: Press any key when you're ready: INMAX: 1 A: T: T: Stand by. . . CPM:format b d;pip;B:=pip.com;B:=key.com;B:=stat.com;;sysgen;a;b;; DEF: $DISK NewWord DEF: $EXISTFILE nwinstal.com C:n=@8-1 U(n):*3DRIVES J(n):*NWCONT U:*EXIST *NWCONT CLRS: LF: 11 T: Okay, that looks like the NewWord Distribution diskette. TNR: We'll switch diskettes again in a second. Stand by. . .{ LF: 7 CPM:B:;pip B:=C:*.*;B:;era nw.key;ren nw.key=nw2.key;nwinstal;nwu;nw;$TERM$PRINT;A: C:a=@9-2 DEF(a):$NWAUTO key nw J(a):*NWCPM DEF:$NWAUTO nwely that you'll be able to get T: more efficient performance from your terminal by later running the NewWord T: installation program "NWinstal". See the pamphlet "Special Instructions T: for NewWord and Correct-It" for instructions. T: TNR:{Press any key to continue: INMAX: 1 A: *NWDONE CLRS: LF: 10 T:{Your working diskette for NewWord and Correct-It is now finished. Put the T: Distribution copies away in a safe place. T: TNR: Press any key to return to the Create Working Disks Menu: } INMAX: 1 A: J:*SELECT *SUPERCALC DEF: $DISK SuperCalc DEF: $EXISTFILE sc.com C:b=@8-1 U(b):*3DRIVES J(b):*SCCONT U:*EXIST *SCCONT CLRS: LF:11 T: Okay, that looks like the right diskette. We'll switch diskettes T: again in a moment. {Be sure the upper drive has the SPARE disk- T: ette in it.} T: TNR: Press any key to continue: { INMAX: 1 A: c:x=@9 J(x):*SCCPMS CLRS: LF: 4 T:}Because you selected "None of the Above" at the Terminal Selection Menu back T: when you created yottes made with this selection will have nothing but Correct-It on them. T: T: Label a spare diskette "Correct-It Working Diskette" and place it in the T: UPPER drive. Do that now. T: TNR: }Press any key when you're ready:{ INMAX:1 A: CPM:format b d DEF: $EXISTFILE correct.com DEF: $PROG correct DEF: $DISK Correct-It C:b=@8-1 U(b):*3DRIVES J(b):*CORCONT U:*EXIST *CORCONT CLRS: LF: 9 TNR:Okay. }That looks right to me. Stand by. . .{ CPM:pip B:=C:*.*; J:*COMPLETE *PEARL CLRS: LF:4 T: }Personal Pearl is a very powerful application program. In making it so T: versatile however, you are faced with a lengthy installation procedure. T: We have made this procedure as clean and straight-forward as possible. T: If you follow all the instructions, you will end up with a personalized T: working copy of the Personal Pearl data base management program. T: T: Be forewarned that you'll have nine diskettes to keep track of, and you T: will be swapping them in and  *NWCPM CPM:pip B:=return.com;era B:nwinstal.com;era B:nwu.com;auto *B: $NWAUTO; *LOOPB CLRS: LF:2 T:{ T:Now when your lower drive is reassigned as drive C, insert the CORRECT-IT T:Distribution Diskette. ----------} T: T:Drive A is still the CP/M System Diskette. T:Drive B is still the spare (working) diskette.{ EXIST: C:correct.com JY: *CORRECT T:} T:That appears to be the wrong diskette. Please be sure that drive C con- T:tains the Correct-It Distribution Diskette. T: TNR:Type any key to switch back to drive A (The CP/M System disk): { INMAX: 1 A: CPM: J: *LOOPB *CORRECT T:} T:Okay, that looks like the Correct-It diskette. TNR:We'll switch diskettes again in a second. Stand by. . .{ CPM:pip B:=C:*.* C:x=@9 J(x):*NWDONE CLRS: LF: 6 T:}Since you selected "None of the above" at the Terminal Selection Menu back T: when you created your CP/M System Diskette, NewWord has been installed for T: a Level 0 or "Minimum" terminal. It's likur CP/M System Diskette, SuperCalc will NOT be installed T: automatically in the following operation. Later on, you will need to run the T: program INSTALL.COM on your SuperCalc Working Disk to set it up for your own T: terminal. {See page B-14 in the SuperCalc User's Guide.} T: TNR: Press any key to continue: { INMAX: 1 A: CPM:format b d;;pip b:=C:*.*; DEF:$PROG sc DEF:$DISK SuperCalc J:*COMPLETE *SCCPMS CPM:format b d;pip B:=C:*.*;B:;era sc.key;ren sc.key=sc2.key;A:; C:a=@9-3 J(a):*lvl4sc C:a=a+1 J(a):*lvl3sc C:a=a+1 J(a):*lvl2sc j:*lvl1sc *lvl4sc DEF: $PROG key sc CPM:B:;scinst;y;oyay;A: J:*COMPLETE *lvl3sc DEF: $PROG key sc CPM:B:;scinst;y;g1ay;A: J:*COMPLETE *lvl2sc DEF: $PROG sc CPM:B:;scinst;y;g1ay;A: J:*COMPLETE *lvl1sc DEF: $PROG sc CPM:B:scinst;y;f1ay;A: J:*COMPLETE *CORRECTIT CLRS: LF: 7 T:{This operation will create a Correct-It Working Diskette. Correct-It is T: probably already present on any NewWord Working Diskettes you have created. T: Diske out of both drives. {So label the diskettes T: properly and read the screen instructions carefully!} T: T: You will need SIX spare diskettes and about 30 minutes of spare time. If T: you do not want to make working copies of Personal Pearl now, press ESC. T: TNR: {Press anything else to keep going: } INMAX: 1 A: CLRS: LF: 5 T:} T: Before getting started, you should label the six diskettes{exactly}as T: shown here: T:{ T: Pearl Backup Master ##1 T: Welcome and File Maintenance T: Starter Library T: Sort Data T: Design Forms and Reports T: Print Reports and Enter Data} T: T: Next you'll format each of the six to prepare them for use. For the T: next few minutes, all diskette swaps will be in and out of the UPPER T: drive. Leave the CP/M System Diskette in the lower drive. T:{ TNR: After}labelling the diskettes, press any key to proceed:{ INMAX:1 A: DEF: $NAME Pearl Backup Master ##1 U: *LOOPF DEF: $NAME Welcome and File Maintenance U: *LOOPF DEF: $NAME Starter Lib1 CUR:0,13 T: ______________________________ CUR:0,13 TNR: Type your name and press RETURN: { INMAX:30 A: $NAME *PRLLOOP2 CUR:0,15 T: }You have entered your name as{$NAME}. T: }Is it{exactly}as you want it, TNR: and is there a space in it? Type{Y}or{N}: INMAX:1 A: M:Y,N JN:*PRLLOOP2 M:Y JN:*PRLLOOP1 CLRS: c:a=@9-2 DEF(a): $ter 5 j(a):*doit c: a=a+1 DEF(a): $ter 2 j(a):*doit DEF: $ter 1 *doit CPM:B:;ren install.dat=instalf.dat;welcome;$ter;p;2;$name;y;A: *PIPS CLRS: LF: 2 T: }Okay! Good work! T: T: {Put the Pearl Distribution Diskette ##1 of 2 away where it is safe and won't T: confuse you. From here on your master diskettes are PEARL BACKUP MASTER ##1 T: and PEARL DISTRIBUTION ##2 OF 2.} T: T:} In the messages that follow, when you see{"Your lower drive is being reas- T: signed as drive C,"} this means to insert {PEARL BACKUP MASTER ##1} into the T: {LOWER}drive (it's probably still in the upper dw. T: TNR: Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip B:=C:psort.*; CLRS: LF: 7 T: }Still there? Good! Remove the Sort Data Diskette from the upper drive and T: set it aside; you're done with it now. T: T: Next, insert the DESIGN FORMS AND REPORTS Diskette in the UPPER Drive.} Do T: that now. T: T: Is a pattern emerging? Don't get too bored; things will change in a TNR: minute. . . Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip;B:=C:pearl.a00;B:=C:prlhelp.txt;B:=C:pearldf.*;B:=C:pearldr.*;B:=C:pearli.*;; CLRS: LF: 7 T: {Remove the Design Forms and Reports Diskette and insert the PRINT REPORTS T: AND ENTER DATA Diskette in the UPPER DRIVE.} Do that now. T: TNR: Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip;B:=C:pearl.a00;B:=C:prlhelp.txt;B:=C:pearlpr.*;B:=C:pearled.*;; *LOOPG CLRS: LF: 5 T: }Thus ends Phase I. For Phase II, you need PEARL DISTRIBUTION MASTER ##2 T: of 2. Unless you have four disk drives,{whenerary U: *LOOPF DEF: $NAME Sort Data U: *LOOPF DEF: $NAME Design Forms and Reports U: *LOOPF DEF: $NAME Print Reports and Enter Data U: *LOOPF J: *MASTBKP *LOOPF CLRS: LF: 5 T: }Insert the{$NAME}diskette into the UPPER drive and TNR: close the latch. Press any key when you're ready: { INMAX: 1 A: CPM:format b d;sysgen;a;b;;pip B:=return.com; E: *MASTBKP CLRS: LF: 3 T: {Insert the disk you labelled PEARL BACKUP MASTER ##1 into the UPPER drive T: and close the latch.} Do that now. T: TNR: Press any key when that's done: INMAX: 1 A: DEF: $DISK Personal Pearl ##1 of 2 DEF: $EXISTFILE welcome.com C:b=@8-1 U(b):*3DRIVES J(b):*PEARLCONT U:*EXIST *PEARLCONT CLRS: LF:2 T:}Okay. Everything looks good so far. Stand by. . .{ T: CPM:pip B:=C:*.*; CLRS: LF: 7 T: T: {Next I need you to type your name exactly as you would like it to appear on T: Personal Pearl screens. It can be up to thirty characters, and THERE MUST T: BE AT LEAST ONE SPACE IN IT.} *PRLLOOPrive right now). T: T: When the lower drive is reassigned as{drive A,}put the{CP/M SYSTEM DISKETTE} T: back in. Got it? You may want to jot that down. T: T: Let's give it a try: T:{ EXIST:C:install.dat JY: *OK T:} T: That appears to be the wrong diskette. Be sure it's BACKUP MASTER ##1. TNR: Press any key to continue: INMAX: 1 A: T: J: *PIPS *OK CLRS: LF: 2 T:} T: That looks like the right diskette. You'll be switching diskettes several T: times in the next few minutes, so don't be surprised. T: T: Insert the diskette labelled {Welcome and File Maintenance}into the {UPPER} TNR: drive and close the latch. Press any key when you're ready: INMAX: 1 A: CLRS: CPM:pip;B:=C:welcome.*;B:=C:pearl.a00;B:=C:pearlfm.*;B:=C:prlhelp.txt;B:=C:install.dat;; CLRS: LF: 7 T:{ Remove the Welcome and File Maintenance Diskette from the upper drive and T: set it aside. You're finished with it for now. T: T: Then insert the SORT DATA Diskette in the UPPER drive.} Do that no ver you see "..reassigned T: as drive D" (D now, not C), this means "Put the MASTER ##2 IN THE LOWER T: DRIVE. Okay?} T:} T: A quick test run: T:{ EXIST:D:pearli.lib JY: *OK1 T:} T: That appears to be the wrong diskette. Be sure it's number 2 of 2, and that TNR: it's for Personal Pearl. Press any key to continue: INMAX: 1 A: J: *LOOPG *OK1 CLRS: LF: 7 T:} T: Okay. Looks like you're getting to be a real pro. You won't need Backup T: Master ##1 anymore, so put it somewhere out of the way. T: T: {Leave the PRINT REPORTS AND ENTER DATA Diskette in the UPPER DRIVE. If you T: already removed it, put it back. Do that now.} T: TNR: Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip;B:=D:pearled.*;B:=D:pearlpr.*;; CLRS: LF: 7 T: Remove the Print Reports and Enter Data Diskette and insert the DESIGN FORMS T: AND REPORTS Diskette in the UPPER DRIVE. Do that now.} T: TNR: Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip;B:=D:pearli.*;B:= set-up your company data and put Quest to work for T: you, you will need to create a new "Data" Disk. The procedure in Option 2 T: will guide you through the necessary steps to do this. You must have sent T: in your registration to Quest Inc. See your Quest manual for information T: about registering your copy of Quest. T: T: {1} Create Quest Instructional Diskettes T: {2} Create Quest (registered) Data Diskettes T: {R} Return to previous menu T: T:{OPTION:} *questloop CUR:10,15 T: CUR:10,15 INMAX:1 A: M:1,2,R, BELLN: JN:*questloop M:R JY:*SELECT M:1 JN:*production CLRS: LF:8 T: Creating a Demonstration copy of Quest requires three blank diskettes. T: Label the three blank diskettes as: T: T: {1} Instructional Disk T: {2} Posting Disk T: {3} Reporting Disk T: TNR: Press{RETURN}to proceed, AFTER you have labelled the diskettes: A: CLRS: LF: 8 T: Insert the diskette you just labelled "Instructional" disk in your UPPER T: disk drive, anreplace it with your{CP/M System Diskette. }Then press RETURN. T: TNR: Got it? Okay; press RETURN when you're ready to continue: { A: CLRS: CPM:PIP B:=C:*.*; DEF: $QUEST POSTING U: *questcopy TNR:{ CPM:BACKUP| DEF: $QUEST REPORTING U: *questcopy TNR:{ CPM:BACKUP| CLRS: LF: 8 T: { You now have an instructional copy of the Quest Bookkeeper system. T: Place your distribution diskettes away in a safe place.} T: TNR: Press RETURN to return to the Create Working Diskettes Menu: A: J:*SELECT *questcopy CLRS: LF: 6 T: }Now, insert the diskette you labelled $QUEST disk in your UPPER disk T: drive. You will be asked to insert a {SOURCE}diskette in drive A (your T: lower disk drive). When this request is made, insert your{DISTRIBUTION} T: copy of the quest $QUEST disk in your LOWER drive, and press RETURN. T: TNR: Press RETURN to continue: { A: E: *production CLRS: LF: 6 T: }You will need two blank diskettes. One of the blank diskettes will only T: be used foD:pearldf.*;B:=D:pearldr.*;; CLRS: LF: 7 T: {Now remove the Design Forms and Reports Diskette and insert the STARTER T: LIBRARY Diskette in the UPPER Drive.} Do that now. T: TNR: Press any key when you're ready: { INMAX: 1 A: CLRS: CPM:pip;B:=D:*.?00;B:=D:*.dir;; CLRS: LF: 7 T: {Will the wonders never cease! Just when you least expect it, you find T: YOU'VE FINISHED creating Personal Pearl Working Diskettes! T: T: The one labelled Backup Master ##1 now serves no purpose; it's just part T: of this process. The two Distribution Diskettes are not used either, T: unless you need to create a new set of working disks. T: TNR: }Press any key to return to the Create Working Diskettes Menu: { INMAX: 1 A: J: *SELECT *QUEST CLRS: T: T:}You have two choices here. If you have just received your system you must T: first create your working Instructional disks (Option 1). This option is T: used for demonstration and training purposes only. T: T: When you are ready tod press RETURN when you're ready. T: TNR: {DO NOT PUT YOUR DISTRIBUTION DISK IN THE DISK DRIVE!} A: TNR:{ C:a=@9-2 DEF(a):$KPAUTO key kp J(a):*KPCPM DEF:$KPAUTO kp *KPCPM CPM:FORMAT B D;SYSGEN;A;B;;AUTO *B: $KPAUTO;PIP;B:=KEY.COM;B:=A:RETURN.COM;; CLRS: LF: 8 T: }Insert the diskette you labelled "Posting" disk in your UPPER disk drive, TNR: and press RETURN when you're ready: { A: CPM:FORMAT B D CLRS: LF: 8 T: }Insert the diskette you labelled "Reporting" disk in your UPPER disk TNR: drive, and press RETURN when you're ready: { A: CPM:FORMAT B D CLRS: LF: 4 T: }Now take the diskette you labelled "Instructional" disk, and place it in T: your UPPER disk drive. T: T: When your lower disk drive is re-assigned to be "drive C," insert the disk T: labelled {Quest DISTRIBUTION Diskette...Instructional (Data) Disk} in your T: LOWER drive and press RETURN. T: T: When the lower drive is assigned back as drive A, remove the Distribution T: disk and  r making the production diskette, and should be labelled as T: {"TEMPORARY INSTRUCTIONAL".} The other blank diskette will become the T: Production disk for your company, and should be labelled {"PRODUCTION".} T: T: After labelling the diskettes, insert the blank {PRODUCTION} diskette in TNR: your UPPER drive, and press RETURN when you're ready: { A: C:a=@9-2 DEF(a):$KPAUTO2 key kp J(a):*KPCPM2 DEF:$KPAUTO kp *KPCPM2 CPM:FORMAT B D;SYSGEN;A;B;;AUTO *B: $KPAUTO2;PIP;B:=A:RETURN.COM;B:=A:KEY.COM;; CLRS: LF: 10 T: }Please make sure that your printer is turned on and is on-line. T: TNR: Press RETURN after you do that: { A: CLRS: LF: 10 T: }Insert the blank{TEMPORARY INSTRUCTIONAL}diskette in the UPPER drive, and TNR: press RETURN when you're ready: { A: CPM:FORMAT B D; CLRS: LF: 3 T: }Leave the TEMPORARY INSTRUCTIONAL diskette in the upper drive, and go get T: your{distribution}copy of the disk that Quest calls{"Instructional (Data) T: disk".} T: T: Remnewly configured CP/M T: System Diskette in Drive B. {Ignore that message.} The placement of disks T: in the drives is as follows: T: T: {DRIVE B (UPPER)} -- This should now have the diskette you labelled T: {PRODUCTION.} T: T: {DRIVE A (LOWER)} -- When told to insert your{WORKING}diskette for Quest in T: drive A, you must insert the diskette you labelled as T: {TEMPORARY INSTRUCTIONAL.} T: TNR: When you are ready to continue, press RETURN: A: CPM:PAUSE KINS QUEST|PIP B:=A:KP.KEY;KINS|B:RETURN| CLRS: LF: 5 T: }You now have a completed Quest PRODUCTION data disk for your company. The T: TEMPORARY INSTRUCTIONAL disk is no longer needed. T: T: You'll still use the same Posting and Reporting working as before. T: TNR: To return to the Create Working Diskettes Menu, press RETURN: { A: J:*SELECT *MBASIC DEF: $DISK MBASIC DEF: $EXISTFILE mbasic.com DEF: $PROG mbasic CLRS: LF: 10 T:}Be sure the spare diskette is i {Drive C.} It is very important that you place the T: correct diskette in the LOWER drive when it is re-assigned. T: T: Whenever I re-assign the drive to be {Drive A}, place T: your{CP/M SYSTEM DISKETTE}in the LOWER drive. T: T: Whenever I re-assign the drive to be {Drive C}, place T: your{DISTRIBUTION} diskette in the drive. Which Dis- T: tribution diskette to use will vary. T:{ T: Drive B} (upper drive) should always have the {SPARE} T: disk in it. The spare diskette becomes your Working T: Diskette. LF:2 TNR: Press any key to continue: INMAX: 1 A: E: *DRIVE3 CLRS: LF: 5 T:}Since you have at least three disk drives, your procedure for creating work- T: ing diskettes is relatively simple. T:{ T: o Drive A always holds the CP/M System Diskette. T: o Drive B holds the SPARE diskette that becomes the working diskette. T: o Drive C holds the appropriate DISTRIBUTION diskette. T: TNR:}Press{[RETURN]}to continue: { A: E: *EXIST CLRS: LFember? You said you would put it in a safe place. Go get it now. T: T: When we continue, you will be asked to put a{SOURCE}diskette in drive A. T: At that time, put your{DISTRIBUTION COPY}of the Quest Instructional (DATA) T: disk in your LOWER drive, and press RETURN. T: TNR: Press{RETURN}when you're ready to continue: { A: CPM:BACKUP|SYSGEN;A;B;;PIP B:=A:RETURN.COM; CLRS: T:} Now, take the {TEMPORARY INSTRUCTIONAL}diskette out of the UPPER drive, and T: insert the diskette you labelled{PRODUCTION}in the drive instead. T: T: As we continue, you will be asked to insert your{WORKING}diskette for Quest T: in drive A. At that point, insert the diskette you labelled as {TEMPORARY T: INSTRUCTIONAL}into the LOWER drive instead, and follow with a RETURN. This T: will cause Quest to create a production version of itself for your company. T: T: The Quest installation program that is about to run will say that you must T: have the Quest Instructional disk in drive A, and a n the upper drive. TNR: Press any key when you're ready: { INMAX: 1 A: CPM:format b d; C:b=@8-1 U(b):*3DRIVES J(b):*BASCONT U:*EXIST *BASCONT CLRS: LF: 3 T:}Okay. That looks right to me. Stand by; we'll switch diskettes again in TNR: a minute. . .{ T: CPM:PIP;B:=pip.com;B:=stat.com;B:=C:MBASIC.COM;B:=C:OBASIC.COM;B:=C:RANTEST.BAS;; J:*COMPLETE *MSG C:A=@8-1 U(A):*DRIVE3 E(A): C:A=A+1 U(A):*DRIVE2 E(A): U:*DRIVE1 E: *DRIVE1 CLRS: LF:5 T:}Evidently you responded "1" when asked earlier how many disk drives you have. T: Since Morrow no longer sells single-drive systems, I suspect you made a T: mistake. If so, start over by creating a new CP/M System diskette, giving T: the actual number of drives this time. Recycle this diskette if you like. T: TNR: Press{[RETURN]}to continue: { A: E: *DRIVE2 CLRS: T: T: }You have a two-drive Micro Decision. Because of this, when T: creating working diskettes, {Drive A}will be re-assigned at times T: to become :2 T:} T:Remember, when you see "Your lower drive is is being re-assigned as{drive C}, T:this means Insert the $DISK Distribution Diskette. When it is T:re-assigned as{drive A}, insert the CP/M System Diskette. In summary:{ T: T: Drives A and C are both the LOWER drive. T: Drive A is for the CP/M System Diskette; T: Drive C is for the $DISK Distribution Diskette. T: T: Drive B (the upper drive) always holds the SPARE diskette.} LF:2 T:First we'll switch diskettes twice, to make sure we understand each other.{ T: EXIST: C:$EXISTFILE EY: CLRS: LF: 10 T: {That appears to be the wrong diskette. Be sure drive C contains the T: $DISK Distribution Diskette.} T: TNR: Press any key to switch back to drive A (the CP/M System disk): { INMAX: 1 A: CPM: J:*EXIST E: *3DRIVES CLRS: LF: 7 T:}Place the SPARE Diskette in Drive B. T:}Place the $DISK Distribution Diskette in drive C. T: TNR: Press any key when you're ready: { INMAX: 1 A: EXIST: C:$EXISTFILE EY: CLRS: BELL:  T:}You now have a{$DISK}working diskette. Make sure to label it T: accordingly. T: T: Put the Distribution copy away for safe keeping. You shouldn't need it T: unless something happens to the working copy you just made. T: TNR: Press{RETURN}to go back to the Create Working Diskettes menu: { INMAX:1 A: J:*SELECT *RETURN CLRS: LF:11 TNR:{Returning to the Main Menu, please stand by. . . CH: micro 221@:2!o6+6+6!6#6!6#6:G*o .!N6:^*M^!K6!6!6+6' :$::=2K  :ʤ\:ҷ\x'Ͳ:!\͢  :͈'! Ͳ:$: $͈Ͳ!N6' :!Cwͯ !6:^͢c!6{:/>!/H{ͯ :<2Š ::=HҮͯ !6:Ҿ:2 !6::/H͈;!6:> !/>HHͯ :!^w:<2:0}:@E}:!S!W6: z!]6:cm!c6:_z!_6l ::,: HHҰͯ : 2ó:E:1:2v!q!*8!*6: >ͦ>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*LF: 5 T:{I'm afraid that doesn't look like the right diskette in drive C. CPM: T: To review the instructions, press{[RETURN]}: INMAX: 1 A: J:*3DRIVES *COMPLETE CPM:pip B:=key.com;sysgen;a;b;;auto *B: $PROG;pip B:=return.com; CLRS: LF:7 T:}You now have a{$DISK}working diskette. Make sure to label it T: accordingly. T: T: Put the Distribution copy away for safe keeping. You shouldn't need it T: unless something happens to the working copy you just made. T: TNR: Press{RETURN}to go back to the Create Working Diskettes menu: { INMAX:1 A: J:*SELECT *RETURN CLRS: LF:11 TNR:{Returning to the Main Menu, please stand by. . . CH: micro  INMAX: 1 A: CPM: J:*EXIST E: *3DRIVES CLRS: LF: 7 T:}Place the SPARE Diskette in Drive B. T:}Place the $DISK Distribution Diskette in drive C. T: TNR: Press any key when you're ready: { INMAX: 1 A: EXIST: C:$EXISTFILE EY: CLRS: BELL: (INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB =.:,<> _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$ABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z?$CHECKSUM ERROR$CORRECT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUND$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID SEPARATOR$1 :2L> ̈́M9  !p+q* !q*& *M *M !p+q*!!p+q*"!p+q*$!6  !kp+q*j> >ڪ Þ !qp+q/ *pDM9: :M2r:N!r !:r *r& N!r4 !6:͔: :ͳ.!ws+p+q+p+q:w=2wN *s*u w*s#"s*u#"u' !"*M^7 !x6:!xھ **DM͆ 2yʭ :yʗ ͯ *"*6:2x÷ *"!x4d !"/ !j}=2| !"*KM^'_ !z6:|!z1 * "}*}DM͆ ' ͯ *"!z4 :e !"͆ !z6:|!z '? 2*H#"H!{6:{ր!Ң *{& :{4 2!{4m *":ڹ ͯ !z4I '2!"!q: !4>!S :S! :2*M! ^#V͎ * :w*#" = = = = = ͯ  *M !6q  !6q  !q  *& !6à  !6 à  !60à  *& !6  !6  !6  *& . 1 4 7 : = F P [ f q  *M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz!b~26!~6<+wé>!`ҥ*`MͭҞ!`6!6> :é:(!q:!wO! ~2*& :w>!:!4!6>:N<2N!> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>*M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ 2*">!b!ͯ >!`0ͯ !q:E:24J!46*}a!44EJ *KM^'́:‚ͯ !36'n::0:f9OY#9.3'ͳ.:020' 'ͳ'7 6'!j>A+!s!"@͓1!"<**"͓n "Dn"":!Q2҂:X!Wғä:ڤ*MEÓ:ұ@@:O2Mc;!6#6>!)*&P ~"::H:H:H:H"!6!4:_jYO jM*"S*" 3@bl*M1͓!""7 *M^͆ \͔!":͎H*#"ͧÝ/ :>͛9ͯ .*#":_!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈* :2!q: " *M n :c4 *M n :2!c:Q !c:2: !:cw>!n !5 Y : { !6!q:!lwҙ  â :0O !q:O| :O| !6:]2l:o'2o:n'2n:m'2m*mMͣ *nMͣ *oMͣ :]:   *}2D" * * *&"!q:UY: Y:ҩ: ʩ:_2ʘ:€!6<:<2!ژ!6 >!]Ҥ; !6:Q::H: !6*M : !6!q:a/>z!/H:_2:!q:A/>Z!/H8: 2::=O>m:W!Q} Hmd>9>!6:2*M!E ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::^Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[ ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:^R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\-:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6 DM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨L!*p+q*)O2'!,p+q*+O2'O2'O!.p+q*-LRRLR\LR" O!/q*/& L!1p+q*0#L~*##N!ͽ͞"T!Vq*VMͳ!Xp+q!W* >Wr#MͲ!_p+q!`6>!`6*`&*^*`&Y />!`4 >*]& ~ O!]49!a6:a*]& ~2bO>z*bM >!b/~,H~:H~*H~.H~>H~<H~=H*]& 6!]4T!]4!cq*a&Y :cw!a4!gr+s+p+q!h6>fr*d*f!is*d́"dPY! "f>!h#~Haͫo!h6:i0O͐!mr+s+p+q*lTZs#r*lڶ*l+s#r*jN#F+q#pÌ!nq!"o"q}2uo&"s* s:n*sDM2u:uqos*s"s*o͊O !v6>!vQ*v&w 6`i+46)A*:'ʓ:'O!) ~2vʍ:vO!w 6,]!v6>!v*v&w ~һ*vM !v4˜8AO͐:͐ͱ*##N!ͽ"* N#F*͠"͠Q" 8AO͐jͱͷDM͏ m  Z"l"!6>ʥ *}҆ *M ͱ*}x O͐} W͐ͱ !+s#r!+s#r#4D ͠:\ʹ :\=Oͳͩ !6!)6l :) :)=2) :] & !"}2\!h6?!j6?\:'C:'ƀo&")!)6!"):)/)HҘ]!)6> !)ڎ*)&*)*)&*) y!)6 Ä:) 2):)<2)M*)#")/:)ҩ*)+")`*")#"]!*)!/H!")!"]*)) *)s#r!)6> !).*)&*)*)&*) w:)<2)*)) >w#6*)) w#6*)!) w#6*)%) w#6*)) N#F*)) q#p*)%) *) ~e *) * ~o&͞ *)%) q#p!)6* >!)6!)6>!)=:)!)w=*)&*)~2):)*)& *):)2):):*)!) *)) s, >X\:)“>!d!")>!)d!")!")*++!)a*)) ^#V")]*)")*)) ^#V")]!)6> !)T*)&*)~2)*)&*)~2)O;*)) ^#V"3 Copyright (c) 1979, Digital Research????????????CON:RDR:PUN:LST:DEV:VAL:USR:DSK:TTY:CRT:BAT:UC1:TTY:PTR:UR1:UR2:TTY:PTP:UP1:UP2:TTY:CRT:LPT:UL1:R/OR/WSYSDIRR/O R/W SYS DIR ** Aborted **Active User :Active Files: Drive Characteristics65536: 128 Byte Record CapacityKilobyte Drive Capacity32 Byte Directory EntriesChecked Directory EntriesRecords/ ExtentRecords/ BlockSectors/ TrackReserved Tracks is Temp R/O Disk: d:=R/OSet Indicator: d:filename.typ $R/O $R/W $SYS $DIRDisk Status : DSK: d:DSK:User Status : USR:Iobyte Assign: =Bad DelimiterInvalid AssignmentBad Delimiter: Bytes Remaining On R/, Space: Invalid File Indicator** Too Many Files **File Not Found Size Recs Bytes Ext Acc65536 set to R/O Invalid Disk AssignmentWrong CP/M Version (Requires 2.0)!9"2!T OË!]6:\:] Hr3 Ë:\ʀË͇ /ҋͺ *2!"q*"&L ͐ ͐ ͐!$p+q*#~*#N͐*##"#÷!&p+q͠*%DMͱ O O!(q*(&>!H% - *DM ͱͷDM  ͱ* N#F 9ͱ * ^#V))DM Tͱ* ~ *} *M!+s#r#4 !s+p+q!6!66:!ڄ !6!6>!r *&**&Y i !6!4+4A :} :!4- >!699 2¨ :!4: :2!6+6>! :O!9 DMi ͱ:!O!Y DMi :2:2͠!4 F :® )!6>!ګ ͠:O!9 DMi 8ͱ!6> !ڤ Å :2k ä  ͐:!O!Y DMi w !4C F :¿ >F : F :=229:Y= ;>9*&Y DM =2 I>!6:=28 :2:2 :!!29:Y T >:Y,e \>Ì !p+q*~:ʉ *N͐*#"o :͐!p+q!'"!6> **{2*́"PY! ">!+~H !6:0O͐à k͐ )*)) *)) N#Fq#p*)) *)s#r*)#")!)6 J:)!)J!)6 :)<2)*)")҈q:tw͠ͱ!"))ҍ*)) ^#V")]͠.*)DM\ -°!\6:\ͣ:ͱ*}DM'ͫ*)%) N#F'ͫ*)!) N#F'k͐ͫ*)) N#FͫR͐/͐ *) ~IO͐NW͐ͫ8AO͐:͐ *) ~2)t(͐:)҃)͐*)#")Ã& \!"))\Ұ*)")]͠*)M! ^#V *) >*) w *) >*) w *) >*) w *) >*) w.*)DM\ -+!\6uͱ:)O! DMͱ*)#")Ù*))))))"):m w>.Yn -:YS:Z Hҧ!6> 2)½>!)6> !)*)&*)>2) :) .͐*)M͐:)<2)99:Y=/9&ͩ c,Hͩ 9 EHͺ i`N#Fog_og_ogDM!>))덑o|gҘ =†DM!>))ҭ =¥~ ³^#V) ½^#V|g}o _{ozgi`N#Fogo&og_{_z#WÂCOPYRIGHT (C) 1978, DIGITAL RESEARCH (!"#$%&'(  o&)))))))a{__> k> kr~k#ÂO****!*$*'! ">2!4:(cN͙>2:)!4R!^!*FN͡yR*DMͩ2:7!q͂] r<2:H͹Kͱ:)R*":ͻ!q͂] r1!͂:] \<¦!}Ý2|\ ¬! DMͩ\(ÿ!}Ý!}] (AͨA2 Ar!͂] r͎2!͂!!}] ʝACͨ(A2]A!N}] r͎͙ͩ͡ͱ: G:†¸!6!͂(>͎r!}!}Ý!!Q}(SYSGEN VER 2.0 MD1.2SOURCE DRIVE NAME (OR RETURN TO SKIP)SOURCE ON ], THEN TYPE RETURNDESTINATION DRIVE NAME (OR RETURN TO REBOOT)DESTINATION ON , THEN TYPE RETURNPERMANENT ERROR, TYPE RETURN TO IGNOREFUNCTION COMPLETEINVALID DRIVE NAME (USE A, B, C, D, OR E)NO SOURCE FILE ON DISKSOURCE FILE INCOMPLET2͔!~(G#~ 2"Ox=2y {͔ͦ22A88͔*A^#V__#>2+n#˖ S&S(S:(*G#~ ( ͔ͦS(,D( ͔ ͔ S<SG:0"*?^#V!p">A2͔ : ͔ͦ (͔͔22O*n f F~!R> ݾ >(!}!>(ݾËP(͔[͔##4͔2P7?(2>2͙C͔:˗G:2^V!!:w#:w#w#~w#ˆ:<ݾj͔nfz2K ~(/ 2 (͔j͔>2~ :(͔T͔1*|(6: ͔ͦR 1:A '*}(>A2͔L͔͔ͦ ͔z͙C|k͔! ! *9*'! ! *3*****!<D L  D DKL ͔1w 0 8 :G(A8_ 0 Micro-Decision FORMAT program Rev. 2.3EWRONG VERSION OF CP/MSINGLE SIDED DISKETTE CANNOT ACCEPT DOUBLE SIDED SYSTEM DOUBLE SIDED DISKETTE CANNOT ACCEPT SINGLE SIDED SYSTEM   Copyright 1983 Morrow Designs, Inc. San Leandro, CA $ Disk drive to be used (A-E) $ $ $ Insert diskette to be formatted in drive A, then press [RETURN] $ Single or double sided format (S or D) $D$ Double density -- $Single sided format $Double sided format $ Double density 256 bytes/sector format $ Double density 512 bytes/sector format $ Formatting track 00 $ Write error $ Read error $ Some errors were found on this diskette, use at your own risk.$ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the system diskette in drive A, then press [RETURN] $ Your left drive is being re-assigned as drive A.$ Insert the diskette to be formatted and press [RETURN] $ Insert the system diskette, then press [RETURN] $!M!_(_P2(2P P(PP(BACKUP) program Rev. 1.8 Copyright 1982 Morrow Designs, Inc. San Leandro, CA. Insert the (SOURCE) diskette in Drive (A:) Insert the (DESTINATION) diskette in Drive (B:) Insert the (SOURCE) diskette in the disk drive. Press ([RETURN]) when ready to copy. Type any other character to quit: (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track:  Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the system disk in drive A:, press ([RETURN]) Press (R) to copy a new disk or, to quit, insert the system disk in drive A: and press ([RETURN]) Insert the (SOURCE) diskette, press ([RETURN]) Insert the (DESTINATION) diskette, press ([RETURN]) ( U Ă2=ʦ3%2,ʰ3 ʰ3 ʰ3;(^ (0>2!9^#V!1 Not a SYSTEM Diskette. skette, use at your own risk.$ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the system diskette in drive A, then press [RETURN] $ Your left drive is being re-assigned as drive A.$ Insert the diskette to be formatted and press [RETURN] $ Insert the system diskette, then press [RETURN] $!M!_(_P2(2P P(PP!6*.B^#V!"! N#F!~#foB"! w# S!ͅ!: *6!ͅ!5ͅ]t 7~>22 <2- : ! ͝:- !. ͝ !.  # !ͅ7ePY*! ͅC S S " !" " " [ z*͘8bk" (* k* ͻ[ * ͑" !": ͻ! " : 7U!j!   +| !":- ͻ! " 2 : <!Uj! : O>2  +| !"= S ! =  = *  # +| :A2;!ͅ77" N#FC #^#VS [ DMK ! " K [ * #͘8`i!* q#p#s#r *͑|_>g}o"[+ * ͞[! *# #͞"ͻN#FC  ~#fo2O:]?(!x!ͅ]tR: K[!*6!ͅ>ͻùK x*ͅ* ????0<" 8H=(0O0y(* jͿ@8_ͼͿO~!ͅ~O#}o|g|}MD!xxGyOܴ)öùüÿ()Micro-Decision 2|2>:+ '}3"}3<ʛ3>ʦ3%2,ʰ3 ʰ3 ʰ3; San Leandro, CA. Insert the (SOURCE) diskette in Drive (A:) Insert the (DESTINATION) diskette in Drive (B:) Insert the (SOURCE) diskette in the disk drive. Press ([RETURN]) when ready to copy. Type any other character to quit: (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track:  Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the system disk in drive A:, press ([RETURN]) Press (R) to copy a new disk or, to quit, insert the system disk in drive A: and press ([RETURN]) Insert the (SOURCE) diskette, press ([RETURN]) Insert the (DESTINATION) diskette, press ([RETURN]) ( U Ă2=ʦ3%2,ʰ3 ʰ3 ʰ3; copyright(c) 1977, digital research $Error On Line $SUBNo 'SUB' File Present$Disk Write Error$Command Buffer Overflow$Command Too Long$Parameter Error$Invalid Control Character$Directory Full$Cannot Close, Read/Only?$!9"!͇͊!p+q* ͊!p+q*͍2!p+q*͍2!p+q*͊!p+q*͍!p+q*͍!p+q*͍2!s+p+q+p+q:=2ʦ** w*#"*#"!p+q(+*DM*p*& 6:ep\:=ͧ!t6>!t%\= >!t6:t<2t=O! ~2u b:<2O>9b!60+~9b!60+4:uat:u_2u:uMʉSͧ!v6!"v!|6:|Ҁ!x6 2}:} Hk:} h:}$6 2}$*}M3:}02}O> ͧ3!z6ͭ:}"!}5́ͭ́3*yM"h:}^a A2}O>Vͧ^:}>*z& ~ !z4í!{q*v#"v͙dͧ*vv :{w:x<2xO>}|ͧW Extended Submit Vers 2.0Xsub Already Present$Requires CP/M Version 2.0 or later$:y*###ƒ# yk   җ 4!~=ŐW!xʵ ~#èbx {~#o}où.xsubb!np+q*m2_!pp+q*o ]xsub*"-!/"*"+!""1 M*!"́!"* (xsub active)$|*y ʥ*"*7***x*́͋<͛ :%*=26͋!7^#6 #6 #6$ 8*7~O #w# !6:6=2% ͋*-"*$$$ SUBq:(=2(N *$*& w*$#"$*&#"&' !"N*M^7 !)6:!)ھ *N*DM͆ 2*ʭ :*ʗ ͯ *N"P*6:2)÷ *N"N!) $@BA$! A "!$""-!6]:ͧz2~e:~2O! 6*~& 6$>!~_z*~& w!~5Bx:yͧ*v+"vv ~_{ozg001 $$$$ SUBd$Ͷ>2H *H:H2H}OG *D͋*H:H2H}OG *F͋*H:H2H}OG !͋*H:H2H}OG :cOGi`)I N#F͋*H:H2H}OG !͋*H:H2H}OG :eOGi`)W N#F͋*H:H2H}OG !͋*H:H2H}OG :dOGi`)I N#F͋*H:H2H}OG !͋*H:H2H}OG :fOGi`)[ N#F͋*H:H2H}OG !s͋*H:H2H}OG !8͋*H:H2H}OG ! ͋ýSelection: $Ͷ! !͋ýͶ!N#F! ýͶ!9!!! yw!~!~H7 !!~As!>Zs!~OG! MD|!~OGyw!~OGýͶ!N#F! ýͶ!N#F͋!7 ý9600 baud$4800 baud$2400 baud$1200 baud$ 600 baud$ 300 baud$ 110 baud$CENTRONICS PARALLEL$RS-232 SERIAL $HARDWARE HANDSHAKING ON PIN 20$X-ON / X-OFF $Old version of CP/M $Ͷ*_? ~ Ң!s͢ýͶ!>w#w!~#fo~#foo|g"_!*_B }|!~#fo~#fo"iýͶ*i ~OG!!F> # #>* #~A2( (> #(#NWyxHWo:_:O͈̓ ~t'!$ *CD83010E00B0 :10016000CD88010E09CD7E01010003CD7401C9D5F2 :100170001E271817D51E211812D51E24180DD51E9E :100180001E1808D51E181803D51E1B2A01001600BC :0401900019D1E90098 :0000000000 AUTO HEXAUTO SYMEAUTO COMGAUTO ASMLXAUTO BAKJKAUTO BAKHl*27 !9N#F#^#V#~#fo"Bkb"@i`">OGͶ;ýͶ!9!"aLsýC:f1edcbaͶ!SÑ!l! :cOGi`)I N#F͋yy!l! :eOGi`)W N#F͋y!l! :dOGi`)I N#F͋y!l! :fOGi`)[ N#F͋y y y 7 yͶ ýͶ!~#foMD!XÑ:c>2c×:c2cý:dª>2d×:d2d×:e>2e×>2e×:f>2f×>2f×Micro-Decision SETUP program Rev. 1.0 Copyright 1983 Morrow, Inc. San Leandro, CA$ This program allows you to change the operating characteristics of your Micro-Decision. The changes can be made temporarily or permanently.$ESC) Quit without making any further changes.$F) Save changes on CP/M diskette for use after next boot.$E) Make temporary changes effective immediately.$D) RS-232 SERIAL Printer protocol$C) Printer speed$B) Printer selection$A) Terminal speeͷ}2c*i ~OG!ͷ}2d*i ~OGy < >2eA >2e*i ~OGyZ >2f_ >2fýͶ!~#fo :cw!~#fo :dw!~#fo ~w:f­ !~#fo ~w:e !~#fo ~ wýͶ*ib 1 ýͶv *a*i *_yOxGb ýͶͥ͊ý$Ͷ! ͋ý=$Ͷ! ͋!~#fo)k ~OG! !~#fo)l ~OG! ýCan't read bios $Ͷ*a"> 22:!: *!*!h y !d ͢ ý*#"*}ƀo|g"É Can't write bios $Ͷ*a"> 22:!:M :  :! $ *!*!h ! 9yP ! ͢P ý*#"*}ƀo|g" Ͷ:OG!! >2!!N#F! !! N#F!! !!N#F!$ !~# !!!' ý!! N#F!* ý!9^#V#N#F#~#fo*+++{! 00 OGMDR!~#fo">2: :OG!3 ~#fo:OG!3 yOx#Gi`"!~# :OG!3 ~#fo} :OG!3 ~# *:OG!3 N#F:OG!3 N#F6 **#":w!::#ڽ!::#;>i`"!~#R*"*!y:OG yOxGi`"!N#F:ր:Ҽ!! *!! y!!!D!"!y! *!" y0ý*!y:OG !:OG ͆!! *!" y0ý!y">2!~#fo#2~2:2:2!~w!~#**#"6 !~#&*!yOx#GýͶ!w#w!~#~!N#F(!~w#~wæ! ýͶ! y22ý*#"::%! yx%! ýͶ!N#Fͮi`"!~#Ký* ~DŠ*~ʊ* ! i`":!>>#* 6!~#foMDý!>w>#wÊͶ!#~!~#~ý!N#F!,3 "* ~ý*MDýͶ!~#fo#~2#~2#~2#~2!~#fo "*! !!Y##~*" !!Y##~*# !!Y##~ýͶ!N#F!~w#~w}!~#fo!~#fo~A!~#fo>Z!~#fo~OG! MD!~#fo~OGyw!~w#~wýͶ!!9N#F#q#pV2.1: copyright (c) 1979 by Whitesmiths, Ltd.t S3  # + # +CCCP  *͗:2J   8T0L(P C DE{ hͶ!~#z !N#Fͮi`"!~#€ ý*~OG! Ñ* ~OG!, Ñý!N#F!N#F*ý>2!~#fo"!~#fo!~#fo "* ~#K!::#h**#"~OG:OG  >2 >2 !~#foMDýý!::#h*~OG!D Ñ*!yOx#Gý!:‹:#ʛ* ~ ʬ! :OG **#"~OG:OG K  Ͷ!9!~#fo"!~#fo"!~#fo "!~#fo#~!~>2222!ͥ##~2!~#fo ~#ʨ!~#ʄ!N#F:ր::!"*! *!" y*ý!y:OG "!"*:2:2}ʄ**#"~2:OG!Ñ!z! *!! yv!!!zDv** "!:2:#2!~#fo#2~2:2:2!~w>2T!:OG}o|g"!::#ҟ*MDä*MDi`"**!z:OG ͆*!" y*ý!~#&!::#&**#"!~#~!~#fo~,!~w#~w!~#fo!yOx#GýͶ!N#F!~w#~w}ʃ!N#F!~w#~w!~GýͶ!N#F!~w#~w}!N#F!~w#~w!N#F!~w#~w~É!~#foMDýͶ!~#fo!~#fo !ý!~w#~w!~w#~w!~#fo~ý!9~w#~w#~w#~w+MD!9 _ #>{ !94>! 9~+w>#w! 9N#FxO>G4ҬO>G! 9q#p! 9~+w>#w! 9N#FxO>G4O>G! 9q#p! 9N#F4! 9q#p! 9N#F4! 9q#p!! 9~+l~R! 9N#F ! 9~w#~w! 9~w+~w9!9q#p!9N#F!9~#fo ## # +++ #!9N#F!9~#fo  # # #~#~#~#~#~#~#~#~!9~/<0O!9~#fo##~w#~w+++~w#~w !9~0/<O!9~#fo##+~~w+~w###~w+~w >!9~i/<O!9~#fo##+~w+~w###~w+~w w~##~#foy#±x#²+++~#fo##Ñ!9!9***i`!"""!9N#F###q#p+++qCp/m_86).....Double One 3 Osborne Single One 4 Osborne...........Double One 5 Xerox-I Single One 6 Xerox-II..........Double One 7 KayPro Double One 8 Hewlett Packard...Double Two 9 Televideo Double Two Enter the Number of the media format you wish to use $/<k(& X(^ ( !"#$%&'(P ?-?  X(?R     H"?P(?H  L$?R     H"?P(?1 .+Kg͡ ^̈́*<~0H >>p AOCrKr>v8%>v(* Kr͠"t|v(> > 1O:v0  y''O!w ^#V#N#F[z*C^#V:>> :  >%#^#V##^#VKB0   >!K6#s#r>*tKx(s#r6#6 ^#V!͛~?G:w#~G:wKr*A^#VyO MD-3 Foreign Drive Program Rev 1.3 Copyright 1984 Morrow Designs Inc. San Leandro, Ca. $ Wrong Revision of CP/M. This version of Foreign only works with CP/M vers 2.2 rev 3.x$ Invalid drive specified (allowable drives are: b, c, d, or e)$ Invalid media format selection$ Portions of CP/M are missing from memory. Push reset to re-boot CP/M.$ Too many foreign drives are defined. Push reset to clear all foreign drives.$ Disk drive to be used (B-E) $ Vendor Density Sides 1 Morrow Double One or Two 2 IBM (1xͪ'ͪ*C^#V>(#^#V##"Q^#VSS##^#V*SR*Qs#r#6#6#6#!U!Nx?#͞]> ?Œ͞3> # ?à ~!]>}J P 3 t  (0 > :g. 3  P 3 t   '$ Insert your WORKING diskette for $ in Drive A, and press [RETURN].$ The diskette in Drive A is not a WORKING $ diskette. $ To return to the Micro Menus, press [ESC] . $ Invalid command line. Returning to Micro Menu. $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$A:PILOT COMng to Micro Menu. $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$A:PILOT COM To return to the Micro Menus, put the CP/M System Diskette back in drive A and press [ESC] .$1 )  ( q  Insert your CP/M SYSTEM diskette in Drive A, and press [RETURN].$ $SETDSK PRNEPAUSE COMPAUSE BAK SETBAUD RELBACKUP COM %&()*+,-RETURN BAK SETDSK MAC !SETBAUD MAC"#SETBAUD COMMAC COM\./0123PAUSE MAC THROW COMb456789:CATCH COMk;<=>?@AUUDECODECOMxBCDEFGHIM80 COMJKLMNOPQRSL80 COMT TUVRETURN RELRETURN MAC RETURN COM1*" COPYRIGHT(C) 1978, DIGITAL RESEARCH ͍ á 4êü /L9ASMPRNHEX!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :7͡ :\ ʻ 24!dͮ 25ͮ 27ͮ 26!8 ( ʃ !Y 1  :7ʞ !z 8  !"2D2X2#! 8 !ͼ z{* ! !"!8 w#  +6# *#"~!ͼ G:6QxJQS*!w#"! 1 !"!Y~~# …¡z!ͼ wʹ* ! w#" ! 8 !" ! zz_O4:  :6y:! G~#x=2> > ! >x6 #='G! ~ p( O*}O>4?:7w:#ĸ*"!͸* }w>ͪg( ʆ1 Y :7ʗ8 z !<ͼ CP/M ASSEMBLER - VER 2.0 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES END OF ASSEMBLY G:7xʘ!#~ʄl͸Ä**!O {zʊ͸*"!!#^4!$wͯͯWƐ'@'ê>:ͪ!#^Ww*!{͚|͚}͚͚{!$~#͚͚> ͪ> ͪ{zA"*![N![ N#Fr+sq#p/>G=#w#w3#w#w!JSYMBOL TABLE OVERFLOW G*##~w*##~͎*_###s#r^#V`à 4 Wm ()*+,-/ABCDEHLMDBDIDSDWEIIFINORSPACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXJMPLDALXIMODMOVMVINOPNOTORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISETSHLSHRSTASTCSUBSUIXORXRAXRICALLENDMLDAXLHLDPCHLPUSHSHLDSPHLSTAXXCHGXTHLENDIFMACROTITLE  PF FP! ( 2/?'  v:P@< !  PP27 ( *"  NZZ NCC POPEP M x_BH!œ#¶ ¦{KÈCÈ<:JCR:  !6 s!#  ɯ<:O=_Z!F!V#fjQ̓E!^#Vo&)~#FxGyѯ<àn8!~ڢͅ6~44O! s#r!~ ڿ6ͅ^4!mw!wp!~ͅ!55N! N#fio&)^#fk:|: |Ë  |*" ͩ !6="1 :  1}1:n:>BʋSSͦSSxS 1:  1"" ͦ 1 |R >O U!" 1 1!|_!^#fk $8AP`ixH ñññ81Ľ y0îH ñGîG  ñH ñ(Ľ yîH ñîîĽ y0îîH ñG 1: :,; c*| } 8OĽ y0G G t :):,.>C :|: Jü;r :R: ʼʋ!ʼR!ʼʋ>SR{ozg!~4ʧͦ !6 ! **̈́**̈́\iͩ !w#H USE FACTOR !* "z{*"* "I !" :1 R O*UR X* G:xl :  *̩ : l x͖ *#"EH DH 0:~ ! ^4! w͆ Æ *! 6z͖ {͖ 4>R>V>D >P >L >N@2 0 0:x0_<2! wI2 2> 2 >2ɯ22 !~@_6^4#: w~$w: 0 q: A: A͋q: a{_2  2 - !ɯ2I:  ;*:  ͭͷ ͭ͋>9q>9: '!2 >9 7:! 6 >2>2: 2 Qͭ:Ğ! :lj<͖<j<|<: OʊQ>ÖH >2 2 û: B­>ôD> ¸!52 !"!N#~#A07O! ~*!) " :  '<ͭ'<>V$>O$:Ğà\ÞØ`rÍÖ![w#w#b!"!F#v2[G*##~w*##~<*}q!~ڬ6![^![^#fk"͎͘!G#*####*^#Vû!^*"*z'{ͅ>ɯo>g"k!m6ů{_zW5>)D*kOxGd !m?FDM!xGyOڂÃ)sn55)=â|g}o=î--#zg{ozg{ozg{oÓ:: ;,!ɯ22=2l!"]!~H5_!m~0:ą:  *":  :‰:̅ԅ!^#=ʅVq”*qͦ1& O:lµ̅>2ly:_!w~!s!m~ùy !~=w_!m~ ͅͰ>2lyPLnR>UX:l̅2l͓*>ERʵ2C!" """ :ʼ:*1 |R|ͦ0FIL: R  R* } *" :¿::¿üX!C^#fk[@ :Œ:=ʌG!ʆF#H vÛc*| EH ͺ,^1 ͦ *""1 EH DH ͺ,1 ͦ :  1:  " > 2 =COPYRIGHT (C) 1980, DIGITAL RESEARCH DDT VERS 2.2$10 !~=W!xe ~#Xbxʇ {z~#o}o҃i.2_!fp+q*e2_2_!hp+q*g!jp+q*i!lp+q*k!np+q*m2_!pp+q*oÃO$*sy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷ y=!z{w# % w!P͠ y͓}*w#"͌ @.@<!Eͷ~P !ͷ’P͌Q!ͷªP}QxQ!ͷ͓G@Q! ͷ y͓Gþ!ͷ ͓Q!ͷ͓Q͌Q!.ͷ6y#G͙Qà!2ͷQ͓͌Q!>ͷq eg͙Q:zJEËC–EQyQxQRQ** {zҷ*~#" <AOGƐ'@'OxƐ'@'ON# ͓ !" >- Ͷ Aګ ҫ _!7^#V~  \p Z z ů2[\͓͢ ҫ ͐ =« f " ͓ ҫ ͐ ʻf " =ʻf "=« ý> 2͐ f "]=f =« *]}o"_  *]"a. ~ #E }"]*a 6 *]}#|#*]E ͐ « f f f {zA|« W}d ͐ f f f DMʡڏ"=ʡͲ=ʡYPͲ1**!O~4#~#F#x~#s#r#w>͐ « f f  . ᯕo>g. 2|2\  !]w# ʫ .&  0 6 #& .K !e K w# ʫ : U 6 #K 6AW w#] !e~H#~E#~X*}|́ "!́ ͐ !ʬ =« f kʫ j \͢F w# ͋ t ʫ : W& _& & O { `i"F & & w# & ͋ « t Y t Y GтWx ͢!o ~Z #N  *. *.  NEXT PC͐ =« f  . ~ Ͷ ʻ .͓ =« f |« }w#Ä >2L͐ ! =« f }ʫ +"MD Å D  !  #)*)þ))>+><7"9.Yͯ * M^2U :2:2ͳ:_³ͯ !6! @!!BH @@ABH B! "BHI$$BI$BI $ HI D$HD$$ H B!$D$"$B$DA!ABI$H B$I $HI$H$! $I $I$$A !A@$I$"!$H$I$I "! $A$  HHAA"I @BB $A"$$$I$$H!!! BH" !I B  $$!BD! $!BI D@"!$I$$H"!I$I$I$UUU$$A$ x (#"!N#FW( *J>7Å*M|N+"M N:LHͅÅD Å >* *͓ b" . *"] !/~##ʁtZ*F#n!Is!^#V&&##&))::^#V#*^#V>+)x-8_z8O!B N#N ¾SP.* |} !9":q!"28!"9:] !í 1 ë «   Ͷ ͐ =« f xY |« }ҫ gA>S Ag}S S i |« }!w s#r:[ʔ _!~ʦ ![4ç \͢¦ 2[ 7 >?  e͢!g"c> _͢a_!f~> 5*c~#"c 0 7   > >  ͢| } @ >. *_}o| , 0 ë ^#V#!Y ))))o P q s#r#!V4 !V6# ,® >2Vñ m ͅ m ͅ m ͅ « Vʫ ! XN!~  ! _^! ^#V~ x+ >= = !~  . !   #x f L L ͓ͅ ҆ *" !6ï +"_*~ #E گ ʫ ^#V. ï ~ CZMEIABDHSP!"M"+"!91*~!O~6=G#^#V#~x (#"!N#FW( *J>7Å*M|N+"M N:LHͅÅD Å >* *͓ b" . *"] !/~##ʁtZ*F#n!Is!^#V&&##&))::^#V#*^#V>+)x-8_!!6e*!M͛ /$^L:!@OL:! 2͑e:b:! L:h<2hb:! b:hO>!hw:! pX:! …!!6  LÊ!!6ûô:!ʛ͑:! ҩ OҸû:!R†!6G>!!!6 :2.t -? >!!6!6s, !6:xB!6OU2!SB!G6:҃!6:G҃*G& ~2!:G<2G_ Qқ=e  b:!-®! 6:!#¿͇;J:!:!!6Lv:!:Jv: *#"͎! 6:!B)! >w!"&*o"(R :!C:eR :!DKeX :!K\ͷX :!Lj^ :!Pš͎҇! 6F×͢җ:Ç :!T¨F :!U¾: 2 :!V͎"$DMͩ/ *oDMͩ : 2 :! (::H%^bF : ͎H :!Ay! 6*""&*o"(R͎an͢na! 6R :!F”͢ґ Ä :!J $:2$͢ :=2:<2!*& ~2!ü*""I*M*o/!:":7 e !p+q*DM  =? ) !p+q.*DMF -L *9"`!"b!h6!j6!|6.!=\ -x !e:dʥ *eM \R :xʥ @ *dM \, :x \͕ :x - V :e _ :f w : =e !e:d*eM =e : =e =͕ !]6:x>- !"!76!6!6!66*dM  *dM !6:8!*`*;DM \u 2xʻ>!xҨ- *`*;6:82*`"`:<2w!"`9`h*`*;~2*`#"`:*eM !b+!s{!f!6:!b*b*^DM =ͅ N- *b"b:<2)f!"b!q9bڀ*b*^:w*b#"b!q:6ڶZͅ ʱ- !66*6& :w:6<26!J6*b}:J<2Jm=? :x- : ;*dM .=\ -=ͨ ;: *eM =ͨ .M= -C!q:Y*M !q:a/>z!/H!q*MaҎ:_:!q:ҥ*My:!p+q!'"!6>**ͪ{2**ͪ"*! ͪ":!! COPYRIGHT (C) 1979, DIGITAL RESEARCH DISK OR DIRECTORY FULL$FILE EXISTS, ERASE IT$NEW FILE$** FILE IS READ/ONLY **$"SYSTEM" FILE NOT ACCESSIBLE$BAK$$$BAK$$$-(Y/N)?$NO MEMORY$BREAK "$" AT $1mM"m +!8s~1m!f6 *M  *!M 1m! 6!6! 6: 2Ebͽ!e:d\::eH2 H҆ͽ:e2!:d2e:!2dû :!I¬!: :H2 ҮX:h2iҐ:!ʍ:!:!H:!H,!"! 6#~ F)ͷX:! X):i!h)9 e:!:h2jO>F L>!":i!jHҼ*"+M ~ ʼͲ!f6!h6!"! 6F!f6:h2k!iҠ:i2k:j2h:k!hҶ9 æ:h2j!!6:j2he:! >"Ͳ*"M ~2!O :! *+""&! 6R*I""ë :!M:H| ! 6>F ͛e: <2 O! Hqy d F : 2! 6*#s#r :!N ͢ *o/ Ҧ Ͷn! 6!"&R! 6o$ Î Ç :!S0 $͢- :2"+s#r!:* *& ~2!:<2 :!W> v :!X³ Z͎\ Ee ð :7/҃ E!76e ͕ :xƒ - ͷ*&"K(Kڰ *KM N͔*K"KҌ :!Z ͎  ͢ : :!  'v!gq:f *g&!lq:l $ !h4:l 1 !h6*lM :hB     !h55!mq:m :hO>H2ny} !m6 !o6:n!oښ *mM !o4‚ !pq:p ڪ >:p :p H:p H!qq*qM͛  ^W :q@2q*qMW   !sp+q*r !up+q *tDM !wp+q*v !zp+q*y2x!|p+q*{2x!~p+q*}2x!p+q*!p+q*!p+q*!p+q*2x!p+q*!6   >>! q* &!p+q*6:0O  ú!p+q:/(*DMͩ:  : I N* *DM:aO>!Һ x!: ڦ> ʡ* +" >¡! 6: <2 =O! N͒:  O͒: ! 6:h!o$O* ͸ ! 6 !h6!: 2 3* & 6 : <2 =O! N͒*dM  :sGsu n>!6:<2=O! N͒!">!"͎/Ҵ*+">>!": *#"*""*!".+",*$"**o".!",!36:3{.*22*,**"0M ~ H3*0"**+"*+">23:2/k!36,*+s#rx:3x*0"*: “**"&*"+"(á*$#"&**#"(*"#""*$#"$*"+""*$+"$*#"!4qM*"*$: *(y"$DM}|C#~ *#"*&DMyxC 1*+":4?w+"$""ͷR: —*$"("҈!"&Ô""&*""&$mڸ*o"(**$"($"O26͛*"M :6w͢:6 *FM8 *FM   Oy2F :FY5>>:!02HO> /!";u*)))*) *H& "PҘ! 6+s#ré! 6"DM!>))덑o|g =±^#V) ^#V|g}o _{ozgi`N#Fogo&og_{_z#W H = LIBX$$$$$$$LIB$:2*o/*!My:<2=O!s Hq**DMͷ! 6: e!"*""?k*&"?*?+M ~2A :hHҏ *&"?(?:A ½8*#" ҽ*?M ~2AO *?"?ҕ!"*"*"^: 2B! 6F:B2 o(>&H6͛9!C6>!Ca R>:C<2C?! 6!"͇͢Ґq"ڊ͛Íq!!6 !!6 !6*!Ma2D*!M͒2!:D/!+w!6e2!͢!Eq!E:!:H:H!Fq@ COPYRIGHT (C) 1978, DIGITAL RESEARCH ERROR: $, LOAD ADDRESS $DISK READ$INVERTED LOAD ADDRESS$DISK WRITE$LOAD ADDRESS $ERROR ADDRESS $BYTES READ:$INVALID HEX DIGIT$CHECK SUM ERROR $FIRST ADDRESS $LAST ADDRESS $BYTES READ $RECORDS WRITTEN $HEXCANNOT OPEN SOURCE$COMNO MORE DIRECTORY SPACE$CANNOT CLOSE FILE$*!9"!e !" !" \!""͊: ƒde"\\\͊: ²d\͝: )d;! q* &f  ! q> ! : A O: 0O! q: O: O! p+q* |O* }O! p+q*  f! p+q* DMB! p+q)R* DMB1B* DM+;! p+q* i2 ! p+q* i2 ! p+q* i2 i2 !" p+q*! f!$ p+q*# i!& p+q*% i!( p+q*' i2 !* p+q*) f!/ s+p+q+p+q:/ =2/ X*+ *- w*+ #"+ *- #"- 1* #" ͖r*   ~!" ! ͸×* " x20 º*   DM":0 Ad*   6!" Ç!" : !"6 "8 ": }2< !"4 "= ! !7q:*7M͒:7o$+͛ͪ*$M ~28Om:8 I͇͢u$oqo͛rP! 6!"&*$"(R͎ҔM͢ҡÔ($ҵ! 6R͇vͶ2!*!Mm$"*"M :!w͢:! e2!:! : /HH/Q:! @!!6 R!!6 :!KR$*& :!w:<2dn!:s+q*$";!>6:>/;oH*;#"(";:92=*=& *(M !::=2>/H:=<2=*(#"(æÀ:>*(+"(R:>!6$:2*o/*!My:<2=O!s Hq**DMͷ! 6: e!"*""?k*&"?*?+M ~2A :hHҏ *&"?(?:A ½8*#" ҽ*?M ~2AO *?"?ҕ!"*"*"^: 2B! 6F:B2 o(>&H6͛9!C6>!Ca R>:C<2C?! 6!"͇͢Ґq"ڊ͛Íq!!6 !!6 !6*!Ma2D*!M͒2!:D/!+w!6e2!͢!Eq!E:!:H:H!Fq6Y: !2 6=21 á:1 : r+s#r==_HL"4 " >6 ͪS* "6 =23 :1 =21 v=O* #" Y8  ͝҉* +"8 .!2 ʞR̀* "4 4 = ͝* #" çR*6 DM+R*8 DM+R*: DM+R*< M!? q=  ͝Kd*= ! ͸p!@ 6>!@ X*= }O!< *@ & w*= #"= !@ 4)!< 4\mad* }O!< :? wlR*4 DM+{R* DM+R 4 ͝*4 }¿= 4 ͝< N*4 #"4  å;*4 DM+: Y2A 0O> :A 0:A AO>&R̀:A A H.2B !2 w:B !D s+q*C &͍:D _og_{ozg^#V) _{ozgi`N#Fogo&og_{_z#W "w Sy ~#^#V# >0 >_C{ S} " !*C~#fo>K{ [} * _*.xR8 + +C  :l o&ͮO!X~#^#V#(.   ! Rڵ}0_} )!>jB?833j= *WB!*R*!R\!:] \!\ѷ(\*R~#(O>*R\ !l6 #6 #6> COM7Yl No Key Definition $ Missing Function Key Name $ Invalid Function Key Assignment $ Key Definition String is too long $ Temp buffer overflowed $ Local Function Key Table Overflowed $ Function Key Table is too large $ No Key file name $ Unable to open the key file $ Error occured in a disk read operation $ Unexpected End (Eol or Eof) $ Illegal Character $ Dictionary Buffer has over!9"1W͜Q>2!͢QG}DrYQ|͏}͏#> ex͏#r* _> e> e ҉0Ë7e}} :³ʳ7_<2!~ɯ2|\\FILE DUMP VERSION 1.4$ NO INPUT FILE PRESENT ON DISK$!Y , <    *$A!6 # T!w $r# *`: 0 *A*! ~ ʰxkb))))_y‘BK{ͅ*!66!"80*{#z+++ #$FILE $DRIVE B $DSTDRV B *BEGIN 434 *LOOP3 492 *LABEL1 588 *NEWWORD 794 *nwrun 908 *SUPERCALC 1048 *scrun 1162 *CORRECT 1305 *PEARL 1451 *LOOP4 1485 *PROMPT 1756 *QUEST 2536 *kprun 3034 *MBASIC 3103 *TUTORIAL 3247 *CREATE 3346 *UTILITY 3450 *RFRSH 3482 *LOOP5 3514 *LABEL2 3608 *DIR 3808 *TYPE 4025 *LOOP6 4231 *COPY 4703 *INPUTLOOP8 4798 *NEXT 5108 *DSTDRIVE 5286 *DRVSEL 5388 *LOOP2 5458 *FORMAT 5560 *FRMTLOOP 6048 *SYSGEN 6286 *BACKUP 6697 *STAT 7413 *INPUTLOOP9 7554 *STATDSK 7898 *CPM 8138 *GETCOM 8583 *OTHER 8918 *INPUTLOOPA 9015 *RENAME 9340 *MENU1 9832 *MENU2 10610 *PEARLMENU 11448 *STATUS 12068 *CHANGE 12586 *LOOP2 12774 *EXIT 12855 *GETFILE 12971 *EXISTCHK 13176 *LOOP7 13499 *EXITGF 13724 *CLEAR 13749 *CHANGEMSG 14160 *DELAY 14523 *EXITMENU 14657 ^ .6683 :*BEGIN - >micro.pil CBIOS MACOabcdefghijklmINIT PILnINIT COMNpqrstINIT 001uflowed $ Illegal Name in Switch Setting Line $ Unrecognized Error $ Error on line $@`F1AaF2BbF3CcF4DdF5EeF6FfF7GgF8HhF9Ii F10\|FA]}FB^~FC_FDIi ERASEJj UPKk DOWNLl LEFTMm RIGHTNnHOMEOoHELPTAB0 01!12"23#34$45%56&67'78(89)9*+,.-./ENTER:;<-=>?, _TAB_ESC_DEL _RTN_SLW_FST;Default function key definitions for CP/M 2.2 #_SLW LEFT ^H ~LEFT ^LEFT ^X RIGHT : ~RIGHT : ^RIGHT : UP * ~UP * ^UP * DOWN ~DOWN ^DOWN ERASE ^H ~ERASE ^ERASE ^X EPTCH ASM "CBOOT0 MAC #CBOOT1 MAC $CBIOS1 REL)*CBIOS1 MACOvwxyz{EPTCH HEX8BIOS1 HEX5DEFAULT $$$CBIOS1 RELEPTCH1 HEXCPMTST COM\-./034CHECKSUMCOM2CBIOS PRN&,<=>@BCEFOPQRSTCBIOS PRNUVWXYZ[\]^_`abcdTBIOS MACFEPTCH1 SYMCBIOS PRNyefgijklnCBIOS0 BAKOopqrstuvwxyz{EPTCH0 ASM 6CBOOT MAC mMT-70 KEYDCBIOS BAKO|}EPTCH1 ASM 9CBIOS $$$xEA (RESTORED AT FINIS) LXI SP,STKTOP ; READ AND PRINT SUCCESSIVE BUFFERS CALL SETUP ;SET UP INPUT FILE CPI 255 ;255 IF FILE NOT PRESENT JNZ OPENOK ;SKIP IF OPEN IS OK ; ; FILE NOT THERE, GIVE ERROR MESSAGE AND RETURN LXI D,OPNMSG CALL ERR JMP FINIS ;TO RETURN ; OPENOK: ;OPEN OPERATION OK, SET BUFFER INDEX TO END MVI A,80H STA IBP ;SET BUFFER POINTER TO 80H ; HL CONTAINS NEXT ADDRESS TO PRINT LXI H,0 ;START WITH 0000 ; GLOOP: PUSH H ;SAVE LINE POSITION CALL GNB POP H ;RECALL LINE POSITION JC FINIS ;CARRY SET BY GNB IF END FILE MOV B,A ; PRINT HEX VALUES ; CHECK FOR LINE FOLD MOV A,L ANI 0FH ;CHECK LOW 4 BITS JNZ NONUM ; PRINT LINE NUMBER CALL CRLF ; ; CHECK FOR BREAK KEY CALL BREAK ; ACCUM LSB = 1 IF CHARACTER READY RRC ;INTO CARRY JC FINIS ;DON'T PRINT ANY MORE ; MOV A,H CALL PHEX MOV A,L CALL PHEX NONUM: INX H ;TO NEXT LINE NUMBER MVI A,' ' CALL PCHAR MOV A,B CALL PHEX JMP GLOOP ; FINIS: ; END OF DUMP, RETURN TO CCP ; (NOTE  ; READ ANOTHER BUFFER ; ; CALL DISKR ORA A ;ZERO VALUE IF READ OK JZ G0 ;FOR ANOTHER BYTE ; END OF DATA, RETURN WITH CARRY SET FOR EOF STC RET ; G0: ;READ THE BYTE AT BUFF+REG A MOV E,A ;LS BYTE OF BUFFER INDEX MVI D,0 ;DOUBLE PRECISION INDEX TO DE INR A ;INDEX=INDEX+1 STA IBP ;BACK TO MEMORY ; POINTER IS INCREMENTED ; SAVE THE CURRENT FILE ADDRESS LXI H,BUFF DAD D ; ABSOLUTE CHARACTER ADDRESS IS IN HL MOV A,M ; BYTE IS IN THE ACCUMULATOR ORA A ;RESET CARRY BIT RET ; SETUP: ;SET UP FILE ; OPEN THE FILE FOR INPUT XRA A ;ZERO TO ACCUM STA FCBCR ;CLEAR CURRENT RECORD ; LXI D,FCB MVI C,OPENF CALL BDOS ; 255 IN ACCUM IF OPEN ERROR RET ; DISKR: ;READ DISK FILE RECORD PUSH H! PUSH D! PUSH B LXI D,FCB MVI C,READF CALL BDOS POP B! POP D! POP H RET ; ; FIXED MESSAGE AREA SIGNON: DB 'FILE DUMP VERSION 1.4$' OPNMSG: DB CR,LF,'NO INPUT FILE PRESENT ON DISK$' ; VARIABLE AREA IBP: DS 2 ;INPUT BUFFER POINTER OLDSP: DS 2 ;ENTRY SP VALUE FROM CCP ;; FILE DUMP PROGRAM, READS AN INPUT FILE AND PRINTS IN HEX ; ; COPYRIGHT (C) 1975, 1976, 1977, 1978 ; DIGITAL RESEARCH ; BOX 579, PACIFIC GROVE ; CALIFORNIA, 93950 ; ORG 100H BDOS EQU 0005H ;DOS ENTRY POINT CONS EQU 1 ;READ CONSOLE TYPEF EQU 2 ;TYPE FUNCTION PRINTF EQU 9 ;BUFFER PRINT ENTRY BRKF EQU 11 ;BREAK KEY FUNCTION (TRUE IF CHAR READY) OPENF EQU 15 ;FILE OPEN READF EQU 20 ;READ FUNCTION ; FCB EQU 5CH ;FILE CONTROL BLOCK ADDRESS BUFF EQU 80H ;INPUT DISK BUFFER ADDRESS ; ; NON GRAPHIC CHARACTERS CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED ; ; FILE CONTROL BLOCK DEFINITIONS FCBDN EQU FCB+0 ;DISK NAME FCBFN EQU FCB+1 ;FILE NAME FCBFT EQU FCB+9 ;DISK FILE TYPE (3 CHARACTERS) FCBRL EQU FCB+12 ;FILE'S CURRENT REEL NUMBER FCBRC EQU FCB+15 ;FILE'S RECORD COUNT (0 TO 128) FCBCR EQU FCB+32 ;CURRENT (NEXT) RECORD NUMBER (0 TO 127) FCBLN EQU FCB+33 ;FCB LENGTH ; ; SET UP STACK LXI H,0 DAD SP ; ENTRY STACK POINTER IN HL FROM THE CCP SHLD OLDSP ; SET SP TO LOCAL STACK ARTHAT A JMP TO 0000H REBOOTS) CALL CRLF LHLD OLDSP SPHL ; STACK POINTER CONTAINS CCP'S STACK LOCATION RET ;TO THE CCP ; ; ; SUBROUTINES ; BREAK: ;CHECK BREAK KEY (ACTUALLY ANY KEY WILL DO) PUSH H! PUSH D! PUSH B; ENVIRONMENT SAVED MVI C,BRKF CALL BDOS POP B! POP D! POP H; ENVIRONMENT RESTORED RET ; PCHAR: ;PRINT A CHARACTER PUSH H! PUSH D! PUSH B; SAVED MVI C,TYPEF MOV E,A CALL BDOS POP B! POP D! POP H; RESTORED RET ; CRLF: MVI A,CR CALL PCHAR MVI A,LF CALL PCHAR RET ; ; PNIB: ;PRINT NIBBLE IN REG A ANI 0FH ;LOW 4 BITS CPI 10 JNC P10 ; LESS THAN OR EQUAL TO 9 ADI '0' JMP PRN ; ; GREATER OR EQUAL TO 10 P10: ADI 'A' - 10 PRN: CALL PCHAR RET ; PHEX: ;PRINT HEX CHAR IN REG A PUSH PSW RRC RRC RRC RRC CALL PNIB ;PRINT NIBBLE POP PSW CALL PNIB RET ; ERR: ;PRINT ERROR MESSAGE ; D,E ADDRESSES MESSAGE ENDING WITH "$" MVI C,PRINTF ;PRINT BUFFER FUNCTION CALL BDOS RET ; ; GNB: ;GET NEXT BYTE LDA IBP CPI 80H JNZ G0  ; STACK AREA DS 64 ;RESERVE 32 LEVEL STACK STKTOP: ; END ARRY SET FOR EOF STC RET ; G0: ;READ THE BYTE AT BUFF+REG A MOV E,A ;LS BYTE OF BUFFER INDEX MVI D,0 ;DOUBLE PRECISION INDEX TO DE INR A ;INDEX=INDEX+1 STA IBP ;BACK TO MEMORY ; POINTER IS INCREMENTED ; SAVE THE CURRENT FILE ADDRESS LXI H,BUFF DAD D ; ABSOLUTE CHARACTER ADDRESS IS IN HL MOV A,M ; BYTE IS IN THE ACCUMULATOR ORA A ;RESET CARRY BIT RET ; SETUP: ;SET UP FILE ; OPEN THE FILE FOR INPUT XRA A ;ZERO TO ACCUM STA FCBCR ;CLEAR CURRENT RECORD ; LXI D,FCB MVI C,OPENF CALL BDOS ; 255 IN ACCUM IF OPEN ERROR RET ; DISKR: ;READ DISK FILE RECORD PUSH H! PUSH D! PUSH B LXI D,FCB MVI C,READF CALL BDOS POP B! POP D! POP H RET ; ; FIXED MESSAGE AREA SIGNON: DB 'FILE DUMP VERSION 1.4$' OPNMSG: DB CR,LF,'NO INPUT FILE PRESENT ON DISK$' ; VARIABLE AREA IBP: DS 2 ;INPUT BUFFER POINTER OLDSP: DS 2 ;ENTRY SP VALUE FROM CCP ;; MICRO-DECSION ; BOOT LOADER REV 1.4 ; COPYRIGHT 1982 ; MORROW DESIGNS, INC. ; 4/23/84 ; ;******************************************************************** ; DOUBLE SIDED ;******************************************************************** ; BOOT EQU 0FE00H ; .Z80 .PHASE BOOT ; ; REVNUM EQU 30H ; MEMSIZE EQU 64 ; CPM EQU (MEMSIZE-9)*1024 BIOS EQU CPM+1600H ; MTOFF EQU 26 ; REVADD EQU 7FEH ; HSTSEC EQU 2 HSTTRK EQU 1 HSTBUF EQU 5 SECCNT EQU 3 ERFLAG EQU 7 SECSIZ EQU 12 ; ROM EQU 0 ; RDHST EQU ROM+9 BTERR EQU ROM+18H MESG EQU ROM+3 ; CR EQU 0DH LF EQU 0AH ; START: LD A,(REVADD) AND 0F0H CP REVNUM JP NZ,REVERR ; PUSH IY ;CALC. MTAB POSITION POP HL LD DE,MTOFF ADD HL,DE ; EX DE,HL ;MOVE MTAB INTO RAMDATY LD HL,BTAB LD BC,9 LDIR ; LD (IX+HSTSEC),2 LD (IX+SECCNT),8 LD (IX+SECSIZ+1),81H LD (IX+HSTBUF+1),HIGH CPM ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; LD (IX+HSTSEC),1 LD (IX+HSTTRK),1 LD (IX+SECCNT),9 ; MICRO-DECISION ; CP/M 2.2 ; BIOS REV 3.1 ; COPYRIGHT 1982,1983,1984 ; MORROW DESIGNS, INC. ; SAN LEANDRO, CA. ; ; 5/2/84 ; ;*********************************************************************** ; DOUBLE SIDED ;*********************************************************************** ; ; 12/24/83 LST: default changed to parallel port. ; Step rate set to 6 ms. ; CONST set to return false when IMS is on. ; 4/6/84 Move SELDSK to ROM. ; 4/10/84 Improve CONIN and CONST handling of IMS. ; 4/23/84 Move CONOUT translation code to rom. ; 5/2/84 Add over-run and re-syncronization handling ; for function keys to conin. ; .Z80 ; MEMSIZE EQU 64 ; REV EQU 31H ; CPM EQU (MEMSIZE-9)*1024 BDOS EQU CPM+806H BIOS EQU CPM+1600H ; .PHASE BIOS ; ; ROM EQU 0 ; HMRM EQU ROM+6 WRHSR EQ ROM+0CH RDHSRM EQU ROM+9 DISRM EQU ROM+0FH BTERM EQU ROM+18H ROMDATX EQU ROM+1BH MSGRM EQU ROM+3 CENTDRV EQU ROM+1DH ;ROM ENTRY POINT FOR CENTRONICS DRIVER RDLSEC EQU ROM+20H WRTLSEC EQU ROMLD (IX+HSTBUF+1),HIGH CPM + 16 ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; JP BIOS ; DS (BOOT+80H-$),0 ; BTAB: DB 21H DB 0DCH DB 125 DB 4 DB 0AFH DB 3 DB 5 DB 28 DB 0FFH ; DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 DB 43H ; REVERR: LD DE,RVMSG CALL MESG JP BTERR ; RVMSG: DB CR,LF,'Wrong revision of ROM. This version of CP/M requires ROM Rev. 3.x',CR,LF,0 ; END +23H SELROM EQU ROM+26H ROMOUT EQU ROM+29H ; ; CONTROL BITS WITHIN DFLAG BYTE HSTACT EQU 0 ;Host buffer active flag. ;Buffer contains nothing if = 0. ;Buffer contains a sector if = 1. ; HSTWRT EQU 1 ;Host buffer dirty flag. ;Buffer has not been written to if = 0. ;Buffer has been written to if = 1. ; RSFLAG EQU 2 ;Read sector flag. ;Sector need not be read if = 0. ;Sector must be read if = 1. ; READOP EQU 3 ;Read if = 1. Write if = 0. ; HNDSHK EQU 4 ;Handshake with DSR and CTS if 1, just CTS if 0. ; LSTMAP EQU 5 ;1=>Cent. is LST:, SER2 is PUN: ;0=>SER2 is LST:, Cent. is PUN: ; IMS EQU 6 ;In Memory Submit flag. ;I.M.S. in-active if = 0. ;I.M.S. active if = 1. ; IMSBUF EQU 7 ;In Memory Submit buffer empty flag. ;I.M.S. buffer is empty if = 0. ;I.M.S. buffer is not empty if = 1. ; ; ; CONTROL BITS WITHIN SFLAG BYTE ; PCSTAT EQU 0 ;Physical console status flag. ;No character has been received if = 0. ;Character has been received if = 1. ; IM EQU 13H CTLQ EQU 11H CTLC EQU 3 CTLX EQU 18H FAST EQU 9FH SLOW EQU 9DH ; START: JP BOOT WBOT: JP WBOOT JP CONST JP CONIN JP CONOUT JP LST JP PUN JP PTR JP HOME JP SELDSK JP SETTRK JP SETSEC JP SETDMA JP READ JP WRITE JP LISTST JP SECTRAN ; JP CVMSG ;CHANGE VIRTUAL DRIVE MESG. ; JP RDBLK ;DIRECT DISK READ JP WRBLK ;DIRECT DISK WR JP DISCIO ;DIRECT DISK I/O ; DB REV DW RAMDATX DW RAMDATY DW MTAB DW XLTAB ; ETBLPTR:DW ESCTBL CTBLPTR:DW CTRLTBL EVCTPTR:DW ESCVECT CVCTPTR:DW CTVECT DW DCASTRT ; JP INITCTC ;CTC init routine JP INJECT_IMS ; ; WBOOT: LD SP,STACK LD DE,DSKBUF PUSH DE POP IX LD BC,DATXLN OUT (ROMCTL),A ;TURN ON ROM LD HL,(ROMDATX) LDIR ; LD IY,RAMDATY ; LD (IX+HSTSEC),2 LD (IX+SECCNT),8 LD (IX+SECSIZ+1),81H LD (IX+HSTBUF+1),HIGH CPM ; CALL RDHST OR A JR NZ,BTERR ; LD (IX+HSTSEC),1 LD (IX+HSTTRK),1 LD (IX+SECCNT),3 LD (IX+HSTBUF+1),HIGH CPM + 16 ; CALL RDHST OR A JR NZ,BTERR ; L; BAUD RATE. A IS OFFSET FROM BASE ON ENTRY LD HL,BAUDTBL ; POINT TO BASE OF TABLE LD C,A LD B,0 ADD HL,BC ADD HL,BC ; HL NOW POINTS TO DIVISOR FOR SELECTED BAUD RATE RET ; SETBAUD: ; OUTPUT THE VALUES POINTED TO BY HL TO THE OUT (CTCSEL),A ; PORT SELECTED IN REG. C. LD A,(HL) ; GET LOW BYTE OF DIVISOR OUT (C),A ; OUTPUT IT INC HL ; POINT TO HIGH BYTE LD A,(HL) ; GET THE HIGH BYTE OF DIVISOR OUT (C),A ; OUTPUT IT RET ; baudtbl: ; DIVISOR TABLE FOR BAUD RATES ; DW 1136 ;110 DW 417 ;300 DW 208 ;600 DW 104 ;1200 DW 52 ;2400 DW 26 ;4800 DW 13 ;9600 ; CONST: CALL CPHY ;GET PHYSICAL CONST PUSH AF ;SAVE PHYSICAL CONST LD A,(RAMDATY+DFLAG) AND 0C0H CP 0C0H JR NZ,NO_IMS ;JUMP IF IMS NOT ACTIVE POP AF BIT IMSTAT,(HL) ;CHECK STATUS BIT RET Z ;RETURN PHYSICAL STATUS IF 0 LD A,0FFH ;CHAR FLAG RET ;RETURN CHAR IF 1 NO_IMS: POP AF RET ; CPHY: LD HL,SFLAG ;POINTER TO SFLAG RES PCSTAT,(HL) ;CLEAR CONST FLAG ; IN A,(S1STAT) ;CONSOSTAT EQU 1 ;I.M.S. CONST flag. ;CONST returns physical status if = 0. ;CONST returns OR of physical and I.M.S. status if = 1. ; FUNSEQ EQU 6 ;Function key sequence flag. ;Last character was NOT part of a function key sequence if = 0. ;Last character was a function key lead-in or code if = 1. ; FUNCODE EQU 7 ;Function key code flag. ;Last character was NOT a function key code if = 0. ;Last character was a function key code if = 1. ; ROMCTL EQU 0F6H ; DPHOFF EQU 10 ; BDFM EQU 5 NRDY EQU 6 SIZMSK EQU 18H DSM EQU 2 ; ; WRALL EQU 0 WRDIR EQU 1 WRUAL EQU 2 ; ; S1STAT EQU 0FDH S1DATA EQU 0FCH ; S2DATA EQU 0FEH S2STAT EQU 0FFH ; CSTAT EQU 0F5H CTCSEL EQU 0F3H ; CHANNEL SELECT PORT FOR CTC CH1DIV EQU 0F1H ; PORT FOR SETTING BAUD RATE OF 1st SERIAL PORT CH2DIV EQU 0F2H ; PORT FOR SETTING BAUD RATE OF 2nd SERIAL PORT DFLT1 EQU 06h ; default baud rate for 1st serial port DFLT2 EQU 03h ; default baud rate for 2nd serial port ; CR EQU 0DH LF EQU 0AH ASC0 EQU 30H CTLSD HL,CPM+3 ; GOCPM: LD BC,80H CALL SETDMA ; LD A,0C3H LD (0),A LD (5),A ; XOR A LD (3),A ; PUSH HL LD HL,WBOT LD (1),HL ; LD HL,BDOS LD (6),HL ; LD HL,(VNUMB) LD (8),HL ; LD A,(IY+DFLAG) AND 0B0H ;MASK IMSBUF FLAG, DON'T CHANGE BITS 4 OR 5 SET IMS,A ;ACTIVATE IMS LD (IY+DFLAG),A ; RES IMSTAT,(IY+SFLAGIY) ; LD (IY+UNACNT),0 LD (IY+SCNTIY),0FFH ; LD A,(4) LD C,A ; POP HL JP (HL) ; BTERR: OUT (ROMCTL),A JP BTERM ; ; INITCTC: ; SET BAUD RATES FOR BOTH SERIAL PORTS LD A,(SER1BAUD) ; GET BAUD RATE FOR 1st SERIAL PORT CALL GETVAL ; POINT TO DIVISOR LD C,CH1DIV ; SET UP TO LOAD DIVISOR FOR CHANNEL 1 LD A,07EH ; SELECT CTC CHANNEL 1 CALL SETBAUD ; SET BAUD RATE FOR 1st SERIAL PORT LD A,(SER2BAUD) ; GET BAUD RATE FOR 2nd SERIAL PORT CALL GETVAL ; POINT TO DIVISOR LD C,CH2DIV ; SET UP TO LOAD DIVISOR FOR CHANNEL 2 LD A,0BEH ; SELECT CTC CHANNEL 2 CALL SETBAUD ; SET IT RET ; GETVAL: ; SET HL TO POINT TO DIVISOR FOR SELECTED LE STATUS ROUTINE AND 2 ;SEE IF RDY RET Z ;RETURN WITH 0 IF NOT RDY ; SET PCSTAT,(HL) ;SET CONST FLAG LD A,0FFH ;RETURN WITH FF IF RDY RET ; pconin: call getchar ;wait for char jr z,pconin ret ; getchar:ld hl,sflag ;pointer to sflag ld e,(hl) res pcstat,(hl) ;reset physical CONIN flag in a,(s1stat) bit 1,a ;see if rdy ret z ;ret if not rdy in a,(s1data) ;get character res parity,a ;clear parity bit push af ;save char. & flags push hl ld hl,scount inc (hl) jr nz,cnt_ok dec (hl) cnt_ok: ld a,(hl) ld d,a pop hl bit funcode,(hl) res funcode,(hl) jr nz,not_fnc bit funseq,(hl) jr z,not_fnc set funcode,(hl) res funseq,(hl) cp 0dh jr nc,not_1c not_fnc:pop af push af cp 1ch jr nz,not_1c set funseq,(hl) res funcode,(hl) not_1c: in a,(s1stat) bit 4,a jr z,noe ;jump if no over-run ; xor a ld (scount),a ld a,37h ;clear over-run error bit out (s1stat),a ld a,0c0h and e jr z,noef ;jump if not function kstring length = 0 or a ex de,hl ;[de]->string.length call nz,inject_ims ;inject string into ims jr conin ;get first character in sequence ;recurse if required ;---------------------------------------------------------------------- ; Ims Injection Routines ;------------------------------ ; inject_ims: ld a,(de) ;get length byte inject_ims2: ld c,a ;save ld b,0 inc de ;point at string text push de ;save string address ld a,0ffh ;free marker call find ;[de]=free length ;[hl]->free.leng(hi) push hl ;save free address ld h,d ld l,e ;[hl]=free length or a ;[cy]=0 sbc hl,bc ;free.len = free.len - string.len jr c,noims ;if not out of space, ex de,hl ;[de]=new free.len ex (sp),hl ;[hl]=free.address (save old length) ld (hl),d ;write new free.len(hi) dec hl ld (hl),e ;write new free.len(lo) inc hl inc hl ;[hl] -> free.data_area pop de ;[de] = old free.len add hl,de ;point at IMS.head (=fd) incith carry = set ;---------------------------------------------------------------------- ; SCAN - Search for key in table ;------------------------------- ; enter with [hl] -> table to be searched ; [a] = key to search for ; form of table is: ; element_count (byte) ; element_list (string) ; :: element = length (byte) ; string (text) ; scan: ld d,0 ld b,(hl) ;element count inc b inc hl ;point at key jr scan1 scan0: cp (hl) ;key we're looking for? inc hl ;point at string.length ret z ld e,(hl) ;not key, so get length inc e ;same as inc hl add hl,de ;next element scan1: djnz scan0 ;do until out of elements scf ;abnormal exit ret drop_ims: ;empty the ims buffer ld a,0fdh ;ims call find ;get count push de ;save length ld a,0ffh ;free call find ex de,hl ;[hl]=free.len pop bc ;[bc]=ims.len add hl,bc ;[hl]=total space ex de,hl ;[hl]=free.len(hi) ld (hl),d dec hl ld (hl),e ;reset free length iney ; pop af push af cp 1ch jr z,not_fnc ;jump if in sync ; res funseq,(hl) ;syncronize flags set funcode,(hl) ; noe: pop af ;syncronize function key sequence ; ret ; noef: ld a,0ch cp d jr nc,noe pop af ld a,0 ret conin: call getchar ;get character chk_sync: push af ;save char & status jr z,no_char ;jump if no char bit funseq,(hl) ;check if 1st char of function key jr z,no_char ;jump if not pop af resync: call pconin ;wait for next char of function key jr chk_sync no_char:ld a,(ramdaty+dflag) ;get dflag and 0c0h ;mask out IMS flags cp 0c0h ;check if IMS active jp z,submt ;jump if IMS active pop af jr z,conin bit funcode,(hl) ;check if 2nd char of function key ret z ;return if not ; pfunc: push af ;save char ld a,0fch ;function table call find inc hl pop af ;restore char call scan ;look for key set parity,a ;mark as function with parity bit=1 ret c ;ret if not found fcn2: ld a,(hl) ;check for  hl ;[hl] -> ims.len(lo) ld e,(hl) ;read ims.len inc hl ld d,(hl) ex de,hl ;[hl]=ims.len, [de]->ims.len(hi) add hl,bc ;ims.len = ims.len + string.len ex de,hl ;[hl] -> ims.len(hi) sbc hl,bc ;ims.address = ims.address - string.len ld (hl),d ;write new ims header, ims.len(hi) dec hl ld (hl),e dec hl ld (hl),0fdh ;ims head complete inc hl inc hl inc hl ;[hl] -> destination, ims buffer pop de ;[de] -> source, text ex de,hl ;set direction for ldir ldir ;copy string to ims buffer ld hl,ramdaty+dflag bit imsbuf,(hl) jr z,fcn4 ;if ims already contains characters, bit ims,(hl) jr nz,fcn4 ;but is deactivated, dec de ; then point at last char, this string, ld a,(de) set parity,a ; and mark it to turn-off ims at end of this string ld (de),a fcn4: set imsbuf,(hl) ;activate ims set ims,(hl) xor a ;exit with carry = clear ret noims: ;enter here if no ims available pop de ;drop pop de ;drop ret ;exit wc hl inc hl ;[hl] -> free.data space add hl,de ;[hl] -> end of free space ld (hl),0fdh ;ims header inc hl ld (hl),0 inc hl ld (hl),0 ;reset ims.len ld hl,ramdaty+dflag ;de-activate ims ld a,(hl) and 3fh ld (hl),a ld a,18h ret ; ; SUBMT locates the submit string block within the BIOS ram area, ; the next character is taken from the buffer and passed to CP/M. ; The free block and submit string block pointers are updated. ; If this was the last character in the buffer, then the IMSBUF ; bit in dflag is cleared. ; If the parity bit is set on the character, then the IMS bit in ; dflag is cleared, which de-activates IMS until the next warm ; boot. ; ; PARITY EQU 7 ; SUBMT: POP AF JR Z,SUBGO BIT FUNCODE,(HL) JR NZ,SUBGO CP CTLC ;COMPARE TO CTL-C JR Z,DROP_IMS BIT IMSTAT,(HL) ;CHECK SPEED FLAG JR NZ,SUBGO ;JUMP IF FAST BIT PCSTAT,E ;CHECK PHYSICAL CONST FLAG JR Z,SUBGO ;JUMP IF FALSE CP CTLS ;SEE IF CTL-S RET Z ;RETURN IF SO LD EE IF HEADER CODE MATCHES INC HL ;INCREMENT POINTER ; LD E,(HL) ;GET OFFSET TO NEXT BLOCK INC HL LD D,(HL) ; RET Z ;RETURN IF BLOCK FOUND ; INC HL ;SET POINTER TO NEXT BLOCK ADD HL,DE JR FINDLP ;KEEP LOOKING ; ; ; On entry to CONOUT register C contains the character to be output. ; A test is made to see if the system is in the process of outputing ; a multiple character escape sequence, or if the character is a ; Morrow Standars Control Code. If neither test is true, than the ; character is output. ; If the character is part of a multiple character escape sequence, ; then the character is passed to the ESCAPE routine. If the ; character is a MSCC, then it is converted to the appropriate ; sequence, and output. ; conout: call mstk ;fix stack push ix ;save index regs. push iy ld ix,cout ;pointer to physical output routine ld iy,etblptr ;pointer to table of pointers out (romctl),a ;turn on rom call romout ;call rom jp cretn ;return ; COUT: IN A,(S1STAT) ; ; SET FLAG TO RDY CHKFLG: LD A,(LSTFLG) ; GET STATUS FLAG LSTRET: OR A ; SET FLAGS RET Z ; IF ZERO, THEN XOFF PENDING LD A,(RAMDATY+DFLAG) ;SEE IF HRDWR HNDSHKNG ENABLED BIT 4,A LD L,5H ; STATUS ONLY MASK JR Z,CTS ; IF 0, THEN USE ONLY CTS HANDSHAKING LD L,85H ; DSR & STATUS MASK CTS: IN A,(S2STAT) ; TEST STATUS AND L ; GET TBRE FLAG CP L ; SET FLAGS ON STATUS OF TBRE STAT: LD A,0 ; SET NOT READY STATUS JR NZ,LSTRET ; JMP IF NOT READY DEC A ; SET READY STATUS RET ; AND RETURN IT. ; ; RDRSTAT: IN A,(S2STAT) ; GET STATUS AND 2 RET Z ; RETURN IF NO CHAR IN A,(S2DATA) ; ELSE, GET CHAR AND 7FH ; MASK PARITY SCF ; SET FLAG RET ; CENTSTAT: IN A,(CSTAT) ; CHECK CENTRONICS RDY STATUS BIT 4,A LD A,0 RET NZ DEC A RET ; ; PTR: CALL RDRSTAT ;GET STATUS OR CHAR. JR NC,PTR ;LOOP IF NO CHAR. RET ; PUN: LD A,(RAMDATY+DFLAG) ;CHECK IF CENT. OR SERIAL BIT 5,A JR NZ,LSTDRV ;IF NOT 0,THEN USE SERIAL PORT DRIVER CENTOUT: CALL MSTK ; SA,CTLQ ;A=CTL-Q RET ; SUBGO: LD A,0FFH ;FREE SPACE CODE CALL FIND ;FIND FREE SPACE ; INC DE ;UPDATE FREE SPACE POINTER LD (HL),D DEC HL LD (HL),E ; ADD HL,DE ;SET HL ==> IMS BUFFER INC HL INC HL ; LD E,(HL) ;UPDATE IMS BUFFER HEADER LD (HL),0FDH INC HL LD D,(HL) DEC DE LD (HL),E INC HL ; LD A,E ;SEE IF LAST CHAR. OR D LD A,(SFLAG) LD E,A LD A,(HL) ;GET CHAR. LD (HL),D ;FINISH UPDATING IMS BLOCK HEADER LD HL,RAMDATY+DFLAG JR NZ,SKP1 ;JMP IF NOT LAST CHAR. ; RES IMSBUF,(HL) ;CLEAR IMSBUF FLAG ; SKP1: BIT PARITY,A ;CHECK PARITY BIT OF CHAR. RES PARITY,A ;CLEAR PARITY BIT RET Z ;RETURN IF PARITY 0 ; CP SLOW-80H JR NZ,SKP2 RES IMSTAT,E JR SKP4 ; SKP2: CP FAST-80H JR NZ,SKP3 SET IMSTAT,E SKP4: LD A,E LD (SFLAG),A XOR A PUSH AF JP NO_CHAR ; SKP3: RES IMS,(HL) ;DE-ACTIVATE IMS RET ;RETURN ; ; FIND searches BIOS ram area for the block ; header contained in A. ; FIND: LD HL,XLTAB ;POINTER TO RAM AREA FINDLP: CP (HL) ;SCONSOLE OUTPUT ROUTINE BIT 0,A ;SEE IF RDY JR Z,COUT ;JMP IF NOT RDY ; LD A,C ;OUTPUT CHARACTER OUT (S1DATA),A RET ; cnout: call conout out (romctl),a ret ; ;XON/XOFF PROTOCOL HANDLER FOR MICRO DECISION CBIOS ; LST: LD A,(RAMDATY+DFLAG) ; GET FLAG BYTE TO CHECK WHICH OUTPUT DRIVER BIT 5,A ; SEE IF CENTRONICS BIT SET JR NZ,CENTOUT ; IF SO, USE CENTRONICS DRIVER ; ELSE, USE SERIAL PORT DRIVER LSTDRV: CALL SSTAT ; STATUS OF LSTFLG JR Z,LSTDRV ; IF NOT READY, LOOP OVER: LD A,C ; ELSE, GET CHAR OUT (S2DATA),A ; XMIT IT RET ; ; LISTST: LD A,(RAMDATY+DFLAG) ; GET PORT MAPPING BIT 5,A ; SEE IF CENTRONICS PORT JR NZ,CENTSTAT ; IF CENTRONICS, CHECK IT'S STATUS SSTAT: CALL RDRSTAT ; GET A CHARACTER, OR NULL CP 13H ; IF XOFF R'CVD... JR NZ,NXTCHK ; IF NOT, CHECK IF XON XOR A ; SET FLAG TO NOT RDY LD (LSTFLG),A RET ; RETURN NOT RDY NXTCHK: CP 11H ; IF XON, THEN IT MIGHT BE READY JR NZ,CHKFLG ; ELSE, STATE NOT CHANGING LD A,0FFH LD (LSTFLG),AAVE STACK OUT (ROMCTL),A ; TURN ON ROM CALL CENTDRV ; USE ROM CENTRONICS DRIVER IN A,(ROMCTL) ; TURN OFF ROM POP HL ; RESTORE STACK LD SP,HL RET ; SETXY: POP HL ;GET RETURN ADDRESS ; PUSH IX ;SAVE IX & IY PUSH IY ; LD IX,RAMDATX ;INIT IX & IY LD IY,RAMDATY ; OUT (ROMCTL),A ;TURN ON ROM ; JP (HL) ;RETURN ; HOME: CALL MSTK ;FIX STACK CALL SETXY ;SAVE AND INIT IX & IY, TURN ON ROM ; CALL HMRM ;CALL ROM ; CRETN: IN A,(ROMCTL) ;TURN OFF ROM POP IY ;RESTORE IX & IY POP IX ; POP HL LD SP,HL ;FIX STACK ; RET ; MSTK: POP DE ;SAVE RET. ADDR. ; LD HL,0 ;GET CURRENT STACK ADD HL,SP ;IN HL. ; LD A,SP_PAGE CP H JR Z,SKP_STK LD SP,STACK ;MOVE STACK SKP_STK:PUSH HL ;SAVE OLD STACK ; PUSH DE ;RESTORE RET. ADDR. RET ; SELDSK: LD B,E CALL MSTK ;FIX STACK LD E,B CALL SETXY ;SAVE AND INIT IX & IY, TURN ON ROM ; LD HL,DPBASE CALL SELROM ; PUSH AF IN A,(ROMCTL) ;ROM OFF POP AF JP DIRET ; BDRV: LD HL,4 ;RETURN ERROR CODE  STACK LD SP,HL ; EX DE,HL CP BDFM ;SEE IF UNREADABLE JP Z,BDRV ;JMP IF UNREADABLE ; CP NRDY ;SEE IF NOT READY JP Z,BDRV ;JMP IF NOT READY ; RET ; SECTRAN:LD L,C ;HL=BC LD H,B ; INC HL ;START SECTORS AT 1 ; LD A,D ;SEE IF XLAT TABLE OR E RET Z ;RETURN IF NO XLAT ; EX DE,HL ;HL=XLT ; ADD HL,BC ;ADD TO TABLE LD L,(HL) ;GET XLATED SECTOR LD H,0 ; RET ; ; WRTHST: OUT (ROMCTL),A ;TURN THE ROM ON ; CALL WRHSRM ;CALL THE ROM ; HSTRET: IN A,(ROMCTL) ;TURN OFF THE ROM ; LD A,(IX+ERFLAG) ;GET STATUS ; RET ; RDHST: OUT (ROMCTL),A ;TURN ON ROM ; CALL RDHSRM ;CALL ROM ; JR HSTRET ;RETURN ; ; RDBLK: LD IY,RAMDATY ;INIT IY ; CALL MSTK ;FIX THE STACK ; CALL RDHST ;CALL ROM ; DRET: POP HL ;RESTORE THE STACK LD SP,HL ; RET ; WRBLK: LD IY,RAMDATY ;INIT IY ; CALL MSTK ;FIX STACK ; CALL WRTHST ;CALL ROM ; JR DRET ; DISCIO: LD IY,RAMDATY ; CALL MSTK ;FIX THE STACK ; OUT (ROMCTL),A ;TURN ON THE ROM ; CALL DISRM ;CALL THE R 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB1: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB2: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB3: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB4: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; ; RAMDATX: HSTDSK EQU $-RAMDATX DB 0 HSTTRK EQU $-RAMDATX DB 0 HSTSEC EQU $-RAMDATX DB 0 SECCNT EQU $-RAMDATX DB 1 RETRY EQU $-RAMDATX DB 20 HSTBUF EQU $-RAMDATX DW DSKBUF ERFLAG EQU $-RAMDATX DB 0 PHYTRK EQU $-RAMDATX DB 0 PHYHD EQU $-RAMDATX DB 0 IOADD EQU $-RAMDATX DW 0 SECSIZ EQU $-RAMDATX DW 0 STADD EQU $-RAMDATX DW 0 DW 0 DW 0 DB 0 CMDCNT EQU $-RAMDATX DB 9 CMDBUF EQU $-RAMDATX DW 0 DW 0 DW 0 DW 0 DB 0 ; DATXLN EQU $-RAMDATX ; SCOUNT: DB 0FFH SFLAG: DB 0 ; SER1BAUD: DB DFLT1 ;index in Baud rate table for SER1 default baud rate S LD (HL),H ;SET TO DRIVE A LD L,H RET ; SETTRK: LD A,C ;SET TRACK IN RAMDATY LD (SEKTRK+RAMDATY),A RET ; ; SETSEC: LD A,C ;SET SECTOR IN RAMDATY LD (SEKSEC+RAMDATY),A RET ; ; SETDMA: LD (DMAADR+RAMDATY),BC ;SET DMA ADDRESS IN RAMDATY RET ; ; READ: CALL MSTK ;FIX THE STACK CALL SETXY ;SAVE AND INIT IX & IY, TURN ON ROM ; CALL RDLSEC ; READ A LOGICAL SECTOR JR RWMOVE ; MOVE DATA ; WRITE: CALL MSTK ;FIX THE STACK CALL SETXY ;SAVE AND INIT IX & IY, TURN ON ROM ; CALL WRTLSEC ; WRITE A LOGICAL SECTOR ; ; RWMOVE: OR A ; SET FLAGS ON ACC LD B,A ; SAVE ERROR CODE IN A,(ROMCTL) ; TURN OFF ROM LD A,B ; RESTORE ERROR CODE JR NZ,DIRET ; JUMP IF ERROR DURING READ OR WRITE LDIR ; MOVE SECTOR ; LD A,(IY+WRTYPE) ;CHECK IF DIR WRITE CP WRDIR LD A,0 ;A=NO ERROR STATUS IN CASE WE'RE DONE JR NZ,DIRET ;JMP IF NOT DIR WRITE ; RES HSTWRT,(IY+DFLAG) ;CLEAR WRITE FLAG ; CALL WRTHST ;WRITE BUFFER ; DIRET: POP IY ;RESTORE IX & IY POP IX ; POP HL ;RESTOREOM ; IN A,(ROMCTL) ;TURN OFF ROM ; LD A,(IX+ERFLAG) ; JR DRET ;RETURN ; ; ; CVMSG IS A ROUTINE TO CHANGE THE VIRTUAL DRIVE MESSAGE. ; ON ENTRY: HL POINTS TO THE BEGINING OF THE NEW MESSAGE. ; DE POINTS TO THE LOCATION OF THE CHARACTER ; WHICH WILL BE SET TO THE LOGICAL DRIVE ; THAT THE VIRTUAL DRIVE IS TO BECOME. ; BC IS THE LENGTH OF THE NEW MESSAGE. ; ; AF,BC,DE,HL ARE CHANGED, ALL OTHER REGS. ARE UNCHANGED. ; CVMSG: PUSH HL EX DE,HL XOR A SBC HL,DE LD DE,VMSG ADD HL,DE LD (VDRVP+RAMDATY),HL ; POP HL LDIR RET ; DPBASE EQU $ DPE0: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB0 DW CSV0 DW ALV0 ; DPE1: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB1 DW CSV1 DW ALV1 ; DPE2: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB2 DW CSV2 DW ALV2 ; DPE3: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB3 DW CSV3 DW ALV3 ; DPE4: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB4 DW CSV4 DW ALV4 ; DPB0: DW 40 DB 4 DBER2BAUD: DB DFLT2 ;index in Baud rate table for SER2 default baud rate DS 2,0ffh ;reserved for future expansion ; VNUMB: DB 3 ; # OF PHYSICAL DRIVES - 1 TLEV: DB 0 ; TERMINAL LEVEL ; ; RAMDATY: SCNTIY EQU SCOUNT-RAMDATY SFLAGIY EQU SFLAG-RAMDATY ; SEKDSK EQU $-RAMDATY DS 1 SEKTRK EQU $-RAMDATY DS 1 SEKSEC EQU $-RAMDATY DS 1 ; SEKHST EQU $-RAMDATY DS 1 ; UNACNT EQU $-RAMDATY DS 1 UNADSK EQU $-RAMDATY DS 1 UNATRK EQU $-RAMDATY DS 1 UNASEC EQU $-RAMDATY DS 1 UNAMAX EQU $-RAMDATY DS 1 SECTRK EQU $-RAMDATY DS 1 ; WRTYPE EQU $-RAMDATY DS 1 DFLAG EQU $-RAMDATY DB 20H TRSEC EQU $-RAMDATY DS 1 ; VMSGP EQU $-RAMDATY DW VMSG VDRVP EQU $-RAMDATY DW VDRV ; CDSK EQU $-RAMDATY DB 0FFH PDSK EQU $-RAMDATY DB 0 VDSK EQU $-RAMDATY DB 0 ; DMAADR EQU $-RAMDATY DS 2 OUTP EQU $-RAMDATY DW CNOUT INP EQU $-RAMDATY DW PCONIN ; ; MTAB contains one 9 byte entry for each logical drive. ; The bytes of each entry are defined as follows: ; ; Byte 0 DSKDEread or write commands. ; ; Byte 7 GPL byte for FDC read or write commands. ; ; Byte 8 Current track. ; MTAB: MTOFF EQU $-RAMDATY DB 21H DB 0DCH DB 125 DB 4 DB 0DFH DB 3 DB 5 DB 28 DB 0FFH ; DB 22H DB 5DH DB 125 DB 4 DB 0DFH DB 3 DB 5 DB 28 DB 0FFH ; DB 24H DB 5EH DB 125 DB 4 DB 0DFH DB 3 DB 5 DB 28 DB 0FFH ; DB 24H DB 5FH DB 125 DB 4 DB 0DFH DB 3 DB 5 DB 28 DB 0FFH ; DB 21H DB 0DCH DB 125 DB 4 DB 0DFH DB 3 DB 5 DB 28 DB 0FFH ; DIRBUF: DS 128 ; ALV0: DS 25 CSV0: DS 48 ALV1: DS 25 CSV1: DS 48 ALV2: DS 25 CSV2: DS 48 ALV3: DS 25 CSV3: DS 48 ALV4: DS 25 CSV4: DS 48 ; VMSG B cr,lf,'Your lower drive is being re-assigned as drive ' VDRV: DB 'A.',cr,lf,'Exchange diskettes and press [RETURN]',0 ; LSTFLG: DB 0FFH ; PRINTER READY FLAG ; ; dcastrt b 1bh,3dh,0ffh dc prefi string ds 3,0ffh ; dcamid: ds 6,0ffh ; dca seperator ; dcaend: ds 6,0ffh ; dca terminator string ; esc_lvlIGHT ARROW DB 6DH,1,':' DB 0DH,1,':' ; DB 4AH,1,'*' ;UP ARROW DB 6AH,1,'*' DB 0AH,1,'*' ; DB 4BH,0 ;DOWN ARROW DB 6BH,0 DB 0BH,0 ; DB 49H,1,8H ;ERASE DB 69H,0 DB 9H,1,CTLX ; FLEN EQU $-FTAB ; DS 52,0 ;STACK SPACE ; DSKBUF EQU $ STACK EQU $ SP_PAGE EQU ($/256)-1 ; SIGNON: DB 0DH,0AH,'Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. ' DB ((REV AND 0F0H) SHR 4)+ASC0,'.',(REV AND 0FH)+ASC0 DB CR,LF DB "Copyright '76,'77,'78,'79,'80 Digital Research, Inc." DB CR,LF DB 'Copyright 1982,1983,1984 Morrow Designs, Inc.' DB CR,LF,LF DB '************** Double Sided System **************' DB CR,LF,0 ; ; BOOT: LD SP,STACK LD IY,RAMDATY CALL INITCTC ;initialize baud rates LD DE,SIGNON OUT (ROMCTL),A ;TURN ON ROM CALL MSGRM IN A,(ROMCTL) ;TURN OFF ROM ; XOR A LD (3),A LD (4),A ; LD HL,CPM ; JP GOCPM ; END F0: ; Bit 0-2 Motor control bit ; Bit 3-4 Double sided mode: ; 00=Even tracks on side 0, ; Odd tracks on side 1. ; 01=1st 40 (or 80) tracks ; on side 0, remaining ; tracks on side 1. ; 10=Both sides are treated ; as a single track with ; twice as many sectors. ; Bit 5 Double sided drive if = 1. ; Bit 6 Sectors start a 0 if = 1. ; Bit 7 Foreign drive format if = 1. ; ; Byte 1 DSKDEF1: ; Bit 0-1 Physical drive address. ; Bit 2 Double sided media if = 1. ; Bit 3-4 Sector size: ; 00=128 ; 01=256 ; 10=512 ; 11=1024. ; Bit 5 Tracks: 0=40; 1=80. ; Bit 6 Density: 0=single; 1=double. ; Bit 7 Virtual drive: 1=virtual. ; ; Byte 2 Motor on wait time in increments of 4 ms. ; ; Byte 3 Head settle time (after seek) in increments ; of 4 ms. ; ; Byte 4-5 The two parameter bytes for the FDC specify ; command: Byte 4 = SRT/HUT ; Byte 5 = HLT/ND ; ND must be 1. ; ; Byte 6 EOT byte for FDC  b 0 ;indicate es sequenc level offset1: db 0 ;first character offset offset2: db 0 ;second character offset order: db 0 ;Bit 0 = 0 --> row, then column, ; = 1 --> column, then row ;Bit 1 = 0 --> binary cursor adresses ; 1 --> ascii cursor addresses first: db 0 ; temporary storage of first second: db 0 ; temporary storage of second ; XLTAB: DB 0 DW 40 XLT1K: DB 1,2,3,4,5,6,7,8 DB 25,26,27,28,29,30,31,32 DB 9,10,11,12,13,14,15,16 DB 33,34,35,36,37,38,39,40 DB 17,18,19,20,21,22,23,24 ; DB 0FEH ; CONSOLE XLT TABLE DW CLEN esctbl: DB 0FFH ctrltbl:DB 0FFH escvect:DW 0 ctvect: DW 0 ; ; TRANSLATION STRINGS FOR THE TERMINAL GO HERE ; CLEN EQU $-ESCTBL ; DB 0FFH ;EOT DW BIOS+0A00H-$-60-FLEN ;SPACE FOR MORE XLT'S DS (BIOS+0A00H-$-58-41),0 ; DB 0FDH ;IMS BUFFER HEADER DW 0 ; DB 0FCH ;FUNCTION KEY HEADER DW FLEN ; FTAB: DB 15 ;TABLE ENTRIES ; DB 4CH,1,8H ;LEFT ARROW DB 6CH,0 DB 0CH,1,CTLX ; DB 4DH,1,':' ;Rill need T: to know its baud rate and type of handshaking. If you do not have T: a printer or you do not know this information, you can postpone T: entering this information now by pressing{C}. You will still need T: to run the program{SETUP}before you can print anything. See T: Appendix D of the Micro Decision User's Guide for instructions. T: T: If you know your printer baud rate and handshaking type, you can T: run{SETUP}right now and get that out of the way. T: T: *again CUR:0,22 TNR: Press{S}to run SETUP or{C}to Create Working Diskettes: { INMAX: 1 A: M: S , C tnr: jn:*again m:S jn:*next TNR:{ CPM:SETUP| *next CLRS: LF:10 T:{Please stand by. . . CH:CPMENU END: up for a parallel or T: centronics-type printer. If you are using a parallel T: printer, press}C{to proceed with creating your Working T: Diskettes.} T: T: If you are using a{serial}printer, the Micro Decision w1)< *i  >2^ ( Y>2^ l5ͶYE > ͔!  ~>>*<~1>>!~ >8G#~ (  ( #~ ( x2(O!l > 2X 2Y >:e !U e>2| \>>;  (* # Q^( ~( CZ \!- ͙ ~ Q  ͅz͞͞:s E >͔Z!s F#^#E >͔>͞:s E s > ͔ *Rs >2~!}: :~@:}!~!( (.( ( ( w#>_(>7! ͙~>(>2` >! ͙KZ ~ >: <2 >>2s  ( >; >\ ( 1>^ @8`0>_ 7! ͙~O:s _!t q{< >2s :s Gx!t ~#>>2t Gu  ( >>u (' (# ( ((> >x2t >:t O >"\ ###~ >G# u  #*\ >X![ R0>! wS > (  ( *ͧ !9N#F#^#V#~#fo"S$kb"Q$i`"O$OG Press the RESET button and when asked to do so, insert the CP/M SYSTEM DISKETTE into drive A. When you get the Menu display, we suggest you first make a back-up copy of your new CP/M SYSTEM DISKETTE. Next, label the DESTINATION diskette "CP/M SYSTEM DISKETTE." The DESTINATION diskette is now a configured CP/M SYSTEM DISKETTE for your Micro-Decision. Put your CP/M Distribution Diskette away in a safe place. a:terminal.data:init.003a:init.002a:init.001a:init.comb:terminal.datb:init.003b:init.002b:init.001b:init.cominit.003 CP/M DISTRIBUTION diskette is defective. Contact your dealer or Morrow Designs customer service for a replacement. init.002 Now copying CP/M DISTRIBUTION diskette. DESTINATION diskette may be flawed. Replace with another diskette, then press any key.init.001 b Preparing to format DESTINATION diskette. #6J!U !y y2X$:X$3!U ! y2X$:X$A:Y$OG!j  * T: * * T: * Attempting to use the supplied application programs without * T: * creating working diskettes will cause improper operation of * T: * of these programs. * T: * * T: *************************************************************************} T: TNR: Press{[RETURN]}to continue: A: CLRS: T: Before creating your Working Diskettes, the Micro Decision needs T: to know a few things about your printer. T: T: There are two types of printers, parallel and serial. T: T: {Your system is currently set up for a parallel or T: centronics-type printer. If you are using a parallel T: printer, press}C{to proceed with creating your Working T: Diskettes.} T: T: If you are using a{serial}printer, the Micro Decision w( (a{ 2_ :_ (O>2_ y:_> \>!{<2~ :^ <2^ > :X _ :Y _* #" V[c *k [ R0>*a ++s#r#>w[g #s#r#*e Kg ͜[g K >w#q#p#! >E >t ͔: _:` 2 >͔*?^#VR~_:` w:"a Sc :"e Sg :"i Sk ~#^#V# >0E > ͔Cm So "q ! *C~#foE>Km [o *q ͔*.xR8 + +>:^ (>:^ o&>O!~#^#V#(   ! R}0_} )!>jB?833j= *WB!G*R*!R\!:] \!\ѷ(\*R~#(O>*R\ !l6 #6 #6> COM  < T y  1 V   Error$ on Line Number $No Key Definition $:Y$T!_'!T'!I'!>'!/'|!C ú:X$3!sC Q!$'!'!'!'!'!U !QU ! U !U !2U ä#ͱ#customized CP/M system. This diskette will be called the DESTINATION diskette. It must be soft-sectored, but need not be blank. However, any information currently on it will be erased. CP/M Distribution Diskette Use this diskette to create a CP/M SYSTEM DISKETTE customized for your Micro-Decision and terminal. You will need a diskette to receive the #!pC !C # Your single drive Micro-Decision will require you to change diskettes at various times during this process. Be sure to follow the instructions which appear on the screen. disk drive(s). OK (Y/N)   How many disk drives do you have? (1-4) #!U y2\$:\$1m!\$>4҉!\$> U:\$U!U U:\$OG! }2Y$!U :\$OG !U y2\$:\$yM:Y$2>2]$2^$*]$~#foo|gD "]$*]$~#fo"_$*_$ :Y$ > #*z$"|$!~#fo"z$*|$MD##!~#fo"'!~#fo"'!~#fo"':'y *'>o>g"':'y *'>o>g"'*'*'#"'6-*'*'""$!$~#ʪ *'*$*' *' "'*'*')"0 }2~$!~$>9 :~$'2~$*'*'#"':~$w*'!yOx#G##!"'*'~#1*'N#F4*'N#F!N#F͢*'##"' ##!~#fo"'*'~T*'#"'B*'!yOx#G#CBT<L<PDm#!9!N#Fi`"$!~#ʷ!$~#½#*$~OG!gâ#!~#fo"$!~#fo!~#fo "$*$ ~#y2$*$ ~OG!sâ##!N#F!N#F*$s##!$:$:$#җ! y2$:$y:$OGysxŒ×*$*$#"$:$wB:$ yB*$!yOx#G#×!6!! ! ! !"$!~OG!yx#!~OG!N#Fy2$:$*$~OGyxF>2$!$:$:$#җ:$—*$*$#"$6 ×*$*$#"$*$*$#"$~:$2$##!z9-!~#fo"$!~#fo"$!~#fo "$!~#fo#'"!'>2'2'2'2'!'Ͷ"##~2$!~#fo ~#9!$~#ʡ!N#F$:$$*$#"$~OG:$OG ÝH --- V#!9!~#fo"$!~#fo"$!~#fo "$!~#fo#'"!'>2'2'2'2'!'Ͷ"##~2$!~#fo ~#!$~#!N#F$:$ր:$F:$F!"$*$! *$!" y|#!y:$OG "$!"$*$:$2$:$2$}*$*$#"$~2$:$OG! â#!z! *$!! y!!!zU *$*$ "$!$:$2$:$#2$!~#fo#2'2':$2':$2'!'͈">2$æ!:$OG}o|g"$!$:$:$#*$MD*$MDi`"$*$*$!z:$OG ͗ *$!" y|#!$~#x!$:$:$#ix*$*$#"$6 *$*$#"$:$w-!$:$:$#!$:$:$#ҍÐi`"$!$~#ʤ*$"$*$!y:$OG yOxGi`"$!N#F$:$ր:$!! *$!! y:!!!U :!"$!y! *$!" yʂ#*$!y:$OG !:$OG ͗ !! *$!" yʂ#!y"$>2$!~#fo#2'2':$2':$2'!'͈"!$~#i*$*$#"$6 !$~#ix*$!yOx#G##!w#w!~#2U$!LC ##!~  #~/ ! ! !N#F! ##!N#Fg ##!N#Fg ##!~#fo"'*'~ʔ *'~OG *'#"'u ##!N#Fͮ C ##!!N#F!a$ i`a$ 6!a$MD##!N#F ##! y2i$:i$ :i$2i$:i$A, !i$>Z, :i$OG! MD3 :i$OGy2i$:i$OG##! y2j$:j$[ :j$2j$:j$A !j$>Z :j$OG! MDË :j$OGy2j$:j$OG##!N#FU ! #!9^#V#N#F#~#fo*+++{ 0 OGMDkb" * ]T: file not found #!~#fo"'*'"k$*k$> 4 *k$~4 *k$#"k$ *k$~J *k$*k$#"k$6*k$4y2!*k$!͂ !!*'Ry2o$:o$ !! *'! #2m$>(2n$!*m$:o$OG͋i`"p$!p$># :o$OGz2r$>(2s$ !N#F*r$#i`"t$ ! *t$MD#*m$*p$ "m$è #:Y$OGi`#"v$:v$:w$ *v$MD))) !~#fo "x$*x$!~#fo~*x$#!~#fo#~*v$#"v$. ##!~#fo"'!"'*'~# *'~#fo"'*'~ *'*'#"'*'~*'#"'ê *'6*'MD#*'##"'× #!N#F*z$#i`"z$ր:$:$!"$*$! *$!! y0á2$2$!"$*$"$!$~#|!$:$e:$#´!~#fo#2'2':$2':$2'!'͈"2$2$!N#F$!z! *$!! y|!z! *$!! y¡!:$OG}o|g"$!$:$:$# *$MD*$MDi`"$*$!z:$OG *$͗ *$*$ "$!$:$2$:$#2$!~#fo#2'2':$2':$2'!'͈">2$!~#fo#2'2':$2':$2'!'͈"*$!yOx#G#*$~2$:$OGyx|!z:$OG "$>2$ô*$#"$*$#"$:$ M:$M*$*$#"$:$w:$2$:$2$M#!9!!N#FyL#!! ycxl##TLzPCD #-!~#!N#Fi`"$!$~##*$~OG!râ#*$ ~OG!~â##!N#F!N#F*$4#>2$!~#fo"$!~#fo!~#fo "$*$ ~#ʝ!$:$:$#Һ*$*$#"$~OG:$OG I>2$>2$!~#foMD##!$:$:$#Һ*$~OG!â#*$!yOx#G#!:$:$#*$ ~ ! :$OG *~"!N#Fz!~w#~w! ##! yG2$2$#*$#"$:$:$w! ylxw! ##!N#Fi`"$!$~##*$ ~D*$~*$ ! i`"$:$!$>>#*$ 6!~#foMD#!>w>#w#!#~!~#~!#!N#F!,D"$ "$*$ ~J#*$MD##!~#{!~m#~{!>w#w͠i`"$!$~#’#*$!N#Fy®#*$ ~D*$ ! x*$ 6#*$!~*$#w#w#w#w*$ !~#~*$$}o|g!,"MD##!~#fo#~2$#~2$#~2$#~2$!~#fo "$*$! !$!j###~*$" !$!j###~*$# !$!j###~##!$ywx#w!'~#~!~#fo ~!'~#~#!~,w#~wó!~#foMD#RDR:PTP:CON:LST:#!9!~#B!~#fo~B!~#H#!N#F i`"$:$ :$l#!"$!~#fo"$*$~*$~w*$*$~a*$>z*$~OG! MDü*$~OGyw*$#"$*$#"$~*$6!!}|:$:$(!~#fo###~!~#fo 2!#!~w#~w!~w#~w !~#fo~!#!9~w#~w#~w#~w+MD!9 _ #O!{ !94O!! 9~!+w>#w! 9N#Fx!O>GE!ҽ!O>G! 9q#p$! 9~!+w>#w! 9N#Fx!O>GE!"O>G! 9q#p$! 9N#FE!! 9q#p$! 9N#FE!! 9q#p$!! 9~+}"~c"! 9N#F ! 9~w#~w! 9~w+~wJ"!9q#p$!9N#F!9~#fo ## # +++ #$!9N#F!9~#fo  # # #$~#~#~#~#~#~#~#~!9~ #/B2*G2*+2>-A*A^#V__#>2-+n#˖=.S*( .S*G:0"*?^#V!p"*->A2*+͸*A-*͸** (*͸**͸*2-2-OT*n f F~!.+> ݾ >(!%.+!-l+>(ݾ,ò*P(͸*##-^*+͸*2-P7?(2->2-ͽ*C++͸*:-˗G:-2-^V!Q:-w#:-w#w#~w#?) *²*:-<ݾ),͸*nf)z2-K ~( 2-6*ѷ²*~ ~*G,͸*Z,**|(6:*+A '**}(>A2>--͸*w-͸*,͸** zͽ*C,,͸*!-P!P*9+**'!-P!P*3+******!f*n*=/v*,*  n*,* n*K*v*,*  0 8 :G(A8_ 0  $ $ Insert the DESTINATION diskette in drive A, then press [RETURN] $ Single or double sided format (S or D) $ Double density format $ Double density 256 bytes/sector format $ Double density 512 bytes/sector format $ Formatting track 00 $ Write error,:(!!N#F yʇ>L2$2$!~#fo 6D!~#fo "$*$6!~#fo#~:!~#fo~2$2$:$A:$P!$>P>#VP!!N#F yʪ>C2$2$! !N#F y>P2$2$!!N#F y>T2$2$!~#fo :$w#!~#fo 6#*$#"$2$2$:$:$!~#fo~t!~#fo~.Œt#*$*$ }!~w#~w*$*$#"$6 *$#"$%*$*$#"$!N#F!~w#~w~Â!~#fo~!~#fo~.!~w#~wõ!~#fo~.!~w#~w2$2$:$:$-!~#fo~]*$*$#"$6 Ã*$ *$ *$ *$ 6~ w~#*$*$#"$!N#F!~w#~w~*$#"$#!N#F!~w#~w} !~#fo!~#fo~A!~#fo>Z!~#fo~OG! MD!~#fo~OGyw!~w#~wÐ##!!~#~!~#fo~= !~w#~w !~#fo!yOx#G##!N#F!~w#~w}ʔ !N#F!~w#~w!~X ##!N#F!~w#~w} !N#F!~w#~w!N#F!~w#~w~Ú !~#foMD##!~#foCC$ Read error,$ on DESTINATION diskette. Press [RETURN] to try again. $ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the CP/M DISTRIBUTION diskette in drive A, then press [RETURN] $ Your drive is being re-assigned as drive A.$ Insert the DESTINATION diskette and press [RETURN] $ Insert the CP/M DISTRIBUTION diskette, then press [RETURN] $QMQ-_(-_P.2(.2P 3.P(3.PP(^ (0>2!9^#V!1 Not a SYSTEM Diskette.  Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the CP/M DISTRIBUTION DISKETTE, press [RETURN] Insert the DESTINATION diskette, press [RETURN] J!/:@2nD,>2n-ͮBEBvToo many terminals No terminal file readterminal.dat Loading the terminal description file ... LOHIDELLINEDELCHARINSCHARINSLINECEOSCEOLDOWNUPLEFTRIGHTCLRHOMECURSORLEVELSPNULESCu!9!,aH!!y,!~,ͿIywx#w!~#^-!g,aHv!62dv2ev!fvywx#w!> -!~-!~*-!N#F!!M!~#fo ~#fo}0w-!~#fo ~#fo}0-!N#F͈Lv!*dv*dv#"dv!Hʹsfv }|:dvd.:ev'.!S,aHv!H!!N#FX!Ͳ?!~#fo!@ywx#w!N#F!!M!~#fo ~#fo}0w-!Ayw-!> .!~w-!N#F!ʹ1^.u!Βywx#w!~#fo~#fo~/!N#F!~#foN#F͹Wy"/!~#fo##~OGyOGvv!~w#~w./*u!9!!!N#FAAywx#w!~ʜ/!2/!͹Wyœ/!N#F!~w#~w!ͩ/yw=/!~#fo6vu!9!!N#FYywx#w!!N#F.ywx#w!~/#~|0!~#fo~^|0!(ڒ*͓(Ò*6[+*.B^#V!"Z-! N#F!~#foB,"V-!, w# ST-#+>2\-2-<2-:-!-l*:-!-l*-!- # !+*+72*PY*_-ͭ(!,*+Cc-Sg-Sk-"r-!"e-"i-"m-[r-z*]-=+8bk"t-(*t-@)*t-͐)[t-*r-6+"r-!+"a-:-͊*! ."v-: :,!,͎++!c-)͂+)ͮ*+| !+"a-:-͊*! ."v-2q-: 4,!,͎++!g-):q-O>2q-ͅ+)ͮ*+| !,"a--Sv-!k-)-+͂+)ͮ*-*v- # +| 77"o-N#FCx-#^#VSz-y+[|-͋+DM|+Kv-! "v-+Kx-[-*z-#=+8`i!*o-q#p#s#r .!9%6+|_>g}o"]-[-*-C+[-*-#C+"_-͊*N#FC|- ~#fo2\-Ov+: KT-[V-!,͎+*Z-6Kz- x*a-*+*x-*****0<"~-8H=(0O0y(g+*~-+d+@8_a+d+Og+#+!,*+~Og+#}o|g|}MD!xxGyOY+)[+^+a+d+g+j+m+p+s+v+y+|++Â+Å+È+Ë+Î+ (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track: %,You have a Level I terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for an ADM-3A terminal. You have a Level II terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for a SOROC IQ-120 terminal. You have a Level III terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for an ADM-31 terminal. The CP/M SYSTEM diskette will not be installed for your terminal. You must install some of the application programs (i.e. WordStar and LogiCalc) yourself. In addition, the Micro-Menus will not appear as they should on the screen. Before confirming this selection, check to see if your terminal can emulate any of those on the selection Menu. If it can, you will find it more ~w#~w!~#fo!~#fo~aL0!~#fo>zL0!~#fo~OG!A MD! MDY0!~#fo~OGyw!!~#fo~OG! }|{1!~#fo~\¹0!~#fo#>yʹ0!!~#fo# @ywx#w{1!N#FT?y0!!N#F8Wywx#w{1!~0#~+1!~#fo~'+1!~#fo##~'+1!!~#fo#~{1!#~H1!!~#~{1!~V1#~p1!!~#fo~{1!>w>#w!~#1!>w>#w!~#foMDv=: Unrecognized word u!9!!!N#FAAywx#w!~1v!!.ywx#w!#~2!aH!1aHv!!!N#FAAywx#w!1!͹WyW2!!~#~!~e2#~€2!N#F!N#Fv5æ2!~Ž2#~©2!N#F!N#FG3v!N#F!N#F!N#F4!~2#~¦2!*!N#F!N#F4æ233334Level number must be 0, 1, 2, or 3 Non-numeric level number u!9!!!N#FAAywx#w!~03!>93!-3aHv!~#fo####!8Wyw!~#fo####~OG!2u!~#fo##w#wv!~#fo##Zvywx#w3!~#fo##\vywx#w3!~#fNo char. translation table found Wrong version of CP/M out of range DCA pointer u*o#"P*P~#foo|g "\*oP "P*o*P~#fo !\yOx#Gi`"^!o:^:_#8*o :^:_8!*s!Hʹskv *^X8!;8OH*^>*^ >*^ >*oF "P*o*P~#fo !\yOx#Gi`"`!o:`:a#X9*o !`yx#`9!#8ͥI*`~OGyp9xʞ9*`~OGyƒ9xʞ9*`*`#~#fo ###"`59*`~OGy®9x¹9!8ͥI*`*`#~#fo ###"b*b~OGy9x9!7ͥI*b#~#fo"N*`#~#fo"Z*`###"@*oH "P*P*@!oyOx#Gi`*\ }|*s!Hʹsv "d2T2U2R2S:R :S:*d#~#;*@*@#"@*d~*T#"T;*@*@#"@6*oJ "P*P*@!oyOx#Gi`*\ }|*s!Hʹsv "d2V2W2R2S:R:S+;*d#~#<*@*@#"@*d~*V#"V<*R#"R*d###"dU:*@*@#"@6*T*V )*@ "L*@"B*oL "P*P*B!oyOx#Gi`*\ }|*s!Hʹsv "d2R2S:R :S&<*d#~#<*B*B##"B*L*\ !oyOx#Gywx#w!!*d#N#F*LdXywx#w*L~w#~wõ?u!w#w!~#fo~OG>yʉ@!N#F!ʹsywx#w+!~#fo~0@!~#fo>9@!!~#fo~OG!  @!~#foMDv!!~#fo~a@!~#fo>z@!~#fo~OG! MD@!~#fo~OG!  !~w#~w@u!!N#FYSywx#w!!N#F!N#FdX!~#foMDvu!!N#FAywx#w!~#fo> A!~#fo~A!N#F!~w#~w!N#F!~w#~w~[A!~#fo6!~#foMDvu!~#fo~ A!~#fo~ A!~w#~wA!~#foMDvu!~#fo~/B!~#fo> 5B!~#fo~5Bvv!~w#~wBu!9!"o͇EV8ElGv selected. OK (Y/N) ?   Select your terminal: OK (Y/N) ? uXD!BaHMIy2u:uaXC!u>zXC:uOG! !dvyx#XC:uaC!u>zC:uOG!A MD! MDC:uOG! !dvyx#XC:uaNC!u>zNC:uOG!A MD! MDTC:uOGy2u:uA2u:uOG!dvyx#|C!BOHüB!~BaH:uOG!Hʹsfv N#FaH!fBaHHy2v!cBaH:vy±B:uOG!Hʹshv ~#fo"w!w~#C*wN#FaHC*`vaH*bvaH!o##^vywx#w3! 3aHvu!9!!N#F5/!w#w!~#~4!~#fo !~#foMD) ~OG!y{4x#*5!~#fo !~#foMD) #!@ywx#w*5!w#w!~ #~:5!~#fo- !~#foMD) ~OG!y4x#=5!~#fo- !~#foMD) #!@ywx#w=5!~w#~w>4v!~w#~wø4Cursor addressing string too long ASCIIu!9!w#w!~#fo 6!~#fo 6!~#fo 6!~#fo " >2 !!!N#FAAywx#w!~5* 6v!~RT6!~+T6* 6!~#¶6!~#fo ~w!~#fo !8W! }!~#fo " 6!~C6!~+6* 6!~#7!~#fo ~w!~#fo !8W! }!~#fo " N7!~#fo !8W! }!~#fo " >2 !~w#~w5!!p5͹Wy^7!~#fo ~w5!~#fo !8W! }!~#fo " >2 !~w#~w5: 2 : |7!M5aHv* * #" !ͩ/yw5*x[OV!9N#F#^#V#~#fo">kb"!~#fo#"L<*R#"R*d###"d:*oN "P*P*B!oyOx#Gi`*\ }|*s!Hʹsv "d2R2S:R:S<*d#~#B=*B*B##"B*L*\ !oyOx#Gywx#w!!*d#N#F*LdXywx#w*L>!~#fo#"LB=*R#"R*d###"dÚ;*L*`###yOxGi`"X!X:Z:[#U=*X!ZyOx#G:N:OU=!7ͥIU=*R#"R*d###"dl<*L"b*`#:Xw:Y#w*b6*b#*N!XyOx#Gi`*Z }|*oD "P*P~#fo!\yOx#Gi`*o "f*fk>*oB "P*o*P~#fo !\yOx#Gi` "@*@*@#"@:rw*@*s!Hʹsjv ~vu!~#fo~N>!~#fo~OGy>>x[>!~#fo6[>!~#fo6v!~w#~w>u:rOGi`#"j:j:k>*jMD))) !~#fo "l*l!~#fo~*l#!~#fo#~*j#"j{>vu!~#fo~>v!~#fo~?!~#fo~OG=?y?vv!~w#~w>01234567890abcdefABCDEFu!%?!N#FXvu!~#fo~j?v!~#fo~ʖ?!~#fo~0?!~#fo>9?ì?v!~w#~wj?vu!~#fo~?!~#fo~ ?!~#fo~ ?!~#fo~??v!~#fo6!BaHHyyDx±B:u2s2t:uOG!Hʹsjv ~2 v TERMINAL SELECTION MENU u!#D! H:y2y:z2zOECan't read bios u*o"ϓ> 2ѓ2ғ:ѓ!:ғE*ѓ!*ϓ!xFyE!vEͥIEv*ѓ#"ѓ*ϓ}ƀo|g"ϓÚECan't write bios u*o"ӓ> 2Փ2֓:Փ!:֓]F:Փ (F:֓1F4F*Փ!*ӓ!xF! 9y`F!EͥI`Fv*Փ#"Փ*ӓ}ƀo|g"ӓFu!ד:nOG ~OG:nOG!G!ד:nOG 6!!N#F!G!! N#F!!G!!N#F!$G!~# G!!!'Gv!! N#F!*GvCan't write Auto sector PILOT INITPILOT INITCan't read Auto sector u!r9! !!r!xFyʙG!TGͥI!y!IGYyw!!>G!zdX!! !!r!xF! 9yG!%GͥIv!9^#V#N#F#~#fo*++ki`"ËK!"ËK v!9!~#fo"!~#fo"!~#fo"* :w:#w* w#w* w#w* *~r|LLywx#w v v!~#fo"*!͞P* N#Fhi* ~w#~w* ~#fo}M* ~#fo| M* N#FS* ~w#~w M v* w#w* ~w#~wM v!~#fo"*": 2 :!2!hM**#"~OGyOGpM!Ni`":‚M:ʨM: ’M:ʨM**#":w;M*6:ºM:M!:M:#MM*MD v v!~#fo"!~#fo"!~#fo"!:w:#w:2:2!>#N!* ~w#~w+gN*N#F*~w#~w~OGyOGoN*Nywx#w+~€N#~ʧN!N#F!~w#~w!~ N!~#fo6!~¿N#~N!! N #NN*MD v v!~#fo"* ~#fo}O* ~#fo}0O v* ~#0O*Q* ~#fo}@o|g}ʚO22::O*!ʹs$ ~#fo}@o|g}'P*!ʹs !͞P'P* * ~#fo}ʹOüO* N#F* N#F]ywx#w** ~#~* ~w#~i`"͟Si`"*##~#fo"*!  #hT*! ;T #–T*##*##~#~T*"*##~#fo"T!:wT:#ST!͓bi`"!~#T v*!  #**~#fo)) "*:w:#w*"*####MD v*> w>#w*####T*"ST v!~#fo"!~#U v:2:2͟Si`"!::#ҝU*##::#ҝU*~#fo))* *##ygUx#U**##~#fo  #* *##~#fo##~#~U*##::#U!::#HU*##::#HU*##~#fo"(U* *##~#~*~#fo))* !yVx#8V**  #*##* ~#~FV*##:w:#w*" v v!~#fo">2:"W:OG!ʹs ~#fo:OG!ʹs" yOx#Gi`"!~#-W:OG!ʹs$ ~#fo}-W:OG!ʹs" ~#-W*:OG!ʹs" N#F:OG!ʹs& N#F͐c-W*h v:2bV v!~#fo"*~`W*> W*~W2!2"*~0W*>9W*!MD)) )"!*!*~OG! "!*#"gW*#"FW*!MD v v!~#fo"!~#fo"** W v*#"*#"W*~W+{ H0HOGMDu!~ +H#~;H! !ͣ7!N#F!ͣ7vu!N#FsHvu!N#FsHv v!~#fo"*~ʠH*~OGH*#"ÁH vu!N#FͺHOHvu!!N#F!ܓYi`ܓ 6!ܓMDvu!N#FHvu!ͣ7y2:IOV:2:A8I!>Z8I:OG! MD?I:OGy2:OGvu!ͣ7y2:gIOV:2:AI!>ZI:OG! MD×I:OGy2:OGvu!N#FaH!OVv v!~#fo"!~#fo"Ji`"!~#I v**MKi`":J:J v***L*MD v v!~#fo"!~#fo"!~#fo"**MKi`":tJ:}J v*͈L***L*MD vuJi`"!~#¹Jv!N#F!N#F*L*MDvu22>2:*K:OG!ʹs$ ~#fo}2K:OG!ʹs "2K*MDv:2JKrKatKw L v!~#fo"!~#fo"*~OG!=Ku!!*ii`"*MD v!!*ki`":·K:K!!*ii`"!!##N#F+++N#F*dZËK!!*w+1P* ~P#~‚P* ~wÍP*#"OO* * ~#fo#MDx22x2y2!s*N#F*~w#~w~OGyOG v* ~ w* w#w v v!~#fo"!~#fo"* ~#fo}P* ~#fo} P*MD v* ~#P*Q*~#fo* yOx#Gi`"!~#ZQ** N#F* N#F͐c!yFQx#ZQ* ~ w v* :22:2:2!s** ~#~* * ~#fo}ʲQõQywx#w:Q:Q*N#F*~w#~w:w* ~w#~w*MD v v!9!~#fo"* ~#[R* ~#fo}ʄR** !* ~#fo }| w #wR!* N#FZxR* #~wR** !! Sywx#w+~#~ i`~#R* ~wR* ~w#~wR!! ##N#F+++N#F* N#FdZx S* ~@w vu!N#FTv v!~#fo"!~#fo"**ʹsi`"*Si`"*"!~#lS v*:2:2}ʗS**#"6lS*MD vu!~#¾S!"*"22*MDv v!~#fo"* !~s#MD v v!~#fo"*S v v!~#fo"!~#fo"!~#fo"*:2:2}aX**#"**#"~(X v v!~#fo"!"*~#ʱX*~#fo"*~ʾX**#"*~*#"ÌX*6*MD v*##"yX v!~#fo"!~#fo"*~Y*~OG:X: Y v v*#"X v!~#fo"!~#fo"!~#fo":qY*>o>g":qY*>o>g"**#"6-**~s"$!$~#ʢY**$*Y* "**͙s0 }2#!#>9Y:#'2#**#":#w*!yOx#G v v!~#fo"*~ Z*#"Y*!yOx#G vu!!&##N#F+++N#F!N#FdZxNZvv[ZZT[u!N#Fpki`".!.~#‡Zv*. ~DʚZv! ~#foMD!TZu!~2*#~2+#~2,#~2-*.#:*w:+#w:,#w:-#w!~#foMDv*.#\t!!s~2*#~2+#~2,#~2-Z*. ͮjx22x2y2!!s~2*#~2+#~2,#~2-Zv: can't write : can't read u!"~!":22**p!~#[*~*~#"~**#"~:2:2Þ[*~*~#"~6!0"x*x*x##"xw[ywx#w!!~#fo "!~#fo#\t!>2222!&t##~2!~#fo ~#ʥ`!~# b!N#F͔l:ր:/a:/a!"*!ͣ7*!!ͣ7yʜa b22!"*"!~#a!:`:# b!~#fo#22:2:2!s22!N#F͔l!z!ͣ7*!!ͣ7y=ba!z!ͣ7*!!ͣ7y b!:OG}o|g"!::#xa*MD}a*MDi`"*!z:OG *r** "!:2:#2!~#fo#22:2:2!s>2T`!~#fo#22:2:2!s*!yOx#Gv*~2:OGy7bxSba!z:OG ">2 b*#"*#": ʹ`:ʹ`**#":w:2:2ù`u!9!:w:#w!*!~#fo }|!:w:#w!!}|!w>#w!!yOx#G!yx# cv!!  #Zc!!  #Zc!!  #Zc!~#fo"!~#foMDvvcccxdTpdLhdPdCcDdd ddui!~#ʺc!N#Fpki`"!~#cv*~OG!`cu* ~OG!lcuv!N#F!N#F*"e!y!ͣ7*!"ͣ7yphv*!y:OG !:OG r!!ͣ7*!"ͣ7yphv!y">2!~#fo#22:2:2!s!~#Wg**#"6 !~#Wgfg*!yOx#Gvu!w#w!~#~i!N#Fhi!~w#~wh!ͣ7vu! ͣ7y5i22v*#"::ei!ͣ7yZixei!ͣ7vu!N#Fpki`"!~#‹iv* ~Di*~i* !ͣ7i`":•i!>>#i* 6!~#foMDv!>w>#wiu!~#j!~ j#~j!>w#wmi`"Õ!Õ~#.jv*Õ!N#F͉myJjv*Õ ~D„j*Õ !ͣ7*Õ !ͣ7xjv*Õ 6!N#F!N#F!N#Fkvu!N#F!#ͣ7yjxj!ŕ\tv!~#fo! MD 2222!!~#fo" MD 2222!!ktʹu!~#fo# MD 2222!!ktʹu>22>2>2!uvu!#~k!~#~kv!N#F!,ʹsݕ "ɕ*ɕ ~ºkv*ɕMDvu!~#k!~k#~k!>w#wmi`"˕!˕~#l"~*~~*\*~~ʖ\*~> \*~~\ó\*xw#w!z~#E]!hi!!*zki`"!~#E]*zyq*z!͐c! !i[!͐c!hE]*~~)]*~~<\*~~>\\*~*~#"~6 \*~#"*~]*> ]*~]]*x*x##"x:~w:#w)]*~~>]*"|#]*#"\*"z*"~*~> \*~~\*~#"~)]!|~#ʮ]!hi!!*|ii`":z]:ʮ]*|yq*|!͐c!!Z[!͐c!h!0*x0}o|g!~s%,OVv7^7^^_C^T^L^P^D_u!9!N#Fpki`"!~##^!~#)^v*~OG!]u!~#fo"!~#fo!~#fo "* ~#l^o^y2* ~OG!]uv!N#F!N#F*_vv!::#_!ͣ7y2:^:OGy^x^_**#":wî^: ^î^*!yOx#Gv_!6!! ͣ7! !ͣ7!"!~OG!yx#`_!~OGg_!N#Fy2:ʋ_*~OGyƒ_x²_>2!::#_:_**#"6 _**#"**#"~:2k_vu!z9i!~#fo"!~#fo"v>2!~#fo"!~#fo!~#fo "* ~#ʋd!::#Ҩd**#"~OG:OGͣ77d>2d>2d!~#foMDvv!::#Ҩd*~OG!cu*!yOx#Gv!:d:#d* ~ d! :OGͣ7**#"~OG:OGͣ7Ëd6g ggg Dgu!9!~#fo"!~#fo"!~#fo "!~#fo#\t!>2222!&t##~2!~#fo ~#e!~#h!N#F͔l:ր:4f:4f!"*!ͣ7*!"ͣ7yjfv!y:OG "!"*:2:2}h**#"~2:OG!eu!z!ͣ7*!!ͣ7yʶf!!!zqöf** "!:2:#2!~#fo#22:2:2!s>2Ôe!:OG}o|g"!::#f*MDf*MDi`"**!z:OG r*!"ͣ7yjfv!~#fg!::#Wgfg**#"6 **#":wg!::#e!::#{g~gi`"!~#ʒg*"*!y:OG yOxGi`"!N#F͔l:ր:g!!ͣ7*!!ͣ7y(h!!!q(h!"v*˕!N#F͉mylv*˕ ~DPl*˕ !ͣ7xPl*˕ 6v*˕!~*˕#w#w#w#w*˕ !~#~*˕ݕ}o|g!,~sMDvu!~#fo#~2͕#~2Ε#~2ϕ#~2Е!~#fo "ѕ*ѕ! !͕!t##~*ѕ" !͕!t##~*ѕ# !͕!t##~vu!ݕywx#w!~#~Cm!~#fo ~Xm!~#~hmv!~,w#~w#m!~#foMDvRDR:PTP:CON:LST:u!9!~#ʲm!~#fo~ʲm!~#¸mv!N#Fyqi`"ٕ:ٕ :ڕmv!"ӕ!~#fo"Օ*Օ~@n*ӕ~w*ӕ*Օ~a$n*Օ>z$n*Օ~OG! MD,n*Օ~OGyw*ӕ#"ӕ*Օ#"Օm*ӕ6!!}|:ٕan:ڕ˜n!~#fo###~:˜n!m!N#Feryn>L2ٕ2ڕ]o!~#fo 6D!~#fo "ە*ە6!~#fo#~:‡o!~#fo~2ٕ2ڕ:ٕA:ڕo!ٕ>P>#oo!m!N#Feryo>C2ٕ2ڕ]o!zm!N#Fery=o>P2ٕ2ڕ]o!um!N#Feryso>T2ٕ2ڕ!~#fo :ٕwv!~#fo 6v*ە#"ӕ2ٕ2ڕ:ٕ:ڕ%p!~#fo~o!~#fo~.oov*ە*ٕ }!~w#~wÇo*ӕ*ӕ#"ӕ6 *ٕ#"ٕÕo*ӕF!9~#fo ## # +++ #Kv!9N#F!9~#fo  # # #Kv~#~#~#~#~#~#~#~!9~{t/<ñtKvO!9~#fo##~w#~w+++~w#~w ˆtKv!9~t/<{tKvO!9~#fo##+~~w+~w###~w+~w ¿tKv!9~t/<{tKvO!9~#fo##+~w+~w###~w+~w tKv!9~#foN#F#N#F! 9~#foN#F#N#F!!9~+++ʔu~ju!9MD!9  # # #!9~w#~w#~w#~w!9~w+~w+~w+~w;u!9N#F!9~#~}|! 9Kv!9N#F!9~#fo  # # #Kv~#u#~#foy#ux#u+++~#fo##u!9!9***i`!"""!9N#F###q#p+++q!9N#F#q#p(()q*a+*ӕ#"ӕ!N#F!~w#~w~o!~#fo~Pp!~#fo~.Pp!~w#~w%p!~#fo~.kp!~w#~w2ٕ2ڕ:ٕ:ڕp!~#fo~p*ӕ*ӕ#"ӕ6 p*ە *ە *ە *ە 6~ w~v*ӕ*ӕ#"ӕ!N#F!~w#~w~*ٕ#"ٕrpu!N#F!~w#~w}vq!~#fo!~#fo~AVq!~#fo>ZVq!~#fo~OG! MDcq!~#fo~OGyw!~w#~wqvu!!~#~!~#fo~ʭq!~w#~wÐq!~#fo!yOx#Gvu!N#F!~w#~w}r!N#F!~w#~w!~qvu!N#F!~w#~w}Xr!N#F!~w#~w!N#F!~w#~w~ r!~#foMDvu!~#fo!~#fo ʢrv!~w#~w!~w#~whr!~#fo~…rv!9~w#~w#~w#~w+MD!9 _ #ڿr{ !94ÿr! 9~ s+w>#w! 9N#FxsO>G͵r-sO>G! 9q#pKv! 9~Os+w>#w! 9N#FxcsO>G͵rssO>G! 9q#pKv! 9N#F͵r! 9q#pKv! 9N#F͵r! 9q#pKv!! 9~+s~s! 9N#F ! 9~w#~w! 9~w+~wús!9q#pKv!9N#!,Zv= EQRW()*YT--- ---,, ,, , ,T,Y,E,Q,W,R,(,),V2.1: copyright (c) 1979 by Whitesmiths, Ltd.CCC CEOL = ESC T Televideo 912C/920 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ESC * Televideo 925/950 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ESC * ADDS Viewpoint LEVEL = 2 CURSOR = ESC Y R+32 C+32 HOME ESC Y SP SP CLR = ^L RIGHT = ^F UP = ^Z HI = ^O ESC '0' A LO = ^N CEOS = ESC k CEOL = ESC K ADDS Viewpoint 3A+ LEVEL = 1 CURSOR = ESC = R+32 C+32 CLR = ^Z LO = HI = ACT 5A LEVEL 2 CURSOR = ^T R+0 C+0 HOME = ^] CLR = ^L RIGHT = ^X UP = ^Z CEOS ESC K CEOL ESC I HI = ESC B LO = ESC C Qume 102 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z * Honeywell * LEVEL = 3 * CURSOR = ESC f C+32 R+32 * HOME = ESC H * CLR = ESC ` * RIGHT = ESC C * UP = ESC A * INSLINE = ESC [ L * INSCHAR = ESC [ I SP ESC [ J ^H * DELLINE = ESC [ M * DELCHAR = ESC [ P * HI = ESC '3' * LO = ESC '4' * CEOS = ESC J * CEOL = ESC K ANSI LEVEL = 1 CURSOR = ESC [ R+1 ; C+1 H ASCII HOME = ESC [ H CLR = ESC [ H ESC [ J HI = LO = CEOS = ESCCCC* * TERMINAL CONTROL DATA FOR VARIOUS TERMINALS * Morrow 20 LEVEL = 3 CURSOR = ESC = C+32 R+32 CLR = ^Z Morrow 50 (Freedom) LEVEL = 3 CLR = ESC * CURSOR = ESC = R+32 C+32 Morrow MDT-60 LEVEL = 3 CLR = ESC * CURSOR = ESC = R+32 C+32 Morrow MT-70 LEVEL = 3 CLR = ESC * CURSOR = ESC = R+32 C+32 ADM 3A or 5 LEVEL = 1 CURSOR = ESC = R+32 C+32 CLR = ^Z LO = HI = ADM 22 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z ADM 31 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z Heath H19 LEVEL = 1 CURSOR = ESC Y R+32 C+32 HOME = ESC H CLR = ESC E LEFT = ESC D RIGHT = ESC C UP = ESC A LO = HI = Visual 200 LEVEL = 2 CURSOR = ESC Y R+32 C+32 HOME = ^A CLR = ^L RIGHT = ^F LEFT = ^G UP = ^Z HI = ESC '3' LO = ESC '4' CEOS = ESC y CEOL = ESC x Soroc 120 LEVEL = 2 CURSOR = ESC = R+32 C+32 CLR = ESC * CEOS = ESC Y CEOL = ESC T Televideo 910 LEVEL = 2 CURSOR = ESC = R+32 C+32 CLR = ESC * CEOS = ESC Y  [ J CEOL = ESC [ K LEFT = ESC [ D RIGHT = ESC [ C UP = ESC [ A VT52 LEVEL = 1 HOME = ESC H CLR = ESC H ESC J RIGHT = ESC C LEFT = ESC D UP = ESC A CURSOR = ESC Y R+32 C+32 HI = LO = VT100 LEVEL = 2 CURSOR = ESC [ R+1 ; C+1 H ASCII HOME = ESC [ H CLR = ESC [ H ESC [ J LO = ESC [ '0' m HI = ESC [ '1' m CEOS = ESC [ J CEOL = ESC [ K LEFT = ESC [ D RIGHT = ESC [ C UP = ESC [ A Wyse LEVEL = 3 CLR = ^Z CURSOR = ESC = R+32 C+32 Teleray LEVEL = 3 HOME = ESC H CLR = ^L CEOS = ESC J CEOL = ESC K RIGHT = ESC C UP = ESC A CURSOR = ESC Y R+32 C+32 INSLINE = ESC L INSCHAR = ESC P DELLINE = ESC M DELCHAR = ESC Q HI = ESC R @ LO = ESC R B IBM 3101 LEVEL = 1 HOME = ESC H CLR = ESC L LEFT = ESC D RIGHT = ESC C UP = ESC A CURSOR = ESC Y R+32 C+32 HI = LO = Hazeltine 1420/1500 LEVEL = 2 CURSOR = ~ ^Q C+0 R+0 HOME = ~ ^R CLR = ~ ^\ RIGHT = ^P UP = ~ ^LMissing Function Key Name $Invalid Function Key Assignment $Temp buffer overflowed $Local Function Key Table Overflowed $Function Key Table is too large $Unable to open the key file $Error occured in a disk read operation $Unexpected End (Eol or Eof) $Illegal Character $Dictionary Buffer has overflowed $Illegal Name in Switch Setting Line $This Program Requires Cpm3 Bios Revision 1.9 or Higher $This Program Requires Cpm2 Bios Revision 3.1 or Higher $ Function Key Installation Program Rev 2.4 $ -> $ Unrecognized Error $@`F1AaF2BbF3CcF4DdF5EeF6FfF7GgF8HhF9Ii F10\|FA]}FB^~FC_FDJj UPKk DOWNLl LEFTMm RIGHTNnHOMEOoHELPIi ERASESETUPTAB0 01!12"23#34$45%56&67'78(89)9*+,.-./ENTER:;<-=>?, _TAB_ESC_DEL _RTN_SLW_FSTSWITCHCHAINTERMSTARTKEY HI = ~ ^_ LO = ~ ^Y CEOS = ~ ^X CEOL = ~ ^O Hazeltine Esprit LEVEL = 2 CURSOR = ~ ^Q C+0 R+0 HOME = ~ ^R CLR = ~ ^\ RIGHT = ^P UP = ~ ^L HI = ~ ^_ LO = ~ ^Y CEOS = ~ ^X CEOL = ~ ^O None of the above LEVEL = 0 CURSOR = ESC = R+32 C+32   !!""##$$%%&&''