====================================
The Amstrad CPC emulator (v0.55beta).
====================================

!!!IMPORTANT!!!!!!IMPORTANT!!!!!!IMPORTANT!!!!!!IMPORTANT!!!
!!   YOU CAN ALLWAYS SHUT DOWN THE EMULATION BY HOLDING   !!
!!          DOWN THE [F12] KEY FOR HALF A SECOND.         !!
!!!IMPORTANT!!!!!!IMPORTANT!!!!!!IMPORTANT!!!!!!IMPORTANT!!!

This package includes the following files:

 CPC.CFG        - Configuration file
 CPC.EXE        - The emulator
 CPC.ROM        - The ROM of the Amstrad CPC-6128 computer
 CPC.HIS	- History of CPC

 GR.KBD         - Mapping for a 'GR' keyboard (Germany)
 NL.KBD         - Mapping for a 'NL' keyboard (Netherlands)
 PO.KBD         - Mapping for a 'PO' keyboard (Portugal)
 SP.KBD         - Mapping for a 'SP' keyboard (Spain)
 UK.KBD         - Mapping for a 'UK' keyboard (United Kingdom)

 EHFS.ROM       - Self-written ROM with basic EHFS implementation

 README         - This file

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! The contents of the file CPC.ROM are copyrighted by !!
!!         Amstrad Consumer Electronics plc            !!
!!                        and                          !!
!!                Locomotive Software                  !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


This a first beta release of a new generation of my CPC emulator.
After v0.3B, I dropped v0.4 and began creating v0.5 from scratch.

v0.4 would have a perfect FDC emulation by letting the CPC disc ROM
access the PC's FDC directly (the PC and the CPC use the very same
FDC chip). To allow this, I had to disable BIOS, DOS and many other
TSR's completely. After some (very long, sorry) thinking, I came to
the conclusion that 'perfect' FDC is NOT that important compared to
other features I'm planning to create which require BIOS or DOS.
Starting from version 0.5, the emulator uses BIOS and/or DOS where
possible/desired. E.g the printer port is now mapped to BIOS by
default, which can be redirected to e.g a capture file or a NETWORK
PRINTER! Another reason is that supporting harddisks (especially SCSI
ones) would be very difficult without BIOS or DOS. The design of v0.5
is now portable and I'm getting into Win32 programming now.

This v0.55b now DOES support storage media (see EHFS at the end of
this readme file), but it's still a 'compatibility test' release. My
previous release (v0.3b) used a very fast 32-bit video translation
routine which appeared to be incompatible with many (8- and 16-bit)
VGA cards. This version uses a complete new routine, which allows
emulation of 'multi-mode screens' and 'line-splitting' to be added later.
Also, the memory management of the core crashed when 32MB or more system
memory was present.
If you have any problems with the emulator, please contact me so I can
fix this in future releases.

Requirements for CPC v0.55beta:
 - A PC/AT class i386sx-16MHz or better, (incl. PS/2 model 70 and better)
 - MS-DOS, Windows '95 or compatible 'Real Mode' platform
 - a VGA (compatible) video system
 - An AT 101/102 keys keyboard

Features of CPC v0.55beta:
 - Uses a self-written i386sx 16-bit Protected Mode core with
   virtual memory management for optimal performance on 16-bit
   i386sx systems and compatible.
 - Emulates CPU, ROM(s), up to 576KB RAM, video, keyboard and
   printer port.
 - Now includes 'Emulator Host's File System' (EHFS) which let
   CPC software access your DOS storage media!!!

The emulator uses the following keys:
 - [F11] switch between 100% CPC speed and Turbo
 - [F12] terminate emulation (hold down for half a second!)
 - [Alt]+[F12] emulate 'HARD RESET' (hold down for half a second!)

