IMD 1.18: 7/12/2016 20:45:59 13-1118-02 rev a dskt, mcz-2 rio ver 4.2 for ffs  UUUUUU@@@@UUUUUUUUUUUUUUUUUUU  First boot 800828.1! *" - 6RIO.BOOT 801005.1>12!"!t!~ …*~l2#O͛:킷 ):<_*"!00!0!l(!\!2V: !!P1Ͱ!8"*^#VS#^#V#"Sz(.*| 0R0*炧Z" *0R"(20:킧!6*ut*#""~ *"*邧R0" l:(!>:N˹ #G >2^#VS~˿_R8>2!6*"~ !6!"!ut!"~ !6!y"~ !"䂯*#""!6!ut~ !6!6G not found Bad pointer in EOF in 82MCZ2.RIO.SUPPORTMCZ2.RIO MCZ2.RIO.FFSUIKNIM 820608-3  ! "">N ʿ ʿ*#"}2>2!z{>2z2~(?(2z~22{fn">2!">2~!P"|"* f n 3!F(ˆ>2ͭ:22*"zK +!%"!̀: M*R": >Q*w >2!"*~ wf nZ(*~ ***[ :(N>(V ^ (*~< ~w~w>2>d2>w 2fn tu*#"t u ~ = 820527821018J)A>BMCZ2.RIOlevideoOBJJ =A= ~wd>22C{(!͌!̀F p _G!~ !̀: : ~ !>R>K >P~ >2: :# !c>2>2x()>2}2S>22!̀: U>22: >>2dx( A5~ >2222f n ">2":ݾ :ݾ x2*":0<2:<2G!̀[N ~ (!y #~ #~(#>_.8!Sq#~ w#~wfͪfntu>w~ = 820527821018J)A>BMCZ2.RIOlevideoOBJJ =A=((4 y7ͪ ͭ~~ ~ : :< .~  :ݾ V^*R >: 8>2"=(:ݾ "![!c6>2ͪV^ !Z(*R fn V^!%"V^fntuFN !J( *B( FN! tuͪVftr>w>w!%"K!R >2!&R>2%:<2d8G_?OAͲ>kM2282: x/2!6@ ( ˟X!!"!"@! ! 222/2%22!/S!"jP^(@ ~:0 *#"&>2*&w!"Z!$ !F !0!0>ɃyNϻ ~a#P: Y S*&~(>2E>"2Ͳ"~2:w:wnf++""2Ͳ>k:O!4! 22!s"Z! Ƀyϋ`S*:[2S S:G} 2:22!"! ">!22Ͳ>kͲW>2>2!>>(MO>!K4XXR003wXXR002USRSPCCONENDCON(USRSTK/STACK9PDEBUGBPCONLBRKRTNTBRKFLG^CHRDELhLINDELrPROMPT|NULLCTOUTPTRINPTRMEMBOTMEMTOPEXTRETERCODETIMEDATECONIVCCONOVCCONIBFCONOBFPREPATPATCHNIMHINIMLOMEMMGR SYSCALdealoc*allockmemmgr#DIVjMULTOTTYTSTENTRYRETURNCLRCON CSP MAPBMEMMAP~DBTHEX BTOHEX HBTHEX NADTE}ADTLEN{ADTMASDEVDLFTF(i( o(7W >>W o(>:A>>"2FW>2!M*~ ͻ: W MO>y(ͲV:G  Ͳ?>:2>2: Ͳ>2>0Ͳ:(w(Ͳ>0h`*FNB(8!>>:2G G`d*"!M>2*~_(p{'!_ZXVTRP"%JHFDB@: &,20'%~f~f ~:LFTENDLFTSASYSFLGERRORCHKFN GETMO WRCON&SEARCH RDCON"PUTSTR+ PUTMSG$ GETCHR EXTFP DISPAT EVALq DELIM2a DELIM1N DELIM] LOCDEV systemSYSTEM< !2 :%< !&2%"~( ! mI( Ô  #DEBUG INITIALIZE BRIEF VERBOSE XEQ ALLOCATEDEALLOCATEREm(LEASE>FORCEOCLOSEY ((((D0K (((CONK NULLLPCONMemory Sizing Error at Z[820527820920 JQ\RMCZ2.RIO.SUPPORTBJJ[Q[GDisk Initialization Error Console Initialization Error MCZ2 RIO 4.2 XEQ ALLOCATEDEALLOCATERE{#E>FORCEOCLOSEY (((dm%Error Invalid Drive NameInvalid or Inactive Device"Invalid or Unassigned Logical UnitMemor'@A$#O~ r+s##!(!T $ 1mzCperand(s) System ErrorIllegal File NameNonexistent CommandInvalid ɂ DO OS.INIT Program AbortInsufficient Memory"Missing or Invalid File Properties)GTfzpmlH!BI!UU"" !+ > !" "(!L"">L͵  [ĵL0@0. ~! ~ !  !$mDDH$ ! !$ !@O ~#foN#$ I/O Error on Unit §!Fˮ!9@B* fmy Protect ViolationMissing or Invalid Operand(s) System ErrorIllegal File NameNonexistent CommandInvalid ɂj*RIO file type Program AbortInsufficient Memory"Missing or Invalid File Properties)GTfzpmb@@19!~?w!"/" k!">U|( Nwq#(++"#|(+ !$ |(!Lm$ĐIH"@ B RDM!k!( : (!R !L""!5$ : (!3 !$ !w!V˖[![~eDm@"@$ n" **f n"6 [(w *|(x""" ! ˆn( !~< !98 ~ ?tmA@!f n ~#T]##(G(+n&)Kq#pO fn (  w wf n|~0>Bn&)^#VzPm"$BI@  @>B"C2z2! !!~<  S !˾ !n !~@*  #;( : q 0Ԃk Ha0@>D!PY !$ *+! " 2PY~#a +" :W G O( RDM$ !vœ}[820527820920 JQ\RMCZ2.RIO.SUPPORTBJJ[Q[l@@H@`!^ <!i  >^#V* G!^ bkn(ˮ#g  . (C" >G2I!wXm` F cI$@`*/| .Kx(&*}k2(!k2 S/*~, #" t!~< :w V!V˖*/ k @a |s(!"/*|(![s!9[R {(2{!(!nˮ(˶~!< C/ -` :w[!V F͵[>>>2E @ 2PY~#a +" :W G O( RDM$ !vœ!F m""D , ()N ; ɯ2>2! "!t"!" !:* /:G (>02 (( o 2 >*Ă m 2!t" " S  $!K ͎ " n&)q#p* >*~: (#~00>@80#~ m@@@B@@] d(8/ #" ~0888/ !#" ~d[ ] (~U ] >F!dB}[ !)O m@" @#T]e~/(:(] ( >AR }!K{  / NFɧ(e0>F! wx((/a820527820920 ^ebf MCZ2.RIO.FFSPORTBJJ aea m@I$@5(#(w+w >A!( ~ w: (>H : (0>H 8>H *"!)"[{>cg m @"@  _*}#R"DMk( : :>C *{K-> 2!!" *"Ky  (o 2  m@!@@>@!":on!>B&z #{  #  80w#~N (>2>2 ~6 0; m $@ E w>2"C!  *>( q 0>Dy!""!62 <2ɯq !ˎ!<a820527820920 ^ebf MCZ2.RIO.FFSPORTBJJ aea mBD11$ίC  a ($(>A͎  i`*">2! s19! "!^B{ ] (* ,t l1DHHA@#": >H*{[}K:wSkS>Cq 0>D"CÜ~ ( (6 6 66fn| +'u kH@H@" Oxy ] 7 =2 2xK:- R+ * O /Kj:*] 7+-*/ m@*!9G_#~- #~+ #~/8 o#o+"Wxz !BC#~0:8AG8 ag? 0 ML7|M!0gi|M!jR?0jZ8(gi!^B{ ] (* ,tm HDBH&$Dq 8$Cq 8Cq 8[*k;>Dq 8Cq 8**!~9< !94 < !~mbLA0$ 9< !9< !~9@ɧ(E=>D>x(8+ 8]uCD"2G [>C*:G[͗>ɦkm$$Bx>DuCD"2D"2C[R>D*K x>D ͍(z( .z f 81199 <×1Ú!Ým@! $@*R(R x78# "x2Sͣ> z(.>J*:ZK̓ +*R"x=2SGEmB D%|D<o!yH8A> G7H͍/! H͍!AO~N6ٱ١ z ww#H͍AOyz <#+ 8]uCD"2G [>C*:G[͗>ɦP4uCD"2D"2C[R>D*K x>D ͍(z( .z * à(ã60æ;/8.Õs!>G^!z"P"R"T"V>i|DXXR001TTGETTTPUTFlopyDbgret~Comd1?~GetchrPutmsgcErrorwPutNTty2Puta(DskerTtyput'TtygetESCCHR`MSGPTRDSKVECRST6RST5RST4RST3RST2RST1PTYFLGPTYMSKPTYBUFNSECTENCRCENTRKEPTRSRQSECTFORPTRBCKPTRCURTRKCURT0DSKVSLINTPNTDS_BUFLFCNTUSRSTKSTACKBRKRTNBRKFLGCHRDELLINDELPROMPTNULLCTOUTPTRINPTRMEMBOTMEMTOPEXTRETf\Ì>>P12!nˮ*"!E"+s1":( ***m1W:2>G^11{*~ #~ ("w(˯ (#*8#6R1m #"B# 80w>*6 !"e~#!"w662!F(n( ˿(((+mF ˿()ݾ(:2wM~ w_*<ݾ Z~ ݾw ~(˿lERCODEETIMETIMEDATESTATUSPC_ERR_CDDSKVCBFFLENBFFADDRQTRKCONIVCCONOVCCONIBFCONOBFw820527820920E `yxzNIM2.RIO.FFSPORTBJJwyw;?CEIMw820527820920E `yxzNIM2.RIO.FFSPORTBJJwyw;?CEIMaESCCHRSYSTEM PTYMSKPTYFLGPTYBUF(PTYPUT2PTYGET<TIBFCONENDaCLRABSnSETABS^ESCWAT3INTZxSCHRGCHR mv W(!! ~ 0%6 v( f n|(Ffn86 !gNF_xmx(|fn8J(=~ # (y fnBtu:(G> :(G ~  wm: T]wݾ +R0bkFNݾ(# (y(G !r">>կ2"" !u t > FRmO( F:(>Iw >>2*~ w( f n| F( fnMM DISK ERROR >m`c0 2^(:G:F˿(͑<2F 8 :n!f ^<(2F>[cL!v(!ˆˮ!N6 *(S(! } ! ~ 0%6 v( f n|(Ffn86 !gNF_xx(|fn8J(=~ # (y fnBtu:(G> :(G ~  wm: T]wݾ +R0bkFNݾ(# (y(G !r">>կ2"" !u t > FRmO( F:(>Iw >>2*~ w( f n| F( fnMM DISK ERROR > TIBCONESCCHRCLRABSSETABS"ESCWAT,INTZ6SCHR>GCHRFDATENCHRDELVLINDEL`LFCNTjNULLCTsm`! !!V ͭ!` ͭ  > <͊> S F( > ># F~0o&D˿ m$@(p f65  ! V~( ( 054˿ 0< 69 "~8|ɜ]m 0 @_B!|#~(p 5 > (4>:s> :jG>xyͣ V(& F !0 ~(0&oF><> >>> ˿ ͣ(>\<> <͑͊!m0`!~(@FNV^ 0^ Fx(B!N!B>0 >pq!>2s2j>2V>2`Lcj I$>26>w vf n|! #^#V#(>DkFH N JB@!B0 qp! @(m`0` ,"x(JFV(~> x(1> x( F < ;(, >fn(m$BtumV( Nđ͊Fx(F˿\ "F˿ ͣ(>\<> <͑͊ &G !!V ͭ!` ͭ  > <͊> S F( > ># F~0o&D˿ m| > (4>:s> :jG>xyͣ V(& F !0 ~(0&oF><> >>> ˿ ͣ(>\<> <͑͊!  D820528821018DbD] MCZ2.RIO.OBJPORTBJJGKOSWUY]_cgimÔ ##DEBUG INITIALIZE BRIEF VERBOSE XEQ!ALLOCATE"DEALLOCATE"RELEASE>FORCEOCLOSEY %%%%^FFS%)%CONK!NULL PCON FDMMemory Sizing Error at Disk Initialization Error Console Initialization Error MCZ2 RIO 4.29  D820528821018DbD] MCZ2.RIO.OBJPORTBJJGKOSWUY]_cgim%Error Invalid Drive NameInvalid or Inactive Device"Invalid or Unassigned Logical UnitMemory Protect ViolationMissing or Invalid Operand(s) System ErrorIllegal File NameNonexistent CommandInvalid RIO file type Program AbortInsufficient Memory"Missing or Invalid File Properties)GTfz1!~?w!"" ))k#! k#!)">U|( Nwq#(++"#|(++!$ |(!RDM!k#!% : (!h ! ""!K$ : (!I !/$ !w!V˖[![~#O~ r+s##!(!j $ 1mz DO OS.INIT !UU""!+ > !" "(! "">L͵  [ĵL0@0. ~! ~ !  !$ ! !$ !@O ~#foN#$ *>*~: (#~00>@80#~]d(8/ #"~0888/ !#"~d[](~U]>F!dB}[!)O#T]e~/(:(]( >AR }!K{  / NFɧ(e0>F!wx((5(#(w+w$ >A!(~ w: (>H: (0>H 8>H*"!)"[{>_*}#R"DMk#( : :>C*{K-#> 2!!" *"Ky(o 2 >@!":on!>B&z #{I/O Error on Unit §!Fˮ!9@B* fn" **f n"6 [(w *|(x""" ! ˆn( !~<!98~ ?f n ~#T]##(G(+n&)Kq#pO fn ( w wf n|~0>Bn&)^#Vz>B"C2z2!!!~<S !˾!n !~@*  #;( : q!0>D!PY!$ *+! "2PY~#a +" :W G O( RDM$ !vœ!^ <!i  #  80w#~N(>2>2 ~6 E w>2"C! *>( q!0>Dy!""!62<2ɯq !ˎ!ίC  a($(>A͎ i`*">2#!#s1! "! { ](* ,#": >H*{[}K:wSk#S>Cq!0>D"CÜ~ ( (6 6 66fn| +"!Oxy ]7! =2"!2"xK":"- R+ * O" /K"j":"*]7+-*/*!9G_#~- #~+   >^#V*G!^ bkn(ˮ##g# .(C" >G2I!*| .Kx(&*}k#2(!k#2 S*~, #" t!~<:w V!V˖*|s(!"*|(![s!9[R {(2{!(!nˮ(˶~!<C:w[!V F͵[>>>2E@D , ()N; ɯ2>2! "!t"!" !:* /:G (>02(( o 2 >*2!t" "S $!K ͎"n&)q#p #~/"8 o#o+"Wxz !BC#~0:8AG8 ag? 07|M!0gi|M!jR?0jZ8(giq!8$C$q!8C$q!8#[$*$k#;>Dq!8C$q!8#*$*#!~<!4<!~<!<!~@ɧ(E=>D>x(8+ 8]u$C$D$"$2$G [$$>C*$:$G[$͗$>x>Du$C$D$"$2$D$"$2$C$[$R>D*$K$ x>D ͍$(z( .$z *$R(R x78# "$x2D820528820920DbD]MCZ2.RIO.SUPPORT.OBJ qukos}$S$ͣ$> z(.$>J*$:$Z$K$̓$ +*$R"$x=2$S$%|D<o!yH8A> G7H͍$/!$ H͍$!$AO~ٱ١ z ww#H͍$AOyz <#!(~(@FNV^ 0^ Fx(B!(!B>0 >pq!'>22>2>2>2`)>w vf n|!% #^#V#(>Dk%F%H% N& J&%%B%@%!B0 qp! (@(((x(J͛(V(~̘( x(1͘( )xD820528820920DbD]MCZ2.RIO.SUPPORT.OBJ qukos}( F <' ;&(( >fnBtum%V( Nđ'͊'F)x(͛(˿\ '(͛()˿& ͣ'(>\<'> <'͑'͊'%!` !&! ͭ'! ͭ'  '> <'͊'> S F( > >#& ͛(~0o&D˿ ((p f'65&  !&' V~( ( 054˿ 0< 69 "~8|'_B!(|'#~(p 5 > (4Ø(:> :G͘(xyͣ' V(& 0 ~(0&o(F''><'> ͘(>Ø(  81199 ×1Ú!Ýàã6æ;Õs!>G^!z"P"R"T"V>iÌ>>P12!nˮ*"!E"+s1":( ***1W:2>G^11{*~ #~ ("w(˯ (#*8#6 #"B# 80w>*6 !"e~#!"w662!F(n( ˿(((+F ˿()ݾ(:2wM~ w_*<ݾ Z~ ݾw ~& ^(:G:(˿()) 2( ( :`n!f ^ (2(>!v(!ˆˮ!N6 *J)S!?)(˿v W(!! ~ 0%6 v( f n|(Ffn86 !gNFx(|fn8J(=~ # (y fnBtu:(G> :(G ~  w: T]wݾ +R0bkFNݾ(# (y(G !r">>կ2"" !u t > O( F:(>Iw >>2*~ w( f n| F( fnMM DISK ERROR > * } !g̈́ !" !: ʹ( >̧ *W}(: 2Y: ( *k"Wv(!"W!"[: ! (* **  2 " : 2 ! " !" :Y2 : 2 ! p*[| >˧!" !ͣ2 " 8!" !" >:!Ͳ! ! " ~ w((( 2 : 2 * " * " !" " :Y2 (!" :jO! [ : w:jO* 6#6#6:jO>" D>82 !" r2 x2 " >2 S !" !" " : 2 >2 :Y2  ' (2Nwc~~>ͧs!6S!k"k!>6#= !">2 >2 >22 !" >2 >2  w : w((2 =K !: w!m ~ (ʛ 2 >2 >2 >2 !zS : ?820802͞~ w( nf }(~G Eگ6 "  *  >2 2 !" " : D ]B(@ !I109o&+ ~#fo(2 : (2 * *  !  !> `1E##F#o N1Yͤ >* } !j̈́G( : x: ˟>: ( : ʹ(>*W}ʤ(!m:Y> 2 !" !" !" >2 : 2  w : w((2 : ?2 !" : w#(w: ˟ >: G: *  O͒: 2Y!"WV!jˆ: ˟ *d"W: ˟2 ~ w(2 : ?2 !~#~: : (͖ ( [ z(S [ ͖ N˹  NFC kbNy(˹ ! RDM[ * R8 * " * (  (!N˹ K q#p#6* (!O˹ ˾('˾ =>w* R> " !!p Rؿ[ R>8(!" * >: [ * " !>^(˻]T>2 : 2 : G: s!" : G>!y : 2 ! ˆ: ! F(!>:͙8>2 >2 " 2 8! " !"  8206028209203]4*SPOOL.CON.INT.OBJOBJ{D820602820920DbD]SPOOL.CON.MAIN.OBJBJ8206028209203]4*SPOOL.CON.INT.OBJOBJ{D820602820920DbD]SPOOL.CON.MAIN.OBJBJ~(2 g* u" ͆V(: ˟ >Dͅ ? :͒!"WV!j: _:j(ˏ2j: * * #:Y0w>!R(!>2 D  : : =(2 : <2 : G:Y* x>2 !~(G: ##N#F* B >֧: =2  :Y: 2 >2 !" : 2 : : =2 ( : <2 : ɯ2j !S: 2 2Y* " " * "O * "Q * "S *W}(!m~2W #X OD!W c "  !ͤ(*]| *[|(K!"Wu=:jG * |(2(->8!Ͳ:  >ק>2 (!m (!m:Y(>ǧ: G: *  (͒: 2YO» >8!Ͳ“:Y2 * " ~ >ק!>ק* (* :  >Ч(͒*]*]}  l> e%  * *[" * c 4"]" * W N >:!Ͳ(*mW N* ͖ % *[" *mc :   >! ~(#˿_['### ק~#ͦͤ #[ +[dR0*dRT]>2 S ͣ *dR"d* " +"Wͤ(+* |( >:!Ͳ!W6T]> ͤ>82 *W#" ͑ͤ*W|("W" >82 f͌>էDr* " ͤ[W!R0+"Wͤ~*W* ͹SW(" !jͤ:jO> >62 D* ^#VS *[" * |* "W+"W͹[ *W"Wͤ!U[W*dR(#kb͞* 8*dR8 SW* U*d[W"WR>ɧUͤ!(V[Wz(kb͞* R8 "W* 3*WSW>է$ͤ*d"W͞!ͤ!"W͞" : ʹ(>>2 ͆(a*W} [dR" #ͣ "d"WSd"W><2 : 2 " !" * " :Y2 ! ~ z:Z~(!j*W|ͤ >8!Ͳ!"W R C~ > ~u 3*[}( :Y2 D *] !W ͖ > % ͖͊:Y* >Χ02>2 !   6!" j*   ͤ>8!Ͳ͆VͤM!j>8!Ͳ͆͒ͤͰ:jGˇ2j>42 :Y2 !" M(2 ͵*  ~ #~( (>2 * ~G>>2 x2 ͞G: 2 * |: 2 D* !W ͖ >: g ˾~2 #~2 #~2 #" : ĦG~A8 [8 a8{8>F((#~.( 08:8?(A8[8 _(a8{0ؿ: *02 >§: !> 2 >2 *( 2 >2 >2 >2 #N0# [kR "k*kB"kX!k[kR~s#r#^#&: o[kjB8>ͧ: : O* Sk: ʹ!+>2 >ʹ>G: _!p!= : W: !W/ww: ! #G7'm:j>:jw>:jo>K x!tB0 >2 tC [ ! >:j*820524820715**/LOGINRIO.INIT.OBJJBJ>!W ! W* R0>* ~*  B0K !lB0l!  *  !  >* | !>ͤ;!j>>2 *W[ *d"dͤ;" >:8LOGIN.CODE 820603 Copyright, Zilog Inc. 1980, 1981, 19822.".*. aʬ*".D #~= #".,-".!.*.~P #~W #~= #".,-".!.*.".,-".!.!.F*(*.~$,͎",i`ͦ/@,S!.N =Vk,!.ˎ˖!.+ !Y-!."[-".!F"]-Ž,ʌ/*]-}*-*.!~ (a( #!->!2-S/!.V .!. + !Y-!=/"[-".!F"]-͘,Ž,ʌ/$ [/*. ~ (a( #2-> */w>d2t-!s-~ +5,@,`,v,Â,>2-!-~ >2-w’,!-(* "*"!>F 2*820524820715**/LOGINRIO.INIT.OBJJBJ !" *"!Ò,!.$ Ò,7-(!/. $ Ò,!:.$ R!.F !M.+ 7-!^.$ 2!u.!$ '!.$ !.'$ *!.$ *>L>22)-nf"*-:g>(= (! nf"*-2)-! :)-=,2)-**-+"*- "Ww:)-<(-wz**-w>w W!)-4~(**-r#"*-ç,#~ a*.#".~ ( a(#y*.+  /d--* LOGIN.INIT;DO LOGIN.INIT;X 1904 *" *"! 8LOGIN.CODE 820603 Copyright, Zilog Inc. 1980, 1981, 19822/"/*/ aʵ*"/D #~= #"/ͣ-"/!/:/>D -*/~P #~W #~= #"/ͣ-"/!/*/"/ͣ-"/!/!/F*(*/~$a,͎m,i`c0‹,S:/(<2/>f2-!-~ ʀ,ʋ,,*[R,!l/"+ 2/!/N =V¶,!/ˎ˖!c.+ !-!/"-"/!F"--I0*-})+-*/!~ (a( #!->!2-SG0!/V .!r. + !-!/"-"/!F"---I0$ [G0*/ ~ (a( #2-> *G0w>d2-!-~ ,ʀ,ʋ,Account name: Password: Invalid device name not activeDevice is not readyThe Master device is not a Remote deviceMaximum number of users on systemUserid not specifiedLogin failed, device is write protectedLogin failed, try again!/:/(!/>I2!N(*R0*| * R8@// ʫ,,,>2".!!.~ >2".w -!;.(* "*"!>F 2!" *"! -!}.$ -ͮ-(!. $ -!.$ ~!/F !.+ ͮ-!.$ ^!.!$ S!.$ H!/(! / $ 3!-/($ )+!U/$ )+!/ + ͮ-!/ $ >L>22-nf"-:g>(= (! nf"-2-! :-=4-2-*-+"- "Ww:-<(-wz*-w>w W!-4~(*-r#"--#~ a*/#"/~ ( a(#y*/+  E0d-*820524820715**1LOGOUTIO.INIT.OBJJBJ..* LOGIN.INIT;DO LOGIN.INIT;X 1904 *" *"!Account name: Password: Invalid device name not activeDevice is not readyThe Master device is not a Remote deviceMaximum number of users on systemUserid not specifiedLogout failedUser is not logged-inLogout failed, device is write protectedLogin failed, try againLogout Successful - Please Login Logout from Successful*820524820715**1LOGOUTIO.INIT.OBJJBJ!0:0(!0>I2!N(*R0*| * R8@00 *820609820715*6 *3ACTIVATE.INIT.OBJJBJ*~ݾ8>}-4* MD!)) nfR(#!03))^V"'3!"#3"%3,]-:X0 >A+͇,(>A>#T]!~/(:(]( ,>AR }!Y0KV0 > > ![{!{R:"3OB0 ͬ/ͷ/>}-K#3q#p#K%3q#p#K'3x ͬ/ͷ/>}-q#p#6!3:"3O6#R"{!}4ͷ/!Y2>2Z2*'3"2ͷ/!Y2>2Z2['3Sy-*'322(((-(1(5(9(=!-2Invalid device filen*820609820715*6 *3ACTIVATE.INIT.OBJJBJame already activeInvalid address expressionDevice file not a RIO device subtypeActive Device Table fullDevice file has so specified entry pointRemote Device table full#~ a!Y2>2Z2>2f2!2"[2!t"]2!f2"d2:g2* >02g2((>*2g2!t"]2 ͷ/2c2>L:2(>P[2*2#R".3MDk#(>C2!Y2> 2Z2!"d2!2"43[2*43"43K]2y((>Lͷ/2c2:h2O!i2 +yG~<(>( ^( @(+ѧR#i2y2h2*2K.3*#>2Z2!"[2"]2"d2!Y2*">0260!(0~ w(!(0>*260~ w!<0&ACTIVATE 811012 copyright, Zilog, Inc.222!".3",3*,3 a($$ "2ͨ.",3!2"3ͨ.",3!2!2F >D}-*2#~](:()/(%<(>( ^(@(*2#g2!Y2}-3*2g2!Y2}- >}-$(>}-=2h2i2!j2O:h2!i2}-O 6 !i2+͎ >}-!2N(*3q!0>}-C'3!"#3"%35ͳ. *2"#3*2"%3*2"'3 / q/t+>L}-}->L}-:h22"3!i23O,D-/w}-:h22"3!i23O!i203i,(>}-!N Y>2h2!)3i2O> >02g2ͳ.( }->L}-!*2"*2" /( }->L}-!,*nf ~ 20!I0:0!0*LNST500LNST V0*COMPARE 820713 COPYRIGHT, ZILOG, INC. 1982!".կ2 .-a/>2.!. N Ha(B-0>2. 1 +->2`/20!".".!k#>G>J 2k#>E 8C.". ".>2.>2.!.".!".!`/".!.(K &!b/N# !.!c/:a/w#RDM$ k,b,:a/2.!~.$ k,b,:0>2.!/".!".!0".!.((!0N# !.!0:0w#RDM$ k,: .W(a2 .>02.*.".!t".!".>2.!.b,>2.*.".!.b,*.[.tͲ-k,!".: .˟2 .!".*.".*.".> 2.>2.!.*." .NIM2( Y>2.*.".*.".!.(b,*.[ .R(: .2 .C,S.*.[.K.x >Ͳ-( +!.>L͵>2 .>I2>2.>2.!".".".!.>2.*.K.!*#: .G( !.$ O!. $ C.S.+".: .2 .~!U. !|. *.[.R" .[.j"O"* .R"B.*.j"[.O"7ZN.*B.!B.*.[.R" .[/j"O"* .R"i.*.j"[.O"7Zu.*i.!i.: ._(!.N.!.u.!4.J$ *.#[.K.,-*.#".~ ( (a˯D#~=(+##~#˯Y : .2 .N*820609820715*&*1COMPAREE.INIT.OBJJBJ: .˗2 . D does not exist on drive File 1: Byte Record = File 2: Byte Record = Drive is not ReadyFiles are not the same sizeFiles compared and match exactly*820609820715*&*1COMPAREE.INIT.OBJJBJ*820609820818*d*f COPY.DISKINIT.OBJJBJ ~ (-ͳ-.!/}($*/"/:/G:/?2/~ (-ͳ-*dy¦+x¦+!/ $ [dK0ʊ-!/S/S/.}(@:/?2/!"/!"d*/B :/?2/! "/~ (-ͳ-.!/}($*/"/:/G:/?2/~ (-ͳ-K/!0J-y( *0#"0*dyc,xc,*0| } !/$ [0!/!/$ !0!0!j0~ !0~ >2!0!0>I>D#~ ( ;(](C0C0"/-*/K0K0~ !C/ > !P/2 !^/&*820609820818*d*f COPY.DISKINIT.OBJJBJ  !e/ !b/_!6/ + !9/ + ~ !u/!{/ + !.+ [/!.!.$ Z-!/&$ >Æ-The source diskette is not compatible with your system. Try FORMAT C=P, then use MOVE, but beware of DISK FULL ,lsn=  verification complete *****verification error(s) error on data transfersector addressseeklsndevice not readysourcedestinationready? verify passcopy passinvalid drive number (greater than 3). 0/ J/0/-copy.disk 820816, COPYRIGHT Zilog., Inc. 1982~ (];(Y] #_V 20D2V00m.2/͠-_Tœ-#~_Oœ-͠-2O00m.2/#~ ( ;( _V 20!/+ > !/ ":/_Y(>IÆ-!0~ A ! "" -!0-!00-!{.~ (+Æ-!.o+ ñ*>2d>2d!"/"/!"/"/!/-!/-!=0S/:/?2/-:/?2/!0~ #~ :d !"d!"0 !"d! "0:0Q,!/ $ [dK0ʊ-!/S/S/.}(@:/?2/!"/!"d*/B :/?2/! "/ Q0 0J0$0- 0/$FDM:1 $FDM:0 0w0$FFS 00'COPY 820416 COPYRIGHT, ZILOG, INC. 1982!"\0/>2 /! /,(,~a>D,:0>2 /,(,>290C/C /2/ a+˯A !"\0>290#U >!"\0O >R #~˯L F#~= @#q!8:C/T 0#~= *#~˯D >@2/A > B >P>H,>>D,!k#>G>J,k#>E,C.".>2 />2 /2/!/" /!" /!/"/! /(L+!/N# !.!/:/w#RDM$ ,,:/2.!.$ ,,::0!/!"/>2 /!/" /*\0" /!90"/:/ :/ >2/!//m*/| */| !"/! /!/(F */[/R( !.0$ +¦+!;0N# !.!<0::0w#RDM$ ,!"/:90E-^0*." /*." /> 2 />2 /! /( 92* /|(:1.:. 1>2 />2 /! / ( :wz,>( ! />L͵>I2>2 />2 /!" /" /"/! /:90 */[ /[/R0S/>2 />2 /!/" /!" /*.K.*#*/|z,*." /*." />2 />2 /! /(,[/*." /*.[/R,|%" /> 2 />2 /! /(,1.:.,* /*." /*/" />2 />2 /! /-.[ /*." /*/B */[ /[/R,, *820609820715**1COPY.DISKINIT.OBJJBJ   [/*/R8[/R8[ /ѧR," /ð,,2.*/[/RȧR8[ /R0[/" /[/j"O"R */"/|>2. does not exist on Drive is a Duplicate file on Drive Drive is not Ready ***** Warning: Record Length Change ***** *820609820715**1COPY.DISKINIT.OBJJBJ   :/o:/r1*/[/R( 0>290g,*/[ /Rw0*.[.RS1"1[/!"/*." /!" /> 2 />2 /! / >21~12* /|ʆ1!"/*1" /!" /> 2 />2 /! / >21~12* /|ʐ1>2 />2 /*." /! /~1 Á1å0*.[1K />2 />2 /*1" /*1" /! /~1Á1!1$ ,,>,:1B1:11INCOMPATIBLE FILETYPES*820609820715*o*-CRTDIRISKINIT.OBJJBJSubdirectory name: Invalid device name not activeDevice is not readyMaster device is not a shared data stationUser not logged inDisk is fullSubdirectory name too longDirectory creation failed due to error !O-:m-(!\->I2!N(*R0*| * R8@j-i- *820609820715*o*-CRTDIRISKINIT.OBJJBJ*820609820715**- DELDIRISKINIT.OBJJBJ#'(crtdir 810729 Copyright, Zilog Inc. 1980",կ2,*, as*",D #~= #",ͮ+",!,*,",ͮ+",!,!,F*(*,~$+͎"+`i"[(-@+!,N 1!,+ !+!,"+",!!"+Ÿ+-*+}ʤ++*,!~ ( a(#v+>!2+!+~ ʤ+(.(5(Q(XÎ+!*,$ ä+͹+(!=, $ ä+!H,$ d!,F ![, + ͹+!h,$ D!,$ 9!, $ .!,N $ !,$ !, !,)$ L{2#~ a*,#",~ ( a(#y*,+  l+ *820609820715**- DELDIRISKINIT.OBJJBJ#'+*820610820715*>*-!,"DATEIRISKINIT.OBJJBJ+!+%)(deldir 820412 Copyright, Zilog Inc. 1982"/-կ2.-*/- as*"/-D #~= #"1-+"/-!.-*/-"3-+"/-!.-!.-F*(*1-~$+͎'+`i"[p-F+!.-N 1!F,+ ! ,!5-" ,"3-!!",+V-*,}+%,*3-!~ ( a(#Ç+>!2%,!,~ +(3(;(W(^ʟ+þ+!Z,$ ++(!m, $ +!x,$ +!.-F !, + +!,$ n!,$ c!%,~#O+ !, $ M!.-N $ !,$ 5!, + !%,~#O+ !, $ !,- !-)$ L{2#~ a*1-#"1-~ ( a(#'DATE 810519 COPYRIGHT, ZILOG, INC. 1978>2',~a(] #!>2',!,!!,+dA+2,+ A+A+2,+ A+A+2 ,:,0 !,50 . "+*!,"+!+N#+ :',!!,~#0 >+>+'WW~#0 >+>+>:',!(,$ h+p+y++++++++++JanuaryFebruaryMarchAprilMayJuneJulyAugust SeptemberOctoberNovemberDecember , 19 ,++++, ,Monday, Tuesday, Wednesday, Thursday,y*1-+  n%,Subdirectory name: Invalid device name not activeDevice is not readyMaster device is not a shared data stationUser not logged in is not emptySubdirectory name too longSubdirectory not foundDirectory deletion failed due to error !-:-(!->I2!N(*R0*| * R8@--  Friday, Saturday, Sunday, Invalid date specified+*820610820715*>*-!,"DATEIRISKINIT.OBJJBJ+!+%)-*820610820715**-/.0 DEACTIVATENIT.OBJJBJ-/-37-*820610820715**-/.0 DEACTIVATENIT.OBJJBJ-/-371*820610820715*8*-526DEFINEVATENIT.OBJJBJ1519=(DEACTIVATE 810630 copyright, Zilog, Inc.2 a >D+$(>+#~, ~]( #>+> >+2,> ͎( A+>+C,R",*B >+*,^VnfNFC,R}(#KB*#*, >[,R*{R"{!}5! ѧR(MD*,!,>2,!K,>+V+^B !2,:,o&)MD! ! = ѯ2,>D2,!",",",!X+i`!N+K,*+B+*| *$$B8y*nfB(B<<))K 6#65~ :*|(3!+*nf*[R#KB*#!""!#>221*820610820715*8*-526DEFINEVATENIT.OBJJBJ1519=( ( (!9,!~,:,O+ !P, ![,#$ >2Invalid device filename not activeIllegal to Deactivate Master device (DEFINE 810514 COPYRIGHT ZILOG INC., 1981!" ," ,", *!, xx+!(",͜+ 2*,T]#~] ",R}!+.(>D2ɯ /n[,}2,!,+(2 * :,x+:,&o)DM! ! ~a>Dʵ~x+,(2ɧ  a!,6(;˯U(5I 6-A 6%O 6N #~a(˯F 6O 6>2 ,!" ," ,!,6",!,(>L͵:,2,<>2 ,>2,>Lĵ2,!" ," ,",o) ^#Vz>2 , 08:8 08:0)DM)) O ~0>B0CONINconinCONOUTconoutSYSLSTsy=DELETE 820610 COPYRIGHT, ZILOG, INC. 1978,1979,1980,1981,1982>L!2w622>*24!4"2"2>022!k#( x>J(Hk# A"5C5+ a+/1-+(#~˯D I-+D4>2)4!)4(2-4>264!64 !2:D4*+(22T \-+˯D 5>@22#~]+ʌ*#0 8 ˯8>H*G:222Ì*A > B >P>H*>P M-+&˯ #~] +x22Ì*L S R F >K2-Q #~= #~˯Yʌ*N Ì*[2~] S2+Ì*:2o !2"2#"2*26!2V(K>2slst)4>264>*2D4242E424>!C4w"44!4w"A4>2*4274!)4(>L͵-!64 >2*4>2C4>2)4!k4"+4!"-4!C4"44!)4!2F4 y2E4:22D4($ :2_ N:223!3$ ->L͵5!)-[2_/(I 2>722͵>2*4!"+4"-4"44!)4:2_( :2<228+:2 !3$ *5K5*##~]=  ]z #{ !2:2w#6/#Si3!m3 !2R"k34y24:224!2:2(N~-~S.>274>264>24!4"84!":4!4"A4:D424!64>274!"84":4"A42@4(B("!2[i3:@4 2RDM!2$ :E4O:4 G!F44A*820610820715* *5EBFDELETEVATENIT.OBJJBJAEA;?CGIM -1(!2F( :4go:2V( :2(N(!2:4v ( >I!2f(!x3[i3!2RDM$ Q!2Kk3+ !3 > "3 ~ ( !3$ } :3˯Y(NQ >IA !2>274!4"A4!64 Y>274!"A4!2 !3[i34 /!3[i3'!2RDM!2$ !64>2742A4>!3 !3[i3  80w"2S2 >I> 2*4*5"+4*5"-4!"44!)4*-4| :34[5"5*5[n4R"2*2[n4*5R :34w("2"2*2Kn4 [2R(Ny22˹p#>(T] p##:k4G(A*820610820715* *5EBFDELETEVATENIT.OBJJBJAEA;?CGIM#"2[2S2[2S2"2C2*2K2!225S5*2!T]/"27R/"5DM>* y1#T] *5#"5 0"27RMyF 0!2 7!54(F0(Vʥ0N(G*2E0:50*5}0*2K2 *2>*0K5 0+ 1[2+1*2K2/N˩y#C(+~˯D1#~˯A1#~˯T1#~˯E1!2#~> =  <1#~> = < #yC 2>~]>~*( 08:0 #~]>>D2~!2~!4v(!42 # O~08:0 (0 ^ <n f(C2!20##*2^VOR8 y0A 0 > w###+~ 60'd PDABWELSRF10*DIRECTORY *** Open Error DELETE  (Y/N/A/Q)? Deleted ***** Delete Error XX ***** ***** Unit is Write Protected *****Drive X is not ReadyNo Files Deleted ***Q*820610820715*p*+KRLDISPLAYATENIT.OBJJBJQKQO** File is Write or Erase Protected ***** DIRECTORY *DISPLAY 780629 COPYRIGHT, ZILOG, INC. 1978!*$ !"*~** "*!*###6.06A###!*2$ !H+($ XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Memory Allocation Map 0  400 800 C00 | | | | | | | | "." => Free "A" => AllocatedQ*820610820715*p*+KRLDISPLAYATENIT.OBJJBJQKQO Si820610820715idilWTXDOSPLAYATENIT.OBJJBJSWS[_U*820610820715**-YVZDUMPLAYATENIT.OBJJBJUYU]aSi820610820715idilWTXDOSPLAYATENIT.OBJJBJSWS[_U*820610820715**-YVZDUMPLAYATENIT.OBJJBJUYU]a DATE:77331.01!lBl(2"%l !"'l"-l>2l>2Al!Al"#l!5l"l! "l!li:5l >Hi[8lK6lziA!")l DM!dlk# l"+l "3l "'l*%l a(+DM*-l#"-l))[+lq#p#`i#~] T]BDMq#p*'l"l*)l"l!"#l> 2l!l( 2>2l*l"%l!"l"l"#l!l:2"lw(1 !l$ 2>L͵*'l|*)l DM*+l*#2*'lK%lx(~(> T] !"/l*3l~ 4k# MS1l#̈́k !k$ |(K-l7B8 !k$ kK+l)) ^#V#N#F*1l[ 8*/l#"/l[-l7R#8K/l C/l~ (#[ 'DUMP 820624 COPYRIGHT, ZILOG, INC. 1982!,.,·*!k#·*"-C2-*6-|(;| )} $>02,*-",*2-",!",",", 8o",>$2, )!",> 2,*2-",*-",*,| A:, 2>2,!",",",!,:w *8- a.**-K2-*#[-*-K,B+*-*,":-}<<<<G(2<-*:-| } }G}(!=-*:-| }(}G #6 #*:-+":-:<-<2<-6 #6 t-RDMT]#6*:<-O>>~˾0 8+6.+6*#6 #=-R,ʶ*"+!=-6 ,*4-+"4-|ʶ**,K-B"] x |j] */l| !k $ Y+"/l#|j|j*3l"l*'l*)l*3l*-l*+l!l2l!!˖"+l"-l"3l")l"'l!" lcj ]08:0)DM)) O Formal Parameter Format Error Parameter Expansion Error Unbalanced Conditional Expansion Command File not Found,(*:,ʶ*wʔ*>L͵ö*"-C-!-!,-S8->2,2-!,",!",!-",($ !,$ >I !,>L͵!"6-!"4-*8-ͮ,+"6-ͮ,S8-[6-R"4- ]08:0)DM)) O File not FoundDrive not Readycd820610820715dIdegdhECHOLAYATENIT.OBJJBJcgcke*820610820715*`*9ifjERRORAYATENIT.OBJJBJ eiemquyosw{cd820610820715dIdegdhECHOLAYATENIT.OBJJBJcgcke*820610820715*`*9ifjERRORAYATENIT.OBJJBJ eiemquyosw{(DATE 810513 COPYRIGHT, 1978, ZILOG, INC.~ #T]~# (; 7RDM$  (error 820618 Copyright, Zilog, Inc. 1982+X*(Q*Ͷ*. >(~ # > ͛*(#͛*(+7!77-~0*:A*Ga*g!C*> 2G*2H*2E*2F* * +#> !N*>a+>z+ˮN*!+> !N*[+*> (> (> (>;(~# !N*R > > W+> Z+#01 -02 -03 -04 .06 &.08 <.0B U.0D %r.10 .40 .41 .42 .43 .44 "/45 2/46 C/47 Y/48 q/49 /4A /4B '/4C /4D /4E ice or file is write or erase protected C4: Sector address error C5: Seek error C6: Data transfer error C7: File not found C9: End of file error CA: Pointer check error CB: File not open CC: Unit already active (open) CD: Assign buffer full CE: Invalid drive specification CF: Logical unit table full ( >16 open) D0: Duplicate file D1: Disk ID error D2: Invalid attributes D3: Disk is full D4: File not in proper directory record D5: Beginning of file error D6: File already open on another unit D7: Invalid rena04F  050 8051 ?Q052 +053 054 P080 181 2182 M183 f184 ~185 &1C1 1C2 1C3 /1C4 (2C5 A2C6 P2C7 h2C9 {2CA 2CB 2CC 2CD 2CE 2CF (3D0 93D1 L3D2 ^3D3 u3D4 (3D5 3D6 &3D7 #3D8 /4D9 B4DA ,[4E1 +4E5 +4E6 84E7 &5E8 ;5E9 U5EA .u5EB !5EC !5ED 95EF #6F2 A6F3 Q6F4 e6F5 !6F6 6F7 6F8 6F9 6FA %7FB 57FC I7FD /^7FE #7* - |7 7 701: Illegal process id 02: No buffers available 03: Nome to scratch file D8: File locked (attempt to change attributes) D9: Invalid open request DA: Insufficient memory for allocation maps E1: Attempt to STOP a non-existent process E5: Non-specific error detected on the PDC E6: Attempt to use a Z2 diskette on an incompatible PDC E7: Device unavailable for public use E8: Record already locked E9: File frozen by another user EA: Records after specified record are locked EB: Specified records not locked EC: Specified file is not frozen ED: Attempt to delete user  PCBs available 04: No network access 06: Message not found 08: Local processes only 0B: Freeze nested too deeply 0D: Illegal Generic PID registration 10: Message too long 40: Invalid drive name 41: Invalid or inactive device 42: Invalid unit 43: Memory protect violation 44: Missing or invalid operand(s) 45: System error 46: Illegal file name 47: Nonexistent command 48: Illegal file type 49: Program abort 4A: Insufficient memory 4B: Missing or invalid file properties 4C: I/O error (IY -> vector) 4D: Illegalwith delete directory request EF: File open for exclusive access F2: Invalid LSN F3: LSN not in file F4: Record number not in file F5: User Logical Unit Table full F6: LSN deallocation error F7: LSN allocation error F8: Invalid subdirectory type F9: Pathname syntax error FA: User not logged in to the device FB: User table full FC: Invalid Password FD: Directory not empty (Deletion not allowed) FE: Insufficient access permission Unknown completion code : Error code undefined ERROR [error_code | *] message type 4E: Illegal owner 4F: Invalid host number 50: Process id not found 51: Remote device not available (this is a time out condition) 52: Network Data Transfer Protocol failure 53: Device busy 54: Command Handler process table overflow (too many commands on a single line) 80: Operation complete 81: Directory format error 82: Scratch file created 83: File name truncated 84: Attribute list truncated 85: File is also open to another user C1: Invalid operation (request) C2: Device is not ready C3: Dev DESCRIPTION Prints the meaning of error_code when returned by RIO or a device as a completion code. If the optional argument is '*', all error code meanings are displayed. If the argument is omitted, this description of the "error" command is printed. EXAMPLE ERROR C4 prints 'C4: Sector address error' on the console display. }*820610820715**-~EXTRACTATENIT.OBJJBJ}}}*820610820715**-~EXTRACTATENIT.OBJJBJ}}D820610820715DDEFFTRACTATENIT.OBJJBJ*EXTRACT 780813 COPYRIGHT, ZILOG, INC. 1978+!+(2 >2+>!+w"+!,"+!t"+!+>2+!"+"+"+2+w>L !@+[,#+!V+[,#+!{+[,#+!O"-+:,2, .!+[,#+!+[,#+!+[,#+!+[,#+!"-+!1+K-+$ :,!0,"/+*/+^#V#N#F#x"/+!+#+ +###+!+ $ z #{ Record count = Record length = No. of bytes in last record = Entry point = Low address = High address = Stack size = Segments:  D820610820715DDEFFTRACTATENIT.OBJJBJ/getime 810519 Copyright, Zilog, Inc., 1980,1981"+~#(,;(( ($] #˯DJ+#>=J+#>$J+"+2+!+:+(N+!,: ,Q+,!C, !B, !@, !?, !=, !<, :, :,(!+!+F,!O, !N, !M, !L, !K, !J, Q,w &!,+$ *.K.+ *.K.+ !8. $ {2!+*+D_ !a+($ Device does not support time operations.ampm+0+!DD z,At the tone the time will be ::  !J, ~]( #y(S- a(.!.b-dS-2.b- S-S-2.b- S-S-2.:.0 !.50 . "9.*."?.!8.N#!..}2!. $ !D~#0 }-'WW~#0 }->|M!0gi|M!jR?0jZ8(gi-----.. ...&./.JanuaryFebruaryMarchApril*820610820715**/GETIMETATENIT.OBJJBJMayJuneJulyAugust SeptemberOctoberNovemberDecember , 19 .O.X.b.n.y..Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, Time and Date not currently set.*820610820715**/GETIMETATENIT.OBJJBJ*820610820715*!*cHELPMETATENIT.OBJJBJ*820610820715*!*cHELPMETATENIT.OBJJBJc/. ::cH( ( !0;"cR+!;"cR+P.!;"cR+~0O.:I.AO.GG.<7!8co:8c2D=!\;"cA*͔*!="cA*.0HELP.DAT. . K ASCII 4CHAR 4ACTIVATE 4A 4AL  4ALL 4ALLO 4ALLOC 4ALLOCA 4ALLOCAT 4ALLOCATE 4B 4BR 4BRI 4BRIE 4BRIEF 4CAT 4C 4CL 4CLO 4CLOS 4CLOSE 4COMPARE 4C'HELP 820713 Copyright, Zilog, Inc. 1982"c͔*!."cA*>2*c~2c#"cv**c( *c&##*c&^#VbkSc^#V*c>z(!8c:c(  #>2c!8c"c>2c*c~ ( *>2c**c#"c:c<2cP !8c+*c:c(~ ( ( (;( [c#>2c> [c>2c~ + +#"c!8c"c>2c?+*c ˮ#"c:c<2cP *c~aQ+{P+<*c^#VSo.#^#VSm.!k.!v.:. *>02.!.:.( >*2.!.:.w(2!.:.(2!".!.:. >26c (2ͩ+*[K[> (a:5c >25c*1cOPY 4COPY.DISK 4CRTDIR w=DATE 4DEACTIVATE 4DEA 4DEAL 4DEALL 4DEALLO 4DEALLOC 4DEALLOCA 4DEALLOCAT 4DEALLOCATE 4DEFINE 4DELDIR o=DELETE 5DISPLAY 5DO 5DUMP  #5ECHO +5ERROR 35EXTRACT 55F =5FO =5FOR =5FORC =5FORCE =5FORMAT E5GETIME =IMAGE M5I U5IN U5INI U5INIT U5INITI U5INITIA U5INITIAL [3c:K D!K[/c#~( > ߹ %> (!> ߹ S3c[/cR"1c>25c<C["[>26c25cm+ &ͻ+ !!K"[K.C[+(:6c >2>27cC/c*["[[S-c+ >27c*[:7c,[/cR!KR,!K[[RDM> (/*[[-cS-c:7c(ͻ+ !K"[K.C[!K"[*-c[Sm.R"o.!k.ͩ+*c~2.#~2.#K C/c^, ͒, -!8c"c>2c*!5"cA*!;"cR+*c"cÏ-!;6"cR+*c~28cP.!8cͱ-2;ͱ-2;!;"cR+>o0:-͔*!;"cA*:9cH( *8c"9c>028c:;c ):8c8.*8c";!8c/. !9  U5INITIALI U5INITIALIZ U5INITIALIZE U5LADT ]5LOGIN G=LOGOUT O=MASTER e5MOVE m5NAME 5PAUSE u5PRINT }5PROTECT =R 5RE 5REL 5RELE 5RELEA 5RELEAS 5RELEASE 5RENAME 5RESTORE_TABS5SAVE_TABS 5SET 5SETIME =SETCD g=SETPW W=SETUD _=STATUS 5V 5VE 5VER 5VERB 5VERBO 5VERBOS 5VERBOSE 5WHO =X  5C \ 6C l 7C | 0D 1D 2D - 3D = 4D M 5D ] 6D m 7D } 0E 1E 2E . 3E > 4E N 5E ^ 6E n 7E ~ 0F 1F 2F / 3F ? 4F O 5F _ 6F o 7F  ;;ASCII Hex H *6 &;z.;1-040450-(4;Input error: Invalid hexadecimal number ;;;;;;;;; ; < < < << <&<,<2<8<><D<J<P<V<\<b<h<n<t<z<< < '' 1-0501001-0501101-0501201-0501301-0501401-0501501-0501801-0501901-0502101-0502201-050250ERROR [error_code|*] Prints the meaning of error_code or all possible error code meanings(*) 016z6r--1-040440R+%6Input error: Invalid ASCII character ?600 10 20 30 0 40 @ 50 P 60 ` 70 p 01 11 21 ! 31 1 41 A 51 Q 61 a 71 q 02 12 22 " 32 2 42 B 52 R 62 b 72 r 03 13 23 # 33 3 43 C 53 S 63 c 73 s 04 14 24 $ 34 4 44 D 54 T 64 d 74 t 05 15 25 % 35 5 45 E 55 U 65 e 7^?02d?03j?04p?06v?08|?0B?0D?10?40?41?42?43?44?45?46?47?48?49?4A?4B?4C?4D?4E?4F?50?51?52@53@54 @80@81@82@83$@84*@850@C16@C2<@C3B@C4H@C5N@C6T@C7Z@C9`@CAf@CBl@CCr@CDx@CE~@CF@D0@D1@D2@D3@D4@D5@D6@D7@D8@D9@DA@E1@E5@E6@E7@E8@E9@EA@EB@EC@EDAEFAF2AF3AF4AF5 AF6&AF7,AF82AF98AFA>AFBDAFCJAFDPAFEVA* \A bAzhAR+nAR+AR+AR+AR+AR+AR+AR+%BR+;BR+PBR+gBR+BR+BR+"BR+BR+BR+BR+CR++CR+=CR+'UCR+|CR+CR+CR+CR+!CR+?C5 u 06 16 26 & 36 6 46 F 56 V 66 f 76 v 07 17 27 ' 37 7 47 G 57 W 67 g 77 w 08 18 28 ( 38 8 48 H 58 X 68 h 78 x 09 19  29 ) 39 9 49 I 59 Y 69 i 79 y 0A 1A 2A * 3A : 4A J 5A Z 6A j 7A z 0B 1B 2B + 3B ; 4B K 5B [ 6B k 7B { 0C 1C 2C , 3C < 4C L R+# vector) 4D: Illegal message type 4E: Illegal owner 4F: Invalid host number 50: Process Identifier not found 51:A: Insufficient memory for allocation maps E1: Attempt to STOP a non-existent process E5: Non-specific error detected on the PDC E6: Attempt to use a Z2 diskette on an incompatible PDC E7: Device unavailable for public use E8: Record already locked E9: File frozen by another user EA: Records after specified record are locked EB: Specified records are not locked EC: Specified file is not frozen ED: Attempt to delete user with delete directory request EF: File open for exclusive access F2: Invalid LSN F3: LSN Remote Device not available (this is a time out condition) 52: Data Transfer Protocol failure 53: Device busy 54: Command Handler process table overflow (too many commands on a single line) 80: Operation complete 81: Directory format error 82: Scratch file created 83: File name truncated 84: Attribute list truncated 85: File is also open to another user C1: Invalid operation (request) C2: Device is not ready C3: Device or file is write or erase protected C4: Sector address error C5: Seek error C6: Data tra not in file F4: Record number not in file F5: User Logical Unit Table full F6: LSN deallocation error F7: LSN allocation error F8: Invalid subdirectory type F9: Pathname syntax error FA: User not logged in to the device FB: User table full FC: Invalid password FD: Directory not empty (Deletion not allowed) FE: Insufficient access permission There is no HELP ERROR for that. Try 'HELP ERROR' or 'HELP ERROR *'. ^^^^^nsfer error C7: File not found C9: End of file error CA: Pointer check error CB: File not open CC: Unit already active (open) CD: Assign buffer full CE: Invalid drive specification CF: Logical unit table full ( >16 open) D0: Duplicate file D1: Disk ID error D2: Invalid attributes D3: Disk is full D4: File not in proper directory record D5: Beginning of file error D6: File already open on another unit D7: Invalid rename to scratch file D8: File locked (attempt to change attributes) D9: Invalid open request D *820610820715**-IMAGEETATENIT.OBJJBJ*820610820715*<*-LADTEETATENIT.OBJJBJ*820610820715**-IMAGEETATENIT.OBJJBJ*820610820715*<*-LADTEETATENIT.OBJJBJ(IMAGE 820618 COPYRIGHT, ZILOG, INC. 1982_,!+(2 S+!"+!"+"Z,+"X,!"\,!,"+2+*+q!8G[+q#p*X,B8CX,q!z+PY"+*+N#F#B0>Dþ+#s#r#"+!+4~ z+(t*+ ˯E #~=z+#q!z+C+ "+k*R+#~˯Lz+#~=z+#q!8C+ "+k*S n#~˯T f#~= `#q!8ZC\, "+k**+w#w#w#w!+"+!"+!^,"+:_,* >02_,>2+>2^,/2+2+¾+>2+:+ >D@!,"+!"+G*++"+ *++[++*++*Z,R0SZ,ί>2+!+"+!t"+2'LADT: 811002 COPYRIGHT, ZILOG, INC 1978!"Q,[{"S,!_,~$ *Q,[S,R@,*Q,^#V#^#V+ + >2\,#^#VSW,##,~< #"Q,+!-:\, !-! -!-"U,!^#V#*W,R .>[U,!,-R !,O$ @,!-"U,>+#"U, [U,!-R :, @*,RDM$ @*{z!Nʿ+*^VS],*W,Rڿ+~2[, "Y,''o&[W,Rڿ+*],R(  R(8o!!*Y, #~+V#^#^#V!2-,!-! -z #> w#{ 2\,:\, !8-,>2\,!,-,>2\,CO,!6,0##*O,^VOR8 y0A 0 > w###+~ 60'd > !,,Nw Device Device Entry Module/Net Mapped Name Type Point Address Units Local RemoteProm*820610820715*'*+MASTERTATENIT.OBJJBJ*820610820715**lMMOVEERTATENIT.OBJJBJ*820610820715*'*+MASTERTATENIT.OBJJBJ*820610820715**lMMOVEERTATENIT.OBJJBJ)MASTER 820212, Copyright ZILOG, Inc. 1982 a ;!K{>(>E2ɯ #*~< !+!*RDM$ $( !*$ ͎( !*$ [CC!>nfR qp##= Invalid Device file nameDevice not Active is the Master Device  'MOVE 820525 COPYRIGHT, ZILOG, INC. 1982>!=ww2 =>2>D!"="="="!=!cH"="=!k# i"cM!k#>8 G>J(Fk# ?"eMC)=+ aʔ,C;/+(#~˯D 70/x, F>2$D!$D(2/: F*($/>@+!=+S @0/x,tE>2$D!$D :tE*($/>@+!DD !=+Û*T \0/x,˯D 5>@2 =#~]+ʛ*+0 8 ˯8>H*G: =2 =Û*A > B >P>H*>P U0/x,&˯ #~] +x2 =Û*W E L S R >K2/F #0/x,˯S D K#ECEKD2I=>2%D>2 F>2$D!E"&D!"(D! F"/D!DEt:uE2 FO!vE F!$D(T !B$ 4>I !MC6$ !4 *E[ER( !C4$ J!C !C4$ 4!"/D:I= ,:D %>2I=:E2K=( !>>͟6!EUF*eM"&D*)="(D> 2%D>2$D!$D2(O(!B !B/$ *!=#"!=*(D[ER[ E[E|g}o *E* E| !"E|(>>2%D>2$D*(D"G=!$D(́4!,C !C5$ *!=#"!=:w 3:I=($:"E :EO!'?>LD+Û*Q "0/(\˯N Û*Y(>D+Û*L ;0/(6D!>D>2>D+:D*($/>@ +!=ʛ*+Û*[=~] S=+Û*F : =2 =>2?D:>D,!cI"-=>2?D>2D!D"@D!"BD!D"ID!>D>2?D(>L͵.:=g !M="=#"=>2%D!$D!"&D"(D"D"D:=w(:>2$D>02tE2D2uE2D!sE"/D>w!D""Dw(>L͵e.!D EB>ͣ<:tE>/!DBR}:=(r>2$D>*2 F! F"/D>w!$D!P= F y2 F(>L͵e.>2%D>2 F >2iB: F2jB>/2kB>2%D : F!tE !B$ >I>jBͣ<: F>/!iBR}!E:KF(!/F>2RF![H>2$D>2%D!"&D"(D"/D!$D>2$D"&D!t"(D:I=(-:EG:K=( !;?)͟6>2$D>2%D!"&D!$D9!C >:KFr6!?@8 (6˯Y`5N(+Q >,22D>21DC3D!1D>22D!1DA5>,22D>21DC3D!1D>22D!1D!*@I8 (˯Y( N(Q (>22D>21D!1D>22D>21D!1DN2>22D>21D!1D>21D>I7!D/F>2/F>2KFC9F>2RF*E"SF!CF!LF_w##>21D>22D!/F"3D!&"5D!"21D>22D!1D*=6>2D>2D!D"D!"D!D""D!P=D y2D!D( !B$ !KC !6C$  !K/[=j9 2>2D!"D"D""D!D:=W(/K=>!>L!$>L!7>L<U! >8*=| !C$ K!=x(>!`>L&8:>D()! =8!>D̓8(2>2?D!"@D"BD"ID*cM*#*eMK)=*#0040#~]=  ]z #{ !KD6 T]K!LD!LDvEy2uE!DB1AN#!LD!2B!iBN#!LD!6B !,AR"BB>2KF >I!=: =(N!=:= ~ FĪ8(ؿ>2%D>2$D>2sE!D"&D!t">22D!KF4!"3D"5D! F"21D>22D!D"3D!"5D!"21D>22D!/F"3D!&"5D!"L,22D>21DC3D!1D>22D>21D!1DA5>22D>21D!1D>2%D>2$D>2sE!D"&D!t"(D!sE"/D!$D(V((!> !>'$ ò6!>%!s@9ø6!>>21D>22D!"3D!1D!d?B:J=W:E (q!UF!E~ݾ ##:E>21D> 22D![F"3D!"5D!" >21D>22D!"3D!1D(D!sE"/D!$D(r(- !B$ >I!BvD:.D *!=#"!=0:DO:uE G!DvE S04:>D(:uEO:D G!vED w04![H! E;4!=F(!:Dgo: =4V( : =4:EN(! =n 4!=F(N ͪ8(4ؿ!=^ !q=V !Z=8(4:uE8!KD 8!LD6  T]:tE!_D͞8:.Dw52!KD:=W;2!dD:D:=8 :D  w:D(#͞8vD:E!?='0O~y# KE>!hDL5H7UF!E"@D CBD6 !>D:>D(T*@D"/=*BD"1=K1=x!cM[-=RT]B8!"1= `iR"1=BK*/=[-="/="-=cMR ̓8!cI"@D[-=R"BD!cI"-= 80w!=!,AKBB82/B ("˯Y(N8Q >I7A !=ɧ+ "(![F~ ( #>Q>2D>2D!D"D!"D!D""D!D %:L=O!!CD>$2D!""D!D!KC !6C$ A5"#=S%=>2L= >I> 2D*cM"D!"D!""D!D!L=4*D| :!D[cM"'=*cM[DR"+=*+=[D*'=R :!Dw("+="3=*+=KD [3=R(Ny2 =˹p#>(T] p##:DG(#"3=[%=S5=[=S="7=C9=*7=K9=!=2gMSjM*5=!T]9"5=7R9"hMDM>* y.;#T] *jM#"jM :"=7RMyF 1:!= 7!gM4(F1:(Vʹ:N(G*=Y::gM1:*jM}1:*7=K9= *%=>*1:KhM 1:+ #;[#=?;*7=K9=9N˩y#C(+~˯D;#~˯A;#~˯T;#~˯E;!=#~> =  <;#~> = < #yC =>~]>~*( 08:0 #~]>>D2~ile be continued on another disk (Y/N/Q)? To start file on another disk, Insert disk in drive, type CR when Ready: Please insert disk in drive, type CR when Ready (Y/N/Q)? Disk is full again, Insert next disk in drive, type CR when Ready: Are you sure you want to leave this file half written (Y/N)? MOVE !=~!Ev(! E= # O~08:0 (0 ^ <n f(C=!<0##*=^VOR8 y0A 0 > w###+~ 60'd !O ^#V!:}GN#fiR## >$~(>##>:>>@!":˟2>B!&cIPDABWELSRF10*DIRECTORY Filename Drive File Record Record File Starting Date of Date of Filename Drive type count length props address creation  to (Y/N/A/Q)? *** Open Error Source Device not ReadyDestination Device not Ready ***** Source file read Error ***** ***** Destination file write Error *****DIRECTORY Open Error ***** Destination file write protected ***** ***** Destination file open Error *****No Files Moved ***** Warning: Record Length Changed *****z last mod. Files examined Files copied Total data records for copied files Total errors during file copies File parts are Out of OrderError occured reading next file partNext file part not found on this diskError occured reading descriptor of continued filePart of this file readFile moved, Reload original disk in driveThis disk contains part of another continued file of the same nameInsert disk containing part of file, Type CR when Ready (Y/N/Q)? Disk is full, Should f  D DIRECTORY >2z+>02{+!m+~ w(>*2{+!m+~ w!+~ 2+!+:+>2z+!m+~ *820610820715**1NAMEERTATENIT.OBJJBJ!+~ 2+!+:+`*-`* Name: Address: Network: , Host: , Object: LNST empty.((z/>:+ >A+͸/ bk>+/(!+K+ ,DMB".i/:.*.OB=/>J:.O>:.O*+ "+:+<2+~](# y2.+͸/(.~(# # !,RDM*+B"+:+=2+.+K+S.C.#T]!~/(:(]( />AR }*.K. >*820610820715**1NAMEERTATENIT.OBJJBJ > *. ~a&1$A0_Nw0Rʆ0H1O1>D..#~]($ >!(~/(:(@(^(>(<(#> 021^12W.͕1021~_L >3I >+D >#G >C >R > U >>0202).͕1021~_L( G>0>2'.͕1021~_T( P>0>2(.͕1021͋1SY.͕1021^12X.͕10:0>0>#~](= #>0~08:00_A8G07>B1("20#B1(:0''''20!0>0^1W#^1_~]#.NAME 810908, Copyright, Zilog, Inc., 1980,1981".".2W.>2X.!"Y.0`*ͬ- :'. g*2*.:).*++W+ʈ*>`*:+*O+!. !. og!.!d.(w#![.[$ e.> !d.w! (Ô*>`*!. $ W.!..~ .>..>!....>*.!...`*:*.!. :+.!. [,.!.!.#$ >`*!-.͸/`*!W.>. z+*LNST +  +*820610820715**+PRINTRTATENIT.OBJJBJ*820610820715**+PRINTRTATENIT.OBJJBJ*820610820715**+PAUSERTATENIT.OBJJBJ(PRINT 790419 COPYRIGHT, ZILOG, INC. 1979!"+* a 2*+|>K+ !++ "( >2+>2+!+"+!"+!+!+"+:+w"+:+ (>H"+*+K+| +! x >J_G <*"+C+"+C+(K> 2+>2+!+:+w( $*+|((>2+>2+:+(:+w(2(,H(3>2+>2+!"+"+"+!+:w?*0*!k+$ !y+$ File not FoundFile not an ASCII file'PAUSE 781102 COPYRIGHT ZILOG, INC. 1978!b*!m*F˖!n*!y*6~!m*p!n** 6 @m*Bm* **820610820715**+PAUSERTATENIT.OBJJBJ   *820610820715**-  PROTECTATENIT.OBJJBJ    *820610820715*Z*- RENAMETATENIT.OBJJBJ   *820610820715**-  PROTECTATENIT.OBJJBJ    *820610820715*Z*- RENAMETATENIT.OBJJBJ  +protect 810421, Copyright, Zilog Inc., 1980"-g, ~ ʼ++(:f,dʼ+<2f,}|^,:f,ʼ+ ~ *˯O -+P -+G¼+#~˯A *#~˯F¼+#~=¼+#~˯R >A¼+2-^,-+!g,:f,ʱ+~2A-#~2B-!?-#~ w+!/-~ wO+!-~ w^+!-:f,=2f,*!m+ !m++ og~]( #$ +!+ !+!+ !+ Error on assign of Error on open of Error on protection of {2*-D~˯W "#~˯I #~˯T #~˯H #~] ѯ>P,~]˯R *rename 810602 Copyright, Zilog, Inc., 1982~ ʕ+;ʕ+] #$ +2-!+"+ͳ+~](#~ ʕ+;ʕ+] #Aڕ+>2 ,!F,ͳ+a,~]( #:- Gy2`,!S,ͳ+!,:- '! ,: ,O+ !T-+ !a,:`,O$ ~ ( ;( ]G*#!,>2"-"+!+~ w o͚+#~ ʏ+;ʏ+](#~ ʕ+;ʕ+] #_I+#~_D+##~'+#,~'( ( % #~#: ,02,!,͚+**-*>D+ͳ+~ ~ !,+~ (#2-(!((_!- : ,2-!-$ ! -$ !?-$ #W #E #N(ü+#~˯R >#+W >#+E >#+~]=(##~]#<-*L-*B- ,  ,*`, B,, -I/O Error on Drive Destination file already existsSource file not found ---> *820610820715*_*- RESTORE_TABST.OBJJBJ!*820610820715*_*- RESTORE_TABST.OBJJBJ!*820610820715**)-# $ SAVE_TABSABST.OBJJBJ#'/RESTORE_TABS 810515 COPYRIGHT, ZILOG, INC. 1978*~] #a >D2>2,+>@2-+!_+".+!"0+!"4+"2+"7+!,+:6+2w>2-+>2,+29+*".+!9+"7+!,+:6+2w>2-+>29+>2;+!".+"0+:6+2w > 2-+!d+".+!"0+:6+2>2-+>2,+!".+"0+"7+:w>2,+>B2-+!_+".+!"0+!"4+"2+"7+:6+2  *820610820715**)-# $ SAVE_TABSABST.OBJJBJ#'0SET 810728 Copyright, Zilog, Inc. 1979,1980,1981կ2X* aP*T]#~a >D2X*:X*o (= #"s/R}!{/  /^#V*s/~2#5*~2`#5*~2#5*{.K*}25*{.K*}25*\.K*2@2>( <2@2͠.K*:@2( ?2@2a.K*G ~#] ;+"s/x2q/,.M*:q/2I1U.M**A2:@2 *s/5* "A2>)K*1 0 * ˯W E L S *Rz+*FK**\.K*͠.K*a.K* ˯#"s/D $>@2q/,.M*:q/G:B12B1U.M**s/5*A > B >P>HM*>\.K*͠.K*a.K*q!K*"s/y,SAVE_TABS 810515 COPYRIGHT, ZILOG, INC. 1978*~] #a >D2>2*>@2*!)+"*!"*!"+"*"+!*:+2w>2*>2*2+*"*!+"+!*:+2w>2*>2+>2+!"*"*:+2w >2*!.+"*!"*:+2>2*>2*!"*"*"+2q/,.M*:q/G:B12B1U.M**s/5*\.K*͠.K*a.K*q!K*"s/Cq/,.M**q/"1U.M**s/5*\.K*͠.K*a.K*q!K*"s/Cq/,.M**q/"1U.M**s/5*\.K*͠.K*a.K*q!K*"s/Cq/,.M**q/"1U.M**s/5*\.K*͠.K*a.K*q!K*"s/Cq/,.M**q/"J1U.M**s/5*\.K*͠.K*a.K*q!K*"s/Cq/,.M**q/"L1U.M**s/5*-/M*ͨ-K*!1(ˎK/M*5*-/M*ͨ-K*!1(˖-/!1M*͟--/!1˾M*͟-#~]  ~˯O(7#~˯N #~] F #~˯F #~] ڧ{.K*|K*Sq/DM!BK*-/M*!+*820610820715*C*3/,0SETE_TABSABST.OBJJBJ+/+%)-1311w@2!1> R0wK/M**q/5*>2 1>! 12e/>2d/"o/!B1"f/!t"h/!d/>!u/x/ ˯k. a08:0)DM)) O 1>2d/!d/{.K*. >G~#>~5*K*!.~ #~ #####>Kn̖̆`,@X ̰` ̀%KL,L!d/>2d/>@2e/!"h/!1"f/!d/>B2e/!"h/!1"f/OF TO CHRDEL=chrdel=*ESCCHR=escchr=*LINDEL=lindel=*NULLCT=nullct=*LFCNT=lfcnt=*AUTOLF autolf <-ECHO echo `-HALF +*820610820715*C*3/,0SETE_TABSABST.OBJJBJ+/+%)-13 half {-FULL full -TABSIZE=tabsize=-SPEED=speed=.PROPERTIES properties *SUBTYPE subtype +TYPE type +STACK_SIZE stack_size $,LOW_ADDRESS low_address \,HIGH_ADDRESS high_address ,ENTRY_POINT entry_point ,BYTE_COUNT byte_count -'setcd 820412 Copyright, Zilog Inc. 1982"u-կ2t-*u- ar*"u-D #~= #"w-2,"u-!t-*u-"y-2,"u-!t-!t-F*(*w-~$+͎(+`i"!t-N +!,+ !_,!{-"a,"y-!3"c,ª+*c,}ʯ+y,*y-3~ ( a(#|+>( <( ^(>>>32y,!l,~ ʯ+(2(9(U(\({ß+!,$ ï+=,(!, $ ï+!,$ i!t-F !, + =,!, $ I! -$ >!-$ 3!t-N $ !.-$ !?-$ !R-"$ Lͼ+{2!+:+w!++ !,$ @,"+Current Directory: 7*820610820715**-;8<SETCDTABSABST.OBJJBJ7;759#~ a*w-#"w-~ ( a(#y*w-+  py,Directory pathname: Invalid device name not activeDevice is not readyMaster device is not a sdmUser not logged inInvalid pathnamePathname too longDirectory not foundCurrent directory remains the same7*820610820715**-;8<SETCDTABSABST.OBJJBJ7;759  =*820610820715**/A>BSETPWEABSABST.OBJJBJ=A=EI?=*820610820715**/A>BSETPWEABSABST.OBJJBJ=A=EI?C810515820309GDHPD.VARIABLES.OBJ.CMDCGCK'setpw 810420 Copyright, Zilog Inc. 1980"-կ2-*- aa*"-D+#~=+#"-ͱ+"-!-!-F*(*-~$!+͎-+`i"!,+ !-+ʌ+,S.( !-OS.!,+ !-+ʌ+!,!+ !.+ʌ+-!. (#! -C$ ê*[.y(!-!,~ ʧ+(-(4(P(Wv!P-$ ç+ͼ+(!c- $ ç+!n-$ \!-F !- + ͼ+!- $ (= (! nf",2,! :,=",2,*,+", "Ww:,<(m,wz*,w>w W!,4~(*,r#", , .t,Current password: New password: Type in the new password again: The two new passwords entered were not the same. Please try again.Invalid device name not activeDevice is not readyMaster device is not a sdmUser not logged inIncorrect passwordInvalid operandPassword too longPassword remains the same PD rev 1.03 datecode 820723 Copyright 1981, Zilog Inc.@ߋ~fnFN!H( (i(e(+('(D(('>x(~# >(> >w rs:ߧ(!8!~ 222x(~# ( 8W>ݾz(4 (2 ( ( (T (:ߧ> > >(> >(>I߯22>!~ >ݾ > 4^!R0>w ˇ>>>>M800704820309QNRLP_MAKEOBJERFACE.MACROS.SJMDMQMUOSW 66~2!9!2q!"!"ٯ2>ٯ2?ٯ2@ٯ2Aٯ2B!9:7@w! ͕y›گ2Û! ͕y›!4:O:;ٹ 2!9:٧±6 N͕y&!42ٯ2:7!2y2&: N>I2&:7! ͕&:O::ٹ(&:7&N!9:٧°~Õ:O:9ٹ(\:7V! ͞!4V:O:9ٹ(:7V! ͞!4!C:o&~V!°! ~#fo c@:٧>2:2:8!Fw:٧! ͕!5:O:9ٹ(:7V! ͞~M800704820309QNRLP_MAKEOBJERFACE.MACROS.SJMDMQMUOSW D:O:9ٹ(':7V! ͞گw! ͕!4!C:o&~V~VN͕!4!9:Hs:7ʣ**٧Ry*N͕*#"*#"**٧R::٧y*~2*#"*#":b*#"*!R:o&"*!R-:o&e.!N#F+ s#rã*}Jݯ2yb:*w*#"*+"ã:>2!7"!"ã:O͞:: £:£Nã:7 ʣ:٧ʣ!͕!5!5ã!! ~#fo ݢkh:O+ã"0*0F~ f n| fn!9nf~ w!9>>>>{??26!9{!9~!9!9!9>!9> > wˇ{!)Q?BN@>ً!9:6:6   !9nf#~2nf##^#V"nf^#V"!">2>nf w:}[:nf w*nf s#r:727UͨNy y>nf w:6nf##^#Vw!nf s#r*! R! ":0!7"nf##^#V"$nf##^#V"!7"*}Bnf q*~*w*#"*#"*+"ͨͶnf q! ³! ~#foD0.@HggaaްvQQQ>nf wY %821008821018]Z^ NOTE.TO.USERT.OBJJBJyY]Yaegkoimquy}sw{   OSUY]W[_cgkaeimoswqu{[820417820309_\`SPD.SAVE.CMDDCMDS[_[cY %821008821018]Z^ NOTE.TO.USERT.OBJJBJyY]Yaegkoimquy}sw{   OSUY]W[_cgkaeimoswqu{[820417820309_\`SPD.SAVE.CMDDCMDS[_[c Zilog MCZ-2 RIO Version 4 Release Memo RIO Release 4.2 03-0159-02  13 October 1982 This document describes the differences between RIO Release 4.0, Release 4.1 and Release 4.2. Users familiar with RIO !E2 SPD Rev. 1.03 datecode 820905Copyright 1982, Zilog Inc. @ދ~fnFN!H( (W(S(&("(D((">x(~# > >w rsͯ:ާ!~ ͧx(~# ( 8W>ݾz(4 (2 ( ( (B (:ާ> (> >I(ͧ>(!~>ݾ> 4^!R0ٯ22>Ӑ>GӐ>Ӑ! ۆG( ۄۆW(ӄۆG(ۄLVersion 4 should skip directly to Section 2 for update information. Where differences exist between operations described in this document and elsewhere, the descriptions herein supercede all others. TABLE OF CONTENTS SECTION 1: INTRODUCTION 1.1 Scope of the Document . . . . . . . . . . . . 1-1 1.2 Overview of RIO 4.2 . . . . . . . . . . . . . 1-2 1.3 The System Releases . . . . . . . . . . . . . 1-3 SECTION 2: INSTALLING YOUR RIO 4.2 SYSTEM  2.1 Installing RIO 4.2 From Cartridge . . . . . . 2-1 2.2 Verifying That RIO 4.2 Is Up and Running . . 2-2 2.2.1 Some Examples of RIO Commands  3.3.6 RIO Console Driver - $CON . . . . . . 3-5 3.3.7 LOGIN.INIT Facility . . . . . . . . . 3-6 3.3.8 MOVE Command . . . . . . . . . . . . . 3-6 3.3.9 Boot Procedure . . . . . . . . . . . . 3-7 3.3.10 ERROR Command . . . . . . . . . . . . 3-7 3.3.11 STOP Command . . . . . . . . . . . . . 3-8 3.3.12 Spooler/Despo Under FFS . . . . . . . . . . . . . . 2-2 2.2.2 Some Examples of RIO Commands Under SDM . . . . . . . . . . . . . . 2-3 SECTION 3: OPERATING ENVIRONMENT 3.1 Differences Between RIO 4.2, MCZ-1 RIO, and RIO/CP . . . . . . . . . . . . . . . . . . . 3-1 3.2 RRM PROM code dependencies . . . . . . . . . 3-3 oler Facility . . . . . . 3-8 3.3.13 Printer Emulator . . . . . . . . . . . 3-8 3.3.14 Serial Printer Driver . . . . . . . . 3-8 SECTION 4: NBUGX SYMBOLIC FILE DEBUGGER UTILITY SECTION 5: CONFIGURING TERMINAL-DEPENDENT PROGRAMS ii SECTION 6: LIMITATIONS OF RIO 4.2 SECTION 7: WHEN TO RESET AND REBOOT  3.3 Differences between RIO 4.2 and RIO 4.0 . . . 3-3 3.3.1 New SDM Software . . . . . . . . . . . 3-3 3.3.2 SDM.DISK.COPY Command . . . . . . . . 3-3  3.3.3 SYSGEN Command . . . . . . . . . . . . 3-4 3.3.4 COPY.DISK and FORMAT Commands . . . . 3-4 3.3.5 LADT Command . . . . . . . . . . . . . 3-5    SECTION 8: PRINTER EMULATOR 8.1 Overview of Network Spooler/De-spooler . . . 8-1 8.2 Overview of Printer Emulator . . . . . . . . 8-2 8.3 Examples of Use of $PE . . . . . . . . . . . 8-3 8.3.1 In conjunction with RIO utilities . . 8-3 8.3.2 In conjuncion with COBOL V2.n . . . . 8-5 8.4 Known Limitations of PE . .others. This documentation includes the following manuals: TITLE PART NUMBER DCS User Guide 03-0162 RIO Version 4 Operating System 03-3208 Software Reference Manual RIO Version 4 Utilities 03-3209 Reference Manual MCZ-2 Series 03-3148A  . . . . . . . . . 8-5 SECTION 9: SWITCH SETTINGS 9.1 MPB/A,B . . . . . . . . . . . . . . . . . . . 9-1 9.2 RRM/A, B, M Boards . . . . . . . . . . . . . 9-1  9.3 PDC/B Board . . . . . . . . . . . . . . . . . 9-2 9.4 PSI Boards . . . . . . . . . . . . . . . . . 9-2 9.4.1 PSI/A . . . . . . . . . . . . . . . . 9-2  Unpacking & Integration Manual MCZ-2/20 & 2/25 03-3147 Operations & Maintenance Manual MCZ-2 Series FFS 03-3142A  Reference Manual Z-80 RIO Text Editor 03-0074-00, Rev. B User's Manual Z-80 RIO Relocating Assembler 03-0073-00 and Linker User's Manual  9.4.2 PSI . . . . . . . . . . . . . . . . . 9-3 9.5 CDC 9427H Hawk Disk Drive . . . . . . . . . . 9-3 9.6 CDC 9406 Floppy Disk Drive . . . . . . . . . 9-4 APPENDIX A BOOTSTRAP SEQUENCE FLOW CHART (this only appears in the paper copy of this note to user not on the disk/diskette form) iii  RIO Symbolic Debugger 03-3034-01, Rev. B Reference Manual SDS 2/01 03-3183 Unpacking & Integration Manual SDS 2/01 03-3184 Operations & Maintenance Manual 1-1 SDM Software Reference Manual 03-3170A Z SECTION 1 INTRODUCTION 1.1 Scope of the Document This document describes the differences between RIO Release 4.2 and previous releases of RIO Version 4. This manual supplements the existing documentation.Where differences exist between operations described in this document and elsewhere, the descriptions herein supercede all -NET Network Protocols 03-3169A Reference Manual Z-NET Concepts and Facilities 00-1102-01 Users new to RIO Version 4 should read the DCS User Guide, and this document before installing RIO Release 4.2. Where differences exist between operations described in this document and elsewhere, the descriptions herein supercede all others. 1.2 Overview of RIO Version 4 This version of RIO allows users to share resources and information on a Z-NET local network while it preserves a large user space for application programs. Synchronous I/O is provided through the use of locally and remotely connected peripheral devices. RIO Version 4 is derived directly from its MCZ-1 counterpart, and it provides an interface identical t user, single-tasking environment. This Network Interface Module (NIM) provides RIO with the code through which any remote device on the network may be accessed.  1-2 Taken together, these factors yield a system whose capabilities provide an appropriate environment for a wide variety of application packages, particularly those wo that of the MCZ-1 series systems, but with the following additional benefits afforded by the MCZ-2 systems: - 4.0 MHz system clock frequency, amounting to a 60% increase in computing speed over MCZ-1 RIO - double-sided, double-density floppy disk drives controlled by a satellite processor - the availability of hich are written in a high level programming language such as COBOL. Figure 1-1 MCZ-2 Memory Configuration MCZ-2 Memory Configuration Under FFS Under SDM 0 -> ---------------- 0 -> ---------------- | | | | | RIO | | RIO two file systems: FFS and SDM, which give the user from 1 to 30 megabytes of disk storage while allowing up to 52K bytes of available user memory space.  Figure 1-1 shows the mapping of memory space for both file systems. Additionally, this release of RIO introduces a module that allows RIO 4.2 to access the Z-NET local network in a single-    | | | | | 2A00h -> ---------------- 2A00h -> ---------------- | | | | |  | | | | 50.25 K | | 52 K | | bytes of | | bytes of | | | |  This release of MCZ-2 RIO is comprised of the following components: - RIO Release 4.2 - FFS (820802) - SDM (820715)  - ASM Version 6.1 (810728) - PLINK Version 4.4 (810921) - NBUGX (801103) - SORT/MERGE Version 1.50 - SP, DSP, DSP.START Version 1.92 - | | USER | | USER | | SPACE | | SPACE | | | | | |  | | | F280h -> ---------------- | | | | | | | FFS | FB00h -> --------------- SPD Version 1.03 (820905) - PD Version 1.03 (820723) - DR.FFS (801024) - LP The last four are provided on a separate diskette when the stand-alone, floppy disk version of RIO 4.2 is ordered. The complete sources for each of the printer drivers, $LP, $PD, and $SPD, are also included. 1- | | | NIM | | | | | ---------------- ---------------- 1.3 The System Releases The floppy disk ($FFS) version of RIO 4.2 is shipped on a soft-sectored, dual-sided, double-density diskette manufactured by the DYSAN CORPORATION. The printer dri-4 SECTION 2 INSTALLING RIO 4.2 ON A DCS SYSTEM This section assumes that the reader's MCZ-2 work station has been properly interconnected. See the MCZ-2 Series Unpacking and Integration Manual for installation instructions. See the DCS User Guide for operating instructions. Once the station is correctly set up, proceed with system ver sources for all three available printer drivers and DR.FFS are now on a new diskette called MCZ-2 RIO UTILITIES. The printer drivers themselves exist on both the system diskette and the utilities diskette. The network ($SDM) version of RIO 4.2 is exclusively shipped on a nominal 5 Mbyte top loading disk cartridge. 1-3 initialization. If there are any questions or problems, contact Zilog Technical Support. 2.1 Installing RIO 4.2 From Cartridge The upgrade allowing use of RIO 4.2 consists of a mandatory  hardware modification to the SDS followed by installation of RIO 4.2. Your Zilog Technical Services has provided you with an MPB/B Processor board and an RRM/M Memory board. RIO Release 4.2  requires these boards in the SDS before it can run. To install RIO Release 4.2 system on an SDS requires only the use of the SDM.DISK.COPY and SYSGEN commands detailed in sections 3.3.2 and 3.3.3 of this document respectively. CAUTION A Backup of your current user files is ESSENTIAL before any installation is  11 12 13 14 15 16 17 18 19 CON Local 2500 2500 29FF 1 2 3 20 NULL Prom 214B 0000 0000 PCON Prom  0BE8 0000 0000 FDM Prom 0BFD 0000 0000 The DISPLAY command will display the following: Memory Allocation Map  attempted. Once this installation procedure has been started, it MUST be completed. Failure to complete the procedure will result in loss of  data. 2-1 2.2 Verifying that RIO 4.2 is Up and Running Successful execution of a few non-destructive RIO commands indic 0 400 800 C00 | | | | | | | | 0000 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA 1000 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA  2000 AAAAAAAA AAAAAAAA AAAAAAAA AA...... 3000 ........ ........ ........ ........ 4000 ........ ........ ........ ........ 5000 ...ates that RIO 4.2 is running properly. Some examples are CAT, DISPLAY, HELP, LADT, MASTER, and STATUS. 2.2.1 Some Examples of RIO Commands under $FFS The LADT command will display the following:  Device Device Entry Module/Net Mapped Name Type Point Address Units FFS Local F280 F280 FF5F 0 4 5 6 7 8 9 10   ..... ........ ........ ........ 6000 ........ ........ ........ ........ 7000 ........ ........ ........ ........ 8000 ........ ........ ........ ........  9000 ........ ........ ........ ........ A000 ........ ........ ........ ........ B000 ........ ........ ........ ........ C000 .... | | | | | | | | 0000 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA 1000 AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA 2000 AAAAAAAA AAAAAAAA AAAAAAAA AA...... 3000 ........ ........ ........ ........ 4000 ........ ........ ........ ........ 5000 ........ ........ ........ ........ .... ........ ........ ........ D000 ........ ........ ........ ........ E000 ........ ........ ........ ........ F000 .....AAA AAAAAAAA AAAAAAAA AAAAAAAA  "." => Free "A" => Allocated 2-2 2.2.2 Some Examples of RIO Commands under $SDM The LADT command will display the fol 6000 ........ ........ ........ ........ 7000 ........ ........ ........ ........ 8000 ........ ........ ........ ........ 9000 ........ ........ ........ ........ A000 ........ ........ ........ ........ B000 ........ ........ ........ ........ C000 ........ ........ ........ ........ lowing: Device Device Entry Module/Net Mapped Name Type Point Address Units SDM Remote 043A 00 FE 8007 0 4 5 6 7 8 9 10  11 12 13 14 15 16 17 18 19 CON Local 2500 2500 29FF 1 2 3 20 NULL Prom 214B 0000 0000 PCON  D000 ........ ........ ........ ........ E000 ........ ........ ........ ........ F000 ........ ........ ......AA AAAAAAAA "." => Free "A" => Allocated 2-3 SECTION 3 OPERATING ENVIRONMENT 3.1 Differences Between RIO 4.2, MCZ-1 RIO, Prom 0BE8 0000 0000 FDM Prom 0BFD 0000 0000 The Network address of the $SDM device (shown above as '00 FE') depends upon the switch settings of the MPB in the SDS, see  section 9.1 of this Note To User. The DISPLAY command will display the following: Memory Allocation Map 0 400 800 C00 and RIO/CP RIO 4.2 user space begins at 2A00h. Programs for MCZ-1 systems run under RIO 4.2 provided that standard (13-byte) I/O request vectors be used. Although a particular I/O request may not require a supplemental parameter vector (SPV) address, it is necessary to reserve 2 bytes for this field and to set its contents to 0000h. This space must always be reserved to prevent  devices, such as $FFS and $SDM, from erroneously taking the next two bytes following the I/O request vector as an SPV address, and copying update information to that address. Procedure file subtypes are allocated as follows: Subtype 0 (Null) indicates that the procedure file can be loaded and executed under either RIO or R Subtype 6 indicates a procedure file with "minimal" terminal requirements. Subtype 7 indicates a procedure file which requires installation by the INSTALL program. 3-1 Subtype 8 reserved for RIO only procedure IO/CP. Subtype 1 indicates that the procedure file is RIO/CP device driver. Subtype 2 reserved for procedures which run  under RIO/CP only. Subtype 3 reserved for customer definition. Subtype 4 indicates that this file is a "loadable" file, which is a  files. Subtype 9 indicates that this procedure is a RIO Device driver file. Subtypes A and B reserved for customer definition.  Subtype C indicates a procedure file assoc- iated with ZP/M, Zilog's networked version of CP/M. Subtypes D - F reserved for futfile put into memory by the RIO/CP load command. Subtype 5 indicates that the file is a "terminal definition" file used by the INSTALL program to obtain the control sequences for a given terminal type.   ure definition by Zilog. This convention is implemented in RIO Release 4.2, such that any procedure file with a subtype of other than 0, or 8 thru B, will be rejected. RIO Release 4.2 and RIO/CP can not currently coexist on the same SDS. When an external program is called from RIO 4.2, a pointer to the input parameter string and space for an error code ar80340 or later, at the time of writing the latest release is 82165. If 82165 PROMs are used there are several new commands which control bootstrapping. They are defined as follows:  ^LP - will boot Locally from PDC board (from floppy) ^LH - will boot locally from HDC board (for SDS diagnostics only) e on the stack below the return address. This PLZ calling convention is described in section 7.1 of the PLZ Version 3 User Guide. Upon returning from an external program, RIO 4.2 checks the state of  the stack. If the stack pointer value suggests that there may be an error code entry on the stack, RIO extracts it and stores the low-order byte of the word at the global label ERCODE. Otherwise,  ^N [filename] - will boot over the Network For a detailed description of bootstrap sequences see the flow chart in appendix A. 3.3 Differences between RIO 4.2 and previous versions RIO 4.2 has several new features as well as many internal changes. 3.3.1 New SDM Software The RRM/M board with 256 kbytes is now required on shared dat RIO assumes that a valid error code is already stored at ERCODE. The result is that RIO 4.2 supports both RIO and RIO/CP calling conventions. Note that RIO 4.2 determines if there is an error code entry on the stack by comparing the Stack Pointer on return with the value at calling time. If your program returns an error code on the stack, but does so by moving data on the stack (so that the a stations. The Shared Data Manager software in RIO Release 4.2 has been modified to take full advantage of this feature. 3.3.2 SDM.DISK.COPY Command A new parameter ('B=Y' meaning Bootable = Yes) has been added to SDM.DISK.COPY to allow the boot sector to be copied; thus it is now possible to create new bootstrappable platters more easily. If used the parameter causes an area to b error code would come back at a different location in memory), RIO will ignore it although RIO/CP would have seen the data. This is because many RIO programs assume that the stack is not  required upon return to RIO. 3-2 3.2 RRM PROM code dependencies RIO version 4.2 can be used with any RRM/A (or /B) PROM code dated e initialised on a platter to enable bootstrapping and will then allow an SDS to boot from that platter at any time that the conditions permit. The bootstrap sequence of drive searches on an  SDS is 1, 0, 3, 2, 5, 4. Only if the platter is physically on the same drive as when it was created will it be bootable, ie: a bootable platter created using %SDM.DISK.COPY S=0 D=3 B=Y C=Y MUST be placed on the same drive, or another drive addressed as 3, for it to boot; and there must be no bootable areas on drives 0 or 1 when booting from drive 3, see the DCS Users Guide.  The XFRSYS utility of previous releases of RIO has been obsoleted by these extensions to SDM.DISK.COPY. 3-3 3.3.3 SYSGEN Command 5 Mbytes + 5 Mbytes backup area 20 Mbytes with no backup area 25 Mbytes + 5 Mbytes backup area 30 Mbytes with no backup area. CAUTION  It is strongly recommended that a backup area is reserved, especially if you do not have floppy disks on any network node. The backup area is only This command contains the most changes between this release and previous releases of RIO. It is now possible to SYSGEN a system more than once without destroying the current user environment; this means that a drive can be added to the system and an extra 10 Mbytes added without needing to back everything up first. The command may ONLY be used to EXTEND the file system. It  relevant to the commands BACKUP, RESTOR, BACKUP.CAT. The information on a backup platter will be destroyed during a SYSGEN operation unless  the platter is removed from the drive. A backup platter is in a unique format and can only be read on a drive designated for backup. A platter is only readable as part of a file system if it has will not permit contraction of the amount of user file space. Users no longer need to specify which platter (physical drive) is to be used as a backup. This is automatically defined as the platter having the highest physical address. This means that valid file system sizes are now: 5 Mbytes + 5 Mbytes backup 10 Mbytes with no backup area 1  been (re-)mounted on a drive with the same physical address as when the platter was created. 3.3.4 COPY.DISK and FORMAT Commands COPY.DISK and FORMAT no longer require the user to ACTIVATE  the low-level floppy device driver, $FDM. Both utilities now look for the existence of the $FDM device in the Active Device Table, and if not found, use the standard $FDM at address 0BFDH. vice Entry Module/Net Mapped Name Type Point Address Units FFS Local F280 F280 FF5F 0 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CON Local 2500 2500 29FF 1 2 3 20 NULL Prom 214B 0000 0000 PCON Prom 0BE8 0000 0000  3-4 FORMAT now supports a new design of PDC (known as the PDC/B) which offers a greater diskette capacity by utilising more tracks than a PDC/A based system. PDC/A  formatted diskettes are inherently compatible with PDC/B based systems; however for compatibility with PDC/A based systems, it is necessary to specify that a 'partial' format diskette is requ DSP.nec Local E4A8 E400 FA75 DSP Prom E4A8 0000 0000 3.3.6 RIO Console Driver - $CON The Console driver has been modified to handle the class of terminals, such as the DEC VT-100 and VTZ 2/10, which require prompt response to the X-On/X-Off (^S and ^Q) characters. Bit 6 of the first Byte in the Console status block (which can be accessed by Read/Wired by the use of the "C=P" command line option. This ensures that a diskette formatted in a PDC/B based system is readable in a PDC/A based system. Error E6 will result from any such incompatibility. 3.3.5 LADT Command The LADT Command has been modified to display the current type of device (Remote, Local or Prom), and if the device is Remote, its network address (in the rite Status) has been defined to mean: Bit 6: 0 (Default) - Allow Read Absolute to see X-On (CTRL-Q) and X-Off (CTRL-S) in the data. Console driver will not do any special functions for these characters during Absolute Read. 1 - X-On/X-Off will always be honored form ). The difference between Local and Prom devices is that Prom devices require no memory from the user's address space. If a device is ACTIVATEd at the same address,  but with a different name from the first device; the second will show as a Prom type device eg: %ACTIVATE $DSP.nec %ACTIVATE $DSP E4A8 %LADT Device De by the console driver. 3-5 The Console driver now supports a programmable Escape character, ESCCHR. The SET Command has been modified to support the command: SET ESCCHR= 3.3.7 LOGIN.INIT Facility The modified LOGIN program checks for the existence of a file named "LOGIN.INIT", and executes the following command if the file is found: DO LOGIN.INIT This facility allows Utility and Current directory definitions, or device activation and assignment, to be made automatically each time you LOGIN. (Remember that each LOGIN resets your Utility directory and sets your Current directory to the newly logged-in directory). It has otore copying to multiple diskettes in this manner, since it is not possible to exit from MOVE in order to format more diskettes. To use this facility, use the MOVE command as normal. When MOVE detects that the current diskette is full, the message: Disk is full, Should file be continued on another disk (Q/Y/N)? will appear; if you respond 'N' to this message, the partially written file will be erased fher uses, such as leaving messages for groups of users, automated cleanup of your directory when logging-in, etc. A sample LOGIN.INIT command file is: COPY ^NOTES $CON  ACTIVATE $FFS During a network boot OS.INIT, in the "system" account, will be processed before any LOGIN.INIT which may exist. 3.3.8 MOVE Command The MOVE Commandrom the current disk, and MOVE will prompt for insertion of a new diskette to continue the copying to disk. 3-6 If you respond 'Y' to this message, MOVE will change the file's type to B7, and ask you to insert a new disk. This will continue until MOVE has successfully finished copying all the requested files to disk. If MOVE still needs m was modified in RIO 4.2 to allow a file, larger than the capacity of a single diskette, to be saved on floppy disk. This is done by allowing a file to be written as a number of pieces. The new MOVE command allows a file to consist of up to 99 pieces, thus allowing a file of almost 100 Megabytes to be saved on floppy. It is ESSENTIAL to have sufficient pre-formatted diskettes bef ore disk, you will get the message: Disk is full again, Insert next disk in drive and type CR: These fragmented files are not usable in their fragmented state. Note that each piece is a type B7 file, and CAT will show the part number of the file after its name in a long directory listing (F=L option). To restore these files, use a normal MOVE command to move the  FE : Insufficient Access Permission Two new error codes have been assigned to alert users to the differences in the capabilities of the PDC/A and PDC/B boards. These are:  E5 : Non specific error detected on the PDC E6 : Attempt to use a Z2 diskette with an incompatible PDC 3-7  files to a device which can store the entire file. As MOVE sees fragmented files, it will ask you to insert each part in the floppy disk drive in the correct order. This fragmentation facility is only implemented in MOVE and CAT. All other programs see these files as a type B7 data file. MOVE fragments files only if writing to floppy disk, ie: if writing to SDM, D3 (Disk full) errors can sti 3.3.11 STOP Command This command is the inverse of the START command which sets the logical IO package (RMCFMS) running in the SDS for the multi- user COBOL environment. It is a privileged command for use only from the "system" account, and should only be used when all work with MURUN has stopped. 3.3.12 Spooler/Despooler Facility The Spooler/Despooler facility implements a sharedll occur. 3.3.9 Boot Procedure with multiple SDSs on a network If the name server table(s) contain more than one SDS name the boot procedure prompts for the named SDS that the user wishes  to LOGIN to. The SDS names must be installed using the NAME command before the prompting will work. If an SDS is non-operational the work station will seem to hang if that SDS is requested.  printer facility, allowing users of a distributed system to take advantage of a printer on the network. This facility is fully documented in the DCS User Guide. 3.3.13 Printer Emulator The Printer Emulator allows any program to send its output directly into a file which, when closed, will be automatically added into the de-spooling queue for subsequent printing. See To prevent this, the SDS device- name should be removed from the name table of any other SDS(s) on the net (with the NAME command) while it is non-operational. See the DCS Users Guide for more information.  3.3.10 ERROR Command Some of the explanations of errors have changed in this command to improve their clarity. These include: C3 : Device or file write or erase protected  section 7 for instructions on how to use PE. 3.3.14 Serial Printer Driver Zilog now supports the use of serial printers, eg: the QUME Sprint 10/35, on the MCZ-2. Therefore a serial printer driver, using X-On/X-Off protocol, called $SPD has been provided in this release. $SPD is the logical equivalent of the parallel printer driver $PD. $SPD has been provided in source form so that modifications may be made by the user to support other printer types. In particular the user may wish to change the baud rate from 9600; this change is implemented by editing the source module called "SPD.MCZ2.S", then re-assembling and linking the driver. Command files are provided on the release to facilitate this. There is currently no support for serial printers in the  ; NBUGX gets control here again. ^Z executes steps in the program in the same way as ^Z above. When NBUGX returns after a single step or a breakpoint, it prints out the next instruction to execute in disassembled format instead of printing out register values. This makes it much easier to follow the code if you don't  despooler software. 3-8 SECTION 4 NBUGX EXTENDED FILE DEBUGGER UTILITY NBUGX has been prepared from NBUG, with extensions as mentioned below. See the RIO Symbolic Debugger Reference Manual for descriptions of ZBUG and NBUG. The following are new commands which differenhave a listing. The symbols BC, DE, HL, BC', DE', and HL' have been added to NBUG's symbol table; so they are now usable in the ^R command to set register values. In contrast to previous versions of NBUG, NBUGX ignores the "parity" bit of characters received from the console keyboard. This occasionally led to problems in the past, as command code comparisons were made against a tiate NBUGX from NBUG: ^F prints the current flag settings in text format. For example: Main M NZ PO C Alt P Z PE NC ^Z executes one step in the program, where a subroutine or block instruction is counted as a step. For example: CALL SUBROUTINE ; PC is here. press ^Z in NBUGX OR A  table which had all parity bits zero. 4-1 SECTION 5 CONFIGURING TERMINAL-DEPENDENT PROGRAMS  RIO currently supports three programs that have terminal dependencies. They are: (1) the printer spooler utility SP (2) the printer despooler utility DSP.START *820610820715*;*-SETUDEABSABST.OBJJBJ (3) the file debugger utility DR.FFS The released versions of these programs are configured to an ADM-31 terminal. RIO 4.2 contains six terminal-dependent procedure files which allow the user to configure the terminal- dependent programs to a specific terminal. These procedure files are: t.dep.adm.31 for the ADM-31 t.dep.adm.3a for the *820610820715*;*-SETUDEABSABST.OBJJBJADM-3A t.dep.beehive for the BEEHIVE B100 t.dep.infoton for the INFOTON I-200 t.dep.televideo for the TELEVIDEO 912-C t.dep.vtz for the VTZ 2/10 and C.ITOH 101 More terminal-definition procedure files will be added to this list as the need arises. The INSTALL utility configures a terminal-dependent program to ru'setud 820412 Copyright, Zilog Inc. 1982"-կ2,*- ar*"-D #~= #"-ͽ+"-!,*-"-ͽ+"-!,!,F*(*-~$ +͎,+`i"!,N /!7,+ !+!-"+"-!3"+®+*+}*3.,*-3~ ( a(#À+>( <( ^(>>>32,!+~ ʳ+(2(9(U(\({ã+!L,$ ó++(!_, $ ó+!j,$ i!,F !}, + +!, $ I!,$ >!,$ 3!,N $ !,$ !,$ !,"$ L{2#~ a*-#"-~ ( a(#y*-+  rn on a specific terminal. The INSTALL program requires that the procedure file be of subtype 6 or 7. A subtype of 6 indicates that the program uses only the minimum capabilities of the terminal (such as clearing the screen and positioning the cursor). A subtype of 7 is required for programs which use some of the more advanced terminal features (such as the video attributes and ed,Directory pathname: Invalid device name not activeDevice is not readyMaster device is not a sdmUser not logged inInvalid pathnamePathname too longDirectory not foundUtility directory remains the same*820610820715*!*-!"STATUSABSABST.OBJJBJ!% Drive Sectors used Sectors availableWarning: bitmap statistics are inconsistentWarning: allocation statistics are inconsistentC-!-0##*-^VOR8 y0A 0 > w###+~ 60'd *820610820715*!*-!"STATUSABSABST.OBJJBJ!%#*820610820715**='$(WHOTUSABSABST.OBJJBJ#'#+/0status 810301.3 Copyright, Zilog, Inc. 1980,1981"+կ2+!+>2+*!,***+ "+a*$()08o:0 2+*+#"+˯D Y*+#~= P#~$ J"+"+ͻ* A*+#~: #~080:0,2+] "+!+2+*!,*~ w>DJ:+08 0++ <>8++((,:+2,!,>>>+++ <+> >o2+2+>2+!+:+:+(:+P+02',!++,!D,K+>,!W,K+>,! ,N$ :+G( !n,+$ :+O( !,/$ @+++ #*820610820715**='$(WHOTUSABSABST.OBJJBJ#'#+/3D820609820715DbD])4*COPY.OBJBJERFACE.MACROS.SJMD3)3-157;?.WHO 820204, Copyright, Zilog, Inc., 1981, 1982"^,>2,x2, ~ ( ;(˯Dk+#~=k+#~$k+"b,2m,!`,~ w(Fo+!,~ w®+!,w( +*,}+!,!-~,_#:, #:,( ~_!,++ ~#_~!- #~! - ~O #+ !- $ !7-P$ !-~b+O #-> ! -w - ~!1- #~!4- ! -*$ ####+>2*^,>D!+ !+.$ Error : Could not assign to specified device!+ !+"{+Error : Could not open who.file !+ !+!{+Error : Could no3STACKPDEBUG BRKRTNBRKFLGCHRDEL'LINDEL1PROMPT;NULLCTEOUTPTROINPTRYMEMBOTbMEMTOPlEXTRETvERCODETIMEDATECONIVCCONOVCCONIBFCONOBFDIVMULTdealocallocNADTEADTLENADTMASDEVDLFTLFTENDLFTSA!SYSFLG'ERROR1CHKFN:GETMOCWRCONLSEARCHURDCON_PUTSTRhPUTMSGrGETCHR|EXTFPDISPATEVALDELIM2DELIMBTOHEXLOCDEVTTYTSTSYSTEMt read who.file!,C$ b+This station not found in list of logged in stations, error assumedm,*,*who.file -Your User ID and [network,host addresses]: [ , ] [ , ]All users currently logged in: User ID [Network,Host] k 'COPY 820416 COPYRIGHT, ZILOG, INC. 1982!"\>2 ! (:~>D:>2 cm@"&1 (:>29CC 2|˯A !"\>29#U >!"\O >R #~˯L F#~m@&= @#8:CT 0#~= *#~˯D >@2A > B >P>H>>D!>G>J>E1mD"H$C">2 >2 2!" !" !"! (L!N# !!:w#RDMr:2\3D820609820715DbD])4*COPY.OBJBJERFACE.MACROS.SJMD3)3-157;?lAHb`I !r::!!">2 !" *\" !9": : >2!m*| `l@10" @D*| !"! !(F *[R( !0r+¦!;N# !!<::w#RDMrdlA! $"` @!":9E^*" *" > 2 >2 ! ( 92* |(:1: 1>2 >2 !  ( k`! & D@:wz>( ! >L1>I2>2 >2 !" " "! :9 *[ [R0S>2 >2 +kH&"a $"`"D!!" !" *K*|z*" *" >2 >2 ! ([*" *[R|%" > mB&H$"b$H2 >2 ! (1:* *" *" >2 >2 ! -[ *" *B *[ [Rim$  "" D`[*R8[R8[ ѧR" ð2*[RȧR8[ R0[" [8d0 R *"|>2>2 >2 !" " "! :9 *[ [R0S>2 >2 !9D820610820715DbD]=:>DO.OBJBJBJERFACE.MACROS.SJMD9=9AEIMm does not exist on Drive is a Duplicate file on Drive Drive is not Ready ***** Warning: Record LengthU Change *****(1:* *" *" >2 >2 ! -[ *" *B *[ [Ri W[R8[ ѧR" ð2*[RȧR8[ R0[" [8^mDH " DAD:o:r*[R( 0>29g*[ Rw*[RS"[!"*" !" > 2 >2 !  9D820610820715DbD]=:>DO.OBJBJBJERFACE.MACROS.SJMD9=9AEIMjH!$>2~2* |ʆ!"*" !" > 2 >2 !  >2~2* |ʐ>2 >2 *" ! -k&& " BI"bH1!!! ~ Áå*[K >2 >2 *" *" ! ~Á!r>:B B:INCOMPATIBLE FILETYPESU[ ѧR" ð2*[RȧR8[ R0[" [8o:r*[R( 0>29g*[ Rw*[RS"[!"*" !" > 2 >2 !   d1dealocalloc STACKPDEBUGBRKRTN&BRKFLG0CHRDEL:LINDELDPROMPTNNULLCTXOUTPTRbINPTRlMEMBOTuMEMTOPEXTRETERCODETIMEDATECONIVCCONOVCCONIBFCONOBFNADTEADTLENADTMASDEVDLFTLFTENDLFT SASYSFLGERROR"CHKFN+GETMO4WRCON=SEARCHFRDCONPPUTSTRYPUTMSGcGETCHRmEXTFPwDISPATEVALDELIM2DELIMBTOHEXLOCDEVTTYTSTSYSTEMCD820610820715DbD]GDHECHO.OBJBJERFACE.MACROS.SJMDCGCKOk 0a$ DATE:77331.01!Bw(2"%+ !"'"->2>2A!A"#!5"! "!:5 >HcmDBAL`"`[8K6zA!") DM!d l"+ "3 "'*%m(+DM*-#"-))[+q#p#`i#~3kAH$@ T]BDMq#p*'"*)"!"#> 2!( 2>2*"%!"""#!:2"w(1 +mA@&0!c2>L"*'|*) DM*+2*'K%x(~(> T] !"/*3~ 4# MS1#̈́CD820610820715DbD]GDHECHO.OBJBJERFACE.MACROS.SJMDCGCKOm` @! !c|(K-7B8 !cK+)) ^#V#N#F*1[ 8*/#"/[-7R#8K/ C/~j$L (#[ ] x |] */| ! cY+"/#||*3"*'*)*3*-*+!2!33]mc""A!˖"+"-"3")"'!" cm08:0)DM)) O Formal Parameter Format Epcrror Parameter Expansion Error Unbalanced Conditional Expansion Command File not FoundPMS1#̈́ IPUTMSG !c|(K-7B8 !cK+)) ^#V#N#F*1[ 8*/#"/[-7R#8K/ C/~j$L (#[ ] x |] */| ! cY+"/#||*3"*'*)*3*-*+!2!33]mc""A!˖"+"-"3")"'!" cm08:0)DM)) O Formal Parameter Format Epcrror Parameter Expansion Error Unbalanced Conditional Expansion Command File not FoundPMS1#̈́ K(DATE 810513 COPYRIGHT, 1978, ZILOG, INC.~ #T]~# (; 7RDMɕQD820610820715DbD]URV IMAGE.OBJJERFACE.MACROS.SJMDQUQYSWk0`A$(IMAGE 820618 COPYRIGHT, ZILOG, INC. 1982_!d(2 S!"!""Z+"X!"\!"NemIL2*w8G[q#p*XB8CXwzPY"*N#F#B0>Dþ#s#r#"!4~ z(t*Z˯E #~=zm11 #wzCZ"kR#~˯Lz#~=z#w8CZ"kS n#~˯T f#~= `#w8ZC\Z"kg-l B&! $*w#w#w#w!"!"!^":_* >02_>2>2^/22m¾>2: >D@!"!"G*DQD820610820715DbD]URV IMAGE.OBJJERFACE.MACROS.SJMDQUQYSWeLDL0"m *+[+*+*ZR0SZί>2!"!t"m2m"Ne*w8G[q#p*XB8CXwzPY"*N#F#B0>Dþ#s#r#"!4~ z(t*Z˯E #~=zm11 #wzCZ"kR#~˯Lz#~=z#w8CZ"kS n#~˯T f#~= `#w8ZC\Z"kg-l B&! $*w#w#w#w!"!"!^":_* >02_>2>2^/22m¾>2: >D@!"!"G*"/ STACKPDEBUG BRKRTNBRKFLGCHRDEL'LINDEL1PROMPT;NULLCTEOUTPTROINPTRYMEMBOTbMEMTOPlEXTRETvERCODETIMEDATECONIVCCONOVCCONIBFCONOBFNADTEADTLENADTMASDEVDLFTLFTENDLFTSASYSFLGERRORCHKFNGETMO!WRCON*SEARCH3RDCON=PUTSTRFPUTMSGPGETCHRZEXTFPdDISPATmEVALwDELIM2DELIMBTOHEXLOCDEVTTYTSTSYSTEM [D820610820715DbD]_\` PAUSE.OBJJERFACE.MACROS.SJMD[_[cg ] *820611820715*@8>e*7@a^bCATTUSABSABST.OBJJBJ ]a]eikosmquy[D820610820715DbD]_\` PAUSE.OBJJERFACE.MACROS.SJMD[_[cg ] *820611820715*@8>e*7@a^bCATTUSABSABST.OBJJBJ ]a]eikosmquyCSPSYSCAL%CAT 820525 Copyright, Zilog Inc. 1982"3>"5>27>>!%6w6>29/2#6>*29>2.8!"26"46"66!9".6"06>02"6!k#(x>J*k#*"->C1>!%6*5>+ az,C4.+ʛ*#~˯D k.^,~$(:( 0+4+<8>28!8(27>.(>D9>2!8!!8 +!%6:<8*ʛ*2"6Û*>@T \.^,˯D 5>@2$6#~]+ʛ*#0 8 ˯8>H*G:$62$6Û*A > B >P>H*>P ].^,&˯ #~] +x2#6Û*W E L S R F >K27>.F !.(p˯S Û*L(>m'PAUSE 781102 COPYRIGHT ZILOG, INC. 1978!b!mF˖!n!y6~!mp!n*6 Rc"@@mBm EDÛ*L ).($8!.8>2.8 +!%6ʛ* Û*O #.(˯U 2i>Û*S(>D+>2i>Û*[06~] S06+Û*:i>ʰ,!>##`iBDM>##*"?C?[?:.8g-!-:"G8>2/8>28!8"08!"28!8"98!.8>2/8(>L56:%6W(/K66>!s75K46>!7͓5K26>!7͓5U!p71*46| !8$ :.8.!61!.8M227>>2/8!"08"28"98.:%6o !\6".6#"06!%6*066!%6~(K>28>2!8>*2<8292=829>!;8w"8!9w",8>282"8!8(>L5.!!8 >28>2;8>28!I8"8!"8!;8"8!8!_6>8 y2=8:"62<8(& :%6_.:"627!7$ .>L5.:i> !/!|>[.6t2(I 27>>32"6K52i>:i>ʰ.K?[?x(-2!6˿O/(I 27>>32"65 [?>28!"8"8"8!8:%6_,:"6<4,2"6x-*->K1>*#*?K?*#:7>2*3>#~]=  ]z #{ !i86 T]J!j8 >I9y29!!8!%6:!6(N~ ~{0>2"8>2!8>29!8"#8!"%8!9",8:<829>2"8!"#8"%8",82+810((#!78:+8 {0!78{0:=8O:9 !G!>89 /2+8!I8823*g>}23*B6KD6 *:6>*23Kd> 23+ [86?4*B6KD62N˩y#C(+~˯D4#~˯A4#~˯T4#~˯E4!%6#~> =  <4#~> = < #yC (6>~]>~*( 08:0 #~]>>D27>~:8!R6:9O>͓5!k8:9O !V6:9O!R6~ (w# #>)w y29!%6~!9v(!8(6 # O~08:0 (0 ^ <n f(C5!50##*5^VOR8 y0A 0 > w###+~ 60'd L(!>> !8>$ 0:.8(:9O:8 G!98 02+8!884F51!%6F( :8go:$6V( :$6(N(!#6:8v 1!%6f F:"62B9!39:=9 !I96x6!I9!6!%6V !i6C1:98!i8!1!j86 *T]:"6!}8h2!i8:%6W1:+8w1!8:8E68 :8  w:8(#h28:8!J6'0O~y# K8>!8͓5!8[8/:8( !8[8/!88~ 8{86.x1!98~ 8{86.1*8KL8 ~ !J> !@>$ PDABWELSRF10 (part *DIRECTORY Directory id: Filename Drive Directory id: File Record Record File Starting Date of Date of Filename Drive type count length props address creation last mod. Files examined Files listed Total data records for listed files*** Open error *** File already deletedDrive X is not r8Kg8x!->[G8RT]B8!"g8 `iR"g8BK*e8[G8"e8"G8->R M2!-:"08[G8R"28!-:"G8 80w"86S:6 >I> 28*->"8*1>"8!"8!8*8| :8[->"/>*->[L8R"<6*<6[L8*/>R :8w("<6">6*<6KL8 [>6R(Ny2!6p#>(T] p##:I8G(#">6[:6S@6[66S66"B6CD6*B6KD6!'62f>Sg>*@6!T] "@67R2"d>DM>* y.4#T] "g>#"g> 3"57RMyF 23!'6 8!f>4(F23(Vʹ3N.4*5Z3:f> eady File not found  DIRECTORY-: @C9d@9810728ASM 6.1ASM COPYRIGHT, ZILOG, INC. 1978,1979,1980,1981">*"@*s<*^,ʹT1=ͱA:*G ͢>OGJJQM`T~,-^,UͱA:*G ͢> D͎SbPTxVG[~,:*g(Cͭ-^,KH:*o(5GK~,!+͙@>2*2*!+!+{<*:*o*>*:*o(ͭ-^,ASSEMBLY COMPLETE+:+ Error I/O Error on Unit SAVNAM 1.0, 801123!u?y2t?:!6(:t?2t?_*?[?R0>J[?!t??8 ( &o#:t?O*?[?R(+ B#x(:t?<O!t?*? "?*?#"?!s?6~(*G(*( 606G#N(?~77>K?*? 6C?C? PAGE ~ ;~ , ;>!@  +> S+"+*+[+R#DM> ͠,#͠, 80w~,#N,(!, (,87˯A8[ا0123456789_?$'-| )>O| )&>8GOR0:aoB-!ɯ|7-|7-!R/7-'-BK808)8ė B-z CJT]yx (,=( J- :%:<!!-4!-@F ASM2, -}*800910820715*/*Y~ASMEKTO.MCZ2.RIO.USERs}}w{s." .2.*+^5=576".>ݾµ/2.2.2-/2.R}<2.F:.=(Fx(( ###:.2.!ͅ5*.~2.6)>2.!ͅ5G2:./:.G:. ,:. >2. >2. (( (6î/:.ʝ/8>:.!p6o>g~G:.Ox09!.>24͓5:.5s#rz {ڨ.!.>24͓5:.5s#rè. ͓5å.:. :. !.>24:.56d#6*.ͅ5:.8&oͅ5:. :.(>2.å.~ :. 6:.*.w* .w#w{.ɯ2.2.:.G:.2<2.5^#V{d z2>2-8G2:.<2}*800910820715*/*Y~ASMEKTO.MCZ2.RIO.USERs}}w{.!.45^#V:.2x2{ 1 x2!R1 >2-1 x2!R1Ox!~0 NFG!.52O000000211111011W1+1x 9J-x .,x #x"2GZ1x(  ARx2x l-x }o|g1x }o|gx }o|gx"2 R! !x bR 1z(bR-< 1x2bR 1z(bR nx2,1J-RTx"22| z R0!3!+z(bRbBx(A 4R!0!/:-/6 #~ :.=(6 66* .s#r:.*.w{.0123456789:. !".2./2.ɗ2.!c6~ʷ3F6~!=2 13>2.ѧRE~!=2 (˯D ):!5 o)8y]T)8t)8q8no>gOB !)8W1 0 <3H GO(Q #8!A)0 5 o".>w2.!> ͗;ͬ,R kR>0oMD9͢9W(H!9~ A>!9~ #~+>(>[9S;2S92.~*9(}<(:*(>2.".6R46R4>o&".>2.!.5#> >*.".#!.5> >!*~(>2.nf".[6DM[+R8`i[z>Rڰ7*6#9G8"6*++"+S6*+"+!*˖*6"=!=6 @*=[z>͝-*6"6*~>[+*689#(8 9#8#80G*6####(~##((~#( (8#[6R "!=@*=[z>͝-*6"6"6*+"7~*+7R~867ñA#"6*++"+[6R0K6`i"6[6>$R(F00R*=[z>͝-ѧR8[z>͒-[+"6"7>&2=C6}"=!=@*+"6"77G!9~8wͺ9:*o;:9_(O.:͢;9^.:N Fȧ*9B[+R0;X:"9*9#"9!9>5~˯#F˨#N˩O(=N(XA(EX4E(ZS(_M(qR({G4L4U462.!".xR >+!.44xN yD >4xO yT > 4xQ > xH yR(L >U>QxO yD >CxE yS >5xT > xTL4> yT xG > L > xO yR >o&#>. #33:.2.3>>2.n˽#>'(? (#:.2.&3f˼". # >O:.2. #!.5.'!.5!3ͷ5!.42.:.( 62.!.5 >2.ͷ5| }0!q6o>g~2.>2.0a8˯ٹ0 :8AgF( C;(:9_N(!99:9_:ͫ;8xf!>( ˦6@6@6 *9">@ͫ;8N N F!9:K+B06!9!>6@*+66*9">@!9˦F(C;( N(!9!9͢;0  9*++BK9BMD+y(!9!9*9K9 B"9!>@*+K9B">C>6@*+">6@:*(~( ( ~( #<#~(~#< !9!9#+<ѯ!96 #*9K9*+K9ͺ;!9xA:9O~ȑ(#9 #7;:9O*N,( #' 6(N,G,#> >O>' 336 +N,#' 6(:.G#~!c6(x2.()+-*/&^\=><$.'  ͗;9N,(#N,# +"9!7͢9!7˾Wʰ7!*V(D[6*6}|*6K7B}|> #[6R}w#"6*+Rڵ7*+"+*99G89*6 m##"6*6[7z͒,#{͒,##"7*9>#ͽ7G,(9N,#(+~'( N,(ͽ7##~'( ͽ7#~ ( #~'(6 >667*+R(*6[+R(W+~#_R"6og9G8og 9:9!9˾#˾#˾++[9"929*+zw:9 G :70#{w#"9[>R!=@*+"9m<=<<ADC^ADD^AND^BIT^CALL^CCF^CP^CPD^CPDR^CPI^CPIR^CPL^DAA^DEC^DEFB^DEFL^DEFM^DEFS^DEFT^DEFW^DI^DJNZ^EI^END^ENDC^ENDM^EQU^EX^EXTERNAL^EXX^GLOBAL^HALT^COND^IM^IN^INC^IND^INDR^INI^INIR^JP^JR^LD^LDD^LDDR^LDI^LDIR^MACRO^NEG^NOP^OR^ORG^OTDR^OTIR^OUT^OUTD^OUTI^POP^PUSH^RES^RET^RETI^RETN^RL^RLA^RLC^RLCA^RLD^RR^RRA^RRC^RRCA^RRD^RST^SBC^SCF^SET^SLA^SRA^SRL^SUB^XOR^adc^add^and^bit^call^ccf^cp^cpd^cpdr^cpi^cpir^cpl^daa^dec^defb^defl^defm^defs^deft^defw^di^djnz^ei^end^endc^endm^equ^ex^external^exx^global^halt^cond^im^in^in< > F>>  !A͙@ !ALA>I2*W+*^<~ A( @(F@!_AB*FN,( )(>ͣ@!mAB*!@>N#ͣ@,?G,("3>!1>6>2>> v±>7*^6!"3>@!a>"3>! "5>>2>>!@>~ >F2;>ñ>OG#~˯S +~.($#>0!^>#6.#:A>o6S(6s!@>y(044!1>6@:a> *d>K|>x "|>} ɧB>!>[>R8?c?*++"c^ind^indr^ini^inir^jp^jr^ld^ldd^lddr^ldi^ldir^macro^neg^nop^or^org^otdr^otir^out^outd^outi^pop^push^res^ret^reti^retn^rl^rla^rlc^rlca^rld^rr^rra^rrc^rrca^rrd^rst^sbc^scf^set^sla^sra^srl^sub^xor^B^C^D^E^H^L^R^A^I^SP^ ^IX^IY^AF^BC^DE^HL^AF'^Z^M^PE^NC^NZ^P^PO^b^c^d^e^h^l^r^a^i^sp^ ^ix^iy^af^bc^de^hl^af'^z^m^pe^nc^nz^p^po^#G,N,(*+#*~>~*:*O $+#G,(' +~F#(f(#~'( (G,:(@N, DG~:(G,(N,# ?H"Jͬ,8~:(:*_( N,( :( #6:*_ Y͗;[JR(>0oM9:* +HB7R">^S5>#N#F!1>56&@HB*|>+BK|> B*+( "+7+R}[|>>R(0<R}[z>R[|>>_>g{oɧR[z>N#B*6 !@6@!@6@B*B*~ w(GNAp qx2*W+!A>~,!1>OA> 05!`OA666INVALID FILE: INVALID ATTRIBUTES: FILE NOT FOUND: MEMORY TOO SMALLLINE TOO LONG: :*G:BWk8*+#"+*+#*|>Bʚ>~ "+#~ J?8!*[\͢9W(w !9~ #~(66 6G,DG" I!DI!bEI bqy ~ 6yI[+R+uG,:*_y>DG#" I!FI!GI+ A q#<(:*_:*w("* I[+Ruͬ6~6S!*6* IN,(#[ IR}2. I+!** I>(³I:.O>( >)6I ʳIIºIºI:.(v0.O* I#9S I6 !FI!GI" I  >d?* I#>I ~X(Y &XG#~+(- >+>i ~x(y x>}>w*~>6<^[ I # (% (!,( (;(~ Ix# # ~ α~ ++"+*Z<[\RB*+~*#~˯I̒BQ?> 5*+6 #"3>*+x@"5>!1>6 @*5>| 6 #6+"Z"\<*~>>ݾw:*O _*>>R86[^4?8*MC"^<566> # *Z }o|g*>s#u#t#">c?*MC"^<*+[+R8(R#DM[+S+S3>RB*~>~~o&+!N~2J#~=2JFNM($>M M(~GM(:*_(66 !SP_~wLLLLL L L @>!J .~Jx(6J*JNF*+B8C+ 06 L"+ -CK gK*9ut~>Ģ9:* w 6( d~EJCK +(N :* !9~(6+˾>͢9~LL9!9>!9 .xG~x6 ͏KLîJ R͏KL6u,îJ*+W^DG' *#6 &+R~' <+DG @0&o6 ~EJ!*N 1 ˞) (>!J .~ xgK*JZ !*L T:*_ ~>8@*+^"J͕M0!9#!"9>͢9W(!9~#( ~(> >~ >wR N:*_ G~>8<*+^"J͕ML!9#!"9>͢9W(w !9~(>>w66:*_( ~(6~wNF*+B8C+H "+uN:J&o) :J&o) ~( ##R8(#~# uNR++}~ yhM OxhMAOxhM GyhM(OɧxM8 > ( >o( p((>*JG,(/DG(*"Jͬ,0[J"JR>0oM͗;976*~>"~>[>RB0,[+*~>R( "=!=@*+S6!*~ ]IR!*ˎ˞*66#[+S6j@"=_*6"6"6!=@*+~O ~6 *+#~ ( ( (sRw*+#[+SHQ~ [HQ#( ([2FQSHQ*+ #($#~#((!FQ4#~(k# #[HQ*+RDM[HQSHQ:FQ0w*+[6~*6R "!=@[6*6[z>͝-"6"6[+# S66 PASS 1 COMPLETE-*+[+Rڒ>"eSDMbk6K|>!CESKz>CHSCQSCTSCZS!CNSK9C`S:*w!NSXT!QSXT!TSXTo!ZSXT,T"eS_W,"cS!`S![+ *+*cS^"~>*+7RDMkb6*~>[+s#r#6()-./0123;<=>?@ABCDEFGHLMNOPQRT\]^_`lqt t     tttt  mm}et toptrs}ttrs}}} }}}} }   }}}t}e  tttJ-}o^V͒@Rut++*+"+!ES >!݆}݆o|ݎg*eSRڒ>6#:*OR!"7!7:*2**@*"^!*!*!*!*!*~˯O!* ˖7L ˎ/M ˾'W !*"=!T"b!T+,N,( )(U+~L$U#~=$U#N,()(#ttt ttttttabcdeXYZ[\]^_`!"lܹ7'(o58/01234qIH U J蠔)*+,-.p=LNMO̫PͬέУSTQRrK#$m⟝W V?@ABCDEFGst9uv:yz{;|}<> ghijk6wx׀~f%&n#$YM*~>!*NR~:*w0SV0S!9" I˾!DI(!bEI +6:*w 6[+!BQ*+N DG(#0S#G,( #0SN, >*6"9!9>͢9!9~#(69*6"=!=6!9[+ z>XTINVALID OPTION: *@*"^<?!1>ұ>c?Q?!@>N :F,0O,#!=:TW(ͲX*^<"=ͲX:?>2S<@[6!`<:TG(ͲX&*^<"b<ͲX:?>2noL(>lX!p>"b<[z>Ss>:*W(d!=:TO(ͲXC*^<"=ͲX:?>2=!@>=~O 8(!=n!X(!X!=(044X!k>"=[z>Sn>:*w(2S<@6:*o(2S<@6!>:To(ͲX*^<">ͲX:?>2>!>6X!u>">*z>R(S*~>~QE~!"D"D2D2D~( }(( >!D .x2D~~( }(( >!D .x2D~!.K^F!L~2D{K_!L~2D~_!M~2D~EʈFʓHʫI~((_(M(v!**D"9͗;*+#N,(9N,( :(D:D((!9>͢96[+~4[+*+>'~' #~'4*+^ͬ6*+#~*#F#G,( N, #N,(x˯IL(EYH(7M(P(L6#~˯!*F ˆN #~˯!*F ˾N +> (EY> AY6!D> .~ :D2+x :DÃF :D9Sx>:S9gS*+R"96:*o(*+[+͏@"=[+">S=S9:*w(**+"="6*+͏@"6[+"6*+"6!"6"6*+"~>"=w#w#w!"+*@*"^<*+[+͏@">!>">M?.OBJ.obj vnfô>6n f 6!ut~0$UGXo$U˯A8:$U0o#o+#F Nt :DF a :DFT :DFG :D'K*D K:D,K:D'K*D9 K:D(6 :DG:D*+wx :DG:DF %:D'K*D K:DG:DN!!! :D'K*D K:DG:DÌH :D'K*D K:DG:D  :DG~ ( p(:D:D  :DG~ :D( ~ :D  :DFG:DV *:D'K*D K:DG :DNG:D( ':D'K*D K:DG :DG:DÌH :DF G:D :DF G:D 2:D'K:D(!D4*D K:DG   D800910820715DbD]ASM2KTO.MCZ2.RIO.USERs:DG:DÌH 8:D( ( :* 6 *DV^2DR~ KE:DE 5:D( ( :* 6 *DV^R~ KE:D K:DG:D*+w#px =:D'K*D K:DO:DF G~p( (:DâI:D âI 7:D'K*D K:DO:DFG~p( (:DâI:D âI :DG:DO:DâI :D2D:DG:DO:Di 1:D'K*D K:DG:DO~p( (:D;:D 4K:D'K*D K:DG:DO~p( (:D:D *+w#p#qx G:D'K:D'K*D K*D K:DG:DO:DW~p( (:DJ:D J :DG:  D800910820715DbD]ASM2KTO.MCZ2.RIO.USERsDO:DW:DJ :D2D:DG:DO:DW:DJ :DG:DO:DW~ :DJ J ":D2D:DG:DO:DW~ :DJ J 5:D'K*D K:DG:DO:DW~p( (:D\:D U \:D'K:D'K*D K*D K:DG:DO:DW""":DW~p( (:D:D *+w#p#q#r6|( | R0~6 ɧ6      @Fp  )94#35 +;/7?'v680( :2*!1"WG9 )9 )JZjzBRbr#+D &o8>(.g@Fƀ@AFEMO_Fp456{K[*!sCS"&>.FƆMMN!N0NANNN^NoNNNNNNNO$O"=6 @͏W6@:*g 3!=60[+S= S=@*+[z> s#r6.@R\*V"=6$@!*~2M~( :*W(~ ˆY͡T~(:+(c!+Y͡TW~8(( D!*~ =!B*~͒,#~͒,~(&###INVALID CHARACTERSINVALID OPCODEINVALID NUMBERINVALID OPERATOR SYNTAX ERRORASSEMBLER ERRORUNDEFINED SYMBOLINVALID OPERAND COMBINATIONEXPRESSION OUT OF RANGEMULTIPLE DECLARATIONMACRO DEFINITION ERRORUNBALANCED QUOTESASSEMBLER COMMAND ERRORMACRO EXPANSION ERRORMACRO STACK OVERFLOWINCLUDE NESTED TOO DEEPGLOBAL DEFINITION ERROREXTERNAL DEFINITION ERROR!NAME DECLARED GLOBAL AND EXTERNALLABEL DECLARED AS EXTERNALINVALID EXTERNAL EXPRESSIONINVALID RELOCATABLE EXPRESSIONEXPRESSION NOT ABSOLUTEU#G8[+͊Y:D( !R*X(Rp:*W *+"X!T*͢Y*+> # !bB0b#Z*~ ͰT:M2*!*ͰTY*M#"MB*T~=_!M^#VN#TͰT> !B*wC*v6 :*G_(:M_ ͣ@ͱ@:*O!B*[+~*MR̳V# S+!UP*~>~~!*!`<@6*+"+"b<*+͏@"d<"M*+"=*+͏@"6[+"6!=6@!"6*+"6*+R"+:*W6#T]Kz> 6"M*V"V:9_ *9[+R;*+[+:*W $R,"9*9 +x(*+"9կR,"96"97Z2X͐U:*WVeNDEFINED GLOBAL(S)WARNING-ORG IS RELOCATABLE'WARNING-ATTEMPT TO REDEFINE DECLARATION *** @ :*W*M~(I(E( :~[M*VR0͸R*MRR*+R"+*M*M~~ ~w~w*+~O:D  +[VR0S+R~wɧ™QmpF*MR84Rp[V*+R*+sR&T^RV^ut͸R[V*MRx2M*M͎R:Mw*MR:Mw&T^RV^ut*+~[M*VR8(Rw*+~w~w*+R[+sRR͸R2M*M"M*MR[+*M͎R*MR: U!>">M?͠V:*OU:*w5U:*o/V!"+"M*+"=*z>"=!=6@*+~("96@*+[+͏@"=[+">6*~>"~>[>R*+"~>"=!=6 @[+*+͏@"=">!`<@[+!=@6*+"="+*z>R"V*z>"=!"V"V"V:9_ *9K9XG!>g( 6@!9˦6@*+">*9">6 @*+K9X!>6@0[+*+R*VRDM(|W!=@[+*V#"V*+:*(p#6#[+:*(z([+z< RX[VX*z>l&})[V(͒-X[+X6#*z>l&}D800910820715D DOASM3KTO.MCZ2.RIO.USERs)[V(͒-Xs#r#x ~(#(~iX~;X7˾KV+X[VSVXywͫX#xwͫX˾+˾X~#<(*[VSV:* X~ͫX#~ͫX+#/2X[+*VR |WS+*V#"V~ ( #xͫXyͫX~ īX# - LOC OBJ CODE M STMT SOURCE STATEMENT ASM 6.1PASS 2 COMPLETE ASSEMBLY ERRORS d ͒,#> !B*wC*v!Y*X^VOR8 y0w### ~0q#:*G!+4:+Ⱦ5Y:*G!B*6 #ͰTD800910820715D DOASM3KTO.MCZ2.RIO.USERs*+#"+"X!B,͢Y!+B*HͰT!YB*HͰTB*ͰT2+K|>!CXKz>CXCXCYCYi`C Y!CXMD8 #"YK9CY:*O!X?[w!X?[!Y?[!Y?[o! Y?[*+[+Rڒ>"Y["Y_W,"Y!Y![+ *+*Y^J-}o^VxĒ@Rut++*+"+!X >!݆}݆o|ݎg*YRڒ>6#:*WS!=R\!*v!=R\:X(!*~2X*~>6qT:*O(*+6#[bR\:*o(*96#[=R"=!=@!*NCROSS REFERENCE SYMBOL VAL M DEFN REFS!B*6 #ͯD*+#"+"SD!B,K!+B*HͯD!DB*ͯDB*ͯD2+!+4:+Ⱦ5]D6 :*_(!B*~w#~wͱ@͢>:*O!B*[+~*MRD# S+!`<@[b<"KD[J!R:3D½E!R>0>###*KD"ED&o%%%"CD[KD"GD;D*GD[CDR"ID;D #0(*ID[GD*ID"GD[CDR"ID[KDR*ID0!;D[GD*EDR(!JE8E!R>0>###*KD"ED&o%%%"CD[KD"GD;D*GD!`Cd<[+Sb<6@*b<>Kz>B+60 Sd<@*+ q#p6.@R\666@[CDR"ID;D˿N˹ #0(*ID[GD*ID"GD[CDR"ID[KDR*ID0!;D[GD*EDR(!EE*4D[QDR8 !>@*+"4D~*4D#͒,#͒,##>R~ >X#~ > ###~(>G!>6@6 *+[+R[x>>_>g{o">S>"QD@*+R"4D!=6@6 *+"6D[+͏@"=[+S=">MF G!D+]DGGWD*6D #:B*.0GG:4D̞DK*6DB*H!:D!U*"MD*MD*R8 G͞DK*6Dfn˼"SD*MDK#"MD!:DV˖hF͞DKB*͋FH"MD[MDͯD!U*"MD*6D[>R8 !=@*+"6D!B*WD!WD~(~(˾7##˾+˾8!P**4D~#< !U*:*W[+S+S+S=*9"8DRR0 *+"8D!"OD:9_ *9K9AI>g!>( 6@!9˦6@*+">!">!>6 @*+K9AI0[+*+R(*8DRDM($I!=6@*z>ut6 @*+ [ODs#r6@*+[+j@"=!=6@[+x ~( #~XI7#˾++ͬI*OD#"OD~ ͅI#˾ͅI#ͺI~͒I#~͒I[+*8DR $IS+~ ( #x͒Iy͒I~ ĒI# d :IG+L!=:IG23D+L!*N #^!`<@*+"b<"+!"+:+2+0!`<*+"b<*z>ut6@*b>+"+6@*+[+͏@"d<>2a<[+"M*|>>%=02I*z>"I"I>%=02I2I2I2I2I2I2I (> 2I2I*9"I:*O !I_ K*+[+Rڒ>"IJ"I_W,"I!I![+ *+*I^J-F<%^VRut++*+"+!I >!݆}݆o|ݎg*IRڒ>6#:*g(6W(2!=60[+S= S=@*+[z> s#r6.@K:9_!>K:*o!=K:*O*+6#[bCd<[+Sb<6@*b<>Kz>B+60 Sd<@*+ q#p6.@K666@!B*C*G6 !I*SD^800910820715 NBUG1.OBJLE.OBJOUT.DEBUG.CMDVOR8 y0w### 0y[J!:){@L>=2JK J " J<"JM"J͒M666$@nf"J̀M6@* J~(* J7RDMbk66@*J:J_R8g(e"J"J:Jw66&@WM6 @͒M̀M6 @*J"J* JE6@*JR"J ͚M:Jw66&@͒M:J2JM"JWM6 @* JE͒MWM6@WM6@[Jz###W:JG!ut* Jut66* Jut6@̀M6$@WM6@̀M6&@WM6@G[J!!9^;f( !>6@J*+[+S JR"J!> 800910820715 NBUG1.OBJLE.OBJOUT.DEBUG.CMDj $ĐH$CG*E>Ǧw!D˾v >XI2G;!H"A > ˶*E6#"AÌ*A+6"EÝ!DnjYI>:1 m` @ @0G~ ( & #(x,(#:e 0:D`()!I6):e:D`("(!Iq)&ɯ< (,(^A @@ ( ( ^( (" "E:D`(IR #"EGR#:@0}2@*EF#fhgw ( Ƀ,w5Z l~*k_SR|( 2C 0O!Df!(! ;:(V!Df ͨ ʹ*"|(*":C< 8,߂ekH! $ D! @K:(:CF: ::F:!Df( 2C jD*E:!:1~ #,Dl@ B0c$:D`((:e !*+:I(6+6-D|>)!I&> *w#"!"*A >2@k!G"A >#@,lLa$@"$&&2@!"2D!M"LH;*w#p#"X*MR+F+~"XOx D:@!>D800910820715 NBUG2.OBJLE.OBJOUT.DEBUG.CMDlB$HB"!D*E#!D˞>XI;> YI£!D~`>(>)> >*E#"E~#fom`H`F```@i>(*E#~|>)*E#~|$*E#Ny**M ##i*E~8a> >:/*EG:wDYl$bH " Q:@!G ͑(U" M> ( A͑) 7)*E#s#r( "y*E#w ( ɂm@ 00BBBb` () ])G|( Mx)([MR|( >~Zm$F#~#x~O! ~#G~#p~80!=G~#( !GO:T(>>"Ry<2T*R~#@:*#~##w#!j^#V#|p#~怱wZeLD A (BCLD (DE) LD A (DEJP (HLLD SP HADADSU߂mSBANXOOCJCALLIOUSBC HADC HSEREBIRLRRRRSLSRSRDJNJJR NJR JR NJR ADD HINDELD HLD @GLOBALSYMTAB IOBtRSWITCsMREGoWREGkSTEND BUFEND NXTBYT INCHUINCHOUTDSTeOUTADROUT16OUT8OUT4CURLOCEVAL BUPhOOPSMDBEGYIORSTPTYFLGPTYPUTPTYGETCIASSYDISAl(= G[^,  !(.:;[\]^ =yJ]4?^Beos Y g*T Y ,!(.:;[\]=cQL^ jy   Y c ,(.:;[\]y5ysMMYM\;Yo/>ezY* [R *+"|x* ??B (ʹ!OK ^#V!_ s#ry?*B: jm@IH HD@*!"ʹ a" ~2 6a*"h!"*q"*>Y*h">*:w*"q*+"|!(!xm"HI$H$!YI-801103-6-!z"e!t" " 2g1k* UND 1k* OVF1k*??1k* *!Ưukm@A!@@2!!"ͽ 2d(:<2=O! s#r:!(G:d^#V#N#F#~#foA(#M^#fka{ m H@[ * R( ~#" t* RU* (˿ z(H z(Htw#!gF( Z(!p! CmA "    " +X~ X>ͧ> ͧ>ͧ* +" ^\*e 0# (2 (. >$ͧ>>^ͧͧ >\:<2k  @I@M*~(( (####~#* |: w!" * :[ !\ Ͳ * !t+~#! a8!| 6 t[ BmB &$ "A$:[ 2 O!\  !t" " !" " X >ub>2M !"N "P "W !L ! ˎ* : ! Ͳ * @lII&I BD!  R}2 ! ͍M* RM!t" " * " ! ˆX(s! NMY* [ R(<R8(m@DB@@* F#~# >2V Ox ##W(##[ R8* [ RDM!t" (S [ " ##: W(&O G(%:  lj`!B $> ͧ> ͧ:(Gͧ2DM!7^#V#B(< O!G !ʹh!o*Ÿ/Cm$H $B@C!_ N#F xp+q*"h!7"*w+""~26>G>^>>֯2ʹ*"͓:rG:q(>21sl"$BHA {**o* [R *+"|x* ??B (ʹ!OK ^#V!_ s#ry?*B: mI$ a$ B** *M/^!7G>^#V#z( = *h">:*w#6:rG:qG( mBD" ! ˎ(G[ yS S OG[ yS "  M\Yw#\Y9mH$A $ >2L >2M 2Y !Y "W !t"N !L :V w >2M >2Y !"N "P !L :V w*DISK ERROR :V sY:V ^mH @ * "N " "P > 2M !L :V w(=*P |"H 2J ! * R 't͵~#=G~#txK [  `i[  SF `i[F R0T]N #y#^Zm H$ Mʹ*l:( [!_ s#r!O ^#V!_ s#r͓,!7G>^#V#z(>= *!"*"h!"mI D!&*q"*>Y*h">*:w*"q*+"|!(!M* S ** *M/>0G^Y* [R *+"|x* ??B (ʹ!OK ^#V!_ s#ry?*B: O M/^!7G>^#V#z( = *h">:*w#6:rG:qG(4  x(#>ɕG[ yS S OG[ yS "  M\Yw#\Y9H "W !t"N !L :V w >2M >2Y !"N "P !L :V w*DISK ERROR :V sY:V | f.sym.SYMtt:V w(=*P |"H 2J ! * R  ͽ ( M*s#rY MlIA JH MY@!"~#fo" ͵* !q> ͽ ( M}(>2qY*͠kM*Y!fMmD I D$IM*s#rY!76#Y*6#6Y|M}MO!G !7 !"*[RM*[g[*: B"ͽ "G: >2xɿ/yS S OG[ yS "  M\Yw#\Y9 lB!B!I       ~2#~2Y       ~2#~22*": g* mB *$DDD! !g~ !gˆͩB L ^\.:(;[]` f l Yr v z ~ ͝ Y͝ s ͝ Ø ͊ ͊ ͊ ͊ ͊ ͊ :3~* + mI $ "23* :2 :: [*s#r:*w![O2@:O! ^#V   &  @ & :23*`m @@ RYlBBMKk!o> #= /*#"[R8Y*|M}M2 FY VYLmI$HI$B^Y:!͵* ! ͵* * ͵Yͭ>22*"*~#":Ϳ(=!5 * *~#"F8m$ @ H 8 (t>.t:!5 *| Y:=2(* =ͭ*<">2*^#V#"͵* ͿYtj@$ HB! !5 [*RY#"*+"|ʹ*͵* Y*[#RMM[+"g[*R8[ l@ " $" ~\ >^#V"͵~\ (23/^#V*"R8 ͵*'o&"@*Ȃj lI $I  $"͵Y:2 :3O * "@*$ ʹ:(D*|?}?O! ^#V#~i" ͽ ʅ M kDRI$I$I$@IM}*wYtvuxwposz|{~}yrouw{}>K!_Y>NOAmIH$!OY>2>B!72Y:sY* PC A B C D E H L F IX IY SP A' B' C' D' E' H' L' F'   m I"[R0 [*Y[*Yʹ**: ʹ!˾>G^!ˆW"o"[""s1٢xm $ *[[s"s1k><2q*N#F#^#V#B R?|} 80tG 8{Ok@@$A0 *'tx*<*>^#V#og͵:^#V#{~:/~#t> tF#:OxV(G):P A::*RY#"*+"|ʹ*͵* Y*[#RMM[+"g[*R8[ 181020582071500#0SNBUGX.LINK.CMDJOUT.DEBUG.CMD[aH$* Main :sG͂* Alt :yG͂Y!6Px(6M##6Np(6 ####6OP(6E##6N@(6 * Z P Cs1٢ [s"s1k><2q*N#F#^#V#B R?|} 80tG 8{O'tx*<*>^#V#og͵:^#V#{~:/~#t> tF#:OxV(G):k *RY#"*+"|ʹ*͵* Y*[#RMM[+"g[*R8[v PLINK -MCZ2.RIO.SUPPORT -MCZ2.RIO.SUPPORT.HOOKS $=8000[ $=#1] NBUG NBUG1 NBUG2 NBUG3 ( N=NBUGX.8000 ST=0[ N=NBUGX.#1[ #2[ #3[ #4[ #5 ]]]]] ) b 44* Main :sG͂* Alt :yG͂Y!6Px(6M##6Np(6 ####6OP(6E##6N@(6 * Z P Cs1٢t[s"s1k><2q*N#F#^#V#B R?|} 80tG 8{O'tx*<*>^#V#og͵:^#V#{~:/~#t> tF#:OxV(G):k*RY#"*+"|ʹ*͵* Y*[#RMM[+"g[*R8[000000821012!  NBUGX.8000Z2.RIO.USERs!%)#'+/37-159;?C= 181020582071500#0SNBUGX.LINK.CMDJOUT.DEBUG.CMD000000821012!  NBUGX.8000Z2.RIO.USERs!%)#'+/37-159;?C=!YI-801103-6-!z"e!t""2g1k* UND 1k* OVF1k*??1k* *!Ư2!!"ͽ2d(:<2=O! s#r:!(G:d^#V#N#F#~#foA(#M^#fk׀a{ [*R( ~#"t*RU* (˿ z(H z(Htw#!gF( Z(!p! "+X~ X>ͧ> ͧ>ͧ*+" ^\*e 0# (2 (. >$ͧ>>^ͧͧ >\:̓<2̓ > ͧ> ͧ:(Gͧ2̓׀DM!7^#V#B(< O!G !: w!" * :[!\Ͳ* !tԇ+~#!a8!|6 :[2O!\!t""!""X >ub>2M!"N"P"W!L!ˎ* :!Ͳ* !ԇR}2!͍M*RM!t""*"!ˆX(s!NMY*[R(<R8(*F#~# >2VOx ##W(##[R8*[RDM!t"(S["##:W(&O G(%: ꂇ!ˎ(G[ySSOG[yS"Ӂ M\Yw#׀\Y >2L>2Mh!o*ׁŸC!_ N#F x̂p+q*"h!7"*w+""~26>G>^>>֯2ʹ*"͓:rG:q(>21s{**o* [R *+"|x* ??B (ʹ!OK ^#V!_ s#ry?*B͒:*Ĉ* *ͰM/^!7G>^#V#z( = *h">:*w#6:rG:qG(Mʹ*ׁl:( [!_ s#r!O ^#V!_ s#r͓,!7G>^#V#z(>= *!"*"h!Ճ"*q"*>Y*h">*:w*"q*+"|!(!2Y!Y"W!t"N!L:Vw >2M>2Y!"N"P!L:Vw*DISK ERROR :VsY:V*"N""P> 2M!L:Vw(=*P|"H2J!۠*R 't͵~#=G~#txK[`i[SF`i[FR0T]N #y# x(#>.sym.SYMttG~t#[Oxy 82ߓ[2xM:ߓ- R+ * 4O:M* S *Ĉ* *ͰM/>G^YɄ= G[^,  !(.:;[\]^ =yJ]4?^BeҐos͋Ëȋҋ׋Y܋Y ,!(.:;[\]=׏cQL^jyY c,(.:;[\]y5ysMMYM\;Yz*!"ʹ؅ ׁa" ~2 6a*"h!"*q"*>Y*h">*:w*"q*+"|!(!xM*~(( (####~#* | +-*/00'A0 :8?[8 _a8{0ɧ!9G_Ӂ- Ӂ+ Ӂ8 o#o+$ {M*Ɠ % {M*ȓӁA ={M!pӁ (L\(H!;w#׀(2:;R{͍.::!FWxz !B' {( Kʓ ӁC׀o&0:8AG8 ag? 0|M!0gi|M!jR?0jZ8(giɯ2Г22׀h a8{0ͦ22(׀ͽ"ѓG:͓ >2Гxɿ~2œ#~2͓Y[*R8[R0 [Ó*Y[*Yʹ*Ĉ*:œόʹ!˾>G^!ˆW"o"[""s1*[[s"s1k>♒<2q*N#F#^#V#B R?|}͒͒ 80tG 8{0 *'tx*<*>^#V#og͵:^#V#{~:/~#t> tF#:̓OxV(G::* Main :sG͂* Alt :yG͂Y!6Px(6M##6Np(6 ####6OP(6E##6N@(6 * Z P C~2œ#~2͓2Γ*"Ɠ:œό!g~!gˆͩB L ^\.:(;[]`flYrvz~͝Y͝s͝Ø͊͊͊͊͊͊:3~*Ɠό23*:2 :Г:͓ [ѓ*Ɠs#r:ѓ*Ɠw![ƓO2@:O! ^#V&@&:͓23* ~\>^#V"ȓ͵~\ےͰ(23/^#V*ʓ"ȓR8 ͵*'o&"ȓ@*"ȓ͵Y:2 :3O*Ɠ "ƓĈ@*Ɠ$ʹ:͓(D*|?}?O! ^#V#~i"όͽʅ M}*wYtvuxwposz|{~}yrouw{}>K!_Y>N!OY>2>B!72Y:sY* PC A B C D E H L F IX IY SP A' B' C' D' E' H' L' F' tvuxwposz|{~}yY2⓯2:0t:^#V#|  :䓷( * :B Ĉ͵:<(2* :t!O!_*|?}?O ">όͽ( M*s#rY MY@!ʓ"~#fo"ȓ ͵* !q>όͽ( M}(>2qY*͠kM*ׁY!ׁM*s#rYǘ! ǘ!"e> 2 0O!f!5(!K :.(V!f N Z*"3"(*3!76#Y*6#6Y|M}MO!G !7 !"*[RM*[g[*:RYlBBMKk!o> #= /*#"[R8Y*|M}M2ϓ FY VY^Y:!͵* !۠͵* *͵Yͭ>2ٓ2ّɑ*"ݓ*~#":Ϳ(=!ٓ5 * *ݓ~#"ݓ 8 (t>.t:ٓ!ړ5 *ۓ| Y:ٓ=2ٓ(* =ͭ*ۓ<"ۓ>2ّٓɑ*^#V#"͵* ͿY!ٓ5 [*RY#"ۓ*ۓ+"ۓ|ʹ*͵* Y*[#RMM[+"Óg":< 8,:1(::2 :1:1:2û!f( Ͳ2 *:0!/:.i~ #ͧͧ:`((:.e !*+:(6+6-D>)ͧ!̛> ͧ*w#"!t"*ͳ>2!"ͳ>2!t"2!"*LHͶ**w#p#"***R+F+~"*Ox ͧ:!t>!*#ͫû!˞>gXIͶ> gYIqI!~`>(͓ͧ>)ͧ> ͧ>͓*#"~#foĈ>(ͧ*#~>)ͧ*#ͫ~$*#NyЙ*Ɠ ##Ĉ*~8͒> ͧ>û:0/*뛦G:/w»:!Ͳ7(Uh͇ M>û׀( A7l) 7ͽ*#s#rͫo( hy*#ͫw׀( o() ͽG|( Mxͽ([ƓR|( < } } *#wͫhͽ(| }'''8G*>Ǧwë!˾v >XI2Ͷ!"ͳ> û˶l*6#"2*+6"C!nYI>:.iˀG~ ( & #(x,(#:.e 0:`()!6):.e:`(ho(!q)̛͇ɯ<׀ (,( ( ( ^(׀ (hͳ":`(R #"훷R#:曽0}2*F#fhDHSAư112233(Cx.KB>>~F#~#x~O!` ~#G~#p~80!o=G~#( !aGO:(͟͟"y<2*~##~##w#!ˠ^#V#|p#~怱wIRƟABCDEFHLIX IY SP PCA' B' C'D'E'F'H'L'F'IHLBCDEHL'BC'DE'WORDkMASKoRSWITCHsrswitchsۙÙxN]C2GZ$К'/7 ? v +,-./ 01238 (0s ss s``"S2U*:@i``ۀi܈iiݘiiiiixxxrŃr̀ÀUۀƀ΀րހǁW ˀ ݀ (08 (080 0 (08DEMFV^go!" #%A810205820715EBF NBUG3.OBJOBJOBJOUT.DEBUG.CMDAEAIM$&'G(O)W*_@`A`BsJsKsCSsiĀi@iiiii i(i8iNORLCRRCRLRRDACPSCCCHALDEEXRENERETRETIMIMIMRRRLLDLDLDILDDCPCPCPICPDINININIINDOUTOTIOUTOTDLD I LD R LD A LD A EX AF AFEX (SP) HEX DE HLD (BC) LD A (BCLD (DE) LD A (DEJP (HLLD SP HADADSUSBANXOOCJCALLIOUSBC HADC HSEREBIRLRRRRSLSRSRDJNJJR NJR JR NJR ADD HINDELD HLD POPUSIN ADD ADC SBC RS(HLNNPPB A810205820715EBF NBUG3.OBJOBJOBJOUT.DEBUG.CMDAEAIMQ 180091282101200#0SGRHRELINK.MCZ2.RIO.COMMANDOBJMDQGQKRSWITCMREG WREGGLOBALSYMTABv PLINK -MCZ2.RIO.SUPPORT -MCZ2.RIO.SUPPORT.HOOKS $=1400 -MCZ2.RIO $=2500 -SPOOL.CON.MAIN -SPOOL.CON.INT -LAST_MODULE $=#2 #1 ( N=#1 E=0#2 [[[#3 [#4 [#5 [#6 [#7 ]]]]]]] ) b mABCDEFHLIX IY SP PCA' B' C'D'E'F'H'L'F'IHLBCmCDEHL'BC'DE'WORDMASK RSWITCHrswitchiting functions). However, the procedure file subtype allocation scheme defined in Section 3.1 specifies that all RIO Version 4 procedures must be subtype 0 (null), or 8 through B, inclusive.  5-1 In order to run INSTALL on one of the three terminal- dependent procedure files, the user must temporarily set the procedure Q 180091282101200#0SGRHRELINK.MCZ2.RIO.COMMANDOBJMDQGQK file subtype to either 6 or 7 according to the following table: Procedure file RIO Subtype INSTALL Subtype SP P8 P7 DSP.START  P8 P7 DR.FFS P8 P7 The format of the command line is: INSTALL where is one of the three terminal dependent programs and is one of the six terminal types supported by RIO Version 4. Note that does not include the "t.dep." prefix of the terminal definition procedure file name; but does require lower case entry as shown. For example, to install DR.FFS to run on an ADM-3A terminal, execute the command sequence:  errors to files when executed from within a DO command file. This seems to be dependent upon the address at which DO is mapped and can usually be overcome by relinking DO at a higher address.  SP.STATUS always gives an error if re-executed from a sub- directory without being reloaded. SP.DELETE will not continue through the list of files queued even if all files have been spec %SET SUBTYPE OF DR.FFS TO 6 %INSTALL DR.FFS adm.3a %SET SUBTYPE OF DR.FFS TO 8 DR.FFS is now configured for an ADM-3A terminal, and a DUMP of the first few bytes of the file will verify this. However, INSTALL does not change the file name to reflect the terminal configuration. 5-2 ified by giving the parameter '*', after the first deletion from the queue. If a user attempts to ACTIVATE a SDS that is non-operational the user's station will seem to hang, due to a long time out interval (approximately 4 minutes) in the network driver. If an SDS becomes non-operational the network manager should remove the entry for that SDS from the LNSTs of any other SDSs on the  SECTION 6 LIMITATIONS OF 4.2 The read protect property of files is not implemented in $FFS or $SDM. Thus if a user types SET PROPERTIES OF FILE TO WER  the file will be set to WE. This can be verified with the CAT command. ASM 6.1 does not support dollar signs '$' within a label as previously documented. It also occasionally produces  network (using the NAME command). CAUTION The shared data manager software is extremely sensitive to errors C4, C5, C6 and F2. If your system has given you problems with any of these errors in the past, or does so in the future: STOP ALL WORK, MAKE BACKUPS OF ALL USER DATA FILES, USING FILE LEVEL - NOT MEDIA LEVEL - BACK. CAUTION Given the change in use of the SYSGEN command (section 3.3.3 of this note) the BACKUP and RESTORE commands both have to be used with care in  that they ask for a drive number to be specified for their source, or destination as appropriate: THE REPLY TO THIS QUERY MAY ONLY BE THE HIGHEST NUMBERED PLATTER ON THE SYSTEMUP TECHNIQUES. THEN REGENERATE THE SYSTEM FROM YOUR MASTER DISCS AND VERIFY THE CONTENT AND INTEGRITY OF THE DATA-BASE BEFORE CONTINUING TO WORK.  To allow any of these errors to persist any longer than it takes to backup the relevant files, is to destroy the integrity of the filing system. The effect of these errors is system wide and all AND MUST NOT SPECIFY A DRIVE WHICH IS A PART OF THE FILE SYSTEM. If the COBOL logical I/O package (RMCFMS) is running, the command 'STOP RMCFMS' must be issued before any BACKUP or RESTOR commands can be run. Use of BACKUP's Q=Y/N parameter occasionally results in an error D3 if the backup platter's directory holds the maximum number of users should be made aware of their catastrophic nature. 6-1 DSP does not always honour a request to delete a data file after printing. This is thought only to relate to some files created by the Printer Emulator and is non-catastrophic. The SDS will not run correctly if it is write protected. The only allowable circumstances for write  entries (255) and an extra file is requested to be backed up. BACKUP.CAT will show that there is still space on the disk for data and therefore the D3 "Disk Full" can be confusing.  6-2 SECTION 7 WHEN TO RESET AND REBOOT It is possible to get a network bootstrap failure message which saysprotecting SDSs are during media copies or format operations. THE SDS MUST BE WRITE ENABLED DURING ALL NORMAL OPERATIONS. It is not a good idea to DEACTIVATE the device that a  station was booted from since that device is handled specially by RIO and it cannot be re-activated properly. The preferred way of handling this is to reboot the work station from the device required: "Can not boot from this station. Trying another Station..." this message implies that the station (SDS) which responded first to a bootstrap request has been unable to open the files  required. A new boot request will have been sent over the network in an attempt to boot from a different station. If no other SDS is available on the net the work station will appear to hang  for about four minutes until "Network bootstrap failure" appears at the console. If this occurs more than three times after "power-off" resets at a specific node, or is happening at all nodes on a net, the SDS should be rebooted. It is recommended that work stations should only be rebooted when there is strong evidence of malfunction. This might be indicated by misbehavior such as the inabi Subsequent resets without power-down will take approximately 5 seconds for disk activity to be seen. 7-1 SECTION 8 PRINTER EMULATOR The Printer Emulator is a device which interfaces to users as though it is a driver for an on-line printer, but actually controls the buflity to invoke RIO commands such as LADT. Shared data stations should only be rebooted by authorised personnel. The need to reboot an SDS is demonstrated by malfunctioning "seen" by several users. AN SDS SHOULD ONLY BE REBOOTED WHEN ALL WORKSTATIONS HAVE BEEN STOPPED FROM WORKING WITH IT OR ARE DEEMED TO HAVE LOST THE ABILITY TO COMMUNICATE WITH IT. FILES ARE CLOSED AUTfering of all data received into files which are subsequently "queued" for printing on MCZ-2 network-connected despooler(s) of revision level 1.90 and later. 8.1 Overview of the MCZ-2 Network spooler/de-spooler The suite of software components which collectively provide for the spooling of data, and the sharing of one, or more, printers between users who are interconnected by Z-NET, OMATICALLY AT REBOOT TIME AND WILL BE CORRUPTED IF AN SDS IS REBOOTED WHILE WRITE OPERATIONS ARE IN PROGRESS. Work stations will require rebooting after the SDS has been reset, as there is an implied LOGOUT performed for all current users by this process. A first time (power-on) reset of an SDS now takes approximately 10 seconds before any disk activity is seen. y}}@ 820715820715z DIRECTORY yy} and have common access to files residing on a "Shared Data Station", uses the concept that lists are maintained of files whose content is to be printed. Those lists are themselves  maintained in files (so-called "queue" files) which are accessed both by utilities which add "jobs" to the queues, and the de- spooler(s) which actually control the printer(s). Each entry intDIRECTORYyMCZ2.RIO=MCZ2.RIO.SUPPORT[MCZ2.RIO.FFSaNIMw MCZ2.RIO.OBJMCZ2.RIO.SUPPORT.OBJSPOOL.CON.INT.OBJSPOOL.CON.MAIN.OBJLOGINLOGOUTACTIVATECOMPARECOPY.DISKCOPY CRTDIRDELDIRDATE+DEACTIVATE-DEFINE1DELETEADISPLAYQDOSDUMPUECHOcERROReEXTRACT}FFGETIMEHELPIMAGELADTMASTERMOVENAMEPRINTPAUSEPROTECT RENAME RESTORE_TABSSAVE_TABSSET+SETCD7SETPW=PDCLPMSPD[ NOTE.TO.USERYSETUDSTATUSWHO#COPY.OBJ3DO.OBJ9ECHO.OBJC IMAGE.OBJQPAUSE.OBJ[CAT]ASM}ASM2ASM3NBUG1.OBJNBUG2.OBJNBUG.OBJNBUGX.LINK.CMD NBUGX.8000NBUG3.OBJARELINK.MCZ2.RIO.COMMANDQHELP.DAT.00HELP.DAT.01HELP.DAT.02HELP.DAT.03HELP.DAT.04LNST#LAST_MODULE.OBJ-DUMMY.FFS.OBJ3HELP.DAT.055FORMATyEDITPLINKOS.INITSORTMERGEMCZ2.RIO.SUPPORT.HOOKS.OBJ/SortOvly.1?SortOvly.2EMergOvly.1MSET.PRWPATCHogetfile1CONPLUS.RIO3RCV2.RIO=o a queue-file takes the form of a set of explicit instructions which specify the users requirements. These include the type of printer, type of paper, how many copies, any necessary page headings, etc, etc, as well as the name of the file whose content is to be printed. When users wish to queue a file for printing, they are given the choice of interacting with a screen-oriented utility which   allows all the various options to be specified, or may prefer to make use of "format" files. These are files which are created, or modified, by using the same screen-oriented (often called the  "menu") phase of the spooler utility. Format files contain images of the instructions for printing data files, and, after the substitution of the name of the file which is to be printed, may be used ch running copies of $PE. This is achieved by $PE naming every data file with a "root" followed by an "extension". It is the extension which ensures that every filename is different. Several files may have, and indeed are required to have, the same root. Filename roots are user specifiable, and are fundamentally important to the operation of $PE and the de-spooler(s), as, as an alternative to the menu phase. The Printer Emulator is critically dependent on the use of format files, as it cannot directly interact with a user. 8-1  8.2 Overview of the Printer Emulator $PE is ACTIVATEd in the same way as any other RIO device driver, and may conveniently be assigned to RIO's unit 3, which is the usual unit while $PE is creating a data file having a name starting with the currently specified root, and having a unique extension added (known only to $PE itself), it will later queue that file for printing according to the format specified in another file whose name is "root.fmt" ie: it will attempt to read a format file whose name can be constructed from whatever root name it is currently usin for data required to be printed, or to unit 20 which is the unit used by COBOL for its print output. $PE behaves as though it is a printer driver, ie: programs which generate data for printing are "fooled" into thinking that they are communicating with a real-time printer driver. However, rather than sending the data it receives to a real printer, $PE places that data into a file, and subsequentlg. Therefore, by the issue to $PE of a given "root" name, the user indicates the name of the format file which specifies precisely how his data is to be printed. Some programs are able to generate and send names to printer drivers, whilst others are unable to do so. $PE "remembers" the most recently received root, and will continue to make use of it until it is explicitly rey controls the addition of that file to the queue for printing by the regular network connected de-spooler. With only very special exceptions, all files are referenced by their own, unique names, and, as files are assumed to be stored on an MCZ-2 shared file system, it is necessary to ensure that the data files created by $PE always have unique names, even if several users are easpecified. This may be from a running program, or by the action of an operator using the RIO DEFINE command. $PE also has a "default" name embedded in its code, so, immediately after it has been ACTIVATEd, it is ready for use. That default root name is "PE.fmt". To redefine this as the name to be used by $PE key the command line: %DEFINE 3 $PE/PE  8-2 8.3 Examples of the use of $PE 8.3.1 In conjunction with RIO utilities We will assume that we are seated at the console of an MCZ-2 node which isconnected to a Z-NET, and on that network there is a shared data station. The operating system is RIO, at revision level 4.n. We will further assume that somewhere on the network there is at least one node to which is connected a printer under the control of $DSP, version 1.90 or later, and that currently $DSP is printing files queued in the default queue-file, whose name is "Printer.No.1.ctl".  One of the files which is supplied as part of the release of $PE, is named "PE.fmt". This is a format-file which specifies all default parameters for printing, including the use of "P#Z^Yt busy pop af ; restore the char. out (PRTPIO+1),a; send the char strobe in a,(PRTPIO) ; get current status res strbit,a ; set strobe bit low out (PRTPIO),a ; and send it set strbit,a ; set strobe bit high out (PRTPIO),a ; and send it ret ; rerinter.No.1.ctl" as the queue file. First, we have to load $PE, and initialise it. This is achieved from the console keyboard by entering - ACTIVATE $PE The emulator will be loaded into memory, and a message will be issued to the operator's console which announces the revision level of the version actually in use. This is the only time that message is seen, as th#Z^Ytion ; definition out (PRTPIO),a ld a,0cfh ; channel A to control mode out (PRTPIO+2),a ld a,11110000b ; set direction of lines ; ^....... ; select (printer status ) ; ^...... ; busy ( printer status ) ; ^..... ; paper empt e space in memory in which that message is initially placed, is subsequently employed as a data buffer. The emulator may then conveniently be assigned to the "unit", or "channel" normally associated with printers, by entering - DEFINE 3 $PE Assuming that the emulator has only just been activated, its internal default root name will be used, as it was not giOS.INIT" contains an end-file mark after the last significant character in its last record, and that mark is detected by $PE, which then writes a similar end-file mark in its data file, closes the file, then opens and reads "PE.fmt". It closes PE.fmt, and opens the queue file whose name is found in PE.fmt, in this case, "Printer.No.1.ctl". $PE then substitues the name of the data file whicven an explicit root ( see below ). $PE is now ready to receive data. There are many utilities which cause data to be printed, for example, "PRINT", so enter the following -  PRINT OS.INIT 8-3 $PE will first check that it is able to read a file named "PE.fmt", and the queue-file whose name is specified within h it has just closed into the job filename field of the specification read from PE.fmt, and then adds the resulting record to the end of "Printer.No.1.ctl" thereby adding the job to the queue.  In the event that $PE is unable to locate either "root.fmt", or the queue file whose name is found in the format file, it forces an error message onto the operator's console. That PE.fmt. Assuming that both can be found, it opens a file named "PE.extension", where "extension" consists of the following fields - date - a six digit date, preceeded by "."  time - a six digit time, prceeded by "." host - a two digit node address, preceeded by "." random - a two digit "random" number, preceeded by "." This extension therefo message explicitly indicates the problematical filename, and the error encountered. Most commonly it is likely to show that there is no format file accessible, and it becomes necessary either to change the root name, or to create a suitable format file by the use of the spooler utility, SP. $PE opens a new data file whenever necessary, and uses the currently specified root name. It always cre causes the data filename to contain a date-and-time tag to a precision of one second, a host identifier, and a random number. Collectively these fields give a very high probability indeed that every time any copy of $PE creates a data file, that data file will be unique across an entire network. The format and queue files are not required to be unique. The file "hecks that it can access the format file, and the queue file at the time it opens a new data file, thus providing a high probability that it will be able to queue the data file when the time comes.  8-4 The use of utilities such as "CAT", and "DUMP" does not directly cause the closure and queuing of $PE's data files, so an operator may choose to enter "C 3", or perhaps may wish both to trigger the closure and queuing of the current data file, and the specification of a new root name, by the entry of "DEFINE 3 $PE/WS" for example.  In fact, the above shows how to prepare $PE for use with the RIO version of WordStar, a sophisticated word processing utility, for which a suitable format file is included in the rel program is "RUN". In the second example, the data would be routed to $PE, and $PE would receive a new root name, in this case, "CBL", so would queue the data file it creates according to the instructions found in the format file "CBL.fmt", at the time the COBOL statement closing the printer channel is executed. 8.4 Known limitations of $PE The only known liease suite of $PE. 8.3.2 In conjunction with COBOL version 2.n MCZ-2 Z-NET COBOL version 2.n, supports the use of printers in two different ways, although the code written in COBOL can be  identical apart from the statement which specifies the output channel which is to be used by the runtime support package. The all-important statement is that which assigns a "filename" mitations of $PE are: i) that users should be logged into the same account of $SDM - the Shared Data Manager, when a data file is closed and queued, as when that file was opened by $PE.  ii) that the Z80 Assembler, ASM, cannot have its listing or print outputs directed to $PE due to special buffering. 8-5 SECTION 9  to the printer channel, and, in COBOL, is the statement - ASSIGN TO PRINT "name". where "name" may be the explicit string "PRINTER1", or an alternative such as "$PE/CBL". In the former example, as the name specified matches exactly that which is trapped in USER.IO, the data will be routed to whichever device is assigned to RIO's unit 20 at the time the   SWITCH SETTINGS In all these explanations of switch positions a switch is ON if it has been depressed toward the side of the switch designated as ON, or for those switches which are slider type, when the slider is positioned towards the side designated ON. 9.1 MPB Boards There are two 8 bit switches on the MPB/A and /B boards: SW1 selects the  setting of the daisy chain switches. 9.2 RRM Boards The settings of the switches for the various uses of the RRM family of boards are: B0 B1 B2 B3 Chassis Board Firmware RAM size ON ON OFF OFF SDS RRM/M 2*2732 256 kbyte ON OFF ON ON NODE RRM/A,B 4*2716 64 kbyte ON ON OFF OFF NODE RRM/M 2*2732 Up to 256 kbyte node address which must be unique throughout the network. Special care needs to be taken when replacing MPB's, or when adding new nodes to a net, that a duplicate node address is not used.  SW2 defines the order of devices in the interrupt daisy chain. Bit 1: Controls insertion of I/O devices into the interrupt daisy chain, between the PIO and CTC.  9-1 These switches select the boundary address between ROM and RAM in 2Kbyte increments (RRM/M only): B2 B1 B0 ROM Address Range ROM Size ON ON ON No ROM 0K ON ON OFF 0000H - 07FFH 2K ON OFF ON 0000H - 0FFFH 4K ON OFF OFF  Must be OFF if any board other than the PDC is added to a system. Bit 2: Controls signature analysis mode. In the ON position the board can be signature analysed. Normally OFF. Bit 3, 4, 5: Control respectively the bus acknowledge daisy chain, the interrupt daisy chain and the bus  0000H - 17FFH 6K OFF ON ON 0000H - 1FFFH 8K OFF ON OFF 0000H - 27FFH 10K OFF OFF ON 0000H - 2FFFH 12K OFF OFF OFF Invalid Combination 9.3 PDC/B Board The potentiometers on the front edge of this board are factory adjustments and should not be touched by unqualified personnel. request control line for the use of a second DMA chip in slot A8 of the board. Each should be set in the ON position if one DMA is used (Node); and set  in the OFF position if two DMAs are present (SDS). Bit 6, 7, 8: Not used. If problems are seen where the console "hangs" after a few key depressions it is almost certainly due to incorrect The default jumper settings are: E1 - E2 E5 - E6 E8 - E9 E10 - E11 E14 - E15 E16 - E17 E18 - E19 E20 - E21 These should not be altered by the user. 9.4 PSI Board There are different user selections depending on the  revision level of the board: 9.4.1 PSI/A 09-0144-01,02 Switch SW1 settings to control the daisy chain are: S1:ON, S2:ON, S3:OFF, S4:OFF Which causes MPB.IEO to be connected to PSI.IEI and PSI.IEO to be connected to MPB.CTC.IEI 9-2 9.4.2 PSI 09-0144-04 Switch SW1 settings to control the daisy chain are:  |S1 | ----- ----- ----- ----- ----- ----- ===== | | | | | | | | | | | | | | |R1 | |R2 | |R3 | |R4 | |S2 | |R5 | |R6 | |  | | | | | | | | | | | ===== ----- ----- ----- ----- ----- ----- | | Resistor ----- ----- ----- ----- ----- ----- |U4 | orientation | | | | | | | | | | | | |  S1:ON, S2:OFF, S3:ON, S4:OFF 9.5 CDC 9427H HAWK Disk Drive The critical switch settings are those for selecting the drive number; these follow below, for all other switch settings the Hardware Product Configurator at the rear of the drive manual must be consulted. S1 and positions 1 through 4 of S2 select the drive number: only one of positions  | | |U2 | |R7 | |R8 | |U3 | |R9 | |R10| ===== | | | | | | | | | | | | | |S3 | V ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- | | | | | | | | | | | | | | |S4 | |U5 | |U6 | |U7 | |R11| |R12| |S5 | | | | | | | | | | | | | | | ----- ----- ----- ----- ----1, 2, 3, 4, of either of these may be ON at any time and, if any of S1 1-4 is ON, S1 5 MUST be OFF. The selection of drive number is by setting the same pattern on both S1 and S2 such that position 1 selects drive 0, position 2 selects drive 1 etc. No other switches need be altered by the user unless replacing boards. 3M I/O BOARD -----  y}}@ 820715820715z DIRECTORY yy} DC Disk Change WP Allow physical write protect x NP Disable all write protection D Alternate input in use DD Std drive select enable x DL Door lock latch x A Radial head load x B Radial head load x X MCZ2 RIO 4.2 821013 (^W*R Radial head load x C Alternate input head load x Z In use from drive select x Y In use from head load S1 Side select using dir select S2 Std side select input x S3 Side select using drive select E 4 ms index pulse. DR Double side ready - ----- ----- Resistors R1, R3, R5, R7, R9 and R11 are all 220 Ohm Resistors R2, R4, R6, R8, R10 and R12 are all 330 Ohm 9-3 9.6 CDC 9406 (Revision 3) Floppy Disk Drive The option jumpers on the electronics card of the CDC floppies should never need to be altered but are given in their standard configuration here for convenience (an 'x TS True Separation x FS False Separation NS Normal seek x OS Optional seek HO  Allow headload x IU Headload when in use I Index output x S Sector output x LC Low C' indicates that a jumper should be installed): Designator Function Fitted RR Radial Ready x RI Radial Index and sector  x R Ready output x 2S Two-sided status output HS Hard sector enable x SS Soft sector enable urrent 9-4 APPENDIX A BOOTSTRAP SEQUENCE FLOW CHART  9-4 ECHO COPYRIGHT, ZILOG, INC., 1980, 1981, 1982 X *All rights reserved. X *No part of this software may be copied or used X *without the express written consent of ZILOG, INC. DATE 821013 BRIEF  := 8 ON_LINE_BIT := 32 ! BIT VALUES IN CONTROL_BYTE ! USER_ABORT_ENABLED_BIT := 1 NO_TRUNCATE_AT_MARGIN_BIT := 2  AUTO_FORMFEED_BIT := 4 PAGE_WAIT_BIT := 8 HAS_AUTO_LINEFEED_BIT := 16 ABLE_TO_BACKSPACE_BIT := 32 ABLE_TO_FORMFEE ASCII_ESC := %1B NULL := 0 FALSE := 0 TRUE := NOT FALSE INTERRUPT_MASK := %FE TAB_DRUM_SIZE := 134 ESCAPE_NOT_PENDING_BIT := 32 ! BIT LOCATIONS IN STATUS ! STRBIT D_BIT := 64 ABSOLUTE_MODE_BIT := 128 GLOBAL STATUS BYTE := 0 CONTROL_BYTE BYTE  := USER_ABORT_ENABLED_BIT + HAS_AUTO_LINEFEED_BIT + ABLE_TO_FORMFEED_BIT PAGE_OFFSET BYTE := 0 RI := 0 PRBIT := 1 ACKBIT := 2 PEBIT := 3 BSYBIT := 4  SELBIT := 5 CTLBIT := 6 ! BIT VALUES IN STATUS ! HARDWARE_BUSY_BIT := 16 PAPER_OUT_BIT  GHT_MARGIN BYTE := 132 PAGE_LENGTH BYTE := 63 PAPER_LENGTH BYTE := 66 PITCH BYTE := 'N' LINSPA BYTE := 6 FUNCTION_1 BYTE := 0 FUNCTION_2 BYTE := 0 FUNCTION_3 BYTE := 0  NIL, NIL 0 ] EXTERNAL LPINIT PROCEDURE LPDEAC PROCEDURE LPSEL  PROCEDURE LPSTAT PROCEDURE SENDCH PROCEDURE ( CODE BYTE ) SETPRI PROCEDURE ! SETPRI IS THE PROCEDURE IN THE PRINTER DRIVER WHICH IS CALLED AT INIT FUNCTION_4 BYTE := 0 FUNCTION_5 BYTE := 0 TAB_DRUM ARRAY [ TAB_DRUM_SIZE BYTE ] := [ 1... ] CURRENT_LINE BYTE  REAL_COLUMN BYTE CURRENT_COLUMN BYTE BYTES_TAKEN_FROM_SOURCE WORD SOURCE_PTR ^BYTE DATA_LENGTH IALISATION, AND AFTER EACH TIME THE ATTRIBUTE RECORD HAS BEEN CHANGED. SETPRI IS EXPECTED TO CONTROL SUCH CAPABILITIES AS VARIABLE CHARACTER PITCH, LINESPACING ETC. NB. EACH OF THE ABOVE PROCEDURES CAUSE STATUS TO BE SET TO THE CURRENT STATUS UPON RETURN TO THIS MODULE ! CALRIO PROCEDURE ( VECTOR_PTR ^BYTE ) RETURNS ( COMPLETION_CODE BYTE ) INTERNAL CHECK_STATUS PROCEDURE RETURNS ( COMPLETION_COD WORD REQUEST_CODE BYTE PRINTABLE_CHAR_SENT BYTE := FALSE CODE BYTE RETURN_CODE  BYTE CHAR BYTE COUNT WORD := 0 CONTROL_SEQUENCE_COUNT WORD CONTROL_SEQUENCE_PTR E BYTE ) ENTRY IF STATUS AND PAPER_OUT_BIT <> 0 ORIF STATUS AND ON_LINE_BIT = 0 THEN COMPLETION_CODE := DEVICE_NOT_READY ELSE COMPLETION_CODE := OK FI RETURN_CODE := COMPLETION_CODE END CHECK_STATUS GET_TAB_LOCATIONS PROCEDURE RETURNS ( R_CODE BYTE ) ENTRY R_CODE := CALRIO ( #CONSOLE_REQUEST_VECTOR.LUN ) CONSOLE_REQUEST_VECTOR.DTL := 1 CONSOLE_REQUEST_VECTOR.DTA := #CO^BYTE CONTROL_SEQUENCE_COMING BYTE := FALSE LEADING_SPACE_COUNT BYTE := 0 CONSOLE_STATUS_BYTE BYTE INTERNAL CONSOLE_REQUEST_VECTOR BASIC_RIO_REQUEST_VECTOR := [ CONIN READ_STATUS #FUNCTION_1 139 NSOLE_STATUS_BYTE FUNCTION_1 := 0 FUNCTION_2 := 0 FUNCTION_3 := 0 FUNCTION_4 := 0 FUNCTION_5 := 0 END GET_TAB_LOCATIONS EJECT_PAGE PROCEDURE ENTRY IF CONTROL_BYTE AND ABLE_TO_FORMFEED_BIT <> FALSE THEN SENDCH ( ASCII_FF ) IF CHECK_STATUS <> OK THEN RETURN FI CURRENT_LINE := 0 RETURN FI DO SENDCH ( ASCII_LF ) IF CHECK_STATUS <> OK THEN RETURN FI CURRENT_LINE += 1 IF CURRENT_LINE = PAPER_LENGTH THEN CURRENT_LINE := 0 RETURN FI OD END EJECT_PAGE NEW_LINE PROCEDURE ( CODE BYTE )  ENTRY IF PRINTABLE_CHAR_SENT = FALSE THEN CODE := ASCII_LF FI SENDCH ( CODE ) IF CHECK_STATUS <> OK THEN RETURN FI CURRENT_LINE += 1 PRINTABLE_CHAR_SENT := FALSE ODE CASE ASCII_SPACE THEN IF LEADING_SPACE_COUNT >= RIGHT_MARGIN THEN IF ( CONTROL_BYTE AND  NO_TRUNCATE_AT_MARGIN_BIT ) <> FALSE THEN NEW_LINE ( ASCII_CR ) ELS LEADING_SPACE_COUNT := 0 IF CONTROL_BYTE AND USER_ABORT_ENABLED_BIT <> FALSE THEN RETURN_CODE := CALRIO ( #CONSOLE_REQUEST_VECTOR.LUN ) IF RETURN_CODE <> OK THEN  RETURN FI IF CONSOLE_STATUS_BYTE AND ESCAPE_NOT_PENDING_BIT = FALSE THEN EJECT_PAGE RETURN_CODE := PROGRAMME_ABORT E RETURN FI FI LEADING_SPACE_COUNT += 1 RETURN CASE ASCII_TAB  THEN DO IF LEADING_SPACE_COUNT >= RIGHT_MARGIN THEN IF ( CONTROL_BYTE AND  RETURN FI FI IF CONTROL_BYTE AND HAS_AUTO_LINEFEED_BIT = FALSE THEN SENDCH ( ASCII_LF ) RETURN FI IF CURRENT_LINE >= PAGE_LENGTH  ANDIF CONTROL_BYTE AND AUTO_FORMFEED_BIT <> FALSE THEN EJECT_PAGE FI END NEW_LINE PRINT_CODE PROCEDURE ( CODE BYTE ) ENTRY IF PRINTABLE_CHAR_SENT = FALSE THEN IF C  NO_TRUNCATE_AT_MARGIN_BIT ) <> FALSE THEN NEW_LINE ( ASCII_CR )  ELSE RETURN FI FI LEADING_SPACE_COUNT += 1 IF TAB_DRUM [ LEADING_S ELSE RETURN FI FI SENDCH ( ASCII_SPACE ) CURRENT_COLUMN += 1 IF TAB_DRUM [ CURRENT_COLUMN ] <> 0  THEN RETURN FI OD FI IF CODE = NULL THEN RETURN FI SENDCH ( CODE ) CURRENT_COLUMN += 1 RETURN OD END PRINT_CODE PRINT PROPACE_COUNT ] <> 0 THEN RETURN FI OD FI FI SPECIAL_CASES DO IF PRINTABLE_CHAR_SENT = FALSE THEN PRINTABLE_CHAR_SENT := TRUE CURRENT_COLUMN := LEADING_SPACE_COUNT LEADING_SPACE_COUNT += PAGE_OFFSET DO IF LEADING_SPACE_COUNT = 0 CEDURE ENTRY IF REQUEST_CODE = WRITE_ABSOLUTE ORIF CONTROL_BYTE AND ABSOLUTE_MODE_BIT <> FALSE THEN DO IF BYTES_TAKEN_FROM_SOURCE = DATA_LENGTH  ORIF CHECK_STATUS <> OK THEN RETURN FI SENDCH ( SOURCE_PTR^ ) SOURCE_PTR := INC SOURCE_PTR  THEN EXIT FI SENDCH ( ASCII_SPACE ) LEADING_SPACE_COUNT -= 1 OD FI IF CURRENT_COLUMN >= RIGHT_MARGIN THEN  IF CONTROL_BYTE AND NO_TRUNCATE_AT_MARGIN_BIT <> FALSE THEN NEW_LINE ( ASCII_CR ) REPEAT FROM SPECIAL_CASES ELSE RETURN  BYTES_TAKEN_FROM_SOURCE += 1 OD FI CHARACTER_LOOP DO IF BYTES_TAKEN_FROM_SOURCE = DATA_LENGTH ORIF RETURN_CODE <> OK THEN RETURN  FI IF CONTROL_SEQUENCE_COMING = FALSE THEN IF CHECK_STATUS <> OK THEN RETURN FI FI CODE := SOURCE_PTR^  FI FI IF CODE = ASCII_TAB THEN DO IF CURRENT_COLUMN >= RIGHT_MARGIN THEN IF CONTROL_BYTE AND NO_TRUNCATE_AT_MARGIN_BIT <> FALSE THEN NEW_LINE ( ASCII_CR ) CODE := NULL REPEAT FROM SPECIAL_CASES  BYTES_TAKEN_FROM_SOURCE += 1 SOURCE_PTR := INC SOURCE_PTR IF CONTROL_SEQUENCE_COMING = TRUE THEN CONTROL DO COUNT += 1  IF COUNT = 1 THEN CONTROL_SEQUENCE_COUNT := WORD CODE REPEAT FROM CHARACTER_LOOP  FI IF COUNT = 2 THEN CONTROL_SEQUENCE_COUNT += 256 * WORD CODE REPEAT FROM CHARACTER_LOOP FI IF CONTROL_SEQUENCE_COUNT = 0 THEN CONTROL_SEQUENCE_COMING := FALSE SETP THEN NEW_LINE ( CODE ) IF RETURN_CODE <> OK THEN RETURN FI IF CODE = ASCII_CR ANDIF REQUEST_CODE = WRITE_LINE  THEN RETURN FI REPEAT CASE ASCII_FF THEN EJECT_PAGE REPEAT CRI IF CHECK_STATUS <> OK THEN RETURN FI EXIT FROM CONTROL  FI CONTROL_SEQUENCE_PTR^ := CODE CONTROL_SEQUENCE_PTR := INC CONTROL_SEQUENCE_PTR CONTROL_SEQUENCE_COUNT -= 1 ASE ASCII_BS THEN IF CONTROL_BYTE AND ABLE_TO_BACKSPACE_BIT <> FALSE ANDIF REAL_COLUMN <> 0 THEN SENDCH ( ASCII_BS ) REAL_COLUMN -= 1 CURRENT_COLUMN -= 1 FI REPEAT FI PRINT_CODE ( CODE ) OD END PRINT GL REPEAT FROM CHARACTER_LOOP OD FI IF CODE CASE EOF_MARK THEN RETURN CASE ASCII_DLE THEN CONTROL_SEQUENCE_COMING := TRUE CONTROL_SEQUENCE_PTR := #CONTROL_BYTE COUNT := 0 REPEAT CASE ASCII_CR, ASCII_LF  OBAL PLZDVR PROCEDURE ( REQUEST_VECTOR_PTR ^BASIC_RIO_REQUEST_VECTOR ) ENTRY REQUEST_CODE := REQUEST_VECTOR_PTR^.REQ AND INTERRUPT_MASK SOURCE_PTR := REQUEST_VECTOR_PTR^.DTA DATA_LENGTH := REQUEST_VECTOR_PTR^.DTL  BYTES_TAKEN_FROM_SOURCE := 0 RETURN_CODE := OK REQUEST_VECTOR_PTR^.CCOD := OK IF REQUEST_CODE CASE WRITE_BINARY WRITE_LINE WRITE_ABSOLUTE THEN PRINT  ELSE SOURCE_PTR := REQUEST_VECTOR_PTR^.DTA CONTROL_SEQUENCE_PTR := #CONTROL_BYTE FI DO IF DATA_LENGTH = 0 THEN SETPRI REQUEST_VECTOR_PTR^.CCOD := CHECK_STATUS RETURN FI CREQUEST_VECTOR_PTR^.CCOD := RETURN_CODE REQUEST_VECTOR_PTR^.DTL := BYTES_TAKEN_FROM_SOURCE RETURN CASE INITIALISE THEN CONTROL_BYTE := CONTROL_BYTE  AND NOT ABSOLUTE_MODE_BIT LPINIT LPSEL SETPRI EJECT_PAGE IF CHECK_STATUS <> ONTROL_SEQUENCE_PTR^ := SOURCE_PTR^ CONTROL_SEQUENCE_PTR := INC CONTROL_SEQUENCE_PTR SOURCE_PTR := INC SOURCE_PTR DATA_LENGTH -= 1 OD  CASE ASSIGN, OPEN THEN LPSEL RETURN CASE CLOSE, DEACTIVATE THEN LPDEAC REQUEST_VECTOR_PTR^.CCOD := CHECK_STATUS OK ORIF GET_TAB_LOCATIONS <> OK THEN REQUEST_VECTOR_PTR^.CCOD := DEVICE_NOT_READY  RETURN FI RETURN CASE READ_STATUS THEN REQUEST_VECTOR_PTR^.DTA^ := STATUS REQUEST_VECTOR_PTR^.DTL := 1 RE RETURN ELSE REQUEST_VECTOR_PTR^.CCOD := INVALID_REQUEST FI END PLZDVR END SPOOL_LP_PLZ TURN CASE WRITE_ATTRIBUTES, READ_ATTRIBUTES THEN IF DATA_LENGTH > ( TAB_DRUM_SIZE + 12 ) THEN DATA_LENGTH := TAB_DRUM_SIZE + 12 FI  IF REQUEST_CODE = READ_ATTRIBUTES THEN SOURCE_PTR := #CONTROL_BYTE CONTROL_SEQUENCE_PTR := REQUEST_VECTOR_PTR^.DTA = 800704820715?>@LP_PLZ.INTERFACE.MACROS.SJMD=?=CGAE= 800704820715?>@LP_PLZ.INTERFACE.MACROS.SJMD=?=CGAE(#n=2).or.(#n=4) jp (hl) endc cond .not.(#n=0).and..not.(#n=2).and..not.(#n=4) pop de ld hl,#n add hl,sp ld sp,hl ex de,hl jp (hl) endc endm *E ; Macros for accessing locals and parameters ; from the stack. ; This is only a small selection. ; Load hl from #n ( offset of word variable from ix ) LDHL macro #n ld l,(ix+#n) ld h,(ix+#n+1) endm ; Store hl into #n ( offset of word variable from ix ) STHL macro #n ld (ix+#n),l ld (ix+#n+1),h endm ; L*LIST OFF ; Mark-stack macro: ; Allocate room on stack for out parameters ; before a procedure call. ; Optimise the code when 0,1,or 2 parameters ; ie. 0,2 or 4 bytes. MST macro #n ; #n is in BYTES *** cond (#n=2).or.(#n=4) push hl cond #n=4 push hl endc cond .not.(#n=0).and..not.(#n=2).and..not.(#n=4) ld hl,-#n add hl,sp ld sp,hl endc endm *E ; Procedure entry: ; Allocate locals on stack ( No. of bytes ) ; Optimise when 0,2,or 4 bytes. ENT macro #n ; #n is in Boad A from #n ( offset of byte variable from ix ) LDA macro #n ld a,(ix+#n) endm ;Store A into #n ( offset of byte variable from ix ) STA macro #n ld (ix+#n),a endm *LIST ON jc$ D ͢ê~ʙ!}N ! }!_ êN êN :¸!5ü!4:!4'TR := #ATTRIBUTE_BUFFER [ PRESENT_COLUMN-1 ] NEXT_COLUMN_NO := PRESENT_COLUMN SPACE_SKIP_FLAG := FALSE SPACE_COUNT := 0 YTES *** push ix ld ix,0 add ix,sp cond (#n=2).or.(#n=4) push hl cond #n=4 push hl endc cond .not.(#n=0).and..not.(#n=2).and..not.(#n=4) ld hl,-#n add hl,sp ld sp,hl endc endm *E ; Procedure return: ; Deallocate locals ( bytes ) and IN parameters. ; Optimise when 0,2,or 4 bytes. RTN macro #L, #n ; #L, #n are in BYTES *** cond #L ld sp,ix endc pop ix cond #n=0 ret endc cond (#n=2).or.(#n=4) pop hl pop de cond #n=4 pop de endc cond  I 800704820715MJNLP_ASM.SNTERFACE.MACROS.SJMDIMIQUKOSWY]a[_cgk) ; get c_code jr nz,intreq cp 80h ; was it good ? ret z ; if so, go back quietly getera ld h,(iy+9) ; has user specified ld l,(iy+8) ; an error handler jmpret ld a,h or l ret z ; rtn add field was zero pop bc ; balance stack jp (hl)  intreq cp 80h ; was there an error jr nz,getera ld h,(iy+7) ld l,(iy+6) jr jmpret ; check cra field IY_SAV defs 2 *H Call to SYSTEM ; Declare CALRIO PROCEDURE ( VECTOR_PTR ^byte ) ; RETURNS ( COMPLETION_CODE byte ) ; There I 800704820715MJNLP_ASM.SNTERFACE.MACROS.SJMDIMIQUKOSWY]a[_cgkmust be a standard RIO request vector stored ; starting at the location beginning VECTOR_PTR^ global CALRIO calrio CALRIO calrio ENT 0 ; no locals LDHL 4 ; put RIO vector address into hl push hl pop iy ; and then where it should be push ix ; save it call SYSTEM ; go and do the necessary pop ix ; restore it ld a,(iy+10) ; get the completion code STA 6 ; and place it as return parameter RTN 0 2 ; return to caller. ; 0 locals, 2 I/P param bytes *H PRINTER PROCEDURES ; This*H Call from RIO *I LP_PLZ.INTERFACE.MACROS *MACLIST OFF ; This interface module receives I/O calls from RIO, and ; passes the IY register value to the called programme ; as a single parameter. ; The intention of the module is to act as an interface ; to enable I/O drivers to be written largely in PLZ. ; ***************************************************** ; This module generated from the original LP_ASM.S which ; was created for the MCZ-1. ; The changes were to replace "LPINIT", and to inco segment contains the procedures required by the ; PLZ code in the LP2 generalised printer driver. ; Procedures provided :- ; LPSTAT procedure ! Updates (STATUS) ! ; LPINIT procedure ! Initialises the driver + printer ! ; LPDEAC procedure ! Prepares driver for deactivation ! ; LPSEL procedure ! SELECTS the printer ! ; SENDCH procedure ( CODE byte ) ! Sends CODE to printer ! ; SETPRI procedure ! Resets driver + printer according to ; ! current driver attributes ! ; FLUPRI procedure ! Flushes thrporate ; "setsta", which places the status bits in the same ; positions as they are for MCZ-1 hardware. In this ; way, LP_PLZ needed NO CHANGES. ; ------- Peter Beckett, 820125. ; ***************************************************** EXTERNAL PLZDVR GLOBAL LP ; FOR SPOOLER SYSTEM equ 1403H LP push iy ; the actual parameter LD (IY_SAV),IY ; save iy call PLZDVR ; pass control to the ; real driver LD IY,(IY_SAV) ; restore iy bit 0,(iy+1) ; was it int.req ? ld a,(iy+10e printer input buffer ! ;** In all cases the procedure places an image of the ;** current status, exactly as read, in (STATUS) global LPSTAT LPINIT LPDEAC LPSEL SENDCH global SETPRI FLUPRI external STATUS PITCH LINSPA PRTPIO equ 0D8H ; MCB PIO addressing ; PRTPIO ; port A data - pr. control ; PRTPIO+1 ; port B data - pr. codes ; PRTPIO+2 ; port A control ; PRTPIO+3 ; port B control ; PIO port A ( printer control ) bit equates:- ; INPUTS from printer ( ** MCZ-2 ** ) :- ;ACKBIT equ 2 ; ACKNOWLEDGE- PEBIT equ 5 ; PAPER_EMPTY BSYBIT equ 6 ; BUSY SELBIT equ 7 ; SELECTED ; OUTPUTS to printer:- STRBIT equ 0 ; STROBE- ;PRBIT equ 1 ; PRIME- ;CTLBIT equ 6 ; CONTROL- SELCOD equ 11h ; SELECT code DSLCOD equ 13h ; DE-SELECT code *E LPINIT ENT 0 ld a,0fh ; PIO channel B to output out (PRTPIO+3),a ld a,07h ; reset out (PRTPIO+3),a out (PRTPIO+2),a ; both channels in a,(PRTPIO) ; get current status or 2**STRBIT ; Set strobe line high, ; ready for direction ; dN 0 0 FLUPRI ENT 0 ld a,7Fh ; TALLY flush code call senda ; send it and set (STATUS) RTN 0 0 *E ; SETPRI is the general procedure which is called whenever ; changes may have been made to the attributes of the ; printer driver. ; It is up to the programmer to ensure that this procedure ; handles as many of the variables in the attributes as ; necessary for the optimum operation of the printer/ ; printer driver combination. SETPRI ENT 0 RTN 0 0 *H subroutines select ld a,SELCOD ; selectefinition out (PRTPIO),a ld a,0cfh ; channel A to control mode out (PRTPIO+2),a ld a,11110000b ; set direction of lines ; ^....... ; select (printer status) ; ^...... ; busy (printer status) ; ^..... ; paper empty (pr. status) ; ^.... ; fault (printer status) ; ^... ; RAM select 1 ; ^.. ; RAM select 0 ; ^. ; ROM disable ; ^ ; strobe- out (PRTPIO+2),a call setsta ; fix up (STATUS) RTN 0 0 setsta in a,(PRTPIO) code call senda1 ; send it without wait_busy, ; and set (STATUS) ret desel ld a,DSLCOD ; deselect code call senda1 ; send it without wait_busy, ; and set (STATUS) ret waitb in a,(PRTPIO) ; get status bit BSYBIT,a ; test busy bit ret z ; return if not busy call IDLOOP ; if busy, call SYSTEM ; to keep spooler going. jr waitb strobe push af ; save it in a,(PRTPIO) ; get status res STRBIT,a ; set strobe bit low out (PRTPIO),a ; drop strobe line set STRBIT,a ; set s ; get status a la MC-2 and 11100000b ; keep only bits 7,6,5 srl a srl a ; shift to MCZ-1 equivalent ld (STATUS),a ; and store for the world ret *E LPSTAT ENT 0 call setsta ; get current status RTN 0,0 SENDCH ENT 0 LDA 4 ; get character code call senda ; send it and set (STATUS) RTN 0 2 LPSEL ENT 0 call select ; SELECT the printer and ; set (STATUS) RTN 0 0 LPDEAC ENT 0 call select ; Select the printer, then call desel ; de-select it. ; and set (STATUS) RT trobe bit high out (PRTPIO),a ; raise strobe line again pop af ; restore ret senda push af ; save code call waitb ; ensure ready for char. pop af ; restore the character senda1 out (PRTPIO+1),a ; send the char call strobe ; strobe it call setsta ; get and update (STATUS) ret *H SPOOLER IDLE LOOP ; THIS ROUTINE SHOULD BE CALLED FROM WITHIN ANY LOOP ; WHICH WAITS UNTIL SOMETHING BECOMES READY. ; IT CAUSES INVALID SYSTEM IO CALLS TO BE MADE, WHICH ; MAY BE ROUTED VIA THE SPOOLERoD800704821012DbD]epf LP_ASM.OBJERFACE.MACROS.SJMDoeoimq, THEREBY "KEEPING IT ; ALIVE" IDLOOP PUSH BC ; SAVE PUSH DE ; SAVE PUSH HL ; SAVE PUSH IY ; SAVE push ix ; save LD IY,IDLVEC ; POINT TO THE SPECIAL VECTOR CALL SYSTEM ; MAKE THE CALL ; NOTE THAT WHATEVER COMPLETION CODE IS RETURNED, WE ; IGNORE IT. pop ix ; restore POP IY ; RESTORE POP HL ; RESTORE POP DE ; RESTORE POP BC ; RESTORE RET IDLVEC DEFB 20 ; HOPEFULLY $NULL, BUT IF ; NOT, THE DRIVER SHOULD ; RETURN "INVALID OPERATION REQ." ; ANYWAY. DEFB 0FEH ; ANY 6LINSPAPITCH STATUSFLUPRISETPRISENDCHLPSELLPDEACLPINITULPSTATcalrio2CALRIO2LPPLZDVR|UNALLOCATED REQUEST WILL DO. DEFW 00 ; DATA ADDRESS DEFW 00 ; ZERO LENGTH DEFW 00 ; COMPLETION ADDRESS DEFW 00 ; ERROR ADDRESS DEFB 0 ; COMPLETION CODE defw 0 ; svp. 2 "0|*0F~ f n| fn2m0!9nf~ w!9>>>>{??2!9{!9m$ ~!9!9!9>!9> > wˇ, , {!)YoD800704821012DbD]epf LP_ASM.OBJERFACE.MACROS.SJMDoeoimqIDLVEC)IDLOOPsenda1 sendastrobewaitbdeselselectsetsta{DSLCODSELCODSTRBITSELBITBSYBITPEBITPRTPIOIY_SAV0intreq$jmpretgeteraSYSTEMSTALDASTHLLDHLRTNENTMSTs 800704821012wtx LP_PLZ.OBJERFACE.MACROS.SJMD sws{uy}NTABLE_CHAR_SENT CODERETURN_CODE CHAR COUNTCONTROL_SEQUENCE_COUNTCONTROL_SEQUENCE_PTRCONTROL_SEQUENCE_COMINGLEADING_SPACE_COUNTCONSOLE_STATUS_BYTE ,PLZDVRmQ?BNm&s 800704821012wtx LP_PLZ.OBJERFACE.MACROS.SJMD sws{uy}m H@ FI@!9:: 66~2!9!;q!"!"22 2 2 2 '^,LPINIT,LPDEAC,LPSEL,LPSTAT,SENDCH,SETPRI,CALRIO STATUSCONTROL_BYTEPAGE_OFFSETRIGHT_MARGINPAGE_LENGTHPAPER_LENGTH PITCH LINSPAFUNCTION_1 FUNCTION_2 FUNCTION_3 FUNCTION_4 FUNCTION_5 TAB_DRUMCURRENT_LINEREAL_COLUMNCURRENT_COLUMNBYTES_TAKEN_FROM_SOURCESOURCE_PTRDATA_LENGTHREQUEST_CODEPRI m@H@ !9:@A! '͵ye2e! '͵ye!4:O: 2!9:{6 N,~m0!!!!$ bD'͵y!422:!;y2: >I2:! ':O:(9lB@D "D$@:!9:z~_:O:(&: ! h!4 :O:(I: ! h!4! :NQm! "I@o&~ !uz!v ~#fo - :©>2:2:!Fw:ʩ! '!5:O:(: @READ_STATUS DDEACTIVATE HWRITE_ABSOLUTE INVALID_REQUEST DEVICE_NOT_READY IPROGRAMME_ABORT EOF_MARK OK CONIN ASCII_DLE  ASCII_SPACE  ASCII_TAB ASCII_BS  ASCII_LF  ASCII_CR  ASCII_FF ASCII_ESC NULL FALSE TRUE INTERRUPT_MASK TAB_DRUM_SIZE  ESCAPE_NOT_PENDING_BIT STRBIT PRBIT ACKBIT PEBIT BSYBIT mHB1@ ! h~ :O:(: ! hw! '!4! :o&~ ~ N'!4%mBBDC"!9:H=:m**R͵y*N'*#"*#"**R::”͵yYm$H!"@@*~2*#"*#":,*#"*!R:o&"*!R:o&e.!N#F+ s#rm*}˜l $D$I 21͵y,:*w*#"*+"m:Ó>2!"!"m:Oh:: m:SELBIT CTLBIT HARDWARE_BUSY_BIT PAPER_OUT_BIT  ON_LINE_BIT USER_ABORT_ENABLED_BIT NO_TRUNCATE_AT_MARGIN_BIT AUTO_FORMFEED_BIT PAGE_WAIT_BIT HAS_AUTO_LINEFEED_BIT  ABLE_TO_BACKSPACE_BIT @ABLE_TO_FORMFEED_BIT ABSOLUTE_MODE_BIT 1uCONSOLE_REQUEST_VECTOR,CHECK_STATUS COMPLETION_CODEb,GET_TAB_LOCATIONS R_CODE)b  gmHH URmm: m:m!'!5!5m!º! ~#fo rlII52:Om!9nقl@A $f#~2nf##^#V"nf^#V"!">2>nf w:G%:nf w*nf s#rB>m"@ :21͵yjyʊ>nf wÊ:nf##^#Vw!nf s#rÊ*!/m$$ I!0  Rҹ! ":0!"nf##^#V"nf##^#V"!"*} 1͵nf qÊ*~,EJECT_PAGE)R (/:>AHSW baeh,NEW_LINE CODE)Rpw{)R b,PRINT_CODE CODE)R &*-:)RBIMz)R)b  %,PRINT)R-=U]dm)RmDH L H UP*w*#"*#"*+"Ê ͵nf qÊ!f }!g ~#foD0.@H11++z@y>nf wn.SPOOL_LP_PLZ u!LUN u!REQ u!DTA u!DTL u!CRA u!ERA u !CCOD INITIALISE ASSIGN OPEN CLOSE WRITE_BINARY WRITE_LINE .WRITE_ATTRIBUTES 0READ_ATTRIBUTES)R")R),25:@FIQ)RYilor b ,PLZDVR Bu REQUEST_VECTOR_PTR)R)R,=@HKNQTj)Rwz)R  %b"+.14D}800704820309LP_MAKEOBJERFACE.MACROS.SJMD 66~2!9!2q!"!"ٯ2>ٯ2?ٯ2@ٯ2Aٯ2B!9:7@w! ͕y›گ2Û! ͕y›!4:O:;ٹ 2!9:٧±6 N͕y&!42ٯ2:7!2y2&: N>I2&:7! ͕&:O::ٹ(&:7&N!9:٧°~Õ:O:9ٹ(\:7V! ͞!4V:O:9ٹ(:7V! ͞!4!C:o&~V!°! ~#fo c@:٧>2:2:8!Fw:٧! ͕!5:O:9ٹ(:7V! ͞~800704820309LP_MAKEOBJERFACE.MACROS.SJMD D:O:9ٹ(':7V! ͞گw! ͕!4!C:o&~V~VN͕!4!9:Hs:7ʣ**٧Ry*N͕*#"*#"**٧R::٧y*~2*#"*#":b*#"*!R:o&"*!R-:o&e.!N#F+ s#rã*}Jݯ2yb:*w*#"*+"ã:>2!7"!"ã:O͞:: £:£Nã:7 ʣ:٧ʣ!͕!5!5ã!! ~#fo ݢkh:O+ã"0*0F~ f n| fn!9nf~ w!9>>>>{??26!9{!9~!9!9!9>!9> > wˇ{!)Q?BN@>ً!9:6:6  !9nf#~2nf##^#V"nf^#V"!">2>nf w:}[:nf w*nf s#r:727UͨNy y>nf w:6nf##^#Vw!nf s#r*! R! ":0!7"nf##^#V"$nf##^#V"!7"*}Bnf q*~*w*#"*#"*+"ͨͶnf q! ³! ~#foD0.@HggaaްvQQQ>nf wAVE_TABS SET SETCD SETPW SETUD STATUS VERBOSE WHO XEQ : EXPRESSION Miscellaneous: ASCII CHAR ERROR ^^^^^0010 HELP (command_name|*)* HELP is an on-line documentation system which provides the user with enough information about the use of the most commonly used operating system commands that it will usually be unnecessary to refer to system manuals. If the parameter is *, a list of the "commands" for which there is on-line docum 800910821012 HELP.DAT.00th.debugbugentation available. If the parameter is the name of a "command", you will be given information concerning the function(s) which are performed by the command, and details of its parameters. %HELP * prints a list of all initial key_words for which there is HELP. ^^^^^0020 ACTIVATE device_name [entry_address] Make a device known to the system by including it in the Active Device Table (ADT). It can thereafter be used as a device name in qualified file names. The fil 800910821012 HELP.DAT.00th.debugbuge name referenced by the device_name will be located on the appropriate device and loaded if it is a device file (procedure type, subtype 9), has a non-null entry point, and does not overlay protected memory. If the optional entry_address is specified, activate will not try to load a procedure file. It will create an entry in the ADT and use the address as its entry point. If a remote device is activated (such as $SDM), ACTIVATE will also load, and initalize the RIO Network Interface Module (NIM) t^^^^^0000 HELP is available for the following: RIO commands: ACTIVATE ALLOCATE BRIEF CAT CLOSE COMPARE COPY COPY.DISK CRTDIR DATE DEACTIVATE DEALLOCATE DEFINE DELDIR DELETE DISPLAY DO  DUMP ECHO ERROR EXTRACT FORCE FORMAT GETIME IMAGE INITIALIZE LADT LOGIN LOGOUT MASTER MOVE NAME PAUSE PRINT PROTECT RELEASE RENAME RESTORE_TABS So process the remote device communications. %ACTIVATE $MYDOS:1/$MY.VIDEO.DRIVER locates file 'MY.VIDEO.DRIVER' on device 'MYDOS', drive 1. It is then loaded, an Initialize request sent, and an Active Device Table entry created. ^^^^^0030 ALLOCATE low_boundary high_boundary block_size Attempts to allocate block_size bytes (rounded up to a multiple of 80H bytes) of memory. The search begins at address low_boundary (rounded down modulo 80H), and the first block large enough and not extending beyond high boundary (rounded up to the next multiple of 80H - 1) is marked as allocated in the system memory map. If allocation is not possible, the message INSUFFICIENT MEMORY is given. %ALLOCATE 7400 8000 380 a search is made for a 400H byte (380H bytes rounded up to a multiple of 80H) memory segment in the address range 7400H-807FH (8000H rounded up). ^^^^^0040 BRIEF Enters console Brief mode. Commands are not echoed ^' is any of the relational operators '=', '<>', '>', '<', '>=', '<='. CDATE^date: Date of creation--'^' is any of the aforementioned relational operators. %CAT F=L *.S *.L P=E& CDATE<780901  lists all files whose names which end with either '.S' or '.L', are at least erase protected, and were created before September 1, 1978. ^^^^^0060 CLOSE *|unit Generates a Close I/O request for a logical unit (expressed in hexadec- imal)on the console as they are taken from the command buffer, whether that has been loaded either from the console, or from command files. ( DO files ). %BRIEF brief mode from this point onwards. ^^^^^0050 CAT (match_string|T=type|P=props|D=drive|F=format|O=order L=listing_disposition|DATE^date|CDATE^date)* Prints a catalog of entries in the file system directories which match the specified options. Given without options, all (non-secret) files in each activ. If the parameter is '*', all logical units are Closed. Error messages are suppressed. %CLOSE 5 generates a Close I/O request for logical unit 5. %C * generates a Close I/O request for all logical units. ^^^^^0070 COMPARE file_1 file_2 (D=Y|N) Performs a comparison of the contents of file_1 and file_2. If the D=Y parameter is given, the descriptors will also be compared. If the file contents are identical, the message "Files compared" will be given. e drive directory are listed. Where options other than match_strings are specified more than once, the last one entered is used. CAT gives the directory id of the device being cataloged. match_string: Fully- or partially- specified file name. * is "wild". format: F=L specifies long listing format. order: O=S|U specifies Sorted, or Unsorted order of output. listing_disposition: Output filename or device (default=SYSLST). DATE^date: Date of last modification--' For each byte comparison that fails, a message of the form :- File 1: Byte 01FC Record 0003 = B6 File 2: Byte 01FC Record 0003 = A6 will be given. Pressing the escape key will terminate command execution. Note that file_1 and file_2 must not be the same physical file. %COMPARE MYFILE YOURFILE D=Y Files MYFILE and YOURFILE are compared, including their descriptors. If the files are identical in all respects, the "Files compared" message will be given, however it is prsponse other than 'Y' will abort the command. It is necessary that the destination diskette is pre-formatted. The copy operation is followed by a verification pass, after which the message "Verification complete" indicates a successful verify operation. A message in the form "*** 0016 verification errors ***" clearly shows that the source diskette and the copy do NOT match. The 'V' option may be given to request ONLY the verification pass. COPY.DISK uses the $FDM device to copy each sector of the obable that the date fields within their descriptors will differ. In the "differences" given, the descriptor records are referred to as record "D". ^^^^^0080 COPY file_1 file_2 (A|U|O|T=type)* Copies file_1 (using a READ BINARY request) to file_2 (using a WRITE BINARY request). If the A (append) option is specified, file_1 is copied (using a READ CURRENT request) to file_2 (using a WRITE CURRENT request) so that the first byte of file_1 is positioned immediately after the diskette, therefore $FDM must be active. %COPY.DISK 1 TO 0 ready?Y Verification complete copies the diskette in drive 1 to that in drive 0, then verifies that they match exactly. last byte of file_2. Except for this difference, the command proceeds as before. Either file_1 or file_2 may be devices or fully qualified names. FILE attributes of file_1 are transferred to file_2, with the exception of the creation date in the event file_2 is created. The options A (Append), U (Update), and O (Output) may be used to specify the type of open request performed on the destination file, file_2. The A (Append) option should only be used for ASCII type files. See Chapter 6 of the R 800910821012 HELP.DAT.01th.debugbug IO User's Manual for details. The filetype attribute can be overridden by spec- ifying one of D (directory), B (binary), A (ASCII) or P (procedure) for type. %COPY $FFS:1/THE.FILE $MYDOS/OTHER.FILE O copies THE.FILE on drive 1 of FFS to OTHER.FILE on device $MYDOS, default drive search. ^^^^^0090 COPY.DISK [s_drive TO d_drive] [V] Copies the diskette in FFS drive s_drive (default=0) to the diskette in FFS drive d_drive (default=1) . Starting prompt: ready? A re 800910821012 HELP.DAT.01th.debugbug ^^^^^0100 COPYSD file_name ^^^^^0110 DATE [yymmdd] Displays and optionally sets the date variable, which is used as the date of creation or date of last modification by the file system(s). Digits 'yy' specify the year, 'mm' the month, and 'dd' the day. In stand-alone, floppy disk based systems, the DATE command may con- veniently be called from the RIO external initialization command file "OS.INIT". By the use of the regular system text editor, the file may be changed to containo method to activate other device files. Likewise, the master device cannot be deactivated. %DEACTIVATE $MYDOS Removes MYDOS from Active Device Table and generates Close request for all units linked to $MYDOS. A Deactivate request is sent to $MYDOS. ^^^^^0130 DEALLOCATE block_address block_size Marks the block_size segment starting at block_address as unallocated in the system memory map. If any affected blocks were not previously allocated, error 4E in any required date. Whenever the system is re-booted, the specified date will be interpreted, and used until re-defined. In networked systems it is more common to rely on the system clock, which resides within the Shared Data Station, in which case the appropriate RIO utility is "GETIME", which brings a copy of the system clock, which consists of both time and date, into the user's memory space. %DATE 820630 Wednesday, June 30, 1982 sets and displays current system date. ^^s given, and no deallocation takes place. Block_address will be rounded down to a multiple of 80H, and block_ size will be rounded up to a multiple of 80H. %DEALLOCATE 502F 13B5 deallocates the 1400H (13B5H rounded up) block starting at address 5000H (502F rounded down). ^^^^^0140 DEFINE (unit file_name|unit device name|unit *|*)+ [A|O|U|I|NF|NO] Links a logical unit (referenced by an integer from 1 to 20) to a currently active device or restores unit to th^^^0120 DEACTIVATE $device_name Deletes device_name from the Active Device Table (ADT) and thus makes it unknown to RIO. A CLOSE I/O request is generated for units linked to the deactivated device and a DEACTIVATE I/O request is generated for the device itself. If the ADT size entry is non-null ( >0), the space allocated to the device handler is deallocated. Deactivation is inhibited for the last active device, since there would be no source for further external commands and therefore  e default established at system initialization (bootstrap). A CLOSE request is sent to the device to which the unit is currently assigned, before the new assignment is made. A file name may opt- ionally be associated with the unit. Assign and Open requests may be generated for the unit. Units 1, 2, and 3, may be referenced by the special mnemonics CONIN, CONOUT, and SYSLST, respectively. %DEFINE 12 $YOUR.DOS/YOURFILE NO Links unit 12 to the device YOUR.DOS (which must be active). te devices or resources. NAME operates by using, and maint- aining, the RIO Local Name Server Table (LNST). The user may perform the following operations on the LNST: 1) Get the address of a specified name 2) List the entire LNST 3) Insert a name and address into the LNST 4) Delete a name from the LNST 5) Change the address of a name already in the LNST 6) Update the file image of the LNST . Eg. %NAME R=LIST - lists the entire LNST. %NAME R=INSERT $TEST N=00 H=04 O=0407 inserts  An assign I/O request is then generated with YOURFILE as the filename, but no Open request. ^^^^^0150 DELETE (match_string|T=type|P=props|D=drive|Q=query|DATE^date| CDATE^date)* Deallocates all records and deletes name from file directory of files which match the specified options. Given without option, all (non-secret) files in each active unit are deleted. Where options other than match_strings are specified more than once, the last entered is used. As matchethe name 'test' into the LNST with address equal to the specified hexadecimal values. ^^^^^0180 DISK.STATUS [0|1...6|7] ^^^^^0190 DISPLAY Displays the current state of the RIO memory map. The memory map is displayed a matrix of dots ('.') with each dot representing 80h bytes of ram. Those entries with an 'A' instead of a '.' are allocated. s are made, a prompt is made of the form: DELETE drive/filename (Y/N/A/Q)? One character is accepted as input and must be one of the following: 'Y': Yes, delete the named file. 'N': No, do not delete the named file. 'A': Yes, delete the named file and all other files without further query. 'Q': No, don't delete the named file. Return to RIO. match_string: See: HELP CAT query: 'Q=N' suppresses queries for DATEand CDATE, please see 800910821012 HELP.DAT.02th.debugbug HELP CAT %DELETE D=1 *.L Q=N deletes, without query, all files on drive 1 whose names end in '.L'. ^^^^^0160 DISK.FORMAT (S|D=drive|ID='disk_name'|Q=query)* ^^^^^0170 NAME REQUEST=[Insert|Change|Delete|Register|Update|List|Get] [$Remote_name] [CHANGE=Temporary|Permanent] [MODE=Local|Global] [NETWORK_ADDRESS=Hex_number] [HOST_ADDRESS=Hex_number] [OBJECT_ADDRESS=Hex_number] The RIO NAME command allows the user to generate or list the addresses and names of remo 800910821012 HELP.DAT.02th.debugbug^^^^^0200 DO command_file [parameter]* Reads, and interprets the content of command_file as though it were a series of commands entered at the console. Variable substitutions are supported. Substitution of the nth parameter is made for each occurence of the string '#n', where n is an integer less than or equal to the number of parameters given. Conditional expansion of the command line can be controlled by the symbol pair '[' and ']'. Any part of the command string of conditional dd to be dumped. %DUMP $MICRO.80:1/DATA Dumps the file 'DATA' from device MICRO.80, drive 1 onto the system volume output unit. ^^^^^0220 ECHO string Copies the string following the command name up to, but not including, the command terminator, to the console output device. This provides a method to send messages to the console from the command line. This facility can be especially useful in DO Command files. %ASM MYFILE;PLINK $=3000 MYFILE;ECHO epth greater than the number of parameters is ignored. The 'DO' command is reentrant (and has the 'force allocation' property) and may therefore call itself. PRINT file: ACTIVATE $LPTR [COPY #1 $LPTR[;COPY #2 $LPTR[;COPY #3 $LPTR]]] DEACTIVATE $LPTR Command: %DO PRINT MYFILE Result: ACTIVATE $LPTR COPY MYFILE $LPTR DEACTIVATE $LPTR ^^^^^0210 DUMP file_name [d=y] [m[ n]] Converts the referenced file into a  Sends a control-G (bell) to the console output device after completion of the assembly and link. ^^^^^0230 ERRORS ^^^^^0240 EXTRACT file_name Lists record count, record length, and the number of bytes in the last record of file_name. If the file is of type procedure, the file entry point, the lowest and highest memory addresses affected by the file, and the addresses of the memory segments which make up the file are displayed. For files created by IMAGE, hexadecimal/ASCII dump on unit SYSLST. Each byte of the file is displayed in hexadecimal. In addition, printable characters are displayed as ASCII symbols, while unprintable characters are displayed as '.'. If m and n are specified, the dump starts with record m and continues through record n. If m and/or n are unspecified, the dump starts with the first and continues through the last, respectively. If the m parameter is entered as 0, the descriptor receord of the file will be the first recor the segment addresses are those given in the parameter list. However, PLINK uses an optimizing algorithm for segment allocation dependent on program memory utilization and file record length. Thus, EXTRACT can be used to determine addresses to be used when patching files. %EXTRACT extract Record count = 0002 Record length = 0200 No. of bytes in last record = 0200 Entry point = 4400 Low address = 4400 High address = 33FF Stack size = 0000 Segments: 4400 45F2 ^^^^^0250 FORCE command_paramecation)+ [E=entry point] [ST=stack size] Copies memory images to a specified file. The resultant file will be procedure type, subtype 0. The first and last locations of each memory segment, optional entry point address (default=0), and stack size (default=80H bytes) are given in hexadecimal. At least one but no more than 16 segments may be specified. When writing the file, the exact memory locations, including first_location and last_location, are copied for eter_list Causes all command files in the command_parameter_list to be loaded even if the memory required is already allocated. Programs loaded using FORCE will be executed unless followed by a ','. %F FILEA,FILEB,;FILEC loads the procedure files FILEA and FILEB, but does not execute either. FILEC will be loaded (and executed) only if the memory it requires is available. ^^^^^0260 FORMAT [s] (d=drive|id='disk_name'|q=query|v|c=capacity|m=test)* Formats a Fach segment. The lowest and highest memory addresses referenced by the file are saved in the descriptor record (refer to the RIO User's Manual) and are used by the RIO Executive when requesting memory allocation prior to loading. %IMAGE TWO.BLOCKS 4400 4425 7000 7FF0 E=7000 copies contents of memory locations 4400 to 4425 and 7000 to 7FF0 to file TWO.BLOCKS. The file will have an entry point=7000 and stack size=80H. NB. IMAGE always sets the byte_count field of the FS soft_sectored diskette, initializes the disk allocation map and disk utilization statistics. Any parameters omitted from the command line will be asked for: s: System disk format is specified. If there is not a system disk on drive 0, prompts will indicate the course of action. v: Verify(read) each track as it is being formatted. This mode informs the user if any tracks were not formatted correctly. If v is omitted, the user will be prompted for a response. q=query: 'file's descriptor to zero. SET may be used to redefine this field if necessary. ^^^^^0280 INITIALIZE [device_name[ parameter list]] Sends an Initialize request to the master device or to the optionally specified device (which must be active). Result is device dependent. The supplemental parameter address of the vector points to the delimiter after the command or device_name, if given. %I $MY.VIDEO.DRIVER BUFFER = C000 sends an Initialize request to MY.VIDEO.DRIVE, with a poq=N' suppresses 'ready?' query. id='disk_name': Up to 24 characters not including a carriage return are used to identify the disk. c=capacity: 'c=p' specifies partial, for compatibility with older hardware. 'c=f' specifies full. m=test: 'm=y' requests thorough diskette testing. %FORMAT D=1 S ID='RIO SYSTEM DISK' Q=N formats the FFS diskette in drive 1 as a system diskette. ^^^^^0270 IMAGE file_name (first_location last_lointer to the space preceding 'BUFFER'. ^^^^^0290 LADT Lists the currently active devices, their entry points, size, and which units of the logical unit table are linked to each. %LADT Device Device Entry Module/Net Mapped Name Type Point Address Units SDM Remote 043A 00 FD 8007 CON Local 2500 2500 29FF 1 3 20 NULL Prom 214B 0000 0000 PCON Prom 0BE8 0000 0000 FDM Prom 0BFD 0000 0000 SDS2 Remote 043E 00 FD 8007 0 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 PE Local C0A5 C000 C9FF 2 ^^^^^0300 MASTER [device_name] Displays the current master device or, optionally, makes another currently active device the default source for unqualified files. This provides the user with the potential to easily utilize multiple file systems concurrently without the burden of always fully specifying file names. %MASTER $NEW.DOS Makes NEW.DOS the default device for unqualified file names. ^^^^^0310 MOVE (match_string|T=type|P=props|F=format|D=destination 800910821012 HELP.DAT.03th.debugbug   _device| S=source_device|L=listing_disposition|Q=query|DATE^date| CDATE^date)* The directory on the source_device is searched and files which match the specified options are copied from source_device to destination_device. MOVE can be used for files exceeding the capacity of a single floppy disk. match_string: Fully- or partially-specified file name (possibly using the arbitrary character string symbol '*'). format: Specifies long (F=L) l 800910821012 HELP.DAT.03th.debugbug    isting format. listing_disposition: Output file or device (default=SYSLST). DATE^date: Date of last modification--'^' is any of the relational operators '=', '<>', '>', '<', '>=', '<='. CDATE^date: Date of creation--'^' is any of the aforementioned relational operators. %MOVE T=P SYS* L=$LPRINTER S=1 D=0 DATE>=780615 copies all procedure files whose names start with 'SYS' and were last modified on or after June 15, 1978 fr%STATUS Memory Protect Violation %RELEASE %STATUS Drive 0 RIO.MCZ.SYSTEM.DISK 659 Sectors used 1805 Sectors available ^^^^^0350 RENAME (oldfile newfile|device:drive id='new_disk_name')* For each sequence "oldfile newfile", changes the name of "oldfile" to "newfile" on the disk drive specified by oldfile. The following message will be printed for each name change: oldfile ---> newfile If the sequence, "device:drive id='new_disk_name'", the naom the master device, drive 1, to the master device, drive 0. Listing sent to $LPRINTER. ^^^^^0320 PAUSE Issues successive Read Status requests to unit 1 (CONIN) until either the ESCape Pending flag or the Temporary Input Buffer full flag is active (see section 3.4.3 of the RIO User's Manual). If a character is ready to be input, it is absorbed and the program executes a normal return. If an ESCape is pending, subsequent commands in the command string are ignored. ^me of the disk in the specified drive is changed to "new_disk_name". The device must be $FFS for diskettes. The "new_disk_name" may be up to 24 characters long for $FFS and may include any character except carriage return or semicolon. If a single quote is to be part of the new name it must be preceeded by a percent sign(%). %RENAME $MYDOS/FILE.X FILE.Y generates Assign and Rename requests to device MYDOS changing name of FILE.X to FILE.Y. ^^^^^0360 RESTORE_^^^^0330 PRINT (file_name)* Copies one, or more ASCII-type file(s) to the SYSLST unit. The file name(s) may be fully or partially qualified. Entering the ESCape character (ASCII 1BH) at the console will usually terminate output, but this feature does depend upon optional functionality of the printer drivers currently assigned to SYSLST. ESC detection is supported by $PD, $SPD, $LP, and $CON. %PRINT 0/REPORT.FILE copies REPORT.FILE on drive 0 of the master device to SYSLST. TABS file_name Replaces the current 134-character console tabbing environment with the tabs in the specified file. The file_name may be fully or partially qualified. The referenced file must have been previously created by the save_tabs command.  %RESTORE_TABS $MYDOS:TAB.ASM replaces the current console tabbing environment with the tabs in the file TAB.ASM on device MYDOS. ^^^^^0370 SAVE_TABS file_name Stores the current 134-character tabbing environment  ^^^^^0340 RELEASE Memory required for procedure file loading is allocated immediately preceding execution, and deallocated after program completion. In the case where a file is loaded but no external file is executed (for example, after examination with the Debugger), it may be necessary to deallocate the space it occupies. This command deallocates any memory allocated as a result of procedure file loading since the last execution of an external command. %MOVE, into the specified file for possible later retrieval by the restore_tabs command. The file_name may be fully or partially qualified; if the file already exists, it is deleted and recreated. Please refer to the RIO User Manual for instructions on creating a specific console tabbing environment. %SAVE_TABS 0/LETTER.TABS stores the current console tabbing environment into the file LETTER.TABS on the master device, drive 0. ^^^^^0380 SET option_list Sets a wide variety of file, and system parameters: CHRDEL=c: Character delete symbol ESCCHR=c: ESCape symbol LINDEL=c: Line delete symbol NULLCT=n: Null character count after carriage return SPEED=nn: Serial communication port baud rate LFCNT=n: Line feed count after carriage return TABSIZE=n: Redefines all tab settings to be every n columns ECHO ON|OFF: Input character echo mode in CON AUTOLF ON|OFF: Automatic line feed insertion mode in CON PROPERTIESwarning: bitmap statistics are inconsistent is printed. If the total number of sectors marked as unused in the sector map does not equal the free sector count, then the following is printed: warning: allocation statistics are inconsistent These errors generally indicate reformatting of the drive is needed however, it may be possible to read all files from the drive and avoid loss of data. %STATUS $FFS:0 Drive 0 RIO System Disk 3199 Sectors used 1805 Sectors available OF file_name TO plist: Sets properties of file_name SUBTYPE OF file_name TO subtype: Sets the file subtype of file_name TYPE OF file_name TO type: Sets file type of file_name LOW_ADDRESS OF file_name TO nn: Sets low address of file_name HIGH_ADDRESS OF file_name TO nn: Sets high address of file_name STACK_SIZE OF file_name TO nn: Size of the user stack BYTE_COUNT OF file_name TO nn: Number of bytes in last record ENTRY_POINT OF file_name TO nn: Entry point of procedure fi le ^^^^^0390 STATUS [[D=]drive_number|device_name] Lists statistics on how many sectors on the specified device have been used and how much of it remains available for new files. If only the device_name is specifed, then all ready drives on that device are checked. The default lists statistics on all drives on the master device which are ready. In the event that the number of free sectors and the number of allocated sectors do not sum up to the number of sectors on the disk, the message:    800910821012 HELP.DAT.04th.debugbug!%rs are displayed. If the argument is omitted, this description of the 'HELP ASCII' command is printed. %HELP ASCII 'A prints '41H' on the console display. ^^^^^0450 HELP CHAR [hex_digit[hex_digit][H]|*] The ASCII character representation of the hexadecimal number consisting of the hex_digit(s) is printed. If the optional argument is *, all ASCII characters are displayed with their hexadecimal representations. If the argument is omitted, this description of the 'HELP  800910821012 HELP.DAT.04th.debugbug!% CHAR' command is printed. %HELP CHAR 41 prints 'A' on the console display. ^^^^^0460 DEBUG ^^^^^0470 HELP DEBUG * ^^^^^0480 GET filename ^^^^^0490 SAVE filename (starting_address ending_address)+ [E=entry] ^^^^^0400 VERBOSE Enter Verbose mode. Echo command strings as interpreted. Several utilities test this mode before printing non-essential messages. This mode is commonly specified when interpreting the content of "command files". See HELP BRIEF. %VERBOSE ^^^^^0410 syspid ^^^^^0420 XEQ [*[ parameter_list]] Begin execution of last loaded command with optional parameter list. %MOVE, %X * p1 p2 execute MOVE with p1 and p2 as parameters. #@810512820803@@A'$(LNSTUSE_TABS.RIO.USERs#'#) ^^^^^0430 : EXPRESSION Evaluates hex constant expression left to right and prints result. Allowable operators are +, -, *, and /. Overflow is not detected. %: FD00-4400/80 0172 ^^^^^0440 HELP ASCII ['ASCII_character|*] The hexadecimal representation of ASCII_character is printed. A preceding backslash ('\') may be used to input verbatim special characters. If the optional argument is *, the hexadecimal representations of all ASCII characte#@810512820803@@A'$(LNSTUSE_TABS.RIO.USERs#'#) SDMUSRSPC-8009108207151.2LAST_MODULE.OBJOUT.DEBUG.CMD-1-+/}-8009108207151.2LAST_MODULE.OBJOUT.DEBUG.CMD-1-+/ 3J801001820715JbJd748 DUMMY.FFS.OBJBJOUT.DEBUG.CMD373;?5 }81043082101296: HELP.DAT.05th.debugbug595=ACGKEIMQUYOSW[]ae_3J801001820715JbJd748 DUMMY.FFS.OBJBJOUT.DEBUG.CMD373;?5 }81043082101296: HELP.DAT.05th.debugbug595=ACGKEIMQUYOSW[]ae_LFFSFFS^^^^^0100 LOGIN [D=$device_name] [user_account_name [PW='password'] ] The login is typically the first step in establishing contact with a SDS (Shared Data Station). The login call to an SDS requires an account name and a password. The account must have been created before the user tries to log in. If D=$device_name is not specified, login assumes that the master device is an SDS and sends all requests to it. If D=$device_name is specified, all requests will be sent to } it. The user has the option of supplying the account name or both password and account name on the command line. If either of these is omitted, login will prompt for it. Note that when the user specifies the password on the command line it is not protected. However, if the user enters the password in response to the prompt: 'Password:', it will not be echoed on the console, and therefore be invisible to onlookers. Eg. %LOGIN D=$MY.SDM USER1 Password: % If the correct pasword for USER1 is given, the user will be logged in to the account named USER1 on MY.SDM. ^^^^^0110 LOGOUT [D=$device_name] When a user no longer needs access to a particular shared data station they are currently logged in to, a logout request should be sent to it to allow the SDS to re-use any resources allocated the that user. The only parameter required to logout is the name of the device to be logged out from. If this device is the master device, it is not necessary to specify the new password. ^^^^^0130 SETUD [D=$device_name] [pathname] The SETUD command allows a user to set the name of the utility directory for this account. The utility directory is the second directory in the chain of directories that are searched when searching for a file name. The user may specify an optional device name if the master device is not to be used. The path to the directory may also be specified on the command line or setud will prompt the user for it. Example: its name. Note that if a user is logged in to an account on an SDS and then logs in to another account, an automatic logout is issued for the previous account. Example: %LOGOUT This logs the user out from the current master device. ^^^^^0120 SETPW [D=$device_name] The SETPW command allows users to change the password of their own account, optionally specifying the name of a particular SDS by the use of the D=$device_name parameter. If a device name is not spec- %SETUD ^dir1>dir2> % This request would set the utility directory to dir2 for the account currently logged into the master device. ^^^^^0140 SETCD [D=$device_name] [pathname] The setcd command allows the user to set the current directory to the directory indicated by 'pathname' on the device 'device_name'. If 'device_name' is not specified then the master device will be used. If 'pathname' is not specified, setcd will prompt the user for it. Example:  ified, the master device will be used. SETPW prompts the user both for the existing, and for the replacement password. For security, passwords are not echoed on the screen. SETPW will ask for the new password to be entered twice, and if the entries are different, the user will be asked to try again. EG. %SETPW D=$MY.SDM Current password: New password: Type in the new password again: % The password of the user's account on $MY.SDM will be changed to   %SETCD D=$SDM ^ACCOUNTS> % This request would set the current directory to a directory named 'ACCOUNTS'. ^^^^^0150 DELDIR [D=$device_name] [subdirectory_name] The DELDIR command allows the user to delete an empty subdirectory. Directory type files are not normally deletable. The DELDIR command will delete a directory type file if it is currently empty. If the subdirectory is not empty, an error will be returned and no action taken. Device_name is the ophe time and date are displayed and the current date on the user's system is set to September 17, 1980. ^^^^^0210 PROTECT File_1 ... File_n WITH Options The protect command allows users to set the protection properties of files on the Shared Data Station(SDS). Files on the SDS may be protected for read, write and erase access at three different levels: Owner, Group, or Public. The Options field of the command line specifies the settings for each of the three levels plus the setting tional SDS device name. If this is not specified, the master device will be used. Subdirectory_name is the name of the directory to be deleted. If not specified, deldir will prompt the user for the name. Example: %DELDIR old_accounts % This request will delete the subdirectory 'old_accounts' if it is currently empty. ^^^^^0180 CRTDIR [D=$device_name] [subdirectory_name] The CRTDIR command allows users to create subdirectories beneath their curreof the Group Access Flag (GAF). The Owner, Group, and Public properties can be set by specifying the level (first character is sufficient) followed by '=' and the properties. The allowed properties are: R[read allowed], W[write allowed], E[erase allowed], NR[No read allowed], NW[No write allowed], NE[No erase allowed]. These properties should be concatenated to form a string following the '=' (i.e. O=REW or O=RNWNE). GAF can be set either to ALLOWED or DISALLOWED ('A' and 'D', are rent directory. The master device will be used unless the D=$device name parameter is specified. If the subdirectory_name parameter is omitted, CRTDIR will prompt the user for the name. Example: %CRTDIR D=$MY.SDM Subdirectory name: new_accounts % This request creates a new subdirectory named 'new_accounts' beneath the current directory level. ^^^^^0190 GETIME [D=$device_name] The GETIME command allows a user to get the current time of day ancognised). If GAF is specified, it must be spelled completely (GAF, gaf, GaF, etc.) Any unspecified property, or level, remains unchanged by the protect request. See the SDM Reference Manual for a complete description of the properties. Files may be fully or partially specified file names (i.e. $SDM/file, file, etc.). PROTECT allows up to 100 files to be specified in a single command. Eg. %PROTECT $SDM/my.source.s WITH O=RWE G=RWNE P=RNENW GAF=ALLOWED Gives the file 'my.source.s' the prd date from a Shared Data Station (SDS). The GETIME command requests the time from the master device unless the D=$device_name parameter is specified in which case the named device is used. In either case the device must be an SDS. Getime displays the time and then sets the current date on the user's system. Example: %GETIME At the tone the time will be 01:12:45 am Wednesday, September 17, 1980 Getime was called to get the time from the master device. Toperties as specified. ^^^^^0250 WHO [D=$sdm_name] The RIO who command allows users to find out who is currently logged into the specified SDS. If the 'D=$sdm_name' paramter is omitted, the master device is assumed. Who first prints the ID and station number of the requestor then lists all users currently logged in. Example: %WHO Your User ID and [network,host addresses]: user1 [00,03] All users currently logged in: User ID [Network,Host]  user3 [00,04] user9 [00,23] user1 [00,03] @@@@:)Ww()!BU"+ aZ%.:Z!1~ !W%.:1_!1:1!TL+ >I@. 7n:)Wo(c:.(>2~U!"1!1:1( !.5 *:1C/2.>2.![U"1"U:~U(<2~U*U:~U(<2."12~U:B/(! /!.+ Verification completed. ** 0000 verification errors ** >2B/!/4>:(>0w+> !q/ :1!/ :~U02/!g/0+ )/i/o error while reading cylinder side :)Wo( :B/(.!1>I1>/ V21"1S1C1:+W21!1:+W%0!08$ !1 > "!51) Floppy disk formatting utility, 820809 !*)+ `W{(!`1~ (_>2.2.2~U!"U!1:+W!1w21!1!)W~ ((@.:*WS.:*W(>2zU21!1:1G.G.:1(a.0͗/@.:.:1 L(<:)Wo(.:)Ww +G(/+4,-4,-1!U1 !?V"V!}ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1>21!?V"V!ͱ/1!U1!Uv2!2c 20000028210120^0CgdhINSTALL.MCZ2.RIO.USERs cgckosimquw{!2!U2$!_V"V!yͱ/!V"V!ͱ/1:_W( O!,WU!2226#6+!U1>!f2w>#w>!n2w:*W :)W( !U3(:)Wwʥ,!1R:)WG(>!2w*\1 "\1*^1 "^1:*W :)W(*\1*^1):Z( (G"m3!R"r3 !"m3!"r3!V"V!ͱ/!dU+ :zU .!->Uy-gog-:. .->/:1wT] c 20000028210120^0CgdhINSTALL.MCZ2.RIO.USERs cgckosimquw{:6<>26~!@7(!X7#~#fo"6?7*6w nf }?7 \7#86-92:::86;:͎=:5g(*6*6"6*6"6!"6:5G [5*5͡=EEE<͍*5[5^=:6_:6W:6o:6g99*6[6D=K5B(͘<"5!5ˆS5e<>͘<>!"5"57͘<>!K5[5R0*5B *5R >C5S5!5ˆe Cannot write procedure file ;!9!0"r0n f ~ J2! 9^#Vr+sn f ~ u2!!91!^?utq Y5n f ~ ʬ2n f ~ ʬ2n f ~*r0w*r0#"r0! 9^#Vr+s*r06 n f ~ 2! 9^#Vr+swwnf!R3!31nf~!@0nfw!9^#Vr+sn f ~ 13!!T1!^?utq Y5!F0"r0n f ~ n3n f ~ n3n f ~*r0w*r0#"r0! 9^#Vr+s*r06 !!0!͹>q yʬ3!!n1!^?utqY5!!@0!͹>q y3!!1!^?utq!?qY5!͠5y211͎=:5g(*6G *5[5͡= !5Ƨ*5+|( K5 6!5*5"5͘!6:626>26͘=>Y26!6͘=Y<=;,;:5g _o(L͘*5! 4;v=*6Y<<:5_( :5F́;~!6>G!5 o;"55 ~25[5!5 >25> !5(>"5>og6~w25<(>25!=*6"5|*6( [6*6͍<"5>25Z>!"5"5!:4!!1!"^?utq !?q !?q Y5!͠5y221ʋ4:21ʋ4!!1!#^?utq !?q !?q Y5:21œ4!!"/1â4!"/1!!t0*/1b?utq y4nf*/1R4!!1!^?utqA5!!t0*/1^?utq y%5nf*/1RA5!!2!^?utq!?q!?q30a52!9~25!5~ (>:a5w80232! <"5~26!D<"6!"6"6> 26!6͘=>26͘= *6*6tu6 *5[5R< *5[5R<>ɷɧRbk!5N^Fˎ[5*5ͨ=*5Rܾ<[5*5+| !"5S55!56256!66*5[5R*5(!*5T]6 ɧR>0>,26:526!6"6! "6!6͘=>JG8 7ejW#+JUlg>8yW:6!6 6#25́;Y<=;ē;~ :6:6ˇ26!6:526S6"6[5R"6>{=z%>s>*6"6|(:6 *6+|(->$>&26͘=J>!"6:6G x26͘=J>@>!"6 :6G x26͘=J>*6"5>:6Z>!5ˆ!6>26:526͘=!"5ɯz(!R>26S6780709 !9>2>~2>nf| !>">!>">>2>@w >2>~0 >˟2>!">@w >!9>2>~2>!">@w>22>!9~2>@w>> 2>!9~2>nf">nf">@w u t >62>!9~ 2>nf ">nf">~2>@w !9!9~2>nf|(">>2>!>">>2>y *800910820818*T y:*}}z~FORMATISKABS.RIO.USERs y}yae_@w >2>@w!>6:>*>790410!9>ww!9>ww|(~/wR|(~/w>wR|MHBG~(`i~(R~(R3!9YOw{( {D_~/wy( ~/wyDO7BG~x(D3!9YO>w{( {D_>wy(yDO7B~x(D3zKHBzKHBgiYO7BxYO7B!9ŗw|(~/wRDMz(~/w!Rx"BG~( PY!R`i3!9_w{( ~/w{D_y( ~/wyDOB~{(D3y *800910820818*T y:*}}z~FORMATISKABS.RIO.USERs y}yae_|M"Bgi_B{ɯ0!0ɯ0G{/!jR0?  > /:1d0!0C$ !1 > "F0!51:+W2+W> /2+W:1 !51>/:1!0$ !n0$ cannot read bootstrapcannot write bootstrapinsert a system disk, type a carriage return to continueinsert the disk being formatted, type a carriage return to continue!161R>+|>>R<0#G2{Ux2}U}2|U+'m1r1$FDM 1r1$FFS 111 715][!z ͼ[]( "z:Z2Z>2Z2Z][!"z͞]!z [¤\]"z:Z *Z"z:Z2Z][!"z͞]!z [¤\N]l\"z\:Z *Z"z:Z2Z[:)W :*W 2Z>L2Z!q"Z>B2Z2Z!i "Z:z [[]!L\ ͹]>I2Z]>0:z  !L\ ͹]:z[:ZH\H\H\!:ZG!S:Z(##>(w#( w!Z4!y͇]ɧ :)WG(/+!R1ͥ,x\![!YyU+ +!R1!2:Z >H w#A!Zw>ͥ,[\͘]\!yYou are using an early revision of hardware, please specify the C=P option. Now writing worst-case pattern... Formatting completed. DIRECTORYyy}}@ z DIRECTORY yy} :1! W !W+ *V $ first directory record directory descriptor directory descriptor backup first SOP first SOP backup bitmap 3͹]]>1[!z͹]ɯ!Z 4/]w!Z4:Z >M>C(![Z"Z!5"Z>2Z>2Zɯ!Z 4*Zx]w*Z4R"Z:Z=2Z(>2Z>2]!y4>:(60+> !yÇ]:Z!z]:Z02z!z2͹]"zCz!z!-{!J{!={!-{!J{n???? 007w# 007w i/o error while writing  2*W>2)W!)W+#~ ʐX;ʐX](_S V C #>=&X#~_P(F&XsW>2*WT #>=&X#~_N(Y OsWD #>=&X#~0&X&X2+WsWF+X#>=&X#~_S !,Z5$ sWDsW>DtYI @##>= #~' #,W~'( &X;&X% #~ #yeX>2_WsWQ&X#>=&X#~_YsWN&XsW!)WN !Y+ zY:Y0&X&X2+WV :!Y+ 3SY!Y!,W> (#> w,WR}X>2 00 bad tracks removed from free list. Media test completed. A bad track was found in a critical area. ******** THE DISKETTE IS UNUSABLE ******** 00000000 media test errors in pass 000001 i/o error while reading cylinder side  i/o error while writing cylinder side checking cyl side Tz ^z5^z5Hy3z{{$FDM: _Wf(#~ !Y+ zY:Y_Y f($nMY!Z+ zY:Y_Y :)W2)Wg(!Y+ zY:Y_Y(>I>_> !Y*" ,WDrive ( 0|1|2|3 ) : Diskette ID : Media test ( Y|N ) : NReady ( Y|N ) : NVerify ( Y|N ) : NSingle density is not supported. Double will be used.:MEDIA 820408, Copyright Zilog, Inc., 19805Bi m!Z!^Z(w# y =]"z͐[y]!y>60+= !y>61+=60+= :+W2z2z:ZW[2Z@J{:{BJ{:{ECHO COPYRIGHT, ZILOG, INC., 1980, 1981, 1982 X *All rights reserved. X *No part of this software may be copied or used X *without the express written consent of ZILOG, INC. DATE 820927 BRIEF ECHO COPYRIGHT, ZILOG, INC., 1980, 1981, 1982 X *All rights reserved. X *No part of this software may be copied or used X *without the express written consent of ZILOG, INC. DATE 820920 BRIEF  820920820920 OS.INIT.OLDPPORT.HOOKS.OBJMD  *800910820715*2*[LEDIT.TO.MCZ2.RIO.USERs,ECHO COPYRIGHT, ZILOG, INC., 1980, 1981, 1982 X *All rights reserved. X *No part of this software may be copied or used X *without the express written consent of ZILOG, INC. DATE 820818 BRIEF     *800910820715*2*[LEDIT.TO.MCZ2.RIO.USERs,4001EDIT *8D>(ͭ:"6D>>9/>R !?9/>E4!?<ھ/**D::>9/>I4*6D~ !;>ͽ09/*6D~ʗ0*?R*@D++"6D(;k;>T>9/!?˞9/*?ͽ0[8D?>+ͽ09/!'R0>*>"*D!XD!1**D^VOR8 y0w###>d !?<˶ھ/*("?YF!'B~"?#"?Ù/k? ʾ/G!ZH:?(![J6 #w ( 6 +~ (##6!?ZH:?([JS?9/k? ʾ/&@9/!?n(*?#~("?>2?!&@~=!"(D"*Dk?"3G ʾ/#~ #f>ھ/>?V2q3*3"? T< )=!?'EDIT 810709 COPYRIGHT, ZILOG, INC. 1981""/:?2!.͹?"?.. (d;(`˯O(3N()R ;>L #>= -u*"@".!.͹?w-2-/#>= #".!. v>2,/(8w-z-"?. ("?!? v(8w-!.͹? ?!YF~ *"/"_9!]9 v~ w-:-/(:,/ ".!. v~ w-!?6 S?@S??>S?~ ( w( >L+>֧+8+~>L6 +*@|x+2./+:-/+:,/ /!.~_8>#n$/((/2.:?2.!.6.S. S.*@"..>S. v>L+~ G?->!\L 2*6D>:*D(*2D"6D1>!?v(>!?˶˖*(DR("(D*>8 ͸< ͭ:>!?f˦9/!3͹?9/*?"3k? 2!3͹?:32 ?!YF~ (q3*>=2!?v˶(*3"?9/:?2*3"?3/*?"3=*>S6D=>k? w2!?*3~ # É2Y>!?Fˆ(  *6D"2D<*8D "8D*:D ":DK0D[6DS2D >*>ѧR#R8>"6D*>+S6D=>!?fV˖>*/:INPUT NO CHANGE >E¾/=39/<<(**D|9/3<*6D*>(0> >*6DS6D=~(> ;k; 0!S>D*@B0Q  F"//C1/6 #6"6D#6 #6"@D"4DR"?-".D:./ !.͹?*@DX;w2"?".[@DS?S.ͪ-:-/(9.!.!. ͊->L+ k;2?9/*?[?K@ -!?>!ͫ>+"?>!ͫ>*@D>+"8D":D2?9/> #6 #6>U¾/;>I ;>T!->F ;!?!@ ͊-!.!. ͊-!]96>!ͫ>68p 2>*//K1/ *"/6utqp6 6  v> !!?ͫ>> t.>LF <-!9 ()08%@8˯:8 A8G0o#o+00?k? ʾ/*>T< >!?˖>9/~4͸< ͭ:><9/*>84<<(> >>U 6=<9/>?(= <9/>*>> >*6D~ʗ0"2D;>!?<˖Ru0u0::>(=> >*?Rʗ0*2D"6D!<͹?9/*8D"6D>!4͹?9/EOF k? (099/>9p8(89/>!f8/589/*>* !_8( > (89/fnV^K9 ->*6DKa9(("6D+~2 :6 ;>>2:/:2:*6D+: :w25+"6D*:=*:]9( 8(8>*?~ ( #~ ( ("? (;(#~ ; a.ͪ-(*?".K? [@էRy.".a.*.|>!!.ͫ>>L+>B.* EDIT 2.2 NAME? NEW FILE INSUFFICIENT MEMORY OPTION ERROR "I/O ERROR C2: DEVICE IS NOT READY .OLD.old!0͹?*?R#1!?˶!?˖ˎn(!*?~ # ~ :?( *?"?>2? !?ˮ ?*?ˮ~"?#"?A1'B+!// V+^*?#~ (.( >?>!?˶!?BCDFGIJLMNPQRTUVWX'013360i2>1V0184U4-2u09/>9/=<9/"(D*,D~ (^#"?̈́? (S!"9k? (#R 8;>L 1#>= +- &R0"9099/>9p8(289/!.͹?9/!]96!"_9>ͫ>2l9>j9p8 *6D"_9"2D*>(+0> F77:]9( 8(89/*6D~>9/F7**D"(Dͭ::?(*?"?<ڶ6"(D*>D[9[:R,E[4DS2D*:w#": S6D> 6ö6ʶ6"6D7"_9ç6*6D[_9RK9:"a9":Rz(>!_8(89/[*?#;>T;>D*(D"*D*2D"6D*>(0> >*6DS6D=~7;k;*!_8(89/*S8#S8 80w!]9ë>!]9pë>!]9p6Sh99S_9 Sa9 v8 [9!R8 9>!"_9"a9_89/~ 98! :E8!9͹?8~>!9"_9! "a9!_8nf~ n f ##~#_6 986 66<"_99Sh9>!]966 v88>j9** FILE NOT FOUND: INVALID FILENAME: INVALID ATTRIBUTES: UNIT # D4<<**DR"*D*6D++> ##"6D~*6D> "6D~[6D*?> *4DR# H:?G(+F#T]>W~#(/(, +6#"?~ k?:?2?<8"(D!?<8 ѧRDMwu t  v#*?~˯!?N^*6D~Y>XD>"?͓?!XDw+6͹?:>!?> >:>!"FD!BD6!YF"DD"?6 :YF*FDYF6 !BD!?"DD!"FD66@!?6B*?~ #~ ("? (#*?~ #"?*?6 !XD"?!MD6"OD!"QD6!MD6~#"OD?*ISK ERROR R}ox( 8"|g"?;k;ͭ:[?R8"*D*4D"6D~0*>(0>:: 0>[>DRDMwz:*4D++:;!!?ͫ>> -:9<*8Dw?>"?́:[@DS?K@:ͽ;[@D*:DR#DM[@D*8D[?R"6D2;"?͐:~ V^K@ -K.D> +X;*.DE;"4D++~2;<6+~2:<6 [?+":D+> ##"8D>(~29<6":D>!!?ͫ>( :?-t.*@D"?͐:K.D*@D>*@D"4D++"6D6+6 !"?(*.DE;+X;*?|>!!?ͫ>t.*8D>(ͭ:́:*8D#m:[@D!?srR# $U. 6$P 12$ K@:C?K@y."$@;STRING NOT IN BLOCK PROCEED? ͭ:*?+"?:?(><*?~ (NO*6D:?w >_:?W(_[?"6Dͭ<(#  ((#(*6D#> *>>~(0 !<͹?!/<͹?*?*YF>*?˯Y"YF"?k?",D~G:0I0 C!?x&o8"*DT] 8 T]",D#!?ˆ!**D|>}!"*D!?Fˆ x (*(!?v˶(7*?#> (!?V˖¶4*?~ ( G#~ ((#",D*6D*>0 =(*>8͸<("6D7~!?"6D*?~˯P ;>U("*D T<[6DR*8DR"8D*:DR#DM"0DS:D*6D~*>! ?*800910820715*.*YPLINKTO.MCZ2.RIO.USERs,:>Ig(:6 *YI "YIID,. +6 ͉.Z +~.(H#~˯J ͉.B ͉.O +~.(,!I~ (/# F+> # IGh!.(!.7>Fa++~˯.OBJ .obj *}*,(,# ,(,#(+"}***"}**I"HI+>2?Io!I!T}ʐ+wa+>2?Io͵+w +!//:/>2?IOͻTu} +2/}2?I!/!ͷTu} +:>Ig##~$ #~+2+#,x([HI\+"HI*]I"UIͶ.*QI-*SI"[IutP001*HI^V 0=*HIutK[I w_ w W0 w w w !>Iv(w͚0*[Iw#w .-ڈ/*l/":J[?*800910820715*.*YPLINKTO.MCZ2.RIO.USERs,j/S8JR:i/"@IɧZ(\+"HI:*:i/ "Iz2i/*j/R8Sj/*l/[HIRSl/.!>I˶.(4*[Iw#/J+*[I##~#( ^#VSHI!>I>2h/7*[I~ ̈́3^V˲zz )#!*UIR8*[IR0 /0B+NFx*[I~2e/6#~R+R+2f/6_ x(^~#^  1:=I_ &#"JI{18:e/[[I:f/5ѯ:>Iw ^#Vnfs#r###[[I:e/:f/"[IO*SI~ (##^(7È1 #~2NIy#^(È1C[JI# #XÈ1Y*JI7*[I"1!"1?4=!2RJ+=PLINK 810921 COPYRIGHT ZILOG,INC. 1978,1979,1980,1981 PLINK 4.4"*"*s{*!5*-͋U\,.n/}46ͩH>2*ͳ,{{*:*o**!P,H:?I02[,!E,-͠+>I2*k*!+**}*;!+-!+*-!,!,!+!IA(@(F !',*F,(+7-!5,*!I.͵+.͵+.͵+.͵+uT}INVALID OPTION: LINK DIRECTORY OVERFLOWPROGRAM TOO BIGINVALID FOS1*HI"1ut"1ut=S1 >>+4>+4!?4. >+4*1#"1*[I+4.Q4G+4=!,R(s[4+4+4(( q.G>+4+4*[I"JI.Q4G+4==.=!,R({*JI+w,*1(*1[4?4:=I_ *JI~#"JI1562 .( (( J4 J4J4 .G> .J4R+*16}#6!ut*1|(8![1#8#88[18ut \+*[I"1NFx. &>+4.Q4G+4=[4+4+4eR+>+4*[I"JI.Q4G+4==.=nf[4?4:RMAT: INVALID DATA: TOO MANY SEGMENTSINVALID FILE: FILE NOT FOUND: I/O ERROR ON UNIT !   2,"QIS]I:Uo&]T [QI8"SI*]I7R8 ( DMbk6B+:,*]I[QIR#DM> ~ ;), ,!908a8˯ -o#o+;(00}2+:8 A8G0N#* N#*͝-6 >B-+2?Io!*H> # ͷT}w +N#*͝-6 :=IO̗-:=IW :>I_9->B-+>B-!I, !I/# ,(>.+6 !*t-!*> w#͘.,($ #~+= 8/2*~- 2*#"}*=I_ *JI~#"JI*1^#V6+61s#r5 Ð3*[Iw#*UI7RB+S[I}+4|+4..ɻ8(R+.+4ZintrpZintrp NOT FOUND!f4"JI>10:h/(!l4d-^#VSDI*HI"OI*[I##"[I"WI*]I"UIG5*SI~ !#~#"JI105:NI,(((##^ý4"JI^#V*WIK[I} |({# z( ### 5ʹ5[BIbk[OIs#r#ý4:=Io(P*FI~08 :0,8"JI,# x10!5d-"^#V:NI((, "JIʹ5[OISFI[IENTRY NOT FOUND?4ͨ6nf?4*BI#"BI*JI:=I_ i*;I#";I:>IO -!p6d--!>I͏6*;I#";I:>IG -!M6d--!>I-*JI+~G#* 8t--*p-+^"MULTIPLY-DEFINED GLOBAL IN MODULE:UNRESOLVED EXTERNAL IN MODULE:ͨ6Ͷ.G>26-26>*QI nf[JIR< [SIRI͕7!>IN F(:=IGS7*I"I!>I*QI"YIͶ.80#( *LI`7ͤ::9([9*LI`79*OI`7S>͂8!"I!>I˦:=Ig(?aFg>.>.[HIS6"HIR0Ͳ7*I8 [HIR07*HI[6Ru8*BIT]*@I"@I*HIZ\+:=I_ [HI!X8ͼG!?8*!p-7W+:6*6| [HI*6+r+s7`8*6+V+^*8J=.">=">x( =">.2:< ::7(.> ,::K(J .(..>.(.>..> ::.>..> .(N=::.>.>%< ". ( = =::.>.>=.(G..*:##[:R=8:8'88J880;( :(<(x.&( g˼.>.o.> |..>=">+|=">=">+*[I9>##ͷ="JIͨ6~!(:NInf,(nf=~(R=I>~($0 #"JI10*HI5"HI*JI^#V*[I#"JI͏6R+._.W=zS_}R8S8J*6| #+*:JR0S:J*6s#r#[HIs#r#"6!"6!647POSSIBLE CODE OVERLAY AT IN *6[I|g}ozR>͎:+| ɗ2672I*6++w#*FI"I*I"I!t"I>2?Io!I͘S}w +!>IV( ͂97:>I!9/~(R+!>I.:9G#R+7-*YI "YI^#VS[I#^#VSLI#^#V:>Iz˺ ˿˗r˲(CLI#2>I###~#(.97|>2?I_Tu} +:͇:|͇:ɗ.͇:x.=*:##":͇:*:#":~(I>##N  KBI*WIx >͇:*DI=^#V#N#F#`i=ѧR=Ͷ.*QI:> H?@>.-0 ~ l?ʹ??"F"F>v(>"F*͝-!*,(#x"F!*~"F#~"F~"F"F"FnfNFx ~ #^?~"F#~G"F#~"F#~"F#~"F#nf"LI9G:9!9!98~͇:x: x:8V+^*LI}͇:|͇:x: V+^##^#V*[I#~R+<_^#V}͇:|͇:x:x:x: :# y#~*HI#"HI./*6#"6*[I6>=S: >.( (( .G> .͇: .(G.͇:. .G > == .(G=== =*LI=ú: 8=z(KB[IR8*HI": "HI78B*:"HI>͇: x .(-==*[I9>=z(I>##ͷ===ú:*YI*HI^VR=;*:|( *LI=j=*[I6}!":*:| .;=.! .!?/*?|(_3FK?:?(X.G"F.(E0AG"F."F ."F."F.O.G*LI }"F|"F x .R+. ((>(>>2?.02 ?==:?(*LIS#?.= (:?"F: ?(o"FE."F*#?}"F|"F: ?G> xy@r@- .ASAA.nf"LI~ !?/>=*LI" ?==S ?>~:?(J>"F*͝-!*,(#x2 ?"F!*F*LI*F>"F!-*F: ?G!*~"F#*?|(3F.R+"F.2 ?"F=!*F=*LI*F.R+"F=*F: ?EE!9n-*JI~( (+˾#˾#~O#"JI* 8 t--^#V!*ͼG͏6*͝-t-~ 8##~_LH#[JI*_F#F0G#a8{0˯O~a8{0˯8*JI#F[_F*_F"JI[;Iz( !HI "-:=IO>.!H- ERRORS LINK COMPLETEH#H 80w!3I^VR8<0w###>0#d  f"[I~ʨC. f"F.2 ?"F==S#? FR"!?.2%?=S&?!,R *#?%"#?*!?*F*#?*F:%?"F*&?*F: ?E .G> "F."FE B_C"F.2 ?"F=S!?=S#?.2%?P(` <* ?*F*#?*F:%?"F: ??? BG=* ?[ ?*F=*F B=!,R*LI"!? * ?"!?K#?!C#?* ?"!?K ? K#? "#?*!?*F*#?*F:%?"F*F: ?E B .( (( = == .G> .=R+:?ʆD*[INFx(N ~ #^ùC>"F#~"F!*F^^#V*F>"F!*FF#~810921:]KPQ>2]K~!K(!K#~#fo"eKͭK*eKw nf }ͭK KL6M2pNN4O8O4OR:GJg(*eK*TK"cK*RK"aK!"TK:GJG [HJ*NJR"F###*?|3FK?.G> (>2?"F.2 ?R+R+"F!*F: ?_!>/=:?! *LI*F>"F!*F!>: ?G~"F# x:F" ?NFxE . i2?.2 ?MF==.2%? FS#?=S&?!,R : ?G>:?"F: ?"F*LI*F*#?*F:%?"F*&?*F: ?ER+.MFG>ÒD*?|* ?9.R+.G>K? x. "F."FE(R+"F.2 ?"F=*LI*F=S#?.2%?P(` 1*#?*F:%?"F: ???(G=*LI*F=*F;E*LI[#?*F:%?"F=*F: ?E;EG."F>2?Io!.ĿP!GJoQ[PJR[cKz>̿PPĿPQDM*cKB"cK*TK "TK*PJ+[HJ[aKSaK*PJ "PJR8Q!"PJ*NJ#"NJ*cK|ƒL!GJˆ L[HJRĿP LR:GJg(*eK*TK"cK*RK"aK!"TK!GJF Ƨ*JJ[NJR܂QL[HJ*NJRĿP![PJR[cKz>̿PQDM*cKB"cK*TK "TK*PJ+[HJT]*aK"aK!GJ*PJ "PJ*JJ[NJR *LJ[PJ͑Q"LJ*PJRL[HJ*NJ"RĿP[JJR!"PJ#"NJ0[HJRĿPL+"JJ!"LJ͂Q!GJˎLR:GJg(*eK*JJ[NJRQ:[K(-(>*NJ[PJQ:TK_:UKW:RKo:SKg1NN*RK[TK;QKNJTu} +*[IHHR+#^^#V#"[I./|"F}"F:F9*?%R+_* ?RR+" ?:=IW O!>I-!Fd-!Fd--Ͷ.*QI}G8LGG-[@I!6GͼG!*G*!_I,(!2Gt-[FI!&GͼG!Gd-!>I˞LOAD MAPMODULE ORIGIN LENGTHGLOBAL ADDRESS MODULE ENTRY: PROGRAM -- BYTESLINKAGE INFO--!@G* [OI!*ͼG*BIT]!*ͼG#t-- -*͝-!*> (t--^V!*ͼG^V !*ͼG#t-7zH#{H*SIHH-!Gd--*SIHH"JI"_F*_F#^HH("_FgHB(Q"NJ!GJˆSPJP>Q>!"PJ"NJ7Q>!KJJ[LJR0*NJB *PJR >CNJSPJ!GJˆR:GJg(*eKG *NJ[HJR !GJƧ*PJ+|(4KHJ 6!GJ*NJ"JJQ!GJˆ*JJ"RJ#[HJR( >*NJ*NJ+"RJ8Q!CK:PK2CK>2DKR>P!"XK!PKR2gKͷO*eK P :gKQ>2QK!PKRPͷO¦O:GJg _o(LQ͛Q*LJ:4Ko(-R #*JJ[5KR!8͂Q*5K#[HJ"R͛Q!">K:;K2;K͟Q>*HJ! ͮOQ*eKPPQ:GJ_( :DJFO~!$K>G!TJ O"EJGJ ~2DJ[EJ!GJ >2GJ> !TJ(>"EJ>og$K~w2DJ͌P(>2GJ͛Q*5K"JJ|*7K( [7K*>KQ"LJ>2GJR!"NJ"PJ!! ͊P"HJ~2CK!P"EK!"GK"NK> 2DK!CKR>2DKR *eK*TKtuPK *NJ[JJRP *LJ[PJRQ>ɷɧRbk!GJN^Fˎ[HJ*NJ"R*JJR8Q[NJ*PJ+| !"LJSJJUJ!TJ62GJ%K!$K6*JJ[NJR*LJ(!*HJT]6 ɧR>0>,2DK:DJ2CK!4K"EK! "GK!CKR>JG8 7ejW#+JUlg>8yW:PK!$K 6#IgWY´V!=I#,(= #"U!U#,(= #"U!UøUgWO gWW !=I]M 4!=IR,((#= "U,(!U9#,(= #,"I%U#,(= #,("FI!=I08:,øUT #,(= #,(,"2> VͶ.-.:UO(*UID,(1W!I> D+~. 6 >2?Io!I. !ICS}wa+ >Fa+!I, !I/# _I,(> :=IOlWgW#~˯:UW( >*UW+!I#, :_Io!W(!W> >!IW6 !5**N#6 ͗-.MAP.map:UG(*U"!I#, :_Io!W(!W> !I>W.SYM.sym"2GJOPͷO P~ :`K:`Kˇ2`K!CK:DJ2CKSEK"^K[RJR"AKʁR{WRzʰRR*AK"GK|(:@K *GK+|(>>$>&2DKRŸR!"GK:`KG x2DKRRR 2*^K[JJR %!"GK :`KG x2DKRR*^K"RJ>:MKR!GJˆ!CK>2DK:DJ2CKR!"RJɯz(!R>2@KSAK!9>2S~ 2Snf "S! S"S>2 SSw @ >2SnfS~2 SSw !9!9>2S~2SnfSSw}( ~2S#~2S#"S!ShK:S80232X2?IO!T}w*Xd+ !9>2S~2Snf| !T"S!S"S>2SqUw >2S~0 >˟2S!"SqUw >!9>2S~2S!"SqUw>22S!9~2SqUw>> 2S!9~2Snf"Snf"SqUw u t >62S!9~ 2Snf "Snf"S~2SqUw !9!9~2Snf|("S>2S!S"S>2SqUw >2SqUw!ShK:S*SIͶ.->Fa+!U4B+-8(V#,V,("}*͘.,V˯DVEʏVRxVN(iM(OS('P(L(2+gWE gWT !=I!="  800910820927OS.INIT1.SUPPORT.HOOKS.OBJMD;2801008820715*P*GSORTE.OBJOBJOBJOUT.DEBUG.CMD    800910820927OS.INIT1.SUPPORT.HOOKS.OBJMD810325 SORT 1.50COPYRIGHT, ZILOGINC. 1979,1980      sortwork.aa SORT UTILITY 1.50 SORT COMPLETE OVERLAY NOT FOUND SORT ABORT: ERROR +F ?+X * p+ ON UNIT SortOvly.1SortOvly.2!9nf"4+nf"6+!2+\2!9~????2*~2*:* +:*72*,:*02ECHO COPYRIGHT, ZILOG, INC., 1980, 1981, 1982 X *All rights reserved. X *No part of this software may be copied or used X *without the express written consent of ZILOG, INC. DATE 820818 BRIEF *:* ,:*72*,:*02*!*!͟+!9~O,͆2yʚ,6Iw*0**2*2!*!͟+N+~ʅ,!+! ͟+N+!+!͟+7NQ2!9!A+nfnfh2!A+nf6,!A+nf#6 !c+\2:m+G-nfnf͟+!*!͟+>I2m+:m+O!,,!9~2%+nf"'+2+!%+\2:+H->F2/+:/+ON,,!9nf ~z҄->nf Fw->anf wnf ~zҳ->nf Fw->anf w!9nf ~a-->nf O~w3.>znf w;2801008820715*P*GSORTE.OBJOBJOBJOUT.DEBUG.CMD   nf ~a&.&.>nf O~w3.>znf w!9!*!͟+nf4E!+! ͠,B"*!+! ͠,**B!*!͟+6BCD DATA EXCEPTION ".".!4*".2.:.!*.>2.>/*.^#V#*.".*.".^#V#S.~2.#~#".!//U//ʚ/q//ʊ/0.I.,,2.>/!.4.:.M/!.>w:._[.*.K.>>`/>*.^#V*.N#fiR>>>*.V#^*.N#naç/*.^#V*.N#fiRʿ///ù//>>>*.+".ͅ0*.~*. /~ />ɾ/>U/U/>>[.ͅ0U/͞0[.*.>*. +0> 60>> :0>H0H0>>*.[.K.A^0h0#>O>>>!.!͟+.I.,,*.BK͒0*.BK~ q00*.K.A;0*.Aþ0~q0 q0#~q05*2"2*2"2!9N 4>2#4:22"4nf "$4!3"-4235~23>2#4!"&4595>ݶ22*4"2*4"2* 4"2nf]T*2 2#4*2"$4!"-45!4"$4! "&4>2#45*2*2222ͦ4!9>2#4!"$4>234:34ANq#y52{52B!12!9" 2" 2128.{ 2* 2yɯ!1r҂2ʖ2I! ! (> (78:34O4:2.8:342"4!"4\2*2*22:34<234!9N4:22"4:2i8*2*2222Í8~ݶʍ8>2#4nf"$4!3"-4235>2#45!9N4nf"44nf"/4*2*44R8*/4*2*44h2*2*44"2*2*44R"2!"4489*/4*2*2h2*/4*2"/4*44*2R"44:239!"289X5nf*44Ru t !9N4**"44nf"/4*2*2:*O2"14*44RҦ9!<4!&͟+!I!,,*14}9*/4*2*14h2*2*14"2*2*14R"2*44*14R"44L:*/4*2*2h2*/4*2"/LOGICAL RECORD EXCEEDS MAXIMUM LENGTH UNTERMINATED FINAL RECORD IN SOURCE MEMORY ALLOCATION ERROR ON OPEN !9!2:2o&4<!2!h2!9:2ݾ 5ͦ4~22!2!2:2o&4<!h2!9!"4\2:,465:,4O:2O,,!9! "&4!4"$4>02#45!9:22"4> 2#4*2"$4*2*2*2<ѧRڨ5*2+*2<*2"2"&4:222ñ5*2"2"&4!"-45*2"2*2*2*22#4*2"$4*2"&4!"-4" 4*44*2R"44:2F:*44**R=:=:!b4!$͟+!I!,,!"2L:X5q9***44Rut !9N4nf"64nf"/4*64}:*2*64R:*2*/4*64h2*2*64"2*2*64R"2:*2*/4*2h2*/4*2"/4*64*2R"645790410!9>ww!9>ww|(~/wR|(~/w>wR|M=G~(`i~(R~(R3!9YOw{( {D_~/wy( ~/wyDO=G~x(D3!9YO>w{( {D_>wy(yDO=~xB>23=B*6=#"6=*6=~ 2B>23=B>23=B>23=B!IBPB!JB ~#fosuc*B"BBB*6=#"6=*6=~ ÂB>23=B23=B>23=B>23=B!B©B!B ~#fo31sSuUzBrBkBkBcBcBB!BB!B ~#focbaSB BB:3=IB:5=B!=! ͟+!I!,,:5=24=:4=%C:3=!4*O:4=o&4<q:4=<24=:5=<25=àA=*6=~'LC*6=#"6=*6=~2*àA*6=͈@}2*àA=*6=͈@}2*yCyC>2*ͯ=>23=24=:4=O:*ʗDv>*6=͈@"1=!R(ҳC>I23=×D*1=!4*:4=o&4<s#rͯ=v>*6=͈@"1=}C*1=!RC>I23=×D*1=!(D3zK=zK=giYO=xYO=!9ŗw|(~/wRDMz(~/w!Rx*6=~ gD!4*O:4=o&4<qÊD>!4*O:4=o&4<qÊD!}D‚D!~D ~#fodaGD(D>I23=×Dͯ=:4=<24=ÅC:3=I A!=! ͟+:3=O!,,àA=*6=͈@"*!RҠA!q=!͟+!I!,,àA!EE!E ~#folktdrD\C/CAA!8=!͟+!I!,,àA!6!9nf"6=v>!*6=-*6="*ͯ=v>*6=~iE&F!E‡E!E ~#fo #;fEfEfE*6=#".=~=ʙE>I20=*6=~E:,=°E>I20=&F=!*6=-*6="*>2,=F:-=E>I20=&F=*6=".=~A*.="6=>2-=F!F >*6=#"6=>*6=#"6=!9ww Nnf!͛8"1=nf *1=ut *1=}p>nf~ p>!9^#Vr+s!9*6=~È>é>!>¦>!> ~#fo , >>>ò>*6=#"6=;!9nf~0>!9^#Vr+s>!9^#Vr+s!=utw!"=!"=!"=~([@nf~j?nf~A o&nfs#r?nf~a o&nfs#r?nf~0o&nfs#r?!??!? ~#fo0123456789fedcbaFEDCBAQ?Q?Q?Q?Q?Q?Q?Q?Q?Q?6?6?6?6?6?6???????!O=!͟+!I!,,!9^#Vr+snf~0[@nf~9 @ @nF!F ~#focCoOEEEE>I20=ͯ=v>_E:,=5F:0=IKF!^=!͟+!I!,,f~A @[@~ut xAwww nf~0@nf~9@@!9^#Vr+sA!9^#Vr+s~"1=}(Ev>*6=~ D=*6=~A2*!AA!A ~#fofFAA=>I23=*6=~ 12801008820715**GMERGERIO.SUPPORT.OBJEBUG.CMD!%)#'+-1512801008820715**GMERGERIO.SUPPORT.OBJEBUG.CMD!%)#'+-15>znf wnf ~a3.3.>nf O~w@.>znf w!9!*!ͬ+nf+E!+! ͭ,B!*!ͬ+6BCD DATA EXCEPTION ".".!4*".2.:.!*.>2.4/*.^#V#*.".*.".^#V#S.~2.#~#".!%/K/ʸ/ʐ/g//ʀ//.I.9,2.4/!.4ú.:.C/!.>w:._[.*.K.>>V/>*.^#V*.N#fiR>>>*.V#^*.N#naÝ/*.^#V*.N#fiRʵ///ï//>>>*.+".{0*.~*. /~ />ɾ/>K/K/>>[.{0K/͔810423 MERGE1.50COPYRIGHT, ZILOGINC. 1979,1980      mergwork.aa MERGE UTILITY 1.50 MERGE COMPLETE OVERLAY NOT FOUND MERGE ABORT: ERROR +F V+X * + ON UNIT MergOvly.1!9nf"K+nf"M+!I+R2!9~????2*~2*:* ,:*70[.*.>*. !0> ,0>> 00>>0>0>>*.[.K.AT0^0#>O>>>!.!ͬ+.I.9,*.BK͈0*.BK~ g00*.K.Aʹ0*.Aô0~g0 g0#~g02*,:*02*:* !,:*72*),:*02*!*!ͬ+!9~\,|2yʧ,6Iw*0**2*2!+!ͬ+N+~ʒ,!+! ͬ+N+!+!ͬ+7NG2!9!X+nfnf^2!X+nf6,!X+nf#6 !z+R2:+G-nfnfͬ+!*!ͬ+>I2+:+O!9,!9~2<+nf">+2+!<+R2:+U->F2F+:F+ON9,!9nf ~zґ->nf Fw->anf wnf ~z->nf Fw->anf w!9nf ~a..>nf O~w@.# ANq#y+2{+2B!'2!9"2"211E.{2*2yɯ!0rx2ʌ2I! ! (> R"*4:2<:**4**R3:3:!X4!$ͬ+!I!9,!"2B:N5g9****4Rut !9N4nf",4nf"%4*,4}:*2*,4RҺ:*2*%4*,4^2*2*,4"2*2*,4R"2:*2*%4*2^2*%4*2"%4*,4*2R",45790410!9>ww!9>ww|(~/wR|(~/w>wR|M =G~(`i~(R~(R3!9YOw{( {D_~/wy( ~/wyDOw{( {D_>wy(yDO<~x(D3LOGICAL RECORD EXCEEDS MAXIMUM LENGTH UNTERMINATED FINAL RECORD IN SOURCE MEMORY ALLOCATION ERROR ON OPEN !9!2:2o&*<!2!^2!9:2ݾ5͜4~22!2!2:2o&*<!^2!9!4R2:"4,5:"4O:2O9,!9! "4! 4"4>0245!9:224> 24*2"4*2*2*2 <ѧRڞ5*2+*2<*2"2"4:222ç5*2"2"4!"#45*2"2*2*2*2 24*2"4*2"4!"#45*2"2*zK =zK =giYO*-=#"-=2"2!9N 4>24:224nf "4!3"#4235~23>24!"45/5>ݶ22*4"2* 4"2*4"2nf]T*224*2"4!"#45! 4"4! "4>245*2*2222͜4!9>24!"4>2)4:)4(-8:)4O >*-=#"-=!9ww Nnf!͑8"(=nf *(=ut *(=}g>nf~ g>!9^#Vr+s!9*-=~>à>!>>!> ~#fo , |>|>|>é>*-=#"-=;!9nf~0>!9^#Vr+s>!9^#Vr+s!=utw!"=!"=!"=~(R@nf~a?nf~A o&nfs#r?nf~a o&nfs#r?nf~0o&nfs#r?!?¸?!? ~#fo0123456789fedcbaFEDCBAH?H?H?H?H?H?H?H?H?H?-?-?-?-?-?-???????!F=!ͬ+!I!9,!9^#Vr+snf~0R@nf~9@@nf~A@4:2$8:)424!4R2*2*22:)4<2)4!9N4:224:2_8*2*2222Ã8~ݶʃ8>24nf"4!3"#4235>245!9N4nf"*4nf"%4*2**4R8*%4*2**4^2*2**4"2*2**4R"2!"*4.9*%4*2*2^2*%4*2"%4**4*2R"*4:2)9!"2.9N5nf**4Ru t !9N4**"*4nf"%4*2*2:*O2"'4**4RҜ9!24!&ͬ+!I!9,*'4}9*%4*2*'4^2*2*'4"2*2*'4R"2**4*'4R"*4B:*%4*2*2^2*%4*2"%4**4*2R@~!=ut>!=ut>!H@O@!I@ ~#fo%@@ @>*=e.))))*=e.*=))))*=u t 3!9nf~%¶@!9^#Vr+snfͬ>ut oAwww nf~0@nf~9@@!9^#Vr+s@!9^#Vr+s~"(=}Em>*-=~ D=*-=~A2*!AA!A ~#fofFAA=>I2*=*-=~ ãB>2*=B*-=#"-=*-=~ )B>2*=B>2*=B>2*=B!@BGB!AB ~#fosuc!BBBB*-=#"-=*-=~ yB>2*=B2*=B>2*=B>2*=B!B B!B ~#fo31sSuUqBiBbBbBZBZBB!BB!B ~#focbaJBBA:*=IB:,=B!=! ͬ+!I!9,:,=2+=:+=C:*=!4*O:+=o&*<q:+=<2+=:,=<2,=×A=*-=~'CC*-=#"-=*-=~2*×A*-=@}2*×A=*-=@}2*pCpC>2*ͦ=>2*=2+=:+=O:*ʎDm>*-=@"(=!R(ҪC>I2*=ÎD*(=!4*:+=o&*<s#rͦ=m>*-=@"(=}C*(=!RC>I2*=ÎD*(=!4*:+=o&/801001820715304MCZ2.RIO.SUPPORT.HOOKS.OBJMD/3/7;*<##s#rͦ=m>*-=~ ^D!4*O:+=o&*<qÁD>!4*O:+=o&*<qÁD!tDyD!uD ~#foda>DD>I2*=ÎDͦ=:+=<2+=|C:*=I—A!=! ͬ+:*=O!9,×A=*-=@"*!RҗA!h=!ͬ+!I!9,×A!DE!D ~#folktdrDSC&CAA!/=!ͬ+!I!9,×A!6!9!"*nf"-=ͦ=m>*-=~REjF!iEpE!jE ~#fo #;OEOEOE*-=#"%=~=F*-=~E:"=”E>I2'=jF=!*-='-*-="*>2"=aF:#=E>I2'=jF=*-="%=uA*%="-=>2#=aF!EE!E ~#focCoOEEEE>I2'/801001820715304MCZ2.RIO.SUPPORT.HOOKS.OBJMD/3/7;=aF:"=O:#=F>I2'=jF>2$=**! R( 2F=F=F>I2'=jF*-=!***)s#r**#"*!*-='-ͦ=m>HE:"=O:$=}F:'=I“F!U=!ͬ+!I!9,#  PDEBUG PDEBG1 PGTCHR PPTMSG PERROR PPUT PCON PPUTA PUNSEL PDSKER PTYPUT PTYGET FLOPPY FDMDEV FDM FlopyDbgretComd1?GetchrPutmsgErrorPutTtyPutaDskerTtyputTtygetQUICKSORT STACK OVERFLOW INSUFFICIENT MEMORY FOR SORT PHASE TEMPORARY FILE LIMIT EXCEEDED RUNT RECORD AT EOF written entering sort phase !9͚2"0*">!e.)!>^#V+Bs#r*>2"0*"2**>R(&?*>!R!#͟+!I!,,*0*"$>*2*++++"(>!9>2/>!",>*(>"*>*$>"&>*&>****>R(@:*?!*&>**͛8"">}?*">**R?!>!͟+!I!,,?!*&>S9"">*">}?>2.>(@*&>**>s#r*">**>##s#r! >c01c0 !*>N#F+ s#r*&>*">"&>*,>#",>2/>p?**>####" >!9!!>:0O!6*0>#"0>wwnf*,>R@z@@@!* >nf))##!c:!* >nf))^#V* >nf))##^#Vc:!9^#Vr+s!6!>! ͟+!>!͟+!>Z-!9s2y"A!5>!͟+!I!,,nfnfR:ABBnf">nf">* >*>))* >*>*>!;))!2* >nf))^#V">*>#">*>nfRA* >*>))^#V*>Ͱ.y2>(*>+">*>nfR( ABB*>* >*>))^#VͰ.y2>?;2791101820715>>CC@D SortOvly.1BJOBJOUT.DEBUG.CMD?C?9=A(*>*>RBDBDB*>*>RʎA* >*>))* >*>))!2ÎAnf*>RB\BBB* >nf))* >*>))!2*>nfRnf*>RѧRBBBB*>">nf">*>utBnf">*>ut*>">*>*>@"A!9!>!͟+>!**!!6!>!*! h2!"0>2.>:.>~CQ?:/>~C!*,>@*0>!RyC!q>!͟+!I!,,5@*0**2*2!6*0>ut?;2791101820715>>CC@D SortOvly.1BJOBJOUT.DEBUG.CMD?C?9=AE;2791101820715>>CGFH SortOvly.2BJOBJOUT.DEBUG.CMDEGEKOIE;2791101820715>>CGFH SortOvly.2BJOBJOUT.DEBUG.CMDEGEKOI{@*a>͡?!9!}>!͟+͢>2>:>LB:>!/>O:>o&q!>4!;>!*! h2nf"%>!;>-!G>!;>! h2!S>!;>! h2*%>"!>*!>}(!"#>!G>Z-!/>*#>N!G>!*>6!G>! ͟+*!>+"!>*%>+"%>*#>#"#>*!>!RBCC*#>!R( CBB*%>#"%>!>!͟+*%>!R,CQCQC!!S>:0O*>6!S>! ͟+pC!**:0O*>6!>! ͟+!>!͟+!S>Z-*#>eA!6*#>Y?*%>!RB*0**2*2WORK FILE INCONSISTENCY entering merge phase ==> output file !9**))">ͳ2"0*"2**>*2*R>!J!,,*0*">!">*>+">!R( >??*>!'>*>)s#r*>**">͚2">">!#e.)RH?H?!J!,,*>!#<">!9!9^#Vr+snf!R( ???!/>nfN!:8!9!/>nf~2>O!>!͛8">!R@*>}?!3>nf)6#6*c>+"c>v@!:>OM12791101820715>>EQNR MergOvly.1UPPORT.OBJEBUG.CMDMQMUY]S,,*>**R'@!e>!͟+!I:>O,,:>O!'>nf)^#V*>͛8">*>Ra@a@!:>O,,*>!3>nf)s#r!9*%>!R@@@!!3>nf)!c:!!'>nf)^#V!3>nf)^#Vc:!9nfut !3>nf)^#V}_A!3>nf)^#V})Anfut _A!'>nf)^#V!'>nf)^#VͰ.y_Anfut !9nf"c>!">*>nfRʧAAAA*>͡?*>#">*c>!RA B B!"_>!"a>*_>nf+RAAAA*_>#"_>*a>*_>@"a>*a>$ M12791101820715>>EQNR MergOvly.1UPPORT.OBJEBUG.CMDMQMUY]S*2WORK FILE INCONSISTENCY RUNT RECORD AT EOF entering merge phase input file ==> output file !9**))">ͩ2"0*"2**>*2*R>!J!9,*0*">!">*>+">!R( ?>?>?*>!)>*>)s#r*>**">͐2">">!#e.)Rh?h?!J!9,*>!# <">!9!9^#Vr+snf!R( ???*'>**R???!1>nfN6!1>nfN!08!9!1>nf~2>:W2800704820715*q *7[X\SET.PREOBJERFACE.MACROS.SJMD W[W_aeicgk*R@:>O!)>nf)^#V**͑8">}o@*>**Ro@!>!ͬ+!I!9,o@:>O!)>nf)^#VI9">*>}’@!5>nf)6#6*e>+"e>ç@*>!5>nf)s#r!9!!)>nf)^#V!5>nf)^#VY:!9nfut !5>nf)^#V}cA!5>nf)^#V}-Anfut cA!)>nf)^#V!)>nf)^#Vͦ.ycAnfut !9nf"e>!">*>nfRʫAAAA*>?*>#">*e>!RABB!"a>!"c>*a>nf+RBABB*a>#"a>*c>*a>@"c>W2800704820715*q *7[X\SET.PREOBJERFACE.MACROS.SJMD W[W_aeicgk*c>ͬ@*c>?!9!>!ͬ+>2>:>PB:>!1>O:>o&q!>4!=>!*! ^2**"%>!"'>!=>-!I>!=>! ^2!U>!=>! ^2*%>"!>*!>}(!"#>*'>**RBBBB!1>*#>N!**'>)^#V!*>6*'>#"'>!>! ͬ+C!I>g-!1>*#>N!I>!*>6!I>! ͬ+*!>+"!>*%>+"%>*#>#"#>*!>!RDC^C^C*#>!R( [CBB*%>#"%>!>!ͬ+*%>!RCCC!!U>:0O*>6!U>! ͬ+C!**:0O*>6!>! ͬ+!>!ͬ+!U>g-*#>iA!6*#>y?*%>!R–B*0**2GRAPHICSGRABORTABFORMFEEDFFTRUNCATETRPAGEWAITPW FORM_LENGTHFLPITCHPI LINE_SPACINGLS PAGE_OFFSETPO RIGHT_MARGINRM PAGE_LENGTHPLTABSIZETABACKSPACEBAEJECTEJ FUNCTION_1F1 FUNCTION_2F2 FUNCTION_3F3 FUNCTION_4F4 FUNCTION_5F5*@*!9!+4q!96**~=+6D%,**#"***~+**~2***#"*%,6D%,!,!,!, ~#fo ,; ENC++++++++6D!96**~=G,6D.**#"***~\,6D.!u,€,!v, ~#fo ,; U,U,U,U,U,**~o&ut**#"***~â,6D.!,,!, ~#fo ,; ,,,,,**~o&e.!9N#F+ s#r**#"*nf-**,-:*2*.:*2*.:*2*.:*2*.:*2*.M-{#( xa-###z #~#foPW!-TR-FF -AB-GR,.**~Ft-6D.**#"***ø-:*2*.:*2*.:*2*.:*2*.:*2*.-{#( x-###z #~#foPW-TR-FF-AB-GR-..{#( x*!*5**~o&"***#"***~o&e.!*N#F+ s#r6!96**w2Ͳ+q2(,q2/q2".q22{#( x2###z #~#foEJl2BSl2F5a2F4a2F3a2F2a2F1a2TAa2PLa2RMa2POa2LSa2FLa2PWV2TRV2FFV2ABV2GRV2PIK26D!9nf"*!"+!+4y24>@2*2*>2*>?2*>B2*>N2*>2*2*2*2*2*2***~2*Ã3:*O:*(n3>D24͛+y24**#"*!3¤3!3 ~#fo ,; z3Y3Y3Y3**ut:*o&"***#"***~2***#"*:*o&e.!*N#F+ s#r92yO3nf"*s1y.###z #~#foOFd-ON,6D!96**~=A.6Dý/**#"***~V.6Dý/!o.z.!p. ~#fo ,; O.O.O.O.O.**~o&ut**#"***~Ü.6Dý/!..!. ~#fo ,; .....**~o&e.!9N#F+ s#r**#"*nfÐ/**/:*2*ý/:*2*ý/&/{#( x./###z #~#foEJ.BS.ý/**~SA/6Dý/**#"***d/:* 2*ý/:*@2*ý//{#( xʍ/###z #~#foEJY/BSN/ý//{#( xʹ/###z #~#foYE1/NO.6D;!96!"***~=/6Dm1**#"***~2* 0**!492y4O3>D2!9nf~ w790410!9>ww!9>ww|(~/wR|(~/w>wR|M[6G~(`i~(R~(R3!9YOw{( {D_~/wy( ~/wyDOJ6G~x(D3!9YO>w{( {D_>wy(yDOJ6~x(D3zK[6zK[6giYOJ6xYOJ6!9ŗw|(~/wRDMz(~/w!Rx56G~( PY!R`i3!9_w{( ~/w{D_y( ~/wyDORk06Dm1!&010!'0 ~#fo ,; /////:*0D0:*9K0K06Dm1! **6:*o&"***#"*** 1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m1:*2*m16!*ut~0nf6!9^#Vr+s5:*w~(m1!*~o&6:*!9FwA1 {#( xm1###z #~#foTA0F50F40F30F20F10PL0RM0PO0LSz0FLq03!96D!*"*>2***ut:*42**~2***#"*nf"*:*2**~**O~1:*1!!*N#F+ s#r!*5**#"*!*5**#"***#"$ '6~{(D3|M56gi_'6{ɯ0!0ɯ0G{/!jR0?!A!*T*A}/,!!*!*!A=,:**A 2A]-:**02A]-:**O>A=-:**A 2*-:**02*:+*O>A=,-:+*A 2*4-:+*02*:*O:*2A]-!X-]-!Y- ~#fo,,2>5*A+"AA:>5¬-*A*A+Rڒ-:A!=*AwBì-!!*!5%.!!+! 0 #BYTE POSITION TOO SMALL BYTE POS > RECORD LENGTH #MORE BYTES TO CHANGE? !9!!j*! 5X=*4*<5:4o&))^#VR:4o&*C5FR"D.2F.:F.O:/:!0*D.:F.o&~!/O:F.o&q!F.4!4"4!0*D.6*4~!0*D.#w*4#"4*4~!0*D.##w>2F.:F.O:/;;!0*D.:F.o&6!F.4!0*C5V:>5X=*<5:4o&))^#V}†;*<5:4o&))##^#V}†;Ì;!44!͎V*4*<5:4o&))s#r*<5###^#V*<5:4o&))##s#r*<5:45X=*<5p^#V*4R;=;=*4*C5+*<5p s#rW!!.! F2/8!!E5!2/8>2/!4"<5###^#V"C5*<5n^#V*4R19!!G.!=;9!!b5!2>5ZB#MODIFY FILE ERROR POSITION !9!!rB! A2nBðC>B2nBðC>C2nBðC>D2nBðC>E2nBðC>F2nBðC>92nBðC>82nBðC>72nBðC>62nBðC>52nBðC>42nBðC>32nBðC>22nBðC>12nBðC!C«C!C ~#fo 0@P`p :0JrP>20J~!J(!J#~#fo"=JͅJ*=Jw nf }ͅJ JpK6L2\MM+N8N+NON&O:4Hg(*=J*'J";J*%J"9J!"'J:4HG [5H*?HZQO!4HͤP[AHR[;Jz>OPO)PDM*;JB";J*'J "'J*AH+[5H[9JS9J*AH "AH[7HR84P!"AH*?H#"?H*;J|bK!4HˆJ[5HZQOJON&O:4Hg(*=J*'aCYCQCICAC9C1C)C!CCC CCBB>02nB!!nB!2eF2cF >2eF2dF|(:dF/2dFR|(:dF/2dF>2cFR|MMFG:eF(`i:dF(R:cF(RYO2dF{( {D_:dF/2dFy( :dF/2dFyDO2cF{( {D_>2cFy(yDOO)PDM*;JB";J*'J "'J*AH+[5HT]*9J"9J!4H*AH "AH*9H[?HR *;H[AHP";H*AH[7HRK[5H*?HaQO[9HR!"AH#"?H0[5HZQOK+"9H*7H";HͷP!4HˎKON&O:4Hg(*=J*9H[?HR4P:.J(-(>*?H[AH%Q:'J_:(JW:%Jo:&JgM M*%J['JPK?HB(4P"?H!4HˆSAHP>4P>!"AH"?H74P>*7HK9H[;HR0*?HB *AHR >C?HSAH!4HˆON&O:4Hg(*=JG *?H[5HZQ !4HƧF|(:dF/2dFRDMz(:dF/2dF!Rx'FG:dF( PY!R`i_2dF{( :dF/2dF{D_y( :dF/2dFyDOF:dF({D{|M'Fgi_F{ɯ0!0ɯ0G{/!jR0?780709 !9>2gF~2fFnf| !F"hF!sF"qF>2sFGw >2gF~0 >2sF!"hFGw >!9>2gF~2fF!"hFGw>22gF!9~2fFGw>> 2gF!9~2fFnf"hFnf"jFGw u t >62gF!9~ 2fF*AH+|( K5H 6!4H*?H"9H4P!4HˆZP*9H#[5HZQ(>!J:#J2J>2JQQ>O!"+J!#JQQ2?JN*=J&O :?J:#J!3I 6#24HO>2$J!#JQQON¶N:4Hg do(M4PP*;H:Jo(.[7HR #*9H[JR!8ͷP*J#[5HaQP!"J: J2 JP#S>K7H*5H*7J;N:#J!3I 6#24HO*=JOrP*.J|"7J:4H_( :1HFO~!3I>G!CHO"2H4H~21H[2H!4H>24H>!CH(>"2H>og3I~w21HͮO(>24HP*J"9H|*J( [J*J)P";HKJC7H>24H S!nf "hFnf"jF~2qFGw !9!9~2fFnf|("hF>2gF!sF"qF>2sFGw >2gFGw!fF@J:pF*jFSTREAM 781025 COPYRIGHT, ZILOG, INC. 1978"?H"AHK7H!*7JͬO"5H~2J!O"J!"J"!J> 2J!JQQ>2JQQ *=J*'Jtu#J *?H[9HRP *;H[AHR#P>ɷɧRbk!4HN^Fˎ[5H*?HaQ*9HRZP[?H*AH+| *7H";HS9HDH!CH6! "7J24H4I!3I6DI!CI6*9H[?HR*;H(*7H*5HT]6K7H ɧRbk>0>,2J:1H2J!J"J! "J!JQQ:7Hր ej W#:8HJG8 7ejW#+:7Hր UlgJUlg:8H8yW~ :3J:3Jˇ23J!J:1H2JSJ"1J[=HR!"JQRRbR*J|( #| >(>2J!4J"!JQQRR>"2J!"J*J"!JQQRR*J"J|!4J"!J(:J( *J+|(->$>&2JQQRR*7H"J:3JG x2JQQRR>R*7H"J!4J"!J :3JG x2JQQRR*1J"=H*J|(R>: J S!4Hˆ"1J "J!"J>2J[9HR!ͱR:1HO!CI~(~ *1J^VRͱR>|(|/g}/o#[JR2J"J"J!CI:JG[4Js#r:6J#w#[=Hs#r#:1Hw:J2J!J>2J:1H2JQQ!"=H:1H!HI  6 #INVALID VALUE,TRY AGAIN !9!nfnf Fo&:;S0o&nfs#ràT::S0O>dFo&:;S0O> Fo&:Fo&:;S0O>dFo&: Fo&:=S0o&nfs#ràT!T T!T  ~#fo7TTSSS3 #INVALID VALUE,TRY AGAIN !9!T.V:,VwU!!T! Fo&:T0o&nf s#rU:T0O>dFo&:T0O> Fo&:T0o&nf s#rU:T0O>Fo820625820715 t.dep.adm.3a1&:T0O>dFo&:T0O> Fo&:T0o&nf s#rU!UU!U ~#foUJU%UUTw~ݾ(V!T~o&~nfw4!9^#Vr+s S#VC%V!!V*%V+",V$~ 2!mV>2>5xV#PROCEDURE FILE ERROR 2>5SSV!OVɯ2>5S>W!>2>52UWCVWSXW!TW~ ZV*>W"KW!IWɯ2>5CaWScW!_W~ ZVA % adm.3a P= 820417820927]4* SPD.MAIN.S 820625820715 t.dep.vtz.3a1 820417820927]4* SPD.MAIN.S 820625820715 t.dep.vtz.3a1*H RIO Compact Printer Driver ; This is a minimum facility line printer driver, ; which is compatible with Zilog's RIO operating ; systems at levels 2.2 and 3.0 for the MCZ-1, ; with RIO 3.0 and 4.0, also with RIO/CP 2.3, for ; the MCZ-2. ( RIO/CP versions need an additional ; module at the beginning.) ; This version is logically the same as $PD, which ; uses the parallel printer port. ; It is assumed that the printer is capable of ; performing "formfeed" operations, and that it ; automatically aVTZ Pppends a "linefeed: after each ; "carriage-return". ; Printed lines are truncated at a given column, as ; specified by the equate "maxlen", which can be ; altered by the user. ; TAB locations are obtained from RIO's unit 1 ; each time $SPD receives an "Initialise" request, ; Notice that RIO will issue Initialise requests to ; PD automatically at the time the driver is ; ACTIVATED, or on demand by the keyboard command ; I $SPD ; RIO's TAB drum is 134 columns, and if $SPD is asse- ; mbling a line longer than that, ONE space will be ; sent for each tab code beyond column 134. ; IMPORTANT NOTE :- ; IF the flag "escflg" is given a non-zero value, ; after terminating every line, the driver makes a ; call to RIO to determine whether the operator has ; hit the key. If so, the driver returns an ; error code of "program abort" to the caller. ; For datecode see, SPD.VARIABLES ; User may change options set by the following 4 equates. alfflg equ 1 ; auto linefeed (on) escflg equ 1des, ; and the conversion of "blank" lines received ; with "carriage-return" terminators, are sent ; to the printer exactly as received. ; Write Line - ; This is exactly the same as for write-binary ; except that if the data should contain a ; carriage_return code before the data-length ; specified in the request vector, has been sent ; to the printer, the request is considered ; to be satisfied. the actual data-length ; taken from the data specified, is returned to ; the caller. ; NOTE that w ; esc abort (on) cloflg equ 1 ; formfeed on close (on) maxlen equ 132 ; line length truncation at 132 *E ; Requests supported :- ; Initialise - ; Initialise the port hardware, clear internal ; variables, obtain tab locations from RIO's ; unit 1. Return code is always whatever unit ; 1 returns ; Open, Assign, Deactivate - ; These are each treated as dummy operations. ; Return code is always "OK" ; Close - ; Treated as a dummy, apart from the issue of ; a formfeed to the printer, which occurs ifith both write_binary, and write_line ; operations, the detection of a RIO end-file mark ; in the data stream terminates the operation. *E ; Write Absolute - ; The data received from the caller as pointed to by the ; request vector is printed exactly as received with no ; filtering whatever. ; Change record :- ; Created 820328 from $PD rev 1.02 ( 811126 ) ; #C 820723 "gotwrab" modified ( PHB ) ; #C 820905 "endlin" modified ( PHB ) *E global SPD external lpinit senda iniflg sayrev ext ; a non-zero value is assigned to "cloflg". ; Return code is always "OK". ; This allows RIO's "MOVE" utility to be used ; to print multiple files by giving the para- ; meter "D=$SPD". Formfeed between jobs is ; then automatic. ; It also allows the operator to cause a formfeed ; from the console. If $SPD is defined to be ; unit 3, then enter "Close 3" ; Write Binary - ; The data specified in the request vector ; received from the caller is printed. All ; data apart from the expansion of TAB co& ernal convec drum column pchflg ; This is the entry point of the driver SPD ld a,(iy+ofreq) ; get request code ld h,(iy+ofdtah); get data address ld l,(iy+ofdtal); into hl ld b,(iy+ofdtlh); get data length ld c,(iy+ofdtll); into bc ld de,0 ; bytes-used counter ld ix,column ; point to (column) cp wrabrq ; is it a write-absolute request jr z,gotwrab ; go if it is cp wrbirq ; is it a write-binary request jr z,loop ; go if it is cp wrlirq ; is it a write-line request jr z,loop ; go ifual data or c okjp jr z,okrtn ; go if data all gone ld a,(hl) ; get next byte of data inc hl ; ready for next time inc de ; maintain bytes-used counter dec bc ; maintain bytes-left counter cp eofmrk ; is it an end file mark ? jr z,okrtn ; if so, return to caller cp ascisp ; is it > space ? jr c,gotctl ; go if it's a control character ; If we have reached the maximum line length, and have ; a printable character, we effectively ignore it, and ; TRUNCATE the line. loop1 push de ; pardon t it is cp openrq ; is it an open request jr z,okrtn ; go if it is cp assnrq ; is an assign request jr z,okrtn ; go if it is cp closrq ; is it a close request jr z,windup ; go if it is cp deacrq ; is it a deactivate request jr z,okrtn ; go if it is cp initrq ; is it an initialise request jr z,gotini ; go if it is ; If the request isn't one of those, it's invalid ld a,invop ; invalid operation jr errtn *E gotwrab: ; WRITE ABSOLUTE ld a,b ; test length or c ; of bytes to transfer jr zhe intrusion ld d,a ; save the character ld a,maxlen ; max line length cp (ix) ; compare to column No. ld a,d ; restore the character pop de ; restore jr z,loop ; go if reached max column inc (ix) ; increment column counter sendit cp ascisp ; test for space jr z,sendch ; go if a space ld (pchflg),a ; set <> z to show char on line sendch call senda ; send character to the printer jr loop ; get next character gotctl cp ascicr ; is it a carriage-return jr z,endlin ; if so, terminate the,okrtn ; no more ld a,(hl) ; get character inc hl ; adjust source pointer inc de ; adjust bytes-used dec bc ; adjust transfer length ; call sendch ; send it now call senda ; send it now *** #C 82723 *** jr gotwrab ; and loop ; return sequences windup cond cloflg ; if cloflg is NZ, want formfeed ld a,asciff ; formfeed call senda ; send it endc okrtn ld a,ok ; good completion code errtn ld (iy+ofccod),a; place return code ld (iy+ofdtlh),d; put bytes-used into ld (iy+ofdtll),e; the ca line cp ascilf ; is it a linefeed ? jr z,endlin ; if so, terminate the line cp ascitb ; is it a TAB ? jr z,gottab ; if so expand spaces cp asciff ; is it a formfeed ? jr z,gotff ; if so, treat rather like jr sendit ; if it's not a special character ; we just send it without ; incrementing (column) *H Special characters ; come to "endlin" with either or from data endlin ld a,(pchflg) ; any printable char on line ? and a ; test for zero ld a,ascicr ; carriage return jr ller's vector ret ; now return to caller gotini call lpinit ; initialise the hardware push iy ; save callers vector pointer ld a,(iniflg) ; get init. flag and a ; test for zero call nz,sayrev ; if NZ, say who we are nomsg ld iy,convec ; console status vector call SYSTEM ; get status - TAB drum mostly ld a,(iy+ofccod); completion code pop iy ; restore call hadeol ; clear (column) and (pchflg) errjp jr errtn ; place return code, ; and return *H Main loop loop ld a,b ; test for residz,sendlf ; send if zero ; #C 820905 rev 1.02->1.03 endl2 call senda ; send , or cond alfflg=0 jr endl1 ; no to be sent endc sendlf ld a,ascilf ; linefeed gotff call senda ; send ; Now determine if operator has hit the key, ; provided (escflg) is <> 0 endl1 cond escflg push hl ; save push de push bc push ix push iy call ESCTST ; this returns with Z if abort pop iy ; restore pop ix pop bc pop de pop hl ld a,abort ; in case jr z,errjp ; go if abort ( save a byte ) endc notst call hadeol ; clear (column), and (pchflg) ; We now determine whether the caller's request was a ; write-line, and if so, terminate the request. ld a,wrlirq ; write_line request code cp (iy+ofreq) ; compare to caller's request jr z,okjp ; and if so, return to caller ; ( save a byte ) jr loop ; else go back to main loop *E drumok ld hl,drum ; base of tab drum add hl,de ; index into tab drum ld a,(hl) ; if <> 0 it's a tabstop tab1 pop de ; restore bytes-takented. ascicr equ 0Dh ; carriage-return ascilf equ 0Ah ; linefeed ascitb equ 09h ; TAB ascisp equ ' ' ; space asciff equ 0Ch ; formfeed eofmrk equ 0FFh ; RIO end-file-marker ; Request codes initrq equ 00 ; initialise deacrq equ 44h ; deactivate assnrq equ 02h ; assign openrq equ 04h ; open closrq equ 06h ; close wrbirq equ 0Eh ; write binary wrlirq equ 10h ; write line wrabrq equ 48h ; write absolute rdstrq equ 40h ; read status - used to get ; console tab locations only ; Return codes pop hl ; restore data pointer and a ; test for tabstop jp nz,loop ; go if have reached one ; else fall thro' to tbloop ; come to "gottab" with a tab code from the data ; first, ensure we have not reached the end of line gottab tbloop ld a,maxlen ; max line length cp (ix) ; compare to column No. jp z,loop ; go if at maxlen ld a,ascisp ; send one space call senda ; to the printer inc (ix) ; maintain (column) push hl ; save data pointer push de ; and bytes-taken counter ld e,(ix) ;  ok equ 80h ; No error invop equ 0C1h ; Invalid operation requested abort equ 49h ; operation aborted ; Request vector offsets oflun equ 0 ; logical unit ofreq equ 1 ; request code ofdta equ 2 ; data transfer address ofdtah equ 3 ofdtal equ 2 ofdtl equ 4 ; data length ofdtlh equ 5 ofdtll equ 4 ofera equ 6 ; error routine address ofcra equ 8 ; completion routine address ofccod equ 10 ; completion code ofsvp equ 11 ; supplementary vector pointer ; Oddments drumlen equ 134 ; lengthcurrent column ld d,0 ; into de ld hl,drumlen ; length of TAB drum and a ; clear carry sbc hl,de ; compare with current column jr nc,drumok ; go if within the drum jr tab1 ; pretend there is a tabstop ; ( A contains ascisp, ie is <0> ) ; "hadeol" clears (column), and (pchflg) ; return is with Z set. hadeol xor a ; clear ld (column),a ld (pchflg),a ret ; and return *H Equates SYSTEM equ 1403h ; RIO main entry point ESCTST equ 1406h ; RIO entry to test whether ; ESC has been reques&  820417820927]4*SPD.VARIABLES.Sthe world who we are xor a ; clear ld (iniflg),a ; the initialisation flag ret ; and return msg1 defb ascicr defm 'SPD Rev. 1.03' defb ascicr defb ascicr lmsg1 equ $-msg1 defm 'datecode 820905' defm 'Copyright 1982, Zilog Inc.' msgvec defb conout ; console output lun defb wrbirq ; write-binary defw msg1 ; point to the message defw lmsg1 ; length of the message defw 0 ; no error routine defw 0 ; or completion routine defs 1 ; space for completion code defw 0 ; no supplementary vecto 820417820927]4*SPD.VARIABLES.Sr *E org lensta ; These variables MUST NOT overlay anything iniflg defb 0FFh ; initialised to non-zero convec defb conin ; console device lun defb rdstrq ; read status request condta defw consta ; data address defw lensta ; length of status area defw 0 ; no error routine defw 0 ; or completion routine defs 1 ; space for completion code defw 0 ; no supplementary vector end *H SPD Working variables ; CREATED 820328 FROM PD.VARIABLES OF $PD REV 1.02 ; Released for general use at Rev_1.00, 820413. ; #C 820723 changed to rev 1.02 (PHB) ; #C 820905 changed to rev 1.03 (PHB) global consta drum convec global iniflg column pchflg global sayrev lensta equ 139 ; length of full status conin equ 1 ; console input unit conout equ 2 ; console output unit wrbirq equ 0Eh ; write-binary request rdstrq equ 40h ; read status request ascicr equ 0Dh ; carriage-return SYSTEM equ 140 820417820927 SPD.MCZ2.SLES.S 3h ; RIO's entry point consta equ $ ; Note that the following variables re-use memory ; at the base of the console status area, which ; contains five bytes which are superfluous to ; the needs of this driver column defl consta ; current column count ; ( one byte ) pchflg defl consta+1 ; NZ means that current line ; contains printable character drum defl consta+5 ; base address of tab drum ; temporary use of status area sayrev ld iy,msgvec ; point to the message vector call SYSTEM ; tell  820417820927 SPD.MCZ2.SLES.S *H SPD subroutines - MCZ-2 ; This module provides the two subroutines ; needed by SPD to operate with the MCZ-2/60 ; ***************************************************** ; This module provides non-interrupting low level I/O, ; and assumes that an X-ON, X-OFF, protocol is used to ; prevent input buffer overrun at the printer. ; ie. Whenever an X-OFF character is received by this ; driver, it will loop waiting for an X-ON character ; before sending further data. ; ********************************ospbr),a ; reset the baud rate channel ld a,CTCTRM+CTLOAD+CTREST+CTNOTV ; counter mode, time constant coming out (iospbr),a ; to the CTC ld a,speed ; get the time constant out (iospbr),a ; set up the CTC for baud rate ld hl,siostr ; base of the progamming string ld b,lsiost ; length of the string ld c,psi2c ; address of the control register otir ; program the sio ret *E ; "senda" waits until the SIO is ready to transmit, then ; sends the character received in A senda push af ; save in ********************* ; This assumes the use of either the serial port of an ; MCZ-2/60, or, if an MCZ-2/20 or MCZ-2/30 is used, ; a PSI/A can be installed and its channel 2 may be ; used. In either case, the SIO port addresses are ; 84h for SIO data and 86h for SIO control. ; The CTC channel used for baud rate generation in ; either case is assumed to be channel 0, and the ; base address of the device is 90h. ie. iospbr = 90h. ; A baud rate of 9600 is assumed, but this may be changed ; if na,(psi2c) ; read status byte bit S_RXCH,a ; test receiver ready bit jr z,send2 ; nothing, so send the data in a,(psi2d) ; read the received code and parmsk ; loose the parity bit. cp x_off ; if it's X-off, we must wait call z,wait ; wait for an X-on sendit in a,(psi2c) ; read status byte send2 bit S_TXBE,a ; test tramsmitter ready bit jr z,sendit ; wait until ready pop af ; restore out (psi2d),a ; and send it ret ; return to caller ; "wait" waits until the SIO has received a character, ; tecessary, to 19200, 4800, 2400, 1200, 600, or 300, ; by altering the following statement then re-assembling ; this module, and linking the driver. BAUDS equ 9600 cond BAUDS<300 *** ERROR *** - baud rate too low endc cond BAUDS>19200 *** ERROR *** - baud rate too high endc global lpinit senda *E ; "lpinit" initialises the port hardware. ; Note that the I/O is very simple, and polled. Interrupts ; are NOT used. speed equ 4*(19200/BAUDS) lpinit ld a,CTREST+CTNOTV ; reset command out (i' hen reads it, if it is an X-on, it returns to the ; caller, else ignores the character and continues to ; wait for an X-on. ; Return will always be with Z set. wait in a,(psi2c) ; read status byte bit S_RXCH,a ; test receiver ready bit jr z,wait ; loop until char. is available in a,(psi2d) ; read the character and parmsk ; ignore the parity bit cp x_on ; test for X-on ret z ; return if it is an X-on jr wait ; else loop round. *H Initialised data siostr defb S_CHNR ; reset command defb 0sayrevpchflgcolumniniflgconvecdrumconsta4 ; WR 4 defb SCLK16 ; X16 clock, 8 bit char, ; 2 stop bits defb 05 ; WR 5 defb S_DTR+S_RTS+S_TX8+S_TXE ; RTS,enable transmitter,8 bit ch. defb 01 ; WR 1 defb 00 ; WAIT defb 03 ; WR 3 defb S_RX8+S_RXE ; 8 bit ch, enable receiver lsiost equ $-siostr ; length of the programming string *H Equates x_on equ 11h ; X-ON x_off equ 13h ; X-OFF parmsk equ 07fh ; parity bit mask *I MCZ2.IO.EQUATES.S  {820417820927 SPD.LINK.CMD.CMDSLV PLINK $=DE00 [$=#1] SPD.VARIABLES SPD.MAIN SPD.MCZ2 ( E=SPD N=SPD ST=0 [[ #2[ #3 [ #4 ]]]] ) SET SUBTYPE OF SPD TO 9 B  {820417820927 SPD.LINK.CMD.CMDSL!E2 SPD Rev. 1.03 datecode 820905Copyright 1982, Zilog Inc. @ދ~fnFN!H( (W(S(&("(D((">x(~# > >w rsͯ:ާ!~ ͧx(~# ( 8W>ݾz(4 (2 ( ( (B (:ާ> (> >I(ͧ>(!~>ݾ> 4^!R0ٯ22>Ӑ>GӐ>Ӑ! ۆG( ۄۆW(ӄۆG(ۄLO @!E2 SPD Rev. 1.03 datecode 820905Copyright 1982, Zilog Inc. P, @ 820417820309SPD.SAVE.CMDDCMDS  1820615820715MCZ2.IO.EQUATES.S    820417820309SPD.SAVE.CMDDCMDS  1820615820715MCZ2.IO.EQUATES.S     pchflgcolumn drumconvecsayrev&iniflg0senda:lpinitCSPD' *LIST OFF *H MCZ2.IO.EQUATES ;PORT ADDRESSES FOR ALL MPB I/O DEVICES MCTC0 EQU 0D4H MCTC1 EQU 0D5H MCTC2 EQU 0D6H MCTC3 EQU 0D7H MPIOA EQU 0D8H PROMOFF EQU 1 MPIOB EQU 0D9H MPIOAC EQU 0DAH MPIOBC EQU 0DBH SWITCH EQU 0DDH MSIOA EQU 0E8H MSIOB EQU 0E9H MSIOAC EQU 0EAH MSIOBC EQU 0EBH MDMAA EQU 0ECH MDMA1 EQU MDMAA MDMAB EQU 0F8H ; PSI/A port addresses psi0c equ 082h ; channel 0 control psi1c equ 083h ; channel 1 control psi0d equ 080h ; channel 0 data psi1d equ 081h ; channel 1 data psi2c equB ; READY FUNCTION ENABLED FOR RECIEVE S_RX1C EQU 10Q ; INTERRUPT ON FIRST CHARACTER RCV'D ; IN REGISTER 3 S_RTS EQU 02H ; REQUEST-TO-SEND S_HUNT EQU 10H ; ENTER HUNT S_RX8 EQU 11000000B ; RECIEVE 8 BITS/CHR S_RXE EQU 00000001B ; RECIEVE ENABLED S_RXCE EQU 00001000B ; RECIEVE CRC ENABLED ; IN REGISTER 4 S_X1 EQU 00000000B ; X1 CLOCK S_SDLC EQU 00100000B ; SDLC MODE SCLK16 EQU 01001100B ; X16 CLOCK, 8 BIT CH, 2 STOP SCLK64 EQU 11001100B ; X64 CLOCK, 8 BIT CH, 2 STOP ; IN REGISTER 5 S_DTR EQU 80H  086h ; channel 2 control psi3c equ 087h ; channel 3 control psi2d equ 084h ; channel 2 data psi3d equ 085h ; channel 3 data psibr0 equ 08ch ; chan 0 baud rate gen. psibr1 equ 08dh ; chan 1 baud rate gen. psibr2 equ 08eh ; chan 2 baud rate gen. psibr3 equ 08fh ; chan 3 baud rate gen. iospbr equ 090h ; MCZ-2/60 IOSP board CTC. *E ; PORT ADDRESSES FOR ALL PDC I/O DEVICES ; ( in host i/o space ) CSTAT EQU 0 CCMD EQU 0 ; CONSTANTS USED BY FLOPPY/PDC INTERFACE BUSY EQU 0 ; BIT IN STATUS BYTE ACK EQ ; DTR SIGNAL S_TX8 EQU 01100000B ; 8 BITS/CHR FOR XMIT S_TXE EQU 00001000B ; ENABLE XMIT S_TXCE EQU 00000001B ; ENABLE XMIT CRC *E ; READ REGISTER 0 S_EOM EQU 6 ; BIT NUMBER S_TXBE EQU 2 ; TRANSMIT BUFFER EMPTY S_RXCH EQU 0 ; RECIEVE CHARACTER AVAILABLE S_RHNT EQU 4 ; HUNT BIT ; READ REGISTER 1 S_REOF EQU 7 ; END OF FRAME S_RCRC EQU 6 ; CRC ERROR (CRC OK IF BIT IS 0) S_ROVR EQU 5 ; OVERRUN ; DMA COMMANDS AND BITS D_REST EQU 0C3H ; RESET COMMAND D_LOAD EQU 0CFH ; LOAD COMMAND D_ENAB EQU 087H ;U 1 ; BIT IN STATUS BYTE WAKPDC EQU 10H ; PREPARE PDC FOR REQUEST ; SOME STANDARD CONTROL BITS FOR CTC CTINTE EQU 80H ; ENABLE INTERUPT CTCTRM EQU 40H ; COUNTER MODE CTS256 EQU 20H ; PRESCALER TO 256 CTPOSS EQU 10H ; POSITIVE TRIGGER CTTRGR EQU 8 ; TRIGGERED CTLOAD EQU 4 ; LOAD TIME CONSTANT NEXT CTREST EQU 2 ; RESET CLOCK CTNOTV EQU 1 ; THIS IS CONTROL BYTE, ; NOT INTERUPT VECTOR *E ; SIO COMMANDS AND BITS S_RERR EQU 00110000B ; RESET ERRORS S_R1CI EQU 00100000B ; RESET FIRST CHRACTER I ENABLE COMMAND D_STSB EQU 0BBH ; STATUS BYTE FOLLOWS D_RSTS EQU 0A7H ; RESET READ D_RSTA EQU 08BH ; RESET STATUS D_DISB EQU 083H ; DISABLE DMA D_IENB EQU 0ABH ; INTERRUPT ENABLE D_IDSB EQU 0AFH ; INTERRUPT DISABLE D_A1 EQU 0 ; A1 BYTE D_LENU EQU 01000000B ; UPPER LENGTH BYTE FOLLOWS D_LENL EQU 00100000B ; LOWER LENGTH BYTE FOLLOWS D_AAHI EQU 00010000B ; UPPER PORT A ADDRESS BYTE FOLLOWS D_AALO EQU 00001000B ; LOWER PORT A ADDRESS BYTE FOLLOWS D_SRCB EQU 00000000B ; B IS SOURCE D_SRCA EQU 00000100B ; A ISNTERRUPT S_CHNR EQU 00011000B ; CHANNEL RESET S_RXT EQU 00010000B ; RESET EXTERNAL STATUS INTERRUPTS S_REOM EQU 11000000B ; RESET XMIT UNDERRUN/EOM S_RTXC EQU 10000000B ; RESET XMIT CRC CHECK ; SET REGISTERS S_REG1 EQU 1 S_REG2 EQU 2 S_REG3 EQU 3 S_REG4 EQU 4 S_REG5 EQU 5 S_REG6 EQU 6 S_REG7 EQU 7 ; IN REGISTER 1 S_STV EQU 4 ; STATUS AFFECTS VECTOR S_ENXT EQU 1 ; ENABLE EXTERNAL INTERRUPTS S_ENTX EQU 2 ; ENABLE XMIT INTERRUPTS S_RDYX EQU 11000000B ; READY FUNCTION ENABLED FOR XMIT S_RDYR EQU 11100000 SOURCE D_TRNS EQU 00000001B ; OPERATION IS TRANSFER D_B1 EQU 0 ; B1 BYTE D_FIX EQU 00100000B ; ADDRESS IS FIXED D_INC EQU 00010000B ; ADDRESS INCREMENTS D_IO EQU 00001000B ; ADDRESS IS I/O PORT D_MEM EQU 00000000B ; ADDRESS IS MEMORY D_PRTA EQU 00000100B ; ADDRESS IS FOR PORT A D_PRTB EQU 00000000B ; ADDRESS IS FOR PORT B D_A2 EQU 80H ; A2 BYTE D_ENBC EQU 01000000B ; CHIP ENABLE D_B2 EQU 10000001B ; B2 BYTE D_BYTE EQU 00000000B ; BYTE MODE D_BALO EQU 00000100B ; LOWER PORT B ADDRESS BYTE FOLLOWS D_ICB EQU 00010000B ; INTERRUPT CONTROL BYTE FOLLOWS D_VEC EQU 00010000B ; IN INTERRUPT CONTROL BYTE, ; VECTOR FOLLOWS D_EOB EQU 00000010B ; INTERRUPT ON END OF BLOCK D_C2 EQU 10000010B ; C2 BYTE D_RDLO EQU 00000000B ; READY ACTIVE LOW *LIST ON ; ---------- end of MCZ2.IO.EQUATES.S ------------- k ~fnFN! H( (W(S(&("(D((">x(~# :> :>w rsC:0aia`&!~ x(~# ( 8W>ݾz(4 (2: ( ( (B (:> (:> b`@C:>I(>(!~u>ݾu> :4^!R0ٯ2 2ɄD820615820927DbD] SPD.VARIABLES.OBJBJHsendalpinitD820615820927DbD] SPD.VARIABLES.OBJBJ( !D820615820927DbD]%"& SPD.MAIN.OBJS.OBJBJL!%!#D820615820927DbD]'$( SPD.MCZ2.OBJS.OBJBJ#'#)!D820615820927DbD]%"& SPD.MAIN.OBJS.OBJBJL!%!#D820615820927DbD]'$( SPD.MCZ2.OBJS.OBJBJ#'#)H>Ӑ>GӐ>Ӑ!? ۆG( ۄ0ۆW(ӄۆG(ۄL- 820803820927:k:+., SPD.ASM.CMDJS.OBJBJ-+-/- 820803820927:k:+., SPD.ASM.CMDJS.OBJBJ-+-/V ASM SPD.VARIABLES ( X D=Rev_1.02__820723 NOW ) ASM SPD.MAIN ( X D=Rev_1.02__820723 ) ASM SPD.MCZ2 ( X D=Rev_1.02__820723 ) B 1 j820730820803050_R526getfile2.SAVE.CMDDCMDCROS.S15193820730820803748 CONPLUS.RIOVE.CMDDCMDCROS.S373;?CG1 j820730820803050_R526getfile2.SAVE.CMDDCMDCROS.S15193820730820803748 CONPLUS.RIOVE.CMDDCMDCROS.S373;?CGb ACTIVATE $CONPLUS.RIO DEFINE 1 $CONPLUS.RIO DEFINE 2 $CONPLUS.RIO DEFINE 3 $CONPLUS.RIO ECHO ECHO The MCZ-2 is ready to accept the file... ECHO On the MCZ/1, hit the BREAK key, and type: ECHO OUTPUT . ECHO SET ECHO off COPY $CONPLUS.RIO #1 O SET ECHO on ECHO DEFINE 1 $CON DEFINE 2 $CON DEFINE 3 $CON DEACTIVATE $CONPLUS.RIO ( %CON 800226 COPYRIGHT ZILOG, INC. 1978!~(EFNV^ 0l Fx(B!!B>0 >pq!E>22>2>2>w v( f n|(Ffn!ɰ #^#V#(>DvFH }/+B@!B0 qp!@(öx(J͗V(~̔ x(1͔ x( F  n(ö >fnBtuÒV( NzsFx(͗˿\ ڳ͗˿X ͌(>\> zs T! O͖(G!͵~5!̵F5O(3~#~ڳ!~FH = $58207308208030<#C 0"QA>BRCV2.RIORIOVE.CMDDCMDCROS.S=A=EIKOSMQUY]aW[G(Wq~(G>ڳÄ! ͖ 26 ڳ> s>   F( > >V ͗~0o&D˿ (p :ݾ > $ 5͌(-!̵50 ~(0 F>ڳ>ڳ &!Kʵx(~ڳ!̵4!͵4 ߲ [:ݾ$_! ?:ε͔0 ~0 #~(!̵4:͵0~2͵  Bfڳ2̵2͵fnB<B0DMx(Cʵfnh  Tڳ !͵~4!̵F4(G~ڳ!~wG>ڳV~(. (* 0 w25 = $58207308208030<#C 0"QA>BRCV2.RIORIOVE.CMDDCMDCROS.S=A=EIKOSMQUY]aW[4:ݾ~2˿ 0@ 62G "~8W_B!W#~(p 5> (4:ݾ0~2Ô:> :G͔xy͌ 6 V(& 0 ~(0&oFִִ~! 5>> ͔>Ô &< !F ˿(5(6(:(2:,2w:o=$CONPLUS.RIO $CON @0 0 RCV2.RIO - Version 1.0 Depress the BREAK, or MON, button on your MCZ-1, to get back to command level of COMM. QUIT from COMM, and then ACTIVATE $MCZ2. Files on the MCZ-2 may be accessed from the MCZ-1 by using the device_driver name $MCZ2 as a filename qualifier. When you again wish to communicate directly with the MCZ-2 from your console, DEACTIVATE $MCZ2, and then enter COMM MCZ2. The prompt of MCZ2.RIO should then be on=!4 !>WM˾˦:2_WW^(:G:˿(@2 ȶ >n!f ^@(2>!!ˆ!~2s6O *"z|Sϵ*T"tSTW* "vS @* "xS *t"T:s!Nw !|[zS*v" *x"  your screen. ***** ERROR - UNABLE TO ASSIGN ***** ERROR - UNABLE TO ASSIGN ***** ERROR - UNABLE TO TURN ECHO OFF WITH !9!6!iF!͗F!FQEq!9!7!iF!͗F!FQEq!9!96yEqy :<#3ͥ2q!<#~03!@ut N3!But N3!But N3!G3N3!H3 ~#fo123$33 3!!B w!B#~k4!B=Iqñ46qâ47qâ46qâ47qâ48qâ4'8qâ4͠8qâ4!4˜4!4 ~#fo D`4U4J4?444)444>!B w!B=Iq2!9>@20!0Oq:020>B20!0Oq!9>@20!0Oq:020>B20!0Oq!9>2/C>2AO>9AO>9AO>9AO>9C!"@C!C!+"@C!C!< E)"@C!w{( {D_>wy(yDON~x(D3zKNzKNgiYONxYON!9ŗw|(~/wRDMz(~/w!RxNG~( PY!R`i3!9_w{( ~/w{D_y( ~/wyDO͹N~{(D3|MNgi_͹N{ɯ0!0ɯ0G{/!jR0?!9nf~ wt !8ut~ݶʃGn f Nnf͔C! 9N#F+ s#r!!9N#F+ s#r! 9^#Vr+s!9^#Vr+s!9w w ~ݶ±Gnf u t %Hnf ͐Dnfqnf ~o&! 9N#F+ s#r!9^#Vr+snf ~o&! 9N#F+ s#r!9^#Vr+s!9^#Vr+s!9^#Vr+sG!9!< Eu t !A ݆w!9~2J>2Jnf"Jnf"J!JOq !9~2J>2Jnf"Jnf"J!JOq !9N!J!Jq!9nf!}o|gl&====ʹJy2Jnf!}o|gl&ʹJy2Jnf!}o|g<<<<ʹJy2Jnf!}o|gʹJy2J>2J!J"J:J.L*J~0(.L*J6 *J#"J!J5N!J!Jq!9!PKy2J!9!nfnfKy2J!9!nfqKy2J!9!nf!Jy2J790410!9>ww!9>ww|(~/wR|(~/w>) * * + + , , - - . . / / 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 : : ; ; < < = =  of RIO's TAB drum > > ? ? @ @ A A B B C mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmC mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmD mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmD mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmE mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmE mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmF mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmF mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmH mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmH mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmI mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmI mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmJ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmJ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmK mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmK mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmL mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmL mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm