CaPriCe32 v0.04b - The 32-bit Amstrad CPC Emulator
Copyright (c) 1997,1998 Ulrich Doewich
All Rights Reserved

Firmware and BASIC ROMs
Copyright Locomotive Software and Amstrad plc
Amstrad has given permission for their redistribution,
but retains the copyright

CaPriCe32 makes use of the CWSDPMI DOS extender, which is
Copyright (c) 1995-1997 Charles W Sandmann
check ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/
for the latest binary & source distributions


DISCLAIMER ...............................................................

 This software is provided as is. The author accepts no responsibility for
 damages occurring as a direct or indirect result of using this software.


SYNOPSIS .................................................................

 ...


COMPATABILITY ............................................................

 What's emulated:

 CRTC  - all standard operations
 FDC   - read operations
 GA    - complete
 PPI   - complete
 PSG   - complete
 Z80   - all documented and undocumented opcodes

 What's missing:

 CRTC  - not 100% accurate yet; proper screen centering; reduction to actual
         visible area (as seen on original Amstrad monitor)
 FDC   - write operations
 PSG   - not 100% accurate yet
 misc  - tape, printer, and additional RAM/ROM support


GETTING STARTED ..........................................................

 Minimum system requirements:

  Pentium class CPU
  8MB RAM
  MS-DOS v2.0
  VESA BIOS v2.0

 If your video card lacks a VESA BIOS, or has a version number less than
 2.0, I suggest you surf to http://www.scitechsoft.com/ and get hold of SDD
 (SciTech Display Doctor). It provides the VESA standard in a software layer
 which, in some cases, is even faster than the original version by the card
 manufacturer! For the purposes of CaPriCe32, the DOS version is sufficient.


INSTALLATION .............................................................

 The distribution archive contains directories! Uncompress it with the -d
 command line switch (if you are using PKUNZIP).

 Depending on the environment you run CaPriCe32 in, you may or may not need
 the CWSDPMI.EXE file. It is only required if the emulator is to be run
 under plain DOS. Windows has its own memory management and therefore does
 not need the DOS extender - you may remove the file in this case.

 If you intend to use ZIP archived DSK images, you will also need to get
 hold of Info-ZIP's UnZip. The latest version should always be available
 from ftp://ftp.cdrom.com/pub/infozip/MSDOS/ . The file you are looking for
 is called unz???x3.exe, where ??? represents the latest version number. All
 that is required from this package is UNZIP32.EXE, which you should put
 anywhere on the current search path (as specified with PATH in your
 AUTOEXEC.BAT file).


 Before you start the emulation, have a look at the included CAP32.CFG file.
 It is currently the only place to change the configuration of the emulator.

 A brief explanation of the available keywords:

  #path_rom
  #path_snap
  #path_driveA
  #path_driveB
  #path_tape
  #path_temp
  #path_sdump
 Specifies the location of the corresponding files

  #LED_onscreen
  #LED_keyboard
 Determines whether or not the disk drive motor state is shown onscreen
 and/or via the Scroll Lock keyboard LED

  #CPC_model
 Indicates which CPC model to emulate
  #realtime
 Enables a delay that slows the emulation to the original speed of a CPC
 (see note below)
  #OEM_name
 The company name to display in the power-on message

  #vsync
 Whether or not to synchronize the emulated video refresh with that of the
 PCs video card (see note below)

  #sound
 Enable sound emulation
  #playback_rate
 Selects between 22kHz or 44kHz playback rate
  #stereo
 Selects between mono and stereo output


 Realtime and the VSync Option:

 There are currently two ways of achieving original CPC speed with
 CaPriCe32. The first simply involves enabling the #realtime switch in the
 configuration file. During the emulation, the state of this option is
 controlled via the F12 key. Given that the #vsync option is off, you can
 then use this key to toggle between realtime and unlimited speed.

 The second method is a bit more involved, but has the advantage of making
 any scrolling used by CPC software silky smooth!

 If your monitor is capable of displaying a video signal at 50Hz, you may
 attempt the following procedure. Use the UNICENTR.EXE utility included in
 the SDD package to modify the refresh rate of the 8 bit, 800x600 video mode
 of your video card. Since SciTech does not provide a default for 50Hz,
 select the lowest one offered (usually 60Hz). You should now be presented
 with a screen that allows you to, among other things, center the picture.
 Use the - key to reduce the vertical refresh to a value as close to 50Hz as
 possible (for me this turns out to be 50.1Hz). Press Enter and then exit
 the utility, not forgetting to save the new settings first. In the
 CAP32.CFG file, make sure #realtime is set to 0, and #vsync is set to 1.
 Now run UNIVBE.EXE and finally start CaPriCe32.

 For best results, I suggest running CaPriCe32 under plain MS-DOS, since the
 multi tasking of Windows will periodically interrupt the emulation, causing
 disruptions in the video output.

 Note that if you have the #vsync option enabled, you won't be able to go
 full speed in the emulation (via F12). This is a temporary inconvenience,
 and will be fixed for a future release.


 Sound Emulation:

 I have adapted my sound code from CPE for use in CaPriCe32. This means that
 the AY emulation currently does not support playback of sampled sound or
 speech. I have a complete rewrite of the code planned for the next release,
 increasing its accuracy as well as adding the missing bits. It will get
 better - that's a fact! :)


