home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Bila Vrana
/
BILA_VRANA.iso
/
006A
/
CPCEMU.ZIP
/
CPCEMU_E.TXT
< prev
next >
Wrap
Text File
|
1994-09-04
|
114KB
|
2,982 lines
▓▓▓▓▓▓▒ ▓▓▓▓▓▓▓▓▒▒ ▓▓▓▓▓▓▒ ▓▓▓▓▓▓▓▓▒ ▓▓▓▓ ▓▓▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▒▒▒▒▒▒ ▓▓▒▒▒▒▒▓▓▒▒ ▓▓▒▒▒▒▒▒ ▓▓▒▒▒▒▒▒ ▓▓▒▓▓ ▓▓▒▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▒▒ ▓▓▓▓▓▓▓▓▒▒ ▓▓▒▒ ▓▓▓▓▓▓▓▓▒ ▓▓▒▒ ▒▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▒▒ ▓▓▒▒▒▒▒▒ ▓▓▒▒ ▓▓▒▒▒▒▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒ ▓▓▒▒
▓▓▓▓▓▓▒ ▓▓▒▒ ▓▓▓▓▓▓▒ ▓▓▓▓▓▓▓▓▒ ▓▓▒▒ ▓▓▒▒ ▓▓▓▓▓▓▓▓▓▒▒
▒▒▒▒▒▒▒ ▒▒▒▒ ▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒
D O C U M E N T A T I O N
(c) Marco Vieth, August 1994
-------------------------------------------------------------------------------
Table of Contents:
1. Introduction
1.1 Hints how you should read this documentation
1.2 Copyright, guaranty
1.3 What is a CPC ?
1.4 What offers you CPCEMU ?
2. Installation of CPCEMU
2.1 Files which comprise the CPCEMU package
2.2 Requirements and Installation
2.3 Hints about memory and soundcard
3. Differences between CPC and CPCEMU
3.1 Keyboard
3.2 Loading of Programs, Menus
(disk, cassette and snapshots)
4. Changing the Configuration
4.1 The Setup Menu
4.2 The Configuration File
4.3 Command Line Parameters
5. Data Transfer CPC <-> PC
5.1 The Disk as a media
5.2 The parallel Interface
5.3 The serial Interface
5.4 Other possibilities
6. Sources of Supply, Help Line, Acknowledgments
6.1 CPC Software, where to get ?
6.2 News, Exchange experiences
6.3 If you have questions or suggestions
6.4 Other Amstrad CPC Emulators
6.5 Plans for future releases of CPCEMU
6.6 Acknowledgments
6.7 Registered Trademarks
7. Internal Information about CPCEMU
"Black Box", with its own table of contents
Appendix:
A.1 Glossary
A.2 Bibliography
A.3 Index
---------------------------
1. Introduction
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Welcome to the would of emulators!
What, you want to know what CPCEMU is? And what you can do with the strange
program with yellow writing on blue screen, displaying "Syntax Error" after
every input?
Well, to avoid long searching, here it comes:
CPCEMU emulates a Amstrad CPC 464, 664 or 6128 with many
extensions. To say it with other words, the program imitates
the behaviour of the older Amstrad computers on your new PC.
For what purpose ?
Well yes, if you have no idea yet, you will not need CPCEMU.
Some reasons:
- nostalgia (oh, how nice was my good old CPC ...)
- better performance compared to the original
- better environment to develop programs
- playing games
- work (yes, a CPC is enough for simple text processing)
- [ ] <- insert other reasons
at your own.
1.1 Hints how you should read this documentation
=================================================
I have tried to write a clearly arranged documentation. If you still
have questions (after reading it several times?), you can contact me.
You can certainly do that too, if everything is clear to you.
Look at chapter 6 (Sources of Supply, ...).
In chapter 1 (Introduction) I describe how to read this documentation,
who has the copyright and some things about the CPC in general.
In chapter 2 (Installation) it finally starts. You will hear how to
install and start CPCEMU.
In chapter 3 (Differences between CPC and CPCEMU) deals about features
you should realize if you know a real CPC and want to use the
emulator now. Mainly I will describe keyboard, disk, cassette and
snapshots.
In chapter 4 (Changing the Configuration) I describe how to set up
CPCEMU for your needs. Maybe your most liked program will run yet.
You should read chapter 5 (Data Transfer CPC <-> PC), if you own several
old CPC programs without knowing how to get them to the PC.
In this chapter the utilities coming with CPCEMU are described.
In chapter 6 (Sources Of Supply, Help Line, Acknowledgments) I reveal,
how you get always the latest version and whom you can appeal to in
case of questions.
Chapter 7 (Internal Information about CPCEMU) is for professionals only.
The "official" part for the user has ended before this chapter, because
this is the "last".
If you want to know how to program such an emulator and what you must
concern. Besides, the debug menu of CPCEMU is described. It allows you
to analyze processor and memory at *every* time. Only-users should
skip this chapter, at least when first reading.
In the appendix A.1 there is a glossary with descriptions of the
most important technical terms. In A.2 there is the bibliography
and in A.3 is the index.
1.2 Copyright, guaranty
========================
CPCEMU was developed by:
Marco Vieth
Auf dem Uekern 4
33165 Lichtenau
Germany
CPCEMU is Freeware, that means you can give the program to friends and
acquaintances for *free*. Archive maintainers it is allowed to include
CPCEMU in their program collections for "downloading".
Shareware distributors it is allowed to make use of CPCEMU, if they only
if they only take a small fee for copying from their clients.
Comparing to Public Domain, freeware does not mean that it is "free"
and you can do anything with it. The copyright still belongs to me.
All software and documentation is provided "as is" without warranty
of any kind.
Although this program is freeware, I would certainly accept any sort of
support, technical or financial.
See chapter 6 for more details.
1.3 What is a CPC ?
====================
If you already know what a CPC is, simply skip this section and
continue reading with 1.4.
Still here?
I do not want to "dissect" the CPC now, I give only a retrospective view,
so you maybe can imagine what the CPC is.
CPC is abbreviation for Colour Personal Computer.
Computer of this type were built since 1984 by the British company Amstrad
and sold under different names in other countries.
It was the period of the home computer Commodore C64, Sinclair Spectrum,
Atari 800XL ..., when the CPC 464 was born.
He had as much RAM as the Commodore C64 (namely 64 KB),
a built in cassette recorder and Locomotive BASIC 1.0.
What followed was the CPC 664 with a built in 3" disk drive and slightly
extended Locomotive BASIC 1.1.
The CPC 6128 came in 1985, with 128 KB RAM and nearly the same features
as the CPC 664.
3" disks were awfully expensive, but more stable than the 5.25" disks
(nearly as stable as today's 3.5"),
Besides you noticed a extremely speedup compared to the tape, not as
it was with the C64 ...
All three types were sold with either a colour or a green screen,
with integrated power supply.
In the meantime there were two to three other types (the CPC+), only
to mention them.
The BASIC was with nearly 178 instructions powerful and fast.
One could program graphics, sound and even interrupt handling all in
BASIC, with avoiding PEEKs and POKEs.
The software supply increased during the years.
1.4 What offers you CPCEMU ?
=============================
It follows a short overview about what CPCEMU offers you. In the next
sections of the documentation the meaning is described more clearly.
Graphics in 3 different screen modes (x, y, colours):
Mode 0: 180x200x16
Mode 1: 320x200x4
Mode 2: 640x200x2
Sound either through PC-speaker or Soundblaster (3 channel, stereo)
Memory:
ROM: OS, BASIC, AMSDOS, up to circa 13 additional ROMs (with EMS)
RAM: 64KB, 128KB, up to 576KB Dk'tronics compatible RAM (with EMS)
Disk: Special disk images, with the extension .DSK
Cassette: Standard files under DOS, e.g. CPC BASIC- and binary files
with the extensions .BAS and .BIN respectively.
Snapshots: You can make memory dumps of running programs in order to
continue them later. Snapshots have the extension .SNA .
Speed: On a 386/33 with EMS-memory CPCEMU uses to be faster as
the original.
2. Installation of CPCEMU
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
In this chapter you will hear, how to install and start CPCEMU.
In 2.2 you will read some hints about using EMS memory and the
Soundblaster environment.
Full user defined installation with the configuration file is described
later in chapter 4 (Changing the Configuration).
2.1 Files which comprise the CPCEMU package
============================================
You have received the CPCEMUxx.xxx package with the following files:
(I have put the directories in brackets where you will find the files
after installation.)
COPYMATE.ROM ROM with a copy program (ROM)
CPC464.BAT a CPC 464
CPC464.ROM ROM (firmware+BASIC) of a CPC 464 (ROM)
CPC664.BAT ditto, but for CPC 664
CPC664.ROM (ROM)
CPC6128.BAT ditto, but for CPC 6128
CPC6128.ROM (ROM)
CPCADOS.ROM AMSDOS for all CPCs (ROM)
CPCEMU.CFG the configuration file for all CPCs (or CPCEMU0.CFG)
CPCEMU.HLP help file, displayed when you press F1
CPCEMU.EXE the emulator
CPCEMU_D.TXT the German documentation
CPCEMU_E.TXT the English documentation (this file)
CPCPARA.BAS Locomotive-BASIC program for the parallel adapter (UTILITY)
CPCPD1.DSK disk image with some example Public Domain programs (DISC)
CPCREC.BAS Locomotive-BASIC program to receive programs (UTILITY)
CPCT0.BAT batch file for CPCTRANS.EXE (example) (UTILITY)
CPCTRANS.EXE transfer program for disk images (UTILITY)
CPMDISKS.DEF format definitions for 22DISK (UTILITY)
FILE_ID.DIZ how this program is called
INSTALL.BAT batch file for installation
PCPARA.EXE PC side of the parallel adapter (UTILITY)
README_D.TXT German Readme
README_E.TXT English Readme
ROMGET.BAS Locomotive-BASIC program for saving ROMs (UTILITY)
The original Amstrad ROMs are also included.
They are copyright by Amstrad.
2.2 Requirements and Installation
==================================
You will need at least (as usual no limits to more)
- PC AT 386 with VGA graphics
- MS-DOS, as possible with EMS, or
Novell DOS (DRDOS) or
OS/2 2.x DOS box.
- If you want to start programs from inside ZIP archives you will need
the program PKUNZIP in you DOS searchpath for extracting.
The installation itself is very simple:
Copy the CPCEMUxx.ZIP archive on your hard disc and decompress it with
'PKUNZIP CPCEMUxx.ZIP'. Call INSTALL.BAT to create some subdirectories.
Start CPC464.BAT, CPC664.BAT or CPC6128.BAT depending on what CPC you
like most. After the configuration press <RETURN> and the well-known
CPC opening screen appears with yellow writing on blue ground.
You can quit the emulator with F12.
It is best to try that now, after that you can read further ...
If some errors occur during the configuration, you get into the
so-called debug-menu, which you can quit with 'q' <RETURN> .
In such cases it is sometimes useful to redirect the messages into a
file, e.g. with 'CPCEMU > INIT.TXT'. Then you are able to analyze the
problem later.
2.3 Hints about memory and soundcard
=====================================
In the following two hints, if you like a particular fast emulation
or if your soundcard is not recognized.
2.3.1 Use EMS Memory !
-----------------------
You should have hardware or emulated EMS on your PC (EMS=Expanded Memory
System). This speeds up the emulation in a significant way, especially
with BASIC. Simulated EMS is too slow.
All you need is EMM (Expanded Memory Manager) supporting the LIM 4.0
standard (LIM EMS 4.0).
If EMS usage is possible, a memory count 'EMS xxx Bytes ok.' will
appear during initialization.
Otherwise you will read "Sorry, using conventional memory".
Example under OS/2 2.x (settings for the window):
EMS_FRAME_LOCATION = auto
EMS_HIGH_OS_MAP_REGION = 32 (or more)
EMS_LOW_OS_MAP_REGION = 0 (or more)
Example under DOS in the file CONFIG.SYS:
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE 1024
...
2.3.2 Define the BLASTER environment !
---------------------------------------
In order to hear sound from the soundcard you must set the BLASTER
environment variable properly. Either use the program 'SET-ENV.EXE'
(or 'SBTEST.EXE') coming along with your soundcard or modify
AUTOEXEC.BAT directly. In AUTOEXEC.BAT, you should have a similar line
to the following:
SET BLASTER=A220 I7 D1 T3
With the meaning:
A specifies the base address (0x220)
I specifies the IRQ (7)
D specifies the DMA channel (1)
T specifies the version of the soundcard:
1 : Soundblaster 1.0/1.5
2 : Soundblaster Pro
3 : Soundblaster 2.0/2.5
4 : Soundblaster Pro 3/Pro 4.0
5 : Soundblaster Pro (Microchannel)
For version 2,4,5, stereo sound is assumed.
3. Differences between CPC and CPCEMU
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
In this chapter I describe some features that differ in CPCEMU and a
real CPC. In the next section some special keys are mentioned, especially
the function keys; later how to load from disk or cassette.
3.1 Keyboard
=============
Maybe you have already noticed that the function keys of the PC not
map to those of the CPC. They produce strange output which is described
here. Or you are looking after the COPY-key for hours.
All the CPC keys really are located somewhere.
You may rest assured of it.
Here the secret is disclosed:
- ALT, ALTgr : COPY on a CPC
- PAUSE Key : holds the PC until it is pressed again. If the function
keys of the PC do not react any more you may have pressed the PAUSE Key.
- Keypad : Depending on the Num Lock state the keypad functions in a
different way. With "Num Lock on", the keypad represents the function
keys of the CPC, otherwise the joystick.
If you want to use an analog PC-joystick you have to calibrate it first.
You have to wait until chapter 4 (Changing the Configuration).
Only to be complete:
- Page up/down: Moves the whole CPC screen.
(Do not ask me for what purpose this is.)
And certainly the function keys.
F1 : Help Key. Maybe the most important key in the beginning.
F2 : Toggles between CPC screen (standard view) and message screen
(that one with a red border).
F3 : Insert a disk, see section 3.2.1
F4 : toggle sound on/off
F5 : Load a snapshot (memory dump), see section 3.2.3
F6 : Save a snapshot, see section 3.2.3
F7 : Setup menu, see section 4.1
F8 : Hard reset, like reset button for CPC. Use this, if CTRL/SHIFT/ESC
does not work any more.
F9 : reserved for future use
F10 : debug menu, explained in chapter 7. If you come inadvertently into
this menu, press 'r' for R)un or 'q' for Q)uit.
F11 : reserved for future use
F12 : Quit the emulator
3.2 Loading of Programs, Menus
===============================
In this section you will learn how to load programs from disk tape or
snapshots. Certainly the same goes for saving.
How to use menu is described, too.
3.2.1 Loading from Disk, Menus
-------------------------------
Under normal conditions the AMSDOS (Amstrad DOS) is active, that is
all file instructions use the disk.
You do not need to insert a real CPC disk into your PC drive every time
apart from the fact that you may have 3" CPC disks only.
To have a better speed a CPC disk is contained inside a so-called
disk image. This file can be located anywhere on the hard disk
(or on a high density disk).
Here some BASIC AMSDOS instructions:
- CAT <RETURN> : displays the catalogue
- With 'RUN"<filename>"' you load and start a program.
You may omit the ending quotation marks. This instruction is useful
for BASIC programs having the extension .BAS as in many cases for
binary programs with the extension .BIN .
A simple way to run a program:
1. input the filename, e.g. 'disc' *without* pressing <RETURN>
2. Hold down the CTRL Key and press Cursor left (the cursor moves
back to the first column now)
3. Still hold down the CTRL key and press the ENTER Key on the keypad
(RUN"disc appears and the program is loaded)
- LOAD"<filename>" loads a program without starting it. You can inspect
BASIC programs with LIST and start them with RUN. Usually binary
programs will not load with LOAD. Try to use the MEMORY instruction
before, e.g. 'MEMORY &1fff'.
- SAVE"<filename>" saves a BASIC program. For binary programs you have
to specify some more parameters, e.g. 'SAVE"<filename>",b,&c000,&4000'
will save the screen.
- MERGE"<filename>" is also possible. It merges a BASIC program to
another contained already in memory.
Some special AMSDOS instructions are introduced by a vertical dash:
- |A, |B to select the drive (also possible with |DRIVE,0 or 1)
- |DIR,"<filename pattern>" to see the directory.
Important note: Use the following on a CPC 464:
a$="<filename pattern>" : |DIR,@a$
- |ERA,"<filename>" erases a file.
Important note: Use the following on a CPC 464:
a$="<filename>" : |ERA,@a$
- |REN,"<new name>","<old name>" to rename a file.
Important note: Use the following on a CPC 464:
a$="<new name>" : b$="<old name>" : |REN,@a$,@b$
- |TAPE to switch to the cassette, is described in the next section.
- |DISC to switch back to disk
There are some other instructions but not so important.
A Menu
------
Until now you can use only one disk. That one already "inserted" in
the drive. To insert another disk, simply press F3. A menu appears:
Insert Disk
Drive 0
Side Select 0
Write Protected 0
With the Cursor Keys <up/down> you can select a line. You can also do
that by typing in letters (go back with <DEL>). Change numbers with
the Cursor Keys <left/right> or with direct input of digits.
<RETURN> in any line (e.g. the first one) takes the changes. It would
be dismissed with <ESC>.
"Drive" is the desired drive (0=A, 1=B); "Side Select" is a side switch
for double sided disks, it has no effect when using a single sided
format.
With "Write Protected" you can mark a disk as write protected
(0=No, 1=Yes, write protected).
The File-selection Menu
-----------------------
Now press <RETURN> and a directory of the disk drive appears.
Select a new disk with the same methods as described above.
If there is already a disk lying inside the drive you do not need to
remove it first as in real life. It is automatically done.
But at the bottom of the screen this disk is displayed.
You will see at most 15 files, if there are more, "<more>" appears.
- <HOME> goes home to the first filename, <END> to the last one
- <Page up/down> scrolls in pages through the list
- <RETURN> takes the selected name, <ESC> escapes.
You can also select names directly by pressing a first letter.
".." is the parent directory; [A], [B], ... are the available drives.
Please select only floppy drives with a disk inserted. Otherwise
you could get some trouble.
It is also possible to insert disks from inside ZIP archives. Select
a ZIP archive by pressing <RETURN> and its directory is displayed as a
normal directory. If you select a file from inside a ZIP archive, it
is automatically extracted into a temporary file. For this feature
you will need the program PKUNZIP anywhere in the DOS searchpath,
especially in the CPCEMU directory.
Temporary files are automatically deleted if they are not needed any
more. Changes are *not* written to the ZIP archive. If you save
something on a disk image inside a ZIP file, it will be lost after
you insert another disk. If you want to change disk images inside
ZIP archives, extract them before starting CPCEMU.
How to create disk images at you own is described in chapter 5
(Data Transfer CPC <-> PC).
3.2.2 Loading from and Saving on Cassette
-------------------------------------------
Actually, what is a cassette for CPCEMU ?
Well, files on cassette are regular files in DOS directories.
After the '|TAPE' instruction the BASIC instructions for file handling
use the cassette. But only those starting not with "|".
Now you can use the instructions described in the section above
(CAT, RUN", LOAD", SAVE", MERGE") for cassette.
If you omit a filename, the file selection menu will appear which you
already know from the disk.
With SAVE"" you can either overwrite an existing file or create a new
one by specifying a new name in the last line "(new name)".
Certainly you can load programs from inside ZIP archives, saving
is ignored.
Such a fine cassette you have only with the emulator.
3.2.3 Loading and Saving of Snapshots
--------------------------------------
Snapshots are memory dumps not only containing the actual memory
contents also the internal states of the hardware chips, e.g. the
processor.
At every time you can interrupt the running program and save it as a
snapshot. Later you can load it, continue with the same position you
have interrupted it.
You save a snapshot with F6. Specify the snapshot size, if it is
64K or 128K. 128K snapshots make only sense if the second memory bank
is in use. In this case use "128K Snapshot = 1", with the meaning 1=Yes.
The file selection menu is the same as described already with the disk,
with the additional comments given for the cassette (3.2.1 and 3.2.2).
Later you can reload a snapshot with F5.
4. Changing the Configuration
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
In this chapter you will learn how to configure CPCEMU for your needs.
The setup menu is described as well as the configuration file and the
command line parameters.
4.1 The Setup Menu
===================
This is the simplest way to make adjustments to CPCEMU.
Nevertheless this menu lets you change far from all settings.
To give an example, if you want to use additional ROMs you must use the
configuration file described in section 4.2.
As already mentioned in the keyboard section, you get into the setup menu
with F7. The following menu appears:
Setting: Value: Short explanation:
-----------------------------------------------------------------------
Sound 1 (Sound on or off)
Colour 1 (Colour or Green Screen)
Screen offset (ymove) 1 (moving screen up and down)
Set VSYNC position 1 (position of vertical
synchronization)
Allow palette change 1
Multi Mode 1 (multi mode)
Interrupt Frequency 300 (interrupt frequency)
Don't forget INTs (CPM+ 0) 0 (do not forget interrupts)
Delay 0 (slow down the emulation)
Sondblaster Delay 1 (delay for Soundblaster)
Keybrd Language (UK GR FR) 0 (other keyboard mappings)
Calibrate joystick
DOS Shell
Continue (continue with the emulator)
Select the settings as already described in 3.2.1.
- Sound (1)
Enables the sound output. 1=on, 0=off. You can also press the
function key F4 instead.
- Colour (1)
Selects a green or a colour screen. 1=colour.
- Screen offset (0)
Specify the number of lines the CPC screen should be moved.
Usually you do not need this option. You get the same effect by
pressing <Page Up> and <Page Down>. Possible values: 0=no offset,
up to circa 25.
- Set VSYNC position (5)
Commonly you will not need this option, but nothing will be damaged if
you try it. One time during the screen update there is a vertical
frame fly with a special bit set, the so-called VSYNC bit (vertical
synchronization). You can define the position, where the VSYNC should
occur. Possible values are 0 to 5. For further information look at
chapter 7.
- Allow palette change (1)
Set this option to 0 to disable palette changes. This makes sense
if you cannot see anything because the screen flickers too much.
If you press the function key F8 to cause a hardware reset, this
option is reset to 1 automatically.
Hint: If palette update is disabled and you see completely wrong
colours, try pressing F2 twice.
- Multi Mode (0)
If programs use several modes simultaneously on the screen, switch on
this option. Then CPCEMU tries to handle it correctly.
Per default this option is switched off because it does not work
properly in all cases.
- interrupt frequency (300)
To change the frequency with which interrupts are generated.
On a real CPC this is always 300 Hertz. If you raise this value
many programs seem to run faster, but there is less computing power
between two interrupts. If you own a slow computer you may have
to lower this value to 100 or 200 sometimes. Possible values are
18 to circa 600.
For further information look at chapter 7.
- do not forget INTs (CPM+ 0) (0 or 1)
Another of these options one cannot explain without much background
information. Without EMS (Expanded Memory) this option is 0 which means
that interrupts can be skipped. Certainly this is not desired, but
with 1 the emulation is getting too slow. With EMS this option is 1,
so CPCEMU tries to handle every interrupt.
Important note:
It seems that CP/M Plus only runs with EMS and this option = 0 !
For further information look at chapter 7.
- Delay (0)
This option allows you to slow down the emulation if it is too fast.
0 means no delay, 100 is a small delay, 300 some more ...
- Sondblaster Delay (1)
Set the amount of delay after every write access to the soundcard.
In the configuration file this delay is set to 1 to speed up sound
output. If problems with the soundcard occur, use a value of 35.
- Keyboard Language (0)
With this option you can select the keyboard mapping for other countries.
0 = UK, default
1 = GR, "German-like" keyboard. Unfortunately it is impossible to have
a full German keyboard because SHIFTed keys cannot mapped
to non-SHIFTed. But "Z" and "Y" are swapped, in addition to some other
characters.
2 = FR, "French-like" keyboard. After the introduction of a German
keyboard the French will not stand in the rain. Some parts of the
AZERTY Keyboard are realized. But is has the same problems as
the German one.
- calibrate joystick
You surely know it from other programs that you have to calibrate the
analog PC joystick first. Select this setting by pressing <RETURN>,
move the joystick to the upper left, then to the lower right.
Then some parameters are displayed. IF you want to use your joystick
always, take this parameters and write them in the configuration
file (see next section). Nevertheless you have to repeat the
calibration if you change the clock.
- DOS Shell
Opens a DOS shell which you can exit with 'EXIT'.
- Continue
Take the values and continue with the emulation. You get the same effect
by pressing <RETURN> in any line except calibrate joystick.
4.2 The Configuration File
===========================
Now you will learn the most important way to configure CPCEMU.
At first CPCEMU reads the configuration file CPCEMU.CFG per default.
The structure of this file is described. Then you will be able to
use your own ROMs, change the keyboard language permanently, ...
Have a look at the file CPCEMU.CFG:
;CPCEMU.CFG - The Configuration File for CPCEMU
;...
;
;configuration for CPC 464, 664 and 6128
;
SHOW_CONFIG=yes ;should the configuration be displayed ?
ROM_PATH = .\ROM ;path to ROM images
PIO_PORT_B = %00111110 ;use %00111010 for "Schneider"
Already with this few lines you get the simple structure:
Comments start with a semicolon (";"). Options are changed by writing
a key-word followed by "=" followed by a <value>. The <value> depends
on the key-word and is either a string or a number. Numbers can be given
in decimal, hexadecimal ("0x") or binary ("%") notation.
Instead of %00111110 you could write 62 or 0x3e.
When knowing the meaning of the key-words, you can adjust the values
with a text processing system for your own needs.
But first an overview of the key-words, sorted alphabetically.
#ENDIF, #IFCPC, AMSDOS_DI, AMSDOS_SPDUP, BREAK_MASK, COLOUR, DELAY,
DRIVE_A, DRIVE_B, EMS_EI, INT_FREQ, INT_RESUME, JOY_CALIBRATE,
KBD_LANGUAGE, MULTIMODE, PIO_PORT_B, PRINTER, RAM_SIZE, ROM_BLOCK,
ROM_PATH, SBLASTER, SB_DELAY, SHOW_CONFIG, SNAPSHOT, SOUND,
TAPE_BYPASS, TAPE_PATH, TMP_PATH
It follows the meaning of the key-words:
(Values in brackets are default values, used if the key-word is not
defined in the configuration file.)
- #ENDIF, #IFCPC
Some control instructions for conditional configuration depending on
the desired CPC:
#IFCPC 464 ... #ENDIF
#IFCPC 664 ... #ENDIF
#IFCPC 6128 ... #ENDIF (default)
Consequently you need only one configuration file for all CPCs.
The batch files CPC464.BAT, CPC664.BAT and CPC6128.BAT set the
desired type with command line parameters. These are explained
in the next section.
- AMSDOS_DI = {YES,NO} (NO) (AMSDOS disable)
Forbids the initialization if the AMSDOS. This is useful if you
want to load programs from cassette without giving the instruction
'|TAPE' every time.
Certainly you could simply make a comment of the ROM_BLOCK line
for the AMSDOS (with ROM_BLOCK you specify the ROM to load), but
with the effect that no AMSDOS is present at all.
Using this option the AMSDOS is still present for some programs.
- AMSDOS_SPDUP = {YES,NO} (YES) (AMSDOS Speedup)
Permits a AMSDOS ROM modification speeding up disk accesses.
This is done by minimizing the motor waiting times, not necessary
for the emulator.
- BREAK_MASK = <number> (0xffff)
Only for debugging purpose. With the value 0xfffb from the configuration
file some errors are suppressed, caused by illegal instructions.
Do not change this value!
- COLOUR = {YES,NO} (YES)
Permits the usage of a colour palette. Instead of a green screen you
have a colour screen.
This option is also available in the setup menu.
- DELAY = <number> (0)
This option is also available in the setup menu. If you want to slow
down the emulation.
- DRIVE_A = <path+filename> ()
Set the path to disk images. If you use a filename as path, this
disk is automatically inserted into drive A.
Section 3.2.1 described Loading and Saving on Diskette.
- DRIVE_B = <path+filename> ()
Same as DRIVE_A, but for drive B.
- EMS_EI = {YES,NO} (YES) (EMS enable)
Permits the usage of EMS memory (Expanded Memory System).
If no or not enough EMS memory is available, CPCEMU uses conventional
memory automatically.
For further information about EMS consult 2.3.1 and chapter 7.
- INT_FREQ = <number> (300) (Interrupt Frequency)
Set the frequency of interrupt generation.
Read the setup menu section for more details.
- INT_RESUME = {YES,NO} (YES) (Interrupt resume)
Same as "Don't forget INTs (CPM+ 0)" in the setup menu.
Please read the explanation given there.
- JOY_CALIBRATE = <xcen> <ycen> <xdead> <ydead> ( 0 0 0 0 )
Define a joystick calibration for your analog joystick.
Use the values displayed after the joystick calibration in the
setup menu (see section 4.1).
This is a key-word with 4 values. You must always specify all of them.
4 times zero means not calibrated.
- KBD_LANGUAGE = {UK, GR, FR} (UK) (Keyboard Language)
Set another keyboard language permanently. Also available in the
setup menu. You can specify UK (England, is 0), GR (Germany, is 1)
or FR (French, is 2).
- MULTIMODE = {YES, NO} (NO)
Permit multi modes. Also available in the setup menu.
- PIO_PORT_B = <number> (%00111110)
With some jumper you can make from the Amstrad CPC a "Schneider" CPC
and some more. Furthermore it was possible to change the screen
refresh rate from 50 Hertz to 60 Hertz (in the emulator it is
always 70 Hertz).
To get a "Schneider" CPC, use the value %00111010 (or 0x3A).
The company name is coded in the bits b3,b2,b1:
Isp (000), Triumph(001), Saisho(010), Solavox(011),
Awa(100), Schneider(101), Orion(110), Amstrad(111)
- PRINTER = <path+filename> ()
Set the printer file where line printer outputs are collected.
It is cleared at every emulation start.
After quitting the emulator, you can send it to your printer
with 'COPY <filename> prn:'.
- RAM_SIZE = <number> (128)
Change the size of the RAM in KB.
Possible values are 64, 128, 192, 256, 320, 384, 448, 512, 576.
Values greater than 128 are only possible if you have EMS memory.
ROM_BLOCK = <ROM-number> <filename> <offset>
Describe what ROM should be loaded and where.
Repeat this line for every ROM you want to load.
The maximum number of ROMs is circa 20, if you use EMS.
- <ROM-number> is the number assigned to the ROM, that means
it is selected by 'OUT &DF00,<ROM-number>' .
Possible values are:
0 : Foreground ROM (e.g. BASIC)
1 - 251 : Background ROMs. On a CPC 664/6128, the ROMs
1-15 are automatically initialized during reset
(on a CPC 464 only 1-7).
The AMSDOS ROM has always the number 7.
255 : Lower ROM (e.g. OS; has only in emulator this
number).
- <filename> is a file in the directory ROM_PATH, which
contains the ROM.
- <offset> is a number of bytes preceding the ROM-image in
file <filename>. The AMSDOS header is skipped automatically,
so do not include it in the offset. With an offset it is possible
to load several ROMs from the same file.
If you inspect the lines
ROM_BLOCK = 255 CPC6128.ROM 0x0000
ROM_BLOCK = 0 CPC6128.ROM 0x4000
you may see that the lower ROM and the foreground ROM
are loaded one after another from the same file.
Important: Do not omit the offset, even if it is 0.
Maybe you have note a feature of this key-word which has 3 values.
You must always specify all of the values, so do not omit the offset
even if it is zero.
- ROM_PATH = <path> (.\)
Set the path to ROM images. In the configuration file this path
is set to ".\ROM". The ROMs itselfs are defined with the key-word
ROM_BLOCK.
- SBLASTER = {YES,NO} (YES) (Soundblaster)
Permits the usage of a Soundblaster card for sound output.
IF you do not own one, the PC speaker is automatically used.
Important note:
You have to specify the BLASTER environment variable properly.
See section 2.3.2 for how to do that.
- SB_DELAY = <number> (35) (Soundblaster Delay)
Set the amount of delay after every write access to the soundcard.
In the configuration file this delay is set to 1 to speed up sound
output.
If problems with the soundcard occur, use a value of 35.
Also available in the setup menu.
- SHOW_CONFIG = {YES,NO} (YES) (Show Configuration)
Permits the display of the configuration overview when starting the
emulator.
- SNAPSHOT = <path+filename> ()
Set the path to snapshots. If you specify a snapshot file as path name,
this snapshot is automatically started.
Look at section 3.2.3 for more details.
- SOUND = {YES,NO} (YES)
Permits sound output. You can always disable the sound with the
function key F4 or in the setup menu.
Sound comes either through a Soundblaster card or the internal
PC speaker.
- TAPE_BYPASS = {YES,NO} (YES)
Permit the usage of the cassette.
Further information about the TAPE bypass are in chapter 7.
- TAPE_PATH = <path> (.\)
Set the path to tape files. In the configuration file this path is
set to ".\TAPE".
Look at section 3.2.2 for more details.
- TMP_PATH = <path> (.\) (Temp Path)
Set the path for temporary files. They are only needed if you
select a file from inside a ZIP archive and CPCEMU needs to
extract it with PKUNZIP.
4.3 Command Line Parameters
============================
As you know from other programs, it is also possible with CPCEMU to
use command line parameters. But currently there are only few of them.
Execute CPCxxx.BAT with the following options:
/f : use the fast mode (default)
/s : use the slow mode
/d : use the debug mode, described in chapter 7
/x : disable EMS usage
/c <file>: specify another configuration file, overriding the
default CPCEMU.CFG. See section 4.2.
/v <CPC> : set the desired CPC type 464, 664 or 6128 with
/v 464, /v 664 or /v 6128 respectively.
/h : displays a help screen
The option "/d" is automatically used, if an unknown option was specified.
Instead if "/" you can also use "-" known from UNIX.
5. Data Transfer CPC <-> PC
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
What can you do with a good emulator when having no programs for it
or if you do not see any possibility to get the programs from CPC
across to the PC ?
In chapter 6 (Sources of Supply, ...) some sources are listed where to
get CPC software.
This chapter deals with data transfer of CPC software to the PC.
Some utilities are described for the different possibilities
(disk, with parallel or serial interface).
5.1 Disk as a Media
====================
Mostly this is the simplest way to get CPC software across to the PC.
You only need a CPC with a second drive in correct size.
Correct size means that the disks must fit in your PC drive.
If not, you could still try to connect a 3" drive to your PC.
The PC is persuaded with a utility to read the CPC formatted disks.
This utility is called CPCTRANS.
5.1.1 The Disk transfer program CPCTRANS
-----------------------------------------
I have developed CPCTRANS to create disk images from CPC disks.
Standard CPC formats as well as double sided Vortex formats are
supported.
CPCTRANS is not intended to transfer copy protected formats!
When calling CPCTRANS without parameters you will get a short
overview.
CPCTRANS is similar to the DOS COPY-instruction:
'CPCTRANS <source> <destination> <options>'.
Examples:
'CPCTRANS B: DISK1.DSK' copies the disk in drive B to the disk image
DISK1.DSK. If it does not exist, it is created.
'CPCTRANS DISK1.DSK B:' writes the disk image back to the disk in
drive B.
The first command only runs for the DATA format.
For other formats you have to use an option:
/f 0 : DATA format (default)
/f 1 : DATA format, double-sided
/f 2 : SYSTEM format
/f 3 : SYSTEM format, double-sided
/f 4 : VORTEX format, double-sided
/f 5 : unknown, CPCTRANS tries to detect it
/f 6 : +3DOS
Note the space between "/f" and the number.
When using the double sided DATA- or SYSTEM-format, you can select
the side A or B in the disk menu (3.2.1).
When writing back a disk image, the disk in the drive must have
the same format! For simple formats you can use 22DISK, described
in the next section.
For copying the B-side of a disk, use the option "/s 1"
With 'CPCTRANS B: DISK1.DSK /s 1' only the B-side of the disk is
copied, with 'CPCTRANS DISK1.DSK B: /s 1' it is written back.
The option "/v" turns on "verify", so CPCTRANS checks if the copy
is correct. That is indeed a bit slower but increases security.
The option "/t <count>" sets the number of tracks to copy.
Normally it is 40 tracks, only for the VORTEX format it is 80.
The option "/q" (quick format) is a feature. You can format a disk image,
instead to copy the contents of to disk into it.
Nevertheless you have to specify a valid drive as first parameter, even
if it is not used.
Example:
'CPCTRANS a: SYSTEM.DSK /f 2 /q' formats SYSTEM.DSK as disk image
with SYSTEM format.
5.1.2 The format- and copy-utility 22DISK by SYDEX
---------------------------------------------------
This program is available as shareware. With correct definitions
you can use nearly all CP/M formats!
Unfortunately just the CPC formats are not included with the evaluation
copy of 22DISK. Therefore I have defined the formats in the file
CPMDISKS.DEF. You will find them in the UTILITY subdirectory.
What can you do with 22DISK ?
You can transfer single files back and forth between DOS and non-DOS
formats, format disks and so on.
Copy the CPC files into the TAPE directory and read section 3.2.2
for an explanation how to load them.
5.2 The parallel Interface
===========================
If you own a CPC without second drive, you can do the data transfer
over the parallel interface.
The original idea came from Gilles Molinari, he had also written
some Turbo Pascal programs.
But maybe you belong to the group of users, who do not have a
Turbo Pascal compiler on their CPC, so you could not do much with a
Pascal source.
Therefore I have rewritten the utilities Locomotive BASIC, extended
by the additional direction PC->CPC.
Thus it is possible to transfer files between CPC and PC back and forth!
CPC and PC are coupled together with the parallel interfaces.
If you own a CPC 6128 with Centronics connectors and compare them with
a printer you will note that CPC and PC fit together excellently when
using a standard PC printer cable! But do not do that now, please read
further.
You have to jump over two hurdles:
1. constructing a simple adapter
2. input a short program into the CPC
Wait! Do not skip the rest!
Both steps are really simple, because
1. is possible without soldering and
2. is indeed very short (about 30 lines BASIC)
To step 2.
The program you need calls CPCREC.BAS and is in the UTILITY directory.
It is saved in ASCII, so you can send it to your printer without
problems and type it into your CPC.
It does its job like a thin rope sent through a pipe in order to
get a thick cable through it.
Here, the thin rope is CPCREC.BAS which receives files from the PC.
With this little utility you get CPCPARA.BAS (the thick cable) over
to the CPC. With CPCPARA.BAS you can receive and transmit. Then you
will not CPCREC.BAS any more.
On the PC side you use PCPARA.EXE, also included in the UTILITY
directory.
But before you input CPCREC.BAS, have a look at step 1:
The parallel Adapter
--------------------
You need an adapter between the PC printer cable and the PC printer
connector.
This goes easiest with a RS-232 wiring box, which has a 25pin D-Sub
male (plug) and a 25pin D-Sub female (socket) connector.
By plugging short wires into the box you can realize any possible
connection between both sides. Usually such a box is used - as its
name already says - for adapting RS-232 interfaces. Serial connections
do not function at the first, you know.
We use the adapter the other way round, that is the plug is for the PC
side, the socket for the printer cable.
Plug it together now:
Plug for the PC printer- Socket for the printer cable
connector (left side): (right side):
Pin 2 --------------- Pin 11
Pin 10 --------------- Pin 8
Pin 11 --------------- Pin 1
Pin 12 --------------- Pin 7
Pin 13 --------------- Pin 6
Pin 15 --------------- Pin 5
Pin 19 --------------- Pin 19
As you see, you do not need all the 25 wires, only 7 of them.
Even if the wiring box is cheap if you buy it from a electronic
mail-order, you can get it cheaper by using a jumper box. Then
you have to solder the wires.
The cheapest is buying a 25pin D-Sub plug, a 25pin D-Sub socket,
a box and some wires.
Now I presume you have connected the computers with the adapter and
CPCREC.BAS on your CPC.
What is up now ?
1. On the CPC : Run CPCREC.BAS (after you have saved it)
2. On the PC : Run 'PCPARA /s CPCPARA.BAS'
Now it gets exciting, if no error messages appear on the PC screen, all
is OK, the file is on the CPC.
If the PC does not send anything and reports an error message the
connection may incorrect.
If it is sending ("Sending block xx"), but some error messages appear
occasionally, your PC may be to fast or to slow. The direction
PC->CPC is very time crucial, you know.
On my 386/33 I must not have EMS memory installed, otherwise it is too
slow. On a very fast computer it could be necessary to use the turbo
switch.
Use the program under plain DOS, not OS/2 or Windows.
If it does not run at all, send me a note.
In the meantime you can type in the program CPCPARA.BAS which is
somehow longer. The direction CPC->PC runs always, also under OS/2,
because it is nearly the same as printing. The PC behaves like a printer.
Use PCPARA in the following way:
- PCPARA /r : start PCPARA in receiving mode
- PCPARA /s <file> : sends <file> to the CPC, if you use 'TRM:' as
file, you will get a terminal.
All programs in the UTILITY directory display an overview about its
options if you call them without any.
WARNING:
Even if the construction is very simple, I cannot guarantee that you
do not damage anything. If your CPC printer-port is damaged afterwards,
it is a pity and rather an unfortunate accident. Perhaps it would be
also damaged if you had had connected simply the printer.
For example, I know a former CPC user whose keyboard did not work
properly any more one day. After the repair it was told to him that
he should not plug in the joystick while the computer is switched on!
(Well, I do so always ?!?)
To come back:
I have built the adapter successfully. And even users sometimes
"forgetting" to insert the adapter in the connection have no problems.
You can read further information about the parallel adapter in chapter 7.
5.3 The serial Interface
=========================
If you own a serial interface for the CPC, you can certainly use it
for data transfer to the PC.
5.4 Other possibilities
========================
There are some more fantastic ways to get the software on the PC.
- Connect the 3" disk drive to the PC. Some (older) should fit to
a 5.25" connection.
- With a detour over the the Spectrum+3: read the 3" disk on the
Spectrum+3, convert it in the Spectrum format and use a utility
to read it on the PC. This utility comes with the Spectrum emulator Z80
by Gerton Lunter.
- When is was necessary to get the ROM your own, someone told me about
his way:
He took out the ROM chip out of the CPC and inserted it instead of
the VGA BIOS. With a small program he was able to read the contents.
- Maybe you will find another way ?
6. Sources of Supply, Help Line, Acknowledgments
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
In this chapter you will hear where to get CPC software and whom to ask
in the case of questions.
Furthermore I mention some other emulators for the Amstrad.
6.1 CPC Software, where to get ?
=================================
This is no problem if you have access to the Internet.
As for Spectrum emulators, there are existing some "anonymous" archives,
where you can get CPC software via FTP.
- ftp.nvg.unit.no:/pub/cpc, thanks to Arnt Gulbrandsen
- ftp.demon.co.uk:/pub/cpm, thanks to Paul Martin
Paul Martin will send anyone, who can give him proof that they have
original Amstrad CP/M Plus, the binary ROM images of his
"CP/M Plus ROMs" for free.
- [ sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu ]
The following BBS have CPC software:
- Aspects 2:250/107 : +44 617920260, in United Kingdom
- Genesis the 8bit generation 2:320/220, in France, open in mid-august,
ask the phone number to a FIDO sysop after the 15th august.
6.2 News, Exchange experiences
===============================
You want to have always the latest version of CPCEMU ?
You want to be informed, if a new one is released ?
Meanwhile we have set up a newsgroup only for CPC !
It is called comp.sys.amstrad.8bit.
You will find discussions about CPC (and also CPCEMU).
Here you can talk about your experiences with the CPC.
If you cannot read the newsgroup for any reason, write me an email
that you want to be on the mailing list. Then you will be informed
about CPCEMU news.
You will find my address in the next section.
Certainly you can also use normal mail to ask me (or David, see below),
but please do not forget the return postage.
If you send me a contribution, I feel obliged to send the latest version
to you at least one or two times.
6.3 If you have questions or suggestions
=========================================
Then you can write directly to me:
Marco Vieth
Auf dem Uekern 4
33165 Lichtenau
Germany
Phone: (...)05292/1366
Internet: ali@uni-paderborn.de
As you probably already suppose when reading the Internet address,
I am studying at the university of paderborn,
indeed computer science in the 9th semester (WS 95/95).
In case you speak or write English (I presume so 'cause you're reading
this) you also can write to David Cantrell:
David Cantrell
116, London Road
Bexhill-on-sea
East Sussex
TN39 4AA
England
Phone: ?
Internet: test@gmcl.co.uk
David offered to help a little to answer the "pile of letters".
He is just scanning in the firmware manual for the CPC, so he will
be able to offer computerized literature about CPC. Certainly he
will always have the latest version of CPCEMU.
Although this program is freeware, I would certainly accept any sort of
support, financial or technical.
(30-50 Deutschmarks would be appropriate.)
(That is around 20-33 US$ or 13-21 British pounds.)
Even if you send no money, I normally respond to all letters and try
to keep in mind all suggestions (I am sure David will do the same).
So do not hesitate and write your comments.
6.4 Other Amstrad CPC Emulators
================================
Still in the beginning of 1994 I thought that CPCEMU was the only
emulator for the Amstrad CPC. Now I know of three other:
- SIMCPC:
Presumably the first CPC emulator written.
CPC Emulator for PC/XT/AT (c) 1989, 90 by GHE, Aachen.
It is only black and white, but with additional ROMs;
only a "beer humour".
- CPCEMUII (?):
In development since October 1993 by Paco Lopez (Spain).
Is available from SIMTEL now. It uses the same disk format as CPCEMU.
- CPE:
In development by Bernd Schmidt. By using a special 50 hertz
screen mode, some colour blocks are exactly reproduced.
Also supported: Multi modes, overscan.
6.5 Plans for future releases of CPCEMU
========================================
- more accurate timing of the Z80 instructions
- fast hardware scrolling
- improved multi modes
- overscan
- centered screen, if you change its size
- transfer of disks with the parallel adapter
- direct loading of CPC diskettes
- improved sound (maybe with noise)
- loading of CPC tapes with the parallel port or with the Soundblaster
- Multiface II <-> snapshot converter
6.6 Acknowledgments
====================
- Special thanks to Juergen Weber, not only for many hints and
suggestions, but especially for the fast Z80 emulation from
his CP/M emulator ZSIM.
Juergen G. Weber
Wiesentalstrasse 1
74523 Schwaebisch Hall
Federal Republic of Germany
email: weberj@dia.informatik.uni-stuttgart.de
- Also thanks to Bernd Schmidt. Because Bernd writes his own emulator,
we have had the same problems many times. Only if you try to write
such an emulator yourself, you can imagine, which details cause problems.
There is no CPC documentation available, which gives a whole
specification. Most parts of the CPC behaviour are detected by
experiments with a real CPC.
- Thanks to Emmanuel Roussin for his untiring engagement for the CPC.
He did essential steps for setting up the newsgroup and lent me
his Multiface II for months, that I should include in the emulator
somehow.
- Thanks to Arnt Gulbrandsen for his JPP source, where I found
ideas for the keyboard handler, and the joystick routine.
By the way, JPP is a very good Spectrum emulator.
- Thanks to Martin Zacho for supplying a joystick routine.
- Thanks to Fernando J. Echevarrieta Fernandez for pointing out first
that version v0.8 did not emulate a CPC 664.
- Thanks to Gilles Molinari for his transfer program for the parallel
adapter.
- Thanks to Paul Martin for correcting the English documentation to
version 1.0.
- Thanks to Mark Haigh-Hutchinson for his engagement in giving
programs of the Vortex company making public domain.
- Thanks to Martin Young for his outstanding ideas about emulating a Z80.
- Thanks to Linh Hsiesh for many ideas of improvements, the most should
be realized now.
- Thanks to Fred Harris for writing a letter to AMSTRAD about the ROM.
- Thanks to Amstrad, especially to Cliff Lawson for allowing
to use the ROMs. Certainly Amstrad retains the copyright.
Amstrad plc, Brentwood House,
169 Kings Road, Brentwood,
Essex CM14 4EF
- And thanks to the many users for sending me suggestions or
having ideas. Without them CPCEMU had hardly come even to version 1.0
- (Please excuse my English.)
6.7 Registered Trademarks
==========================
CP/M, CP/M 2.2 and DRDOS are trademarks of Digital Research.
MS-DOS is a trademark of Microsoft.
IBM PC, PC-XT, PC-AT and OS/2 are trademarks of International
Business Machines.
CPC, AMSDOS by Amstrad,
BORLAND C, TASM (Turbo Assembler) by Borland,
22DISK by SYDEX
Soundblaster by Creative Labs
...
------------------------------------------------------------------------------
7. Internal Information about CPCEMU
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
This chapter gives some background information and shall answer the
question, WHY shall I do this or that now.
The powerful debug menu is also described. You will also find the structures
of disk images and snapshot files.
This information is not intended for CPCEMU users without knowledge of
what is inside a CPC. Maybe it is useful sometimes.
I have put this information to the end, even after the trademarks,
in the objection to show its "relative insignificance".
If you have no fun reading unintelligible sentences and unarranged
information, do not read further!
Skip directly to the Appendix.
WARNING: Go on reading at your own risk !
7.1 Table of contents for chapter 7
====================================
7.2 Internal overview of CPCEMU features
7.2.1 The Z80 CPU (The processor)
7.2.2 The Gate Array (The "Co-Processor")
7.2.3 The PAL (Programmable Logic Array)
7.2.4 The CRTC 6845 (Cathode Ray Tube Controller)
7.2.5 The PIO 8255 (Programmable Input Output)
7.2.6 The PSG AY 3-8912 (Programmable Sound Generator)
7.2.7 The FDC 765 (Floppy Disc Controller)
7.2.8 The Centronics printer interface
7.3 The Debug menu
7.4 The Memory Management
7.4.1 Another time: EMS configuration
7.4.2 How the Banking is done
7.5 ROM Modifications
7.5.1 ROM bypass for the cassette
7.5.2 AMSDOS ROM modifications
7.6 Miscellaneous
7.6.1 Another time: The Configuration file
7.6.2 The parallel Adapter
7.6.3 CPCTRANS
7.7 Structure of selected CPCEMU files
7.7.1 Disc Images
7.7.2 Snapshot Files
7.7.3 AMSDOS Header
7.8 Internal History
7.2 Internal overview of CPCEMU features
=========================================
How compatible is CPCEMU really ?
7.2.1 The Z80 CPU (The processor)
----------------------------------
+ All Z80 instructions are emulated, including so-called illegal ones.
You have the choice between a slow Z80 emulation written in C and a
fast Z80 emulation written in assembler by Juergen Weber.
With the COCPU technique, every Z80 instruction is
emulated simultaneously by the slow and the fast version,
so it gets very slow, but by comparing the registers after
each instruction many errors are found. Obviously this was
only used during program development.
You can activate the slow emulation in the debug menu.
+ Additional instructions 'ED FC xx' only the emulator knows.
Among them the user break 'ED FC FC USER &BCFC'.
- No exact timing of the instructions
- Fast emulation: load/write a word from/to address 0xffff causes an
INT 0x0D. With EMS it is even more fatal, the system hangs
(under OS/2 only one window).
7.2.2 The Gate Array (The "Co-Processor")
------------------------------------------
+ All 32 colours of the CPC (27 different ones)
+ All three screen modes (x, y, colours):
mode 0 = 160x200x16
mode 1 = 320x200x4
mode 2 = 640x200x2
+ ROM banking (16KB OS, 16KB BASIC, 16KB AMSDOS and additional ROMs)
- Colour beams flicker
7.2.3 The PAL (Programmable Logic Array)
-----------------------------------------
The PAL is logically at the same address as the gate array but
in hardware separated from it.
+ RAM banking (128 KB, up to 576 KB) with EMS or conventional memory.
With emulated EMS, the blocks are mapped by the hardware, so the speed
is OK. CPCEMU gives you a Dk'tronics compatible RAM expansion
with up to 576 KB.
- Without EMS, RAM banking is very slow, since memory blocks must be moved
around in the PC memory. Besides you have only 128 KB RAM.
7.2.4 The CRTC 6845 (Cathode Ray Tube Controller)
--------------------------------------------------
+ Screen base and offset for hardware scrolling
+ Several screen sizes from 0x0 to 80x25 with CRTC registers 1 and 6.
+ Different character sizes (1..7) with CRTC register 9
+ Multi modes (they use some other registers)
- Overscan is not yet supported
7.2.5 The PIO 8255 (Programmable Input Output)
-----------------------------------------------
+ Keyboard (connected to the PSG)
+ VSYNC emulation: A bit which is set between two interrupts during a
screen refresh. You can change the position.
+ The cassette is very fast, a ROM bypass allows to access any DOS file.
- VSYNC bit is set too long
- Cassette ports are not emulated, so most of cassette copy programs
which access the ports directly do not run.
7.2.6 The PSG AY 3-8912 (Programmable Sound Generator)
-------------------------------------------------------
+ Either through the PC speaker (awful, since 3 channels are
multiplexed into one and the volume cannot be changed)
or a Soundblaster card. Only the Adlib compatible FM part of the
soundcard is used.
- No digital-sound or too slow.
The noises form the PSG have no equivalent on the Soundblaster,
so they are not emulated.
7.2.7 The FDC 765 (Floppy Disc Controller)
-------------------------------------------
+ All necessary FDC commands to control two drives A and B
(including sector read/write, seek track, read sector-ID, ... ;
format track is ignored)
Very flexible disk formats (up to 18 sectors per track).
Including double sided formats, e.g. VORTEX.
- Complicated copy-protected formats are not supported.
7.2.8 The Centronics printer interface
---------------------------------------
+ Printer output also with 8-bit printer patch, to a file defined
by PRINTER.
7.3 The Debug menu
===================
The complete register set of the CPU is displayed and can
be modified. You can "dump" the memory, disassemble or
modify it. You can load or save areas in memory.
And the most interesting thing:
You can single-step through programs!
(Similar to a real debugger.)
Overview of the debug menu
--------------------------
R)un T)race S)tep A)ssem D)ump I)nput L)oad saV)e M)ode F)ast Q)uit
AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000
AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0 NZ NC PO P
0000 : 01 89 7F LD BC,&7F89
-f->
The first line displays the available commands, use the capitalized
letters.
The next two lines show the actual values of the Z80 registers.
The next one disassembles the actual instruction at PC position
and the last is a prompt waiting for your input.
('f' indicates that you are using the fast CPU.)
Preliminaries
-------------
Parameters in special brackets are optional [opt].
Use only hexadecimal values, e.g. <address> = 0000-ffff
"<ret>" signals you, that you are in a special mode. You may
press <return> to continue. <String><Return> leaves this mode
(use e.g. b<return>).
Commands are letters, mostly followed by an optional address.
Between the letter and this address must be a blank or tab.
Without an address, PC (program counter) is assumed as default.
Overview of the commands
------------------------
R)un:
r [<address>] : starts emulation from PC or an optional address.
Examples:
-f-> r starts emulation from PC
-f-> r 100 sets PC to 0x100 and starts emulation
T)race (trace into):
t [<address>] : executes only the actual displayed instruction.
Use <return> to continue in this mode, and so on.
<string><return> goes back to normal mode.
All single-step-commands are executed by the slow CPU (even if
"-f->" is displayed), since there is no counter in the fast CPU
any more.
S)tep (step over):
s [<address>] : executes the next instruction.
Rather all instructions, until PC is equal to the following
instruction. This can take a long time e.g. after a 'Ret'.
In this case F10 helps (as usual).
All single-step commands are executed by the slow CPU (even if
"-f->" is displayed), since there is no counter in the fast CPU
any more.
A)ssemble (actually disassemble):
a [<address>] : disassembles the next 16 instructions.
Use <return> to continue in this mode, and so on.
<string><return> goes back to normal mode.
D)ump:
d [<address>] : shows an hex/ASCII dump of the following 256 bytes from
address (or PC).
Use <return> to continue in this mode, and so on.
<string><return> goes back to normal mode.
I)nput (modifying memory):
i [<address>] : shows the actual memory address with its current
value, which you can take by <return> or change by <hex-value>
<return>.
Leave this mode by using an invalid number like '-1':
-1<return> .
L)oad (loading a program):
l [<address>] : prompts you for a filename <name> and loads it
from the directory TAPE_PATH to <address>
An AMSDOS-header is recognized.
If you press <Return> after the filename prompt, the well-known
file selection menu appears ...
Examples:
-f-> l<return> demo<return> :
loads file 'demo' to the actual PC
-f-> l a000<Return> myprog<Return> :
loads file 'myprog' to address 0xA000
saV)e (saving a program):
v [<address>] : prompts you for a filename <name> and the
length of the memory block. This block is saved from <address>
(or PC), as binary file in the directory TAPE_PATH, which
includes an AMSDOS header.
Example:
-f-> v<return> demo<return> 4000<return> :
saves file "demo" from PC with length 0x4000.
M)ode (changing the display mode):
m : Changes display mode: register display, instruction
disassembling on/off.
F)ast (selecting the type of emulation):
f : Flips between the fast Z80 emulation (developed in assembler
by Juergen Weber, default) and the slow one (written in C).
The prompt toggles between "-f->" for fast and "-s->" for slow.
All r, s, t commands refer to the selected type of emulation.
Q)uit (leaving the program):
q : quits the emulator.
Manipulation of registers
-------------------------
In addition to the one letter commands you can change register
values with the syntax: '<register>=<hex-value>'
Examples:
- af=345 : set register AF to 0x0345
- pc=a000 : set program counter to 0xA000
You can also write '<register><space><hex-value>'.
You can modify all displayed registers, thus
AF, BC, DE, HL, IX, IY, SP, PC, IR, AF', BC', DE', HL',
and also IFF1, IFF2 and IMD.
7.4 The Memory Management
==========================
7.4.1 Another time: EMS configuration
--------------------------------------
You need an expanded memory manager supporting the LIM 4.0 standard
(LIM EMS 4.0). This memory manager must supply extended EMS-pages in any
region, as CPCEMU will look for 6 physical pages on continuous addresses.
If EMS usage is possible, a memory count 'EMS xxx Bytes ok.' will appear
during initialization.
You were told to use the following settings under OS/2:
EMS_FRAME_LOCATION = auto
EMS_HIGH_OS_MAP_REGION = 32 (or more)
EMS_LOW_OS_MAP_REGION = 0 (or more)
What does that mean?
Low region is for EMS pages in conventional memory. If CPCEMU
is to use such pages, use at least 6*64KB = 84KB.
High region is for EMS pages above 640K, additional to the
standard frame of 64KB. Use at least 2*16KB = 32 KB.
For DOS, you were told to include the following lines in your CONFIG.SYS:
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE 1024
...
Modify the 1024, depending on the available memory of your computer.
Annotations:
EMM386 supplies several additional pages in conventional memory.
The minimum address can be changed with the option /B=<segment>
(default is 4000).
With /P<number>=<segment> it is possible to change the
segments of physical pages.
7.4.2 How the Banking is done
------------------------------
Banking is to enable some home computers to have RAM and ROM
at the same address. So read is from ROM and write is to RAM.
The Amstrad CPC has 64K RAM and a 16K ROM at 0-3fff and a second
one at c000-ffff:
0 RAM 0000-3fff
1 RAM 4000-7fff
2 RAM 8000-bfff
4 RAM c000-ffff
L ROM 0000-3fff
U ROM c000-ffff
The main idea is to have different segments and offsets for
reading, and writing.
For every read access, a read offset is added to the desired
address, and the same is done with a write offset for writing.
state 0 state 1
block 5 M L c W 0 <
block 4 M W C c W C c | swap at
block 3 M W 8 b c W 8 a c | state
block 2 M W 4 b c W 4 a c | change
block 1 M W 0 b L a c <
block 0 M U b U a
(M = conventional memory or physical EMS-pages)
a = lower ROM enabled, upper ROM enabled
b = lower ROM disabled, upper ROM enabled
c = lower ROM enabled, upper ROM disabled
W = lower ROM disabled, upper ROM disabled
To flip between the two states, the '0' and 'L' block must
be swapped. For RAM banking a new '0' must be swapped with
the old one. ROM select is done by copying the new ROM to 'U'.
With EMS memory, all banking is done by the EMS hardware
(or its emulation). This improves the emulation speed in BASIC
and CP/M Plus. Now you understand why 6 continuous
physical EMS pages are needed; the standard frame with 4
pages is not enough.
7.5 ROM Modifications
======================
7.5.1 ROM bypass for the cassette
----------------------------------
After the '|TAPE' command, or if the AMSDOS ROM is disabled,
the cassette is addressed. Cassette access is transformed into file
access in a single directory.
This redirection is done by a ROM bypass.
With 'TAPE_BYPASS=YES' you enable the ROM bypass of the tape vectors.
If CPCEMU finds a known ROM from a CPC 464/664/6128, the ROM is
modified accordingly.
The bypass is necessary if you want to use the cassette.
Some special instructions are implemented in the Z80 emulation.
They call special functions only supplied by the emulator.
They are entered directly in ROM, so it is still possible to
patch the RAM vectors.
The following instructions are available:
ED FC xx USER &BCxx (only valid for some RAM vectors)
Similar to a call instruction to an internal function.
The following values for xx are legal:
65 : CASSETTE INIT (BC65)
77 : CASSETTE IN OPEN (BC77)
7A : CASSETTE IN CLOSE
7D : CASSETTE IN ABANDON
80 : CASSETTE IN CHAR
83 : CASSETTE IN DIRECT
86 : CASSETTE RETURN
89 : CASSETTE TEST EOF
8C : CASSETTE OUT OPEN
8F : CASSETTE OUT CLOSE
92 : CASSETTE OUT ABANDON
95 : CASSETTE OUT CHAR
98 : CASSETTE OUT DIRECT
9B : CASSETTE CATALOG
In addition to that, you can use the user break instruction
ED FC FC USER &BCFC. It stops the emulation at once.
7.5.2 AMSDOS ROM modifications
-------------------------------
- With 'DISABLE_ADOS=YES' you forbid the initialization of the AMSDOS.
Then patching of tape vectors by the AMSDOS ROM is disabled.
(So the tape vectors are still pointing to tape, although
the AMSDOS ROM is initialized.)
This is necessary if you want continue loading from tape
after a disc-reset, but without giving the '|TAPE' command
first.
(It is done by 'poke &CCF2,&18: poke &CCF3,&05' in the
AMSDOS ROM.)
Sector instructions are not affected, they always address the
disk.
- 'DISC_SPEEDUP=YES' enables a AMSDOS ROM modification, which
minimizes the motor waiting times to render a faster disc
access.
(The things are managed by DOS, so we do not need the delay loops.)
The following bytes are modified in the AMSDOS ROM:
poke &C5D4,&01 :'motor load time
poke &C5D8,&01 :'format track time
poke &C5D9,&01 :'short wait
poke &C5DA,&01 :'short wait
poke &C602,&01 :'only 1 retry on error
poke &C784,&01 :'fast seek
poke &C7E2,&01 :'fast seek
7.6 Miscellaneous
==================
7.6.1 Another time: The Configuration file
-------------------------------------------
You maybe remember that comments start with a semicolon ';',
and can start anywhere on a line. The rest of the line is ignored.
Blanks, tabs, newlines and ';' are delimiters, and it does not
matter how many you use.
Many of the definitions have the syntactical form
<key-word> '=' <value> {T}
{T} is a sequence of at least one delimiter.
Example:
'ROM_PATH = .\ROM'
If you do not want to (re-)define a key-word, make a comment
out of it by inserting a ';' in front of it; you are not allowed
to use 'ROM_PATH = <nothing>' .
<number> can be given decimal, hexadecimal (with 0x) or binary (%).
<pathname> may have a length of up to 80 characters and
<filename> up to 20 characters.
Some supplementary information to selected key-words:
PIO_PORT_B = <number> (%00111110)
Sets the input value to appear at port B of the PIO.
You can disable the printer or select another company name.
By changing this value to %00111010 (0x3A), you get "Schneider"
instead of "Amstrad" (0x3E) on the opening screen.
Meaning of the bits:
b7 = 0 (TTL signal from tape; not used)
b6 = 0 (0 = printer ready, 1 = busy)
b5 = 1 (EXP signal)
b4 = 1 (1 = VSYNC with 50 Hertz or 0 = with 60 Hertz;
not used in the emulator)
b3,b2,b1 = 111
select company:
Isp (000), Triumph(001), Saisho(010), Solavox(011),
Awa(100), Schneider(101), Orion(110), Amstrad(111)
b0 = 0 (VSYNC: set automatically by the emulator.)
BREAK_MASK = <number> (0xffff)
For debugging purpose only.
Some events interrupt the normal emulation. With this flag,
you can disable such events. Use with caution!
Leave all bits on except those for such events you do not want
to occur.
b2 = 0 -> disable display of port errors (use 0xfffb)
b3 = 0 -> disable function keys (so the emulation runs forever!)
(use 0xfff7)
The meaning of the bits can change in future!
7.6.2 The parallel Adapter
---------------------------
First, the construction of the adapter, now with functional description:
PC D-SUB Cent. CPC Function
-------------------------------- ---------------------------
GND 19 ---- 19 GND GND
BUSY 11 <--- 1 -STROBE Synchro (Data available)
-ACK 10 <--- 8 D6 |
PE 12 <--- 7 D5 | Data
SELECT 13 <--- 6 D4 |
-ERROR 15 <--- 5 D3 |
D0 2 ---> 11 BUSY Synchro (Ready to receive)
Direction CPC->PC
-----------------
Normally the adapter is designed for this direction only.
Sending on a CPC is on principle the same as printing on a line printer.
If the PC sets Not-BUSY, the CPC writes a nibble (4 bit of a byte)
to the port, sets STROBE as sign that the data is there, and clears it
afterwards. So the PC only needs to clear BUSY (with D0), wait for
STROBE (his BUSY line) and take the nibble (from the input-lines
printer->PC), and set BUSY.
Question: Why not sending 8 bits parallel?
Answer:
1. The PC printer port must be reprogrammed for input and I am not
sure if that is possible on all PCs and
2. The CPC has a 7 bit printer port only.
Direction PC->CPC
-----------------
One day I have thought about the possibility of sending data in the
other direction. Unfortunately the CPC has only one single input line
at the printer port, namely the BUSY signal. So it would not improve
the situation if you try to design a better adapter for this
direction. Thus take what you have already and make the best out
of it by developing a clever protocol.
A serial interface has also one data line for each direction, yet.
But: Serial interface synchronize by hardware, mostly by a quartz;
both peers have to use exactly the same baud rate (e.g. 1200 baud).
It is hard to do that with software only.
What should I do ?
The idea is to utilize the speed advantage of the PC over the CPC.
Each byte is split into 8 bit and transmitted serial, the PC has to
set the BUSY line accordingly.
During this 8 bit the CPC gives its maximum speed and the PC has to
conform with it. The CPC writes a "bit request" with one assembler
instruction. Now the PC must react promptly by setting the BUSY line
accordingly the next bit. Since with the following-but-one (?)
instruction the CPC will read it.
In order to not disable the interrupts during the whole transfer,
for every byte a "connection" is established.
The CPC says "Hey, send something to me!", and the PC answers
"Ok, I'm waiting until you want it." by toggling the BUSY-line.
The whole story is protected with timer, so no peer can hang when
waiting on a signal never sent.
Thus you can escape the programs with <ESC> or <CRTC>+<BREAK>
any time.
7.6.3 CPCTRANS
---------------
Another option not mentioned is "/d 0" or "/d 1". With 1 a special
double-step mode is selected, on 80 track drives every second track
is skipped when working with 40 track disks.
This option should be unnecessary, because CPCTRANS switches
automatically to double-step when detecting a 5.25" 360 KB disk.
Normally it is very simple to read or write sectors by using the BIOS.
But the BIOS cannot handle B-sides of disks with head-mark=0.
So I had to program the FDC functions myself, with the aid of
the MINIX source as an outline. Unfortunately the MINIX source contains
some errors, and the timing in critical sections was done by
simple delay loops possibly outlined for a 8086 processor.
7.7 Structure of selected CPCEMU files
=======================================
7.7.1 Disc Images
------------------
Disc image files consist of a 0x100-byte disc info block and
for each track a 0x100-byte track info block, followed by the
data for every sector in that track.
The Disc Information block
--------------------------
Byte (hex): Meaning:
00 - 21 MV - CPCEMU Disk-File\r\nDisk-Info\r\n
("MV - CPC" is characteristic)
22 - 2F unused (0)
30 number of tracks (40, 42, maybe 80)
31 number of heads (1 or 2)
32 - 33 size of one track (including 0x100-byte track info)
With 9 sectors * 0x200 bytes + 0x100 byte track
info = 0x1300.
34 - FF unused (0)
The Track Information block (for every track)
---------------------------------------------
Byte (hex): Meaning:
00 - 0C Track-Info\r\n
0D - 0F unused (0)
10 track number (0 to number of tracks-1)
11 head number (0 or 1)
12 - 13 unused (0)
Format track parameters:
14 BPS (bytes per sector) (2 for 0x200 bytes)
15 SPT (sectors per track) (9, at the most 18)
16 GAP#3 format (gap for formatting; 0x4E)
17 Filling byte (filling byte for formatting; 0xE5)
Sector info (for every sector at a time):
18+i track number \
19+i head number | sector ID information
1A+i Sector number |
1B+i BPS /
1C+i state 1 error code (0)
1D+i State 2 error code (0)
1E+i , 1F+i unused (0)
Annotations:
The sector data must follow the track information block
in the order of the sector IDs. No track or sector may be
omitted. With double sided formats, the tracks are alternating,
e.g. track 0 head 0, track 0 head 1, track 1 ...
Use CPCTRANS to copy CPC discs into this format.
7.7.2 Snapshot Files
---------------------
Snapshot files consist of a 0x100-byte header and a memory dump.
The Snapshot header:
Byte (hex): Meaning:
00 - 07 'MV - SNA' (as characteristic)
08 - 0F unused (0)
10 snapshot version (2, former 1)
11 - 1A Z80 register AF, BC, DE, HL, R, I
1B - 1C Z80 flags IFF0, IFF1 (0=disabled, 1=enabled)
1D - 24 Z80 register IX, IY, SP, PC
25 Z80 interrupt mode IMD (0 - 2)
26 - 2D Z80 register AF', BC', DE', HL'
2E Gate Array: ink number register
2F - 3F Gate Array: ink value register (0, 1, ..., 15, 16)
40 Gate Array: multi configuration register
41 Gate Array: RAM configuration register
42 CRTC: address register
43 - 54 CRTC: data register (0, 1, ..., 17)
55 Upper ROM number
56 - 59 PIO: port A, port B, port C, control port
5A PSG: address register
5B - 6A PSG: data register (0, 1, ..., 15)
6B - 6C memory dump size (64K or 128K)
(the following parameter exist only from version 2.0:)
6D CPC type where the snapshot was generated
(0=CPC 464, 1=CPC 664, 2=CPC 6128, 3 = unknown)
6E interrupt number (0..5), the latest interrupt
during a screen update cycle.
6F - 74 6 multimode bytes, thus screen modes (0..2)
for the interrupts 0..5.
75 - FF unused (0), maybe later for emulator configuration
7.7.3 AMSDOS Header
--------------------
Byte (hex): Meaning:
00 user number (0 , possible values 0-15)
01 - 0F filename+extension (possibly filled with 0)
10 block number (0)
11 last block flag (0)
12 file type (0=basic, 1=protected basic, 2=binary,...)
13 - 14 length of block (0)
15 - 16 load address (0-FFFF)
17 first block flag (0)
18 - 19 logical length (0-FFFF)
1A - 1B entry address (0-FFFF)
1C - 3F free for the user (0)
40 - 42 real length of file (1-FFFFFF)
43 - 44 checksum of bytes 00-42
45 - 7F unused (random values from sector buffer)
Annotation:
A header is found at the beginning of every non-ASCII file. It
is identified by calculating the checksum.
Bytes 00-3F originate from the "cassette area", where files
were divided up into blocks.
The bytes 12, 15-16, 1A-1B, 40-42, 43-44 are necessary.
7.8 Internal History
=====================
Z80EMU (only a Z80 with less CPC)
---------------------------------
- v1.0 (1991)
first version in Pascal (only Z80 emulation)
- v1.2 (12.8.1992 - 16.8.1992)
first version in C (translated with TPTC)
Z80 problems: ADD HL..., DAA, LDIR set the P-flag incorrectly. BIT...
set the Z-flag incorrectly, rotate instructions set the Z-flag and S-flag
incorrectly; possible to use ROMs now.
- v1.3 (18.8.1992)
wrong port addressing: low byte incorrect. New memory management with
128 KB RAM, 32 KB ROM
- v2.0 (18.8.1992 - 22.8.1992)
implemented COCPU technique to find errors (the COCPU uses separate
memory and is only active in a special debugging mode). Z80 problems:
AND... set H-flag incorrectly, CPI... set N-flag incorrectly. Former, the
screen was only black and white, now it is blue and yellow as you know
from a real CPC.
- v2.1 (25.8.1992 - 27.8.1992)
Emulation of all pens, colours in all modes. Writing only to the active
screen which you can see. COCPU found an error: all instructions
containing (IX+zz) with a negative distance were wrong ! Forgotten to
take "signed char".
- v2.2 (30.8.1992 - 3.9.1992)
New keyboard routine, set palette without flickering (waiting for HSYNC).
"Need-ROM" with COPYMATE introduced.
- v2.3 (15.9.1992 - 19.9.1992)
FDC emulation for sector load/save. COCPU found an error: LD XH,... was
LD H,...
- v2.3b (19.9.1992)
Do screen update only if the screen is on RAM blocks 0..3 (and not 4..7);
Made port FCxx an alias for FBxx (for CP/M Plus). At that time, I did not
know that OUTI... predecrement the B-register.
- v2.4 test (25.10.1992)
Only R-register emulation if desired (per "DEFINE"); Now screen update
every nth interrupt and not for every single byte written in memory.
(Still very slow, because all is done in C). New memory management with
blocks aligned to segments.
- v2.5 test (31.10.1992)
Changed memory management. Hardware scrolling and different screen sizes
possible.
- v2.6 test (5.11.1992)
New keyboard handler from Arnt Gulbrandsen: all key combinations
possible. Screen update in assembler.
- v2.7 test
Unsuccessfully tried to include the fast Z80 emulation from Juergen
Weber.
- v2.8
Improved Screen update: Only changed parts are modified on the screen.
- v2.9
Using PC Timer to generate interrupts with 300 Hertz. Fast emulation runs
only, if no ROM (banking) is needed.
CPCEMU (now a CPC)
------------------
- v0.2 (23.12.1992), following Z80EMU v2.9
After nearly 4 hours analyzing with the Turbo Debugger I have found the
error hanging the fast emulation: PUSH ES instead of PUSH DS.
- v0.3 (28.12.1992 - 29.12.1992)
Set N-flag for INI,OUTI. CPI in fast Z80 set wrong flags. RL (HL) used
read segment (in DS) instead of write segment (in ES). LD A,R now
produces random-numbers; All Tape routines implemented (but wrong
CASSETTE IN CHAR).
- v0.4 (1.1.1993)
IN A,(n): A to b8..b15 (instead of B); RAM configuration 0xC3: corrected
to 0,3,2,7 (for CP/M Plus). KC-Compact (a CPC compatible from former DDR)
uses port EE00 - EE3D, but for what ?
- v0.5 (28.1.1993 - 8.2.1993)
INIR,... R-register-incrementation depends on B, not on BC. CASSETTE IN
CHAR corrected (wrong patch for CPC 6128).
- v0.6 (23.3.1993 - 24.5.1993)
Someone mentioned that the OUTI-instructions predecrement the B-register!
Compiling the C parts in 386 code (with Borland C++ v3.1). Disk images
have the suffix .DSK. CPCREAD.PAS corrected (head not initialized with 0)
and translated to CPCREAD.C. Port addressing of the PIO improved (the CPU
can read, even if the port is programmed for output, ...)
- v0.7 (26.7.1993 - 29.8.1993) (unreleased)
Totally new source, modularized, ... Configuration file, more ROMs
possible. Changed company name from 'Schneider' to 'Amstrad'. (You can
choose between several names.) RAM banking error removed. New
documentation in German.
- v0.8 (30.8.1993 - 9.9.1993)
Slow emulation: parity instructions improved by using a table not only
for parity. Z80: ED xx with illegal xx is ignored. New documentation in
English.
- v0.8a (10.9.1993 - 15.9.1993)
Fatal error in fast emulation: If an DD CB xx instruction is executed and
an interrupt occurs, the instruction is ignored!
- v0.8b (16.9.1993 - 21.9.1993)
Implemented a "real" VSYNC, if VSYNC_CT = 0. Corrected PIO port A
problem: OUT &F400,xx with Port A in input mode was ignored. New joystick
routine from Martin Zacho.
- v0.8c (22.9.1993 - 13.12.1993)
Checked documentation with "ispell". Emulation did not start, if
"USE_JOYSTICK=YES" and a joystick was not present (PUSH AX at wrong
position). Slow Emulation: DAA corrected (brackets were missing since
v0.8). Wrong patch for CPC 664 in interrupt routine. This patch replaced
EI with NOP do avoid the problem with EI (enable interrupts one
instruction later). Now correct for all CPCs.
- v0.8d (14.12.1993 - 29.12.1993)
FDC emulation rewritten for double sided formats. CPCTRANS replaces the
old CPCREAD and allows you to read Vortex-disks after you have installed
the patch 720KB.COM. Beside that, you can write disk images back to disk.
New fileselect when pressing F3. Some port address aliases introduced,
e.g. &7000 - &7f00 to address the gate array, &0c00,&1c00,&2c00,&3c00,
&bc00 for the CRTC. Emulation of the R-register enabled.
- v0.9 alpha (30.12.1993 - 20.1.1994)
EMS memory possible with a special EMS/UMB-configuration. Binary digits
in the configuration file. RAM-banking addressing corrected: emulator
accepted &d0-&ff as &c0-&c7. Now up to 576 KB RAM with EMS.
- v0.9b (21.1.1994 - 31.1.1994)
Usage of EMS simplified by extended EMS (or LIM EMS 4.0) with more than
4 physical EMS pages. File-select added to 'l' (debug menu), RUN" .
- v0.9c (1.2.1994 - 29.4.1994)
Some awful PC speaker sound (disable it with F4). File select also with
'v'; this English documentation corrected; Soundblaster sound (can be
improved); new CPCTRANS with command line parameters, direct FDC access;
parallel adapter tested and the software improved. Fast Z80: INC (HL),
DEC (HL), INC (IX+n), DEC (IX+n) for RAM below ROM corrected. PgUp,PgDn
move oversized screens; parts of overscan screens are displayed.
Now possible: 64K snapshots.
- v0.9d (30.4.1994 - 12.5.1994)
Interrupts during DI are not forgotten, and they are not enabled directly
after an EI instruction any more. New color functions: now without snow
under OS/2. Fast Z80: speed up code fetch.
- v1.0 (13.5.1994 - 20.5.1994)
Improved screen part: different character sizes from 1 to 8. File select
added to SAVE" , added fast select by pressing a letter. Improved
CPCTRANS with a verify option. A new setup menu, if you press F7. So you
can disable colour flickering.
- v1.0a (21.5.1994 - 9.6.1994)
Improved setup menu with direct input or cursor keys, added German
keyboard layout, added simple delay option. Correct display of smaller
screen sizes (without parts of the bigger ones). Improved fast Z80 part:
faster RRA,RLA, ... faster CB xx instructions. Added more illegal
instructions (ED xx). LD D,XH and LD YL,YH were missing ! Corrected CPDR,
CPIR with BC=0 (0 means 65536 on a Z80, but it is 0 for the 80x86 REPE
prefix!). DAA flags corrected. New software for the parallel adapter:
Now it is possible to send to the CPC. Thanks to Bernd Schmidt for
pointing out that an interrupt increments the R-register by 1. With his
help, the PIO port C register emulation has been improved.
- v1.1a (10.6.1994 - )
A new era of CPCEMU has arisen: Amstrad has allowed the use of the ROMs!
Changing in the configuration file: ROM_BLOCKS -> ROM_BLOCK, DISC_BYPASS
-> DISABLE_ADOS, no space separating '=' needed, Changings in sound part,
graphics part: vertical size by VGA-CRTC. Joystick calibration is in the
setup menu now, tape routines for saving are improved. FDC part improved:
now you can use COPYMATE. Insert non-data format disks without read error
(without a seek to track 0). Another delay in CPCTRANS, I hope, you will
not need the turbo switch any more; formatting of disk images. Corrected
PIO port C another time: it is cleared after out &7f00,n. Major changes
in the configuration file: Now with conditional configuration (#IFCPC,
#ENDIF). Some tokens changed (VSYNC_CT -> /, DISC_PATH -> /, SNAP_PATH ->
SNAPSHOT, DRV_A -> DRIVE_A, DRV_B -> DRIVE_B). Load programs from inside
ZIP archives. You will need PKUNZIP.
- v1.1b (17.8.1994 - 2.9.1994)
Multimodes introduced, that means different screen modes on the same
screen. The screen update is partitioned in up to 6 areas, each one is
updated when an interrupt occurs. (Can be improved.) Possible now: 128K
Snapshots, extended for multimodes. CPCPARA improved: Now you can
transfer binary files with header. CPC 6128 Plus detection included.
More port aliases included.
- v1.2 (3.9.1994 - )
This version will be released. Mainly there are some changes with
the help menu.
CPCEMU is written in C and Assembler, using Borland C 3.1 with 386
optimization and Turbo Assembler. For Debugging the Turbo Debugger
was used.
The colours were composed with the program VGAMETER by J. Stephen
Shattuck, Jr., with the CPC connected to a Scart-TV.
------------------------------------------------------------------------
(From this point you can continue reading without danger.)
Appendix
≡≡≡≡≡≡≡≡
A.1 Glossary
≡≡≡≡≡≡≡≡≡≡≡≡≡
Here some computer terms are explained. I do not lay claim to give complete
or precise definitions. The terms are described with the view to the CPC.
References are marked with "»".
386/33 (AT 386/33)
Short term for »PC AT with 80386 processor, clocked with 33 MHz.
Because of the "high" clock rate it should be a
386DX with a real 32 bit data bus, not the cheap 386SX with a 16 bit
data bus.
AMSDOS (Amstrad DOS)
»DOS developed by »Amstrad, for the »CPC computers.
Amstrad
British computer manufacturer, who has designed the »CPCs.
Archive
Storage of files.
Or: One file, including several other.
In »ZIP archives the files are compressed before including them.
ASCII (Abbreviation for: American Standard Code of Information Interchange)
On a computer all characters, numerals are represented internal as numbers.
Most computers use ASCII, with the letter "A" coded as 65.
»PC and »CPC also use ASCII. In »Locomotive-BASIC you can save an
ASCII file by typing 'SAVE"<filename>",A'.
Basis Address
This you have to specify in many »setups, if you own a soundcard.
CPCEMU looks for a »environment variable.
BASIC (Abbreviation for: beginners all purpose symbolic instruction code)
Wide used easy to learn programming language for home- and
personal computer. Former every computer had had his own BASIC dialect.
Modern BASIC allows structured programming, so you are not forced to
program "spaghetti code" any more.
Also the »CPCs have its own BASIC, the Locomotive BASIC by a company
of the same name.
Batch File
Contains instructions you normally type in your computer.
If you call such a file, the instructions are executed one by one,
even if you input them.
BASIC File
See »File.
BBS
Binary File
See »File.
BLASTER environment variable
See »environment variable.
C64:
Home computer by the company Commodore with 64 KB »RAM, very popular.
Caused by the huge software supply it was "the game computer" for many
years. Later it was pushed away from the Commodore AMIGA, but despite
its old technique it could hold longer.
Clock frequency
Clock the processor is connected to. It determines the speed of the
processor in a significant way. Today's 486DX2/66 processors are clocked
internally with 66 MHz.
The Z80A in the »CPC is clocked with 4 MHz, running actual with 3.3 MHz
because he has to wait periodically for the screen update.
Command line parameter
Parameter you give in the command line after the file you want to call.
Configuration
Here: Configure a program for his own needs.
you can do that with the »Setup or a configuration file.
CPC (Abbreviation for: Colour Personal Computer)
"Personal Computer", developed by the company »Amstrad, was available
in different types. Please read the introduction again.
CPC printer port
Centronics interface at the »CPC to connect a printer.
Unfortunately the CPC designers were too economic: It has only 7 bit.
With a short wire it was possible to extend it to 8. For this the
cassette port was "misused", not needed when printing.
CPC firmware manual
A book about the »CPC, especially describing the operating system
interface of the CPC.
CPC newsgroup
A newsgroup only for the »CPC. It is called "comp.os.amstrad.8bit"
and was created in august 1994.
CP/M Plus (Abbreviation for: control program for microcomputers)
Operating system from the company Digital Research, mainly for 8 bit
microcomputer. Widely used until IBM decided to use MS-DOS for its PCs.
CP/M Plus (CP/M 3.0) was the successor of CP/M 2.2 and was included
in the software package of the »CPC 6128.
CTRL/SHIFT/ESC (control/shift/escape)
"Three finger combination" on a »CPC to cause a reset. It is similar to
the reset combination 'CTRL/ALT/Del' on a PC. Some programs block
such a reset so you have to turn off the computer or use the reset
button. The CPCs had no button, but it was easy to build one.
In CPCEMU the function key F8 is the reset button.
Cursor
Character on the screen which shows you the current writing position.
Somewhere on the keyboard there are cursor keys to move the cursor
around.
D-Sub
Connectors with a special form.
Dk'tronics
British company offered hardware extensions for the »CPC, e.g.
memory extensions.
DMA (Abbreviation for: Direct Memory Access)
Direct access to the computer memory without using the processor.
Used with disk drives, but to be cheap not in the CPC.
The Soundblaster card can also use a DMA channel, getting digital
sound data "through" it.
DOS (Abbreviation for: disk operating system)
Disk oriented operating system, e.g. AMSDOS, DRDOS, MS-DOS.
Today it is a synonym for MS-DOS.
DOS Search Path
DOS uses a path along subdirectories to find a file.
It is set with the environment variable 'PATH'.
DRDOS
MS-DOS compatible »DOS by the company Digital Research.
E-Mail (Abbreviation for: Electronic Mail)
Using a computer as mail-box.
EMM (Abbreviation for: Expanded Memory Manager)
Similar to »EMS.
EMS (Abbreviation for: Expanded Memory System)
Memory extension for the »PC, to get around the 640KB memory limit.
With the banking technique, other memory pages are mapped in a
EMS window.
EMS was developed by Lotus Intel Microsoft , thus it is
called LIM-EMS.
There are hardware-, emulated and simulated EMS.
Special memory cards supply hardware EMS, mainly used on old PC XT.
On a PC AT with at least a 80386 processor it is possible to have
emulated EMS by using the paging mechanism for banking.
This sort is supplied by EMM386.EXE and should used to speed up CPCEMU.
Simulated EMS is too slow, it has to copy the memory pages.
Emulate
Imitate a system (hard- or software) by another one.
The imitating system computes the same results on the same data as
the imitated system.
CPCEMU emulates a »CPC on a »PC.
Emulator
The system »emulating another one.
File
Collection of data belonging together. On the »CPC there are files of
different types, e.g BASIC files with BASIC programs having usually the
extension '.BAS', ASCII files with any text and binary files with any
bytes, having usually the extension '.BIN'.
Binary files can contain machine programs or other data.
Format definitions
Definitions of disk formats.
FTP (Abbreviation for: File Transfer Protocol)
A protocol to transfer files in computer networks.
Also the program using this protocol is called "FTP".
Hardware
Parts of a computer you can "touch", e.g. periphery like printer,
monitor; internal its the processor and other »hardware chips.
Hardware chips
Components inside the computer, e.g. processor, memory chips, floppy
disk controller, ...
Inside the CPC there are the Z80 processor, the Gate Array, the
CRTC 6845 for addressing the screen memory, the PIO 8255 for input/output,
the sound chip PSG AY 3-8912, the floppy disk controller FDC 765, ...
Hardware scrolling
Moving the screen without having the processor to copy from one part
to another. The processor has to modify only the screen base address,
the rest is done by a hardware chip.
Initialize
Fill the memory with special values, so variables are defined.
Interface
Connection of a computer to its periphery or from one program to another.
Thus there are hard- and software interfaces.
The so-called Centronics interface is a parallel interface, transmitting
the bits of a byte parallel. With serial interfaces it is necessary to
transfer the bits one after another.
Internet
A Internet is composed of several sub-networks of computers.
Here: *The* Internet, a worldwide computer network for communication.
Interrupt
If the processor gets a signal with higher priority, it interrupts
the running program and calls a special interrupt handler.
When finished he continues with the interrupted program. On a PC
there are different interrupt signals, e.g. when you press a key,
when a timer runs off, when data from the serial interface has arrived
(e.g. when you move the mouse), when the soundcard just played its
last sample and needs more data, ...
The Z80 in the CPC is interrupted 300 times a second.
Interrupt number IRQ (IRQ=Abbreviation for: Interrupt Request)
On a PC, different »interrupts have different numbers.
For example, the keyboard interrupt has number 9, the timer interrupt
has number 8. If you press a key, the keyboard sends an interrupt
request to the processor, so it is informed.
Jumper box
A adapter box to realize any connection between two connectors by
using short wires which must be soldered.
See also »Wiring Box.
Keyboard handler
A program called when the keyboard generates an »interrupt. The handler
gets the number of the key which is pressed or released.
LIM standard (Abbreviation for: Lotus Intel Microsoft)
Memory expansion (»EMS), developed by Lotus, Intel and Microsoft.
Locomotive
British company which wrote the »BASIC of the »CPCs.
Mailing list
A service from me, for which I add your email address to a list.
So you will be informed about news concerning CPCEMU.
Microchannel
Special bus architecture.
MS-DOS (Abbreviation for: Microsoft Disk Operating System)
Operating system, developed by the company Microsoft for 16 bit
processors (8086). The most popular operating system for the PC.
Still in use on the 32 bit processors 80386 and 80486.
Multi Modes
Programming technique to have different screen modes simultaneously
on the screen. The screen mode is changed during a screen refresh more
than one time. On the CPC you get zones with high resolution, few
colours and low resolution, many colours.
Multiface II (Abbreviation for: Multipurpose Interface)
A hardware extension for the CPC. Allows to interrupt any program at any
time to analyze or save it.
Developed by the British company Romantic Robot.
Number representations
Depending on the selected base, there are different representations
for the same number.
Well known is the decimal representation with basis 10 and digits 0 to 9.
Computer use the binary representation (base 2) with digits 0 and 1.
Programmers like the hexadecimal representation with base 16, because
16 is a power of 2 (2 powered with 4). Then the representations can
be easily computed into each other. Besides a byte needs only 2 digits
(0 to 9, A to F) in the hexadecimal notation.
OS (Abbreviation for: Operating System)
A program needed to use the computer. It provides basic functions to
application software. New operating systems do complicated tasks like
program scheduling in multitasking systems, ...
OS/2 DOS box
A window under the 32 bit operating system OS/2 by IBM, where you
can run DOS programs. The so-called DOS compatibility box.
Overscan
The border surrounding the writable area on the screen.
On a PC it is very small but you can change its colour, e.g. in CPCEMU
with 'BORDER 10'. On the CPC the overscan is much wider, so
programmers have looked for possibilities to write to it. With a
programming trick it is possible to write to the whole screen.
This programming technique is called overscan.
Parameter
Variable with a fixed meaning, the behaviour of the program relies on it.
PC (Abbreviation for: Personal Computer)
Computer with a microprocessor as processor (or CPU=central processing
unit). Today a synonym for the IBM PC with 8086 or 8088 processor.
PC AT (advanced technology) are computers with a 80286, 80386 or 80486
processor.
PEEKs and POKEs:
»BASIC instructions to modify the memory directly.
'PEEK(<address>)' is used to read a byte from memory,
'POKE <address>,<number>' modifies the memory. Programs with many PEEKs
and POKEs are hardly to understand, but sometimes it is necessary to
break through the limits BASIC has, especially if the BASIC has few
instructions.
PKUNZIP
Program by PK-Software to decompress »ZIP files.
RAM (Abbreviation for: Random Access Memory).
Memory chip. Memory of the computer.
The CPCs have 64KB RAM (kilo bytes) or 128KB. With hardware extensions
they could have up to 576KB RAM.
ROM (Abbreviation for: read-only-memory).
Memory chip. Memory that can only be read but not changed.
It is available directly after switching on the computer.
The CPCs have 16KB ROM »OS, 16KB ROM »BASIC and 16KB ROM for the AMSDOS.
ROM Image
File with the contents of a »ROM. IF you read out a ROM and write the
bytes into a file you will get a ROM image.
RS-232
Serial Interface to connect monitors or printers to the computer.
(RS 232 C).
Schneider
German company, which sold the CPCs in Germany.
Screen mode
Setup
Changing »parameters of a program, so if behaves differently.
You can tell the setup, if you have a soundcard, if you want to use
a joystick, ...
SIMTEL
A big software archive in the USA.
The SimTel Software Repository is maintained by Coast to Coast
Telecommunications, Inc. (CCT) on its host computer on the Internet
located at "SimTel.Coast.NET". This archieve is mirrored (copied)
to other sides. One mirror site is Oakland University located at
"OAK.Oakland.Edu".
Snapshots
A memory dump completed by internal states of the »hardware chips.
It contains a complete momentary state description of the computer.
If the snapshot is reloaded, the computer is set back to the state
described in the snapshot.
Thus it is similar to a real snapshot, only inside the computer.
Software
Programs of a computer system.
Soundblaster
Soundcard of the company Creative Labs.
Spectrum
The Sinclair Spectrum is a home computer developed by the company Sinclair.
Turbo Pascal compiler
Pascal is a higher programming language which allows structured
programming, today used in many schools.
If one talks about Pascal, he means mostly Turbo Pascal, even if this
is only an extended Pascal by the company Borland. The Turbo Pascal
compiler is particular fast because it compiles the program
in one pass.
Utility
Useful program.
VGA (Abbreviation for: Video Graphics Array)
Graphics standard on the PC. Successor of CGA (Colour Graphics
Adapter), MCGA (Multi Colour Graphics Adapter) and EGA (Enhanced
Graphics Adapter). Extended to SVGA (Super VGA) with higher resolution.
VGA-BIOS (Abbreviation for: VGA Basic Input Output Operating System)
The operation system for the »VGA graphics card.
Windows
Something you can put on »DOS.
Wiring box
A adapter to realize any connection between two connectors by
using short wires. In comparison to the »jumper box the wires
need not be soldered.
Z80
A 8 bit processor developed by the company Zilog. It is upwards compatible
to Intel's 8080 and was very popular.
In the »CPC there is the Z80A which is clocked with 4 MHz.
Z80 instructions
Machine instructions which the »Z80 understands.
They are only number columns, to remember them more easily, mnemonics
were introduced, which are translated by an assembler into binary code.
The instruction "LD A,B" loads register A with the contents of register B
and is the same as the binary code 0x78.
ZIP
A special process to compress files.
The »archives have the extension "ZIP".
A.2 Bibliography
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
The CPC manual is indispensable for CPC beginners:
- Spital Ivor und Perry, Roland und Poel, William und Lawson,Cliff:
CPC 6128 Benutzerhandbuch, Schneider Computer Division 1985,
Originalausgabe (c) 1985 (in meinem Exemplar steht übrigens 1895)
by AMSOFT, AMSTRAD Consumer Electronics plc and Locomotive
software Ltd.
An excellent commented ROM listing, with starting chapters dealing
especially with the software side of the CPC:
- Janneck, Jörn W. und Mossakowski,Till: ROM-Listing CPC 464/664/6128,
Markt & Technik Verlag 1986
On the contrary: unkind composed, rarely commented, dealing more with
the hardware side:
- Brückmann, Englisch, Gertis: CPC 464 Intern mit kommentiertem
ROM-Listing, Data Becker 1985
Good to learn C, with many exercises:
- Kellay, Al and Pohl, Ira: A Book on C, Second Edition, 1990 by
Benjamin/Cummings Publishing Company, Inc.
Hints, how to write an understandable and good manual, gives:
- Boedicker, Dagmar: Handbuch-Knigge, Software Handbücher schreiben
und beurteilen. Wissenschaftsverlag 1990
A.3 Index
≡≡≡≡≡≡≡≡≡≡
The numbers behind the entries show you the chapter where they are described.
(not complete)
#ENDIF 4.2
#IFCPC 4.2
22DISK 5.1.2
Adapter, parallel 5.2
AMSDOS_DI 4.2
AMSDOS_SPDUP 4.2
BLASTER Environment 2.3.2
BREAK_MASK 4.2
Cassette 3.2.2
COLOUR 4.2
Configuration file 4.2
CPC 1.3
CPC Newsgroup 6.2
CPCEMU.CFG 4.2
CPCPARA.BAS 5.2
CPCREC.BAS 5.2
CPCTRANS.EXE 5.1.1
Debug Menu 7.3
DELAY 4.2
Disk 3.2.1
Disk Image 3.2.1
DRIVE_A 4.2
DRIVE_B 4.2
EMS_EI 4.2
EMS Memory 2.3.1
Function key 3.1
INT_FREQ 4.2
INT_RESUME 4.2
JOY_CALIBRATE 4.2
KBD_LANGUAGE 4.2
Keyboard 3.1
Menus 3.2.1
Multi Mode 4.1
MULTIMODE 4.2
PCPARA.EXE 5.2
PIO_PORT_B 4.2
PRINTER 4.2
RAM_SIZE 4.2
ROM_BLOCK 4.2
ROM_PATH 4.2
SBLASTER 4.2
SB_DELAY 4.2
Setup menu 4.1
SHOW_CONFIG 4.2
SNAPSHOT 4.2
Snapshot 3.2.3
SOUND 4.2
Soundblaster 2.3.2
TAPE_BYPASS 4.2
TAPE_PATH 4.2
TMP_PATH 4.2
VSYNC Bit 4.1
------------------------------------------------------------------------------
logout
------