IMD 1.18: 12/03/2022 18:49:40 Jetsys/LGN COPY COM : BIOSKRNL REL : BIOSKRNL Z80 : BNKBDOS3 SPR BNKBIOS3 SPR : BOOT REL : BOOT Z80 : CALLVERS ASM CCP COM : CHARIO REL : CHARIO Z80 : COPYSYS ASM COPYSYS COM : CPM3 LIB : CPM3 SYS : CPMLDR REL DATE COM : DEVICE COM : DIR COM : DIRLBL RSX DIT COM : DUMP ASM : DUMP COM : ECHOVERS ASM ED COM : ERASE COM : ERRORS COM : EXTMEM REL FASTCOPY COM : FDRIVES ASM : FDRIVES REL : FORMATER COM GENCOM COM : GENCPM COM : GENCPM DAT : GENFBIOS SUB GENWBIOS SUB : GET COM : HELP COM : HELP HLP HEXCOM COM : HIST UTL : HIT COM : HITDIT DOC INITDIR COM : IOS REL : IOS Z80 : IOSETUP COM LIB COM : LINK COM : MAC COM : MODEBAUD LIB PATCH COM : PIP COM : PORTS LIB : PRIMO COM PRIMOE Z80 : PUT COM : RANDOM ASM : RENAME COM RESBDOS3 SPR : RMAC COM : SAVE COM : SCB ASM SCB REL : SET COM : SETDEF COM : SHOW COM SID COM : STOP COM : SUBMIT COM : TRACE UTL TRACK0 : TYPE COM : WDRIVES ASM : WDRIVES REL WINBACK COM : XREF COM : Z80 LIB : PTEM$NAM $$$ PTEM$IL1 $$$ ( @@@E  E 1  ͍ %͍͍ʢ͏͕!~# 4͕ ͍:g:s:_g:s!]~$o#~B̩1ɷW|g ͏͕%z͍͍ ͍vCPM3 SYS CPMLDR error: failed to open CPM3.SYS $ CPMLDR error: failed to read CPM3.SYS $ CP/M V3.0 Loader Copyright (C) 1982, Digital Research $021182" yڥ2 2 : 2 {2 !" " 9"@1!N y2K!dڛ_^#V*    ; A G :ž y! 4 5~yµ5 6y ’ ͒: ! OͻMD2 > BDOS ERR: $Select$Perm.$ v{_zW{_zW )8# ? w#JJ |^#V###" ##" ######" !  I* ! I* |! 6ʕ67 * w#w* w#w#w! ^#V#Fͪ' O* &! s#r#p* N#F* ^#V#F* : O}|y* %+* .}|y#* %* DM"  * s#r* s#r#pyoxgkDM* 0 MD" ! * MD$ : O&! N:  yG>O: ʐÇ* ͒ : ʨn` ~#for2 O͚" }: O* 7" 2 " : O: G2 ! w*  * !~2 ~2 : 2 : w: w |g}o' )4: O!3yoxg: O&}* : o$~w{ozg ^#V: ʏ> Û͡" ͳ* ç* r" ! ~#O&E: N/* " y2 ʹ͗ͻͫʛ* X: O~Jyʔx ʍ ʂJÍNJ# h2 G>G:~X*  IOw!x>Fwx2 2 ~: : 6: w2 ~O !>w:ͨ2 4O.5Ϳ: ! S: ͮ: ͛ͳ: < =! wW* M_S -* MD:" : 2 ɯ2 >G=O* ~~w#~2 ~wc~~p2 !" >2 * ~=2 ~2 ͛o>* w!" 2 =2 !" Û͛o͢͢' ͫ~<7 w@ͩ7: " Û: ~ : 2 : ~ * 6: p w#: w: w*@* }D> $* * T : _2 {2 " r" [  ?, d >l [ I6: <!=6 * J " * K : G/O*  * =d ## Ih c c c c c c Í ß Ð Õ Ú í c c é c c c c c c c c u É k c c c  !K!K!!6 6 >"2C?o(!d |G}2 <<2 >2! !#O: :(y: ( ( 2>2Mx: ɯ2S" Cx> >2*|o&~!!x( >>2C2!> (>w2CCC!y*`i#:ts(1j͍( ~ ͢p  S[!R0x̓y{([ ' ~w NJ F6#ͱ 666 :rͪͱ >!p > >NF(90>2~6 :p> y~4(>4Wy> ~݆ݾ8(>6w4~ ݖw ~~ F8 C"!>!x((:4>> w( D6#~:=_Gn f s(1j͍( ~ ͢p͙ >ͪ~w NF 6#ͱ 66>"l/ > !!> \l!j\>կNF:!0 ) 0 ~=O 0yT!jpT"S!! >}ϋ}ϋ y(ϋ y(ϋ~G#N#Kvv-<v@_@:w:w:www?: : ɯɯwwwO F?COPYSYS COM @CPM3 LIB ABCPM3 SYSCDEFGHIJCPM3 SYS*KLMCPMLDR RELNODATE COMPQDEVICE COM:RSTUDIR COMrVWXYZ[\]DIRLBL RSX^DIT COMy_`abcdefDUMP ASM ghDUMP COMiECHOVERSASMjED COMIklmnoERASE COMpqERRORS COMrEXTMEM RELstFASTCOPYCOMuvFDRIVES ASM^wxyz{|FDRIVES REL}FORMATERCOM&~GENCOM COMtGENCPM COMGENCPM COM(GENCPM DATGENFBIOSSUBGENWBIOSSUBGET COM3HELP COM8HELP HLPHELP HLPHELP HLPHELP HLPhHEXCOM COM HIST UTL HIT COMHIT COMHIT COMHIT COM HITDIT DOCINITDIR COMINITDIR COMzIOS RELIOS Z802IOSETUP COM LIB COM8LINK COM{MAC COM\MODEBAUDLIBPATCH COMPIP COMD    PORTS LIB PRIMO COMPRIMOE Z80^PUT COM7RANDOM ASMVRENAME COM RESBDOS3SPR!RMAC COMj"#$%&'(SAVE COM)SCB ASM*+SCB REL,SET COMS-./012SETDEF COM 34SHOW COMB56789SID COM>:;<=STOP COM=>?@ASUBMIT COM*BCDTRACE UTL ETRACK0 -FGHTYPE COMIJWDRIVES ASMQKLMNOPWDRIVES RELQWINBACK COMFRSTUVXREF COMyWXYZ[\]^Z80 LIB/_`aMOV96 COM{bcdefghiPTEM$NAM$$$ jPTEM$IL1$$$(klm͖]>2_!"_>2|_!z_`>GͦT!N_6!O_6>@2P_!"Q_>2S_>2T_>@2U_>02V_>?2W_!X_`>GͦT!`_`>GͦTJ!;;|’R D!`>$IT:C]~©͢og#}w~_W:U_og}3>!_G\T#! axͫS>2_!_ a>͕TÇ##>IT! a> IT;+M>zSG!_>͕T!a_>͌SU!_GTQ}2_*_:_ogWR#a>GͦTb#a>GͦT#!axͫS‡2_!Eaͬ#!_rT >IT#T!_ \TO-)3 :N_2Ca:Ca!_~#R D!`uB!a> IT#<]jR D!`uB*_> ͡R#IT#<]!Ga $Rj D!`uB*_?W^#V> ͡R#IT#<+*_?W>IT#<]"!Ka\T!Ia?7!Da\T!(aDaxͫS!_~#!)aDaxͫS!*aDaxͫSR D>uE!+a>IT:C]!-aDaxͫS!.aDaxͫS!La_ !/aDaxͫS&H!0aDaxͫS;ͅ,!1aDaxͫSS!Naͣ !2aDaxͫS²R D!`uB!3a>IT#<]!Xa9a>ͦT!Ta2Ya!Pa 2_R D>uE]!9aDaxͫSn!:aDaxͫS!;aDaxͫSX!(aDaxͫSS#!aDaxͫSHͩ$!)aDaxͫS]́.!?aDaxͫS{!\ak6!^a_ !@aDaxͫS“!`a̓7!AaDaxͫS«!bai8!BaDaxͫSh"!*aDaxͫS:O_2Caø^^#V#NWY *%o**%o{ozg|g}o!\!l!3>YE >  Y Y oBY.:O*yO|g}o|gyg)|g}!o _x! r#s#%_L_RgoA^#V"da*da^#V*_W|– R D>uE]*da6#6â *da^#V#r+s^#V"fa*fa^#V+| *_*fas#rR D>uE] *fa^#V+r+sͼ"_!aW*_##~og+++L;LR"aJ!;; |? ~og+"a!aͿ5"a*a*a?W"aP ~=2a!a"a!"a#"a*_"a*a*aW *a?W~og"a*a?W~og)))))*a?W~og"a:a !"a*a#"a*a:T_og?W"a*a >og͡W"a*a*a+++*a?Ws#r*a*a+*a͡W*a?W"a*a*a*a?Ws#r*a?W^#V*a"a*a#"a` R D!hauB*_> ͡R#IT#<*a> ͡R#IT#<]R D!uauB!a>IT#<*a> ͡R# IT#<]R D>uE]b~# *b~ :O_*b~og@ }3>!b\T*_#?W"b*b#"_*b~*bw*b^#V?W*b#>GͦT*b^#V?W*b >GͦT*b 6*_*b$cS~*_w!_bxͫS *b {zSaͦT:_ *b^#V?W~2b :_2b!b*b"b!b%, R D>uE!auB!b>IT#IT!bͬ##T#<*b#>IT#IT#<*b >IT#IT#<]:N_*b"b!bz!_bxͫS*b^#V?W~!bd*_"b!b%,XRT D>uE!auB!b>IT#IT!bͬ##T#IT#<*_#>IT#<*_ >IT#IT#<]:N_*_"b!bz*b 6*_6*b"b!b͒¥R D!auB!*b>IT#<]:O_*b^#V?W"c!c*_"c!c]͇R2_*_ ?WW :P_og͡W"_:_!"b*b"bR2 D>uE!auB!Bb>IT#<]*b"c!c $Rz D!auB!X_>IT#IT#IT#<]:_R D!auB!Jb>IT#<]*_#"_:O_2_:N_2b:_!"_*_~=2 c! cT*b^#V?W" c! c!"_*_+"c*c*_W/:_/Z*_*_)"c!cͧ*_:P_og"_*_"c!c͂P:N_2_*_"_*_#"_!"_*b~=2c!cT!c!"_*_+"c*c*_W/:b*_*_)""c! cͧ*b"&c!$c͊:O_2b:N_2_:_*_*_)",c!(c7"b*_:P_og"_*_#"_Áô*b"0c!.ce͇R2_:_:b7*_ "_*b6*b 6*b"4c!2c]͇R2_:O_2_*_ ?WW :P_og͡W+"_:_!"_"_*_+"6c*6c*_W/:_/*_*_)":c!8cͧ*b">c!uE!auB!\b>IT#<]:buR[ D!auB!ob>IT#<]:W_*b w*b"Hc!Fcz6!_bxͫS6*b^#V?W~!b:_R D>uE!auB!b>#IT# IT#<]*b^#V?W~!b6*b*_cS*b"Lc!Jcm0*b"Pc!Ncz!Rc͚*b^#V?W"Tc!Tc*_"Xc!Vce͇R2_:bR D!ZcuB!_c>IT#<]"!uc\T!sc?7!oc͕Sʨ"xc!vc͘+*_?W!pcxͫS*_*_?W^#VW"_*_+++*_?W^#VW"_*_+"_*_"qc*_"zc*zc*qcWs*qc?W*qc#?WcS*qc#"qc,*_*_WR D>uE]!"_c~# *_#?W"c*c~*cw*c^#V?W*c#>GͦT*c^#V?W*c >GͦT:W_*c w*cc>GͦT*c~=2c!cT*c^#V?W"c!c!c%,R D>uE!|cuB!c>IT#<]*c"c!c $R D!cuB!c>IT#<]"!c\T!c?7!c\T!ccxͫS!cʹ:O_!czR D!cuB!c> IT#<]:N_^#V"c*c!c>͡;}2_:__*c:_og+MnSG!c>ͦT*c:_og#sSG!c>ͦTw*c!c>͢T!cc>GͦT:O_2c!"c*c |:c/!c*c]>zSG!c>ͫS:N_2c!c*c>uScͦT*c#"cÃ:O_2c!"c*c |:c/9!c*c]>zSG!c>ͫS/:N_2c!c*c>uScͦT*c#"c!c>IT!c>IT!cT#TTRu D!cuB!c> IT#<]D!cuB@!}_rT]!d͖2!}_rT!d}_>͌S¯R D>uE]!d-"_d~# :O_2_R D! duB!wd>IT#<]R( D!duB!c*d^#V?WGT#<]*d^#V+++|\TD!duB@!}_rT]!}d}_>͌Se>!}d}_>͡;}2_:_ʏ!}_:__nS~dͦT!~d}_>͡;}2_!}_KnSG!d>ͦT!d?7*d\T:_!}_sSG!_>͕T!_d> ͦTî!}_:_og++MnSG!_>͕T!}_:_og#sSG!d>͕T!d͖2!}_rT!d}_>͡;!d}_>͡;|[!d!}_rT!_> zS#>ͦT!_ > zS >ͦT!_K> zSG!d>ͫS2_!d_>͌S!__>͑T:_2_E!d_>͌S>2_E!_GT!d> IT;|8!d_>͑T!d͖2!d͕S2!__>͑T:_2_!_65>E!_GTQ}2_*_:_ogWY>áyD!duB@*d\T]*d!d>ͫS>*d"d!d?7*d\T*dn&:U_ogW"d:_og*dW*d+|>O*d}!d}_>͡;}2_:_!_}_> ͢TG!}_:_og+MnS!_> zSͦT!}_:_og#sS!_ > zSͦTRe D!duB!z_>IT#<]R D>uE!duB!Re>IT#<]R D!duB!ke>IT#<]R D!duB!~e>IT#<]R D!duB!e>IT#<]R D!duB!e>#IT#<]R D!duB!e>IT#<]R5 D!duB!e>IT#<]RR D!euB!e>IT#<]Ro D!euB!f>$IT#<]R D!euB!4f>IT#<]R D!euB!Of>IT#<]R D!euB!jf>IT#<]R D!#euB!{f>!IT#<]R D!*euB!f>IT#<]R D!1euB!f>IT#<]R: D!8euB!f>IT#<]RW D!?euB!f>#IT#<]Rt D!FeuB! g>IT#<]R D>uE!MeuB! g>IT#IT#IT#<]R D!'guB!3g>IT#<]!Ng2Jg:Jg:_:N_2Mg:O_2Mg:N_2Kg!"Hg*_"Rg*Rg*HgW/:Kg+*Hg?W!9gxͫS:Mgj*Hg?W~2_!Tgͬ#!_rT!Vg 2Kg:Kg+*Hg?W:g>GͦT*_*Hg?W^#VW"_*_+++*Hg?W^#VW"_@"!Lg\T:O_2Kg*Hg#"Hg :KgR D!,guB!;g> IT#<]R- D>uE]\g~# 3*^g^#V?W>IT!Zg>IT*^g^#V?WT#T!bg \T!"`g*`g |*\g*`g]> zS!bg*`g]> zSͫS*\g*`g]> zSG![g>ͫS:O_*`g#"`gÏ:N_R D>uE!oguB!g>)IT#<]"!:h\T!8h?7!2h\T!g2hxͫSL !7h6d !g2hxͫSc !7h6d R D>uE!tguB!g>%IT#<]"!=h\T!;h?7!g͕S23h:3h R D>uE!yguB!g>IT#<]R D>uE]:O_24h!"5h*_">h*>h*5hW/:4h/D!+*5h?W!gxͫS0!:7h-!y!:!:7h:!y!*5h#"5h !_h> ͦTRs! D>uE!~guB!h>IT#<])3g":3h"R! D>uE!guB!h>IT#<]!@h $R! D!guB!h> IT#<]"!Dh\T!Bh?7!2h\T!(h2hxͫS!"Gh!Eh͘2_"!)h2hxͫS":N_24hf"R9" D>uE!guB!*h>IT#<]!Ih $"Mh!Kh͘2_@f""!2h\T:N_24hR" D!OhuB!Yh> IT#<]"D!ThuB@!}_rT]!}_!dh}_>͡;#sSG!ih>͕T!gh͖2!}_rT!eh}_>͌S"!~h!}_rT!"eh*_"h*h*ehWA#!h}_> ͢T!h.7#R+# D>uE]!h $!hk6*eh#"eh"RR# D>uE]Rp# D!huB!h>IT#<]!h2h:h‚#:hw!_h>GͦT:_2_!__>͑T)3^#V"h*h~og>͡R!h\T*h~og |#!h{uSG!h>͕T$!h>uSG!h>͕T!hGTT^#V"hR$ D!huB!_>IT#<*h^#V?W"h!h>IT!hͬ##T#<*h^#V?W>IT#IT#<*h^#V?W>IT#<]~=2i!iTR$ D!huB!&i>IT#<]$D!huB@!}_rT]!8i}_>͡;}2_!}_:_og#sSG!i>͕T!i͖2!}_rT!9i}_>͌S;%Ý%!9i}_>͡;|!:i}_>͡;|g%G)Ý%Rx% D>uE]!i!i \T!i͠%R% D>uE]D)i~# ¥%*_#?W"i~*iw*i^#V?W*i#>GͦT*i^#V?W*i >GͦT:W_*i w*i:i>GͦT*i> zS*iG>ͦT*i > uS*iG>ͦT*i6:W_*iw*i:i>GͦT*i^#V?W"i!i*i"i!im-'R,' D>uE!huB!;i>IT#IT#<*i^#V?W"i!8i>IT!iͬ##T#<*i> IT#IT#<]!i%,'RT' D!huB!Zi>IT#<]*i"i!i $R}' D!huB!_i>IT#<]"!i\T!i?7!i\T!|iixͫS®'!iʹï'*i~'R' D!huB!}i>IT#<]'R' D!huB!i> IT#<]*i"i!i $R( D!huB!X_>IT#<]R( D!iuB!_>IT#<*i^#V?W"i!8i>IT!iͬ##T#<*i>IT#IT#<*i>IT#<]!i|i>GͦT*i~(R( D! iuB!i>IT#<]"!i\T!i?7!i\T!|iixͫSC)*i"j!i͚*i*i^#V?W>GͦT*i*i^#V?W>GͦTø*Ri) D>uE!iuB!i> IT#<])D!iuB@!jrT]!j!8ij>͡;#sSG!4j>͕T!2j͖2!jrT!ij>͌S)!Ij!j \TR) D!iuB!i> IT#<] *D!!iuB@!jrT]R* D>uE]!j!8ij>͡;#sSG!Mj>͕T!Kj͖2!jrT!ij>͌SW*!bj!$j \T!"0j*_"dj*dj*0jW*!fj.*!pjͻ*!tj \T!jj͠%*0j#"0jq*R* D>uE]$,j~# **j^#V?W>IT!i>IT*j^#V?WT#T!j \T!"j*j |s+*j*j]> zSG!j>ͦT!:ijxͫSi+!j*j]> zSjͦT*j#"j+!"j"j*j |+!j*j]> zSG!j>ͦT!ijxͫS+!j*j]> zSjͦT*j#"j*j#"j|+*j"j*j |,!j*j]> zSiͦT*j#"j+!jj> ͕T!jT^#V"j"j!jͧ*j"j!jm2j:jS,:O_>3> :jog)))))͕SҀ,:N_Ä,:O_R, D>uE]!"j*_"j*j*jW-+*j?W!jxͫS,R, D>uE!juB!j>IT#<]!j $!jk6*j#"jâ,R- D>uE]^#V"j*j!j xͫS1-!*_"j!"j*j*jW-*j*j>og͡W"j*j?W>IT*j?WT*j ͕Sҧ-*j#"jî-*j+"j=-*_*jW-!"j*jR- D!juB!z_>IT#<]R. D>uE!juB!k>%IT#<]R). D>uE!juB!+k>IT#<]RF. D!juB!;k>IT#<]Rc. D!juB!Lk> IT#<]R. D!juB!Yk>IT#<]R. D!pkuB!k>IT#<]!k2k:k°.J!;; |/:kog+"k!kͿ5"k!kW*_##~og+++L;*k=SULR"k/:k=2k!k"kR^/ D>uE!ukuB!X_>IT#<*k> ͡R#IT#IT#IT#<]Ro/ D>uE]!_~#z/*_#?W"k*_##?W"k*_###?W"k!"k*k*k))6#6*_*k++*k))s#r!k#1*k*k))^#V"k*k++*k))^#V"k*k+"k*k*kW1*k"k*k"k*k*k>og͡W"k*k?W*k>GͦT*k*kWg1*k?W*kxͫSұ0*k#"kÆ0*k*k?WxͫS0*k+"kñ0*k*kWd1*k*k?WcS*k?W*k?WcS*k?W*kcS*k#"k*k+"ky0*k#"k*k*kW*k*kWW1*k*k*k))s#r*k*k++*k))s#r*k"k1*k*k*k))s#r*k*k++*k))s#r*k"k,0/!_~#2!"k#"k*_"k*k*kW2*k?W*k?W xͫSV2*k#"k*k?W*k?WcS*k#"k2*k"_^#V"k!k6*kGT!k>IT;}2_:_ 3*k:__sS*kG>͕T!"k*kn&"k*k*kW 3*k*k]nSG!k>ͦT!k?7!k S*k#"k2!kGTT!k_ >ͨ;|[3#k>GͦT k>GͦTh3!_k> ͦT:W_ w:W_w~=2k!kT:_32k:_2kð3:_2k:_2k"k!kͧ!"_:k2k:k2k:kog:kogWN5!k"l!km2k:kG5*_#"_#:kog)))))!l>G͕T!ll5*_?W\T :kog)))))!l>͕T!ll5*_?W\T :kog)))))~*_?Ww:kog)))))~*_?Ww:k*_?Ww:kog)))))~*_?Ww+*_?Wk>GͦTu2k3!k43p/H !"_"_!l-"_þ5^#V"l*l"l>2l*ln&}2 l: log:logW5*l:log>w!l4È5*lGTT^#V"!l*!l~2/l!-lTͼ"_ͯ"#l*_^#V>og͡W#"%l*_^#V#"'l!")l*%l"0l*0l*)lWg6!"+l*+l |V6*#l~!+lFWSրL6*'l+"'l*+l#"+l'6*#l#"#l*)l#")l6*'l^#V"@l+*@l^#V?W!:lxͫS6+*@l^#V?W:l>GͦT*@l^#V?W^#V*_"_+++*@l^#V?W^#V*_"_R>7 D!2luB!`_>IT#<*_> ͡R#IT#<*_> ͡R#l>IT#<]^#V"Bl*Bln&"Dl*Dl |/*Dl |x7*Dl }3>*BlG\T*Bl>ITT^#V"Ul+*Ul^#V?W!NlxͫS7*_*Ul^#V?W^#VW"_*_+++*Ul^#V?W^#VW"_+*Ul^#V?WOl>GͦTR\8 D!FluB!`_>IT#<*_> ͡R#IT#<*_> ͡R#IT#<]*Ul"Wl!Wl_ ^#V"al*_#?W"_~*_w*_?W*_#>GͦT*_?W*_ >GͦT*_ 6*_ 6R8 D>uE]*_?W"hl!hl!jl]͇R2_*_#"_*_ ?WW :P_og͡W"_*_> og6;"_2cl:O_2_:N_2el:el:_/;!"_"_*_+"ll*ll*_W/:_/9*_*_"pl!nlͧ*_*Q_"_!rl͂9:N_2_*_"_*_#"_È9!"_"_*_+"tl*tl*_W/:el;!"fl*Q_+"vl*vl*flW/:el:*_*_*fl!dl>GͦT!YldlxͫS*al~m:!cl4:cl!|_m:6i:_:2cl!ZldlxͫS…::O_2elî:!dl[l>ͨ;!dlZlxͫS:!xl-*fl#"fl :*_*Q_"_@:"!dl\T!`ldlxͫS:"!dl\T::O_2el*_#"_9k9!zle͇R2_R$; D>uE]|/;|{z%;|WDM͹WogW];QY͛;QY!9U+|f;3333;!!T/<|WFè;;O;;# ;¶;;³;gl<~ < <#;#;H o&(?"_]<6 ?L<&9*|l=x2_=XA ¡>E?:_+<-/:_!_R>G9=!9~#?(=*|l9=oB2_2_2_<2_!9> X=+k=>x=-x=>2_>%>ґ=‡= ʋ= .>>x=.¨=>%>Ҩ=.>>Ù=eʲ=E=>+=>=-=>%>XG>%>=xGGG>=GyO> X>=:_>.>>y2_">~#z0 0!__w!_~K>4_!_sXX2_G:_<2_=X:_Xͱ>‰>:_ʉ>!_5!_4X:_G:_ʗ>!_R>>2_>?!_5£>:_!_<_!_>w w>+>!_~5>. ?G:_x0>:_> !_~?5!_4!_5-2_x!_^4{%?%?!_~0>0yB A?x=;?GͰ?(? h?:_Q?b?!_x(?b??(?F(? |?(?> ?n? Ž?xˆ?>?(? ™?Ͱ?(?x£?>(?=Fã??x!_??ð?:_??:_> ??>2l!l~E:_@!_@> @> @ @2l!~l"FB)@y<>0@= 0@¾@OoBoA####WͶAQ@60#w@EX@>ew#.b@ei@xw@A Q@AGZ+y=@x=@0 ڢ@60$ä@w ®@+6.$y=@x=@)Ax<A!9A A @ @w# X@H !9 A+w@xOo>g9x AX A Aw#AoB=3A<oB<_oBKoB AAoWA##ͶAʛAK0X pA0_X pAXK0w# }AxʛAA ZAAGZʱA+wæAxAʶAxAXAo>g9##AX A A X IB!lͱY> yB BB IB .Bx(B>fBB 7BBdBx!_LBdB7B:_WBdB:_ ILB>2l!l~E!lñYBC^)C^#VʶB”BByB#FүB#N¯B#^#r+s#^#V++r+s~yB5yBC5^)Cq#pyBOC4~ B_)Cs#r#s#r#q!CñY C C ` C C Format Overflow* `-&`!laCO:-`y^C!9GZC~#'KCKCyaCO:%`pCùCCyC{C*_|ʪCj& *_*_W#W> C> CC> C{=>'C!9C=~#'C{>'CCÿC{=>'C{>bC*_++|2Vm!Tm"FɯD>D>2am"bm"dm`i"fm!9"hm!Wm-Dm ~# 2D*m~D*m~vD!m>ITG3!!!.`F!.`"m!m;HÞD!m>ITG3!R.!!S`F!S`"m!m;HóD*m"m!m;H!mG*m^#V!_s#r*m^#V!_s#r*m^#V]S|*_]S|GD!m[E*m^#V}*_}GE!m[E:)`?E*m^#V}*_}G?E!m[E:,`ZE*m^#V}ZE!m[E^#V"m! `"m*m"m!mͱY2m!m~E^#V"m:%`E:'`E*mE*m5!m6:m ʳEEåEÔEE!m"F*mE*m5!_6!m"F:_E*m6ÿE I2m:mF! `"m!"m!mͱY!_6#6!m6 :-`!F!m"F^#V"n!_"n*n"n!nNXF! `" n!"n! nͱYUFF:%`F*n~ rF*_#"_F*n~ †F!_6#6F:-`F*n~ ¨F*_#"_!_6#6F*n~ F*_#"_!_#F!_6#6*_*_#W|F! `"n!"n!nͱYFF!_6"n!9"n!nG! 9^'n~# G*'n^#V|3G*'n*)n cS*)n nbhG*)n !,n>͢TÂG!!n>IT*'nT!,n\T*'n~#®G*'n^#V)))|G*'n6P#6*'n~#G*'n^#V))|G*'n6#6G*'n6<#6*'n6#6*'n6#6*'n6#6*'n 6*'n^#V}͵Q}2+n*'n^#V}?H!+n44*'n^#V}UH>2+n*'n^#V}H*)n~#€H*)n6#6*'n"Dn*)n"@n*)n"Bn!:nL*'n^#V|½H*'n"Nn!"Pn!FnͱY^#V^#Vf]: `H!IͱY2 `O!`H6H +~#w! ` s#r! `4]I I ` I I I/O Stack Overflow:_@I!_"Wn!SnM=I!Rn6KI:_2Rn!_6:Rn ZI*_#"_:Rn jI!_6#6:Rn"O"O*O^#V#"O^#VxḮI"Ö́I"O|͉I|~xḮIyaҹIA =.:;<>[]y *OͫI IIͫI$IͫI1J o&))))\xH  J#w JII*O#OJAOJGIͫI:TJ 6YJp4I+I~J#ͫIʊJ#*vJ6?zJwIeJͫIʑJI~J#6 ŠJ.JI IʾJͫIJ#*¶J6?úJwI¥JͫIJIþJ#6 J%#6J*O##^ ~?J# JxCON CON RDR PUN LST M!K ~I$‚KIͫI1NK\5Kl‚K$‚K!~ ‚KI!JͫIiK wKI#VKx=GSKI>ɯ*O+̈́K^#V͌K#{#z̈́K6#6͌K r+s!YnF#~K!Yn6P  |] |]!Zn^r+s6 #6 !Zn4^N*O|L}=LͳKL K LO>~LL>aLN*O|KLY K=8LyDL|]GL>~WL=WL>aLq2O*O/"O͓KڸL{͝K͌K*O*O#:OOʡL͌K#s#rêLͦK͓KzL͝KaL͌Kr+s{L!O4*O+>|L+}onIxI~2OxI"O͉I:OMKMG:OM*OpM4#6OͤI:O5ML*O++"O>M}+BML}|2O"OͤIL"O1]X|M##"O6*Os#r/JSO{ SO*O:OwڅM6¨M*O"O<¾M:OSOïMO*Ow#wOnI͉IOKxIqOnI͉IOxIN&LO*O~" 4#4#4nI͉IO~EN{NQO͝K>͊NOnI͉IO~̝K>͊NO*O~rN>O{N QO*O!*~!/2O*O|ʟN(^#VͤIͤI{zڲNzO2OzN:ONKqNN&L#üN*O|O*~O=!OO:OaLO OwNN>nI͉IO|}O~> OO"N#F#~xIq#p#w>OnI͛IO>O*~ͤI!ʷO=ҩO>!*O" s#r#w=O*O }!n6 4>2n*n!4#4#4~#N#F#y#x#:n*n!!:nAPPP:n~G~#~O?ҀP#~€P! p! y! q<„P<Pɯ~#N#F#w#q#pOO~®P#!!͆P! 6?O>G!$q#p#6 Q"n"n2nx2nO2nO!n~5ʯQ&PQQ=|Q:n|Q*nGx|g}oüQG!9!x%R R+Q$%Xg R-Q0X:X0T])X)XX)Xo|gXQ{5R$%X}6R|Xz-Wo&9}!9V}!bRX/ʟR)X=ÓR|/G!S R>0R R>-3RT]))S寕iO>`G>0 'S<S DM0 > og|HSW!VȇWS)]Syw# cS~#zS~#W #S!9Oo>gyS~#o>gxGTGͦTwF#"nxIT#T*n!9G_>WObk++CT~+;Ty~#/$XW#"n"n`i"nV*n"n!nw`i"nUU"n*n*n͸U"nU"n*n?WUW*n*n|zUW*n͸UW*n|U)))ڒUÒU*n͸U*n))ҍU)ҒU:nO:nGzʲUzU ))ҡUáU:nVWDM>!=))U UU|g}oͣVU͇VUV2n"n!nr#q#pV*n"n!nw!nr#q#p:nG:nsW:nG:nsW:nG:nsW:nG:nsW:nG:nsW:nG:nsW ^V dV kV|e. uVo&:n*nDMV"n!V^#V!9*n3333!V^#V!9!33333333###~VGOW_goހ_W+~G~+N+f.zVzW ))VV}W$WWWx.W3W3W>@X>;XyƀGOS\{EsWDsWzEsWDsW\e. aW gWS\e. rW.HEg)}W )҂W )҇W )ҌW )ґW )ҖW )қW )ҠW z|WDM|W͹WWx>$X!>)W W=W)Wɯo>g^#V#N#F{ozg||/=! XñYXXXXX Conversion26X!-XñY5X6X7X9XBX2XXx2WX!OXñYWXXXYX[X#}OD*%o~ҟX##~#fofX!{XñYXXXXX Free Space Exhausted##^#V#{_zWhY{_zWkX4zX{X##^#V# ##s#rs#r#s#r+++~sw#r####}*%o}|bY*{zbY+F+N+V+5^{hY{zhY}|hY{BYBYi`~sw#r##q#p i`N#F#^#V~hYq4#p+i`##s#rnY^Y^ FREE Request Out-of-Range$ Free Space Overwrite$GKYMbkY͖[F͕[N͕[N#F͕[^#V"|`y2{`xYi&\ZYxY>Z! `{#z*_*_]xyx"ZzZ_![^#VZtZ>(vZyͭZ>)vZ|WZiZ>[|cZiZZZ^>,vZtZ> _|] |] |]0:vZvZ̈́ZÄZtZ|͒Z}ÒZ ڽZdԿZ ͿZZZẍ́ZN #~vZZ![Z*o!9{_z[{[ [[tZ>#vZ*o>=^#V#͞Z[/[>: 9[>?vZ![ZZ>=vZ^#V|n[}e[.))\Z#F>A*[> #‰[~ >./[~ /[=z[^#V# File: Traceback:[[[[[[\\ ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLSTBADG!~`~e\J\^ Condition Stack Overflow$4Ox!n w#s#r#s#r!9!` s#r!~`N!n +++++ž\#{·\#zʼ\++~Þ\++!~`5!~# \\!~`N!n +++++\#~# ]+{]#z ]++~\#^#V=! `~f]5: `_! `^#V" `_.~# 8]*_)))))%` )| M]*_|}*`"_: `* `_w# s]*`{ ҍ] ‘]!#"`]Copyright (c) 1980 Digital Research, v1.3 !"#o"!o"'o2~`2 `**o ^"oq#p##}o"%o*}o|^_^+w+w+r+s4w#w#s#r<2)o++*#os#r"#o*!o#"!o*!oDM!#ox~^#~+^+F+Nq#p*!o+"!o^^=†^!+~O~#~G!>w!/x®^y^ >O6# ¥^ ʕ^=ɯ ~#fo++D^!!o~#^*#o;^^_^*_  Insufficient Memory$ Invalid I/O List End of Execution$?_ 8 8SYSINSYSPRINT   =====> Total of tagged files = Sorry, CP/M2.2 or later is required.??*1234567890 No files. . k :LSX ?ABC ToDEFMPRTUVW __Ka ___Ya7aXa N____O_   Files occupying k(k remaining) a a $:.is R/O. File not copied. is R/O. File not copied. Out of directory spaceCopying with verification CRC check failed. Error. Disk full. Warning: source = target. Re-log drive for an accurate directory.bbbbbbbbcb ccccb"c&cb,c0c4c:c>cbDcHcLcPcbXc Delete? (Y/N):Y*uc_?File is R/O. Delete anyway?(Y/N) Y Deleted.ccccc. *??????????? Find what: }__ and user (and v to verify): and user: : drive: ?*V0123456789234567d d }_d .  (  (  (  (  (  (  (  (  (A: Again. Retag # files.R: Rename file(s).B: Backup to last file.S: Space remaining on disk.C: Copy file with optional verify.T: Tag file for transfer.D: Delete file.U: Untag a file.E: Erase all tagged/untagged files.V: View a file at console.F: Find file in directory.X: Exit to CP/M.L: Login new disk and user area.W: Wild card tag of files.M: Mass copy of tagged files.?: Redisplay menu.P: Page through a file at console.sp or cr: Next file.Drive :  To*#****Aborted.7gLg_HgJg.? Erase tagged or untagged files? (T/U) : TUDo you wish to be prompted? (Y/N) : NType A at prompt to abort.*****Relogging drive****Erase ?(Y/N/A)YAErasing :h =h 5hDh 5h 5h5h  Tag what: :ih what: }_ heh eheh New hh :.      New name or * : :*?Cannot rename. already exists.File is R/O. Okay to rename?(Y/N)YO.K. to rename Renaming . ? Old name: New name: i ime: _iO_}_ i i i i i j 4j  + jMjjj0j0jtjN_$j0j  j j#Tagging jj    ! ! !SWEEP version 4.1 - December 19, 1983by Robert FisherDePaul University243 S. WabashChicago, Illinois 60604 Whichk remaining on Drive :kkkk k???????????? k kklll_/l*k (k)* k (k)  _pl_dl_ llll `llll `ll Invalid Format ItemVmambmdmfmhm Stream/Record Sequen/Direct Input/Output Keyed Access P< $conmm_mjmxmmmmmmm mmmmm mnmmnmnn.dat+n,nDn%n&nNnPnWnRn,oВSTE%hIIZ@TRKPP DD 9.@CNTPГd$4A5M?BOOTГ c45H =9%:?CONOOT SUUa&?HOMEc5EE$MQM?STDMAOԑPQ cu$DX1%MQN?SCTRNӓcU8Ua=N?DVTBLUScE%D$51Q%>?FLUSHSՠCD 9-M2?STBNKOSՠe4hM%<%ZDMAIRVTe%h%9QYQ50Ѐ0 ހx  X/0pI0W0H 8 aаaa`YaOa ;ø+@j \+vV `, (X d,1,bjyVh:0‰H;Kr@ <% iO@Cb ! R#=W+V+? e[eaYyͻ.0 aـ l6ր3@1,Z`ͪ  *@P dAD $C"0#{ͫ +qCf :Y"  `*@ `?ەd[ŨM`R)d 2~s,#e 6pL@&d\[XVmipV+8X,P,P ݀>-DE{$Ui@C1UrRܱ@+q |Zníó.ݐjIhDabW%8 vlxʽ;JvEc@.WX% v@b>fCh .s`FO 'L6 @s }\ >_#*D5| ݦp2ʷDHO31h=,+BO*!}?'ͻ.Hv%C`Liʼ2M&fM`$"C@V!0RohC' C* FU d[R)k Z k ![- %R$=CP ~6* *q ~9* q ~Iꑝ~ i)*~,giА ~ i0 ~ij`~?航) ~<ʈIԀ ~ 騱P ~鈈hj ~-*jqP ~KѠP ~ hp ~Ihj ~iiq@ ~$j1 ~jIq~[hH0 ~*I*p ~o(Jќ0<)Ȩq yhIqwiʑpajI׀*u1 A Ȩq p HJ0*q Iqנ,nii*J1ր ȉ)*Jѓ,d)ʊȨq d ))1` d )*J bi)I*љ` 8)Ȩq yhIqwiʑpajI׀*u1 TITLE 'BIOSKRNL.Z80 ROOT TO BIOS. CP/M 3.0' ;**************************************************************** ;* THE TOTAL SYSTEM CONSISTS OF: * ;* BIOSKRNL.Z80 ROOT * ;* BOOT.Z80 BOOT-MODULE * ;* CHARIO.Z80 CHARACTER-I/O-MODULE * ;* DRIVES.ASM DISK-DEFINITON-MODULE (WDRIVES/FDRIVES) * ;* EXTMEM.Z80 EXTERNEL MEMORY-MODULE * ;* SCB.REL SYSTEM VARIABLES * ;* IOS.Z80 PORT ADDRESSES * ;**************************************************************** ; LATEST CHANGE: 1984-06-20. PSW. ; BIOSREVISION D. .Z80 PAGE 42 ; EXTERNAL VARIABELS EXTRN @COVEC,@CIVEC,@AOVEC ; I/O REDIRECTION VECTORS EXTRN @AIVEC,@LOVEC ; - " - EXTRN @MXTPA ; MAX TPA IN USER BANK EXTRN @BNKBF ; COMMON 128 BYTE BUFFER ; INIT EXTRN ?PATCH,?INIT ; EXTRN ?LDCCP,?RLCCP ; LOAD & RELOAD CCP ; USER DEFINED CHARACTER I/O ROUTINS EXTRN ?CI,?CO,?CIST,?COST ; EXTRN ?CINIT,INISTM ; EXTRN @CTBL ; ; DISK EXTRN @DTBL ; POINTER TABLE ENTRY @ADRV,@RDRV,@TRK,@SECT ; DISKPARAMETERS ENTRY @DMA,@DBNK,@CNT ; - " - ; MEMORY MODULE ENTRY @CBNK,BNKMSK ; CURRENT BANK ENTRY ?PMSG ; WRITES MESSAGES ; EXTERNAL LABLES TO BIOS-CALLS ENTRY ?BOOT,?WBOOT,?CONST,?CONIN,?CONO,?LIST,?AUXO,?AUXI ENTRY ?HOME,?SLDSK,?STTRK,?STSEC,?STDMA,?READ,?WRITE ENTRY ?LISTS,?SCTRN ENTRY ?CONOS,?AUXIS,?AUXOS,?DVTBL,?DEVIN,?DRTBL ENTRY ?MLTIO,?FLUSH,?MOV,?TIM,?BNKSL,?STBNK,?XMOV ; EXTERNAL LABLE TO USERFUNCTION EXTRN ?USERF ; INTERRUPT-VECTORS ENTRY SIO1IV,SIO2IV,DMAIRV,CTCIRV,PIOIRV ENTRY INTVECT ; INTERRUPT-DRIVEN ROUTINES EXTRN KBDIRQ,CLKIRQ,PIOGAI,PIOGBI,UNKINT PAGE TRUE EQU -1 FALSE EQU NOT TRUE BIOSRV EQU 8426H ; BIOS-REVISION. BOTFLG EQU 0C000H ; BOOT-FLAGG DMA EQU 18H ; DMA. ; DMA-COMMANDS DMRSET EQU 0C3H ; SOFTWARE RESET DMENAB EQU 087H ; ENABLE DMA DMDISA EQU 083H ; DISABLE DMA BNKMUX EQU 1BH ; BANK-DMA-MULTIPLEXER DMBK11 EQU 00000000B ; BANK1 --> BANK1 DMBK00 EQU 00001000B ; BANK0 --> BANK0 DMBK10 EQU 00010000B ; BANK1 --> BANK0 DMBK01 EQU 00011000B ; BANK0 --> BANK1 BANK1 EQU 00000000B ; BANK1 (64K FOR CPU) BANK0 EQU 00100000B ; BANK0 (48K FOR CPU) CR EQU 13 LF EQU 10 BELL EQU 7 CTLQ EQU 'Q'-'@' CTLS EQU 'S'-'@' MB$XONXOFF EQU 00010000B ; XON/XOFF PROTOCOLL ON. JPOP EQU 0C3H ; Z80 JUMP INSTRUCTION CCP EQU 100H ; LOAD ADDRESS FOR CCP PAGE CSEG ;********************************************************** ;* BIOS: JUMP VECTORS * ;********************************************************** ?BOOT: JP BOOT ; ?WBOOT: JP WBOOT ; ?CONST: JP CONST ; ?CONIN: JP CONIN ; ?CONO: JP CONOUT ; ?LIST: JP LIST ; ?AUXO: JP AUXOUT ; ?AUXI: JP AUXIN ; ?HOME: JP HOME ; ?SLDSK: JP SELDSK ; ?STTRK: JP SETTRK ; ?STSEC: JP SETSEC ; ?STDMA: JP SETDMA ; ?READ: JP READ ; ?WRITE: JP WRITE ; ?LISTS: JP LISTST ; ?SCTRN: JP SECTRN ; ?CONOS: JP CONOST ; ?AUXIS: JP AUXIST ; ?AUXOS: JP AUXOST ; ?DVTBL: JP DEVTBL ; ?DEVIN: JP ?CINIT ; IN CHARIO.Z80 ?DRTBL: JP GETDRV ; ?MLTIO: JP MULTIO ; ?FLUSH: JP FLUSH ; ?MOV: JP ?MOVE ; ?TIM: JP RETURN ; NOT INSTALLED ?BNKSL: JP BNKSEL ; ?STBNK: JP SETBNK ; ?XMOV: JP ?XMOVE ; JP ?USERF ; IN EXTMEM.Z80 JP RETURN ; JP RETURN ; NOP ; GIVE CORRECT START FOR INT.VECTORS. PAGE ;********************************************************** ;* INTERRUPT VECTORS * ;********************************************************** INTVECT EQU $ ; INTERRUPT VECTOR ADDRESS PIOIRV EQU $ ; PIO BASE INTERRUPT VECTOR DEFW PIOGAI ; GRAPHIC SCREEN READY DEFW PIOGBI ; GRAPHIC KEY BOARD CTCIRV EQU $ ; CTC BASE INTERRUPT VEKTOR DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW CLKIRQ ; (10 Hz TICK) SIO1IV EQU $ ; SIO1 BASE INTERRUPT VECTOR DEFW KBDIRQ ; KEYBOARD INT. DEFW KBDIRQ ; DEFW KBDIRQ ; DEFW KBDIRQ ; DEFW KBDIRQ ; DEFW KBDIRQ ; DEFW KBDIRQ ; DEFW KBDIRQ ; SIO2IV EQU $ ; SIO2 BASE INTERRUPT VECTOR DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DMAIRV EQU $ ; DMA BASE INTERRUPT VECTOR DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; DEFW UNKINT ; PAGE ; BOOT DSEG ;; CODE IN BANK0 BOOT: DI ;; LD SP,BOOT$STACK CALL ?PATCH ;; PATCH IO-PART FROM LOADER. LD C,0 ;; INIT ALL 16 CHARACTER DEVICES C$INIT$LOOP: PUSH BC CALL ?CINIT ;; INIT CHARACTER DEV. POP BC INC C LD A,C CP 16 JR NZ,C$INIT$LOOP CALL ?INIT ;; INIT THE OTHERS LD A,(BOTFLG) ;; SHALL A: BE WINCHESTER ? AND A JR Z,GOON ;; NO...JUMP. LD HL,(@DTBL+4) ;; GET C: LD DE,(@DTBL+2) ;; B: LD BC,(@DTBL) ;; A: LD (@DTBL),DE ;; B: --> A: LD (@DTBL+2),HL ;; C: --> B: LD (@DTBL+4),BC ;; A: --> C: ; GO ON INIT 16 DISK UNITS. GOON: LD BC,16*256+0 ;; B=NUMBERS. C= LOG. DRIVE LD HL,@DTBL ;; DRIVE-TABLE D$IN$LOOP: PUSH BC ;; SAVE NO. & DRIVE LD E,(HL) INC HL LD D,(HL) ;; DE=ADDRESS TO DPH INC HL LD A,E ;; DOES DRIVE EXIST? OR D JR Z,D$IN$NEXT ;; NO...JUMP. PUSH HL ;; SAVE HL EX DE,HL DEC HL DEC HL LD A,(HL) ;; A=CONTROLLER RELATIVE ADDRESS LD (@RDRV),A LD A,C ;; LOGICAL ADDRESS. LD (@ADRV),A DEC HL LD D,(HL) DEC HL LD E,(HL) ;; DE=INIT ADDRESS EX DE,HL ;; CALL IPCHL ;; JUMP TO INIT. POP HL ;; HL=DPH POINTER D$IN$NEXT: POP BC ;; B=NUMBERS. C=DRIVE INC C ;; NEXT DRIVE # DJNZ D$IN$LOOP ;; NEXT DPH-POINTER. JP BOOT$1 CSEG ; BANK 1. BOOT$1: CALL SET$JUMPS ; SET JUMPVECTORS CALL ?LDCCP ; READ CCP.COM FROM DISK JP CCP ; ; WBOOT WBOOT: LD SP,BOOT$STACK CALL SET$JUMPS ; INIT PAGE ZERO CALL ?RLCCP ; REREAD CCP.COM JP CCP ; SET$JUMPS: LD A,1 ; SELECT BANK 1 CALL ?BNKSL LD A,JPOP ; Z80 JP OPCODE LD HL,?WBOOT ; WARM BOOT ENTRY POINT LD (0),A ; BIOS WARM START ENTRY LD (1),HL LD HL,(@MXTPA) ; BDOS ENTRY POINT LD (5),A LD (6),HL RETURN: RET ; DS 64 BOOT$STACK EQU $ ; DEVTBL -- RETURNS THE ADDRESS TO CHARACTER DEVICE TABLE DEVTBL: LD HL,@CTBL RET ; GETDRV -- RETURNS THE ADDRESS TO DRIVE TABLE GETDRV: LD HL,@DTBL RET PAGE ;********************************************************** ;* CHARACTER I/O- ROUTINES * ;********************************************************** ; CONOUT -- CONSOLE OUTPUT. SENDS CHAR IN (C) TO ALL ; CHOOSEN DEVICES. CONOUT: LD HL,(@COVEC) ; GET CONSOLE OUTPUT BIT VECTOR JR OUT$SCAN ; AUXOUT -- AUXILLIARY OUTPUT. SENS CHAR IN (C) TO ALL ; CHOOSEN DEVICES. AUXOUT: LD HL,(@AOVEC) ; GET AUX OUTPUT BIT VECTOR JR OUT$SCAN ; LIST -- LIST OUTPUT. SENDS CHAR IN (C) TO ALL ; CHOOSEN DEVICES. LIST: LD HL,(@LOVEC) ; GET LIST OUTPUT BIT VECTOR ; AND DO OUT$SCAN OUT$SCAN: LD B,0 ; START WITH DEVICE 0. CO$NEXT: ADD HL,HL ; SHIFT NEXT BIT BIT JR NC,NO$OUT$DEV ; JUMP IF NO CARRY PUSH HL ; SAVE THE VECTOR AND PUSH BC ; COUNTER AND CHAR. CO$OUT$RDY: CALL COSTER OR A ; READY ? JR Z,CO$OUT$RDY ; NO...JUMP POP BC ; B=COUNTER C=CHAR PUSH BC ; SAVE CALL ?CO ; SEND CHAR IF DEVICE IS CHOOSEN POP BC ; B=COUNTER C=CHAR POP HL ; BIT VECTOR NO$OUT$DEV: INC B ; NEXT DEVICE # LD A,H ; TEST IF ANY DEVICES LEFT OR L JR NZ,CO$NEXT ; YES...JUMP RET ; CONOST -- CONSOLE OUTPUT STATUS. RETURNS TRUE IF ALL ; CHOOSEN CONSOLE OUTPUT DEVICES ARE READY. CONOST: LD HL,(@COVEC) ; GET CONSOLE OUTPUT BIT VECTOR JR OST$SCAN ; AUXOST -- AUXILIARY OUTPUT STATUS. RETURNS TRUE IF ALL ; CHOOSEN AUX OUTPUT DEVICES ARE READY. AUXOST: LD HL,(@AOVEC) ; GET AUX OUTPUT BIT VECTOR JR OST$SCAN ; LISTST -- LIST OUTPUT STATUS. RETURNS TRUE IF ALL ; CHOOSEN LIST OUTPUT DEVICES ARE READY. LISTST: LD HL,(@LOVEC) ; GET LIST OUTPUT BIT VECTOR. OST$SCAN: LD B,0 ; START WITH DEVICE 0 COS$NEXT: ADD HL,HL ; SHIFT OUT NEXT BIT PUSH HL ; SAVE THE VECTOR PUSH BC ; B=COUNTER C=CHAR LD A,-1 ; SET DEVICE READY CALL C,COSTER ; GET STATUS IF DEVICE CHOOSEN POP BC ; B=COUNTER C=CHAR POP HL ; HL=VECTOR OR A ; TEST IF DEVICE READY. RET Z ; IF ALL NOT READY, RETURN FALSE. INC B ; NEXT DEVICE LD A,H ; CHECK IF MORE CHOOSEN DEVICES OR L JR NZ,COS$NEXT ; YES...JUMP OR 0FFH ; ALL CHOOSEN DEVICES READY RET ; RETURN TRUE ; CHECK IF OUTPUT DEVICE READY (XON/XOFF SUPPORT). COSTER: LD L,B ; CHANGE DEVICE # TO 16 BITS LD H,0 ; HL=DEV# PUSH HL ; ADD HL,HL ; OFFSET IN DEVICE-TABLE ADD HL,HL ADD HL,HL ; HL=HL*8 LD DE,@CTBL+6 ; DE= MODE BYTE F\R DEV 0 ADD HL,DE ; HL=R[TT MODE BYTE LD A,(HL) ; GET MODE BYTE AND MB$XONXOFF ; XON/XOFF PROTOCOLL? POP HL ; HL=DEVICE # JP Z,?COST ; NO XON/XOFF...JUMP LD DE,XOFFLIST ADD HL,DE ; HL=PLACE IN XOFFLIST LD C,0 ; FLAGSTATUS FOR ^C, ^S, ^Q ONLY CALL CISTL LD A,(HL) CALL NZ,CIL CP CTLQ JR NZ,NOT$Q LD A,-1 ; SET READY-FLAG NOT$Q: CP CTLS ; CTL-S? JR NZ,NOT$S ; NO...JUMP LD A,0 ; CLEAR FLAG NOT$S: LD (HL),A ; SAVE FLAG CALL COST1 ; GET OUTPUT STATUS AND (HL) ; AND MASK WITH XON/XOFF FLAG RET ; AND RETURN IT AS STATUS CISTL: PUSH BC ; GET INPUT STATUS WITH (BC) & (HL) PUSH HL CALL ?CIST POP HL POP BC OR A RET COST1: PUSH BC ; GET OUTPUT STATUS, SAVE (BC) & (HL) PUSH HL CALL ?COST POP HL POP BC OR A RET CIL: PUSH BC ; GET INPUT AND SAVE (BC) & (HL) PUSH HL CALL ?CI POP HL POP BC RET ; CONST -- CONSOLE INPUT STATUS. RETURNS TRUE IF ANY CHOOSEN ; CONSOLE INPUT DEVICE HAS A CHAR AVAILABLE. CONST: LD HL,(@CIVEC) ; GET CONSOLE INPUT BIT VECTOR JR IST$SCAN ; AUXIST -- AUXILIARY INPUT STATUS. RETURNS TRUE IF ANY CHOOSEN ; AUX INPUT DEVICE HAS A CHAR AVAILABLE. AUXIST: LD HL,(@AIVEC) ; GET AUX INPUT BIT VECTOR IST$SCAN: LD BC,0 ; START WITH DEVICE 0 ; CREG = 0 = FLAG, STATUS CALL ONLY CIS$NEXT: XOR A ; SET DEVICE NOT READY ADD HL,HL ; SHIFT OUT ONE BIT CALL C,CISTL ; CHECK STATUS ON THIS DEVICE OR A ; IF ANY READY RETURN TRUE. RET NZ INC B ; NEXT DEVICE # LD A,H ; CHECK IF ANY MORE DEV. OR L JR NZ,CIS$NEXT XOR A ; ALL CHOOSEN NOT READY. FALSE RET ; CONIN -- CONSOLE INPUT. RETURNS CHAR FROM FIRST READY ; CONSOLE DEVICE. CONIN: LD HL,(@CIVEC) ; GET CONSOLE BIT VECTOR JR IN$SCAN ; AUXIN -- AUXILIARY INPUT. RETURNS CHAR FROM FIRST READY ; AUX INPUT DEVICE. AUXIN: LD HL,(@AIVEC) ; GET AUX BIT VECTOR IN$SCAN: PUSH HL ; SAVE BIT VECTOR LD B,0 ; START WITH DEVICE 0 LD C,-1 ; CREG = FF = STATUS CALL FOR INPUT CI$NEXT: XOR A ; SET NO CHAR ADD HL,HL ; SHIFT OUT ONE BIT CALL C,CISTL ; CHECK IF DEVICE HAS A CHAR OR A ; CHAR? JR NZ,CI$RDY ; YES...JUMP INC B ; TEST NEXT DEVICE LD A,H OR L JR NZ,CI$NEXT ; POP HL ; HL=BIT VECTOR JR IN$SCAN ; LOOP UNTIL GOT A CHAR CI$RDY: POP HL ; HL=BIT VECTOR JP ?CI ; GET INPUT FROM DEVICE # IN B. PAGE ;********************************************************** ;* SUBROUTINES * ;********************************************************** IPCHL: JP (HL) ; VECTOR-CALL ?PMSG: ; WRITES MESSAGE @(HL) DETERM. ; WITH DEFB 0. LD A,(HL) ; GET NEXT BYTE OR A ; IS IT 0 ? RET Z ; YES...RETURN PUSH HL ; SAVE REGISTERS PUSH DE PUSH BC LD C,A ; CHAR IN (C) CALL ?CONO ; WRITE POP BC POP DE POP HL INC HL ; HL-->NEXT BYTE JR ?PMSG ; START OVER AGAIN ; ?MOVE -- BLOCKMOVE MEMORY --> MEMORY ; IN: HL = TO ADDRESS ; DE = FROM ADDRES ; BC = COUNTER. ; OUT: HL & DE POINTING TO THE NEXT BYTES ; THAT FOLLOWS THE MOVE. ?MOVE: LD A,B ; IS IT ZERO-MOVE? OR C RET Z ; YES...QUIT LD A,(BNKFLG) ; IS ?XMOVE INVOLVED?  AND A JR NZ,MOVE1 ; YES...JUMP EX DE,HL ; EXCHANGE ADDRESSES TO FIT LDIR ; THIS INSTRUCTION. EX DE,HL ; GET THEM BACK. RET MOVE1: XOR A ; ZERO ?XMOVE-FLAG LD (BNKFLG),A LD (SRCADR),DE ; SET SOURCE-ADDRESS IN DMA-TABLE LD (DSTADR),HL ; SET DEST-ADDRESS IN DMA-TABLE ADD HL,BC ; HL= END-DEST-ADDRESS. PUSH HL ; SAVED. EX DE,HL ; ADD HL,BC ; HL= END-SOURCE-ADDRESS PUSH HL ; SAVED. DEC BC ; REDUCE BLOCK LENGTH WITH 1 LD (LENGTH),BC ; CHECK FOR THE DMA COMMAND LD A,B OR C LD A,11001101B ; IF NOT ONE BYTE SET BURST MODE JR NZ,MOVE2 LD A,10001101B ; ELSE SET BYTE MODE. MOVE2: LD (MODE),A ; SAVE THE MODE LD HL,(DSTBNK) ; LD A,H ; DEST-BANK IN A. RLA ; SHIFT OUT LEFT OR L ; ADD ON SOURCE-BANK. AND 00000011B ; MASK ANY FAULTS. LD L,A ; LD H,0 ; PUT THE CODE I HL LD DE,BNKTBL ; OFFSET IN THE TABLE ADD HL,DE ; POINT TO THE RIGHT BYTE LD A,(HL) ; GET IT. LD HL,BNKMSK ; ADD ON BANKMASK OR (HL) LD HL,DMATBL ; POINT TO THE DMA-TABLE. DI ; SHUT UP FOR A MOMENT. OUT (BNKMUX),A ; START THE DMA CALL INISTM LD A,B ; OR C JR Z,MOVE4 MOVE3: IN A,(DMA) ; READ STATUS AND 00100000B ; IS IT READY? JR NZ,MOVE3 MOVE4: LD A,DMDISA ; DISABLE DMA OUT (DMA),A EI ; SPEAK AGAIN POP DE ; GET THE PARAMETERS BACK POP HL LD BC,0 ; COUNTER=0 RET ; ?XMOVE -- SETS CORRECT BANKS FOR DATA TRANSFERES. ; IN: B = TO-BANK ; C = FROM-BANK ; OUT: NONE. ; ?XMOVE: LD A,TRUE LD (BNKFLG),A ; MARK ?XMOVE LD (DSTBNK),BC ; GIVES (C) IN TO-BANK ; AND (B) IN FROM-BANK. RET ; BNKSEL -- BANKSELECT. ; IN: A = MEMORY BANK. ; BNKSEL: LD (@CBNK),A ; SAVE CURRENT BANK AND 1 ; MASK PUSH HL ; SAVE LD HL,BNKMSK ; LD A,BANK0 ; START WITH BANK 0. JR Z,BNK1 ; BANK0 ? YES...JUMP LD A,BANK1 ; SET BANK 1. BNK1: DI ; NOTHING CRAZY MAY HAPPEN NOW LD (HL),A OUT (BNKMUX),A ; SEND TO BANK SELECT PORT POP HL EI ; IT WORKED. RET  PAGE DSEG ;; BANK 0. ;*********************************************************** ;* DISK-DRIVE-ROUTINES * ;*********************************************************** ; SELDSK -- SELECT DISK DRIVE. DOES THE LOGIN-PROCEDURE FOR ; THE DRIVE IF IT IS THE FIRST TIME SELECT. ; IN: C = SELECTED DRIVE. ; E = BIT0 IS 0 IF NOT SELECTED BEFORE ; OUT: HL = 0 IF SELECTED DRIVE DOES NOT EXIST ; HL = @DPH IF SELECTED DRIVE EXISTS SELDSK: LD A,C LD (@ADRV),A ;; SAVE # LD L,C ;; CREATE INDEX LD H,0 ADD HL,HL ;; HL=2*DRIVE #TO OFFSET LD BC,@DTBL ;; POINT TO DRIVE-TABLE-HEAD ADD HL,BC ;; HL=CORRECT VECTOR IN @DTBL LD A,(HL) ;; GET DPH-POINTER INC HL LD H,(HL) LD L,A ;; HL=DPH-POINTER OR H ;; SET Z-FLAG AND RET Z ;; RETURN IF NO DRIVE LD A,E AND 1 ;; FIRST SELECT? RET NZ ;; NO...RETURN PUSH HL ;; SAVE DPH-POINTER EX DE,HL LD HL,-2 ;; GET (DPH-2) ADD HL,DE LD A,(HL) LD (@RDRV),A ;; SAVE THE CONTROLLER RELATIVE DRIVE# LD HL,-6 ;; GET THE LOGIN-VECTOR ADD HL,DE LD A,(HL) INC HL LD H,(HL) LD L,A CALL IPCHL ;; DO LOGIN POP HL ;; HL=DPH-POINTER RET PAGE ; HOME -- HOME SELECTED DRIVE. DO SETTRK (0). HOME: LD BC,0 ;; TRACK=0 ; SETTRK -- SET TRACK ADDRESS. ; IN: BC = TRACK ADDRESS ; OUT: @TRK = TRACK ADDRESS SETTRK: LD (@TRK),BC ;; SAVE TRACK ADDRESS RET ; SETSEC -- SET SECTOR ADDRESS. ; IN: BC = SECTOR ADDRESS ; OUT: @SECT = SECTOR ADDRESS SETSEC: LD (@SECT),BC ;; SAVE SECTOR ADDRESS RET ; SETDMA -- SET DIRECT MEMORY ACCESS DISK ADDRESS. ; IN: BD = DMA ADDRESS ; OUT: @DMA = DMA ADDRESS ; @DBNK = @CBNK SETDMA: LD (@DMA),BC ;; SET GLOBAL DMA ADDRESS LD A,(@CBNK) ;; DEFAULT DMA BANK IS CURRENT BANK ;; GET CURRENT BANK & DO SETBNK ; SETBNK -- SET DISK I/O MEMORY BANK. ; IN: A = DISK BANK # ; OUT: @DBNK = DISK BANK # SETBNK: LD (@DBNK),A ;; SET DISK DMA BANK RET ; SECTRN -- SECTOR TRANSLATE. TRANSLATE LOGICAL SECTOR NUMBER TO ; PHYSICAL SECTOR NUMBER. ; IN: BC = LOGICAL SECTOR # ; DE = POINTING TO TRANS TABLE ; (0 IF NONE) ; OUT: HL = PHYSICAL SECTOR #. SECTRN: LD L,C ;; LD H,B ;; HL=CP/M SECTOR # (RELATIVE 0) INC HL ;; HL= -"- (RELATIVE 1) LD A,D ;; IS DE=0 OR E RET Z ;; YES...RETURN, NO TRANS TABLE DEC HL ;; HL= CP/M SECTOR # (RELATIVE 0) ADD HL,DE ;; HL=INDEX IN TRANS TABLE LD L,(HL) ;; TRANSLATE TO SECTOR # FROM TABLE LD H,0 ;; 8 BITS VALUE RET ; READ -- READS PHYSICAL SECTOR FROM SELECTED DISK. ; IN: NONE ; OUT: A = 0 NO ERROR. ; A = 1 IF ERROR. ; A = 0FFH IF MEDIA CHANGE. READ: LD DE,-8 ;; INDEX OFFSET TO READ-ROUTINE PUSH DE ;; ON THE STACK JR RW$COMMON ;; READ-WRITE-GEMENSAM. ; WRITE -- WRITES PHYSICAL SECTOR ON SELECTED DISK. ; IN: C = DEBLOCKING-CODE ; OUT: A = 0 NO ERRORS. ; A = 1 PHYSICAL ERROR. ; A = 2 DISK READ-ONLY ; A = 0FFH IF MEDIA CHANGE. WRITE: LD DE,-10 ;; INDEX OFFSET TO WRITE-ROUTINE PUSH DE ;; ON THE STACK RW$COMMON: LD HL,(@ADRV) ;; GET DRIVE # LD H,0 ADD HL,HL ;; HL=2*DRIVE# LD DE,@DTBL ADD HL,DE LD A,(HL) INC HL LD H,(HL) LD L,A ;; HL=DPH POP DE ;; DE=READ/WRITE PUSH HL ;; SAVE DPH-ADDRESS ADD HL,DE ;; HL=READ/WRITE IN DPH LD A,(HL) INC HL LD H,(HL) LD L,A ;; HL=READ/WRITE-VECTOR POP DE ;; DE=DPH DEC DE DEC DE LD A,(DE) LD (@RDRV),A ;; A=CONTROLLER RELATIVE DRIVE# INC DE ;; BACK TO DPH INC DE JP (HL) ;; DO THE ROUTINE IN EXTMEM.Z80 ; MULTIO -- SET MULTIPLE SECTOR COUNT. ; IN: A = SECTOR COUNT. ; OUT: @CNT = MULTIPLE SECTOR COUNT MULTIO: LD (@CNT),A ;; SAVE THE COUNTER. RET ; FLUSH -- ; NOT INSTALLED. FLUSH: XOR A ;; RETURN NO ERRORS. RET PAGE ;******************************************************** ;* VARIABLES * ;******************************************************** CSEG ; MUST BE IN BANK1 @ADRV: DEFS 1 ; SELECTED DISK DRIVE # @RDRV: DEFS 1 ; CONTROLLER RELATIVE DISK DRIVE# @TRK: DEFS 2 ; TRACK # @SECT: DEFS 2 ; SECTOR # @DMA: DEFS 2 ; DMA ADDRESS @CNT: DEFB 0 ; RECORD COUNT FOR MULTISECTOR I/O @DBNK: DEFB 0 ; BANK FOR DMA OPERATIONS @CBNK: DEFB 0 ; BANK FOR PROCESSOR OPERATIONS BNKMSK: DEFB BANK0 ; MASK FOR PROC-/DMA-OPERATIONS. BNKFLG: DEFB 0 ; FLAG FOR ?XMOV DSTBNK: DEFS 1 ; DEST-BANK FOR ?XMOVE-?MOVE SRCBNK: DEFS 1 ; SOURCE-BANK FOR ?XMOVE-?MOVE BNKTBL: DEFB DMBK00 ; BANK0 --> BANK0 DEFB DMBK10 ; BANK1 --> BANK0 DEFB DMBK01 ; BANK0 --> BANK1 DEFB DMBK11 ; BANK1 --> BANK1 DMATBL: DEFB 17,DMA ; 17 BYTES TO DMA DEFB DMDISA ; DISABLE DMA DEFB 01111101B ; CR1A: BLOCKLENGTH LOW o. HI FOLLOWS, ; PORT A START ADDRESS LOW o. HI ; FOLLOWS A->B, TRANSFER. SRCADR: DEFS 2 ; SORCE-ADDRESS (PORT A) LENGTH: DEFS 2 ; BLOCKLENGTH - 1. DEFB 00010100B ; CR1B: PORT ADDR. INC. PORT A-MEMORY. DEFB 00010000B ; CR1B: PORT ADDR. INC. PORT B-MEMORY MODE: DEFS 1 ; CR2B: BURST/BYTE-MODE DSTADR: DEFS 2 ; DEST-ADDRESS (PORT B) DEFB 10000010B ; CR2A: STOP END-OF-BLOCK DEFB 11001111B ; CR2D: LOAD STARTADRESSES FOR BOTH ; PORTS AND ZERO THE COUNTER. DEFB 10001011B ; CR2D: ZERO STATUS-BITS DEFB 10110011B ; CR2D: FORCE READY. DEFB DMENAB ; ENABLE DMA DEFB 10111111B ; CR2D: SET NEXT READ STATUS. DEFB 0 ; TABLE END. XOFFLIST: DEFB -1,-1,-1,-1,-1,-1,-1,-1 DEFB -1,-1,-1,-1,-1,-1,-1,-1 END .Y"y2;!"(:2(=2(:=;!~;4#.{2(!" "9"2!;(y3]K!o\b!,_^#V* !J ^#V̀:#!"(COPYRIGHT (C) 1982, DIGITAL RESEARCH 151282/(  + 1 7 = }!!!!"""""# ####$$$$#$-$A$J$S$@Y$u u J$u u }$$$$$*%P%$%&'('d'''(('({ A g X J v !)$*^#V#^#Vw# ll l ls:¬MA wM  2*7w#6?#7 .,:;[]=<>|!?]45#Ra{i_p# l s s͂:(A2= / ::0! dگ61#d ڸïp#:w#6 !6:6 *#!)6.#)͂ O(BDOS Function = File = !,$-"h!9"f! ͉:2(t™:! =Hgo:O*;*Ó*"r*r"ÿ<:g:!͐*f}D! ~6t!r ͷO(^  : šn!6@G:x: P:<: P n6 t6! ^6 t6u:)<͠^! G:Ҏ>xʝʝw>ɯw̩z:»!>wɯ:=zxzz: :G:=/ͽx:Āy!4 5~y 5 6y(^@O:=7:y :I :=e:  zz#͂:!  r  ! O(Ì*( ~2* *}ʷ!#¶!""÷:_:*( #wxH! )6"& :!  x2 GH)+6:2, :!-  :, !+*( ~L#Bxz:* : *( ~ʓOڊ{2Ó#w:2. +:. 2- !% "( 2* ! "& !* ~4:2- Ԃ: Gͳͨ^2+ >2:2 *N#G2  :+ ̜2 5*( ~o#"( M š*( ~`Uoj*( ~#"( Ñ!* ~6s!+ 6:+ ‚xoͳ*& ~2+ o#"& !+ 6M : W:2 x ͺ*( +"( w  : >2* 2 :*( : +w"( ͺ:G:  !% "( ^-:* $P:<\: W:2 xM s:<9>2 :* 9x~+q ’x2 :* ͂^2 ¢ů͠: !ڽ*( ~5WèjM 2 ͨx*( +w"( j>2+ 2* jx. #NzW:  : !2 W! 5= ^x^ z: m :* ;#wO: 9ʌ ^:— ~x  ) :* :   >*( +"( w++2+ 2+ p!" r y< < <% zr ͷr 6r 9r MDÌ:o !6!h : ʚnt2 r 62 >r z<*)$"!z<~r s^#V#N#FxN:oʲ ̀õ (# Þ CP/M Error On : Disk I/OInvalid DriveRead/Only FileRead/Only DiskPassword ErrorFile Exists? in Filenameò ò >2(a." :(2:<:5(5(;(:(2ɯ2(2{_zW{_zW ) 74#4#4)7( #  w#*J|^#V#"i(##"k(##"m(###"o(#"q(##"(!s( )*s(!()*(|!(6~67*k(w#w*m(w#w#w>2('å2(*OͶyڲ ò <*e(Ͳ:0!(:(:(ò 2*(>*ͫ"(!(s#r#p*k(N#F*m(^#V#F*(:(O}|y9*( +"*( }|yP#9*( *(DM"(*k(s#r*m(s#r#pyoxg͝DM*(0MD"(!*MD$:(Oë!(N:( «G>O:( ù* :(n` ~#foͤ2(O"(}:(O*( "(2("(:(O:(G2(!(w*~zWw+ !z?#~*!* *G!O~2(~m͗O~t>2(?:(2(O:(w:Ғ4~:(w?r##rp# ä |g}oì*g( #G ¾1*q(:(*w***> r )e(:(O!*c(:(Oͫ}@2æ  ~á *g(:(o$*~K6?~wKw**i({#zir+s{ozg*(*(|g͸*u(*(  R>22Z$w*q(>ww:(c( *(#*i(s#r*:(!(:G~#<*q(#~!;(!(!(!~6k!"2(*q(N1q*{(]*{([*y(}<^#V(t6 ^#V}e ^#V#~2(>â9͆>!"(*y(³*(X)*ÿ͂"*g(*K! ~<:wb##>w#w> r !~#<!"@*(*#":&2(͒:È0:+Òy<_W`iͫDM*w( ~bNpwDM*w(T] KKͦ*w("w(ͦ"w(@ :(N N#Fy*(}|h#ð*(ͫ# 6*q(@-RXDM*w(6# x *o(w*(*w(s#r̀*i(6#6*}("(j-@*(|<ď+>!8>8> t>nͦv8 ~*o(wn:(r :(/GyOOA +¬ ¢y2(:(x¹o&:(W>OͫE:(ڟ?N/*"(y2ͦ+>2( ̀2(k,ºʺ*(*iҺ@:O~2(~WW:2(Ôyʛ?ʔx ʔ |̷ÔN͆G:(<2(x# W:(<­:2(2 G?>Gr x~:(2(Ô##~*$*">2>2: *(~w *" 2(>ʄ@~k:((s~*9~Ês~ ~ͅ<Eʀ@~›:(6!¦w͚̋,ÇPY*({zBKNyʺ Nú # #>? ;*~ w-xąH"(0 *(#ĊH( ,ˆʀHÈ2(xą ):(@O~#w͚ʀô̓-b_++V@* )͗Os++r!x>w~6:(6~#+w#w+~;wɯ2 K,OFq-yl?Npg&:(ʓ~†wŒ~è# # x ͗w w@ ~wb͐Ú!"*>o+"v- *!b("": r#~?w#>r# L=J! Lv w,b ?~O ͆=: <>w##~2( 4~?̓-¹:(<üAX2(r K:(w++~=wv 4͗O5:(2(X:(!(v q: v v Mڂ?Ͷ >T͓Â!"(>(Â:(G:(O:(h=2(7ryy/W!(:(lڈ>F6:(_/G:(ʧ:(ڨ|OͤG:(_OzW{|:(*(}|BKN zyG:(2(9:(>#:(>#*+S!X:(ڜq: ʺ!((ʵ>2( ͤ2(O DM͸}>r "("(2(:(2(* :(:(FsO s#r:(„y==„*(!(^W*y(^#Vx+7=2(wͼկw#KWK*("(J T͞*(:(["(Ͷ:(WMںʛ>(úͶ >TJ:(!(ʷ͞x!(w4 PWP  Â*!!~~#~O~#G~.|°! w:ck[!x?[! ~ʤ͆[͗PPv qO-á=.: <ʰ! Vq##~_@w: <œ. ʩ.ʩA r r##s <}r cN! ~态O>G~G!~G~o>_yW#x#W{s+p+q7r#r#r>@ >2  !!q#p#w2(wW*e(_3ҫ -!(s:(!(xQ*q(~wɯ2(2(ù*~2(~w#~2(~wZ!""2(=2*~2(=2(2(k:*wX/ 6X*̀!~$6:03i"!~6*e(>=)Q!(QX<k*{(}<^#V{!~! _*o(~s̓  2@ !()#w*~"!!(Fw̓ :(w̚":>#2(̓ *~wć"#Fx T]## #~ ȷ   *4 # '  4 !( *~^ ^ 33G# P v :dv 6 y #*~w>2 *p@! ~*"v@*w# ) 6# ͙   !N)@ u :G*g(`~!x_<_@!*o(y<:(/G?~##~? 6!K@?F6##N6 2 p##q:r !Z$2!"ög:(2T͐-:ʹ!>2<2(!!(w: >2(*6!O~2(+A@2! ͚A=: <%~?¯"k"?~?ʾ"ZT͐"*>o"͒"!:O"(Ý"}-6͚͚c2(ZT͐-3#͗#@!Y#sY#̓ Y# Y#ͅ:(As#:(@#@!#$̓ —#>2—#͇ͱ * «#>2(͙ wB p'+!#:(w͚AP{" 2! W>O2 ø }-R*e()$:(r "ök*w()$*c()$-}-ͤÀk*s(" :(;$:r 2͚ù͚͚}/_|/*e(W}_*c("e(}o|g"c(>2({2{2g*w(ʪ$Ң$Þ$+}$*(#}o|g:(O *s#r#w!~w/~@w//Hͥ*e(>=)%_g:0%w:- %:(<%R$Hͥ:(>(~c!o#~E%^#V)$G#~#~!%~ b%% k%%##N#F#^#V#~#fo~o!o#~>T}! 6**#K" G*~ xr ͐-xą@7(͚S!ʀq&&͋"&@6,͚%Xͤ͋&͗wO~<:( g&~w#w#6##)͋&@ * g&~?G++N͆p# Þ&͐*6!¿&?~p*6 &>2ͱ ! ! ͷ w*o(w'ͧ B pͧ ,Úgsr ͐-ͤ͜!S')_'ͤ̓ ~?w͐s-?F͜p!'̓ ¡'>2ͱ ?~¾'¾''''>w'͙ =2(͜!:(wÚ~̓ ʑ'pá'!(6NN!(r )!(N !)z<*)$"!" :X(*:(w:(w#:(w*2* }D#cdfg!"()*{(X)^#V!"(:(<)!~<<)^#V*(<)"("(x+)!(*(>X)*{()Q*:(_2({2(Ē*"(͂"X*~<)ҍ) -)a*ʚ)~)6*(:(X*)!(:(T>q*k)!(:()-6>)ʴ+>2d,:+#++>29+2~2#! , , ,)x,) ,O +"!w [,O?WGzO:(V,xGyOG,xwq*}(}2*i(^#V+ d,!(K*}(@+*)):( K:(ڗ>2#-×:#-<)2#-*(!""++"(29-C-%w*{(}<^#Vz!(c-!>c-! J-w*q(~69!͐9bBI$"" HB@ UUUUUUUUUUUUUUUUUAPDA$! @I !@D@BDI@!B$ @$I$$ "@$$@@HHBD"D$H D@!IB@ A"B HBIB$$ "$ D$!"D$H$D$I@D BD" H$BHHBDHB"H!"!!$$HH !"BB$HHDA! "D"H $B!$!AI!$ $ H  H A$I! I" $$BD"$H "AHD @ I  B"$$H @@@@" BHB  !I$ @ $@$"$AI$$IBI$I H@@I!$DA $ $@$ !$!!" !$I@I $@ $ @!H"BI"HI DIHA DD$HH $  B D$ "I$I$H$ I !  $I$I$I $@HD$@!$"A$A DBIDB  @$$DD""I $BHI$IB !@"BD BBD "@B @$ $BI I B$@" ! "H !$B I$D@! !$ @H!$$D"@A@ DHII  D@@ $ DHI"D$ @ $""@ B! @@D $$A$ $D "@I $A$$I!HI$ BA$ $DH $I$I"HI$I!$DB$"B I$$I$ !I$@DBB$@D@"I A!$ @  @  "$ $I$I$ B!$@ I @I$ HBDH$ A$H!$D$ $I"B IIBB"$B@DH"$$ IH $$ !I"AD B!B  BI$A$"@$I$!!""@H! $!@I$ áäýË ^ Î Ó Ø ï õ @ã 6é;ã  Yß O+2;///////////////ͭͦ1ͭ>Q>!2"*b2"!B!*$*(**)0Y(l| *$*(**)>Y| h&)))H~͊~Ĝ > >w͓ͤ*"*&)܊| *"*&)܊ | ~O #x:{ ɯ2{S" Cx> >2*||o&~~!z!͘x( >>2{C|2y!z> (>w }ϋ2*!";< !7 >Q>Q!?, W! W! K>QCCP COM CRT LPT CEN GRAPH Įď@ D_!c~#F~G#N#A>!p}2!h}2t(>2I(>2:I͇2x2!͘ xx:Q͇2sx2y!p!͘!d}2<<2!͘!!(5[!R Sͱ(>!(5[!R S (y (y(y >@>P (y 4::! >(> !~(ɯs1!~(4*w!R$S{M>2s1!~"(4*w!RbS{ME  E  /7P E !#O @_@?@_@( ( (?80. 5"-floppy-version. 2x800 KBytes.      y A!&::L(,2L!91:y>QͧQ=>A!{>91:y>Qk&) ~#fo( ++N^#VQxy!BsN1V!M5 ,6 !\~'`8w+~<'`8w+~<'$8 w++4 #~Q:ͧQy2L"N{NM2L 1 ͣ y # :(*[KS"C!^#V#{(++~2py2o+V+^ Øy2oi&) ~#fo{!~2p!~#foCqCsCu:y2xi`#z+n&*o&)~#fo~#fo2p2wɯ* ""*""$ ( !"""$*$"**&"&*("(:*2I:+2Q!0p#!d|G![ !CCP.COM-error. Press to retry CP/M Plus Version 3.0 - Jet- L   L   L  0 L  O!~_q:pw!Rwww! 62Lsw1= q6͐ w(6ͅ #~w#~w#~w"7 ! ~#fo~w~w#~w#~w sw1=q( ~ ͋@ / B[u:xG x~Csw1=q~ ; ͋@  $6B6*u:xG x~ w>2Ly{w m ~w =ͨ F6#t 66~s Dm ?~w ͗ = *t ~m !~w ͗ = t   ˯AIR  >/<033O _ W{ !4 ~AO !F nf !O  BIOS error on : track- (A=abort R=retry I=ignore) | :ct>!S~G >>S*H#"H>S*J#"J!>S>NF(90>2~| :> y~*F#"F(>Wy> ~~ F8 >C! #  C "! C0".!+>!z͘x((:>> w(!~_  !~#fo >"CBCR2q:pwsw1= qͅ ##~w"7 sw1=q( ~ ͋ͦ/ sw1=q ͋ͦ/ >c~w =(*B#"B F6#t 66"@-/ > !z!=͘> !>կNF:!0 ) 0 ~=O 0<ݶ/2|/2}/2~2~w >c͗ =ͩ(*D#"D t "P->2/ > !z!M͘> /(Wz/>y!p!R!~8O Q!!Ru t R :/GOB8 y2:o! < = :G!!R~(0Os r :ow:qw:rwww.:G!R~(:o :q :r ۯɯ2Lww~ȯwn f n  D6#~:s=_Gn f wO F6w4~ ݖw =F>:G!~( =  wRyO>"S!z!͘ >}ϋ}$(ϋ y(ϋy(ϋ y(ϋy(ϋ6!fn^#V ~O#~U˿~檩˿#6 HGg$kxxmt!90$`tkeuggzp|oj $I$I$I$I%UUUUUU$@BDB  $@ !@@A $ $ @ D$HA@D@@ @@A A D( @AD !!@BH$@ D@B@@ @  $ T*Q I$ $!@ $A "@   H @"D@ H$@@! H"@D"I $$I$$$  "$ @@A AH A"@@@D@Г SHAQ "?LDCCPԓ%Y p@D6Îa!XEB@  T(Ш2B#;V |vb 7(2e +*{4 >3@nVYlf@2ͣpD4 PDPF(1p@ 6@Yä` < % 2@\C'ESr #) AoC ey4@P6Nbs4`  FSsIjiP ~鈈hj~*i ~]Ihj0 ~b ѢP +)Ȩq` iȨq 1fH*p bF)ʊȨq b8 % 2@\C'ESr #) AoC ey4@P6Nb TITLE 'BOOT.Z80' ;*********************************************************** ;* THIS MODULE PATCHES THE IO-PARAMETERS FROM THE LOADER * ;* TO THE SCB.ASM AND CHARIO.Z80. * ;* IT ALSO LOADS CCP.COM ON COLDBOOT TO A RESERVED AREA * ;* IN BANK0 0000H - 0DFFH, FROM WHERE IT WILL BE RELOADED * ;* TO BANK1 ADDRESS 0100H ON WARMBOOT. * ;*********************************************************** ; LATEST CHANGE: 1984-06-20. PSW. ; BIOSREVSION D. .Z80 PAGE 42 FALSE EQU 0 TRUE EQU NOT FALSE SWITCH EQU 1CH ; BIT5: TERMINAL TYPE CR EQU 13 LF EQU 10 BDOS EQU 5 ; HOPP-VEKTOR TO CP/M BASE1 EQU 100H ; CCP I BANK 1 BASE0 EQU 000H ; CCP I BANK 0. CIVC EQU 20H ; IN LOADER, BUT SWITCH DEPENDING COVC EQU 22H ; -"- , -"- LOVC EQU 24H ; IN LOADER AIVC EQU 26H ; -"- AOVC EQU 28H ; -"- C0BD EQU 2AH ; BAUD DEV#0 C1BD EQU 2BH ; BAUD DEV#1 S1STRT EQU 30H ; SIO TABLES SILEN EQU 23H ; LENGTH EXTRN INTVECT,?PMSG  EXTRN ?BNKSL,?MOV,?XMOV EXTRN @COVEC,@CIVEC,@LOVEC,@AOVEC,@AIVEC EXTRN C0BAUD,C1BAUD,SI1ATBL ENTRY ?INIT,?PATCH,?LDCCP,?RLCCP EXTRN ?TITEL PAGE DSEG ;; BANK 0. ; ?PATCH -- THIS ROUTINE PATCHES THE IO-PARAMETERS ; FROM THE LOADER. ?PATCH: LD HL,(CIVC) ;; CONSOLE INPUT VECTOR LD (@CIVEC),HL LD HL,(COVC) ;; CONSOLE OUTPUT VECTOR LD (@COVEC),HL IN A,(SWITCH) ;; AND 00100000B ;; GRAPHIC TERMINAL ? JR Z,PATCH1 ;; NO...JUMP LD HL,1000H ;; SET DEVICE GRAPH: LD (@CIVEC),HL ;; FOR CONSOLE INPUT LD (@COVEC),HL ;; FOR CONSOLE OUTPUT. PATCH1: LD HL,(LOVC) ;; LIST OUTPUT VECTOR LD (@LOVEC),HL LD HL,(AIVC) ;; AUX INPUT VECTOR LD (@AIVEC),HL LD HL,(AOVC) ;; AUX OUTPUT VECTOR LD (@AOVEC),HL LD A,(C0BD) ;; BAUD DEV#0 LD (C0BAUD),A LD A,(C1BD) ;; BAUD DEV#1 LD (C1BAUD),A LD HL,S1STRT ;; MOVE SIO TABLES LD DE,SI1ATBL LD BC,SILEN LDIR RET ; ?INIT -- SET UP INTERRUP VECTOR ENABLE INTERRUPT AND ; WRITE A PART OF SIGNON MESSAGE. ?IN IT: LD HL,INTVECT LD A,H ;; LOAD INTERRUPT VECTOR PAGE LD I,A ;; INTO Z80 REGISTER I. EI ;; MUST GO IF GRAPHIC TERM. LD HL,SIGNON ;; WRITE 1/2 ROW IN SIGNON. CALL ?PMSG LD HL,?TITEL ;; WRITE 1/2 ROW IN SIGNON. CALL ?PMSG ;; IS IN DRIVES.ASM RET CSEG ; BANK1 ; ?LDCCP -- IS CALLED FROM BIOSKRNL.Z80 TO LOAD CCP FROM ; THE FILE CCP.COM. IT WILL BE STORED IN A BUFFER ; AREA IN BANK1 AND WHEN ?RLCCP IS CALLED IT WILL ; BE RELOADED TO BANK1 FOR EXECUTION. ; NOTE: WHEN ?RLCCP IS CALLED BANK1 IS ACTIVE. ?LDCCP: XOR A LD (CCP$FCB+15),A LD HL,0 LD (FCB$NR),HL LD DE,CCP$FCB ; OPEN FILE 'CCP.COM' LD C,15 CALL BDOS INC A ; FILE OPEN? JR NZ,CCPOPEN ; YES...JUMP CCPERR: LD HL,ERRCCP LD A,0 ; SET BANK0 CALL ?BNKSL CALL ?PMSG ; WRITE ERROR MESSAGE LD A,1 CALL ?BNKSL LD C,1 ; GET CONSOLE INPUT CALL BDOS LD HL,CRLF CALL ?PMSG ; NEW LINE. JR ?LDCCP ; TRY AGAIN. ; LOAD CCP FROM 'CCP.COM' CCPOPEN: LD DE,26 ; UP TO 26 SECT. READ LD C,44 ; MULTI-SECTOR-COUNT CALL BDOS LD DE,BASE1 ; ADDRESS IN BANK1. LD C,26 CALL BDOS ; SET DMA ADDRESS LD DE,CCP$FCB LD C,20 CALL BDOS ; READ RECORDS. CP 1 ; ANY ERRORS? JR NZ,CCPERR ; YES...JUMP CCPOP3: LD B,0 ; DEST.-BANK LD C,1 ; SOURCE-BANK CALL ?XMOV LD DE,BASE1 ; SOURCE-ADDRESS LD HL,BASE0 ; DEST.-ADDRESS JR RLOOP1 ; ?RLCCP -- RELOADS CCP FROM BANK0 0000H - 0DFFH TO ; BANK1 0100H - ; ?LDCCP USES THE MAIN PART OF THIS ROUTINE ; TO MOVE CCP FROM BANK1 TO BANK0 ON COLDBOOT. ?RLCCP: LD B,1 ; DEST.-BANK LD C,0 ; SOURCE-BANK CALL ?XMOV LD DE,BASE0 ; SOURCE-ADDRESS LD HL,BASE1 ; DEST.-ADDRESS RLOOP1: LD BC,13*256 ; COUNT CALL ?MOV LD A,1 ; SET BANK1 JP ?BNKSL CCP$FCB: DEFB 1 ; DRIVE A DEFB 'CCP COM' DEFB 0 ; EX DEFB 0 ; S1 DEFB 0 ; S2 DEFB 0 ; RC DEFW 0,0,0,0 ; D0 -- DEFW 0,0,0,0 ; --DN FCB$NR: DB 0 DB 0,0,0 CRLF: DEFB CR,LF,0 DSEG ; MESSAGES IN BANK0.  ERRCCP: DEFB 'CCP.COM-error. Press to retry',0 SIGNON: DEFB CR,CR,LF DEFB 'CP/M Plus Version 3.0 - Jet-',0 END  ; CALLVERS program bdos equ 5 ; entry point for BDOS prtstr equ 9 ; print string function vers equ 12 ; get version function cr equ 0dh ; carriage return lf equ 0ah ; line feed org 100h mvi d,5 ; Perform 5 times loop: push d ; save counter mvi c,prtstr lxi d,call$msg ; print call message call bdos mvi c,vers call bdos ; try to get version # ; CALLVERS will intercept mov a,l sta curvers pop d dcr d ; decrement counter jnz loop mvi c,0 jmp bdos call$msg: db cr,lf,'**** CALLVERS **** $' curvers db 0 end  LOADER y; !91""|0!~ʞz=_: _* ""*og*%|}D S#N#F:ʒ#4ʝ^#V{‚:¿*.~w*DM!&_*.& >k s#rr+6.""1*D`.45. F.~. ^#Vx>`. s#rz 6#N#fi%$g1:=<@v_}v=p{_3;{<g"T=X3*j ~P#~R#~L{gbk#N#Fk$&Zcx {~#o}o1!;!"Ï:= w*wWx ~#&*.~s*"ѷ\ Cannot load Program 221282 COPYR '82 DRI <bHA$@DH   A@!" $$@X X X S 1-! j 1".~2.~2 :Xck*kͮ  b < .~=>$.w.6#w.6#w.61.~  .~~w@.p T~º>+~.~~! yͮ Ë.~~w2g !PROFILE.S !+2 !  +~d {   O! w+w+: =w! 5 c ʋ  :p  m>> ͧ  N Ĩ –.~+w.~2  9 : ! ~##~ !7 : !Կ : x*l " !ZXچ! 6  zz: 6 : %2p  ͆ : =̀ 2r  DIR TYPE ERASE RENAME DIRSYS USER u"Q}:\=p:r Aæ R ÂN ͙ʸ} !M 545 x ]  ̵ 6 : oG! ~怹>2M  xf>:ͦ ͤ ͍ ͤ f ¹2 lf   ͫR  L͞L I *  *  A }_Yl !ͮ ͒6 \&đ %* "l ͍  ûȷ45: w ? A I N   SUBMIT COM ! ͮ ! 6 #"l  !cͿ  O!:r :ͦ ͍ !~B I !pͰ ^#VCOM SUB PRL y!cͰ  î !" * %.2P#ͮ !g 4*l +"l ͷ 2 "Qx2Sl "Tx2V!q ~ :p ͆ .ڶ2* og$2| .w#w#w#w.~ .w#w~?w; ; ! ~#49 w#~$ A  < > _I  ! 6 ! ~#Ͱ 6 m   _  ! 6=  { *.pѯ:r x , \<=!Ͱ =ɯ2 \s 2 ! D ;! : .44 #4"l ~[* 2 a7 {7 w!Y #! *l "l " ~ U #D ]T!̷ 6*%.w#w!} 6 r 6 #w.6#6 #t#6.wo*.s#r.rͧ ̧ m . ^#V45+ w#w.f.5\A "l " l |F# !( | !( : x. +"l ! ͮ   ͮ ~!G8 * ~;#1 կA *l ~:g #I ѯ*l  *l ~0څ :҅ q X x<Ü AX QX X ~@#~:k #^ *jT~# ® wy#ù ! 4 : !Ͱ ~@*h~ yw y/w*hw*h~I E> ͦ > æ % 0  < : ~ȹͦ #* A !g ~6*  * >? A *l " ~0: :: q "l x~0 xG#Gs : &͘ ͤ &ͦ %˜ >  Ʌo$>?· !  > # ͮ x> # ~ Enter User #: $No File$ required$ERASE $ (Y/N)? $ Press RETURN to Continue $ (User 0)$NON-SYSTEM FILE(S) EXIST$: $$$ SUB T`c4H &?COOT S45H Q 2INISTMБT`eT䴔HA%=&PIOGBIUQ d3$THM$Q P5EA@ A@Ȥ@D @W1@ !G G!(@   ! @?-q8FY @|!*!*d9(2 (#*: ڊT #ʤi6]i x62T2B\qͪ HBFUx<V! gf`H !`%zPy]2s6 R a6)ِ'$ fCdc$  %zPy]j'iH& mm@l @ͱ"d,$(}Z`H@"ͳ" `AdlX(}^m1,d=쐀!sYg$ WBղ[H mFC`0B9!@|SB ?? nW]:1OVCel( U;b`)W#f;.h]v^؁ SIO1B ; OUT: A = WRITTEN CHAR. CONOUT: CALL CNOST ; TEST OUTPUT STATUS JR Z,CONOUT ; WAIT FOR READY LD A,C OUT (SIO1BD),A RET CO1: DJNZ CO2 ; JUMP IF NOT DEVICE 1 ; AUXOUT -- SIO1A OUTPUT ROUTINE. ; IN: C = CHAR --> SIO1A ; OUT: A = WRITTEN CHAR AUXOUT: CALL AUXOST ; TEST OUTPUT STATUS JR Z,AUXOUT ; WAIT FOR READY.  LD A,C OUT (SIO1AD),A RET CO2: DJNZ CO3 ; JUMP IF NOT DEVICE 2 ; LISTC -- CENTRONICS PARALLEL OUTPUT ROUTINE. ; IN: C = CHAR --> PIOA ; OUT: A = WRITTEN CHAR. LISTC: ; LD A,01010000B ; STROBE HIGH ; OUT (PIOBD),A LISTC1: CALL LSTTST ; TEST OUTPUT STATUS JR Z,LISTC1 ; WAIT FOR READY. LD A,C OUT (PIOAD),A LD A,01000000B ; STROBE OUT (PIOBD),A LD A,01010000B ; STROBE HIGH OUT (PIOBD),A RET CO3: DJNZ CO4 ; JUMP IF NOT DEVICE 3 ; GROUT -- GRAPHIC OUTPUT ROUTINE. ; IN: C = CHAR --> PIOGA ; OUT: A = WRITTEN CHAR GROUT: CALL GROST ; TEST OUTPUT STATUS JR Z,GROUT ; WAIT FOR READY LD A,C DI OUT (PIOGAD),A INC (HL) ; HL -->GRSCNT EI CO4: RET PAGE ; ?CIST -- CHAR INPUT STATUS FROM CHOOSEN DEVICE. ; IN: B = DEVICE # ?CIST: INC B ; MAKE DEVICE # (RELATIVE 1) DJNZ CIS1 ; JUMP IF NOT DEVICE 0. ; CONST -- CONSOLE INPUT STATUS CHECK. ; IN: NONE ; OUT: A = 0, Z = 1 IF NO CHAR AVAIL. ; A = 0FFH, Z = 0 AT LEAST ONE CHAR AVAIL. CONST: LD A,(RNGCNT) ; ANY CHAR IN THE BUFFER? OR A RET Z ; NO...RETURN OR 0FFH ; YES...SET FLAG RET CIS1: DJNZ CIS2 ; JUMP IF NOT DEVICE 1. ; AUXIST -- AUXILIARY INPUT STATUS. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF CHAR AVAIL. AUXIST: IN A,(SIO1AC) ; READY STATUS. AND 00000001B ; MASK Rx CHAR AVAILABLE RET Z ; NOT READY...RETURN OR 0FFH ; MARK CHAR AVAIL RET CIS2: DJNZ CIS3 ; JUMP IF NOT DEVICE 2 ; CENTRONICS DOES NOT HANDLE INPUT. RETURNS NOT READY. CIS4: XOR A ; NOT READY RET CIS3: DJNZ CIS4 ; JUMP IF NOT DEVICE 3. NO MORE DEV. ; GRINST -- GRAPHIC INPUT STATUS. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF CHAR AVAIL. GRINST: LD A,(GRCNT) ; TEST GR. CHAR. COUNTER OR A RET Z ; RETURN NO CHAR OR 0FFH ; SET READY RET PAGE ; ?COST -- CHARACTER OUTPUT STATUS FROM CHOOSEN DEVICE. ; IN: B = DEVICE #. ?COST: INC B ; MAKE DEVICE # (RELATIVE 1) DJNZ COS1 ; JUMP IF NOT DEVICE 0. ; CNOST: -- CONSOLE OUTPUT STATUS CHECK. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF READY FOR OUTPUT CNOST: IN A,(SIO1BC) ; READ STATUS. AND 00000100B ; MASK Tx BUFFER EMPTY RET Z ; NOT READY...RETURN OR 0FFH ; SET FLAG FOR READY OUTPUT. RET COS1: DJNZ COS2 ; JUMP IF NOT DEVICE 1. ; AUXOST -- AUXILIARY OUTPUT STATUS. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF READY FOR OUTPUT. AUXOST: IN A,(SIO1AC) ; READ STATUS AND 00000100B ; MASK Tx BUFFER EMPTY RET Z ; NOT READY...RETURN OR 0FFH ; SET FLAG FOR READY OUTPUT. RET COS2: DJNZ COS3 ; JUMP IF NOT DEVICE 2. ; LSTTST -- PARALLEL PORT TEST IF READY. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF READY FOR OUTPUT. LSTTST: IN A,(PIOBD) ; READ ACK AND BUSY. AND 00100001B CP 00100000B ; READY AND NOT BUSY LD A,0FFH JR Z,LSTT1 ; YES...JUMP LD A,0 ; SET NOT READY LSTT1: AND A RET COS3: DJNZ COS4 ; JUMP IF NOT DEVICE 3. ; GROST -- GRAPHIC OUTPUT STATUS. ; IN: NONE ; OUT: A = 0, Z = 1 IF NOT READY ; A = 0FFH, Z = 0 IF READY FOR OUTPUT. GROST: LD HL,GRSCNT ; GET STATUS COUNTER LD A,(HL) CP 0FFH ; IS IT READY JR Z,GROST1 ; YES...JUMP XOR A ; MARK NOT READY GROST1: OR A RET COS4: XOR A ; NOT READY. CAUSE NO RET ; MORE DEVICES. PAGE ; KBDIRQ -- CONSOLE KEYBOARD INTERRUPT SERVICE ROUTIN. ; USES LOCAL STACK IN ORDER NOT TO INTERFERE WITH THE ; USER PROGRAM STACK. KBDIRQ: LD (USRSK2),SP ; OWN STACK LD SP,OWNSK2 PUSH AF ; SAVE REGISTERS. PUSH DE PUSH HL LD HL,RNGCNT ; HL --> NO OF CHAR IN BUFFER LD A,(HL) ; A = NO OF CHAR IN BUFFERT CP RNGEND-RNGBEG ; IS BUFFER FULL? IN A,(SIO1BD) ; A = CHAR (CLR INTERRUPT) JR Z,KBDIR2 ; YES...JUST JUMP AND QUIT INC (HL) ; INC CHAR-COUNTER AND 07FH ; MASK PARITY LD HL,(RNGIN) ; HL --> INPUT LD (HL),A ; SAVE INPUT CHAR IN BUFFER. AND A ; CLEAR CARRY BIT EX DE,HL ; SAVE INPUT POINTER IN DE. L D HL,RNGEND ; HL=BUFFEREND FOR TEST SBC HL,DE ; POINTER AT END? INC DE ; INC JP NZ,KBDIR1 ; NO...JUMP LD DE,RNGBEG ; SET POINTER TO BUFFERSTART KBDIR1: LD (RNGIN),DE ; SAVE THE POINTER. KBDIR2: POP HL ; USER REGS. BACK POP DE POP AF LD SP,(USRSK2) ; AND USER STACK. UNKINT: EI ; BACK FROM INTERRUPT. RETI ; PIOGAI -- INTERRUPT FROM GRAPHIC TERMINAL. ; TELLS TERMINAL READY. PIOGAI: PUSH AF LD A,0FFH LD (GRSCNT),A POP AF JR UNKINT ; PIOGBI -- GRAPHIC KEYBOARD INTERRUPT SERVICE ROUTIN. PIOGBI: LD (USRSK3),SP LD SP,OWNSK3 PUSH AF ; SAVE REGISTERS. PUSH DE PUSH HL LD HL,GRCNT ; HL --> NO OF CHAR IN BUFFER LD A,(HL) ; A = NO OF CHAR IN BUFFERT CP GRNEND-GRNBEG ; IS BUFFER FULL? IN A,(PIOGBD) ; A = CHAR (CLR INTERRUPT) JR Z,PIOGB2 ; YES...JUST JUMP AND QUIT INC (HL) ; INC CHAR-COUNTER LD HL,(GRNIN) ; HL --> INPUT LD (HL),A ; SPAR INPUT CHAR IN BUFFER. XOR A EX DE,HL ; SAVE INPUT POINTER IN DE. LD HL,GRNEND ; HL=BUFFEREND FOR TEST SBC HL,DE ; POINTER AT END? INC DE ; INC JP NZ,PIOGB1 ; NO...JUMP LD DE,GRNBEG ; SET POINTER TO BUFFERSTART PIOGB1: LD (GRNIN),DE ; SAVE THE POINTER. PIOGB2: POP HL ; USER REGS. BACK POP DE POP AF LD SP,(USRSK3) EI ; BACK FROM INTERRUPT. RETI PAGE ;********************************************************** ;* OTHER TABLES * ;********************************************************** ; NOTE: THE SIO1-TABLES ARE PATCHES FROM THE LOADER IN ; BOOT.Z80-MODULE. ; IT VERY IMPORTANT THAT SIZE AND ORDER IN THIS ; TABLES NOT ARE ALTERED. SI1ATBL: ; MODEM/AUX/PRINTER. DEFB 3,CTC0 ; 3 BYTES TO CTC CHAN 0 DEFB 01000101B ; CTC0: INT. DIS, COUNTER MODE, ; NEG. EDGE, TIME CONST. FOLLOWS, ; COUNTING CONT. BAUDA: DEFB 4 ; GIVES 307200 Hz TO SIO1A CTCVEC: DEFS 1 ; CTCINTERRUPTVECTOR. DEFB 9,SIO1AC ; 9 BYTES TO SIO1 A/MODEM DEFB 18H ; RESET CHANNEL. DEFB 14H ; WR 4: CLKA: DEFB 10000100B ; x32 CLOCK, 1 STOP BIT, NO PARITY. DEFB 13H ; WR 3: DEFB 11100001B ; Rx 8 BITS, AUTO ENABL., Rx ENABLE. DEFB 15H ; WR 5: DEFB 11101010B ; DTR, Tx 8 BITS, Tx ENABLE, *RTS LOW. DEFB 01 ; WR 1: DEFB 00000000B ; NO INTERRUPTS, UNMODIFIED INTERRUPT ; VECTOR (BOTH CHANNELS). DEFB 0 ; END TABLE. SI1BTBL: DEFB 2,CTC1 ; 2 BYTES TO CTC CHAN 1 DEFB 01000101B ; CTC1: INT. DIS, COUNTER MODE, ; NEG. EDGE, TIME CONST. FOLLOWS, ; COUNTING CONT. BAUDB: DEFB 4 ; GIVES 307200 Hz TO SIO1B. DEFB 11,SIO1BC ; 11 BYTES TO SIO1 B/TERMINAL DEFB 18H ; RESET CHANNEL DEFB 12H ; WR 2: SIOVEC: DEFS 1 ; INTERRUPTVECTOR DEFB 14H ; WR 4: CLKB: DEFB 10000100B ; x32 CLOCK, 1 STOP BIT, NO PARITY DEFB 13H ; WR 3: HANDSH: DEFB 11000001B ; Rx 8 BITS, Rx ENABLE. DEFB 15H ; WR 5: DEFB 11101010B ; DTR, Tx 8 BITS, Tx ENABLE, *RTS LOW DEFB 01 ; WR 1: DEFB 00011100B ; INT ON ALL Rx CHAR (PARITY DOES NOT ; AFFECT VECTOR), STATUS AFFECTS VECTOR. DEFB 0 ; END TABLE. PAGE ; PIO PORT A INIT TABLE PIOTBL: DEFB 2,PIOAC ; 2 BYTES TO PIO A CTLR-REG. DEFB 00001111B ; SELECT MODE 0 OPERATION DEFB 00000011B ; INTERUPT DISABLE. ; PIO PORT B INIT TABLE DEFB 4,PIOBC ; 4 BYTES TO PIO B CTRL-REG. DEFB 11001111B ; SELECT MODE 3 OPERATION DEFB 00101111B ; BIT 7,6,4=OUTPUT ALL OTHERS INPUTS DEFB 00110111B ; INTERRUPT CONTROL WORD = DISABLED DEFB 00000001B ; MASK WORD, ONLY MONITOR BIT 0. ; SET PIO A BUFFER FOR OUTPUT DEFB 1,PIOBD ; 1 BYTE TO PIO B DATA DEFB 01010000B ; REAL TIME CLOCK INITIALIZATION TABLE DEFB 2,CTC2 ; 2 BYTES TO CTC CHAN 2 DEFB 01000101B ; CTC2: INT. DIS, COUNTER MODE, ; NEG. EDGE, TIME CONST. FOLLOWS, ; COUNTING CONT. DEFB 0 ; GIVES 4800 Hz TO CTC3. DEFB 2,CTC3 ; 2 BYTES TO CTC CHAN 3. DEFB 11000101B ; INT. ENABLED, COUNTER MODE ; NEG. EDGE, TIME CONST. FOLLOWS, ; COUNTING CONT. DEFB 240 ; GIVES 20 Hz, WHICH IS DIVIDED ; BY 2 (HARDWARE). ; INERRUPT 10 times/second. DEFB 0 ; END TABLE. ; INIT. GRAPHIC TERMINAL PIOGTBL: DEFB 3,PIOGAC ; BYTES TO PIOGA CONTROL PIAVEC: DEFS 1 ; VECTOR FOR A DEFB 00001111B ; OUTPUT ONLY. MODE 0 DEFB 10000111B ; ENABLE INTERRUPT. DEFB 3,PIOGBC ; BYTES TO PIOGB CONTROL PIBVEC: DEFS 1 ; VECTOR FOR B DEFB 01001111B ; INPUT ONLY. MODE 1 DEFB 10000111B ; ENABLE INTERRUPT DEFB 0 ; END TABLE. PAGE USRSK2: DEFS 2 ; USER STACK SAVED HERE DEFS 10H ; LOCAL STACK. OWNSK2 EQU $ USRSK3: DEFS 2 DEFS 10H OWNSK3 EQU $ RNGCNT: DEFB 0 ; NO OF CHAR IN BUFFER RNGIN: DEFW RNGBEG ; POINTS TO INPUT PLACE RNGOUT: DEFW RNGBEG ; POINTS TO OUTPUT PLACE ; IF EQU BUFFER IS EMPTY. RNGBEG: DEFS 22 ; KEYBOARD RING BUFFER. RNGEND EQU $-1 GRSCNT: DEFB 0FFH ; GRAPHIC OUTPUT STATUS COUNTER (0FF=READY) GRCNT: DEFB 0 ; NO OF CHAR IN GRAPHIC RING BUFFER GRNIN: DEFW GRNBEG ; POINTER TO GRAPHIC INPUT PLACE GRNOUT: DEFW GRNBEG ; POINTER TO GRAPHIC OUTPUT PLACE GRNBEG: DEFS 22 ; GRAPHIC RING BUFFER GRNEND EQU $-1  END  title 'Copysys - updated sysgen program 6/82' ; System generation program VERS equ 30 ;version x.x for CP/M x.x ; ;********************************************************** ;* * ;* * ;* Copysys source code * ;* * ;* * ;********************************************************** ; FALSE equ 0 TRUE equ not FALSE ; ; NSECTS equ 26 ;no. of sectors NTRKS equ 2 ;no. of systems tracks NDISKS equ 4 ;no. of disks drives SECSIZ equ 128 ;size of sector LOG2SEC equ 7 ;LOG2 128 SKEW equ 2 ;skew sector factor ; FCB equ 005Ch ;location of FCB FCBCR equ FCB+32 ;current record location TPA equ 0100h ;Transient Program Area LOADP equ 1000h ;LOAD Point for system BDOS equ 05h ;DOS entry point BOOT equ 00h ;reboot for system CONI equ 1h ;console input function CONO equ 2h ;console output function SELD equ 14 ;select a disk OPENF equ 15 ;disk open function CLOSEF equ 16 ;open a file DWRITF equ 21 ;Write func MAKEF equ 22 ;mae a file DELTEF equ 19 ;delete a file DREADF equ 20 ;disk read function DRBIOS equ 50 ;Direct BIOS call function EIGHTY equ 080h ;value of 80 CTLC equ 'C'-'@' ;ConTroL C Y equ 89 ;ASCII value of Y ; MAXTRY equ 01 ;maximum number of tries CR equ 0Dh ;Carriage Return LF equ 0Ah ;Line Feed STACKSIZE equ 016h ;size of local stack ; WBOOT equ 01 ;address of warm boot ; SELDSK equ 9 ;Bios func #9 SELect DiSK SETTRK equ 10 ;BIOS func #10 SET TRacK SETSEC equ 11 ;BIOS func #11 SET SECtor SETDMA equ 12 ;BIOS func #12 SET DMA address READF equ 13 ;BIOS func #13 READ selected sector WRITF equ 14 ;BIOS func #14 WRITe selected sector ; org TPA ;Transient Program Area jmp START dw 0,0,0,0,0,0,0,0 dw 0,0,0,0,0,0,0,0 dw 0,0,0,0,0,0,0,0 dw 0,0,0,0,0,0,0,0 dw 0,0,0,0,0 db 0,0,0 db 'COPYRIGHT 1982, ' db 'DIGITAL RESEARCH' db '151282' db 0,0,0,0 db '654321' ; ; Translate table-sector numbers are translated here to decrease ; the systen tie for missed sectors when slow controllers are ; involved. Translate takes place according to the "SKEW" factor ; set above. ; OST: db NTRKS ;operating system tracks SPT: db NSECTS ;sectors per track TRAN: TRELT set 1 TRBASE set 1 rept NSECTS db TRELT ;generate first/next sector TRELT set TRELT+SKEW if TRELT gt NSECTS TRBASE set TRBASE+1 TRELT set TRBASE endif endm ; ; Now leave space for extensions to translate table ; if NSECTS lt 64 rept 64-NSECTS db 0 endm endif ; ; Utility subroutines ; MLTBY3: ;multiply the contents of regE to get jmp address mov a,e ;Acc = E sui 1 mov e,a ;get ready for multiply add e add e mov e,a ret ;back at it ; SEL: sta TEMP lda V3FLG cpi TRUE lda TEMP jnz SEL2 ; sta CREG ;CREG = selected register lxi h,0000h shld EREG ;for first time mvi a,SELDSK sta BIOSFC ;store it in func space mvi c,DRBIOS lxi d,BIOSPB jmp BDOS SEL2: mov c,a lhld WBOOT lxi d,SELDSK call MLTBY3 dad d pchl ; TRK: ; Set up track sta T EMP lda V3FLG cpi TRUE lda TEMP jnz TRK2 ; mvi a,00h sta BREG ;zero out B register mov a,c ;Acc = track # sta CREG ;set up PB mvi a,SETTRK ;settrk func # sta BIOSFC mvi c,DRBIOS lxi d,BIOSPB jmp BDOS TRK2: lhld WBOOT lxi d,SETTRK call MLTBY3 dad d pchl ;gone to set track ; SEC: ; Set up sector number sta TEMP lda V3FLG cpi TRUE lda TEMP jnz SEC2 ; mvi a,00h sta BREG ;zero out BREG mov a,c ; Acc = C sta CREG ;CREG = sector # mvi a,SETSEC sta BIOSFC ;set up bios call mvi c,DRBIOS lxi d,BIOSPB jmp BDOS SEC2: lhld WBOOT lxi d,SETSEC call MLTBY3 dad d pchl ; DMA: ; Set DMA address to value of BC sta TEMP lda V3FLG cpi TRUE lda TEMP jnz DMA2 ; mov a,b ; sta BREG ; mov a,c ;Set up the BC sta CREG ;register pair mvi a,SETDMA ; sta BIOSFC ;set up bios # mvi c,DRBIOS lxi d,BIOSPB jmp BDOS DMA2: lhld WBOOT lxi d,SETDMA call MLTBY3 dad d pchl ; READ: ; Perform read operation sta TEMP lda V3FLG cpi TRUE lda TEMP jnz READ2 ; mvi a,READF sta BIOSFC mvi c,DRBIOS lxi d,BIOSPB jmp BDOS READ2: lhld WBOOT lxi d,READF call MLTBY3 dad d pchl ; WRITE: ; Perform write operation sta TEMP lda V3FLG cpi TRUE lda TEMP jnz WRITE2 ; mvi a,WRITF sta BIOSFC ;set up bios # mvi c,DRBIOS lxi d,BIOSPB jmp BDOS WRITE2: lhld WBOOT lxi d,WRITF call MLTBY3 dad d pchl ; MULTSEC: ; Multiply the sector # in rA by the sector size mov l,a mvi h,0 ;sector in hl rept LOG2SEC dad h endm ret ;with HL - sector*sectorsize ; GETCHAR: ; Read console character to rA mvi c,CONI call BDOS ; Convert to upper case cpi 'A' or 20h rc cpi ('Z' or 20h)+1 rnc ani 05Fh ret ; PUTCHAR: ; Write character from rA to console mov e,a mvi c,CONO call BDOS ret ; CRLF: ; Send Carriage Return, Line Feed mvi a,CR call PUTCHAR mvi a,LF call PUTCHAR ret ; CRMSG: ; Print message addressed by the HL until zero with leading CRLF push d call CRLF pop d ;drop through to OUTMSG OUTMSG: mvi c,9 jmp BDOS ; SELCT: ; Select disk given by rA mvi c,0Eh jmp BDOS ; DWRITE: ; Write for file copy mvi c,DWRITF jmp BDOS ; DREAD: ; Disk read function mvi c,DREADF jmp BDOS ; OPEN: ; File open function mvi c,OPENF jmp BDOS ; CLOSE: mvi c,CLOSEF jmp BDOS ; MAKE: mvi c,MAKEF jmp BDOS ; DELETE: mvi c,DELTEF jmp BDOS ; ; ; DSTDMA: mvi c,26 jmp BDOS ; SOURCE: lxi d,GETPRM ;ask user for source drive call CRMSG call GETCHAR ;obtain response cpi CR ;is it CR? jz DFLTDR ;skip if CR only cpi CTLC ;isit ^C? jz REBOOT ; sui 'A' ;normalize drive # cpi NDISKS ;valid drive? jc GETC ;skip to GETC if so ; ; Invalid drive call BADDISK ;tell user bad drive jmp SOURCE ;try again ; GETC: ; Select disk given by Acc. adi 'A' sta GDISK ;store source disk sui 'A' mov e,a ;move disk into E for select func call SEL ;select the disk jmp GETVER ;  DFLTDR: mvi c,25 ;func 25 for current disk call BDOS ;get curdsk adi 'A' sta GDISK call CRLF lxi d,VERGET call OUTMSG jmp VERCR ; GETVER: ; Getsys set r/w to read and get the system call CRLF lxi d,VERGET ;verify source disk call OUTMSG VERCR: call GETCHAR cpi CR jnz REBOOT ;jmp only if not verified call CRLF ret ; DESTIN: lxi d,PUTPRM ;address of message call CRMSG ;print it call GETCHAR ;get answer cpi CR jz REBOOT ;all done sui 'A' cpi NDISKS ;valid disk jc PUTC ; ; Invalid drive call BADDISK ;tell user bad drive jmp PUTSYS ;to try again ; PUTC: ; Set disk fron rA adi 'A' sta PDISK ;message sent sui 'A' mov e,a ;disk # in E call SEL ;select destination drive ; Put system, set r/w to write lxi d,VERPUT ;verify dest prmpt call CRMSG ;print it out call GETCHAR ;retrieve answer cpi CR jnz REBOOT ;exit to system if error call CRLF ret ; ; GETPUT: ; Get or put CP/M (rw = 0 for read, 1 for write) ; disk is already selected lxi h,LOADP ;load point in RAM for DMA address shld DMADDR ; ; ; ; ; Clear track 00 mvi a,-1 ; sta TRACK ; RWTRK: ; Read or write next track lxi h,TRACK inr m ;track = track+1 lda OST ;# of OS tracks cmp m ;=track # ? jz ENDRW ;end of read/write ; ; Otherwise not done mov c,m ;track number call TRK ;set to track mvi a,-1 ;counts 0,1,2,...,25 sta SECTOR ; RWSEC: ; Read or write a sector lda SPT ;sectors per track lxi h,SECTOR inr m ;set to next sector cmp m ;A=26 and M=0,1,..,25 jz ENDTRK ; ; Read or write sector to or from current DMA address lxi h,SECTOR mov e,m ;sector number mvi d,0 ;to DE lxi h,TRAN mov b,m ;tran(0) in B dad d ;sector translated mov c,m ;value to C ready for select push b ;save tran(0) call SEC pop b ;recall tran(0),tran(sector) mov a,c ;tran(sector) sub b ;--tran(sector) call MULTSEC ;*sector size xchg ;to DE lhld DMADDR ;base DMA dad d mov b,h mov c,l   ;to set BC for SEC call call DMA ;dma address set from BC xra a sta RETRY ;to set zero retries ; TRYSEC: ; Try to read or write current sector lda RETRY cpi MAXTRY jc TRYOK ; ; Past MAXTRY, message and ignore lxi d,ERRMSG call OUTMSG call GETCHAR cpi CR jnz REBOOT ; ; Typed a CR, ok to ignore call CRLF jmp RWSEC ; TRYOK: ; Ok to tyr read write inr a sta RETRY lda RW ora a jz TRYREAD ; ; Must be write call WRITE jmp CHKRW TRYREAD: call READ CHKRW: ora a jz RWSEC ;zero flag if read/write ok ; ;Error, retry operation jmp TRYSEC ; ; End of track ENDTRK: lda SPT ;sectors per track call MULTSEC ;*secsize xchg ; to DE lhld DMADDR ;base dma for this track dad d ;+spt*secsize shld DMADDR ;ready for next track jmp RWTRK ;for another track ; ENDRW: ; End of read or write ret ; ;******************* ;* ;* MAIN ROUTINE ;* ;* ;******************* ; START: lxi sp,STACK lxi d,SIGNON call OUTMSG ; ;get version number to check compatability mvi c,12 ;version check call BDOS mov a,l ;version in Acc cpi 30h ;version 3 or newer? jc OLDRVR ; mvi a,TRUE sta V3FLG ; jmp FCBCHK OLDRVR: mvi a,FALSE sta V3FLG ; ; Check for default file liad instead of get FCBCHK: lda FCB+1 ;blank if no file cpi ' ' jz GETSYS ;skip to system message lxi d,FCB ;try to open it call OPEN inr a ;255 becomes 00 jnz RDOK ; ; File not present lxi d,NOFILE call CRMSG jmp REBOOT ; ;file present RDOK: xra a sta FCBCR ;current record = 0 lxi h,LOADP RDINP: push h mov b,h mov c,l call DMA ;DMA address set lxi d,FCB ;ready fr read call DREAD pop h ;recall ora a ;00 if read ok jnz PUTSYS ;assume eof if not ; More to read continue lxi d,SECSIZ dad d ;HL is new load address jmp RDINP ; GETSYS: call SOURCE ;find out source drive ; xra a ;zero out a sta RW ;RW = 0 to signify read call GETPUT ;get or read system lxi d,DONE ;end message of get or read func call OUTMSG ;print it out ; ; Put the system PUTSYS: call DESTIN ;get dest drive ; lxi h,RW ;load address mvi m,1 call GETPUT ;to put system back on disk lxi d,DONE call OUTMSG ;print out end prompt ; ; FILE COPY FOR CPM.SYS ; CPYCPM: ; Prompt the user for the source of CP/M3.SYS ; lxi d,CPYMSG ;print copys prompt call CRMSG ;print it call GETCHAR ;obtain reply cpi Y ;is it yes? jnz REBOOT ;if not exit ;else ; ; mvi c,13 ;func # for reset call BDOS ; inr a lxi d,ERRMSG cz FINIS ; call SOURCE ;get source disk for CPM3.SYS CNTNUE: lda GDISK ;Acc = source disk sui 'A' mvi d,00h mov e,a ;DE = selected disk call SELCT ; now copy the FCBs mvi c,36 ;for copy lxi d,SFCB ;source file lxi h,DFCB ;destination file MFCB: ldax d inx d ;ready next mov m,a inx h ;ready next dest dcr c ;decrement coun jnz MFCB ; lda GDISK ;Acc = source disk sui 40h ;correct disk lxi h,SFCB mov m,a ;SFCB has source disk # lda PDISK ;get the dest. disk lxi h,DFCB ; sui 040h ;normalize disk mov m,a ; xra a ;zero out a sta DFCBCR ;current rec = 0 ; ; Source and destination fcb's ready ; lxi d,SFCB ; call OPEN ;open the file lxi d,NOFILE ;error messg inr a ;255 becomes 0 cz FINIS ;done if no file ; ; Source file is present and open lxi d,LOADP ;get DMA address xchg ;move address to HL regs shld BEGIN ;save for begin of write ; lda BEGIN ;get low byte of mov l,a ;DMA address into L lda BEGIN+1 ; mov h,a ;into H also COPY1: xchg ;DE = address of DMA call DSTDMA ; ; lxi d,SFCB ; call DREAD ;read next record ora a ;end of file? jnz EOF ;skip write if so ; lda CRNREC inr a ;bump it sta CRNREC ; lda BEGIN mov l,a lda BEGIN+1 mov h,a lxi d,EIGHTY dad d ;add eighty to begin address shld BEGIN jmp COPY1 ;loop until EOF ; EOF: lxi d,DONE call OUTMSG ; COPY2: call DESTIN ;get destination drive for CPM3.SYS lxi d,DFCB ;set up dest FCB xchg lda PDISK sui 040h ;normalize disk mov m,a ;correct disk for dest xchg ;DE = DFCB call DELETE ;delete file if there ; lxi d,DFCB ; call MAKE ;make a new one lxi d,NODIR inr a ;check directory space cz FINIS ;end if none ; lxi d,LOADP xchg shld BEGIN ; lda BEGIN mov l,a lda BEGIN+1 mov h,a LOOP2: xchg call DSTDMA lxi d,DFCB call DWRITE lxi d,FSPACE ora a cnz FINIS lda CRNREC dcr a sta CRNREC cpi 0 jz FNLMSG lda BEGIN mov l,a lda BEGIN+1 mov h,a lxi d,EIGHTY dad d shld BEGIN jmp LOOP2 ; Copy operation complete FNLMSG: lxi d,DFCB mvi c,CLOSEF call BDOS ; lxi d,DONE ; FINIS: ; Write message given by DE, reboot call OUTMSG ; REBOOT: mvi c,13 call BDOS call CRLF jmp BOOT ; BADDISK: lxi d,QDISK call CRMSG ret ;**************************** ;* ;* ;* DATA STRUCTURES ;* ;* ;**************************** ; BIOSPB: ; BIOS Parameter Block BIOSFC: db 0 ;BIOS  function number AREG: db 0 ;A register contents CREG: db 0 ;C register contents BREG: db 0 ;B register contents EREG: db 0 ;E register contents DREG: db 0 ;D register contents HLREG: dw 0 ;HL register contents ; SFCB: DR: ds 1 F1F8: db 'CPM3 ' T1T3: db 'SYS' EXT: db 0 CS: db 0 RS: db 0 RCC: db 0 D0D15: ds 16 CCR: db 0 R0R2: ds 3 ; DFCB: ds 36 DFCBCR equ DFCB+32 ; ; V3FLG: db 0 ;flag for version # TEMP: db 0 SDISK: ds 1 ;selected disk BEGIN: dw 0 DFLAG: db 0 TRACK: ds 1 ;current track CRNREC: db 0 ;current rec count SECTOR: ds 1 ;current sector RW: ds 1 ;read if 0 write if 1 DMADDR: ds 2 ;current DMA address RETRY: ds 1 ;number of tries on this sector SIGNON: db 'CP/M 3 COPYSYS - Version ' db VERS/10+'0','.',VERS mod 10 +'0' db '$' GETPRM: db 'Source drive name (or return for default) $' VERGET: db 'Source on ' GDISK: ds 1 db ' then type return $' PUTPRM: db 'Destination drive name (or return to reboot) $' VERPUT: db 'Destination on ' PDISK: ds 1  db ' then type return $' CPYMSG: db 'Do you wish to copy CPM3.SYS? $' DONE: db 'Function complete$' ; ; Error messages...... ; QDISK: db 'ERROR: Invalid drive name (Use A, B, C, or D)$' NOFILE: db 'ERROR: No source file on disk.$' NODIR: db 'ERROR: No directory space.$' FSPACE: db 'ERROR: Out of data space.$' WRPROT: db 'ERROR: Write protected?$' ERRMSG: db 'ERROR: Possible incompatible disk format.' db CR,LF,' Type return to ignore.$' CLSERR: db 'ERROR: Close operation failed.$' ; ds STACKSIZE * 3 STACK: end 1!@6 }0>8>2z&R( :] (8\< 22h2|!\ 2tS:( >~2 ~2:(  !6tS e  ((A8A2A_  A2~2 ~2    A8A2A_   !">2!4:NA>2!4:(R^!FNGy*DMM2:8_  <2:(UQ(:*"o&)))))))˿˯ 9_92O> > >  > > >2: C2*:͇!W[__  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH $ CP/M 3 COPYSYS - Version 3.0 Rev D. Modified for the JET Computer. $ ERROR: No source file on disk.$Function complete$ Source drive name (or return for default) $ Source on then type return $ Destination drive name (or return to reboot) $ Destination on then type return $ ERROR: Invalid drive name (Must be A through P)$ ERROR: Selected disk not on system.$ ERROR: Possible incompatible disk format. Type return to ignore.$ ERROR: Not compatible BIOS revision. $ ERROR: You cannot boot from second winchester unit. $ ERROR: Not compatible LOADER revision. $; Macro Definitions for CP/M3 BIOS Data Structures. ; dtbl - drive table ; dph translate$table, - disk parameter header ; disk$parameter$block, ; checksum$size, (optional) ; alloc$size (optional) ; skew sectors, - skew table ; skew$factor, ; first$sector$number ; dpb physical$sector$size, - disk parameter block ; physical$sectors$per$track, ; number$tracks, ; block$size, ; number$dir$entries, ; track$offset, ; checksum$vec$size (optional) ; Drive Table. Contains 16 one word entries. dtbl macro ?list local ?n ?n set 0 irp ?drv, ?n set ?n+1 dw ?drv endm if ?n > 16 .' Too many drives. Max 16 allowed' exitm endif if ?n < 16 rept (16-?n) dw 0 endm endif endm dph macro ?trans,?dpb,?csize,?asize local ?csv,?alv dw ?trans ; translate table address db 0,0,0,0,0,0,0,0,0 ; BDOS Scratch area db 0 ; media flag dw ?dpb ; disk parameter block if not nul ?csize dw ?csv ; checksum vector else dw 0FFFEh ; checksum vector allocated by endif ; GENCPM if not nul ?asize dw ?alv ; allocation vector else dw 0FFFEh ; alloc vector allocated by GENCPM endif dw 0fffeh,0fffeh,0fffeh ; dirbcb, dtabcb, hash alloc'd ; by GENCPM db 0 ; hash bank if not nul ?csize ?csv ds ?csize ; checksum vector endif if not nul ?asize ?alv ds ?asize ; allocation vector endif endm dpb macro ?psize,?pspt,?trks,?bls,?ndirs,?off,?ncks local ?spt,?bsh,?blm,?exm,?dsm,?drm,?al0,?al1,?cks,?psh,?psm local ?n ;; physical sector mask and physical sector shift ?psh set 0 ?n set ?psize/128 ?psm set ?n-1 rept 8 ?n set ?n/2 if ?n = 0 exitm endif ?psh set ?psh + 1 endm ?spt set ?pspt*(?psize/128) ?bsh set 3 ?n set ?bls/1024 rept 8 ?n set ?n/2 if ?n = 0 exitm endif ?bsh set ?bsh + 1 endm ?blm set ?bls/128-1 ?size set (?trks-?off)*?spt ?dsm set ?size/(?bls/128)-1 ?exm set ?bls/1024 if ?dsm > 255 if ?bls = 1024 .'Error, can''t have this size disk with 1k block size' exitm endif ?exm set ?exm/2 endif ?exm set ?exm-1 ?all set 0 ?n set (?ndirs*32+?bls-1)/?bls rept ?n ?all set (?all shr 1) or 8000h endm ?al0 set high ?all ?al1 set low ?all ?drm set ?ndirs-1 if not nul ?ncks ?cks set ?ncks else ?cks set ?ndirs/4 endif dw ?spt ; 128 byte records per track db ?bsh,?blm ; block shift and mask db ?exm ; extent mask dw ?dsm ; maximum block number dw ?drm ; maximum directory entry number db ?al0,?al1 ; alloc vector for directory dw ?cks ; checksum size dw ?off ; offset for system tracks db ?psh,?psm ; physical sector size shift ; and mask endm ; gcd macro ?m,?n ;; greatest common divisor of m,n ;; produces value gcdn as result ;; (used in sector translate table generation) ?gcdm set ?m ;;variable for m ?gcdn set ?n ;;variable for n ?gcdr set 0 ;;variable for r rept 65535 ?gcdx set ?gcdm/?gcdn ?gcdr set ?gcdm - ?gcdx*?gcdn if ?gcdr = 0 exitm endif ?gcdm set ?gcdn ?gcdn set ?gcdr endm endm skew macro ?secs,?skf,?fsc ;; generate the translate table ?nxtsec set 0 ;;next sector to fill ?nxtbas set 0 ;;moves by one on overflow gcd %?secs,?skf ;; ?gcdn = gcd(?secs,skew) ?neltst set ?secs/?gcdn ;; neltst is number of elements to generate ;; before we overlap previous elements ?nelts set ?neltst ;;counter rept ?secs ;;once for each sector db ?nxtsec+?fsc ?nxtsec set ?nxtsec+?skf if ?nxtsec >= ?secs ?nxtsec set ?nxtsec-?secs endif ?nelts set ?nelts-1 if ?nelts = 0 ?nxtbas set ?nxtbas+1 ?nxtsec set ?nxtbas ?nelts set ?neltst endif endm endm ECopyright (C) 1982, Digital ResearchY BNKBIOS3 SPR F700 0900 BNKBIOS3 SPR A900 1700 RESBDOS3 SPR F100 0600 BNKBDOS3 SPR 7B00 2E00 60K TPA $$$$$*N2L:y>Q:ͧQy2L"N{NM2L :y>Qk&) ~#fo( ++N^#VQxy!BsN1V!M5 ,6 !~'`8w+~<'`8w+~<'$8 w++4 #~QͧQ=>A!{>91( ( (?80. 5"-floppy-version.˪@_@?@_@ E  /7P E !#O!~(4*w!R$S{M>2s1!~"(4*w!RbS{ME (y >@>P (y 4::! >(> !~(ɯs1!d}2<<2!͘!!(5[!R Sͱ(>!(5[!R S (y (yD_!c~#F~G#N#A>!p}2!h}2t(>2I(>2:I͇2x2!͘ xx:Q͇2sx2y!p! W! K>QCCP COM CRT LPT CEN GRAPH Įď@ }ϋ2*!";< !7>Q>Q!?, W!S" Cx> >2*||o&~~!z!͘x( >>2{C|2y!z> (>w  >w͓ͤ**)܊| **)܊ | ~O #x:{ ɯ2{!B!***)0Y(l| ***)>Y| h&)))H~͊~Ĝ >////////////ͭͦ1ͭ>Q>!2"*2"áäýË^ÎÓØïõ@ã6é;ã ةܩYßO+2;///Ã1Oj$|{Ãà à ÃBB+"}{_}o>2~77ø~7"9:OG#Q{ozg# ""!2*%DM**ѵ+)) H~#+}#<:<ʲ<77:<ʢ=2(*f*(}DɯQ{"(>QKQKQ>Q"%Q!*$K*"x!*!@$@hK\K:K ~#~ w*NK*NK^#V#N#F!x>QGQx3ڰbڼqҼo5p5"""*!yb! ~G*!NKկ2}!,"**NK6 :+OK2$^#V#N#FxNp:$p:Gjxj Y# A>QFQKK{<<ʽ! ~6 69BK! OSY$Nwy!"(9"f1f! Ҕ2! ~#foCOPYRIGHT (C) 1982, DIGITAL RESEARCH 151282UVV.W=WQQRRSżSԼTTUMM N/N>OMO\PkPzHIIJJƻKջKLLDE!E0F?FNG]GlH{@@AABǺBֺCCD;<<"=1=@>O>^?m?|78899ȹ:׹:;334#425A5P6_6n7}//001ɸ1ظ22*++$,3,B-Q-`.o.~&''((ʷ)ٷ)*""#%#4$C$R%a%p& ˶ ڶ!!&5DSbq̵۵˿~檩˿#6HGg$kxxmt!90$`tkeuggzp|oj ϋ}ŵ$(ϋ y(ϋy(ϋ y(ϋy(ϋ6!fn^#V ~O#~U>6w4~ ݖw =F>:߳G!~( =  wRyO>"S!z!͘ >} ۯɯ2Lww~ȯwn f n D6#~:s=_Gn f wO F2ܳ/ > !z!M͘> /(ްWްz/>y!=͘> !>կNF:޳!0 ) 0 ~=O 0<ݶ/2ٳ|/2ڳ}/2۳~2ݳ~w >c͗/̫sw1=qܱ ͋ͦ/ >c~w =(*B#"Bʬ F6#t 66"@-/ > !z!~#fo >"CBCR2޳q:pwsw1= qͅ##~w"7sw1=qܱ( ~ ͋ͦ  C "! C0".!+>!z͘x((:೰Ԯ>> w(!~_  90>2~|:> y~Ԯ*F#"F(>ԮWy> ~~ F8 >C! #!S~G >>S*H#"H>S*J#"J!ŵ>S>NF({ !4~AO !Fnf!O BIOS error on : track- (A=abort R=retry I=ignore) |:ct>~w ͗ =ĭ *t ~m !~w ͗ = t ʬʬ ˯AIR >/<033O _ W ͋@ $6B6*u:xG xײ~ w>2Ly{wm~w =ͨF6#t 66~s Dm ?7! ~#fo~w~w#~w#~w sw1=qܱ( ~ ͋@/B[u:xG xײ~Csw1=q~ ;ܱ ʵ!~_q:pw!Rwww! 62Lsw1= q6͐w(6ͅ#~w#~w#~w"LƵ髤L 4нȵ髤L0Tʵ髤LOj,&"*(":*2I:+2Q!0p#!d|G![!CCP.COM-error. Press to retry CP/M Plus Version 3.0 - Jet-髤L~#foCqCsCu:y2xi`#z+n&*o&)~#fo~#fo2p2wɯ* "*"" ( !""*$"*1ީͣ y #:(*[KS"C!^#V#{(++~2py2o+V+^ Øy2oi&) ~#fo{!~2p!9bڗ>2#×:#<֤2#*!""++"29Cw*{}<^#Vz!c!>c! Jw*q~69!͐=‡*":*}®:=::<>2*i^#V+ d!K*}@*)): K:) O "!w [O?WGzO:VxGyOGxwq*}}ʴ>2d:#Ϧ>29য2~2#!   )xð*}*}"*x"xm*^#V* s#r**s#r*:Y4Y̓**~#ng* s#r ^#V랉a##)0"xx!"""XC*~<Υ*":!::9*"x"*"g*3:= :Oi :=H:Gi a6:G/O**W :T=ҍ aʚ~¤6*:X)!:T>qk֤!:6>X*{Q:_2{2Ē"͂"X~<¤#cdfg!"()*N!r)!N!{)z<*)"!":X*:w:w#:w*2~*}D̓¡>2ͱԛߚ?~¾¾ʢƢ>w͙=2͜:wÚ~̓ʑpá!6NwͧBpͧȧÚgsr͐-͜ĊͤS)_ͤ̓~?w͐s-?F͜pN͆p# Þ͐*6!¿?~p*6 >2ͱݛԛߚͷw*oq͋"@6ȧ͚Xͤ͋͗wO~<: g~w#w#6##)͋@ * g~?G++!o#~>T}! 6**#K"G*~ xr͐-xą@˘7(͚Sʀw: :<RHͥ:>~c!o#~E^#V)G#~#~!~ b k##N#F#^#V#~#fo~o2{2g*wގʪҢÞ+}*#}o|g:O*s#r#w!~w/~~@w/~/Hͥ*e>=)_g:0"ök*w)*c)-}ͤÀk*s":;:r2͚΋ù͚΋˜͚}/_|/*eW}_*c"e}o|g"c>2{—>2—͇ͱ* «>2͙wBp+Ҟ:w͚AP{ 2W>O2ø}R*e):r͚΋c2ZT͐-ڒ3͗@YsY̓YכYͅ:ߚAsҞ:@Ҟ@Ҟ$͚̓A؋=:<~?¯kÝ?~?ʾZT͐ڝ*>o"͒"!Í:Oݏ"Ý}6͚ ~2Asv@NN~v$̓W+vw̚v$̓rrͅ:rߚ>2+A@2r!Z2!"ög:2T͐-:ʹ>2<2ڒ!w: >2*6ݏݒO~<w:*)@ u:G*g`~!x_<_@*oy<:/G?~##~? 6K@?F6##N6⛯2p##q:#*~w>2*p@! ~*"v@*w# ) 6#̛͙N#FxT]## #~ ȷ  *4# ' 4! *~^ ^33G# Pv:dv6 y2@ !ף)#w*~"Қ!Fw䚨Қ̓Қ:w̚":>垯2̓*~wć"̀!~$6:03i"!~6*e>=)Q!QX@˘ >2 ˘!!q#p#w2wW*e_3ҫ-!s:!xQ*:<œ. ʩ.ʩA܈rr##s܈<}rcN! ~态O>G~G!~G~o>_yG~.|°! w:ck[!x?[! ~ʤ͆[͗PPvqO-á=.:<ʰ! Vq##~_@wͶ:WMںʛ>úͶ >TJ:!ʷ͞x!Ǘw4 ϗPWޗP܈ÂՈÂ*!!~~#~O~#FsO s#r:(„y==„*!^W*y^#Vx7=2wͼկw#KWK*"J T͞*:["+SX:ڜq:ʺ!ʵ>2܈ͤ2іO ̊DM͸}ޖ>r""2:2* :::29:>:>*ڈ>F6:_/G:ʧ:ڨ|OͤG:_O̊̊zW{•|:*}|BKN• zyG:!vq:vՈvMڂ?Ͷ >T͓Â!">Â:G:O:h=27ryy/W!:l=:<>w##~2 4~?ɔ̓¹:<ɔɔüޒAX2rK:w++~=wv4͗O5:2X!"*>o+"v *!b"ݏ": r#~?w#>r# L=J Lv wȧb܈?~O ͆ڔ†wŒ~è# # x ͗w ٓړٓړw@ ~wb͐Úݍ!x>w~6:6~#+w#w+~;wɯ2KOFq-yl?Npg:ʓ~( ȧˆʀHÈ2xą ):@ΒO~#w͚ʀô̓b_++V@* )͗Os++r~Gw#* #~$%+@*9>  #>? ;*~ w-xąH"0 *ĊHEʀ@~›:6¦w͚̋ȧÇPY*{zBKNyʺ Nú2: *~w *" ݏ2>ʄ@~k:(s~*9~Ês~ԛ~ͅ<G:<ސ2x# W:<­:22G?>Grx~:2Ô##~*$*">2̀2kºʺ**iҺ@:O~퐯2~WW:2Ôyʛ?ʔx ʔ |̷ǐÔN:r:/GyOOA +¬ ¢y2:x¹o&:W>OͫE:ڟ?N/*"y2ͦ>2 ݏRXގDM*w6# x *ow**ws#r̀*i6#6*}"j@*|<ď>!8>8> t>nͦv8 ~*ownT] KKͦގ*w"wͦ"w@ :ÎNɎ N#Fy؎*}|h#ð*ͫ# 6*q@!"@**#":&2͒:È0:+Òy<_W`iͫDM*w ~bNpwގDM*we ^#V#~2>â9͆>!"*y³*X*ÿ͂"*g*K!~<:wb##>w#wĊ> r!~#22Zw*q>ww:c *#*is#r*:!:)e:O!*c:Oͫ}@2æ ~á*g:o$*~K6?~wKw**i{#zir+s{O:w:Ғ4~:w?r##rp# ä |g}oì*g #G ¾1*q:*w***> r 2":O:G2!w*~zWw+ !z?#~*!* *G!O~2~m͗O~t>2?:2g͝DM*0MD"!*MD$:Oë!N: «G>O: Šù*Ċ :ڊn` ~#foͤ2O̊"}:O*"!s#r#p*kN#F*m^#V#F*:O}|y9*+"*}|yP#9**DM"*ks#r*ms#r#pyox*kw#w*mw#w#w>2'å2*OͶyڲò<*eͲ:0!::ò2*>*ͫ"4#4#4)7 #  w#*J|^#V#"i##"k##"m###"o#"q##"!s )*s!)*|!6~67rrorFile Exists? in Filenameòò>2a.":2:<:55;:2ɯ22{_zW{_zW )7CP/M Error On : Disk I/OInvalid DriveRead/Only FileRead/Only DiskPassword E)"!z<~rs^#V#N#FxN:oʲ̀õ(# Þry< <<%z~r~ͷ~r6r9rMDÌ:o!6!h: ʚnt2 r62>rz<*9ʌ^:—~x )~:*:ńń>*(+"(w++2+2+ɀp؀!" >2+2*jx.#NzW::!2W!5=^x^z:m:*;#wO:͂^2¢ů͠ă:!ڽ*(~ׁ݁5WèՃ؀jׁM2ͨx΃*(+w"(j !%"(^-:*$P:<\:W:2xM s:<9>2:*9x~+q’x2:**&~2+o#"&!+6Mł:W:2x ͺ*(+"(w  :܂>2*2:*(:+w"(ͺ:G::+̜2 5*(~o#"(Mš*(~`Uoj*(~#"(Ñ!*~6s!+6:+‚xoڊ{2Ó#w:2.+:.2-!%"(2*!†"&!*~4:2-Ԃ:Gͳͨ^2+>2:2*N#G2 2GH)+6:2,:!- :,!+*(~L#Bxz:*:*(~ʓOr  ! O(Ì*(~2**}ʷ~!#¶!""÷~:_:*(#w΀xH!†)6"&:!† x5~y 5 6y~(^@O:=7:y :I :=e: zz#͂:!  G:Ҏ>xʝʝw>ɯw̩z:»!>wɯ:=zxzz::G:=/ͽx:Āy!4 šn!6@G:x~: P:<~: P n6 t6! ^6 t6u:)~<͠^!Ó~*"r~*r~"ÿ<:g:!͐~*f~}D! ~6t!rͷ~~~O(~^~~~  :Function = File = !,~$"h!9"f~!~ ͉~:2t~™~:!~=H~go:O*;{*͂:A2=/}:}}:0! ~dگ}61#d ڸ}ï}p#:w#6 !~6:}6 *#!~)6.#)͂}} O(}BDOS }}> w|M} || 2}*7}w#6?#7} .,:;[]=<>|!?}]}45#R}a{i}_p# l} s} s} l} l}s}:¬|M}|A||g>:N ,:h : Rxf0V jo<- 'i0)d`@!M#%y`ݒ{JI;%%Ydn0ڄ-V<|fހfQfݠ6m]YmrXHk!W!*UC6(9``* º`+`1YbGV ^G< E`Y jV_0H05O#+v: s خSx:q$Of`R(Ԅ.- ͼ{>X0Y""f@VmjYVlUyBlڰ :0rP1nʲLJ5cAU %Ja`ͼ` `@k+T$ dp#t f`C՛V]b3jH6'p0!!*WH|#+x[݀:a v@?쁲[*@`^2K6meRq}Bwٴj^2! ;4f@RzKƬ;ͽ~ â:!~mU0wz@uB@+͵͸ja] mfݠ6ma`Q2XCp̃\Ub4f07 JYM"3i(2GV ew*a q='@DuO#?(W ;k+6 ~PV BP@2!~sǣ+t9erl[U;D +Wx z2AEwvlfuhٶI,V f`CMa 2YMWx!y@b+ó`@ @-U Uw[AF: c6B*OU > 0"[-Ke%ـlDp"[<-Ki%pm@D"[T-Kl%A@mD"[n-Kn%ЉmD"[-?帡`n@D$"[-Ks% {tX$@UaUzjH+{P@3k(3jK4K6`JYG&ml fհmIW, x@(dz¦.U _6J XKUw(A^Od`@F*K՛v#ץf@#sFI'1_ ÕCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321;Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$::Enter today's date (MM/DD/YY): $Enter the time (HH:MM:SS): $Press any key to set time $Strike key to set time$ERROR: Requires CP/M3.$ERROR: Illegal time/date specification.$1_ 1_ ͓" * }! /* |! Hs1" 1X" :]C:]C* DM C  ͜o&" !]6m:] $ m:]S"͵.f  -=d >!e Җ. f -\! "{ *{ "} ! 6*} ~2 .*  -Ž͵.f   -§d >!e . f -! "{ *{ "} ! 6*} ~2 ͵͜o&" .* ## - )2m.  -*! 6 ̀ 2͵͜o&" .*  -ZI2ÂR͵1_ j͵v !_ q*_ &!a p+q*`  !c p+q*b    ͥ ͥ! q: <2 O*} : w! p+q* ~$7* : <2 O*} w* #" ! q: 0O! q: O8: O8! q* MF:! q* &! ͚ K8* &! ͚ M8! q* Mr/: ±: ¿! 6: <2 O*} ~2 : ͨ: 0 ! s+q! 6ÂG: Â: : H2 /Â: 0! wAÂͨ! : #~! HaÂ: ! s+q+q! : ʀÂͨ* M* ! s+q: 2 : * &) >; H: =: * ! ͚ ! s* ͜ " : ! q* &! ͚ ))))* &͜ } =2 : 2 .! 6;* & ~2 /* e2 /cNe2 : ! : HxÂ* &) : N_!m͹ ͒ * & N͏ * M* ͏_*{ #q#pO*{ w:;eO*{ w*{ ~: : :;e2 *{ 6-:;eO*{ w! s+q: ! ! 6N!m" : [!n"   h  +s#r! 4E! 6 >! һ: =2 ҝ! 6* &) : ͎ ! ҸÃ*{ ~2 *{  ~2 *{  ~2 *{ #^#V" +!͚ ! s@! 6: >;! H ! 6~* &) : ͎  ! s+4: O! DM  * M͗* M͗* Mr * Ma* Ma* MF! p+q!" * "{  "} *{ ~° ͼ! 6: *{ ~~H ! 6*} ~2 * &*} " Â! 62.* DM -  ̀  ͥ! 6>! B * &  Nͥ: <2  ! r+s+p+q+q! 6: =! ڊ * &* * &*  ʀ >: <2 W >_ogDM!>))덑o|gҳ =¡ DM!>)) = O{ozgi`N#Fogo&og_{_z#W01bCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321NAMES~VALUES~HELP~CON:~CONIN:~CONOUT:~LST:~AUX:~AUXIN:~AUXOUT:~CONSOLE~KEYBOARD~PRINTER~AUXILIARY~AXI:~AXO: &+07?GPXbgkXON~NOXON~NULL~50 ~75 ~110~134~150~300~600~1200~1800~2400~3600~4800~7200~9600~19200 #'+/49>CHMRWCOLUMNS~LINES~PAGESIZE[]=, NONE 50 75 110 134 150 300 600 1200 1800 2400 3600 4800 7200 9600 19200"$*&("*&(INPUT $OUTPUT $SOFT-BAUD$SERIAL $XON-XOFF $Error at the '^'; $Error at end of line; $Invalid number$End of line expected$Invalid delimiter$Invalid option$Baud rate can not be set for this device$Invalid physical device$Physical device does not have input capability$Physical device does not have output capability$Physical device does not have input/output capability$A NULL device can not be assigned to CONIN$Ambiguous assignments to a NULL device are not allowed$Physical Devices: $I=Input,O=Output,S=Serial,X=Xon-Xoff $  $ Bad Logical Device Assignment; $Physical Device Does Not Exist$ $File$Null Device$Current Assignments: $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $LST: = $Console width set to $ columns Console page set to $ lines $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $LST: = $Physical Device: $Baud Rate: $Characteristics: $PARALLEL$Requires CP/M 3.0$Device Reassignment Not Supported$Enter new assignment or hit RETURN $1b1b͏}0͏|HX "g:>gH|!"}Z :: H:H|b>g–X͘2e͘2f.x*gDM -²A/;SX }h2i !~6 *i& 6~A/!l6:i!l5*l&~ Nͬ *l&~ w:l<2l :i2dbv!q*&! p+q* ! s+p+q* : w#6*  * #" N#Fy ! q: 2!61!q:2!61!s+q:2!6*&"1!r+s+q:2!6*#s#r1!q:22!q!6*& > >*& :R :!4, !r+s+p+q+p+q͐ !#6 *~ *~2#* M# 2!'6:· :'ڪ ú * M# 2Õ v :24 :22&*~2$!'6*~2# *~ P *N! ** =2%!&D !'6!6:&!A :': !4# G *64 *:$w:}{+s#r͐ :z *}#"} !6:#2(O* ~2*&*: !(4*:(w*&*: ¿ *(&*~2Ñ *6*}~2 ̀ :2!!6*}#~2 !!4N* : !'6$ *!&*: $ !'6!4N*} ~2 *&*}~2 * M# 2:>!H} !4N*} ~2 * M# 2L :2}{#+s#r*}N# 2!« *}#"}Ð !)q:)a :){ :) :) H H!-s+q+p+q:-=2- **:,w**#"* !.q!76*b"3"5:e( !e6(*d&*e&͈!1s*d&͊!2s:.:.Ha *}+"}p :}++s#r !/6:1!/ږ *3"5*eMS !/4x *2MS :7ҭ Xó /X:e?Ҿ *.M!1 ^#VFXG UXG jXG |XG XG XG XG XG +XG aXG XG    ( !8q!06:8!0{ *3NH*3#"3!04\ !06:8!0ں *5}§ !76^Hì  H*5#"5!04ƒ !;s+p+q!"<!;>w *;M!<+s#r*<9+s#r!>q!"@}2?>!?3*?&m ~,*@DM*?; "@!?4*>M*@!Bq!C6>!Cp*B&))) *C& NH!C4H!Dq*D&)))  ~2FO>ҕ!F6!E6>!E*F&Ͳ *E& NH!E4š!Gq!I6*G&)))  ~2H2HIH!I4:H2HOH!I4:H2H'SH!I4:H2H>XH!I4:IR H!I4> XX:e2J(r!J6(*J&!͈!Ls+6!J6*K&))) ~  *KM? H*KMq H*KMX!K4+~!L Å!J4Ê!Qp+q:e2c(!c6(:c _!͈!es!c6>!c/*P)"P*c&S w!c4 !c6*c&))) ~X:cQX!c44:c2f!R6!d6+6>!c*c&S ~:f!cҝX%X !R6*cM? H!d4:e!d6 DX!c4k:b!R6OX:RTX `X"Ͱ"gxX*gDM$Ͱ"gX*gDM&Ͱ"gX*gDM(Ͱ"gX*gDM*Ͱ"gX*gDM !jp+q>!Ҁ>m !k6:=!kڹ*k&*i*k&m w!k4!k6*k&))) ~ !l6>!l *l&m *k&))) *l& !l4:k!k4>>þ>!sq*s&)))  ~2u!  ~2v!6!6::HHUZ :… :’ :°:u*s&)))  w::u*s&)))  w>!2:2:u2t2t *s&)))  :w.x*g -*s&" "wE.x*g -=S!{s+p+q>!{_ !"|!~6:{!~ڵ*y~0*y>9Hҏ !|ͧ*y~0_"|*y#"y:~<2~j>!| *|}!q*&!d͈!s^!dͲ:!s^! ͈!sn&ͫ:!s>!":0OH>!>#H?:0OH:0OH!6!6::HhZ :… ::ʝ hZ :}+DM*I=2*:: hZ :}+DM*I=2*S͘2e͘2f X:e!g:"O!C ^#VXUU$XUU/XUU:XUUEXU "+.7:*MͰ"*DM :2::Hқ*MS:::H:H: HI : !6!6UZ :O! ~2:J:- G:"= G*M!6#6>!p*&m 6:<2R:/:}+DMn2:— *&m 6:±*M#::H:*}~HH!6:*}~,H*}#"}:/UZ p::Hd*&)))  >\" $ a ::Hҩ*&)))  >¡& ( æ :":&H*&)))  > *M *&)))  >  *M !q*&)))  ~2*&)))  ~2 PX*M? cX*Mq vX!6>!:2¸*&ͫ DMX !6>!ڵ H:<2:X !6>! H:<2:<2m!p+q::H!6$!6*DMn2:< :J*M:\*M#a !6!6:€!"b"}Ï!"}+"b+~2dZ ::H:H!6!6::H:}+DMS@::S @:7:/4 @sS!p+q*~ *~ Hk*#"G*~w>>_ogDM!>))덑o|gҡ =^#V))) DM!>)) =¹_og^#V) _{ozgo&og_{_z#W~16OCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321ERROR: Illegal Option or Modifier. $File Spec Limit is $ERROR: Illegal Global/Local Drive Spec Mixing. $Requires CP/M 3 $ERROR: Options not grouped together. $ERROR: Illegal command tail. $No File $1616|27}27:70:7H҂0uÅl92888,T28!868͗6:8:80u:8@I #0uä9 ͉!8͎28*8M)*8"8!"88͎28!86>8͟6:8HҌ!\6?\͢28!"8:8n*8#"8Ͳ28V*8DM!*8) !ͭ6Ҍ!86!86!"8:8*88*886>~6:8:8/!8H͎ !86!96:8͌$e.8͎28×*8"8:o9/:8/HB0uv o&!8q*8& !8q:828!8681m!8q:80/>9!8/H!8r+s+q+p+q*8>w#6!"8}28:8!8!8:8O*8 N~>*8!8:8O*8 ~0_*8C66+s#r!886+s#r#4¸>!8s+p+q:85*8>X6+s#rL*8*8M!h6\6+s#r!8p+q!86:8!86>~6HҊ!8n6+s#r#4X:8!8p+q*8N#FM28O>Ҫ>!"8>!8*8M!8d6+s#r*88͸6s#r:88͗6:8H9 :8**8#~A!86!*8#~D*8##~IH9!76!*8#~D*8##~AHc!86!86!*8#~Eu!76!*8#~F«*8##~F’!86è*8##~U¥!86è? !*8#~G:8*8##~028*8##~0o&<6*8 ~0_!8s:8/>!8/H*88? !*8#~M*!86!*8#~Ny*8 ~XI!76v*8 ~P^!86v*8 ~Ss!86v? !*8#~R*8##~OHҞ!76!*8#~R*8##~WH!76!*8#~S *8##~Y!76 *8##~I!86 *8##~O!86 ? !*8#~X!76!? 86 *8#~Lz8:8 t*8#*8M8͖n>8͟6e? 8q? w? 6 *8#~Up 8:8:7 Hҥ? :88͗6Hm *8#~A*8##~LH!"8d :8 :8Ha :8 *8#~0287 *8#~0o&<6*8##~0_!8s:8/>!8/H[ *88^ ? d ? 8å6 *8#~D*8##~R~IHH3 8:8ª ? :88͗6H0 *8#~A*8##~LH !"8B86+s#r' *8#~A/>P/H$ *8#~A_8' ? 8ê 6 ? !860u:8  . *8# *8&C68  -o  *8&C68  ~  *8&C68  ~ H  *8&C68  6  *8&C68  6*8~  *8&C68 6 *8~= *8&C68 Hq:8<282 0 d[108:7!7/M !76#6:7!7/a !76+6:7!7| :8y !86Ä !76+6:8·  *8&C68  6 *8&C68 6!86>8͟6 !86:8=!8  *8&C68 ~  *8&C68 :8w *8&C68 ^8:8<28 t !86:8=!8t  *8&C68 ~ *8&C68 :8Hj 0u:8<28# >8͟6Š K_8>0!7 :8/ 8͗6 To&"8>8͟6 !"8 state8, char = $ state7, char = $ state6, char = $ state5, nxtchar = $ state4, char = $ state3, char = $ state2, char = $ state1, char = $ startstate, char = $!8p+q!86*8&*8~ ~ HҞ !84y :8!8q:8[:8]H:8(H:8)H:8=H:8,H:8H >>!8p+q!86*8#DMn 28O>G*8~!8*8&*86 *8& *8"8>!8Ҷ:8=O*8 N͢ :8!8O*8 N͢ HҶ*8+"8*8~<:8!8=Oo:8!8O*8 DM*8 -*8&*8~"!86:8<28L:8=O*8 ~ #:8=O*8 6!8p+q!86*8&*8~ʇ*8&*8~a/*8&*8>z/H}*8&*8~ *8&*8w:8<28/!8q:80/>9!8/H!8q:8A/>Z!8/H:8<28O*8 ~28*8& *8~28!8q*8 ͭ6:8<28O*8 :8w!8q!86*8M͠/:8$H*:8*8M͠*8M͈H:8_H:8$H:8!8/Hy*8M͸:8<28**8M͠*8M͈H:8_H:8$HҴ͸:8<28y*8 6*8 :8w:8!8q*8M͠*8M͈H:8*H:8?H:8_H:8$H!8q:8!8w*8M!8:8HҲ:8*¥:828*8&"8͸*8Me:8<28͸M!8:8z*8!8s>!86!8:8+ښ?:8<28*8!8sì*8M͸>!86> !8*8&*86 :8<28º:8::8A/>P!8/H :8A*8M͠:8$H:8_H:8*H:8?H/^*8~^>/k>:8.“͸*8Mғ!86/ғ>*8 6 *8 6@>!8q*8M͈/ҹ>*8M͈*8 :8/H:8H*8M͸*8 ~<*8 wù:8H:8DH:8BHM*8 ~!8J*8M͸*8 ~<*8 wM>*8 6 >!8q:8\h>͸:8\:8H*8 ~ Hҭ*8M͸*8 ~<*8 wk:8\:8H͸í:8\>*8 6͸>:828͵>:8=28͸!86 * Y/* ͦ/*>>:8,:8)H:8H]*8 6>v*8 >*8 w>> O>Ұ*8 >*8 w*8 > ҭ*8 6 >>:8,:8)H:8H*8 6>*8 >*8 w>>:8*8q#p>*8 6*8##q#p>:8?  *8M0:8K:8]‘͸:8,:8(H:8)H~͛:8Š/ð:8 :8,HҰ͸CC:8  *8M0:8:8 :8,H͸ :8)͸)>:8   *8M0:8<*8 q#p *8 6>-28Jʹ>:8c  *8M0:8(r͸ :8Ҏ*8Mq#p *8 6>-28Ҝ)>;:8Ҷ  *8M0:83:8!9w͸!9~,~ HC3!9~]0:8(:8,H:8)H͛3:8+3/3!9~=?M3>3:8Y"  *8M0:8u*8Cq#p *8 6>*8 :8wO>Ҋ>y28Ҙ͟>:8ұ4  *8M0:8):8H:8͸:8=28ñ:8[͸C:8 :8,H:8(H+:8($:8<28͸//:8EF  *8M0:8a *8 6*8/q#p>:8(v:8<28͸a*8 :8wO>ҋ>ͳ28ҙ͛>:8@»!86͸X  *8M0:8:8)>:8(:8<28͸/:8[͸Cͳ28͛>!8p+q*8"8*8##^#V"8*8 ^#V"8!86!86͸!86 *8 6*8 6*8 ~^*8ͭ6t͜28*8/ͭ6Š/28*8Cͭ6 C28*8Mͭ6¶M28*8 ͭ6 28*8ͭ628!86:8/*8 6*8##ͭ6*8##:86*8##q#p!8p+q*8"8*8##N#F*8##N#F*8##q#p$*8q#p Scanning Directory... $Out of Memory $Not Enough Memory $ !8p+q*8͙͐28u! 9r+s+p+q+q! 96:9=! 9$* 9&* 9>* 9&* 9>H~?H>! 94>*8>29!8f:8A>!"9*99*896>~6f>>8͟6:9H:8HҘ*98!96:8=!9 *9&C68 ~:8H *9&C68  ~:7/ *8# *9&C68  :7/!94:7!96!96> !9J*9&*8>!9w!94(:8!9wwO!9 "9O!9 ^#V"8!96>8͟6:9/H*8*8> *8#*8#HҼ!96*8 "9*8 ^#V"8t>8͟6>>*8~!ʡ/ҡ*8#DM!"99͢6>89͒6>*9"9"8*8#"8. *8#*8# -B*8>*8w *8 >w#6*8 w#6*8 w#6*8 w*8 w#6*8 w#6*9*8s#r:9#*8> *8~!  *8 ;2*9 9͗6́6> 9͗6+s#r. *9*9DM -*8 *9s#r74*8>147>. *8#*8# -F *8 *8 ~*8 w!96!96K2>~6~!96!96>!9Ý:9!9w҃*9&*8n&"9:9*9& *8~9W6+s#r>9͟6:9<29Ï>!9ҍ *8 ;2<_*9&C6*8 >;2H͈6<0 *8 *9&*9&C66*8 >;2H͈6 *8 q#p*8 *9&*9&C66*8 q#pR08͗6"9!96>!9 *9&9) >w#6:9<29¥ *"9y2!86!"8"8!\6?\͢29!"9*9~!!!96 !!96:9ʈ!:9o&"8:9?!*9&<6a "9*8~|!*8#"8*8~ f! *8 ~28|!'|!/|!l0ͻͲ29 !!:"8;͗6Ҥ!|0u Sort Stack Overflow $Not Enough Memory for Sort $ Sorting Directory... $! 9p+q*9))))*9)) *9) *9 *8 !$9r+s+p+q!%96> !%9m"*%9&*!9>2&9*%9&*#9>2'9Hf"!'9:&9!%94-">!-9r+s+p+q!l96**9"49*,9"69:l9 u$*l9&))49 ^#V"*9  ^#V",9!l95,9*9͒6r$**9".9*,9"09*,9**9r6)*(9N#F!"909.9͒6#*.9)*(9N#F!"8*8DM*9"5#*.9#".9*.9)*(9N#F!"8 #*09)*(9N#F!"8*9DM*8"s#*09+"09*09)*(9N#F!"8G#09.9͒6#*.9)*(9^#V"29*09)*(9*.9)*(9N#Fq#p*09)*(9*29s#r*.9#".9>!09ͪ6#*09+"09"*909͒6.9,9͒6́62$,9.9͒6)$!l94n&))49 *.9s#r*l9&))  *,9s#r*09",9o$09*9͒6i$!l94n&))49 **9s#r*l9&))  *09s#r*.9"*9÷"Ë":l9ʆ$!0Ë$!96*9"(9>8͟6Ң$(99͒6r6!8ͭ6$!0!"m9*8+!m9ͭ6$*m9)*(9*m9s#r*m9"m9$!0*8+p"!96 Name Bytes Recs Attributes $------------ ------ ------ ------------$ Prot Update $ ------ -------------- --------------$ Access $ Create $ Press RETURN to Continue $Sys$Dir$RO$RW$Arcv $ $Read $Write $Delete$None $ $Directory For Drive $ User $: $k$ERROR: Illegal Format Value. $ERROR: Date and Time Stamping Inactive. $Total Bytes = $ Total Records = $ Files Found = $ Total 1k Blocks = $ Used/Max Dir Entries For Drive $No File $'2v9:v9 ''2v9':v9+'u:8W'*8+:w9͈6W'%0*9#"9 '!w960!w94*8 ^#Vx9<0*8 {9o0 *8 ^#V~9<0*8#DM10*8 N#F'[1k00*8 DM10 *8 ~'%0'%00 *8 ~'%0(%00:8+( *8 ~"(%0((%0Þ( *8 ~@(A0C(0*8#~U(10X(0*8##~k(20n(0*8 ~҃(30Æ(0*8 ~қ(40Þ(0*8 >ͪ6l)0*8 ^#V"9 >(%0 )*9 >@(%0 )*9 > )%0 )&00*9 ~*9 ~H=)*9 DMͣ5C) &000*9~*9#~Hl)*9DMͣ5:8|) 0Æ):9چ),'&0:8AO0:0:7 ڶ)1&0*8& [1,'!"9!96!9p+q*p9*9&6>~6'**9*86>~6!t9ͭ6H*,'m),'*,'*9#"9:8AO0**09&0*9DM1ͻ*p9#"p9*t9#"t9!9s+q+q:9ր!9j*>:9ր!9*>>!9p+q*9 N*7M*7J* *9 N*7M*7J*H!\6?!96\͢29:95+:9o&"8> *8 ~H;2ᖟ/H,+',+*8#DM͂*,+*8#DM)Ͳ29*!96:9Ҭ+*9#"9*9)*(9N#F!"8*8:889͒6HҖ+*9#"9*9)*(9N#F!"8[+89͒6©+*9"8+*8"8*8:898͒6H+*8"8ö+:8+!96+!9698͒6i,*8 >ͪ6!7>͟6!7H*8#DM͂*Hc,_'*8#DM)*8 N#F'[1<&06++!96!"t998͒6q-*8 >ͪ6!7>͟6!7H*8#DM͂*Hk-*p9*9&6>~6X-*9*86>~6K-:8>t9͟6H>-,'m),' %00 %0,'3%003%0,'*9"9*t9#"t9H-,'*9#"9U-,'*9#"9[-0͎'*p9#"p9_'ͻ6+u,!96!"t998͒6d.*8 >ͪ6!7>͟6!7H*8#DM͂*H^.*9*86>~6A.:8>t9͟6HA.,'m),' %0[%0:8@.%0.%0,'3%0r%0,'*9"9*t9#"t9,'*9#"9͎'͟(*p9#"p9ͻ_'6+}-!"9"p9"x9}2z9o&"{92}9o&"~9298͗6"8*9 "9!"96+>!8ҵ.>&0u*8M!D/ ^#V͵*J/+J/:8&/:8:8@:8 H:8HH!9/r-#/]&0uA/:8!9>/r-A/j,J/...:8>!p9ͪ6H0*98͢6!8҆/ 0 0Ì/,','&0x91k0&0 {91&0*p9[1&0~91&0:8AO0:00*8[1/0K2#[1>p9͟6,0:8&0,'m)&0ͻ;0!o96:8;0,'!9r+s+p+q*9^#V"9*995s#r!9ͭ6n0*9##4!9r+s+p+q*9^#V*9DM<0*9##*9##~`iw!9p+q*9##~29*9##~w*9n6+s#r*9#:9w!9q*9&!9p+q*9  0 0 0!9p+q!96>!9/1*9&*9>O0!941 0!96> !9Z1*9&*9>O0!9491!9s+p+q+p+q>9͟61*9*96!9s*96"9PY! 6"9>~6!9#~Hһ101!96:90O0j1!9r+s+p+q*9##~2*9##N*9DM[1*9N#F'[1:2!969:9͟6+20*9&<6!9s 2*9N#F'[1!9q*9&*9~!9q*9&*9*9& *9N`ih6n&"9;2<o&"9;Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$!9q:9<29O*9 :9w!9p+q*9~$3*9:9<29O*9 w*9#"92!9q:90O2!9q:9O3:9O3!9q*9M3:2!9q*9&! 6K3*9&! 6M3!9q*9MJ3/2!9s+q:929:9*9&2) >;͟6HҸ3:9=:9*9! 6!9s*96"9:9!9q*9&! 6))))*9&6 }!9s+q:9!9!96N!m"9:9*4!n"999͒67499͒6+s#r!944!96 >!9Ҋ4:9=29l4!96*9&2) :96!9ͭ6҇4R4*9 ~29*9 ~29*9 ~29*9#^#V"9+!6!9s4!96:9>;!9ͪ6H4!96M4*9&2) :969͢6!9s+4*9~(5:9O!2 DM2 2*9Mo3*9Mo3*9MJ3 2*9M93*9M93*9~`5*9M3!9p+q!"9*9"9 "9*9~~Hҟ5͋4!96 5â5u!9p+q!96.*9DM9 -º59a5!96> !95*9& 9 N0:9<295i`N#Fog_og_ogDM!>))덑o|g26 = 6^#V))) DM!>))R6 =J6_og^#V) h6^#V|g}o r6_{ozgO{ozgi`N#Fogo&og_{_z#Wi`N#Fog\DIRLBL yd'* !9"1>"#2#:Og}**Ip2~w2i#1#":RͶ :O~!ʫ:<2Ž:"2"x2*# O:ļ:<:G>O*# :<t tIw!/>!/>!*6 #:_#:*Y" Y" Y" >*Y"#####Y"##Y"Y"Yz2*Kg"ɯ22!"*DM6:O* 2~ ~ †:<~:2>2:<** "_?:<2>!/:<}:2* ~b W6 y2> # vwm>2>!/ N *~O²+—">2>!/*:< "~G # p *~w#  : *8*:*8yO:O*}O= ~ w#P^#V#ɷ{ozg |g}oh:<͉̉O<OBKBK$'-*!*^#V"DD  $$HD@" @@ $B $$H$H$HH$$! HD$D$D@AD HD$!A" :+4442\0a0f0k0p0u0z0000#/#/#/////////ĩ,+:,= *F=+qN1,4O=2,=*F=~#"F=!5, () 'U ') )@ :<:=x,>=!]?G~µw#„,p, /U ,/@ #~µ~$w2'+"=>2=!"=ñ&>2=:=U - -~w#~d -~w,,͝-w͵,~Bدw#w#w#wU ~#~>-,"C=m-:>21=Ux¯x 20=*C="?= x4̓ :>"C=~w|21=m-x¯*C=-#~µ~@ w#s#r#*=s#r4͸K:?w/:<Ĩ/!<4~=Z.!]?~-!1>~-!@#]?~# . .. . -!V?p#"?=ͩ2'!5O"@ A."?=~w#~@k/~.#^#Vͩ.*= ͩ *={ĩn*F=ԃ +!"4="6=}2/=p!/!3=44!r?>͗;Z:3=8p!3=44!/!?>͗;Zʹ/*<|.:@<2[?2[?.!L//!O//*<|/>,vL:@<>,J:@<2[?2[?!_//ʹ//̓ͩ*>|,/F/ͩ+:@C/>vLKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/:@0"?%O;.0~<=r0:@<2@:@:@=2@<#~^0:@^0:@^07"?:?=2? &0*F=~ 0 0U 0"F=0>&2?>1&0:?0>&;:2?*@~ 1=1O+1 0x+~10:@*@~<1=11O+11 #1x+~111<*F=U 0w1G~# \1 d10P1x0G0&06 "F= ʐ1 ʐ16 Ö10}1ͱ k1å1ͱ k10ß1 ;1ù1:0 ʞ: ù1:: 1 1:"%@ʞ: ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_2~F2=G+~F23*2+<=C2+;2~>.33?*@O DEU Ă2=ʦ3%2,ʰ3 ʰ3 ʰ3;ʰ3!) 3w+ 2"{3q3(:> 63:<.33PX 2|2>:f3)0R3>)30R3=363D>3E>3 >0f3xG3x0:R3 f30O:f3>0f3y*{3w+"{36 *{32Ow+ ʏ3 3~3w+ ~3Ô2ʢ3w+22322{=*F=+~ 6 6 ʵ3õ3!=͍ 3#6 +>1&3:>1!  4>1!4r ?Stack overflow, try more P switches (:> O4"?/c4> \^4U :U H0ʄ4H=;: y4ɯ;:͞:!*#@*?!!44͍ 4:@¾4x4*?͔9͊02@*?r:5H=͈:3 4*@*@*?"?"@"@ bkë4:?2@+5ů2@@ :@ʊ5U :U O^5yf5y n5y@{5:@=2@:@<2@:@:<(:@#~>P)!ɷ/"@i2O:> ʰ5*@͊0y6+,ĝ5) <ĝw+:> G6G5͌2 D6>G65# <2@ 5 =6:@6G6 ;,76<36>76G67676 w+5:@G66+.0xĝ" @&i"?m6\4>Ô5^4*%@>2@3H0ʱ6 ʶ1;ʫ1'ʡ6"ʡ6>1Ç6G͕0 ʶ1ʛ6â6"%@;:͞:!*#@* @*?!!64>2@" @͍ 7:@6x 7* @##~#7+4r:47H=r:1:3 7* @4 bk6 ʝOJ) V7JG7> J> J:> @ ʝ2 @O ʄ7@ u77\4^4!H=: @O~ʥ7 #Ù7!ɷ #"?~(w/"@i2 ,7w+2@2@o&zo&|}|>o&|o&z26:6]||/g}/o#z /W{/_ DM!>25))#}o|g6 :5=25}:5=25}DM!>))U =M}}/o|/g#}|ʦ×|g}o{_ʞ||7g}o„{_ʞ)™}}o|gN#F# N#F#z{##^#VBK^#Vz#y####x#~#fo}|>?o&}|>o&{_ʞ|g}o|g}o~# x+!97~#F!S|7TN!"]!9!9^#V!$N! 9^#V"]!9!9^#V!$N*]!9^#VC N! 9N#F`i~!`i#DM+^C ͍!!! C N! 9N#F`i~? !9^#V`i#DM+^C ͍< ! !N! 9N#F!9^#V!PY=DM`i ͍ʆ ! ͍ʆ ! N!#!9^#V N! 9N#F!9^#V  !!9^#V`i  !`iN!9N#F! ^#V`i^#V+!! 9^#V!=,"! 9^#V`i~#fo#s#r+s!=N!!9^#V,"N! DM`iʌ!`i DM͍!l!N!9N#F!!9s#r`i~"! ^!=!!,"!9s#r! ^2!9~#foos#r! ^!="*! ^#Vs#r! ^#V"!! s!9^#VN! 9N#F! ^!=ʖ"! ^#V`i^#V͡! ^#V! ^(4͍ʖ"!`in&os!!9^#V!͍"!`in&=s!`is#r! s#r!`i~#"s#! ^#V!͍#!!9! ^(4͍}"!9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&os!9^#V`i~#fo#s#r+s!=N!9N#F! ^#V!͍ʞ#`i! s#r*|ʾ#*!9s#r*^#V"#! ^#V $!9s#rz#!! s#rÏ#!`in&os!9^#V! s#rN* $|($!<" $" $* $DM! 9^#V* $" $PYM$`i" $!* $* $ʌ$* $* $͡=! 9s#r9s#r#+^!0ͬ%9ͭ%!>9^#V! E!>9s#râ%.͍A&!!@9s#r#+^!0ͬA&9ͭA&!@9^#V! E!@9s#r%l͍ʁ&#+^!:9!T9~#fos#r99 'd͍ʳ&!:9!T9~#fo##s#r++^#Vs<9 'e͍&f͍&g͍&!9!T9~#fos#r͎<͎< '!:9!T9~#fo##s#r++^#Ve<9(!9!!>99)9l*!9!49s#r(!:998;<ʟ'!9! !>99d9)9 *!9!49s#r!-!69~#fo+s#rs'!9! !>99)9 *!9!49s#r(!9! !>99)9l*!9!49s#r(!9!!>99)9l*!9!49s#r(!:99͆9~#fo+s#r#!89~#fog)!B9^#V`iM6)!!69s#rÄ)!69~#fo#s#r!49^#V~)!69^#V!@9~#fo)!49~#fo#s#r+^`iMu)!D9~#)!>9~#fo+s#r#!89~#fo)! `iM)*`iM %N!9N#F!9^#V`is<)9!99A9:͆<$^+s! 9`is 6 #=ž+>6#=§+ : >+ A,[+@+a,{,`w# .+,+,w#+{o|g ,,w#+!!|a{ .51V!$bS.53!bS.52@Q.XRW@ .R.NE!7bS.54LV!tbS.56!RbS.55!bS.57!bS.58!bS.59V!bS.61!bS.60!bS.62N!!!`,q7!:o&=`,s!."$,!`,DM!",*,ʴ.`i^! ͍I-`i^! ͍Q-`i#DM--`i^zʴ.`i^!>͍r-!Æ-`i^!<͍e.!`i#DM^! ͍¥-`i^! ͍ʨ-Æ-`i`i#DM~-`i^! ͍-`i^! ͍-!`i#DM+s-í-2|.!͎0.!ͮ0͍b.!.!7!Q8!.!Q8! 8!!(4! .ñ.`i*,#",+)$,s#r`i#DM~ʱ.`i^! ͍Ÿ.`i^! ͍ʮ.!`i#DM+sñ.y. -!$,*,ͮ.Can't open file for redirection: Nb!! 9~#/! /K7A+A:$$$.SUBN!"!N!ɢbS.98!bS.97!bS.99!bS.100!bS.101!.102! bS.82abSMAIN_zY bS.104!& bS.103!b105!bS.106Y!bS.108!bS.107@R.LE!obS.9Y!^bS.111!lbS.110R.GEZ!bS.113!xbS.11con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:N!9^#V!!9^#Vͮ0N!!!9s#r0!9~#fo#s#r!9^#V! 1nf/͍ 10!"!!DM1`iDM`i~#=1!9^#V`i^#Vͭ7=11! ^#V!9^#V!=#!9s#r!9^#V!=ʄ1n&u|„1!"!!9^#V!=ʫ1n&u|«1!"!! ^#Vsrn&un&u!4ut!9^#V!9^#V!9^#VnfM! 9!2!!9^#VN! 9^#V!62! 9^#V! @2!"!! 9^#V)))DM! ^#V! ^#VM! 9s#r!! s! s! s`is!/! s#r! 9^#VN!,/DMì2`i&DM`i\02!% ^z2ä2!"!!9^#V͋+2!"!!9^#V!=3!R+!R+͍I3!9^#V!=<3!R+͍F3!"!i3!9^#V!=͍i3!"!!!! s#r!# s!$ s`i!9^#V!s#r!9^#V!=#!% s!=3!3!9^#V!s#r3!3!9^#V!s#r!N!!9^#V!%s!N! 9N#F!R+!!% s!N!/466N! 9^#V!M4! 9^#V! W4!"!! 9^#V)))DM!9^#V!9^#V! ^#V! ^) 4^#VMN!DM!9^#V$~4n$&!͡DM!9~#fo4!9^#VBK!9^#Vͯ54!!9^#V`i͡!9s#rz]5!9^#V!9^#V`i7!9s#rz]5!9^#V!9~#fo͑͡PY!9^#V!͑PYDM`i!9~#foʦ5!9^#V`i͡!9^#V`iͯ5ʦ5`i!9^#VN! 9N#F!!R+!!R+"͍5*͍6!"!!!͑76*|6!!9^#V!9^#V!$ ^!q7!"R+"|I6!!$ ^!9~#fo=!$ sz{6`i!~#fo#s#r!N!9N#F!Û6#!9~#fo6`i#DM+^!9s#r!9^#V! ͍6! !9^#VR+!9^#V!9^#VR+Ô66!76"*9!"9*7@7*7!427#4*;+";}7o&"*;N!9!29^#V͋+!9!R+! 9F+N+V+^+~+ngxʏ7w# Â7!9^#V#N#F#nxʫ7s# à7!9^#V#~#fox777# ý7!7!}!}!9^#V#~#fox8~8# 7!9~#fo 8#8}!9^#V#^#V#N#Fý7!9^#V#^#V#N#F7!9^#V#~#fox8~r8# c87!9^#V#^#V#N#Fc8!9^#V#n~ʥ8ʫ8#Ø8!|!9^#V#n8#þ8xʥ8 +~8ë8Y!9^#V!Ίb`i)!!*9!*w#w#w#w*~#~#~#~"8*V+^+V+^*8"8*s#r#s#r*8**""*>w#j9*~5<#y9*<=ɯ<**###99ì99چ9Š9+®9**#9**#9**#9**# :**#:*~/w#/:*~?G*^#V#~#fo))T:#L:DM*s#r#q#p*~?W*###~:~w+}:y:7~w+:‹:~# :Og9*8͝:y28*8͝::828;8*w#::8d9*8͝:y28*8͝:;8*w# ;:8d9!8w#";> 28!8~w#3;O8!8#H;yc;!84!85-;!85ʕ;!8~w#p;O8!8#ƒ;yc;W;8!8#ž;*8~#±;*8~#;!8w#;> 28!8~w#; <8!8#; <;!85;*8w#<͎95.Ï_ Ҧ0Ï7Ï͜Ü\2|::Iͺ>2 :2f>2>û>!6 #=!~a1{1 w##:Ƃ2*6 2fl:<2!G\:>2 *|ͫ}*ͫ>:Ï:> ͏> Ï> Ï:_:<2>2ͺ >Ï*}o|*!""ͮͷ͇*"͛~ͫ#*}#"%"*̀*}K|K*ͺ-m121=2#\:}mͺ2>o:  /\ͺ 1gn~ͻ͙D.:ܰg+":>2 CP/M 3 DUMP - Version 3.0$ ERROR: File Not Found $ Enter Password: $ Password Error$ ERROR: No Records Exist$ Press RETURN to continue $, ; ECHOVERS RSX pstring equ 9 ; string print function cr equ 0dh lf equ 0ah ; ; RSX PREFIX STRUCTURE ; db 0,0,0,0,0,0 ; room for serial number jmp ftest ; begin of program next db 0c3H ; jump dw 0 ; next module in line prev: dw 0 ; previous module remov: db 0ffh ; remove flag set nonbnk: db 0 db 'ECHOVERS' space: ds 3 ftest: ; is this function 12? mov a,c cpi 12 jz begin ; yes - intercept jmp next ; some other function begin: lxi h,0 dad sp ;save stack shld ret$stack lxi sp,loc$stack mvi c,pstring lxi d,test$msg ; print message call next ; call BDOS lhld ret$stack ; restore user stack sphl lxi h,0031h ; return version number = 0031h ret test$msg: db cr,lf,'**** ECHOVERS **** $' ret$stack: dw 0 ds 32 ; 16 level stack loc$stack: end 1I"CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH1512826543218/82Invalid Filename$DIRECTORY FULL$DISK FULL$Creating Password$File not found$File not available$  ,.;=:<>_[]*? ERROR - $Password ? $Cannot Edit Wildcard Filename$Enter Output file: $FILE IS READ/ONLY$NEW FILE$-(Y/N)?$Insufficient memory$Enter Input file: $Output File Exists, Erase It$ BREAK "$" AT $END OF LINE$1I"1I"̈́""%*"%}0!#6%!"I" ͫ!+!#s͠!#s#r!I"!^ ͵ #I"!++s#r!#ͧ!+s#r!"#*#ͺ!"L#*I"% 6*I"+"K"ͫ!"M":] sr ͡ !#6\Mڀs:#Ҷ\S:h2y#!h6*"%|¶12!%¶!!%6!#6!+#:\:t#/H+#͍͋!%6 !"%*K""%!#6à1I"! %6#@1I"! %6?@1I"! %6>@1I"! %6F!"$%@! %6F!"$%1I"!w#6 * %M͟  :% :% H| Ã*%M͟ >$%!ʝ*$%DM !"$% 1I"!{#6! %6!z#6͂ ! %6E: $2%E͑  sð H͑  !s#6#~:+#2%:\2+#:%2\#+#3\+#!t#6ð :%I`!#: $: %H2z#i!#6!"%}2%*%+% ~ fiW?:%<:%:%H:%H:%­ ͋:% :#!# :%^> :#2#O> w:#!#?!w#6!#6!w#6:#2#!#&:#2#:#2#:#!#< ,V*%+% ~ P !%6:%ƒ> *%% ~2%O͟ !%6:% *%+% ~ HҬ ͟ - *%Mo ^w:%@Ow:% :z#/H- : % :% !#4 :% :#O>!#w-:% :% /!%6  w4!%6!#6pi:%O- !#6:~#!z#] ð O͸ u\Kð :%RRP"m2 %Ғ!v#6:v#: %ڬ P"r"!\"6!p"6#6P"!v#6Y2%-!v#6P"Kð Q͸ +#ͺ:t#/!s# #+#3+#ͺsð :%-&͂ !%6:%#7ͻ͂ t!T!:%:Q!%6L=!t:%:t͂ !=!:%t*%#"%Ҁ!%6:%B¡!%>w!"%*K""%ͅð :%C²Ͳͅð :%DͲ͋ð :%K͋ð :%L͑ð :%P !%6w  ͎ð :%T ð :%U6 :%2}#ð :%V… f %%!DMt/͟ *K"DMt  :%2~#} !#6 !#6ð :% ± :%: %HҮ ͑ð :%Hҭ :%A !%6*%"%*K""%ͅ   !%6ͅê :%F M \ ê :%J¤ Mx: %2 %xҡ \: %=2%:%<2%! %f *%&$ ~2%-E *%"%* %M* %~ ! %: %%!"%!%6ͅ*%DM͘4 ê :%M: %H !%6>%! L:%<2%O!%$ Hqy :%2 %!%6*%#s#rê :%Nf Mc * %` ͭ/ @̀ !%6!"%͇ͅ!%6K"%!]   ê :%S¶ Mxҳ \: %2%%!DM͘! %:%Ұ *%&$ ~2%!%4-Ï t ê :%W ê :%Xu P"m2 %!#6 !u#6P"^:#  r `!u# ͓B !u#6 r"P"!"6#6!~"6!"6r":#B 5*%"%%%!o *%% N*%"%K >ê :%ZŸ ҏ ;  @Ҝ Ï ê :%ʪ ð ív!&%q:w# *&%&!'%q:'% !#4:'%  !#6*'%M :#    !#55!(%q:(% :#O>H2)%yQ !(%6 !*%6:)%!*%n *(%M !*%4V !+%q:+% ~ >:+% :+% H:+% H!,%q*,%Mo ڻ ^+ :,%@2,%*,%M+  ͟  ͟ !.%p+q*-% !0%p+q */%DM !2%p+q *1%DM !4%p+q*3% !6%p+q*5%:! %6O!"$%@!8%p+q*7%!:%p+q*9%2#!<%p+q*;%2#!>%p+q*=%!@%p+q*?%!B%p+q*A%!#6# >>!D%p+q*C%!F%p+q*E%!K%r+s+p+q+q:G%=2G%+*H%*J% w*H%#"H%*J%#"J%!M%p+q###*L%gR !O%p+q*N%f!P%q*P%&-:u#Ҁ#^͵  !R%p+q*Q%DM s+#K͍:#ҹ#!T%p+qͬ*S%DM^!V%p+q*U%DMͺͬ*U%DM͑!X%p+q*W%DMͺͬ*W%2#!\%s+q+p+q:\%=2\%2*Y%:[%w*Y%#"Y%!`%r+s+p+q *]%*_%DM"͹!a%6:#!a%ڵ*N#*#DM\q2#ʤ>!#ґ͟*N#*#6:#2a%î*N#"N#!a%4`͹!"N#:s#>#N#!X*N#*#~2b%*N##"N#:b%:t#):s#)!R#+##R#3R#ͺ:#)>>!P#ͧ!!d%s{@*P#!e%s!"P#!c%6:d%!c%*P#*L#DM+#́ʵ]>P#!ʦ*P#:e%ͷ!*P#*L#DM*L#*P#:e%ͷ!"P#$*P#"P#!c%4S!"P#!f%q#P#!,*P#*L#:f%w*P##"P#!g%q:#,Q:~"2":"2"r"́'$$!#6*#&" :g%w!#4:#2h%>!h%Y!h%4Dr"K!i%6 :i%=2i%ʐ*i%&r" *i%&P" ʍ>e>:"2~"r":"2"Qr"q:"2"!#6>!#*#&" ~!#4¾*P#},:s#\K+#K:#͟:x#+:5#25#ͬ+#:t#G\]#l3\+#]#;#3+#!k%p+q*j%*j%DM!l%q: %ʄ*l%M͟ !m%q:m%a/>z!m%/H!n%q*n%M͌ҹ:n%_:n%  # !o%6>!o%I Oͤ2p% *o%&# :p%w:p% I:p%:p%7:o%$:o%=2o%O!# 6 :p%Bs!o%4ͭ2p%!q%q:q%a!q%6:|#p*q%Mͤ:q%!s%p+q!'"v%!u%6>v%!*r%*v%~!{2t%*r%̀!"r%PY! ~!"v%:t%!u%!u%6:t%0O͟  ͟ Å!y%p+q:~#*x%DMt:͟  ͟ :z# ͟ *͟ *!$DM: %&*%& ~I:%<2%O! ~> >! %ҡͭ_! %:%ڍ>%!ʈ*%+"%>ͷ!ˆ!%6:%<2%=O!%$ NP:z#Ұ; OP:{#!{#6:#!~#K"%!*͟ ͡! $6 ͟ !#6!#: $2{#* $&# 6 : $<2 $=O!# NP:#B*Oͤ2%LLOͤ2%!{%p+q!~%6! %6!#6.:% ʏ:%ʏ *z%*z%#  :% ž.Ð͹y!|%6͹>!|%ҽÓ͡.ê:%::|%Ó*z%#~A<*z%wO>Ó*z%#6 .:%.)!|%6!#6.͹)> !|% Ó͡. :%;v*z% !|%6.͹d>!|%[Ó͡.H*z%DM#Þ>!}%҅Ó:~%ڏÓ:~% ! %6>:|%<2|%O*z% :%w!~%6!}%6>!}%*}%& :%> !}%  >!}%4¾>:#' ͡! $6!{#6 +#M9!t#6:,# 6,#]E+#\#4#:q"wRP"qr>!q"6:q"<2q"=O! NP!h6!j6!|6:#ҩcͬ\;"#:#c*#}|Hͽ ͬ\;"#*#}|H͍*#}2#:t#C:e&;͍C:fC:d>!#6C!x#6:#f:t#X͍!s#6M #+#3!7#6+#:#…͟:y#ʞ:y#27#ͬ+#,!7#6!K#6*#"N#!"P#!"!$!"%>%!!"%*%+"%>>!"#$:%*%#"%*%"%!"%+"%$*%"%*K""%!"%!%6:%Ҭ%%!2%*%v!"%% ~ He*%"%0*%+"%>ͷ!2%:%ڕ!%6%%!+s#ré*#$+"#$:%ҩ*%"%):%*%"%*%+"%*%#"%*%#"%*!$#"!$*!$+"!$*%#"%*%#"%*%+"%% ~ *%+"%!%q:%Y%%!V:%S*%% ~2% E*%% :%wÄ%%!҄:%ҁ*%% *% wYͅ!%p+q%%!ʱÞ:%*%"%%%!!"%%%!"%*%"%%I"!%!*K""%*%*%"%%%! OQ2%3*%% :%w:% M!%q:}#d*%MP:%K"%!x*%% ~2%O:% –hͻ%K"!M"!ڼÿhÝ!%6!"%*%"%͚ͅh%%!!%6ͻ:s#)2%)*%M%%!=*%% :%w:% VL2%:% :z#/HH/Wҥ:% ”!%6 ͦ!%6 :%Ÿͦx* %&$ :%w: %<2 %d!%s+q*%"%!%6:%/%K"!H8*%#"%"%:%2%*%&$ *%% !%:%2%/H5!%4*%#"%:%I*%+"%ͅ:%! %6x: %2 %* %l!%p+q*%DMM2%: %ڍ! %6O@ *% ~ :#/Hҷ *%#*%#~ *%##:%*#$*!$DM!z#6:%!"#$*%"%*%"%*%+% ~2% %:#" ,*#$#"#$*%"%%%!v:% Z*#$#"#$ͭZ*%% ~2%O͟ *%"%2*!%&"%*%"%*%"%̀w͑:%2%!%6w:%2%K"%!>%!H͇!%6>!%ͭ@>!!%4!%6!"%ͻ, M"%!& )  !%6 -!%6 -:#>%!H] @!|#6*%M͌2%*%MP2%:%/!}#+w!|#6L2%^ !%q!%:%:#H: %H!%q*%M͑  *%M V ; Oͤ2% :%N à:%Y > >:%02O"O> /!"%!))덑o|gҗ! =…!^#V) ¡!^#V|g}o «!_{ozgi`N#Fogo&og H !=! LIBX$$$$$$$LIBX$$$$$$$LIB$$$BAK1CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321PASSWORD0CONFIRM []=,  *** Aborted by ^C ***$ Disk I/O $ Drive $Read Only$Currently Opened$Password Error$Password: $ $Not erased, $ ERROR: Missing Delimiter or$ Unrecognized Option $Near: $Requires CP/M 3.0 $Enter filename: $ $ERROR: Invalid file name $Confirm delete all user files (Y/N)?$No File $ (Y/N)? $ *** Aborted by ^C ***$11͢}0͢|HSb4 ڑ!16fb(r2:<<2}wb!6 *}& 6!u6:}!uڑ*u& ~aڊ*u& ~}Ҋ*u& ~ w!u4U!"+!\"-+5 "{{͔zb>{͜*{~ *{#"{*{#"HR :\Oy<2\2y.3l -:1/Ҁ!u6:u<2uO!\ ~??(> !uҀ:2/Ҁb@2x:xy:xYH/} .l\ -ˆͫlͻ2z:zµb:z6:z`O! "/E";G"=I"?"A"C"E:1Ҷ*/:y³:\A=OI:I I!v6> !vW:v ?.I*v&*/NI:v<2v)b@2x I I:xƒb:xy:xYHҳ. */#DM] -¨ . */#DM] -  ͫ*;E*=G*?I*A*C*E!=lͪ-.*=l -%2zõv!q*&!p+q* !s+p+q*:w#6* *#"N#Fy  !p+q*! p+q*!"p+q*! -!'q:'2#!$6#1!*r+s+q:(2#!$6*)#s#r#1m!Nq!O6*O& X>*O& :Nl:O!O4F!Ur+s+p+q+p+qͪ !\6*T~*T~2\*YM=2L!`6:L :`*YM=2LïÐ:V2KN :V2K2_*T~2]!`6*T~2\*T~j*TN! *R*R =2^!_^!`6!W6:_!W[ :`T!W4=a*T6N *T:]w:KH͂+s#rͪ :Lʔ*H#"HÙ!L6:\2aO*R ~2X*X&*P:!a4*T:aw*X&*P:Y*a&*R~2Xë*T6*H~2Y͚:X2Z!V6*H#~2Y!Z4N*P :M( !`6> *Z&*P:Y> !`6!V4N*H ~2Y*V&*H~2Y*YM=2L:L>!LHҗ !V4N*H ~2Y*YM=2Lf :V2KH͂#+s#r*HN=2L! *H#"Hê ͙ b I I!es+q+p+q:e=2e *b:dw*b#"b !fq I:f) b:f7 b:f:fHU b:fc b:fq b:fҁ !hp+q:2Қ *g >w3ͫ*g:\w*gDM"i*g >w*i} *i|2k:kH *kM :k>Y2la :l{ :l :lb3 !m6>!mڗ 2n D *m&3 :nw:n O × :nZ  :n€ :mm  :m=2mO!3 6 , :n !m4# ͙2n!oq:1 :\A=OI:I I!v6> !v :v .I*v&*/NI!v4 bb*oM \͂ 2wQ :w$ *wM B :wB *wM͞ \͂ 2w:wQ *wM͞ !L6!J6:L:LH:LH Jt:J b.bLb:KH͜+"p!r6:K!r *pNI*p#"p!r4¹ :J !26:J !16\ !tp+q*s~ ~ H% *s#"s *s~1 >>!`i^#V#~#for0V y wÇ G:„ xA  a{k_  ~ ~r_ogi`N#Fogo&og_{_z#W01u NUMBER OF DISK ACCESS ERRORS DURING SESSION  }004Requires CP/M Plus Version 3.0 to execute. &R(4 Requires the BIOS revision D to execute. T] WINCHESTER READ ERRORS:N#F#͕ WINCHESTER WRITE ERRORS:N#F#͕ FLOPPY SEEK ERRORS:N#F#͕ FLOPPY READ ERRORS:N#F#͕ FLOPPY WRITE ERRORS:N#F͕͎ |() ^#V#>3iL@IFf7A@0 p2^,ھ|C4\90+zD4j  By^wwpWg$qXh øꐀw cZ^QU#rZ+ʯRYz ͡,@f녺h#*Bp =0۴RHKI@e`2ְk ! N :pCB% ~ӸwC! ( AR녺dNy(cH6$ w` 3tp;ٸl"`2~  ' #?7Nw]<1AL$@ݪ (OU8 7B3q8,v-`e 0 t ݧ<1AL$@N v0ЀrѰ`U[< e 0 $~ʐ\녺vS%@ nӸ5ڬBnF}sh8_ѰdO; 6whBt~  3q;U@"S76 Nf`!~?Nn N1AK7a ndj?,H@S@;"lQd`v-(g ?8 ?O1"~Op fv$3p$ $r9By@# -ABb7e:"Hg7FQHΠLֺ fvnmW@Cܘs'Yn 0l #CL qn7l Ȇ+,2uQB W+7&X.g!*"1p/g$ ɀl2uxN7Y`B0 Cl7OiΠL\4+dyiۧ3vh2rEF\ Q@@|f6Y\ A^~0l @M0ea[cC8 0#0P?cBX\ Ci8@=G([8Zahp@![d!`٠cL0>_ Ø@2FKL 2l jD:8!~)ؙ` fVn=nfQ fVTBO31"@j͛D >;Hx!Ca-fan uvPY3h 73sP3Ub3tffNy(cHTP ~qA6nf@pX{sCd͢@, ڠ[7B3t 8,<>r;t~`ڬ`NQU rv @ng fqM6ߣ` ^cn&=ٻo0>u٦`n/aa =|~3wx(!A@d jߤmp! J(R%~x#/m enc-`[3 Yp0yVnpE'(TdtY  h3sh8dn&=GfVx^ !flC|ia0@fVKl.l*p6nd_Y)Ѣ7OeObA@%xC{,4 @0 ~sJR~A/Ӡ))(#8l2\-+$z ~8ۮHl=sHD~q@Ur0߮W 2w_땛ۮ땢9ߧ `8?N;R@ ~ ;Ӹwq8;$uz N( 3|[c ~b~B {%^2 /Ӹw?OE;!^;[ r\,~\ p" 0?1=~\!p2_ .p> ߦK K'[`*~pC%~7PV 8 l?N?[`+ dq;t )0|SG[` ?D9%~)`@Y~9O O5aHyJ{CV0؇wv8+l0CL0gw93e`&z-f_  P gh`. P C̸"\V!Bh&xC̸"\z)C&z-2䰉rh@PP Vz-~@rL^a jxsU,H&~TJZ$O!Gxw T$c'mP %@b9^ Fy@tcWgpFw)pp jPvC>퐉vD&\.r YKR?BNKSLc4Ш?CONOS4x?USERFgt$H85@ADRVT4$Ҹ6@COMMO D$x @DMATED$H%@RDRVрD4T8=@SECT{DE$>BNKMSKȀd4Ĵ%FDINIT"ddDtFDREADqddEu$H>INISTMltH(&WINITDUtt%WREAD?Uuu$I?BNKSLc1 J  FASTCOPY for the JET Computer. Rev.D ͐  }004 Requires CP/M Plus Version 3.0 to execute. !w  &R(4 Requires the BIOS revision D to execute.  Source drive name (or return for A:) >A˯A8Q82 Please, give a letter (A-P) or return. 2 A_ 28: Requested drive does not exist on this system.  Source on : O then type return J ~(' Sorry. It must be a floppy.  Destination drive name (or return for : AB(A :) y˯A8Q82 Please, give a letter (A-P) or return. !   Not same drive 2A_ 28: Requested drive does not exist on this system.  k# Destination on :O then type return J ~(U Sorry. It must be a floppy.  It must be same format on the drives ~2~G>_SNF N3 |(n fF(<"}2 ~N_P`h3 S{2Q<:02!y "J J If you wish to copy the entire disk in drive : O : to drive :O : and delete all information on destination drive, then type YES ! 2 !~ #~˯Y #~˯E #~˯S : 9  >G (0 DRIVE NOT READY OPERATION ABORTED  w(4 CANNOT WRITE ON WRITEPROTECTED DRIVE!  > W(:> W(:O(O !'+O(| 3  CANNOT WRITE ON HARD SECTORED DISKETT éJ J >22!s l *~X ¬:~X ¬:2 2 :`2 :K !4! < :9 : G=22:~ ¬ů2 # !5: 4 DISKETTE SUCESSFULLY FORMATTED AND COPYED   SEEK ERROR, OPERATION ABORTED >2 FORMATr :O:G: ["*$qwG!^"| !z l > (+2 WRITE TRACK ERROR NR :Q F! 4F>2  READINGr : '2&[!(!6" >2 : ! l >!& (y2 READ ERR NR :Q AT SECTORQ J : =2 e>2  (A=Abort,R=Retry,I=ignore)  A I(R`* [" ! :<4”F! 4F` WRITINGr : '2&[!(!6"| >2 : !z l >!& (k2 WRITE ERR NR :Q AT SECTORQ J (A=Abort,R=Retry,I=ignore)  A I(RK *| ["| ! :<4z F! 4FK VERIFYINGr : 2&2 2! 4~*+" ! l >!& (U2:( *** READ ERROR AT SECTOR >2: Q J : ! F! 4F# :o} !S_"$*r""!^P>NE  E >E >w#2>NE >2  E >E >w###: w#:!w#>w#>NE  E >E >w#:O:G  >E >w#6>NE ! ~4!8>N !_"$:*""!^(>E E >w#>E >2 E >w###: w#:!w#>w# >E E >w#:O:G  >E >w#>E ! ~4!8>wT]9    8>N w#  8  y0 0(O 0O TRACK :Q SIDE : Q |()  ^#V#>{ | W_0e. !0 ) }|x/Gy/OB zS)80# 8 _733< _7ɏ0#  _7F#( y^χ y^χ!  ~O#~U~檩˿# kxxmt!90$`tkeuggzp|oj 'd  3 61015 6122030 TITLE 'FDRIVES.ASM TABLES FOR DISKETTES' ;********************************************************* ;* DEFINITION MODULE FOR THE FLOPPIES IN THE SYSTEM * ;********************************************************* ; LATEST CHANGE: 1984-06-13. PSW ; BIOSREVISION D. ; FOR THE RMAC ASSEMBLER TRUE EQU 0FFH FALSE EQU 0 ;****************************************************************** ; What kind of floppy system do You want ? VERIFY EQU TRUE ; Verify after write. M8 EQU FALSE ; A: 8" 2x77x8x1024, 256 ent. UNIT0 ; B: 8" 2x77x8x1024, 256 ent. UNIT1 ; C: 5" 2x80x5x1024, 128 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT1 M5 EQU FALSE ; A: 5" 2x77x8x1024, 256 ent. UNIT0 ; B: 5" 2x77x8x1024, 256 ent. UNIT1 ; C: 8" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 M596D EQU TRUE ; A: 5" 2x80x5x1024, 128 ent. UNIT0 ; B: 5" 2x80x5x1024, 128 ent. UNIT1 ; C: 8" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 M548D EQU FALSE ; A: 5" 2x40x5x1024, 128 ent. UNIT0 ; B: 5" 2x40x5x1024, 128 ent. UNIT1 ; C: 8" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 M548S EQU FALSE ; A: 5" 1x40x5x1024, 64 ent. UNIT0 ; B: 5" 1x40x5x1024, 64 ent. UNIT1 ; C: 8" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 ; MARK CORRECT FLOPPY SYSTEM WITH TRUE. NOTE ONLY ONE TUE. ;****************************************************************** PAGE 42 RATE0 EQU 00000000B ; 3ms/6ms RATE1 EQU 00000001B ; 6ms/12ms RATE2 EQU 00000010B ; 10ms/20ms RATE3 EQU 00000011B ; 15ms/30ms DOUBLS EQU 0FFH ; DOUBLE SIDED SINGLS EQU 0 ; SINGLE SIDED UNIT0 EQU 00000000B ; PHYSICAL UNIT SELECT 0 UNIT1 EQU 00000001B ; PHYSICAL UNIT SELECT 1 UNIT2 EQU 00000010B ; PHYSICAL UNIT SELECT 2 UNIT3 EQU 00000011B ; PHYSICAL UNIT SELECT 3 INCH5 EQU 00001000B ; 5"-FLOPPY INCH8 EQU 11010100B ; 8"-FLOPPY DOUBLD EQU 00000000B ; DOUBLE DENSITY SINGLD EQU 00100000B ; SINGLE DENSITY COMM EQU 0C0H ; COMMON AREA IF M8 SIGN EQU '8' ELSE SIGN EQU '5' ENDIF EXTRN FDREAD,FDWRIT,FDLGIN,FDINIT PUBLIC @DTBL,?TITEL PUBLIC @COMMO CSEG @DTBL: DW FLA,FLB,FLC,FLD DW 0,0,0,0 DW 0,0,0,0 DW 0,0,0,0 @COMMO: DB COMM PAGE DSEG IF M8 ; Define 8" 2x77x8x1024, 256 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH8+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F8D ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ; Define 8" 2x77x8x1024, 256 entries. UNIT B: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH8+UNIT1+DOUBLD ; $FDXSL DB 0 ; FLB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F8D ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ENDIF IF M5 ; Define 5.25" 2x77x8x1024, 256 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD+11000000B ; $FDXSL 2 MHz 8" Mode DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F5MAX ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ; Define 5.25" 2x77x8x1024, 256 entries. UNIT B: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT1+DOUBLD+11000000B ; $FDXSL 2 MHz 8" Mode DB 0 ; FLB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F5MAX ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ENDIF IF M596D ; Define 5.25" 2x80x5x1024, 128 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F596D ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ; Define 5.25" 2x80x5x1024, 128 entries. UNIT B: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT1+DOUBLD ; $FDXSL DB 0 ; FLB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F596D ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ENDIF IF M548D ; Define 5.25" 2x40x5x1024, 128 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F548D ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ; Define 5.25" 2x40x5x1024, 128 entries. UNIT B: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT1+DOUBLD ; $FDXSL DB 0 ; FLB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F548D ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ENDIF IF M548S ; Define 5.25" 1x40x5x1024, 64 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F548S ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ; Define 5.25" 1x40x5x1024, 64 entries. UNIT B: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT1+DOUBLD ; $FDXSL DB 0 ; FLB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F548S ; ADDRESS T. DPB DW 0FFFEH ; CHECKSUM VECTOR SET BY GENCPM DW 0FFFEH ; ALLOC VECTOR SET BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM SETUP DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK ENDIF ; Define UNIT C: ; If M8 it is 5.25" 2x80x5x1024, 128 entries ; else 8" 2x77x8x1024, 256 entries. DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT IF M8 DB INCH5+UNIT0+DOUBLD ; $FDXSL ELSE DB INCH8+UNIT0+DOUBLD ENDIF DB 0 ; FLC: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG IF M8 DW F596D ; ADDRESS TO DPB ELSE DW F8D ENDIF  DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ; Define 8" 1x77x26x128, 64 entries (IBM). UNIT D: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT IF M8 DB INCH8+UNIT1+SINGLD ; $FDXSL ELSE DB INCH8+UNIT0+SINGLD ENDIF DB 0 ; FLD: DW TRANS ; TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAG DW F8S ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN. BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN. BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. CSEG ; DPB for 8" 2x77x8x1024, 256 entries. F8D: DW 64 ; Number of logical sect/track DB 4,0FH ; BLOCK SKIFT and MASK DB 0 ; EXTENT MASK DW 607 ; MAX BLOCKNUMBER DW 256-1 ; 256 DIR. ENTRIES DB 0F0H,0 ; ALLOC VECTOR TO DIR DW 256/4 ; CHECKSUMMA SIZE DW 2 ; NUMBER OF OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of log.sec./phys. sec. DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH8+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 8" 1x77x26x128, 64 entries. (IBM) F8S: DW 26 ; No. of logical sectors/track. DB 3,7 ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 242 ; MAX BLOCKNUMBER DW 64-1 ; 64 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TO DIR DW 64/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACK DB 0 ; PHYS.SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 1 ; No. of logical sectors/phys. sector. DB 22 ; Read time out DB 19 ; Write time out DB 0 ; Single sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH8+SINGLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 2x77x8x1024, 256 entries. F5MAX: DW 64 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 607 ; MAX BLOCKNUMBER DW 256-1 ; 256 DIR. ENTRIES DB 0F0H,0 ; ALLOC VECTOR TO DIR DW 256/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sectors/phys. sector. DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD+11000000B ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 2x80x5x1024, 128 entries. F596D: DW 40 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 394 ; MAX BLOCKNUMBER DW 128-1 ; 128 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TO DIR DW 128/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sectors/phys. sector. DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 2x40x5x1024, 128 entries. F548D: DW 40 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 1 ; EXTENT MASK DW 194 ; MAX BLOCKNUMBER DW 128-1 ; 128 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TO DIR DW 128/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS: SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sectors/phys. sector DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 1x40x5x1024, 64 entries. F548S: DW 40 ; No. of logical sectors/track. DB 3,7 ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 189 ; MAX BLOCKNUMBER DW 64-1 ; 64 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TILL DIR DW 64/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sector/phys. sector DB 22 ; Read time out DB 19 ; Write time out DB 0 ; Single sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ?TITEL: DB '80. ' DB SIGN,'"-floppy-version. ' IF M8 DB '2x1.2 MBytes.' ENDIF IF M5 DB '2x1.2 MBytes.' ENDIF IF M596D DB '2x800 KBytes.' ENDIF IF M548D DB '2x400 KBytes.' ENDIF IF M548S DB '2x200 KBytes.' ENDIF DB 13,10,0 TRANS: DB 1,7,13,19,25 DB 5,11,17,23 DB 3,9,15,21 DB 2,8,14,20,26 DB 6,12,18,24 DB 4,10,16,22 END ёUTED$Q%Q2@COMMOFMGe(e _?@@_?#Ġ5H@?F(&=ZB@ x74  ` ' @  @"'  @a@ , @@X&D-3 Zv2fy\ B< 1p40  ` `Q%Q2:@SSQ 24SU#M1%:4PQ#M ]I%Rp @"'  @1z111111111Ͳ DISKETTE- and WINCHESTER-FORMAT-UTILITY for the JET Computer. Rev. D d }004ͲRequires CP/M Plus Version 3.0 to execute. !w&R(4Ͳ Requires the BIOS revision D to execute. >Ͳ Enter drive to format? ;!~ #~˯A8Q8<Ͳ Please, give a letter (A-P) followed by a colon. #2~: 1:A_288ͲRequested drive does not exist on this system. ~(F®ͲSorry. This logical unit is the second winchester-unit. ~2~G>_SNFN|(n fF(<"}2~N_P`hS{2Q<:02y"Ͳ ********** DRIVE CHARACTERISTICS ********** Ͳ Logical unit.....: :O:1Ͳ Physical size....: :82 5"1Ͳ Physical select..: :0O1Ͳ Number of sides..: :1( 1Ͳ Number of tracks.:*{1Ͳ Number of sectors:*{1Ͳ Sectorsize.......:*{1Ͳ Density..........: D:o(S1Ͳ Step-rate (ms)...: F:! !##~O#~O11>2Ͳ Confirm formatting of this diskette with YES ! ;!~#~˯Y#~˯E#~˯S:ͽ   >G (0Ͳ DRIVE NOT READY OPERATION ABORTED Þw(2Ͳ CANNOT FORMAT WRITEPROTECTED DRIVE! Þ>W(O(O !'+O(| 1Ͳ CANNOT FORMAT HARD SECTORED DISKETT Þ11>22!G@~X€2͍!4!< :G=2:~€ů2!5: )Ͳ DISKETTE SUCESSFULLY FORMATTED ÒͲ SEEK ERROR, OPERATION ABORTED >2Ͳ ********** DRIVE CHARACTERISTICS ********** Ͳ Physical winchester select.: :?????0OͲ Formatted capacity (KBytes):~/W~/_S~/O2G:O:O{Ͳ Number of cylinders........:*{Ͳ Number of heads............:g:o{Ͳ Physical sectorsize........:o:g{Ͳ Reduce Write Cylinder......:~/g~/o{Ͳ Write Precomp Cylinder.....:~/g~/o{Ͳ Sector Interleav Factor....:~/&o{112Ͳ Confirm formatting of this winchester drive with YES ! ;!~#~˯Y#~˯E#~˯SͲ FORMATTING....(BE PATIENT).........:/!/2v>wf; vf– ͲCOMPLETED. 222!">2l *[| } ~2Ͳ WINCHESTER VERIFIED WITH:og{Ͳ BAD TRACK(S). : Ͳ FORMATTING ALTERNATE TRACKS. >22!:O ~2#~2#~2K:_:G+:O{/2|/2}/2:<2; v^:^:^:f :!ʫ <2' Ͳ SECOND WINCHESTER UNIT MUST BE REDUCED WITH AT LEAST:=OGW:_:O{Ͳ kBytes. v>wf!>wv!f– ~2~2Ͳ VERIFYING: CYLINDER*{Ͳ HEAD :8Ϳ :!<(2 2*#"ɯ2K:_W:OG :OG:OG 0}/2|/2{!/2v/ !fP :y^!p^Ͳ WRITINGY:O:G:[*qwG:!N@>(2Ͳ WRITE TRACK ERROR F!4FͲ VERIFYINGY:2:  22!4~*+"^!Z@>!(U2:(Ͳ Ͳ *** READ ERROR AT SECTOR >2:81:! F!4F:og!&"*r"!>NP, ,>,>w#2>N,>2 ,>,>w###:w#:w#>w#>N, ,>,>w#:O:G  >, >w#6>N,!~4!8>N!":*"!(>,,>w#>,>2,>w###:w#:w#>w# >,,>w#:O:G  >, >w#>,!~4!8>wT]w(  8>N w#Ͳ  8  y0 0(O0OͲ TRACK :8Ͳ SIDE :8|() ^#V#>6?)@w){#{s333333.;;33,;;#wD{_#6 sO O ڹ.:;=,/[]<>a{Ҷ_#  ý Copyright (c) 1982, Digital Research 11/02/82 @ @NULL0LOADER0SCB []=, :;<>%\|"()/#!@&+-*? COMHEXRSX1###~ERROR: FILE: File not found.No directory space.Invalid file name.First submitted file must be a COM file.Duplicate input RSX...Duplicate RSX in header. Replacing old by new.Invalid RSX type.No more RSX files to be used.Error on copy.There are not enough available RSX slots.Disk read.Disk write.Total file size exceeds 64K.COM file found and NULL option.No header or RSXs to strip.Invalid FCB.Media change occurred.Disk I/O error.Invalid drive error.Invalid SCB offsetMissing right parenthesis.Missing SCB value.Missing left parenthesis.Unrecognized option.No modifier for this option.OPTION: This file was not used.GENCOM completed.Requires CP/M 3 or higher.1n$1n$" %* %|<Ó* %}0HÓ::$]Ç:$jZÇ:$wÇ:$҄ZÇer ͺv!n$q*n$& ͤ!p$p+q*o$~*o$Nͤ*o$#"o$  ͤ ͤ!r$p+q*q$DMͺ !t$p+q*s$!v$p+q*u$!x$p+q*w$!}$p+q*|$"y$*y$}2$|2{$!~$q*~$&,2$!$p+q*$!$p+q*$!$p+q*$!$p+q*$!$p+q*$!$q*$&-!;6:$!; *;&') N#F:2$!;4%:2$%ͻ2$!;6>!;S*;&/% 6!;48!/%6 !;6#6:; *;&*(~ HҞ*;&*(*;&/% w!;4#4`*;&/% 6.!;6 :; *;&*(~ H!;4#N*( *;&/% w!;4î!;p+q3r*;DMͺz/%ͺ!;p+q*;DM *y$}2;|2;:; F  :; T   :;x :;j $ :;x 4 !;q!;6*;&1 :/• >*;&1 :;© :;!;4 !;r+s+p+q+p+q !;6. *;~ *;~2;*;My 2$!;6:$ L :;  *;My 2$ ! . :;2$͌ :;2$2;*;~2;!;6*;~2;. *;~L ç *;N! *;*; =2;!;› !;6!;6:;!;ژ L :;ڑ 6 !;4z Þ 6 *;6͌ *;:;w:$$͂#+s#r :$ *$#"$ :L2$:;2;O*; ~2;*;&*;:/( !;4*;:;w*;&*;:; *;&*;~2; *;6*$~2; :;2;!;6*$#~2;!;4N*; :0f !;6| *;&*;:;| !;6!;4N*$ ~2;*;&*$~2;*;My 2$:$:$H:$H:$H !;4N*$ ~2;*;My 2$ä :;2$$͂##+s#r*$Ny 2$!L *$#"$ :$$#+";!;6:$!;P *;Nͤ*;#";!;41 !;p+qr*;DMͺ!;r+s+p+q*;DM͗ *;DM͗ *;~w*;*;~!;p+q*;>9Ұ *;~7w÷ *;~0w!;r+s+q+q*;:;~!;H IQ !;60!$6!;6*$#"$;+ͱ :;" rͺ :;2 !%6? :;? !%6:$H :$Q :$ˆ :;} rͺ;+ͱ È aͧ !%6:$‘ :$š :$£ *$#";*;Ny 2$ *$DM*;i *:&: w*$##"$ *$;i *:&: w*;"$!:4*$Ny 2$\Q *$#"$*$Ny 2$:$1*$#"$*$Ny 2$!L:$IY!M:$YwQ *$#"$*$Ny 2$!N*$#"$9*$0͸ *$#";*;Ny 2$!L:$£!M:$°6*$0͸ F*;0͸ *$DM*;i *:&v: w*$##"$2*$;i *:&v: w*;#"$Q !;p+q*;DM*O>0*;"( !;p+q*;DM:O>R*;"( !;p+q*;DMJ2$>!$y*;"( *( >Š*(DMͻO>ҟ*("(!;p+q*$"%*;"%*$"'%̀"$$#*'"( !;q!;6>!;*;&)))=% *;& *;& w!;4!;6 >!;F:;2;*;&; 6*;& 6!;4!;6> !;ڍ:;2;*;&% *;&; w*;&*(*;& w!;4K;ͫ2$>!$ҥ*'"(!;p+q!;6 >!!;*;&*;6!;4±!̓#+s#r!<5&*<$T :{$]*(DMZ!#:Q! <#:Q2<* !<ړ*<&* (6!<4w* (" (!<6*<&') ^#V"(x*(DM͋2$!)"<*<*<&$) N#Fq#px*(DM͋2$:)!)6*<&9 :)w!)6!)6!)6%͛2$!"$$*$*$"$!<4:$GT*<$#ã!!<ڸ*<&: 6!<4!\"<$w#s#r!n"<$w#s#r.:[ -!<6>!:H!<6::=!!!%(z:$/H!"$$#͞%U!$6̓!"<6:"<#ڀ*"<&( 6:"<<2"<_!"<6:$!"<ک*"<&$) >w#6:"<<2"<…!(" (* (:Ow:%/* ( :Ow* ( 6* ( :$w!"$:%:O2)x* (DM%͛2$>!$!%"( ):%/i:$R%͛2$*("(!"$$fx%͛2$!"$o!"$*$*$"$/!##"$*$DM*#w#6!)" (%͛2$* (##"*<**!(<ڋ*&<&)))9 *(<& *'<&)))9 *(<& w:(<<2(!(!%< *%<& * (*$<&)))9 *%<& w:%<<2%<!)" (!$6!,<6:$!,<*,<&$ 6!-<6:$!-<ں*-<&') ^#V"(!.<6>!.<ڑ*.<& * (*.<& *(ʇð:.<<2.!$:$_!)" (!,<6:$!,<r:,<<2,<* (#^#V"0<:$5~ *( 6x*(DM͋2$!0<#"$%͛2$*$DMi*0<"$/>>!)" (* ( ~2$ʃ҃* ( :$* ( w*("(* ( >Ҭf %͛2$:$~!"$$!"$$#*$"$*(DM1͞%U̓!)" (*("(!"$:%N:%/!$N!)6 *( 6*(DM͛2$:$H !"$:%1:$d~õ:$ʚ x*(DMZ:$ʚ:{$$͂#+s#r*(DMZy:{$$͂#+s#r!$#+s#r*(DMU:$/1*(DM1x*(DMͦ*(DM*(DM͋2$.)$ -:% !)6:O2) *( 6*(DM͛2$:$1 *(DM1!"$!3<6>$#_"*(DM͠*$~[h*( ~25<>!5<!6<6!4<6:5<=!4<*6<&*(*3<&)))=% *4<& w:6<<26<:4<<24<†*3<&% :5!%**(DM*O>S:%/P o:%o*( >o :% :$<2$23<!*3<&ͮ#% *3<&') q#p!4<6:$=!4< !5<6> !5<:3<=o&!ͮ#% *5<& !*3<&ͮ#% *5<& w:5<<25<³:3<=23<:4<<24<£R"*'"(X">!$҉!!$6!3<6:$!3< !*3<&') ^#V"(X#/b 'Ͳ"!*3<&% >x *3!$Ҙ Ͳ"!:3<<24<:$!4<!*4<&') ^#V"'!6<6>!6< *6<&*(*6<&*' :6<<26<¿ Ͳ":4<<24<Ÿ :3<<23<0 !$:$ !9!3<6!$:3<҄!*3<&$ ~24<:$=2$:4<26<:$!6!$ҹ! !O:) ":$!!$6!:%!%!!$6!!$6:)"!$6.;) -!2":$"!$62":%!%,"!$62" :"!$6:$/^"%ͦ%ͻ2$*(~2%%S!*3<&ͮ#% "(*3<&') q#p!4<6> !4<ڱ"!*3<&ͮ#% *4<& 6:4<<24<…" *$&$ :3 !6<#*5<&*7<*6<&*( w:5<<25<:6<<26<"!: !6:5<<25<:6<<26<:#>i`N#Fog_ogDM!>))덑o|gҨ# =–#DM!>))ҽ# =µ#^#V) #^#V|g}o #O{ozgi`N#Fogo&og_{_z#WTEMP $$$1TdCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH1512826543210123456789ABCDEF ERROR: $Reading file: $Writing file: $Directory full$Reading file: $Writing file: $Invalid drive.$) ? $) ? $) ? $Bad character, re-enter $ $ Disk read error: $File cannot fit into GENCPM buffer: $Unable to open: $BDOS3 BIOS3 Setting up directory hash tables: $ Enable hashing for drive $: $Unable to allocate space for hash table.$ Setting up Allocation vector for drive $ Setting up Checksum vector for drive $ *** Bank 1 and Common are not included *** *** in the memory segment table. *** $Number of memory segments $ CP/M 3 Base,size,bank ($) $ Enter memory segment table: $ Base,size,bank $Zero length segment not allowed.$Bank one not allowed.$ ERROR: Memory conflict - segment trimmed. $Memory conflict - cannot trim segment.$ ERROR: Memory conflict - segment trimmed. $ ERROR: Memory conflict - segment trimmed. $ CP/M 3 Sys $ Memseg No. $ Bank $ Accept new memory segment table entries $Default entries are shown in (parens). Default base is Hex, precede entry with # for decimal $ Use GENCPM.DAT for defaults $Create a new GENCPM.DAT file $Display Load Map at Cold Boot $Number of console columns $Number of lines in console page $Backspace echoes erased character $Rubout echoes erased character $Initial default drive ($:) ? $Top page of memory $Bank switched memory $Common memory base page $Long error messages $Double allocation vectors $Accept new system definition $ CP/M 3.0 System Generation Copyright (C) 1982, Digital Research $ BNKBIOS3 SPR$BIOS3 SPR$BNKBIOS3 SPR$BDOS3 SPR$RESBDOS3 SPR$BNKBDOS3 SPR$ 64K TPA Copyright (C) 1982, Digital Research *** CP/M 3.0 SYSTEM GENERATION DONE ***$!Tq:UM*T&!Tp+q:Ud*T !Tp+q*T#6:UҀ:Tڀ*T *T#N! *T6 7 7!Tr+s+q+q!U6N*TDMN:TTN͜:T.:T/!U!]6 !m6 !Tp+q *T 6 *T 6*T!Tp+q*T!Tp+q*T!Tp+q*T] ͧ!Tp+q*T} ͧ!Tp+q*T ͧ *T 6!Tp+q*T!Tp+q*T! ͧ!Tp+q*T" ͧ!Up+q*T$!Vr+s+p+q+q:V *V*VDM*V -- !Vs+p+q:VJ *V*VM!VLS!Vq:V e > :Va/>z!V/H҄ :V_2V:V!Vq:V/>!V/HҦ >ͧ>!Vp+q(7*V~ Y7 N7NTe:T *TMV Y*Vw!Vq:VO! N7:VO! N7!Vp+q 7*V|O *V}O H7!Vq*V&+SDM$ !Vp+q!V6!V60!'"V>V͇S† *VM7 !V6>!V VVzSڽ !V6:V<2VVVzS+s#rÔ :V *VM7!V60*V! S"V:V<2V‹ !Vs+q(7:V  #7*V&DMZ  *VM N!Vs+p+q+p+q :T: ͜*V6:V<2VO!T NV 2V  :V,u *V#"V*V6!V6 :V#… !V6  :V02V:V> !VHҽ >!VҸ :V2Vý !V6!V:V *V^*V&+S*V& *Vq !V6*V6ͧ *V6? ͜*VDMN*V~  (7*VN !V6>!Vn *V#"V:V:-Q/HX *V6d ,7*VN :V<2V, *V++"VNÊ *VN*V !V6!V6Te!Vr+s+q:-Q/Ү >!V6#q#p!V6:5Q!Vڳ*V&+SFQ  VzSک:VM*V&+SFQ  ~*V&+SFQ  VzSHJ:V2V*V&+SFQ  ^#V"Vé*V&+SFQ  ~*V&+SFQ  VzSHҩ:V2V*V&+SFQ  ^#V"V:V<2V¿ :V:VH`!V6:5Q!V`*V&+SFQ  VzS/*V&+SFQ  ~H*V&+SFQ  VzSHV:V2V*V&+SFQ  ^#V"V:V<2V:V!$V6!U6ͬ#Q$!H> U͇Sʔ* U|2Uß*U|2U!U:.Q2T*U|!UO:/Q2T*U|O:T2TUTI:-Q/!$V>O:T2T* U|O:T!$V2T:T=2T* U|O:T2TҮ:-Qқ*nV*U*V |!UO:/Q2T*U|O:T2T2Uͬ:U/Ҙ!!V6>!!Vژ*!V&$SQ  6:!V<2!Vsà!U6:V/ҫ*:U2T:T2TTͩ:-Q*T&+SDM*U*T&+SDM*U:-Q/&:U2!V!""V*!VM"V͟:!V2U! U6Û*U|!U2!V* U|!Uo&)##""V*T&+SDM*!V*!VM"V͟:!V2 U:U2!V!""V>T͇S+s#r*!VM"V͟:!V2U* U|!$V2T:T2T U(T(TͩC*$V&+ST͊S+s#r* U|!$V2!V:-Q/ *T&+SDM*!V"*T&+SDM*!V*!VM"V͟:!V!Uw:-QҢ!T6:T2TULTLTͩ*U|2!V*U|!Uo&)*"V""V*T&+SDM*!V*!VM"V͟:!V! Uw:,Q/Ҳ:V2V *V&U  :T2T*T&! S!0*V& U q*T&! S0*V&!U q:V 2V*T&+S"!U$-U RUW !T6#6#6:.Q2U:/Q2UTqT TyT Uͧ pT !T6Uͧ pT pT :;Rһ!;R6:%V2.Q:4Q/24QTT TT L!U6N!Vr+s+p+q*V6 *V#6 *V|O! *V## w*V|O! *V w*V}O! *V w*V}O! *V w!T:TO`iPSW "V*V :0Qw*V :2Qw*V :1Qw.*V :3Qw*V :4QwX*V   :+Q/ҼW*V >*V w:@*V wW*V >*V w^*V :/Qw!)X"V*VN#F!W "V*V"V*V͕S(!$V6-!$V6*VSD*VWR!"&V!V6&VS!V6>!Vڷ*V&)*&V>͒Sʭ*V&)*&VWR"(V*(V ͕Sʭ!V6:V<2Vf:-Q/!V!$V6!$V6V>X W*V"V*V~>>!Vs+p+q+p+q%N*VDMN 7*VDM$  7*VME :,QҨ *V&U *VDM :V 2V*V&U DM*V:V2V*V&U *V&+S:V2V*V&U ) :V2V!Vp+q*V"TͣN,ͧ*VDM !Vr+s+p+q*V^#V"T*V##^#V"T*V ^#V"T*V#DMT  *VDMT *TZSU͊S@?ͧ*T+ZS}<2V!V6!V:V҆*V&+SW "TDMͧ *VDM> :V<2VS*TDMO W*T"T!Vr+s+q:VGTqT TyT *Vn}2T*V#~2TpT WTS}pS}TR+s#r*V&)+!Vs+6:V!V4>T͇S+s#rBKͧ pT^ :V<2VpT *VT :-Q/k)Tw T z!LT"V!U"V͙!T"V!U"V͙!(T"V! U"V͙*V#DMT  *VDMT *VDMeͧWͧ *VDM> *V*Ws#r*V##*Ws#r*V *Ws#r*VDM> !V6&VS(>!V6>!V*V&)*&V>͒S*V&)*&VWR"(V *(V## *(V ͕S*(V ͕SH*(V ͕SH*(V ͕SH*(V ͕SH!V6:V<2V-:V!V6!V6!V6>!V*V&)*&VWR"(V*V&)*&V>͒S*(V S?!V6*(V ͕S:V/c!V6N:VO!=R ~2T *(V WR"*V**V N#F`i))"VN:VAO7N*V&6Q DMʹ ͜*V&6Q ~/*(V q#p:-Q/!V6*V&,V) *Vs#r*V*LV"LV*V͛ 2V'ͧ*V&+SFQ  *(V w*V&+SFQ N`iPS*V&+SFQ  N`iPS*V&+SFQ  ͕S *(V q#p*V&+SFQ  VzS*V&+SFQ  q#p:V<2V:-Q/!V!$V6:T<<2T:T<<2T!V6>!V8*V&NV) >w#6*V&pV) >w#6:V<2V:!Vڡ*V&)*&V>͒Sʗ*V&)*&VWR"(V *(V WR"*V*(V ͕SN:VAO7:7!V6**V ^#V!S*V&+S*V&NV) q#p*V&NV) nVR+s#r*(V ͕S—'N:VAO7:7!V6**V >R!S*V&pV) s#r*V&) VR+s#r **V R*V&pV) CS **V q#p:V<2Vk:Vҫ͜:T2FQ!T:/Q2GQ!"IQ!HQ6!V6ON:GR2T 5Q N*FQM ,7*GQM ,7*HQM N:V/҈!N!V6:5Q!V !V6:V/ :V =O!=R ~2T*V&+SFQ DM *V&+SFQ  N`iPS*V&+SFQ  q#p*V&+SFQ  ~ͧ *V&+SFQ  ~7ͧ *V&+SFQ ~2V*V&*V&+SFQ  N "V*V|*V}O:/QH҆MN!V:/Q*V&+SFQ  Hq!V:/QO`iPS*V&+SFQ  q#p *V}2V!V6!V6!V:V# *V&+SFQ ~2V*V&+SFQ  :V2V*V&+SFQ  *V&+SFQ  !V:V/+~!V/H+ |ͧ!V6 :V!V+~!VHc N*V&+SFQ :Vw!V6 :V!V+~!VH N!V:V*V&+SFQ  Hq!V:VO`iPS*V&+SFQ  q#p!V6:V<2V×1:V<2V"͜!V6:5Q!Vo!:V!N!N:V=O *V&+SFQ NE *V&+SFQ  NE :-Qb!N*V&+SFQ  N ͜:V<2V !T6!V6%NVʹ ͜PNT2V!TT TT N!V6Vʹ ͜:V!FT !!U6+6!W6͌!:W/җ#:R2T͜N;Rʹ :=R2T͜͜N,Qʹ ͜͜:>R2T:2Q<22Q  2Q :2Q=22Q:?R2T:1Q<21Q' 1Q :1Q=21Q:@R2THN3Qʹ ͜:AR2TkN4Qʹ ͜͜:BR2TN:0QAO7NTe:T"*TMV A2W*WM͈ /"Þ":W20Q͜͜:CR2T.Q *.Q&PS"U:DR2TN-Qʹ ͜:-Q/2T:-Q[#:ER2T/Q ͜:FR2TN+Qʹ ͜x#:R2T͜N!W#*W&U 6:W<2W#!W6>!W $*W&U 6$:W<2W#!V6*V&U  !V6TqT TyT Wͧ pT^ pT^ WS#ZS"U!W6>!Wڋ$*W&,V) >w#6:W<2Wh$!"LV:]A$!U6#6!W6>!W$*W&=R 6:W<2W¦$$!U6#6:mD$!U6!T6 Available space in 256 byte pages: $TPA =$, Bank 0 =$, Other banks =$Unable to allocate Dir deblocking buffer space.$Unable to allocate Data deblocking buffer space.$Unable to allocate Data deblocking buffer space.$Drive specified has not been defined. $0FFFFH is an invalid value in the DPH directory BCB address field.$ Setting up Blocking/Deblocking buffers: $ The physical record size is$: $ *** Directory buffer required *** *** and allocated for drive $: *** $ Overlay Directory buffer for drive $: $ Number of directory buffers for drive $: $Minumum number of buffers is 1. $ Number of directory buffers for drive $: $ *** Maximum number of directory buffers *** *** for the current drive is$. *** *** Number of directory buffers reduced *** *** accordingly. *** $ Share buffer(s) with which drive ($:) ? $ *** Data buffer required and *** *** allocated for drive $: *** $ Overlay Data buffer for drive $: $ Number of data buffers for drive $: $Minumum number of buffers is 1. $ Number of data buffers for drive $: $ Share buffer(s) with which drive ($:) ? $ Allocate buffers outside of Common $ Accept new buffer definitions $!W6>!W**W&)*&V>͒S**W&)*&VWR"(V ͕S*(V ͕SHҸ* *(V WR"*V**V ^6 *W&$SQ q#p*W&$SQ  6*(V ͕S*%ͧ!W4*!W6>!W+!"HW}2W>!W=+*W&$SQ HW|S ~H6+*W&$SQ ^#V"HW!W4**W&))lW *HWs#r*W&))  >w#6!W6>!W+*W&$SQ HW|S>͇SH+*W&))lW  *W6 DS+s#r*W&$SQ  6!W4h+!W4*!W6>!W7,*W&+SFQ  *W&W) N#Fq#p*W&+SFQ  *W&7W w!W4+:-QF,!fW6K,!fW6 !W6:W4:fW=2iW!"gW"dW}2 W! W6*T&PS*LViS"bW:-Qڞ,nVbWzS*ViS"bW!W6>!W,*W&W) *W&+SKQ  N#Fq#p*W&$SQ  6!W4£,!W6! W6#6!W6n&))lW  ^#V"JW*W&))lW >͒S:WH3:WE-1&N!W6]&N*W&))lW N#F$ {&N!W6>JWR>fS:WHҚ-!JWVS+s#r!W4g-!JWVS+s#r:W3*W&)*&VWR"(V WR"*V >RZS"^W **V ͕S-!W6-!W6*(V ͕Sc0bB*W&$SQ  >w:-Q.: Wd.! W6*W&$SQ  6&N:WAO7&N.:W{O!=R ~2T&N:WAO7'N*W&$SQ  DMʹ ͜*W&$SQ  ~.*W&$SQ  6.*W&$SQ  6t/:W;O!=R ~2T'N:WAO7>'*W&$SQ  DM  : Wt/! W6*W&$SQ  ~t/A'ͧb'N:WAO7'*W&$SQ  DM  &/*W&$SQ  ~^W͇Sҹ/'N*^WDM$ 'N*W&$SQ  *^Ws*W&$SQ  ~R0:W[O!=R ~2TM(N*W&$SQ  ~AO7(NTe:TL0*TMV A2 W* WM͈ *0/* WMF80/*W&$SQ  : Ww͜c0*WMTCc0 4*(V ͕Sn3!W6*W&$SQ >͒S°0*(V q#p*W&$SQ  6n3bB*W&$SQ  >w:-Qګ1: W1:W1! W6!W6*W&$SQ  6(N:WAO7(N1: W1!W6! W6:Wʨ1:WƋO!=R ~2T(N:WAO7)N*W&$SQ  DMʹ ͜*W&$SQ  ~ґ1*W&$SQ  6è1*W&$SQ  6! W6S2:WKO!=R ~2T)N:WAO76)*W&$SQ  DM  *W&$SQ  >w: WS2! W6*W&$SQ  ~S29)ͧZ)N:WAO7)*W&$SQ  DM  2*W&$SQ  ~$3: WҌ2! W6*W&$SQ  :Ww 3:WkO!=R ~2T)N*W&$SQ  ~AO7)NTe:T 3*TMV A2 W* WM͈ 2Ü2* WMF2Ü2*W&$SQ  : Ww͜*W&$SQ  :Wwn3:U!W]3:W+O!=R ~2T)N*W&$SQ  DMʹ ͜*WMTCn3 4! W6*W6 dWDS+s#r!W4>JWR>fS:WHҿ3!JWVS+s#r!W4Ì3!JWVS+s#rç-!W4n&))lW  ^#V"JW-!T6!W6:W 4bB)NWʹ ͜P,!"PW}2Wo&"TW2W>!Wu5*W&$SQ  ~n5*W&$SQ  ~ >Hһ4:-Q|4!W4á4*W&$SQ !^N#F-S*TW"TW*W&$SQ  ^*PW"PW*W&$SQ  ~ >Hn5:-Q/5!W4*W&$SQ  ~,5*W&$SQ !^N#F-S*TW"TWT5*W&$SQ !^N#F-S*TW"TW*W&$SQ  ^*PW"PW!W4#4*fW&*PW+S*W&) "RW:-Q9W*U"jW*RW*U*TW *LV *V *nV |O:.QO:T2UO:T2T:T2T:T2T|2U!T2.QW"T*T&PS*U "ZW*RW "VW*T"`W*`WW !T͕SC6*`WW 6*`W#"`W6!W6n&))lW  ^#V"JW*W&))lW >͒S:WH9!W6>JWR>fS:WHҶ6!JWVS+s#r!W4Ã6!JWVS+s#r:W8*W&)*&VWR"(V*W&$SQ  >«7*W&$SQ  ~h7*jW6 *jW *VWs#r*W&$SQ VWR+s#r*(V *ZWs#r:fWZWR+s#r:fWjWR+s#rë7*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r*W&$SQ  >£8*W&$SQ  ~48*jW6 *jW *VWs#r*W&$SQ VWR+s#r*(V *ZWs#r:fWZWR+s#r:fWjWR+s#rã8*(V"LW*W&$SQ  >o&)*&VWR"(V!Q  >ʂ8*(V ^#V"NWÐ8*(V ^#V"NW*LW"(V *NWs#r!W4>JWR>fS:WH8!JWVS+s#r!W4ç8!JWVS+s#r6!W4n&))lW  ^#V"JW\6!W6>!Wc9*W&,V) >͒S\9*W&)*&VWR"(V *VWs#r*W&,V) VWR+s#r!W4 9!W6>!W9*W&)*&VWR"(V*W&NV) >͒Sʽ9*(V *VWs#r*W&NV) VWR+s#r*W&pV) >͒S9*(V *VWs#r*W&pV) VWR+s#r!W4h9aB!W6>!W::*W&W) *W&+SFQ  N#Fq#p!W4:*V*RW*nV "RW> U͇SUzSH҇:*TW*U|O:.QO:T2Uá:*TW* U|O:.QO:T2U!U:T2T:T2T:T2T:.Q2.Q* U}pS} URU͊S"`W> U͇SUzSHB;*RW|O:/Q2T*U}pS}URW"\W*T&PS"XW*T&PS*U "VWÇ;*RW*`W|O:/Q2TW*U"\WO`iPS*`W "XW*T&PS* U "VW*RW*\W"T*U|O:T2T*W&)*\W"jW*XW"ZWWTS"U*T"`W*`WW !T͕S;*`WW 6*`W#"`W;!W6!W6!W6:5Q!WS<*W&+SFQ  2W!FQ  ~:W!WHL<:W2W:W2W!W4;:T2FQ!T:/Q2GQ:W<*W&+SFQ  O:T<*W&+SFQ  N`iPS!͕S"`W!FQ :T w*W&+SFQ  N`iPS*`WiS!q#p!W6n&))lW  ^#V"JW*W&))lW >͒S:WHғA!W6>JWR>fS:WHh=!JWVS+s#r!W45=!JWVS+s#r:WxA*W&)*&VWR"(V*W&$SQ  >0?*W&$SQ  ~>*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r0?*\W*ZWs#r*(V *XWs#r*XW##"XW*\W##"\W!W6*W&$SQ  ~!W ?*W&$SQ ^#V͛ 2W*jW6*W&+SFQ N`iPS!N`iPS!͕S  *jW q#p *jW 6*W&+SFQ  *W&$SQ |S+s#r:fWZWR+s#r *jW s#r:fWjWR+s#r!W46>:fWjW͇S+s#r! >w#6:fWjWR+s#r*W&$SQ  >1A*W&$SQ  ~¤?*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r1A*\W*ZWs#r*(V *XWs#r*XW##"XW*\W##"\W!W6*W&$SQ  ~!W A*W&$SQ  ~ҩ@*W&$SQ ^#V͛ 2W*jW6*W&+SFQ N`iPS!N`iPS!͕S  *jW q#p*W&+SFQ   *jW w*W&+SFQ  *W&$SQ |S+s#r@*jW6 *jW *VWs#r*W&$SQ VWR+s#r *jW 6:fWZWR+s#r *jW s#r:fWjWR+s#r!W4?:fWjW͇S+s#r! >w#6:fWjWR+s#r!W4>JWR>fS:WHhA!JWVS+s#r!W45A!JWVS+s#ru=!W4n&))lW  ^#V"JW=!W6>!WA*W&7W *W&+SFQ  w!W4˜A!W6>!WaB*W&)*&VWR"(V*W&NV) >͒S"B*(V *ZWs#r*W&NV) ZWR+s#r*W&pV) >͒SZB*(V *ZWs#r*W&pV) ZWR+s#r!W4A!"W"W!W6:5Q!WB*W&+SFQ  ~¶B*W&+SFQ  VS*W"WB*W&+SFQ  VS*W"W!W4pB$N%N!bWVSDM$ :-QMC%N*WDM$ :U C$%N*WDM$ >W͇S>W͇SHHC!W6MC!W6͜͜!Ws+q*W&$SQ ^#V"W:-QڋC:fWWRbW͊S+s#rF!iW55:W®D*W&$SQ  ~2W!W6:W!WګD!fW:iWYD!iW6*gW#"gW!W6!W6!W6:5Q!W7D*W&+SFQ  2W!FQ  ~:W!WH0D:W2W:W2W!W4C*W&+SFQ  S+s#rcD!fW:iW2iW*W͛ 2W…D4%ͧ>äD*W&+SFQ  WzS+s#r!W4±CF*W&$SQ  ~2W!W6:W!WF!fW:iWoE!iW6*gW#"gW!W6!W6!W6:5Q!WME*W&+SFQ  2W!FQ  ~:W!WHFE:W2W:W2W!W4D*W&+SFQ  S+s#ryE!fW:iW2iW*W&$SQ  ~ڼEWbWzS+s#rYS:/QpSҹEd%ͧ>E*W͛ 2WE%ͧ>E*W&+SFQ  WzS+s#r!W4D>!Wq*W6 dWR>fS'F>%ͧ>ERROR: $ at line $Missing parameter variable$Equals (=) delimiter missing$Invalid drive ignored$Invalid character$Invalid parameter variable$!"WWͧ !W6!W6:W GG:WG͈K2W:WFIGF GF!Wr+s+q:U2W!U65FN*WDMN>FN*WDMZ :WCG.͜:W2U:WoG!W6TlG!W6sG!W4MG*W&W ~2W:W :W H:W HG:W ·G*W#"WMG*W&W ~2WÄG:Wa/>z!W/HG:W_2W:WG!W6:W!W6:W/:W/HI!W6>!W/H*W&W 6 !W4HtG2W!W6:W:W=H:W H:W/H~H*W&W :WwtG2W!W4:H:W=:W H:W/HҧHtG2W~H:W I:W=>!WHH!W6 I:W=HHF GH:WHcF G:W :W/H ItG2WHGtG2W!W6!T:W:W H:W/H[I*W&T :Ww!W4~`i+wtG2WI:W :W/HxItG2W[I!W6#6>!W҇K *W&+S P  ^#V"W! P  ~2WJ:WI:WA2WI:W0/>9!W/HI:W02WI:WA 2W *W&+S P  ^*W&+S*W"W*W&T ~?[J *W&+S P  :WO!=R 6!U6!W4!T5>!T҇K:WʧJ*W&T ~A/>P/HҜJ*W&T ~A*WwäJF GÇK:WJ*W&T ~Y*WwÇK!W6*W6!W6:T=!WڇK:W!WO!T ~2W, K*W#"W6!W6ÀK:W#K!W6 ÀK:W02W:W> !WHQK>!WLK:W2WQK!W6!W:WxK*W^*W&+S*W& sÀKF G!W4J!W6!W6:W:W/HK!W6:W *W&+S P *W& *W&W HK!W4éK:WK!W6K!W4ÒK:WL>:WWͧ T. T~ !W6!W6>!WN!W6#n& +S P  ~2W!W6:W:W/H N!W6>!WڞL'N *W&+S P *W& *W&W w!W4gL:W°L!W6L:WL:WA*W&W wL:W L:W0*W&W wL:WA *W&W w'N*W&W 6 'N*W&W 6='N*W&W 6  *W&+S P  !^*W&+SR"W:WmM'N*W~A*W&W wM:WʞM'N*W~ҐM*W&W 6YÛM*W&W 6NM*WNbN:WM'N*W&W 6,*W#"W*WNbN'N*W&W 6,*W#"W*WNbN'N*W&W 6 'N*W&W 6 !W4PL!W4'L>!W NT^ T :W]NT^ !W6>!WUN*W&W 6!W4:N!W6aN!W4!Wq'N:WO! *W&W w'N:WO! *W&W wO*TDM}oN*T†O]!O> 2 PW:TgxʀO { O: PO*T!O†O~#o}o|O<O:TzO<.O:TƜzO<8O:TzO:TzO:TotOzO:TgN!|!|PRTMSG ,QPAGWID 2QPAGLEN 1QBACKSPC 3QRUBOUT 4QBOOTDRV 0QMEMTOP .QBNKSWT -QCOMBAS /QLERROR  +QNUMSEGS  5QMEMSEG00 KQHASHDRVA6QALTBNKSA +QNDIRRECA ;QNDTARECA KQODIRDRVA [QODTADRVA kQOVLYDIRA {QOVLYDTAA QCRDATAF ;RDBLALV ))덑o|gS =S^#V))) DM!>)):S =2S_og^#V) PS^#V|g}o ZS_{ozgO{ozgi`N#Fogo&og_{_z#WBNKBIOS3SPRRESBDOS3SPRBNKBDOS3SPRCPM3 SYSGENCPM DAT . $PRTMSG = Y PAGWID = 4F PAGLEN = 17 BACKSPC = N RUBOUT = N BOOTDRV = A MEMTOP = FF BNKSWT = Y COMBAS = C0 LERROR = Y NUMSEGS = 01 MEMSEG00 = 0F,73,00 MEMSEG01 = 0D,84,00 MEMSEG02 = 00,C0,03 MEMSEG03 = 00,C0,04 MEMSEG04 = 00,C0,05 MEMSEG05 = 00,C0,06 MEMSEG06 = 00,C0,07 MEMSEG07 = 00,C0,08 MEMSEG08 = 00,C0,09 MEMSEG09 = 00,C0,0A MEMSEG0A = 00,C0,0B MEMSEG0B = 00,C0,0C MEMSEG0C = 00,C0,0D MEMSEG0D = 00,C0,0E MEMSEG0E = 00,C0,0F MEMSEG0F = 00,C0,10 HASHDRVA = Y HASHDRVB = Y HASHDRVC = Y HASHDRVD = Y HASHDRVE = Y HASHDRVF = Y HASHDRVG = Y HASHDRVH = Y HASHDRVI = Y HASHDRVJ = Y HASHDRVK = Y HASHDRVL = Y HASHDRVM = Y HASHDRVN = Y HASHDRVO = Y HASHDRVP = Y ALTBNKSA = N ALTBNKSB = N ALTBNKSC = N ALTBNKSD = N ALTBNKSE = N ALTBNKSF = N ALTBNKSG = N ALTBNKSH = N ALTBNKSI = N ALTBNKSJ = N ALTBNKSK = N ALTBNKSL = N ALTBNKSM = N ALTBNKSN = N ALTBNKSO = N ALTBNKSP = N NDIRRECA = 20 NDIRRECB = 20 NDIRRECC = 40 NDIRRECD = 00 NDIRRECE = 20 NDIRRECF = 20 NDIRRECG = 08 NDIRRECH = 08 NDIRRECI = 01 NDIRRECJ = 01 NDIRRECK = 01 NDIRRECL = 01 NDIRRECM = 01 NDIRRECN = 01 NDIRRECO = 01 NDIRRECP = 01 NDTARECA = 00 NDTARECB = 00 NDTARECC = 00 NDTARECD = 00 NDTARECE = 00 NDTARECF = 00 NDTARECG = 00 NDTARECH = 00 NDTARECI = 01 NDTARECJ = 01 NDTARECK = 01 NDTARECL = 01 NDTARECM = 01 NDTARECN = 01 NDTARECO = 01 NDTARECP = 01 ODIRDRVA = A ODIRDRVB = A ODIRDRVC = A ODIRDRVD = C ODIRDRVE = A ODIRDRVF = A ODIRDRVG = A ODIRDRVH = A ODIRDRVI = A ODIRDRVJ = A ODIRDRVK = A ODIRDRVL = A ODIRDRVM = A ODIRDRVN = A ODIRDRVO = A ODIRDRVP = A ODTADRVA = A ODTADRVB = A ODTADRVC = A ODTADRVD = A ODTADRVE = A ODTADRVF = A ODTADRVG = A ODTADRVH = A ODTADRVI = A ODTADRVJ = A ODTADRVK = A ODTADRVL = A ODTADRVM = A ODTADRVN = A ODTADRVO = A ODTADRVP = A OVLYDIRA = Y OVLYDIRB = Y OVLYDIRC = Y OVLYDIRD = Y OVLYDIRE = Y OVLYDIRF = Y OVLYDIRG = Y OVLYDIRH = Y OVLYDIRI = Y OVLYDIRJ = Y OVLYDIRK = Y OVLYDIRL = Y OVLYDIRM = Y OVLYDIRN = Y OVLYDIRO = Y OVLYDIRP = Y OVLYDTAA = Y OVLYDTAB = Y OVLYDTAC = Y OVLYDTAD = Y OVLYDTAE = Y OVLYDTAF = Y OVLYDTAG = Y OVLYDTAH = Y OVLYDTAI = Y OVLYDTAJ = Y OVLYDTAK = Y OVLYDTAL = Y OVLYDTAM = Y OVLYDTAN = Y OVLYDTAO = Y OVLYDTAP = Y CRDATAF = N DBLALV = Y LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,FDRIVES,SCB,EXTMEM LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,WDRIVES,SCB,EXTMEM GET 1âCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321SYSIN $$$Getting console input from $INPUT~FROM~FILE~STATUS~CONDITIONAL~FALSE~TRUE~CONSOLE~CONIN:~AUXILIARY~AUXIN:~END~CON:~AUX:~NOT~ECHO~FILTERED~SYSTEM~PROGRAM #).6=GNRW\`enu|[]=, ./;Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File not found$Enter Password: $file: $SUBMIT of $GET from $ stopped$console$GET from $ stopped$console$Requires CP/M 3.0$CP/M 3 GET Version 3.0 $Get console input from a file $Enter file: $11N}0N|HG+\Yr'2ͅ !6 *& 6+!6:!D*& NZ *& w!4!":2"ͱ!6*& ~ w!4a!"+~2*& "!6!6%*: : H:HI%*:%*:%*:!6*DMͱF: : H:HÀ Fͻ : T :: H: Hғ: †̀ Ó%*:¨%*:½%*:*DMͱ:: H: H̀ ͻ v!q*&!p+q* !s+p+q*:w#6* *#"N#Fy  !p+q*!p+q*!q*&-!q:2!61!s+q:2!6*&"1m!p+q*m!p+q*<!q!6*&: >*&: :":!4!r+s+p+q+p+q: Di !6ͯ*~ʙ*~2*M2!6::ڃÓ*M2nãͯO:2 :22*~2!6*~2ͯ*~)*N! ** =2!!6!6:!:ø!4 ø*6 *:w:+s#ri :S*#"X!6:2O* ~2*&*:9ʩ!4*:w*&*:˜*&*~2j*6*~2Y:2!6*#~2!4N* :!6*&*:!6!4N* ~2*&*~2*M2:> !HV !4N* ~2*M2% :2#+s#r*N2!E„ *#"i   !s+q+p+q:=2ʺ *:w*#"Ý !q!6*""͐2:( !6(*&*&!s*&!s:C ::H, *+"C :C :++s#rͅ !6:!i *"*M !4K *M :Ҁ FÆ Y:Aґ ͅ *M! ^#Vp      ͅ !q!6:! *N*#"!4 ͅ !6:!V *!C !6^H  *#"!4 ͅ !q:at :{t : :OZ 2:ͅ ͅ l ͐ !6>! x 2 *&l :w:  : Ò : : Ò :=2O!l 6 ë : !4¢ W2!p+q*~A *~@O:!6> !ڄ : \ .*&*~ } *&*>O!4F ">ʰ *++"~Ұ "lp̀\`"̀*} *|2 : ͆ ͅ lp\`" *"ͻ ͐0 ͅ \ ͯ!p+q!6+6>!W *M[ :O[ !47 :!q*&*>*& z !6: ʍ ͻ "> "*DM) ҽ  *DM ͅ Í #: ͻ ">7*DM) 7"+*DM 6ͅ ">[?p͐0hͅ *DM !q"!+s#r:ʨ:=+s#r*DM!p+q*"!\"b"ͻ >ͅ *#"*~[ͻ :: H'%*:„:?ͻ %*:\yÁ:lyÁ:|yÁͻ $!6:£!6%*::Һ!6ÿ!6$::!6!6$::!6!6$::!6!6$ͻ ͅ !p+q*~ ~ HR*#"1*~^>>!`i^#V#~#fo͟]ƒywôG:±xAa{Ҙ_ ʫ ʫß`i~#~2#~2#~2*| \!\~2.n~`>26!.t~:s}>26!N#F#*"^q#Vp"N#F##"^q#Vp"4!7 !6ë7 \\m>_ 1:~# yɍWARNING: Cannot redirect from BIOS $ERROR: Auxiliary device redirection not implemented $ERROR: Insufficient Memory $""SYSIN SUB_og_ogDM!>))덑o|g =_og_{ozgi`N#Fogo&og~FGET :<***.n6.t6 LL!p:~y !6 <ʊ~"x!F#fh!:~!«!>w~:!5*.~w:; :~!9"1W:.~ !5< W@w.tEy!h g ={  ͩ* . +6.w   *ͩ2*.6#6*.~w#~=~# Ʌo$x(\!54  !F6ȷx(\>^\@_: N#x€ʹ> ʹ ʹŸ*.>wm#wM~xµmp> \ 8>""SYSIN SUB  hhhhhhhhhhhhhh 151282 COPYR '82 DRI gggggggggggggggggggggggggggggg"D! BH!!$@ !HA@  H!@  @BP1?:P2ÄCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321 ERROR: $ $ Press RETURN to continue $ $Reading HELP.HLP index.$Too many entries in Index Table. Not enough memory.$ $ Creating HELP.HLP....$$ HELP DATHELP.DAT not on current drive.$Too many entries in Index Table. Not enough memory.$$ HELP HLPUnable to Make HELP.HLP.$Writing file HELP.HLP.$Writing file HELP.HLP.$Closing file HELP.DAT.$Closing file HELP.HLP.$HELP.HLP created $ Extracting data....$HELP HLPUnable to find file HELP.HLP.$HELP DATUnable to Make HELP.DAT.$Writing file HELP.DAT.$Unable to Close HELP.HLP.$Unable to Close HELP.DAT.$Extraction complete HELP.DAT created $ Topics available:$ ENTER .subtopic FOR INFORMATION ON THE FOLLOWING SUBTOPICS:$ $ $ $Reading file HELP.HLP.$ HELP> $Requires CP/M Version 3$,HELP HLP HELP UTILITY V1.1 At "HELP>" enter topic {,subtopic}... EXAMPLE: HELP> DIR BUILT-IN $? HELP Topic:$Not found$No HELP.HLP file on the default drive.$1?1?!E6!,6͈"-*-|*-}0HҷN1=2/1<_! p{201!C6!C6ͷ 2j:A+::BJ: \u\͡2 :?/;1X:j\!)6X!,62j:j&!)61x͛zdʛ͚=x͛˜!)6,V 2E H:E/ ,V 2E:E/ IX,V 2E H*jM.,V 2E H,V 2E HPX,V 2E H!)6:E/2j\\2D:ZNEv!Kq*K&!Mp+q*L !Op+q*N !Pq*P& !Rp+q*Q!Tp+q *S 6 *S 6*S!Vp+q*U!Xp+q*W!Zp+q*Y!\p+q *[ 6 *[ 6*[!^p+q*]!!`p+q*_!bp+q*a$!er+s+qX*dDMXX:ctE!jr+s+p+q+q*f*gDM*i -’!nr+s+p+q!o6#6:p *p&*k~ H *p&*k*p&*m  *p&*k*p&*m  !o6 !o6!p6 :p<2pí:o!qq:q<2q>!qR \H !q6R !E6!q6:q!sp+q!t6:@/!C *r~<*rwO:/ X*r6*r~ž x*rwÉ X*r~½ \*rwE *r~ !t6*r6  H *r6 H:tͼ"u*u"w!{6!"y:{/>!wH҇ >y)))) DM%\O \o&"yN*y)))) ~$e !{6:{/҄ >w+s#r*y"y %>w:{/HҶ \o&"yN!|6:! !|6:!| *|& ~ *|& 6 *|& ~, *|& 6 :|<2| !|6!:|*|& ~ HA :|<2| *|& ~.d :)2}*|& 6 i !}6:}2|> !|ڛ *|&͏x u:|<2|o :}2|!~6!6#6*~& ~:/H! *~& ~  !6*~& ~ *~& ~[H*~& ~H: :| HHҥ *~& >`*~& ~{Hp *~& ~ *|&͏x *& HqÔ *~& *|&͏x *& w:~<2~:<2 :|<2|> !|! !6 *~& ~[ :|=o&͏x ~ :|=2|*|&͏x 6 [:~<2~:|<2|!6 :~<2~î !?6#6#6#6>!|'!6: '*&͏x ~[*&͏ ~C !A6:|==2|*&͏ ~E¤ !B6:|==2|*&͏ ~N !@6:|==2|*&͏ ~L !?6#6:|==2|*&͏ ~ :|==2|:|=2|!6 :<2= :|&X!6>!` *&)))) >u:<26!6>#w#6ͼ"*" \Ju\͡WN!E6:E/\H"!6:ր:E/H*& ~!E6*& ~/!6:E/*& ~/H**M! 2:<2::E/H*& ~0*))))  w*M! 2!6: :E/H*& ~ H*& >`*& ~{H*& ~ *)))) *& w*& *)))) *& w*M! 2:<2i:E/\5*))))  }u*))))  #~u*))))  N#F *))))  q#p*))))  :w*#"*!p>ͭ:<2>+s#r>:E/H\2vN*"*! *)))) u*"*M! 2þâ%:<2 u͑lF2F͑\2NfuF2!"*+!*))))  :d*))))  q#p*"҇!":=!6!ͣ DM%)2͑F2F͑\2N*"|u\2!E6:E/!"*":E/>!HҴ!ͣ DM%\ʝ!E6ñ>+s#r*#"d!"*+!!ͣ DM%2͑\2N*"ҺP\02NC*NBXUX \ku\͡oxN FuF͑F\2N%!6\2:/H:Y$!6è!E6:!E6F2ͼ":E/ҽ!"*":E/>!H]!ͣ DM%\F!E6Z>+s#r*#" !"*+!ں!ͣ DM%FʭF2F͑\2N*"c\NFF͑NX!"}22:)<2: ,:)!"#**"!"1!6*"!":/G*)))) ~$^!6D*))))  :!:/Ұ!6,V 2:›0XáCX,V 2X**0&p>ͭ,V 2 H!6> !*& 6 :<2!6$ *)))) DMuX*#"=*))))  ~!=!6*#"=:],V 2X%!6#6!6#6!":/:/HҼ*)))) ~$ʴ*))))  :)<{*)&͏x *)))) ͛2:q *)))) *)&͏x u:)<2):/:)2!6>!)n&͏x ~ H*)&͏x ~[Hb!6!6n*#"!6x*#"ñ:Ҫ*))))  :Ң*#"ç!6ñ*#"ù!6z:**#"**))))  DM}u*))))  #DM~u!6*))))  ~2D*))))  ~2):!q!6!::E/Hҙ,V 2E:E/Җ!6:!{X:<2a*&͏x DMX:<27 H*)M.:E/ҷ,V 2E:E/\\2DN!6:/:E/H\H:D=2:<2O>/:/H*& ~29!E6!6:/:E/H:*& ~/HHҗ:<2*M! 2*& :=O! w>:§!6ò*& 6$:E/:/H: :@/H,V 2E*MH>!X!6 !D6!E6u,V 2Xh*& 6!,6ͷ 2::?/H_1X:_ogDM!>))덑o|g҉ =wDM!>))Ҟ =–^#V) §_{ozgi`N#Fogo&og_{_z#W $!COMMANDS CONVENTIONS 3CNTRLCHARS COPYSYS $VDATE &dEXAMPLES (3DEVICE *:OPTIONS 0EXAMPLES 5 DIR ?TBUILT-IN BVEXAMPLES FWITHOPTIONS N)OPTIONS Q~EXAMPLES bjDUMP kED lKCOMMANDS n7EXAMPLES kERASE mOPTION pEXAMPLES lFILESPEC GENCOM eOPTIONS EXAMPLES |GET OPTIONS uEXAMPLES HELP jHEXCOM ZINITDIR LIB *OPTIONS GMODIFIERS *EXAMPLES 7LINK OPTIONS oEXAMPLES MAC EXAMPLES \OPTIONS $PATCH ]PIP (COPY) CEXAMPLES 6OPTIONS &)PUT /'OPTIONS 5MEXAMPLES >-RENAME D9EXAMPLES GRMAC NvOPTIONS PREXAMPLE T\SAVE VzEXAMPLE ZSET `LABEL c_EXAMPLES djPASSWORDS fbMODES i#ATTRIBUTES o&EXAMPLES wDEFAULT |YTIME-STAMPS ~OPTIONS -EXAMPLES ^DRIVES 4SETDEF MEXAMPLES mSHOW WEXAMPLES pSID COMMANDS bEXAMPLES eUTILITIES uSUBMIT 4SUBFILE EXECUTE  PROFILE.SUB  TYPE *EXAMPLES GUSER IEXAMPLES ZXREF $ $ )`$ j" ///1commands CP/M 3 Command Format: A>COMMAND {command tail} A CP/M 3 command line is composed of a command, an optional command tail, and a carriage return. The command is the name or filename of a program to be executed. The optional command tail can consist of a drive specification, one or more file specifications, and some options or parameters. ///2conventions COMMAND CONVENTIONS The following special symbols define command syntax. {} surrounds an optional item. | separates alternative items in a command line. indicates a carriage return. ^ indicates the Control Key. n substitute a number for n. s substitute a string (group) of characters for s. o substitute an option or option list for o. [] type square brackets to enclose an option list. () type parens to enclose a range of options within an option list. RW Read-Write attribute - opposite of RO RO Read-Only attribute - opposite of RW SYS System attribute - opposite of DIR DIR Directory attribute - opposite of SYS ... preceding element can be repeated as many times as desired. * wildcard: replaces all or part of a filename and/or filetype. ? wildcard: replaces any single character in the same position of a filename and/or filetype. ///1cntrlchars Control Character Function CTRL-A moves cursor one character to the left. Banked system only. CTRL-B moves cursor from beginning to end of command line and back without affecting command. Banked system only. CTRL-C stops executing program when entered at the system prompt or after CTRL-S. CTRL-E forces a physical carriage return without sending command to CP/M 3. CTRL-F moves cursor one character to the right. Banked system only. CTRL-G deletes character at current cursor position if in the middle of a line. Banked system only. CTRL-I same as the TAB key. CTRL-H delete character to the left of cursor. CTRL-J moves cursor to the left of the command line and sends command to CP/M 3. Line feed, has same effect as carriage return. CTRL-K deletes character at cursor and all characters to the right. CTRL-M same as carriage return. CTRL-P echoes console output to the list device. CTRL-Q restarts screen scrolling after a CTRL-S. CTRL-R retypes the characters to the left of the cursor  on a new line; updates the command line buffer. CTRL-S stops screen scrolling. CTRL-U updates the command line buffer to contain the characters to the left of the cursor; deletes current line. CTRL-W recalls previous command line if current line is empty; otherwise moves cursor to end of line. CTRL-J,-M,-R,-U and RETURN update the command line buffer for recall with CTRL-W. Banked system only. CTRL-X deletes all characters to the left of the cursor. ///1COPYSYS Syntax: COPYSYS Explanation: COPYSYS copies the CP/M 3 system from a CP/M 3 system diskette to another diskette. The new diskette must have the same format as the original system diskette. Example: A>COPYSYS ///1DATE Syntax: DATE {CONTINUOUS} DATE {time-specification} DATE SET Explanation: The DATE command lets you display and se!t the date and time of day. ///2Examples A>DATE Displays the current date and time. A>DATE C Displays the date and time continuously. A>DATE 08/14/82 10:30:0 Sets the date and time. A>DATE SET Prompts for date and time entries. ///1DEVICE Syntax: DEVICE { NAMES | VALUES | physical-dev | logical-dev} DEVICE logical-dev=physical-dev {option} {,physical-dev {option},...} DEVICE logical-dev = NULL DEVICE physical-dev {option} DEVICE CONSOLE [ PAGE | COLUMNS = columns | LINES = lines] Explanation: DEVICE displays current logical device assignments and physical device names. DEVICE assigns logical devices to peripheral devices attached to the computer. DEVICE also sets the communications protocol and speed of a peripheral device, and displays or sets the current console screen size. ///2Options [ XON | NOXON | baud-rate ] XON refers to the XON/XOFF communications protocol. NOXON indicates no protocol and the computer sends data to the device whether or not the device is ready to receive it. baud-rate is the speed of the device. The system accepts the following baud rates: 50 75 110 134 150 300 600 1200 1800 2400 3600 4800 7200 9600 19200 ///2Examples A>DEVICE Displays the physical devices and current assignments of the logical devices in the system. A>DEVICE NAMES Lists the physical devices with a summary of the device characteristics. A>DEVICE VALUES Displays the current logical device assignments. A>DEVICE CRT Displays the attributes of the physical device CRT. A>DEVICE CON Displays the assignment of the logical device CON: A>DEVICE CONOUT:=LPT,CRT Assigns the system console output (CONOUT:) to the printer (LPT) and the screen (CRT). A>DEVICE AUXIN:=CRT2 [XON,9600] Assigns the auxiliary logical input device (AUXIN:) to the physical device CRT using protocol XON/XOFF and sets the transmission rate for the device at 9600. A>DEVICE LST:=NULL Disconnects the list output logical device (LST:). A>DEVICE LPT [XON,9600] Sets the XON/XOFF protocol for the physical device LPT and sets the transmission speed at 9600. A>DEVICE CONSOLE [PAGE] Displays the current console page width in columns and length in lines. A>DEVICE CONSOLE [COLUMNS=40 LINES=16] Sets the screen size to 40 columns and 16 lines. ///1DIR The DIR command displays the names of files and the characteristics associated with the files. The DIR command has three distinct references: DIR DIRS DIR with Options DIR and DIRS are built-in utilities. DIR with Options is a transient utility and must be loaded into memory from the disk. ///2Built-in Syntax: DIR {d:} DIR {filespec} DIRS {d:} DIRS {filespec} Explanation: The DIR and DIRS Built-in commands display the names of files cataloged in the directory of an on-line disk. DIR lists the names of files in the current user number that have the Directory (DIR) attribute. DIR accepts the * and ? wildcards in the file specification. ///3Examples A>DIR Displays all files in user 0 on drive A that have the Directory attribute. A>DIR B: Displays all DIR files in user 0 on drive B. 2A>DIR C:ZIPPY.DAT Displays the name ZIPPY.DAT if the file is in user 2 on drive C. 4A>DIR *.BAS Displays all DIR files with filetype BAS in user 4 on drive A. B3>DIR X*.C?D Displays all DIR files in user 3 on drive B whose filename begins with the letter X, and whose three character filetype contains the first character C and last character D. A>DIRS Displays all files for user 0 on drive A that have the system (SYS) attribute. A>DIRS *.COM Displays all SYS files with filetype COM on drive A in user 0. A command (.COM) file in user 0 with the system attribute can be accessed from any user number on that drive, and from any drive in the search chain (see SETDEF). ///2withOptions Syntax: DIR {d:} [options] DIR {filespec} {filespec} ... [options] Explanation: The DIR command with options is an enhanced version of the DIR built-in command and di"splays your files in a variety of ways. DIR can search for files on any or all drives, for any or all user numbers. One or two letters is sufficient to identify an option. You need not type the right hand square bracket. ///3Options Option Function ATT displays the file attributes. DATE displays date and time stamps of files. DIR displays only files that have the DIR attribute. DRIVE=ALL displays files on all on-line drives. DRIVE=(A,B,C,...,P) displays files on the drives specified. DRIVE=d displays files on the drive specified by d. EXCLUDE displays files that DO NOT MATCH the files specified in the command line. FF sends an initial form feed to the printer device if the printer has been activated by CTRL-P. FULL shows the name, size, number of 128-byte records, and attributes of the files. If there is a directory label on the drive, DIR shows the password protection mode and the time stamps. If there is no directory label, DIR displays two file entries on a line, omitting the password and time stamp columns. The display is alphabetically sorted. (See SET for a description of file attributes, directory labels, passwords and protection modes.) LENGTH=n displays n lines of printer output before inserting a table heading. n is a number between 5 and 65536. MESSAGE displays the names of drives and user numbers DIR is searching. NOSORT displays files in the order it finds them on the disk. RO displays only the files that have the Read-Only attribute. RW displays only the files that are set to Read-Write. SIZE displays the filename and size in kilobytes (1024  bytes). SYS displays only the files that have the SYS attribute. USER=ALL displays all files in all user numbers for the default or specified drive. USER=n displays the files in the user number specified by n. USER=(0,1,...,15) displays files under the user numbers specified. ///3Examples A>DIR C: [FULL] Displays full set of characteristics for all files in user 0 on drive C. A>DIR C: [DATE] Lists the files on drive C and their dates. A>DIR D: [RW,SYS] Displays all files in user 0 on drive D with Read-Write and System attributes. 3A>DIR [USER=ALL, DRIVE=ALL] Displays all the files in all user numbers (0-15) in all on- line drives. B6>DIR [exclude] *.DAT Lists all the files on drive B in user 6 that do not have a filetype of .DAT. 3B>DIR [SIZE] *.PLI *.COM *.ASM Displays all the files of type PLI, COM, and ASM in user 3 on drive B in size display format. A>DIR [drive=all user=all] TESTFILE.BOB DIR displays the filename TESTFILE.BOB if it is found on any drive in any user number. A>DIR [size,rw] D: DIR lists each Read-Write file that resides on Drive D, with its size in kilobytes. Note that D: is equivalent to D:*.*. ///1DUMP Syntax: DUMP filespec Explanation: DUMP displays the contents of a file in hexadecimal and ASCII format. Example: A>DUMP ABC.TEX ///1ed Format: ED input-filespec {d:|output-filespec} Explanation: Character file editor. To redirect or rename the new version of the file specify the destination drive or destination filespec. ///2commands ED Command Summary Command Action nA append n lines from original file to memory buffer 0A append file until buffer is one half full #A append file until buffer is full (or end of file) B, -B move CP to the beginning (B) or bottom (-B) of buffer nC, -nC move CP n characters forward (C) or back (-C) through buffer nD, -nD delete n characters before (-D) or from (D) the CP E save new file and return to CP/M-86 Fstring{^Z} find character string H save new file, reedit, use new file as original file I enter insert mode Istring{^Z} insert string at CP Jsearch_str^Zins_str^Zdel_to_str juxtapose strings nK, -nK delete (kill) n lines from the CP nL, -nL, 0L move CP n lines nMcommands execute commands n times n, -n move CP n lines and display that line n: move to line n :ncommand execute command through line n Nstring{^Z} extended find string O return to original file nP, -nP " move CP 23 lines forward and display 23 lines at console Q abandon new file, return to CP/M-86 R{^Z} read X$$$$$$$.LIB file into buffer Rfilespec{^Z} read filespec into buffer Sdelete string^Zinsert string substitute string nT, -nT, 0T type n lines U, -U upper-case translation V, -V line numbering on/off 0V display free buffer space nW write n lines to new file 0W write until buffer is half empty nX write or append n lines to X$$$$$$$.LIB nXfilespec{^Z} write n lines to filespec; append if previous xcommand applied to same file 0x{^Z} delete file X$$$$$$$.LIB 0xfilespec{^Z} delete filespec nZ wait n seconds Note: CP points to the current character being referenced in the edit buffer. Use {^Z} to separate multiple commands on the same line. ///2Examples A>ED TEST.DAT A>ED TEST.DAT B: A>ED TEST.DAT TEST2.DAT A>ED TEST.DAT B:TEST2.DAT ///1erase Syntax: ERASE {filespec} {[CONFIRM]} Explanation: The ERASE command removes one or more files from the directory of a disk. Wildcard characters are accepted in the filespec. Directory and data space are automatically reclaimed for later use by another file. The ERASE command can be abbreviated to ERA. ///2Option [CONFIRM] option informs the system to prompt for verification before erasing each file that matches the filespec. CONFIRM can be abbreviated to C. ///2Examples A>ERASE X.PAS Removes the file X.PAS from the disk in drive A. A>ERA *.PRN Confirm (Y/N)?Y All files with the filetype PRN are removed from the disk in drive A. B>ERA A:MY*.* [CONFIRM] Each file on drive A with a filename that begins with MY is displayed with a question mark for confirmation. Type Y to erase the file displayed, N to keep the file. A>ERA B:*.* Confirm (Y/N)?Y All files on drive B are removed from the disk. ///1filespec FILESPEC FORMAT CP/M 3 identifies every file by its unique file specification, which can consist of four parts: the drive specification, the filename, the filetype and the password. The term "filespec" indicates any valid combination of the four parts of a file specification, all separated by their appropriate delimiters. A colon must follow a drive letter. A period must precede a filetype. A semicolon must precede a password. The symbols and rules for the parts of a file specification follow: d: drivespec optional single alpha character (A-P) filename filename 1-8 letters and/or numbers typ filetype optional 0-3 letters and/or numbers password password optional 0-8 letters and/or numbers Valid combinations of the elements of a CP/M 3 file specification are: filename d:filename filename.typ d:filename.typ filename;password d:filename;password filename.typ;password d:filename.typ;password If you do not include a drive specifier, CP/M 3 automatically uses the default drive. Some CP/M 3 commands accept wildcard (* and ?) characters in the filename and/or filetype parts of the command tail. A wildcard in the command line can in one command reference many matching files on the default or specified user number and drive. (See Commands). ///1GENCOM Syntax: GENCOM {COM-filespec} {RSX-filespec} ... {[LOADER | NULL | SCB=(offset,value)]} Explanation: The GENCOM command creates a special COM file with attached RSX files. The GENCOM command can also restore a previously GENCOMed file to the original COM file without the header and RSX's. GENCOM can also attach header records to COM files. ///2Options LOADER sets a flag to keep the program loader active. NULL indicates that only RSX files are specified. GENCOM creates a dummy COM file for the RSX files. The output COM filename is taken from the filename of the first RSX-filespec. SCB=(offset,value) sets the System Control Block from the program by using the hex values specified by (offset,value). ///2Examples A>GENCOM MYPROG PROG1 PROG2 Generates a new COM file MYPROG.COM with attached RSX's PROG1 and PROG2. A>GENCOM PROG1 PROG2 [NULL] Creates a COM file PROG1.COM with RSX's PROG1 and PROG2. A>GENCOM MYPROG # GENCOM takes MYPROG.COM, strips off the header and deletes all attached RSX's to restore it to its original COM format. A>GENCOM MYPROG PROG1 PROG2 GENCOM looks at the already-GENCOMed file MYPROG.COM to see if PROG1.RSX and PROG2.RSX are already attached RSX files in the module. If either one is already attached, GENCOM replaces it with the new RSX module. Otherwise, GENCOM appends the specified RSX files to the COM file. ///1GET Syntax: GET {CONSOLE INPUT FROM} FILE filespec{[{ECHO|NO ECHO} | SYSTEM]} GET {CONSOLE INPUT FROM} CONSOLE Explanation: GET directs the system to take console input from a file for the next system command or user program entered at the console. Console input is taken from a file until the program terminates. If the file is exhausted before program input is terminated, the program looks for subsequent input from the console. If the program terminates before exhausting all its input, the system reverts back to the console for console input. With the SYSTEM option, the system immediately goes to the specified file for console input. The system reverts to the console for input when it reaches the end of file. Re-direct the system to the console for console input with the GET CONSOLE INPUT FROM CONSOLE command as a command line in the input file. ///2Options ECHO specifies that input is echoed to the console. This is the default option. NO ECHO specifies that file input is not echoed to the console. The program output and the system prompts are not affected by this option and are still echoed to the console. SYSTEM specifies that all system input is immediately taken from the disk file specified in the command line. GET takes system and program input from the file until the file is exhausted or until GET reads a GET console command from the file. ///2Examples A>GET FILE XINPUT A>MYPROG Tells the system to activate the GET utility. Since SYSTEM is not specified, the system reads the next input line from the console and executes MYPROG. If MYPROG program requires console input, it is taken from the file XINPUT. When MYPROG terminates, the system reverts back to the console for console input. A>GET FILE XIN2 [SYSTEM] Immediately directs the system to get subsequent console input from file XIN2 because it includes the SYSTEM option. The system reverts back to the console for console input when it reaches the end of file in XIN2. Or XIN2 may redirect the system back to the console if it contains a GET CONSOLE command. A>GET CONSOLE Tells the system to get console input from the console. This command may be used in a file (previously specified in a GET FILE command), which is already being read by the system for console input. It is used to re-direct the console input back to the console before the end-of-file is reached. ///1HELP Syntax: HELP {topic} {subtopic1 ... subtopic8} {[NOPAGE|LIST]} Explanation: HELP displays a list of topics and provides summarized information for CP/M 3 commands. HELP topic displays information about that topic. HELP topic subtopic displays information about that subtopic. One or two letters is enough to identify the topics. After HELP displays information for your topic, it displays the special prompt HELP> on your screen, followed by a list of subtopics. - Enter ? to display list of main topics. - Enter a period and subtopic name to access subtopics. - Enter a period to redisplay what you just read. - Press the RETURN key to return to the CP/M 3 system prompt. - [NOPAGE] option disables the 24 lines per page console display. - Press any key to exit a display and return to the HELP> prompt. Examples: A>HELP A>HELP DATE A>HELP DIR OPTIONS A>HELP>.OPTIONS HELP>SET HELP>SET PASSWORD HELP>.PASSWORD HELP>. HELP> ///1HEXCOM Syntax: HEXCOM filename Explanation: The HEXCOM Command generates a command file (filetype .COM) from a .HEX input file. It names the output file with the same filename as the input file but with filetype .COM. HEXCOM always looks for a file with filetype .HEX. Example: A>HEXCOM B:PROGRAM Generates a command file PROGRAM.COM from the input hex file PROGRAM.HEX. ///1INITDIR Syntax: INITDIR {d:} Explanation: The INITDIR Command initializes a disk# directory to allow date and time stamping of files on that disk. INITDIR can also recover time/date directory space. Example: A>INITDIR C: INITDIR WILL ACTIVATE TIME-STAMPS FOR SPECIFIED DRIVE. Do you want to re-format the directory on C: (Y/N)?Y ///1LIB Syntax: LIB filespec{[I|M|P|D]} LIB filespec{[I|M|P]}=filespec{modifier} {,filespec{modifier} ... } Explanation: A library is a file that contains a collection of object modules. Use the LIB utility to create libraries, and to append, replace, select or delete modules from an existing library. Use LIB to obtain information about the contents of library files. LIB creates and maintains library files that contain object modules in Microsoft REL file format. These modules are produced by Digital Research's relocatable macro-assembler program, RMAC, or any other language translator that pruduces modules in Microsoft REL file format. You can use LINK-80 to link the object modules contained in a library to other object files. LINK-80 automatically selects from the library only those modules needed by the program being linked, and then forms an executable file with a filetype of COM. ///2Options I The INDEX option creates an indexed library file of type .IRL. LINK-80 searches faster on indexed libraries than on non-indexed libraries. M The MODULE option displays module names. P The PUBLICS option displays module names and the public variables for the new library file. D The DUMP option displays the contents of object modules in ASCII form. ///2Modifiers Use modifiers in the command line to instruct LIB to delete, replace, or select modules in a library file. Angle brackets enclose the modules to be deleted or replaced. Parentheses enclose the modules to be selected. LIB Modifiers Delete Replace If module name and filename are the same this shorthand can be used: Select (modFIRST-modLAST,mod1,mod2,...,modN) ///2Examples A>LIB TEST4[P] Displays all modules and publics in TEST4.REL. A>LIB TEST5[P]=FILE1,FILE2 Creates TEST5.REL from FILE1.REL and FILE2.REL and displays all modules and publics in TEST5.REL. A>LIB TEST=TEST1(MOD1,MOD4),TEST2(C1-C4,C6) Creates a library file TEST.REL from modules in two source files. TEST1.REL contributes MOD1 and MOD4. LIB extracts modules C1, C4, and all the modules located between them, as well as module C6 from TEST2.REL. A>LIB FILE2=FILE3 Creates FILE2.REL from FILE3.REL, omitting MODA which is a module in FILE3.REL. A>LIB FILE6=FILE5 Creates FILE6.REL from FILE5.REL, FILEB.REL replaces MODA. A>LIB FILE6=FILE5 Module THISNAME is in FILE5.REL. When LIB creates FILE6.REL from FILE5.REL the file THISNAME.REL replaces the similarly named module THISNAME. A>LIB FILE1[I]=B:FILE2(PLOTS,FIND,SEARCH-DISPLAY) Creates FILE1.IRL on drive A from the selected modules PLOTS, FIND, and modules SEARCH through the module DISPLAY, in FILE2.REL on drive B. ///1LINK Syntax: LINK d:{filespec,{[options]}=}filespec{[options]}{,...} Explanation: LINK combines relocatable object modules such as those produced by RMAC and PL/I-80 into a .COM file ready for execution. Relocatable files can contain external references and publics. Relocatable files can reference modules in library files. LINK searches the library files and includes the referenced modules in the output file. See the CP/M 3 Programmer's Utilities Guide for a complete description of LINK- 80. ///2Options Use LINK option switches to control execution parameters. Link options follow the file specifications and are enclosed within square brackets. Multiple switches are separated by commas. LINK-80 Options A Additional memory; reduces buffer space and writes temporary data to disk B BIOS link in banked CP/M 3 system. 1. Aligns data segment on page boundary. 2. Puts length of code segment in header. 3. Defaults to .SPR filetype. Dhhhh Data origin; sets memory origin for common and data area Gn Go; set start address to lab$el n Lhhhh Load; change default load address of module to hhhh. Default 0100H Mhhhh Memory size; Define free memory requirements for MP/M modules. NL No listing of symbol table at console NR No symbol table file OC Output .COM command file. Default OP Output .PRL page relocatable file for execution under MP/M in relocatable segment OR Output .RSP resident system process file for execution under MP/M OS Output .SPR system page relocatable file for execution under MP/M Phhhh Program origin; changes default program origin address to hhhh. Default is 0100H. Q Lists symbols with leading question mark S Search preceding file as a library $Cd Destination of console messages d can be X (console), Y (printer), or Z (zero output). Default is X. $Id Source of intermediate files; d is disk drive A-P. Default is current drive. $Ld Source of library files; d is disk drive A-P. Default is current drive. $Od Destination of of object file; d can be Z or disk drive A-P. Default is to same drive as first file in the LINK-80 command. $Sd Destination of symbol file; d can be Y or Z or disk drive A-P. Default is to same drive as first file in LINK-80 command. ///2Examples A>LINK b:MYFILE[NR] LINK-80 on drive A uses as input MYFILE.REL on drive B and produces the executable machine code file MYFILE.COM on drive B. The [NR] option specifies no symbol table file. A>LINK m1,m2,m3 LINK-80 combines the separately compiled files m1, m2, and m3, resolves their external references, and produces the executable machine code file m1.COM. A>LINK m=m1,m2,m3 LINK-80 combines the separately compiled files m1, m2, and m3 and produces the executable machine code file m.COM. A>LINK MYFILE,FILE5[s] The [s] option tells LINK-80 to search FILE5 as a library. LINK-80 combines MYFILE.REL with the referenced subroutines contained in FILE5.REL on the default drive A and produces MYFILE.COM on drive A. ///1mac Syntax: MAC filename {$options} Explanation: MAC, the CP/M 3 macro assembler, reads assembly language statements from a file of type .ASM, assembles the statements, and produces three output files with the input filename and filetypes of .HEX, .PRN, and .SYM. Filename.HEX contains INTEL hexadecimal format object code. Filename.PRN contains an annotated source listing that you can print or examine at the console. Filename.SYM contains a sorted list of symbols defined in the program. ///2Examples A>MAC SAMPLE A>MAC SAMPLE $PB AA HB SX ///2options Use options to direct the input and output of MAC. Use a letter with the option to indicate the source and destination drives, and console, printer, or zero output. Valid drive names are A thru O. X, P and Z specify console, printer, and zero output, respectively. Assembly Options That Direct Input/Output A source drive for .ASM file (A-O) H destination drive for .HEX file (A-O, Z) L source drive for macrolibrary .LIB files called by the MACLIB statement. P destination drive for .PRN file (A-O, X, P, Z)  S destination drive for .SYM file Assembly Options That Modify Contents Of Output File +L lists input lines read from macrollibrary .LIB files -L suppresses listing (default) +M lists all macro lines as they are processed during assembly -M suppresses all macro lines as they are read during assembly *M lists only hex generated by macro expansions +Q lists all LOCAL symbols in the symbol list -Q suppresses all LOCAL symbols in the symbol list (default) +S appends symbol file to print file -S suppresses creation of symbol file +1 produces a pass 1 listing for macro debugging in .PRN file -1 suppress listing on pass 1 (default) ///1PATCH Syntax: PATCH filename{.typ} {n} Explanation: The PATCH command displays or installs patch number n to the CP/M 3 system or command files. The patch number n must be between 1 and 32 inclusive. Example: A>PATCH SHOW 2 Patches th$e SHOW.COM system file with patch number 2. ///1PIP (copy) Syntax: DESTINATION SOURCE PIP d:{Gn} | filespec{[Gn]} = filespec{[o]},... | d:{[o]} Explanation: The file copy program PIP copies files, combines files, and transfers files between disks, printers, consoles, or other devices attached to your computer. The first filespec is the destination. The second filespec is the source. Use two or more source filespecs separated by commas to combine two or more files into one file. [o] is any combination of the available options. The [Gn] option in the destination filespec tells PIP to copy your file to that user number. PIP with no command tail displays an * prompt and awaits your series of commands, entered and processed one line at a time. The source or destination can be any CP/M 3 logical device. ///2Examples COPY A FILE FROM ONE DISK TO ANOTHER A>PIP b:=a:draft.txt  A>PIP b:draft.txt = a: B3>PIP myfile.dat=A:[G9] A9>PIP B:[G3]=myfile.dat COPY A FILE AND RENAME IT A5>PIP newdraft.txt=oldraft.txt C8>PIP b:newdraft.txt=a:oldraft.txt COPY MULTIPLE FILES A>PIP b:=draft.* A>PIP b:=*.* B>PIP b:=c:.*.* C>PIP b:=*.txt[g5] C>PIP a:=*.com[wr] B>PIP a:[g3]=c:*.* COMBINE MULTIPLE FILES A>PIP b:new.dat=file1.dat,file2.dat COPY, RENAME AND PLACE IN USER 1 A>pip newdraft.txt[g1]=oldraft.txt COPY, RENAME AND GET FROM USER 1 A>PIP newdraft.txt=oldraft.txt[g1] COPY TO/FROM LOGICAL DEVICES A>PIP b:funfile.sue=con: A>PIP lst:=con: A>PIP lst:=b:draft.txt[t8] A>PIP prn:=b:draft.txt ///2options PIP OPTIONS A Archive. Copy only files that have been changed since the last copy. C Confirm. PIP prompts for confirmation before each file copy. Dn Delete any characters past column n. E Echo transfer to console. F Filter form-feeds from source data. Gn Get from or go to user n. H Test for valid Hex format. I Ignore :00 Hex data records and test for valid Hex format. K Kill display of filespecs on console. L Translate upper case to lower case. N Number output lines O Object file transfer, ^Z ignored. Pn Set page length to n. (default n=60) Qs^Z Quit copying from source at string s. R Read files that have been set to SYStem. Ss^Z Start copying from the source at the string s. Tn Expand tabs to n spaces. U Translate lower case to upper case. V Verify that data has been written correctly. W Write over Read Only files without console query. Z Zero the parity bit. All options except C,G,K,O,R,V and W force an ASCII file transfer, character by character, terminated by a ^Z. ///1PUT Syntax: PUT CONSOLE {OUTPUT TO} FILE filespec {option} | CONSOLE PUT PRINTER {OUTPUT TO} FILE filespec {option} | PRINTER PUT CONSOLE {OUTPUT TO} CONSOLE PUT PRINTER {OUTPUT TO} PRINTER Explanation: PUT puts console or printer output to a file for the next command entered at the console, until the program terminates. Then console output reverts to the console. Printer output is directed to a file until the program terminates. Then printer output is put back to the printer. PUT with the SYSTEM option directs all subsequent console/printer output to the specified file. This option terminates when you enter the PUT CONSOLE or PUT PRINTER command. ///2Options [ {ECHO | NO ECHO} {FILTER | NO FILTER} | {SYSTEM} ] ECHO specifies that output is echoed to the console. This is the default option when you direct console output to a file. NO ECHO specifies that file output is not echoed to the  console. NO ECHO is the default for the PUT PRINTER command. FILTER specifies filtering of control characters, which means that control characters are translated to printable characters. For example, an ESCape character is translated to ^[. NO FILTER means that PUT does not translate control characters. This is the default option. SYSTEM specifies that system output as well as program output is written to the file specified by filespec. Output is written to the file until a subsequent PUT CONSOLE command redirects console output back to the console. ///2Examples A>PUT CONSOLE OUTPUT TO FILE XOUT [ECHO] Directs console output to file XOUT with the output echoed to the console. A>PUT PRINTER OUTPUT TO FILE XOUT A>MYPROG Directs % the printer output of program MYPROG to file XOUT. The output is not echoed to the printer. A>PUT PRINTER OUTPUT TO FILE XOUT2 [ECHO,SYSTEM] Directs all printer output to file XOUT2 as well as to the printer (with ECHO option), and the PUT is in effect until you enter a PUT PRINTER OUTPUT TO PRINTER command. A>PUT CONSOLE OUTPUT TO CONSOLE Directs console output back to the console. A>PUT PRINTER OUTPUT TO PRINTER Directs printer output back to the printer. ///1RENAME Syntax: RENAME {new-filespec=old-filespec} Explanation: RENAME lets you change the name of a file in the directory of a disk. To change several filenames in one command use the * or ? wildcards in the file specifications. The RENAME command can be abbreviated REN. REN prompts you for input. ///2Examples A>RENAME NEWFILE.BAS=OLDFILE.BAS The file OLDFILE.BAS changes to NEWFILE.BAS on drive A. A>RENAME The system prompts for the filespecs: Enter New Name:X.PRN Enter Old Name:Y.PRN Y .PRN=X .PRN A> File X.PRN is renamed to Y.PRN on drive A. B>REN A:PRINTS.NEW = PRINCE.NEW The file PRINCE.NEW on drive A changes to PRINTS.NEW on drive A. A>RENAME S*.TEX=A*.TEX The above command renames all the files matching A*.TEX to files with filenames S*.TEX. A>REN B:NEWLIST=B:OLDLIST The file OLDLIST changes to NEWLIST on drive B. Since the second drive specifier, B: is implied by the first one, it is unnecessary in this example. The command line above has the same effect as the following: A>REN B:NEWLIST=OLDLIST or A>REN NEWLIST=B:OLDLIST ///1RMAC Syntax: RMAC filespec {$Rd | $Sd | $Pd} Explanation: RMAC, a relocatable macro assembler, assembles .ASM files of into .REL files that you can link to create .COM files. ///2options RMAC options specify the destination of the output files. Replace d with the destination drive letter for the output files. Option d=output option R- drive for REL file (A-O, Z) S- drive for SYM file (A-O, X, P, Z) P- drive for PRN file (A-O, X, P, Z) A-O specifies drive A-O. X means output to the console. P means output to the printer. Z means zero output. ///2Example A>RMAC TEST $PX SB RB Assembles the file TEST.ASM from drive A, sends the listing file (TEST.PRN) to the console, puts the symbol file (TEST.SYM) on drive B and puts the relocatable object file (TEST.REL) on drive B. ///1SAVE Syntax: SAVE Explanation: SAVE copies the contents of memory to a file. To use SAVE, first issue the SAVE command, then run your program which reads a file into memory. Your program exits to the SAVE utility which prompts you for a filespec to which it copies the contents of memory, and the beginning and ending address of the memory to be SAVEd. ///2Example A>SAVE Activates the SAVE utility. Now enter the name of the program which loads a file into memory. A>SID dump.com Next, execute the program. #g0 When the program exits, SAVE intercepts the return to the system and prompts the user for the filespec and the bounds of memory to be SAVEd. SAVE Ver 3.0 Enter file (type RETURN to exit):dump2.com If file DUMP2.COM exists already, the system asks: Delete dump2.com? Y Then the system asks for the bounds of memory to be saved: Beginning hex address: 100 Ending hex address: 400 The contents of memory from 100H (Hexadecimal) to 400H is copied to file DUMP2.COM.  ///1SET Syntax: SET [options] SET d: [options] SET filespec [options] Explanation: SET initiates password protection and time stamping of files. It also sets the file and drive attributes Read-Write, Read-Only, DIR and SYS. It lets you label a disk and password protect the label. To enable time stamping of files, you must first run INITDIR to format the disk directory. ///2Label Syntax: SET {d:} [NAME=labelname.typ] SET [PASSWORD=password] SET [PASSWORD= ///3Examples A>SET [NAME=DISK100] Labels the disk on the default drive as DISK100. A>SET [PASSWORD=SECRET] Assigns SECRET to the disk label. A>SET [PASSWORD= Nullifies the existing password. ///2Passwords SET [PROTECT=ON] SET [PROTECT=OFF] SET filespec [PASSWORD=password] SET filespec [PROTECT=READ] SET %filespec [PROTECT=WRITE] SET filespec [PROTECT=DELETE] SET filespec [PROTECT=NONE] SET filespec [attribute-options] ///3Modes Password Protection Modes Mode Protection READ The password is required for reading, copying writing, deleting or renaming the file. WRITE The password is required for writing, deleting or renaming the file. You do not need a password to read the file. DELETE The password is only required for deleting or renaming the file. You do not need a password to read or modify the file. NONE No password exists for the file. If a password password exists, this modifier can be used to delete the password. ///2Attributes RO sets the file attribute to Read-Only. RW sets the file attribute to Read-Write. SYS sets the file attribute to SYS. DIR sets the file attribute to DIR. ARCHIVE=OFF means that the file has not been backed up (archived). ARCHIVE=ON means that the file has been backed up (archived). The Archive attribute can be turned on by SET or by PIP when copying a group of files with the PIP [A] option. SHOW and DIR display the Archive option. F1=ON|OFF turns on or off the user-definable file attribute F1. F2=ON|OFF turns on or off the user-definable file attribute F2. F3=ON|OFF turns on or off the user-definable file attribute F3. F4=ON|OFF turns on or off the user-definable file attribute F4. ///3Examples SET [PROTECT=ON] Turns on password protection for all the files on the disk.  You must turn on password protection before you can assign passwords to files. SET [PROTECT=OFF] Disables password protection for the files on your disk. A>SET MYFILE.TEX [PASSWORD=MYFIL] MYFIL is the password assigned to file MYFILE.TEX. B>SET *.TEX [PASSWORD=SECRET, PROTECT=WRITE] Assigns the password SECRET to all the TEX files on drive B. Each TEX file is given a WRITE protect mode to prevent unauthorized editing. A>SET MYFILE.TEX [RO SYS] Sets MYFILE.TEX to Read-Only and SYStem. ///2Default A>SET [DEFAULT=dd] Instructs the system to use dd as a password if you do not enter a password for a password-protected file. ///2Time-Stamps Syntax: SET [CREATE=ON] SET [ACCESS=ON] SET [UPDATE=ON] Explanation: The above SET commands allow you to keep a record of the time and date of file creation and update, or of the last access and update of your files. ///3Options [CREATE=ON] turns on CREATE time stamps on the disk in the default or specified drive. To record the creation time of a file, the CREATE option must be turned on before the file is created. [ACCESS=ON] turns on ACCESS time stamps on the disk in the default or specified drive. ACCESS and CREATE options are mutually exclusive; only one can be in effect at a time. If you turn on the ACCESS time stamp on a disk that previously had CREATE time stamp, the CREATE time stamp is automatically turned off. [UPDATE=ON] turns on UPDATE time stamps on the disk in the default or specified drive. UPDATE time stamps record the time the file was last modified. ///3Examples A>SET [ACCESS=ON]  A>SET [CREATE=ON,UPDATE=ON] ///2Drives Syntax: SET {d:} [RO] SET {d:} [RW] Example: A>SET B: [RO] Sets drive B to Read-Only. ///1SETDEF Syntax: SETDEF { d: {,d: {,d: {,d:}}}} {[ TEMPORARY = d: ] | [ ORDER = (typ {,typ}) ]} SETDEF [DISPLAY | NO DISPLAY] SETDEF [PAGE | NOPAGE] Explanation: SETDEF allows the user to display or define up to four drives for the program search order, the drive for temporary files, and the file type search order. The SETDEF definitions affect only the loading of programs and/or execution of SUBMIT (SUB) files. SETDEF turns on/off the system Display and Console Page modes. When on, the system displays the location and name of programs loaded or SUBmit files executed, and stops after displaying one full console screen of information. ///2Examples A>SETDEF & Displays current SETDEF parameters. A>SETDEF [TEMPORARY=C:] Sets disk drive C as the drive to be used for temporary files. A>SETDEF C:,* Tells the system to search for a program on drive C, then, if not found, search for it on the default drive. A>SETDEF [ORDER=(SUB,COM)] Instructs the system to search for a SUB file to execute. If no SUB file is found, search for a COM file. A>SETDEF [DISPLAY] Turns on the system display mode. Henceforth, the system displays the name and location of programs loaded or submit files executed. A>SETDEF [NO DISPLAY] Turns off the system Display mode. ///1SHOW Syntax: SHOW {d:}{[SPACE |LABEL |USERS |DIR |DRIVE]} Explanation: The SHOW command displays the following disk drive information: Access mode and the amount of free disk space Disk label Current user number and Number of files for each user number on the disk Number of free directory entries for the disk Drive characteristics ///2Examples A>SHOW A>SHOW [SPACE] Instructs the system to display access mode and amount of space left on logged-in drives. A>SHOW B: Show access mode for drive B and amount of space left on drive B. A>SHOW B:[LABEL] Displays label information for drive B. A>SHOW [USERS] Displays the current user number and all the users on drive A and the corresponding number of files assigned to them. A>SHOW C:[DIR] Displays the number of free directory entries on drive C. A>SHOW [DRIVE] Displays the drive characteristics of drive A. ///1SID Syntax: SID {pgm-filespec} {,sym-filespec} Explanation: The SID symbolic debugger allows you to monitor and test programs developed for the 8080 microprocessor. SID supports real-time breakpoints, fully monitored execution, symbolic disassembly, assembly, and memory display and fill functions. SID can dynamically load SID utility programs to provide traceback and histogram facilities. ///2Commands Command Meaning As (Assemble) Enter assembly language statements s is the start address Cs{b{,d}} (Call) Call to memory location from SID s is the called address b is the value of the BC register pair d is the value of the DE register pair D{W}{s}{,f} (Display) Display memory in hex and ASCII W is a 16-bit word format s is the start address f is the finish address Epgm-filespec (Load) Load program and symbol table {,sym-filespec} for execution E*sym-filespec (Load) Load a symbol table file Fs,f,d (Fill) Fill memory with constant value s is the start address f is the finish address d is an eight-bit data item G{p}{,a{,b}} (Go) Begin Execution p is a start address a is a temporary breakpoint H (Hex) Displays all symbols with addresses in Hex H.a Displays hex, decimal, and ASCII values of a where a is a symbolic expression Ha,b Computes hex sum and difference of a and b where  a and b are symbolic expressions Icommand tail (Input) Input CCP command line L{s}{,f} (List) List 8080 mnemonic instructions s is the start address f is the finish address Ms,h,d (Move) Move Memory Block s is the start address h is the high address of the block d is the destination start address P{p{,c}} (Pass) Pass point set, reset, and display p is a permanent breakpoint address c is initial value of pass counter Rfilespec{,d} (Read) Read Code/Symbols d is an offset to each address S{W}s (Set) Set Memory Values s is address where value is& sent W is 16 bit word T{n{,c}} (Trace) Trace Program Execution n is the number of program steps c is the utility entry address. T{W}{n{,c}} (Trace) Trace Without Call W instructs SID not to trace subroutines n is the number of program steps c is the utility entry address U{W}{n{,c}} (Untrace) Monitor Execution without Trace n is the number of program steps c is the utility entry address W instructs SID not to trace subroutines V (Value) Display the value of the next available location in memory  (NEXT), the next location after the largest file read in (MSZE), the current value of the Program counter (PC), and the address of the end of available memory (END) Wfilespec,s,f (Write) Write the contents of a contiguous block of memory to filespec. f is finish address X{f}{r} (Examine) Examine/alter CPU state. f is flag bit C,Z,M,E or I. r is register A,B,D,H,S or P. ///2Examples A>SID CP/M 3 loads SID from drive A into memory. SID displays the # prompt when it is ready to accept commands. A>B:SID SAMPLE.HEX CP/M 3 loads SID and the program file SAMPLE.HEX into memory from drive B. ///2Utilities SID utilities, HIST.UTL and TRACE.UTL are special programs that operate with SID to provide additional debugging facilities. The mechanisms for system initialization, data collection, and data display are described in the CP/M SID User's Guide. The HIST utility creates a histogram (bar graph) showing the relative frequency of execution of code within selected program segments of the test program. The HIST utility allows you to monitor those sections of code that execute most frequently. The TRACE utility obtains a backtrace of the instructions that led to a particular breakpoint address in a program under test. You can collect the addresses of up to 256 instructions between pass points in U or T modes. ///1SUBMIT Syntax: SUBMIT {filespec} {argument} ... {argument} Explanation: The SUBMIT command lets you execute a group (batch) of commands from a SUBmit file (a file with filetype of SUB). ///2Subfile The SUB file can contain the following types of lines: Any valid CP/M 3 command Any valid CP/M 3 command with SUBMIT parameters ($0-$9) Any data input line Any program input line with parameters ($0 to $9) The command line cannot exceed 135 characters. The following lines illustrate the variety of lines which may be entered in a SUB file: DIR DIR *.BAK MAC $1 $$$4 PIP LST:=$1.PRN[T$2 $3 $5] DIR *.ASM PIP SUBMIT A>SUBMIT SUBA A>SUBMIT AA ZZ SZ A>SUBMIT B:START DIR E: ///2PROFILE.SUB Everytime you power up or reset your computer, CP/M 3 looks for a special SUBmit file named PROFILE.SUB to execute. If it does not exist, CP/M 3 resumes normal operation. If the PROFILE.SUB file exists, the system executes the commands in the file. This file is convenient to use if you regularly execute a set of commands before you do your regular session on the computer. ///1TYPE Syntax: TYPE {filespec {[ PAGE | NOPAGE ]}} Explanation: The TYPE command displays the contents of an ASCII character file on your screen. [PAGE] Causes the console listing to be displayed in paged mode; i.e., stop automatically after listing n lines of text, where n normally defaults to 24 lines per page. [NOPAGE] Turns off Console Page Mode and continuously displays a typed file on the screen. ///2Examples A>TYPE MYPROG.PLI Displays the contents of the file MYPROG.PLI on your screen. A>TYPE B:THISFILE [PAGE] Displays the contents of the file THISFILE from d'rive B on your screen twenty four lines at a time. ///1USER Syntax: USER {number} Explanation: The USER command sets the current user number. The disk directory can be divided into distinct groups according to a "User Number." User numbers range from 0 through 15. ///2Examples A>USER Enter User#:5 5A> The current user number is now 5 on drive A. A>USER 3 3A> This command changes the current User Number to 3. ///1XREF Syntax: XREF {d:} filename {$P} Explanation: XREF provides a cross-reference summary of variable usage in a program. XREF requires the .PRN and .SYM files produced by MAC or RMAC for input to the program. The SYM and PRN files must have the same filename as the filename in the XREF command tail. XREF outputs a file of type .XRF. Examples: A>XREF b:MYPROG A>XREF b:MYPROG $P ÀCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH251082654321!9"k1G \!m!w# š!v6H#6E#6X!e6C#6O#6M<<&:g.".g"?S:2n!`w #4o"c*e{ozg"hj:]@*c"\y!5C*^N{zb+"^*^*`*h"!j4&"h"y:b<5*kG!gwxS0  *cN,*cN{zҽ{,*c*e{ozg ~*c#"c> :[ >  X N*c>:> !:q#G*eDM*h ERROR: $DISK READ$LOAD ADDRESS LESS THAN 100$DISK WRITE$LOAD ADDRESS $ERROR ADDRESS $INVALID HEX DIGIT$CHECKSUM ERROR $FIRST ADDRESS $LAST ADDRESS $BYTES READ $RECORDS WRITTEN $CANNOT OPEN SOURCE FILE$DIRECTORY FULL$CANNOT CLOSE FILE$HEXCOM VERS: 3.00 $4!y~=W!x# ~#bxE {8~#o}oA'.`28!Ip+q*HT!J6J T ` T!p+q*T> >/Ҥ×!p+q*DM͛:̀ ̀:2:!!K:*&L Ǹ!4!K6 ͐uëYALPSID'TCELLOC$LAITINI!%cCOPYRIGHT (C) 1977 DIGITAL RESEARCH {{ { {zb{b{*9 {_zW}l&))o> \> \\ß*"!" ͟#͟Prںºx"x#"̀ں͇"1!6# y͟!h͟$h͟'h*̀`*̀`*1̀I ?! ^#Vr+sz`>>!@^#V#̀{ k͇#"/<͟h2**̀`i~#!~6͟*1Þ6͔h*1^#V#Þ͔{> \*/̀>*\ ERROR - FORM IS X,Y TYPE HISTOGRAM BOUNDS HISTOGRAM: ADDR RELATIVE FREQUENCY, LARGEST VALUE = .INITIAL = .COLLECT = .DISPLAY = .... !6 ` !6 ` !6 ` *&T` !6 ` !6 ` !60 ` *&'T` !6* ` !6* ` !6* ` *& @AA I$DBD $I$BHA"DH!""@>:7O:ħ( >G>y>py>yxoWg^#V#s#r#}os#r#6s#r:ħ>y>(>y!H!"H:=2*~#"o&!>ž:8Ox84*Hw#!ħR !"H x M:7O>0y xMq,!:7o&͜,!:7o&͜,,q,!:7o&͜,!:7o&͜,,q:7o&ͅ,`C,:o&:8o&͜,q:7o&ͅ,`v_!:8o&͜,:7o&ͅ,`Æ! 9^#V:8o&͜,q!! V!!V!͊!q:o&| $:o&| !}2!!9s'!9n&#s+!9^!ʩ!!9s!!9s#r_!9~#fo#s#r+!9~#i:o&|!0!9s#r*ʒ!"l!9^!:s::o&Ͱ::o&Ͱ::o&Ͱ!9n&#s+::o&Ͱ$!9^!Ͱ^::o&Ͱ^:;o&Ͱ%!:;o&Ͱ8!:;o&ͰK!:;o&Ͱ^!!9^!!!9s!!9sæ!9n&#s+:^!9n&Fs!9^!$ʹÃ!9^:o&:o&!Ͱ:o&!Ͱ!}2:o&|$!!}2:o&|$i!9^#V!`f͵9!!9^#V!`Y!!̀f!!̀N!9~#ʋ!!̀*#"+æ!!̀!9n&+s#!* %.2s *%.2s Error on receive --Retrying%.30s No data -- waiting-- %.25sq! ̀!9s#r!9~#)!9^#V::o&ͿI:o&!Ϳy:o&Ͱ`!W!! ̀!*#"+!!$!͟'! !o&zo&|}|>o&|o&z2:ķ|| /g}/o#z./W{/_.DM!>2))A#}o|gY :=29}:=29}DM!>))x =p}}/o|/g#}|ú|g}o{_|9|7g}o§{_)¼}}o|gN#F# N#F#z{##^#VBK^#Vz#y( ####x#~#fo}|>?o&}|>o&{_|g}o9|g}o~# xN!9~#i!v|7q!"!9!9^#V!q! 9^#V"!9!9^#V!q*!9^#Vdq! 9N#F`i~!`i#DM+^dͰ!!! dq! 9N#F`i~`!9^#V`i#DM+^dͰ]!2!q! 9N#F!9^#V!PY`DM`i Ͱʧ! Ͱʧ!q! !9^#Vq! 9N#F!9^#V!!9^#V`i1!`iq!9N#F! ^#V`i^#VL! 9^#V!`M! 9^#V`i~#fo#s#r+s!`q!!9^#VMq! DM`i$ʭ`i DMͮÍq!9N#F!!9s#r`i~;! ^!`!M!9s#r! ^'"!9~#fo͒s#r! ^!`;*! ^#Vs#r! ^#V"!! s!9^#Vq! 9N#F! ^!`ʷ! ^#V`i^#V! ^#V! ^6$Ͱʷ!`in&͒s!!9^#V!Ͱ!`in&`s!`is#r! s#r!`i~#͔! ^#V!Ͱ:!!9! ^6$Ͱž!9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&͒s!9^#V`i~#fo#s#r+s!`q!9N#F! ^#V!Ͱʿ`i! s#r*|*!9s#r*^#V"! ^#V*!9s#rz!! s#rð!`in&͒s!9^#V! s#rq*|E!ͱ,""*DM! 9^#V*"PY$j`i"!**%ʩ**`! 9s#rͱ,a! 9^#V*"`iq! 9^#V"!9!9^#V!!*sq! 9^#V*#"+s!`q!N9N#F!P9^#V#+^z %Ͱ!!9s!!D9s#r! !B9s#r!!@9s#rn&-Ͱʄ!!D9s#r#+^0Ͱʛ!0!B9s#r!!>9s#r#+^!09!>9^#V! h!>9s#ræ.ͰE!!@9s#r#+^!0E9E!@9^#V! h!@9s#rlͰʅ#+^!:9!T9~#fos#r( )$dͰʷ!:9!T9~#fo##s#r++^#Vi, )$eͰfͰgͰ!9!T9~#fos#r̈́,̈́,$!:9!T9~#fo##s#r++^#V[, )!9!!>9()p!9!49s#r!:9((1,ʣ!9! !>9(Z))!9!49s#r!-!69~#fo+s#rs!9! !>9()!9!49s#r!9! !>9()p!9!49s#r!9!!>9()p!9!49s#r!:9(|,!49s#r(!89s#r eͰI!L!!B9^#V!Ͱc!k!B9^#V!9! 9̈́,̈́,̈́,!9! 9!49s#r(!89s#r!!@9s#r !:9(|,!9!69s#rso*dPuxse7f7c!9!49~#fo!89s#r!89^#V!@9~#fo0!@9^#V!89s#r!D9~#k!>9~#fo+s#r#!89~#fok!B9^#V`ip:!!69s#rÈ!69~#fo#s#r!49^#V~!69^#V!@9~#fo!49~#fo#s#r+^`ipy!D9~#!>9~#fo+s#r#!89~#fo! `ip `ipq!9N#F!9^#V`ii,)!9(7)*|,^+s! 9`ii,K)(ͥ* )j)$q!9N#F!9^#V! 9((1,&! 9(|,`! 9!9((\*() )`i͚i,)!9(7)*|,)^+s! 9`i͚i,K)(ͥ* )!9()!9*(EYYY*DM*o&Ywo&Y**+++*DM*!9N#F#^#Vkb6#> 6 #=¢>6#=« : > A[@a{`w# .w#{o|g w#!!|a{ q!!!<'!:o&`<s! "!Ͱʸ!`i^!<Ͱʫ!`i#DM^! Ͱ`i^! Ͱ`i`i#DM~+`i^! Ͱ`i^! Ͱ(!`i#DM+s+'"|J!ͤ X! Ͱʨ! !'!_(!0 !_(!(!!6$! 2 `i*#"+)s#r`i#DM~`i^! Ͱ`i^! Ͱ!`i#DM+sÿf!* 2 Can't open file for redirection: q̓! 9~#L !P Y'EA:$$$.SUBq!"!q!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:q!9^#V!!9^#V q!!!9s#r !9~#fo#s#r!9^#V! !nfZ Ͱ"! !"!!DM2!`iDM`i~#S!!9^#V`i^#Vͻ'S!*!! ^#V!9^#V!`#!9s#r!9^#V!`ʚ!n&u|š!!"!!9^#V!`!n&u|!!"!! ^#Vsrn&un&u!-$ut!9^#V!9^#V!9^#Vnfp! 9!"!!9^#Vq! 9^#V!L"! 9^#V! V"!"!! 9^#V)))DM! ^#V! ^#Vp! 9s#r!! s! s! s`is!Z ! s#r! 9^#Vq!DM"`i&DM`i$"!% ^z"ú"!"!!9^#V͏#!"!!9^#V!`#!V!VͰ_#!9^#V!`R#!VͰ\#!"!#!9^#V!`Ͱ#!"!!!! s#r!# s!$ s`i!9^#V!s#r!9^#V!`#!% s!`#! $!9^#V!s#r#!#!9^#V!s#r!q!!9^#V!%s!q! 9N#F!V!!% s!q!q! 9^#V![$! 9^#V! e$!"!! 9^#V)))DM!9^#V!9^#V! ^#V! ^)^#Vpq!DM!9^#V$~%n$&!DM!9~#fo%$!9^#VBK!9^#Vͽ%(%!!9^#V`i1!9s#rzk%!9^#V!9^#V`i'!9s#rzk%!9^#V!9~#foʹPY!9^#V!ʹPYDM`i!9~#fo$ʴ%!9^#V`i!9^#V`iͽ%ʴ%`i!9^#Vq! 9N#F!!V!!V"Ͱ%*Ͱ&!"!!!͟'&*|&!!9^#V!9^#V!$ ^!'!"V"|W&!!$ ^!9~#fo`!$ sz‰&`i!~#fo#s#r!q!9N#F!é&#!9~#fo'`i#DM+^!9s#r!9^#V! Ͱ&! !9^#VV!9^#V!9^#VVâ&Y!'Y"*!"*N'*!4@'#4*+"}'o&"*q!9!29^#V͏!9!V! 9F+N+V+^+~+ngxʝ'w# Ð'!9^#V#N#F#nxʹ's# î'!9^#V#~#fox'''# '!'!}!}!9^#V#~#fox(~(# (!9~#fo.(#%(}!9^#V#^#V#N#F'!9^#V#^#V#N#F(!9^#V#~#fox(~ʀ(# q((!9^#V#^#V#N#Fq(!9^#V#n~ʳ(ʹ(#æ(!|!9^#V#n(#(xʳ( +~(ù(!*(!*w#w#w#w*~#~#~#~"*V+^+V+^*"*s#r#s#r***""*į>w#`)*~+,#o) ,=ɯ<**###))â)|)|)€)+¤)**į#)**į#)**#)**#***#**~/w#%**~?G*^#V#~#fo))J*#B*DM*s#r#q#p*~?W*###~*~w+s*o*7~w+…**~#–*O])*͓*y2* ͓*:ǩ2+*w#*:ǷZ)*͓*y2* ͓*+*w#+:ǷZ)!ǯw#+> 2!~w#)+O! Ƿ#>+yY+!4!5#+!5ʋ+!~w#f+O! Ƿ#y+yY+M+! Ƿ#”+* ~#§+*~#·+!ǯw#+> 2!~w#+,! Ƿ#+,+!5+*w#,̈́)+,!̈́) ,!<̈́)+, ,̈́)+,+, ,̈́) ,+,̈́) , ,+,*s#r#6#6*s#r#zc,6#6*^#V!9f."!6o&!9~++f."!6!,#|+!9^#V*,*9}|,*"|ɯ=go!9~#f/o|/g#"Wo&!9~G))**++,-$-$-$"r w |        i i i Z Z Z Z Z Z Z Z \0123456789abcdef,Z $&&Z $&& HIT och DIT HIԠ oc DI { progra f| snab oc enke |verf|rin a filer mellan JET-datorer. \verf|ringe ske vi e bildsk{rmskabe so anslute p d seriell printer/Mode portarna \verf|ringe ske blockvi 12 byte pe bloc me kontrollsumm LRC f| varj bloc oc me automatisk kontroll av antal block, hastigheten {r 38400 Baud. HI { programme so arbeta de mottagand datorn. Starta me kommando HIT o mottagn file skal placera p defaul drive elle me 'HI Drive: o filern sk placera p anna driv { default HI skrive kontinuerlig u vilke fi so { unde |verf|rin oc ange vilk file so ha |verf|rt korrekt HI avsluta me CTR C Observer at HI radera ev tidigar file o de ankomme ny me samm namn. Exempel: A>B:HIT B: HIT ( 1.1 ) JET-80 CPM 3.0 Reciving file QQ .SUB Old file deleted. File transferred Reciving file SS .SUB Old file deleted. File transferred Reciving file C .SUB Old file deleted. File transferred Reciving file PROFILE .SUB Old file deleted. File transferred 4 Files transferred No data -- waiting-- Reciving file M80 .COM Old file deleted. File transferred Reciving file M80 .REL Old file deleted. File transferred Reciving file MATH .H Old file deleted. File transferred 7 Files transferred HIT terminated due to operator request 7 Files transferred HIT end .PA DI { programme so arbeta de s{ndand datorn. Starta me kommando 'DI Filnamn' F| filnam g{lle samm synta so PI oc DIR D.v. '? oc '* ka anv{nda so "wildcard" S{ndninge inled me at samtlig file so matcha "Filnamn skrivs DI ka avbryta me CTR C. Exempel: A>B:DIT *.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 Files to be sent: CHARIO .Z80 BOOT .Z80 IOS .Z80 WDRIVES .Z80 FDRIVES .Z80 BIOSKRNL.Z80 No answer -waiting Sending file A:CHARIO .Z80 Exit due to fatal error No FILES transferred 2 Errors DIT end A>B: B>DIT *.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 ---- NO Files --- B>DIT A:*.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 Files to be sent: BOOT .Z80 IOS .Z80 WDRIVES .Z80 FDRIVES .Z80 BIOSKRNL.Z80 CHARIO .Z80 Sending file A:CHARIO .Z80 File transferd Sending file A:BIOSKRNL.Z80 File transferd Sending file A:FDRIVES .Z80 Exit due to operator request 2 Files transferred DIT end -Ã"zw"|z !aF6c#6FCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321A͑"w*w}1ҫ!wE><0;!w!w6!w6!w"'x!%xy2w:w!)x"w*w~2w*w~og |2w:w !+x!/x!F:w_>͉:G!w>A;2wRf%!DB$![D>6;!!D;!!w>;!!-E> ;!@%*}!w;@!7Ewx͛:!8Ewx͛:"w*w:wog<,;!3x!rx*7C~og#))+"w*w#"w!HG"wbj"w!txDͺ(xx~# RE%!E>;%!F>;%@Ra%>B'!F>;%@*xx~2|x!F"w*w+:|xog!Gx͛:*w+:|xog*wx͛:R%!(DB$*w+:|xog>;!@!|x4nR%>B'@÷}x~# R%>B'!G> ;%@@%*=*w+*}x~og;@*w+*}x~og>;!9E>;!SE>;ͥ*w+*}x~og;*w+*}x~og#G>GA;*w+*}x~ogF>k}*xwÑ ̀*zw"w*w+"w*w+"w:w*w"w:w2w*w*w*w>og^<"w*7C^#V*w<*w<"w*w>og;#"w*w*w*w>og^<"w*7C^#V*w<!xE><0;!x*w>og;#"w*w*w*w>og^<"w*w*w^+++*w>og^}2w!Hg"w*w"w!HW"w*w*w<*!xͨ*w*w<"w*w+"w*w+*7C^#V<|z*w"w*w"xw!xD:w2w!x͂ :ww!xD!x͂ aÀ!xͨ!|w# À}!"w*7C^#V*w<|!xD*w"x2x:w2x:xog:xogw!F6*w:xog)))))~!Fe!HG:xog)))))6*w#"w!x4!xͨÚ!w6!"w"w"zw"|w!w6*w`~!F­!w6*7C^#V*w<2x:w2x:xog:xogog;#"w ^#V"x*vw*zw< *zw#"zw:w*~w*zw`;w*w#*x~og)))))*~w*zw`;> GA;*w *x~og)))))~*~w*zw`;w*w*x~og)))))*~w*zw`;>GA; *|w#"|w "x*x | !x/F><,;!x!8yC"~w*x)>og;"vw :w R9 %>B'!E>;%@!<,;!:ySx !w6!w6!{yD><,0;!yySu !w6{ ͔( ^#V"y*y^#V"y:y *w*y)))))~2w*w*y)))))*w:wog)))))> GA;:w!F :w *w:wog)))))6 :w *w#:wog)))))og^|n !w55r !w5*y+"y*w+"w:w *w | *w#*w^|± *w#"y!yͨ!yͨ*w*w<"w:w=2w:w !w4Ó ^#V"y>2y:zw2y:yog:yog< *~w:yog`;~c *~w:yog`;~*w*y~og))))) >2y:yog | *w*y~og))))):yog*~w:yog`;:yogx͛:ʳ !y4W *~w:yog`;6c*zw+"zw:y!y4 >I*xw"w!yL! *w#"w*w"w:yog#"w*xw*w< :y<2y:w2y:yog:yog*w+"w*y4nS^#V"y*7C~og*w *y~og)))))~og<*y"y!y 2y:y:wog#>og^"w*w<:wog"w*~w:yog`;*w*w)))))*w `;>GA;*~w:yog`;~*w+*w)))))*w `;w!w6P^#V"yR;%!-DB$!E>;!*y;!!E>;!@RL%>B'@(^#V"yR%>B'*y;%!-E> ;%@%*!w;@!7Ewx͛:!8Ewx͛:>m2y:w2y:yog:yogog^|*w:yog)))))6+:F*w:yog)))))w>2y:yog |e*w:yog))))):yog6!y40!y4^#V"y!F6*w*y~og)))))"y!z"y>2z:zog |*y+:zog~g.*w *y~og)))))~g.`|!z:zogw!z4á*yGx͛:R-%>B'!G> ;%@RI%>B'!2G>;%@c%*`! z;@! z>;!9E>;!SE>;ͥ! z;>2z>2z:zog |! z:z_>͉:*y+:zog>͛:!zF><0;!z!z5!z4Ò!"w"w"w2Rz2Vz2Wz"w*w*w"Szgo"w!HW"w!Hg"w*Sz*w<!XzD2Uz:w2\z:\zog:Uzog*w#"w:Vzog*w<|!mz͜:Wzog*w<|!qz͜!*w+"w:Rz!uz!yzÙ}z~# %*w*z~og)))))*}z^#V*z~og)))))> GA;*w#"w*z4*z~og*w<|˜*z~og#>og^}*zwz~# ¡*z"z!zͨ*w*w"w*z6*w#"w%z~# *z~2z:w2z:zog:zog<\*-z^#V:zog)))))6>2z:zog |U*z^#V:zog))))):zog6!z4!z4*w+"w*z~og+"w*z"z*z"z!z͜2z:w2z:zog:zog<*z^#V:zog)))))6>2z:zog |*z^#V:zog))))):zog6!z4ý!z4Ë*w*w<$*z"z!zͨ*w*w"wA!z͵"Hw͖!z͛"twåz~# I*z^#V*w;͍6!z>͓7!z͚"w!z͌!zp"w!z͘*z"z!zͤʤ!G͊= z~# ­*z^#V*w;͍6!z>͓7!z͚"w!z͌!zp"w!z͘*z"z!z!zͩ ![͊=m^#V"z!z*zr::z52z9!z5!z͛"tw!z͵"Hw*Hw|f!zF><0;!z*Hw^#V"Jw*Hw ^#V"7C*7C^#V*7C~og#;͍6!Lw>͓7*7C###"{!{A#͍6!Pw>͓7!Tw"z*7C ~gj"z*7C~!z W#:>2z:zog |l*z++:zog)w#w*z!zF:|e*7C^#V |H:z=*z+:zogwe:zog+*z++:zog)s#r!z4×^#V"{*{>l7!Lw>l785"{!{^#V"{*{>l7>5!Lw>l78>55*7C ^#V^#V"{*{>l7>5!Pw>l78>55>^#V" {*7C^#V* {^#V<&!S͊=* {^#V͍6!Pw>l779`^#V""{!${"&{!"${*"{~*&{w*${ruq!U͊=Û͇!({;!GG({x͛:ʙ>ɯB^#V^͞#V ͪͪ"  Later CP/M or MP/M Version Required$*}**}{ozg|g}o!\!l!*:3>:͞!L*3>͞K* !*ͤ͞ ͤ  >  ͤͤͤͤͤͤͤͤͤ͞ͲͲͲͤͲͲ Ͳ͞ Ͳͤ!Ͳͤ"Ͳͤ#Ͳͤ$ͻͤ%ͻͤ(ͤ1^#V#^#V́"> ́"> > ́">́{2> ́"́">́"> 2!2`iPY*}~##~#fo##^#V#{_z/!T]W{_z<KB ^#V^#V)F<*}!9{ozg| #~wþ))o |O#"9C[4BZ!9SJ~#$:> $J&9}x2LCy j2MC"){AE$:RC+-/x2LCy2MC"){Aͯ:LC!MCP& G7!9~#$&*){7<$2;C2PC2SC<2KC!9 V+iv-v>2PC#ҏ… ʉ ,v.¦#Ҧ,×eʰE+-#2QC$!LC5¡:MC!OC<_!;C>w w>+!NC~5>. G:QCx0:NC> !PC~ 5!NC4!KC5-2QCx!KC^4{# # !;C~0>0"+{*9C~2/{:PCA Ϳ"A <:/{20{>Vͬ"!0{S 5~/o :SC‰ >9ͬ"ʉ >*ͬ"w  y *:0{!9q#=€ Ï">21{<22{23{ 2.{:2{_:/{"*9C~2-{:-{9 :1{ :1{21{͟" :3{=O:1{##:3{O:.{#͖"Õ Z *A!O:1{!y21{:1{)!:.{0)!:3{O:-{*#!> #;!:1{21{:3{O:.{#͖"Õ :-{͟"!:-{"†!:-{"o!:3{O:-{##͖"Û :-{21{:3{O> #͖"Û :1{!:.{0¢!:3{O> #!:3{=O:-{##:3{O:.{#:1{21{!:3{O:.{#͖"Õ :-{V":1{":1{21{͟"":3{=O:1{##:1{ "<21{͚"Û :3{O:-{"H":1{3":-{B="?":1{*?"> #͖"Û :3{O:-{CV"D:PCi"> # #Æ":-{C}"# >R#Æ"# >B#͖"͖"Û :0{*+{!3{4!2{4S+-$G:/{Ox*9C## ¶"<>Sͬ">+ͬ">-ͬ">Cͬ">Dͬ":/,.B!2{N*9C# Ⱦ"G:2{_:/{O x*9C# Ⱦ#!i#9w$G:PC8#x+-L#SF#x+L#-SI#>+>-> F$ h#x=b#G#O# #:kCx#ډ#!ZCxO#ډ#$O#'O# £#O#> $Õ# µ#x¯#>$O# ##O#x#>O#='#$x!XC#$#:iC#$:XC> $#>29{!7{K':iC+$!XC+$> 3$> 3$3$26{!4{'!:{Ú=ê$$^$^#Vʃ$a$ͪ$F$#F|$#N|$#^#r+s#^#V++r+s~F$5F$$5^$q#pF$O$4~ $_$s#r#s#r#q!$Ú=$$C$$ Format Overflow*C-&C![{.%O:Cy+%!9G'%~#'%%y.%O:C=%Æ%͹%F%{N%*iC|w%j& *iC*XC<#<> %> %͹%> %{=>'%!9ʨ%=~#'¡%{>'%%Ì%{=>'%{>b%*XC++|2{!{'ɯ%>%>2|" |" |`i" |!9"|!{%[| ~# %*[|~n&*[|~C&!U|>;G3!!!C(!C"i|!g|͋*k&!U|>;G3!R.!!C(!C"m|!k|͋*À&*]|"o|!o|͋*!q|(*a|^#V!aCs#r*c|^#V!cCs#r*_|^#V:|*qC:|G&!u|('*_|^#V}*qC}G&!w|(':C '*_|^#V}*qC}G '!y|(':C''*_|^#V}''!{|('^#V"}|!C"|*}|"|!|͚=2|!|K'^#V"|:CZ':C'*|'*|5!|6:| ʀ'ͳ'r'a'ò'!|'*|'*|5!`C6!|':`Cʯ'*|6Ì'g,2|:|'!C"|!"|!|͚=!XC6#6!|6 :C'!|'^#V"|!TC"|*|"|!|K1%(!C"|!"|!|͚="((:C(*|~ ?(*XC#"XC(*|~ S(!XC6#6(:C(*|~ u(*\C#"\C!ZC6#6(*|~ (*ZC#"ZC!ZC#(!ZC6#6*ZC*kC#<|(!C"|!"|!|͚=('!`C6"|!9"|!|(! 9^|~# (*|^#V|).*|*| r:*| nb5)*| !|>=;O)!|>;*|:!|;*|~#{)*|^#V)))|{)*|6P#6*|~#µ)*|^#V))|)*|6#6õ)*|6<#6*|6#6*|6#6*|6#6*| 6*|^#V}4}2|*|^#V} *!|44*|^#V}"*>2|*|^#V}M**|~#M**|6#6*|"|*|"|*|"|!|(0*|^#V|Š**|"|!"|!|͚=^#V^#VOA:Cڨ*!*͚=2CO!C·*6ü* +~#w!C s#r!C4A**C** I/O Stack Overflow!9"|!|*+!9$>'+%~T]O ++~+>x^#V"|*|6͌+;,T+!C"}!" }!}͚=M,]+^,2}:}+,ͩ+:|> b€+,Æ+ͩ++>,;,+V,+D,+Ì+V,+:}+^,+,^,++D,+M,+,,é+!`C6M,+V,+D, ,:|!`Cw,+g,2|*|~!,:|*|#*|~ogw*|4:|:| :|,:| ?:|':`C‡,!TC"}! }81,! }6Ò,:`C2 }!`C6: } ڡ,*XC#"XC: } ±,!XC6#6: }"3" 3*3^#V#"3^#VͿ,,"$3,"(3|,|~Ϳ,,ya-A =.:;<>[]y *"3, -(-,$-,1J- o&))))\xH  g-#w g--"-*(3#ʖ-AҖ-G-,:ʛ- 6à-p4-+4--#,-#*½-6?-w-¬-,---#6 -..- 4-.,.#*-6?.w--,.-.#6 .%#6.*(3##^ ~?1.# *.xCON CON RDR PUN LST M!L. ~"-$.-,1ҕ.\|.l.$.!~ .-!9.,°. ʾ.-#Ý.x=GÚ.->ɯ*(3+.^#V.#{#z.6#6. r+s!}F#~*/!}6P  eA eA!}^r+s6 #6 !}4^N*(3|Z/}=G/.V/R.R/O>~f/f/>ͨ/N*(3|’/YR.=/y‹/eAÎ/>~ʞ/=ʞ/>ͨ/q2-3*(3/"*3./{..**3*(3#:-3O/.#s#r/../.è/.r+s{0!'34**3+>|0+}o͵,Ϳ,~2&3Ϳ,""3,:&3.1[.a0G:&3.1*$3p[04#63,:&3|00*3++"3Å0}+ʉ00}|23"3,0"31F<|.1##"(36*$3s#rv-š2{ ʚ2*(3:&3w060*3"3<1:&3š20<ʚ2!"3*(3(3w# 1*(3~#3*(3 B>3*$3w#w3͵,,34/Ϳ,q3͵,,3Ϳ,Nm/3*(3~" 4#4#4͵,,3~Œ11K43.>13͵,,3~.>13*(3~ʹ1>31P43*(3!*~!/2,3*(3|1(^#V,,{z1z]22'3z(2:,324/q#2Nm/#2*(3|]2*~]2=!'3Z2:,3ͨ/W2S2w:2^1>͵,,3|}3~> 3<3͵,,3|”2*$3w=3*(3$B*$3^#V6+6++<3͵,,3>3"N#F#~Ϳ,q#p#w>3͵,,3>3*~,!2=2>!*(3" s#r#w=3* 3 }!m}6 4>2l}*i}!4#4#4~#N#F#y#x#:l}*i}!!:k}ʈ3]3G3:m}~G~#~O?3#~3! p! y! q<33.3~3#!!3! 6?<04= _!x$4*4FN4wxG>O>G!$q#p#6R4"f}"i}2h}x2k}.32l}>3!h}~54m3ʘ4=4:k}4*i}<˜4G34*f}:k}O*i}:m}´4y O4:k}G3*f}w# 4N3:l}4*i}!]343*f}"f}g4:l}/g.>Gx|g}o5@5!9VzwzO#5<599! 9/GO~9O9~q+d5!96#=w5O!9Fx7yҮ5! 9~WwzO+›55_ /!9~#=557"n}>6*n}"p}56*p}"p}56*p}G!9!xb6 ]6+/6$%?'w#6-!9~R7&7~#R77! 9~.87+60D70D76 #,7+r>o&9y>o&90w+i76.7w#Ì7 O~#¢7Gxڵ77 9> 79#7!9!97>?'w#7!9͛8! 9͛89! y@88!9o>g~18Gx8f848!9!w# L898!9!9!'#s8!9^{w{W#‡8~W8~+¶8ê87>?'w# þ88!9~#88!99#8>/?'w#•9'w#¦97>?'w##´9^{w{W#9!9Ú=9999!9MD^#V# + w9ȇ :):Wf.0:r~#fo0:s#r!>O @:)8:|W}_ W:|}o|gG:yx/Wy/_{zW{_e:yw# r:~#É:~#W #ÿ:F#"r}x;:*r}!9G_>WObk++:~+:y~#//); ;=;);ɯo>g{ozg!<Ú=<<=!C{#z*aC*cC@xyx >c>_!?^#Vͺ>]>>(_>y͖>>)_>|@>R>'?|L>R>ͺ>>B>,_>]>> _eA eA eA0:_>_>m>m>]>|{>}{> ڦ>dԨ> ͨ>ڳ>ê>xm>N #~_>ü>!?ͺ>*}!9{_z>{> ?>]>>#_>*}>=^#V#͇>??>: "?>?_>!?ͺ>ͺ>>=_>^#V|W?}N?.))@ú>#F>A?> #r?~ >.?~ ?=c?^#V# File: Traceback:???????@ ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLSTBADG!C~N@3@B Condition Stack Overflow$4Ox!t} w#s#r#s#r!9!C s#r!CN!t} +++++‡@#{ @#zʥ@++~Ç@++!C5!~# ´@ð@!CN!t} +++++@#~#@+{@#z@++~@#^#V=!C~OA5:C_!C^#V"CTC.~# !A*qC)))))C )| 6A*TC|}*D"XC:C*CTCw# \A*D{ vA zA!#"DìACopyright (c) 1980 Digital Research, v1.3 !"}"}"}2C2C*} A"}q#p##}o"}*}o|ABB+w+w+r+s4w#w#s#r<2}++*}s#r"}*}#"}*}DM!}x~¾B#~+¾B+F+Nq#p*}+"}ʹBҼB=oB!+~O~#~G!/x—ByʴB >O6# ŽB ~B=ɯ ~#fo++-B!}~#B*}$BBCBC  Insufficient Memory$ Invalid I/O List End of Execution$(CdSYSINSYSPRINT    30INITDIR WILL ACTIVATE TIME STAMPS FOR SPECIFIED DRIVE.1Do you want to re-format the directory on drive: Do you want the existing time stamps cleared0Do you want to recover time/date directory space (Y/N)? YyABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzEnd of PASS 1. ERROR: INITDIR TERMINATED. Requires CP/M 3.0 or higher. Directory already re-formatted.Not enough room in directory. Wrong password.No time stamps present. Not enough available memory. Disk is READ ONLY. Cannot find last XFCB. 3Cannot re-format the directory with RSXs in memory. Unrecognized drive.Cannot select drive.! ABCDEFGHIJKLMNOPDRIVE: Enter Drive: :Directory is password protected.Password, please. >//w'xFwwww5xwwwxwwwwwwwwGwwwxxwxxwwx0x BANK1 TRANSFER DMBK00 EQU 00001000B ; BANK0 --> BANK0 TRANSFER DMBK10 EQU 00010000B ; BANK1 --> BANK0 TRANSFER DMBK01 EQU 00011000B ; BANK0 --> BANK1 TRANSFER ; BIT5: CPU-BANK-SELECT BANK1 EQU 00000000B ; BANK1 (64K FOR CPU) BANK0 EQU 00100000B ; BANK0 (48K FOR CPU) ; BIT6-7: NC SWITCH EQU 1CH ; READABLE SWITCH (FOR MONITOR PROM 3.0)  ; 1=OFF , 0=ON ; BIT0-2: FLOPPYTYPE ; xxxxx000 5" SS 48-TPI (200 kBytes) ; xxxxx001 5" DS 48-TPI (400 kBytes) ; xxxxx010 5" DS 96-TPI (800 kBytes) ; xxxxx011 5" DS 96-TPI (1232 kBytes) ; xxxxx1xx 8" DS (1232 kBytes) ; BIT3: CONSOLE BAUDRATE ; xxxx0xxx 9600 BAUD ; xxxx1xxx 19200 BAUD ; BIT4: CONSOLE HANSHAKE ; xxx0xxxx NO HANDSHAKE ; xxx1xxxx HANDSHAKE ; BIT5: TERMINAL TYPE ; xx0xxxxx SERIAL ; xx1xxxxx GRAPHIC ; BIT6-7: BOOTNING ; 00xxxxxx MONITOR ; 01xxxxxx FLOPPY ; 10xxxxxx WINCHESTER ; 11xxxxxx NETWORK WNRDAT EQU 1DH ; WINCHESTER READ DATA WNSTAT EQU 1EH ; WINCHESTER STATUS ; BIT0 - I/O ; BIT1 - C/D ; BIT2 - MSG ; BIT3 - BUSY ; BIT4 - REQ FLSTAT EQU WNSTAT ; FLOPPY STATUS ; BIT5 - SIDE1/0. ; BIT6 - FLOPPY INT.REQ. ; BIT7 - FLOPPY READY ; OPTIONAL GRAPHIC TERMINAL WITH ; WITH INTERRPUT DRIVEN HANDSHAKE PIOGAD EQU 20H ; PIO A GRAPHIC PORT D1ATA OUT (DISPLAY) PIOGAC EQU PIOGAD+1 ; PIO A GRAPHIC PORT CONTROL (WRITE ONLY) PIOGBD EQU PIOGAD+2 ; PIO B GRAPHIC PORT DATA IN (KBD) PIOGBC EQU PIOGAD+3 ; PIO B GRAPHIC PORT CONTROL (WRITE ONLY) END 1q!qr@6W CP/M 3.0 IOSETUP - for the Jet Computer. Version 1.0 Rev D.  }1(2WRequiers CP/M Plus Version 3.0 to execute. &R(/W ERROR: Not compatible BIOS revision. Bq 2ʹ :(5W ERROR: Not compatible LOADER revision. BM>2ʹ W Function complete PW CP/M 3.0 IOSETUP - for the Jet Computer. Version 1.0 Rev D. Physical Devices I=Input, O=Output, S=Serial ͟ P+ W =============================================================================== SIO channel A SIO channel B Baudrate=~ W Baudrate=~ W Handshak= ~! (###W Handshak= ~-! (###W Databits= ~O! ~2W Databits= ~/O! ~2%W Stopbits= ~ OO! QW Stopbits= ~+ OO! W Parity =~G!(O W Parity =~+G!(O W 1=Device assignments 2=SIO port setup 3=Save default on disk Q=Quit W Your choice ? (.Q W New default NOT stored W + W Enter new assigment or hit RETURN !#~_#6M!$͚ A(3CxLb ͚ Sb ͚ Tb ͚ :(=b > b M2͚ Ub ͚ Xb ͚ O >2 I >2͚ :(=( b : > b > Mb >2͚ Ob ͚ Nb ͚ O >2 I >2͚ :(=( b : > b > b M2W Which channel A or. B (A=printer/modem,B=terminal) ? MwA(B(W Type A or B>2!6W INITIATION OF SIO CHANNEL : WA PRINTER/MODEM PORTWB TERMINAL PORTW Baudrate =: ~ ~ W Handshaking = >~! (###W Databits = >~O! ~2-W Stopbits = >~ OO! `W Parity =>~G!(O W Baudrate Handshaking Databits Stopbits Parity 0: 75 0: NO 0: 5  0: 1 0: NONE 1: 110 1: YES 1: 6 1: 1.5 1: EVEN 2: 134,5 2: 7 2: 2 2: ODD 3: 150 3: 8 4: 300 5: 600 6: 1200 7: 2400 8: 4800 9: 9600 A: 19200 B: 38400 C: 76800 no change or commandstring. !#~M;@!~(!0O :~ w w #~(!0(> >ˮw#~(&!0'_>~w>~?#~(!0_>~#~M!0_>~M"O ~6#~6+:G [˯( Q V #˯(,( ( S7!}w|w ww7W ERROR: unknown command strike a keyM~#˯Ϳ"2 ~##!  6 ! 06I#06O#06S#~(6,W!4~ PG!S W*RW Current assignments CONIN :=!nfʹ W CONOUT:=nfʹ W AUXIN :=nfʹ W AUXOUT:=nf ʹ W LST :=nf)0 |   WW Source drive name (or return 1for default)  (BA8 A2 A_c~(B >W ERROR: You cannot boot from second winchester unit. BW Source on then type return  BPͧͭqͳ2:8TW ERROR: Possible incompatible disk format. Type return to ignore. BP<2:(ͻͷ8qO #~˯#B(:H(ND($S(P Q~08L30H2!~08>30:2 ~08040,2~08"D0:8=02~08 2ү2W Incorrect command format; (Correct format: "B9D2H0S0P0") strike a key7˿˯ "_W ERROR: Invalid drive name (Must be A through P)W ~#_͟_W ERROR: Selected disk not on system.2 O> > > >  > >>2 C 2 !W[|}0:8!!O 2 NONE 50 75 110134.5 150 300 600 1200 1800 2400 3600 4800 7200 9600192003840076800  NOYES@ @`5768 11.5 2 NONE EVEN ODDÞCOPYRIGHT (C) 1980 DIGITAL RESEARCH YRELIRLFATAL ERROR$l$l1 ͺ!"!6͓*~=:!ͣ !6:/::!ͣ !6:!!/ͣ < ͧv! s+p+q> ͍"̀ځ*>! q** DM* 1q>> ͍+s#r=>!r+s+q+q+p+q> ͍"!6> !*&*6!4¦:! *w* * * DM -* *s#r*"̀*":*. Tu -". u -2:~ l:\.~ -Ql.~ -dup. du -zT!"u*M: *M: !6>}!: :<2¨#u{u>!͘,T>͍)*DMTT"*%DMu{̀+s#r;'*DMu{̀N*"'ͅ>v":2T2u:ҙu͟!6>!ڙ: :<2:ҦT͟:!/Ҵ:͍ >>l͍ >!͘:/H*!*"'*DMT{T:lͪ : >>l?: &#*DMu{:2:2u͉Tp*>@O>*>@*w*~!s+q*&%*& *&%*2& "*DMT*+"*DM3T"!p+q!\#s>!s:+&:2̀&ͣ :22ͧ!s+q+q*M*͍"̀̀Hm*DM̀%*& "!6|*#:w*##:w* :w!6!6\2!:!H÷:!!6l+6**͍!6\* ^#V""!3"$"!o2ͣ :< J.< -B3!6#6!6*#s#r!6\wl!6!6!6\ʒÇ.  -›!&6:!&:&=O! N,:&<2&©**pH*#N*##* ^N0Jͭ1 Gͤͣ  <_1D**M*0G!'q:w**M0*"!6}!6:'҄Çͭ1Ҙ**͇H* >͘ҿ:'/**M*0} <_1K!6#6#6:  . - 12(:( T}L :2:2!:y :2̀y ͣ :22!""*"!6!6: *")*"*K: *: !6#6l: *)"ï !6l+6!6͔ :  G. - !"!\"!"*^#V" $!^q> !^] :^0O,h :^ AO,!_q:_OD :_OD !ap+q>`Mi !`\Mi !cp+q*bDMG!ep+q!d\+J<!hr+s+q*f&4 N,*gDM͵ DM̈́  ,*3&+) >>l!C9 < ,*3&+) ^#V*3M  ,!iq*# :iw*#"!͛o #*DMu{!"*!*"D*!s*D!s*D!s!6*!*"D*!s*D!s*D!s!6*M: *M: *M: O`iN928 "92;!j6:;!jU :j=O!< Hq!j40 *8M*9 !k6:;!kڇ :k=O!< N,!k4g  ,!lq*' :lw*#"!͛ '*DMT{*!*"!"!ns+q: ͪ :n!O> !>O:n2nO!mT!w& 8 !w:o2% & *M͍ !6!6:n!2oK :m!o>O!mC!pq*pM !rp+q*q}OY *q|OY *8M *9DMg *;M !s6:;!sھ :s=O!< NY !s4ž !t6:;!t :t=O!< N: !t4 : 2u: :* *uMi  ,*3&+) N#F+q#p!C6:? *uMY !vq "w:R:ҕ *vM*w *3&+) N#F+q#p*3&+) >>l2C:Ҵ *vM *wDMg !yq:y/:yH >!y# :y::::y8*;< -*:;2:@:<!C6*y&>) N#FG>!ykb :y/:yH҅V :y ¦:823*3&+) *9s#r:y!"+"-"/"1!36<::y<@ Gb :!:y<b :I:y/ *yM :y#~ >!y/͐ :yI:I 7:[:y[Ϳ o >á2zO>Ҏ*zM@:zá2z*zM͵:z,=>)-,),>,=*#"!|p+q*{~**{ >*{#"{>ʹ*~>~,H2 !6)!\""!o)ͣ !6!6ʹͼi**& w:<2cͣ ʹ7*~-w!6*~)…!6:ғͣ !6*"*~)*:º!6***̈́:*:!6!6lͼͣ Þ!6*~>ʤ*#"}!6*:3ͣ *~=X!6*#"}:X!"}**Ҁ* *}s#r*>wÑ**}̈́ͼҡͣ ʹ*~]*~D!6*~I!6*~M!6*~P!6ͣ ʹè!q!6!6*"ʹ!""!o8ͣ >͍J!"ͼҍ*~(c͆Ç*~_[],()!q: > :a/>z!/H:_2:!p+q*^#V"*##^#V"!6 !6+6:W: Q!6l<*6+: m+_Ax!!6Aڙ:ڐ!l+}::*~:Hھ!*#~A<*wO>!*&*6 '!6:.+A: !l+: !*&*\:<2O* N2!6> !i*& :b>!4F>:<2O* :w:!4~ʶ 6*#"*{zڶ!"ͧ*!~2xG:2G:p ˆx!4~ 6*#"*{z!"*!~2xG:2G x{_ C#5>ɯ$!p+q!6> !ڌ*&*~ x*&*N,:….,!4Q!r+s+p+q*DMG*DMFEͣ !s+p+q+p+q+p+qWͣ !">͍+s#r!oM*DM`:$*DM͐O>!>͍ ͣ !9*DM͠O>9ͣ *"*#"`!r+s+p+q+p+q***DMͮ*!r+s+p+q+p+q***DMͮ!p+q*DMp!6 > !*&*6!4²*DMͰͣ !p+q * 6 * 6*DM̀*͍!p+q*DM+ͣ !q*& , ,!p+q*  !p+q*!p+q*!p+q*! p+q*! p+q* ! p+q* !p+q`*!p+q*_{ozg_ogDM!>))덑o|g = DM!>))4 =,_{ozg~ D^#V) N~ U^#V|g}o `_{ozgO{ozgi`N#Fogo&og_{_z#WLIB 1.1 $REL $$$IRL $$$INDEX ERROR$NO MODULE: $SYNTAX ERROR$APDCentry symbol $select common block $program name $request $error 4 $define common size $chain external $define entry point $error 8 $external + offset $define data size $set program counter $chain address $define program size $end program $end file$FTiw(5ABORTED$DISK READ ERROR$DISK WRITE ERROR$CANNOT CLOSE$DIRECTORY FULL$NO FILE: $çCOPYRIGHT (C) 1980 DIGITAL RESEARCH Y? OVL LINKING $ $ 1L9M9!96w:o9!9D:!""!""!"9*9^#V"9"q::u9 ͥ6**=;"`:"b:q:b:͞8.96`:q:͞8"9|!96wj1:9R,v!!]:ڤ*]:&f;) N#F͋41!]:4:u92:2:2;2E;2u;2;2;2;!D:6+6!E:6!"p9!"m9}2o9!z962v92x92w9!t96X!"y:"{:"}:":":":":":":":":":":":":":"i:"k:"m:"o:}2:!:6#6#6*9"q:2C:2D:2E:2R:!"X:o&"Z:|!"s:!"p;";";";":":";"7;*+":*+":*+" ;*+"9;!":":";"?;!":":";"A;:9*b::9=o&))9  ^#V!!<4*<&^<) 2<͞8-*<&^<) ^#V"d:M*<&^<) q#p!<4*9&))9  *`:s#r*A:)8"p9*9&))9 q#p:9<29O>D:9=29D:9ڗ*9&))9 ^#V"p9  ^#V"`:*`:DM!96#~ͬ . ":\ -:+: .+: -:9":5*.:~=ͬ :9('*.:~(*.:~)H^*.:~,NDͬ :9['(:9vC()!o96>5!B".:ͬ . ":\ -ˆ*.:~=Ÿͬ ï.+: -§:9ҹ'*.:~*.:~(H*.:~,Dͬ :9'ù:w92y9:9F:9(C(͆7:9):o9:o9H4!"p9>:o929*p9"95*.:~(*.:~ʐn*.:~)p̀^*.:~*.:~(HҍDO:9ʛD*Ͳ!6~̈́6*& 6:[],()?$! : @: <_2 <: !#<ڲ*#<& :<«>!#<4>*.:#".:*.:N2<&õ͵:< ͵!<6 !%<6+6:%< :%<  !<6͸ !\6͊ !!%<6͊> :%<5 !͸ ͵" :<:„ :\:%<Hb !:]A<2\O>v !*%<&\ 6 ô !%<6:<.° ͵͊ڰ :%< ڧ !͸ ͵Ô ! :%<<2% :<02<> : :>!"&<͵͊6 - *&<))))*<& "&<0 D͵ *&<:/͵: W :ZD͵:ڎ :!Q: D*Q:&J: : >!:*!^:6+":^:$t 8'> *0< ~L*0< DMB5*0< 6*0w#6!4w#6*0<##N#F*.< ~O`i~8p8!6Ͷ8ikS*0< DMv5*0< DMd5*0< *0<##N#Fq#pä*0<##q#p*u:#^#V*u: ^#V*u: ^#V*u:~*u:~*u:>*u:~*u: ^#V*w: ^#V!8:=<Hw!>:><Hw!?:?<Hw!@:@<Hw!B͔8>ͥG<8'*u:"w:*E<#"E<ͺ"u:>͔8$>ͥG<ͮ8!TJ<ͫ8:P<Hr:Q<ҁ!U<6 Æ!U<6:U<q:ͫ8+s#r!`:͹8ң96:T<Һ*JE<ͫ8*P<&i:) N#F,DM,*LE<ͫ8F*P<&i:) *q:s#rN*q:DMͷ!V<6>!V<ڷ!"Y<*V<&i:) ^#V"u:>u:ͫ8ʝͺ"W<*Y![<,*[<&i:) ^#V"u:*[<&<) N#F.>u:ͫ8%OkͥDMͪͮDMͪDMͪͺ"u:![<4!"i:"k:"m:"o:*d:##6*d: 6*d:^#V!`=p+q*d:*_=s#r*d: >!a=q*d: :a=w*d:##>?!b=q*d:##:b=w*d:##~*d:##>w*d:##~*d:##>w*d: ~!c=q*d: >:c=Hẅ́d:8++"\<*\<^#V!e=p+q̈́d:8++"\<*\<*d=s#r*d: ^#V!g=p+q*d: *f=s#r*d: ~!h=q*d: >:h=Hw!k=s+p+q!^=6:k==2k=ʱ*i=:^=2^=*i=#"i=Ñ:^=2^=!n=s+p+qͽ"d:`:d:͞8͹h!n=*l=*d: DM*n=>*>̈́d:8+s#r!r=s+q+p+q*o=DM*q=̈́*^=&^<) ^#V"d:>d:ͫ8ʆh!q=}*o=*d: DM*q=>*}U!r=}>M"d:<>!|=r+s+q+q+q+p+q+q+p+q:u=2}=:z=Һ!}=44*`:"d:*}=& "`:q:ͮ896<*s=DM*u=̈́*^=&^<) N#FU*^=&^<) *d:s#r*}=M͍*v=DM>*y=M*u=Ms*x=Mf*u=*d: *s=DM -B:z=Y*{=DM*d: ~#k!{96 MODULE TOP $UNDEFINED START SYMBOL: $YY???? $$$XX???? $$$RQST$ UNDEFINED SYMBOLS: $ABSOLUTE $CODE SIZE $DATA SIZE $COMMON SIZE $USE FACTOR $!=q*=MͲ!~=4!=q> !=8:=0OͲC:= AOͲ!=q:=O:=O!=p+q!=̈́8MD>=08MD:;!t;!;!;:u;2\. ] -Ÿ\ͩ6!t;6!;6!;6!;6!=6+6>!=*=&f;) ^#V"= *= ~ *= DMv5 *= 6!=6:=<2=:=7::2\. ] -)\ͩ6*p9###H:ͮ8!D:U!\:6*p9###F:ͮ8!C:r!\:6*p9###X:ͮ8҉!\:6:R:>S:ͫ8:U:H:C:/HҼ!\:6!\:6:E:!C:!\:6!\:6:C:*F:"::\:*p9###":3*p9"::D:*H:":8*:*:"::r98*:)8":*:*:":Z:X:͞8_X:Z:͞8#"y:e!"y:!:6*X:":!=6>!=ڞ*=&y:) >Ͷ8Ҕͥ:=<2=v!":::2=!=6:=#w:==2= *=&:) *=&: N!: ͠8*=&: ~2=*=& :=w:=2=:=<2=õ*=&: :=w::<2:*b:"d:`:d:͞8q͜/!9H`2UO!: 8DM>ͪ̈́d:8+s#r&!]:6>!]:7*]:&f;) N#F͋4:*]:&<) N#F.B2=:="="=:=O>"=n2=ð-*]:&i:) ^#V"u:>u:ͫ8-2=ͥ"=ͮ"=!"=nͺ"u::]:<2]:w!=r+s+p+q*=}*=_DM͘4*=#*=|_͘4!=p+q*="d:2:=2=:=O>Ґ*=DM^"=ã*=&:) =8"=:=O>:=O>==͞8UO!: ͹8"=*=*="=*=DM*=8*d: ~*d: :!z9/H!"=ͽ"d:`:d:͞8HҴ>=08>͔8S6!~=6U`/wUp/>=08 \8 M`͹ҖÞ2DM_   *=#"=̈́d:8+s#r >!=Ͷ86!=6>#w#62~=ͽ"d:`:d:͞8N/=:=!=6>=08>͔8'6!~=6w*=#"=>&8)))M`̈́d:8+s#r>!=Ͷ8\66!=q!=:~=v d!=6h!=ڤ:==O! *d:N:=<2=|:E:J:*Q:M2"V:!"V:|!=6:Q:!=:==O!J: NͲ:=<2=6D:R:*U:&:) S:8"V:D>!{:Ͷ81*:"V:DX:ͣ8D*X:"V:Z:X:͞8mX:Z:͞8#DM*X:v6*:DM*:6*:DM*:6*:DM*:6`:s:͞89ͮ8*9|=ͫ8 Ͳ(Ͳ*=DM_-Ͳ*=*=+DM_)Ͳl*|9DM_68f ͥOr:t9Z^E.:n~:x9ZyU/?OVLAY?OVLA0RELIRLIRLREL))O`i~8p8>!:!>6::!>:>=O!: NͲ!>4½)2:͕":)2::: !:6!>6::!>. ):>=O!: Hq!>4 *h&\8*|& "9>*7:DM\͏5*9+"9!>q:>2]:*]:&f;) N#F͋4!>q:]:!f:Ҏ *]:&y:) N#F*>͘4:]: Z:y:͞8Ҽ *y:"Z:X:y:͞8 *y:"X:*]:&y:) N#F+q#p!>s+p+q::2>O!: :8">*>DM*>h!ͮ"!>2>:>>!>ͫ8HA!ͱ!">G!*!>">*>DM*>MC:>e!*]:M͋!*>*>*]:*>*>5:=Ҭ!ͱ!"!>>͔8ž!*!>">!>6í!!:]:2%>*>M^ *>DM4*>#DM4O`i~8p8"#>*%>M^ *#>*b:"d:`:d:͞8%"*d: ~#"*d: 6̈́d:8+s#r!!{96:*:MH"H"!^:6:*:Mi"2"g:͜2f:o"=6*:::: -y"::29:*::ͺ/Ҵ":*:͉:*:M"!:͹8"/Ͳͯ/Ͳ Ͳ=6#:*:*:*:*:͉*:*:"::*:M/I#:*:͉*d:DM :*:Mҟ#{#=ͯ6Ü#*:&:) :8DM>*:Mf#:*:*:&:) :8*:͉*]:&y:) N#F*]:*:DM5!=6#!=6*:":*:M^ :]:$$*g:*:":C$*]:&:) :8*]:&y:) q#p:]:P$!=6*]:&y:) N#F *:":>!:Ͷ8::HҲ$:R:Ҕ$=6ò$*:&:) :8"S:::2U:!R:6:0:$)$ò$!&>6>!&>%%*&>&:) *&>&:) 8*&>&:) q#p*&>&y:) q#p*&>&:) >w#6:&><2&>$s:q:͞87%*q:"s::G%͸*9"q:^ :_:/2^::{9]%!!)>s+p+q:)>ˆ%*g:*'>"'>:f:҅%!)>6Ý%*)>&:) '>8+s#r*]:&y:) N#F*]:%*'>DM*)>M͋%*]:&y:) N#F*'>*)>*]:5y y !*>q:*> &>!*>&:*>#&+"ÿ&:*>1&p"ÿ&:*>?&k$ÿ&:^:ҿ&:*>=O!& ^#VI"ÿ&ÿ&͈"ÿ&>ÿ&͵"ÿ&#ÿ&T#ÿ&#ÿ&#ÿ&$ÿ&$ÿ&Q$ÿ&d$ÿ&W&]&`&f&o&u&{&&&&&&&!+>6)&)2->:^:&*->My (')2,>')2+>:+> '*+>M%('͕".>:^:('*.>DM*,>^%:+>&7','!0:6&H'='!0:6!"1:"7::!:'*:͗8"1:"7:. 9\ -u')29!hʦ':92h\͕6¦'\=45)2|29!:6*7:"1:!"9"9^ :_:/2^::!:!_:' ',':e (.e -'e>*2!:\d5I'}/B(}͉ͽ"d:`:d:͞8)͹(:v92\!0>6>!0>گ(h!0>҈(*0>&\ 6 å(:0>=O! *d:*0>&\ w:0><20>g(!!:6.e -¼(\W5/(!!:6.e -(\d5*d:"1>!_:6I'*1>"d:̈́d:8+s#rI(.: -)!:6!:6^ ͽ"d:`:d:͞8)/)*{:DM>fy ^%y !":y y *d:"4>#*4>"d:!3>6>!3>)h!3>ڶ):3>=O! *d:Ny û) y :3><23>Œ)*:"::)͸*9"q:̈́d:8+s#r5)!0:4~ (*6*1:#"1:*7:{z*!"1:/ *1:!>~26>xG:6>26>G )x{_ P*#B*>ɯ`iq#zV*COMPRLRSPSPROVLSYM!;>q*5:> :;>w*5:#"5:!3:͹8ڦ*>*3:DM\͔5!"5:!<>q:8>!<>28>:7><27>*!7>6*8>Mq*!8>6!=>q*=>Mq**A:#"A:!?>p+q*>>}O**>>|O*::+:o9+h,*p9"A::\:,+**V:DM**X:":!@>6::=!@>q+*@>&: N!: p9͞8j+*@>&: N͍+!@>47+:o9:o9HҌ+ -!C>q:C>¢+*X:"D>ó+*C>&:) ^#V"D>D>A:͞8+96D>A:͞8+*+*C>&f;) N#F͋4*C>&y:) >Ͷ8,:C>,*X:DM',,',|9A:͞8&,*A:"|9!G>p+q*F>"H>*C>&y:) F>8+!H>͹8g,*H>DM4O**H>"H>3,::=O!: N!: !y: 8*p9͗8"A>**A>DM**:o9,***p9DM*,*m9DM****:r9,*:DM*,*!J>6>!J> -3*!J>4,*p9"A::\:(-ͦ-ͦ-ͦ-!L>6::=!L>|-*L>&: ~2K>u-*K>&:) A:͠8e-ͦ-J-:r-.u--!L>4--*p9*A>A:ͮ8ҕ-ͦ-|-:7>ʥ-ͦ-Õ-!O>q*O>Mͧ**A:#"A:M>A:͞8-ͦ-ù-ͦ-*K>&i:) ^#V"u:>u:ͫ8.ͥ*K>&:) 8"M>͹-ͺ"u:-*K>&<) N#F.*0< ~R.*0< DMd5*0< *0<##N#Fq#p].*0<##q#p2P>:P>ʤ.*K>&:) 8"M>"9:P>O>Ҙ."9͹-2P>c.>5:08>͔8ʾ.q*å.>*5:DM\͔5\v5:w9Z.. \": -.:e /.*o9&\8_* DMe - /:w9#/:w92\\B5:9 A/. ~9\ -9/!"5:}28>27>*ͥ.:x9Z^/. \": -f/.en* -v/:x9ʌ/:x92\\B5!"5:}2R>ͽ"d:`:d:͞8(0͹/H02DMv0 q*!Q>6h!Q>/:Q>=O! *d:Nq*:Q><2Q>/:R><2R>0 q* q*0 q*̈́d:8+s#râ/ q* q*ͥ.!S>q> !S>O0:S>0Oq*Z0:S> AOq*!T>q:T>O60:T>O60!V>p+q*U>|O[0*U>}O[0*9>!=8"W>*W>!=8!Y>s:h0:Y>2h\͕60\>645*W>!=8!|s2*9͗8"9>. \~9 -0:9 1*9>"9>\d5͍0C\͏5!Z>s*9>!=8C "9*9*|9s#r͍0C*Z>&\8DM\͔5:j2j\v5:9ҁ1*|9)8"|9:y9ZŠ1a9ҟ10ñ1g9ұ10!_>q.*[> :_>w*[> ~!`>q*[> :`>w*[> *[> ^#VN#FR* *[> 6*[>^#V!=8"b>?8!a>s1!a>P2*[> DMv5*a>M1*[> DM͕6P2*[> DML5*b>!=8MͲ1*[>  *[> ͞8ҍ2*[>  *[> N#Fq#p *[> ~ڮ2*[> DMB5 *[> 61*[> N#F*[> *[> N#F͔51!e>p+q*[> N#F*d>?8^8*[>q#p*[>*[> 8+*[>##q#p*[>*[> N#F^#V?8*[> s#r *[> N#F`i"h>*[> N#F `i"j>*h>"f>j>f>͞8ڐ3*f>+*[> ^#V\8DM2_2*f>"f>\3*[> ^#V*j>\8DM2*[>  *[> ͞8Ҿ31*[> N#F*[> *[> N#F͏5!n>s+p+q*[>l>͠84 *[> ~4_2*l>DM2ͦ3Ê4*[>##l>͞8Ҋ4 *[> ~34_2*l>DM2:n>j4*[>  *[> N#FPY͹8d463g4ͦ3Ê4*[>  *[> ͞8҇41Ê4ͦ3!p>p+q*o>"[>!s>s+p+q*q>DM3*[> ^#V"]>*[> N#F*q>?8*]>:s>w *[> 6!u>p+q*t>DM3*[> ^#V"]>*[> N#F*t>?8*]>~   +5{>.+55OͲ5w66ͩ6́5;6<566́5͕6<>́5͕6<>645͜6<H66! w #ˆ5>Ö5>2,6""6"$6yo`"&6!"*6͋6-66*&6|6 "&6*"6MD6*$6DM:,65ͷ6g666Ͱ66**6|6U6*$645*"6""6**6#"*6ú56**6ABORTED$NO SPACE$NO FILE: $CANNOT CLOSE$DISK READ ERROR: $DISK WRITE ERROR$YYYP   YP6YPYPYPYPYPYP Ͳ ò!>6#6͐6">*>|$7>9ͫ8"|>##*|> ~!7!>6D7*>|?7!>66"|>D7!>6:>Y7!~>6#6#6Å7*|>~2~>*|> ~2>:>z7:>2>*|> ~2>!>6>!>ڰ7*>&v> ~/*>&: w!>4‹7:72"g:^ *:"|> *g:":*9My *9My *9My *~>My *>My *>My *|>":i`N#Fog_og_{ozg_ogDM!>))덑o|gV8 =D8DM!>))k8 =c8_{ozg^#V) ~8^#V|g}o ˆ8_{ozgi`N#Fogo&og_{_z#W LINK 1.31 $01/04/83?MEMRY$MEMRYX MEMORY OVERFLOW, USE [A] SWITCH$INSUFFICIENT MEMORY$OVERLAPPING SEGMENTS$ XXABS $$$XXPROG $$$XXDATA $$$XXCOMM $$$::;7;YYABS $$$YYPROG $$$YYDATA $$$YYCOMM $$$n;;;;INDEX ERROR$MULTIPLE DEFINITION: $MAIN MODULE ERROR$FIRST COMMON NOT LARGEST$COMMON ERROR$UNRECOGNIZED ITEM $4( COPYRIGHT (C) 1977 DIGITAL RESEARCH 112O02Z0̀%!"K2.>2.*M0"$/̓%!"":g0i!"P0"R0"2:0v: 0$  :[0-ʬ+ʬ* :[0!_0M!f0P p  !   :O0Ĝ!":O0*V0}|<r ͪ*|Ĵ:O0_͑H *V0"Ù*V0"E V» ͪ»**»"Ù*K0"X0!0NA#~' ~p"K0*K0N"X0!0q#*w œ:0!x ͜ *V0*R0:_0̍"V02*M0r; !:r :0F: 0e%;m ">2:0b: 020 W,F:0b: 0e,ʹ:re*X0#![0~ʇww2/ͬ:2T/-"."$/2/>2.v:.ʸ!/6+͕%>20:.ʮ:.0209$<!5*}Ģ*V0":0y: 0:yv! X! ^#fkX _~ 0^ Z   2 5 8  :0‰:0=ʉG! 0ʃF#2sÖ*I0| E2V ,[ ͊m *R0"R0"P0 m E2D2V ,ʾ ͊:/ m :/ "> 2/:Į:0 : 0 -Ͳ !/6+:.;?*$/*."$/?"$/:.l*.^#V{r+s5*.^#V ʓ:. r+s!06#wÚ> 209!e/~6![0~6".~,#!0w9 9*.~6 *: 0,Ĵ2f/*.s#r2[02e/*.#"X0$<5ͬ*$/"M00:T/2:/2[0 v>20*.".2[0v*R0m "R0͍"R0!/w >=G*R0*I0"R0"R0 m :/ }>͞ ¥͢ :O0*V0*ʿ͜">2:O0:0:O0!!4:0: 0,>"4:O0: 2\0:0=: 0 F!Fʹ%*X0"`0>2Z0*X0":0k: 0T!T:\0¦:O0¦:0=ʦ ʦ*"X0 !':[0'Tx»!Z04TT!Z05T:\0!":]0!**V0":O0*X0~ Ĵ*X06 '>#G*I0!" :0 :Z0 !0N*K0:O0Ÿ"b0+"X0yʛ 'É' Ͳ >ͮ 222:0: 0 !ͮ-:0:0!4 :0& : 0::0!xI !4̨ e ::̮>͞ } !~5:Į ͵ !4̨!~5 G!~Ҩ4_!p!~ʮ5^!~> >2\0:0N *K0"+"X0:0 >''!:0N : 0,N :0 >  > !0N#~' ) > ''*K0"V0:\0x ʹ:\0" m }*K0"+"X0''*K0"V0>"4ͬ:2T/:[0 “ 2/-*M0"$/*X0!{#zڿ ~+"X0*M0+"M0wß #"K0*M0".:\0 N]T s#r+*V0*{_zW".:\02.R     % *I0:/ ͪ% ͬ:O0ĭ%  :.ʢ :0¢ *K0+"X0!2<20*#"" : 00Ĩ!??" 09"K0+"X0$< :0¢ : 0,? ʹ  *} :]0 :O0 :0 ͤ%:e0ĭ%:0 : 0  ͬͧ%vʹ   ͺ :0: 0 !;* _!5 ^#fkS \ h n 2 ͠ ͻ ͵ ͠ ͖ 8{ Ăy0 2͵ ͖ Gͻ ͋ ͖ 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D y0P 2!0^4! 0q :0Ė: 0,; Ė*I0m |}$† ͌oy Ԍ͋ 8O͖ Ăy01y 1m X:0 : 0, >C͘%:0 : 0 v;:0 : 0 v-!v !v-ʹ {ozg:.7ͮ2Z0!O0~4l!"*|>"V0*""J͊!/6 !/͒%:^0ʏ>2.͡%ͱ*K0*T0&*M0*T0&\ ͍!/w#õH USE FACTOR !/͒%*"P0Þ%z{*P0"R0*"V0 !":O0Ģ*R0̜*R0ĜG:O0xě%:/ *R0̍:xz*P0#"P0E2D20:b!^4!/wjj*R0!6zz{z4A_A?ɯ2.2*T0"V0!.8w# *V0*K0{zҤ*b0+"X0 =$**X0#Þ!.*V0".#"X0$:d0<:0<! 0~?<#ʐ: 0͡!.".^#V"V0}{##~2.*.^#V#"."V0*V0}d##~<2.G*V0##"X0:.> u!.~w>w> u:.P'!5^!/~ !~620͕%2.|z}z> u!.~w:.W=*u!.4C*V0^#V"V0ý!.5¯:20͕%!^4!/w>R͘%>V͘%>Dý>Pý>Lý>Oý>Bý>Sý>N͘%*6".~ 6Y-!2~B6~44O!! s#r!1~ _6^4! w!p!2~~!55N!! N#fiooo&)^#fk9BIO[ov ͌z{>ɯo>g͌"!6ů{_zW5>)D*OxG !?DM!xGyO23)#͌)=R|g}o=^͌͌roz{͉͌͌}|͉͌Þ͌Þ͌ë͉͌!!o#Ã͌zg{o͌zg{o͌zg{oolo&3:0: 0 ;!,ɯ2122=2 !"I0&q!1~\5_! ~͔D:2:/ *!"I0:/ :0:0! 0^#=ʙV¨*0!҂ :0:0& !!>O: >42 yU`:10_!~0!1s! ~͔ yU!1~N=w_! ~QZP>2 ypP͘% >U̘%>: 2 3>E͘%óf:.O*.~H:.=!4>͕%0:/#". ͆%2G:0xa{_ ʇ ʇ:0x҇_<20!/w:e/S:e/9ɯ2f/2d/2e/:0:e/ !2f/g/~#»S͉!f/~4!g/_:e/w2e/ɯ<*V0"36*"V0ɯ2!4!f/6".!f/~55!d/^4!g/~f:.:e/JGwf^l͗^{:e/&{!f/4#ww&ʞGʱ2e/xf͗ :e/&ʕ:0  ý͗&{&{ý͗  !e/~&>62/-!.6*M0"$/B".2f/*"V0͗ 2f/2e/2[020> 2͕%>20ɯ202!0~@$6^4#:[0w~$w:[00 6:[0A:[0?e@eAɷP6 o2[0:Z0ʦ:\0 :O0¦:[0':[0 !20:[0 R;/>20:Z0?:\0:O0?́;B*`0*X0++{z~ ++!+"X0:Z02Z0́ͪ'2Z0X:[0*K: ḰͪX? X́ö20Pg>ã6r>ã:[0'ƒ2[0>ã ¡:.ʔ>+2/͕%!/6 >20>20:[02́:0:Z0: 0=!EQ<!LT:[0=!LE>!GT:[0=!GE2[0" 0!04>20![0:0/ʦg¦´/ʦA¦:[0O<QA>HHR>22[0m:B_>fD> j!052!"0!0N#~#A҄0Æ7O!~*0!ʩң)Ú "0 x:[0 '¦́'æ:[0 :[0,;%:[0 !:[0; ,202́/>20:[02́:0G:0::0l:[0'́:[0' 20/:[0'|>20^—́:[0  <¨!~4 >¼!~5 : >20>V>O>I>B͘%!QéÉ $ ? H Y ` e Ò ü ò ~ÏGÇåûfD?<==:e>?; ><>; ;<=R>>>F>;>G==<==>=s;=P=*>=$?P:-?]>*<<==<;=>>y> ;: =;>?>P?<=?>>=<<i;m=>c==>o>v<=<;8?N!Nw#w#W!"V0!.w#w#l2N!.~4^!.~w!.ͼ!.ͼ!.ͼ!/~w!$/ͼ!D/~w!T/~wN#Fp+q!.~^!.!. !. !. !/!$/ !D/!T/5~wN#Fq#p>BØ%!0" * F#%2NG*V0##~w*V0##~<͉:.t!.N!. yq~t +aG=#w#wY*M0!0n& {ozg"V0!K0{#z"M0b*M0!0N#yʢ ~Õb!."O1:N *M0!$/{#z"V0$ _!.*V0~#~1 ~#"M0û1 !͒%Þ%SYMBOL TABLE OVERFLOW G*V0##~w*V0##~=*V0_###1 s#r1 ^#V1 ##"X0P wP ~O!0~z 6~=ͼ !0N#~ͼ „ Ͳ O2Ny *\ ?=)$=)w#Ž&!\60 ڱ&>GO#w ³&>O # &6 &6L#6I#6B#w2|r&\u'>2]0!"%![0~2%wG&!,x&>82%2%!"b0*"M0!1"%"&"@&#"K0"T0' _#~6' D':%A6'>:6'D'>.6'D'>-6'x&!,N'!k-x&!,N':% '> ':%'_!% '6 4ɯ2%2]02e02d02g02%:\ =)!%w#w#w#w#w#w#>2^02_0:m$(!~#$,(~(# 3(%Aʩ(Pʩ(Sʩ(Hʩ(Lʩ(*t(+t(-¶(^0~Sʣ(Mʣ(e0Lʣ(d0Qʣ(g0Rʣ(%1¶(x#3(~AҶ(#3(#6 !)-x&!x&!%͉&!%͉&ͳ'(`&͛'͠':%)!&͉&l&͛'5͠'!%60#60#60#>2f0!"&:O0*!"%2%2%2%Z&%u'!-x&z{:]0ʢ)*%F)w)!"%r&\‰)*%#"%+~):.2]0ʢ)r&\!~-N'*%F))Z&!"%*%B&%)¼))*)6# )G&*%*%#"%~!<-x&G:%7*$*x*7*x2*Ϳ'5*9**&*&w#"&!F)`&!"&*&%~ʅ*B&Œ*`*G&`*!S-x&ö,͟**>&*@&w#">&!F)l&!">&*@&&`*_!%~ *2%*b0}!,~ +*#+> *>#**> **b0~>+*#2+> *> *> *}2%!%*O*:/ :O0:%y*:%!O0•+:e0!]0+~,:/ ,!/~ +:f0,:/++:_0,+:/#,:/ ,:_0=+!/~ +!0s!%~!%*4:0!/,G~Y+#x=+> Y+> Y+20!/>x6 #=,G!/~ pͳ'*&}?,>*/,`&%͈':^0*+,!&6S#6Y#6M#w!&w:%2%!"&ͳ'*2%`&%͛'͠'+,:%ʶ,:%.*P0"%.*>&}ʶ,>͕*æ,:%,l&&͈'!-x&CP/M MACRO ASSEM 2.0 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR INVALID PARAMETER: SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES UNBALANCED MACRO LIB END OF ASSEMBLY G:%x-!%~--.-*P0*%O {-z-.*P0"%!%^4!%w..WƐ'@'Õ*>:͕*!%^Ww*%{-|-}--{?.!%~#-6.-> ͕*> ͕*͞*> ͞*ws ; equates for mode byte bit fields mb$input equ 0000$0001b ; device may do input mb$output equ 0000$0010b ; device may do output mb$in$out equ mb$input+mb$output mb$soft$baud equ 0000$0100b ; software selectable ; baud rates mb$serial equ 0000$1000b ; device may use protocol mb$xon$xoff equ 0001$0000b ; XON/XOFF protocol ; enabled baud$none equ 0 ; no baud rate associated ; with this device baud$50 equ 1 ; 50 baud baud$75 equ 2 ; 75 baud baud$110 equ 3 ; 110 baud baud$134 equ 4 ; 134.5 baud baud$150 equ 5 ; 150 baud baud$300 equ 6 ; 300 baud baud$600 equ 7 ; 600 baud baud$1200 equ 8 ; 1200 baud baud$1800 equ 9 ; 1800 baud baud$2400 equ 10 ; 2400 baud baud$3600 equ 11 ; 3600 baud baud$4800 equ 12 ; 4800 baud baud$7200 equ 13 ; 7200 baud baud$9600 equ 14 ; 9600 baud baud$19200 equ 15 ; 19.2k baud PATCH VERSION3.0 PATCH.COM COPYRIGHT 1982, DIGITAL RESEARCH151282654321:o2! *m" -< |#}0#:] <>2   : : :3! ]~. a{ ##e~ a{ ##~ 2m#~2n*m" : aB{B @2\! :\Ҥ!e~ #Z!CO"e>M2g>2 zÖ: *e}C|O:gM>2 *e}P|R:gL>2 \2 |: @: ,?<2 L*>2 ó!>2 6 =++w: #<: +=6 ?>!6 #=D!~a_{_ w#Q: Ƃ2 * 6 : ʝʯ>2 '0: =„>2 '0:S ʂ>2 '0: =±! 3 #:! ]* } 1]:]>2 >2 A: N* | :02# }0 _'_:# 2$ !]}02$ * " * " ? <͍ <ͭ* |́* }́* |́* }́2 >:" '2" {2 z2 : 2 ܻ: WÈ* |}* |}: _:$ d:$ G* |}* |}2 :5 {2 x < <͍ C?C C >2% % :' YPyPtz\ V xw <͍ <:$ ڶҏکÜ:$ 2) >:$ 2) >:$ 2) >:$ =2) >2* ! :* O "+ !9 :) O F*+ ~w x <͍: > > 2}!"~"\ʽtS \ _" 2 ~ B* : #=I" 2 ^C* : #=b<* }B* | B!]>I.C!e>I<:\̹@B:C<: 0B C:" 2( :" 00B:( 0B C: 9:<!e>b  9O9$9p<!>b9f<:] ͍ͣ9<!m>I#   <9ͣ< <9͍9<:\@B:C|zʒt< <1Q ̓ͮUtͳr CP/M 3 PATCH - Version 3.0$ ERROR: $PATCH requires CP/M 3$Invalid file type: .$Serial number mismatch$No file: $False password: $Invalid patch number: $Drive $ is R/O$ on $Illegal drive: $ Enter File: $ Enter Password: $ Do you want to indicate that patch $ Valid file types: COM or PRL$ Valid patch numbers: 1-32$ Current patches for $ WARNING: Patches greater than $ exist for $ has been installed$ already exists for $ Patch $None$ for $ Patch installed$ Patch not installed$ $ $: $ COMPRL151282 @1"CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321͈͋> (12/06/82) CP/M 3 PIP VERS 3.0 DISK READ$DISK WRITE$VERIFY$INVALID DESTINATION$INVALID SOURCE$USER ABORTED$BAD PARAMETER$INVALID USER NUMBER$INVALID FORMAT$HEX RECORD CHECKSUM$FILE NOT FOUND$START NOT FOUND$QUIT NOT FOUND$INVALID HEX DIGIT$CLOSE FILE$UNEXPECTED END OF HEX FILE$INVALID SEPARATOR$NO DIRECTORY SPACE$INVALID FORMAT WITH SPARCE FILE$MAKE FILE$OPEN FILE$PRINTER BUSY$CAN'T DELETE TEMP FILE$ *5<P_lz)<\fp}NO DIRECTORY SPACE$NO DATA BLOCK$CAN'T CLOSE CURRENT EXTENT$SEEK TO UNWRITTEN EXTENT$RANDOM RECORD OUT OF RANGE$RECORDS DON'T MATCH$RECORD LOCKED$INVALID FILENAME$FCB CHECKSUM$2FTe$NONRECOVERABLE$R/O DISK$R/O FILE$INVALID DISK SELECT$INCOMPATIBLE MODE$INVALID PASSWORD$ALREADY EXISTS$LIMIT EXCEEDED$eT     =.:;,<> _[]OUTPRNLSTAXOAUXCONAXIINPNULEOFERROR: $ - $$$$DESTINATION IS R/O, DELETE (Y/N)? $**NOT DELETED**$COPYING -$ (Y/N)? $REQUIRES CP/M 3$CP/M 3 PIP VERSION 3.0$:"Q}#( :}#2m#}1͖-m:m#8ͺk 2#2$M 2"!\#6!z#6:z#b:m#2}#!$6+6+6!o#6!"6!"_#"X#}2d#2g#2h#2c#2z#!n#6!e#6#6!j#6!"6:m#ҹ*ͨͺ!#6:}#͑ ͖%#:d#%# :p#=:p#_HH ":S# N:"H ͵!S#6:d#<"$\( K"#&#( Az:S#:" H҃͵!"6&#,"( Az>!S#Ҕͥ z:S#ʡ!e#6:j#z!f#6:p#,:p# Hͥ :p#,2j#!c#w:S#!$6:$!$6:$!$6:"> !"H!d#"ͥ :"/!f#6:" T!f#6>'!f#Q!f#4<g:" dgA2:j#w"á:m#2}#b! $p+q*$}2{#|2x#!!$q:!$_ ͨ ͨ!#$p+q*"$ !%$p+qͺ*$$DM!|#6|#  !'6$p+q*&$!)$p+q$*($ DM!+$p+q**$DM **$DM̈́:{#**$ ~Hi **$!{#6!x#6!-$p+q*,$DM̈́!/$p+q*.$DM̈́DM̈́!1$p+q*0$DM *0$DM̈́!3$p+q*2$DM̈́!5$p+q*4$DM̈́!7$p+q$*6$ ~ *6$ >w! *6$ >w$*6$ DM*6$DM̈́!9$p+q*8$DM *8$DM̈́!;$p+q*:$DM̈́ !<$q!<$:$ʐ :<$2$_ *#Mt *R#Mt *"Mt !>$p+q*=$!DM̈́:{#!@$p+q*?$"DM̈́:{#!B$p+q*A$#!D$p+q*C$$!E$q!E$:\# :E$2\#_,0!J$s+p+q+p+q:J$=2J$^ *F$*H$ w*F$#"F$*H$#"H$7  !z#6:h#~ ͡ "j !h#6:g#Ҕ ͙ "j "͢ !}#6!"6l!K$q_ *K$&) N#Fͺ!N$r+s+q:{#2Q$:x#2R$_ :L$:Q$H !R$6 :R$2R$*L$& N! N#F> !L$~H:Q$H> !Q$/H^  ͨ:Q$=O!r N#F!R$6:R$ {  ͨ*R$&) N#Ft>M$H" *M$~A=Oͨ:ͨ!P$6> !P$ *P$&*M$>2O$ :P$ .ͨ*O$Mͨ!P$4¢ ͺ:Q$:Q$H:Q$H:Q$H :d#2z#D :R$>!R$~ HH> HD :d#2z#ͥ  m m ͥ !V#:"{ >!V#:"© !U#:"Ғ >!U#:"© !T#:"ҩ >>͙ %#-"( x"( :+#2+#%#! :{#2y# %#j :x# %# "͢ :{#:x#H!" " :{#L:x#D" L" !#6!g#6͡ :"2""! :{#u!h#6:$/:"HҊ!{#6:{#¯:x#§" ï" :"2r#:"2s#:"2t#:"2u#:"2v#:"2w#" 2{#"T#( !"6#6#6#6!"]#:g#ͬ !_#!"Y$>'")!"W$͙ :k#!l#we *W$$ DM" b" k" :a#Ҁ!@"Z# Ë!"Z# W$Y$;">'"W$Y$;"!@*"!a#W$Y$;""Z#!Z#"}O *W$$ DM" :{#" *Z#*W$"W$Ë:$ң !"W$ Y$W$;"ҝ"ͩ 2V$*##"#>'"G!#4!U$6:U$ր!V$ҁ*U$& :U$W$!$ 2V$!U$4L*W$"W$:V$ښ" "Ϳ " *W$$ W$_#;"+s#r{_$( N :a#!@"Z# !"Z# ͡ *X#"]#X#";">'"X#";"!@*"!a#=X#";"!"Z#!Z#"}O *X#*"DM:"2W#"Ϳ :{#:{#n" :a#҇*x#&"*X#"X#!W#:":"րHҦ!"6" n /2k#:a#/!c#" "j !h#6!i#6*X#*"6*Z#*X#"X#![$q:[$ !"4>!$:$!":$1*[$&*S#M! ^#V*[$M̈́ø*[$&ø*[$&ø*[$&ø"_#;"ڄ *_#$ :[$w*_##"_#øg*[$&øAKYgu!\$q:\$ *\$M:$*\$M:"2]$!$:]$!$:]$2]$!]$:$w>!]$!]$5 :\$ (!"6!^$q:^$!$wF ͹O:^$0O͹!_$q:_$O):_$O)!`$6:$2$:$'2$:$'2$:$'2$*$MP*$MP*$MP:$¿:͹ ͹ ͹!a$q:$:a$ :n#9:a$ :a$H9:$2b$(:b$!b$6<:"<2"!b$(!"6 ͹>!$4k!n#6:a$ F!"6*a$M͹:a$ Z!n#6!c$q:c$a/>z!c$/H~:c$_2c$:c$!d$q:d$A/>Z!d$/Hҥ:d$ 2d$:d$!f$6*"M!N ^#Vͥ `"]#;" :e#/!b#!"X#]#@" *_#"X#*]#*"~2e$*]##"]#`5!f$62e$`2e$`̀2e$`"5E:f$ҕ:$Ҁ:o#<2o#2f$Ë:e$ 2f$:f$ҕN :$Ҥ:e$2e$:$ҳ*e$M[: $*e$M͂:e$>!":"=2"> >>!"!"5+N!~# ~2g$!"4ͩ2g$ >>!$;*$Mk8:$2"!$6:"<2"!"6g>!$c*$Mk\!$6!"6> :g$g:g$!h$q:"!h$wO!~# ~2i$—*h$&~# :g$w>!g$:i$¨!"4í!"6>2p#:$X#]#;"!i#:p#!o$62j$:j$::j$:o$" *j$M2j$2j$2l$:j$2k$2j$!l$w:l$D!o$6I!o$6: $!o$x:j$::j$Hu2j$T:*k$M*j$M:l$2m$"p$2n$:l$ʲ!l$52k$Ý" 2j$:j$0O> :j$0:j$AO>" :j$A 2j$OH!m$wO`i"">!$@ ͥ >!$N ͥ *_#}bO2 ͙ "j :{#" :y#:.#:$:{#Y:{#NH{͟O[2{#Ø:{#Yͺ"͢ ͺ:.#2.#:/#2/#%#V %#͢ %##( "0 :&#!r#2&#:'##2'#:(##2(#:)##2)#:-#2-#:.##2.#:/##2/#:0#20#%#V :$}͡ :"2"!"6"V :b#ڦ!$""K"!>1"""""$@""!>1"""""$ """_#;" !"X#:$/>X#H"H@>X#H"""!r$6>!r$@:r$"!*"~9:r$"!"X#!r$4:e#!f#2a#!i#6!b#6!l#6+6!s$6>!s$ڶ*s$&$ ~ʯ*s$&$ ~‘!a#6ï*s$&$ ~¯:e#!f#2b#!a#6!s$4b~:f#W:a#:i#:c#!i#*X#"_#:j#*X#"_# *_#"X#:k#!i# RG: $!$$5Ͱ5*p#M$:j#!c#G*_#"X#:e#QO͡ "  "ͩ 2{#n Hґ*""#:"2#!i#6:{#°*"#"">'"­!"4:{#*"!"">'"!"4" f:z#!"t$"x$͡ !h6\ !"v$:{#t$v$;"H6*v$#"v$͔ :{#]>x$H"R\ : $\ͺ*v$#"t$:{#_!#&#( &#"( f#!1#6!"6:/#/!$#: $>x$H"!{#6:{#Y:{#NH':$͟O[2{#!{#66Y*x$#"x$!g#6:{#Y! $#Aͺ!z$6> !z$e*z$&%# ~2{$ ^:z$ W.ͨ*{$Mͨ!z$4/:$p>͡ !"6?" :{#ʲ:{#_!# "( :"ڬ>͔ ~>!":R#!":%#HH :#<2#!}#> *#&~# N[2p# :p# H !}$p+q.*|$ 6 !p#6 #6:q#,T:q# A!p#6N:q#$N!p#6 ͒ )$*|$ 6,*|$ 6:"<*|$w*|$ :#w!~$6>!~$ڗ*~$&$ 6!~$4|!"6#6#6!q#6*p#Mc :q#ھ:p#*Ͳ ͒ 2p#ê:p#:¿:q#(*|$#~A<*|$wO>*p#Mc %:p#[ !#5.*|$ 6 ñ:q#1!$6#6> !$ڰ!$6:$<2$O>/:$!$O!J *$&*|$ H~G:$¡.*|$ :$w[œ !#5:$2$!$49:p#[¼ _ :q#!q#6+~. 2p#Oc  :q# :p#* Ͳ ͒ !q#6+~;= 2p#Oc = :q#$ *q#&$ *|$:p#w!q#4 :p#[H !#5.*|$ 6 *|$ 6å!$q!$6> !$ڏ *$&> :$ˆ >!$4l >:q#<2q#O*|$ :p#w:p#?± !d#6!$q!p#6?!$:q# ͒ û 2p#:p# :p#]H!:p#A2$O>!:p# !2p#!ͥ !:p#S:p#QHX!:#<2$2p#:p# HO!1!2p#Ü!2p#02$O> r!!$6Ü!2p#02$O> ڜ!*$&!*$& !$sr!*$&$ :$w:$!>!$ҿ!ͥ -*|$ :$w 2p#_og_{ozg_og^#V))) _{ozg^#V) "^#V|g}o "_{ozgO{ozgi`N#Fogo&og; I/O Port addresses for Z80 chip set ; based system with wd1797 FDC ; chip bases p$zdma equ 0 p$wd1797 equ 4 p$zpio1 equ 8 p$zctc1 equ 12 p$zpio2 equ 16 p$boot equ 20 ; OUT disables boot EPROM p$zdart equ 28 ; console 1 and printer 1 p$zpio3 equ 36 p$zsio1 equ 40 p$zsio2 equ 44 p$zctc2 equ 48 ; diskette controller chip ports p$fdcmnd equ p$wd1797+0 p$fdstat equ p$wd1797+0 p$fdtrack equ p$wd1797+1 p$fdsector equ p$wd1797+2 p$fddata equ p$wd1797+3 ; parallel I/O 1 p$select equ p$zpio1+0 p$fdint equ p$zpio1+0 p$fdmisc equ p$zpio1+1 p$zpio1a equ p$zpio1+2 p$zpio1b equ p$zpio1+3 ; counter timer chip 1 p$baudcon1 equ p$zctc1+0 p$baudlpt1 equ p$zctc1+2 p$index equ p$zctc1+3 ; parallel I/O 2, Centronics printer interface p$cent$stat equ p$zpio2+0 p$cent$data equ p$zpio2+1 p$zpio2a equ p$zpio2+2 p$zpio2b equ p$zpio2+3 ; dual asynch rcvr/xmtr, console and serial printer ports p$crt$data equ p$zdart+0 p$crt$stat equ p$zdart+1 p$lpt$data equ p$zdart+2 p$lpt$stat equ p$zdart+3 ; Third Parallel I/O device p$configuration equ p$zpio3+0 p$bankselect equ p$zpio3+1 p$zpio3a equ p$zpio3+2 p$zpio3b equ p$zpio3+3 ; Serial I/O device 1, printer 2 and console 4 p$lpt2data equ p$zsio1+0 p$lpt2stat equ p$zsio1+1 p$con4data equ p$zsio1+2 p$con4stat equ p$zsio1+3 ; Serial I/O device 2, console 2 and 3 p$con2data equ p$zsio2+0 p$con2stat equ p$zsio2+1 p$con3data equ p$zsio2+2 p$con3stat equ p$zsio2+3 ; second Counter Timer Circuit p$baudcon2 equ p$zctc2+0 p$baudcon34 equ p$zctc2+1 p$baudlpt2 equ p$zctc2+2 p$rtc equ p$zctc2+3 71d B1H1D3S0P0| INITIATION OF PRINTER/MODEMPORT - ͦ| BAUDRATE ::/G!||..... HANDSHAKING : :/G!%|... DATABITS : :/G!3|. STOPBITS : :/G!:|... PARITY ::/G!F@|..... Commandstring : !r |.......... Baudrate Handshaking Databits Stopbits Parity 0: 110 0: NO 0: 5 0: 1 0: NONE 1: 300 1: YES 1: 6 1: 1.5 1: EVEN 2: 600 2: 7 2: 2 2: ODD 3: 1200 3: 8 4: 2400 5: 4800 6: 9600 7: 19200 8: 38400 9: 76800 I=Init port, N=New default saved, =no change, commandstring. |Your choice ? :]I |IA͈!~E()sM!U~2#~2#~2#~2#~2| L#~˯IH:/G!##~2h#~2m:/G!##~2o:/G!+##~2q#~!ow:/G!7#~!mw:/G!C#~!mw!eZ| ..............Printer/Modem port initialized. N|7!U:w#:w#:w#:w#:w8O #~˯#B(:H(DD($S(P ~08302Y~08302X~08402W~08:02U~082V2V@ @ 110 300 600 1200 2400 4800 9600192003840076800 NOYESʁA5678 11.5 2 NONE EVEN ODD61300~G#N#E | ~#O͐ ! [PRIMO COM( | Cannot open PRIMO.COM !( | Cannot read PRIMO.COM  !"(!| Cannot write PRIMO.COM | ..............New default values saved, but not sent to port.!~O#~U~檩˿#|kxxmt!90$`tkeuggz euggz  TITLE 'PRIMO.Z80' ;********************************************************** ;* PROGRAMMET S[TTER SIO1A-CTC0 P] F\LJANDE S[TT: * ;********************************************************** ;* TILLDELNINGAR OCH DEFINITIONER * ;********************************************************** .Z80 ; SENASTE UPPDATERING: 1984-01-03. ; KONSTANTER CR EQU 0DH ; VAGNRETUR LF EQU 0AH ; RADFRAMMATNING BELL EQU 7 ; RING I KLOCKAN ; ZILOG COUNTER TIMER (CTC) PORT NUMMER: CTC0 EQU 8 ; CTC CHANNEL 0 CTC9600 EQU 00000100B ; TKONST = 9600 BAUD*32 CTC4800 EQU 00001000B ; TKONST = 4800 BAUD*32 CTC1200 EQU 00100000B ; TKONST = 1200 BAUD*32 CTC300 EQU 10000000B ; TKONST = 300 BAUD*32 ; LINE PRINTER DEFINITIONER: LPTCTL EQU 1 ; CONTROL PORT PAGE ASEG ORG 100H START: LD SP,STACK JP START2 DEFB 0,0,0,0,0,0,0,0,0,0 DEFAU: DEFB 'B6H1D3S2P0' DEFB 0,0,0,0,0,0 START2: CALL PNEXT DEFB CR,LF,LF DEFB 'INITIATION OF PRINTER/MODEMPORT - ',0 CALL KRYPTO START1: CALL PNEXT DEFB LF,LF,LF DEFB 'BAUDRATE :',0 LD A,(DEFAU+1) SUB '0'-1 LD B,A LD DE,5 LD HL,BAUD+20 JR LOOP1A LOOP1: ADD HL,DE LOOP1A: DJNZ LOOP1 LD DE,BAUDTX LD BC,5 LDIR CALL PNEXT BAUDTX: DEFB '.....',CR,LF DEFB 'HANDSHAKING : ',0 LD A,(DEFAU+3) SUB '0'-1 LD B,A LD DE,3 LD HL,HAND+2 JR LOOP2A LOOP2: ADD HL,DE LOOP2A: DJNZ LOOP2 LD DE,HANDTX LD BC,3 LDIR CALL PNEXT HANDTX: DEFB '...',CR,LF DEFB 'DATABITS : ',0 LD A,(DEFAU+5) SUB '0'-1 LD B,A LD DE,1 LD HL,DATA+8 JR LOOP3A LOOP3: ADD HL,DE LOOP3A: DJNZ LOOP3 LD DE,DATATX LD BC,1 LDIR CALL PNEXT DATATX: DEFB '.',CR,LF DEFB 'STOPBITS : ',0 LD A,(DEFAU+7) SUB '0'-1 LD B,A LD DE,3 LD HL,STOP+3 JR LOOP4A LOOP4: ADD HL,DE LOOP4A: DJNZ LOOP4 LD DE,STOPTX LD BC,3 LDIR CALL PNEXT STOPTX: DEFB '...',CR,LF DEFB 'PARITY :',0 LD A,(DEFAU+9) SUB '0'-1 LD B,A LD DE,5 LD HL,PARITY+3 JR LOOP5A LOOP5: ADD HL,DE LOOP5A: DJNZ LOOP5 LD DE,PARITX LD BC,5 LDIR CALL PNEXT PARITX: DEFB '..... ' DEFB 'Commandstring : ',0 LD HL,DEFAU LD DE,KOMTX LD BC,10 LDIR CALL PNEXT KOMTX: DEFB '..........',CR,LF,LF DEFB 'Baudrate Handshaking Databits Stopbits Parity',CR,LF DEFB '0: 110 0: NO 0: 5 0: 1 0: NONE',CR,LF DEFB '1: 300 1: YES 1: 6 1: 1.5 1: EVEN',CR,LF DEFB '2: 600 2: 7 2: 2 2: ODD',CR,LF DEFB '3: 1200 3: 8',CR,LF DEFB '4: 2400',CR,LF DEFB '5: 4800',CR,LF DEFB '6: 9600',CR,LF DEFB '7: 19200',CR,LF DEFB '8: 38400',CR,LF DEFB '9: 76800',CR,LF,LF DEFB CR,'I=Init port, N=New default saved, =no change, commandstring.',CR,LF,0 VAL: CALL PNEXT DEFB 'Your choice ? ' DEFB 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0 LD A,(5DH) ; BUFFERT CP 'I' JR NZ,VAL1 CALL PNEXT DEFB 'I',0 JR INIT1 VAL1: CALL RDCONB LD HL,CONINB+1 7 LD A,(HL) AND A JP Z,SLUT CP 1 JR Z,INIT CALL ANALYS JP C,ERROR LD HL,BVAL LD A,(HL) LD (DEFAU+1),A INC HL LD A,(HL) LD (DEFAU+3),A INC HL LD A,(HL) LD (DEFAU+5),A INC HL LD A,(HL) LD (DEFAU+7),A INC HL LD A,(HL) LD (DEFAU+9),A CALL PNEXT DEFB LF,0 JP START1 INIT: INC HL LD A,(HL) RES 5,A CP 'I' JP NZ,ERR1 INIT1: LD A,(DEFAU+1) SUB '0'-1 LD B,A LD HL,BAUD JR INLP1A INLP1: INC HL INC HL INLP1A: DJNZ INLP1 LD A,(HL) LD (CTCR),A INC HL LD A,(HL) LD (WR4),A LD A,(DEFAU+3) SUB '0'-1 LD B,A LD HL,HAND JR INLP2A INLP2: INC HL INLP2A: DJNZ INLP2 LD A,(HL) LD (WR3),A LD A,(DEFAU+5) SUB '0'-1 LD B,A LD HL,DATA JR INLP3A INLP3: INC HL INC HL INLP3A: DJNZ INLP3 LD A,(HL) LD (WR5),A INC HL LD A,(HL) LD HL,WR3 OR (HL) LD (HL),A LD A,(DEFAU+7) SUB '0'-1 LD B,A LD HL,STOP JR INLP4A INLP4: INC HL INLP4A: DJNZ INLP4 LD A,(HL) LD HL,WR4 OR (HL) LD (HL),A LD A,(DEFAU+9) SUB '0'-1 LD B,A LD HL,PARITY JR INLP5A INLP5: INC HL INLP5A: DJNZ INLP5 LD A,(HL) LD HL,WR4 OR (HL) LD (HL),A LD HL,T9600 CALL INISTM CALL PNEXT DEFB CR,LF,'..............Printer/Modem port initialized.',CR,LF,0 SLUT: JP 0 ERR1: CP 'N' JP Z,OPEN ERROR: CALL PNEXT DEFB BELL,BELL,0 JP VAL FEL: SCF LD HL,BVAL LD A,(DEFAU+1) LD (HL),A INC HL LD A,(DEFAU+3) LD (HL),A INC HL LD A,(DEFAU+5) LD (HL),A INC HL LD A,(DEFAU+7) LD (HL),A INC HL LD A,(DEFAU+9) LD (HL),A RET ANALYS: RRA ; KOLLA OM UDDA JR C,FEL AND 00000111B; ANTAL BYTES LD C,A INC C ; \KA MED 1 ANALY1: OR A DEC C ; MINSKA MED EN TILL RET Z INC HL ; B\R PEKA P] TECKEN LD A,(HL) ; SPAR DETTA RES 5,A INC HL ; PARAMETER CP 'B' ; [R DET BAUD JR Z,ANAB ; JA...HOPPA CP 'H' ; [R DET HAND SHAKE JR Z,ANAH CP 'D' ; [R DET DATABITAR JR Z,ANAD CP 'S' ; [R DET STOPPBITAR JR Z,ANAS CP 'P' ; [R DET PARITET JR NZ,FEL ANAP: LD A,(HL) CP '0' JR C,FEL CP '3' JR NC,FEL LD (PVAL),A JR ANALY1 ANAS: LD A,(HL) CP '0' JR C,FEL CP '3' JR NC,FEL LD (SVAL),A JR ANALY1 ANAD: LD A,(HL) CP '0' JR C,FEL CP '4' JR NC,FEL LD (DVAL),A JR ANALY1 ANAB: LD A,(HL) CP '0' JR C,FEL CP '9'+1 JR NC,FEL LD (BVAL),A JR ANALY1 ANAH: LD A,(HL) CP '0' JR C,FEL CP '2' JP NC,FEL LD (HVAL),A JR ANALY1 BAUD: DEFB 0AEH,0C0H ; 110 BAUD DEFB 80H,80H ; 300 BAUD DEFB 40H,80H ; 600 BAUD DEFB 20H,80H ; 1200 BAUD DEFB 10H,80H ; 2400 BAUD DEFB 08H,80H ; 4800 BAUD DEFB 04H,80H ; 9600 BAUD DEFB 02H,80H ; 19200 BAUD DEFB 01H,80H ; 38400 BAUD DEFB 01H,40H ; 76800 BAUD DEFB ' 110' DEFB ' 300' DEFB ' 600' DEFB ' 1200' DEFB ' 2400' DEFB ' 4800' DEFB ' 9600' DEFB '19200' DEFB '38400' DEFB '76800' HAND: DEFB 0H ; INGEN DEFB 20H ; JA DEFB ' NO' DEFB 'YES' DATA: DEFB 08AH,001H ; 5 BITS: Tx,Rx DEFB 0CAH,081H ; 6 BITS: Tx,Rx DEFB 0AAH,041H ; 7 BITS: Tx,Rx DEFB 0EAH,0C1H ; 8 BITS: Tx,Rx DEFB '5' DEFB '6' DEFB '7' DEFB '8' STOP: DEFB 04H ; 1 STOP-BIT DEFB 08H ; 1.5 STOP-BITS DEFB 0CH ; 2 STOP-BITS DEFB ' 1' DEFB '1.5' DEFB ' 2' PARITY: DEFB 0H ; INGEN DEFB 03H ; J[MN DEFB 01H ; UDDA DEFB ' NONE' DEFB ' EVEN' DEFB ' ODD' BVAL: DEFB '6' HVAL: DEFB '1' DVAL: DEFB '3' SVAL: DEFB '0' PVAL: DEFB '0' ; INISTM: ; INITIERAR I/O-PORT FR]N EN TABELL. ; ING]NG: HL = ADRESS TILL TABELL AV F\LJANDE ; UTSEENDE: ; SLUT MARKERAS MED BYTE=0. ; BYTE1 = ANTAL BYTES TILL PORT. ; BYTE2 = PORTADRESS. ; BYTE3...BYTEN = DATA TILL PORT. INISTM: LD A,(HL) ; KOLLA OM TABELLEN [R SLUT OR A RET Z ; JA (HL)=0...]TER. LD B,A ; H[MTA TABELL[NGD. BYTE-R[KNARE. INC HL ; N[STA BYTE LD C,(HL) ; H[MTA I/O PORT ADRESS. INC HL ; PEKA P] DATA BYTES OTIR ; S[ND TILL I/O PORT. JR INISTM ; UPPREPA F\R N[STA TABELL. PAGE ; TABELLER ------------------------------------------------ ; 9600 BAUD NO HANDSHAKE. T9600: DEFB 2,CTC0 ; 2 BYTES TILL CTC0. DEFB 01000101B ; COUNTER. TIDSKONST F\LJER CTCR: DEFB CTC9600 ; 9600 BAUD. DEFB 9,LPTCTL ; 9 BYTES TILL DART B DEFB 18H ; RESET CHANNEL. DEFB 14H ; SELECT WRITE REGISTER 4. WR4: DEFB 10000111B ; X32 CLOCK, 1 STOP BIT, PARITY EVEN DEFB 13H ; SELECT WRITE REGISTER 3. WR3: DEFB 11100001B ; NO HARDWARE HANDSHAKE ON DB25 PIN 4. ; RX 8 BITS, RX ENABLE. DEFB 15H ; SELECT WRITE REGISTER 5. WR5: DEFB 11101010B ; DTR, TX 8 BITS, TX ENABLE, *RTS LOW. DEFB 01H ; SELECT WRITE REGISTER 1. DEFB 0 ; NO INTERRUPTS, UNMODIFIED INTERRUPT ; VECTOR (BOTH CHANNELS). DEFB 0 ; TABELLSLUT. ;********************************************************** ;* GENERELLA SUBRUTINER * ;********************************************************** ; PCRLF - GER NY RAD PCRLF: CALL PNEXT DEFB CR,LF,0 RET ; PNEXT - SKRIVER UT DEN TEXT, SOM OMEDELBART F\LJER ; 8 SUBRUTINANROPET. ; TEXTEN M]STE AVSLUTAS AV EN BYTE = 0. PNEXT: EX (SP),HL ; HL -> TECKENBYTE LD A,(HL) ; A = TECKENBYTE INC HL ; N[STA BYTE EX (SP),HL ; BYT TILLBAKA OR A ; [R DET NOLL (SISTA TECKEN)? RET Z ; JA...]TER LD C,A ; C=TECKEN CALL CONOUT ; SKRIV DETTA JR PNEXT ; N[STA TECKEN ; RDCONB - G\R ANROP TILL BDOS OCH L[SER IN BUFFERT. RDCONB: LD C,10 ; READ CONSOLE BUFFERT LD DE,CONINB JP 5 ; CONOUT - SKRIVER UT DET TECKEN, SOM FINNS I C P] ; CONSOLE. CONOUT: PUSH HL LD HL,9 JR GO GO: PUSH DE ; LAGRA DE LD DE,(1) ; DE=BIOS-VEKTOR ADD HL,DE ; ADDERA \NSKAD VEKTOR POP DE ; DE ]TER EX (SP),HL ; BYT F\R ATT KLARA RET ; HOPP TILL HL:s L[GE. FCB: DEFB 0 ; DEFAULT DRIVE DEFB 'PRIMO COM' DEFB 0 ; EXTENT DEFB 0,0 ; S1,S2 DEFB 0 ; RC DEFW 0,0,0,0,0,0,0,0 DEFB 0 ; CR DEFB 0,0,0 ; R0,R1,R2 OPEN: LD C,15 ; OPEN LD DE,FCB CALL 5 OR A JR Z,SETDMA CALL PNEXT DEFB CR,LF DEFB 'Cannot open PRIMO.COM',CR,LF,0 JP 0 SETDMA: LD C,26 ; SETDMA LD DE,80H CALL 5 LD C,33 ; READ RANDOM LD DE,FCB CALL 5 OR A JR Z,FLYTTA CALL PNEXT DEFB CR,LF DEFB 'Cannot read PRIMO.COM',CR,LF,0 JP 0 FLYTTA: LD BC,10 LD DE,90H ; TILL ADRESS LD HL,DEFAU LDIR LD C,26 ; SETDMA LD DE,80H CALL 5 LD C,34 ; WRITE RANDOM LD DE,FCB CALL 5 OR A JR Z,OK CALL PNEXT DEFB CR,LF DEFB 'Cannot write PRIMO.COM',CR,LF,0 JP 0 OK: CALL PNEXT DEFB CR,LF DEFB '..............New default values saved, but not sent to port.',0 JP 0 KRYPTO: LD HL,KOD LD DE,KOD LD B,38/2 KRYP1: LD A,(HL) ; L[GG 1:AN LD C,A ; I C. INC HL LD A,(HL) ; OCH 2:AN I A. XOR C ; STARTA DEKRYTERING AND 01010101B XOR C AND 01111111B LD (DE),A ; LAGRA 1:AN. INC DE LD A,(HL) XOR C AND 10101010B XOR C RES 7,A LD (DE),A ; LAGRA 2:AN. INC DE INC HL DJNZ KRYP1 CALL PNEXT ; SKRIV TEXT KOD: DEFB ((('C' XOR 'o') AND 55H) XOR 'C') OR 128 DEFB (('C' XOR 'o') AND 0AAH) XOR 'C' DEFB ((('p' XOR 'y') AND 55H) XOR 'p') OR 128 DEFB (('p' XOR 'y') AND 0AAH) XOR 'p' DEFB ((('r' XOR 'i') AND 55H) XOR 'r') OR 128 DEFB (('r' XOR 'i') AND 0AAH) XOR 'r' DEFB ((('g' XOR 'h') AND 55H) XOR 'g') OR 128 DEFB (('g' XOR 'h') AND 0AAH) XOR 'g' DEFB ((('t' XOR ' ') AND 55H) XOR 't') OR 128 DEFB (('t' XOR ' ') AND 0AAH) XOR 't' DEFB ((('(' XOR 'C') AND 55H) XOR '(') OR 128 DEFB (('(' XOR 'C') AND 0AAH) XOR '(' DEFB (((')' XOR ' ') AND 55H) XOR ')') OR 128 DEFB ((')' XOR ' ') AND 0AAH) XOR ')' DEFB ((('1' XOR '9') AND 55H) XOR '1') OR 128 DEFB (('1' XOR '9') AND 0AAH) XOR '1' DEFB ((('8' XOR '4') AND 55H) XOR '8') OR 128 DEFB (('8' XOR '4') AND 0AAH) XOR '8' DEFB (((',' XOR ' ') AND 55H) XOR ',') OR 128 DEFB ((',' XOR ' ') AND 0AAH) XOR ',' DEFB ((('J' XOR 'e') AND 55H) XOR 'J') OR 128 DEFB (('J' XOR 'e') AND 0AAH) XOR 'J' DEFB ((('t' XOR ' ') AND 55H) XOR 't') OR 128 DEFB (('t' XOR ' ') AND 0AAH) XOR 't' DEFB ((('C' XOR 'o') AND 55H) XOR 'C') OR 128  DEFB (('C' XOR 'o') AND 0AAH) XOR 'C' DEFB ((('m' XOR 'p') AND 55H) XOR 'm') OR 128 DEFB (('m' XOR 'p') AND 0AAH) XOR 'm' DEFB ((('u' XOR 't') AND 55H) XOR 'u') OR 128 DEFB (('u' XOR 't') AND 0AAH) XOR 'u' DEFB ((('e' XOR 'r') AND 55H) XOR 'e') OR 128 DEFB (('e' XOR 'r') AND 0AAH) XOR 'e' DEFB (((' ' XOR 'C') AND 55H) XOR ' ') OR 128 DEFB ((' ' XOR 'C') AND 0AAH) XOR ' ' DEFB ((('o' XOR 'r') AND 55H) XOR 'o') OR 128 DEFB (('o' XOR 'r') AND 0AAH) XOR 'o' DEFB ((('p' XOR '.') AND 55H) XOR 'p') OR 128 DEFB (('p' XOR '.') AND 0AAH) XOR 'p' DEFB CR,LF,0 RET CONINB: DEFB 10 ; CONSOLE-BUFFERT MAX 5 TECKEN. DEFS 12 ; R[KNARE OCH BUFFERT DEFS 100 STACK EQU $ END ɀ3PUT 1$CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321WARNING: $OUTPUT~TO~FILE~CONSOLE~CONOUT:~AUXILIARY~AUXOUT:~END~CON:~AUX:~LIST~LST:~PRINTER~INPUT )15:?DIQVNOT~ECHO~RAW~FILTERED~SYSTEM~PROGRAM $[]=, ./;Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File is Read Only$ (Y/N)? $PUT aborted$Enter Password: $Putting $list$console$ input to $ output to $file: $ Do you want another file$File already exists; Delete it$PUT completed for $printer$console$Requires CP/M 3.0$CP/M 3 PUT Version 3.0 $Put console output to a file$ Enter file: $1$1$n}0n|H 87/ң777G2*͵ !6 **& 6/[!&6:*!&ڋ*&& N *&& w:&<2&`!"':*2)".͉!&6*&& ~ :&<2&è!"'+~2)*&& ".!06!260Z:0:0H:0 Hғ!860Z:090Z:0N0Z:0a*.DM͉Ð:0:0H:0 Hҋ)Ð :0 :0 H:0 H@!86#6!,6+60Z:00Z:00Z:0*.DM͉:0 :0 H:0 H8)= :0:0H:0 H:2 r)0Z:0—0Zÿ:0¿!86#6#6!,6+60Z:00Z:0*.DM͉:0:0H:0 H) v!Hq*H&!Jp+q*I !Ms+p+q*K:Mw#6*K *K#"KN#Fy  !Op+q*N!Qp+q*P!Sp+q*R!Tq*T&-!Uq:U24!5641!Ws+q:V24!56*W&"641!Yp+q*X<m![p+q*Zm!\q!]6*]& >>*]& :\R:]!]4,!cr+s+p+q+p+q:2 t͙ !j6 *b~*b~2j*gM#22!n6:2 :nڳ*gM#22Þ :d21= :d212m*b~2k!n6*b~2j *b~Y *bN! *`*` =2l!mM !n6!e6:m!eJ :nC !e4, P *b6= *b:kw:1.r+s#r͙ :2ʃ *.#".È !26:j2oO*` ~2f*f&*^: !o4*b:ow*f&*^:g *o&*`~2fÚ *b6*.~2g͉ :f2h!d6*.#~2g!h4N*^ :3 !n6- *h&*^:g- !n6!d4N*. ~2g*d&*.~2g*gM#22:2> !2H҆ !d4N*. ~2g*gM#22U :d21.r#+s#r*.N#22!)´ *.#".Ù   !ss+q+p+q:s=2s *p:rw*p#"p !tq!}6*'"y"{2%:%( !%6(*)&*%&!ws*)&́!xs:ts :t:tH\ *.+".s :ts :1.͵++s#r͵ !u6:w!uڙ *y"{*%M !u4{ *xM :}Ұ *7ö =7:%A ͵ *tM! ^#VT7 o7 7 7 7 7 !~q!v6:~!vD *yN*y#"y!v4% ͵ !v6:~!vڃ *{.͸p !}6^u  *{#"{!v4L ͵ !p+q*DM772͵ :y:YH 7!q:a :{ : :.O 2:͵ ͵ 7@ !6>!څ 2 4 *&@ :w: = :H  :n :[  :=2O!@ 6  :~ !4 7:8 7ã 7:8´ 7ú 7!p+q0 ͵ &7*~ *~@O:!6> !,: .*&*~ %*&*N!4 ,">͵r*++"~[+"r7͆ *DMͻ -͇ Ͱ@͠:@ ʍ:b2b\͐"*}*|27H͇ \̀"*}*|2 : ͵ Ͱ\̀"Ͱ:@ :b2b\͐"Ͱ͆ \ͻ 8̈́:2 :2HF ,">͞u+"g7*DMͻ ͵ F͆ :8‰z7Ï7:2:2 H҈!60Z:0!60Z:0:0H :0:!96!96:01:,!:61!:6:0M:H!:6M!:6:0i:d!;6i!;6:0…:Ҁ!;6Å!;6Ø!p+q*"<!\"><7"ͭ¼*<". .@l ->͵-*#".*~[ ͘-!p+q*~ *~ H'*#"*~3>>!`i^#V#~#fot2XywÉG:†xAa{m_ ʀ ʀt`i~•2F2G#~2H#~2I#~2N*| !\~=w4_P 12O'"&###~2M:G 9!!<1>27>2"> 2#!H:FH!I1>27>t2">2#2H*&.~@!"J<V<W^#V###*#*~~*&.~‡>28í.h"5~ʗ>286!:"o".~>286!N#F*#*#",^q#Vp"*#N#F*#"3^q#Vp"14!&L1 \\:8«X !86>_ 1/:~# y1p   %co %c WARNING: Cannot redirect from BIOS $ ERROR: Auxiliary device redirection not implemented $ ERROR: Insufficient Memory $ ERROR: You cannot PUT INPUT to a file when using GET or SUBMIT. $z K   %coSYSOUT $$$_ogDM!>))덑o|gҘ =†_{ozgi`N#Fogo&og~4PUT :ʜ4Y:O>52:[y<jbj%j:!F#fh!~}#$ 151282 COPYR '82 DRI ggggggggggggggggggggggggggggggggBD$H$$I! D $DA HH$@ H!@D! A ((;*************************************************** ;* * ;* sample random access program for cp/m 3 * ;* * ;*************************************************** org 100h ;base of tpa ; reboot equ 0000h ;system reboot bdos equ 0005h ;bdos entry point ; coninp equ 1 ;console input function conout equ 2 ;console output function pstring equ 9 ;print string until '$' rstring equ 10 ;read console buffer version equ 12 ;return version number openf equ 15 ;file open function closef equ 16 ;close function makef equ 22 ;make file function readr equ 33 ;read random writer equ 34 ;write random wrtrzf equ 40 ;write random zero fill parsef equ 152 ;parse function ; fcb equ 005ch ;default file control block ranrec equ fcb+33 ;random record position ranovf equ fcb+35 ;high order (overflow) byte buff equ 0080h ;buffer address ; cr equ 0dh ;carriage return lf equ 0ah ;line feed ; ;*************************************************** ;* * ;* load SP, set-up file for random access * ;* * ;*************************************************** lxi sp,stack ; ; version 3.1? mvi c,version call bdos cpi 31h ;version 3.1 or better? jnc versok ; bad version, message and go back lxi d,badver call print jmp reboot ; versok: ; correct version for random access mvi c,openf ;open default fcb rdname: lda fcb+1 cpi ' ' jnz opfile lxi d,entmsg call print call parse jmp versok opfile: lxi d,fcb call bdos inr a ;err 255 becomes zero  jnz ready ; ; cannot open file, so create it mvi c,makef lxi d,fcb call bdos inr a ;err 255 becomes zero jnz ready ; ; cannot create file, directory full lxi d,nospace call print jmp reboot ;back to ccp ; ;*************************************************** ;* * ;* loop back to "ready" after each command * ;* * ;*************************************************** ; ready: ; file is ready for processing ; call readcom ;read next command shld ranrec ;store input record# lxi h,ranovf mov m,c ;set ranrec high byte cpi 'Q' ;quit? jnz notq ; ; quit processing, close file mvi c,closef lxi d,fcb call bdos inr a ;err 255 9becomes 0 jz error ;error message, retry jmp reboot ;back to ccp ; ;*************************************************** ;* * ;* end of quit command, process write * ;* * ;*************************************************** notq: ; not the quit command, random write? cpi 'W' jnz notw ; ; this is a random write, fill buffer until cr lxi d,datmsg call print ;data prompt mvi c,127 ;up to 127 characters lxi h,buff ;destination rloop: ;read next character to buff push b ;save counter push h ;next destination call getchr ;character to a pop h ;restore counter pop b ;restore next to fill cpi cr ;end of line? jz erloop ; not end, store character  mov m,a inx h ;next to fill dcr c ;counter goes down jnz rloop ;end of buffer? erloop: ; end of read loop, store 00 mvi m,0 ; ; write the record to selected record number mvi c,writer lxi d,fcb call bdos ora a ;error code zero? jnz error ;message if not jmp ready ;for another record ; ; ;******************************************************** ;* * ;* end of write command, process write random zero fill * ;* * ;******************************************************** notw: ; not the quit command, random write zero fill? cpi 'F' jnz notf ; ; this is a random write, fill buffer until cr lxi d,datmsg call print ;data prompt mvi c,127 ;up to 127 characters lxi h,buff ;destination rloop1: ;read next character to buff push b ;save counter push h ;next destination call getchr ;character to a pop h ;restore counter pop b ;restore next to fill cpi cr ;end of line? jz erloop1 ; not end, store character mov m,a inx h ;next to fill dcr c ;counter goes down jnz rloop1 ;end of buffer? erloop1: ; end of read loop, store 00 mvi m,0 ; ; write the record to selected record number mvi c,wrtrzf lxi d,fcb call bdos ora a ;error code zero? jnz error ;message if not jmp ready ;for another record ; ;*************************************************** ;* * ;* end of write commands, process read * ;* * ;*************************************************** notf: ; not a write command, read record? cpi 'R' jnz error ;skip if not ; ; read random record mvi c,readr lxi d,fcb call bdos ora a ;return code 00? jnz error ; ; read was successful, write to console call crlf ;new line mvi c,128 ;max 128 characters lxi h,buff ;next to get wloop: mov a,m ;next character inx h ;next to get ani 7fh ;mask parity jz ready ;for another command if 00 push b ;save counter push h ;save next to get cpi ' ' ;graphic? cnc putchr ;skip output if not pop h pop b dcr c ;count=count-1 jnz wloop jmp ready ; ;*************************************************** ;* * ;* end of read command, all errors end-up here * ;* * ;*************************************************** ; error: lxi d,errmsg call print jmp ready ; ;*************************************************** ;* * ;* utility subroutines for console i/o * ;* * ;*************************************************** getchr: ;read next console character to a mvi c,coninp call bdos ret ; putchr: ;write character from a to console mvi c,conout mov e,a ;character to send call bdos ;send character ret ; crlf: ;send carriage return line feed mvi a,cr ;carriage return call :putchr mvi a,lf ;line feed call putchr ret ; parse: ;read and parse filespec lxi d,conbuf mvi c,rstring call bdos lxi d,pfncb mvi c,parsef call bdos ret ; print: ;print the buffer addressed by de until $ push d call crlf pop d ;new line mvi c,pstring call bdos ;print the string ret ; readcom: ;read the next command line to the conbuf lxi d,prompt call print ;command? mvi c,rstring lxi d,conbuf call bdos ;read command line ; command line is present, scan it mvi c,0 ;start with 00 lxi h,0 ; 0000 lxi d,conlin;command line readc: ldax d ;next command character inx d ;to next command position ora a ;cannot be end of command rz ; not zero, numeric? sui '0' cpi 10 ;carry if numeric jnc endrd ; add-in next digit push psw mov a,c ;value = ahl dad h adc a ;*2 push a ;save value * 2 push h dad h ;*4 adc a dad h ;*8 adc a pop b ;*2 + *8 = *10 dad b pop b adc b pop b ;+digit mov c,b mvi b,0 dad b aci 0 mov c,a jnc readc jmp readcom endrd: ; end of read, restore value in a adi '0' ;command cpi 'a' ;translate case? rc ; lower case, mask lower case bits ani 101$1111b ret ;return with value in chl ; ;*************************************************** ;* * ;* string data area for console messages * ;* * ;*************************************************** badver: db 'sorry, you need cp/m version 3$' nospace: db 'no directory space$' datmsg: db 'type data: $' errmsg: db 'error, try again.$' prompt: db 'next command? $' entmsg: db 'enter filename: $' ; ;*************************************************** ;* * ;* fixed and variable data area * ;* * ;*************************************************** conbuf: db conlen ;length of console buffer consiz: ds 1 ;resulting size after read conlin: ds 32 ;length 32 buffer conlen equ $-consiz ; pfncb: dw conlin dw fcb ; ds 32 ;16 level stack stack: end 1 üCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321 ERROR: Not renamed, $ ERROR: Drive read only.$Invalid wildcard.$ERROR: No such file to rename.$ Disk I/O.$Currently Opened.$Bad password.$file already exists$Enter password: $, delete (Y/N)?$ERROR: Invalid File. $Requires CP/M 3.0$Enter New Name: $ ERROR: Incorrect file specification. $Enter Old Name: $1 1 q"6 *6 }0*6 |H\7!" !\" " ͫ  " B ̈́ ùn7(G29 >!9 E7!6 *9 & ": )7*: DM(G29 )*: 6 *: #": *: 6=:9 : 2 #+s#r*: 6 !" !\" "  " B ʹ̈́  N o :\: ! :\o * ~2 J  . v! q* &! p+q*  ! s+p+q* : w*  * #" ~  ! p+q* ! p+q* ! p+q* ! p+q* ! q* &-! q: 2 ! 6 1! q: 2 ! 6 1:! r+s+q: 2 ! 6* #s#r 1 ' '! s+q+p+q: =2 ^* : w* #" A! q: y7: 7: ¥7: ³7: 7: 7: 7: 7! p+q! 6> ! -: .'* &* >O'! 4! p+q.* * DM -E ͳ* DMͣ" * }‹* |2 : ҇* M_: >! q: aڨ: {Ҩ: : )#7  4! 6>! CO͎2 * & : w: )C: õ: ): õ: =2 O! 6 : 9: <2 h2 ! 6+6> ! ڠ* & ~?–* &* ~?ʑ77Ö! 6: <2 R: ! p+q* : w!! 6> !! *! & ~?*! &* *! &*  w:! <2! ¶ͳ z2# _:# M :# o&"$ E"& G"( I"* ", ". "0 *$ DMͤ*$ DM.2" Ÿ* DMN 47O͎Yœ* DM͓*$ DM.2" ß:" ½*$ DMN ͬ*$ DM.2" :" *$ DMN )* DM='*$ DMͳ*& E*( G** I*, *. *0 !(  Y D .*(  -< ͊2# !3 p+q7*2 DM '*" M_7D7* #" ! "  " .  -¢ !5 p+q*4 ~ *4 ~ H *4 #"4 ñ *4 ~ >>!`i^#V#~#fo"  yˆ w7 G:4 xAڈ ҈ a{ _È  . . " _og_{ozgi`N#Fog_{_z#WY$Nwy!"(9"f1f! Ҕ2! ~#foCOPYRIGHT (C) 1982, DIGITAL RESEARCH 151282KK{<<ʽ<K : >! ~6 69BK! OS}!,"**NK6 :+OK2$^#V#N#FxNp:$p:Gjxj Y# A>QFQx>QGQx3ڰbڼqҼo5p5"""*!yb! ~G*!NKկ2!*$K*"x!*!@$@hK\K:K ~#~ w*NK*NK^#V#N#F!",!."*K6*}ʴ}<ʴ.}o|g "($Kt>=2(*f*(}DɯQ"(>QKQKQ>Q"%Q!2*%DM**ѵ+)) H~#+}#<:<ʲ<77:<ʢ2~77ø~7"9:OG#Q{ozg# ""BBÃà à ÃÃ1j$|@ "H$UUT$$ $I D$BA@! B$$A IA $!"  @$@$BI!!@""$DA  $I$@!;è COPYRIGHT (C) 1980 DIGITAL RESEARCH @: 5@%Y15252'5h+U"!""*"5j"2u3>2v3*5"3-ͩ-:5Z!""$"5"5"5"5"5" " 522>2 5:4 b:4$M:(5-C+C*M:(5!,5M[!35PMp%M(ʡͣ#v#ƒ$:5}% }!"&:5ʦ>%*#5}| V AX*|:5(#$*#5"A*#5"&#v#% RØV AR*&*R"A*5"%5!4NA#~ͫ% p"5*5N"%5!4q#͢%w 3:4(x *#5:,5o"#5V%2*5Ô; !:V :4:4{%͉"">2!:4:424*o,kÊo:4:4{,ʊ:k*%5#!(5~́ w23@:2(4y""3"323>2v3 :u3L!P46+(0>24:u3:v3"U24͋$͇%ͩ$!5*}*#5":4:4: =X!^#fk:Vj&AW y ~   8 ; C :4:4=G!4F#I ,*5͘EIr,o͉n2"5~2 r,Yo :K4 ͉:K4 " : 52> 2K4::4M:4 Mg %U!P46+:v3Ϳ$ý*3*3"3Ϳ$"3½:v3*3^#V{ʽr+s*3^#V ʽ-:v3:r+s!46#w4> 24͋$í!94~6!(5~6"3~,_#!4w͋$ÏV *3o6͋$*3~6 Þ*3:4,"3~ š62:4*3s#r2(5294*3#"%5͇%ͩ$@*3"5":(42:32(5Ģ >24*3"32(5 ͉r!Q4wM>=n2*5~2%! 5%~2͉:K4 v }>v S M:5p*#5*gu>%"u> %2 :5O%:4©:5[%! 4:4©:4,ʀ>:5: O%% 2)5:4:4 !*%5"-5>2'5*%5"&:4:4(:)5N:5N:4=N N*&"%52)ͫ%:(5ī%x;c!'54!'55:)5ž!":*5ʍ!5%Ù*5%*#5":5*%5~ *%56 ͫ%<͉:K4 "5~2o M%(>@%>#*55%!".!/5",:4M:'5M*,~#T :5T !4N*5*,s#r+"%5yP  ͫ%> ͫ%%g >v % 222:4¦ :4 – ì !ʬ ¦ À :4:4€ ( :4 :4:€ :4€ (€ € x !4À  :€ :>S %2 !~5€ :%j B !4À € !~5€ úG!~4_!p!~5^!~>À >2)5:4 *5" +"%5:4ڥ >ͫ%ͫ%[%:4 :4, V :4  + !4N#~ͫ% > ͫ%ͫ%*5"#5:)5- :)5%͉}*5" +"%5ͫ%ͫ%*5"#5>@:2(4:(5 H 23y"*5"3*%5! {#zt ~+"%5*5+"5wT #"5*5"3:)5ʑ N]T s#r+*#5* {_zW"3:)52v3 > > >2 5n2"5 %: 5*#5* 5"#5*55%"#5:5KBn2: 5O0!*", ++ *5:K4 0@:5Ĩ/ú>2) :u3ʭ :4­ *5+"%5[%2!<24*$#"$""*:40!??"4͋$"5+"%5͇%ͩ$+:4­ :4,J "*} :*5 :5%:4 +:25Ĩ/:4 :4  @S+ >2):4„ ͣ#v#: :5$:)%k %G I k :)%:)c %k %+:4„ :4, " :4 :4/ :4 :5 $*#5^#V*S"s#r*5*#5s#r+"5 |#v#*#5" 5:4 :4/ !"5:5> %AB,#*#5 :4:4 !;*M_!Q^#fkox Iͻ8ʗy0IͻGͰͻHIͻ(yIͰͻͻy0ͻIH'd ! ^#V#*"0}o|gF 9"":!`x=`y0l2!!4^4!4q/:4:4,; *5͉: 5ª|}$ªo͕Ͱ8Oͻy0H͕H͉: 5në:4:4,>C0:4M:4  ;C:4#:4 ! #! #{ozgBB**}j!]~ } #ymy>2(>2v3͖*5|EB"#5>%0,# ^#VÕJB*50MB*50!".*5} "#5^#V"5*.s#r+".*."5:u32'5!5~4P!"*|"#5>%*5%"".o!P46 !L4*>2(>2v3͖>2(>2v3͖NB:O* 0:+5ʘ0*5*!5S*5*!5S\gr!P4w#þH USE FACTOR !M4** "5A1z{*5~2*"#5v#!":5(%! 5%n25%%%>%n2G:5x:L4 o:x_*5#"5:5ʽ*5|ʉIB0>%%O%O: 5%*55%ý:5ʽ: 5O*5*5ESS͎2O=>O͎2N=#y{#* 5* 5 "#5" 5͎21͎2=HÎ2Î20:G!^4!K4wOOn2!6z_{_4A_A?*!5"#5*#5*5{z*/5+"%5**+"%5% V%=͇%͢%*%5#þ!v3ʲ:(O! ^#V4@B%GFB>%%O0*#5##~<##ò*#5"|3#"%5͇%:15^:4^!4~?^#ʲ:4͆!~3"z3^#V"#5}ʝ##~2v32w322(!~38w# ͖!~3"z3>2y3*z3^#V#"z3"#5*#5};ʩ##~<2x3G*#5###"%5:w37> ͺ!w3~w7>w> ͺ:w3Pd!5^!K4~ B!~624(02w3%!>%|_}_> ͺ!w3~w:x3ʜ=͢%ͺ!w34È*#5^#V"#5!y35:24(0!^4!K4w>R0>V0>D>P>L>O>B>S>N0!u~ڇK6N4!E s#r!U :mw* 5!] s#r!t~ ڹ6K^4!1w!;p!u~K!5N!E ~#fo!U ~2n!] ^#V"pK2oo&) ^#fkN]ivKzV{K>ɯo>g"!6ů{_zW5>)D*OxGғ !?uDM!xGyOڱò)â͝ddJ)=J|g}o=2o2o*p"rOxKxGyKxGy0KG*p*r}|K\\z{W¢Ü}|ڜâWʜllyWœâ!!#Qzg{ozg{ozg{ol&:oO:n2m*p" 52n2ox:4:4 ;!,ɯ2t2u2 52o=20!"5" 52m{!t~Q5_!1~9:uK:K4 *E"5:U2 5*]" 5*v"#5:K4 $:4§:4KK!4^#=ʣV²*4(—ҌV :4:4V !!*/O:0K>20y_j:t:_!;~:!ts!1~y_!t~X=w_!1~[Kdͪ>20$y$zU0!%2m*#5"v:mP>U0%4>%:m!>2m*202m!" 5/:0Kx*#5DM*5" 5}|^#V<>E0:u3ʛ*3~Œ:v3ʁ!\4>A!(0":3]#"3,ž"3Þ-2\  :4x_<24!K4w:94͜:94ɯ2:4284]294:4:94K)2:4;4~#!͜,!:4~*4!;4_:94w]294ɯ<*#5"W͉#4#*W"#5ɯ2[![4Y5!!:46"3!:4~q5!84^4!;4~â:u3:94†G³]âʻ^¨^·:94&·!:44#wó&G294xâG:94&:4G/G&ʷ/&ʷG/G!94~&>623y"!v36*5"3$"32:4*W"#5GJ2:42942(524> 2S(0>24ɯ242T!4~@`65!^4#:(5O:4yD(w~$w:(50 |:(5D(A:(5?ʱ@ʱD(Aɷ͙| ;!Cͻ2(5:'5:)5:5:(5ͫ%:(5 !J24:(5 ʞ;{>24:'5ʋ:)5.:5‹;Ž*-5*%5++{Iz]~ T++]!]+?"%5:'52'5hͫ%2'5ä:(5*—:S —ʤË ¤24͙ʳ>|ʾ>:(5'2(5> :u3>+2P4(0!K46 >24>24:(52SR:4Z:'5:4=!EQM<8!LE:(5=I!NE>I!LTM>!GT:(5=M!GE2(5"4!44>24!(5:4ruͳ u͇:(5D(OʓQ˜>ßH©>2T2(5:SD(B¹>D> !452T!"4!4N#~#A07O!T/!~*4! ) "4 :(5 5!'':(5 :(5,;%:(5 !:(5; ,J242Z$ l ` / ‰ >24#!:(52S:4; ¡ :4/!:Z/!)!:4 :(5'#!R:(5'z 24É :(5' >24#!^ :(5 #! #!;!)!<!!Z~4z #!>!!Z~#!5z #!:Z#!G )!Rz >24>VG!>OG!>IG!>BG!0!P!w#w#["!"#5!U3w#w#p"!u3~#4^!v3~w!3ͷ"!3ͷ"!3ͷ"!3~w!3ͷ"!4~w!(4~wN#Fp+q!u3~#^!v3"!3#!3#!3#!3"!3#!4"!(4"5~wN#Fq#p>B0!4"%*%F# #2P"*#5##~G=#w#6#w]$*5!4n& {ozg"#5!5{#z$"5f$*5!4N#yʦ$ ~Ù$f$!U3"Q"/$:P"%*5!3{#z"#5%_!U3*#5~#~&%~#$"5ÿ$&%!%*A1SYMBOL TABLE OVERFLOW *#5###w*#5###~,#*#5_####&%s#r&%^#V&%##"%5F%wF%~#!4~l%6~=ͫ%ͫ%!4N#~ͫ% y%͢%͢%2P"*ÿ*:?*ÿ*:@*ÿ*~x/~# *> x/\ ?-$-w#+!\64 #+>GO#w %+>O # <+6 2+6L#6I#6B#w2|*\+>2*5!"B*!(5~2A*w͹*!1*>826*27*!"/5*"5!5"h*"*"*#"5"!5\, _#~ͨ+ ¶+:;*Aͨ+>:ͨ+Ͷ+>.ͨ+Ͷ+>-ͨ+*!1+!32*!1+:=* D,> D,:D*6,_!D* W,6 4ɯ2D*2*522521528*:\ -2;*2@*O:\ʋ,=Ì,y!<*w#w#w#w#>2+52,5:m$>-!~#$ª,~>-# ʱ,<*A-P-S-R-L-*,+,-,-+5~S-M-25L-15Q-8*1,-x#ñ,~A,-#ñ,#6 !1*!*!E**e !N*+-!j**%,r-6* ,,:=*ʂ-:>*…-2:?*ʨ-!***ѯ2:*29* ,,!3*60#60#60#>235!"*:5ͨ/-!"f*2Q*2e**E*+!1*z{:*5G.*B*-.!"B**\..*B*#"B*+~¤.:u32*5G.*\!F2+*f*-•.*!"f**h*ʹ*E*€.a.Ò.Ҫ.ʒ.6# ‹.͹**h**f*#"f*~!2*G:=*..xx/.x.1,..****w#"*!-*!"***j*!*-/~5/ʹ*9//͹*!2*1L/****w#"*!-*!"****/_!5*~ ͳ.27**/5}!1~ /ͳ.#/> ͳ.>#ͳ.ͅ/> ͳ.*/5~/ͳ.#/> ͳ.> ͳ.> ó.}26*!7*è/Oͳ.:K4 :5:=*yx/:8*!5I0:25!*5—0~0:K4 0!K4~ —0:350:P4+—0:,50ʗ0:Q4#0:L4 0:,5=ʗ0!K4~ ʇ0!4s!7*~!6*Ԩ/4:4!K4ʺ0G~ 0#x=ë0> 0> 024!K4>x6 #=0G!K4~ p%,**}0>ͳ.0*j*+:+5ʨ/0!s*6S#6Y#6M#w!*w:>*2=*!"*%,ʨ/26**j*կ ,,0:?*1::*Z1ͬ2L1͎2**}1}w1>B/a1}|Gd/:?*ʓ1**+![2*CP/M RMAC ASSEM 1.1 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR INVALID PARAMETER: SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES UNBALANCED MACRO LIB END OF ASSEMBLY : 5O!5 ~#fo: 5O!5 s#r:?*yʟ2š2ͬ2Ž2G:9*29*!:*4>6:9*L/29*2%#333/3 3333#332E3 3   MXList WAITING FOR PRINTER $PRINTER READY $ɀSAVE SAVE y<1!~ʋ;:* ͩ".~>2`*.h~`>26!*#~2#~2r+s-* 1!~ʀ#_6|ʉ#6?#6 #6$\<8Y‰\>!|w\:V"8: V "**Ͳ\h}}€!*:2\<T}Q**#s#r>2:Ÿ*.h6 1>2::>2}2|2!"  !!\( yŽw=G::xAڎҎa{!_Î 4 4(!~> L5*~#"a_:f7ñ8 ʱ0vñ@7ñ҇0ÒGڐ7ñ7o:O& ʦ))))ÛzW{_f: CP/M 3 SAVE - Version 3.0$ Enter file (type RETURN to exit): $ Delete $ Beginning hex address $ Ending hex address $ $ ERROR: Bad close.$ ERROR: No directory space.$ ERROR: No disk space.$@$ $H I$I!$HI"$$"$ I ! A  !B B@@ $ABH$!"D$"B title 'System Control Block Definition for CP/M3 BIOS' public @civec, @covec, @aivec, @aovec, @lovec, @bnkbf public @crdma, @crdsk, @vinfo, @resel, @fx, @usrcd public @mltio, @ermde, @erdsk, @media, @bflgs public @date, @hour, @min, @sec, ?erjmp, @mxtpa scb$base equ 0FE00H ; Base of the SCB @CIVEC equ scb$base+22h ; Console Input Redirection ; Vector (word, r/w) @COVEC equ scb$base+24h ; Console Output Redirection ; Vector (word, r/w) @AIVEC equ scb$base+26h ; Auxiliary Input Redirection ; Vector (word, r/w) @AOVEC equ scb$base+28h ; Auxiliary Output Redirection ; Vector (word, r/w) @LOVEC equ scb$base+2Ah ; List Output Redirection ; Vector (word, r/w) @BNKBF equ scb$base+35h ; Address of 128 Byte Buffer ; for Banked BIOS (word, r/o) @CRDMA equ scb$base+3Ch ; Current DMA Address ; (word, r/o) @CRDSK equ scb$base+3Eh ; Current Disk (byte, r/o) @VINFO equ scb$base+3Fh ; BDOS Variable "INFO" ; (word, r/o) @RESEL equ scb$base+41h ; FCB Flag (byte, r/o) @FX equ scb$base+43h ; BDOS Function for Error ; Messages (byte, r/o) @USRCD equ scb$base+44h ; Current User Code (byte, r/o) @MLTIO equ scb$base+4Ah ; Current Multi-Sector Count ; (byte,r/w) @ERMDE equ scb$base+4Bh ; BDOS Error Mode (byte, r/o) @ERDSK equ scb$base+51h ; BDOS Error Disk (byte,r/o) @MEDIA equ scb$base+54h ; Set by BIOS to indicate ; open door (byte,r/w) @BFLGS equ scb$base+57h ; BDOS Message Size Flag (byte,r/o) @DATE equ scb$base+58h ; Date in Days Since 1 Jan 78 ; (word, r/w) @HOUR equ scb$base+5Ah ; Hour in BCD (byte, r/w) @MIN equ scb$base+5Bh ; Minute in BCD (byte, r/w) @SEC equ scb$base+5Ch ; Second in BCD (byte, r/w) ?ERJMP equ scb$base+5Fh ; BDOS Error Message Jump ; (word, r/w) @MXTPA equ scb$base+62h ; Top of User TPA ; (address at 6,7)(word, r/o) end =\`d4dT8 =Y@AIVECSՑPddT8 9- @CRDMAԑdddIM2@FXTԐ dDI5@ERDSKQQP`d$du8Q@HOURRSD4T8I)5B@MXTPAG*Rjp " ? z*q_ !#&# rZ4p !" ?z*p !"&"\qc" "*"\q/ "&"2qk$'G bz*qS &$jJtq+ &*$j¢ q )"G?*q *!GJr2|8ɀ"#DIRLBL 1!M CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321!`i^#V#~#foͽ{¡y#wG:xA##6?)@w){#{s333333.;;33,;;#wD{_#6 sO O ڹ.:;=,/[]<>a{Ҷ_#  ý Copyright (c) 1982 Digital Research File not found or no directory spaceInvalid file name.Directory Label attribute set Read Only (RO)Read Write (RW), set to ERROR: READWRITEDELETENONE on off LABEL @ @Option requires a file referenceOption only for drives.Assign passwords to input files.Assign a password to this file.Directory needs to be re-formatted for time/date stamps. Please see INITDIR.Protection not enabled for disk.Unrecognized option.There are no modifiers for this option.Modifier missing or unrecognizable.Not a valid modifier for this option.This option needs a modifier.Only first 8 characters of default password used.Only first 11 characters of label name used.Only first 8 characters of password used.Cannot have both create and access time stamps.Cannot set both sys and dir.Cannot set RO and RW.No options specified.Page and nopage option selected. Nopage in effect.Cannot set local options for file.Protection modifier is only ON/OFF for drives.Password protection is not supported in NON-BANKED SYS.Requires CP/M 3 or higher.ACCESS0ARCHIVE0CREATE0DEFAULT0DIR0F10F20F30F40NAME0PASSWORD0PROTECT0RO0RW0SYS0UPDATE0PAGE0NOPAGE"%(+.3%\|"()/#!@&+-*??Directory Passwds Stamp Stamp Stamp Label Reqd Create Access Update -------------- ------- ------- ------- ------- Press RETURN to continue. ?Password ? Disk I/ODrive Invalid Drive.Wrong Password? in filespec.?ONOFFsystem (SYS)directory (DIR), Drive Default password = Password = Label for drive Protection = or protection not enabled for disk.Modifier: Option: FILE: 1!1!1 ""*"}2W#|2X#̀ 2"!"6:W#0w n ͎ 2!ͽ l 2"*U#& ~ œ !U#4Æ *U#& ""*U#& ~[ *"#""B!:" o ! !!6 S :" *"""B Q͟ 9 :"!"" g͟ !!6= :"1 !!6= :"= !!6]B |M !"6 :"k *"""!"6o P &͟ v!!q*!& y !!p+q*!~ʯ *!Ny *!#"!Õ   y  y ͹ :! !"4~<<+~H ͹ ͹ 0 ͏ Ͱ  =2!:! !"6͹ ͹ !!p+q *!DM͏  !!q*!&!!p+q*!!!p+q*! !!q*!&-!!p+q"u *!"!!!p+q"u *!d!!q*!&e!!p+q"u *!f!!p+q"u *!g!!q*!&) ^#V%!!p+q*!! #q: #2"!"6"1!#r+s+q:#2"!"6*##s#r"1!"6#6"1x >"9!® *"DM͏ ö *"DM͏ J ͏  "̀"##1! ͑ >#9!*#~[ !"6 *#~] !"6*##"#!"6*#!#s+q+p+q:#=2#J*#:#w*##"#-!#s+p+q+p+q:#=2#ʁ*#*# w*##"#*##"#Z: 2#aڛ:#{қ:# :#!#p+qx *#DM͏ M  " !#6>!#?͂2 # *#&" : #w: # ?: #ý: #-:#ý:#=2#O!" 6 : #8 !#4Ͱ 2 #:"AOy :y F!!#6> !!#ڋ:!# s.y *!#&*!>Oy !!#4]x *"|2"#x F͉ :"#¸Y ͏ :"#b ͏ M͏ :"#M͏ :"#i ͏ :"#x ͏ :"#  ͏ !##q&"u  S 2##!$#q:$#>:$#o&&""!:\w!"6!"6&"u *#EZ *#GZ *#IZ *#Z * #Z * #Z "*#DMKc 2%#¡>*%#M>!'#q=͏ :'# ͏  ͏ p͏  Z ͏  ͏  ͏  ZM͏ W͏ ]͏  y  Z!Ay Z/1y Z=2y ZK3y ZY4y !(#q*(#&*!~q>>:"ڒ:"ڒ&"u \S O!)#q:)# ¨ͅ 2*#ò*"M 2*#:*#  F͉ p͏ :)# M͏ W͏ ]͏ :"*"M 2+#!"6>!+#Ia:,#o&&""! >w*! ~ F*! ~F!"6[!\"!]K!"6&"u S 2,#:,#ʗ:,#`O!&" ~ Žc 2,#p U͉ ͉ :"!"6*! !K!"6+6! ""}*"|͌͘͟:!2"!"6:" ͟" *"*""K"j  ! "6"͏ :"b:"Tͥ͟:"2"p *! >w " :"‰!"6!"6*"*" "K:"ҥ:"Ҹ͟!"6*!#  >!"3!-#6:"=!-#"*-#&*"~.*"*!#DM*-#K:-#"!# *! DMK!-#4*"*!#DM*"K!0#s+q+q:"G:"Z!"6͟*.#&" ~z *! :/#wÆ *! :0#w:"ͥ:"21#¤!"6:1#´!"6@:1#!"6 !"6 " :":"2"!:"͟:"21#O>͟ 4*!  !3#s+q:"0:"C!"6͟*2#&" ~b*3#&*!>wp*3#&*!>w!"6 ͏ !"6 "͏   F  U *! >µ͏ û͏  *! >@@25#*! >͏ ͏ :5#͏ ͏  *! > ͏ ͏  *! ~1 v ͏ :"K͏ Ô:"@@^͏ Ô:" q͏ Ô:"/: " HҎ͏ Ô͏ :"Ҥm͏ v!6#q*"|. :6#͘, ͷ:" :6#*!DMͧ "" :6#*!DM "" ! ""*"|.͌:6#(, +͘>>*!DMͧ ""*"}t*"|kͥX*"|h͌͘t͘͟*"}ʘ *! *! ~ژ͘*!DM ""*"}*"|ͥ*"|͌, J͈͟>!"(:"(:"(:" :" ͟"*͘͟!"6:"?:"?:"2":"2!! ""*"}Š*"|}ͥj*"|z͌͘Ê͟  :"¦:!2!!2 o&""͘2:!:!=2"*"MC ͽ !7#6> !7#*7#&\ ~?>!7#4>ͭ! \K!"K:] :e HY!"6&"u \S 28#O!\"!͘͟ *8#M^!"6!:#s+q*9#&)))A *:#& ~!;#q!<#6*<#&u :s—>*<#&u :;#«:<#!<#4Ä!@#r+s+p+q!G#6:H#:H#2G#*D#M{2"!L#6:"=:L# *D#M{2":A#2"}>:A#2"2K#:H#2I#!L#6:H#2G#:H#Dß*H#& *?#*H#&*?#=2J#!K#–!L#6!B#6:K#!B#ړ=:L#ڌ0!B#4uÙ0}>:""!+s#r:"*"#"":2":I#:G#2M#O*?# ~2C#*C#&*=#:s!M#4~2H#*C#&*=#:D#*M#&*?#~2C#!H#6*"~2D#:C#2E#!A#6*"#~2D#!E#4N*=# :tW!L#6m*E#&*=#:D#m!L#6!A#4N*" ~2D#*A#&*"~2D#*D#M{2":":"H:"H:"H!A#4N*" ~2D#*D#M{2"Õ:A#2""!#+s#r*"N{2"!*"#"":""9!+"O#!N#6:"!N#A*O#Ny *O##"O#!N#4"!"6!"6!"6:"Z!:"e!:"p:ͳ2"„"!:":"#H!:":"=o&)))A ~ھ+:"=o&)))A  ~ lNͳ2"4:"=o&)))A *"& ~=*"""!"6#6!Q#6:"=*"N{2"*"#""!Q#4!:"X*"N{2"*"#""!Q#5>:"=Œ*""":Q#2"O>҉e͟!"6:"= ¶*""":Q#2"O> ҳ!"6 ͟*""":Q#2"O>͟!"6:":"=o&)))A ~HF:"=O!" 6>!":"=:"=O!" HqQ͟X͟X͟O!͟OG͟X/  ^:  Q:"s ":"ҁ":"ҏ":"ҝ":"ҫ":"ҵ͝:"ҿ?:"͇:":"!":"!":"͟͟ P:"):"!"64@4:"P:"F!"6@44:"!"t:"h͟͟ Ø:"҅ "Ø:"Ҙ!"6 ":"ҩ 4:"!";͟  :":"!"6  " ͓ :" :" !"6  ">  ͓EB "#GB "#IB "#B "#B " #B " #2"O ! "K!T#p+q*S#""""!!"" ""*"DMS :"Ҙ ͟!!6C  !͏ >"9!ʬ !"6ñ !"6!\K9 :"!:"  e͗ :" ͙ :" 1:" ͗ :"!!"6!?!!"6 _ogi`N#Fogo&ogDIRLBL yd'* !9"1>"#2#:Og}**Ip2~w2i#1#":RͶ :O~!ʫ:<2Ž:"2"x2*# O:ļ:<:G>O*# :<t tIw!/>!/>!*6 #:_#:*Y" Y" Y" >*Y"#####Y"##Y"Y"Yz2*Kg"ɯ22!"*DM6:O* 2~ ~ †:<~:2>2:<** "_?:<2>!/:<}:2* ~b W6 y2> # vwm>2>!/ N *~O²+—">2>!/*:< "~G # p *~w#  : *8*:*8yO:O*}O= ~ w#P^#V#ɷ{ozg |g}oh:<͉̉O<OBKBK$'-*!*^#V"DD  $$HD@" @@ $B $$H$H$HH$$! HD$D$D@AD HD$!A" 1CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321TEMPORARY~ORDER~PAGE~DISPLAY~NO~COM~SUB~NOPAGE~NODISPLAY~ON~OFF  $(/9!6#6#6#6#6!"+~2*& "*& ~[”*#" â' :¢ V v!q*&!p+q*  !q:2!61!s+q:2!6>*&"1!q!6*& ->*& :A:!4!r+s+p+q+p+q!6*~ʯ*~2*M2!6:¦:ڙé*M2Äùe:2#:22*~2!6*~2*~?*N! ** =2!3!6!6:!0:)!46*6#*:w:+s#r:i*#"n!6:2O* ~2*&*:ʿ!4*:w*&*:®*&*~2À*6*~2o:2!6*#~2!4N* :!6*&*:!6!4N* ~2*&*~2*M2:> !Hl!4N* ~2*M2;:2#+s#r*N2!š*#" ͯ ͯ!q!6*""2:(!6(*&*&!s*&!s::H*+":++s#r͛!6:!D*"*M!4&*M:[Ϳa2Ϳ:Al͛*M! ^#VIͿiͿ{ͿͿͿͿͿͿ Ϳ|͛!q!6:! *Nͯ*#"!4͛!6:!R *? !6^ͯD  ͯ*#"!4 ͛L2M2N2O2P2,22:2:2:W ͛Ϳ!6*& ~:HW :1Oͯ*M! ^#V1Ϳ 4Ϳ 7Ϳ :Ϳ =Ϳ*& ~8 RͿM *& >@Oͯ:ͯ͛!4ø :Ҙ ͛ZͿ*M! ^#VrͿØ vͿØ ͿØ w : ͛Ϳ>!Ҷ !6: Ϳ :@Oͯ:ͯ: ͛Ϳ: Ϳ Ϳ:# ͛Ϳ: Ϳ# Ϳ͛!6!6!6!6>!V *& 6!4; !6:: H I>!Ҏ ͦ:› ͦ!6>! *& :=¿ ͦ!4  :=*& w!4[ !6>! :L*& ^O!4 :: Hұ!6!6I*M! ^#Vͦî!6:] ͦI:w ͦ:=_Pî!6!6#6:ʞ ͦ*~ ~ Hҿ *#"Þ *~( !6*#"I::H ͦ: !6:2: :/H!0 ͦ: !҇ I::Hj ͦ:2:!҇ ͦ2:¢ :2ê :2:½ :2 :2*: : ͦ *#" : ͦ*~]~H!6 î!6!6:WI: W: R!6Wͦ*,*-î!6!6:¨I: ʨ: £!6èͦ2::2:2*îI::Hͦ:!6,-<!62:2*îͦîͦî!6,-î!62:2*îͦîͦîC K l?GOe !p+q*~ ~ H*#"ø*~>>_ogDM!>))덑o|g =o&og~1}CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321 Copyright (c) 1982, Digital Research 10/27/82Show 3.1ERROR: INPUT: OPTION: DRIVE: Unrecognized Option.Unrecognized drive.Requires CP/M 3 or higher.No directory label exists on drive Unrecognized input.A:0B:0C:0D:0E:0F:0G:0H:0I:0J:0K:0L:0M:0N:0O:0P:SPACE0DIRECTORY0DRIVES0LABEL0USERS0PAGE0NOPAGE !$'*-/#(.[]=, :;<>%\|"()/#!@&+-*?;Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$?????????????Directory Passwds Stamp StampLabel Reqd Update Label Created Label Updated------------ ------- ------ ------ -------------- --------------Press RETURN to continue.: Drive Characteristics128 Byte Record CapacityKilobyte Drive Capacity32 Byte Directory EntriesChecked Directory EntriesRecords / Directory EntryRecords / BlockSectors / TrackReserved TracksBytes / Physical Record, Space: Number of time/date directory entries: Number of free directory entries: Active User : Active Files: # of files : Label for drive AccessCreate on off on on off on off 1}1}{o&" >0 ͑*!& ~ :!<2!*!& " 2 h2 !!6>!!Y*!& 6:!<2!;6f!$ 6(2! 6D~!% 6ͱ!!6>!!*!& ~2 ʺ*!& N*!Mz:!<2!†v! q* & ! p+q* ~* N* #"     :$ e! 4~<<+~He  MC]! 6  ! p+q * DM }! q* &:~ҝ:}¦:}`O! : ½2}Õ! p+q* ~?2~* 2}͕2}͕! p+q* !Z 6Z 1!Z 6,Z 1!Z 6]Z 1|"  ! q* &.! q* &e! p+qi* DM! q: <2 O* : w! p+q* ~$* : <2 O* w* #" ! q: 0Oͦ! q:? O: O! q* M:ͦ! q* &! ͆K* &! ͆M! q* M& /ͦ: e : s ! 6: <2 O* ~2 : ” \ Æ : 0 ! s+q! 6͆ ͕ ڶ ͕  : : : H2  : 0! w \ ö ! : #~! H : ! s+q+q͆ ! : 4 \ * M* ͞ ! s+q: 2 : * &) >;H{ : =: ! q* &! ͆))))* &͈ } ͞ =2 : 2! !!6 * & ~2!/*! 2 /cN 2 : !!: H * &) : N_!mͥq* & NC * M* C _* #q#p͞ O * w:; O * w* ~¬ : :  :; 2!* 6 :; O * w!!s+q:!!!! 6N!m"!:  !n"!!  ! +s#r! 4 ! 6 >! P : =2 2 ! !6* &) : !m! M  * ~2!*  ~2!*  ~2!* #^#V" +!͆! !s ! !6: >;! HҮ ! !6 * &) : !m ! s+4* ~ : !O! DMͽ ͦ* MK * MK * M&  ͦ*!M *!M * ~& *!M! !p+q!" !* !"  " * ~~He Q ! 6 Þ * ~~Hқ ! 6* ~2 ͢ * &* " !Þ !-!p+q!!6.*,!DM! -¶ !' !.!6> !.! *.!& ! N:.!<2.! \* ##N!ͥ"/!!1!q:1!2 Oͅ !3!p+q!2!* >2!y#M͹!7!s+q+p+q:7!=27!f*4!:6!w*4!#"4!I!!s+p+q+p+q>!*!*!͆!!s*!*!͆"!*!! ͆"!>!º:!:!!!6:!0Ov!!p+q!'"!!!6>!8*!*!͆:!=2!O!8! s*!*!͆"!*!! ͆"!!!6#6:!=2!}*!&8! ~0O~:!:!Hz,~A!!q*!&8! ~¤:!Ҥ:!ʤ*!M!!6!!r+s+p+q!!6#6>!!0*!&*!*!&*!~!!#N*! w*!&*!^! ͆!!s#N*! ^! ͆*!&*!q:!<2!!!p+q8!<?!<*!N#F*!##~2!!!6>!!ڙ:!҇*!&w!) N#F?!ͱ:!2!:!<2!d8!?!ͱ9!!p+q*!##~2!*!##~*!##w*!*!q#p*!#:!*!#w!!p+q*!#* ##N͹* *!##* ##NH*!##w*!* ##N*!q#p: AO !!r+s+p+q*!/!a*!q#p*!ڒ*!*!q#p*!N#F*!q#pc!!q!"!"!!!6!"!* !:!*!DM2!:!/!!H*!"!ҫ*!!"! i8*!##6* N#F*!q#p,ͦE* N#F^ * ^#V))DMy* ~* N!!+s#r*!DM  1:!!p+q*!##6*!*!s#r!!p+q!'"!!!6>!ʚ*!*!͆{2!*!*!͆"!*!! ͆"!>!!!+~Hҗ!!6:!0O5>0 ҹ" ͓DM$* Mqͦ1k!!p+q 8R*!}OW͛: : 2!"!S"!!!6>!ʈ*!}g: /X!!:!U*!DMg*!M*!DM!!+s#r!!+s#r#~!X *X g 8)*V g !!6>!! *!&& 6*!&6 ) >w#6:!<2!!"X 5!"!:}:}2!*!& ~2!:!!*!& "!*!##"!*!#"!:!2!:!2!O!& 6>!!Ґ*!* ~Ҥ*!~*!&6 ) N#F*!&6 ) q#p*X #"X %* & 6>!X * N#F`i"X * N#FPY*X *!"V 8QhOg 8`* & ~/\!!6>!!ڐ*!&& ~҆*!&g:!<2!a 8o!!6>!!*!&& ~*!&6 ) N#Fg:!<2!¡͘* & ~/͘!!qD>!! :}0:}`O! ~ * * Ḿ2!>!!/:}o&"!~i8 Eiji:!@@†Ìi B:% /:!րHҽ:!@@:!:! *! DM͟ *! DM͟ >͑: AO !!6> !!x:! ].*!&*!>O:!<2!G!!q!!6*!& :•>*!& :!©:!:!<2!Â!!r+s+p+q)!!6?:!:!2!*!My2 !!6: ]:!/ *!My2 ?:!2 ͩ:!:!2 : 2!:!2!!!6:!2!?:!Jñ*!& *!*!&*!=2!!!:!£!!6!!6:!!!ڠ]:!/Җ6:!<2!~æ6!!6ͩ>:!2!:  l+s#r): * #" :2 :!:!2!*!&*!~2!*!&*!:9:!<2!:!2!*!&*!:!(*!&*!~2!!!6* ~2!:!2!!!6* #~2!:!<2!*!&*!:}!!6Ó*!&*!:!ʓ!!6:!<2!*!&* ~2!*!&* ~2!*!My2 : : H: H: H:!<2!*!&* ~2!*!My2 :!2 :  l#+s#r* Ny2 !D* #" ):  +"!!!6: !!y*!N*!#"!:!<2!W!!q*!&ͥ^ *V& ~ʞ*!&ͥ^ *U& ~ʾ1*!&ͥ^ *T& ~*!&ͥ^ *W& ~#*!&ͥ^ *S& ~: :: 2 * & : w* #" * Ny2 : ZÔ!: q!: qÔ* &ͥ^ *V& 6* #" >* &ͥ^ *V& ~* &ͥ^ *V& 6ʹ2 !X: !$ 6!Y: !$ 6?* &ͥ^ : =O 6-͑iE!: :>!: G>Zʹ2!_Þ:!=2 * & : w* &ͥ^ *V& 6!: ʝ* +" ͑iE! 6* Ny2 !* &ͥ^ *V& 6! 6!: ;2 -: K-!: !!: !L! 6* #" !: K* Ny2 !K?͑iEi`N#Fog_og_ogDM!>))덑o|gҟ =DM!>))Ҵ =¬~ º~ ^#V) ^#V|g}o _{ozgO{ozgi`N#Fogo&og_{_z#W  F!M!T![!b!i!p!yÙCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282YCP/M 3 SID - Version 3.0$1 !~=W!x ~#ôbx {~#o}o.ÃO$ y͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷ y=!z{w# % w!P͠ y͓}*w#"͌ @.@<!Eͷ~P !ͷ’P͌Q!ͷªP}QxQ!ͷ͓G@Q! ͷ y͓Gþ!ͷ ͓Q!ͷ͓Q͌Q!.ͷ6y#G͙Qà!2ͷQ͓͌Q!>ͷq eg͙Q:zJEËC–EQyQxQRQ** {zҷ*~#" <AOGƐ'@'OxƐ'@'ON# z8O!B N#N ¾SP.* |} !9":q!"28!"9@:] ,:e &͟:l &:u &ͮ!I 1lĤ>#J ,!6-X5AڔҔ_!o^#V - G  + Q  1ͳҔ~½:,=”͍" ,~ڔʔ͍=͍=͍!,o͍ "c=͍=”)*c)!"f,*f*c"h ,*cL>::ʗ^#V#L cxZy y~ #*f ڵ™y ¶"c:,*hT*f , ,T:e,>2e,:ʔ%:e  ͟:u ' ͮ!I Y|”,,}5 2l~2m͍͍"n͍"pDMs !l6ʏ } "v=ʏ =ʏ YP !~ #^#V:l *v{ z "r~62t #w6 ” 1l*v*t!~4 #~#F# x ~#s#r#w>~ʽ ͍=; =”͍Lᯕo>gL,>#!u^#V#0}o|ge X x| y0ʃ GÏ yÏ  G| Q z,{ ,<,>'{>',*##V+^+N+y,L ~+ , :”%,ͳ~ ͍" = ͍"=”" > 2,Y,!|G }G , w#. ~ڔ ͍!=:r ”͍| !| !|”"!~ʩ #~#V§ z§ :w, ‰ :ʔ!~ :w#s#r, ¾ Ô!~ : 6 ~#^#V ,:ʔ!\6#>  w# ' >w# 1 6~!I =”*"!l6~# T :]?2 7ʔ!">HXE͆*ʾ \ͤ2 w# ™ ͥ͝* ҆ !""Ô\ʔ:¾ W$ _$ $ O { x! i`"v2 $ $ w# $ ͥ͝”þ \̀\̀ GтWx!͓B :>ULT͆!6\~# S 2|:] !7<ʔ\ !t   _*\ ʣ \ w Ø *+\ !ڔw{Ҕè *#^#Vr+s+6͓Ҕ*"s#s#rt ! *v*",!*L*L*vL*+L,o=”͍L:X^#VL\~J ʯ.y:,>."Ž! ;w#́=”͍:ʨs#r#;”}w#:;#;>>2o!"#͍}ʔ==”͍""2mNl :ʔ!\>2|!"*"~:8”*"*"*͠ڔ!"\zn<ʔ*ͯ~# _\V”*#"͠:W\J!*L!,:2:2>2::>2 N, !9# Ô ”J~,=”͍xA|”}ҔgA>;Ag};,;Q|”}!qw,s#r,:[|_!~ʐ![4Ð\ͤŽ2[g>>?,!e>Cw#>Ow#>Mw!u>Sw#>Yw#>Mw., * ͽw#  ͽ  * ?r# {zPY! |}>2!""!Ow #w 0q!\6 ͤ!"~”͍͍͍!6W6!6# ,œ>2ß͓ͣ ͓ͣ ͓ͣ ”ʔ   :@w# G6#. 6# x!a_!~> 55*~#"ů2[\ͤͤͤͤͤͤ!ex#y#*}|͓"*}|":!͓> _ͤ~# 07> >  ͤL:8>.^+~+:8*>:|}^ >.*f}o|/+- , 0 Ô^#V#*NyҔ** n +ñ q#^#V""~/o>g++Û!.ʔ@͔^#V= ͔^'D! ڔ'?!q'”S_&#hqf0 Ҕ)DM)) O I^*r^#V#^q̀))))oqh"s#r#!4-®+»*+ þ-y_xWþ!IXN!p~ !D_^!x^#Vx1>-~~>=G!q~L!9#x sYYͳғ*v" !6û+"f*v~#cڻʷ^#Vû~*v~Gx5@xv5 x805 x6 45>=*t~*t$5x*l$*n:585"CZMEIABDHSP!"2"t+"v!91t*v~:t2l!~ʐ#^#V#~ ƒ!~6ʳ=G#^#V#~xâ#"v!N#FN*>7l :|!~9#~#V*v9z9~==2wͲ:l <!*vNl  |Ͳd=Xl *v5Nl :l|*pMD*n:m7l !"N2>**vͳҟ" *t"c, PASS !~*+"|w=2~ !~##Z:t*rw2t*vF#!s! ^#V&N&N,`r<¦Gæ::^#V#2*r^#V<[>èæxjê8_æ*t2¦,:?*v###æG>è><7*|!N*v!>#> :!>=_~/w/w{G=YP"*##F+N+~a/o>g{\z\<33=>!y$ڇ *y$&>'d !y$4d SYMBOLS NEXT MSZE PC END 6!z$q!h#6?! h record(s) written. h#H!:#A{$O !:h# !2h#!@ !:h#S:h#QHP!:#<2|$2h#:h# HG!)!2h#Ô!2h#02|$O> j!!|$6Ô!2h#02w$O> @!!BH @@ABH B! "BHI$$BI$BI $ HI D$HD$$ H B!$D$"$B$DA!ABI$@H B$I $HI$H$! $I $I$I $I $BBHHA"HI$H!$HH$ IDH$$H$"BD $$$HH$B@@D!@H" H " "BI$DI$I $H @HI"$AD@@HA$ $@ $@D IB!  $H $I$$HD H!"A""! I$DDI"I$ @$I"DH BH" !I B  B$H$@"IHBI $$@H@ @@@D !@BA$!" D!$A$B@$@@$"$"@  D@@"DH $I!"DH$BB$"H@ $!D$$I$I$$"A$$I  D UUTH@@!@H@ !$  A210O= *YYTERG4G0)(G8G0G2G0G0:> *|($ o&!~6 *|($ o&:}!*|($ :!~4l|͌}(2*|$ &*|$*|($ o&*"x2y( >28!"9*|$!n! og22"">~2lÌö öÌCo&Ͷͳ}~#(͒ͯ  [ (!eR}A8Q0G: x@!\w# (Y ?(*( .( N5. 5!h6# (?( *( Y( w#>?> w#} 8 !oɿ .,;:=?*[]<>{}a{ |͋}͔Ɛ'@'Ò*|($(!B:U({ZW:V!K!P!WN ʒ! A+/ 0y͒ dF#~͒7||}>"2*Bں "og"2>2!""*B"[R*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#Ew}86RB0 > 6RRR!+  R!+  ͮ!+  ͮ!+  ͮ!#  ͮ!+  T]KB!z> S>))0 = |ͼͼDMgo>jB0 7?= J<Nz5͝)͝<z {0Gɯgo||}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'd } 8 W _}8(8J`9{T]=o`9y 8I >6ͽ  }>61 x }} ˸T}ٕ(0D=Ͷ ,= (  0%ͷ , 7  ?(8 x - ͮ 8˸xP P ,-xG}ʮ }م͉ 9ͮ .>#n0 ͷ = - nx  ,-(-˸G,-̮ }ٕ?͉ 9.> 8 ?= u+-(> 0  8 ?x  , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨% xx(/ ?}ٽ }ցڮ <(ͮ 7ͷ = |٤g{٣_z٢Wy١Ox٠G÷ 9 ͽ }x>6}ƀ/ƀo1 I -ͽ }0-ͽ ,}l˸ 8 1 p x(I - 8ͽ - 8,ͽ }l8;*! !C >p ---I ͽ ,,,-xGg?+2n*8t z~,->6x6}.1 ͽ ,I 1 ! >p,-I o&0%D, I }gڮ }؉}颋.:}8c~I$I~L*ٷx˸1 }0G, <}D,-(-ͽ !L>ͅ0  o8 1 >6m.`1pF,t6|!wS<.z}[|%FXc~ur1}ٯx(<˸ 81 !~J 0jO! >ͯ 8 =  ͪI ͯ I 1 jͪI 0 -ͽ OT0 j oD,:j !I}袋.}8c~I$I~L!F> ͅ ͪͪI = I nf^VNF!DLT\I!!53!r1!!> x #-= o˸x(-I }(x>8(Ͷ ,Ͷ `iÿ!>6|ʮ |ͼ>)=|(DMbo˸ 88 x(0 8> ͼx(>-!{(ay( z(>.! ( {>E!>+|(|Dg>A-!|/ 0:p# ~# +>0w#,-  60#ù˸}րogM4| .(Ͷ = ~> x0w#xG% % ZJDM% = _~65+~hìx-Sx9?+{Η@}|Ͷ Ͷ gZJDM0ͷ ,7}o˸̀ #yO!@9i&̀  #̀w#̀/w#̀w#!9! E9!!9~(+F!"9!(#>2*!"| >2:(  *w*6 !\$!'[ (}( #:~CONTRMKBDLSTCAUXUSR>2ͪ:*ˮ~q:*:(@q##p͛* :( <~* < >26"!"""~>2""v>2>"!"ˮ)(ͼ!~8>~O6~*"ͤw(%(!(((% (' 8y(~#͒>+ͯ (( 6ͼ6 #6 #"*: y~o p .##~(.6w4._~ =*##55= *[R8+*~#"= ͳ}== Ϳ}}*#w+#~+>*~('͛!0(ˮ]͛!8ˮ!]~-#8~> 27͛ˮw>O T3f̿s #r Tf ͛ ( (ˮ q͛(ˮ ( ͛ ˮ*O:~ ##~._q4((=ʶ==ʹ=ʼ*:4^q*##~6>2}*|(Ϳ|( Ϳ6-# [RM8( G> A~#*c C! !TRUEFALSE !9N#͉~#( G~#> >    "~(͛ѻ(( !0 (ˮ!!>2Sͪ:q:*6##ww#w$w#w: 9##N#F*B>2w#w#[s#r>9"~*-w#ww##>9""~>2:͊R09*4#4> 2:͊R> *4 #4(>9> 22*f(/˦:G(##~++ :O x ys! Q*:G(##~._.<=<*##w  +4 #4x=> > 2:G(""*nˮ*0 S͊ѷR8@* N#F#s#r\ 0})jS\*##w+ N#FB r+s>2!T]>)j)0 0= ͍R!#͍*^#V#N#F#^#V>2:q:*6 #-Nw#Fwq#p#6#w#w#w"~>">!2"w#w"~x(9* :O *-4 #4!*4 #4 *-N#Fq#pV+^Bq#pS͊ѷRV* s#r$ s#rF <?*!F!\  <( !\$>2>2F:>(* \$\<(!-: [1ð\!(7"~>2"S"Ns#FrB(Z#\: \<(?*"}K\! !*}#"}! x \* *> 8 2*"[R0s#r> 6[^#VS!9[R8[R>O"w2x2*"!"" Vͩ*"*>2"*"!"""!\!*: ~͢!~6go(\R*s#r_2x( s x(T]DMx(R0  G _Pß*!~6o&l|:2͌2}*:__Cѯ2*|KB " z ͯ^C USER INTERRUPT(= ͯI/O ͯEXECUTIONͯ ERROR {͋ͯ AT PC=*͆ͯINSUFFICIENT MEMORYͯ Program terminated *|$:ʏ(1!%!<~>!!R*!! R*ASUB 1xCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282654321Invalid file name $Error On Line $Enter Password: $ERROR: No 'SUB' File Found$CP/M 3 SUBMIT Version 3.0 $Enter File to SUBMIT: $SUBDisk Write Error$Random Read $.$Invalid ASCII Character$Parameter Error$ERROR: Directory Full$Requires CP/M 3.0 $11G"*}0|HҤbP2IK 1">d*++"~"!\. v!q*&!p+q* !s+p+q*:w#6* *#"N#Fy !p+q*!p+q*2 !p+q*!p+q*!p+q*!p+q*!!p+q*2 !p+q*!q*-!q:2!61!sA+q:2!6*&"1!p+q*<!s+p+q+p+q:=2d** w*#"*#"=  !s+q+p+q:=2ʩ*:w*#"Ì!p+qe*DM!\.\s!q:a:{: :O2:eel !6>!ڜ2 K*&l :w: T:_:…:r:=2O!l 6 3:•!4**& ~ ~ H!4Ýl :S*Q*Sl.l\P"*}=*|&el\P"=*|5.*& 6!6͝*& ~( 2*& 6e!"!\" "\p.e.:\2O>:2\*& ~ ~H~ H.!4͝*& ~2!6>!`\̓[>!6:<2=O! ~2 ½:<2O>9ҽ!60+~9ҽ!60+~9ҽ!60+~9ҽ!60+4:͓ͪ!"!6:= !6!6#6D2: H% : " :#$ͪ:;!6+~<;!6:$¨D2$X*M å:02O> p<ͪå!6͝:ʔ!5K ҎÄ͝xK ҥ*M Ô" :^D2:^^ :@: O :`:@O :`O " :!:/H     " *M : 2    *++" *& ~2 :Ht !4>>!""\ !6>!ڷ :+ ~° !4‘ * DM*"À * DM!" }2 ͣ2 :  ͪõ!q!r- "w * :w:C w *#" "*#~22_! 8!0!s*&:0!s!6ͳ:  sͳ:  L!`i^#V#~#fo yo w G: xAo o a{ _o     `i~< #~2#~2#~2*| W \!\~R 2 .n~ >2 6!.t~: +  >2 6!N#F#*" ^q#Vp" N#F##"^q#Vp" 4! 7o |  ! 6   \\ ? >_ 1m :~# yo ɍWARNING: Cannot redirect from BIOS $ERROR: Auxiliary device redirection not implemented $ERROR: Insufficient Memory $""SYSIN SUB_ogDM!>))덑o|gQ =?i`N#Fogo&og_{_z#W00001 : $SYSIN $$$FGET :<***.n6.t6 LL!p:~y !6 <ʊ~"x!=F#fh!:~!«!>w~:!5*.~w:; :~!9"1A#u.t.~@w :&/3͖!~6 :~wucy! ʎB d{<ʑ  '*2.2+6.w 22*2$*.6#6*.~w#~=~#4Ʌo$͖O̓!54  !F6#ȷxO҃>^̓@_: N#͖§>  *.>wÔ#wt~xڔp> ̓ 8>""SYSIN SUB hhhhhhhhhhhhhhWARNING: PROGRAM INPUT IGNORED $ 151282 COPYR '82 DRI gggggggggggggggggggggggggggggg"D! BH!H@ $!!$"A! D$DHH$B!"  @A  B!y~=W!x# ~#bxE {8~#o}oA'.`28!Ip+q*HT!J6J T ` T!p+q*T> >/Ҥ×!p+q*DM͛:̀ ̀:2:!!K:*&L Ǹ!4!K6 ͐uÇYALPSID'TCELLOC$LAITINI!ÓCOPYRIGHT (C) 1977, DIGITAL RESEARCH g gzd{ *9 Wl> W> W*"!"^l!]kl$]xl']::>2l!6!"!~4*s,r,"!~Ol!F2y* "*xT-V-^yA!~4x]> WO" Q>2y*"  INITIAL = COLLECT = DISPLAY = "-A" IN EFFECT, ADDRESS BACKTRACE READY FOR SYMBOLIC BACKTRACE BACKTRACE:%B 2!4þ *%"%:/ ͩ!4¡ :$ !4!"%!q: O !{4>!O :!{O :2*'M!8 ^#V%!t ͫ *%B :w*%#"%` Ø Ø Ø Ø Ø ͩ` *M6` !6 ` !6 ` !6 ` *&T` !6 ` !6 ` !60 ` *& @@ I$B$!!D!$"H@* ͡. ;ͣW!E# ¡ # ¬# ·@ʴʥzʖ=ʐ=|zJz?4)z z@_@ @@E  E 1  ͍ %͍͍ʢ͏͕!~# 4͕ ͍:g:s:_g:s!]~$o#~B̩1ɷW|g ͏͕%z͍͍ ͍vCPM3 SYS CPMLDR error: failed to open CPM3.SYS $ CPMLDR error: failed to read CPM3.SYS $ CP/M V3.0 Loader Copyright (C) 1982, Digital Research $021182" yڥ2 2 : 2 {2 !" " 9"@1!N y2K!dڛ_^#V*    ; A G :ž y! 4 5~yµ5 6y ’ ͒: ! OͻMD2 > BDOS ERR: $Select$Perm.$ v{_zW{_zW )8# ? w#JJ |^#V###" ##" ######" !  I* ! I* |! 6ʕ67 * w#w* w#w#w! ^#V#Fͪ' O* &! s#r#p* N#F* ^#V#F* : O}|y* %+* .}|y#* %* DM"  * s#r* s#r#pyoxgkDM* 0 MD" ! * MD$ : O&! N:  yG>O: ʐÇ* ͒ : ʨn` ~#for2 O͚" }: O* 7" 2 " : O: G2 ! w*  * !~2 ~2 : 2 : w: w |g}o' )4: O!3yoxg: O&}* : o$~w{ozg ^#V: ʏ> Û͡" ͳ* ç* r" ! ~#O&E: N/* " y2 ʹ͗ͻͫʛ* X: O~Jyʔx ʍ ʂJÍNJ# h2 G>G:~X*  IOw!x>Fwx2 2 ~: : 6: w2 ~O !>w:ͨ2 4O.5Ϳ: ! S: ͮ: ͛ͳ: < =! wW* M_S -* MD:" : 2 ɯ2 >G=O* ~~w#~2 ~wc~~p2 !" >2 * ~=2 ~2 ͛o>* w!" 2 =2 !" Û͛o͢͢' ͫ~<7 w@ͩ7: " Û: ~ : 2 : ~ * 6: p w#: w: w*@* }D> $* * T : _2 {2 " r" [  ?, d >l [ I6: <!=6 * J " * K : G/O*  * =d ## Ih c c c c c c Í ß Ð Õ Ú í c c é c c c c c c c c u É k c c c  !K!K!!6 6 >"2C?o(!d |G}2 <<2 >2! !#O: :(y: ( ( 2>2Mx: ɯ2S" Cx> >2*|o&~!!x( >>2C2!> B(>w2CCC!y*`i#:ts(1j͍( ~ ͢p  S[!R0x̓y{([ ' ~w NJ F6#ͱ 666 :rͪͱ >!p > >NF(90>2~6 :p> y~4(>4Wy> ~݆ݾ8(>6w4~ ݖw ~~ F8 C"!>!x((:4>> w( D6#~:=_Gn f s(1j͍( ~ ͢p͙ >ͪ~w NF 6#ͱ 66>"l/ > !!> \l!j\>կNF:!0 ) 0 ~=O 0yT!jpT"S!! >}ϋ}ϋ y(ϋ y(ϋ~G#N#Kvv-<v@_@:w:w:www?: : ɯɯwwwO FO/4\>(N2 i>!6 * & 6! 6: ,v! 6> W ʹ * ~‘ù* ~[ʟ* #" * ~N* #" * ~O* ~ H* #" ! 6 * ~P! 6* #" * ~]* ~H$ù* ~A0×* #" * ~]* ~HTù* ~G`×* #" * ~]* ~H҄ù* ~Eʐ×* #" * ~]* ~Hҹ: : /2 : ==2 : ! 6! 6\O2 :  . \ - v! q* &! p+q*  ! s+p+q* : w#6*  * #" N#Fy  ! p+q* ! p+q* ! p+q* ! p+q* ! q* &-! p+q* ! q: 2 ! 6 1! q: 2 ! 6 1! r+s+q: 2 ! 6* #s#r 1m % %!% s+q+p+q:% =2% ʍ*" :$ w*" #"" p52& aڧ:& {ҧ:& :& XX>l c!' 6>!' 6͎2( *' &l :( w:( 6:( ÷:( $:' ÷:' =2' O!l 6 :( /!' 4~2( !) q:) R>:) c>:) t>:) ‚>:) >!+ p+q** ~ʯ** >@O%:%!, 6> !, :, .%*, &** >2- *- M%!, 4´!. q>:. >:. 1>!0 p+q*/ ~ ~ H?*/ #"/ */ ~K>>!2 p+q!3 6#6:3 ҁ*1 ~?s!4 6!3 4*1 #"1 ]:4 : : <2 ! >52  %: ·: ! 6! 6lͷ: 2 ! 6 ͇" * }= * |2 % CͫXlͷ: 2  ͇" = > ͑ %* M=* } ͷ! 6! 6: / ͧH ! 6>! * & ~2 — ! 6:  ~Ү 52 : : ͅ* M%! 4w [ =ͷ\26 =:6 :6 o&"7 E"9 G"; I"= "? "A "C .*7 DM -J :\2 ͅX ͑:%ͅXͷ*9 E)*; G)*= I)*? )*A )*C )!; \e .*; \ - 26 * ~ * ~ H * #" !`i^#V#~#fo:  y  wO G:L xAڠ Ҡ a{3 _à  F F : i`N#Fogo&og_{_z#W TITLE 'WDRIVES.ASM TABLES FOR DISKETTE AND WINCHESTER' ;************************************************************** ;* * ;* MODULE FOR DEFINING THE FLOPPY- AND WINCHER- * ;* UNITS IN THE SYSTEM. * ;* * ;************************************************************** ; LATEST CHANGE: 1984-06-18. PSW ; BIOSREVISION D. ; FOR THE RMAC ASSEMBLER TRUE EQU 0FFH FALSE EQU 0 PAGE 42 ;****************************************************************** ; What kind of floppy do You want ? VERIFY EQU TRUE ; Verify after write. M8 EQU FALSE ; A: 8" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 M5 EQU FALSE ; A: 5" 2x77x8x1024, 256 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 MIN96 EQU TRUE ; A: 5" 2x80x5x1024, 128 ent. UNIT0 ; D: 8" 1x77x26x128, 64 ent. UNIT0 ; MARK CORRECT FLOPPPY TYPE WITH TRUE. NOTE ONLY ONE TRUE. ;****************************************************************** ;****************************************************************** ; What kind of winchester do You want ? RO352 EQU TRUE ; Rodime 352 ;****************************************************************** ; Consult the XEBEC-manual for the two following constants: LEAV EQU 7 ; INTERLEAV FACTOR used at formatting. RESTEP EQU 00000100B ; RETRY & BUFF STEP OPTION. ;****************************************************************** ; Diskdrive size and number of directory entries. E512 EQU TRUE ; 512 ENTRIES E1024 EQU FALSE ; 1024 ENTRIES REDUCE EQU 34 ; # of kBytes to reduce from second ; winchester unit. ;NOTE. The size of this reduce factor is depending on how many bad ; tracks the formatter utility has found on the disk. ; If the formatter tells You that it has reduced more kBytes ; than this factor, You must change this factor immediatly ; and generate a new operating system before copying any files ; to the winchester. ;***************************************************************** PAGE ; CONSTANTS: RATE0 EQU 00000000B ; Floppy step rate 3ms/6ms RATE1 EQU 00000001B ; Floppy step rate 6ms/12ms RATE2 EQU 00000010B ; Floppy step rate 10ms/20ms RATE3 EQU 00000011B ; Floppy step rate 15ms/30ms UNIT0 EQU 00000000B ; Floppy phys. unit 0 UNIT1 EQU 00000001B ; Floppy phys. unit 1 UNIT2 EQU 00000010B ; Floppy phys. unit 2 UNIT3 EQU 00000011B ; Floppy phys. unit 3 WUNIT0 EQU 00000000B ; Winchester phys. unit 0 WUNIT1 EQU 00100000B ; Winchester phys. unit 1 INCH5 EQU 00001000B ; 5"-FLOPPY INCH8 EQU 11010100B ; 8"-FLOPPY DOUBLD EQU 00000000B ; DOUBLE DENSITY SINGLD EQU 00100000B ; SINGLE DENSITY IF E512 ENT EQU 512 AL1 EQU 0 ELSE ENT EQU 1024 AL1 EQU 0FFH ENDIF COMM EQU 0BCH IF M8 SIGN EQU '8' ELSE SIGN EQU '5' ENDIF PAGE EXTRN FDREAD,FDWRIT,FDLGIN,FDINIT EXTRN WREAD,WWRIT,WINIT,WINITDC,WLGIN PUBLIC @DTBL,?TITEL PUBLIC @COMMO CSEG @DTBL: DW FLA,WINA,WINB,FLD ; This order must not be changed. DW 0,0,0,0 ; Check boot-routine in DW 0,0,0,0 ; BIOSKRNL.Z80 DW 0,0,0,0 @COMMO: DB COMM PAGE DSEG ; Define WINCHESTER UNIT 0. DW WWRIT DW WREAD DW WLGIN DW WINIT DB WUNIT0 ; PHYSICAL UNIT FOR XEBEC. DB 0 WINA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW WIN0 ; ADDRESS TO DPB DW 0 ; NO CHECKSUM VECTOR DW 0FFFEH ; ALLOC VECTOR GEN. BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ; Define WINCHESTER UNIT 1. DW WWRIT DW WREAD DW WLGIN DW WINITD DB WUNIT0 ; PHYSICAL UNIT FOR XEBEC. DB 0 WINB: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW WIN1 ; ADDRESS TO DPB DW 0 ; NO CHECKSUM VECTOR DW 0FFFEH ; ALLOC VECTOR GEN. BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. IF M8 ; Define 8" 2x77x8x1024, 256 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH8+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW F8D ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN. BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN. BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ENDIF IF M5 ; Define 5.25" 2x77x8x1024, 256 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD+11000000B ; $FDXSL 2 MHz 8" Mode DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW F5MAX ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ENDIF IF MIN96 ; Define 5.25" 2x80x5x1024, 128 entries. UNIT A: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH5+UNIT0+DOUBLD ; $FDXSL DB 0 ; FLA: DW 0 ; NO TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW F596D ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. ENDIF ; Define 8" 1x77x26x128, 64 entries (IBM). UNIT D: DW FDWRIT DW FDREAD DW FDLGIN DW FDINIT DB INCH8+UNIT0+SINGLD ; $FDXSL DB 0 ; FLD: DW TRANS ; TRANS TABLE DB 0,0,0,0,0,0,0,0,0 DB 0 ; MEDIAFLAGG DW F8S ; ADDRESS TO DPB DW 0FFFEH ; CHECKSUM VECTOR GEN. BY GENCPM DW 0FFFEH ; ALLOC VECTOR GEN. BY GENCPM DW 0FFFEH,0FFFEH ; LET GENCPM CALC DW 0FFFEH ; DIRBCB, DTABCB, HASH DB 0 ; HASH BANK. CSEG ; DPB for 8" 2x77x8x1024, 256 entries. F8D: DW 64 ; Number of logical sect/track DB 4,0FH ; BLOCK SKIFT and MASK DB 0 ; EXTENT MASK DW 607 ; MAX BLOCKNUMBER DW 256-1 ; 256 DIR. ENTRIES DB 0F0H,0 ; ALLOC VECTOR TO DIR  DW 256/4 ; CHECKSUMMA SIZE DW 2 ; NUMBER OF OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of log.sec./phys. sec. DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH8+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 8" 1x77x26x128, 64 entries. (IBM) F8S: DW 26 ; No. of logical sectors/track. DB 3,7 ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 242 ; MAX BLOCKNUMBER DW 64-1 ; 64 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TO DIR DW 64/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACK DB 0 ; PHYS.SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 1 ; No. of logical sectors/phys. sector. DB 22 ; Read time out DB 19 ; Write time out DB 0 ; Single sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH8+SINGLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 2x77x8x1024, 256 entries. F5MAX: DW 64 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 607 ; MAX BLOCKNUMBER DW 256-1 ; 256 DIR. ENTRIES DB 0F0H,0 ; ALLOC VECTOR TO DIR DW 256/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sectors/phys. sector. DB 22 ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD+11000000B ; Boot select DB 0,0,0,0,0,0 ; Dummies ; DPB for 5.25" 2x80x5x1024, 128 entries. F596D: DW 40 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 394 ; MAX BLOCKNUMBER DW 128-1 ; 128 DIR. ENTRIES DB 0C0H,0 ; ALLOC VECTOR TO DIR DW 128/4 ; CHECKSUM SIZE DW 2 ; OFFSET TRACKS DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT-MASK DB 0 ; Floppy DB 8 ; No. of logical sectors/phys. sector. DB 22D ; Read time out DB 19 ; Write time out DB 0FFH ; Double sided DB VERIFY ; Verify after write DB RATE0 ; Step rate DB INCH5+DOUBLD ; Boot select DB 0,0,0,0,0,0 ; Dummies ; Winchester: Rodime 352 IF RO352 SIGN1 EQU '1' SIGN2 EQU '0' WIN0: DW 68 ; No of logical sectors/track. DB 4,0FH ; BLOCK SHIF AND MASK DB 0 ; EXTENT MASK DW 2578 ; MAX BLOCKNUMMER DW ENT-1 ; DIR. ENTRIES DB 0FFH,AL1 ; ALLOC VECTOR TO DIR DW 8000H ; CHECKSUM SIZE (none) DW 1 ; OFFSET TRACKS DB 0 ; Phys. sector size DB 0 ; Phys. sector shift mask. DB 1 ; Winchester 1st. part. DB 4 ; No. of logical sector/phys. sector DB 50 ; Read time out DB 19 ; Write time out DB 255-LEAV ; Interleav (Inv) DB 255-RESTEP ; Retry & Buff step option DB 255-1 ; No of cylinders Hbyte DB 255-50 ; - " - Lbyte DB 255-4 ; No of heads. DB 255-0 ; Red. write cyl Hbyte DB 255-0 ; - " - Lbyte DB 255-0 ; Write precomp. cyl Hbyte DB 255-0 ; - " - Lbyte DB 255-11 ; ECC WIN1: DW 68 ; No. of logical sectors/track. DB 4,0FH ; BLOCK SKIFT AND MASK DB 0 ; EXTENT MASK DW 2617-(REDUCE/2) ; MAX BLOCKNUMBER DW ENT-1 ; DIR. ENTRIES DB 0FFH,AL1 ; ALLOC VECTOR TO DIR DW 8000H ; CHECKSUM SIZE (none) DW 608 ; OFFSET TRACK DB 0 ; PHYS. SECTOR SIZE DB 0 ; PHYS. SECTOR SHIFT MASK DB 2 ; Winchester 2nd part. DB 4 ; No of logical sectors/phys. sector DB 50 ; Read time out DB 19 ; Write time out DB 255-LEAV ; Interleav (Inv) DB 255-RESTEP ; Retry & Buff step option DB 255-1 ; No of cylinders Hbyte DB 255-50 ; - " - Lbyte DB 255-4 ; No. of heads. DB 255-0 ; Red. write cyl Hbyte DB 255-0 ; - " - Lbyte DB 255-0 ; Write precomp. cyl Hbyte DB 255-0 ; - " - Lbyte DB 255-11 ; ECC ENDIF ?TITEL: DB '80. ' DB SIGN,'"-floppy ' IF M8 ELSE IF M5 DB '1,2 MByte ' ELSE DB '800 KByte ' ENDIF ENDIF DB SIGN1,SIGN2,' MBytes winchester.',13,10,0 TRANS: DB 1,7,13,19,25 DB 5,11,17,23 DB 3,9,15,21 DB 2,8,14,20,26 DB 6,12,18,24 DB 4,10,16,22 END UTED$Q%Q2@COMMOFMI@e@b g@?@@+ %d?KH@ <_?@X&08L= |<`d(P`7 S o 5A\ cap<B< @M!NSi7SrA@ Aa  h Z;US# =55>:P#M%9%R4SM`I4ԒU#@]%9%R4RSU#D]1%:4JUԑPQ#D`]]I%Rp o 5A\ cap<B< @M!NSi7SrA@ AaD**"l#͋͋͋͋͋WINCHESTER BACKUP-UTILITY for the JET Computer. Rev. D  }004Requires CP/M Plus Version 3.0 to execute. ͇&R(4 Requires the BIOS revision D to execute. ͇ Which drive is floppy?͝!d#~ #~˯A8Q8< Please, give a letter (A-P) followed by a colon. #2t#~: ͋:t#A_͇2u#8: Requested drive does not exist on this system. ~(! Floppy not winchester!  Which drive is winchester?͝!d#~ #~˯A8Q8< Please, give a letter (A-P) followed by a colon. #2v#~: ͋:v#A_͇2w#8: Requested drive does not exist on this system. ~(G  Not the second part  Winchester not a floppy!  Todays date (YYMMDD)?͝!d#~ 0 Please, give it on the form "YYMMDD"!  #(( 0( 0!e#M:u#~2y#~G>_NF͔N|(n fF(<"z#}2#~N_P`hS|#{2#Q<:02#͔"~#[|#͔K~#͔!@ S#@͔"#F2#~/W~/_S#~/O2#͔^N!S#͔"#K#͔͔S#!K#S#F2#!vo!#ͫ(;(b!2$~> #~ #~ #~ {2'#͟!(>2n#>͋͋͋͋͋͋͋͋ WINCHESTER BACKUP-UTILITY for the Jet Computer. Todays date:@ Number of diskettes:#i:'#(!#ͫ(;( Bridos volume name :!$ s Created date:!$s Last backup date:!$s͋ 1 Winchester backup TO floppy 2 Winchester rebackup FROM floppy 3 Verify old backup 4 Read floppy number and date 5 EXIT (do nothing)  Your choice? ͖O͒b12 3Z45b͋͋͋͋͋͋͋͋͋A complete backup will be made of the winchester and all contents on the floppies will be destroied. Confirm with YES ! ͝!d#~#~˯Y#~˯E#~˯S You will need :# diskettes. Ready to start ?. Confirm with YES ! ͝!d#~#~˯Y#~˯E#~˯S2#2(#!M)#:'#=L !#ͫ(;(!$7#, 8#!7#6!""͋!(#4> Insert backup diskett no :(# in floppy drive :t#O͒: and press , ^C or F ͖ (3C˯F(" press , ^C or F ! i ͥi *(#&+K#͔"#"/#[#"3#!##6!'##<!#!"#:#2#͋ Reading from win *#!ͫ( (;(C Writing on floppy *#!(;(i  Verifying *#!(< Verify error Abort or Retry (A/R)͖˯ACRi !#5e *#@"#*#@"#[#RU !#(;(C[#K#!!@R[#"#!#:'#= T Updating the winchester !#ͫ(;(C$!M!#̀ (;(C The winchester is successfully backed up to the floppies. C͋͋͋͋͋Rebackup the winchester from the backup diskettes. If You want to continue? Type YES ͝!d#~#~˯Y#~˯E#~˯S You will need all the :# backup diskettes and everything on the winchester will be destroyed. If OK? Type YES ͝!d#~#~˯Y#~˯E#~˯S> Insert backup diskette no 1 in :t#O͒: and press ͖ (# press or ^C ! !#(;(:#=81 This is no BACKUP DISKETTE !! Try againP :#(. I wanted diskette no 1 !! Try againP !#)#!cc:#2(#O6!""͋> Insert backup diskette no !cK#>:# in drive :t#O͒: and press or ^C ͖ ($C press or ^C ! o!#(;(C:#=81 This is no BACKUP DISKETTE !! Try againoK#!c ~(2 This diskette has allready been read !! o!#)## p This does not contain the same BACKUP DATE. Anyway accepted? (Y/N) ͖˯Y(J(No type Y or N*#"#!"#*#"#͋ Reading from floppy page *#!(;(C Writing on win page *#!̀ ( (;(C Verifying on win page *#!ͫ(<(8Verify error. Abort or Retry (A/R)?͖˯R^A C*#E@"#*#@"#!#5)K#!c 6>:(#=2(#o Rebackup is successfully done.C A byte compare will take place between the backup diskettes and the winchester.  Insert any backup diskette in drive :t#O͒: and press (any other key will terminate)͖ *#))"#!#(;(:#=81 This is no BACKUP DISKETTE !! Try againñ2#*#"#!"#͋ Reading floppy page *#!!#(;( Reading win page *#!!cͫ(;( Verifying !#c?U# x*#"#*#"#*#+"#|ˆ Verifying is OK. ñ:# Verify errors. Do You want to see the errors? ͖͋ ˯NY( Y or N>2#~XH on floppy =~XH on win.(^C to termiante.) ͖>2n#!#(;(>:#=8 No BACKUP DISKETTE )͋͋͋͋͋͋Disc number:*#&! Backup date:!#s First page:*#! Last page:*#!:#= [ Bridos volume name:!# s Created date:s Last backup date:s Press any key͖ Reboot the system!"> WINCHESTER NO OF CYLINDERS*#! NO OF HEADS *#&! SECTOR SIZE *#! NO OF SECTORS *#&! WIN SIZE *#! NO OF SECT/PAGE *#&! FLOPPY FLOPPY TRACK *z#&! NO OF HEADS :y#!(.! SECTOR SIZE *~#! NO OF SECT/TRACK*|#&! USED AREA *#! NO OF SECT/PAGE *#&!Ë!;;~O#~U~檩˿#kxxmt!90$`tkeuggzp|oj F#( y#χ y#χ yχ yχy y2#  TIME OUT :( DRIVE NOT READY C(!n#5 READ ):#W( LOST DATA  FATAL :#(ERROR NR*#&!>2n# (A=abort,R=retry)͖( ˯A(R ӯ7!W[l#{ͮ|ͮW_0e. !0 ) }|x/Gy/OzS)80# 8 _733< _7ɏ0#  _7~08 0O'''O#~08 0#ɯ7|() #^#V#>G (0 DRIVE NOT READY OPERATION ABORTED Lw(2 CANNOT FORMAT WRITEPROTECTED DRIVE! L>ͳ!W(O(O !'+O(| 1 CANNOT FORMAT HARD SECTORED DISKETT L͋͋>2#2o#~X!!2s#P!o#4!#< :#G=2o#:o#~ͳ!!ů2s#!o#5:#L DISKETTE SUCESSFULLY FORMATTED  SEEK ERROR, OPERATION ABORTED >2#> FORMAT:o#O:#G:s#[#*#qwG:u#!~o>!(2# WRITE TRACK ERROR F!s#4F VERIFYING:s#2#:u#;;2q#2#!q#4~*~#+"!o>!#!(U2#:#(  *** READ ERROR AT SECTOR >2#:q#͋:q#!# F!s#4F:u#o*!X$"#*~#r"#!#>NP >>w#2>N>2q# >>w###:q#w#:#w#>w#>N >>w#:#O:~#G  > >w#6>N!q#~4!#8>Nô!$"#:*~#"~#!#(>>w#>>2q#>w###:q#w#:#w#>w# >>w#:#O:~#G  > >w#>!q#~4!#8>wT]N w# 8  y0 0(O͒0O͒ TRACK :o# SIDE :s#:u#x2#"#:#=(!K|#So##"q#q!©.@:# .[#Sy&"#!o:#G[#!"#:s#'_:q#>ͳ!©!#5ʣ:q#!|#ʩ<2q#ÅFʹ!s#4F:o#2q#z:u#x2#"#:#=(!K|#So##"q#q!©.@:# .[#Sy&"#!o:#G[#!"#:s#'_:q#>ͳ!©!#5ʣ:q#!|#r<2q#NFʂ!s#4F›:o#2q#C>7x2#"#:#=(0 i&K#So#"q#O! .@:# .[#Sy&"#*#+"!o:#G[#!"##/ >>>"n !#5` :$#/>>"!f 6 >7x2#"#:#=(0 i&K#So#"q#O! .@:# .[#Sy&"#*#+"!o:#G[#!"##/ >>>"=!!#57!:$#/"!f  !>7K#͔ 0}/2$#|/2##:w# /2"#*o#:y#(<0<2s#"o#:o#~ͳ! 7>>ͳ!> !(+D   8>!(+D#!#":#/! ERROR.........::#/O0O͒ ͒:#/X HIGH-ADDRESS..:g:#/o! MIDDLE-ADDRESS:g:#/o! LOW-ADDRESS...:g:#/o! Consult Your Xebec-manual. /("W"z/>y"!!#p"'d Ei!v"/!Q/+>c!K-6*/K>XG!+>yC!Q/+>c!+Q/>r–!}o|g}ʖ!#"/!/–!/ʖ!/+>c!/ͷ~g"B,U"G-!,,> c!o0ͷX:F-!,,> c!q0ͷ~*G-w#w:F-X!s0͡!F-6*G-*G-^#V#)))"I-*B,*G-^#V))W+"B,*B,>og"@,:F-f!,,> c!y0ͷ~!{0!+Q/>r2K-*I-w#w2P/>2O/2N/!/(,>t!"N-:F-X!D,LG!),>y :#!#6!Q/D,>_:O/!N/:N/2O/2N/!P/4!}0!0*L-#"L-!0A !/*!/>X!/>Xt!D,KLG!.,>y:O/!N/f:N/2O/2N/!/>X!.,!,@!D,KL(,tî!N/4!,/>c!0!0!0n !N-~#!0̓ ã!0ͬ!D,/,>c!0~U!9"0:#Z!#6!#"/r*/>$Gt!##>Gt!#0,>Gt!#6!#6!#"0!0T!F-6!"#!D,6!06:0}͐3>!D,ͧd*0!F-6!#6*##"#*# |.!"0}20!0>!#*0"0!0U!#"0!0+!#*06*0 "0!04í!"#:+.!+6:# :# :#.~!#*#~20:0 20:0Q~:0Þ:K-z"/!0Ur"/*/ 3,>Gt!0#!D,6,> c!0ͷ~Ͳ"0~# ¦*0^#V"0*0^#V"0͕!1"1!216>261251:!12:1::1!51!!1:51og~271:21!216{:71!61281*0:61o:81OLG!1>c:81og>og}281*0:81ogW"0*0:81og####"0*0*0W*00>c*0";1!;1ͷ~>291!1n&}2=1:=1!91*1:91og"1*1~og |*1>ߦw*1~?*16_*1~@*16`!914å*0++*0)"1*11>_*0^#V"31*0^#V#r+s*1*0*0^#V)))s#r*0:61_L*0*0^#V)))>t*0*0^#V)))w#w!31#`*0*31)))^#V1j`*0*0^#V)))"1*1!1>Gt*0*31)))"1*1*1>Gt*31+"31*0*31)))^#V1j!31#T*1"1*0*31)))"1*1*1>Gt*31+"31*11>Gt:71%^}2C1:C1!A1$ *0:A1_LG!>1>t!0>1xy!0>1xy !B14:A1!!1:B1ogw!0>1xy :B12!1!A14ì*00>c*0"D1!D1ͷ~^#V"F1*F1^#V> ͍!H1 *!H1> XÓ1~# s !9"2!1"1!16*1w#w*1ng | *1KLG!1>yº !1**1~ogQ1~og)1^#V*1^#V#r+sH !11>c !1*>22*1~ogQ1~Y !11xyK !24H :2K !1!1> !1* *1*1^#Vͯ1>_ *1~ogQ1~ !1*{ !1*!11xy !1*é !1**1~ogQ1~ !1* *2:1 !16!"1*1n&"1*1"1' *1#"1*1*1W7 *1*1>Ó*1~og |c !1>ߦw !1~?t !16_ !1~@‚ !16`Y2 ~# ˆ *_2^#V"e2*c2^#V"g2!"2*[2^#V"2*2*2W *]2*2ͯ"2!2 :2 *e2*2)))~# *g2^#V#*e2*2)))s#rc *e2*2)))^#V"2*g2*2))~#K *g2*2))^#V"2% *g2^#V#*g2*2))s#r*g2^#V#r+s*a2^#V*g2^#VW !i272>!c!2ͷ~*2+|´ *Y2^#VO"2þ *Y2^#V"2*2*g2++*g2^#V))s#r*g2*g2^#V))w#w*2#"2ô 2~#  *26*2LG!X2>yC *2"3*3#~>!3w:3og2~C :2 !26*e2^#V#"3!3"323!3> *3++| !"3Ñ *3>og"3*3:3og)2s#r!34d !" 3*e2^#V" 323*2"3!3"3* 3* 3W_!34:3og)2^#V" 3*e2*3)))^#V"3*2*3j/*3+" 3* 3* 3"3!36\*3*2jY*3#" 3* 3* 3W"3!36\Û :3o* 3"3u* 3"3*e2*3)))^#V"3*2*3jʛ*26*3*2s#r3 ~# ±*3^#V"#3*!3^#V"%3! ÷>2.3*3~ʟ*34*3~og"3!3A !/3*!/3>XG!3>y.!/3>X3t!/3>XG!3>y[!/3>X3t*3!3>}23:3ʐ!/3>S*3:3<_Lt*3"3!3ö*33>_*3"3!3!;3"93!3*3>!t!<3"53!L33>Gt!Q33>Gt!"'32.3*'3*#3^#VW*'3#"'3*#3*'3)))^#V!<3>p!")3*)3 |*53+*)3"73*73~ ]Æ*73~_n*736?|*73~`|*736@*)3#")38*#3*'3)))!M3>Gt*#3*'3)))^#V")32-3!)3~#ʖ:-3 ͟!<33>t!M33>t2-3!-34*%3++*)3))^#V"F+3:,31!Q3:-3ogͯ3>Gt*+3O"+3M!Q3:-3ogͯ3>Gt!3A !/3*!/3>S!L3:-3ogͯ>t*%3*)3))^#V")3ø͟!.34*3~!.3!t:-3ogͯ}!;3w!;3~w*93:;3=_L3t*93!3>_!3^#V"<:F4!F46*<KLG!H<>y+!E46ð!E46!4"$Gt!'4I<>Gt!*46!>46z"!4*<@*<"r2<:E4:<>2<>2<*Gt!^<<xy;!<8!<5!<͛#E!<͛!<5:22%^}2<:!4*<@*<"!4*<@*<"2<*t!<͆!<4!<͆^#V^#V  $ "/  Later CP/M or MP/M Version Required$*#=**#={ozgY|g}o!\!l!ÍÝ3>Ý!*3>K* !*   >    !"#$%(^#V^#VF3O3*# 72gl*<"?'w#-!9~sG~#s4! 9~.Y+60e0e6 #M+r>o&9y>o&90w+Š6./G! >0 >-3T]))iO>`G>0 <  DM0 > Ew#E~#X~#W #Ý!9Oo>gy~#o>gxGGtwF#"WObk++~+ y~#/~!>)< D=M)6ɯo>g{ozg!dÄlmnpr Conversion2!Ä*%=|^#V"%=###^#V#N#Fxʿ #~ò*%=|^#V#N#F!9yx"%=:L# !9!#{z#  !!9:]#O!^# {#z!]#5#}OD*#=~r##~#fo9!NÄVWXZ\ Free Space Exhausted##^#V#{_zW;{_zW>4z˜{##^#V# ##s#rs#r#s#r+++~sw#r####}*#=}|5*{z5+F+N+V+5^{;{z;}|;{i`~sw#r##q#p i`N#F#^#V~;q4#p+i`##s#rA"]" FREE Request Out-of-Range$ Free Space Overwrite$GKҜMbkÜiFhNhN#Fh^#V"#y2#xүi&ͩ x>!J#{#z*#*# xyxM_!^#VͤG>(Iỳ>)I|*<|6<ͤͶò">,IG> _O! O! O!0:IIWWG|e}e ڐdԒ ͒ڝÔxWN #~Iæ!wͤ*=!9{_z{ G>#I*=>=^#V#q>: >?I!oͤͤ>=I^#V|A}8.))ä#F>A> #\~ >.~ =M^#V# File: Traceback: ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLSTBADG!]#~8  " Condition Stack Overflow$4Ox!< w#s#r#s#r!9!^# s#r!]#N!< +++++q #{Š #zʏ ++~q ++!]#5!~# ž Ú !]#N!< +++++¹ #~# +{ #z ++~ù #^#V=!L#~9!5:L#_!M#^#V"J#~#.~# !*#)))))# )| !*~#|}*#"#:L#*J#~#w# F!*#{ `! d!!#"#Ö!Copyright (c) 1980 Digital Research, v1.3 !"!="="%=2]#2L#*'= !"=q#p##}o"#=*}o|!""+w+w+r+s4w#w#s#r<2)=++*!=s#r"!=*=#"=*=DM!!=x~¨"#~+¨"+F+Nq#p*=+"=ʣ"Ҧ"=Y"!+~O~#~G!>w!/x"yʞ" >O6# x" h"=ɯ ~#fo++"!=~#"*!="²""""  Insufficient Memory$ Invalid I/O List End of Execution$#dd(Copyright (c) 1980 Digital Research V1.3MXList SYMFd$PlPRINTER busy XREF 1.3 no SYM file no PRN file CP/M PRNXRFABORTED. V́ + 1@+>  FG1"z*QS cE5T @///,,D,B,G-,Q/D,D,L-,D,D,N-P-L-N-P-G-@,I-P/O/Q/G-I-D,000//D,symbol table overflow ' invalid SYM file format  { *$'symbol table reference overflow 22i2 0# +333GlXRF.XRF make error  '.XRF close error .XRF write error <<<_<<b|ÕÙãçñ MOVE-IT, JET 80 9600 BAUD AUX PORT $rt $ FIRST.  $:G!N#~2#y…>> GD&>|ÕÙãçñ YOU ARE TRYING TO RUN AN UNCONFIGURED MOVE-IT! RUN MCONFIG FIRST.  $:G!N#~2#y…>>&> ALL CODE IN THIS PROGRAM IS COPYRIGHT WOOLF SOFTWARE SYSTEMS (C) 1981 REPRODUCTION BY ANY MEANS PROHIBITED BY LAW. ALL RIGHTS RESERVED.  1%=:02'%:02)%*"{$!"`$2i$2h$2d$F$2$!~5##~͸N5#~͸O5#~͸C5>2h$$#!~0_ͷ##@!!*#!~~2$!:~=O##~#sN$>2$*ͷ#"~#Î#¶:d$ʙ<2d$Î:Ž2d$æG:h$x >2$xd"!y~!:~͸SʞGʞN<BVA]RʟLMEʙT{C Hʎ?0%!!%#~*O*#~C*>2h$~2i$~#~͸*SsNʖ*>2i$~#~͸*AʑRʠ *#~ ʦ,ʦÑ~# ʦ,ʦ͸H>2j$ÒF2j$ÒN2k$ÒE>2k$ÒO>2k$Ò6#+~ _ͷ##!6#K6#p6:j$2b6#~6:k$K6K6#9#*|/g}/o#*ͼ!89#!!>N2s$"h G:c$xW 2c$xe ͸EStA!PgGT9XC?*#w!!*#w:p$ |9#g!͸Y <$2p$2n$!!~.#:l$2l$636#w:n$O:p$O=7a:n$2n$7a!7#w:m$2m$6y6#w8#:g$!!!<8#:f$!!!I8#s"yʴ!:"2g$!n8#s"y!:"2f$!8#!!w:o$2o$88#w!1#s"y0 !:<'<ͱ$:,#g!͸Y0 <ͱ&$<ͱ#QX.#" >2p$2n$!!<:#7#*"q$w!1#s"y" !:\'\ͱ$<¤%#wN$2#s"͸" ͸NCETX2#!ê2s$C5#͟#2t$!H5#H\.$F !~F ͬ " # 5#>N2s$w/#2p$2n$!!wj5#!>N2s$wxe >2c$wͬ \ wi ͎ ͸ } w<$.#0 :f$ͬ ͍ ګ ͎ *q$w#"q$}•  :g$ͬ G:n$ x *q$w#"q$:==̌ *q$*|/g}/o#*q$6#"q$ 5# }l&)>o*|C N$<6$ѷ7ƒ +|% *q$+~l z/W{/_*q$DM*xʀ w# _ N$<6$ѷ7ƒ *"q$5#\ ¤ z“ 7i _:k$  { { {u ͂ _:j$ ͷ#{͸ :s$X T] C] E ' \ 3 i ͎ O:f$y3 5#\ I i ͎ O:g$yI 5#3 ͯ#) ͟#) " { t E :l${ > ï :l$E :s$Tʋ Cʺ E \ ʝ i ͎ ͯ#ʮ ͟#" z  E ͯ# ͟#" \ ʺ i ͎ G:t$º E \ ͯ# ͟#" i ͎ 3 7#͟# 3 "  7\ 3 i ͎ { E :l$E > ï ͯ#V ͟#" 7? _:o$ʝ ͷ#X1#*`$ͼ!n1#g!͸Y~!"`$~#~* , ~#* , +͸0 : ~jͱ$< %!&>j.$: w#/ 6!&>?ʺ ~͸w͸Y #G k ~ ~,k È ~# z ~ k F 9#~##~ʠ ʠ ,Š #(ڱ ~9#~:#~  E9# !~#  ~#  !!~~#,_ͷ#~#,% ͷ#~ 7{#(~͸G#~͸O#~/g/o#}{ |`Gog}~ }#,l(7ODEVNOHAFUALECPRXO>ñ>ñ2k$h>þ2j$hXJNJF>2l$hXJNJF>2o$hXJNJF>2m$h~͸N(F9J]J#"2g$h]J#"2f$h7h##~͸7]#~h=\7PHONE NUM~~2$#~* ¡#:$G#ø\':w$2b$<$<~ #͸A*#~* <'>2h|%#ÒY:*{$~ʒ2\$\~# 1N$ ͷ#.#:\V>$<@_ͷ#:ͷ#!]^ͷ##f.ͷ#!e^ͷ##y/#\ͱ$<›%:< ʰ:b$/# !]<~a{͸#¸!< ~w# 2_$6:z${4a67ʈÒc,#ʙg!͸Y>2_$:\$Wx $Ò1:\$Wx/#! 1xÙ͔!S-#g!ʙ \.$2_$}!!H:z$7ʈ{3ʵ6ҏÒ͔!,#"ھʙ ͔!2_$i:z$6ʒÒ͔!Y/#!Ò/#!> !< w#":\$<2\$>2\$2<2\<]\':w$2b$~ʋ U#G͸A`*#~* `<':< ʋ:b$ʋ/#> 2<2_$>2$Y>2$:z$"ʷ6ҏÒ%#Ò2_$>2\$>2$ͧ >2$:z$%ʒ$67Ò:!\a{͸w#:$<2\:< < $#_#:N$\ͱ$ʷ,#g!ʙ͸Yy\ͱ&$\ͱ#^2_$5x :z$6Ò͔!X.#"*2_$x :z$&67ʓÒ2_$4x :z$&U67ʓ.Ò /# 2_$}!ͧ :z$6ʓ#<e7ʓ͝hÒ\6$^\&$͔!2_$5x :z$67ʓҪÒ-#g! 2_$x :z$&67ʓÒ2_$3x :z$&367ʓÒ?/#͔!\$/#!2_$x :z$&67ʓRÒ͔!1:\$Wx/#!͔!\&$#~͸*D*Uʵ*#~> µ#6"|*}2$>2\$>G2$2$2_$!$Rx :z$S6 Ò8#!Ò1#::ͪ!!!Ò>G2$>2$2\>2\$#~V <#\':] ^] >2_$A!\x :z$ʈ6cÒ2$*{$>2\$2$>2_$ͧ :z$"ʷCB6ҝÒ:$>2$0#!:~@_ͷ#:ͷ#!!!::$<2$2$!ØE9#Ø#~*͸DXU'*#~? '#6"|*]F$F$1#ͪ!!!Ò2\#~v \#\':] ~] \ͱN$|ʷ0#:\¦>$<@_ͷ#:ͷ#!!*{$~E9#ü!ú!!Ò#^ͷ##.ͷ#^ͷ######>G2$>2$#~* #~)#~#;z,A͋#)2_$>2\$Px :z$ʒPt6FÒ>2$8z€ѯ2_$2$F:$~:$_F$ ͗#>2$2$ :z$!AkP(R`6xÎ2\$>2$>G2$:!\w#2|2h:\>$<2\N$|)"xÎ͓*{$ :z$’2\$~\~#K!] ~w# Y2_$!\:\$W$x :z$15ʒf\͓>2_$ :z$4ʽ1\7Қ\ /#Ò/#!.#:\@_ͷ#:ͷ#!]^ͷ##.ͷ#!e^ͷ##/#\ͱ$<\.$›2_$}!!H:z$5Z 1\74\͔!:\$Wx2_$ :z$3ʒ1\7o\?/#Ò2_$#:\$Wx :z$1\7ҟ\/͔!/#!> !< w# ͷ#&:\$Wx/%x ͷ#Ò2\$>S2$:!\w#'.#:\@>$<@_ͷ#:ͷ#!]^ͷ##P.ͷ#!e^ͷ##c/#\ͱ$ʶ>2_$x :z$ʭ1\7\ҏ\\ͱ&$>$#_#:N$\ͱ#͔! /#4xÒ͓2_$ :z$7\>͝\}!\6$͔!?/#3x\&$Ò\$͔!/#!xÒ͔!/#!Ò>2$>G2$2\$:!\w#\ͱN$͓ 1#:z$’|":\$Wx/#!~*{$~2_$~>$2$>G2$8Ò!::]$O 6$41#:#!!͓>2$>G2$!:~w^F$F$2$!$Sx ͷ#Òxxx 6#6#6#66*`$#"`$:^$W:_$<2_$*0#g!͸Y2_$7?7*`$#"`$:^$W:_$<2_$#7?7ɯ2w$"u$Fx# 0~:Mx͸@#Q+~ #*w:w$2w$~#.ʊ.ʊ͸V~.#*u$ ~ #*®:w$2w$͸–a{_x>? > *{$!"}$\$\$.!o:\#~#:==* *}$#"}$72>*}$:\$W!:Y#x/!"Z$yzxʨ~#Ÿ:Z$/o:[$/g#|}> Y#> Y#O*Z$ "Z$G:i$xY#Y#0: # : 2]$G / !"Z$ 2z$ 2y$:]$2]$X G!: w#L *Z$ G O## | :z$6:$ʍ :$GÕ :$S:\$W:y$¦ >2z$² :y$2\$7x>72z$# >2z$# G:i$x G# O*Z$ "Z$0: !0AG!77%#N! ͷ#(ͷ#;!)ͷ# I!^ͷ#@_ͷ#_ͷ#_ͷ#s"!yy!> :::x$2x$ʡ!J9#:x$ʑ!2x$\9#Ñ!!!""&o!!!""/*"^#V !z/W{/_*"##""Yͷ#!!2"02"2"#"2" O))))  "}~ B"#8"0a" ?a"))) O F"2e$!:Ã"ů2e$!:"}"ʰ"ʰ" " }":e$P"<2e$w_ͷ##}":e$}"=2e$+ͷ# ͷ#ͷ#}"6:e$O::#|"}0"ͧ# #ͧ#ͧ# #7:$&#:$G1#6#:$S1#6#8#~#P#z;#8#7͋#7?e#Z#r# S$S$S$ S$:h$V$:m$#S$:h$V$ S$S$  S$S$S$S$S$S$S$S$S$S$S$ S$A * * MOVE-IT (tm) * * Inter-computer communications utility  Version 0.0 Copyright (c) 1982 Woolf Software Systems Serial number $ $ **** File Not Found $ **** Syntax Error! The proper commands are: Send FILNAME.TYP [AS DESTNAME.TYP] (Send file to remote computer) Get FILNAME.TYP [AS DESTNAME.TYP] (Get file from remote computer) LDir FILNAME.TYP (Get local directory) RDir FILNAME.TYP (Get remote directory) LUser [USER NUMBER] (Get/Set local user number) RUser [USER NUMBER] (Get/Set remote user number) Call [NUMBER] [NAME] (Call number or name) Hangup (Hang up the phone) ANswer (Answer the phone) NOConsole (Inhibit console output) Binary (Set 8 bit transmission mode) AScii (Set 7 bit transmission mode) Message [MESSAGE TO SEND] (Send message to remote console) TRies (Display retries) TAlk [FULL] [HALF] [EVEN] [ODD] [NOPARITY] (Enter smart terminal mode) Exit (Exit to Operating System) $ Escape sequence not found. Valid sequences are: Send 1 escape to remote computer S Send a file to the remote computer G Get a file from the remote computer A Toggle Auto Line Feed on/off C Toggle remote echo on/off T Toggle file trapping on/off P Toggle printer on/off X Change XON and XOFF characters. E Exit Talk Mode (Return to prompt). $ File name already exists on remote end. Replace?$ File name already exists on local end. Replace?$ Remote disk full. Insert new disk and  press return to continue, or press control-c to exit to Operating System. $ Remote directory full. Insert new disk and press return to continue, or press control-c to exit to Operating System. $ Disk full. Insert new disk and press return to continue, or press control-c to exit to Operating System. $ Directory full. Insert new disk and press return to continue, or press control-c to exit to Operating System. $ Disk full. $Sending $Receiving $...$ Complete.$ Aborted.$ Aborted. Directory full. $ Aborted. Disk full. $ Remote computer timed out. Command aborted. $ Warning - When an ambigious name is transferred, only the drive name is permitted in the "AS" field. File name ignored. $ Communications Line Failure. Either the comline is down or the remote computer is no longer running the utility. Try Again?$Directory for local disk $Directory for remote disk $Receiving fileInames, please be patient... $Sending filenames...$ Message from remote computer: $ Number of retries: $ Do you want to clear the retry counter? $ Remote user number: $ Local user number: $ Filename to send to remote computer?$ Filename to get from remote computer?$ Please enter the letter that describes the protocol you wish to use (N,E,C,T,X,?), or press Return to abort. $ Valid protocols are: N - No protocol. Characters are send at full speed. E - Echo wait. 1 character is sent and then checked against the echo from the remote computer. If an error is found, the user can ignore it or abort the transfer. C - Character wait. One line is sent, then local computer waits for the specified character from the remote computer. T - Time wait. One line is sent, then the local computer waits for 1 second. X - XON/XOFF. Characters are sent until remote computer sends XOFF, and resumed when remote computer sends XON. Please consult the users manual for more information. $ Please enter the character to wait for: $ Transmission in progress... $ [Transmission complete.]$ [Transmission aborted.] $ [Transmission suspended] $ [Transmission resumed] $ [Saving data to disk...$ Done.] $ Invalid option: $Valid options are: HALF, FULL, NOPARITY, EVEN, ODD$Current settings are: $Half Duplex, $Full Duplex, $No Parity.$Even Parity.$Odd Parity.$ [Auto Line Feed is on.] $ [Auto Line Feed is off.] $ [Printer is on.] $ [Printer is off.] $ [File trapping is on.] $ [File trapping is off.] $ There is no file open to accept the trapped data. Use G to open a file. $ The remote computer echoed the wrong character. Press return to ignore and continue, or Control-C to abort. $ The current values for XON and XOFF are: XON: $ XOFF: $Please enter the new value for XON: $and for XOFF: $ New values accepted. $ [Remote echo is on.] $ [Remote echo is off.] $ Sorry, the remote computer does not support this command.$ Size of trapping buffer: $ characters.$ $.... Working ....$                 $An error exists in the switches for the name called. Command aborted. $Name not found in PHONE.NUM! $ There is data in the trapping buffer. Do you wish to save it? $[Trapping file is now open.]$ Not enough memory for function. $ Valid names in phone number file are: $tches for the name called. Command aborted. $Name not found in PHONE.NUM! $ There is data in the trapping buffer. Do you wish to save it? $[Trapping file is now open.]$ Not enough memory for function. $ Valid names in phone number file are: $tches for the name called. Command aborted. $Name not found in PHONE.NUM! $ There is data in the trapping buffer. Do you wish to save it? $[Trapping file is now open.]$ Not enough memory for function. $ Valid names in phone number file are: $tches for the name called. Command aborted. $Name not found in PHONE.NUM! $ There is data in the trapping buffer. Do you wish to save it? $[Trapping file is now open.]$ Not enough memory for function. $ Valid names in phone number file are: $tches for the name called. Command aborted. $Name not found in PHONE.NUM! $ There is data in the trapping buffer. Do$INOUT FORWARD EXTERNALMAXINT FALSE TRUE LONGREALREAL INTEGER BOOLEAN CHAR TEXT STRING INPUT OUTPUT GET PUT READ READLN WRITE WRITELN PAGE RESET REWRITE UPDATE APPEND RAMFILE ASSIGN RENAME SEEK CLOSE ERASE ECHO CHAIN GETCOMM PUTCOMM NEW DISPOSE PACK UNPACK MOVE POKE DELETE INSERT STR ABS SQR SIN COS EXP LN SQRT ARCTAN TRUNC ROUND FSTAT CHECKFN ADDR PEEK SIZEOF CONCAT COPY LENGTH POS ORD CHR PRED SUCC ODD EOF EOLN BTP BYTE WORD SHINT BYTEARRAARRAYPTRWORDPTR INTPTR BYTEFILESTR3PTR STR30 INDEXBLOFILENAMEUNIQUE KEYLENGTNBRINNODMAXNODESMAXDEPTHNBRNODESNODESUSECURRLEVECURRNUM CURRPTR CURRSTATROOTPTR DEPTH FIRSTFRENODESIZENODEARRANODEBUF FILEBUF FILES ADDKEY FILENUMBMORE NODEW P Q WORDN D BLDIR SOURCE SOURCOFFDESTINATDESTOFFSNUMBER BLDDR READW F IX WRITEW OPNIDX OLD I CLSIDX FLADDR GNODE LEVEL PTR A PNODE PT FNDKEY1 KEYPTR STATUS RECNBR COMPARE TPTR KPTR P1 NMAX Y NEXTPTR FOUND STOP FINDLEVEFINDPTR FINDSTATFINDNUM FNDKEY LFTBTM NXTKEY RGTBTM PRVKEY FNDFST FNDLST NEWPTR N INSKEY DUMSTAT DUMREC NPTR INSNR INSPTR QQ DELKEY SIBL NBRN NBRS NBRP P2 P3 P4 DELPTR DELLEVELRLSNOD  ==8===*?@=?A=A@=, ?@0u===N='==R ?=5==R ?=O===========================2, ??==; $O H==9  H=;  H=; ==== H=; ==== H==; $$ =-==U =@=U ===; $ =-= @=V =@=V ===9  O=$O===-=+ =-=~ )=-=? ? =} =a  =^ =)=-=  =  =  =  =  ==&=-=?=?=?=?=?==?=?=?=?=-= ? ====&=Z D Open-error =~ ====;  =-=+ =-=c ? =  =  =  =  =  =d ====9  N=-=?  ?  ? ===;  =$==-=+ =-= ? =  )=-=  = ?? =c   =??=-= =U ======;  =$==N==-=+ =-= ? =   =??=-=c  = =V =?=====9 qO===$=$=9   O=$=O======-=J=+ =-= ?  ? )=-=J=?=?= ? =n ? =6=?=? ? = ? ==6=  =?=?=0 ?  == ?)=-=?=?====== ? = ? )=-=? ? =  =?=  ==&=K=0=  ? )=-="q)=-======  ==K===&=-=?=?===Y ? ====9 ==$=$=9   O=-= J =====;  =-=+ =-=?=6=?=  =? ? = ?? = ? =0?====9 $ O=$=O=-=J=+ = ?)=-=?= ? = ?)=-= ? =?= ? =  =K==&=-=? ? =  )=-=?=K==&=-=1 ? "=-=?= ? = ?  ? )=-=K= ? =====)=-=?= ? ? ?  ? =  ==&=?=====;  =$=-=+ =-=6=?=  =? ? = ? = ?  ? = ? = ?)=-=?= ? ==0?====9 $ O=$=O=-=J=+ = ?)=-= ? = ?)=-=? ? =  =  =K==&= ?)=-=?=K==&=-=? ? =1 ? "=-=?== ? = ?)=-=?=K====)=-=?= ? ? ?  ? =  ==&=?=====9 $ O=-=+ =-= ?)=-=?=  =?=  ==&=?= ? ====9 $ O=-=+ =-= ?)=-=?=  =?=  ==&=?= ? ====9  =$=-=+ =-=?)=-=?===&=-==c   ==U =@==?=====9 ===9   O=$==O===-=+ =-=?== K  =    )=J=&=-=n ? =K= ?)=-== ?? ==  = ?? =6=  =0"==&=-=?=?=?=?=?== ?? == ? = ?? = ?? = ? = ? ? = ? ===?==========9  O==$====;  =-=+ =-=c   = @=V =c   ? =@=V ==?====-=+ = ?)=-= ? ?)=-===  ? ?? =  ? == ? ==  == ? = ? == ?=   ? ===?= ? =1 ?  ? =-=======? ? == ? ==== ? ?  ? ?== ?  ? )=-= = ? == ?? ===?= ? = ? )=-= ? ?== ? ====?= ? = ? === ??=  ?  ? ===?= ? ==&=-=  ? =?== ??? === ? ?= ?  ? ? ===?= ? =  =?===&=-=J?== ?? ? === ??? ===?= ? = =  = ? = ? )=-== ? ?== ??? == ?? ===?=?=  = ?=  ? ?  ? ? ===?= ? ==&=-= ? =? ? === ? ?  ? =?? ===?= ? =  =?=== ? == ? ===  =?== ? == ?)=  =&=-= = ? =?== ? ====?=K==&=J=====-=<JKKLLMMNNOO