NNNNNNp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNMV@`  @`! #@%+-/1 3;=?AKM@`  @`! #@%+-/1 3;=?AKMCPMZ80 TOSt EMUIO PRGt &EMUIO S t 'DOCUMENT *t )`D)b#.|Zaa  <Z"<Z$<Laa < Ra aZa a P?<NA$RTltLNna < a aa aa6*|aaNuNu<gjSgSg^`<g`SgSgT`A<gbSgSgV`A<gFSg`A<0g0Sg`< g`4<gSg`,|Z*|BAAA"|zC=a J^g=a"Jg< A"(g=aZ`=a"Jg A" (g <Nu <NuBNu$_$,|Z*|=ajJ^g kH=a` ==a@8j&at8ja8=aJ^f===aJ^f==-aLQNuPNu,|Z*|=aJ^g kX=a` ==a:j&a:ja2:=aJ^f,===aXJ^f==-aB<f =anJ^fQNuPNuNu <NuVersion 6 for ATARI TOSBB/<?<?<KNAOJk @"| ("\@#@ NuBNuEMUIO.PRG?<NAT ||| Nu yAB@B0 NuaRNuNu 9gPNua6Nu | 9f(/a, _JjN|B92HAJ0gB@92HAABA90RfNuNu9gSgNSgaNu<faNuJk | lBA9IA|A0aNu<YfaNu<bg<cfaNuaNuavNu|H@ | AHhHhHP?<NNONu @"|0<P"QNuHA0<<PQBmLNuH0A2<<fPQLNuH0ABA4<BCf=a ^PRABf=LNuH20ABB6<hfgPRBCf=<` 1mRm=LNuHAB@2<<g PR@Af0<=LNuHA0-BA4hBCP8<RADg:hBc46P`=L?NuH4206AA8==-aJ^f$JAA 1AQ1mRm=<`=<LNuH02IAAJ(g"CCS=(- anJ^f Q=<`=<LNuH"^B20ЁAA f&H?8LHLH,L H XL` 0<QLNuH ^B204JCP ЁCC f&H8LHLH,L H XL` 4<QLNu |z0<r QNuH0=a"J^g0BAAA"|zC=a"Jg A"(g"=<`Bf`=/?<&NN\<a <fa<a<wa<a<EaNu |D0Nu @g /a _`Nu< a< aNuPlease change to CP/M-Z80 disk and press any key Please change to ATARI TOS disk and press any key A|?@00N&46>>>>>>>>>>>>>>>>>>>@HJRRRRRRRRRRRRRRRRRRRRRRRRRRRRR?< NATNu?/?<NAXJ[NuNu/?Bg??<?NAO 2J[Nu/?Bg??<@NAO 2J[Nu/?<NA\Nu?/?<NNAPJ@VNu?<ONATJ@VNuNua2NuNuaNuNu aNuNu1234567890-= qwertyuiop[] asdfghjkl;'`\zxcvbnm,./ -+()/*7894561230. 3!@#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:"~|ZXCVBNM<>? -+()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`\ZXCVBNM,./ -+()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1234567890-= qwertyuiop[] asdfghjkl;'`#zxcvbnm,./ -+\()/*7894561230. 3!"#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:@~~ZXCVBNM<>? -+|()/*7894561230. @1234567890-= QWERTYUIOP[] ASDFGHJKL;'`#ZXCVBNM,./ -+\()/*7894561230. 3  !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}&{"'(]}!\@)- azertyuiop^$ qsdfghjklm|`#wxcvbn,;:= -+<()/*7894561230. "1234567890[_ AZERTYUIOP~* QSDFGHJKLM%#|WXCVBN?./+ -+>()/*7894561230. 3&{"'(]}!\@)- AZERTYUIOP^$ QSDFGHJKLM|`#WXCVBN,;:= -+<()/*7894561230. "  !"$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop}+ asdfghjkl|{#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP]* ASDFGHJKL\[^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP]+ ASDFGHJKL\[#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz1234567890~' qwertzuiop|+ asdfghjkl[]#~yxcvbnm,.- -+<()/*7894561230. 3!"@$%&/()=?` QWERTZUIOP\* ASDFGHJKL{}^|YXCVBNM;:_ -+>()/*7894561230. @1234567890~' QWERTZUIOP|+ ASDFGHJKL[]#~YXCVBNM,.- -+<()/*7894561230. 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`^CP/M-Z80 Emulator Copyright (85) SoftDesign Munich Release 8.4 Serial number 101009 Atari Nyyo_2Vyl# \vGJ9J? >< upF8&:GA8"k8$G@NqG8՛ <xѭXg`.:Nu*@,A+_ B"HE0<2G$Qa @"N0<"Qa @"N0<"Qa @"N0<"QA`"HE80<2G$QH mNL` @"NBJgEg R<fBA"N`&.>N<^lH mNL` @(@hH mNaL`H mNL`Jg @+X0+P4C< a^` A+H0+H4H mNL``.HaJL` @"N0<"QH mNL`HaL`|||||nNu. mNNu. mNNu.- mNNu.- mNNu.- mNNu. mNNuBm mNNuBC-<bABD00<g.-ffH mNL`Jg`??a86`@-<ea`>H mNL`Jg*??a86R-A0CL|:NuBUNu;mNu;mNu;mNu-2-4-B6-֎ mNNu--2-4-B6-֎ mNNu. mNNu0-B2-Ҏ mN:Nu`-2-4B6-֎B8-؎ mN:NuA<2<QB-Nu @|BN|4ChBB<|^2<N|^2<N|^2R<(^(VxlFD Pc<><Gc<.<毼Gc<Pg>< (nH2arLSF^2:(<SF^2VEMDm|nFF2J(fBF`<(VFN|@c<<@^2<(^2Nu?Af a<Aa@A aNu??AB a0<AaAM a0<0aAC aNu7-l|5 UrHA@ aAM aL @/H@a$< aLSAfA3 ad _0a&AP aP mN-tQ}84} štjWQuM,$<K9AprfԘ`QTQ+B <ѭ\`|A0A Nu`U A0A Nu`aA0A Nu`n/aA a0<aA aaA a0<a a|aA an0<aA a^alNuAHz|0H arL0QNuA"8z\|0H aLL0QNu0123456789ABCDEF @g/a( _`Nu< a< aNuJg?0< a0S`Nu.H mNL`Nu Emulator warning => Drive : cut to MByte ! : not logged in - too many drives Emulator error => Illegal opcode : at address : Emulator I/O driver installed Emulator exit G2Ixa ta@$NBBBBBBBB@23N  4Dh$8Hl2Vfx ,Pb`,Ph 4LZz   . > P \ n   * > N ` r   " 2 D R d v   * < P x  4 b Hj Bv 8fLh @t.F^t $<Vr2LfDZ:f Tr F\&R0^|*>l2h.Lx,@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23N-A-A-A-mA-A-mA-A2<-;A@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NU@23NS-gH@23NR@23NYY@23N2-@23NRm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NH@23N2-UU@23N2-6@23NSm@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NDU@23NJgR@23NH@23NY@23NY@23NRU@23NRYW[<W|@23N<WSYW[Œ|@23N@23N<<JFk2< bJg\<bJgL<`P`D\<bJg8<`P`0< bJg]<bJg<`P`]<bJg<`PJ[W@23NJfR@23NH@23NU@23NYv@23NSU@23NR-YW[-<W|@23N-<WS-YW[Œ|@23NY@23NFx|@23NJgR@23NH@23NYE@23NY@23NR@23N2R6YW[6<W|@23N26<WS6YW[Œ|@23N2@23N<<@23NJfR@23NH@23N" UU@23NY6@23NS@23NRYW[<W|@23N<WSYW[Œ|@23N@23NF@23N@23Nm@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23N@23Nm@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23N@23Nm@23NU@23Nm@23N2v@23NG@23Nm@23Nm@23Nm@23N@23NU@23Nm@23N2v@23NG@23N@23N@23N@23N@23N@23N@23N2@23N@23Nm@23Nm@23Nm@23Nm@23NU@23N@23N2v@23NG@23N2@23N2@23N2@23N2@23N2@23N2@23N@@ u8H~NL~|rB@@23N2@23N-@23N-@23N-@23N-@23N@23N-@23N26@23N@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N[WYUƀ<<U|B@@23N-[WYUƀ<<U|B@@23N26[WYUƀ<<U|B@@23NV[WYU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23ND[YUJWÀ<<DU|B@@23N-D[YUJWÀ<<DU|B@@23N26D[YUJWÀ<<DU|B@@23ND[YUJWV|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N[WYU<<UČ|B@@23N-[WYU<<UČ|B@@23N26[WYU<<UČ|B@@23NBQvQQ<<B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23NDğ[YUJW<<DđUČ|B@@23N-Dğ[YUJW<<DđUČ|B@@23N26Dğ[YUJW<<DđUČ|B@@23NW|B@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NJ[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NBQvzQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N-[WQB@@23N[WQB@@23N-[WQB@@23N26[WQB@@23NJ[W4pQB@@23N-[WYUB@@23N-[WYUB@@23N-[WYUB@@23N-[WYUB@@23N[WYUB@@23N-[WYUB@@23N26[WYUB@@23NQvQQB@@23NJgB@@23NYCB@@23NZZB@@23NJgTB@@23NYCB@@23NYCB@@23NJgTB@@23NY0 CXB@@23N--B@@23N[WYUƀ<<U|B@@23N0 X"NB@@23NJfB@@23NYCB@@23NYCB@@23NJfTB@@23NYCB@@23N mB@@20NJfTB@@23NY0 CXB@@23NY0 CXB@@23ND[YUJWÀ<<DU|B@@23N0 XCB@@23NJgB@@23NYCB@@23NZZB@@23NJgTB@@23NYCB@@23NH?H~ m4NL~LrB@@23NJgTB@@23NY0 CXB@@23N--B@@23N[WYU<<UČ|B@@23N0 XCB@@23NJfB@@23NYCB@@23N *+@0-;m ;@ B@@23NJfTB@@23NYCB@@23NH?H~ m0NL~LrBGB@@23NJfTB@@23NY0 CXB@@23N m B@@20NDğ[YUJW<<DđUČ|B@@23N0 XCB@@23NJgB@@23NYCB@@23NZB@@23NJgTB@@23NYCB@@23N-ZB@@23NJgTB@@23NY0 CXB@@23N-B@@23N[WQB@@23N0 XC B@@23NJfB@@23NYCB@@23N2CB@@23NJfTB@@23NYCB@@23N0-;U:B@@23NJfTB@@23NY0 CXB@@23N m$B@@20N[WQB@@23N0 XC(B@@23NJgB@@23NYCB@@23NUUUUUUVUB@@23NJgTB@@23NYCB@@23NB@@23NJgTB@@23NY0 CXB@@23NB@@-@@-@@JF[@B@@23N[WQB@@23N0 XC0B@@23NJfB@@23NYCB@@23N2EB@@23NJfTB@@23NYCB@@23NB@@23NJfTB@@23NY0 CXB@@23N m(B@@20N[WYUB@@23N0 XC8B@@23NA+HA+H$Nu8Tp*F^z$>\| $Bbx,@\x p p p p p p p p2Nj(<Nbx  ( < P d x   ( < R d x   * > R d x   , > P b t   . B X j ~ 0DXj~2DXl 2DXn 2FZn 2HZn  4HZn "4H\p"4H^p"6J^p-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N-D[WUA@23N-D[WUA@23N-D[WUA@23N-D[WUA@23ND[WU@23N-D[WUA@23N26D[WU@23ND[WU@23N-D[WUA@23N-D[WUA@23N-D[WUA@23N-D[WUA@23ND[WU@23N-D[WUA@23N26D[WU@23ND[WU@23N--[WU@23N--[WU@23N--[WU@23N--[WU@23N[WU@23N--[WU@23N266[WU@23N[WU@23N-[WUA@23N-[WUA@23N-[WUA@23N-[WUA@23N[WU@23N-[WUA@23N26[WU@23N[WU@23N- [WUA@23N- [WUA@23N- [WUA@23N- [WUA@23N [WU@23N- [WUA@23N26[WU@23N[WU@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23N-W@23N-W@23N-W@23N-W@23NW@23N-W@23N26W@23NW@23NJ-Z@23NJ-Z@23NJ-Z@23NJ-Z@23NJZ@23NJ-Z@23N2J6Z@23NJZ@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N< B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<@B@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N2B@@23N<B@@23N *Xz "B bn Hv ( Bb   :d L | $Z  * ` -H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[YUJAW:@23NY@23ND[WYU<VČ|@23NG@23N-H~ m0NL~r@[WB@@23N-H?H~ m4NL~LrB@@23N4-D2B[WYU:@23NYvv@23N@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[YUJAW:@23NY@23N-[WQ@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N4-D2B[WYU:@23NYvv@23NHI@<[WQ@23N-H~ m0NL~r[WB@@23N-H?H~ m4NL~LrB@@23NHVWVV:@23N2_6_B_@23N-H~ m0NL~r@[WB@@23N--H?H~ m4NL~LrB@@23N2DA[WYU:@23N2_6_B_@23N$ D2B[YUJAW:@23NYA" Y@23N-H~ m0NL~@rBG[WB@@23N-H?H~ m4NL~LrB@@23N$ D2B[WYU:@23NY66YE@23Np02-RURmSmVB@@23N26[WRUSmVB@@23N-H~ m0NL~r2RUS-WB@@23N-26H~ m4NL~rRUS-WB@@23Np02-SUSmSmVB@@23N26[WSUSmVB@@23N-H~ m0NL~r2SUS-WB@@23N-26H~ m4NL~rSUS-WB@@23Np02-:-SER@RAQ:;ABmBEB@@23N20-S@SARA6W[WgR@J@VRA:;@B@@23N-H~ m0NL~r2RUS-fvB@@23N-26H~ m4NL~rRUS-fvB@@23Np02-:-SES@SAQ:;ABmBEB@@23N20-S@RASA6W[WgR@J@VSA:;@B@@23N-H~ m0NL~r2SUS-fvB@@23N-26H~ m4NL~rSUS-fvB@@23N Ur`DA+H A+H(A B+H,Nu,@`p "8Rl :RlF"8Zp2-mU@23N2-mU@23NYY@23NY@23NRm@23NU@23NYvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6@23NHm6[WYUƀ<<U|B@@23NHm6D[YUJWÀ<<DU|B@@23NHm6[WYU<<UČ|B@@23NHm6Dğ[YUJW<<DđUČ|B@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `,@` ` ` ` ` `p ` ` ` ` ` ` ` ` ` `" ` ` ` ` ` ` ` ` ` ` ` `8 ` ` ` ` ` ` `R ` ` ` ` ` ` `l ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` :R `l ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `H ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `$ `: `\ ` ` `r ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `2-mU@23N2-mU@23NYY@23NY@23NRm@23NU@23NYvv@23NSm@23NHmR6YW[6<W|@23NHm6<WS6YW[Œ|@23NHm@23N" mU@23NHmv@23NHmv@23NHmv@23NHmv@23NHm@23NHmv@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm@23NHm6B@@23NHm6[WYUƀ<<U|B@@23NHm6D[YUJWÀ<<DU|B@@23NHm6[WYU<<UČ|B@@23NHm6Dğ[YUJW<<DđUČ|B@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WQB@@23NHm6[WYUB@@23NHm m,B@@00NZZB@@23N--ZRB@@23N--B@@23N2-CB@@23N2-EB@@23N<\|,BXn"6J^r6[WUB@@23N6[WUB@@23N6D[WUB@@23N6D[WUB@@23N66[WUB@@23N6[WUB@@23N6[WUB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23N6WB@@23NJ6ZB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23NB@@23N Ur`$ Yr`ÈÎ2X21y2 O:ڷ(J:X y( :<2X1:_ͩ:A>:̀:ڷ(!"|r;(!{(:'($:( :'=(_O:2!_~#fo!H~G*|r=(#"|:I :H %(x(({G:( :' (x(-({G:( (x(&!I(  !(I !"i-ܷ !' > q#  Si!( I - x !H'  >' >!H#K >!'"oܷ͢ ܷܷ(>H[o˃ ݯ[i!"k'ѷ *k#"k!!٧R0گ[i*k|( Hѷ *k+"k!ٯ >>! j? A:w+>2q2q{!"x"v!"r!(~ >? w#>?2325:'(=_"m'(2q:q! /z [*x#"x{ *x| > 2z!"tͳ|( ͳ|( 06*x~!ͼ*v=~!ͼM=~!ü!Kry x(  # !*m#[r ~͑Sr*m~͑ w#4  ~#(  ~##( y[tKr`iR! (St: > > K ^#V*v"v=~>K:z<2z*m~G)*mNF!~ # x( 0#{ !ͼ_Y' > q#K:'w' {('({ '!~ ѷ(o{(:( (' > &)|("'(>  +'{(!'7*|r=(#"|{(!':7( ~27 ~(:7w' > 7(> '(⇇W:2*0!0~ (6C#6O#6M'  '('ѷ !!ڧR0> *|!\~!l~2|~# x2:X(O(A:=2 / ("!!6#5!ͼ  !F(#~a8{0_w#p!X~6ɷ=O!* ~#foͼ*~~ ( (#>?ýڷ (!,.:;<=>[]~ #!'6*|r"~(@G:(p.(#6"| #~?  yL(#* 6?wL#6 !y ( # y7# {'( (!0 ((o ()DM)) |(}~#>.~#ɇO!  -`ix > { 00:8>1 ~#> > _(! 6! 6! 6! 6:_ l&!A}g R06BJ\wFile existsNo fileProgram too largeSource same as destinationDisk fullDirectory fullAll (y/n)? Files,K Bytes,K Bytes freeCOPYDIR DIRSERA EXITGO REN SAVETYPEUSERH>7yKj $$$ SUBCPMZ80S{2!"s122!Sy)Ko&)F^#V*17Y_ds\aPlu{0!ffB!0O(U_A JR >I ![O(#_A R !!~:A2,ffCPMZ80 Error on drive : $Bad sector, (R)etry (A)bort or (I)gnore ? $Select failed, (R)etry or (A)bort $File is read only $Disk is read only $:{ %   (!z~/w2{>  Oc!{~6 y  :x ͤ :z!xy 84 ~5 6cy<(< !{~6cn c:c!qKB $O*##"|2~:x2y (  !z~/w :x!yOF*|w#"|!~4 0 (^@O :~ O*:~…*#:~w :~=2~G*|+"|~ 0& !(+~ 0 ( :yOyDO  ͤ>"2>:O| * ^#VS#"##"##"##**|!6(6*w#w*w#w'*  **  *""K*^#V*~#foyx0*{_zW+*8 yx8#[DM*s#r*s#ryOxG[0MD!!F:O>G:(* :(n& ^#V\Ow"*}:*)= ":O:o"* *!~2~2ͽ:2: O:w:w < ):O! yoxg*:O}K"U ~*"* *:o$*~`6`w[*{#zvr+sR[*͌[*w[*͌0v0[*(>ɯ*#͑!!N#F$*[!~#(: #~$ =2͓̓:c:/GyO>2!q*"͹(R*(v0BU:Oy($?(x ( ( N% # :2!~Яw>cK 6;U6͓KPYy( _0*{z0BK_0<͍y ! * UK 6*~w; K 6 K6ͽ~U[ o! N!Fwyx(>8>*w~#+w#w+ɯ222"`6U * :(~ w ~ 5͟͟ '# ! #  8 w ~>2!5K*!"6"! w##w#̓ o2ͭ* ~<w( G:!( $ 4~($6 :<(&( gcgo>2>2:!8 !X2: ͏͜( ͢g>22K*>:g͏͜ C\2(O wDM} >c"* ::([sO s#r:͢:== 9y== 2*w#*"*:G# ":!8w4`w : X!~ =262[!!~~#~O~G#n,-. W! w! y !x(4ͭ.:<(*! q!p^:< . (&.:<(c`6}2o̷N! ~态OxG~G!~G} 6*!r#r#r( U}_y#x#{8s+p+qK* }!!q#p#w:!w*:OE(kkK">2*~=20:2~2w:*w!"":2!"i$^$í~?(ͽ~?i$6*"$K$ͯ$ò$i$&$#*:c"**$H*": :c2$k$t$ê*}/_|/*W}_*"}o|g"$>2:(*6:( w:2{*}D9>CFILORUX[^adgjmpsvvvvvvvvvv v v v v vvvvvDIR A:DIR B:DIRS COPY TYPE ERA REN SAVE USER EXIT SCOPY TOSDIR TOSCPM CPMTOS TURBO MBASIC DBASE WS MP ZORK1 DL ^p$,  " ",f6>Z ``N NA"|@00NA0|@00N@@@@BP^lllllllllNNNNPdddddddddddNu?<?<NMXNu?<?<NMXNu?<?<NMXNuNuNu|??<?<NM\NuNu***************************************************************** * * * >>>>>> s o f t d e s i g n <<<<<< * * * * c p / m - z 8 0 e m u l a t o r * * * * z 8 0 i / o o p c o d e s u p p o r t * * * * 25.11.85 * * * * configured to access atari 520 st modem port * * * ***************************************************************** * input parameters: * z80 port address : d0.b * z80 port output data : d1.b * return parameter: * z80 port input data : d0.b .TEXT EMUIO: JMP INPUT JMP OUTPUT INPUT: LEA.L INPTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) OUTPUT: LEA.L OUTTAB(PC),A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.W (A0,D0.W),D0 JMP 0(A0,D0.W) INPTAB: .DC.W INP00-INPTAB,INP01-INPTAB,INP02-INPTAB,INP03-INPTAB .DC.W INP04-INPTAB,INP05-INPTAB,INP06-INPTAB,INP07-INPTAB .DC.W INP08-INPTAB,INP09-INPTAB,INP0A-INPTAB,INP0B-INPTAB .DC.W INP0C-INPTAB,INP0D-INPTAB,INP0E-INPTAB,INP0F-INPTAB OUTTAB: .DC.W OUT00-OUTTAB,OUT01-OUTTAB,OUT02-OUTTAB,OUT03-OUTTAB .DC.W OUT04-OUTTAB,OUT05-OUTTAB,OUT06-OUTTAB,OUT07-OUTTAB .DC.W OUT08-OUTTAB,OUT09-OUTTAB,OUT0A-OUTTAB,OUT0B-OUTTAB .DC.W OUT0C-OUTTAB,OUT0D-OUTTAB,OUT0E-OUTTAB,OUT0F-OUTTAB INP00: INP01: INP02: INP03: RTS INP04: MOVE.W #1,-(A7) modem port input status MOVE.W #1,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP05: MOVE.W #1,-(A7) modem port output status MOVE.W #8,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP06: MOVE.W #1,-(A7) modem port data input MOVE.W #2,-(A7) TRAP #13 ADDQ.L #4,A7 RTS INP07: INP08: INP09: INP0A: INP0B: INP0C: INP0D: INP0E: INP0F: RTS OUT00: OUT01: OUT02: OUT03: RTS OUT04: AND.W #$00FF,D1 modem port data output MOVE.W D1,-(A7) MOVE.W #1,-(A7) MOVE.W #3,-(A7) TRAP #13 ADDQ.L #6,A7 RTS OUT05: OUT06: OUT07: OUT08: OUT09: OUT0A: OUT0B: OUT0C: OUT0D: OUT0E: OUT0F: RTS .END . / t).. / tATAEMU DOC:t *'README BAKt 4<EMU DOCDt :README DOCTt 5UTILITY DOCKt I.PL 72 .. L-------!-------!-------!-------!-------!-------!-------!------R  S o f t D e s i g n CP/M-Z80 EMULATOR FOR ATARI TOS O V E R V I E W - Realtime emulatio o al Z8 instruction ove th ful 64 addressin range. - complet CP/M-8 versio 2. compatibl syste environmen an use interfac i implemented al CP/M-8 compatible programs ca b executed. - Th Emulato run averag CP/M-8 program wit th spee o a 2 MH Z8 system. - Th Emulato make an ATAR S system ac a CP/M-8 syste withou an hardwar o softwar adaptation - Z8 I/ opcode ar supporte b built-i interfac t use supplied drivers. ******************************************************* * * * (C) 85 S o f t D e s i g n * * Lichtenfelser Str. 29 * * D-8000 Muenchen 60 * * West Germany * * * * Tel.: 89 - 87 89 55 * * * ******************************************************* .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS E M U L A T O R I M P L E M E N T A T I O N -Th Emulato i completel writte i assembl languag an use th larg registe fram o th M 6800 t maximum. -Z8 opcod interpretatio i tabl drive t spee u executio time .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS C P M Z 8 0 C C P I M P L E M E N T A T I O N - Th Consol Comman Processo i CP/ 2. upwar compatibl bu enhance i man respects. - User Memory (TPA) is 58KByte ("63 K CP/M"). - Comman file no foun unde th curren use ar als searche under user 0. - A additiona COP comman allow th copyin o dis file wit PI lik operation COP show th name o th file bein copied. - Th DI comman show a sorted directory of disk files. It displays the siz o eac file th tota siz, th tota numbe o file and the amount of free space on the disk. - A DIRS command displays a sorted directory of system files. - Th ER comman show th nam o eac delete file. - Th REΠ comman allow th use t omi on driv specifi cation. - Th use ca exi t TOS b a EXI command. - Comman line startin wit "; ar ignore t suppor comment lines within submit files. - Submi processin ca b initiate fro an defaul driv. .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS C P M Z 8 0 B D O S I M P L E M E N T A T I O N - Th BDOӠ i CP/ 2. upwar compatibl wit man interna improvements. - Change disk ar automaticall detecte an newl logge in The infamous Control-C is no longer necessary. - O dis rea an writ error th use ca optionall abor or retry the operation or ignore the error. - Minor errors in version 2.2 of CP/M have been corrected. C P M Z 8 0 B I O S I M P L E M E N T A T I O N - Th BIO function ar directe t 6800 routine whic us th TOS BIOS. - Al physica I/ device implemente unde TO ar accessibl unde CPMZ80 Th printe por i mappe t th CPMZ8 LST: device th TTY devic correspond t th mode port th flopp drive ac a A an B drive unde CPMZ8 an th CON: device accesses the keyboard and screen of the ATARI ST. - full implemente CP/ 2. compatibl I/O-Byt allow th user to change the logical to physical I/O device mapping. -The CPMZ80 Emulator system needs no installation. .PA S o f t D e s i g n CP/M-Z80 Emulator for ATARI TOS P E R F O R M A N C E -Performanc varie fo differen programs On majo facto i th frequenc o dis access Program wit heav dis I/ ma ru eve faste tha o Z8 hardwar becaus th ful dis spee o th hos syste i availabl t emulate CPMZ8 O th othe han extensiv arithmeti computation slo dow th Emulator. - Th tim rati (Emulator/Z80 betwee th Emulato o MH 6800 syste an MH Z8 syste wa measure fo som CP/M 2.2 program : extreme values: 0.6 and 6.0 average: 2.0 .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS I N V O C A T I O N To start the Emulator, simply type on the command line: "CPMZ80 " or "CPMZ80 " The CPMZ80 EMULATOR displays the prompt: "Please change to CPMZ80 disk and press any key to continue" Remove the TOS disk, enter a CPMZ80 disk and press a key. Th firs commandlin put yo i th comman mod o CP/ 2. syste exactl a yo ar use t wit an Z8 hardwar CP/ system I yo specif th optiona CP/M-8 commandline thi comman i directl execute b th Emulator O startup th defaul driv i se t th sam driv a unde TOS complet CP/͠ 2. compatibl syste environmen i implemented Th CC use interfac supplie al built-i command (DIR ERA REN SAVE TYPE USER an loading/executin o program (.CO files) Additionally COP allow t cop file an DIR show director o syste files EXI ha bee adde t provid convenien wa bac t TOS. Th BDOӠ syste interfac i totall compatibl t CP/͠ 2.2 Ful implementatio o th BIO interfac permit applicatio program t us direc BIO acces (eve dis related). .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS ɠ ύ specia interfac i provide t lin 6800 hardwar I/Ϡ t Z8 programs use supplie I/ drive ca optionall b activated Whe th Emulato i started i look fo th fil 'EMUIO.PRG' Th Emulato trie t ope thi fil an loa it I th fil wa loade successfully th I/ drive i activate an th message "Emulator I/O driver installed" i shown I hardwar I/ drive canno b found Z8 I/ opcode i emulate program lea t th message "Emulator error => Illegal opcode : XX XX at address : XXXX" and the Emulator is aborted. .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS G E N E R A L R E S T R I C T I O N S Th Emulato doe no suppor an undocumente Z8 opcode o hardwar dependan opcode suc a interrup control I th Emulato find suc opcode i emulate programs i abort wit th message: "Emulator error => Illegal opcode : XX XX at address : XXXX" .PA S o f t D e s i g n Operation of the CP/M-Z80 Emulator for ATARI TOS D E M O V E R S I O N R E S T R I C T I O N S Th dem versio o th Emulato show "Demo i th signo message I i fo demonstratio purpose onl an ha bee modifie i th followin aspects: - The signon message appears at every warmstart. - Disk write access is disabled. - Input/Outpu o th logica device LST: PUN an RDR i ignored. .PA S o f t D e s i g n Optional I/O opcode support I / O D R I V E R C O N V E N T I O N S I use drive i activated th Z8 I/O opcode ar directe int thi driver Th drive ha t b use code 6800 progra wit th followin conventions - Th drive cod mus begi wit tw jum instructions Th firs jum i use b al inpu request an th secon b al outpu requests. - Thes jump lea t th use inpu an outpu servic rou tines Thes routine terminat wit Retur fro Subroutin RT instruction. - Th inpu routin receive th Z8 por numbe i th lo byt o registe D an mus retur th inpu valu i th lo byt o D0 - Th outpu routin receive th Z8 por numbe i th lo byt o registe D an th outpu valu i th lo byt o D1. - Al register ma b use withi th use driver. - The user driver must be supplied as a TOS ".PRG" file. .PA S o f t D e s i g n Optional I/O opcode support U S E R I / O D R I V E R E X A M P L E Thi simpl 6800 cod exampl show ho t acces 1 contiguou I/Ϡ port fro startaddres $FFFF8 throug $FFFF9Ơ o od addresses Fo exampl th Z8 instructio I A,(07H i a emulated program would read a byte from 68000 address $FFFF8F. .TEXT IOBASE: .EQU $FFFF80 IO: JMP INPUT JMP OUTPUT INPUT: MOVE.L #IOBASE,A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.B 1(A0,D0.W),D0 RTS OUTPUT: MOVE.L #IOBASE,A0 AND.W #$000F,D0 ADD.W D0,D0 MOVE.B D1,1(A0,D0.W) RTS .END 0660103030566 9[....................................................] TheCP/MEmulatorconsistsoftwodiscs: CP/MEmulatorDisk1 CP/MUtilitiesDisk2 ThisEmulatoriscurrentlybeingissuedtoAtariDealers. AtariDealersareauthorisedtoduplicatethisproductandgiveto theircustomerswhohavepurchasedanAtari520ST. Pleasenotethefollowing: ThissoftwareenablesyoutoemulatetheCP/Moperatingststemon yourAtariSTcomputer.Inaccordancewithapplicablecopyright Laws,wemustdrawyourattentiontothefactthatsoftwaremay notbecopiedwithouttheexpresspriorwrittenauthorityofthe owner.Youmayalsoneedtocomplywiththerestrictionsimposed uponyoubysoftwareownersinconnectionwiththeapplicationof theirproducts. rt] Input a byte from port >>L [startadr] [endadr] List disassembled code > M[V] startadr endadr zieladr Move memory [and verify] >>O [byte] [port] Output a byte to port > Q[J] startadr enThe CP/M Emulator consists of two discs: CP/M Emulator Disk 1 CP/M Utilities Disk 2 This Emulator is currently being issued to Atari Dealers. Atari Dealers are authorised to duplicate this product and give to their customers who have purchased an Atari 520ST. Please note the following: This software enables you to emulate the CP/M operating ststem on your Atari ST computer. In accordance with applicable copyright Laws, we must draw your attention to the fact that software may not be copied without the express prior written authority of the owner. You may also need to comply with the restrictions imposed upon you by software owners in connection with the application of their products. IY oder Y , SP oder S , PC oder P , I Flags des F- und des F'-Registers: S Sign Vorzeichen Z Zero Null H Half carry Uebertrag von bit 3 nach bit 4 V oVerflow/parity Ueberlauf/gerade Paritaet N Negation NEG, DEC, SUB o.ae. ausgefuehrt C Carry Uebertrag von bit 7 E interrupt Enabled das Interrupt flag wird im DDTZ wie ein Flag des F-Registers behandelt. Variablen und Konstanten: L Low Benutzerspeicher-Anfang. Festwert 100H H High Hoechste Adresse der letzten gelesenen File M Max Maximale Adresse aller gelesenen Files T Top Oberes Ende des Benutzerspeichers @ Displacement Register $ beim Assemblieren Anfangsadresse des Befehls sonst = PC Y0..Y9 frei verwendbare Variablen ^register Inhalt eines Registers (adresse) Inhalt eines Speicherplatzes (Byte) (adresse). Inhalt eines Speicherplatzes (Wort) Aufruf des DDTZ: DDTZ oder DDTZ d:filename.ext Bei beiden Aufrufen laedt das Disk Operating System das DDTZ bei Adresse 100H beginnend in den Speicher. Das DDTZ verlagert sich danach direkt vor das BDOS und ueberschreibt dabei den CCP. Der Adressteil des Befehls JP BDOS auf Adresse 5 wird erniedrigt, um dem Anwenderprogramm die durch das DDTZ verringerte Speichergroesse mitzuteilen. Der urspruenglich vom DDTZ belegte Speicher wird daraufhin mit Nullen geloescht. Wurde im Aufruf ein Filename angegeben, so laedt das DDTZ die File in den Speicher. Nach Ausgabe des Prompt-Zeichens '>' ist das DDTZ betriebsbereit. Allgemeines zum Gebrauch des DDTZ: Ausdruecke: In allen Situationen, in denen Zahlen eingegeben werden koennen, ist auch die Eingabe von Ausdruecken erlaubt. Ausdruecke haben die Form arithmetischerausdruck oder arithmetischerausdruck relationsoperator arithmetischerausdruck Die relationsoperatoren sind = <> > >= <= < Der Ausdruck hat den Wert -1, wenn die Relation wahr ist, sonst 0. z.B: der Ausdruck 1+2=3 hat den Wert -1, und 'A'<'B' den Wert 0 Ein arithmetischer Ausdruck hat die allgemeine Form faktor arithmetikoperator faktor arith... faktor Die Arithmetikoperatoren sind + - * / % Plus, Minus, Multiplikation, Division, Modulo & ! # bitweise AND, OR, XOR Ein Faktor hat die Form [ausdruck] geklammerter Ausdruck +faktor -faktor Negation ~faktor bitweise NOT 'a' Wert eines ASCII-Zeichens 'a'. mit gesetztem Bit 7 'ab' Wert zweier ASCII-Zeichen 'ab'. das niederwertige mit gesetztem bit 7 (ausdruck) ein Byte im Speicher (ausdruck). ein Wort im Speicher variable eine der oben aufgezaehlten Variablen hhhh[H] Hex-Zahl ddddd. Dezimal-Zahl bbbbbbbb"bbbbbbbb" Binaer-Zahl (beliebig mit '"' unterteilt) Enthaelt ein Ausdruck einen Relationsoperator, so werden erst die beiden arithmetischen Ausdruecke berechnet und dann die Relation. Ein arithmetischer Ausdruck wird von links nach rechts berechnet, also ohne Beachtung 'Punktrechnung vor Strichrechnung', die Reihenfolge kann jedoch mit Klammern '[' und ']' geaendert werden. Ausdruecke duerfen keine Blanks enthalten. Befehle: Befehle beginnen mit einem der Zeichen '@' bis 'Z', eventuell gefolgt von weiteren optionalen Buchstaben, sowie Argumenten. Wird eine optionale Anfangsadresse weggelassen, so wird die Adresse benutzt, bei der Befehl zuletzt beendet wurde. Wird eine optionale Endadresse weggelassen, so wird der Befehl (z.B. L oder D) so lange ausgefuehrt, bis etwa ein Bildschirm vollgeschrieben ist. Ein weggelassenes optionales Argument, hinter dem weitere Argumente angegeben werden sollen, muss durch ein Komma ersetzt werden. Zwischen zwei Argumenten muss ein Blank, ein Tab (^I) oder ein Komma stehen. Bei Befehlen, die eine Start- und eine Endadresse erfordern, kann anstelle der Endadresse auch der Buchstabe 'S', gefolgt von einer Laengenangabe verwendet werden. z.B. bedeutet D 1000 S 100 oder D1000S100 das selbe wie D 1000 10FF oder D1000,10FF GERD HILDEBRANDT, HERBERT THIESS S O F T W A R E Z 8 0 O N 6 8 0 0 0 ----------------------------------------- TO ENCOURAGE THE TRANSITION TO POWERFUL 68000 16 BIT HARDWARE A Z80- AND CP/M-EMULATOR BRIDGES THE SOFTWARE GAP. A PURE SOFTWARE EMULATION PROVIDES A COMPLETE VIRTUAL Z80 CPU UNDER THE CP/M 2.2 OPERATING SYSTEM. The micro-revolution currently is on the move from the 8 bit to the 16 bit generation. In the 8 bit generation the Z80 is the microprocessor with the biggest market share, its instruction set is upward compatible with the 8080/8085 microprocessors. With millions of microprocessors of this family in use, one operating system was quickly established as a standard: CP/M 2.2 from Digital Research. Supported by this wide acceptance, the largest software library of tools and applications could grow. Over the years, huge investments were spent in CP/M standard software, the development of specific applications and the training of users. These programs are now well tested and their users have become accustomed to them. With the growing demand for software flexibility, the limits of the 8 bit generation, especially the 64 K addressing range, were encountered. The first microprocessor of the new 16 bit generation, the Intel 8086, was quickly pushed into the market. Its instruction set and register structure were designed as an extension of the 8080/8085. So it was possible to transfer exis- ting programs easily to the 8086. The limitations of the 64 K addressing range were overcome, but a lack of orthogonality and addressing capability in the architecture remains. The successor 80186 was extended by some hardware-features, but the poor instruction set was retained. The same applies to the 80286 in its compatibility mode. The new 286 mode is hampered by design flaws on the chip. Other microprocessor developers did not insist on upward compatibility and took the chance to introduce new concepts of CPU architecture with their 16 bit generation microprocessors. Thus the 68000, even though it came late, is now established as an alternative to the 8086. The 68000 family was extended by the more powerful 68010 and the 32 bit processor 68020. Today the 16 bit micro market is mainly divided between two opponents: on one side the conventional 8086 family with a large software base and on the other side the advanced 68000 family with less software as yet available. In contrast to the 8 bit generation, in the 16 bit generation no microprocessor and therefore no operating system has become established as a stan- dard. The ongoing confusion about future trends leads to uncer- tainty for customers and blocks investment in both new hardware and software. A b r i d g e b e t w e e n Z 8 0 a n d 6 8 0 0 0 For users who will take the more innovative way to the 16 bit generation, SoftDesign of Munich have developed a tool to ease the transition: the CP/M-Z80 EMULATOR opens up the whole CP/M 2.2 software library for 68000 micros with CP/M-68K. Using the CP/M-Z80 EMULATOR results in various advantages: - Software tools and applications not yet available for CP/M-68K can be substituted by CP/M 2.2 programs. Thus assemblers, cross-assemblers, compilers for many languages, text-proces- sing, spreadsheets etc. become immediately available. - It is possible to take the step up to the 16 bit generation and continue using existing 8 bit software. Investments in existing software are not lost or wasted. - The advantages of modern hardware can be utilized by Z80 software. - A 68000 system with CP/M-68K can serve as Z80 software deve- lopment system without the necessity to keep 8 bit hardware. The CP/M-Z80 EMULATOR runs without adaptation on any 68000 computer with the CP/M-68K operating system vers. 1.1 or 1.2 and at least 95 K user memory (TPA). Usage of the EMULATOR is very simple: entering the command "CPMZ80" starts the EMULATOR and a complete CP/M 2.2 system with Z80 CPU is activa- ted. Even an experienced CP/M user will not notice that there is no Z80, but a 68000 CPU, working in the system. All CP/M 2.2 compatible programs will run without restrictions: WORDSTAR, MBASIC, DBASE II, MULTIPLAN, PL/I-80, BDS C, TURBO PASCAL, PASCAL MT+, MACRO-80, LINK-80, DDT, XSUB, SUBMIT, ZSID, DU, MOVEIT, MODEM77, ZORK, just to name a few... F a s t Z 8 0 e m u l a t i o n The emulation of a CPU in software is time consuming because it works in a similar way to an interpreter. Each operation of the virtual CPU is interpreted by a short code sequence of the emulating CPU. Emulation is specially difficult for peculiari- ties in the emulated CPU's architecture not found on the hard- ware CPU. For example it is quite complicated for the 68000 CPU to generate the Z80's Half Carry Flag and to compensate the re- verse order of the bytes in a word. However, the CP/M-Z80 EMULA- TOR is completely written in assembly language and gains its high speed by optimally using the large register frame of the 68000 CPU and table driven interpretation. Under the CP/M-Z80 EMULATOR average CP/M-80 programs execute with the speed of a 2 MHz Z80 CPU on a 8 MHz 68000 system. In practice the execution speed varies for different programs, an important factor is the frequency of I/O access. Programs with heavy disk I/O for example may run even faster than on real Z80 hardware. On the other hand intensive arithmetic computations slow down the EMULATOR. The following measurements for the execution time ratio between the virtual CPU and Z80 hardware have been taken: Extreme values : 0.6 and 6 Average : 2 To allow access to 68000 hardware I/O ports by Z80 I/O op- codes, a special interface has been provided. For that purpose the user may build a custom driver to map Z80 port addresses to 68000 I/O routines. If such a driver module is present, it is loaded automatically by the EMULATOR. Communication software can utilize these I/O capabilities to access modems and other data links. This eases the transport of existing CP/M 2.2 software to the 68000 system. I n t e g r a t e d C P / M - 8 0 The CP/M-Z80 EMULATOR includes a specially designed operating system upward compatible to CP/M-80. The user interface corres- ponds to that of standard CP/M 2.2 with some user friendly extensions and improvements. An additional EXIT command provides a means of returning to CP/M-68K. All physical I/O devices implemented under CP/M-68K (terminal, printer and other inter- faces) and all background storage devices (floppy disk drives, hard disks, tape streamers and RAM disks) are accessible from the emulated CP/M-80. An automatic configuration algorithm installs all these devices without user intervention. This leads to a transportability between CP/M-68K and the emulated CP/M-80. All files can be read and written under both systems. Compact implementation of the CP/M-80 system provides a large user memory (TPA) of 58 Kbyte. All system calls defined in CP/M-80 are fully implemented. P r o f e s s i o n a l t o o l The CP/M-Z80 EMULATOR is used by software professionals on many different CP/M-68K systems. The EMULATOR is a proven soft- ware product and is ready for immediate delivery. A free demo disk is available for evaluation without risk or obligation. Disks can be supplied either in 5 inch STRIDE or 8 inch single density format. Versions of the CP/M-Z80 EMULATOR for OS-9/68K and UNIX V are under development.  C P / M - 8 0 A U F D E M A T A R I 5 2 0 ------------------------------------------------ von Gerd Hildebrandt und Herbert Thie~ MIT DEM Z80 UND CP/M-80 EMULATOR KANN EIN ATARI 520 BENUTZER VON ANFANG AN EINE GROSSE AUSWAHL BEW[HRTER SOFTWARE NUTZEN. A t a r i a u f d e r n e u e n 6 8 0 0 0 W e l l e Lawinenartige Fortschritte in der Chiptechnologie haben zum Erscheinen einer neuen Generation von echten 16 Bit Mikropro- zessoren und hochintegrierten Speicherbausteinen gef}hrt. Erst in j}ngster Zeit erscheinen Mikrocomputer, die diese neue Tech- nologie mit hochaufl|sender Grafik und Maus kombinieren. Der Vorreiter auf diesem Gebiet war Apple mit dem MacIntosh, dem je- doch der Durchbruch wegen seines zu hohen Preises nicht gelang. Der neue ATARI 520 ST macht Rechenleistung und Speicherkapazit{t dieser neuen professionellen Generation zum Preis eines Home- computers verf}gbar. Beide Computer verdanken ihre enorme Rechenleistung dem Motorola MC 68000 Mikroprozessor, der sich immer st{rker durchzusetzen beginnt. S o f t w a r e h i n k t h i n t e r h e r Doch wo neue Hardware mit atemberaubender Geschwindigkeit aus dem Boden schie~t, kann die Entwicklung der entsprechenden Soft- ware nicht Schritt halten. Die Betriebssysteme der neuen Mikro- computer-Welle sind zwar komfortabler geworden, erfordern aber mit ihrer symbolischen Benutzer-Oberfl{che einen wesentlich h|heren Aufwand bei der Software-Entwicklung. So m}ssen Besitzer neuer Ger{te allzu h{ufig lange Zeit warten, bis die ver- sprochene notwendige Software auch wirklich erh{ltlich ist und fehlerfrei l{uft. F}r den ATARI 520 sind viele wichtige An- wendungsprogramme wie leistungsf{hige Textverarbeitung, Tabellenkalkulation, Datenbank und Kommunikations-Software noch nicht erh{ltlich. Auch f}r die eigene Erstellung von Soft- ware fehlt vorl{ufig eine Auswahl an Sprachen und andere wich- tige Entwicklungs-Werkzeuge. B e w { h r t e S o f t w a r e f } r C P / M - 8 0 Ein ganzes Jahrzehnt war notwendig, bis sich eine so umfassende Software-Bibliothek wie die f}r CP/M-80 entwickeln konnte. Heute sind CP/M-80 Programme ausgereift, weit verbreitet und preiswert erh{ltlich. All diese Programme sind nur auf den Z80 und 8080 / 8085 Mikroprozessoren lauff{hig. Der Maschinencode eines Z80 ist v|llig verschieden vom Maschinencode eines 68000. Deshalb kann ein 68000 Prozessor mit Z80 Programmen nichts anfangen. Viele Anwender und Computer-Freaks w}rden gern von ihrem Kaypro, Schneider, Apple mit Z80-Karte und all den anderen CP/M-80 Systemen zur neuen 68000-Klasse aufsteigen, m|chten aber nicht ihre komplette Software-Sammlung wegwerfen. E i n e B r } c k e z w i s c h e n Z 8 0 u n d 6 8 0 0 0 Der stolze Besitzer des neuen ATARI 520 steht vor der paradoxen Situation, seine extrem leistungsf{hige Hardware wegen Software- mangels nicht voll nutzen zu k|nnen und gleichzeitig vom gr|~ten verf}gbaren Softwareangebot abgeschnitten zu sein. Genau diese L}cke wird durch ein neues Programm der Firma SoftDesign in M}nchen geschlossen. Der SoftDesign CP/M-Z80 EMULATOR verwandelt den ATARI 520 in einen Z80 Computer mit CP/M-80 Betriebssystem. Die Bedienung dieses EMULATORS ist kinderleicht, er wird einfach als normales ATARI Programm gestartet und arbeitet ohne jeden Hardwarezusatz. Alle CP/M-80 Programme laufen unter dem CP/M-Z80 EMULATOR ohne jede [nderung durchschnittlich mit der Ge- schwindigkeit einer 2 MHz Z80 CPU. Das ist etwas schneller als auf einem APPLE II mit Z80 Softcard. Diese Geschwindigkeit konnte nur durch stark optimierte Programmierung in Assembler und maximale Ausnutzung der vielen Register und leistungsf{higen Addressierungsarten des 68000 erreicht werden. Jeder ATARI 520 Benutzer kann damit so ber}hmte Programme benutzen wie: TURBO PASCAL, WORDSTAR, MBASIC, DBASE II, MULTIPLAN, PASCAL MT+, PL/I-80, BDS C, MACRO-80, LINK-80, DDT, DU, MOVEIT, MODEM77 und ZORK. W a s i s t E m u l a t i o n ? Die Grundidee dazu geht zur}ck bis auf Alan M. Turing, einen englischen Mathematiker, der 1947 bewies, da~ man mit Hilfe eines geeigneten Programms jeden Computer dazu bringen kann, sich so zu verhalten wie ein beliebiger anderer. L{uft auf einem Computer ein Programm, das einen anderen Computer nach- bildet, nennt man diesen Simulationsvorgang Emulation. Seit vielen Jahren werden neue Rechner schon in der Entwurfsphase auf Gro~rechnern durch Software emuliert, noch bevor sie wirklich gebaut werden. Das Problem dabei ist, da~ emulierte Programme langsamer laufen als auf dem wirklichen Computer. Das liegt daran, da~ ein Emulator {hnlich wie ein Interpreter arbeitet, der jeden emulierten Maschinenbefehl durch eine kurze Befehlssequenz nachbildet. Erst die hohe Rechenleistung des 68000 Prozessors erm|glicht die Emulation eines anderen Prozessors auf einem Mikroprozessor bei gleichzeitig reali- stischem Zeitverhalten. I n t e g r i e r t e s C P / M - 8 0 Der CP/M-Z80 EMULATOR enth{lt ein speziell entwickeltes, zu CP/M-80 aufw{rtskompatibles Betriebssystem. Die Benutzerschnitt- stelle entspricht der des Standard CP/M-80 mit einigen benutzer- freundlichen Erweiterungen und Verbesserungen. Ein zus{tzliches EXIT-Kommando erm|glicht die R}ckkehr zum ATARI Betriebssystem. Auch ein erfahrener CP/M-80 Benutzer kann nicht feststellen, da~ als Hardware kein Z80- sondern ein 68000-Prozessor im System arbeitet. ]ber den Modemport kann mit weit verbreiteter CP/M-80- Software wie z.B. MOVEIT Kommunikation mit anderen Rechnern und mit Mailboxen aufgenommen werden. Die Druckerschnittstelle ist }ber den List-Kanal ansprechbar. Alle ATARI 520 Disketten-Lauf- werke k|nnen mit dem EMULATOR benutzt werden. Durch kompakte Implementierung des CP/M-80 steht mit 58 KByte viel Benutzer- speicher zur Verf}gung. Alle unter CP/M-80 definierten System- schnittstellen sind vollst{ndig implementiert. W a s b r i n g t ' s ? * Der Aufstieg von der Z80 Generation zur neuen 68000 Generation wird leicht gemacht. * F}r den ATARI 520 noch nicht verf}gbare Software kann durch Zugriff auf die CP/M-80 Programm-Bibliothek ersetzt werden. * Selbst entwickelte CP/M-80 Programme k|nnen ohne [nderung auf den ATARI }bernommen werden. * Der ATARI 520 wird zum Entwicklungssystem f}r Z80 Software. P r o f e s s i o n e l l e s W e r k z e u g Der CP/M-Z80 EMULATOR wird seit }ber einem Jahr auf vielen unterschiedlichen CP/M-68K Systemen professionell eingesetzt. Er ist ein unproblematisches Werkzeug f}r den neuen ATARI 520, auf das viele Anwender schon nach kurzer Zeit nicht mehr ver- zichten m|chten. Der EMULATOR ist ein ausgereiftes Software- Produkt und ist sofort auf ATARI Disketten lieferbar.  >>>>>>> S o f t D e s i g n <<<<<<< C P M Z 8 0 - E M U L A T O R F O R A T A R I T O S U T I L I T Y D O C U M E N T A T I O N The SoftDesign CPMZ80-EMULATOR includes a packet of 7 utility programs. These utilities are Z80 code and are running under the EMULATOR. INIT Initialize a CPMZ80 Applications Disk SCOPY Single Drive Copy Utility TOSDIR TOS Directory Display Utility TOSCPM TOS to CPMZ80 File Conversion Utility CPMTOS CPMZ80 to TOS File Conversion Utility EDTKEY Keyboard Layout Editing Utility SETKEY Keyboard Layout Definition Utility I N I T The INIT utility initializes a newly formatted TOS-Disk for use under the CPMZ80 EMULATOR. Disks used with the EMULATOR must be formatted under TOS first and then initialized with the INIT utility running under the EMULATOR. The drive containing the disk to initialize must be specified on the command line. The disk must be newly formatted for initialization. Initialized CPMZ80 disks cannot be written on by TOS. Syntax: INIT Examples: INIT A: INIT B: S C O P Y The SCOPY utility allows copying of CPMZ80 files on a single drive system. A file or group of files is selected by the command line parameter. The utility gives the necessary commands for the changes of the source and destination disk and echoes the name of each copied file. Syntax: SCOPY Examples: SCOPY *.* SCOPY *.PAS SCOPY DU.COM T O S D I R The TOSDIR utility displays the TOS directory of a disk. An ambiguous file specification may be specified. If no drive is specified, the directory of the current default drive is dis- played. If no file specification is given, all files in the directory are listed. Syntax: TOSDIR [] Examples: TOSDIR TOSDIR A: TOSDIR *.PRG T O S C P M The TOSCPM utility allows conversion of a TOS file to a CPMZ80 file. An unambiguous TOS file as source and a destination drive or unambiguous CPMZ80 destination file name must be specified on the command line. Source and destination drive must not be the same. TOSCPM allows the changing of disks and prompts the user to start the conversion by pressing the key. Conversion can be aborted by pressing the key or . Syntax: TOSCPM Examples: TOSCPM A:README.TXT B: TOSCPM TURN11.DAT B:T11.DTA C P M T O S The CPMTOS utility allows conversion of a CPMZ80 file to a TOS file. An unambiguous CPMZ80 file as source and a destination drive or unambiguous TOS destination file name must be specified on the command line. Source and destination drive must not be the same. CPMTOS allows the changing of disks and prompts the user to start the conversion by pressing the key. Con- version can be aborted by pressing the key or . Syntax: CPMTOS Examples: CPMTOS A:HAPPY.TXT B: CPMTOS ORDERS.DAT B:ORDERS.DTA E D T K E Y With the EDTKEY utility the user can edit a CPMZ80 keyboard definition file. A keyboard definition file contains information about the nationality and character strings for the function keys. The user can choose from one of five national keyboard layouts: American, English, French, German and German/American. German/American is a special German layout for programmers. Each of the 10 function keys F1 .. F10 in the top row of the key- board and all the 8 keys in the cursor block both unshifted and shifted may be assigned an ASCII string of up to 8 characters. This provides the user with a total of 36 configurable function keys. EDTKEY displays the current keyboard nationality and function key definitions and shows a menue of possible entries. The user can abort without any changes and return to CPMZ80 by pressing . With the space bar the user can change the keyboard nationality, which is displayed in the top right corner of the EDTKEY screen. By pressing the current definition is saved and EDTKEY terminates. To edit the string assigned to a function key, just press the desired function key, unshifted or shifted. Correct a definition with the key and ter- minate editing with . All ASCII characters except Back- space (08H) may be used in function key strings. Control charac- ters are shown in arrow notation. EDTKEY is a versatile tool that adapts the CPMZ80 user environ- ment to the changing needs of the user. There may be function key definitions with commands for often used applications to tailor the ATARI keyboard to the specific needs of an applica- tion program. The user can create as many keyboard definition files as he or she likes. EDTKEY displays or changes an existing key definition or creates a new keyboard definition file, if the specified file cannot be found. A new definition is filled with default values at startup. The default file type for keyboard definition files is ".KEY" and may be ommitted from the file specification. A predefined keyboard definition must be activa- ted with the SETKEY utility. Syntax: EDTKEY Examples: EDTKEY DBASE EDTKEY A:WS S E T K E Y The SETKEY utility activates a keyboard definition file that has been created with EDTKEY. The default file type for keyboard definition is ".KEY" and may be ommitted from the file specifi- cation. Syntax: SETKEY Examples: SETKEY MP SETKEY B:MBAS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<