Because the 16-bit Protected Mode core, the emulator cannot run in
an already simulated environment such as a DOS box when running
MS-Windows 3.x in 'Enhanced' mode, MS-Windows '95 in GUI mode,
OS/2 2.x, Linux or other (Protected Mode) multi-tasking
environments, or in DOS using an Expanded Memory System (EMS)
emulation provided by Emm386, Qemm, etc...
If you use Emm386, you can try 'C:\> Emm386 off' to temporary
shut down the EMS emulation.
CPC has no problems with eXtended Memory Systems (XMS) and can be
loaded high to free up conventional memory.
After initialising the emulator and ROMs, all free conventional
memory is used for CPC RAM. My own system has 588KB free after
initialisation, so I have 12KB (588 - 576) to spare for additional
ROM's :-) When less memory is available, the emulator tries to use
320KB, 192KB, 128KB or 64KB RAM. In most cases, 320KB will be the
most likely used configuration.

The configuration file (CPC.CFG) is a simple text file. You can edit this
file to alter the configuration. When you execute the emulator (CPC.EXE),
it reads the file line by line and tries to recognise certain keywords.
Keywords are only recognised if no other characters (except spaces) are
present in front of the keyword. I already have put some usefull options
in the file and disabled them by putting a '#' in front of the keywords.
In practise, you only have to remove one or more '#' characters.
Except for ROM and keyboard files, invalid parameters are ignored.

Keywords CPC v0.55B recognises:
 - <number> <filespec>          Add ROM in slot <number>
  This is used to use additional ROM files with the emulator.
  A ROM file has to contains a ROM's image only. No 'headers'
  are allowed and only up to 16KB of a ROM file is read.
   Example:  1 EHFS.rom

 - ISP <number>                 Ignore Sync Positions
  This option disables translation of the CRTC's horizontal and
  vertical sync position registers used to position the visible
  part of the screen. E.g Laptop/notebook displays don't have
  such a feature. If a screen doesn't look positioned correctly,
  this option should help.
   Allowable parameters: 0 = disable ISP,  1 = enable ISP
   Example:  isp 1

 - JOY <number>                 Joystick
  Not implemented yet, but this option will enable usage of a
  joystick in the (near?) future.

 - KBD <xx>                     Keyboard mapping
  Use this option to choose an alternative (international)
  keyboard layout. At the moment I have 5 alternative
  mappings. If you want (to create) another, contact me.
  I can create other mappings for you or give you source
  code and instructions to create your own.
   Allowable parameters: gr, nl, po, sp, uk
   Example:  kbd nl

 - LPT <number>
  This option is used to map the CPC printer port to a PC
  printer port. Direct port access _could_ improve overall
  emulation performance.
   Allowable paramters: 0..3 = LPT1..LPT4, BIOS access
                        4..7 = LPT1..LPT4, direct port access

 - VDM <number>
  This option can be used to select a higher video resolution
  than 640x200. Mode numbers have to be given in decimal,
  most (S)VGA manuals use hexadecimal numbers. You can use
  allmost any 16 colour mode. I officially do not support
  resolutions above 800x600, but up to 1024x768 and probably
  up to 1920x960 might work...
   Example: vdm 106


EHFS - Emulator Host's File System
This ROM is the first piece of software using an interface
between CPC software and the emulator. EHFS operates similar
to AMSDOS, but accesses the emulator's file system (DOS file
system in this case) instead of the 3" disc drive.
The current 0.5b implementation is primitive, replaces TAPE.IN
functions and CAT, and has the following extra commands:
 - |EHFS, |EHFS.IN & |EHFS.OUT
 - |TAPE, |TAPE.IN & |TAPE.OUT
 - |CD {,<string>}
 - |DIR {,<string>}
 - |DEL,<string> & |ERA,<string>
 - |REN,<string>,<string>

{...} denotes optional. If a command fails for any reason, it
simply prints an 'Operation failed' message.


        Herman Dullink
        O. Eerelmanstraat 8-A
        NL-9718 JZ  Groningen
        the Netherlands

        +31-50-3132829

        dullink@castel.nl
