home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac / cpcemu12.zip / CPCEMU_E.TXT < prev    next >
Text File  |  1994-09-04  |  114KB  |  2,982 lines

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