home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / emulator / cpm / cpmst.doc < prev    next >
Encoding:
Text File  |  1986-11-07  |  68.7 KB  |  2,269 lines

  1.                           CP/M-Z80 EMULATOR
  2.  
  3.                             OWNER'S MANUAL
  4.  
  5.                For Use with All ATARI ST[TM] Computers
  6.  
  7. PLEASE NOTE
  8.  
  9. Every effort has been made to ensure the accuracy of the product
  10. documentation in this manual.  However, because Atari Corp. is
  11. constantly improving and updating its computer hardware and software,
  12. we are unable to guarantee the accuracy of printed material after the
  13. date of publication and disclaim liability for changes, errors, or
  14. omissions.
  15.  
  16. ATARI is a registered trademark, and ST and TOS are trademarks of
  17. Atari Corp.
  18.  
  19. CP/M, CP/M-80, and GEM are trademarks of Digital Research Inc.
  20.  
  21. WordStar is a trademark or registered trademark of MicroPro
  22. International Corporation.
  23.  
  24. CP/M-Z80  Emulator was developed by SoftDesign in conjunction with
  25. Atari Corp.
  26.  
  27.  
  28. Copyright 1986 Atari Corp.
  29. Sunnyvale, CA 94088
  30. All Rights Reserved.
  31.  
  32. TABLE OF CONTENTS
  33.  
  34. INTRODUCTION
  35.    What is CP/M and What Is the CP/M-Z80 Emulator?
  36.    How Well Does the CP/M-Z80 Emulator Perform?
  37.    How to Use This Manual
  38.  
  39. CHAPTER 1
  40. GETTING STARTED
  41.    Backing Up the CP/M-Z80 Emulator Disk
  42.    Loading the CP/M-Z80 Emulator
  43.    Backing up the CP/M-Z80 Utilities Disk
  44.  
  45. CHAPTER 2
  46. CP/M AND CP/M-Z80 EMULATOR COMMAND SUMMARY
  47.    How to Enter a CP/M Command
  48.    CP/M File Specifications
  49.    Command Summary Conventions
  50.    CP/M-Z80 Emulator-Specific Command
  51.        @
  52.        CPMTOS
  53.        DDTZ
  54.        DIR
  55.        EDTKEY
  56.        EXIT
  57.        INIT
  58.        READ
  59.        SCOPY
  60.        SETKEY
  61.        TOSCPM
  62.        TOSDIR
  63.    Standard CP/M Commands
  64.       *ASM
  65.       *DDT
  66.        DIR
  67.       *DUMP
  68.       *ED
  69.        ERA
  70.        LOAD
  71.       *PIP
  72.        REN
  73.        SAVE
  74.       *STAT
  75.       *SUBMIT
  76.        TYPE
  77.        USER
  78.        XSUB
  79.    CP/M Control Character Summary
  80.    CP/M Filetypes
  81.    CP/M Messages
  82.  
  83. CHAPTER 3
  84. CP/M AND CP/M-Z80 EMULATOR TECHNICAL REFERENCE
  85.    Emulator Implementation
  86.    Emulator CCP Implementation
  87.    Emulator BDOS Implementation
  88.    Emulator BIOS Implementation
  89.    Emulator Performance
  90.    Emulator Interface to User I/O
  91.    General Restrictions
  92.    Notes on CP/M-Z80 Emulator I/O DRIVER Conventions
  93.    CP/M BDOS Function Summary
  94.  
  95.   * Not included with package.
  96.     Copyright Digital Research @1986.
  97.  
  98. INTRODUCTION
  99.  
  100. WHAT IS CP/M AND WHAT IS THE CP/M-Z80 EMULATOR?
  101.  
  102. Every computer requires an operating system.  A computer's operating
  103. system is a set of instructions--a program--that supervises the
  104. running of other programs on the computer.
  105.  
  106. Your ATARI ST Computer has its own, unique operating system--TOS.  You
  107. load TOS every time you switch on your computer.  Once TOS loads, your
  108. computer is ready to run other programs.  Any program designed to run
  109. on your ST Computer is running under TOS.
  110.  
  111. CP/M is also an operating system.  It's different from TOS.  A program
  112. designed to run under CP/M will not run under TOS, and vice versa.
  113. However, the CP/M-Z80 Emulator program that you've received on disk
  114. makes TOS "think" and "act like" (i.e., "emulate") a CP/M system.
  115. Without any additional hardware or software, the Emulator program
  116. transforms your ST Computer into a complete CP/M-80 system.
  117.  
  118. This is a great advantage to you because CP/M has been around for a
  119. long time. As a result, there are literally thousands  of programs
  120. available that run under CP/M, and so will run under the CP/M-Z80
  121. Emulator.
  122.  
  123.  
  124. HOW WELL DOES THE EMULATOR PERFORM?
  125.  
  126. The Emulator is a complete CP/M-80 version 2.2 compatible system
  127. environment.  It provides realtime emulation of all Z80 instructions
  128. over the full 64K addressable range.  The Emulator runs all CP/M-80
  129. compatible programs and accepts all standard CP/M-80 version 2.2
  130. commands.  Some minor errors in version 2.2 of CP/M-80 were corrected,
  131. and some additional system commands were added.
  132.  
  133. The Emulator runs average CP/M-80 programs with the speed of a 2MHz
  134. Z80 system, but performance will vary according to the particular
  135. program.  One major variable will be the frequency of a program's disk
  136. access.  Programs with heavy disk I/O may run even faster than on
  137. conventional Z80 hardware because the Emulator fully exploits the disk
  138. speed of the ATARI ST Computer.  On the other hand, programs that
  139. perform extensive arithmetic computations will most likely run more
  140. slowly than average.
  141.  
  142.  
  143. HOW TO USE THIS MANUAL
  144.  
  145. This manual is not intended as a CP/M operator's manual.  Rather, it
  146. provides only skeletal information about the CP/M operating system.
  147. You are encouraged, if not already familiar with CP/M, to obtain a
  148. CP/M reference book.  There are many excellent CP/M books on the
  149. market.
  150.  
  151. The following summarizes the contents of this guide:
  152.  
  153. Chapter 1, Getting Started, explains how to load the Emulator into
  154. your computer and  have CP/M resident and on screen.  The chapter also
  155. explains how to back up the CP/M-Z80 Emulator and CP/M-Z80 Emulator
  156. Utilities disks you received.
  157.  
  158. Chapter 2, CP/M and CP/M-Z80 Emulator Command Summary, provides you
  159. with summary explanations of all standard CP/M commands and all
  160. non-standard (CP/M-Z80 Emulator-specific) commands, according to the
  161. CP/M and CP/M-Z80 utility files you received on the CP/M-Z80 Emulator
  162. Utilities disk.  The chapter also provides a summary of CP/M
  163. filetypes, control characters, and messages.
  164.  
  165. Chapter 3, CP/M and CP/M-Z80 Emulator Technical Reference, presents
  166. some technical information about the Emulator and how it works.  This
  167. chapter is in part geared to CP/M programmers, but non-programmers may
  168. also find much of the information useful.  The chapter ends with a
  169. listing of the standard CP/M BDOS Function Summary.
  170.  
  171. CHAPTER 1
  172. GETTING STARTED
  173.  
  174. This chapter explains how to backup both the CP/M-Z80 Emulator and
  175. CP/M-Z80 Emulator Utilities disks you received, and how to load the
  176. Emulator program into your computer.  You will copy the CP/M-Z80
  177. Emulator disk from the GEM Desktop.  But the CP/M-Z80 Emulator
  178. Utilities disk is copied from within the Emulator itself.  Before you
  179. begin, be certain to have two newly formatted disks on hand.
  180.  
  181.  
  182. BACKING UP THE CP/M EMULATOR DISK
  183.  
  184. Before you do anything else, be certain to make a backup copy of the
  185. disk labeled "CP/M-Z80 Emulator."  Since the Emulator is actually a
  186. TOS program, you must make the copy from the GEM Desktop.  If you
  187. haven't done so already, first format a disk, then make the copy
  188. (either by dragging the files from one window to another or by making
  189. a disk-to-disk copy).  Once you've made the copy, always use it as
  190. your working CP/M-Z80 Emulator disk.  Store the original in a safe
  191. place.  By doing this, you will always have at least one usable copy
  192. of the program.
  193.  
  194. The disk labeled "CP/M-Z80 Emulator Utilities," on the other hand,
  195. must be copied within the Emulator (see the section on Backing Up the
  196. CP/M-Z80 Emulator Utilities Disk).
  197.  
  198.  
  199. LOADING THE CP/M-Z80 EMULATOR
  200.  
  201. The CP/M Emulator is a program like any other program that runs on
  202. your ST Computer.  It needs to be loaded into your computer.
  203.  
  204. To load the Emulator, follow these steps:
  205.  
  206. 1.  With the GEM Desktop displayed, insert the disk labeled "CP/M-Z80
  207. Emulator" into Drive A (or B, if you have two disk drives).  Obtain a
  208. directory window of the disk, then select and open ("run") the file
  209. CPMZ80.TOS.  Your screen clears and in a moment the CP/M-Z80 Emulator
  210. comes up.
  211.  
  212.  
  213. 2.  The message on screen instructs you to insert a CP/M-Z80 disk into
  214. your drive.  Remove the CP/M Emulator disk and insert the disk labeled
  215. "CP/M-Z80 Emulator Utilities."  (You may substitute you own CP/M
  216. application disk for the CP/M-Z80 Emulator Utilities disk at this
  217. point.) Now press any key.  In a moment the Emulator's A: (or B:)
  218. prompt appears on screen.  You now have CP/M fully resident and
  219. ready.
  220.  
  221. Note:  CP/M's classic A> (or B>) prompt is replaced with an A: (or B:)
  222. prompt in the Emulator; the Emulator's A: (or B:) prompt works just
  223. like the CP/M's A> (or B>) prompt.
  224.  
  225.  
  226. Now type
  227.  
  228.        dir
  229.  
  230. beside the A: (or B:) prompt.  The DIR command returns a directory
  231. listing of the specified drive.
  232.  
  233.  
  234. These are the CP/M utilities you received on disk.
  235.  
  236.  
  237. BACKING UP THE CP/M-Z80 EMULATOR UTILITIES DISK
  238.  
  239. It is essential that you make a backup copy of the CP/M-Z80 Emulator
  240. Utilities disk before you do anything else.  To make the copy, follow
  241. these steps:
  242.  
  243. 1.  If you haven't done so already, format a disk under TOS (from the
  244. GEM Desktop), just as you normally do.  If you don't have a blank,
  245. formatted disk available, then you'll have to exit the Emulator (type
  246. EXIT beside the A: or B: prompt), format a disk from the GEM Desktop,
  247. then run the Emulator.
  248.  
  249. 2.  If you have one disk drive and with the Emulator's A: prompt
  250. displayed, write-protect and insert the disk labeled "CP/M-Z80
  251. Emulator Utilities" in Drive A, then type
  252.  
  253. SCOPY *.* <cr>
  254.  
  255. The program prompts you to swap the utilities (source) disk for your
  256. newly formatted (destination) disk, displaying the name of each file
  257. as it's copied.
  258.  
  259. If you have two disk drives and with the Emulator's A: prompt
  260. displayed, write-protect and insert the disk labeled "CP/M-Z80
  261. Emulator Utilities" into Drive A and your newly formatted disk in
  262. Drive B, then type
  263.  
  264. NSWP207
  265.  
  266. Pressing '?' will display all of the commands that NSWP207
  267. understands.
  268. To copy ALL files from Drive A to Drive B, press 'T' for TAG to mark
  269. each file.  After marking each file for transfer, press 'M' to perform
  270. the mass file copy.
  271.  
  272. You will be prompted for a destination.
  273.  
  274. Type     B:
  275.  
  276. to send the files to the B drive.
  277.  
  278. The program proceeds to copy all files in Drive A to Drive B,
  279. displaying the name of each file as it's copied.
  280.  
  281. 3.  With your new copy of the utilities disk in Drive A (or B), type
  282.  
  283.      dir <cr>
  284.  
  285. beside the A: (or B:) prompt, just to be certain that the duplication
  286. procedure was a success.
  287.  
  288. 4.  Now type
  289.  
  290.      INIT A: <cr>
  291.  
  292. This initializes your copy of the CP/M-Z80 Emulator Utilities disk.
  293. For an explanation of disk-initialization, see INIT in Chapter 2.
  294.  
  295. Now that you've made the copy, always use it as your working CP/M-Z80
  296. Emulator Utilities disk.  Store the original in a safe place.  By
  297. doing this, you will always have at least one usable copy of the
  298. utilities disk, should anything ever happen to any one copy.
  299.  
  300. CHAPTER 2
  301.  
  302.  
  303. CP/M AND CP/M-Z80 EMULATOR COMMAND SUMMARY
  304.  
  305.  
  306. HOW TO ENTER A CP/M COMMAND
  307.  
  308. To enter a CP/M command, you must type a complete command line in
  309. response to the CP/M system prompt.  A CP/M  command line consists of
  310. a command keyword, an optional command tail, and a carriage return
  311. ([cr]).  The command keyword identifies a command (program) to be
  312. executed.  The optional command tail consists of a file specification
  313. and options or parameters.  To complete the command, add a carriage
  314. return by pressing the [Return] key on the ST computer keyboard.
  315.  
  316.  
  317. CP/M FILE SPECIFICATIONS
  318.  
  319. CP/M identifies every file by its unique file specification.  A file
  320. specification is composed of three parts: a drive specification, a
  321. primary filename, and a filetype.  The term "filespec" is an
  322. abbreviation for file specification, and indicates any valid
  323. combination of the drive specification, the filename, and the
  324. filetype.  The following symbols are used to designate the parts of a
  325. filespec:
  326.  
  327. D:          Represents the optional drive specification,
  328.             which must be a single alphabetical character
  329.             in the range A through P, followed by a colon.
  330.  
  331. filename    Represents the required primary filename which
  332.             can be 1 to 8 alphabetic or numeric characters.
  333.  
  334. .typ        Represents the optional filetype, which can be 0
  335.             to 3 alphabetic or numeric characters separated
  336.             from the primary filename by a period.
  337.  
  338. Valid combinations of the elements of a filespec are shown below:
  339.  
  340.   filename
  341.   D:filename
  342.   filename.typ
  343.   D:filename.typ
  344.  
  345. Certain CP/M commands can select and process several files when
  346. wildcard characters are included in the primary filename or filetype.
  347. The two wildcard characters are ?, which matches any single letter in
  348. the same position, and *, which matches any character at the position
  349. and any other characters remaining in the filename or filetype.  The
  350. command summary indicates which commands can accept wildcard
  351. characters (* or ?) in a filename or filetype.
  352.  
  353.  
  354. COMMAND SUMMARY CONVENTIONS
  355.  
  356. The command summary lists CP/M commands in alphabetical order, using
  357. the following special symbols to define command syntax:
  358.  
  359. []        Indicate an optional item within DDT and ED.
  360.           Also indicate the optional parts of a command
  361.           line.
  362. |         Separates choices.
  363. N         Indicates a number.
  364. [cr]      Indicates a carriage return keystroke.
  365.  or CTRL  Indicates a control keystroke
  366. O         Indicates an option or option list.
  367. R/W       Means Read-Write.
  368. R/O       Means Read-Only.
  369. SYS       Means System attribute.
  370. DIR       Means Directory attribute.
  371. ...       Preceding element can be repeated as many
  372.           times desired.
  373. *         Wildcard; replaces all or part of a filename
  374.           and/or filetype.
  375. ?         Wildcard; replaces any single character in the
  376.           same position.
  377.  
  378.  
  379. CP/M-Z80 EMULATOR-SPECIFIC COMMANDS
  380.  
  381. @
  382.  
  383. Syntax:
  384.  
  385.      @
  386.      @/
  387.      @/ <command lines>
  388.      @/ <filename> <parameters>
  389.  
  390. Purpose:
  391.  
  392. The @ command invokes the @.COM utility.  The @.COM utility lets you
  393. interactively design and use SUBMIT files.
  394.  
  395. Examples:
  396.  
  397.      @
  398.      @/
  399.      @/NSWP207
  400.  
  401. CPMTOS
  402.  
  403. Syntax:
  404.  
  405.      CPMTOS <CP/M-Z80 filename> <TOS filename>
  406.  
  407. Purpose:
  408.  
  409. The CPMTOS command lets you convert a CP/M-Z80 file to a TOS file.
  410. Note however, that CP/M programs will not run under TOS, even though
  411. they are converted.   An unambiguous CP/M-Z80 file as source and a
  412. destination drive or unambiguous TOS destination filename must be
  413. specified on the command line.  Source and destination drive cannot be
  414. the same.  CPMTOS allows you to change disks and prompts you to start
  415. the conversion by pressing [Return].  To abort the conversion, press
  416. [Esc] or [Control] [C].
  417.  
  418. Examples:
  419.  
  420.      CPMTOS A:HAPPY.TXT B:
  421.      CPMTOS ORDERS.DAT B:ORDERS.DTA
  422.  
  423.  
  424. DDTZ
  425.  
  426. Syntax:
  427.  
  428.      DDTZ
  429.      DDTZ filespec
  430.  
  431. Purpose:
  432.  
  433. The DDTZ command works quite like DDT, save that it invokes the
  434. CP/M-Z80 debugging utility.
  435.  
  436. Examples:
  437.  
  438.      A: DDTZ
  439.      A: DDTZ PROGRAM.COM
  440.  
  441.  
  442. DDTZ commands
  443.  
  444. >  @                              Examine [and substitute]
  445.                                   the displacement
  446.                                   register @.
  447. >  A [startaddress]               Assemble.
  448. >  B                              Display all Breakpoints.
  449. >  B breakp [breakp..][:count]    Set Breakpoints.
  450.    BX                             Clear all Breakpoints.
  451.    BX address [address]           Clear Breakpoints.
  452. >> C[N][J][number of commands]    Trace over Calls
  453.                                   [no list][jumps only].
  454.    C[N][J] W expression           ..while..
  455.    C[N][J] U expression           ..until..
  456. >>D [startaddr][endaddr]          Display memory in hex
  457.                                   and ascii.
  458. > F commandline                   Specify Filename and
  459.                                   command line.
  460. > G [startaddr][;breakpoint..]    Go [to start][temporary
  461.                                   breakpoints]
  462. > H                               Display High and maximal
  463.                                   size of files.
  464. > H expression                    Compute hex and other
  465.                                   expressions.
  466.   H expression expression         Hex and other sum and
  467.                                   difference.
  468. >>I [port]                        Input a byte from port.
  469. >>L [startaddr][endaddr]          List disassembled code.
  470. > M[V] startadr endadr targetadr  Move memory [and verify].
  471. >>O [byte][port]                  Output a byte to port.
  472. > Q[J] startaddr endaddr bytes    Query memory for byte
  473.                                   string [justified].
  474. > R [displacement]                Read binary or hex file
  475.                                   [add dislacement].
  476. > S Startaddr                     Substitute memory.
  477. >>T[N][J][number of commands]     Trace [no list]
  478.                                   [Jumps only].
  479.   T[N][J] W expression            ..while..
  480.   T[N][J] U expression            ..until..
  481. > V startaddr endaddr targetaddr  Verify (compare) two
  482.                                   memory areas.
  483. > W startaddr endaddr             Write a file to disk.
  484. > X                               Examine all cpu registers.
  485.   X register                      Examine [and substitute]
  486.                                   a register.
  487. > Y                               Examine all Y variables.
  488.   Y number between 0 and 9        Examine [and substitute]
  489.                                   a Y variable.
  490. > Z startaddr endaddr bytes       Zap (fill) memory with a
  491.                                   byte string.
  492.  
  493.  
  494.  
  495. DDTZ: Names of Registers
  496.  
  497. A , F , B , C , D , E , H , L , BC , DE , HL
  498. A', F', B', C', D', E', H', L', BC', DE', HL'
  499. IX or X, IY or Y, SP or S, PC or P, I
  500.  
  501. DDTZ: Flags of Registers F and F':
  502.  
  503. S       Sign
  504. Z       Zero
  505. H       Half carry             Carry of bit 3 to bit 4.
  506. V       Overflow/parity        Overflow/even parity.
  507. N       Negation               NEG, DEC, SUB or the like
  508.                                executed.
  509. C       Carry                  Carry of bit 7.
  510. E       Interrupt Enabled      The Interrupt flag is handled
  511.                                in DDTZ like a flag of the
  512.                                F-Register.
  513.  
  514. DDTZ: Constants and Variables
  515.  
  516. L       Low            Start of user-memory.
  517. H       High           Highest address of files last loaded.
  518. M       Max            Highest address of all files loaded.
  519. T       Top            Top of user memory.
  520. @                      Displacement Register.
  521. $                      Start address when assembling
  522.                        otherwise = PC.
  523. Y0 ... Y9              Free usable variables.
  524. ^register              Content of register.
  525. (address)              Content of a memory cell (byte).
  526. (address)              Content of a memory cell (word).
  527.  
  528. Calling DDTZ:
  529.  
  530.         DDTZ
  531.         DDTZ d:filename.ext
  532.  
  533. If DDTZ was called together with a filename, then DDTZ loads the file
  534. into the memory.  When the '>' sign appears, DDTZ is ready.
  535.  
  536. General remarks for the use of DDTZ.
  537.  
  538. In all situations, where numbers can be entered, 'expressions' can be
  539. entered too.  Expressions are structured as follows:
  540.  
  541. <arithmetic expression>
  542.         or
  543. <arithmetic expression> <relational operator> <arithmetic expression>
  544.  
  545. Relation operators are: = , <> , < , > , >= , <=
  546.  
  547. If the relation is true, the expression has the value -1, otherwise it
  548. is 0.
  549.  
  550. e.g.: the expression 1 + 2 = 3 has the value -1.
  551.  
  552. An arithmetic expression has the general structure:
  553.  
  554. <factor><arithmetic operator><factor><arith... ... <factor>
  555.  
  556. Arithmetic operators are:
  557.  
  558. + , - , * , / , %        plus, minus, multiplication, division,
  559. modulo.
  560. & , ! , #                AND, OR, XOR (bit oriented).
  561.  
  562. Factors are:
  563.  
  564. [expression]             Expression in brackets.
  565. +factor
  566. -factor                  Negation.
  567. ~factor                  NOT (bit oriented).
  568. 'a'                      Value of ASCII-character.
  569. 'a'.                     Bit 7 on.
  570. 'ab'                     Value of two ASCII characters.
  571. 'ab'.                    Bit 7 on in low byte.
  572. (expression)             Byte in memory.
  573. (expression)             Word in memory.
  574. variable                 arbitrary variable mentioned above.
  575. hhhh[H]                  Hex-number.
  576. dddd.                    Decimal-number.
  577. bbbbbbbb"bbbbbbbb"       Binary number.
  578.  
  579. If an expression contains a relational operator, first both arithmetic
  580. expressions are calculated and then the relation.  An arithmetic
  581. expression will be calculated from the left to the right without
  582. regard to algebraic rules.  However, the order can be changed with
  583. brackets.  Expressions must not contain blanks.
  584.  
  585. Commands start with one of the characters '@' to 'Z', optionally
  586. followed by other characters or arguments.  If the start address is
  587. omitted, the address where the command ended before is used instead.
  588. If the end address is omitted, the command (e.g. L or D) will be
  589. repeated until one screen is filled.  If one argument is omitted and
  590. other arguments follow, it has to be replaced by a comma.  Between two
  591. arguments, a blank, a tab, or a comma must be put.
  592.  
  593. Commands which need a starting address and an ending address can use
  594. the character 'S', followed by an offset.
  595.  
  596. For example:
  597.  
  598.    D 1000 S 100 resp. D1000S100
  599.        means the same as:
  600.    D1000 10FF resp. D1000,10FF
  601.  
  602.  
  603. DIR
  604.  
  605. Syntax:
  606.  
  607.      DIR filename
  608.  
  609. Purpose:
  610.  
  611. The DIR command displays the names of all files with "system
  612. indicator" set on the specified disk.
  613.  
  614. Examples:
  615.  
  616.      DIR A:
  617.      DIR B:
  618.  
  619.  
  620. EDTKEY
  621.  
  622. Syntax:
  623.  
  624.      EDTKEY <keyboard definition file>
  625.  
  626. Purpose:
  627.  
  628. The EDTKEY command lets you edit a CP/M-Z80 keyboard definition file.
  629. A keyboard definition file contains information about the nationality
  630. and character strings for the function keys.  You can choose from one
  631. of five national keyboard layouts:  American, English, French, German,
  632. and German/American.  German/American is a special German layout for
  633. programmers.  Each of the ten function keys [F1]--[F10] on the top row
  634. of the keyboard and all the eight keys in the cursor block, both
  635. unshifted and shifted, may be assigned an ASCII string of up to eight
  636. characters.  This provides you with a total of 36 configurable
  637. function keys.
  638.  
  639. EDTKEY displays the current keyboard nationality and function key
  640. definitions, and shows a menu of possible entries.  To abort without
  641. making any changes, and return to the CP/M-Z80 Emulator, press [Esc].
  642. To change the keyboard nationality, which is displayed in the top
  643. right corner of the EDTKEY screen, press [Space Bar].  To save the
  644. current definition to disk, press [Enter] (on the numeric keypad);
  645. EDTKEY then terminates automatically.  To edit the string assigned to
  646. a function key, just press the desired function key, unshifted or
  647. shifted.  Correct a definition with [Backspace] and terminate editing
  648. with [Enter].  All ASCII characters except Backspace (08H) may be used
  649. in function key strings.  Control characters are shown in arrow
  650. notation.
  651.  
  652. EDTKEY is a versatile tool that can adapt the CP/M-Z80 environment to
  653. your changing needs.  You may assign function keys various commands
  654. used in CP/M applications programs, and so tailor the ST keyboard to
  655. the specific needs of an application program.  You can create as many
  656. keyboard definition files as you want.  EDTKEY displays or changes an
  657. existing keyboard definition or creates a new keyboard definition
  658. file, if the specified file cannot be found.  A new definition is
  659. filled with default values at startup.  The default file type for
  660. keyboard definition files is .KEY and may be omitted from the file
  661. specification.  A predefined keyboard definition must be activated
  662. with the SETKEY utility.
  663.  
  664. Note:  The DEFAULT.KEY file on disk is the default keyboard definition
  665. file.  The WS.KEY file configures the keyboard for use with WordStar.
  666.  
  667. Examples:
  668.  
  669.      EDTKEY DEFAULT
  670.      EDTKEY
  671.  
  672.  
  673. EXIT
  674.  
  675. Syntax:
  676.  
  677.      EXIT
  678.  
  679. Purpose:
  680.  
  681. The EXIT command allows you to exit the Emulator and return control to
  682. TOS and the GEM Desktop.
  683.  
  684. Examples:
  685.  
  686.      A: EXIT
  687.      B: EXIT
  688.  
  689.  
  690. INIT
  691.  
  692. Syntax:
  693.  
  694.      INIT <drive specifier>
  695.  
  696. Purpose:
  697.  
  698. The INIT command initializes a formatted TOS disk for use under the
  699. CP/M-Z80 Emulator.  Disks used with the Emulator must be formatted
  700. under TOS first, then initialized with the INIT utility running under
  701. the Emulator.  The drive containing the disk to initialize must be
  702. specified on the command line, and the INIT.COM file must be on the
  703. specified disk.  The INIT command zeros the TOS directory so that you
  704. can recognize CP/M-Z80 disks from the GEM Desktop.  When you display a
  705. initialized CP/M-Z80 disk directory on the GEM Desktop, only the one
  706. item (CPMZ80.APP) appears in the directory window, and (falsely) shows
  707. 999999 bytes used in that one item.
  708.  
  709. Examples:
  710.  
  711.      INIT A:
  712.      INIT B:
  713.  
  714. READ
  715.  
  716. Syntax:
  717.  
  718.      READ
  719.      PIP PUN: = A: <filename> [0], eof: eof: eof: eof eof:
  720.  
  721. Purpose:
  722.  
  723. The READ command invokes the READ communications utility.  The READ
  724. communications utility is a self-relocating receiver routine for
  725. serial data transmission via the CP/M reader channel.  This allows for
  726. the conversion from one CP/M computer to another.  The READ.ASM file
  727. (on disk) provides you with the READ utility's source code.
  728.  
  729. Examples:
  730.  
  731.      A: READ PROG
  732.      A: READ PROG.BBX
  733.      A: READ b:PROG.bzz
  734.  
  735.  
  736. SCOPY
  737.  
  738. Syntax:
  739.  
  740.     SCOPY <ambiguous CP/M-Z80 filename>
  741.  
  742. Purpose:
  743.  
  744. The SCOPY command allows you to copy CP/M-Z80 files on a single drive
  745. system.  You may select a file or group of files to copy, according to
  746. your file parameter.  The utility informs you to swap source and
  747. destination disks, and echoes the name of each copied file.
  748.  
  749. Examples:
  750.  
  751.      SCOPY *.*
  752.      SCOPY *.PAS
  753.      SCOPY DU.COM
  754.  
  755.  
  756. SETKEY
  757.  
  758. Syntax:
  759.  
  760.      SETKEY <keyboard definition file>
  761.  
  762. Purpose:
  763.  
  764. The SETKEY command activates an existing keyboard definition file
  765. (created  with EDTKEY).  The default file type for keyboard definition
  766. is .KEY and may be omitted from the file specification.
  767.  
  768. Note:  The DEFAULT.KEY file on disk is the default keyboard definition
  769. file.  The WS.KEY file configures the keyboard for use with WordStar.
  770.  
  771.  
  772. Examples:
  773.  
  774.      SETKEY MP
  775.      SETKEY B:MBAS
  776.  
  777.  
  778. TOSCPM
  779.  
  780. Syntax:
  781.  
  782.      TOSCPM <TOS file> <CP/M-Z80 file>
  783.  
  784. Purpose:
  785.  
  786. The TOSCPM utility lets you convert a TOS file to a CP/M-Z80 file.
  787. Note that TOS programs will not run under CP/M-Z80.  An unambiguous
  788. TOS file as source and a destination drive or unambiguous CP/M-Z80
  789. destination filename must be specified on the command line.  Source
  790. and destination drive cannot be the same.  TOSCPM allows you to change
  791. disks and prompts you to start the conversion by pressing [Return].
  792. To abort the conversion, press [Esc] or [Control] [C].
  793.  
  794. Examples:
  795.  
  796.      TOSCPM A:README.TXT B:
  797.      TOSCPM TURN11.DAT B:T11.DTA
  798.  
  799.  
  800. TOSDIR
  801.  
  802. Syntax:
  803.  
  804.      TOSDIR <ambiguous file specification>
  805.  
  806. Purpose:
  807.  
  808. The TOSDIR utility displays the directory of a TOS disk.  An ambiguous
  809. file specification may be specified.  If no drive is specified, the
  810. utility displays the directory of the current default drive.  If you
  811. give no file specification, the utility lists all files in the
  812. directory.
  813.  
  814. Examples:
  815.  
  816.      TOSDIR
  817.      TOSDIR A:
  818.      TOSDIR *.PRG
  819.  
  820. STANDARD CP/M COMMANDS
  821.  
  822.  
  823. ASM                        NOT INCLUDED IN PACKAGE
  824.                         FOR DOCUMENTATION PURPOSES ONLY
  825.  
  826. Syntax:
  827.  
  828.      ASM [filename]
  829.      ASM [filename.ABC]
  830.  
  831. Purpose:
  832.  
  833. ASM assembles assembly language statements, producing an output file
  834. in Intel [tm] hexadecimal format and a print file.  The source
  835. filetype must be ASM.  Character A indicates source file drive, B
  836. indicates HEX file destination, and C indicates PRN file destination.
  837. If you put a Z in position B or C, the HEX file or PRN file is
  838. suppressed.  An X in position C sends the print file to the console.
  839.  
  840. ASM Error Messages
  841.  
  842. D   Data Error: Data statement element cannot be placed in
  843.     specified data area.
  844. E   Expression Error: Expression cannot be evaluated during
  845.     assembly.
  846. L   Label Error: Label cannot appear in this context (might
  847.     be duplicate label).
  848. N   Not Implemented: Unimplemented features, such as macros,
  849.     are trapped.
  850. O   Overflow: Expression is too complex to evaluate.
  851. P   Phase Error: Label value changes on two passes through
  852.     assembly.
  853. R   Register Error: The value specified as a register is
  854.     incompatible with the code.
  855. S   Syntax Error: Improperly formed expression.
  856. U   Undefined Label: Label used does not exist.
  857. V   Value Error: Improperly formed operand encountered in an
  858.     expression.
  859.  
  860. Examples:
  861.  
  862.      A:ASM PROG
  863.      A:ASM PROG.BBX
  864.      A:ASM B:PROG.BZZ
  865.  
  866. DDT                           NOT INCLUDED IN PACKAGE
  867.                            FOR DOCUMENTATION PURPOSES ONLY
  868.  
  869. Syntax:
  870.  
  871.      DDT [filespec]
  872.  
  873. Purpose:
  874.  
  875. DDT is used in debugging 8080 programs.  If you specify DDT without a
  876. filespec, DDT loads into the TPA and prompts for a command.  The
  877. command character can be followed by one or more arguments:
  878. hexadecimal values, file specifications, or other information,
  879. depending on the command.  Arguments are separated from each other by
  880. commas or spaces.  No spaces are allowed between the command character
  881. and the first argument.  Optional parts of the command are enclosed in
  882. square brackets ([]).
  883.  
  884. Examples:
  885.  
  886.      A:DDT
  887.      A:DDT PROGRAM.COM
  888.  
  889.  
  890. DDT Command Summary
  891.  
  892. As               Assemble: Enter assembly language
  893.                  statements.
  894. D[s[f]]          Display: Display memory in Hex and ASCII.
  895. Fs,f,bc          Fill: Fill memory block - byte.
  896. G[s][,b1[,b2]]   Go: Begin execution.
  897. Hc1,c2           Hex: Hexadecimal sum and difference.
  898. Ifilespec        Input: Set up input command line for R or W
  899.                  commands.
  900. L[[,f]]          List: List memory in mnemonic form.
  901. Ms,f,d           Move: Move memory block.
  902. R[o]             Read: Read disk file to memory.
  903. Ss               Set: Set memory values.
  904. T[n]             Trace: Trace program execution.
  905. U[n]             Untrace: Monitor execution without trace.
  906. X[r]             Examine: Examine and modify CPU registers.
  907.  
  908. Symbol           Meaning
  909.  
  910. bc               byte constant
  911. b1               breakpoint one
  912. b2               breakpoint two
  913. c1               byte or word constant one
  914. c2               byte or word constant two
  915. d                destination data
  916. f                final address
  917. n                number of instructions to execute
  918. o                offset to load address
  919. r                8080 CPU register or flag name
  920. s                starting address
  921.  
  922.  
  923. DIR
  924.  
  925. Syntax:
  926.  
  927.      DIR [d:filename.typ]
  928.  
  929. Purpose:
  930.  
  931. DIR displays names of files on the specified disk.  DIR does not
  932. display files set to SYS.
  933.  
  934. Examples:
  935.  
  936.      A:DIR
  937.      A:DIR B:
  938.      A:DIR B:MYFILE.TEX
  939.      A:DIR A*.ASM
  940.      A:DIR PROG???.PRN
  941.      A:DIR PROGRAM.*
  942.  
  943.  
  944. DUMP                         NOT INCLUDED IN PACKAGE
  945.                           FOR DOCUMENTATION PURPOSES ONLY
  946.  
  947. Syntax:
  948.  
  949.      DUMP filespec
  950.  
  951. Purpose:
  952.  
  953. The DUMP command lets you display the contents of a file in hex.  The
  954. DUMP.ASM file (on disk) provides you with the DUMP utility's source
  955. code.
  956.  
  957. Example:
  958.  
  959.      A: DUMP ASM.COM
  960.  
  961.  
  962. ED                        NOT INCLUDED IN PACKAGE
  963.                        FOR DOCUMENTATION PURPOSES ONLY
  964.  
  965. Syntax:
  966.  
  967.      ED [d:filename.typ]
  968.  
  969. Purpose:
  970.  
  971. ED is the CP/M line editor.  Using the ED commands, you can create or
  972. alter your files.  Optional parts of the commands are enclosed in
  973. square brackets ([]).
  974.  
  975. Example:
  976.  
  977.      A:ED TEST.DAT
  978.  
  979. In ED, the [Control] key appears an an up arrow ( ).
  980.  
  981. L           Logical [cr][lf] within strings.
  982. X           Line delete.
  983. Z           String terminator/separator, exit insert mode.
  984. Backspace   Delete character.
  985. C           Stop function.
  986.  
  987.  
  988. ED Command Summary
  989.  
  990. Command         Action
  991.  
  992. nA              Append n lines from original file to memory
  993.                 buffer.
  994. 0A              Append file until buffer is half full.
  995. #A              Append file until buffer is full (or end of
  996.                 file).
  997. B,-B            Move CP to beginning (B) or bottom (-B) of
  998.                 buffer.
  999. nC,-nC          Move CP n characters forward (C) or backward
  1000.                 (-C) through buffer.
  1001. nD,-nD          Delete n characters before (-D) or after (D)
  1002.                 the CP.
  1003. E               Save new file and return to CP/M.
  1004. Fstring[Z]      Find character string.
  1005. H               Save the new file, then reedit, using the
  1006.                 new file as the original.
  1007. I               Enter insert mode; use Z to exit insert
  1008.                 mode.
  1009. Istring[Z]      Insert string at CP.
  1010. J[search str]Z  Juxtapose strings.
  1011.  [insert str]Z
  1012.  [delete to str]Z
  1013. nK,-nK          Delete n lines from the CP.
  1014. nL,-nL,0L       Move CP n lines.
  1015. nMcommands      Execute commands n times.
  1016. n,-n            Move CP n lines and display that line.
  1017. n:              Move to line n.
  1018. cncommand       Execute command through line n.
  1019. Nstring[Z]      Extended find string.
  1020. O               Return to original file.
  1021. nP,-nP          Move CP n lines forward or backward and
  1022.                 display n lines at console.
  1023. Q               Abandon new file; return to CP/M.
  1024. R               Read X$$$$$$$.LIB file into buffer.
  1025. Rfilespec       Read filename.LIB into buffer
  1026. Sdelete str Zinsert
  1027. str[Z           Substitute string.
  1028. nT,-nT,0T       Type n lines
  1029. U,-U            Upper-case translation.
  1030. V,-V,0V         Line numbering on/off; display free buffer
  1031.                 space.
  1032. nW              Write n lines to new file.
  1033. nX              Write n lines to temporary LIB file.
  1034. QX              Delete file X$$$$$$$.LIB
  1035. nZ              Wait n seconds.
  1036.  
  1037.  
  1038. ERA
  1039.  
  1040. Syntax:
  1041.  
  1042.      ERA [d:filename.typ]
  1043.  
  1044. Purpose:
  1045.  
  1046. ERA erases a file or group of files.  ERA accepts wildcard filenames.
  1047.  
  1048. Note:  In the Emulator, the ERA command displays the name of each file
  1049. as it is deleted.
  1050.  
  1051. Examples:
  1052.  
  1053.      A:ERA PROGRAM.BAS
  1054.      A:ERA B:LETTER.DAT
  1055.      A:ERA A:LETTER.*
  1056.      A:ERA *.BAK
  1057.      A:ERA B:*.*
  1058.  
  1059.  
  1060. LOAD                       NOT INCLUDED IN PACKAGE
  1061.                         FOR DOCUMENTATION PURPOSES ONLY
  1062.  
  1063. Syntax:
  1064.  
  1065.       LOAD filespec
  1066.  
  1067. Purpose:
  1068.  
  1069. The LOAD command invokes the LOAD utility.  The LOAD utility converts
  1070. .HEX (Intel format) program files created with ASM to executable .COM
  1071. machine-code files.  Since .HEX is the default extension, there's no
  1072. need to include it in the filespec.
  1073.  
  1074. Example:
  1075.  
  1076.      A: LOAD DUMP
  1077.  
  1078.  
  1079. PIP                        NOT INCLUDED IN PACKAGE
  1080.                         FOR DOCUMENTATION PURPOSES ONLY
  1081.  
  1082. Syntax:
  1083.  
  1084.      Destination = Source
  1085.  
  1086.      PIP [d: |filespec = filespec][options]
  1087.      PIP [filespec = d:][options]
  1088.      PIP [d:filename.type = filespec1,filespec2,...]
  1089.      PIP [filespec|device: =
  1090.          filespec][options][|device:][options]
  1091.      PIP
  1092.  
  1093. Purpose:
  1094.  
  1095. PIP copies files, combine files, and transfers files between
  1096. peripheral devices.  The first filespec is the destination; the second
  1097. filespec is the source.  Source filespec with options can be repeated,
  1098. separated by commas, to combine two or more files into one
  1099. concatenated file.  The source or destination can be any CP/M logical
  1100. device.  PIP entered with no command tail displays a * prompt and
  1101. awaits your series of commands, entered and executed one line at a
  1102. time.
  1103.  
  1104. Examples:
  1105.  
  1106.      Copies from One Disk to Another
  1107.      A:PIP B: = A:DRAFT.TEX
  1108.      A:PIP B:DRAFT.TEX = A:
  1109.  
  1110.      Copy and File
  1111.      A:PIP B:NEWDRAFT.TEX = A:OLDDRAFT.TEX
  1112.      A:PIP NEWDRAFT.TEX = OLDDRAFT.TEX
  1113.  
  1114.      Copy Multiple Files
  1115.      A:PIP[cr]
  1116.      A:PIP B: = *.TEX[AV]
  1117.      A:B: = *.COM[RW]
  1118.      A:PIP B: = C:DRAFT.*
  1119.      A:PIP B: = *.*
  1120.      A:PIP B: = C:*.*
  1121.  
  1122.  
  1123.      Combine Multiple Files
  1124.      A:PIP B:NEW.DAT = FILE1.DAT,FILE2.DAT
  1125.  
  1126.      Copy, Rename, and Get from User 1
  1127.      A:PIP NEWDRAFT.TEX = OLDDRAFT.TEX[G1]
  1128.  
  1129.      Copy to/from Logical Devices
  1130.      A:PIP B:FUNFILE.SUE = CON:
  1131.      A:PIP LST: = CON:
  1132.      A:PIP LST: = B:DRAFT.TEX[T8]
  1133.      A:PIP PRN: = B:DRAFT.TEX
  1134.  
  1135. PIP Options:
  1136.  
  1137. Option      Description
  1138.  
  1139. A           Archive: Copy only modified files.
  1140. Dn          Delete any characters past column n.
  1141. E           Echo transfer to console.
  1142. F           Filter form-feeds from source data.
  1143. Gn          Get file from user number n.
  1144. H           Test for valid Hex format.
  1145. I           Ignore :00 Hex data records, test for valid
  1146.             Hex format.
  1147. L           Translate upper-case to lower-case.
  1148. N           Number the output lines, incrementing by 1
  1149.             starting at 1. Object file transfer, Z ignored.
  1150. Pn          Set page length to n (default n = 60).
  1151. Qs Z        Quit copying from source at string s.
  1152. R           Read files that have been set to SYS (system).
  1153. Ss Z        Start copying from the source at string s.
  1154. Tn          Expand tabs to n spaces.
  1155. U           Translate lower-case to upper-case.
  1156. V           Verify that data has been written correctly.
  1157. W           Write over files that have been set to
  1158.             Read-Only.
  1159. Z           Zero the parity bit.
  1160.  
  1161.  
  1162. PIP Logical Devices
  1163.  
  1164. The following four devices are mapped in the IOBYTE using STAT and
  1165. must be defined in BIOS:
  1166.  
  1167. CON:        Console device.
  1168. LST:        List device.
  1169. PUN:        Punch device.
  1170. RDR:        Reader device.
  1171.  
  1172. Additional device names that can be used in PIP commands are:
  1173.  
  1174. INP:        Patched character input.
  1175. OUT:        Pathced character output.
  1176. PRN:        Like LST; tabs on 8th character, page breaks on
  1177.             60th line; numbers lines.
  1178. EOF:        Generates CTRL-Z (end of file).
  1179. NUL:        Generates 40 nulls for PUN device.
  1180.  
  1181.  
  1182. PIP Physical Devices
  1183.  
  1184. TTY:        Console, terminal, reader, punch,
  1185.             teletypewriter.
  1186. CRT:        Console, terminal, CRT device.
  1187. PTR:        Paper tape or card reader.
  1188. PTP:        Paper tape or card punch.
  1189. LPT:        List device, line printer.
  1190. UC1:        User-defined console.
  1191. UR1:        User-defined reader.
  1192. UR2:        User-defined reader.
  1193. UP1:        User-defined punch.
  1194. UP2:        User-defined punch.
  1195. UL1:        User-defined listing device.
  1196.  
  1197.  
  1198. REN
  1199.  
  1200. Syntax:
  1201.  
  1202.      REN [d:newfile.typ = oldfile.typ]
  1203.  
  1204. Purpose:
  1205.  
  1206. REN changes the name of the existing file (oldfile) to the name
  1207. specified by newfile.
  1208.  
  1209. Note: In the Emulator, the REN command allows you to omit one drive
  1210. specification.
  1211.  
  1212. Examples:
  1213.  
  1214.      A:REN NEWFILE.DAT = OLDFILE.INP
  1215.      A:REN B:NEWFILE.DAT = OLDFILE.DAT
  1216.      B:REN NEWLIST = OLDLIST
  1217.  
  1218.  
  1219. SAVE
  1220.  
  1221. Syntax:
  1222.  
  1223.      SAVE n[d:filename.typ]
  1224.  
  1225. Purpose:
  1226.  
  1227. SAVE copies to a disk file the contents of the Transient Program Area
  1228. (TPA) starting at location 100 Hex and continuing to the page
  1229. indicated by n in the command tail.  SAVE assigns the filename and
  1230. filetype specified in the command tail.  Wildcard characters are not
  1231. accepted.  The number of pages to save can be calculated using DDT.
  1232.  
  1233. Examples:
  1234.  
  1235.      A:SAVE 3 EXTRA.COM
  1236.      A:SAVE 40 QUICK
  1237.      A:SAVE 4 X.Y
  1238.      A:SAVE 10 B:ZOT.COM
  1239.  
  1240.  
  1241. STAT                    NOT INCLUDED IN PACKAGE
  1242.                      FOR DOCUMENTATION PURPOSES ONLY
  1243.  
  1244. Syntax:
  1245.  
  1246.      Display Status
  1247.      STAT
  1248.      STAT [d:]
  1249.      STAT [filespec]
  1250.      STAT [d:DSK:]
  1251.      STAT [DEV:|VAL:|USR:]
  1252.  
  1253.      Change Status:
  1254.      STAT [d: = R/O]
  1255.      STAT [filespec $R/O|R/W|SYS|DIR]
  1256.      STAT [filespec $S]
  1257.  
  1258. Purpose:
  1259.  
  1260. STAT returns information about files, disk drives, and other
  1261. peripheral devices attached to the computer.  STAT changes attributes
  1262. of drives and files.  STAT with no command tail returns free storage
  1263. space in kilobytes for the current drive, and also tells if the drive
  1264. is Read-Only )R/O) or Read-Write (R/W).  Use STAT to set the drive to
  1265. R/O and [Control][C] to reset it to R/W.  STAT filespec returns the
  1266. number of kilobytes used by a file, and the attributes of that file.
  1267. STAT filespec can, with an option, set a file or files to R/O, R/W,
  1268. SYS, or DIR.  STAT displays files set to SYS in parentheses.  STAT
  1269. DSK: shows the characteristics of the default or specified drive.
  1270. STAT USR: shows which user numbers contain files on a given disk.
  1271. STAT VAL: shows the possible commands and the external devices that
  1272. can be assigned to your computer.  STAT DEV: displays the current
  1273. logical device assignments.  STAT accepts wildcards in the command
  1274. tail.
  1275.  
  1276. Examples:
  1277.  
  1278.      A:STAT
  1279.      A:STAT [myfile.txt]
  1280.      A:STAT [C:letter.bak]
  1281.      A:STAT [genledgr.dat] = $R/O]
  1282.      A:STAT [*.com = $R/O]
  1283.      A:STAT [*.bak]
  1284.      A:STAT [B:*.*]
  1285.  
  1286. Options
  1287.  
  1288. R/W         Read-Write.
  1289. R/O         Read-Only.
  1290. SYS         System attribute.
  1291. DIR         No system attribute.
  1292. S           Display the size of the file or files based
  1293.             on last record numbers.
  1294. USR:        Display USER numbers containing files.
  1295. DSK:        Display characteristic of the drive.
  1296. VAL:        Display possible STAT commands and devices.
  1297. DEV:        Display current logical device assignments.
  1298.  
  1299. SUBMIT                       NOT INCLUDED IN PACKAGE
  1300.                           FOR DOCUMENTATION PURPOSES ONLY
  1301.  
  1302. Syntax:
  1303.  
  1304.      SUBMIT [filename][parameters]
  1305.  
  1306. Purpose:
  1307.  
  1308. SUBMIT starts execution of a file of CP/M commands, one command per
  1309. line in the file.  The SUBMIT file must have a filetype of .SUB.  Any
  1310. optional parameters following the file specification in the command
  1311. line, such as a drive or file specification, are substituted for their
  1312. corresponding formal parameters ($1,$2,...) in the SUBMIT file.
  1313.  
  1314. Note:  In the Emulator, command lines beginning with a semicolon (;)
  1315. are ignored in order to support command lines within SUBMIT files.
  1316. Also SUBMIT processing may be initiated from any drive.
  1317.  
  1318. Examples:
  1319.  
  1320.      A:SUBMIT START
  1321.      A:SUBMIT B:START
  1322.      A:SUBMIT START C:LETTER
  1323.  
  1324. In the preceding examples, START.SUB is the SUBMIT file.  The command
  1325. lines in START.SUB are not displayed here.  In the second example,
  1326. START.SUB is on Drive B.  In the last example, the actual parameters
  1327. C: and LETTER follow the SUBMIT filename.  SUBMIT>COM creates a
  1328. temporary file and substitutes the actual parameters in the command
  1329. line for the formal parameters ($1, $2,...) appearing in the SUBMIT
  1330. file START.SUB.  C: is substituted for any $1 parameters that appear
  1331. in the SUBMIT file.  START.SUB LETTER is substituted for any $2
  1332. parameters that appear in the START.SUB SUBMIT file.
  1333.  
  1334.  
  1335. TYPE
  1336.  
  1337. Syntax:
  1338.  
  1339.      TYPE [d:filename.typ]
  1340.  
  1341. Purpose:
  1342.  
  1343. TYPE displays the contents of an ASCII file on screen.  Press any key
  1344. to stop the display.  TYPE does not accept wildcard filespecs.
  1345. Entering a [Control][P] before the type command causes the output to
  1346. be echoed to the printer; another [Control][P] stops the printing.
  1347.  
  1348. Examples:
  1349.  
  1350.      A:TYPE [letter.dat]
  1351.      B:TYPE [a.document.law]
  1352.      B:TYPE [program.bas]
  1353.      a:TYPE [B:reader.asm]
  1354.  
  1355.  
  1356. USER
  1357.  
  1358. Syntax:
  1359.  
  1360.      USER n
  1361.  
  1362. Purpose:
  1363.  
  1364. USER with a number from 0 to 15 changes the current user number to the
  1365. number specified by n.  CP/M assumes a default user number of 0.  STAT
  1366. USR displays current and active users.
  1367.  
  1368. Note: In the Emulator, command files not found under the current user
  1369. are additionally searched under user 0.
  1370.  
  1371. Examples:
  1372.  
  1373.      B:USER 2
  1374.      A:USER 7
  1375.  
  1376.  
  1377. XSUB
  1378.  
  1379.  
  1380. Syntax:
  1381.  
  1382.      XSUB
  1383.  
  1384. Purpose:
  1385.  
  1386. XSUB, when used within a SUBMIT file, allows most programs to accept
  1387. input from command lines in the SUBMIT file rather than from the
  1388. console.  The XSUB command must appear before the command line that
  1389. invokes the program requiring console input.
  1390.  
  1391. Example:
  1392.  
  1393.      A:TYPE SAVER.SUB
  1394.      XSUB
  1395.      DDT
  1396.      |$1.HEX
  1397.      R
  1398.      GO
  1399.      SAVE 1 $2.COM
  1400.  
  1401. CP/M CONTROL CHARACTER SUMMARY
  1402.  
  1403. KEYSTROKE         ACTION
  1404.  
  1405. [CTRL][C]         Aborts the current program and performs a
  1406.                   warm start.
  1407. [CTRL][E]         Forces a physical carriage return, but
  1408.                   does not sent command to CP/M.
  1409. [CTRL][H]         Same as [Backspace].
  1410. [CTRL][J]         Line-feed; terminates input at the
  1411.                   console.
  1412. [CTRL][M]         Same as carriage return.
  1413. [CTRL][P]         Echoes all console activity at the
  1414.                   printer; a second [CTRL][P] ends printer
  1415.                   echo.
  1416. [CTRL][S]         Stops console listing temporarily;
  1417.                   [CTRL][S] resumes the listing.
  1418. [CTRL][X]         Deletes all characters in the command
  1419.                   line.
  1420. [CTRL][Z]         String or field separator.
  1421. [Backspace]       Moves cursor back one space; erases
  1422.                   previous character.
  1423. [DEL]             Same as [Backspace].
  1424. [Return]          Carriage return.
  1425.  
  1426. Note: In the Emulator, changed disks are automatically detected and
  1427. newly logged in.  [CTRL][C] is no longer necessary to log in new
  1428. disks.
  1429.  
  1430. CP/M FILETYPES
  1431.  
  1432. CP/M identifies every file by a unique file specification, which
  1433. consists of a drive specification, a filename, and a filetype.  The
  1434. filetype is an optional three character ending separated from the
  1435. filename by a period.  The filetype generally indicates a special kind
  1436. of file.  Common filetypes and their meanings follow.
  1437.  
  1438. FILETYPE    MEANING
  1439.  
  1440. ASM         Assembly language source file; the CP/M
  1441.             assembler, ASM, assembles or translates
  1442.             an .ASM file into machine language.
  1443.  
  1444. BAK         Back-up file created by text editor; the editor
  1445.             renames the source file with this filetype to
  1446.             indicate that the original file has been
  1447.             processed.  The original file stays on disk
  1448.             as the back-up file, so you can refer to it.
  1449.  
  1450. BAS         CBASIC (tm) program source file.
  1451.  
  1452. COM         8080 executable file.
  1453.  
  1454. HEX         Program file in Intel hexadecimal format.
  1455.  
  1456. INT         CBASIC program intermediate language file.
  1457.  
  1458. IRL         Indexed REL file produced by LIB.
  1459.  
  1460. LIB         Used by MAC (tm) and RMAC (tm) for macro
  1461.             libraries. The ED R command reads files of
  1462.             type LIB.  The ED X command writes files of
  1463.             type LIB.  Printable file displayable on
  1464.             console or printer.
  1465.  
  1466. OVL         Program overlay file.  PL/I-80 (tm) compiler
  1467.             overlays files; you can create overlay files
  1468.             with LINK-80 (tm).
  1469.  
  1470. PLI         PL/I-80 source program filetype.
  1471.  
  1472. PRN         Printable file displayable on console or
  1473.             printer.
  1474.  
  1475. REL         Relocatable file produced by RMAC and PL/I-80
  1476.             that can be linked by LINK-80.
  1477.  
  1478. SUB         Filetype required for submit file containing one
  1479.             or more CP/M commands.  The SUBMIT program
  1480.             executes commands in files of type SUB,
  1481.             providing a batch execution mode for CP/M.
  1482.  
  1483. SYM         Symbol table file.  MAC, RMAC, and LINK-80
  1484.             output files of type SYM.  SID (tm) and ZSID
  1485.             (tm) read files of type SYM.
  1486.  
  1487. TEX         Source file for TEX-80, the Digital Research
  1488.             text formatter.
  1489.  
  1490. XRF         Cross-reference file produced by XREF.
  1491.  
  1492. $$$         Temporary file.
  1493.  
  1494. CP/M MESSAGES
  1495.  
  1496. ? (DDT Error Message)
  1497.  
  1498. DDT.  This message appears when DDT does not understand the assembly
  1499. language instruction, the file cannot be opened, a checksum error
  1500. occurred in a .HEX file, or the assembler/disassembler was overlayed.
  1501.  
  1502.  
  1503. ABORTED
  1504.  
  1505. PIP.  You stopped a PIP operation by pressing a key.
  1506.  
  1507.  
  1508. ASM ERROR MESSAGES
  1509.  
  1510. D      Data Error:  Data statement element cannot be placed
  1511.        in specified data area.
  1512.  
  1513. E      Expression Error:  Expression cannot be evaluated
  1514.        during assembly.
  1515.  
  1516. L      Label Error:  Label cannot appear in this context
  1517.        (might be duplicate label).
  1518.  
  1519. N      Not implemented:  Unimplemented features such as
  1520.        macros are trapped.
  1521.  
  1522. O      Overflow:  Expression is too complex to evaluate.
  1523.  
  1524. P      Phase Error:  Label value changes on two passes
  1525.        through assembly.
  1526.  
  1527. R      Register Error:  Value specified as a register is
  1528.        incompatible with the code.
  1529.  
  1530. S      Syntax Error:  Improperly formed expression.
  1531.  
  1532. U      Undefined Label:  Label used does not exist.
  1533.  
  1534. V      Value Error:  Improperly formed operand encountered
  1535.        in an expression.
  1536.  
  1537.  
  1538. BAD DELIMITER
  1539.  
  1540. STAT.  Check command line for typing errors.
  1541.  
  1542.  
  1543. BAD LOAD
  1544.  
  1545. CCP error message, or SAVE error message.
  1546.  
  1547.  
  1548. BDOS ERR ON D:
  1549.  
  1550. Basic Disk Operating System (BDOS) Error on the designated drive.
  1551. CP/M replaces d: with the drive specification of the drive where the
  1552. rror occurred.  This message is followed by one of the four phrases in
  1553. the situations that follow.
  1554.  
  1555. Note:  The Basic Input/Output System (BIOS) passes codes to the BDOS.
  1556. These codes detrmine which messages the BDOS prints.  The BIOS is
  1557. dependent on the hardware and varies among computers.  Therefore, the
  1558. specific cause of these BDOS error messages can vary.
  1559.  
  1560.  
  1561. BREAK "x" AT C
  1562.  
  1563. ED. "x" is one of the symbols described below and C is the command
  1564. letter being executed when the error occurred.
  1565.  
  1566. #      Search failure.  ED cannot find the string specified
  1567.        in an F, S, or N command.
  1568.  
  1569. ?      Unrecognized command letter c.  ED does not recognize
  1570.        the indicated command letter, or an E, H, Q, or O
  1571.        command is not alone on its command line.
  1572.  
  1573. O      The file specified in an R command cannot be found.
  1574.  
  1575.        Buffer full.  ED cannot put any more characters in
  1576.        the memory buffer, or the string specified in an F,
  1577.        N, or S command is too long.
  1578.  
  1579. E      Command aborted.  A keystroke at the console aborted
  1580.        command execution.
  1581.  
  1582. F      Disk or directory full.  This error is followed by
  1583.        either the disk or directory-full message.  Refer
  1584.        to the recovery procedures listed under these
  1585.        messages.
  1586.  
  1587.  
  1588. CHECKSUM ERROR
  1589.  
  1590. PIP.  A Hex record checksum error was encountered.  The HEX record
  1591. that produced the error must be corrected, probably by recreating the
  1592. .HEX file.
  1593.  
  1594. CHECKSUM ERROR
  1595. LOAD ADDRESS hhhh
  1596. ERROR ADDRESS hhhh
  1597. BYTES READ:
  1598. hhhh:
  1599.  
  1600. LOAD:  File contains incorrect data.  Regenerate .HEX file from the
  1601. source.
  1602.  
  1603.  
  1604. COMMAND BUFFER OVERFLOW
  1605.  
  1606. SUBMIT.  The SUBMIT buffer allows up to 2048 characters in the input
  1607. file.
  1608.  
  1609.  
  1610. [COMMAND TEXT FOLLOWED BY]?
  1611.  
  1612. CP/M receives a command specifying a nonexistent drive.  CP/M
  1613. terminates the current program as soon as you press any key.  Press
  1614. [Return] or [Control][C] to recover.
  1615.  
  1616.  
  1617. COMMAND TOO LONG
  1618.  
  1619. SUBMIT.  A command in the SUBMIT file cannot exceed 125 characters.
  1620.  
  1621.  
  1622.  
  1623. CORRECT ERROR, TYPE RETURN OR CTRL-Z
  1624.  
  1625. PIP. A Hex record checksum was encountered during the transfer of a
  1626. .HEX file.  The .HEX file with the checksum error should be corrected,
  1627. probably by recreating the .HEX file.
  1628.  
  1629.  
  1630.  
  1631. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1632.  
  1633. This message appears when CP/M finds no disk in the drive, the disk is
  1634. improperly formatted or power to the drive is off.  Check for one of
  1635. these situations and try again.  This message can also indicate a
  1636. hardware problem or a worn or improperly formatted disk.  Press
  1637. [Control][C] to terminate the program and return to CP/M, or press
  1638. [Return] to ignore the error.
  1639.  
  1640.  
  1641. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1642.  
  1643. CP/M cannot write to the file.  This usually occurs because the disk
  1644. is write-protected.
  1645.  
  1646. ASM. An output file cannot be closed.  This is a fatal error that
  1647. terminates ASM execution.  Check to see that the disk is in the drive
  1648. and that the disk is not write-protected.
  1649.  
  1650. DDT. The disk file written by a W command cannot be closed.  This is a
  1651. fatal error that terminates DDT execution.  Check that the correct
  1652. disk is in the dirve, and that the disk is not write-protected.
  1653.  
  1654. SUBMIT.  This error can occur during SUBMIT file processing.  Check
  1655. that the correct system disk is in Drive A, and that the disk is not
  1656. write-protected.  The SUBMIT job can be restarted after rebooting
  1657. CP/M.
  1658.  
  1659.  
  1660. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1661.  
  1662. PIP.  PIP cannot read the specified source.  Reader cannot be
  1663. implemented.
  1664.  
  1665.  
  1666. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1667.  
  1668. PIP.  The destination specified in the PIP command is illegal.  You
  1669. probably specified an input device as a destination.
  1670.  
  1671.  
  1672. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1673.  
  1674. PIP.  The input disk file specified in a PIP command cannot be read
  1675. properly.  This is usually the result of an unexpected end-of-file.
  1676. Correct the problem in your file.
  1677.  
  1678.  
  1679. CPMZ80 ERROR ON DRIVE D: BAD SECTOR
  1680.  
  1681. ASM.  You specified a write-protected disk as the destination for the
  1682. .PRN and .HEX files, or the disk has no space left.  Correct the
  1683. problem before assembling your program.
  1684.  
  1685.  
  1686. CPMZ80 ERROR ON DRIVE D: FILE IS READ-ONLY
  1687.  
  1688. You tried to erase, rename, or set file attributes on a Read-Only
  1689. file.  The file should first be set to Read/Write (R/W) with the
  1690. command: STAT filespec $R/W.
  1691.  
  1692.  
  1693. CPMZ80 ERROR ON DRIVE #: SELECT FAILED
  1694.  
  1695. ED.  you typed the ED command without a filename.  Reenter the ED
  1696. command, followed by the name of the file you want to edit or create.
  1697.  
  1698.  
  1699. CPMZ80 ERROR ON DRIVE #: SELECT FAILED
  1700.  
  1701. CP/M received a command line specifying a nonexistent drive, or the
  1702. disk in the drive is improperly formatted.  CP/M terminates the
  1703. current program as soon as you press any key.
  1704.  
  1705.  
  1706. CPMZ80 ERROR ON DRIVE D: SELECT FAILED
  1707.  
  1708. ASM.  The assembler cannot find the file you specified.  Either you
  1709. mistyped the file specification in your command line, or the filetype
  1710. is not ASM.
  1711.  
  1712.  
  1713. DESTINATION IS R/O, DELETE (Y/N)?
  1714.  
  1715. PIP.  The destination file specified in a PIP command already exists,
  1716. and is Read-Only.  If you type Y, the destination file is deleted
  1717. before the file copy is done.
  1718.  
  1719.  
  1720. DIRECTORY FULL
  1721.  
  1722. ED.  There is not enough directory space for the file being written to
  1723. the destination disk.  you can use the OXfilespec command to erase any
  1724. unnecessary files on the disk without leaving the editor.
  1725.  
  1726. SUBMIT.  There is not enough directory space to write the $$$.SUB file
  1727. on Drive A, which is used for processng SUBMITs.  Erase some files or
  1728. use a new disk and retry.
  1729.  
  1730.  
  1731. DISK FULL
  1732.  
  1733. ED.  There is not enough disk space for the output file.  This error
  1734. can occur on the W,E,H, or X commands.  If it occurs with an X
  1735. command, you can repeat the command, prefixing the filename with a
  1736. different drive.
  1737.  
  1738.  
  1739. DISK WRITE ERROR - [FILESPEC]
  1740.  
  1741. DDT.  A disk-write operation cannot be successfully performed during a
  1742. W command, probably due to a full disk.  You should either erase some
  1743. unnecessary files or use another disk with more space.
  1744.  
  1745. PIP.  A disk-write operation cannot be successfully performed during a
  1746. PIP command, probably due to a full disk.  You should either erase
  1747. some unnecessary files or use another disk with more space and execute
  1748. PIP again.
  1749.  
  1750. SUBMIT.  The SUBMIT program cannot write the $$$.SUB file to the disk.
  1751. Erase some files or use a new disk and try again.
  1752.  
  1753.  
  1754. ERROR: CANNOT OPEN SOURCE,
  1755. LOAD ADDRESS hhhh
  1756.  
  1757. LOAD.  Caused by an error code returned by a BDOS function call.  Disk
  1758. might be write-protected.
  1759.  
  1760.  
  1761. ERROR: CANNOT OPEN SOURCE,
  1762. LOAD ADDRESS hhhh
  1763.  
  1764. LOAD.  Cannot find source file.  Check disk directory.
  1765.  
  1766.  
  1767. ERROR: DISK READ, LOAD ADDRESS hhhh
  1768.  
  1769. LOAD.  Caused by an error code returned by a BDOS function call.
  1770.  
  1771.  
  1772. ERROR: DISK WRITE, LOAD ADDRESS hhhh
  1773.  
  1774. LOAD.  Destination disk is full.
  1775.  
  1776.  
  1777. ERROR: INVERTED LOAD ADDRESS,
  1778. LOAD ADDRESS hhhh
  1779.  
  1780. LOAD.  The address of a record was too far from the address of the
  1781. previously processed record.  This is an internal limitation of LOAD,
  1782. but it can be circumvented.  Use DDT to read the .HEX file into
  1783. memory, then use a SAVE command to store the memory image file on
  1784. disk.
  1785.  
  1786.  
  1787. ERROR: NO MORE DIRECTORY SPACE,
  1788. LOAD ADDRESS hhhh
  1789.  
  1790. LOAD.  Disk directory is full.
  1791.  
  1792.  
  1793. ERROR ON LINE nnn MESSAGE
  1794.  
  1795. SUBMIT.  The SUBMIT program displays its messages in the format shown
  1796. above, where nnn represents the line number of the SUBMIT file.  Refer
  1797. to the message following the line number (messages will vary).
  1798.  
  1799. FILE ERROR
  1800.  
  1801. ED.  Disk or directory is full, and ED cannot write anything more on
  1802. the disk.  This is a fatal error, so make sure there is enough space
  1803. on the disk to hold a second copy of the file before invoking ED.
  1804.  
  1805.  
  1806. FILE EXISTS
  1807.  
  1808. You asked CP/M to create or rename a file using a file specification
  1809. that is already assigned to another file.  Either delete the existing
  1810. file or use another file specification.
  1811.  
  1812. REN.  The new name specified is the name of a file that already
  1813. exists.  You cannot rename a file with the name of an existing file.
  1814. If you want to replace an existing file with a newer version of the
  1815. same file, either rename or erase the existing file, or use the PIP
  1816. utility.
  1817.  
  1818.  
  1819. FILE EXISTS, ERASE IT
  1820.  
  1821. ED.  The destination filename already exists when you are placing the
  1822. destination file on a different disk than the source.  It should be
  1823. erased, or another disk selected to receive the output file.
  1824.  
  1825.  
  1826. ** FILE IS READ/ONLY **
  1827.  
  1828. ED.  The file specified in the command to invoke ED is Read-Only.  ED
  1829. can read the file so that you can examine it, but ED cannot change a
  1830. Read-Only file.
  1831.  
  1832.  
  1833. FILE NOT FOUND
  1834.  
  1835. CP/M cannot find the specified file.  Check that you have entered the
  1836. correct drive specification and that you have the correct disk in the
  1837. drive.
  1838.  
  1839. ED.  ED cannot find the specified file.  Check that you have entered
  1840. the correct drive specification and that you have the correct disk in
  1841. the drive.
  1842.  
  1843. STAT.  STAT cannot find the specified file.  The message might appear
  1844. if you omit the drive specification.  Check that the correct disk is
  1845. in the drive.
  1846.  
  1847. hhhh?? = dd
  1848.  
  1849. DDT.  The ?? indicates DDT does not know how to represent the
  1850. hexadecimal value dd encountered at address hhhh in 8080 assembly
  1851. language.  dd is not an 8080 machine instruction opcode.
  1852.  
  1853.  
  1854. INSUFFICIENT MEMORY
  1855.  
  1856. DDT.  There is not enought memory to load the file specified in an R
  1857. or E command.
  1858.  
  1859.  
  1860. INVALID CONTROL CHARACTER
  1861.  
  1862. SUBMIT.  The only valid control characters in the SUBMIT file of type
  1863. SUB are A through Z.  Note that in a SUBMIT file, the control
  1864. character is represented by typing the circumflex, not by pressing the
  1865. [Control] key.
  1866.  
  1867.  
  1868. INVALID DIGIT: STRING
  1869.  
  1870. PIP.  An invalid hex digit has been encountered while reading a .HEX
  1871. file.  The hex file with the invalid .HEX digit should be corrected,
  1872. probably by recreating the .HEX file.
  1873.  
  1874.  
  1875. INVALID DISK ASSIGNMENT
  1876.  
  1877. STAT.  You specified an invalid drive or file assignment, or
  1878. misspelled a device name.  This error message might be followed by a
  1879. list of the valid file assignments that can follow a filename.  If an
  1880. invalid drive assignment was attempted, the message "Use: d: = RO" is
  1881. displayed showing the proper syntax for drive assignments.
  1882.  
  1883.  
  1884. INVALID DISK ASSIGNMENT
  1885.  
  1886. STAT.  Might appear if you follow the drive specification with
  1887. anything except = R/O.
  1888.  
  1889.  
  1890. INVALID DRIVE NAME (USE A, B, C, OR D)
  1891.  
  1892. SYSGEN.  SYSGEN recognizes only drives A, B, C, and D as valid
  1893. destinations for system generation.
  1894.  
  1895.  
  1896. INVALID FILE INDICATOR
  1897.  
  1898. STAT.  Appears if you do not specify RO, RW, DIR, or SYS.
  1899.  
  1900.  
  1901. INVALID FORMAT: [FILESPEC]
  1902.  
  1903. PIP.  The format of your PIP command is illegal.  See the description
  1904. of the PIP command.
  1905.  
  1906.  
  1907. INVALID FORMAT: [FORMAT STRING]
  1908.  
  1909. PIP.  You have placed an invalid character for a separator between two
  1910. input filenames.
  1911.  
  1912. INVALID FORMAT: SYNTAX
  1913.  
  1914. PIP.  You entered an illegal parameter in a PIP command.  Retype the
  1915. entry correctly.
  1916.  
  1917.  
  1918. INVALID HEX DIGIT
  1919. LOAD ADDRESS hhhh
  1920. ERROR ADDRESS hhhh
  1921. BYTES READ:
  1922. hhhh
  1923.  
  1924.  
  1925. INVALID MEMORY SIZE
  1926.  
  1927. MOVCPM.  Specify a value less than 64K or your computer's actual
  1928. memory size.
  1929.  
  1930.  
  1931. N?
  1932.  
  1933. LOAD.  File contains incorrect .HEX digit.
  1934.  
  1935. USER.  You specified a number greater than 15 for a user area number.
  1936. For example, if you type USER 16[cr], the screen displays 16?.
  1937.  
  1938.  
  1939. NO DIRECTORY SPACE
  1940.  
  1941. ASM.  The disk directory is full.  Erase some files to make room for
  1942. .PRN and .HEX files.  The directory can usually hold only 64
  1943. filenames.
  1944.  
  1945.  
  1946. NO DIRECTORY SPACE - [FILESPEC]
  1947.  
  1948. PIP.  There is not enough directory space for the output file.  you
  1949. should either erase some unnecessary file or get another disk with
  1950. more directory space and execute PIP again.
  1951.  
  1952.  
  1953. NO FILE: = [FILESPEC]
  1954.  
  1955. DIR, ERA, REN, PIP.  CP/M cannot find the specified file, or no files
  1956. exist.
  1957.  
  1958. ASM.  The indicated source or include file cannot be found on the
  1959. disk.
  1960.  
  1961. DDT.  The file specified in an R or E command cannot be found on the
  1962. disk.
  1963.  
  1964.  
  1965. NO FILE: = [FILESPEC]
  1966.  
  1967. PIP.  An input file that you have specified does not exist.
  1968.  
  1969.  
  1970. NO INPUT FILE PRESENT ON DISK
  1971.  
  1972. DUMP.  The file you requested does not exist.
  1973.  
  1974.  
  1975. NO MEMORY
  1976.  
  1977. There is not enough memory available for loading the program
  1978. specified.
  1979.  
  1980.  
  1981. NO SUB FILE PRESENT
  1982.  
  1983. SUBMIT.  For SUBMIT to operate properly, you must create a file with
  1984. filetype of SUB.  The SUB file contains usual CP/M commands.  Use one
  1985. command per line.
  1986.  
  1987.  
  1988. NOT FOUND: [FILESPEC,#]
  1989.  
  1990. PIP.  You have specified a user number greater than 15.  User numbers
  1991. are in the range of 0 to 15.
  1992.  
  1993.  
  1994. ** NOT DELETED **
  1995.  
  1996. PIP.  PIP did not delete the file, which might have had the R/O
  1997. attribute.
  1998.  
  1999.  
  2000. PARAMETER ERROR
  2001.  
  2002. SUBMIT.  Within the SUBMIT file of type SUB, valid parameters are $0
  2003. through $9.
  2004.  
  2005.  
  2006. QUIT NOT FOUND: - [FILESPEC]
  2007.  
  2008. PIP.  The string argument to a Q parameter was not found in your input
  2009. file.
  2010.  
  2011.  
  2012. READ ERROR
  2013.  
  2014. TYPE.  An error occurred when reading the file specified in the type
  2015. command.  Check the disk and try again.  The STAT filespec command can
  2016. diagnose trouble.
  2017.  
  2018.  
  2019. READER STOPPING
  2020.  
  2021. PIP.  Reader operation interrupted.
  2022.  
  2023.  
  2024. RECORD TOO LONG
  2025.  
  2026. PIP.  PIP cannot process a record longer than 128 bytes.
  2027.  
  2028.  
  2029. SOURCE FILE NAME ERROR
  2030.  
  2031. ASM.  When you assemble a file, you cannot use the wildcard characters
  2032. * and ? in the filename.  Only one file can be assembled at a time.
  2033.  
  2034.  
  2035. START NOT FOUND = [FILESPEC]
  2036.  
  2037. PIP.  The string argument to an S parameter cannot be found in the
  2038. source file.
  2039.  
  2040.  
  2041. CHAPTER 3
  2042. CP/M AND CP/M-Z80 EMULATOR TECHNICAL REFERENCE
  2043.  
  2044. EMULATOR IMPLEMENTATION
  2045.  
  2046. The Emulator is completely written in assembly language and maximally
  2047. uses the large register frame of the MC 68000.
  2048.  
  2049. Z80 I/0 opcodes are supported by a built-in interface of user-supplied
  2050. drivers.
  2051.  
  2052.  
  2053. NOTES ON CPM-Z80 EMULATOR CCP IMPLEMENTATION
  2054.  
  2055. The Console Command Processor (CCP) is CP/M 2.2 upward compatible but
  2056. enhanced in many respects.
  2057.  
  2058. User Memory (TPA) is 58K ("63K CP/M").
  2059.  
  2060.  
  2061. EMULATOR BDOS IMPLEMENTATION
  2062.  
  2063. The BDOS system interface is totally compatible with CP/M 2.2.  Full
  2064. implementation of the BIOS interface permits application programs to
  2065. use direct BIOS access (even disk related).
  2066.  
  2067. Changed disks are automatically detected and newly logged in.  The
  2068. [Control] [C] command is no longer necessary.
  2069.  
  2070. With disk read and write errors, the user can optionally abort, retry,
  2071. or ignore the error.
  2072.  
  2073.  
  2074. EMULATOR BIOS IMPLEMENTATION
  2075.  
  2076. The BIOS functions are directed to 68000 routines which use the TOS
  2077. BIOS.
  2078.  
  2079. All physical I/O devices implemented under TOS are accessible under
  2080. the CPM-Z80 Emulator.  The printer port is mapped to the CPM-Z80 LST:
  2081. device; the TTY device corresponds to the modem port; the floppy
  2082. drives act as A: and B: drives under the Emulator; and the CON: device
  2083. accesses the keyboard and screen of the ATARI ST Computer.
  2084.  
  2085. A fully implemented CP/M 2.2 compatible I/O byte allows the user to
  2086. change the logical to physical I/O device-mapping.
  2087.  
  2088.  
  2089. EMULATOR PERFORMANCE
  2090.  
  2091. The time ratio (Emulator/Z80) between the Emulator on an 8MHz 68000
  2092. system and a 4MHz Z80 system was measured for some CP/M 2.2 programs:
  2093.  
  2094. Extreme Values:  0.6 and 6.0
  2095. Average:         2.0
  2096.  
  2097.  
  2098. EMULATOR INTERFACE TO USER I/O
  2099.  
  2100. A special interface is provided to line 68000 hardware I/O to Z80
  2101. programs. A user-supplied I/O driver can optionally be activated.
  2102. When you boot the Emulator, it looks for the file EMUIO.PRG.  The
  2103. Emulator tries to open this file and loads it.  If the file was loaded
  2104. successfully, the I/O driver is activated and the Emulator displays
  2105. the message:
  2106.  
  2107. Emulator I/O driver installed.
  2108.  
  2109. If a hardware I/O driver cannot be found, Z80 I/0 opcodes in emulated
  2110. programs lead to the message:
  2111.  
  2112. Emulator error =>  Illegal opcode : XX XX  at address : XXXX
  2113.  
  2114. and the Emulator is aborted.
  2115.  
  2116.  
  2117. GENERAL RESTRICTIONS
  2118.  
  2119. The Emulator does not support any undocumented Z80 opcodes or
  2120. hardware-dependant opcodes such as interrupt control.  If the Emulator
  2121. finds such opcodes in emulated programs, it aborts with the message
  2122.  
  2123. Emulator error =>  Illegal opcode : XX XX  at address : XXXX
  2124.  
  2125.  
  2126. EMULATOR I/O DRIVER CONVENTIONS
  2127.  
  2128. If a user-driver is activated, the Z80 I/O opcodes are directed into
  2129. this driver.  The driver has to be a user-coded 68000 program with the
  2130. following conventions:
  2131.  
  2132. The driver code must begin with two jump instructions.  The first jump
  2133. is used by all input requests and the second by all output requests.
  2134. These jumps lead to the user input and output service routines.  These
  2135. routines terminate with a Return To Subroutine (RTS) instruction.
  2136.  
  2137. The input routine receives the Z80 port number in the low byte of
  2138. register D0, and must return the input value in the low byte of D0.
  2139.  
  2140. The output routine receives the Z80 port number in the low byte of
  2141. register D0, and the output value in the low byte of D1.
  2142.  
  2143. All registers may be used within the user-driver.  The user-driver
  2144. must be supplied as a TOS ".PRG" file.  The following is a user I/O
  2145. driver example:
  2146.  
  2147. This simple 68000 code example shows how to access 16 contiguous I/0
  2148. ports from startaddress $FFFF81 through $FFFF9F on odd addresses.  For
  2149. example, the Z80 instruction IN A,(07H) in an emulated program would
  2150. read a byte from 68000 address $FFFF8F.
  2151.  
  2152.               .TEXT
  2153.  
  2154.     IOBASE:   .EQU    $FFFF80
  2155.  
  2156.     IO:       JMP     INPUT
  2157.               JMP     OUTPUT
  2158.  
  2159.     INPUT:    MOVE.L  #IOBASE,A0
  2160.               AND.W   #$000F,D0
  2161.               ADD.W   D0,D0
  2162.               MOVE.B  1(A0,D0.W),D0
  2163.               RTS
  2164.  
  2165.     OUTPUT:   MOVE.L  #IOBASE,A0
  2166.               AND.W   #$000F,D0
  2167.               ADD.W   D0,D0
  2168.               MOVE.B  D1,1(A0,D0.W)
  2169.               RTS
  2170.  
  2171.              .END
  2172.  
  2173. CP/M BDOS FUNCTION SUMMARY>
  2174.  
  2175. No.  Hex   Function Name        Input         Output
  2176.  
  2177.  0   00H   Sys Reset            None          None
  2178.  1   01H   Con Input            None          A=char
  2179.  2   02H   Con Output           E=char        None
  2180.  3   03H   Reader Input         None          A=char
  2181.  4   04H   Punch Output         E=char        None
  2182.  5   05H   List Output          E=char        None
  2183.  6   06H   Direct Con I/O *     E=0FEH inpt   A=0 or Char
  2184.                                 0FEH stat     0 or nonzero
  2185.                                 Char outpt    No value
  2186.  7   07H   Get I/O Byte         None          A=IOBYTE
  2187.  8   08H   Set I/O Byte         E=IOBYTE      None
  2188.  9   09H   Print String         DE=.Buffer    None
  2189. 10   0AH   Read Con Buf         DE=.Buffer    Chars in Buf
  2190. 11   0BH   Get Con Status       None          A=00/nonzero
  2191. 12   0CH   Rtn Version #        None          HL=Vers **
  2192. 13   0DH   Reset Disk Sys       None          None
  2193. 14   0EH   Select Disk          E=Disk Num    None
  2194. 15   0FH   Open File            DE=.FCB       A=Dir Code
  2195.                                               A=FF if
  2196.                                               not found
  2197. 16   10H   Close File           DE=.FCB       A=Dir Code
  2198.                                               A=FF if
  2199.                                               not found
  2200. 17   11H   Search for First     DE=.FCB       A=Dir Code
  2201.                                               A=FF if
  2202.                                               not found
  2203. 18   12H   Search for Next      None          A=Dir Code
  2204.                                               A=FF if
  2205.                                               not found
  2206. 19   13H   Delete File          DE=FCB        A=Dir Code
  2207.                                               A=FF if code
  2208.                                               not found
  2209. 20   14H   Read Seq             DE=FCB        A=0 if ok
  2210.                                               A=Err Code
  2211. 21   15H   Write Seq            DE=FCB        A=0 if ok
  2212.                                               A=Err Code
  2213. 22   16H   Make File            DE=FCB        A=Dir Code
  2214.                                               A=FF if no
  2215.                                               Dir space
  2216. 23   17H   Rename File          DE=FCB        A=Dir Code
  2217.                                               A=FF if
  2218.                                               not found
  2219. 24   18H   Rtn Login Vect       None          HL= Login
  2220.                                               Vect **
  2221. 25   19H   Rtn Cur Disk         None          A=Cur Disk #
  2222. 26   1AH   Set DMA Addr         DE=DMA        None
  2223. 27   1BH   Get Addr(Alloc)      None          HL=Login
  2224. 28   1CH   Write Prot Disk      None          None
  2225. 29   1DH   Get R/O Vect         None          HL=R/O Vect **
  2226. 30   1EH   Set File Attrib      DE=FCB        None
  2227. 31   1FH   Get Addr
  2228.            (dsk parm)
  2229. 32   20H   Set/Get Usr Code     E=0FFH GET    User #
  2230.                                 E=0-0FH SET
  2231. 33   21H   Read Ran             DE=FCB        A=Err Code
  2232. 34   22H   Write Ran            DE=FCB        A=Err Code
  2233. 35   23H   Compute File Size    DE=FCB        r0,r1,r2
  2234. 36   24H   Set Ran Rec          DE=FCB        r0,r1,r2
  2235. 37   25H   Reset Drive  ***     DE=drv vect   A=0
  2236. 40   28H   Write Ran w/Fill     DE=FCB        A=Err Code
  2237.  
  2238.   *Note that function 6 must be used with functions
  2239.    1,2,9, or 11
  2240.  **Note that A=L and B=H upon return
  2241. ***Default drive cannot be reset.
  2242.  
  2243. The preceding table used these abbreviations
  2244.  
  2245. Addr      =        Address
  2246. Alloc     =        Allocation
  2247. Attrib    =        Attribute
  2248. Buf       =        Buffer
  2249. Char      =        ASCII Character
  2250. Con       =        Console
  2251. Cur       =        Current
  2252. Dir       =        Directory
  2253. Dsk       =        Disk
  2254. Err       =        Error
  2255. Parm      =        Parameter
  2256. Prot      =        Protect
  2257. Ran       =        Random
  2258. Rec       =        Record
  2259. Rtn       =        Return
  2260. Seq       =        Sequential
  2261. Stat      =        Status
  2262. Sys       =        System
  2263. Usr       =        User
  2264. Vect      =        Vector
  2265. Vers      =        Version
  2266.  
  2267.  
  2268. *END OF MANUAL*
  2269. əəəəəəəəəəə