home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / cpc / cpcemu / cpcemu_e.txt < prev    next >
Text File  |  1995-04-16  |  126KB  |  3,267 lines

  1.  
  2.     ▓▓▓▓▓▓▒  ▓▓▓▓▓▓▓▓▒▒      ▓▓▓▓▓▓▒   ▓▓▓▓▓▓▓▓▒  ▓▓▓▓    ▓▓▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  3.   ▓▓▒▒▒▒▒▒   ▓▓▒▒▒▒▒▓▓▒▒   ▓▓▒▒▒▒▒▒    ▓▓▒▒▒▒▒▒   ▓▓▒▓▓  ▓▓▒▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  4.  ▓▓▒▒        ▓▓▒▒   ▓▓▒▒  ▓▓▒▒         ▓▓▒▒▒      ▓▓▒▒ ▓▓▒▒ ▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  5.  ▓▓▒▒        ▓▓▓▓▓▓▓▓▒▒   ▓▓▒▒         ▓▓▓▓▓▓▓▓▒  ▓▓▒▒ ▒▒▒  ▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  6.  ▓▓▒▒        ▓▓▒▒▒▒▒▒     ▓▓▒▒         ▓▓▒▒▒▒▒▒   ▓▓▒▒      ▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  7.   ▓▓▒▒       ▓▓▒▒          ▓▓▒▒        ▓▓▒▒       ▓▓▒▒      ▓▓▒▒  ▓▓▒▒     ▓▓▒▒
  8.     ▓▓▓▓▓▓▒  ▓▓▒▒            ▓▓▓▓▓▓▒   ▓▓▓▓▓▓▓▓▒  ▓▓▒▒      ▓▓▒▒   ▓▓▓▓▓▓▓▓▓▒▒
  9.     ▒▒▒▒▒▒▒  ▒▒▒▒            ▒▒▒▒▒▒▒   ▒▒▒▒▒▒▒▒▒  ▒▒▒▒      ▒▒▒▒   ▒▒▒▒▒▒▒▒▒▒
  10.  
  11.                                                                       v1.3
  12.  
  13.  
  14.                                   D O C U M E N T A T I O N
  15.  
  16.  
  17.                                   (c) Marco Vieth, April 1995
  18.  
  19.  
  20.  
  21.  
  22. -------------------------------------------------------------------------------
  23.  
  24.  
  25.  
  26.  
  27. Table of Contents:
  28.  
  29.        1.  Introduction
  30.            1.1  Hints how you should read this documentation
  31.            1.2  Copyright, guaranty
  32.            1.3  What is a CPC ?
  33.            1.4  What does CPCEMU offer you ?
  34.  
  35.        2.  Installation of CPCEMU
  36.            2.1  Files which comprise the CPCEMU package
  37.            2.2  Requirements and installation
  38.            2.3  Hints about memory and soundcard
  39.              2.3.1  Using EMS Memory
  40.              2.3.2  Defining the BLASTER environment
  41.  
  42.        3.  Differences between CPC and CPCEMU
  43.            3.1  Keyboard
  44.            3.2  Loading of Programs, Menus
  45.              3.2.1  Loading from Disk, Menus
  46.                     - The Insert Disk Menu
  47.                     - The File-Selection Menu
  48.              3.2.2  Loading from and saving on cassette
  49.              3.2.3  Loading and saving of snapshots
  50.  
  51.        4.  Changing the Configuration
  52.            4.1  The setup menu
  53.            4.2  The configuration file
  54.            4.3  Command line parameters
  55.  
  56.        5.  Data Transfer CPC <-> PC
  57.            5.1  The disk as a media
  58.              5.1.1  The disk transfer program CPCTRANS
  59.              5.1.2  The format- and copy-utility 22DISK by SYDEX
  60.            5.2  The parallel interface
  61.              - The parallel adapter
  62.            5.3  The serial interface
  63.            5.4  Other possibilities
  64.  
  65.        6.  Sources of Supply, Help Line, Acknowledgments
  66.            6.1  Where can I get CPC software ?
  67.            6.2  News, exchange experiences
  68.            6.3  If you have questions or suggestions
  69.            6.4  Other Amstrad CPC emulators
  70.            6.5  Plans for future releases of CPCEMU
  71.            6.6  Acknowledgments
  72.            6.7  Registered trademarks
  73.  
  74.        7.  Internal Information about CPCEMU
  75.            "Black Box", with its own table of contents
  76.  
  77.  
  78.        Appendix:
  79.  
  80.        A.1  Glossary
  81.        A.2  Bibliography
  82.        A.3  Index
  83.  
  84.  
  85. ---------------------------
  86.  
  87.  
  88.  
  89.  
  90.  
  91. 1.  Introduction
  92. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  93.  
  94.  
  95. Welcome to the would of emulators!
  96.  
  97. What! You want to know what CPCEMU is, and what you can do with the strange
  98. program with yellow writing on a blue screen, displaying "Syntax Error" after
  99. every input?
  100.  
  101.  
  102. Well, to avoid long searching, here it comes:
  103.         CPCEMU emulates an Amstrad CPC 464, 664 or 6128 with many
  104.         extensions. In other words, the program imitates the
  105.         behaviour of the older Amstrad computers on your new PC.
  106.  
  107. For what purpose?
  108. Well yes, if you still have no idea, then you will not need CPCEMU.
  109.  
  110. Some reasons:
  111.         - nostalgia (oh, how nice my good old CPC was ...)
  112.         - better performance compared to the original
  113.         - better environment to develop programs
  114.         - playing games
  115.         - work (yes, a CPC is good enough for simple text processing)
  116.         - [                                  ] <- insert other reasons
  117.                                                   of your own.
  118.  
  119.  
  120.  
  121.  
  122. 1.1  Hints how you should read this documentation
  123. =================================================
  124.  
  125.   I have tried to write clearly arranged documentation. But, if you still
  126.   have questions (after reading it several times!), you can contact me.
  127.   You can certainly do that too, even if everything is clear to you.
  128.   Look at chapter 6 (Sources of Supply, ...).
  129.  
  130.   In chapter 1 (Introduction) I describe how to read this documentation,
  131.   who has the copyright and some things about the CPC in general.
  132.  
  133.   In chapter 2 (Installation) it finally starts. You will read how to
  134.   install and start CPCEMU.
  135.  
  136.   Chapter 3 (Differences between CPC and CPCEMU) deals with features you
  137.   should know about if you are familiar with a real CPC and want to use the
  138.   emulator now. Mainly I will describe keyboard, disks, cassettes and
  139.   snapshots.
  140.  
  141.   In chapter 4 (Changing the Configuration) I describe how to set up CPCEMU
  142.   for your needs. Maybe your most liked program will run now.
  143.  
  144.   In chapter 5 (Data Transfer CPC <-> PC) you find out how to to get your
  145.   old CPC programs on to the PC. Also, the utilities that come with CPCEMU
  146.   are described.
  147.  
  148.   In chapter 6 (Sources Of Supply, Help Line, Acknowledgments) it tells you
  149.   how to get the latest version of CPCEMU and whom you can ask if you have
  150.   any questions.
  151.  
  152.   Chapter 7 (Internal Information about CPCEMU) is for professionals only.
  153.   The "official" part for the user has ended before this chapter. I
  154.   describe how to program such an emulator and what you need to know. I
  155.   also describe the debug menu of CPCEMU, which allows you to analyze
  156.   the processor and memory at *any* time. Casual users should skip this
  157.   chapter, at least when first reading.
  158.  
  159.   In appendix A.1 there is a glossary with descriptions of the most
  160.   important technical terms. Appendix A.2 is the bibliography and A.3 is
  161.   the index.
  162.  
  163.  
  164.  
  165. 1.2  Copyright, guaranty
  166. ========================
  167.  
  168.   CPCEMU was developed by:
  169.  
  170.          Marco Vieth
  171.          Auf dem Uekern 4
  172.          33165 Lichtenau
  173.          Germany
  174.  
  175.  
  176.   CPCEMU is Freeware, that means you can give the program to friends and
  177.   acquaintances for *free*. Archive maintainers are allowed to include
  178.   CPCEMU in their program collections for "downloading".
  179.   Shareware distributors are allowed to make use of CPCEMU, if they only
  180.   take a small fee for copying from their clients.
  181.   Compared to Public Domain, Freeware does not mean that it is "free"
  182.   and you can do anything with it. The copyright still belongs to me.
  183.  
  184.   All software and documentation is provided "as is" without warranty
  185.   of any kind.
  186.  
  187.  
  188.   Although this program is freeware, I would certainly accept any sort of
  189.   support, technical or financial.
  190.   See chapter 6 for more details.
  191.  
  192.  
  193.  
  194. 1.3  What is a CPC ?
  195. ====================
  196.  
  197.   If you already know what a CPC is, simply skip this section and
  198.   continue reading with 1.4.
  199.  
  200.  
  201.  
  202.  
  203.   Still here?
  204.  
  205.   I do not want to "dissect" the CPC now, I will only give a retrospective
  206.   view so that you can understand what a CPC is.
  207.  
  208.   CPC is abbreviation for Colour Personal Computer. Computers of this type
  209.   were first built in 1984 by the british company Amstrad and sold under
  210.   different names in other countries.
  211.   It was the period of the home computer; Commodore C64, Sinclair Spectrum,
  212.   Atari 800XL ..., when the CPC 464 was born. It had as much RAM as the
  213.   Commodore C64 (namely 64 KB), a built in cassette recorder and Locomotive
  214.   BASIC 1.0.
  215.   What followed was the CPC 664 with a built-in 3" disk drive and slightly
  216.   extended Locomotive BASIC 1.1.
  217.   The CPC 6128 came in 1985, with 128 KB RAM and nearly the same features
  218.   as the CPC 664.
  219.   3" disks were awfully expensive, but more stable than the 5.25" disks
  220.   (nearly as stable as today's 3.5"), and besides, it was noticably faster
  221.   compared to the tape, not as it was with the C64 ...
  222.   All three types were sold with either a colour or a green monitor, with
  223.   integrated power supply.
  224.   In the meantime there were two or three other types (the CPC+ for
  225.   example).
  226.   The BASIC was with nearly 178 instructions powerful and fast. One could
  227.   program graphics, sound and even interrupt handling all in BASIC and
  228.   avoiding PEEKs and POKEs.
  229.   The software supply increased during the years.
  230.  
  231.  
  232.  
  233.  
  234. 1.4  What does CPCEMU offer you ?
  235. =================================
  236.  
  237.   The following is a short overview of what CPCEMU offers you. In the next
  238.   sections of the documentation the meaning is described more clearly.
  239.  
  240.   Graphics in 3 different screen modes (X x Y x COLOURS):
  241.  
  242.        Mode 0: 180x200x16
  243.        Mode 1: 320x200x4
  244.        Mode 2: 640x200x2
  245.  
  246.   Sound: either through the PC-speaker or a Soundblaster (3 channel, stereo)
  247.  
  248.   Memory:
  249.        ROM: OS, BASIC, AMSDOS, up to circa 13 additional ROMs (with EMS)
  250.        RAM: 64KB, 128KB, up to 576KB Dk'tronics compatible RAM (with EMS)
  251.  
  252.   Disk: Special disk images, with the extension .DSK
  253.  
  254.   Cassette: Standard files under DOS, e.g. CPC BASIC- and binary files
  255.        with the extensions .BAS and .BIN respectively.
  256.  
  257.   Snapshots: You can make memory dumps of running programs in order to
  258.        continue them later. Snapshots have the extension .SNA .
  259.  
  260.   Speed: On a 386/33 with EMS-memory CPCEMU is faster than the original.
  261.        With a realtime mode you can slow down the emulation to exact
  262.        CPC speed.
  263.  
  264.  
  265.  
  266.  
  267. 2.  Installation of CPCEMU
  268. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  269.  
  270. In this chapter you will learn, how to install and start CPCEMU.
  271. In 2.2 you will read some hints about using EMS memory and the
  272. Soundblaster environment.
  273. Full user defined installation with the configuration file is described
  274. later in chapter 4 (Changing the Configuration).
  275.  
  276.  
  277.  
  278. 2.1  Files which comprise the CPCEMU package
  279. ============================================
  280.  
  281.   You have received the CPCEMUxx.xxx package with the following files:
  282.   (I have put the directories in brackets where you will find the files
  283.   after installation.)
  284.  
  285.   COPYMATE.ROM   ROM with a copy program (ROM)
  286.   CPC464.BAT     a CPC 464
  287.   CPC464.ROM     ROM (firmware+BASIC) of a CPC 464 (ROM)
  288.   CPC664.BAT     ditto, but for CPC 664
  289.   CPC664.ROM     (ROM)
  290.   CPC6128.BAT    ditto, but for CPC 6128
  291.   CPC6128.ROM    (ROM)
  292.   CPCADOS.ROM    AMSDOS for all CPCs (ROM)
  293.   CPCEMU.CFG     the configuration file for all CPCs (or CPCEMU0.CFG)
  294.   CPCEMU.DBF     database with pokes
  295.   CPCEMU.HLP     help file, displayed when you press F1
  296.   CPCEMU.EXE     the emulator
  297.   CPCEMU_D.TXT   German documentation
  298.   CPCEMU_E.TXT   English documentation (this file)
  299.   CPCEMU_F.TXT   French documentation (introduction)
  300.   CPCPARA.BAS    Locomotive-BASIC program for the parallel adapter (UTILITY)
  301.   CPCPD1.DSK     disk image with some example Public Domain programs (DISC)
  302.   CPCREC.BAS     Locomotive-BASIC program to receive programs (UTILITY)
  303.   CPCT0.BAT      batch file for CPCTRANS.EXE (example) (UTILITY)
  304.   CPCTRANS.EXE   transfer program for disk images (UTILITY)
  305.   CPMDISKS.DEF   format definitions for 22DISK (UTILITY)
  306.   FILE_ID.DIZ    how this program is called
  307.   INSTALL.BAT    batch file for installation
  308.   PCPARA.EXE     PC side of the parallel adapter (UTILITY)
  309.   README_D.TXT   German Readme
  310.   README_E.TXT   English Readme
  311.   ROMGET.BAS     Locomotive-BASIC program for saving ROMs (UTILITY)
  312.  
  313.   The original Amstrad ROMs are also included.
  314.   The Firmware is copyright by Locomotive Software, the BASIC is
  315.   copyright by Amstrad.
  316.   Amstrad and Locomotive have allowed me to distribute the ROMs.
  317.  
  318.  
  319.  
  320. 2.2  Requirements and Installation
  321. ==================================
  322.  
  323.   You will need at least (as usual no limits to more)
  324.   - PC AT 386 with VGA graphics
  325.   - MS-DOS, possibly with EMS,  or
  326.     Novell DOS (DRDOS)  or
  327.     OS/2 2.x DOS box.
  328.   - If you want to start programs from inside ZIP archives you will need
  329.     the program PKUNZIP in your DOS searchpath for extracting.
  330.  
  331.  
  332.   The installation itself is very simple:
  333.   Copy the CPCEMUxx.ZIP archive on your hard disc and decompress it with
  334.   'PKUNZIP CPCEMUxx.ZIP'. Run INSTALL.BAT to create some subdirectories.
  335.   Start CPC464.BAT, CPC664.BAT or CPC6128.BAT depending on what CPC you
  336.   like most. After the configuration press <RETURN> and the well-known
  337.   CPC opening screen appears with yellow writing on blue ground.
  338.   You can quit the emulator with F12.
  339.   It is best to try that now, before reading any further ...
  340.  
  341.  
  342.  
  343.  
  344.   If some errors occur during the configuration, you get put into the
  345.   so-called debug-menu, which you can quit with 'q' <RETURN> .
  346.   In such cases it is sometimes useful to redirect the messages into a
  347.   file, e.g. with 'CPCEMU > INIT.TXT'. Then you are able to analyze the
  348.   problem later.
  349.  
  350.  
  351.  
  352. 2.3  Hints about memory and soundcards
  353. ======================================
  354.  
  355.   The following will help you if you like a particular fast emulation or
  356.   if your soundcard is not recognized.
  357.  
  358.  
  359.   2.3.1  Using EMS Memory
  360.   -----------------------
  361.  
  362.     You should have hardware or emulated EMS on your PC (EMS=Expanded Memory
  363.     System). This speeds up the emulation in a significant way, especially
  364.     with BASIC. Simulated EMS is too slow.
  365.     All you need is EMM (Expanded Memory Manager) supporting the LIM 4.0
  366.     standard (LIM EMS 4.0).
  367.  
  368.     If EMS usage is possible, a memory count 'EMS xxx Bytes ok.' will
  369.     appear during initialization.
  370.     Otherwise you will read "Sorry, using conventional memory".
  371.  
  372.     Example under OS/2 2.x (settings for the window):
  373.         EMS_FRAME_LOCATION = auto
  374.         EMS_HIGH_OS_MAP_REGION = 32     (or more)
  375.         EMS_LOW_OS_MAP_REGION = 0       (or more)
  376.  
  377.     Example under DOS in the file CONFIG.SYS:
  378.         DEVICE=C:\DOS\HIMEM.SYS
  379.         DEVICE=C:\DOS\EMM386.EXE 1024
  380.         ...
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.   2.3.2  Defining the BLASTER environment
  388.   ---------------------------------------
  389.  
  390.     In order to hear sound from the soundcard you must set the BLASTER
  391.     environment variable properly. Either use the program 'SET-ENV.EXE'
  392.     (or 'SBTEST.EXE') coming along with your soundcard or modify
  393.     AUTOEXEC.BAT directly. In AUTOEXEC.BAT, you should have a line
  394.     similar to the following:
  395.         SET BLASTER=A220 I7 D1 T3
  396.  
  397.     With the meaning:
  398.       A specifies the base address (0x220)
  399.       I specifies the IRQ (7)
  400.       D specifies the DMA channel (1)
  401.       T specifies the version of the soundcard:
  402.           1 : Soundblaster 1.0/1.5
  403.           2 : Soundblaster Pro
  404.           3 : Soundblaster 2.0/2.5
  405.           4 : Soundblaster Pro 3/Pro 4.0
  406.           5 : Soundblaster Pro (Microchannel)
  407.  
  408.     For version 2,4 & 5 stereo sound is assumed.
  409.  
  410.  
  411.  
  412.  
  413. 3.  Differences between CPC and CPCEMU
  414. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  415.  
  416. In this chapter I describe some features that are different in CPCEMU
  417. compared to a real CPC. In the next section some special keys are
  418. mentioned, especially the function keys. Later it tell you how to load
  419. from disk or cassette.
  420.  
  421.  
  422.  
  423. 3.1  Keyboard
  424. =============
  425.  
  426.   Maybe you have already noticed that the function keys of the PC do not
  427.   map directly to those of the CPC. They produce strange output which is
  428.   described here. Or maybe, you have been looking for the COPY-key for
  429.   hours.
  430.   All the CPC keys really are located somewhere, you may rest assured of
  431.   it. Here the secret is disclosed:
  432.  
  433.   - ALT, ALTgr : COPY on a CPC
  434.  
  435.   - PAUSE Key : holds the PC until it is pressed again. If the function
  436.     keys of the PC do not react any more you may have pressed the PAUSE Key.
  437.  
  438.   - Keypad : Depending on the Num Lock state the keypad functions in a
  439.     different way. With "Num Lock on", the keypad represents the function
  440.     keys of the CPC, otherwise the joystick.
  441.     If you want to use an analog PC-joystick you have to calibrate it first.
  442.     (See chapter 4 - Changing the Configuration).
  443.  
  444.   Only to be complete:
  445.   - Page up/down: Moves the whole CPC screen.
  446.     (Do not ask me for what purpose this is.)
  447.  
  448.   And, of course, the function keys.
  449.   F1  : Help Key. Maybe the most important key in the beginning.
  450.   F2  : Toggles between CPC screen (standard view) and  message screen
  451.         (that one with a red border). On this screen some control messages
  452.         may appear.
  453.   F3  : Insert a disk, see section 3.2.1
  454.   F4  : Toggle sound on/off
  455.   F5  : Load a snapshot (memory dump), see section 3.2.3
  456.   F6  : Save a snapshot, see section 3.2.3
  457.   F7  : Setup menu, see section 4.1
  458.   F8 :  Hard reset, like reset button for CPC. Use this, if CTRL/SHIFT/ESC
  459.         does not work any more.
  460.  
  461.   F9  : Reserved for future use
  462.   F10 : Debug menu, explained in chapter 7. If you come inadvertently into
  463.         this menu, press 'r' for R)un or 'q' for Q)uit.
  464.   F11 : Reserved for future use
  465.   F12 : Quit the emulator
  466.  
  467.  
  468.  
  469.  
  470. 3.2  Loading of programs, menus
  471. ===============================
  472.  
  473.   In this section you will learn how to load programs from disk, tape or
  474.   snapshots. Certainly the same goes for saving. How to use the menu is
  475.   described, too.
  476.  
  477.  
  478.  
  479.   3.2.1  Loading from Disk, Menus
  480.   -------------------------------
  481.  
  482.     Under normal conditions AMSDOS (Amstrad DOS) is active, and all file
  483.     instructions use the disk.
  484.     You do not need to insert a real CPC disk into your PC drive every time
  485.     you acces a file (apart from the fact that you may have 3" CPC disks
  486.     only).
  487.     To obtain better speed a CPC disk is contained inside a so-called disk
  488.     image. This file can be located anywhere on the hard disk (or on a high
  489.     density disk).
  490.  
  491.     Here some BASIC AMSDOS instructions:
  492.     - CAT <RETURN> : displays the catalogue
  493.  
  494.     - With 'RUN"<filename>"'  you load and start a program.
  495.       You may omit the ending quotation marks. This instruction is useful
  496.       for BASIC programs having the extension .BAS, and in many cases for
  497.       binary programs with the extension .BIN .
  498.  
  499.       A simple way to run a program:
  500.       1. Input the filename, e.g.  'disc' *without* pressing <RETURN>
  501.       2. Hold down the CTRL key and press cursor-left (the cursor moves
  502.          back to the first column now)
  503.       3. Still hold down the CTRL key and press the ENTER key on the keypad
  504.          (RUN"disc   appears and the program will be loaded)
  505.  
  506.     - LOAD"<filename>" loads a program without starting it. You can inspect
  507.       BASIC programs with LIST and start them with RUN. Usually binary
  508.       programs will not load with LOAD, but try using the MEMORY instruction
  509.       first, e.g. 'MEMORY &1fff'.
  510.  
  511.     - SAVE"<filename>" saves a BASIC program. For binary programs you have
  512.       to specify some more parameters, e.g. 'SAVE"<filename>",b,&c000,&4000'
  513.       will save the screen.
  514.  
  515.     - MERGE"<filename>" is also possible. It merges one BASIC program to
  516.       another already contained in memory.
  517.  
  518.  
  519.     Some special AMSDOS instructions are introduced by a vertical dash:
  520.     - |A, |B to select the drive (also possible with |DRIVE,0 or 1)
  521.     - |DIR,"<filename pattern>" to see the directory.
  522.       Important note: Use the following on a CPC 464:
  523.            a$="<filename pattern>" : |DIR,@a$
  524.     - |ERA,"<filename>" erases a file.
  525.       Important note: Use the following on a CPC 464:
  526.            a$="<filename>" : |ERA,@a$
  527.     - |REN,"<new name>","<old name>" to rename a file.
  528.       Important note: Use the following on a CPC 464:
  529.            a$="<new name>" : b$="<old name>" : |REN,@a$,@b$
  530.     - |TAPE  to switch to the cassette. Described in the next section.
  531.     - |DISC  to switch back to disk
  532.     There are some other instructions but they are not so important.
  533.  
  534.  
  535.  
  536.     The Insert Disk Menu
  537.     --------------------
  538.  
  539.     Until now you can use only one disk, the one already "inserted" in
  540.     the drive. To insert another disk, simply press F3 and the following
  541.     menu appears:
  542.  
  543.                      Insert Disk
  544.                      Drive              0
  545.                      Side Select        0
  546.                      Write Protected    0
  547.  
  548.     With the cursor keys <up/down> you can select a line. You can also do
  549.     that by typing in letters (go back with <DEL>). Change numbers with
  550.     the cursor keys <left/right> or with direct input of digits.
  551.     <RETURN> in any line (e.g. the first one) takes the changes. It would
  552.     be dismissed with <ESC>.
  553.     "Drive" is the desired drive (0=A, 1=B); "Side Select" is a side switch
  554.     for double sided disks, it has no effect when using a single sided
  555.     format.
  556.     With "Write Protected" you can mark a disk as write protected
  557.     (0=No, 1=Yes, write protected).
  558.  
  559.  
  560.     The File-Selection Menu
  561.     -----------------------
  562.  
  563.     Now press <RETURN> and a directory of the disk drive appears.
  564.     Select a new disk with the same methods as described above.
  565.  
  566.     If there is already a disk lying inside the drive you do not need to
  567.     remove it first as in real life. This is automatically done.
  568.     At the bottom of the screen this disk is displayed.
  569.  
  570.     You will see at most 15 files, if there are more, "[]" appears.
  571.     - <HOME> goes home to the first filename, <END> to the last one
  572.     - <Page up/down> scrolls in pages through the list
  573.     - <RETURN> takes the selected name, <ESC> escapes.
  574.     You can also select names directly by pressing a first letter.
  575.  
  576.     When using the mouse, click "[]" for <page up>, "[]" for <page down>,
  577.     "[<]" for <cursor left>, "[>]" for <cursor right> and [ok] for <return>.
  578.     Use the right mouse button as double-click. Use "[■]" as <ESC>.
  579.  
  580.     ".." is the parent directory; [A], [B], ... are the available drives.
  581.     Please select only floppy drives with a disk inserted. Otherwise
  582.     you could get some trouble.
  583.  
  584.     It is also possible to insert disks from inside ZIP archives. Select
  585.     a ZIP archive by pressing <RETURN> and its directory is displayed as a
  586.     normal directory. If you select a file from inside a ZIP archive, it
  587.     is automatically extracted into a temporary file. For this feature
  588.     you will need the program PKUNZIP somewhere in the DOS searchpath,
  589.     or in the CPCEMU directory.
  590.     Temporary files are automatically deleted if they are not needed any
  591.     more. Changes are *not* written to the ZIP archive. If you save
  592.     something on a disk image inside a ZIP file, it will be lost after
  593.     you insert another disk. If you want to change disk images inside
  594.     ZIP archives, extract them before starting CPCEMU.
  595.  
  596.     How to create disk images from CPC disks that you own is described in
  597.     chapter 5  (Data Transfer CPC <-> PC).
  598.  
  599.  
  600.  
  601.  
  602.   3.2.2  Loading from and saving on cassette
  603.   ------------------------------------------
  604.  
  605.     What actually is a cassette for CPCEMU?
  606.     Well, files on cassette are regular files in DOS directories.
  607.     After the '|TAPE' instruction the BASIC instructions for file handling
  608.     use the cassette. But only those starting not with "|".
  609.     Now you can use the instructions described in the section above
  610.     (CAT, RUN", LOAD", SAVE", MERGE") for cassette.
  611.     If you omit a filename, the file selection menu will appear which was
  612.     described in the previous section.
  613.     With SAVE"" you can either overwrite an existing file or create a new
  614.     one by specifying a new name in the last line "(new name)".
  615.  
  616.     Certainly you can load programs from inside ZIP archives, saving
  617.     is ignored.
  618.  
  619.     You only get such a fine cassette drive with the emulator!
  620.  
  621.  
  622.  
  623.   3.2.3  Loading and Saving of snapshots
  624.   --------------------------------------
  625.  
  626.     Snapshots are memory dumps that not only contain the actual memory
  627.     contents but also the internal states of the hardware chips, e.g. the
  628.     processor.
  629.     At any time you can interrupt the running program and save it as a
  630.     snapshot. Later you can load it, and continue at the same position you
  631.     were at when you interrupted it.
  632.     You create a snapshot with F6. Specify the snapshot size, if it is
  633.     64K or 128K. 128K snapshots only make sense if the second memory bank
  634.     is in use. In this case use "128K Snapshot = 1", with the meaning 1=Yes.
  635.  
  636.     The file selection menu is the same as already described with the disk,
  637.     with the additional comments given for the cassette (3.2.1 and 3.2.2).
  638.  
  639.     You can reload a snapshot with F5.
  640.  
  641.  
  642.  
  643.  
  644. 4.  Changing the Configuration
  645. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  646.  
  647. In this chapter you will learn how to configure CPCEMU for your needs.
  648. The setup menu is described as well as the configuration file and the
  649. command line parameters.
  650.  
  651.  
  652.  
  653. 4.1  The setup menu
  654. ===================
  655.  
  656.   This is the simplest way to make adjustments to CPCEMU. Nevertheless
  657.   this menu does not let you change all settings. To give an example, if
  658.   you want to use additional ROMs you must use the configuration file
  659.   described in section 4.2.
  660.  
  661.   As already mentioned in the keyboard section, you get into the setup menu
  662.   with F7. The following menu then appears:
  663.  
  664.        Setting:                Value:   Short explanation:
  665.   -----------------------------------------------------------------------
  666.        Realtime                   0     (realtime mode)
  667.        Sound                      1     (Sound on or off)
  668.        Colour                     1     (Colour or Green Screen)
  669.        Screen offset (ymove)      1     (moving screen up and down)
  670.        Set VSYNC position         1     (position of vertical
  671.                                          synchronization)
  672.        Allow palette change       1
  673.        Multi Mode                 1     (multi mode)
  674.        Interrupt Frequency        300   (interrupt frequency)
  675.        Don't forget INTs (CPM+ 0) 0     (do not forget interrupts)
  676.        Delay                      0     (slow down the emulation)
  677.        Sondblaster Delay          1     (delay for Soundblaster)
  678.        Keybrd Language (UK GR FR) 0     (other keyboard mappings)
  679.        Mouse                      1
  680.        Calibrate joystick
  681.        Poke Database                    (database with cheats for games)
  682.        DOS Shell
  683.        Continue                         (continue with the emulator)
  684.  
  685.  
  686.   Select the settings as already described in 3.2.1.
  687.  
  688.   - Realtime  (0)
  689.     Enables the realtime CPC. The emulator inserts waits to be as fast
  690.     as a real CPC.
  691.  
  692.   - Sound (1)
  693.     Enables the sound output. 1=on, 0=off. You can also press the
  694.     function key F4 instead.
  695.  
  696.   - Colour (1)
  697.     Selects a green or a colour screen. 1=colour.
  698.  
  699.   - Screen offset (0)
  700.     Specify the number of lines the CPC screen should be moved.
  701.     Usually you do not need this option. You get the same effect by
  702.     pressing <Page Up> and <Page Down>. Possible values: 0=no offset,
  703.     up to circa 25.
  704.  
  705.   - Set VSYNC position (5)
  706.     Commonly you will not need this option, but nothing will be damaged if
  707.     you try it. One time during the screen update there is a vertical
  708.     frame fly with a special bit set, the so-called VSYNC bit (vertical
  709.     synchronization). You can define the position, where the VSYNC should
  710.     occur. Possible values are 0 to 5. For further information look at
  711.     chapter 7.
  712.  
  713.   - Allow palette change (1)
  714.     Set this option to 0 to disable palette changes. This makes sense
  715.     if you cannot see anything because the screen flickers too much.
  716.     If you press the function key F8 to cause a hardware reset, this
  717.     option is reset to 1 automatically.
  718.     Hint: If palette update is disabled and you see completely wrong
  719.     colours, try pressing F2 twice.
  720.  
  721.   - Multi Mode (0)
  722.     If programs use several modes simultaneously on the screen, switch on
  723.     this option. Then CPCEMU tries to handle it correctly.
  724.     Per default this option is switched off because it does not work
  725.     properly in all cases.
  726.  
  727.   - interrupt frequency  (300)
  728.     To change the frequency with which interrupts are generated.
  729.     On a real CPC this is always 300 Hertz. If you raise this value
  730.     many programs seem to run faster, but there is less computing power
  731.     between two interrupts. If you own a slow computer you may have
  732.     to lower this value to 100 or 200 sometimes. Possible values are
  733.     18 to circa 600.
  734.     For further information look at chapter 7.
  735.  
  736.   - do not forget INTs (CPM+ 0) (0 or 1)
  737.     Another of these options one cannot explain without a lot of background
  738.     information. Without EMS (Expanded Memory) this option is 0 which means
  739.     that interrupts can be skipped. Certainly this is not desired, but
  740.     with 1 the emulation is getting too slow. With EMS this option is 1,
  741.     so CPCEMU tries to handle every interrupt.
  742.     Important note:
  743.     It seems that CP/M Plus only runs with EMS and this option = 0 !
  744.     For further information look at chapter 7.
  745.  
  746.   - Delay (0)
  747.     This option allows you to slow down the emulation if it is too fast.
  748.     0 means no delay, 100 is a small delay, 300 some more ...
  749.  
  750.   - Sondblaster Delay  (1)
  751.     Set the amount of delay after every write access to the soundcard.
  752.     In the configuration file this delay is set to 1 to speed up sound
  753.     output. If problems with the soundcard occur, try a value of 35.
  754.  
  755.   - Keyboard Language (0)
  756.     With this option you can select the keyboard mapping for other countries.
  757.     0 = UK, default
  758.     1 = GR, "German-like" keyboard. Unfortunately it is impossible to have
  759.      a full German keyboard because SHIFTed keys cannot be mapped
  760.      to non-SHIFTed. But "Z" and "Y" are swapped, and some other characters
  761.      altered.
  762.     2 = FR, "French-like" keyboard. After the introduction of a German
  763.         keyboard the French will not stand in the rain. Some parts of the
  764.         AZERTY Keyboard are realized. But is has the same problems as
  765.         the German one.
  766.  
  767.   - Mouse (1)
  768.     Enables mouse usage in different menus.
  769.  
  770.   - Calibrate Joystick
  771.     You surely know it from other programs that you have to calibrate the
  772.     analog PC joystick first. Select this setting by pressing <RETURN>,
  773.     move the joystick to the upper left, then to the lower right.
  774.     Then some parameters are displayed. If you always want to use your
  775.     joystick then take note of these parameters and write them in the
  776.     configuration file (see next section). Nevertheless you have to repeat
  777.     the calibration if you change the clock.
  778.  
  779.   - Poke Database
  780.     You are just playing a game you cannot solve? Then try this selection.
  781.     If your game is in this list, you can make it easier by getting
  782.     infinite lifes, e.g. You can also extend the list (CPCEMU.DBF) by your
  783.     own pokes. See chapter 7 for a description of this file.
  784.  
  785.   - DOS Shell
  786.     Opens a DOS shell which you can exit with 'EXIT'.
  787.  
  788.   - Continue
  789.     Take the values and continue with the emulation. You get the same effect
  790.     by pressing <RETURN> in any line except calibrate joystick.
  791.  
  792.  
  793.  
  794.  
  795. 4.2  The configuration file
  796. ===========================
  797.  
  798.   Now you will learn the most important way to configure CPCEMU.
  799.   At first CPCEMU reads the configuration file CPCEMU.CFG per default.
  800.   The structure of this file is described so that you will be able to
  801.   use your own ROMs, change the keyboard language permanently, etc...
  802.  
  803.  
  804.   Have a look at the file CPCEMU.CFG:
  805.  
  806.     ;CPCEMU.CFG - The Configuration File for CPCEMU
  807.     ;...
  808.     ;
  809.     ;configuration for CPC 464, 664 and 6128
  810.     ;
  811.     SHOW_CONFIG=yes          ;should the configuration be displayed?
  812.     ROM_PATH = .\ROM         ;path to ROM images
  813.     PIO_PORT_B = %00111110   ;use %00111010 for "Schneider"
  814.  
  815.  
  816.   Already with these few lines you get the simple structure:
  817.   Comments start with a semicolon (";"). Options are changed by writing
  818.   a key-word followed by "=" followed by a <value>. The <value> depends
  819.   on the key-word and is either a string or a number. Numbers can be given
  820.   in decimal, hexadecimal ("0x") or binary ("%") notation.
  821.   Instead of %00111110 you could write 62 or 0x3e.
  822.  
  823.   When knowing the meaning of the key-words, you can adjust the values
  824.   with a text processing system for your own needs.
  825.  
  826.   But first an overview of the key-words, sorted alphabetically.
  827.     #ENDIF, #IFCPC, AMSDOS_DI, AMSDOS_SPDUP, BREAK_MASK, COLOUR, DELAY,
  828.     DRIVE_A, DRIVE_B, EMS_EI, INT_FREQ, INT_RESUME, JOY_CALIBRATE,
  829.     KBD_LANGUAGE, MOUSE, MULTIMODE, PIO_PORT_B, PRINTER, RAM_SIZE,
  830.     REALTIME, ROM_BLOCK, ROM_PATH, SBLASTER, SB_DELAY, SHOW_CONFIG,
  831.     SNAPSHOT, SOUND, TAPE_BYPASS, TAPE_PATH, TMP_PATH
  832.  
  833.  
  834.   Following are the meanings of the key-words:
  835.  
  836.   (Values in brackets are default values, used if the key-word is not
  837.    defined in the configuration file.)
  838.  
  839.   - #ENDIF, #IFCPC
  840.     Some control instructions for conditional configuration depending on
  841.     the desired CPC:
  842.       #IFCPC 464  ... #ENDIF
  843.       #IFCPC 664  ... #ENDIF
  844.       #IFCPC 6128 ... #ENDIF (default)
  845.     Consequently you need only one configuration file for all CPCs.
  846.     The batch files CPC464.BAT, CPC664.BAT and CPC6128.BAT set the
  847.     desired type with command line parameters. These are explained
  848.     in the next section.
  849.  
  850.   - AMSDOS_DI = {YES,NO}               (NO)      (AMSDOS disable)
  851.     Forbids the initialization if the AMSDOS. This is useful if you
  852.     want to load programs from cassette without giving the instruction
  853.     '|TAPE' every time.
  854.     Certainly you could simply make a comment of the ROM_BLOCK line
  855.     for the AMSDOS (with ROM_BLOCK you specify the ROM to load), but
  856.     with the effect that no AMSDOS is present at all.
  857.     Using this option the AMSDOS is still present for some programs.
  858.  
  859.   - AMSDOS_SPDUP = {YES,NO}            (YES)     (AMSDOS Speedup)
  860.     Permits an AMSDOS ROM modification speeding up disk accesses.
  861.     This is done by minimizing the motor waiting times, not necessary
  862.     for the emulator.
  863.  
  864.   - BREAK_MASK = <number>              (0xffff)
  865.     Only for debugging purposes. With the value 0xfffb from the configuration
  866.     file some errors are suppressed, caused by illegal instructions.
  867.     Do not change this value!
  868.  
  869.   - COLOUR = {YES,NO}                  (YES)
  870.     Permits the usage of a colour palette. Instead of a green screen you
  871.     have a colour screen.
  872.     This option is also available in the setup menu.
  873.  
  874.   - DELAY = <number>                   (0)
  875.     This option is also available in the setup menu. If you want to slow
  876.     down the emulation.
  877.  
  878.   - DRIVE_A = <path+filename>          ()
  879.     Set the path to disk images. If you use a filename as path, this
  880.     disk is automatically inserted into drive A.
  881.     Section 3.2.1 described Loading and Saving on Diskette.
  882.  
  883.   - DRIVE_B = <path+filename>          ()
  884.     Same as DRIVE_A, but for drive B.
  885.  
  886.   - EMS_EI = {YES,NO}                  (YES)     (EMS enable)
  887.     Permits the usage of EMS memory (Expanded Memory System).
  888.     If no or not enough EMS memory is available, CPCEMU uses conventional
  889.     memory automatically.
  890.     For further information about EMS consult 2.3.1 and chapter 7.
  891.  
  892.   - INT_FREQ = <number>                (300)     (Interrupt Frequency)
  893.     Set the frequency of interrupt generation.
  894.     Read the setup menu section for more details.
  895.  
  896.   - INT_RESUME = {YES,NO}              (YES)     (Interrupt resume)
  897.     Same as "Don't forget INTs (CPM+ 0)" in the setup menu.
  898.     Please read the explanation given there.
  899.  
  900.   - JOY_CALIBRATE = <xcen> <ycen> <xdead> <ydead>       ( 0 0 0 0 )
  901.     Define a joystick calibration for your analog joystick.
  902.     Use the values displayed after the joystick calibration in the
  903.     setup menu (see section 4.1).
  904.     This is a key-word with 4 values. You must always specify all of them.
  905.     4 times zero means not calibrated.
  906.  
  907.   - KBD_LANGUAGE = {UK, GR, FR}        (UK)      (Keyboard Language)
  908.     Set another keyboard language permanently. Also available in the
  909.     setup menu. You can specify UK (England, is 0), GR (Germany, is 1)
  910.     or FR (French, is 2).
  911.  
  912.   - MOUSE = {YES, NO}                   (YES)
  913.     Enables the mouse in the different menus. The mouse cannot be used
  914.     by the CPC, yet.
  915.  
  916.   - MULTIMODE = {YES, NO}              (NO)
  917.     Permit multi modes. Also available in the setup menu.
  918.  
  919.   - PIO_PORT_B = <number>              (%00111110)
  920.     With a jumper you could make the Amstrad CPC a "Schneider" CPC or
  921.     something else. Furthermore it was possible to change the screen
  922.     refresh rate from 50 Hertz to 60 Hertz (in the emulator it is
  923.     always 70 Hertz).
  924.     To get a "Schneider" CPC, use the value %00111010 (or 0x3A).
  925.     The company name is coded in the bits b3,b2,b1:
  926.         Isp (000), Triumph(001), Saisho(010), Solavox(011),
  927.         Awa(100), Schneider(101), Orion(110), Amstrad(111)
  928.  
  929.   - PRINTER = <path+filename>          ()
  930.     Set the printer file where line printer outputs are collected.
  931.     It is cleared at every emulation start.
  932.     After quitting the emulator, you can send it to your printer
  933.     with 'COPY <filename> prn:'.
  934.  
  935.   - RAM_SIZE = <number>                (128)
  936.     Change the size of the RAM in KB.
  937.     Possible values are 64, 128, 192, 256, 320, 384, 448, 512, 576.
  938.     Values greater than 128 are only possible if you have EMS memory.
  939.  
  940.   - REALTIME = {YES, NO}                (NO)
  941.     Select realtime CPC or fastest CPC. The realtime CPC counts instruction
  942.     cycles and insert waits to slow the emulation down.
  943.  
  944.   - ROM_BLOCK = <ROM-number>  <filename>  <offset>
  945.     Describe what ROM should be loaded and where.
  946.     Repeat this line for every ROM you want to load.
  947.     The maximum number of ROMs is circa 20, if you use EMS.
  948.  
  949.     - <ROM-number> is the number assigned to the ROM, that means
  950.       it is selected by 'OUT &DF00,<ROM-number>' .
  951.       Possible values are:
  952.         0       : Foreground ROM (e.g. BASIC)
  953.         1 - 251 : Background ROMs. On a CPC 664/6128, the ROMs
  954.                   1-15 are automatically initialized during reset
  955.                   (on a CPC 464 only 1-7).
  956.                   The AMSDOS ROM has always the number 7.
  957.         255     : Lower ROM (e.g. OS; has only in emulator this
  958.                   number).
  959.     - <filename> is a file in the directory ROM_PATH, which
  960.       contains the ROM.
  961.  
  962.     - <offset> is a number of bytes preceding the ROM-image in
  963.       file <filename>. The AMSDOS header is skipped automatically,
  964.       so do not include it in the offset. With an offset it is possible
  965.       to load several ROMs from the same file.
  966.       If you inspect the lines
  967.         ROM_BLOCK =     255     CPC6128.ROM     0x0000
  968.         ROM_BLOCK =     0       CPC6128.ROM     0x4000
  969.       you may see that the lower ROM and the foreground ROM
  970.       are loaded one after another from the same file.
  971.       Important: Do not omit the offset, even if it is 0.
  972.  
  973.     Maybe you have noted that this key-word has 3 values. You must
  974.     always specify all of the values, so do not omit the offset even if it
  975.     is zero.
  976.  
  977.   - ROM_PATH = <path>                  (.\)
  978.     Set the path to ROM images. In the configuration file this path
  979.     is set to ".\ROM". The ROMs itselfs are defined with the key-word
  980.     ROM_BLOCK.
  981.  
  982.   - SBLASTER = {YES,NO}                (YES)     (Soundblaster)
  983.     Permits the usage of a Soundblaster card for sound output.
  984.     IF you do not own one, the PC speaker is automatically used.
  985.     Important note:
  986.     You have to specify the BLASTER environment variable properly.
  987.     See section 2.3.2 for how to do that.
  988.  
  989.   - SB_DELAY = <number>                (35)      (Soundblaster Delay)
  990.     Set the amount of delay after every write access to the soundcard.
  991.     In the configuration file this delay is set to 1 to speed up sound
  992.     output.
  993.     If problems with the soundcard occur, use a value of 35.
  994.     Also available in the setup menu.
  995.  
  996.   - SHOW_CONFIG = {YES,NO}             (YES)     (Show Configuration)
  997.     Permits the display of the configuration overview when starting the
  998.     emulator.
  999.  
  1000.   - SNAPSHOT = <path+filename>         ()
  1001.     Set the path to snapshots. If you specify a snapshot file as path name,
  1002.     this snapshot is automatically started.
  1003.     Look at section 3.2.3 for more details.
  1004.  
  1005.   - SOUND = {YES,NO}                   (YES)
  1006.     Permits sound output. You can always disable the sound with the
  1007.     function key F4 or in the setup menu.
  1008.     Sound comes either through a Soundblaster card or the internal
  1009.     PC speaker.
  1010.  
  1011.   - TAPE_BYPASS = {YES,NO}             (YES)
  1012.     Permit the usage of the cassette.
  1013.     Further information about the TAPE bypass are in chapter 7.
  1014.  
  1015.   - TAPE_PATH = <path>                 (.\)
  1016.     Set the path to tape files. In the configuration file this path is
  1017.     set to ".\TAPE".
  1018.     Look at section 3.2.2 for more details.
  1019.  
  1020.   - TMP_PATH = <path>                  (.\)      (Temp Path)
  1021.     Set the path for temporary files. They are only needed if you
  1022.     select a file from inside a ZIP archive and CPCEMU needs to
  1023.     extract it with PKUNZIP.
  1024.  
  1025.  
  1026.  
  1027.  
  1028. 4.3  Command Line Parameters
  1029. ============================
  1030.  
  1031.   As you know from other programs, it is also possible with CPCEMU to
  1032.   use command line parameters. But currently there are only a few of them.
  1033.  
  1034.  
  1035.   Execute CPCxxx.BAT with the following options:
  1036.        /f       : use the fast mode (default)
  1037.        /s       : use the slow mode
  1038.        /d       : use the debug mode, described in chapter 7
  1039.        /x       : disable EMS usage
  1040.        /c <file>: specify another configuration file, overriding the
  1041.                   default CPCEMU.CFG. See section 4.2.
  1042.        /v <CPC> : set the desired CPC type 464, 664 or 6128 with
  1043.                   /v 464, /v 664 or /v 6128 respectively.
  1044.        /h       : displays a help screen
  1045.  
  1046.   The option "/d" is automatically used, if an unknown option was specified.
  1047.   Instead if "/" you can also use "-" known from UNIX.
  1048.  
  1049.  
  1050.  
  1051.  
  1052. 5.  Data Transfer CPC <-> PC
  1053. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  1054.  
  1055. What can you do with a good emulator when you do not have any programs for
  1056. it or if you do not see any possibility to get programs from a CPC across
  1057. to the PC?
  1058. In chapter 6 (Sources of Supply, ...) some ftp sources are listed where
  1059. CPC software can be found.
  1060. This chapter deals with the data transfer of CPC software to the PC.
  1061. Some utilities for the different possible methods of doing this are
  1062. described (disk, with parallel or serial interface).
  1063.  
  1064.  
  1065.  
  1066.  
  1067. 5.1  Disk as a media
  1068. ====================
  1069.  
  1070.   This is the simplest way to get CPC software across to the PC. You only
  1071.   need a CPC with a second drive of the correct size. Correct size means
  1072.   that the disks must also fit in your PC drive. (If not, you could still
  1073.   try to connect a 3" drive to your PC.) The PC is persuaded to recognize
  1074.   the CPC formatted disk using a utility to read the CPC formatted disks.
  1075.   This utility is called CPCTRANS.
  1076.  
  1077.  
  1078.  
  1079.   5.1.1  The disk transfer program CPCTRANS
  1080.   -----------------------------------------
  1081.  
  1082.     I have developed CPCTRANS to create disk images from CPC disks.
  1083.     Standard CPC formats as well as double sided Vortex formats are
  1084.     supported.
  1085.     CPCTRANS is not intended to transfer copy protected formats!
  1086.     When calling CPCTRANS without parameters you will get a short
  1087.     overview.
  1088.     CPCTRANS is similar to the DOS COPY-instruction:
  1089.     'CPCTRANS <source> <destination> <options>'.
  1090.     Examples:
  1091.     'CPCTRANS B: DISK1.DSK' copies the disk in drive B to the disk image
  1092.     DISK1.DSK. If it does not exist, it is created.
  1093.     'CPCTRANS DISK1.DSK B:' writes the disk image back to the disk in
  1094.     drive B.
  1095.  
  1096.     The first command only runs for the DATA format.
  1097.     For other formats you have to use an option:
  1098.       /f 0    : DATA format (default)
  1099.       /f 1    : DATA format, double-sided
  1100.       /f 2    : SYSTEM format
  1101.       /f 3    : SYSTEM format, double-sided
  1102.       /f 4    : VORTEX format, double-sided
  1103.       /f 5    : unknown, CPCTRANS tries to detect it
  1104.       /f 6    : +3DOS
  1105.     Note the space between "/f" and the number.
  1106.     When using the double sided DATA- or SYSTEM-format, you can select
  1107.     the side A or B in the disk menu (3.2.1).
  1108.  
  1109.     When writing back a disk image, the disk in the drive must have
  1110.     the same format! For simple formats you can use 22DISK, described
  1111.     in the next section.
  1112.  
  1113.     For copying the B-side of a disk, use the option "/s 1"
  1114.     With 'CPCTRANS B: DISK1.DSK /s 1' only the B-side of the disk is
  1115.     copied, with 'CPCTRANS DISK1.DSK B: /s 1' it is written back.
  1116.  
  1117.     The option "/v" turns on "verify", so CPCTRANS checks if the copy
  1118.     is correct. That is indeed a bit slower but increases security.
  1119.  
  1120.     The option "/t <count>" sets the number of tracks to copy.
  1121.     Normally it is 40 tracks, only for the VORTEX format it is 80.
  1122.  
  1123.     The option "/q" (quick format) is a feature with which you can format
  1124.     a disk image, instead of copying data onto it. Nevertheless you have
  1125.     to specify a valid drive as first parameter, even if it is not used.
  1126.     Example:
  1127.     'CPCTRANS a: SYSTEM.DSK /f 2 /q' formats SYSTEM.DSK as a disk image
  1128.     with SYSTEM format.
  1129.  
  1130.  
  1131.  
  1132.   5.1.2  The format- and copy-utility 22DISK by SYDEX
  1133.   ---------------------------------------------------
  1134.  
  1135.     This program is available as shareware. With correct definitions you
  1136.     can use nearly all CP/M formats!
  1137.     Unfortunately just the CPC formats are not included with the evaluation
  1138.     copy of 22DISK. Therefore I have defined the formats in the file
  1139.     CPMDISKS.DEF. You will find them in the UTILITY subdirectory.
  1140.     What can you do with 22DISK?
  1141.     You can transfer single files back and forth between DOS and non-DOS
  1142.     formats, format disks and so on.
  1143.     Copy the CPC files into the TAPE directory. Read section 3.2.2 for
  1144.     an explanation how to load them.
  1145.  
  1146.  
  1147.  
  1148. 5.2  The parallel interface
  1149. ===========================
  1150.  
  1151.   If you own a CPC without second drive, you can do the data transfer
  1152.   over the parallel interface.
  1153.  
  1154.   If you own a CPC without a second drive, you can do the data transfer
  1155.   over the parallel interface. The original idea came from Gilles Molinari,
  1156.   he had also written some Turbo Pascal programs. But maybe you belong to
  1157.   the group of users, who do not have a Turbo Pascal compiler on their CPC,
  1158.   so you could not do much with the Pascal source. Therefore I have
  1159.   rewritten the utilities in Locomotive BASIC, and extended it by adding
  1160.   the direction PC->CPC.
  1161.   Thus it is possible to transfer files back and forth between CPC and PC!
  1162.   The CPC and PC are coupled together via their parallel interfaces.
  1163.  
  1164.   If you own a CPC 6128 with Centronics connectors and compare them with
  1165.   a printer you will note that CPC and PC fit together excellently when
  1166.   using a standard PC printer cable! But do not do that now, please read
  1167.   further.
  1168.   It seems that only Schneider CPCs have Centronics connectors. If you
  1169.   have an Amstrad CPC 6128 with simple edge connectors or a CPC 464,664,
  1170.   use the diagram at the end of this section.
  1171.  
  1172.   First you have to jump over two hurdles:
  1173.   1. constructing a simple adapter
  1174.   2. input a short program into the CPC
  1175.  
  1176.   Wait!   Do not skip the rest!
  1177.  
  1178.   Both steps are really simple, because
  1179.   1. is possible without soldering     and
  1180.   2. is indeed very short (about 30 lines BASIC)
  1181.  
  1182.   To step 2.
  1183.   The program you need calls CPCREC.BAS and is in the UTILITY directory.
  1184.   It is saved in ASCII, so you can send it to your printer without
  1185.   problems and type it into your CPC.
  1186.   It does its job like a thin rope sent through a pipe in order to
  1187.   get a thick cable through it.
  1188.   Here, the thin rope is CPCREC.BAS which receives files from the PC.
  1189.   With this little utility you get CPCPARA.BAS (the thick cable) over
  1190.   to the CPC. With CPCPARA.BAS you can receive and transmit. Then you
  1191.   will not need CPCREC.BAS any more.
  1192.   On the PC side you use PCPARA.EXE, also included in the UTILITY
  1193.   directory.
  1194.  
  1195.   But before you input CPCREC.BAS, have a look at step 1:
  1196.  
  1197.  
  1198.   The parallel adapter
  1199.   --------------------
  1200.  
  1201.   You need an adapter between the PC printer cable and the PC printer
  1202.   connector.
  1203.   This goes easiest with a RS-232 wiring box, which has a 25pin D-Sub
  1204.   male (plug) and a 25pin D-Sub female (socket) connector.
  1205.   By plugging short wires into the box you can realize any possible
  1206.   connection between both sides. Usually such a box is used - as its
  1207.   name already says - for adapting RS-232 interfaces. Serial connections
  1208.   do not function at the first, you know.
  1209.   We use the adapter the other way round, that is, the plug is for the PC
  1210.   side and the socket for the printer cable.
  1211.  
  1212.   Plug it together now:
  1213.  
  1214.         Plug for the PC printer-         Socket for the printer cable
  1215.         connector (left side):             (right side):
  1216.  
  1217.                Pin 2     ---------------       Pin 11
  1218.                Pin 10    ---------------       Pin 8
  1219.                Pin 11    ---------------       Pin 1
  1220.                Pin 12    ---------------       Pin 7
  1221.                Pin 13    ---------------       Pin 6
  1222.                Pin 15    ---------------       Pin 5
  1223.                Pin 19    ---------------       Pin 19
  1224.  
  1225.  
  1226.   As you see, you do not need all the 25 wires, only 7 of them.
  1227.  
  1228.   Although the wiring box is cheap if you buy it from a electronic
  1229.   mail-order company, you can get it even cheaper by using a jumper box.
  1230.   Then you have to solder the wires. The cheapest way is to buy a 25pin
  1231.   D-Sub plug, a 25pin D-Sub socket, a box and some wires.
  1232.  
  1233.   Now I presume you have connected the computers with the adapter and
  1234.   CPCREC.BAS on your CPC.
  1235.   What now?
  1236.  
  1237.   1. On the CPC :  Run CPCREC.BAS (after you have saved it)
  1238.   2. On the PC  :  Run 'PCPARA /s CPCPARA.BAS'
  1239.  
  1240.   Now it gets exciting, if no error messages appear on the PC screen, all
  1241.   is OK, the file is on the CPC.
  1242.  
  1243.   If the PC does not send anything and reports an error message the
  1244.   connection may be incorrect.
  1245.   If it is sending ("Sending block xx"), but some error messages appear
  1246.   occasionally, your PC may be to fast or to slow. The direction
  1247.   PC->CPC is very time crucial, you know.
  1248.   On my 386/33 I must not have EMS memory installed, otherwise it is too
  1249.   slow. On a very fast computer it could be necessary to use the turbo
  1250.   switch.
  1251.   Use the program under plain DOS, not OS/2 or Windows.
  1252.  
  1253.   If it does not run at all, send me a note.
  1254.   In the meantime you can type in the program CPCPARA.BAS which is
  1255.   a little longer. The direction CPC->PC runs always, also under OS/2,
  1256.   because it is nearly the same as printing. The PC behaves like a printer.
  1257.  
  1258.   I assume that you have CPCPARA.BAS on your CPC now.
  1259.   Transfer files from CPC to PC in the following way:
  1260.   1. On the PC:  Run 'PCPARA /r'.
  1261.   2. On the CPC: Run CPCPARA, select S)end and input every file you want
  1262.      to transmit. (Run 'PCPARA /r' for every file you want to transmit,
  1263.      CPCPARA runs in an endless loop.)
  1264.  
  1265.  
  1266.   Thus, use PCPARA in the following way:
  1267.   - PCPARA /r : start PCPARA in receiving mode
  1268.   - PCPARA /s <file> : sends <file> to the CPC, if you use 'TRM:' as
  1269.     file, you will get a terminal.
  1270.  
  1271.   All programs in the UTILITY directory display an overview about its
  1272.   options if you call them without any parameters.
  1273.  
  1274.  
  1275.   WARNING:
  1276.   Even if the construction is very simple, I cannot guarantee that you
  1277.   do not damage anything. If your CPC printer-port is damaged afterwards,
  1278.   it is a pity and rather an unfortunate accident. Perhaps it would be
  1279.   also damaged if you had simply connected a printer.
  1280.   For example, I know a former CPC user whose keyboard did not work
  1281.   properly any more one day. After the repair he was told that he
  1282.   should not plug the joystick in while the computer is switched on!
  1283.   (Well, I do so always ?!?)
  1284.  
  1285.   To come back:
  1286.   I have built the adapter successfully. And have even sometimes
  1287.   "forgotten" to insert the adapter in the connection and have had no
  1288.   problems.
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.   Diagrams by David Chapeau, if your CPC has no Centronics connectors:
  1295.  
  1296.    34 <- - - - - - - - 18      \
  1297.    ______________________      |
  1298.   |   ________________   |     |
  1299.   |  |________________|  |   - | ---> Printer Connector (Female) to CPC
  1300.   |______________________|     |
  1301.                                |
  1302.    17 < - - - - - - - - 1      |
  1303.                                |
  1304.      ||||||||||||||||||        |
  1305.      ||||||||||||||||||        \
  1306.      ||||||||||||||||||         >   "CPC 6128 to DMP 2160" Cable
  1307.      ||||||||||||||||||        /
  1308.      ||||||||||||||||||        |
  1309.                                |
  1310.    1 - - - - - - - - > 18      |
  1311.   ________________________     |
  1312.   \    ______________    /     |
  1313.    \  |______________|  /    - | ---> Centronics Connector (Male)
  1314.     \__________________/       |
  1315.                                |
  1316.    19 - - - - - - - -> 36      /
  1317.  
  1318.  
  1319.  
  1320.    18 < - - - - - - - - 1      \
  1321.   ________________________     |
  1322.   \    ______________    /     |
  1323.    \  |______________|  /    - | ---> Centronics Connector (Female)
  1324.     \__________________/       |
  1325.                                |
  1326.    36 <- - - - - - - - 19      |
  1327.                                |
  1328.      ||||||||||||||||||        |
  1329.      ||||||||||||||||||        \
  1330.      ||||||||||||||||||         >   PC Parallel Adapter
  1331.      ||||||||||||||||||        /
  1332.      ||||||||||||||||||        |
  1333.                                |
  1334.    1 - - - - - - - - > 13      |
  1335.   ________________________     |
  1336.   \  ..................  /     |
  1337.    \  ................  /    - | ---> Sub-D Connector (Male) to PC (LPT1)
  1338.     \__________________/       |
  1339.                                |
  1340.    14 - - - - - - - -> 25      /
  1341.  
  1342.  
  1343.    13 < - - - - - - - - 1      \
  1344.   ________________________     |
  1345.   \  ..................  /     |
  1346.    \  ................  /    - | ---> Sub-D Connector (Female)
  1347.     \__________________/       |
  1348.                                |
  1349.    25 <- - - - - - - - 14      |
  1350.                                |
  1351.      ||||||||||||||||||        |
  1352.      ||||||||||||||||||        \
  1353.      ||||||||||||||||||         >   RS 232 "Wired Box"
  1354.      ||||||||||||||||||        /
  1355.      ||||||||||||||||||        |
  1356.                                |
  1357.    1 - - - - - - - - > 13      |
  1358.   ________________________     |
  1359.   \  ..................  /     |
  1360.    \  ................  /    - | ---> Sub-D Connector (Male) to PC (LPT1)
  1361.     \__________________/       |
  1362.                                |
  1363.    14 - - - - - - - -> 25      /
  1364.  
  1365.  
  1366.  
  1367.    Printer    Centronics   Centronics      Sub-D        Sub-D        Sub-D
  1368.   Connector    (Female)      (Male)      Connector    Connector    Connector
  1369.  
  1370.       1 ---------  1            1 ---------  1            2 --------- 11
  1371.             .                         .                  10 ---------  8
  1372.             .                         .                  11 ---------  1
  1373.             .                         .                  12 ---------  7
  1374.      17 --------- 17           14 --------- 14           13 ---------  6
  1375.      18 --------- 19           19 --------- 19           15 ---------  5
  1376.             .                  21 --------- 20           19 --------- 19
  1377.             .                  23 --------- 21
  1378.             .                  25 --------- 22
  1379.      34 --------- 35           27 --------- 23
  1380.                                29 --------- 24
  1381.                                30 --------- 25
  1382.                                31 --------- 16
  1383.                                32 --------- 15
  1384.                                33 --------- 18
  1385.                                36 --------- 17
  1386.  
  1387.  
  1388.  
  1389.   CPCPARA -> PCPARA (v1.1) transfer speed:
  1390.  
  1391.   Times to transfer a block of 0x4000 Bytes from CPC to PC with the
  1392.   parallel adapter:
  1393.  
  1394.   Source on CPC:                Bytes/sec:      Baud:
  1395.   -----------------------------------------------------------
  1396.   File from floppy disk:        1600            12800
  1397.  
  1398.   Block from memory:            2240            17920
  1399.  
  1400.   Block from memory, no ints.:  2445            19560
  1401.   (poke &b941,&c9 on CPC 6128)
  1402.  
  1403.   The block sending was controlled in BASIC (inside CPCPARA):
  1404.   defstr a:a="test.$$$":call sstr,@a
  1405.   a=string$(&80):for i=1 to &80:call sstr,@a:next:call sbyte,0:stop
  1406.  
  1407.  
  1408.   You can read further information about the parallel adapter in chapter 7.
  1409.  
  1410.  
  1411.  
  1412. 5.3  The serial interface
  1413. =========================
  1414.  
  1415.   If you own a serial interface for the CPC, you can certainly use it
  1416.   for data transfer to the PC.
  1417.  
  1418.  
  1419.  
  1420. 5.4  Other possibilities
  1421. ========================
  1422.  
  1423.   There are some more fantastic ways to get the software onto the PC.
  1424.  
  1425.   - Connect the 3" disk drive to the PC. Some (older) models should fit to
  1426.     a 5.25" connection.
  1427.  
  1428.   - With a detour over the the Spectrum+3: read the 3" disk on the
  1429.     Spectrum+3, convert it in the Spectrum format and use a utility
  1430.     to read it on the PC. This utility comes with the Spectrum emulator Z80
  1431.     by Gerton Lunter.
  1432.  
  1433.   - When is was necessary to get the ROM yourself, someone told me about
  1434.     his way:
  1435.     He took the ROM chip out of the CPC and inserted it instead of the VGA
  1436.     BIOS. With a small program he was able to read the contents.
  1437.  
  1438.   - Maybe you will find another way?
  1439.  
  1440.  
  1441.  
  1442.  
  1443. 6.  Sources of Supply, Help Line, Acknowledgments
  1444. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  1445.  
  1446. In this chapter you will read where to get CPC software and whom to ask in
  1447. the case of questions. Furthermore, I mention some other Amstrad emulators.
  1448.  
  1449.  
  1450. 6.1  Where can I get CPC software ?
  1451. ===================================
  1452.  
  1453.   This is no problem if you have access to the Internet.
  1454.   As for Spectrum emulators, a number of "anonymous" archives exist
  1455.   where you can get CPC software via FTP.
  1456.  
  1457.   - ftp.nvg.unit.no:/pub/cpc, thanks to Arnt Gulbrandsen.
  1458.     This is one of the biggest archives with CPC stuff.
  1459.  
  1460.   - sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu
  1461.     This is a mirror of ftp.nvg.unit.no. If you have problems connecting
  1462.     to Norway you can try this.
  1463.  
  1464.   - ftp.ibp.fr:/pub/amstrad, thanks to Emmanuel Roussin
  1465.     Another site with many CPC programs.
  1466.  
  1467.   - ftp.demon.co.uk:/pub/cpm, thanks to Paul Martin
  1468.     Paul Martin will send anyone, who can give him proof that they own
  1469.     an original Amstrad CP/M Plus disk, the binary ROM images of his
  1470.     "CP/M Plus ROMs" for free.
  1471.  
  1472.  
  1473.  
  1474.   The following BBS have CPC software:
  1475.  
  1476.   - Aspects 2:250/107 : +44 617920260, in United Kingdom
  1477.  
  1478.   - Genesis the 8bit generation, 2:320/220, +33 1 39 50 54 11, France
  1479.  
  1480.   - Razormaid, 2:246/6009, +49 711 4204329, Germany
  1481.  
  1482.   - Beavis'n'Butthead BBS 2453/407, Germany
  1483.  
  1484.  
  1485.  
  1486. 6.2  News, exchange experiences
  1487. ===============================
  1488.  
  1489.   Do you always want to have the latest version of CPCEMU?
  1490.   Do you want to be informed if a new one is released?
  1491.  
  1492.   Meanwhile we have set up a newsgroup especially for the CPC!
  1493.   It is called comp.sys.amstrad.8bit.
  1494.   Here you will find discussions about CPCs (and also CPCEMU), and
  1495.   you can talk about your experiences with CPCs.
  1496.  
  1497.   If you cannot read the newsgroup for any reason, write me an email
  1498.   saying that you want to be on the mailing list. Then you will be informed
  1499.   about CPCEMU news.
  1500.  
  1501.   You will find my address in the next section.
  1502.   Certainly you can also use normal mail to ask me (or David, see below),
  1503.   but please do not forget the return postage.
  1504.  
  1505.   If you send me a contribution, I feel obliged to send the latest version
  1506.   to you at least one or two times.
  1507.  
  1508.  
  1509.  
  1510.  
  1511. 6.3  If you have questions or suggestions
  1512. =========================================
  1513.  
  1514.  
  1515.   Then you can write directly to me:
  1516.  
  1517.        Marco Vieth
  1518.        Auf dem Uekern 4
  1519.        33165 Lichtenau
  1520.        Germany
  1521.  
  1522.        Phone: (...)05292/1366
  1523.  
  1524.        Internet: ali@uni-paderborn.de
  1525.  
  1526.        As you have probably already gathered while reading the Internet
  1527.        address, I am studying Computer Science at the University of
  1528.        Paderborn. I am in my 10th semester (SS 95).
  1529.  
  1530.  
  1531.  
  1532.   In case you speak or write English (I presume so 'cause you're reading
  1533.   this) you also can write to David Cantrell:
  1534.  
  1535.        David Cantrell
  1536.        116, London Road
  1537.        Bexhill-on-sea
  1538.        East Sussex
  1539.        TN39 4AA
  1540.        England
  1541.  
  1542.        Phone: +44-1424-221015
  1543.  
  1544.        Internet: test@gmcl.co.uk
  1545.  
  1546.  
  1547.   David offered to help a little to answer the "pile of letters".
  1548.   He has scanned firmware manual for the CPC, so everyone can get it
  1549.   in an electronical form.
  1550.  
  1551.  
  1552.  
  1553.  
  1554.   Although this program is Freeware, I would certainly accept any sort of
  1555.   support, financial or technical.
  1556.   (30-50 Deutschmarks would be appropriate.)
  1557.   (That is around 20-33 US$ or 13-21 British pounds.)
  1558.  
  1559.   Even if you send no money, I normally respond to all letters and try
  1560.   to keep in mind all suggestions (I am sure David will do the same).
  1561.   So do not hesitate to send your comments.
  1562.  
  1563.  
  1564.  
  1565. 6.4  Other Amstrad CPC emulators
  1566. ================================
  1567.  
  1568.   At the beginning of 1994 I thought that CPCEMU was the only emulator
  1569.   for the Amstrad CPC. Now I know of three other:
  1570.  
  1571.   - SIMCPC:
  1572.     Presumably the first CPC emulator written.
  1573.     CPC Emulator for PC/XT/AT   (c) 1989, 90 by GHE, Aachen.
  1574.     It is only black and white, but with additional ROMs;
  1575.     only a "beer humour".
  1576.  
  1577.   - CPC2PCxx:
  1578.      In development since October 1993 by Paco Lopez (Spain), and
  1579.      Is available from some sites now. It is written completely in
  1580.      protected mode and uses the same disk format as CPCEMU.
  1581.  
  1582.   - CPE:
  1583.     In development by Bernd Schmidt. By using a special 50 hertz
  1584.     screen mode, some colour blocks are exactly reproduced.
  1585.     A special 256-colour CPE2 shows exact colour blocks with more
  1586.     than 50 hertz.
  1587.     Also supported: Multi modes, overscan.
  1588.     Latest version: v4.7.
  1589.  
  1590.  
  1591.  
  1592. 6.5  Plans for future releases of CPCEMU
  1593. ========================================
  1594.  
  1595.  
  1596.   - overscan
  1597.   - improved multi modes
  1598.   - centered screen, if you change its size
  1599.   - fast hardware scrolling
  1600.   - selectable screen squashing
  1601.   - save screen as .BMP file
  1602.   - change the CPC type without leaving the emulator
  1603.   - support of second joystick
  1604.   - US keyboards have no "<>", ALTgr
  1605.   - simulate the expansions-port of the CPC
  1606.   - load CPC disks directly
  1607.   - load CPC tapes directly (over printer port or Soundblaster card)
  1608.   - transfer whole disk images with the parallel adapter
  1609.   - volume control for the Soundblaster
  1610.   - improved sound (maybe with noise)
  1611.   - digiblaster emulation
  1612.  
  1613.   Maybe this is never done since I have to write my dissertation first
  1614.   and do some "real" work...
  1615.  
  1616.  
  1617.  
  1618. 6.6  Acknowledgments
  1619. ====================
  1620.  
  1621.   - Special thanks to Juergen Weber, not only for many hints and
  1622.     suggestions, but especially for the fast Z80 emulation from
  1623.     his CP/M emulator ZSIM.
  1624.  
  1625.                 Juergen G. Weber
  1626.                 Wiesentalstrasse 1
  1627.                 74523 Schwaebisch Hall
  1628.                 Federal Republic of Germany
  1629.  
  1630.                 email: weberj@dia.informatik.uni-stuttgart.de
  1631.  
  1632.  
  1633.   - Also thanks to Bernd Schmidt. Because Bernd wrote his own emulator,
  1634.     we have had the same problems many times. Only if you try to write
  1635.     such an emulator yourself can you imagine, which details cause problems.
  1636.     There is no CPC documentation available, which gives a whole
  1637.     specification. Most parts of the CPC behaviour are detected by
  1638.     experiments with a real CPC.
  1639.  
  1640.   - Thanks to Emmanuel Roussin for his untiring engagement for the CPC.
  1641.     He did the essential steps for setting up the newsgroup and lent me
  1642.     his Multiface II for months, so that I could include in the emulator
  1643.     somehow.
  1644.  
  1645.   - Thanks to Arnt Gulbrandsen for his JPP source, where I found
  1646.     ideas for the keyboard handler and the joystick routine.
  1647.     By the way, JPP is a very good Spectrum emulator.
  1648.  
  1649.   - Thanks to Martin Zacho for supplying a joystick routine.
  1650.  
  1651.   - Thanks to Fernando J. Echevarrieta Fernandez for pointing out first
  1652.     that version v0.8 did not emulate a CPC 664.
  1653.  
  1654.   - Thanks to Gilles Molinari for his transfer program for the parallel
  1655.     adapter.
  1656.  
  1657.   - Thanks to Paul Martin for correcting the English documentation to
  1658.     version 1.0.
  1659.  
  1660.   - Thanks to Mark Haigh-Hutchinson for his engagement in making programs
  1661.     from the company Vortex public domain.
  1662.  
  1663.   - Thanks to Martin Young for his outstanding ideas about emulating a Z80.
  1664.  
  1665.   - Thanks to Linh Hsiesh for many ideas for improvements, most of which
  1666.     should have been incorperated by now.
  1667.  
  1668.   - Thanks to Fred Harris for writing a letter to AMSTRAD about the ROMs.
  1669.  
  1670.   - Thanks to Amstrad, especially to Cliff Lawson for allowing me to
  1671.     distribute the BASIC ROM. Amstrad retains the copyright.
  1672.  
  1673.         Amstrad plc, Brentwood House,
  1674.         169 Kings Road, Brentwood,
  1675.         Essex CM14 4EF
  1676.  
  1677.   - Thanks to Richard Clayton from Locomotive for allowing me to distribute
  1678.     the Firmware ROM. Locomotive retains the copyright.
  1679.  
  1680.   - And thanks to the many users for sending me suggestions or having
  1681.     ideas. Without them CPCEMU would hardly have reached version 1.0
  1682.  
  1683.   - (Please excuse my English.)
  1684.  
  1685.  
  1686.  
  1687.  
  1688. 6.7  Registered trademarks
  1689. ==========================
  1690.  
  1691.   CP/M, CP/M 2.2 and DRDOS are trademarks of Digital Research.
  1692.   MS-DOS is a trademark of Microsoft.
  1693.   IBM PC, PC-XT, PC-AT and OS/2 are trademarks of International
  1694.     Business Machines.
  1695.   CPC, AMSDOS by Amstrad,
  1696.   BORLAND C, TASM (Turbo Assembler) by Borland,
  1697.   22DISK by SYDEX
  1698.   Soundblaster by Creative Labs
  1699.   ...
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705. ------------------------------------------------------------------------------
  1706.  
  1707.  
  1708.  
  1709. 7.  Internal Information about CPCEMU
  1710. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  1711.  
  1712.  
  1713. This chapter gives some background information and answers the question,
  1714. "WHY shall I do this or that now?"
  1715. The powerful debug menu is also described. You will also find the structures
  1716. of disk images and snapshot files.
  1717. This information is not intended for CPCEMU users without knowledge of
  1718. what is inside a CPC. Maybe it will be useful sometime.
  1719. I have put this information at the end, even after the trademarks, in an
  1720. attempt to show its "relative insignificance".
  1721. If you have no fun reading unintelligible sentences and unarranged
  1722. information, do not read further!
  1723. Skip directly to the Appendix.
  1724.  
  1725.  
  1726.  
  1727. WARNING: Go on reading at your own risk !
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733. 7.1  Table of contents for chapter 7
  1734. ====================================
  1735.  
  1736.   7.2  Internal overview of CPCEMU features
  1737.     7.2.1  The Z80 CPU (The Processor)
  1738.     7.2.2  The Gate Array (The "Co-Processor")
  1739.     7.2.3  The PAL (Programmable Logic Array)
  1740.     7.2.4  The CRTC 6845 (Cathode Ray Tube Controller)
  1741.     7.2.5  The PIO 8255 (Programmable Input Output)
  1742.     7.2.6  The PSG AY 3-8912 (Programmable Sound Generator)
  1743.     7.2.7  The FDC 765 (Floppy Disc Controller)
  1744.     7.2.8  The Centronics printer interface
  1745.  
  1746.   7.3  The Debug menu
  1747.     - Overview of the debug menu
  1748.     - Preliminaries
  1749.     - Overview of the commands
  1750.     - Manipulation of registers
  1751.  
  1752.   7.4  Memory management
  1753.     7.4.1  Another time: EMS configuration
  1754.     7.4.2  How the Banking is done?
  1755.  
  1756.   7.5  ROM modifications
  1757.     7.5.1  ROM bypass for the cassette
  1758.     7.5.2  AMSDOS ROM modifications
  1759.  
  1760.   7.6  Miscellaneous
  1761.     7.6.1  Another time: The configuration file
  1762.     7.6.2  The parallel adapter
  1763.        - Direction CPC->PC
  1764.        - Direction PC->CPC
  1765.     7.6.3  CPCTRANS
  1766.  
  1767.   7.7  Structure of selected CPCEMU files
  1768.     7.7.1  Disc images
  1769.        - The Disc Information block
  1770.        - The Track Information block
  1771.     7.7.2  Snapshot files
  1772.     7.7.3  AMSDOS header
  1773.     7.7.4  Poke Database
  1774.  
  1775.   7.8  Internal history
  1776.  
  1777.  
  1778.  
  1779.  
  1780. 7.2  Internal overview of CPCEMU features
  1781. =========================================
  1782.  
  1783.  
  1784.   How compatible is CPCEMU really?
  1785.  
  1786.  
  1787.  
  1788.   7.2.1  The Z80 CPU (The Processor)
  1789.   ----------------------------------
  1790.  
  1791.   + All Z80 instructions are emulated, including so-called illegal ones.
  1792.     You have the choice between a slow Z80 emulation written in C and a
  1793.     fast Z80 emulation written in assembler by Juergen Weber.
  1794.     With the COCPU technique, every Z80 instruction is
  1795.     emulated simultaneously by the slow and the fast version,
  1796.     so it gets very slow, but by comparing the registers after
  1797.     each instruction many errors are found. Obviously this was
  1798.     only used during program development.
  1799.     You can activate the slow emulation in the debug menu.
  1800.   + Additional instructions 'ED FC xx' only the emulator knows.
  1801.     Among them the user break 'ED FC FC  USER &BCFC'.
  1802.  
  1803.   - No exact timing of the instructions
  1804.   - Fast emulation: load/write a word from/to address 0xffff causes an
  1805.     INT 0x0D. With EMS it is even more fatal, the system hangs
  1806.     (under OS/2 only one window).
  1807.  
  1808.  
  1809.   7.2.2  The Gate Array (The "Co-Processor")
  1810.   ------------------------------------------
  1811.  
  1812.   + All 32 colours of the CPC (27 different ones)
  1813.   + All three screen modes (X x Y x COLOURS):
  1814.         mode 0 = 160x200x16
  1815.         mode 1 = 320x200x4
  1816.         mode 2 = 640x200x2
  1817.   + ROM banking (16KB OS, 16KB BASIC, 16KB AMSDOS and additional ROMs)
  1818.  
  1819.   - Colour beams flicker
  1820.  
  1821.  
  1822.  
  1823.   7.2.3  The PAL (Programmable Logic Array)
  1824.   -----------------------------------------
  1825.  
  1826.   The PAL is logically at the same address as the gate array but
  1827.   in hardware separated from it.
  1828.  
  1829.   + RAM banking (128 KB, up to 576 KB) with EMS or conventional memory.
  1830.     With emulated EMS, the blocks are mapped by the hardware, so the speed
  1831.     is OK. CPCEMU gives you a Dk'tronics compatible RAM expansion
  1832.     with up to 576 KB.
  1833.  
  1834.   - Without EMS, RAM banking is very slow, since memory blocks must be moved
  1835.     around in the PC memory. Besides you have only 128 KB RAM.
  1836.  
  1837.  
  1838.  
  1839.  
  1840.   7.2.4  The CRTC 6845 (Cathode Ray Tube Controller)
  1841.   --------------------------------------------------
  1842.  
  1843.   + Screen base and offset for hardware scrolling
  1844.   + Several screen sizes from 0x0 to 80x25 with CRTC registers 1 and 6.
  1845.   + Different character sizes (1..7) with CRTC register 9
  1846.   + Multi modes (they use some other registers)
  1847.  
  1848.   - Overscan is not yet supported
  1849.  
  1850.  
  1851.  
  1852.   7.2.5  The PIO 8255 (Programmable Input Output)
  1853.   -----------------------------------------------
  1854.  
  1855.   + Keyboard (connected to the PSG)
  1856.   + VSYNC emulation: A bit which is set between two interrupts during a
  1857.     screen refresh. You can change the position.
  1858.   + The cassette is very fast, a ROM bypass allows access to any DOS file.
  1859.  
  1860.   - VSYNC bit is set too long
  1861.   - Cassette ports are not emulated, so most of cassette copy programs
  1862.     which access the ports directly do not run.
  1863.  
  1864.  
  1865.   7.2.6  The PSG AY 3-8912 (Programmable Sound Generator)
  1866.   -------------------------------------------------------
  1867.  
  1868.   + Either through the PC speaker (awful, since 3 channels are
  1869.     multiplexed into one and the volume cannot be changed)
  1870.     or a Soundblaster card. Only the Adlib compatible FM part of the
  1871.     soundcard is used.
  1872.  
  1873.   - No digital-sound or too slow.
  1874.     The noises form the PSG have no equivalent on the Soundblaster,
  1875.     so they are not emulated.
  1876.  
  1877.  
  1878.   7.2.7  The FDC 765 (Floppy Disc Controller)
  1879.   -------------------------------------------
  1880.  
  1881.   + All necessary FDC commands to control two drives A and B
  1882.     (including sector read/write, seek track, read sector-ID, ... ;
  1883.     format track is ignored)
  1884.     Very flexible disk formats (up to 18 sectors per track).
  1885.     Including double sided formats, e.g. VORTEX.
  1886.  
  1887.   - Complicated copy-protected formats are not supported.
  1888.  
  1889.  
  1890.  
  1891.   7.2.8  The Centronics printer interface
  1892.   ---------------------------------------
  1893.  
  1894.   + Printer output also with 8-bit printer patch, to a file defined
  1895.     by PRINTER.
  1896.  
  1897.  
  1898.  
  1899.  
  1900. 7.3  The Debug menu
  1901. ===================
  1902.  
  1903.   The complete register set of the CPU is displayed and can be modified.
  1904.   You can "dump" the memory, disassemble or modify it. You can load or
  1905.   save areas in memory. And the most interesting thing:
  1906.   You can single-step through programs!
  1907.   (Similar to a real debugger.)
  1908.  
  1909.   Overview of the debug menu
  1910.   --------------------------
  1911.  
  1912.   R)un T)race S)tep  A)ssem D)ump I)nput  L)oad saV)e  M)ode  F)ast Q)uit
  1913.   AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000
  1914.   AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0  NZ NC PO P
  1915.   0000 : 01 89 7F       LD BC,&7F89
  1916.   -f->
  1917.  
  1918.   The first line displays the available commands, use the capitalized
  1919.   letters.
  1920.   The next two lines show the actual values of the Z80 registers.
  1921.   The next one disassembles the actual instruction at PC position
  1922.   and the last is a prompt waiting for your input.
  1923.   ('f' indicates that you are using the fast CPU.)
  1924.  
  1925.  
  1926.   Preliminaries
  1927.   -------------
  1928.  
  1929.   Parameters in special brackets are optional [opt].
  1930.   Use only hexadecimal values, e.g. <address> = 0000-ffff
  1931.   "<ret>" indicates that you are in a special mode. You may press
  1932.   <return> to continue. <String><Return> leaves this mode
  1933.   (use e.g. b<return>).
  1934.   Commands are letters, mostly followed by an optional address.
  1935.   Between the letter and this address must be a blank or tab.
  1936.   Without an address, PC (program counter) is assumed as default.
  1937.  
  1938.  
  1939.   Overview of the commands
  1940.   ------------------------
  1941.  
  1942.   R)un:
  1943.   r [<address>] : starts emulation from PC or an optional address.
  1944.     Examples:
  1945.     -f-> r      starts emulation from PC
  1946.     -f-> r 100  sets PC to 0x100 and starts emulation
  1947.  
  1948.   T)race (trace into):
  1949.   t [<address>] : executes only the actual displayed instruction.
  1950.     Use <return> to continue in this mode, and so on.
  1951.     <string><return> goes back to normal mode.
  1952.     All single-step-commands are executed by the slow CPU (even if
  1953.     "-f->" is displayed), since there is no counter in the fast CPU
  1954.     any more.
  1955.  
  1956.   S)tep (step over):
  1957.   s [<address>] : executes the next instruction.
  1958.     Rather all instructions, until PC is equal to the following
  1959.     instruction. This can take a long time e.g. after a 'Ret'.
  1960.     In this case F10 helps (as usual).
  1961.     All single-step commands are executed by the slow CPU (even if
  1962.     "-f->" is displayed), since there is no counter in the fast CPU
  1963.     any more.
  1964.  
  1965.   A)ssemble (actually disassemble):
  1966.   a [<address>] : disassembles the next 16 instructions.
  1967.     Use <return> to continue in this mode, and so on.
  1968.     <string><return> goes back to normal mode.
  1969.  
  1970.   D)ump:
  1971.   d [<address>] : shows an hex/ASCII dump of the following 256 bytes from
  1972.     address (or PC).
  1973.     Use <return> to continue in this mode, and so on.
  1974.     <string><return> goes back to normal mode.
  1975.  
  1976.   I)nput (modifying memory):
  1977.   i [<address>] : shows the actual memory address with its current
  1978.     value, which you can take by <return> or change by <hex-value>
  1979.     <return>.
  1980.     Leave this mode by using an invalid number like '-1':
  1981.     -1<return> .
  1982.  
  1983.   L)oad (loading a program):
  1984.   l [<address>]  : prompts you for a filename <name> and loads it
  1985.     from the directory TAPE_PATH to <address>
  1986.     An AMSDOS-header is recognized.
  1987.     If you press <Return> after the filename prompt, the well-known
  1988.     file selection menu appears ...
  1989.     Examples:
  1990.     -f-> l<return> demo<return>         :
  1991.         loads file 'demo' to the actual PC
  1992.     -f-> l a000<Return> myprog<Return>  :
  1993.         loads file 'myprog' to address 0xA000
  1994.  
  1995.   saV)e (saving a program):
  1996.   v [<address>]  : prompts you for a filename <name> and the
  1997.     length of the memory block. This block is saved from <address>
  1998.     (or PC), as binary file in the directory TAPE_PATH, which
  1999.     includes an AMSDOS header.
  2000.     Example:
  2001.     -f-> v<return> demo<return> 4000<return>    :
  2002.         saves file "demo" from PC with length 0x4000.
  2003.  
  2004.   M)ode (changing the display mode):
  2005.   m : Changes display mode: register display, instruction
  2006.       disassembling on/off.
  2007.  
  2008.   F)ast (selecting the type of emulation):
  2009.   f : Flips between the fast Z80 emulation (developed in assembler
  2010.     by Juergen Weber, default) and the slow one (written in C).
  2011.     The prompt toggles between "-f->" for fast and "-s->" for slow.
  2012.     All r, s, t commands refer to the selected type of emulation.
  2013.  
  2014.   Q)uit (leaving the program):
  2015.   q : quits the emulator.
  2016.  
  2017.  
  2018.   Manipulation of registers
  2019.   -------------------------
  2020.  
  2021.   In addition to the one letter commands you can change register
  2022.   values with the syntax:               '<register>=<hex-value>'
  2023.   Examples:
  2024.   - af=345        : set register AF to 0x0345
  2025.   - pc=a000       : set program counter to 0xA000
  2026.  
  2027.   You can also write '<register><space><hex-value>'.
  2028.   You can modify all displayed registers, i.e.
  2029.   AF, BC, DE, HL, IX, IY, SP, PC, IR, AF', BC', DE', HL',
  2030.   and also IFF1, IFF2 and IMD.
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036. 7.4  The Memory Management
  2037. ==========================
  2038.  
  2039.  
  2040.   7.4.1  Another time: EMS configuration
  2041.   --------------------------------------
  2042.  
  2043.     You need an expanded memory manager supporting the LIM 4.0 standard
  2044.     (LIM EMS 4.0). This memory manager must supply extended EMS-pages in any
  2045.     region, as CPCEMU will look for 6 physical pages on continuous addresses.
  2046.     If EMS usage is possible, a memory count 'EMS xxx Bytes ok.' will appear
  2047.     during initialization.
  2048.  
  2049.     You were told to use the following settings under OS/2:
  2050.  
  2051.         EMS_FRAME_LOCATION = auto
  2052.         EMS_HIGH_OS_MAP_REGION = 32     (or more)
  2053.         EMS_LOW_OS_MAP_REGION = 0       (or more)
  2054.  
  2055.     What does that mean?
  2056.     Low region is for EMS pages in conventional memory. If CPCEMU
  2057.     is to use such pages, use at least 6*64KB = 84KB.
  2058.  
  2059.     High region is for EMS pages above 640K, additional to the
  2060.     standard frame of 64KB. Use at least 2*16KB = 32 KB.
  2061.  
  2062.  
  2063.     For DOS, you were told to include the following lines in your CONFIG.SYS:
  2064.  
  2065.         DEVICE=C:\DOS\HIMEM.SYS
  2066.         DEVICE=C:\DOS\EMM386.EXE 1024
  2067.         ...
  2068.  
  2069.     Modify the 1024, depending on the available memory of your computer.
  2070.  
  2071.     Annotations:
  2072.     EMM386 supplies several additional pages in conventional memory.
  2073.     The minimum address can be changed with the option /B=<segment>
  2074.     (default is 4000).
  2075.     With /P<number>=<segment> it is possible to change the segments of
  2076.     physical pages.
  2077.  
  2078.  
  2079.  
  2080.  
  2081.   7.4.2  How the Banking is done ?
  2082.   --------------------------------
  2083.  
  2084.     Banking is to enable some home computers to have RAM and ROM at the
  2085.     same address. So read is from ROM and write is to RAM. The Amstrad
  2086.     CPC has 64K RAM and a 16K ROM at 0-3fff and a second one at c000-ffff:
  2087.  
  2088.         0 RAM 0000-3fff
  2089.         1 RAM 4000-7fff
  2090.         2 RAM 8000-bfff
  2091.         4 RAM c000-ffff
  2092.         L ROM 0000-3fff
  2093.         U ROM c000-ffff
  2094.  
  2095.     The main idea is to have different segments and offsets for reading,
  2096.     and writing. For every read access, a read offset is added to the
  2097.     desired address, and the same is done with a write offset for writing.
  2098.  
  2099.                         state 0                 state 1
  2100.  
  2101.         block 5   M       L   c                W  0       <
  2102.         block 4   M    W  C   c                W  C   c    | swap at
  2103.         block 3   M    W  8 b c                W  8 a c    | state
  2104.         block 2   M    W  4 b c                W  4 a c    | change
  2105.         block 1   M    W  0 b                     L a c   <
  2106.         block 0   M       U b                     U a
  2107.  
  2108.  
  2109.     (M = conventional memory or physical EMS-pages)
  2110.  
  2111.     a = lower ROM enabled,  upper ROM enabled
  2112.     b = lower ROM disabled, upper ROM enabled
  2113.     c = lower ROM enabled,  upper ROM disabled
  2114.     W = lower ROM disabled, upper ROM disabled
  2115.  
  2116.     To flip between the two states, the '0' and 'L' block must be
  2117.     swapped. For RAM banking a new '0' must be swapped with the old
  2118.     one. ROM select is done by copying the new ROM to 'U'.
  2119.  
  2120.     With EMS memory, all banking is done by the EMS hardware (or its
  2121.     emulation). This improves the emulation speed in BASIC and CP/M
  2122.     Plus. Now you understand why 6 continuous physical EMS pages are
  2123.     needed; the standard frame with 4 pages is not enough.
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129. 7.5  ROM modifications
  2130. ======================
  2131.  
  2132.  
  2133.   7.5.1  ROM bypass for the cassette
  2134.   ----------------------------------
  2135.  
  2136.     After the '|TAPE' command, or if the AMSDOS ROM is disabled, the
  2137.     cassette is addressed. Cassette access is transformed into file
  2138.     access in a single directory. This redirection is done by a ROM bypass.
  2139.     With 'TAPE_BYPASS=YES' you enable the ROM bypass of the tape vectors.
  2140.     If CPCEMU finds a known ROM from a CPC 464/664/6128, the ROM is
  2141.     modified accordingly. The bypass is necessary if you want to use the
  2142.     cassette.
  2143.  
  2144.     Some special instructions are implemented in the Z80 emulation. They
  2145.     call special functions only supplied by the emulator. They are entered
  2146.     directly in ROM, so it is still possible to patch the RAM vectors.
  2147.  
  2148.     The following instructions are available:
  2149.     ED FC xx  USER &BCxx    (only valid for some RAM vectors)
  2150.     Similar to a call instruction to an internal function.
  2151.     The following values for xx are legal:
  2152.         65      :       CASSETTE INIT (BC65)
  2153.         77      :       CASSETTE IN OPEN (BC77)
  2154.         7A      :       CASSETTE IN CLOSE
  2155.         7D      :       CASSETTE IN ABANDON
  2156.         80      :       CASSETTE IN CHAR
  2157.         83      :       CASSETTE IN DIRECT
  2158.         86      :       CASSETTE RETURN
  2159.         89      :       CASSETTE TEST EOF
  2160.         8C      :       CASSETTE OUT OPEN
  2161.         8F      :       CASSETTE OUT CLOSE
  2162.         92      :       CASSETTE OUT ABANDON
  2163.         95      :       CASSETTE OUT CHAR
  2164.         98      :       CASSETTE OUT DIRECT
  2165.         9B      :       CASSETTE CATALOG
  2166.  
  2167.     In addition to that, you can use the user break instruction
  2168.     ED FC FC  USER &BCFC. It stops the emulation at once.
  2169.  
  2170.  
  2171.  
  2172.   7.5.2  AMSDOS ROM modifications
  2173.   -------------------------------
  2174.  
  2175.     - With 'DISABLE_ADOS=YES' you forbid the initialization of the AMSDOS.
  2176.       Then patching of tape vectors by the AMSDOS ROM is disabled. (So the
  2177.       tape vectors are still pointing to tape, although the AMSDOS ROM is
  2178.       initialized.) This is necessary if you want continue loading from
  2179.       tape after a disc-reset, but without giving the '|TAPE' command
  2180.       first.
  2181.       (It is done by 'poke &CCF2,&18: poke &CCF3,&05' in the AMSDOS ROM.)
  2182.       Sector instructions are not affected, they always address the disk.
  2183.  
  2184.     - 'DISC_SPEEDUP=YES' enables a AMSDOS ROM modification, which
  2185.       minimizes the motor waiting times to render a faster disc access.
  2186.       (The things are managed by DOS, so we do not need the delay loops.)
  2187.       The following bytes are modified in the AMSDOS ROM:
  2188.           poke &C5D4,&01  :'motor load time
  2189.           poke &C5D8,&01  :'format track time
  2190.           poke &C5D9,&01  :'short wait
  2191.           poke &C5DA,&01  :'short wait
  2192.           poke &C602,&01  :'only 1 retry on error
  2193.           poke &C784,&01  :'fast seek
  2194.           poke &C7E2,&01  :'fast seek
  2195.  
  2196.  
  2197.  
  2198.  
  2199. 7.6  Miscellaneous
  2200. ==================
  2201.  
  2202.  
  2203.  
  2204.   7.6.1  Another time: The configuration file
  2205.   -------------------------------------------
  2206.  
  2207.     Maybe you remember that comments start with a semicolon ';', and
  2208.     can start anywhere on a line. The rest of the line is ignored.
  2209.     Blanks, tabs, newlines and ';' are delimiters, and it does not
  2210.     matter how many you use.
  2211.     Many of the definitions have the syntactical form
  2212.     <key-word> '=' <value> {T}
  2213.     {T} is a sequence of at least one delimiter.
  2214.     Example:
  2215.     'ROM_PATH = .\ROM'
  2216.     If you do not want to (re-)define a key-word, make a comment
  2217.     out of it by inserting a ';' in front of it; you are not allowed
  2218.     to use 'ROM_PATH = <nothing>' .
  2219.  
  2220.     <number> can be given decimal, hexadecimal (with 0x) or binary (%).
  2221.     <pathname> may have a length of up to 80 characters and
  2222.     <filename> up to 20 characters.
  2223.  
  2224.     Some supplementary information to selected key-words:
  2225.  
  2226.     PIO_PORT_B = <number>                       (%00111110)
  2227.       Sets the input value to appear at port B of the PIO.
  2228.       You can disable the printer or select another company name.
  2229.       By changing this value to %00111010 (0x3A), you get "Schneider"
  2230.       instead of "Amstrad" (0x3E) on the opening screen.
  2231.  
  2232.       Meaning of the bits:
  2233.         b7 = 0  (TTL signal from tape; not used)
  2234.         b6 = 0  (0 = printer ready, 1 = busy)
  2235.         b5 = 1  (EXP signal)
  2236.         b4 = 1  (1 = VSYNC with 50 Hertz or  0 = with 60 Hertz;
  2237.                  not used in the emulator)
  2238.         b3,b2,b1 = 111
  2239.           select company:
  2240.           Isp (000), Triumph(001), Saisho(010), Solavox(011),
  2241.           Awa(100), Schneider(101), Orion(110), Amstrad(111)
  2242.         b0 = 0  (VSYNC: set automatically by the emulator.)
  2243.  
  2244.  
  2245.     BREAK_MASK = <number>               (0xffff)
  2246.  
  2247.       For debugging purpose only.
  2248.       Some events interrupt the normal emulation. With this flag,
  2249.       you can disable such events. Use with caution!
  2250.       Leave all bits on except those for such events you do not want
  2251.       to occur.
  2252.       b2 = 0 -> disable display of port errors (use 0xfffb)
  2253.       b3 = 0 -> disable function keys (so the emulation runs forever!)
  2254.                 (use 0xfff7)
  2255.       The meaning of the bits can change in future!
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.   7.6.2  The parallel adapter
  2262.   ---------------------------
  2263.  
  2264.     First, the construction of the adapter, now with functional description:
  2265.  
  2266.  
  2267.     PC  D-SUB   Cent.   CPC             Function
  2268.     --------------------------------    ---------------------------
  2269.     GND    19 ---- 19   GND             GND
  2270.     BUSY   11 <--- 1    -STROBE         Synchro (Data available)
  2271.     -ACK   10 <--- 8    D6              |
  2272.     PE     12 <--- 7    D5              | Data
  2273.     SELECT 13 <--- 6    D4              |
  2274.     -ERROR 15 <--- 5    D3              |
  2275.     D0      2 ---> 11   BUSY            Synchro (Ready to receive)
  2276.  
  2277.  
  2278.     Direction CPC->PC
  2279.     -----------------
  2280.  
  2281.     Normally the adapter is designed for this direction only. Sending
  2282.     on a CPC is on principle the same as printing on a line printer.
  2283.     If the PC sets Not-BUSY, the CPC writes a nibble (4 bit of a byte)
  2284.     to the port, sets STROBE as sign that the data is there, and clears
  2285.     it afterwards. So the PC only needs to clear BUSY (with D0), wait
  2286.     for STROBE (his BUSY line) and take the nibble (from the input-lines
  2287.     printer->PC), and set BUSY.
  2288.     Question: Why not sending 8 bits parallel?
  2289.     Answer:
  2290.     1. The PC printer port must be reprogrammed for input and I am not
  2291.        sure if that is possible on all PCs    and
  2292.     2. The CPC has a 7 bit printer port only.
  2293.  
  2294.  
  2295.     Direction PC->CPC
  2296.     -----------------
  2297.  
  2298.     One day I thought about the possibility of sending data in the other
  2299.     direction. Unfortunately the CPC has only one single input line at
  2300.     the printer port, namely the BUSY signal. So it would not improve the
  2301.     situation if you try to design a better adapter for this direction.
  2302.     Thus take what you have already and make the best out of it by
  2303.     developing a clever protocol.
  2304.     A serial interface also has one data line for each direction.
  2305.     But, a serial interface uses hardware synchronization, usually with
  2306.     a quartz, and both peers have to use exactly the same baud rate
  2307.     (e.g. 1200 baud).
  2308.     It is hard to do that with software only.
  2309.     What should I do?
  2310.     The idea is to utilize the speed advantage of the PC over the CPC.
  2311.     Each byte is split into 8 bit and transmitted serial, the PC has
  2312.     to set the BUSY line accordingly.
  2313.     During this 8 bit the CPC gives its maximum speed and the PC has to
  2314.     conform with it. The CPC writes a "bit request" with one assembler
  2315.     instruction. Now the PC must react promptly by setting the BUSY line
  2316.     accordingly the next bit. Since with the following-but-one (?)
  2317.     instruction the CPC will read it.
  2318.     In order to not disable the interrupts during the whole transfer,
  2319.     for every byte a "connection" is established.
  2320.     The CPC says "Hey, send something to me!", and the PC answers
  2321.     "Ok, I'm waiting until you want it." by toggling the BUSY-line.
  2322.     The whole story is protected with timer, so no peer can hang when
  2323.     waiting on a signal never sent.
  2324.     Thus you can escape the programs with <ESC> or <CRTC>+<BREAK>
  2325.     any time.
  2326.  
  2327.  
  2328.  
  2329.  
  2330.   7.6.3  CPCTRANS
  2331.   ---------------
  2332.  
  2333.     Another option not mentioned is "/d 0" or "/d 1". With 1 a special
  2334.     double-step mode is selected, on 80 track drives every second track
  2335.     is skipped when working with 40 track disks.
  2336.     This option should be unnecessary, because CPCTRANS switches
  2337.     automatically to double-step when detecting a 5.25" 360 KB disk.
  2338.  
  2339.     Normally it is very simple to read or write sectors by using the BIOS.
  2340.     But the BIOS cannot handle B-sides of disks with head-mark=0.
  2341.     So I had to program the FDC functions myself, with the aid of
  2342.     the MINIX source as an outline. Unfortunately the MINIX source contains
  2343.     some errors, and the timing in critical sections was done by
  2344.     simple delay loops possibly outlined for a 8086 processor.
  2345.  
  2346.  
  2347.  
  2348.  
  2349. 7.7  Structure of selected CPCEMU files
  2350. =======================================
  2351.  
  2352.  
  2353.   7.7.1  Disc Images
  2354.   ------------------
  2355.  
  2356.     Disc image files consist of a 0x100-byte disc info block and for
  2357.     each track a 0x100-byte track info block, followed by the data for
  2358.     every sector in that track.
  2359.  
  2360.     The Disc Information block
  2361.     --------------------------
  2362.     Byte (hex): Meaning:
  2363.     00 - 21      MV - CPCEMU Disk-File\r\nDisk-Info\r\n
  2364.                  ("MV - CPC" is characteristic)
  2365.     22 - 2F      unused (0)
  2366.     30           number of tracks (40, 42, maybe 80)
  2367.     31           number of heads (1 or 2)
  2368.     32 - 33      size of one track (including 0x100-byte track info)
  2369.                  With 9 sectors * 0x200 bytes + 0x100 byte track
  2370.                  info = 0x1300.
  2371.     34 - FF      unused (0)
  2372.  
  2373.     The Track Information block (for every track)
  2374.     ---------------------------------------------
  2375.     Byte (hex):  Meaning:
  2376.     00 - 0C      Track-Info\r\n
  2377.     0D - 0F      unused (0)
  2378.     10           track number (0 to number of tracks-1)
  2379.     11           head number (0 or 1)
  2380.     12 - 13      unused (0)
  2381.     Format track parameters:
  2382.     14           BPS (bytes per sector) (2 for 0x200 bytes)
  2383.     15           SPT (sectors per track) (9, at the most 18)
  2384.     16           GAP#3 format (gap for formatting; 0x4E)
  2385.     17           Filling byte (filling byte for formatting; 0xE5)
  2386.     Sector info (for every sector at a time):
  2387.     18+i         track number    \
  2388.     19+i         head number      | sector ID information
  2389.     1A+i         Sector number    |
  2390.     1B+i         BPS            /
  2391.     1C+i         state 1 error code (0)
  2392.     1D+i         State 2 error code (0)
  2393.     1E+i , 1F+i  unused (0)
  2394.  
  2395.     Annotations:
  2396.     The sector data must follow the track information block in the
  2397.     order of the sector IDs. No track or sector may be omitted.
  2398.     With double sided formats, the tracks are alternating,
  2399.     e.g. track 0 head 0, track 0 head 1, track 1 ...
  2400.     Use CPCTRANS to copy CPC discs into this format.
  2401.  
  2402.  
  2403.  
  2404.   7.7.2  Snapshot Files
  2405.   ---------------------
  2406.  
  2407.     Snapshot files consist of a 0x100-byte header and a memory dump.
  2408.  
  2409.     The Snapshot header:
  2410.     Byte (hex):  Meaning:
  2411.     00 - 07      'MV - SNA' (as characteristic)
  2412.     08 - 0F      unused (0)
  2413.     10           snapshot version (2, former 1)
  2414.     11 - 1A      Z80 register  AF, BC, DE, HL, R, I
  2415.     1B - 1C      Z80 flags  IFF0, IFF1 (0=disabled, 1=enabled)
  2416.     1D - 24      Z80 register IX, IY, SP, PC
  2417.     25           Z80 interrupt mode IMD (0 - 2)
  2418.     26 - 2D      Z80 register  AF', BC', DE', HL'
  2419.     2E           Gate Array: ink number register
  2420.     2F - 3F      Gate Array: ink value register (0, 1, ..., 15, 16)
  2421.     40           Gate Array: multi configuration register
  2422.     41           Gate Array: RAM configuration register
  2423.     42           CRTC: address register
  2424.     43 - 54      CRTC: data register (0, 1, ..., 17)
  2425.     55           Upper ROM number
  2426.     56 - 59      PIO: port A, port B, port C, control port
  2427.     5A           PSG: address register
  2428.     5B - 6A      PSG: data register (0, 1, ..., 15)
  2429.     6B - 6C      memory dump size (64K or 128K)
  2430.     (the following parameter exist only from snapshot version 2.0 onwards:)
  2431.     6D           CPC type where the snapshot was generated
  2432.                  (0=CPC 464, 1=CPC 664, 2=CPC 6128, 3 = unknown)
  2433.     6E           interrupt number (0..5), the latest interrupt
  2434.                  during a screen update cycle.
  2435.     6F - 74      6 multimode bytes, thus screen modes (0..2)
  2436.                  for the interrupts 0..5.
  2437.     75 - FF      unused (0), maybe later for emulator configuration
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.   7.7.3  AMSDOS Header
  2444.   --------------------
  2445.  
  2446.     Byte (hex):  Meaning:
  2447.     00           user number (0 , possible values 0-15)
  2448.     01 - 0F      filename+extension (possibly filled with 0)
  2449.     10           block number (0)
  2450.     11           last block flag (0)
  2451.     12           file type (0=basic, 1=protected basic, 2=binary,...)
  2452.     13 - 14      length of block (0)
  2453.     15 - 16      load address (0-FFFF)
  2454.     17           first block flag (0)
  2455.     18 - 19      logical length (0-FFFF)
  2456.     1A - 1B      entry address (0-FFFF)
  2457.     1C - 3F      free for the user (0)
  2458.     40 - 42      real length of file (1-FFFFFF)
  2459.     43 - 44      checksum of bytes 00-42
  2460.     45 - 7F      unused (random values from sector buffer)
  2461.  
  2462.     Annotation:
  2463.     A header is found at the beginning of every non-ASCII file. It is
  2464.     identified by calculating the checksum.
  2465.     Bytes 00-3F originate from the "cassette area", where files were
  2466.     divided up into blocks.
  2467.     The bytes 12, 15-16, 1A-1B, 40-42, 43-44 are necessary.
  2468.  
  2469.  
  2470.   7.7.4  Poke Database:
  2471.   ---------------------
  2472.  
  2473.   An entry (one line) consists of 7 parts, each surrounded by '"',
  2474.   separated by commas.
  2475.   1. part number (1 character, 0-F):
  2476.      The first entry has number 0 and can be selected.
  2477.      If a program needs more than one poke, following entries have the
  2478.      numbers 1, 2, ...
  2479.   2. Name of program (up to 20 characters)
  2480.   3. Description (up to 20 characters)
  2481.   4. Type (1 character):
  2482.      ('t'=Tape, 'd'=disk, 'a'=all), currently ignored.
  2483.   5. Address of poke (4 characters, hexadecimal):
  2484.      Specifies the memory location to be modified
  2485.   6. Byte for the poke (2 characters, hexadecimal or '??'):
  2486.      If '??', you have to input a value, e.g. number of lifes.
  2487.   7. Old byte (2 characters, hexadecimal or '??'):
  2488.      Allows to check, if the poke modifies the correct environment.
  2489.      If the byte at the address differs form old_byte, a warning is
  2490.      displayed. There is no check when using '??'.
  2491.  
  2492.   Example:
  2493.     "0","Devils Crown","inf oxygen","t","863b","00","??"
  2494.     "1","","","t","863c","00","??"
  2495.     "2","","","t","863d","00","??"
  2496.  
  2497.     There are three pokes for the program "Devils Crown", all working
  2498.     together. Old values ark unknown so old byte is '??'.
  2499.     You can omit name and description in following entries.
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505. 7.8  Internal History
  2506. =====================
  2507.  
  2508.  
  2509.   Z80EMU (only a Z80 with less CPC)
  2510.   ---------------------------------
  2511.  
  2512.   - v1.0 (1991)
  2513.     first version in Pascal (only Z80 emulation)
  2514.   - v1.2 (12.8.1992 - 16.8.1992)
  2515.     first version in C (translated with TPTC)
  2516.     Z80 problems: ADD HL..., DAA, LDIR set the P-flag incorrectly. BIT...
  2517.     set the Z-flag incorrectly, rotate instructions set the Z-flag and S-flag
  2518.     incorrectly; possible to use ROMs now.
  2519.   - v1.3 (18.8.1992)
  2520.     wrong port addressing: low byte incorrect. New memory management with
  2521.     128 KB RAM, 32 KB ROM
  2522.   - v2.0 (18.8.1992 - 22.8.1992)
  2523.     implemented COCPU technique to find errors (the COCPU uses separate
  2524.     memory and is only active in a special debugging mode). Z80 problems:
  2525.     AND... set H-flag incorrectly, CPI... set N-flag incorrectly. Formerly,
  2526.     the screen was only black and white, now it is blue and yellow as you
  2527.     know from a real CPC.
  2528.   - v2.1 (25.8.1992 - 27.8.1992)
  2529.     Emulation of all pens, colours in all modes. Writing only to the active
  2530.     screen which you can see. COCPU found an error: all instructions
  2531.     containing (IX+zz) with a negative distance were wrong ! Forgotten to
  2532.     take "signed char".
  2533.   - v2.2 (30.8.1992 - 3.9.1992)
  2534.     New keyboard routine, set palette without flickering (waiting for HSYNC).
  2535.     "Need-ROM" with COPYMATE introduced.
  2536.   - v2.3 (15.9.1992 - 19.9.1992)
  2537.     FDC emulation for sector load/save. COCPU found an error: LD XH,... was
  2538.     LD H,...
  2539.   - v2.3b (19.9.1992)
  2540.     Do screen update only if the screen is on RAM blocks 0..3 (and not 4..7);
  2541.     Made port FCxx an alias for FBxx (for CP/M Plus). At that time, I did not
  2542.     know that OUTI... predecrement the B-register.
  2543.   - v2.4 test (25.10.1992)
  2544.     Only R-register emulation if desired (per "DEFINE"); Now screen update
  2545.     every nth interrupt and not for every single byte written in memory.
  2546.     (Still very slow, because all is done in C). New memory management with
  2547.     blocks aligned to segments.
  2548.   - v2.5 test (31.10.1992)
  2549.     Changed memory management. Hardware scrolling and different screen sizes
  2550.     possible.
  2551.   - v2.6 test (5.11.1992)
  2552.     New keyboard handler from Arnt Gulbrandsen: all key combinations
  2553.     possible. Screen update in assembler.
  2554.   - v2.7 test
  2555.     Unsuccessfully tried to include the fast Z80 emulation from Juergen
  2556.     Weber.
  2557.   - v2.8
  2558.     Improved Screen update: Only changed parts are modified on the screen.
  2559.   - v2.9
  2560.     Using PC Timer to generate interrupts with 300 Hertz. Fast emulation runs
  2561.     only, if no ROM (banking) is needed.
  2562.  
  2563.   CPCEMU (now a CPC)
  2564.   ------------------
  2565.   - v0.2 (23.12.1992), following Z80EMU v2.9
  2566.     After nearly 4 hours analyzing with the Turbo Debugger I have found the
  2567.     error hanging the fast emulation: PUSH ES instead of PUSH DS.
  2568.   - v0.3 (28.12.1992 - 29.12.1992)
  2569.     Set N-flag for INI,OUTI. CPI in fast Z80 set wrong flags. RL (HL) used
  2570.     read segment (in DS) instead of write segment (in ES). LD A,R now
  2571.     produces random-numbers; All Tape routines implemented (but wrong
  2572.     CASSETTE IN CHAR).
  2573.   - v0.4 (1.1.1993)
  2574.     IN A,(n): A to b8..b15 (instead of B); RAM configuration 0xC3: corrected
  2575.     to 0,3,2,7 (for CP/M Plus). KC-Compact (a CPC compatible from former DDR)
  2576.     uses port EE00 - EE3D, but for what?
  2577.   - v0.5 (28.1.1993 - 8.2.1993)
  2578.     INIR,... R-register-incrementation depends on B, not on BC. CASSETTE IN
  2579.     CHAR corrected (wrong patch for CPC 6128).
  2580.   - v0.6 (23.3.1993 - 24.5.1993)
  2581.     Someone mentioned that the OUTI-instructions predecrement the B-register!
  2582.     Compiling the C parts in 386 code (with Borland C++ v3.1). Disk images
  2583.     have the suffix .DSK. CPCREAD.PAS corrected (head not initialized with 0)
  2584.     and translated to CPCREAD.C. Port addressing of the PIO improved (the CPU
  2585.     can read, even if the port is programmed for output, ...)
  2586.   - v0.7 (26.7.1993 - 29.8.1993) (unreleased)
  2587.     Totally new source, modularized, ...  Configuration file, more ROMs
  2588.     possible. Changed company name from 'Schneider' to 'Amstrad'. (You can
  2589.     choose between several names.)  RAM banking error removed. New
  2590.     documentation in German.
  2591.   - v0.8 (30.8.1993 - 9.9.1993)
  2592.     Slow emulation: parity instructions improved by using a table not only
  2593.     for parity. Z80: ED xx with illegal xx is ignored. New documentation in
  2594.     English.
  2595.   - v0.8a (10.9.1993 - 15.9.1993)
  2596.     Fatal error in fast emulation: If an DD CB xx instruction is executed and
  2597.     an interrupt occurs, the instruction is ignored!
  2598.   - v0.8b (16.9.1993 - 21.9.1993)
  2599.     Implemented a "real" VSYNC, if VSYNC_CT = 0. Corrected PIO port A
  2600.     problem: OUT &F400,xx with Port A in input mode was ignored. New joystick
  2601.     routine from Martin Zacho.
  2602.   - v0.8c (22.9.1993 - 13.12.1993)
  2603.     Checked documentation with "ispell". Emulation did not start, if
  2604.     "USE_JOYSTICK=YES" and a joystick was not present (PUSH AX at wrong
  2605.     position). Slow Emulation: DAA corrected (brackets were missing since
  2606.     v0.8). Wrong patch for CPC 664 in interrupt routine. This patch replaced
  2607.     EI with NOP do avoid the problem with EI (enable interrupts one
  2608.     instruction later). Now correct for all CPCs.
  2609.   - v0.8d (14.12.1993 - 29.12.1993)
  2610.     FDC emulation rewritten for double sided formats. CPCTRANS replaces the
  2611.     old CPCREAD and allows you to read Vortex-disks after you have installed
  2612.     the patch 720KB.COM. Beside that, you can write disk images back to disk.
  2613.     New fileselect when pressing F3. Some port address aliases introduced,
  2614.     e.g. &7000 - &7f00 to address the gate array, &0c00,&1c00,&2c00,&3c00,
  2615.     &bc00 for the CRTC. Emulation of the R-register enabled.
  2616.   - v0.9 alpha (30.12.1993 - 20.1.1994)
  2617.     EMS memory possible with a special EMS/UMB-configuration. Binary digits
  2618.     in the configuration file. RAM-banking addressing corrected: emulator
  2619.     accepted &d0-&ff as &c0-&c7. Now up to 576 KB RAM with EMS.
  2620.   - v0.9b (21.1.1994 - 31.1.1994)
  2621.     Usage of EMS simplified by extended EMS (or LIM EMS 4.0) with more than
  2622.     4 physical EMS pages. File-select added to 'l' (debug menu), RUN" .
  2623.   - v0.9c (1.2.1994 - 29.4.1994)
  2624.     Some awful PC speaker sound (disable it with F4). File select also with
  2625.     'v'; this English documentation corrected; Soundblaster sound (can be
  2626.     improved); new CPCTRANS with command line parameters, direct FDC access;
  2627.     parallel adapter tested and the software improved. Fast Z80: INC (HL),
  2628.     DEC (HL), INC (IX+n), DEC (IX+n) for RAM below ROM corrected. PgUp,PgDn
  2629.     move oversized screens; parts of overscan screens are displayed.
  2630.     Now possible: 64K snapshots.
  2631.   - v0.9d (30.4.1994 - 12.5.1994)
  2632.     Interrupts during DI are not forgotten, and they are not enabled directly
  2633.     after an EI instruction any more. New color functions: now without snow
  2634.     under OS/2. Fast Z80: speed up code fetch.
  2635.  
  2636.   - v1.0 (13.5.1994 - 20.5.1994)
  2637.     Improved screen part: different character sizes from 1 to 8. File select
  2638.     added to SAVE" , added fast select by pressing a letter. Improved
  2639.     CPCTRANS with a verify option. A new setup menu, if you press F7. So you
  2640.     can disable colour flickering.
  2641.  
  2642.   - v1.0a (21.5.1994 - 9.6.1994)
  2643.     Improved setup menu with direct input or cursor keys, added German
  2644.     keyboard layout, added simple delay option. Correct display of smaller
  2645.     screen sizes (without parts of the bigger ones). Improved fast Z80 part:
  2646.     faster RRA,RLA, ... faster CB xx instructions. Added more illegal
  2647.     instructions (ED xx). LD D,XH and LD YL,YH were missing ! Corrected CPDR,
  2648.     CPIR with BC=0 (0 means 65536 on a Z80, but it is 0 for the 80x86 REPE
  2649.     prefix!). DAA flags corrected. New software for the parallel adapter:
  2650.     Now it is possible to send to the CPC. Thanks to Bernd Schmidt for
  2651.     pointing out that an interrupt increments the R-register by 1. With his
  2652.     help, the PIO port C register emulation has been improved.
  2653.  
  2654.   - v1.1a (10.6.1994 - )
  2655.     A new era of CPCEMU has arisen: Amstrad has allowed the use of the ROMs!
  2656.     Changing in the configuration file: ROM_BLOCKS -> ROM_BLOCK, DISC_BYPASS
  2657.     -> DISABLE_ADOS, no space separating '=' needed, Changings in sound part,
  2658.     graphics part: vertical size by VGA-CRTC. Joystick calibration is in the
  2659.     setup menu now, tape routines for saving are improved. FDC part improved:
  2660.     now you can use COPYMATE. Insert non-data format disks without read error
  2661.     (without a seek to track 0). Another delay in CPCTRANS, I hope, you will
  2662.     not need the turbo switch any more; formatting of disk images. Corrected
  2663.     PIO port C another time: it is cleared after out &7f00,n. Major changes
  2664.     in the configuration file: Now with conditional configuration (#IFCPC,
  2665.     #ENDIF). Some tokens changed (VSYNC_CT -> /, DISC_PATH -> /, SNAP_PATH ->
  2666.     SNAPSHOT, DRV_A -> DRIVE_A, DRV_B -> DRIVE_B). Load programs from inside
  2667.     ZIP archives. You will need PKUNZIP.
  2668.  
  2669.   - v1.1b (17.8.1994 - 2.9.1994)
  2670.     Multimodes introduced, that means different screen modes on the same
  2671.     screen. The screen update is partitioned in up to 6 areas, each one is
  2672.     updated when an interrupt occurs. (Can be improved.) Possible now: 128K
  2673.     Snapshots, extended for multimodes. CPCPARA improved: Now you can
  2674.     transfer binary files with header. CPC 6128 Plus detection included.
  2675.     More port aliases included.
  2676.  
  2677.   - v1.2 (3.9.1994 - )
  2678.     This version was released. Mainly there are some changes with
  2679.     the help menu.
  2680.  
  2681.   - v1.2a (27.9.1994 - )        (was available as UPD12A.ZIP)
  2682.     File Select: Only the available drives are displayed.
  2683.     And: With the driver ANSI.SYS the background of some text was black.
  2684.     TMP_PATH: You can specify a drive without path.
  2685.     DOS Shell (F7): CPCEMU is swapped to XMS, EMS or disk first, so you
  2686.     have much memory in the DOS shell. (This feature is taken from the
  2687.     Public Domain Program SWAP300.ZIP by Marty Del Vecchio.)
  2688.     Screen update could be corrupted, if the screen width was not
  2689.     divisible by 4.
  2690.     Another CPCEMU version to get even more speed: C2.EXE. It uses a
  2691.     different memory management with two EMS frames with 64KB each.
  2692.     One for reading and one for writing. But it runs only with EMS.
  2693.     The ROMs are also (c) by Locomotive Software, not only Amstrad.
  2694.  
  2695.   - v1.2b (  )
  2696.     There was no stereo sound on a Soundblaster Pro even if the
  2697.     configuration said so. If no Soundblaster was found there was no
  2698.     sound at all until you use USE_SB=NO.
  2699.     Fast-Z80: Changed some word accesses to byte accesses. That's a bit
  2700.     slower but does not crash the computer every time you do a word
  2701.     access at address 0xffff.
  2702.     Fast-Z80: Problem with EI HALT DI corrected: The address to HALT was
  2703.     pushed instead that one of DI.
  2704.     corrected English documentation
  2705.     improved CPCPARA and PCPARA v1.1: adapter test, much more speed CPC->PC:
  2706.     approx. 1600 bytes per second reading from disk! (486/66), statistics.
  2707.     So you can transfer 16KB in 10 seconds! Thanks to Klaus Weber for
  2708.     pointing out, that it was much too slow.
  2709.     In PCPARA there was a DELAY(1) after every nibble to wait a millisecond.
  2710.     This is not necessary.
  2711.  
  2712.   - v1.2c (28.2.1995 - )        (was available as UPD12C.ZIP)
  2713.     Parts of CPCEMU rewritten in C++. This allows inline functions and
  2714.     improved interfaces to keep a better overview over the project.
  2715.  
  2716.   - v1.2d (16.3.1995 - )        (only for mailing list 'subscribers')
  2717.     Fast-Z80: Internal changes not visible to the user, except a little
  2718.     speed improvement. All data is kept in the data segment now instead
  2719.     of the code segment.
  2720.     Finally introduced the absolutely necessary mode for fast computers:
  2721.     'realtime CPC' (Selectable from the setup menu or REALTIME=YES).
  2722.  
  2723.   - v1.3 (        )
  2724.     Poke database for easy poking, French documentation, FDC format
  2725.     command (re-format disk images of the same size),
  2726.     new menu system with mouse support (MOUSE=YES),
  2727.     insert disk images with read-only DOS attribute (insert them as read
  2728.     only), debug menu: 'find' added
  2729.  
  2730.  
  2731.  
  2732.  
  2733.   CPCEMU is written in C++ and assembler, using Borland C 3.1 with 386
  2734.   optimization and Turbo Assembler. For Debugging the Turbo Debugger
  2735.   was used.
  2736.   The colours were composed with the program VGAMETER by J. Stephen
  2737.   Shattuck, Jr., with the CPC connected to a TV by a Scart adapter.
  2738.  
  2739.  
  2740.  
  2741. ------------------------------------------------------------------------
  2742.  
  2743.  
  2744.  
  2745. (From this point you can continue reading without danger.)
  2746.  
  2747.  
  2748.  
  2749. Appendix
  2750. ≡≡≡≡≡≡≡≡
  2751.  
  2752.  
  2753.  
  2754. A.1  Glossary
  2755. ≡≡≡≡≡≡≡≡≡≡≡≡≡
  2756.  
  2757. Here some computer terms are explained. I do not claim to give complete
  2758. or precise definitions. The terms are described with the view to the CPC.
  2759. References are marked with "»".
  2760.  
  2761.  
  2762. 386/33 (AT 386/33)
  2763.   Short term for »PC AT with 80386 processor, clocked with 33 MHz.
  2764.   Because of the "high" clock rate it should be a 386DX with a real 32
  2765.   bit data bus, not the cheap 386SX with a 16 bit data bus.
  2766.  
  2767. AMSDOS (Amstrad DOS)
  2768.   »DOS developed by »Amstrad, for the »CPC computers.
  2769.  
  2770. Amstrad
  2771.   British computer manufacturer, who has designed the »CPCs.
  2772.  
  2773. Archive
  2774.   Storage of files.
  2775.   Or: One file, including several other.
  2776.   In »ZIP archives the files are compressed before including them.
  2777.  
  2778. ASCII (Abbreviation for: American Standard Code of Information Interchange)
  2779.   On a computer all characters, numerals are represented internal as numbers.
  2780.   Most computers use ASCII, with the letter "A" coded as 65. »PC and »CPC
  2781.   also use ASCII. In »Locomotive-BASIC you can save an ASCII file by typing
  2782.   'SAVE"<filename>",A'.
  2783.  
  2784. Basis Address
  2785.   This you have to specify in many »setups if you own a soundcard.
  2786.   CPCEMU looks for an »environment variable.
  2787.  
  2788. BASIC (Abbreviation for: beginners all purpose symbolic instruction code)
  2789.   Widely used, easy to learn programming language for home- and personal
  2790.   computers. Former every computer had had his own BASIC dialect.
  2791.   Modern BASIC allows structured programming, so you are not forced to
  2792.   program "spaghetti code" any more.
  2793.   Also the »CPC has its own BASIC, the Locomotive BASIC by a company of
  2794.   the same name.
  2795.  
  2796. Batch File
  2797.   Contains instructions you normally type in your computer. If you call
  2798.   such a file, the instructions are executed one by one, even if you input
  2799.   them.
  2800.  
  2801. BASIC File
  2802.   See »File.
  2803.  
  2804. BBS
  2805.  
  2806. Binary File
  2807.   See »File.
  2808.  
  2809. BLASTER environment variable
  2810.   See »environment variable.
  2811.  
  2812. C64:
  2813.   Home computer by the company Commodore with 64 KB »RAM, very popular.
  2814.   Because of the huge software supply it was "the game computer" for many
  2815.   years. Later it was pushed aside from the Commodore AMIGA, but despite
  2816.   its old technique it survived longer.
  2817.  
  2818. Clock frequency
  2819.   Clock the processor is connected to. It determines the speed of the
  2820.   processor in a significant way. Today's 486DX2/66 processors are clocked
  2821.   internally with 66 MHz.
  2822.   The Z80A in the »CPC is clocked with 4 MHz, running actually with 3.3 MHz
  2823.   because he has to wait periodically for the screen update.
  2824.  
  2825. Command line parameter
  2826.   Parameter you give in the command line after the file you want to call.
  2827.  
  2828. Configuration
  2829.   Here: Configure a program for his own needs.
  2830.   You can do that with the »Setup or a configuration file.
  2831.  
  2832. CPC (Abbreviation for: Colour Personal Computer)
  2833.   Developed by the company »Amstrad, was available in different types.
  2834.   Please read the introduction again.
  2835.  
  2836. CPC printer port
  2837.   Centronics interface of the »CPC to connect a printer.
  2838.   Unfortunately the CPC designers were too economic: It has only 7 bits.
  2839.   With a short wire it was possible to extend it to 8. For this the
  2840.   cassette port was "misused", not needed when printing.
  2841.  
  2842. CPC firmware manual
  2843.   A book about the »CPC, especially describing the operating system
  2844.   interface of the CPC.
  2845.  
  2846. CPC newsgroup
  2847.   A newsgroup only for the »CPC. It is called "comp.os.amstrad.8bit"
  2848.   and was created in august 1994.
  2849.  
  2850. CP/M Plus (Abbreviation for: control program for microcomputers)
  2851.   Operating system from the company Digital Research, mainly for 8 bit
  2852.   microcomputers. Widely used until IBM decided to use MS-DOS for its PCs.
  2853.   CP/M Plus (CP/M 3.0) was the successor of CP/M 2.2 and was included
  2854.   in the software package of the »CPC 6128.
  2855.  
  2856. CTRL/SHIFT/ESC (control/shift/escape)
  2857.   "Three finger combination" on a »CPC to cause a reset. It is similar to
  2858.   the reset combination 'CTRL/ALT/Del' on a PC. Some programs block
  2859.   such a reset so you have to turn off the computer or use the reset
  2860.   button. The CPCs had no button, but it was easy to build one.
  2861.   In CPCEMU the function key F8 is the reset button.
  2862.  
  2863. Cursor
  2864.   Character on the screen which shows you the current writing position.
  2865.   Somewhere on the keyboard there are cursor keys to move the cursor
  2866.   around.
  2867.  
  2868. D-Sub
  2869.   Connectors with a special form.
  2870.  
  2871. Dk'tronics
  2872.   British company offered hardware extensions for the »CPC, e.g.
  2873.   memory extensions.
  2874.  
  2875. DMA (Abbreviation for: Direct Memory Access)
  2876.   Direct access to the computer memory without using the processor.
  2877.   Used with disk drives, but to be cheap not implemented in CPCs.
  2878.   The Soundblaster card can also use a DMA channel, getting digital
  2879.   sound data "through" it.
  2880.  
  2881. DOS (Abbreviation for: disk operating system)
  2882.   Disk oriented operating system, e.g. AMSDOS, DRDOS, MS-DOS.
  2883.   Today it is a synonym for MS-DOS.
  2884.  
  2885. DOS Search Path
  2886.   DOS uses a path along subdirectories to find a file.
  2887.   It is set with the environment variable 'PATH'.
  2888.  
  2889. DRDOS
  2890.   MS-DOS compatible »DOS by the company Digital Research.
  2891.  
  2892. E-Mail (Abbreviation for: Electronic Mail)
  2893.   Using a computer as mail-box.
  2894.  
  2895. EMM (Abbreviation for: Expanded Memory Manager)
  2896.   Similar to »EMS.
  2897.  
  2898. EMS (Abbreviation for: Expanded Memory System)
  2899.   Memory extension for the »PC, to get around the 640KB memory limit.
  2900.   With the banking technique other memory pages are mapped in an EMS
  2901.   window. EMS was developed by Lotus, Intel and Microsoft, thus it is
  2902.   called LIM-EMS.
  2903.   There is hardware-, emulated and simulated EMS.
  2904.   Special memory cards supply hardware EMS, mainly used on old PC XTs.
  2905.   On a PC AT with at least a 80386 processor it is possible to have
  2906.   emulated EMS by using the paging mechanism for banking.
  2907.   This sort is supplied by EMM386.EXE and should used to speed up CPCEMU.
  2908.   Simulated EMS is too slow, it has to copy the memory pages.
  2909.  
  2910. Emulate
  2911.   Imitate a system (hard- or software) by another one.
  2912.   The imitating system computes the same results on the same data as
  2913.   the imitated system.
  2914.   CPCEMU emulates a »CPC on a »PC.
  2915.  
  2916. Emulator
  2917.   The system »emulating another one.
  2918.  
  2919. File
  2920.   Collection of data belonging together. On the »CPC there are files of
  2921.   different types, e.g BASIC files with BASIC programs usually having the
  2922.   extension '.BAS', ASCII files with any text, and binary files with any
  2923.   bytes, usually having the extension '.BIN'.
  2924.   Binary files can contain machine programs or other data.
  2925.  
  2926. Format definitions
  2927.   Definitions of disk formats.
  2928.  
  2929. FTP (Abbreviation for: File Transfer Protocol)
  2930.   A protocol to transfer files in computer networks.
  2931.   Also, the program running this protocol is called "FTP".
  2932.  
  2933. Hardware
  2934.   Parts of a computer you can "touch", e.g. periphery like printer,
  2935.   monitor; internal it is the processor and other »hardware chips.
  2936.  
  2937. Hardware chips
  2938.   Components inside the computer, e.g. processor, memory chips, floppy
  2939.   disk controller, ...
  2940.   Inside the CPC there are the Z80 processor, the Gate Array, the CRTC
  2941.   6845 for addressing the screen memory, the PIO 8255 for input/output,
  2942.   the sound chip PSG AY 3-8912, the floppy disk controller FDC 765, ...
  2943.  
  2944. Hardware scrolling
  2945.   Moving the screen without having the processor to copy from one part
  2946.   to another. The processor has to modify only the screen base address,
  2947.   the rest is done by a hardware chip.
  2948.  
  2949. Initialize
  2950.   Fill the memory with special values, so variables are defined.
  2951.  
  2952. Interface
  2953.   Connection of a computer to its periphery or from one program to another.
  2954.   Thus there are hard- and software interfaces.
  2955.   The so-called Centronics interface is a parallel interface, transmitting
  2956.   the bits of a byte parallel. With serial interfaces it is necessary to
  2957.   transfer the bits one after another.
  2958.  
  2959. Internet
  2960.   An Internet is composed of several sub-networks of computers.
  2961.   Here: *The* Internet, a worldwide computer network for communication.
  2962.  
  2963. Interrupt
  2964.   If the processor gets a signal with higher priority, it interrupts
  2965.   the running program and calls a special interrupt handler. When
  2966.   finished it continues with the interrupted program. On a PC there
  2967.   are different interrupt signals, e.g. when you press a key, when a
  2968.   timer runs off, when data from the serial interface has arrived
  2969.   (e.g. when you move the mouse), when the soundcard just played its
  2970.   last sample and needs more data, ...
  2971.   The Z80 in the CPC is interrupted 300 times a second.
  2972.  
  2973. Interrupt number IRQ (IRQ=Abbreviation for: Interrupt Request)
  2974.   On a PC, different »interrupts have different numbers.
  2975.   For example, the keyboard interrupt has number 9, the timer interrupt
  2976.   has number 8. If you press a key, the keyboard sends an interrupt
  2977.   request to the processor, so it is informed.
  2978.  
  2979. Jumper box
  2980.   An adapter box to realize any connection between two connectors by
  2981.   using short wires which must be soldered.
  2982.   See also »Wiring Box.
  2983.  
  2984. Keyboard handler
  2985.   A program called when the keyboard generates an »interrupt. The handler
  2986.   gets the number of the key which is pressed or released.
  2987.  
  2988. LIM standard (Abbreviation for: Lotus Intel Microsoft)
  2989.   Memory expansion (»EMS), developed by Lotus, Intel and Microsoft.
  2990.  
  2991. Locomotive
  2992.   British company which wrote the »BASIC of the »CPCs.
  2993.  
  2994. Mailing list
  2995.   A service from me, for which I add your email address to a list.
  2996.   So you will be informed about news concerning CPCEMU.
  2997.  
  2998. Microchannel
  2999.   Special bus architecture.
  3000.  
  3001. MS-DOS (Abbreviation for: Microsoft Disk Operating System)
  3002.   Operating system, developed by the company Microsoft for 16 bit
  3003.   processors (8086). The most popular operating system for the PC.
  3004.   Still in use on the 32 bit processors 80386 and 80486.
  3005.  
  3006. Multi Modes
  3007.   Programming technique to have different screen modes simultaneously
  3008.   on the screen. The screen mode is changed during a screen refresh more
  3009.   than one time. On the CPC you get zones with high resolution, few
  3010.   colours and low resolution, many colours.
  3011.  
  3012. Multiface II (Abbreviation for: Multipurpose Interface)
  3013.   A hardware extension for the CPC. Allows to interrupt any program at any
  3014.   time to analyze or save it.
  3015.   Developed by the British company Romantic Robot.
  3016.  
  3017. Number representations
  3018.   Depending on the selected base, there are different representations
  3019.   for the same number.
  3020.   Well known is the decimal representation with basis 10 and digits 0 to 9.
  3021.   Computers use the binary representation (base 2) with digits 0 and 1.
  3022.   Programmers like the hexadecimal representation with base 16, because
  3023.   16 is a power of 2 (2 powered with 4). Then the representations can
  3024.   be easily computed into each other. Besides a byte needs only 2 digits
  3025.   (0 to 9, A to F) in the hexadecimal notation.
  3026.  
  3027. OS (Abbreviation for: Operating System)
  3028.   A program needed to use the computer. It provides basic functions to
  3029.   application software. New operating systems do complicated tasks like
  3030.   program scheduling in multitasking systems, ...
  3031.  
  3032. OS/2 DOS box
  3033.   A window under the 32 bit operating system OS/2 by IBM, where you
  3034.   can run DOS programs. The so-called DOS compatibility box.
  3035.  
  3036. Overscan
  3037.   The border surrounding the writable area on the screen.
  3038.   On a PC it is very small but you can change its colour, e.g. in CPCEMU
  3039.   with 'BORDER 10'. On the CPC the overscan is much wider, so
  3040.   programmers have looked for possibilities to write to it. With a
  3041.   programming trick it is possible to write to the whole screen.
  3042.   This programming technique is called overscan.
  3043.  
  3044. Parameter
  3045.   Variable with a fixed meaning, the behaviour of the program relies on it.
  3046.  
  3047. PC (Abbreviation for: Personal Computer)
  3048.   Computer with a microprocessor as processor (or CPU=central processing
  3049.   unit). Today a synonym for the IBM PC with 8086 or 8088 processor.
  3050.   PC AT (advanced technology) are computers with a 80286, 80386 or 80486
  3051.   processor.
  3052.  
  3053. PEEKs and POKEs:
  3054.   »BASIC instructions to modify the memory directly.
  3055.   'PEEK(<address>)' is used to read a byte from memory,
  3056.   'POKE <address>,<number>' modifies the memory. Programs with many PEEKs
  3057.   and POKEs are hard to understand, but sometimes it is necessary to
  3058.   break through the limits of BASIC, especially if the BASIC only has few
  3059.   instructions.
  3060.  
  3061. PKUNZIP
  3062.   Program by PK-Software to decompress »ZIP files.
  3063.  
  3064. RAM (Abbreviation for: Random Access Memory).
  3065.   Memory chip. Memory of the computer.
  3066.   The CPCs have 64KB RAM (kilo bytes) or 128KB. With hardware extensions
  3067.   they could have up to 576KB RAM.
  3068.  
  3069. ROM (Abbreviation for: read-only-memory).
  3070.   Memory chip. Memory that can only be read but not changed.
  3071.   It is available directly after switching on the computer.
  3072.   The CPCs have 16KB ROM »OS, 16KB ROM »BASIC and 16KB ROM for the AMSDOS.
  3073.  
  3074. ROM Image
  3075.   File with the contents of a »ROM. If you read out a ROM and write the
  3076.   bytes into a file you will get a ROM image.
  3077.  
  3078. RS-232
  3079.   Serial Interface to connect monitors or printers to the computer.
  3080.   (RS 232 C).
  3081.  
  3082. Schneider
  3083.   German company, which sold the CPCs in Germany.
  3084.  
  3085. Screen mode
  3086.  
  3087. Setup
  3088.   Changing »parameters of a program, so it behaves differently.
  3089.   You can tell the setup, that you have a soundcard, that you want to use
  3090.   a joystick, ...
  3091.  
  3092. SIMTEL
  3093.   A big software archive in the USA.
  3094.   The SimTel Software Repository is maintained by Coast to Coast
  3095.   Telecommunications, Inc. (CCT) on its host computer on the Internet
  3096.   located at "SimTel.Coast.NET". This archieve is mirrored (copied)
  3097.   to other sides.  One mirror site is Oakland University located at
  3098.   "OAK.Oakland.Edu".
  3099.  
  3100. Snapshots
  3101.   A memory dump completed by internal states of the »hardware chips.
  3102.   It contains a complete momentary state description of the computer.
  3103.   If the snapshot is reloaded, the computer is set back to the state
  3104.   described in the snapshot.
  3105.   Thus it is similar to a real snapshot, only inside the computer.
  3106.  
  3107. Software
  3108.   Programs of a computer system.
  3109.  
  3110. Soundblaster
  3111.   Soundcard of the company Creative Labs.
  3112.  
  3113. Spectrum
  3114.   The Sinclair Spectrum is a home computer developed by the company Sinclair.
  3115.  
  3116. Turbo Pascal compiler
  3117.   Pascal is a higher programming language which allows structured
  3118.   programming, today used in many schools.               q
  3119.   If one talks about Pascal, he means mostly Turbo Pascal, even if this
  3120.   is only an extended Pascal by the company Borland. The Turbo Pascal
  3121.   compiler is particular fast because it compiles the program in one pass.
  3122.  
  3123. Utility
  3124.   Useful program.
  3125.  
  3126. VGA (Abbreviation for: Video Graphics Array)
  3127.   Graphics standard on the PC. Successor of CGA (Colour Graphics
  3128.   Adapter), MCGA (Multi Colour Graphics Adapter) and EGA (Enhanced
  3129.   Graphics Adapter). Extended to SVGA (Super VGA) with higher resolution.
  3130.  
  3131. VGA-BIOS (Abbreviation for: VGA Basic Input Output Operating System)
  3132.   The operation system for the »VGA graphics card.
  3133.  
  3134. Windows
  3135.   Something you can put on »DOS.
  3136.  
  3137. Wiring box
  3138.   A adapter to realize any connection between two connectors by using
  3139.   short wires. In comparison to the »jumper box, the wires need not be
  3140.   soldered.
  3141.  
  3142. Z80
  3143.   An 8 bit processor developed by the company Zilog. It is upwards
  3144.   compatible to Intel's 8080 and was very popular.
  3145.   In the »CPC there is the Z80A which is clocked with 4 MHz.
  3146.  
  3147. Z80 instructions
  3148.   Machine instructions which the »Z80 understands.
  3149.   They are only number columns, so to remember them more easily mnemonics
  3150.   were introduced, which are translated by an assembler into binary code.
  3151.   The instruction "LD A,B" loads register A with the contents of register B
  3152.   and is the same as the binary code 0x78.
  3153.  
  3154.  
  3155. ZIP
  3156.   A special process to compress files.
  3157.   The »archives have the extension "ZIP".
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163. A.2  Bibliography
  3164. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  3165.  
  3166.  
  3167. The CPC manual is indispensable for CPC beginners:
  3168. - Spital Ivor und Perry, Roland und Poel, William und Lawson,Cliff:
  3169.     CPC 6128 Benutzerhandbuch, Schneider Computer Division 1985,
  3170.     Originalausgabe (c) 1985 (my one contains 1895)
  3171.     by AMSOFT, AMSTRAD Consumer Electronics plc and Locomotive
  3172.     Software Ltd.
  3173.  
  3174. An excellent commented ROM listing, with starting chapters dealing
  3175. especially with the software side of the CPC:
  3176. - Janneck, Joern W. und Mossakowski,Till: ROM-Listing CPC 464/664/6128,
  3177.     Markt & Technik Verlag 1986
  3178.  
  3179. On the contrary: unfriendly composed, rarely commented, dealing more with
  3180. the hardware side:
  3181. - Brueckmann, Englisch, Gertis: CPC 464 Intern mit kommentiertem
  3182.     ROM-Listing, Data Becker 1985
  3183.  
  3184. Good to learn C, with many exercises:
  3185. - Kellay, Al and Pohl, Ira: A Book on C, Second Edition, 1990 by
  3186.     Benjamin/Cummings Publishing Company, Inc.
  3187.  
  3188. The C++ standard book:
  3189. - Stroustrup, Bjarne: The C++ Programming Language, Second Edition,
  3190.   Addison-Wesley, 1992
  3191.  
  3192. Another nice C++ book:
  3193. - Eckel, Bruce: C++ Inside & Out, 1993 by Osborne McGraw-Hill
  3194.  
  3195. Hints, how to write an understandable and good manual, gives:
  3196. - Boedicker, Dagmar: Handbuch-Knigge, Software Handbuecher schreiben
  3197.     und beurteilen. Wissenschaftsverlag 1990
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203. A.3  Index
  3204. ≡≡≡≡≡≡≡≡≡≡
  3205.  
  3206. The numbers behind the entries show you the chapter where they are described.
  3207.  
  3208. (not complete)
  3209.  
  3210. #ENDIF 4.2
  3211. #IFCPC 4.2
  3212. 22DISK 5.1.2
  3213. Adapter, parallel 5.2
  3214. AMSDOS_DI 4.2
  3215. AMSDOS_SPDUP 4.2
  3216. BLASTER Environment 2.3.2
  3217. BREAK_MASK 4.2
  3218. Cassette 3.2.2
  3219. COLOUR 4.2
  3220. Configuration file 4.2
  3221. CPC 1.3
  3222. CPC Newsgroup 6.2
  3223. CPCEMU.CFG 4.2
  3224. CPCPARA.BAS 5.2
  3225. CPCREC.BAS 5.2
  3226. CPCTRANS.EXE 5.1.1
  3227. Debug Menu 7.3
  3228. DELAY  4.2
  3229. Disk 3.2.1
  3230. Disk Image 3.2.1
  3231. DRIVE_A 4.2
  3232. DRIVE_B 4.2
  3233. EMS_EI 4.2
  3234. EMS Memory 2.3.1
  3235. Function key 3.1
  3236. INT_FREQ 4.2
  3237. INT_RESUME 4.2
  3238. JOY_CALIBRATE 4.2
  3239. KBD_LANGUAGE 4.2
  3240. Keyboard 3.1
  3241. Menus 3.2.1
  3242. Multi Mode 4.1
  3243. MULTIMODE 4.2
  3244. PCPARA.EXE 5.2
  3245. PIO_PORT_B 4.2
  3246. PRINTER 4.2
  3247. RAM_SIZE 4.2
  3248. ROM_BLOCK 4.2
  3249. ROM_PATH 4.2
  3250. SBLASTER 4.2
  3251. SB_DELAY 4.2
  3252. Setup menu 4.1
  3253. SHOW_CONFIG 4.2
  3254. SNAPSHOT 4.2
  3255. Snapshot 3.2.3
  3256. SOUND 4.2
  3257. Soundblaster 2.3.2
  3258. TAPE_BYPASS 4.2
  3259. TAPE_PATH 4.2
  3260. TMP_PATH 4.2
  3261. VSYNC Bit 4.1
  3262.  
  3263.  
  3264. ------------------------------------------------------------------------------
  3265. logout
  3266. ------
  3267.