
                                  
                                            
                                            
                                       
                                             
                                               
                                 

                               www.arnimedes.de


                           (C) 1998-2000 Oliver Lenz


-------------------------------------------------------------------------------


                                1. INTRODUCTION

Arnimedes emulates the good, old Amstrad CPC 464, 664 and 6128 on your PC.

Here are some of the features:
- 512 KB RAM
- Sound output via MIDI
- 2 disk drives
- Cassette emulation with DOS files
- 64K and 128K snapshots
- All 3 standard graphic modes & multimodes
- Debugger

Some things that will (hopefully :) appear in future versions:
- Extended DSK support (EDSK)
- A 'normal' sound emulation
- Better CRTC emulation
- Windows version
- VN96
- ... (Tell me your ideas)


The emulator works under plain MS-DOS and in a DOS-shell in Windows 95/98.
It needs at least a 386 processor, but a Pentium is really recommended...
The sound was tested with a Roland SCC-1; please send me an e-mail if your
soundcard doesn't work with Arnimedes (see chapter 7).

Arnimedes is freeware, I retain the copyright. You can copy it to friends or
make it available for download as long as no unusual fee is requested. If you
spread this program you may not modify any files of it. Arnimedes is provided
with no warranty of any kind; you use all included programs at your own risk.





                                2. INSTALLATION

Copy the file ARNIExx.ZIP (and SNAPS.ZIP if you have downloaded it) in a
directory on your harddisk and decompress it with PKUNZIP or WINZIP. If you
are using PKUNZIP be sure to use the switch '-d' to create subdirectories.
There should be the following files:

ARNIE.CFG         Configuration file - explained in chapter 3
ARNIE.EXE         The emulator
ARNIE_E.TXT       English documentation
ARNIE_D.TXT       German documentation

ROM\CPC464.ROM    ROMs for CPC 464
ROM\CPC664.ROM    ROMs for CPC 664
ROM\CPC6128.ROM   ROMs for CPC 6128
ROM\AMSDOS.ROM    AMSDOS

DISK\DEMODISK.DSK Disk image with two examples for the Atari mouse

SNAP\*.SNA        MIDI examples (SNAPS.ZIP)
MIDI\*.MPU

Important: Arnimedes will not run without EMS ! You will get an error message
if you don't have an EMS memory manager installed. To install EMS on your
computer you have to add a line in your CONFIG.SYS - For example:

DEVICE=C:\DOS\EMM386.EXE 5000





                           3. THE CONFIGURATION FILE

The configuration file ARNIE.CFG can be changed with any word processor that
can write ASCII files.

Comments start with a semicolon. Keywords are followed by one or more values,
for example:
SnapPath = C:\EMULATOR\CPC\SNAP
sets the default directory for snapshots.

Here is an explanation of the keywords. First of all - the directories:

DiskPath  : Specifies where the DSK-Images are stored. Use a filename to insert
            a DSK image.
TapePath  : Path for tape files
SnapPath  : Path for snapshots
ROMPath   : Path for ROM images
PresetPath: Path for MIDI settings. See chapter 5 for more details.
PokePath  : Path for DBF file (poke database from CPCEMU)
PokeFile  : DBF file


- QWERTZ
    0 -> QWERTY keyboard
    1 -> QWERTZ keyboard


- JOYMODE1
    Define how the first CPC joystick is emulated.
      0 -> Use arrow keys on NUM block (turn NUM lock on to use the block as
                                        function keys like on a real CPC)
      1 -> First PC joystick or joypad (don't forget to calibrate it -
                                        press F7, then choose calibrate)
      2 -> PC mouse emulates joystick
      3 -> PC mouse emulates Atari mouse on CPC
           You will find two programs for it on DEMODISK.DSK


- JOYMODE2
    You guessed it, it's for the second CPC joystick. But this time only two
    values are allowed:
      0 -> No second joystick
      1 -> Second PC joystick or joypad


- SOUNDDEVICE
    0 -> Silence
    1 -> Use MIDI (explained in chapter 5)


- MPUBASE
    Base address of your MIDI interface in HEX (should be 330 in most cases)


- MIDIMODE
    GM, GS or XG - Reverb and Chorus are available on GS/XG cards only !


- PRINTER
    Use a filename to write all printer output in that file or use LPT1..LPT4