USAGE ....................................................................

 Keys:

 ALT    CPC COPY key
 INSERT CPC CLR key

 F5     reset emulation
 F6     display file selector for drive A
 F7     display file selector for drive B (preliminary)
 F9     capture screen contents to BMP file
 F10    quit emulation
 F12    toggle between real time and full speed

 HOME   Joystick 1 up
 DELETE Joystick 1 left
 END    Joystick 1 down
 PGDOWN Joystick 1 right
 RCTRL  Joystick 1 fire


 File Selector Controls:

 CuUP   move up one entry
 CuDOWN move down one entry
 PGUP   move up one screen
 PGDOWN move down one screen
 HOME   move to start of file name list
 END    move to end of file name list
 ESC    return to emulation; drive contents is not changed

 RETURN either selects a DSK image, or changes the directory
 or
 CuRIGHT

 BCKSPC return to parent directory
 or
 CuLEFT

 Any other letter or number will add to the search mask. To clear the mask,
 use one of the valid control keys listed above. The search is only made
 from the current selection on downwards; i.e. if you want to search the
 entire directory, I recommended using the HOME key first.


HOW TO GET IN TOUCH ......................................................

 At this moment in time I do not want to receive bug reports, unless it
 concerns a severe problem (i.e. CaPriCe32 crashes, keyboard scanning
 problems with certain software, etc.). In those cases please e-mail me a
 detailed description, as well as the DSK file (if it is software related).

 If you want to let me know what you think about CaPriCe32, or have a
 suggestion for a future version, drop me a line via one of the following
 methods:

 e-mail:
   caprice32@cybercube.com

 snail mail:
   Ulrich Doewich
   112 Tea Rose Street
   Markham, Ontario L6C 1X3
   Canada

 You can always find the latest version of CaPriCe32 and other utilities
 authored by me on the official CaPriCe32 web site at:

   http://www.classicgaming.com/caprice


BACKGROUND INFORMATION ...................................................

 CaPriCe32 is written entirely by me. The emulation core is 32 bit protected
 mode x86 assembly code, whereas the menu and file handling routines are
 written in C. I use two excellent freeware utilities to do this job: DJGPP
 and NASM - together they make a beautiful combination! :)


ACKNOWLEDGEMENTS .........................................................

 Thanks must go out to...

   My brother Ralf, who is a great resource when it comes to hard and
   software problems. Together we have traced quite a few signals of CPC
   hardware components... He is also responsible for the excellent
   CaPriCe32 logo design.

   Kevin Thacker, with whom I have frequent e-mail exchange. We've pinned
   down the inner workings of the CRTC/GA combo pretty accurately now, and
   continue to delve deeper into their secrets until we perfect the video
   emulation... Check out Kevin's promising CPC(+) Emulator called Arnold
   at http://www2.krisalis.co.uk/wwwkthk/arnold/index.html

   Simon Tatham and Julian Hall, for creating NASM - The Netwide Assembler.
   Anyone interested in this _free_ x86 assembler that can produce both 16
   and 32 bit code should point their browser to:
   http://www.web-sites.co.uk/nasm/

   Dirk Junker, who was kind enough to send me his Schneider CPC 6128 from
   Germany. Without having the actual machine to test software and
   theories, CaPriCe32 probably wouldn't exist today!

   Brian Watson, for sending me a replacement drive belt for the CPCs 3"
   floppy disk drive.

   Sergio Bayarri
   Ricardo Bittencourt Vidigal Leitao
   Frederic Herlem
   Vaggelis Kapartzianis
   Noel Llopis-Artime
   Emmanuel Roussin
   Bernd Schmidt
   Marco Vieth

 ...and last, but certainly not least, to all the users of CaPriCe32!
