NNNNNNsp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNCPMZ80 APP?BUTILITY DOC0INIT COMCPMTOS COM TOSCPM COM SCOPY COM EDTKEY COM SETKEY COM TOSDIR COM @ COM XSUB COMREAD COMREAD ASMDDTZ COMNMOVATA ASMPATMOV SUBATAEMU DOCOEMU TXT> !"GEMU TXTH#$%&'HAPPY TXT8()*+EMUIO S ,DEFAULT KEY-WS KEY.DDTZ DOC./01 >>>>>>> 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 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1v!!> I ͜ !:\ >ɯ:\=O} >$!'(> ! #!~ #t~ #>:\=O} > $!*(>ɯɷ=O! ~#fo$~#> > _CPMZ80 APP?BSoftDesign CPMZ80 R8.4.6Disk initialization utilityDisk initializedUsage: INIT Disk select errorDisk read errorDisk write errorDisk is not empty-w͵,~Bدw#w#w#wU ~#~>-,"C=select err1~!s~!s~>!1>!R͖ a!RxL(>Q K4!1(>;!x4"(> +2wͣ :w(*@(> ~!sG~!2>? ( !S >:2 :S >:1 >!S2 :S :R >!2S :ɯ~!s͐ ( ( > ~ *Rl&j"s~#0:A>:~# (O͝ &y>.~# (O͝ y\!"u*sKuB1ѷ *u#"u!>2w[*u)))))))!͛ѷ R(>>ɯ !\!l ! 6! 6͛͛ɷ=O!_ ~#fo~s"Qz)~#͉> ͉> ͉_(vSoftDesign CPMZ80 R8.4.6CPMZ80 to TOS file conversion utilityInsert source and destination disk and press return Conversion doneUsage: CPMTOS Ambiguous file specification not allowedInvalid CPMZ80 file specificationInvalid TOS file specificationSource drive same as destination driveCPMZ80 file not foundTOS write errorTOS disk fullTOS directory fullAborted//ʹ//̓ͩ*>|,/F/ͩ+:@C/>vLKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACRO*>|,/F/ͩ+:@C/>vLKLNo F1ͧ!ͧ͜!ͧ͜>!o$>!$͖ a!oL(>Q K4!:"(>8!G(> +2ͣ :(!d(> ͧ!;͜nͧ!p>? ( ! >:p : >:o >!p : : >!p :ɯͧ!͜͹ ( ( > ͧ *Rl&j"~#0:A>:~# (O͝ &y>.~# (O͝ y\*)))))))[! 1l&j"[R2}D<=(q#>!Kx(  > >  !\!l !! 6! 6ɷ=O! ~#foͧ͜Kz -@Qg~#Ͳ> Ͳ> Ͳ_(vSoftDesign CPMZ80 R8.4.6TOS to CPMZ80 file conversion utilityInsert source and destination disk and press return Conversion doneUsage: TOSCPM Ambiguous file specification not allowedInvalid TOS file specificationInvalid CPMZ80 file specificationSource drive same as destination driveTOS file not foundTOS read errorCPMZ80 write errorCPMZ80 disk fullCPMZ80 directory fullAbortedvLKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/:@ror(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/1P:2.:\(=2ͬ!ͬ͡!ͬͬ͡: !͡!\͆!P"(!\S(>rl(!P"&*",!:\w Aͬ!͡!#ͬ 3!:\w ͬ!͡!#ͬ͆ ͬ!͡-ͬ:.2#[( S(*&K(B0*& "&! !E(>!͌"#(ͱ![>ɯ2%!4͝ͱ![(>!4!x(>:%/͆!E(>͝ͱ!E(>*(?2% [,R0"**([*R8!(>!! 4 #4"(  >>!! 4 #4!w#w#w!! ^#V*#R? 6##6yyɇO! !%͡!i͡ͻ (( ͬ>ͬ !G͡!i͡ͻ (( ͬ>ͬ #~  6?#O* ^#V#N#F~#͵>.͵~#͵ɷ=O! ~#foͬ͡! 6! 6! 6! 6#! ~#fo~#͵> ͵> _(SoftDesign CPMZ80 R8.4.6Single drive copy utilityUsage: scopy Copying Please insert source disk Please insert destination disk (RET = continue, ESC = abort) Single copy doneNo fileDisk fullDirectory fullUser abortFatal erroratal error1 y:] >z!1(͘ ~ f `Mͷ:@Y͞(#( ( M͏! !'M͏! !ͼI ͣ m(͏̈́!* @> !MD&.! !&."! !:@<82@͏! !͏! !͏&.8GO!B n!c>!ͨ!͕!ͨ!͕< &.X! !&.*! !&.! !&.*!2 !&.!? !&.-͡|r >} > >}80o&DM))) @ 2!͕&.X!R !&.*!g !&.ͨ&.*!} !&.! !~22 #_"0 ͡|r(A}F :2 (=!2 5*0 +"0 ~ 0=O:2 (y*0 w#"0 !2 4,:2 wo&DM))) @ o&MD))]T) y !!]~#͚>.͚~#͚F#(~# 0 , {8O ( > ͚ɇO ~#ng!e~ 6K#6E#6Y\! 6! 6\! 6! 6 >ɯ\ >ɯ!@\ >!@\  >>!@*  #>ɷ=O! ~#fo͏!ɿ    >͚>Y͚| ͚} ͚~#͚ 0 >^͚@͚>͚> ͚>͚>͚>E͚>͚>J͚>͚>q͚>͚>p͚>͚>f͚>͚>e͚> ͚> ͚_̈́ ͯyv     8888888 8 8 8 8 8888888     ((((((( ( ( ( ( ((((((( American English French German Ger/Ame F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 HELP UNDO INSERT UP HOME LEFT DOWN RIGHT Shift F1 Shift F2 Shift F3 Shift F4 Shift F5 Shift F6 Shift F7 Shift F8 Shift F9 Shift F10 Shift HELP Shift UNDO Shift INSERTShift UP Shift HOME Shift LEFT Shift DOWN Shift RIGHT DIR A:DIR B:DIRS COPY TYPE ERA REN SAVE USER EXIT SCOPY TOSDIR TOSCPM CPMTOS TURBO MBASIC DBASE WS MP ZORK1 SoftDesign CPMZ80 R8.4.6Keyboard definition utilityKeyboard definitionLayoutSelect function key to editSPACE to change nationalityENTER to save definitionESC to abortEnter selection : Editing function keyENTER to store stringBACKSPACE to correctEdit string : Saving definition User abortUsage: EDTKEY Bad keyboard definition fileDisk fullDirectory fullFatal errorKEYDEF@"@ bkë4:?2@+5ů2@@ :@ʊ5U :U O^5yf5y n5y@{5:@=2@:@<2@:@:<(:@#~@ bkë4:?2@+5ů2@@ :@ʊ5U :U O^5yf51:N:] >6dt(>)͌ #ͱ :@_ !@"!3!!!e~ 6K#6E#6Y\! 6! 6!@\ >!@ #>vɷ=O! ~#foKt~#> > _SoftDesign CPMZ80 8.4.6Keyboard setup utilityKeyboard setup completeUsage: SETKEY Keyboard definition file not foundBad keyboard definition fileKEYDEF,p, /U ,/@ #~µ~$w2'+"=>2=!"=ñ&>2=:=U - -~w#~d -~w,,͝,p, /U ,/@ #~µ~$w2'+"=>2=!"=ñ&>21bn!cn!cn[!\l(>)!˅!(>2!˅(n!\#~  >?w#~#0:A>:~# (Oͽ &y>.~# (Oͽ y\: n>y!~<w͌ ͌ ͌ɷ=O! ~#foncɾ~#.((/ͅxy>.ͅ~#( ͅxyxy>.ͅ>ͅ~#ͅ> ͅ> ͅ<=> ͅ_vSoftDesign CPMZ80 R8.4.6TOS directory utilityNo fileInvalid TOS file specification2'+"=>2=!"=ñ&>2=:=U - -~w#~d -~w,,͝-w͵,~Bدw#w#w#wU ~#on2'+"=>2=!"=ñ&>2s1:] S*@"͹ͨ!e~ ( t!!r2/ #"~2 #~# ( r͂~#7 ( (+**~šs#r#"~#( ( ("p7?!":/( \_<2!~\>7?: :8 =2m> >*~#"! > ɷ>&  :!"7?:=e:X(< 2X:2$( ڍ$ ͵0ڍ 88͵0OxGx=ڍG0~#F!~=7w*~#"?!4*w#":7~? Қo&)^#Vz ~## 0:? 8 | {00> 0> _a{_Disk full$Directory full$Memory full$Submit file not found$Parameter$Too many parameters:$Line too long:$Submit file empty$Control character$  * ) error on line number: $ *$!26# x !"!" !">22` * How to use @: @ :print this HELP message @ / :go into interactive mode @ / :use SUMMARY mode @ :as in standard SUBMIT.COM In "/" (interactive) mode, @ will prompt you a line at a time for the SUBMIT job input. A number of commands may be combined on the same input line by separating them with exclamation marks. A>@ /STAT!DIR Submitted jobs may be nested...@ does not erase any existing submit job but appends to it instead. To insert a control character into the output, prefix it with a "^" (works in any mode). $$$$ SUB: ù1:: 1 1:"% ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_2~F2=G+~F23*2+<=C2+;2~>.33?*@O DEU Ă2=.33W Extended Submit Vers 2.0Xsub already present$Requires CP/M Version 2.0 or later$:y*###ƒ# yk   җ 4!~=ŐW!xʵ ~#èbx {~#o}où.xsub ]xsub*"-!/"*"+!""1 M*!"́!"* (xsub active)$|*y ʥ*"*7***x*́͋<͛ :%*=26͋!7^#6 #6 #6$ 8*7~O #w# !6:6=2% ͋*-"*$$$ SUB $@BA$! A "!$""!À!w#( ;@< ;CSp;**************************************************************** ;* * ;* >>>>>>> S o f t D e s i g n <<<<<<< * ;* * ;* self relocating receiver routine * ;* for serial data transmission via cp/m reader channel * ;* allows binary file transfer from host computer * ;* by terminating file with five times eof * ;* message is stored in tpa for save command * ;* * ;**************************************************************** ; usage: ; enter program code on receiving computer ; using ddtz inline assembler with "a100" command ; or in hex using ddtz "s100" command. ; exit from ddtz to cpmz80 system by "g0" command. ; save as file read.com ; with "save 1 read.com" cpmz80 command. ; adjust transmission line parameters (baud rate, stop bits, parity) ; on sending and receiving computer. ; start read.com on receiving machine. ; to send file x:yyyyyyyy.zzz execute on sending machine ; "pip pun:=x:yyyyyyyy.zzz[o],eof:,eof:,eof:,eof:,eof:". ; save file on receiving machine ; with "save n x:yyyyyyyy.zzz" command. ; 100 21 0E 01 11 80 00 01 1C 00 ED B0 C3 80 00 21 00 !........m0C..!. ; 110 01 1E 05 E5 D5 0E 03 CD 05 00 D1 E1 77 23 FE 1A ...eU..M..Qaw#~. ; 120 28 04 1E 05 18 ED 1D 20 EA C7 00 00 00 00 00 00 (....m. jG...... ; 130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ; 140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ; 150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ; 160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ; 170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ .Z80 ASEG ORG 0100H BDOS EQU 0005H TPA EQU 0100H START EQU 0080H PROLEN EQU PROEND - PROGRM EOF EQU 1AH READ: LD HL,PROGRM LD DE,START LD BC,PROLEN RELOCT: LDIR ;relocate receiver program JP START PROGRM: LD HL,TPA ;receiver program LD E,5 GETCHR: PUSH HL PUSH DE LD C,3 CALL BDOS ;get reader character POP DE POP HL LD (HL),A INC HL ENDFL?: CP EOF JR Z,ISEOF LD E,5 JR GETCHR ISEOF: DEC E JR NZ,GETCHR EXIT: RST 0 PROEND: END 1 t !A#*"Y!PŷR"!W#} ~#0 +~w#~w x !lFP1FR8+6|G} W2O>>2^!."\:] !h1F!F"f*`"bT*h>>]]̟NͿ(!"h@80 !͹~#fo*f m!H1=  bZ !  >?]ãj ͣkG(.A̛' '(^(^ '( ίla{_[dz(͟>@]R|}>!>"]>-]+y>>.]͟ u|{|}! 800>-]>@[˿ 0]'][>.]8>'_!r4 (7~] #͜͜͟> s> ]> ]>2rڽɅo$ ( (Ϳ,ͿͿ!98ɧR~(#7! ~0˸˸> ~#(7x 07EѧE~~#}c;83]n;8|7;08 >͚0S ;8DM(yOxG(7Ϳ//8R!(  ( 8(0#!0%x(=  @(> !#x͹N#F7=<>ͮ0xxRDM!>))0 = uuDM!>))덑o|g0 = |g}o|g}o|g}o!x!͹N#F+-*/%&!#LPUjoͪ!T*H*M!L*d@*b$-(a~(h+(^(EY(((][ʝ'(7! ͹~#fo!'(eo'(.ͮ 0=~#foA&+|/g}/o8) ~#fo.g8]0.(6"(!8 ))))͹H!"8)͹""0!8 )DM)) ͹.[G?A87:2?00n͜! Ͳ*`eͣ́͜Ͳ(͖Iã:T͊:^ʟ>E]:L͊ßG>Sͪ>Zͪ>Hͪ>Vͪ>Nͪ>C]ß͈>=]^#V#~#(og=(̖ͤ ͟ABCDEHLSPABCDEHLIIUVXZ\`MJHFRPO2!2A ;8"`Ϳ% ;>%  ! ~w_ Ϳ(EX(>Ϳ(;͓7 ! 8 ^V 6_  ! F(E>Rf > ]͟nfͤ͜>:]nfnf|(͙>I]͈ͣ͜GͿR ;@ēTutlut}utw ! ~ Ϳ!:;ͿI!Ϳ;RDM*  " " * "Z+"`s\1ZWg.>>2^z :!=(s8  % Q!T0ý2!A >2A  ! ~(^V*`B ˿^Vz!ľ|(^Vz(srf>2A ݶ ! n(nf: ~w ! ~( ^V*` >w ! ~( nf~w:w8&o6#s#rɗ2!:A 0ͦ  >2! 1FG{\^~^Vzbkww[ 0 ͙ ~ S ! ^V(sr  DDT/Z [8101] $mS[Y8    ͙=]@ogHän>2^7j 2T́j 2L͟NͿx! x( 2 >2^CNV H ZSEx! ͹N#~#fo7BCDEHLBDHABCDEHLIISPIFJHFVXZMKJIHGFUWVYX[ZRP\`RP\`ONLT* i" ͤ͟~͜NͿ#(+.- +(#! d ! "h* i" DMx͙ã! "h* n}2 * i" DMyNF(Oͤ͟x͜yͤͣ͟# x V N0 +(;o;8 ^R͜ ͙͙͜͜}4ãJ2 } :  X#+| }x=  #!kkRE7W ]s#z '( ;}8(w#'((w#'(. +#0" " !H"h*w7̜ͤ͟~#͟ {( ̟x ͟R~ͣ]# 0"ͣx ( >.!6 #w# }ւ2\l,F#~: #x@+(#y# *(.+~ ~ C/.?*#~/( C( (~!8#=_,ɯ!hw#\!i!"L<!eg(!r6#HEX>2 (1: Ggox(6#yrWWOz(:  !ȗ<2 o&~\=([[8"[8"w#!͈*!͈*ãHigh = Max =}y0O:] (;L<()x(&BK \\*di!Y"fsb"d"b-H[dz(͟:r8NͿ.- *fƧh"f F{bͿ! Ϳx!͹^#V#FQq @-;?DDDD;/;';;I;;vF@DDDDS  R@DDDDDD;DD!ADD EDMDE;;Do;;DgQ;7  (8.8}Uqڜ=IR(( ;84=0":wputA2put ( CG>"G;.0xG@vG;U0xFvGpq:wI(R x_xWD((xGpux00 G; :ó;.0 p:w66quG;!8=0x0 s:wpx0 ]o(  x (KG*ó >Gó;(  *Õ !Õ;G;OA( 0G;A p6p!0O;xJ(BG!8!=0*;!: ! Gô; A (.8U8 xF?x.8 UxG:w6qpɀGp6;.8U}GG}ͥ0 G( óͥ0G;ͥ8 ! 8G óx ;=(.@(HL(IX(IYͬ8G;@}0\(V(^D}G B;=8 05x Ö.0&("Gx ;8@;D!0;.0(n;A @!m H! ~w#~wAF,AFDE,H(SP),H(SP),I(SP),I=88.8%Ux0x#(+ôx( }04 B++| (  |<;!! 0x7Ϳ! x! 0 > >27( E! 0:> >2+( )!(-+(DM!B)M7!! xС7) !"h;0*͚0-ͣH "`ix +-ͣX"R̟ͤ͟2re͟:r8[dz>(]>@]R>)]2͌0͹:*7!͈??2~((~6M>>2͠G7#!͌! ͌~ ~6 7ɧ456FNV^fnpqrstuvw~ !"#)*+9#!r!͗!@͗#:(#!U͗!T͗!r!͗!͗~(###N! 7~# 7~#( ####~ #N#^#V! 7v96,2i'&/#7?@V000l00Ǵɋń4R4VA )A()(4 V VV ޷  l  .T Tv7?)RB BVZRH H"Vb*Vk2Vt:VDfEMgo_K}XDybNr[Gn@?`?x?AvavyvBJF=V=^=GVWVOV_VCVsVKV{V (8@ (ʹ0ͱ0~8!͈~(SP)>(]~>)]!sÈ!͈~SP!mÈ~ʹËʹ=ͱ>(]͋>)]ͱ(ʹ:~ ~~͠ʹNyG ##%ͱ>(]~k,ʹ>A]͝ʹnf>2"͋ʹʹ~~ʹʹ>A]ͱ>0>1>2]! !!!ÈI,A,R,A,(ʹ!È!͈ʹ^~ʹËʹË͋ʹ/: ~~0]ʹ0: ~~ >(]nf>P>)]~~ ::>(2!x:=(!{͈~a>+]~ >-]~D>)]!2(I(I:!$!!~( ~!G=È=>,]͈͟ y ADADANBICALCCCCPCPDCPCPICPDADEDDJNEEEXHALIIINININDININIJJLLDLDDLDLDINENOOOTDOTIOUOUTOUTPOPUSRERERETRETRRLRLRLCRLRRRRRRRCRRRSSBSCSESLSRSRSUXO(HLBDHSBDHABDISBDISHIINNNEGLNNPPNEGLN(C*`|(2R! (!*`͌H*` *`!9 ͗? 7 !  :! :!nf7NyG*` ##7*Z7*R*P~7ȧ~M(E(~2 *T 78#:! :!( *\^#V :~8o&:! :!7ɧ!!>!!"h2!N 2!J 2!ͦ!(!i"!2A RT:! *`!(!H ͗0:!([!;|!!O( *!+"!|(0:!G:A 2A % Ϳ2!U(W;2!~( ~~ED@$I $HUUUUUUT$BHD$A! !   @@$ D @H B B@!H  @$$A!BH$I$ !$ @  BI @ @D!$@ @$I$ A"  @ H P$$H"I @B$D$H $I$I$I$I$$ !@HI"$D $DI$ A@$H  H ABB A @"B$ I$H$ $HD D $$I$I$I$I$I$I$I$I$I$$   @@ $$$$ @ !$ H@I!@!" @B@I"  H HBI$D !H $@D HB@$ $@$HHADHH A A   H$@!B!B!B !B!AB!!B!BBB!B$$$$A$I @HI$ $BHHBI $B ! $A$!B!B B$ ! @IH  ""$$! $A$!B!B B$ ! @IH  ""$$;******************************************************************** ;* * ;* >>>>>>> S o f t D e s i g n <<<<<<< 17.1.86 * ;* * ;* moveit 3.0 patch for atari 520 st via modem port * ;* patch space 0100h - 02ffh all registers may be used * ;* use @ patmov submit command for patching * ;* * ;******************************************************************** .Z80 ASEG ORG 0100H INSTT EQU 04H ;virtual input status register OUTSTT EQU 05H ;virtual output status register INDAT EQU 06H ;virtual input data register OUTDAT EQU 04H ;virtual output data register MOVATA: JP 0302H ;start of moveit program JP 4000H ;end of user section JP INILIN ;initialize communication line JP DEINIL ;de-initialize communication line JP RXSTAT ;comline input status JP RXDATA ;comline data input JP TXSTAT ;comline output status JP TXDATA ;comline output data JP SIGNON ;pointer to configuration message JP DIAL ;auto dial/answer support ;user configuration message SIGNON: DB 09H, 09H, ' Atari 520 ST under SoftDesign CPMZ80 Emulator' DB 0DH, 0AH, 0AH, '$' ;initialize communication line ;no entry or return parameters INILIN: CALL RXSTAT ;delete OR A ;all characters JR Z,INIXIT ;in CALL RXDATA ;serial JR INILIN ;input queue. INIXIT: RET ;de-initialize communication line ;no entry or return parameters DEINIL: RET ;communication line input status ;return status in = ff if character ready, 00 if not RXSTAT: IN A,(INSTT) RET ;communication line data input ;return input character in RXDATA: IN A,(INDAT) RET ;communication line output status ;output character in on entry TXSTAT: IN A,(OUTSTT) RET ;communication line data output ;output character in on entry ; must remain unchanged ! TXDATA: OUT (OUTDAT),A RET ;auto dial/answer support ;if =0 on entry, dial the dialing string pointed to by ;if =1 on entry, hang up ;if =2 on entry, auto answer DIAL: RET FILLER: DS MOVATA+0200H-$ END XSUB DDTZ B:MOVEIT.COM Z L 2FF 0 FB:$1.COM R D100 2FF FB:MOVEITX.COM W L M G0 ERA B:$1.COM .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 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. GERD HILDEBRANDT, HERBERT THIESS S O F T W A R E - Z 8 0 A U F 6 8 0 0 0 ------------------------------------------- EIN Z80- UND CP/M-EMULATOR ]BERBR]CKT DIE SOFTWARE-L]CKE UND ERMUTIGT SO DEN SCHRITT ZU LEISTUNGSF[HIGER 68000 16 BIT HARDWARE. REINE SOFTWARE-EMULATION ERZEUGT AUF DEM 68000 PROZES- SOR EINE VOLLST[NDIGE VIRTUELLE Z80 CPU MIT CP/M 2.2. Die Mikrocomputerrevolution steht gegenw{rtig im Umbruch von der 8-Bit zur 16-Bit Generation. Der Hauptvertreter der 8-Bit Generation mit dem gr|~ten Marktanteil ist der Z80, dessen Befehlssatz aufw{rtskompatibel zu den 8080/8085 Mikroprozessoren ist. Mit der millionenfachen Verbreitung dieser Mikroprozessor- Familie hat sich fr}h ein Betriebssystem als Standard etabliert: CP/M-80 von Digital Research. Beg}nstigt durch diese breite Akzeptanz konnte die bisher gr|~te Softwarebibliothek f}r Pro- grammentwickler und Anwender entstehen. Jahrelang wurden be- tr{chtliche Summen in die Anschaffung von Standardsoftware, in die Entwicklung von kundenspezifischen Probleml|sungen und die Schulung der Anwender investiert. Diese Programme sind inzwi- schen ausgereift und die Benutzer mit ihnen vertraut. Mit zunehmenden Anforderungen der Anwender an die Flexibili- t{t der Software wurden die Grenzen der 8-Bit Technologie, ins- besondere des 64K Adressraums erreicht. Als erster Vertreter der neuen 16-Bit Generation wurde der Intel 8086 sehr schnell auf den Markt geworfen. Sein Befehlssatz und sein Registermodell wurden so entworfen, da~ sie eine Erweiterung des 8080/8085 darstellen. Dadurch war es m|glich, vorhandene Software maschi- nell auf den 8086 zu }bertragen. Zwar entfiel die Beschr{nkung des Adressraums auf 64K, jedoch blieben die mangelnde Orthogona- lit{t und die beschr{nkten Adressierungsm|glichkeiten dieser Architektur erhalten. F}r den Nachfolgeprozessor 80186 wurde zwar die Prozessor-Hardware um verschiedene fr}her externe Funk- tionen erweitert, aber der schwache Befehlssatz }bernommen. Dies gilt auch f}r den 80286 Prozessor in seinem kompatiblen Arbeits- modus. Der hinzugekommene 286-Modus ist durch Design-Fehler auf dem Chip nur eingeschr{nkt verwendbar. Andere Mikroprozessor-Entwickler l|sten sich von der Forde- rung nach Aufw{rts-Kompatibilit{t und nutzten den ]bergang zur 16-Bit Generation, um neue Konzepte in die CPU-Architektur ein- zubeziehen. Daher kam der 68000 von Motorola sp{ter auf den Markt, konnte sich aber trotzdem als Alternative zum 8086 eta- blieren. Inzwischen wurde die 68000-Familie um den leistungs- f{higeren 68010 und den 32-Bit Prozessor 68020 erweitert. So stehen sich heute im 16-Bit Markt haupts{chlich zwei Kon- kurrenten gegen}ber: Einerseits die konventionelle 8086-Familie mit einer gro~en Software-Basis, andererseits die fortschritt- liche 68000-Familie mit derzeit noch wenig verf}gbarer Software. Deshalb konnte sich im Gegensatz zur 8-Bit Generation bisher kein 16-Bit Standard-Prozessor und daher auch kein Standard- Betriebssystem durchsetzen. Die anhaltende Ungewissheit }ber die zuk}nftige Entwicklung f}hrt zur Verunsicherung der Anwender und verursacht so einen Investitionsstau. B r } c k e z w i s c h e n Z 8 0 u n d 6 8 0 0 0 F}r Anwender, die sich f}r den innovativeren Weg zur 16-Bit Generation entscheiden, entwickelte die Firma SoftDesign, M}nchen ein Werkzeug, um diesen ]bergang zu erleichtern: Der CP/M-Z80 EMULATOR erschlie~t die gesamte CP/M-80 Softwarebibli- othek zur Nutzung auf 68000 Rechnern mit dem Betriebssystem CP/M-68K. Der CP/M-Z80 EMULATOR bietet dem Benutzer konkrete Vorteile: - Unter CP/M-68K noch nicht verf}gbare Software-Werkzeuge und Anwendungsprogramme k|nnen mit dem EMULATOR vorl{ufig durch CP/M-80 Programme ersetzt werden. Assembler, Cross-Assembler, Compiler f}r sehr viele Sprachen, Textverarbeitung, Kalkulation usw. sind damit sofort verf}gbar. - Mit dem EMULATOR kann beim ]bergang zur neuen Generation be- stehende 8-Bit Software beibehalten werden. So bleiben Investi- tionen in bestehende Software erhalten. - Ein 68000 System mit dem EMULATOR kann ein Z80 Software- Entwicklungssystem ersetzen. Software f}r den Z80 kann weiterhin entwickelt werden, ohne 8-Bit Systeme behalten zu m}ssen. Der CP/M-Z80 EMULATOR l{uft ohne jede Anpassung auf allen Computern mit CP/M-68K Betriebssystem der Version 1.1 oder 1.2 mit mindestens 95K Benutzerspeicher (TPA). Er l{uft auf allen 68008, 68000, 68010 und 68020 Mikroprozessoren. Die Bedienung des EMULATORS ist sehr einfach. Durch die Eingabe von: CPMZ80 wird der EMULATOR gestartet und bildet ein CP/M System mit Z80 CPU vollst{ndig nach. Er verarbeitet alle Z80- Befehle (au~er Interrupt-spezifischen). Selbst ein erfahrener CP/M 2.2 Benutzer kann nicht feststellen, da~ als Hardware kein Z80- sondern ein 68000-Prozessor im System arbeitet. Alle CP/M- 80 kompatiblen Programme sind ohne Einschr{nkung lauff{hig: 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 etc. S c h n e l l e Z 8 0 E m u l a t i o n Die Emulation einer CPU in Software kostet Rechenzeit, da sie {hnlich wie ein Interpreter arbeitet. Jeder Befehl der virtu- ellen CPU wird durch einen kurzen Programmabschnitt der emulie- renden CPU interpretiert. Besondere Schwierigkeiten bei der Emulation bereiten Eigenheiten in der Architektur der virtuellen CPU, zu denen es in der Hardware-CPU keine Entsprechung gibt. Z.B. hat der 68000 einige M}he, das Half-Carry Flag des Z80 nachzubilden und die unterschiedliche Lage der Bytes im Wort zu kompensieren. Jedoch ist der CP/M-Z80 EMULATOR vollst{ndig in Assembler geschrieben und erzielt durch die maximale Ausnutzung des gro~en Registersatzes der 68000 CPU und durch tabellenge- steuerte Interpretation eine hohe Geschwindigkeit. Durchschnitt- lich arbeiten CP/M-80 Programme unter dem CP/M-Z80 EMULATOR auf einem 8 MHz 68000 System mit der Geschwindigkeit einer 2 MHz Z80 CPU. In der Praxis variiert die Geschwindigkeit mit verschie- denen Programmen, ein wichtiger Faktor ist die H{ufigkeit von Ein/Ausgaben. Z.B. k|nnen Programme mit h{ufiger Disk-Ein/- Ausgabe sogar schneller als auf Z80 Hardware laufen. Anderer- seits f}hren h{ufige arithmetische Berechnungen zu einer Ver- langsamung der Emulation. Gemessen wurden folgende Werte f}r das Verh{ltnis der Ausf}hrungszeit der virtuellen CPU zur Z80-Hard- ware: Extremwerte: 0.6 und 6 Durchschnitt: 2 Um mit Z80 Ein/Ausgabe-Befehlen auf Ein/Ausgabe-Ports der 68000 Hardware zugreifen zu k|nnen, steht eine besondere Schnittstelle zur Verf}gung. Der Benutzer kann dazu ein Treiber- Modul erstellen, das Z80 Portadressen auf 68000 Ein/Ausgabe- Routinen abbildet. Wenn ein solches Treibermodul existiert, wird es vom CP/M-Z80 EMULATOR automatisch geladen und aktiviert. Kommunikationssoftware kann diese F{higkeit nutzen, um Modems und andere Datenverbindungen anzusteuern. Dies erleichtert den Transport bestehender CP/M 2.2 Software zum 68000 System. I n t e g r i e r t e s C P / M 2 . 2 Der CP/M-Z80 EMULATOR enth{lt ein speziell entwickeltes, zu CP/M 2.2 aufw{rtskompatibles Betriebssystem. Die Benutzer- schnittstelle entspricht der des Standard CP/M 2.2 mit einigen benutzerfreundlichen Erweiterungen und Verbesserungen. Ein zu- s{tzliches EXIT-Kommando erm|glicht die R}ckkehr zu CP/M-68K. Alle unter CP/M-68K implementierten physikalischen Ein/Ausgabe- ger{te (Terminal,Drucker und weitere Schnittstellen) und alle Hintergrundspeicher (Disketten-, Festplatten-, Bandlaufwerke und RAM Disks) sind vom emulierten CP/M 2.2 aus zug{nglich. Ein automatischer Konfigurations-Algorithmus installiert diese Ger{- te ohne Einwirken des Benutzers. Dies f}hrt zur Transportabi- lit{t zwischen CP/M-68K und dem emulierten CP/M 2.2. Alle Datei- en k|nnen unter beiden Systemen gelesen und geschrieben werden. Durch kompakte Implementierung des CP/M 2.2 steht mit 58 KByte viel Benutzerspeicher zur Verf}gung. Alle unter CP/M 2.2 defi- nierten Systemschnittstellen sind vollst{ndig implementiert. 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 auf vielen unterschiedlichen CP/M-68K Systemen und unter ATARI 520 TOS professionell einge- setzt. Der EMULATOR ist ein ausgereiftes Software-Produkt und sofort lieferbar. Interessierte Anwender k|nnen eine kostenlose Demo-Diskette zum risikolosen Test anfordern. Disketten k|nnen im 5-Zoll STRIDE Format, im 3 1/2 Zoll ATARI 520 Format oder auf 8 Zoll single density bezogen werden. Versionen des CP/M-Z80- EMULATORS unter OS-9/68K und UNIX V sind in Vorbereitung.  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 * * * * 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 KEYDEFDIR A:DIR B:DIRS COPY TYPE ERA REN SAVE USER EXIT SCOPY TOSDIR TOSCPM CPMTOS TURBO MBASIC DBASE WS MP ZORK1 KEYDEFWS A: Q B: DRS  B2  Koe FA AN SVE DER  SIT H3RFOPY P DIR OSCPM Fae Foe Fue FAE FOE FUE L   C CANLEITUNG zum DDTZ Development Debugging Tool for Z80 microcomputers Zusammenfassung der Befehle: > @ examine [and substitute] the displacement register @ > A [startadresse] Assemble > B display all Breakpoints B breakp [breakp..] [:count] set Breakpoints BX clear all Breakpoints BX adresse [adresse..] clear Breakpoints >>C[N][J] [befehlsanzahl] trace over Calls [no list] [jumps only] C[N][J] W ausdruck ..while.. C[N][J] U ausdruck ..until.. >>D [startadr] [endadr] Display memory in hex and ascii > F kommandozeile specify Filename and command line > G [startadr] [;breakp..] Go [to start] [temporary breakpoints] > H display High and maximal size of files > H ausdruck compute Hex and other expressions H ausdruck ausdruck Hex and other sum and difference >>I [port] 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 endadr bytes Qery memory for byte string [justified] > R [displacement] Read binary or hex file [add displacemt] > S startadr Substitute memory >>T[N][J] [befehlsanzahl] Trace [no list] [Jumps only] T[N][J] W ausdruck ..while.. T[N][J] U ausdruck ..until.. > V startadr endadr zieladr Verify (compare) two memory areas > W startadr endadr Write a file to disk > X eXamine all cpu registers X register eXamine [and substitute] a register > Y eXamine all Y variables Yziffer0bis9 eXamine [and substitute] an Y variable > Z startadr endadr bytes Zap (fill) memory with a byte string Registernamen: A , F , B , C , D , E , H , L ,BC , DE , HL A', F', B', C', D', E', H', L',BC', DE', HL' IX oder X , 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 ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ======== SORRY, THIS SECTOR CANNOT BE READ FROM FLOPPY DISK BY ST RECOVER. ======== ==