- VGAMODE
    0 -> 320x200 - Use this mode on slow systems
    1 -> 640x400 - There are problems with some VGA cards under Windows,
                   in this case you have to boot with pure DOS.


- SCANLINES
    0 -> No scanlines
    1 -> Display scanlines. This works only with 640x400 !


- SCREENREFRESH
    Define how often the screen is updated. The default value 1 means 50 Hz or
    every CPC screen, ScreenRefresh=2 will display every second screen.
    The highest value is 9, which will give 5.6 Hz


- SCREENTYPE
    0 -> Colour monitor
    1 -> Green
    2 -> Black/white
    3 -> Amber


- AMSDOSSPEEDUP
    0 -> Don't modify AMSDOS ROM
    1 -> Speedup disk operations


- TAPEBYPASS
    0 -> Don't modify ROM
    1 -> Redirect firmware calls that read or write on cassette. Files will be
         accessed via the TAPE directory.


- REALTIME
    0 -> Unlimited speed
    1 -> 4 MHz


- CPCTYPE
    0 -> CPC 464
    1 -> CPC 664
    2 -> CPC 6128


- COMPANYNAME
    Define the name that will appear in the start-up screen
    Use companyname = 5 if you live in Germany.


- FLOPPY
    This keyword requires TWO values:
    - Disk drive - A or B
    - The name of the DSK image that will be 'inserted'
    Example:
      FLOPPY = B, UTIL.DSK
      will insert UTIL.DSK in drive B:


- LOADROM
    Another keyword with two values:
    - first the ROM select address (in the range 0..14)
    - then the name of the ROM file





                             4. USING THE EMULATOR

In this chapter I will explain how to load and save programs from disk and
tape. But first, let's start with a short look at the function keys:

F1 -> Overview of the function keys

F2 -> If you told Arnimedes where to find CPCEMU.DBF, a window with pokes
      should pop up. Select a poke for a game that is currently running to
      get more money, energy or similar things.

F3 -> Insert Disk - After choosing the disk drive (A or B) you get a list of
      disk images. Press ENTER to 'insert' one.

F4 -> Toggles sound on or off

F5 -> Load a snapshot

F6 -> Save a snapshot - Some games are using the second 64 KB bank of the
      CPC 6128. If you are in doubt, select '128K snapshot'.

F7 -> Options - Here you can calibrate your joystick(s) and change some
      settings.

F8 -> Reset button

F9 -> The MIDI configuration screen will appear - see chapter 5

F10 -> Enter the debugger - see chapter 6

F12 -> Exit


Loading from DSK images:

First of all, you have to insert a disk image by pressing F3. Then type CAT
and look at the filenames to find the loader. For some games this is DISC.BAS
Now try to start it by typing: RUN "DISC"
Some games don't have any filenames in the directory. In this case, try to
start the game with |CPM.
You can select disk drives A: and B: by typing |A or |B.
To save a BASIC program to disk, simply type SAVE "filename".

To write-protect a disk image just activate the <R>ead only bit of the DSK-file


Loading from tape:

Type |TAPE to access the emulated tape. Now you can enter RUN "" and you should
see the content of your TAPE directory. Select a program to run it.
If you already know the file you want to run you can also type RUN "filename".
BASIC programs can be saved by typing SAVE "filename".
To access the disk drive again, enter |DISC.





                                 5. MIDI SOUND

As you might have noticed, Arnimedes doesn't have an ordinary sound emulation
(at least at the moment). Instead it tries to translate the soundchip data into
MIDI messages in real-time. This is just experimental and not perfect - you
might have noticed this if you pressed F9 in the emulator (Gosh, what are all
those numbers for ??? :)
You can find some snapshots from games together with MIDI settings on my
homepage. Look for SNAPS.ZIP in the download area; unzip it in your Arnimedes
directory. Now start a snapshot in the emulator, press F9, select LOAD MIDI
SETTINGS and choose the .MPU file with the same name as the snapshot;
press ESC and listen...


In the upper part of the MIDI setup screen you will see 3 lines - one for each
CPC sound channel - containing a lot of numbers:

Drum Mode - Three options:
            V+D: This channel is emulating voices & drums (noise)
             D : Just playing drums
             V : Just playing voices

PC#       - Program Change. The program number of the tone. Press ENTER to get
            a list.

CC0       - GS Bank Select. Many MIDI soundcards have additional variations
            of the 128 General Midi tones. They are accessed via CC0. Consult
            the manual of your soundcard for more details.

