JOYCE v2.0.2
John Elliott
Abstract
JOYCE is an Amstrad PCW emulator for UNIX and Windows. It emulates the PCW 8000, 9000 and 10 series computers, but not the PCW 16.
Table of Contents
Introduction
Copyright
What JOYCE does
What's new?
Concepts
Compiling JOYCE
Known bugs
Missing Features
Internet resources
Setting Up
Directory organisation
Under Windows
Under Unix
Running JOYCE for the first time
You will need:
The JOYCE command
Adding boot discs
After copying boot discs
Reading in other discs
What if I haven't got 3.5 start-of-day discs? What if I haven't got start-of-day discs at all? In Use
What is emulated
What is not emulated
How the disc drives are handled
Boot discs (also known as start-of-day discs)
Ejecting a disc
Command-line options
Non-floppy discs
What if the speed is wrong?
If JOYCE is too slow
If JOYCE is too fast
Peripherals in JOYCE
The keyboard
CTRL / ALT key swapping
Delete key swapping
The Mouse
AMX mouse
Kempston mouse
Mouse auto-patch
The disc drives
The JOYCE Menu
The Debug Menu
The Disks menu
The Disc Management menu
The Settings menu
General options
Memory
Disc drives
Extra drives
Matrix printer
Daisywheel printer
CEN port and PAR port
CPS8256
Keyboard
Mouse
Video
Save settings
JOYCE Utilites
CENPORT
DDJOYCE.PRL
DOSDIR
EMULIOS.RSX
EXPORT
IMPORT
JOYCEDRV
PCKEY
- Notes
- QUIT
REDIR
RTC
VGA and VGACOM
XPALETTE
JOYCE utilities (PC hosted)
MD3 discs and Windows NT / 2000 / XP Recent Changes For Unix system administrators Keyboard codes Acknowledgements
Previous versions also owed much to:
Introduction
Copyright
Copyright 1997,2001-2 John Elliott. Parts copyright 1994, 1995 Ian Collier. JOYCE can be distributed freely under the conditions of the GNU General Public License (sic) - see the file COPYING.
What JOYCE does
JOYCE emulates a PCW computer (8000, 9000 or 10 series). Run it, and your Unix or Windows computer becomes a PCW.
What's new?
Since v2.0.1
Bug fix: Newly-created hard drive files are correctly initialised to emptiness, rather than zeroes (Unix) or random data (Windows).
Since v2.0.0
Bug fix: Empty strings in JOYCEHW.XML (eg: "<output></output>") do not cause a crash.
Bug fix: Support for extended DSK files now works properly (thanks to Thierry Jouin for this fix).
Since earlier versions
See section [sec: changes].
<sec: concepts>Concepts
When moving from a PCW to an emulator, the biggest change you have to accustom yourself to is the way that JOYCE handles discs. Real PCWs (except the few with add-on hard drives) use real floppy discs; you use a start-of-day disc to use LocoScript or MicroDesign, a data disc to save your work on, and so on.
It is possible for JOYCE to use real disc drives in the same way that a PCW does. However this is pretty slow and awkward; since the PC's got a hard drive, you might as well use it.
Disc image files
PCW programs can't generally use the PC's hard drive directly. For one thing, it's too big; and for another, it's not in CP/M format([footnote] If you do happen to have a CP/M partition on your hard drive, I don't want to know. JOYCE still won't use it.) . Instead, JOYCE creates one or more "disc image files". Each of these is the equivalent of one real PCW disc.
Disc image files have a number of advantages:
They are much faster than real floppy discs.
You don't have to be shuffling a stack of floppies every time you want to use JOYCE.
If you want more discs, you don't have to go to the shop to buy them. You just create more disc image files.
By convention, these have names ending in ".dsk".
So instead of having a "manuscripts"
disc, you would have a disc image file called "manuscripts.dsk".
To normal Unix or Windows software, "manuscripts.dsk"
is just one file, but PCW programs see it as a disc with
any number of PCW files on it.
One consequence of this is that the PCW's "A"
and "B" drives have nothing to do with your PC's
real floppy drives. The emulated PCW can be happily using
a disc in its "B" drive even
if your PC has only one drive.
Converting your PCW discs to disc image files is covered in section [sec: setup].
Compiling JOYCE
If you have downloaded JOYCE as a binary for your platform (eg: the full Windows install, or an RPM), you can skip this section.
To compile JOYCE, you will need:
SDL, the Simple DirectMedia Layer: <http://www.libsdl.org>. You need version 1.0.8 or later.
libxml, the xml parser used by GNOME <http://www.libxml.org/>. JOYCE was tested with version 1.8.9.
libpng, the image library. <http://www.libpng.org/pub/png/>. You need version 1.0.6 or later.
You should be able to compile with the normal ./configure; make; make install sequence.
To cross-compile JOYCE for Windows, you need the XMINGW32 cross-compiler pack from <http://www.libsdl.org>, and MINGW32 versions of the above libraries.
Known bugs
This version of JOYCE contains, or is thought to contain, the following bugs:
Portability. I have no reports of JOYCE compiling on other systems than Linux boxes.
Missing Features
These features were present in JOYCE 1.36 but not in the current JOYCE:
Native GSX emulation using the 800x600 screen.
Built-in debugger.
Internet resources
The latest versions of JOYCE - and any future updates - will be downloadable from <http://www.seasip.demon.co.uk/Unix/Joyce/>.
Announcements of new JOYCE releases, if any, will be made to the newsgroup <news:comp.sys.amstrad.8bit>. It is also on-topic to discuss JOYCE in this newsgroup.
<sec: setup>Setting Up
Directory organisation
Under Windows
JOYCE uses two directories - a "system"
directory common to all users (eg, "C:/Program Files/Joyce/lib"
and a "user" directory (eg: "C:/My Documents/Joyce").
Each of these directories will have subdirectories called
Boot (boot files and boot disc images) and Disks (all other
disc images). In the remainder of this document you will
see directory names which look like "~/Joyce/Boot";
you should take the "~"
to stand for the "My Documents"
directory.
If you don't want JOYCE to put its files in "My
Documents", then you can override it. In JOYCE,
press [f9] for the menu, [f6] for settings, and select "General".
Then enter the new directory name, and press RETURN. You
will need to copy the "Joyce"
directory from "My Documents"
to the new directory you specified.
Under Unix
JOYCE uses two directories - a "system" directory common to all users (by default, /usr/local/share/Joyce - see Appendix [sec: admins]) and a "user" directory for each user (by default, ~/Joyce). Each of these directories will have subdirectories called Boot (boot files and boot disc images) and Disks (all other disc images).
Running JOYCE for the first time
You will need:
A version of JOYCE that installed correctly.
A screen capable of 800x600x256 graphics. JOYCE may well be faster in 256 colour mode than in (say) 16-bit mode.
One of the following:
At least one 3.5" PCW start-of-day
disc;
Disc images of PCW start-of-day discs, that you have previously generated;
A working JOYCE 1.3x installation.
The JOYCE command
Under Windows, JOYCE should be run from the Start Menu. Under
Unix, the command to use is either "xjoyce"
(to run in a window) or "xjoyce
-f" (to run full screen). Other command line options are
given in section [sec: cmdline].
<sec: addboot>Adding boot discs
The first time JOYCE is started, it will detect that no boot
discs have been read in. Unless you want to boot laboriously
from a floppy every time you use JOYCE, you should choose
the "set up boot discs properly"
option.
If you had a previously working JOYCE installation, then this will be detected, and you will be given the option to copy boot discs from it. If you decide not to to this, you will have to provide start-of-day discs or disc image files.
The next menu that appears asks you for the location of the boot disc to use. If you are using real floppies, then select the correct drive (A: or B:). If you are using pre-prepared DSK files, choose the correct file.
If you are copying a MicroDesign program disc with copy protection
(or other similar programs such as Tweak3), you will also
need to click on "Advanced"
at this point and select the "MicroDesign
program disc" option. Note that this will not
work on Windows NT, 2000 or XP; see section [sec: md3nt].
Next select "Continue".
You will be asked for a name to give to this boot disc (eg:
"LocoScript" or "CP/M").
Once you have entered the name, the disc is read in and converted to a JOYCE .DSK file. If you were copying from a real disc, you can put it away when the drive light goes out; JOYCE won't need it again.
You can then repeat for as many boot discs as you like.
After copying boot discs
The JOYCE opening screen will appear, with up to 9 boot discs listed on it. If you read in more than 9, press [f3] to see the others. Choose the disc you want to use, and the black stripes should start to march down the screen.
When you are ready to quit, press [f10].
Reading in other discs
The JOYCE automatic setup routine only covers start-of-day discs. To convert other discs (eg, data discs), press [f9] for the JOYCE menu, then [f2] for the Discs menu, and select "Disc Management". From the menu that appears, choose "Convert floppy to JOYCE DSK file". The rest of the procedure is similar to the one for boot discs, described in section [sec: addboot].
What if I haven't got 3.5" start-of-day discs?
If you have the ability to transfer files to and from your
PCW (by a serial link or LocoLink, for example) and 1Mb
of memory (512k for 8000 series PCWs) then you can use DU54
to make the disc images. Download DU54 from my website,
and use its "Copy" option to
copy from a disc to a file in CPCEMU format. Then transfer
the resulting file to your PC. These files will be bigger
than the floppies they were copied from; so you need a big
RAMdrive to put them in.
Once you have the files on the PC in CPCEMU format, proceed as described in section [sec: addboot], with pre-prepared disc images.
What if I haven't got start-of-day discs at all?
Let me make this clear: I can not supply copies of start-of-day discs. My recommendation would be to buy new ones from SD Microsystems; contact sdmicro@aol.com.
In Use
What is emulated
The Z80.
2MB of memory.
The screen.
The keyboard.
The timer.
The PCW8256/8512/9256/10 dot-matrix printer. Unless you have a printer that isn't supported by the PCW (eg: the HP Deskjet 720C) or you are using software such as LocoScript 1 that doesn't support external printers, I recommend that you use the CPS8256 printer interface instead.
The PCW9512/9512+ daisywheel printer. The same caveats apply as for the dot-matrix printer.
The CPS8256 parallel/serial interface. You can print to a disc file or a UNIX command (eg, "lpr" for direct printer output). Serial ports can be mapped to a file or a device node (eg "/dev/ttyS0" for direct connection to other computers).
A Centronics-only printer interface. You can print to a disc file or a UNIX command (eg, "lpr" for direct printer output). Some CP/M versions cannot detect the Centronics interface; in this case, you should disable it and enable the CPS8256 interface instead.
Most of the floppy disc controller. However, JOYCE has only limited access to the PC's real floppy drive.
The mouse (in AMX or Kempston mode). You will need a three-button mouse to use the AMX mode properly - the Microsoft Intellimouse with the scroll wheel is fine.
The PCW9512 PAR port.
The beeper.
What is not emulated
Two floppy disc controller commands:
READ DELETED DATA
WRITE DELETED DATA
<sec: morediscs>How the disc drives are handled
The basic concept of disc image files was described in section [sec: concepts]. There are several subtleties to be aware of:
Boot discs (also known as start-of-day discs)
When JOYCE is started, both disc drives are normally empty. As soon as you select which system to boot, the disc image you chose (normally named something like ~/Joyce/Boot/boot1.dsk) will be inserted in the PCW's A drive. You can add, remove or rename boot discs using the Disc Management menu (press [f9] for the JOYCE menu, then [f2] (Disc) and choose "Disc Management").
Ejecting a disc
To eject a disc, press [f9] for the JOYCE menu, then [f2] (Disc). If there is a disc in the PCW's A or B drive, you can eject it by selecting the corresponding "eject" option. Remember that ejecting discs from JOYCE's emulated drives doesn't have anything to do with whatever floppy drives are actually fitted to the PC.
<sec: cmdline>Command-line options
To start JOYCE and make it automatically boot from one of the discs on the boot menu, use:
xjoyce -A #n
for example
xjoyce -A #2
will choose option 2 from the boot menu.
If you want JOYCE automatically to run a boot disc file (not necessarily one of the ones on the menu), then use -A with a filename:
xjoyce -A locoscript3.dsk
will load "locoscript3.dsk".
If you want to start with a floppy disc in drive B:, then use the -B command-line option:
xjoyce -B /home/fred/Joyce/Disks/diskb.dsk
JOYCE can also start an EMS/EMT file directly. To do this, use -E:
xjoyce -E /tmp/j14cpm3.ems
You can add a memory-size option to any of the above commands - for example,
xjoyce -A locoscript140.dsk -m 256
will boot from "locoscript140.dsk"
with 256k memory (LocoScript 1.40 malfunctions with the
default 2Mb).
Non-floppy discs
JOYCEDRV.FID gives the emulated PCW a hard drive, and/or direct access to PCW floppy discs. It requires a recent version of CP/M (BIOS 1.8 or later) or LocoScript 2.30 or later. It uses a similar "disc image file" system to the floppy drives, but the image files can be up to 8Mb in size.
REDIR.COM allows you to use one or more Unix directories as CP/M drives. It will run under any version of CP/M. This avoids the problem that the host PC can't see "inside" image files without extra software.
IMPORT.COM and EXPORT.COM will copy single files into or out of the JOYCE environment. They will run under any version of CP/M.
All these utilities are on the file UTILS.DSK. You can get at them with a command something like:
xjoyce -B=/usr/local/lib/Joyce/Disks/utils.dsk
and they will appear on drive B:. REDIR.COM and its companion programs are in Group 1; the others are in Group 0.
What if the speed is wrong?
If JOYCE is too slow
One solution is to increase the CPU speed. Press [f9], then [f6] and select 'General'. Then enter the new speed; since my original PCW had a Sprinter, I prefer to run at 200% speed.
It may also be possible to improve the performance of JOYCE by changing the video refresh frequency. This is normally 12, but it can be reduced to improve performance. If it is reduced to 3.75, for example, then programs that use a mouse pointer may appear a little jerky, but JOYCE should run at its full speed.
To change the video refresh frequency, start JOYCE. At the opening screen, press [f9], then [f6] and select 'Video'. Then enter the new frequency and press RETURN.
If JOYCE is too fast
The built-in speed regulation in JOYCE should stop it running too fast. Possibly you could reduce the overall speed: press [f9], then [f6] and select 'General'. Then enter a new speed.
Peripherals in JOYCE
The keyboard
The PC keyboard is laid out a bit differently from the PCW keyboard. The following keys have non-obvious meanings:
[This is for a UK keyboard with XFree86. Other X servers may behave differently].
+--------------+---------------+-----------------------------------+ | PC key | PCW key | Notes | +--------------+---------------+-----------------------------------+ +--------------+---------------+-----------------------------------+ | ESC | EXIT | | +--------------+---------------+-----------------------------------+ | ` ¬ | STOP | (top left hand corner, under ESC) | +--------------+---------------+-----------------------------------+ | \ | | \frac{1}{2}@ | (down by the left-hand SHIFT) | +--------------+---------------+-----------------------------------+ | ' @ | § < | | +--------------+---------------+-----------------------------------+ | # ~ | # > | | +--------------+---------------+-----------------------------------+ | CTRL | EXTRA | (can use ALT) | +--------------+---------------+-----------------------------------+ | ALT | ALT | (can use CTRL) | +--------------+---------------+-----------------------------------+ | WINDOWS | EXTRA | | +--------------+---------------+-----------------------------------+ | F11 | [+] | (Set) | +--------------+---------------+-----------------------------------+ | F12 | [-] | Clear | +--------------+---------------+-----------------------------------+ | PrintScreen | PTR | | +--------------+---------------+-----------------------------------+ | Keypad * | PTR | | +--------------+---------------+-----------------------------------+ | Keypad - | [-] | Clear | +--------------+---------------+-----------------------------------+ | Keypad + | [+] | Set | +--------------+---------------+-----------------------------------+ | Delete | CAN | (numeric keypad ".") | +--------------+---------------+-----------------------------------+ | Insert | RELAY | (numeric keypad "0") | +--------------+---------------+-----------------------------------+ | End | FIND/EXCH | (numeric keypad "1") | +--------------+---------------+-----------------------------------+ | PageDown | UNIT/PARA | (numeric keypad "3") | +--------------+---------------+-----------------------------------+ | Home | LINE/EOL | (numeric keypad "7") | +--------------+---------------+-----------------------------------+ | PageUp | WORD/CHAR | (numeric keypad "9") | +--------------+---------------+-----------------------------------+ | Insert | CUT | (under PrintScreen) | +--------------+---------------+-----------------------------------+ | Home | COPY | (under ScrollLock) | +--------------+---------------+-----------------------------------+ | PageUp | PASTE | (under Pause/Break) | +--------------+---------------+-----------------------------------+ | Delete | DEL-> | (under Insert) | +--------------+---------------+-----------------------------------+ | End | CAN | (under Home) | +--------------+---------------+-----------------------------------+ | PageDown | DOC/PAGE | (under PageUp) | +--------------+---------------+-----------------------------------+
This is the full keyboard:
If you find these mappings inconvenient, you can use PCKEY (on the Utilities disc) to change keyboard mappings.
The keyboard has two user-configurable settings. To set them, press [f9] in JOYCE; then [f6] for Settings, and choose Keyboard.
<sec: keyswap>CTRL / ALT key swapping
There are two ways the CTRL and ALT keys can be set up. These are:
The PC ALT key is used as the PCW ALT key. In this mode the key captions match better than the key positions.
The PC ALT key is used as the PCW CTRL key. This makes the positions of the keys match better than their captions.
+---------+-------------------+------------------+ | PC key | PCW key (mode 1) | PCW key (mode 2) | +---------+-------------------+------------------+ +---------+-------------------+------------------+ | ALT | ALT | EXTRA | +---------+-------------------+------------------+ | CTRL | EXTRA | ALT | +---------+-------------------+------------------+
<sec: keyswap2>Delete key swapping
In the same way, the Backspace and Delete keys can be swapped. You may need to use this, depending how your X-Window system is configured.
The Mouse
There were three major types of PCW mouse:
AMX
Kempston
KeyMouse
JOYCE emulates the first two of these. To choose which type is selected, press [f9] in JOYCE; then [f6] for Settings, and choose Mouse.
<sec: mousetypes>AMX mouse
The AMX mouse emulation is tuned for MicroDesign 3, with the mouse movement option set to "Slow". Most programs support the AMX mouse, so this is probably the best choice. However, you will need a three-button mouse (or one with a scroll wheel) to use it successfully.
Kempston mouse
The Kempston mouse emulation is designed for Stop Press. Fewer programs support the Kempston mouse than the AMX, but it doesn't need a three-button mouse.
<sec: autopatch>Mouse auto-patch
The Mouse Auto-Patch feature (only available with the AMX mouse emulation) is used to improve mouse handling in PCW programs. When it is switched on, JOYCE will attempt to link Microdesign, Stop Press or Masterpaint directly to the PC's mouse, bypassing the normal mouse driver. If successful, this results in smoother mouse performance.
When you start the program that uses the mouse, you will
see either "No mouse patch applied"
(in which case, the link could not be established) or "Applied
program mouse patch" (the link was established).
The disc drives
Instead of real disc drives, JOYCE works with "disc image files" on the computer's hard drive. These are fully described in sections [sec: concepts] and [sec: morediscs].
The JOYCE Menu
If you press [f9] (or the Menu key on a Windows95 keyboard) a menu will appear at the top of the screen. It offers the following options:
ESC=return to JOYCE
Leaves the menu system.
f1 = Help
Display the keyboard layout onscreen.
f2 = Discs
Options for floppy drives A: and B:. Use this to "insert" and "eject" discs, and to read floppy discs into the JOYCE environment. It brings up the Discs menu below.
f4 = Printer
Control the built-in dot-matrix or daisywheel printer. You should not normally need to use this menu; the "printer control" state (obtained by pressing [*] on the numeric keypad or [PrintScreen]) should be able to perform the necessary functions.
f5 = Reboot
Reboot the PCW; equivalent to SHIFT+EXTRA+EXIT. You will be asked for confirmation.
f6 = Settings
Settings for all aspects of the emulator. The Settings menu will appear.
f7 = Debug
Display the Debug menu ([sec: dbgmenu]).
f10 = Quit
Leave JOYCE. You will be asked for confirmation.
<sec: dbgmenu>The Debug Menu
There are three options here, intended mainly for advanced users or JOYCE developers.
"CPU state" displays the values of the Z80 registers.
"Debug mode" displays the debug console, on which system messages will appear([footnote] In previous versions, JOYCE had a built-in debugger that ran in the debug console. This is not present in JOYCE v1.9.0.) .
"RAM dump" writes out the bottom 160k of memory to a file in the current directory called "joyce.ram". This is not a full snapshot facility; memory dumps can't be reloaded, and they don't contain CPU state.
The Disks menu
The Disks menu displays the status of the floppy drives, and allows you to eject or insert discs. Each drive has three lines in the menu:
The first line reads either "Drive
- (Ejected)" or "Drive
- (Filename)". This shows whether there is a "disc" (.DSK file) in the drive or not.
The second line reads either "Eject"
or "Insert..." depending whether there's
a disc in the drive. "Eject"
ejects the current disc (.DSK file); while "Insert..."
brings up a window asking for the file to insert. You
can also "insert" a real
floppy drive; this allows the emulated PCW to access a
real drive directly (if slowly).
The bottom line for each drive reads "Read only". If there is a tick beside it then the write protect holes on the disc have been opened and it cannot be written to.
If you select"Disc management..."
then a menu appears allowing you to read in extra floppy
discs, or convert .DSK files back to real discs.
The Disc Management menu
There are five options:
Add a boot disc - Reads in a start-of-day disc and adds it to the opening menu.
Rename a boot disc - Allows you to change the caption associated with a start-of-day disc.
Delete a boot disc - Removes a start-of-day disc from the opening menu. Use this option with caution!
Convert floppy to JOYCE .DSK file - Read in a normal (data) disc, storing the new disc image file in the "user discs" directory.
Write .DSK file back out to floppy - Convert a disc image file (either normal or start-of-day) back to a floppy disc.
The Settings menu
Choose the item of hardware for which you want to make changes. Note that if you make a change such as disconnecting or connecting an interface, the emulated PCW may not pick it up until the next reboot. It's safest to change JOYCE settings while the opening menu is on the screen - after all, you wouldn't plug an interface into a real PCW with the power on, would you?
<sec: genopt>General options
This screen allows you to choose which PCW model to emulate, and how fast it should appear to be. Some points to note are:
JOYCE knows the difference between boot discs for dot-matrix PCWs (8256, 8512, 9256, 10) and daisywheel PCWs (9512, 9512+). If you have selected a PCW model that doesn't match the boot disc, JOYCE selects the closest equivalent when booting.
JOYCE treats the PCW8256 and PCW8512 as one choice, since the only difference is the number of disc drives and the memory size, both of which can be configured in other menus.
JOYCE also treats the PCW9256 and the PCW10 as one choice. The differences between these models are the memory size and the presence of a Centronics port, both of which are configurable in other menus.
Memory
This allows you to set the memory size of your emulated PCW. If your computer is running very low on memory, the "Current memory size" may be less than requested.
If you are running a very old version of CP/M, you may need to reduce memory to 512k to get DISCKIT to run. Some LocoScript 1 versions also malfunction if there's more than 512k of memory.
Disc drives
Note: The menus in this section only allows you to create
configurations that could exist on a real PCW. By manually
editing ~/Joyce/joycehw.xml, you can create "impossible"
configurations, such as a system with three floppy drives
(CP/M and LocoScript won't detect the third one.) If the
configuration is "impossible",
the menus will look different as they attempt to accommodate
the changes.
The settings in this menu are:
Boot discs are read-write / read-only:
This sets whether JOYCE makes emulated boot discs write-protected. Note that early CP/M releases (such as the 1.4 BIOS issued with 8000 series PCWs) need to have a change made to SUBMIT.COM([footnote] Here's a transcript of a SID session making the necessary change:([footnote] A>SID SUBMIT.COM([footnote] CP/M 3 SID - Version 3.0([footnote] NEXT MSZE PC END([footnote] 1600 1600 0100 DAFF([footnote] #S3A6([footnote] 03A6 CD 3E([footnote] 03A7 E4 0D([footnote] 03A8 03 00([footnote] 03A9 32 .([footnote] #W([footnote] 002Ah record(s) written.([footnote] #G0) before they can boot from write-protected disc images.
To override this for a particular boot disc, press [f9] while the loading stripes are on the screen; then press [f2] and change the setting.
Controller type (8256/8512/9512 vs. 9256/9512+/10)
You should set the correct controller type to match your system discs. At least some versions of Locoscript 3 for the PCW9256 refuse to load unless the controller type is also set to 9256. This option is also set by the "PCW model" setting in the general options screen.
Drive A: settings / Drive B: settings:
This brings up its own menu, allowing you to set what type
of disc drive is attached to the PCW. The three standard
types are those supplied as standard with PCWs. If you want
to emulate 5.25" drives or anything else
unusual, select "other"
and manually enter the drive type, the number of cylinders([footnote] The drive documentation may call this figure
the number of tracks rather than the number of cylinders.
Either way, it's usually 40 or 80.) it can access, and whether it's single or double-sided.
To emulate a single-drive PCW, set the type of drive B: to "Not connected".
<sec: extradrv>Extra drives
This menu allows you to set up drives C: - L: and N: - P:. Obviously these drives don't exist on real PCWs, but they can on a JOYCE system, provided you are using a recent version of CP/M (1.12 / 2.12 or later) or LocoScript (2.50 or later). You will need to have a copy of JOYCEDRV.FID on your start-of-day disc for these drives to become available - see section [sec: joycedrv].
For each drive, you can set it up in three ways:
As direct access to the PC's floppy drives.
As a floppy drive that accesses a standard disc image file, just like the emulated A: and B: drives.
As a hard drive with 8Mb of storage. The hard drive will also be stored on a .DSK file, but this .DSK file will not be usable in emulated floppy drives.
To set up a drive, choose it from the list. Then choose or enter the filename and drive type, as listed below:
+-----------------------------------------+--------------+---------------+ | Type of drive to use | Choose file | Choose option | +-----------------------------------------+--------------+---------------+ +-----------------------------------------+--------------+---------------+ | Floppy drive A: or B: | A: or B: | floppy drive | +-----------------------------------------+--------------+---------------+ | Floppy drive using standard image file | .DSK file | floppy drive | +-----------------------------------------+--------------+---------------+ | Hard drive using special image file | .DSK file | hard drive | +-----------------------------------------+--------------+---------------+
Matrix printer
The dot-matrix printer menu offers the following settings:
Connected/Disconnected: Is the printer plugged in or not?
Paper size: There are a number of standard paper sizes; or you can enter your own using "Custom".
Output format: PostScript or PNG. PNG output produces a small graphic file (around 20k) per page, while PostScript output produces one vast file (we're talking 6Mb per page) containing all the output from a JOYCE session. Note that although the PNG files produced are small in size, they are big in area.
Output to Directory: PNG output goes to disc files called
"matrix0.png", "matrix1.png"
etc., while PostScript output goes to "matrix0.ps",
"matrix1.ps"... The directories used are
~/Joyce/Pngs and ~/Joyce/PS respectively.
Output to UNIX command: Output goes to a Unix pipeline. You can use this to send output to the Unix printing system. It is recommended to use PostScript output for this. Note that printing will usually only start when JOYCE shuts down.
Daisywheel printer
The daisywheel printer menu offers the following settings:
Connected/Disconnected: Is the printer plugged in or not? Note that unlike on a real PCW, disconnecting the daisywheel with the computer turned on does not damage the memory chips!
Paper size: There are a number of standard paper sizes; or you can enter your own using "Custom".
Output to Directory: The output is in PostScript format,
and is sent to "daisy0.ps",
"daisy1.ps", etc. in the directory ~/Joyce/PS.
Output to UNIX command: Output goes to a Unix pipeline. You can use this to send output to the Unix printing system. Note that printing will usually only start when JOYCE shuts down.
CEN port and PAR port
The following settings are available for the CEN port and the PAR port:
Connected/Disconnected: Is the appropriate interface connected to the PCW?
Output to file: Output goes to a disc file. When you select this option, you are asked for the filename to send the output to.
Output to UNIX command: Output goes to a Unix pipeline. You can use this to send output to the Unix printing system (enter "lpr" here, with any appropriate options).
Under Windows, you also get the option to send data directly to LPT ports.
CPS8256
There are three configuration screens available for the CPS8256. The first one has the following settings:
Connected/Disconnected: Is the CPS8256 interface connected to the PCW?
Parallel port: Brings up the same settings screen as for the standalone CEN port, to configure output.
Serial port: Displays the filenames used for serial input
and output. These can both be set to a device special
file (eg: "/dev/ttyS0")
for direct access to serial ports. Under Windows COM1:
to COM4: can be chosen.
Keyboard
The keyboard settings screen has two options. One controls which way round the CTRL and ALT keys are mapped (see section [sec: keyswap]) and the other controls which way round the DELETE keys are (see section [sec: keyswap2]).
Mouse
Two mouse settings are available here:
Emulation mode: No mouse, AMX mouse, or Kempston mouse (see section [sec: mousetypes]).
Auto patch on or off (see section [sec: autopatch]).
Video
The Video settings allow you to change:
"Video refresh" - the number of times per second that the screen is redrawn. You can go up to 50Hz (ie, the screen is redrawn 50 times a second) or down to 0.01Hz (the screen is drawn once every 10 seconds). The default setting in JOYCE is 12Hz, which is fine for nearly all programs; even at 3.75Hz CP/M and LocoScript work fine.
The beeper is usually emulated using the PC's sound card. You can also have it manifest as a red flash of the screen ("Visual Beeper") or silence ("Disable beeper").
You can also choose whether to have a green screen (8000 series), white screen (9000 series) or any other screen colours here.
Save settings
If you do not save the settings, they will remain in force only for the duration of your current JOYCE session. The settings will be saved to the file Joyce/joycehw.xml in your home directory.
JOYCE Utilites
The following utility programs are supplied with JOYCE. They are designed to access features of the emulator which have no equivalent on a real PCW. You will find them on the disc image "utils.dsk".
CENPORT
CENPORT is a fast driver for the standalone Centronics printer port. Just type:
CENPORT
and printer output will be sent to the destination defined for that port. Any DEVICE setting for the printer will be ignored.
CENPORT only works under CP/M. LocoScript 1 cannot print from JOYCE (except using the emulated dot-matrix printer). If LocoScript 2 and later do not detect the Centronics port, use the CPS8256 printer port instead.
DDJOYCE.PRL
NOTE: DDJOYCE will not function in this version of JOYCE.
DDJOYCE is new in v1.20. It is a GSX driver for the host PC's graphics screen, allowing high-resolution colour graphics to be used from CP/M.
To use it, edit your ASSIGN.SYS file. Remove the entry which reads
01 @:DDSCREEN
and replace it by
01 @:DDJOYCE
It has not been possible to test DDJOYCE against the three GSX applications I know of (DRAWMON, DR Draw or DR Graph) and I would be interested to hear of any issues with these programs.
DOSDIR
DOSDIR displays the contents of a directory in the host filesystem (the name DOSDIR is for compatibility with MYZ80). Syntax is:
DOSDIR
or DOSDIR {x:/path/}filespec
Note that if you include a path you must include a filename. The command
DOSDIR C:/IMAGES/ is invalid, but
DOSDIR C:/IMAGES/*.* is valid.
To get lower-case commands, use:
A>DOSDIR \
DOSDIR>/usr/local/bin/*
EMULIOS.RSX
EMULIOS allows Digital Research Logo to use the 800x600 screen.
To set it up, use the following commands (under CP/M):
PIP EMULOGO.COM=LOGO.COM
GENCOM EMULOGO
GENCOM EMULOGO EMULIOS
- Then EMULOGO.COM will behave as LOGO.COM, but using the 800x600 screen.
The following commands will behave differently:
setpc Allows a number from 0 to 255
setbg Allows a number from 0 to 255
savepic The .PIC file saved is in Windows BMP format, and can be exported, renamed to .BMP, and loaded by paint programs.
loadpic The .PIC file loaded must be in Windows BMP format and have 256 colours, but its size does not have to be 800x600.
EXPORT
EXPORT will write CP/M files out as UNIX files. It respects exact file sizes.
The syntax is:
EXPORT cpmfile { [O] }
EXPORT unixfile=du:cpmfile { [O] }
The first form of the command produce a UNIX file with the same name as the CP/M file.
The second form creates a UNIX file with a name that may be different from the CP/M name.
Beware: because the CP/M CCP renders all filenames into uppercase, it's very unlikely you'll be able to pass directory names to EXPORT; if you say
EXPORT /home/fred/cpmfile
EXPORT.COM will see "/HOME/FRED/CPMFILE", which probably won't exist. To get
round this, use:
A>EXPORT \
EXPORT>/home/fred/cpmfile
IMPORT
IMPORT will read UNIX files into the CP/M filesystem. It sets exact file sizes.
The syntax is:
IMPORT {/path/}hostfile { [O] }
IMPORT du:=/path/hostfile { [O] }
IMPORT du:cpmfile=x:/path/hostfile { [O] }
The first form imports the named file (or files) to the current drive and user area.
The second form imports the file (or files) to the specified drive and user area, keeping the original name(s).
The third form imports the files, changing their name(s) to match the provided CP/M filename(s).
If the [O] option is present, existing CP/M files with the same name as an imported file will be overwritten without asking. Otherwise you are asked for confirmation.
Both filenames may include wildcards, and the second and third forms can include CP/M driveletters and user numbers:
A:IMPORT \
IMPORT>2F:*.ASC=/usr/doc/*.txt
will import all the .txt files in /usr/doc to drive F, group 2.
Filenames are expanded case-sensitively, so you will normally need to use the backslash, as above, to get lower-case letters into the command line.
<sec: joycedrv>JOYCEDRV
JOYCEDRV.FID is a file which is used to add one or more extra disc drives to CP/M (v1.12/2.12+) or LocoScript (v2.30+) running within JOYCE. The first of these drives will usually be drive C:.
Unless the settings are changed (see section [sec: extradrv]) the drives will be set up as 8Mb hard drives, called ~/Joyce/Disks/c.dsk, ~/Joyce/Disks/d.dsk, etc.
How many drives you get depends on your environment, but on my system I get five under CP/M (C:,D:,E:,F:,and G:), and thirteen under LocoScript (C: to L: and N: to P:).
To enable JOYCEDRV, copy the file JOYCEDRV.FID to your start-of-day disc image. For example:
Start JOYCE.
Select CP/M from the boot menu.
When the A> prompt appears, press [f9], then [f2] (Disc),
then choose the "Insert"
option for drive B:. Click on "disc
file".
In the file chooser that appears, click "System
disc files", then "utils.dsk".
Then click OK.
Back in the f2=Disc menu, choose "EXIT". Then press ESC to leave the menu system.
Back at the CP/M prompt, type PIP A:=B:JOYCEDRV.FID
Press [f9], then [f5] to reboot, and confirm this.
Select CP/M from the boot menu.
JOYCEDRV should now list available drives. If not, then your version of CP/M is too old.
If you try to use a disc image that JOYCEDRV cannot understand, you will not be able to access it. Under CP/M, you will get an "invalid drive" error; under LocoScript, you will get a "FID error".
PCKEY
Syntax:
PCKEY keyfile
or:
PCKEY keyfile fidfile
PCKEY is used to alter the mapping of PC keys to PCW keys. You may need to use this utility if your keyboard does not have a UK layout, or you are using a laptop where some keys are difficult to get at.
When PCKEY is given one parameter, it will read the keyfile and make the changes immediately. When it is given two, it will compile the keyfile into a .FID file, which can then be put on a start-of-day disc and which will make the necessary assignments every time JOYCE is started.
The format of the keyfile is a series of lines; each line reads:
pc-number modifier pcw-number {comment}
pc-number is the number of the key. For a full listing, see Appendix [keycodes].
NOTE: These numbers changed between SDL 0.8 and SDL 0.10; so if you are upgrading JOYCE from a version which used SDL 0.8, you need to rewrite your PCKEY files.
modifier must be N, for compatibility with the old DOS version of JOYCE.
pcw-number is the PCW key number. These are listed in the PCW manual.
So, a typical line might read:
27 N 8 ESC goes to EXIT
- Notes
The key mapping you have set remains until you exit JOYCE.
The option in the Settings menu to swap CTRL/ALT and Backspace/Delete uses the same method as PCKEY. It is probably best not to map these four keys.
Key 256 brings up the JOYCE menu. Key 257 brings up the Exit Confirmation screen.
If you use VGACOM to switch into VGA mode, note that keys set up by PCKEY don't affect the keyboard in VGA mode.
QUIT
Syntax:
QUIT { number } { [O] }
QUIT will exit JOYCE. With no parameters, it will check whether there are files on drive M: which may need saving, and if there are it will ask for confirmation.
The number parameter is the error level which JOYCE should return. If there is no number parameter, JOYCE returns 98.
The [O] option disables the M: drive check and quits immediately.
REDIR
REDIR allows you to use one or more PC directories as drives under CP/M. See the separate file REDIR.DOC for more information.
RTC
Syntax:
RTC
or
RTC [C]
RTC reads the PC's built-in clock. It can be used in two ways.
RTC by itself will set the PCW's clock from the PC's clock. The timing of the PCW's clock will then depend on the speed of emulation, which is another way of saying that it will gradually diverge from the PC's clock.
RTC [C] links the PCW's clock to the PC's clock; it will be set to the correct time whenever CP/M reads it.
VGA and VGACOM
VGA.FID allows CP/M programs to make direct use of the PC screen and keyboard. This gives more text on the screen and faster output.
Once VGA.FID has loaded, type VGACOM ON to activate it, and VGACOM OFF to deactivate it.
Your PCW screen will now be 100 columns x 36 lines. Nearly all the normal PCW escape codes are supported, which should enable character-based programs to be run (don't run DISCKIT, and don't run graphical programs like Stop Press!). Since screen output is now being done by the host PC's processor, you should notice an improvement in speed.
The following escape codes work differently in the 800x600 VGA mode:
ESC b / ESC c set colours (so
the numbers in the PALETTE command actually have meaning).
ESC y sets 32x90 mode.
ESC z sets 36x100 mode.
XPALETTE
Syntax:
XPALETTE b f
or:
XPALETTE br bg bb fr fg fb
XPALETTE takes advantage of the colours on a VGA screen to allow the PCW to display in any colour scheme, not just black and white.
The version with two parameters works the same way as on a CPC or a Spectrum +3 (though neither of these has as many colours as JOYCE has). For example, on a CPC you might type:
PALETTE 2 63
to get white text on a blue background. So, in JOYCE, type
XPALETTE 2 63
and the screen colours obediently change.
The version with six parameters allows any colour in the 24-bit range to be selected, rather than just 64. Instead of a colour being represented by one number, it is represented by three:
XPALETTE 0 0 32 255 255 251
will give you a very dark blue background and a foreground with the slightest tinge of yellow.
XPALETTE does not mind how the numbers are separated (with commas, spaces, *s or whatever) and accepts Hex numbers preceded with & (128 = &80 etc.).
Note! Unlike PALETTE 0 0, XPALETTE 0 0 really does select black on black. This is not recommended.
JOYCE utilities (PC hosted)
If you don't want to use JOYCE's own methods for converting between disc files and image files, you can also use the dsktrans program, which is installed with JOYCE.
The command to use is either:
dsktrans /dev/fdn dskfile
- Floppy disc to image file
or
dsktrans dskfile /dev/fdn -otype floppy
- Image to floppy disc.
DSKTRANS isn't as versatile as CPCTRANS (for example, it can only handle discs in recognisable PCW or +3DOS formats) but it doesn't need telling what sort of disc it is using, and it is a native (not DOS-hosted) program.
To copy a MicroDesign 3 protected disc with DSKTRANS, add "-md3" to the end of the command line.
<sec: md3nt>MD3 discs and Windows NT / 2000 / XP
Windows NT, 2000 and XP will flat-out refuse to read MicroDesign 3 program discs, owing to the copy protection used on them. There is no way to make JOYCE capable of reading them, short of creating a new floppy disc driver for Windows itself. To read in MD3 discs on these systems, you will need to boot DOS from a floppy disc and use the supplied MD3TRANS.EXE:
MD3TRANS x: dskfile
and answer 'I'gnore to any error messages that might appear.
<sec: changes>Recent Changes
New in v2.0.2:
Bug fix: Blank MYZ80 hard drive files are correctly formatted rather than left as zeroes (Unix) / random data (Windows).
New in v2.0.1:
Bug fix: empty XML filename nodes in the configuration file (eg: <output></output>) do not crash JOYCE.
Bug fix: extended DSK files actually work (thanks to Thierry Jouin for this fix).
New in v1.9.9:
Windows serial port emulation is now usable.
New in v1.9.5:
Windows serial port emulation improved, though it still isn't very good.
Custom screen colours can be set through the menu system.
New in v1.9.4:
Dot-matrix printer output can now be in PostScript format rather than PNG.
Daisywheel emulation added.
Bug fixes in the 100x36 text screen (as provided by VGA.FID / VGACOM.COM)
Partial and buggy serial port support under Windows.
Floppy controller emulation changed so that .DSK files can be created and formatted.
New in v1.9.3:
JOYCE can now read MicroDesign 3 discs (except on Windows NT / 2000 / XP).
It is possible to map the PCW's floppy drives directly to the PC's floppy drives.
Bug fix: The keypad minus key now correctly maps to the PCW "[-]" key.
Bug fix: No DirectSound crash when JOYCE terminates on Win95.
New in v1.9.2:
It is now possible to set the PCW memory size at startup with the "-m" option.
Sound output added.
Bug fixes:
Fix for incorrect colours on some Windows systems.
The file chooser now works properly in the Windows version.
New in v1.9.1:
Windows version created.
New in v1.9.0:
JOYCE has been thoroughly overhauled and rewritten in C++.
TIMINGS.COM is no longer necessary. The speed of JOYCE
is now set using the "General"
option from the [f6] settings menu.
The menu system is entirely new.
CPS8256 emulation has been added.
Dot-matrix printer emulation has been added.
The disc controller emulation has been rewritten from scratch. It should support disc image files in the CPCEMU "extended" format.
The Z80 emulation is now Ian Collier's code from xz80.
The AMX and Kempston mouse emulation are now much more usable, even without the auto-patch mode.
<sec: admins>For Unix system administrators
First and foremost, don't run JOYCE as the root user! JOYCE gives the PCW programs within it various methods to access the host filesystem; it is entirely possible that a malicious PCW program running within JOYCE could damage important Unix files.
It is possible to set up a system-wide installation of JOYCE with default settings, boot discs and other discs. To do this, first set up the desired configuration as a normal user. Then copy the following files:
From ~user/Joyce to /usr/local/share/Joyce: joycehw.xml
From ~user/Joyce/Boot to /usr/local/share/Joyce/Boot: boot*.dsk and joycebt.xml
From ~user/Joyce/Disks to /usr/local/share/Joyce/Disks: Any other .dsk files that should be common.
This will then become the default configuration on your system. Users will still be able to change settings or add additional discs; these will be saved to their local configuration directories.
<keycodes>Keyboard codes
Note that many of these keys don't exist in a standard PC keyboard. For example, the PC keyboard has no "$" key (it uses SHIFT + 4 instead) so assigning codes to that key will have no effect.
+-------+---------------+
| Code | Key |
+-------+---------------+
+-------+---------------+
| 8 | Backspace |
+-------+---------------+
| 9 | Tab |
+-------+---------------+
| 12 | Clear |
+-------+---------------+
| 13 | Return |
+-------+---------------+
| 19 | Pause |
+-------+---------------+
| 27 | Escape |
+-------+---------------+
| 32 | Space |
+-------+---------------+
| 33 | ! |
+-------+---------------+
| 34 | " |
+-------+---------------+
| 35 | # |
+-------+---------------+
| 36 | $ |
+-------+---------------+
| 38 | & |
+-------+---------------+
| 39 | ' |
+-------+---------------+
| 40 | ( |
+-------+---------------+
| 41 | ) |
+-------+---------------+
| 42 | * |
+-------+---------------+
| 43 | + |
+-------+---------------+
| 44 | , |
+-------+---------------+
| 45 | - |
+-------+---------------+
| 46 | . |
+-------+---------------+
| 47 | / |
+-------+---------------+
| 48 | 0 |
+-------+---------------+
| 49 | 1 |
+-------+---------------+
| 50 | 2 |
+-------+---------------+
| 51 | 3 |
+-------+---------------+
| 52 | 4 |
+-------+---------------+
| 53 | 5 |
+-------+---------------+
| 54 | 6 |
+-------+---------------+
| 55 | 7 |
+-------+---------------+
| 56 | 8 |
+-------+---------------+
| 57 | 9 |
+-------+---------------+
| 58 | : |
+-------+---------------+
| 59 | ; |
+-------+---------------+
| 60 | < |
+-------+---------------+
| 61 | = |
+-------+---------------+
| 62 | > |
+-------+---------------+
| 63 | ? |
+-------+---------------+
| 64 | @ |
+-------+---------------+
| 91 | [ |
+-------+---------------+
| 92 | \ |
+-------+---------------+
| 93 | ] |
+-------+---------------+
| 94 | ^ |
+-------+---------------+
| 95 | _ |
+-------+---------------+
| 96 | ` |
+-------+---------------+
| 97 | A |
+-------+---------------+
| 98 | B |
+-------+---------------+
| 99 | C |
+-------+---------------+
| 100 | D |
+-------+---------------+
| 101 | E |
+-------+---------------+
| 102 | F |
+-------+---------------+
| 103 | G |
+-------+---------------+
| 104 | H |
+-------+---------------+
| 105 | I |
+-------+---------------+
| 106 | J |
+-------+---------------+
| 107 | K |
+-------+---------------+
| 108 | L |
+-------+---------------+
| 109 | M |
+-------+---------------+
| 110 | N |
+-------+---------------+
| 111 | O |
+-------+---------------+
| 112 | P |
+-------+---------------+
| 113 | Q |
+-------+---------------+
| 114 | R |
+-------+---------------+
| 115 | S |
+-------+---------------+
| 116 | T |
+-------+---------------+
| 117 | U |
+-------+---------------+
| 118 | V |
+-------+---------------+
| 119 | W |
+-------+---------------+
| 120 | X |
+-------+---------------+
| 121 | Y |
+-------+---------------+
| 122 | Z |
+-------+---------------+
| 127 | Del |
+-------+---------------+
| 256 | Keypad 0 |
+-------+---------------+
| 257 | Keypad 1 |
+-------+---------------+
| 258 | Keypad 2 |
+-------+---------------+
| 259 | Keypad 3 |
+-------+---------------+
| 260 | Keypad 4 |
+-------+---------------+
| 261 | Keypad 5 |
+-------+---------------+
| 262 | Keypad 6 |
+-------+---------------+
| 263 | Keypad 7 |
+-------+---------------+
| 264 | Keypad 8 |
+-------+---------------+
| 265 | Keypad 9 |
+-------+---------------+
| 266 | Keypad . |
+-------+---------------+
| 267 | Keypad / |
+-------+---------------+
| 268 | Keypad * |
+-------+---------------+
| 269 | Keypad - |
+-------+---------------+
| 270 | Keypad + |
+-------+---------------+
| 271 | Keypad ENTER |
+-------+---------------+
| 272 | Keypad = |
+-------+---------------+
| 273 | Up arrow |
+-------+---------------+
| 274 | Down arrow |
+-------+---------------+
| 275 | Right arrow |
+-------+---------------+
| 276 | Left arrow |
+-------+---------------+
| 277 | Insert |
+-------+---------------+
| 278 | Home |
+-------+---------------+
| 279 | End |
+-------+---------------+
| 280 | Page up |
+-------+---------------+
| 281 | Page down |
+-------+---------------+
| 282 | F1 |
+-------+---------------+
| 283 | F2 |
+-------+---------------+
| 284 | F3 |
+-------+---------------+
| 285 | F4 |
+-------+---------------+
| 286 | F5 |
+-------+---------------+
| 287 | F6 |
+-------+---------------+
| 288 | F7 |
+-------+---------------+
| 289 | F8 |
+-------+---------------+
| 290 | F9 |
+-------+---------------+
| 291 | F10 |
+-------+---------------+
| 292 | F11 |
+-------+---------------+
| 293 | F12 |
+-------+---------------+
| 294 | F13 |
+-------+---------------+
| 295 | F14 |
+-------+---------------+
| 296 | F15 |
+-------+---------------+
| 300 | Num lock |
+-------+---------------+
| 301 | Caps lock |
+-------+---------------+
| 302 | Scroll lock |
+-------+---------------+
| 303 | Right shift |
+-------+---------------+
| 304 | Left shift |
+-------+---------------+
| 305 | Right control |
+-------+---------------+
| 306 | Left control |
+-------+---------------+
| 307 | Right Alt |
+-------+---------------+
| 308 | Left Alt |
+-------+---------------+
| 309 | Right Meta |
+-------+---------------+
| 310 | Left Meta |
+-------+---------------+
| 311 | Left Windows |
+-------+---------------+
| 312 | Right Windows |
+-------+---------------+
| 313 | Mode / Alt Gr |
+-------+---------------+
| 315 | Help |
+-------+---------------+
| 316 | Print screen |
+-------+---------------+
| 317 | SysRq |
+-------+---------------+
| 318 | Break |
+-------+---------------+
| 319 | Menu |
+-------+---------------+
| 320 | Power |
+-------+---------------+
| 321 | Euro |
+-------+---------------+
Acknowledgements
This version of JOYCE could not have been written without:
Ian Collier, who wrote the "xz80" emulator. The Z80 emulator in JOYCE is based on the one in xz80.
Richard Clayton, who supplied vital information on the interactions between the XBIOS and the hardware.
Cliff Lawson, who made the PCW hardware specification public.
Richard Fairhurst and Jacob Nevins, who provided hardware information.
The many authors of Linux, GNU, gcc, SDL, libpng and libxml.
The MICO authors who created the mini-STL.
Frank D. Cringle, who wrote the Z80 emulator test suite in YAZE.
David Cantrell, for his posting on comp.sys.amstrad.8bit describing the use of PostScript in printer emulation.
Matthew Gomez, who suggested some of the colour names in the custom colour menu.
Previous versions also owed much to:
Marat Fayzullin, who wrote the original Z80 emulation code. However, none of this code now remains in JOYCE, because it is not compatible with the GPL.
Ian Macdonald, who tested JOYCE for DOS.
The authors of DJGPP, GRX20 and DRDOS.
Samuel Vincent, the author of the SVAsync library.
Martynas Kunigelis, on whose DJGPP keyboard driver I based that of JOYCE for DOS.