SFX       - The first number is a parameter and the second number is the
            SFX number. 5 effects are available:
            0 - no effect
            1 - This will split the channel into two voices: One will play
                normal and the other will be pitched up one octave. The first
                parameter is controlling the volume of the pitched voice.
            2 - The same as effect #1, just pitched down.
            3 - Combination of effect #1 and #2. (Playing with 3 voices for
                that channel)
            4 - Only playing the notes that are LOWER than the value in the
                first parameter.
            5 - Only playing the notes that are HIGHER than the value in the
                first parameter.

Drum#     - Press ENTER to get a list

Reverb    - Strength of reverb effect for that channel

Chorus    - Strength of chorus effect for that channel

Volume    - Loudness

Delay     - This value tells Arnimedes after how many CPC-Interrupts the
            channel can play another note. I recommend the values 0, 6, 12, 18
            and 36 - you'll have to experiment a little bit with that one.


Below these settings are the Reverb and Chorus macros. Depending on your
MIDI configuration (GS, XG) different macros are supported.


Finally, some drum specific settings:

Drum Set - Number of the Drum Set

Reverb   - Strength of reverb effect for all drums

Chorus   - Strength of chorus effect for all drums

Volume   - Loudness





                                6. THE DEBUGGER

The screen is divided into 4 areas:
On the top you will see all Z80 registers and some cryptic letters and numbers
which are explained here:

VS  stands for vertical scan - a vertical retrace is occurring if the field is
    highlighted.

IM  Interrupt mode - 0, 1 or 2

12  IFF1 and IFF2 (Interrupt Flip Flop)

LH  Highlighted when lower ROM (L) or higher ROM (H) is enabled.


Commands are entered in the second part of the screen. All valid commands are
listed above the input prompt.

Below the main window is a status line with some useful information:
On the left is the ROM select address, followed by the memory contents at
(HL), (IX) and (IY) - each in RAM and ROM. Finally, on the right is the current
opcode and the last IN or OUT command.

When you enter the debugger you will always be in TRACE mode. This means you
can single-step through the program by pressing ENTER.
You can change the mode by entering a command, consisting of a single letter.

Here is a list of all commands: (values in brackets <> are optional)

T <address> : This will return to Trace mode.

F <address> : Fast Trace. The debugger continues executing opcodes until you
              select another mode.

S <address> : Step Over. Executes opcodes until PC points to the next
              instruction. Useful for executing a CALL without displaying
              all the instructions in the subroutine.

R <address> : Run. This will exit the debugger and start the emulation from PC
              or from the optional address.

B address   : Set Breakpoint. The debugger will pop up when PC reaches the
              breakpoint address.

C           : Clear Breakpoint.

I           : Info. Will show some general information, CRTC, PSG and memory
              configuration. Press ESC to return.

E <address> : Edit Memory. A simple HEX editor for the CPC's RAM (and even ROM)
              - Use the cursor keys and PgUp/PgDn to navigate through the
                memory.
              - ALT & R will toggle RAM and ROM.
              - ALT & S changes ROM select address.
              - TAB will toggle HEX and ASCII mode.
              - ESC quits the editor.

D <address> : Disassembler. Press Down or PgDn to scroll down. Again, there are
              some special keys:
              - R toggles RAM and ROM
              - S changes ROM select address
              - F will write a disassembler listing into a file called Z80.ASM
              - ESC brings you back to the debugger.

Q           : Quit. Brings you back to DOS. If you just want to quit the
              debugger and return to the emulation press R instead.

To change the value of a register, type <register>=<value>, for example BC=3A00
This works with AF, BC, DE, HL, IX, IY, SP, PC, IR, IFF1 and IFF2.
You can change the Interrupt mode in the same way by typing IMD=x.





                               7. YOU CAN HELP !

Your comments, questions and bug reports are welcome. Please send me an e-mail
if you encounter any problems, especially with the sound output.
You will find my e-mail address at the end of this document.





                                  8. VERSIONS

V0.8  [07.04.2000] - first public release
V0.8a [15.04.2000] - fixed ROM banking for ROM select address 10..14


-------------------------------------------------------------------------------


                       HOMEPAGE  : www.arnimedes.de

                       E-MAIL    : toxic@arnimedes.de

                       SNAIL-MAIL: Oliver Lenz
                                   Jakobsweg 31
                                   64625 Bensheim
