Vice
Vice
Copyright c 1999-2023 Pottendo Copyright c 2005-2023 Marco van den Heuvel Copyright
c 2007-2023 Fabrizio Gennari Copyright c 2009-2023 Groepaz Copyright c 2009-2023 Er-
rol Smith Copyright c 2009-2023 Ingo Korb Copyright c 2010-2023 Olaf Seibert Copyright
c 2011-2023 Marcus Sutton Copyright c 2011-2023 Kajtar Zsolt Copyright c 2016-2023
AreaScout Copyright c 2016-2023 Bas Wassink Copyright c 2017-2023 Michael C. Martin
Copyright c 2018-2023 Christopher Phillips Copyright c 2019-2023 David Hogan Copy-
right c 2020-2023 Empathic Qubit Copyright c 2020-2023 Roberto Muscedere Copyright
c 2021-2023 June Tate-Gans Copyright c 2021-2023 Pablo Roldan
Copyright c 2011-2016 Stefan Haubenthal Copyright c 2015-2016 BSzili Copyright c
1999-2016 Andreas Matthies Copyright c 2007-2015 Daniel Kahlin Copyright c 2012-2014
Benjamin ’BeRo’ Rosseaux Copyright c 2011-2014 Ulrich Schulz Copyright c 2011-2014
Thomas Giesel Copyright c 2008-2014 Antti S. Lankila Copyright c 2006-2014 Chris-
tian Vogelgsang Copyright c 1998-2014 Dag Lem Copyright c 2000-2011 Spiro Trikaliotis
Copyright c 2007-2011 Hannu Nuotio Copyright c 1998-2010 Andreas Boose Copyright c
1998-2010 Tibor Biczo Copyright c 2007-2010 M. Kiesel Copyright c 1999-2007 Andreas
Dehmel Copyright c 2003-2005 David Hansel Copyright c 2000-2004 Markus Brenner
Copyright c 1999-2004 Thomas Bretz Copyright c 1997-2001 Daniel Sladic Copyright c
1996-2001 Andre Fachat Copyright c 1996-1999 Ettore Perazzoli Copyright c 1993-1994,
1997-1999 Teemu Rantanen Copyright c 1993-1996 Jouko Valta Copyright c 1993-1994
Jarkko Sonninen
Permission is granted to make and distribute verbatim copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the con-
ditions for verbatim copying, provided that the entire resulting derived work is distributed
under the terms of a permission notice identical to this one.
2
1 About VICE
VICE is the one and only Versatile Commodore Emulator. It provides emulation of the
Commodore C64, C64DTV, C128, VIC20, PET, PLUS4, SCPU64 and CBM-II computers
within a single package. The emulators run as separate programs, but have the same user
interface, share the same settings and support the same file formats.
Important notice: If you have no idea what a Commodore 8-bit computer is, or have
questions about how these machines are used, how the file formats work or anything else
that is not strictly related to VICE, you should read the appropriate FAQs first, as that kind
of information is not available here. See Chapter 19 [Contacts], page 444. for information
about how to retrieve the FAQs.
All the emulators provide an accurate 6502/6510 emulator, with emulation of all the opcodes
(both documented and undocumented ones) and accurate timing. Unlike other emulators,
VICE aims to be cycle accurate; it tries to emulate chip timings as precisely as possible and
does so efficiently.
Please do not expect the C64DTV, C128, PET, PLUS4, SCPU64 and CBM-II emulators
to be as good as the C64 or VIC20 one, as they are still under construction.
Notice: This documentation is written for the Unix release of VICE, but is slowly being
made universal.
Video cache is disabled by default as it currently doesn’t work with some of C64DTV’s new
video modes. The new video modes have a simple "fake" video cache implementation that
may give incorrect results and decreased performance.
The 6809 CPU that is built into the SuperPET is now emulated, since release 2.4, including
the 6702 dongle chip.
The Super-OS-9 MMU expansion, developed by TPUG (Toronto PET Users Group) is also
emulated.
The PET computers came with three major ROM revisions, so-called BASIC 1, 2 and 4,
all of which are provided. The PET 2001 uses the version 1, the PET 3032 uses version 2,
and the others use version 4. The 2001 ROM is horribly broken with respect to IEEE488
(they shipped it before they tested it with the floppy drive, so only tape worked. Therefore
the emulator patches the ROM to fix the IEEE488 routines.
As well as other low-level fixes the 2001 patch obtains the load address for a program file
from the first two bytes of the file. This allows the loading of both PET2001-saved files (that
have $0400 as their load address) and other PET files (that have $0401). The PET2001
saves from $0400 and not from $0401 as other PETs do.
Moreover, the secondary addresses used are now 0 and 1 for load and save, respectively,
and not arbitrary unused secondary addresses.
To select which model to run, specify it on the command line with the -model MODEL option,
where MODEL can be one of a list of PET model numbers, all described in see Section 6.7.1
[PET model], page 193,
Some models have been modified to map RAM into the expansion ROM area. Those
modifications can be emulated as well.
The different settings are described in see Section 6.8.1 [CBM-II model], page 204.
obvious what keys should be typed to obtain all the symbols. The key printed on the host
keyboard will be pressed in the emulator.
Note that while these mappings will allow easier typing if you are used to your host keymap,
it might cause various problems in the emulation and not all emulated keys are accessible.
If you encounter such problems, try the positional mapping.
• Some keys really need to be mapped specially regardless (those that do not exist on a
PC keyboard). Some examples are the Commodore key, RUN/STOP, Clear/Home. The
exact mapping depends on your host layout, but should follow mostly the layouts shown
below. If in doubt, you can read the keyboard mapping files.
• the emulator has to "de-shift" (remove the shift modifier) from some keys. For exam-
ple, if you want to get a ":" on a german keyboard, you have to press "." and shift
simulaneously. Then, the emulator sees the events "shift pressed" and ":" pressed. At
the moment you have pressed shift, the emulator does not know what key you are using
next (or even if you are actually going to use another key before releasing shift again),
so it has to deliver this state to the keyboard matrix. If you press ".", then shift, to
achive a ":", the emulator has to take back the shift key although it is still pressed, as
the ":" is an unshifted key in the c64/c128 keyboard matrix.
• A similar problem exists when you press a key that is unshifted on the host keyboard,
and the emulator must "shift" (add the shift modifier) for the emulated keyboard. For
example on a US keyboard the brackets ([,]) are such a case. Unlike what would happen
on the real C64 when typing, VICE “presses” the Shift key together with the key to
shift when the Shift must be forced. In most cases this should work fine, but some
keyboard routines are quite picky (eg x128 in CP/M mode) and tend not to recognize
the shift key because of this. For instance, F6 (which on the real C64 is obtained with
Shift + F5) could be recognized as F5. In that case, use the shift key manually (i.e.,
type Shift + F5 in the example).
Yes, we know this is a bug. Unfortunately it is less than trivial to fix 100%. If you encounter
any problems, please use a positional keymap as a workaround - that should always work
as expected.
PROs:
• Mostly intuitive typing if your muscle memory is conditioned strong to your host key-
board.
CONs:
• Does not preserve the position of the keys.
• Due to how the key mapping may add or remove the SHIFT flag from individual keys,
strange side effects may occur (see above).
• SHIFT/LOCK is added to the emulated keys - which may give unexpected results
depending on your host OS and keymap (It is really emulating the SHIFT-LOCK key
and not working as a CAPS-LOCK like in your host OS anymore).
Positional Mapping
For the positional mappings first all keys are mapped at their exact positions, as far as
possible, and then the remaining few (usually 2 or 3) will be mapped to other, yet unused,
keys. This is the recommended mapping for playing games or other programs that require
Chapter 1: About VICE 7
CONs:
• Weird to use if you are not familiar with the emulated (eg) C64 keyboard.
Notes
We depend a lot on your support to improve the keyboard maps, as we can not test all
emulators in all possible configurations and using all host keyboard mappings. Please report
any problems to us so we can fix them!
If you experience problems with ’accent’ keys such as acute, grave, tilde, circumflex, diaresis
(and possibly more/other, depending on your host keyboard layout) try switching to a "no
deadkeys" layout in your OS. Note that currently SDL requires using a "no deadkeys"
keyboard layout! In any case, please also report these problems so we can fix them!
For more information on making your own keymaps (or helping to fix/update the existing
ones), see see Section 3.2 [Keymap files], page 32.
This mapping applies to the C64, SCPU, VIC20 and DTV emulators.
Chapter 1: About VICE 8
This mapping applies to the C128 emulator. It is for a large part identical with the respective
C64 mapping, plus the added function- and extra keys.
Note that to use the numpad, you will have to disable the "allow keyset joysticks" setting.
The 3032 and 4032 use "real" graphics keyboard, which is based on the same keyboard
matrix and looks like this:
For practical reasons, there is no extra keymap for the chiclet keyboard - any attempt to
somehow reproduce that would end up too similar to what we are using now for the graphics
keyboard anyway:
VIC20. With IEEE488 drives you can have true 2031 emulation at unit #8, and still have
filesystem access at units #10 or #11, because monitoring the IEEE488 lines does not
interfere with the true drive emulation.
The IEEE488 disk units 2040, 3040, 4040, 8050 and 8250 are Dual Drive Floppy Disks.
This means that these devices handle two disks. The drives are numbered 0 and 1.
The Commodore 2040, 3040, 4040, 1001, 8050, 8250, and D9090/60 drives are so-called
"old-style" disk drives. Their architecture includes not one, but two processors of the 6502
type, namely a 6502 for the file handling and communication with the PET (IP), and a 6504
(which is a 6502 with reduced address space) for the drive handling (FDC). Both processors
communicate over a shared memory area. The IP writes commands to read/write blocks to
this area and the FDC executes them. To make the emulation feasible, the FDC processor is
not emulated cycle-exactly as a 6504, but simply by checking the commands and executing
them on the host. This provides a fast FDC emulation, but disallows the sending the FDC
processor commands to execute code. Applications where this is necessary are believed to
be rather seldom. Only the format command uses this feature, but this is checked for.
The dual disk drive 2040 emulates one of the very first CBM disk drives. This drive has
DOS version 1. DOS1 uses an own disk type, that is closely related to the 1541 disk image.
Only on tracks 18-24 DOS1 disks have a sector more than 1541 disks. DOS1 disk images
have the extension .d67.
The dual disk drives 3040 and 4040 use the same logical disk format as the VC1541 and
the 2031. In fact, the 4040 was the first disk with DOS version 2. The 3040 emulated here
originally was the same as 2040, only for the european 30xx PET series. As many of the
original DOS1 disk drives were upgraded (a simple ROM upgrade!) to DOS2, I use the 3040
number for a DOS 2.0 disk drive, and 4040 for a revised DOS 2 disk drive. It is, however,
not yet clear whether the disks here are write compatible to the 1541, as rumors exist that
the write gap between sectors is different. But read compatible they are. As VICE emulates
the FDC processor in C and not as 6504 emulation, this does not matter in VICE.
The drives 1001, 8050 and 8250 do actually have the very same DOS ROM. Only the code
in the FDC is different, which is taken care of by VICE. So for all three of those disk drives,
only dos1001 is needed. The DOS version used is 2.7.
The D9090/60 is the only Commodore branded hard drive produced for the PET series
computers, and were often used by C64 and C128 users for their significant storage capacity
(29162/19441 free blocks). Just like the other IEEE drives before it, it uses a separate CPU
as the FDC which in turn communicates with the SASI-to-ST506 bridge (which is controlled
by an AM2910). The hardware design is very similar to the 8050/8250 drive.
Creative Micro Designs (CMD) produced the last drives for the Commodore 8-bit systems.
They first released the hard drive (HD) line, and later the floppy drive (FD) line. The CMD
HD series can support up to 4 GiB HDs with 255 separate partitions, while the CMD FD
series can support up to 3.3 MB extended density floppy disks with 31 separate partitions.
The FD series are also backwards compatible with 1581 media. The DOS for the FD series
is stored on a ROM (dos2000 and dos4000, the latest versions being 1.40).
The CMD HD uses a small boot ROM (dosCMDHD, the latest version is 2.80) which loads
the primary DOS (latest is 1.92) off the HD itself. This allows for easy upgrades and
expandability. This is also the only drive to use the front panel buttons to control the
mode of the drive on reset. There are three modes of operation: normal, configuration,
Chapter 1: About VICE 21
and installation. VICE supports placing the drive in either of these modes through the
"Reset" sub-menu on the status bar for the GTK3 interface, and the "Reset" menu in the
SDL interface. When creating a new DHD image, simply create an EMPTY file and VICE
will automatically place the drive in installation mode. The DOS will detect the drive as
the size specified by "Drive#FixedSize" (or "-drive#fixedsize") which is 8GB by default.
To use a specific sized disk, set this value to the maximum size, or set this value to "0"
and set the image file on disk to the desired size (it should be a multiple of 512 bytes).
Once the DOS is installed, the CMD "hd-tools" program can be used to configure various
settings and partition the drive; this is done in configuration mode for safety. When in
either configuration or installation mode, the device number is set to 30. Therefore, it
is not suggested to place two or more CMD HDs in either of these modes on the same
bus at the same time. When migrating from real CMD hardware, use any HDD imaging
software ("dd" or GNU "ddrescue" on Linux) to copy the raw contents of a device to a
file. The destination file should have a "DHD" extension. For those users with multiple
disks, SCSI ID 0, LUN 0 should have the extension "DHD", but any other drives should
have ".S<ID><LUN>" where <ID> is the SCSI ID and <LUN> is the LUN or logical unit.
Place all the files in the same folder when attaching to the "DHD" file. The other files
will automatically be scanned for and connected as well. The CMD HD boot ROM is used
for partition management, and ALL versions have a known bug which corrupts data when
deleting paritions across multiple SCSI drives. To avoid this scenario, it is highly suggested
that another full DHD image be created in VICE (on another unit) and all the files be
copied over from multi-disk configurations, using CMD "fcopy" for example, to the new
unit. This will allow the user to take advantage of all the CMD HD features without the
potential for data loss.
charset. The keys that make these characters do not have a different entry in the PET
editor ROM tables when shifted. Thus it is not possible to get the uppercase umlauts in
the editor. Nevertheless other programs are reported to change the keyboard mapping table
and thus allow the use of the shifted (uppercase) umlauts.
Anyway, the VICE keyboard mappings are far from being perfect and we are open to any
suggestions.
24
-dumpconfig <filename>
Write the complete config into file. Normally only resources that have been
changed from their default value would be written to the config file, however
with this option you can see all resources and their current values.
-settings-node <path>
Activate settings dialog at node <path> after starting the emulator (Gtk3 only).
Meant for use during development, the <path> is string pointing to a node in
the settings tree (see src/arch/gtk3/uisettings.c).
-logfile <name>
Specify log file name (LogFileName).
-no-redirect-streams
Disable stream redirection on Windows. Stream redirection is used on Windows
to reconnect stdin, stdout and stderr to VICE, so options like -help work as one
would expect on a sane OS. Stream redirection is disabled when running from
an msys2 shell, or when VICE is compiled with –enable-debug.
-seed <value>
Set the random seed (for debugging).
-keybuf <string>
Put the specified string into the keyboard buffer.
-console Console mode (for music playback, or for running the emulator test programs)
-limitcycles <cycles>
Automatically exit the emulator after a given number of cycles.
-chdir <directory>
Change the working directory.
-autostart <name>
Autostart <name> (see Section 2.2 [Command-line autostart], page 27).
-autoload <name>
Attach and autoload tape/disk image <name>
-8 <Name>
-9 <Name>
-10 <Name>
-11 <Name>
Attach <Name> as a disk image to device 8, 9, 10 or 11.
Chapter 2: Invoking the emulators 26
-8d1 <Name>
-9d1 <Name>
-10d1 <Name>
-11d1 <Name>
Attach <Name> as a disk image to the second drive of a dual-drive device 8, 9,
10 or 11.
-attach8ro
-attach9ro
-attach10ro
-attach11ro
Attach disk image for drive #8-11 read only (AttachDevice8d0Readonly=1,
AttachDevice9d0Readonly=1, AttachDevice10d0Readonly=1,
AttachDevice11d0Readonly=1) (all emulators except vsid).
-attach8d1ro
-attach9d1ro
-attach10d1ro
-attach11d1ro
Attach disk image for second drive of a dual-drive #8-11 read
only (AttachDevice8d1Readonly=1, AttachDevice9d1Readonly=1,
AttachDevice10d1Readonly=1, AttachDevice11d1Readonly=1) (all
emulators except vsid).
-attach8rw
-attach9rw
-attach10rw
-attach11rw
Attach disk image for drive #8-11 read write (if possible)
(AttachDevice8d0Readonly=0, AttachDevice9d0Readonly=0,
AttachDevice10d0Readonly=0, AttachDevice11d0Readonly=0) (all
emulators except vsid).
-attach8d1rw
-attach9d1rw
-attach10d1rw
-attach11d1rw
Attach disk image for second drive of a dual-drive #8-11 read write (if
possible) (AttachDevice8d1Readonly=0, AttachDevice9d1Readonly=0,
AttachDevice10d1Readonly=0, AttachDevice11d1Readonly=0) (all
emulators except vsid).
-exitscreenshot <name>
Specify name of a screenshot file that will be written when the emulator exits.
(ExitScreenshotName).
-exitscreenshotvicii <name>
Specify name of a screenshot file that will be written when the emulator exits.
(ExitScreenshotName1). (x128)
Chapter 2: Invoking the emulators 27
3 System files
In order to work properly, the emulators need to load a few system files:
• the system ROMs, raw binary files containing copies of the original ROMs of the
machine you are emulating;
• the keyboard maps, text files describing the keyboard layout;
• the palette files, text files describing the colors of the machine you are emulating.
• the romset files, text files describing the different ROMs to load.
• the hotkey files, text files with keyboard shortcuts.
The place where they will be searched for depends on the value of the Directory resource,
which is a colon (:)-separated search path list, like the unix PATH environment variable.
The default value is
$HOME/.local/share/vice/EMU:PREFIX/share/vice/EMU:BOOTPATH/EMU
Where PREFIX is the installation prefix (usually /usr/local), EMU is the name of the em-
ulated machine (C64, C64DTV, C128, PET, PLUS4, CBM-II, SCPU64 or VIC20) and BOOTPATH
is the directory where the executable resides. The disk drive ROMs are looked for in a
directory with EMU set to DRIVES. $HOME is the user’s home directory.
For example, if you have the C64 emulator installed in
/usr/local/bin/x64
then the value will be
$HOME/.local/share/vice/C64:/usr/local/share/vice/C64:/usr/local/bin/C64
And system files will be searched for under the following directories, in the specified order:
1. $HOME/.local/share/vice/C64
2. /usr/local/share/vice/C64
3. /usr/local/bin/C64
System files can still be installed in a different directory if you specify a complete path
instead of just a file name. For example, if you specify ./kernal as the kernal image name,
the kernal image will be loaded from the current directory. This can be done by using
command-line options or by modifying resource values (see Section 5.1 [Resource files],
page 54).
Note that there are other DOS images on the internet. The DOS 2.5 images might be used
with the 8050, but it cannot handle the double sided drives of the 1001 and 8250 and it is
not supported by VICE.
The PET emulator uses an expanded setup, because there are three major versions of the
Basic and the Kernal, and many versions of the Editor ROM. In addition there are cartridge
ROM sockets.
The Kernal files contain the memory from range $F000-$FFFF, the Basic ROMs either the
range $C000-$DFFF or $B000-$DFFF. To handle the different screen sizes and keyboards,
different so-called “editor-ROMs” for the memory range $E000-$E800 are provided. The
PET ROMs have the following names:
• kernal-1.901439-04-07.bin, the PET2001 Kernal ROM (4 KiB) (Commodore ROM
images 901447-06 and 901447-07, same as 901439-04 and 901439-07)
• kernal-2.901465-03.bin, the PET3032 Kernal ROM (4 KiB) (Commodore ROM
image 901465-03)
• kernal-4.901465-22.bin, the PET4032/8032 Kernal ROM (4 KiB) (Commodore
ROM image 901465-22)
• basic-1.901439-09-05-02-06.bin, the PET2001 Basic 1 ROM (8 KiB) (Commodore
ROM images 901447-09, 901447-02, 901447-03, 901447-04.bin. The -09 ROM is the
revised -01 ROM. Same as images 901439-09, 901439-05, 901439-02, 901439-06. The
-09 ROM is the revised -01 ROM)
• basic-2.901465-01-02.bin, the PET3032 Basic 2 ROM (8 KiB) (Commodore ROM
images 901465-01 and 901465-01)
• basic-4.901465-23-20-21.bin, the PET4032/8032 Basic 4 ROM (12 KiB) (Com-
modore ROM images 901465-23, 901465-20 and 901465-21. The -23 ROM is a revised
-19 ROM)
• edit-1-n.901439-03.bin, the PET2001 editor for graphics keyboards (2 KiB) (Com-
modore ROM image 901447-05, same as 901439-03)
• edit-2-b.901474-01.bin, the PET3032 editor for business keyboards (2 KiB) (Com-
modore ROM image 901474-01)
• edit-2-n.901447-24.bin, the PET3032 editor for graphics keyboards (2 KiB) (Com-
modore ROM image 901447-24)
• edit-4-40-n-50Hz.901498-01.bi, the PET4032 editor for graphics keyboards (2 KiB)
(Commodore ROM image 901498-01)
• edit-4-40-b-50Hz.ts.bin, the PET4032 editor for business keyboards (2 KiB) (Said
to be "901498-01 modified to use a business keyboard on a 50Hz 4032")
• edit-4-80-b-50Hz.901474-04_.bin, the PET8032 editor for business keyboards (2
KiB) (Commodore ROM image 901474-04-?)
• characters-1.901447-08.bin, the character generator ROM (2KiB) for the PET
2001. It has two sets with 128 chars each. The second (inverted) half of each set is
computed from the first half by inverting it. This is a PET hardware feature. Com-
pared to the character ROMs for later models, it has the upper case and lower case
letters swapped: to get lower case letters, you need to use the shift key (so the basic
abbreviation for "LIST" looks like "Li", instead of "lI" for "list". (Commodore ROM
image 901447-08)
Chapter 3: System files 31
3.2.1 Comments
• Any line starting with the # sign, is completely ignored.
• Any characters in "C-style" comments is ignored (/* this is a comment */).
When creating new keymaps, please copy over the usual set of leading comments (have a
look at the default US keymaps).
In particular each file at the very least should contain a line indicating what type of mapping
it is supposed to be, for what host layout, what emulator, and which UI, like this:
# Symbolic Mapping, US Layout, C64, GTK
!RSHIFT 6 4
• !VSHIFT, followed by a shiftkey (RSHIFT or LSHIFT), specify what key will be used
as a virtual shift key when the shift flag is set.
• !SHIFTL, followed by a shiftkey (RSHIFT or LSHIFT), specify what key will be used
as a virtual shift-lock key; for example, C64 default keymaps will specify
!VSHIFT LSHIFT
!SHIFTL LSHIFT
For emulated keyboards that have only one shift key, set both !LSHIFT and !RSHIFT to the
same row/col and use RSHIFT for !VSHIFT and !SHIFTL.
• !LCTRL, followed by a row and a column value, specifiy where the left control key is
located on the emulated keyboard.
• !LCBM, followed by a row and a column value, specifiy where the left CBM key is located
on the emulated keyboard.
• !VCTRL, followed by a ctrlkey (LCTRL), specify what key will be used as a virtual
control key.
• !VCBM, followed by a cbmkey (LCBM), specify what key will be used as a virtual CBM
key.
For example, a C64 keymap would usually start with this block:
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT
!LCBM 7 5
!VCBM LCBM
!LCTRL 7 2
!VCTRL LCTRL
When creating new keymaps, make sure to create the respective set of commands first and
make sure the row/column values are correct.
Before you fix the rest of your mapping, make sure to create mappings for all modifier keys
that relate to the used row/column pairs and update their SHIFTFLAG accordingly. Getting
those right is the key to making more complex mappings possible later.
For a example a typical GTK C64 symbolic mapping would contain something like this:
Shift_R 6 4 0x0004 /* right SHIFT -> right SHIFT */
Shift_L 1 7 0x0002 /* left SHIFT -> left SHIFT */
Caps_Lock 1 7 0x0040 /* CAPS lock -> SHIFT lock */
Tab 7 5 0x2008 /* TAB -> CBM (can be combined with SHIFT) */
Control_L 7 2 0x4008 /* left CTRL -> CTRL (can be combined with SHIFT) */
Where:
• KEYSYM identifying the keysym: In (GTK) it is a literal keyboard symbol as a string
(for example "space"), in (SDL) it is a numeric keycode (for example "32").
You can use the "show keycodes in statusbar" feature to see what keysym is bound to
any key.
• ROW and COLUMN refer to the row and column of the emulated key on the emulated key-
board - all existing keymaps have the respective keyboard matrix in them in comments,
have a look.
• The SHIFTFLAG controls various aspects of how a host key is mapped to the emulated
keyboard. For example you may want to artificially add or remove certain modifiers
to/from the emulated keypress.
A keymap is parsed line by line. More complex mappings can be created by mapping the
same key with different SHIFTFLAG to different emulated keys in multiple lines:
• A key mapping is found when the key symbol matches
• and when none of the following reject conditions apply:
Value Hex Description Action
0 0x0000 The key is never shifted. If any SHIFT modifiers pressed,
then reject key.
8 0x0008 The key can be (optionally) If any SHIFT modifiers pressed on
shifted by the user. the host, and this flag is not set,
then reject key.
128 0x0080 SHIFT modifier required on host. If SHIFT modifier(s) not pressed
on the host, and this flag is set,
then reject key.
256 0x0100 Key is used for an alternative key- if no alternative mapping is en-
board mapping abled (eg C64 mode in x128), re-
ject key.
512 0x0200 ALT-R (ALT-GR) modifier re- If ALT-R modifier not pressed on
quired on host. the host, and this flag is set, then
reject key.
1024 0x0400 CTRL modifier required on host. If CTRL modifier not pressed on
the host, and this flag is set, then
reject key.
• If no reject condition was true then we found a possible match. If no other mapping
will be found, this is the one that will be used. We may or may not look for another
match, depending on:
Value Hex Description
32 0x0020 Another definition for this keysym/scancode follows later in the file. If
this flag is not set, stop looking for another match.
• Once a match was found, the virtual modifiers are applied:
Value Hex Description Action
1 0x0001 The key is shifted on the emulated virtual shift will be used when it is
keyboard not shifted on the host keyboard.
Chapter 3: System files 35
16 0x0010 Deshift key for this When the key is pressed with
keysym/scancode. shift on the host keyboard, shift
will not be used on the emulated
keyboard.
2048 0x0800 Key is combined with CBM for virtual CBM will be used when it
this keysym/scancode is not combined with CBM via an-
other mapped key.
4096 0x1000 Key is combined with CTRL for virtual CTRL will be used when
this keysym/scancode it is not combined with CTRL via
another mapped key.
• and last not least these are the flags left:
Value Hex Description
32768 0x8000 Do not emulate a "locked" switch for this key. This can be useful when
your host keyboard provides physical locking by itself. (currently works
only for the C128 40/80 and CAPS-lock keys)
For example this is is from the SDL C64 symbolic DE mapping:
# 32+1 not shifted on host, shifted on c64
60 5 7 0x0021 /* < -> < */
# 32+128 shifted on host, shifted on c64
60 5 4 0x00a0 /* > -> > */
# 512+16 alt-gr on host, deshift for c64
60 6 0 0x0210 /* altr+< -> pound */
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
When a bigger spaced key is used, it uses the upper left most column value.
F2 0 4 1 /* F2 -> F1 + SHIFT */
F3 0 5 8 /* F3 -> F3 (+SHIFT allowed) */
F4 0 5 1 /* F4 -> F3 + SHIFT */
F5 0 6 8 /* F5 -> F5 (+SHIFT allowed) */
F6 0 6 1 /* F6 -> F5 + SHIFT */
F7 0 3 8 /* F7 -> F7 (+SHIFT allowed) */
F8 0 3 1 /* F8 -> F7 + SHIFT */
where 0 and 4 identify the key (row 0, column 4 on the keyboard matrix), and 1 specifies
that every time the user presses F2 the shift key on the C64 keyboard must be pressed.
# Background
00 00 00
# Foreground
00 FF 00
Chapter 3: System files 38
3.5.2.1 Comments
Comments are started with either ; or # and occupy the rest of the line, they can also
appear inline after a directive or mapping.
For example:
# This is a comment
3.5.2.2 Directives
Directives are special commands for the parser. They start with ! and are case-insensitive.
!CLEAR
!clear
Clear all registered hotkeys. Best used as the first directive in the (main) hotkeys file.
!DEBUG
!debug <enable|disable|on|off>
Enable or disable debugging messages via VICE’s log system. Messages will be prefixed
with ’Hotkeys:’. Debugging is disabled by default.
!ELSE
!else
Take the false branch of an !if condition. See !IF for more on conditionals in hotkeys files.
!ENDIF
!endif
Close !if [!else] condition body. See !IF for more on condtionals in hotkeys.
!IF
@!if <condition>
Conditionally execute hotkeys file contents. If condition is true, the lines following !if
will be executed. May be followed by !else to specify lines that must be executed when
condition is false. Must be followed by !endif to end the conditional execution of lines.
Conditions can contain boolean expressions: the boolean operators ! (not), || (or) and &&
(and) are supported, as well as parenthesis to change (or emphasize) precedence. Condi-
tionals can be nested.
Chapter 3: System files 40
Only predefined boolean symbolic constants are available for use in the expressions, these
are:
true
false Boolean literals, useful for commenting out multiple lines of a hotkeys file, akin
to the #if 0 construct in C.
C64 The current emulator is x64
C64SC The current emulator is x64sc
C64DTV The current emulator is x64dtv
SCPU64 The current emulator is xscpu64
C128 The current emulator is x128
PET The current emulator is xpet
PLUS4 The current emulator is xplus4
CBM5X0 The current emulator is xcbm5x0
CBM6X0 The current emulator is xcbm2
VIC20 The current emulator is xvic
SDL1
SDL2
GTK3 UI identifiers. The can be used to only assign certain hotkeys for certain UIs.
Please note that to check for SDL regardless of library version the condition
SDL1 || SDL2 must be used.
MACOS
UNIX
WINDOWS Operation system identifiers. Since MacOS is genetically Unix, the UNIX iden-
tifier includes MacOS, while the MACOS identifier is only valid for MacOS. To
register a hotkey for all Unix except MacOs use UNIX && !MACOS.
Some examples of using conditionals
!if MACOS
# map hotkey if the host OS is MacOS
monitor-open <Command>Escape
!else
# map hotkey if not MacOS
monitor-open <Alt>h
!endif
!INCLUDE
!include <file>
Process <file> as if its contents were injected into the current file being processed. This
can be used recursively. The <file> argument can be inside quotes (") to be able to use
paths or filenames with spaces in them, and quotes inside quotes can be used by escaping
them with \, for example: !include "foo \"bar\".vhk".
TODO: document search order/logic for included files
Chapter 3: System files 41
For example:
!include "hotkeys-drive.vhk"
will include /usr/local/share/vice/hotkeys/hotkeys-drive.vhk, assuming the default
install prefix for VICE was used.
!UNDEF
!undef [<modifier>..]<keyname>
Remove a hotkey from whatever action it is mapped to.
For example:
!undef <Alt>r # Unmap Alt+r from ’restore display’
machine-reset-cpu <Alt>r # Map Alt+r to reset
4 Basic operation
This section describes the basic things you can do once the emulator has been fired up.
• 2!NAME
• 3!NAME
• 4!NAME
If you attach as a disk image (or smart-attach) any one of these files, the emulator will
simply pick up the other three (by examining the name) and then build a disk image using
all four.
It is possible that a reset may not be enough to take the machine to the OS initialization
sequence: in such cases, you will have to do a power cycle instead.
This is especially the case for the CBM-II emulators. Those machines examine a memory
location and if they find a certain "magic" value they only do what you know from the C64
as Run/Stop-Restore. Therefore, to really reset a CBM-II use power cycle.
54
FSDevice8ConvertP00=1
FSDevice8Dir="/home/ettore/cbm/stuff/c64p00"
FSDevice8SaveP00=1
FSDevice8HideCBMFiles=1
Notice that, when resource values are saved with “Save settings”, the emulator only modifies
its own section, leaving the others unchanged.
AutostartWarp
Boolean, if true temporarily enable warp mode when autostarting (all emulators
except vsid).
AutostartPrgMode
Integer specifying the autostart mode for prg files (all emulators except vsid).
(0: virtual filesystem, 1: inject to RAM, 2: copy to D64)
AutostartDelayRandom
Boolean, enables a short (0-10 frames) random delay on autostart. This is
added to the AutostartDelay (all emulators except vsid).
AutostartDelay
Integer specifying the delay in seconds required to wait for the kernal reset rou-
tine before autostart. (0: use builtin value for standard kernal) When tweaking
this value start with ’large’ values and then lower it, a value that is too small
results in autostart not happening. (all emulators except vsid). (0..1000)
AutostartOnDoubleClick
Use autostart when double clicking on a file in the file list. (only in the GTK3
GUI) (all emulators except vsid)
-autostart-handle-tde
+autostart-handle-tde
Handle/Do not handle True Drive Emulation on autostart
(AutostartHandleTrueDriveEmulation=1, AutostartHandleTrueDriveEmulation=0)
(all emulators except vsid).
-autostart-warp
+autostart-warp
Enable/disable warp mode during autostart (AutostartWarp=1,
AutostartWarp=0) (all emulators except vsid).
-autostartprgmode <Mode>
Set autostart mode for PRG files (AutostartPrgMode) (all emulators except
vsid). (0: virtual filesystem, 1: inject to RAM, 2: copy to D64)
-autostart-delay-random
+autostart-delay-random
Enable/disable random delay on autostart (AutostartDelayRandom) (all emu-
lators except vsid).
-autostart-delay <seconds>
Set initial autostart delay in seconds for the kernal reset routine before au-
tostart. (0: use builtin value for standard kernal). When tweaking this value
start with ’large’ values and then lower it, a value that is too small results
in autostart not happening. (AutostartDelay) (all emulators except vsid).
(0..1000)
-autostart-on-doubleclick
+autostart-on-doubleclick
Enable/disable using autostart when double clicking on a file in the file list.
(AutostartOnDoubleClick) (only in the GTK3 GUI) (all emulators except
vsid)
KeymapUserSymFile
String specifying the name of the user keymap file for symbolic mapping (see
Section 1.2 [Keyboard emulation], page 5,
KeymapUserPosFile
String specifying the name of the user keymap file for positional mapping (see
Section 1.2 [Keyboard emulation], page 5,
KeyboardMapping
Integer specifying the keyboard layout of the host. (0: American 1: British 2:
Danish 3: Dutch 4: Finnish 5: French 6: German 7: Italian 8: Norwegian 9:
Spanish 10: Swedish 11: Swiss 12: Turkish).
KeyboardType
Integer specifying the emulated type of keyboard. (machine specific, currently
always 0 except for xpet: 0: Business (us) 1: Business (uk) 2: Business (de) 3:
Business (jp) 4: Graphics (us)).
JoyPort2Device
Set the device attached to: control port 2 (x64, x64sc, x64dtv, xscpu64, x128,
xcbm5x0, xplus4) (Section 5.7.3 [Control port and devices], page 62).
JoyPort3Device
Set the device attached to: joystick adapter port 1 (x64, x64sc, xscpu64, x128,
x64dtv, xcbm2, xcbm5x0, xpet, xvic, xplus4) (Section 5.7.3 [Control port and
devices], page 62).
JoyPort4Device
Set the device attached to: joystick adapter port 2 (x64, x64sc, xscpu64, x128,
x64dtv, xcbm2, xcbm5x0, xpet, xvic, xplus4) (Section 5.7.3 [Control port and
devices], page 62).
JoyPort5Device
Set the device attached to: joystick adapter port 3 (x64, x64sc, xscpu64, x128,
x64dtv, xcbm2, xcbm5x0, xpet, xvic, xplus4) (Section 5.7.3 [Control port and
devices], page 62).
JoyPort6Device
Set the device attached to: joystick adapter port 4 (x64, x64sc, xscpu64,
x128, x64dtv, xcbm2, xcbm5x0, xvic) Sid Cartridge on the Plus4 (xplus4)
(Section 5.7.3 [Control port and devices], page 62).
JoyPort7Device
Set the device attached to: joystick adapter port 5 (x64, x64sc, xscpu64,
x128, x64dtv, xcbm2, xcbm5x0, xvic) (Section 5.7.3 [Control port and devices],
page 62).
JoyPort8Device
Set the device attached to: joystick adapter port 6 (x64, x64sc, xscpu64,
x128, x64dtv, xcbm2, xcbm5x0, xvic) (Section 5.7.3 [Control port and devices],
page 62).
JoyPort9Device
Set the device attached to: joystick adapter port 7 (x64, x64sc, xscpu64,
x128, x64dtv, xcbm2, xcbm5x0, xvic) (Section 5.7.3 [Control port and devices],
page 62).
JoyPort10Device
Set the device attached to: joystick adapter port 8 (x64, x64sc, xscpu64,
x128, x64dtv, xcbm2, xcbm5x0, xvic) (Section 5.7.3 [Control port and devices],
page 62).
JoyPort11Device
Set the device attached to: joystick adapter port 9 (xplus4) (Section 5.7.3
[Control port and devices], page 62).
BBRTCSave
Enable saving of the battery-backed real time clock data.
Chapter 5: Settings and resources 61
-controlport11device <device>
Set the device attached to: joystick adapter port 9 (xplus4) (JoyPort11Device)
(Section 5.7.3 [Control port and devices], page 62).
-bbrtcsave
+bbrtcsave
Enable/Disable saving of the battery-backed real time clock data (BBRTCSave).
nr device N1 N2 I1 I2 I3 I4 I5 I6 I7 I8 E1 E2 E3 E4 E5 E6 E
0 None X X X X X X X X X X X X X X X X X
1 Joystick X X X X X X X X X X X X X X X X X
2 Paddles X X
3 Mouse (1351) X X
4 Mouse (NEOS) X X
5 Mouse (AMIGA) X X X X X X X X X X
6 Trackball (CX22) X X X X X X X X X X
7 Mouse (ST) X X X X X X X X X X
8 Mouse (SmartMouse) X X
9 Mouse (Micromys) X X
10 KoalaPad X X
11 Lightpen (up trigger) X
12 Lightpen (left trigger) X
13 Lightpen (Datel) X
14 Lightgun (Magnum Phaser) X
15 Lightgun (Stack Rifle) X
16 Lightpen (Inkwell) X
18 Sampler (2bit) X X X X X X X X X X
19 Sampler (4bit) X X X X X X X X X X
20 RTC (BBRTC) X X
21 Dongle (Paperclip64D) X X
22 Keypad (Coplin) X X X X X X X X X X X X X X X X X
23 Keypad (Cardco) X X
24 Keypad (CX85) X X
25 Keypad (RushWare) X X X X X X X X X X X X X X X X X
26 Keypad (CX21) X X
27 Dongle (Script 64) X X
28 Dongle (VizaWrite 64) X X
29 Dongle (WaaSoft) X X
30 SNES Pad (TrapThem) X X
31 SNES Pad (Ninja) X X
32 Spaceballs joy adapter X X
33 Inception joy adapter X X
34 MultiJoy adapter X X
36 ProtoPad X X
Chapter 5: Settings and resources 63
nr device N1 N2 I1 I2 I3 I4 I5 I6 I7 I8 E1 E2 E3 E4 E5 E6 E
0 None X X X X X X X X X X X X X X X X X
1 Joystick X X X X X X X X X X X X X X X X X
2 Paddles X X
3 Mouse (1351) X X
4 Mouse (NEOS) X X
5 Mouse (AMIGA) X X X X X X X X X X
6 Trackball (CX22) X X X X X X X X X X
7 Mouse (ST) X X X X X X X X X X
8 Mouse (SmartMouse) X X
9 Mouse (Micromys) X X
10 KoalaPad X X
11 Lightpen (up trigger) X
12 Lightpen (left trigger) X
13 Lightpen (Datel) X
14 Lightgun (Magnum Phaser) X
15 Lightgun (Stack Rifle) X
16 Lightpen (Inkwell) X
18 Sampler (2bit) X X X X X X X X X X
19 Sampler (4bit) X X X X X X X X X X
20 RTC (BBRTC) X X
21 Dongle (Paperclip64D) X X
27 Dongle (Script 64) X X
28 Dongle (VizaWrite 64) X X
29 Dongle (WaaSoft) X X
30 SNES Pad (TrapThem) X X
31 SNES Pad (Ninja) X X
32 Spaceballs joy adapter X X
33 Inception joy adapter X X
34 MultiJoy adapter X X
36 ProtoPad X X
37 I/O Simulation device X X
38 Microflyte joystick X X
39 Dongle (Paperclip64E) X X
40 Dongle (Paperclip64SC) X X
41 Dongle (Paperclip2) X X
x64dtv control ports and devices:
Chapter 5: Settings and resources 64
nr device N1 N2 E1
0 None X X X
1 Joystick X X X
22 Keypad (Coplin) X X X
25 Keypad (RushWare) X X X
37 I/O Simulation device X X
xcbm2/xpet can handle the following devices on all control ports:
nr device
0 None
1 Joystick
xcbm5x0 control ports and devices:
nr device N1 N2 I1 I2 I3 I4 I5 I6 I7 I8 E1 E2 E3 E4 E5 E6 E
0 None X X X X X X X X X X X X X X X X X
1 Joystick X X X X X X X X X X X X X X X X X
2 Paddles X X
3 Mouse (1351) X X
4 Mouse (NEOS) X X
5 Mouse (AMIGA) X X X X X X X X X X
6 Trackball (CX22) X X X X X X X X X X
7 Mouse (ST) X X X X X X X X X X
8 Mouse (SmartMouse) X X
9 Mouse (Micromys) X X
10 KoalaPad X X
18 Sampler (2bit) X X X X X X X X X X
19 Sampler (4bit) X X X X X X X X X X
20 RTC (BBRTC) X X
30 SNES Pad (TrapThem) X X
31 SNES Pad (Ninja) X X
33 Inception joy adapter X X
34 MultiJoy adapter X X
36 ProtoPad X X
37 I/O Simulation device X X
38 Microflyte joystick X X
xplus4 control ports and devices:
nr device N1 N2 E1 E2 E3 E4 E5 E6 E7 E8 SC
0 None X X X X X X X X X X X
1 Joystick X X X X X X X X X X X
2 Paddles X
3 Mouse (1351) X
4 Mouse (NEOS) X
5 Mouse (AMIGA) X X X
6 Trackball (CX22) X X X
Chapter 5: Settings and resources 65
7 Mouse (ST) X X X
8 Mouse (SmartMouse) X
9 Mouse (Micromys) X
10 KoalaPad X
18 Sampler (2bit) X X X
19 Sampler (4bit) X X X
20 RTC (BBRTC) X
22 Keypad (Coplin) X X X
23 Keypad (Cardco) X
24 Keypad (CX85) X
25 Keypad (RushWare) X X X
26 Keypad (CX21) X
30 SNES Pad (TrapThem) X
36 ProtoPad X
37 I/O Simulation device X X
38 Microflyte joystick X
xvic control ports and devices:
nr device N1 I1 I2 I3 I4 I5 I6 I7 I8 E1 E2 E3 E4 E5 E6 E7 E
0 None X X X X X X X X X X X X X X X X X
1 Joystick X X X X X X X X X X X X X X X X X
2 Paddles X
3 Mouse (1351) X
4 Mouse (NEOS) X
5 Mouse (AMIGA) X X X X X X X X X
6 Trackball (CX22) X X X X X X X X X
7 Mouse (ST) X X X X X X X X X
8 Mouse (SmartMouse) X
9 Mouse (Micromys) X
10 KoalaPad X
11 Lightpen (up trigger) X
12 Lightpen (left trigger) X
13 Lightpen (Datel) X
14 Lightgun (Magnum Phaser) X
15 Lightgun (Stack Rifle) X
16 Lightpen (Inkwell) X
18 Sampler (2bit) X X X X X X X X X
19 Sampler (4bit) X X X X X X X X X
20 RTC (BBRTC) X
22 Keypad (Coplin) X X X X X X X X X
23 Keypad (Cardco) X
24 Keypad (CX85) X
25 Keypad (RushWare) X X X X X X X X X
26 Keypad (CX21) X
30 SNES Pad (TrapThem) X
31 SNES Pad (Ninja) X
Chapter 5: Settings and resources 66
abr meaning
N1 Native control port 1
N2 Native control port 2
I1 Inception Joystick adapter
port 1
I2 Inception Joystick adapter
port 2
I3 Inception Joystick adapter
port 3
I4 Inception Joystick adapter
port 4
I5 Inception Joystick adapter
port 5
I6 Inception Joystick adapter
port 6
I7 Inception Joystick adapter
port 7
I8 Inception Joystick adapter
port 8
E1 Other Joystick adapter port
1
E2 Other Joystick adapter port
2
E3 Other Joystick adapter port
3
E4 Other Joystick adapter port
4
E5 Other Joystick adapter port
5
E6 Other Joystick adapter port
6
E7 Other Joystick adapter port
7
E8 Other Joystick adapter port
8
SC xplus4 SidCart joystick
port
Chapter 5: Settings and resources 67
JoyDevice1
JoyDevice2
JoyDevice3
JoyDevice4
JoyDevice5
JoyDevice6
JoyDevice7
JoyDevice8
JoyDevice9
JoyDevice10
JoyDevice11
Integer specifying which joystick device the emulator should use for joystick
emulation for ports 1 - 10, respectively. (0=None, 1=Joystick 1, 2=Joystick
2, 4=Numpad, 8=Keyset 1, 16=Keyset 2 on OS/2) (0=None, 1=Numpad,
2=Keyset 1, 3=Keyset 2, 4=HID joystick 0, 5=HID joystick 1 on Mac OS X)
The available joysticks might differ depending on operating system and joystick
support in the OS (Linux joystick module must be available for example).
JoyStick1AutoFire
JoyStick2AutoFire
JoyStick3AutoFire
JoyStick4AutoFire
JoyStick5AutoFire
JoyStick6AutoFire
JoyStick7AutoFire
JoyStick8AutoFire
JoyStick9AutoFire
JoyStick10AutoFire
JoyStick11AutoFire
Boolean, enables autofire for joystick emulation for ports 1 - 10, respectively.
(0=Off, 1=On)
Chapter 5: Settings and resources 68
JoyStick1AutoFireMode
JoyStick2AutoFireMode
JoyStick3AutoFireMode
JoyStick4AutoFireMode
JoyStick5AutoFireMode
JoyStick6AutoFireMode
JoyStick7AutoFireMode
JoyStick8AutoFireMode
JoyStick9AutoFireMode
JoyStick10AutoFireMode
JoyStick11AutoFireMode
Integer specifying the autofire mode to be used for for joystick emulation for
ports 1 - 10, respectively. (0=Autofire when fire is pressed, 1=Permanent aut-
ofire except when fire is pressed)
JoyStick1AutoFireSpeed
JoyStick2AutoFireSpeed
JoyStick3AutoFireSpeed
JoyStick4AutoFireSpeed
JoyStick5AutoFireSpeed
JoyStick6AutoFireSpeed
JoyStick7AutoFireSpeed
JoyStick8AutoFireSpeed
JoyStick9AutoFireSpeed
JoyStick10AutoFireSpeed
JoyStick11AutoFireSpeed
Integer specifying the amount of fire button presses per second for autofire for
joystick emulation for ports 1 - 10, respectively. (1-255)
JoyOpposite
Boolean, if true allow (usually impossible) bitcombinations for opposite direc-
tions. (all emulators except vsid)
SmartMouseRTCSave
Boolean, specified whether to save real time clock data for the SmartMouse
PaddlesInput1
Integer speciftying the host input for the potentiometers of joystick port 1 (all
emulators except xcbm2 and xpet) (0: Mouse, 1: Joystick axis)
PaddlesInput2
Integer speciftying the host input for the potentiometers of joystick port 2 (all
emulators except xcbm2, xplus4 and xvic) (0: Mouse, 1: Joystick axis)
Chapter 5: Settings and resources 69
KeySet1NorthWest
KeySet1North
KeySet1NorthEast
KeySet1East
KeySet1SouthEast
KeySet1South
KeySet1SouthWest
KeySet1West
KeySet1Fire
KeySet1Fire2
KeySet1Fire3
KeySet1Fire4
KeySet1Fire5
KeySet1Fire6
KeySet1Fire7
KeySet1Fire8
Integers specifying the keycodes for keyset 1 (all emulators except vsid).
KeySet2NorthWest
KeySet2North
KeySet2NorthEast
KeySet2East
KeySet2SouthEast
KeySet2South
KeySet2SouthWest
KeySet2West
KeySet2Fire
KeySet2Fire2
KeySet2Fire3
KeySet2Fire4
KeySet2Fire5
KeySet2Fire6
KeySet2Fire7
KeySet2Fire8
Integers specifying the keycodes for keyset 2 (all emulators except vsid).
KeySetEnable
Boolean that specifies whether user defined keysets are enabled (all emulators
except vsid).
KbdbufDelay
Integer specifying the additional keyboard delay. (0: use default)
-extrajoydev1 <0-8>
-extrajoydev2 <0-8>
-extrajoydev3 <0-8>
-extrajoydev4 <0-8>
-extrajoydev5 <0-8>
-extrajoydev6 <0-8>
-extrajoydev7 <0-8>
-extrajoydev8 <0-8>
-extrajoydev9 <0-8>
Set device for extra joystick port 1, 2, 3, 4, 5, 6, 7 and 8. (JoyDevice3,
JoyDevice4, JoyDevice5, JoyDevice6, JoyDevice7, JoyDevice8,
JoyDevice9, JoyDevice10, JoyDevice11).
-joystick1autofire
+joystick1autofire
Enable/disable autofire for native joystick port 1 (JoyStick1AutoFire=1,
JoyStick1AutoFire=0). (all emulators except xcbm2, xpet and vsid)
-joystick2autofire
+joystick2autofire
Enable/disable autofire for native joystick port 2 (JoyStick2AutoFire=1,
JoyStick2AutoFire=0). (all emulators except xcbm2, xpet, xvic and vsid)
-extrajoystick1autofire
+extrajoystick1autofire
Enable/disable autofire for joystick adapter port 1 (JoyStick3AutoFire=1,
JoyStick3AutoFire=0). (all emulators except vsid)
-extrajoystick2autofire
+extrajoystick2autofire
Enable/disable autofire for joystick adapter port 2 (JoyStick4AutoFire=1,
JoyStick4AutoFire=0). (all emulators except vsid)
-extrajoystick3autofire
+extrajoystick3autofire
Enable/disable autofire for joystick adapter port 3 or plus4 sidcard joystick port
(JoyStick5AutoFire=1, JoyStick5AutoFire=0). (all emulators except vsid)
-extrajoystick4autofire
+extrajoystick4autofire
Enable/disable autofire for joystick adapter port 4 (JoyStick6AutoFire=1,
JoyStick6AutoFire=0). (all emulators except vsid)
-extrajoystick5autofire
+extrajoystick5autofire
Enable/disable autofire for joystick adapter port 5 (JoyStick7AutoFire=1,
JoyStick7AutoFire=0). (all emulators except vsid)
-extrajoystick6autofire
+extrajoystick6autofire
Enable/disable autofire for joystick adapter port 6 (JoyStick8AutoFire=1,
JoyStick8AutoFire=0). (all emulators except vsid)
Chapter 5: Settings and resources 71
-extrajoystick7autofire
+extrajoystick7autofire
Enable/disable autofire for joystick adapter port 7 (JoyStick9AutoFire=1,
JoyStick9AutoFire=0). (all emulators except vsid)
-extrajoystick8autofire
+extrajoystick8autofire
Enable/disable autofire for joystick adapter port 8 (JoyStick10AutoFire=1,
JoyStick10AutoFire=0). (all emulators except vsid)
-extrajoystick9autofire
+extrajoystick9autofire
Enable/disable autofire for joystick adapter port 9 (JoyStick11AutoFire=1,
JoyStick11AutoFire=0). (xplus4 only)
-joystick1autofiremode <Mode>
Set autofire mode for native joystick port 1 (JoyStick1AutoFireMode) (all
emulators except xcbm2, xpet and vsid). (0: Autofire when fire is pressed, 1:
Permanent autofire except when fire is pressed)
-joystick2autofiremode <Mode>
Set autofire mode for native joystick port 2 (JoyStick2AutoFireMode) (all
emulators except xcbm2, xpet, xvic and vsid). (0: Autofire when fire is pressed,
1: Permanent autofire except when fire is pressed)
-extrajoystick1autofiremode <Mode>
Set autofire mode for joystick adapter port 1 (JoyStick3AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick2autofiremode <Mode>
Set autofire mode for joystick adapter port 2 (JoyStick4AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick3autofiremode <Mode>
Set autofire mode for joystick adapter port 3 or plus4 sidcard joystick port
(JoyStick5AutoFireMode) (all emulators except vsid). (0: Autofire when fire
is pressed, 1: Permanent autofire except when fire is pressed)
-extrajoystick4autofiremode <Mode>
Set autofire mode for joystick adapter port 4 (JoyStick6AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick5autofiremode <Mode>
Set autofire mode for joystick adapter port 5 (JoyStick7AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
Chapter 5: Settings and resources 72
-extrajoystick6autofiremode <Mode>
Set autofire mode for joystick adapter port 6 (JoyStick8AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick7autofiremode <Mode>
Set autofire mode for joystick adapter port 7 (JoyStick9AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick8autofiremode <Mode>
Set autofire mode for joystick adapter port 8 (JoyStick10AutoFireMode) (all
emulators except vsid). (0: Autofire when fire is pressed, 1: Permanent autofire
except when fire is pressed)
-extrajoystick9autofiremode <Mode>
Set autofire mode for joystick adapter port 9 (JoyStick11AutoFireMode)
(xplus4 only). (0: Autofire when fire is pressed, 1: Permanent autofire except
when fire is pressed)
-joystick1autofirespeed <1-255>
-joystick2autofirespeed <1-255>
Set the amount of presses per second for autofire for joystick emulation of port
1 and 2, respectively. (JoyStick1AutoFireSpeed, JoyStick2AutoFireSpeed).
-extrajoystick1autofirespeed <1-255>
-extrajoystick2autofirespeed <1-255>
-extrajoystick3autofirespeed <1-255>
-extrajoystick4autofirespeed <1-255>
-extrajoystick5autofirespeed <1-255>
-extrajoystick6autofirespeed <1-255>
-extrajoystick7autofirespeed <1-255>
-extrajoystick8autofirespeed <1-255>
-extrajoystick9autofirespeed <1-255>
Set the amount of presses per second for autofire for extra joystick port 1,
2, 3, 4, 5, 6, 7, 8 and 9. (JoyStick3AutoFireSpeed, JoyStick4AutoFireSpeed,
JoyStick5AutoFireSpeed, JoyStick6AutoFireSpeed, JoyStick7AutoFireSpeed,
JoyStick8AutoFireSpeed, JoyStick9AutoFireSpeed, JoyStick10AutoFireSpeed,
JoyStick11AutoFireSpeed).
-joyopposite
+joyopposite
Enable/disable opposite joystick directions (JoyOpposite=1, JoyOpposite=0).
(all emulators except vsid)
-mouse
+mouse Enable/Disable mouse grab
Chapter 5: Settings and resources 73
-smartmousertcsave
+smartmousertcsave
Enable/Disable saving of the real time clock data for the SmartMouse
(SmartMouseRTCSave=1, SmartMouseRTCSave=0)
-paddles1inputmouse
Set the host input for the potentiometers of joystick port 1 to the mouse.
(PaddlesInput1=0)
-paddles1inputmouse
Set the host input for the potentiometers of joystick port 1 to a joystick axis.
(PaddlesInput1=1)
-paddles2inputmouse
Set the host input for the potentiometers of joystick port 2 to the mouse.
(PaddlesInput2=0)
-paddles2inputmouse
Set the host input for the potentiometers of joystick port 2 to a joystick axis.
(PaddlesInput2=1)
-keyset
+keyset Enable/disable user defined keyset (KeySetEnable=1, KeySetEnable=0) (all
emulators except vsid).
-keybuf-delay <value>
Set additional keyboard buffer delay (KbdbufDelay). (0: use default)
• “Sound suspend time”, will cause the audio playback to pause for the specified number
of seconds whenever some clicking happens. If “Keep going” is selected, no pausing is
done.
The following menu items control sound input:
• “Sampler Device” specifies the host device/method used for sampling/sound input,
currently portaudio (if linked in) and file methods are supported.
• “Sampler Gain” specifies the amount of gain (increase the input volume if above 100
or decrease the input volume if below 100) for the input of the sampler device.
• “Sampler File” specifies the name of the file to be uses as an input source for the ’file’
method/device.
• sgi, for the Silicon Graphics audio device (SoundDeviceArg specifies the
audio device, /dev/audio by default);
• speed, like dummy but also calculating samples (mainly used to evaluate
the speed of the sample generator);
• sun, for the Solaris and NetBDS audio device (unfinished; SoundDeviceArg
specifies the audio device, /dev/audio by default).
• uss, for the Linux/FreeBSD Universal Sound System driver
(SoundDeviceArg specifies the audio device, /dev/dsp by default);
• wmm, for the Windows Multimedia Waveout sound device.
These drivers will actually be present only if the VICE configuration script
detected the corresponding development support at the time of compilation.
SoundDeviceArg
String specifying an additional parameter for the audio driver (see
SoundDeviceName).
SoundRecordDeviceName
String specifying the driver used for sound recording.
Implemented drivers are:
• aiff, for the Apple Interchange File Format 16bit sound recorder driver.
• dump, writing all the write accesses to the registers to a file (specified by
SoundDeviceArg, default value is vicesnd.sid);
• fs, writing samples to a file (specified by SoundDeviceArg; default is
vicesnd.raw); iff, for the Amiga Interchange File Format (8SVX) 8bit
sound recorder driver.
• mp3, for the MP3 sound recorder driver.
• flac, for the FLAC sound recorder driver.
• ogg, for the ogg/vorbis sound recorder driver.
• voc, for the Creative Voice (VOC) sound recorder driver.
• wav, for the RIFF/WAV sound recorder driver.
These drivers will actually be present only if the VICE configuration script
detected the corresponding development support at the time of compilation.
SoundRecordDeviceArg
String specifying additional arguments for sound recording.
SoundFragmentSize
Integer specifying the fragment size. (0: very small, 1: small, 2: medium, 3:
large, 4: very large)
SoundVolume
Integer specifying the master volume in percent. (0..100)
SoundOutput
Integer specifying the type of sound output. Output is selectable between ’sys-
tem’ (system decides to use mono or stereo output based on the presence of a
Chapter 5: Settings and resources 76
stereo sid), ’always mono’ (output is always mono, stereo streams are mixed
into a mono stream) or ’always stereo’ (output is always stereo, mono streams
are multiplexed to a stereo stream). (0: system, 1: mono, 2: stereo)
SamplerDevice
Integer specifying the device/method to be used for sound input. (0: sample
file device, 1: PortAudio device)
SamplerGain
Integer specifying the gain to be used for sound input. (>100 increase input
volume, <100: decrease input volume)
SampleName
String specifying the name of the file/sample to be used as the input source for
the ’file’ sampler device.
-dszerogapdelay <value>
Set delay in cycles for a zero gap in the tap. Mostly relevant for v0 .tap files
which could not properly encode gaps > 255. (DatasetteZeroGapDelay).
-dsspeedtuning <value>
Set amount of deviation from the correct motor speed. 100000 equals 100%
deviation. (DatasetteSpeedTuning).
-dstapewobblefreq <value>
Set tape wobble frequency. 1000 equals 1Hz, default is 3Hz.
(DatasetteTapeWobbleFrequency).
-dstapewobbleamp <value>
Set tape wobble amplitude. 100000 equals 100% deviation of the correct motor
speed. (DatasetteTapeWobbleAmplitude).
-dstapeerror <value>
Set tape alignment error. This is right now very inaccurately simulated
by adding a random amount of cycles. 1000 equals +/- one cycle.
(DatasetteTapeAzimuthError).
-datasettesound
+datasettesound
Enable/disable Datasette sound emulation (DatasetteSound=1,
DatasetteSound=0).
-dssoundvolume <value>
Set the volume of the Datasette sound (DatasetteSoundVolume).
• “Enable parallel cable” enables emulation of a SpeedDOS parallel cable; if you switch
this option on and replace the original Commodore ROMs with SpeedDOS-compatible
ones, you can speed up loading/saving times.
• “Idle method” specifies which method the drive emulation should use to save CPU
cycles in the host CPU. There are three methods:
• Skip cycles: Each time the serial line is accessed by the C64, the drive executes all
the cycles since the last time it ran. If the number of elapsed cycles is larger than
a certain value, the drive discards part of them.
• Trap idle: The disk drive is still emulated upon serial line accesses as with the
previous option, but it is also always emulated at the end of each screen frame.
If the drive gets into the DOS idle loop, only pending interrupts are emulated to
save time.
• No traps: Like “Trap idle”, but without any traps at all. So basically the drive
works exactly as with the real thing, and nothing is done to reduce the power
needs of the drive emulation.
The first option (“Skip cycles”) is usually best for performance, as the drive is emulated
as little as possible; on the other hand, you may notice sudden slowdowns (when the
drive executes several cycles at once) and the LED status is never updated (because
it would not be possible to do correctly so). Moreover, if the drive tries to get in sync
with the computer in some weird way and the computer does not access the serial line
for a long time, it is possible that some cycles are discarded and the sync is lost. Notice
that this hack will have no effect on performance if a program continuously reads from
the IEC port, as the drive will have to be fully emulated in any case (some stupid
programs do this, even when they don’t actually need to use the drive).
The second option (“Trap idle”) is usually a bit slower, as at least interrupts are always
emulated, but ensures the LED state is always updated correctly and always keeps the
drive and the computer in sync. On the other hand, if a program installs a non-standard
idle loop in the drive, the drive CPU has to be emulated even when not necessary and
the global emulation speed is then much slower.
• “40-track image support” specifies how 40-track (“extended”) disk images should be
supported. There are three possible ways:
• “Never extend” never extends disk images at all (so if a program tries to write
tracks beyond the 35th, it is not allowed to do so);
• “Ask on extend” prompts the user as soon as a program tries to write tracks
beyond the 35th, and the user can then choose whether he wants the disk image
to be extended or not;
• “Extend on access” simply extends the disk image as soon the program needs it,
without prompting the user.
DriveSoundEmulation
Boolean controlling whether the drive noise emulation is turned on (all emula-
tors except vsid).
DriveSoundEmulationVolume
Integer specifying the volume of the drive noise emulation (all emulators except
vsid). (0..4000, 4000 equals 100.0%.)
Drive8Type
Drive9Type
Drive10Type
Drive11Type
Integers specifying the model number for drives 8 to 11. Possible values are
1541 [all emulators except xcbm2, xcbm5x0, xpet and vsid], 1542 (1541-II) [all
emulators except xcbm2, xcbm5x0, xpet and vsid], 1570 [all emulators except
xcbm2, xcbm5x0, xpet and vsid], 1571 [all emulators except xcbm2, xcbm5x0,
xpet and vsid], 1573 (1571CR) [x128 only], 1551 [xplus4 only], 1581 [all emula-
tors except xcbm2, xcbm5x0, xpet and vsid], 1001 [all emulators except x64dtv,
xplus4 and vsid], 2000 [all emulators except xcbm2, xcbm5x0, xpet and vsid],
2031 [all emulators except x64dtv, xplus4 and vsid], 2040 [all emulators except
x64dtv, xplus4 and vsid], 3040 [all emulators except x64dtv, xplus4 and vsid],
4000 [all emulators except xcbm2, xcbm5x0, xpet and vsid], 4040 [all emulators
except x64dtv, xplus4 and vsid], 4844 (CMD HD) [all emulators except xcbm2,
xcbm5x0, xpet and vsid], 8050 [all emulators except x64dtv, xplus4 and vsid],
8250 [all emulators except x64dtv, xplus4 and vsid]. 9000 [all emulators except
x64dtv, xplus4 and vsid].
Drive8RTCSave
Drive9RTCSave
Drive10RTCSave
Drive11RTCSave
Integer specifying whether the RTC data of drive 8 to 11 should be saved when
changed or not (drive type 2000/4000/4844 only).
Drive8ParallelCable
Drive9ParallelCable
Drive10ParallelCable
Drive11ParallelCable
integers controlling what type of parallel cable is emulated for drives 8 to 11
(x64, x64sc, xscpu64, x128 and xplus4 only). x64, x64sc, xscpu64, x128: (0:
None, 1: Standard, 2: Dolphin DOS 3, 3: Formel64) xplus4: (0: None, 1:
Standard)
Drive8ProfDOS
Drive9ProfDOS
Drive10ProfDOS
Drive11ProfDOS
Booleans controlling whether Professional DOS is emulated or not for drives 8
to 11 (x64, x64sc, xscpu64 and x128 only).
Chapter 5: Settings and resources 81
Drive8SuperCard
Drive9SuperCard
Drive10SuperCard
Drive11SuperCard
Booleans controlling whether Supercard is emulated or not for drives 8 to 11
(x64, x64sc, xscpu64 and x128 only).
Drive8StarDos
Drive9StarDos
Drive10StarDos
Drive11StarDos
Booleans controlling whether StarDOS is emulated or not for drives 8 to 11
(x64, x64sc, xscpu64 and x128 only).
Drive8RAM2000
Drive9RAM2000
Drive10RAM2000
Drive11RAM2000
Booleans controlling whether a RAM block is emulated at $2000-$3FFF for
drive 8 to 11.
Drive8RAM4000
Drive9RAM4000
Drive10RAM4000
Drive11RAM4000
Booleans controlling whether a RAM block is emulated at $4000-$5FFF for
drive 8 to 11.
Drive8RAM6000
Drive9RAM6000
Drive10RAM6000
Drive11RAM6000
Booleans controlling whether a RAM block is emulated at $6000-$7FFF for
drive 8 to 11.
Drive8RAM8000
Drive9RAM8000
Drive10RAM8000
Drive11RAM8000
Booleans controlling whether a RAM block is emulated at $8000-$9FFF for
drive 8 to 11.
Drive8RAMA000
Drive9RAMA000
Drive10RAMA000
Drive11RAMA000
Booleans controlling whether a RAM block is emulated at $A000-$BFFF for
drive 8 to 11.
Chapter 5: Settings and resources 82
Drive8ExtendImagePolicy
Drive9ExtendImagePolicy
Drive10ExtendImagePolicy
Drive11ExtendImagePolicy
Integer specifying the policy for 40-track support for drives 8 to 11. (0: never
extend, 1: ask on extend, 2: extend on access)
Drive8IdleMethod
Drive9IdleMethod
Drive10IdleMethod
Drive11IdleMethod
Integers specifying the idling method for the drive CPU. See Section 5.11 [Drive
settings], page 78. (0: none, 1: skip cycles, 2: trap idle)
Drive8RPM
Drive9RPM
Drive10RPM
Drive11RPM
Integers specifying the rotation speed of the drive, multiplied by 100, so 300rpm
equals 30000.
Drive8WobbleFrequency
Drive9WobbleFrequency
Drive10WobbleFrequency
Drive11WobbleFrequency
Integers specifying the drive wobble frequency. 1000 equals 1Hz.
Drive8WobbleAmplitude
Drive9WobbleAmplitude
Drive10WobbleAmplitude
Drive11WobbleAmplitude
Integers specifying the drive wobble amplitude. 1000 equals +/- 1 RPM.
Drive8FixedSize
Drive9FixedSize
Drive10FixedSize
Drive11FixedSize
Integer specifying the size of the diskimage (in bytes) returned to SCSI capacity
inquiries for CMD HDs. A disk image must be attached for a valid size to be
returned. A value of "0" will report back the current image size. Values may
also be followed by the suffix "K", "M", or "G" for kilobyte, megabyte, and
gigabyte respectively. Default is "8G".
Chapter 5: Settings and resources 83
DosName1540
DosName1541
DosName1541ii
DosName1570
DosName1571
DosName1581
DosName2000
DosName4000
DosNameCMDHD
Strings specifying the names of the ROM images for the drive emulation. (all
emulators except xcbm2, xcbm5x0, xpet and vsid)
DosName1551
String specifying the name of the ROM image for the drive emulation. (xplus4
only)
DosName1571cr
String specifying the name of the ROM image for the drive emulation. (x128
only)
DosName2031
DosName2040
DosName3040
DosName4040
DosName1001
DosName9000
Strings specifying the names of the ROM images for the drive emulation. (all
emulators except x64dtv, xplus4 and vsid)
DriveProfDOS1571Name
String specifying the filename of the 1571 professional DOS ROM image (x64,
x64sc, xscpu64 and x128 only).
DriveSuperCardName
String specifying the filename of the Supercard ROM image (x64, x64sc,
xscpu64 and x128 only).
DriveStarDosName
String specifying the filename of the image of the lower half of the StarDOS
ROM (x64, x64sc, xscpu64 and x128 only).
FliplistName
String specifying the filename of the current flip list. (Drive 8 only) (all emula-
tors except vsid).
AttachDevice8d0Readonly
AttachDevice9d0Readonly
AttachDevice10d0Readonly
AttachDevice11d0Readonly
Booleans that specify whether to attach images on drives 8 to 11 read-only or
not (all emulators except vsid).
Chapter 5: Settings and resources 84
AttachDevice8d1Readonly
AttachDevice9d1Readonly
AttachDevice10d1Readonly
AttachDevice11d1Readonly
Booleans that specify whether to attach images on the second drive of dual-
drives 8 to 11 read-only or not (all emulators except vsid).
-drive8truedrive, +drive8truedrive
-drive9truedrive, +drive9truedrive
-drive10truedrive, +drive10truedrive
-drive11truedrive, +drive11truedrive
Enable/disable true drive emulation (Drive8TrueEmulation=1,
Drive8TrueEmulation=0, Drive9TrueEmulation=1, Drive9TrueEmulation=0,
Drive10TrueEmulation=1, Drive10TrueEmulation=0, Drive11TrueEmulation=1,
Drive11TrueEmulation=0).
-drivesound
+drivesound
Enable/disable drive sound emulation (DriveSoundEmulation=1,
DriveSoundEmulation=0) (all emulators except vsid).
-drivesoundvolume <Volume>
Set the volume of the drive sound emulation. (4000 equals 100.0%.)
(DriveSoundEmulationVolume=0..4000) (all emulators except vsid).
-drive8type <Type>
-drive9type <Type>
-drive10type <Type>
-drive11type <Type>
Specifies the drive types for drives 8-11, respectively. Possible values for TYPE
are 1541 [all emulators except xcbm2, xcbm5x0, xpet and vsid], 1542 (meaning
1541-II) [all emulators except xcbm2, xcbm5x0, xpet and vsid], 1551 [xplus4
only], 1570 [all emulators except xcbm2, xcbm5x0, xpet and vsid], 1571 [all
emulators except xcbm2, xcbm5x0, xpet and vsid], 1573 (meaning 1571cr) [x128
only], 1581 [all emulators except xcbm2, xcbm5x0, xpet and vsid], 2000 [all
emulators except xcbm2, xcbm5x0, xpet and vsid], 4000 [all emulators except
xcbm2, xcbm5x0, xpet and vsid], 4844 (meaning CMD HD) [all emulators
except xcbm2, xcbm5x0, xpet and vsid], 2031 [all emulators except x64dtv,
xplus4 and vsid], 2040 [all emulators except x64dtv, xplus4 and vsid], 3040 [all
emulators except x64dtv, xplus4 and vsid], 4040 [all emulators except x64dtv,
xplus4 and vsid], 1001 [all emulators except x64dtv, xplus4 and vsid], 8050 [all
emulators except x64dtv, xplus4 and vsid] 8250 [all emulators except x64dtv,
xplus4 and vsid]. and 9000 [all emulators except x64dtv, xplus4 and vsid].
Chapter 5: Settings and resources 85
-drive8rtcsave, +drive8rtcsave
-drive9rtcsave, +drive9rtcsave
-drive10rtcsave, +drive10rtcsave
-drive11rtcsave, +drive11rtcsave
Enable/disable the saving of the RTC data for drive 8 to 11 when
changed (drive type 2000/4000/4844 only) (Drive8RTCSave=1,
Drive8RTCSave=0, Drive9RTCSave=1, Drive9RTCSave=0, Drive10RTCSave=1,
Drive10RTCSave=0, Drive11RTCSave=1, Drive11RTCSave=0).
-parallel8 <type>
-parallel9 <type>
-parallel10 <type>
-parallel11 <type>
Set parallel cable type for drives 8-11 respectively (Drive8ParallelCable,
Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable)
(x64, x64sc, xscpu64, x128 and xplus4 only). x64, x64sc, xscpu64, x128: (0:
None, 1: Standard, 2: Professional DOS, 3: Formel64) xplus4: (0: None, 1:
Standard)
-drive8idle <method>
-drive9idle <method>
-drive10idle <method>
-drive11idle <method>
Specifies <method> as the idling method for drives 8-11 respec-
tively (Drive8IdleMethod, Drive9IdleMethod, Drive10IdleMethod),
Drive11IdleMethod). (0: none, 1: skip cycles, 2: trap idle)
-drive8extend <method>
-drive9extend <method>
-drive10extend <method>
-drive11extend <method>
Specifies <method> as the track 40 extend policy in drives 8-11 re-
spectively (Drive8ExtendImagePolicy, Drive9ExtendImagePolicy,
Drive10ExtendImagePolicy, Drive11ExtendImagePolicy). (0: never extend,
1: ask on extend, 2: extend on access)
-drive8rpm <rpm>
-drive9rpm <rpm>
-drive10rpm <rpm>
-drive11rpm <rpm>
Specifies the rotation speed of the drive, multiplied by 100 so 300rpm equal
30000.
-drive8wobblefrequency <frequency>
-drive9wobblefrequency <frequency>
-drive10wobblefrequency <frequency>
-drive11wobblefrequency <frequency>
Specifies frequency of the drive wobble. 1000 equals 1Hz.
Chapter 5: Settings and resources 86
-drive8wobbleamplitude <amplitude>
-drive9wobbleamplitude <amplitude>
-drive10wobbleamplitude <amplitude>
-drive11wobbleamplitude <amplitude>
Specifies amplitude of the drive wobble. 1000 equals +/- 1RPM.
-drive8fixedsize
-drive9fixedsize
-drive10fixedsize
-drive11fixedsize
Specifies the size of the diskimage (in bytes) returned to SCSI capacity inquiries
for CMD HDs. A disk image must be attached for a valid size to be returned.
A value of "0" will report back the current image size. Values may also be
followed by the suffix "K", "M", or "G" for kilobyte, megabyte, and gigabyte
respectively. Default is "8G".
-dos1540 <name>
Specify the ROM name for the 1540 emulation (DosName1540). (all emulators
except xcbm2, xcbm5x0, xpet and vsid)
-dos1541 <name>
Specify the ROM name for the 1541 emulation (DosName1541). (all emulators
except xcbm2, xcbm5x0, xpet and vsid)
-dos1541II <name>
Specify the ROM name for the 1541-II emulation (DosName1541ii). (all emu-
lators except xcbm2, xcbm5x0, xpet and vsid)
-dos1551 <name>
Specify the ROM name for the 1551 emulation (DosName1551). (xplus4 only)
-dos1570 <name>
Specify the ROM name for the 1570 emulation (DosName1570). (all emulators
except xcbm2, xcbm5x0, xpet and vsid)
-dos1571 <name>
Specify the ROM name for the 1571 emulation (DosName1571). (all emulators
except xcbm2, xcbm5x0, xpet and vsid)
-dos1571cr <name>
Specify the ROM name for the 1571 emulation (DosName1571CR). (x128 only)
-dos1581 <name>
Specify the ROM name for the 1581 emulation (DosName1581). (all emulators
except xcbm2, xcbm5x0, xpet and vsid)
-dos2000 <name>
Specify the ROM name for the FD2000 emulation (DosName2000). (all emula-
tors except xcbm2, xcbm5x0, xpet and vsid)
-dos4000 <name>
Specify the ROM name for the FD4000 emulation (DosName4000). (all emula-
tors except xcbm2, xcbm5x0, xpet and vsid)
Chapter 5: Settings and resources 87
-dosCMDHD <name>
Specify the boot ROM name for the CMD HD emulation (DosNameCMDHD). (all
emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos2031 <name>
Specify the ROM name for the 2031 emulation (DosName2031). (all emulators
except x64dtv, xplus4 and vsid)
-dos2040 <name>
Specify the ROM name for the 2040 emulation (DosName2040). (all emulators
except x64dtv, xplus4 and vsid)
-dos3040 <name>
Specify the ROM name for the 3040 emulation (DosName3040). (all emulators
except x64dtv, xplus4 and vsid)
-dos4040 <name>
Specify the ROM name for the 4040 emulation (DosName4040). (all emulators
except x64dtv, xplus4 and vsid)
-dos1001 <name>
Specify the ROM name for the 1001, 8050 and 8250 emulations (DosName1001).
(all emulators except x64dtv, xplus4 and vsid)
-dos9000 <name>
Specify the ROM name for the D9090/60 emulations (DosName9000). (all em-
ulators except x64dtv, xplus4 and vsid)
-drive8ram2000, +drive8ram2000
-drive9ram2000, +drive9ram2000
-drive10ram2000, +drive10ram2000
-drive11ram2000, +drive11ram2000
Enable/disable 8KiB RAM expansion at $2000-$3FFF for drive 8 to 11
(Drive8RAM2000=1, Drive8RAM2000=0, Drive9RAM2000=1, Drive9RAM2000=0,
Drive10RAM2000=1, Drive10RAM2000=0, Drive11RAM2000=1,
Drive11RAM2000=0).
-drive8ram4000, +drive8ram4000
-drive9ram4000, +drive9ram4000
-drive10ram4000, +drive10ram4000
-drive11ram4000, +drive11ram4000
Enable/disable 8KiB RAM expansion at $4000-$5FFF for drive 8 to 11
(Drive8RAM4000=1, Drive8RAM4000=0, Drive9RAM4000=1, Drive9RAM4000=0,
Drive10RAM4000=1, Drive10RAM4000=0, Drive11RAM4000=1,
Drive11RAM4000=0).
-drive8ram6000, +drive8ram6000
-drive9ram6000, +drive9ram6000
-drive10ram6000, +drive10ram6000
-drive11ram6000, +drive11ram6000
Enable/disable 8KiB RAM expansion at $6000-$7FFF for drive 8 to 11
(Drive8RAM6000=1, Drive8RAM6000=0, Drive9RAM6000=1, Drive9RAM6000=0,
Chapter 5: Settings and resources 88
-drive8ram8000, +drive8ram8000
-drive9ram8000, +drive9ram8000
-drive10ram8000, +drive10ram8000
-drive11ram8000, +drive11ram8000
Enable/disable 8KiB RAM expansion at $8000-$9FFF for drive 8 to 11
(Drive8RAM8000=1, Drive8RAM8000=0, Drive9RAM8000=1, Drive9RAM8000=0,
Drive10RAM8000=1, Drive10RAM8000=0, Drive11RAM8000=1,
Drive11RAM8000=0).
-drive8rama000, +drive8rama000
-drive9rama000, +drive9rama000
-drive10rama000, +drive10rama000
-drive11rama000, +drive11rama000
Enable/disable 8KiB RAM expansion at $A000-$BFFF for drive 8 to 11
(Drive8RAMA000=1, Drive8RAMA000=0, Drive9RAMA000=1, Drive9RAMA000=0,
Drive10RAMA000=1, Drive10RAMA000=0, Drive11RAMA000=1,
Drive11RAMA000=0).
-drive8profdos, +drive8profdos
-drive9profdos, +drive9profdos
-drive10profdos, +drive10profdos
-drive11profdos, +drive11profdos
Enable/disable Professional DOS for drive 8 to 11 (Drive8ProfDOS=1,
Drive8ProfDOS=0, Drive9ProfDOS=1, Drive9ProfDOS=0, Drive10ProfDOS=1,
Drive10ProfDOS=0, Drive11ProfDOS=1, Drive11ProfDOS=0) (x64, x64sc,
xscpu64 and x128 only).
-profdos1571 <name>
Specify name of Professional DOS 1571 ROM image (DriveProfDOS1571Name)
(x64, x64sc, xscpu64 and x128).
-drive8supercard, +drive8supercard
-drive9supercard, +drive9supercard
-drive10supercard, +drive10supercard
-drive11supercard, +drive11supercard
Enable/disable Supercard for drive 8 to 11 (Drive8SuperCard=1,
Drive8SuperCard=0, Drive9SuperCard=1, Drive9SuperCard=0,
Drive10SuperCard=1, Drive10SuperCard=0, Drive11SuperCard=1,
Drive11SuperCard=0) (x64, x64sc, xscpu64 and x128 only).
-supercard <name>
Specify name of Supercard ROM image (DriveSuperCardName) (x64, x64sc,
xscpu64 and x128 only).
Chapter 5: Settings and resources 89
-drive8stardos, +drive8stardos
-drive9stardos, +drive9stardos
-drive10stardos, +drive10stardos
-drive11stardos, +drive11stardos
Enable/disable StarDOS for drive 8 to 11 (Drive8StarDos=1,
Drive8StarDos=0, Drive9StarDos=1, Drive9StarDos=0, Drive10StarDos=1,
Drive10StarDos=0, Drive11StarDos=1, Drive11StarDos=0) (x64, x64sc,
xscpu64 and x128 only).
-stardos <name>
Specify name of the image of the lower half of the StarDOS ROM. (Attach
the upper half using the -dos1541 option.) (DriveStarDosName) (x64, x64sc,
xscpu64 and x128 only).
-flipname <name>
Specify name of the flip list file image (Drive 8 only) (FliplistName) (all em-
ulators except vsid).
-fs11convertp00
+fs11convertp00
Enable/disable on-read support for P00 files on drive 11 (FSDevice11ConvertP00=1,
FSDevice11ConvertP00=0) (all emulators except vsid).
-fs8savep00
+fs8savep00
Enable/disable saving P00 files on drive 8 (FSDevice8SaveP00=1,
FSDevice8SaveP00=0) (all emulators except vsid).
-fs9savep00
+fs9savep00
Enable/disable saving P00 files on drive 9 (FSDevice9SaveP00=1,
FSDevice9SaveP00=0) (all emulators except vsid).
-fs10savep00
+fs10savep00
Enable/disable saving P00 files on drive 10 (FSDevice10SaveP00=1,
FSDevice10SaveP00=0) (all emulators except vsid).
-fs11savep00
+fs11savep00
Enable/disable saving P00 files on drive 11 (FSDevice11SaveP00=1,
FSDevice11SaveP00=0) (all emulators except vsid).
-fs8hidecbm
+fs8hidecbm
Enable/disable hiding of CBM files for drive 8 (FSDevice8HideCBMFiles=1,
FSDevice8HideCBMFiles=0) (all emulators except vsid).
-fs9hidecbm
+fs9hidecbm
Enable/disable hiding of CBM files for drive 9 (FSDevice9HideCBMFiles=1,
FSDevice9HideCBMFiles=0) (all emulators except vsid).
-fs10hidecbm
+fs10hidecbm
Enable/disable hiding of CBM files for drive 10 (FSDevice10HideCBMFiles=1,
FSDevice10HideCBMFiles=0) (all emulators except vsid).
-fs11hidecbm
+fs11hidecbm
Enable/disable hiding of CBM files for drive 11 (FSDevice11HideCBMFiles=1,
FSDevice11HideCBMFiles=0) (all emulators except vsid).
-fslongnames
+fslongnames
Enable/disable whether filenames will get converted to 16 character long short
names (FSDeviceLongNames=1, FSDeviceLongNames=0) (all emulators except
vsid).
Chapter 5: Settings and resources 93
-fsoverwrite
+fsoverwrite
Enable/disable whether existing files in the file system can be overwrit-
ten by default. Using OPEN or SAVE"@:name" this is always possible.
(FSDeviceOverwrite=1, FSDeviceOverwrite=0) (all emulators except vsid).
So, basically, by default printer device 1 will dump printer output to print.dump; printer
device 2 will print it via lpr directly to the printer and device 3 will print it via petlp (a
not-yet-complete utility that will produce Postscript output from the Commodore printer
code) and then to the printer via lpr.
Printer4
Printer5
Printer6 Integer specifying how the printer (device 4-6) is being emulated. (0: None, 1:
Filesystem, 2: Real)
Printer7 Integer specifying how printer 7 is being emulated. (0: None, 2: Real)
Printer4Driver
String specifying the printer output driver. (raw, ascii, 2022, 4023, 8023,
mps801, mps802, mps803, nl10)
Printer5Driver
String specifying the printer output driver. (raw, ascii, 2022, 4023, 8023,
mps801, mps802, mps803, nl10)
Printer6Driver
String specifying the printer output driver. (raw, 1520)
Printer4Output
Printer5Output
Printer6Output
Strings specifying the IEC printer output device. (text, graphics)
PrinterUserportTextDevice
Integer (ranging from 0 to 2, for device 1-3) specifying what printer device the
user-port printer is using.
PrinterUserportDriver
String specifying the user-port printer output driver. (ascii/nl10/raw)
PrinterUserportOutput
String specifying the user-port printer output device. (text, graphics)
-device4 <type>
Set device type for device 4 (Printer4). (0: None, 1: Filesystem, 2: Real)
-device5 <type>
Set device type for device 5 (Printer5). (0: None, 1: Filesystem, 2: Real)
-device6 <type>
Set device type for device 6 (Printer6). (0: None, 1: Filesystem, 2: Real)
-device7 <type>
Set device type for device 7 (Printer7). (0: None, 2: Real)
-prtxtdev1 <name>
-prtxtdev2 <name>
-prtxtdev3 <name>
Specify name of printer text device or dump file (PrinterTextDevice1,
PrinterTextDevice2, PrinterTextDevice3).
-pr4txtdev <0-2>
-pr5txtdev <0-2>
-pr6txtdev <0-2>
Specify printer text output device for IEC printer #4-6 (Printer4TextDevice,
Printer5TextDevice, Printer6TextDevice).
-pr4output <name>
Specify name of output device for device #4 (Printer4Output). (text, graph-
ics)
-pr5output <name>
Specify name of output device for device #5 (Printer5Output). (text, graph-
ics)
-pr6output <name>
Specify name of output device for device #6 (Printer6Output). (text, graph-
ics)
-pr4drv <name>
Specify name of printer driver for device #4 (Printer4Driver). (raw, ascii,
2022, 4023, 8023, mps801, mps802, mps803, nl10)
-pr5drv <name>
Specify name of printer driver for device #5 (Printer5Driver). (raw, ascii,
2022, 4023, 8023, mps801, mps802, mps803, nl10)
-pr6drv <name>
Specify name of printer driver for device #6 (Printer6Driver). (raw, 1520)
-prusertxtdev <0-2>
Specify printer text output device for userport printer (PrinterUserportTextDevice).
-pruseroutput <name>
Specify name of output device for the userport printer (PrinterUserportOutput).
(text, graphics)
-pruserdrv <name>
Specify name of printer driver for the userport printer (PrinterUserportDriver).
Chapter 5: Settings and resources 96
The C64 can also use the UP9600 interface by Daniel Dallmann, using the shift registers of
the two CIA 6526 chips. The PET can have a 6551 ACIA RS232 interface when running as
a SuperPET, and the CBM-II has such an ACIA by default. The C64 and C128 emulators
can emulate an ACIA 6551 (also known as Swiftlink, Datapump or Turbo232 for example)
as extension at $de**, $df** or $d7** (C128 only).
Emulation can be achieved by either:
• connecting a real serial device/port;
• dumping to a file;
• piping through a process.
• connect through a network socket.
It is possible to define up to four serial devices, and then decide which interface should be
connected to which device. This is done by so-called rs232 device file names; an rs232 device
file name can be either a simple path, a network address, or a command name preceeded
by a pipe symbol ‘|’. If the path specifies a special device (e.g. /dev/ttyS0 or com1) it is
recognized by VICE and the emulator can set the baudrate.
For example, rs232 device ‘filename’ will cause the output to be written (not appended) to
the file filename, while printer device ‘|lpr’ will cause the lpr command to be executed
and be fed the rs232 output. The rs232 output will not be converted but saved as sent by
the emulated machine. The same holds true for the rs232 input. If the command writes
data to the standard output it will be caught by VICE and sent back to the emulator. Also
the data sent by the pseudo device will be sent back to VICE.
For example you can setup a null-modem cable between two serial ports of your PC, setup
one port for login and use the other in VICE. Then you can login from your emulator via
the RS232 emulation and the null-modem cable to your machine again.
Up to four RS232 devices may be specified through the following resources:
• device 1, whose default value is /dev/ttyS0;
• device 2, whose default value is /dev/ttyS1;
• device 3, whose default value is 127.0.0.1:25232;
• device 4, whose default value is |nc 127.0.0.1:25232.
(Only) when using physical RS232 ports, you’ll also have to specify it on the commandline
or in the menu.
RsDevice1ip232
RsDevice2ip232
RsDevice3ip232
RsDevice4ip232
Boolean specifying whether the respective RS232 devices (see Section 5.13
[RS232 settings], page 96) use the IP232 protocol supported by tcpser. This
only works with Socket connections.
Acia1Enable
Boolean specifying whether the ACIA (Swiftlink, Turbo232) cartridge should
be emulated or not (x64, x64sc, xscpu64, x128 and xvic only, and only if RS232
support is enabled and supported at compile time).
Acia1Dev Integer specifying what RS232 device (see Section 5.13 [RS232 settings],
page 96) the ACIA is using (all emulators except x64dtv and vsid, and only if
RS232 support is enabled and supported at compile time).
Acia1Base
Integer specifying the base address for the emulated ACIA chip (x64, x64sc,
xscpu64, xvic and x128 only, and only if RS232 support is enabled and sup-
ported at compile time). (xvic: $9800/$9C00, x128: $D700/$DE00/$DF00,
x64, x64sc, xscpu64: $DE00/$DF00)
Acia1Mode
Integer specifying the type of emulated RS232 interface (x64, x64sc, xscpu64,
xvic and x128 only, and only if RS232 support is enabled and supported at
compile time). (0: normal, 1: Swiftlink, 2: Turbo232)
Acia1Irq Integer specifying which interrupt to use (x64, x64sc, xscpu64, xvic and x128
only, and only if RS232 support is enabled and supported at compile time). (0
= none, 1 = NMI, 2 = IRQ)
RsUserUP9600
Boolean specifying if the user-port RS232 interface is of the UP9600 type. (C64
only).
RsUserRTSInv
Boolean specifying if the user-port RS232 Request to Send (RTS) flow control
line is inverted. (C64, C128 and VIC20).
RsUserCTSInv
Boolean specifying if the user-port RS232 Clear to Send (CTS) flow control line
is inverted. (C64, C128 and VIC20).
RsUserDSRInv
Boolean specifying if the user-port RS232 Data Set Ready (DSR) control line
is inverted. (C64, C128 and VIC20).
RsUserDCDInv
Boolean specifying if the user-port RS232 Data Carrier Detect (DCD) control
line is inverted. (C64, C128 and VIC20).
Chapter 5: Settings and resources 99
RsUserDTRInv
Boolean specifying if the user-port RS232 Data Terminal Ready (DTR) control
line is inverted. (C64, C128 and VIC20).
RsUserRIInv
Boolean specifying if the user-port RS232 Ring Indicator (RI) control line is
inverted. (C64, C128 and VIC20).
RsUserBaud
Integer specifying the baudrate of the user-port RS232 interface (C64, C128
and VIC20). This must match the baudrate the emulated user port is being
used with, and needs to be set up by the user because automatically detecting
it can not be done easily (like when using ACIA)
RsUserDev
Integer (ranging from 0 to 3, for device 1-4) specifying what RS232 device the
user-port interface is using (C64, C128 and VIC20).
The following resources are only available if RS232 device support or RS232 network sup-
port is available at compile time.
RsDevice1Baud
RsDevice2Baud
RsDevice3Baud
RsDevice4Baud
Integers specifying the RS232 baudrate devices if the device file points to a
special device (like /dev/ttyS0 or com1, ie the serial device is a physical RS232
port of the host computer; see Section 5.13 [RS232 settings], page 96) (all
emulators except vsid).
-rsdev1 <Name>
-rsdev2 <Name>
-rsdev3 <Name>
-rsdev4 <Name>
Specify <Name> as RS232 devices 1, 2, 3 and 4, respectively (RsDevice1,
RsDevice2 RsDevice3 and RsDevice4).
-rsdev1ip232
+rsdev1ip232
-rsdev2ip232
+rsdev2ip232
-rsdev3ip232
+rsdev3ip232
-rsdev4ip232
+rsdev4ip232
Enable/Disable whether the respective RS232 devices (see Section 5.13 [RS232
settings], page 96) use the IP232 protocol supported by tcpser. This only works
with Socket connections.
-acia1
+acia1 Enable/Disable the $DE** ACIA RS232 interface emulation (Acia1Enable=1,
Acia1Enable=0) (x64, x64sc, xscpu64, x128 and xvic only, and only if RS232
support is enabled and supported at compile time).
-myaciadev <0-3>
Specify RS232 device the ACIA should work on (all emulators except x64dtv
and vsid, and only if RS232 support is enabled and supported at compile time)
-acia1base <Base address>
Set the base address of the ACIA cartridge (Acia1Base) (x64, x64sc, xscpu,
x128 and xvic only, and only if RS232 support is enabled and supported at
compile time). (xvic: $9800/$9C00, x128: $D700/$DE00/$DF00, x64, x64sc,
xscpu: $DE00/$DF00)
-acia1mode <mode>
Set the ACIA mode (Acia1Mode) (x64, x64sc, xscpu64, xvic and x128 only, and
only if RS232 support is enabled and supported at compile time). (0: Normal,
1: Swiftlink, 2: Turbo232)
-acia1irq <interrupt>
Set the ACIA interrupt (Acia1Irq) (x64, x64sc, xscpu64, xvic and x128 only,
and only if RS232 support is enabled and supported at compile time). (0: None,
1: NMI, 2: IRQ)
-rsuserup9600
+rsuserup9600
Enable or disable the userport RS232 UP9600 emulation (RsUserUP9600; C64
only)
-rsuserrtsinv
+rsuserrtsinv
Enable or disable inversion of the userport RS232 emulation Request To Send
(RTS) flow control line.
-rsuserctsinv
+rsuserctsinv
Enable or disable inversion of the userport RS232 emulation Clear To Send
(CTS) flow control line.
Chapter 5: Settings and resources 101
-rsuserdsrinv
+rsuserdsrinv
Enable or disable inversion of the userport RS232 emulation Data Set Ready
(DSR) control line.
-rsuserdcdinv
+rsuserdcdinv
Enable or disable inversion of the userport RS232 emulation Data Carrier Detect
(DCD) control line.
-rsuserdtrinv
+rsuserdtrinv
Enable or disable inversion of the userport RS232 emulation Data Terminal
Ready (DTR) control line.
-rsuserriinv
+rsuserriinv
Enable or disable inversion of the userport RS232 emulation Ring Indicator
(RI) control line.
-rsuserbaud <baud>
Set the baud rate of the RS232 userport emulation. This must match the
baudrate the emulated userport is being used at.
-rsuserdev <0-3>
Specify device for the userport RS232 emulation (RsUserDev; C64, C128 and
VIC20).
The following command-line options are only available if RS232 device support or RS232
network support is available at compile time.
-rsdev1baud <baudrate>
-rsdev2baud <baudrate>
-rsdev3baud <baudrate>
-rsdev4baud <baudrate>
If the serial device is a physical RS232 port, specify <baudrate> as baudrate,
see Section 5.13 [RS232 settings], page 96; RsDevice1Baud, RsDevice2Baud
RsDevice3Baud and RsDevice4Baud) (all emulators except vsid).
multiply with the baudrate (so e.g. 19200 gives 115200 or so baud) See the
"setserial" manpage on Linux for example. However, most modems should be
able to autodetect the speed to the computer as well.
Select the RS232 emulation your programs use
If you want to use the Userport emulation, go to the RS232 settings and change
"Userport RS232 Device" to "Serial 1". If you want ACIA emulation (swiftlink
or what’s it called?) then change "ACIA $DE** device" to "Serial 1".
Enable the emulation
Go to the RS232 settings and select either "ACIA $DE** emulation" or User-
port 300/1200 baud or CIA 9600 baud emulation.
Load your program and start it.
If it is able to detect an RS232 cartridge like swiftlink or so, try to detect the
ACIA emulation if enabled. Otherwise just set the baudrate to either 300, 1200,
2400 or 9600 according to what you enabled in the VICE menu for the userport.
ethernet device gets its own MAC adress, which you may have to allow to access the
internet at your router.
TapecartOptimizeTCRT
Boolean, when set to true the .tcrt image will be optimized by leaving out blank
space at the end when saving.
TapecartLogLevel
Integer that specifies the tapecart emulation log level. At the default level of 0,
only errors are logged. Level 1 additionally logs mode changes and command
bytes and level 2 adds details of command parameters.
TapecartTCRTFilename
String specifying the file name of the current tapecart image.
0 None x64, x64sc, x128, xscpu64, x64dtv, xvic, xplus4, xpet, xcbm2
1 Userport printer x64, x64sc, x128, xscpu64, xvic, xpet, xcbm2
2 Userport RS232/Modem x64, x64sc, x128, xscpu64, xvic
3 CGA userport joy adapter x64, x64sc, x128, xscpu64, xvic, xpet, xcbm2
4 PET userport joy adapter x64, x64sc, x128, xscpu64, xvic, xplus4, xpet, xcbm2
5 Hummer userport joy adapter x64, x64sc, x128, xscpu64, x64dtv, xvic, xplus4, xpet, xcbm2
6 OEM userport joy adapter x64, x64sc, x128, xscpu64, xvic, xplus4, xpet, xcbm2
7 HIT userport joy adapter x64, x64sc, x128, xscpu64
8 KingSoft userport joy adapter x64, x64sc, x128, xscpu64
9 StarByte userport joy adapter x64, x64sc, x128, xscpu64
10 Synergy userport joy adapter x64, x64sc, x128, xscpu64, xvic, xplus4, xpet, xcbm2
11 Wheel of joystick 8-joy userport x64, x64sc, x128, xscpu64, xvic, xplus4, xpet, xcbm2
joy adapter
12 Userport DAC x64, x64sc, x128, xscpu64, xvic, xplus4, xpet, xcbm2
13 Userport DigiMAX x64, x64sc, x128, xscpu64, xcbm2
14 Userport 4bit sampler x64, x64sc, x128, xscpu64, xcbm2
15 Userport 8bit stereo sampler x64, x64sc, x128, xscpu64, xcbm2
16 Userport RTC (RTC58321A) x64, x64sc, x128, xscpu64, xvic, xpet, xcbm2
17 Userport RTC (DS1307) x64, x64sc, x128, xscpu64, xvic, xpet, xcbm2
18 Userport Petscii SNES pad x64, x64sc, x128, xscpu64, xvic, xpet, xcbm2
19 Userport SuperPad64 x64, x64sc, x128, xscpu64, xcbm2
20 Userport Diag 586220 Harness x64, x64sc, x128, xscpu64
21 Userport parallel drive cable x64, x64sc, x128, xscpu64, xplus4
22 Userport I/O Simulation x64, x64sc, x128, xscpu64, x64dtv, xvic, xplus4, xpet, xcbm2
23 Userport WiC64 Simulation x64, x64sc, x128, xscpu64, xvic
24 Joystick Adapter (Spaceballs) x64, x64sc, x128, xscpu64, xvic
25 Userport Stupid Pet Tricks joy- x64, x64sc, x128, xscpu64, xcbm2, xpet, xvic
stick adapter
UserportRTC58321aSave
Boolean specifying whether the userport RTC data is saved when changed or
not (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
UserportRTCDS1307Save
Boolean specifying whether the userport RTC data is saved when changed or
not (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
WIC64DefaultServer
String specifying the default server URL used by the wic64 emulation (vic20,
x64, x64sc, xscpu64 and x128 only).
WIC64Timezone
Integer specifying the default timezone used by the wic64 emulation (vic20, x64,
x64sc, xscpu64 and x128 only).
WIC64SecToken
String specifying the security token used by the wic64 emulation for identifying
the user at the WiC64 portal. (vic20, x64, x64sc, xscpu64 and x128 only).
Chapter 5: Settings and resources 106
WIC64MACAddress
String specifying the pseudo MAC address used by the wic64 emulation for
identifying the user at the WiC64 portal (vic20, x64, x64sc, xscpu64 and x128
only).
WIC64IPAddress
String specifying the IP address used by the wic64 emulation (vic20, x64, x64sc,
xscpu64 and x128 only).
WIC64Logenabled
Integer, 1: user selected WiC64 tracing, 0: no tracing (vic20, x64, x64sc,
xscpu64 and x128 only).
WIC64Resetuser
Integer 1: user credentials shall be reseted if WiC64 is reseted, 0: user creden-
tials are preseved (vic20, x64, x64sc, xscpu64 and x128 only).
WIC64HexdumpLines
Integer number of lines to hexdump, 0: unlimited (vic20, x64, x64sc, xscpu64
and x128 only).
WIC64ColorizeLog
Integer, 1: WiC64 tracing using ANSI colorizing, 0: no colorizing (vic20, x64,
x64sc, xscpu64 and x128 only).
-wic64trace
+wic64trace
Enable/disable WIC64 tracing on the console (vic20, x64, x64sc, xscpu64 and
x128 only).
-wic64tracelevel <0..3>
Integer to specify WIC64 trace level (0: off, 1: commands, >2: debug), implicitly
turns on/off WiC64 tracing. (vic20, x64, x64sc, xscpu64 and x128 only).
-wic64hexdumplines <value>
Integer to specify number of lines to hexdump, 0: unlimited, (vic20, x64, x64sc,
xscpu64 and x128 only).
-wic64colorizetrace
+wic64colorizetrace
Enable/disable ANSI color codes for terminals to colorize the WiC64 log for
better readability (vic20, x64, x64sc, xscpu64 and x128 only).
MonitorLogEnabled
Boolean specifying whether the output of the monitor will be logged to a file.
MonitorLogFileName
String specifying the logfile name for the monitor.
MonitorChisLines
Integer specifying the number of lines to keep in the cpu history. (only when
enabled in configure)
MonitorScrollbackLines
Integer specifying the number of lines to keep in the monitor scrollback buffer
(-1 for no limit).
MonitorFont
String specifying the font to use in the Gtk3 UI’s VTE monitor window. Should
be in the form accepted by Pango, for example "Liberation Mono 11".
MonitorFG
String specifying the foreground color to use in the Gtk3 UI’s VTE monitor
window. Should be in form accepted by Pango: either a CSS color name
(for example ’limegreen’), three/six digit hex string ("#rgb"/"#rrggbb") or
three decimal values in the range 0-255 ("rbg(red,green,blue"), for example
"rgb(27,180,33)").
MonitorBG
String specifying the background color to use in the Gtk3 UI’s VTE moni-
tor window. Should be in form accepted by Pango: either a CSS color name
(for example ’limegreen’), three/six digit hex string ("#rgb"/"#rrggbb") or
three decimal values in the range 0-255 ("rbg(red,green,blue"), for example
"rgb(27,180,33)").
MonitorXPos
Integer specifying the Gtk3 VTE-monitor window’s X position.
MonitorYPos
Integer specifying the Gtk3 VTE-monitor window’s Y position.
MonitorWidth
Integer specifying the Gtk3 VTE-monitor window’s width.
MonitorHeight
Integer specifying the Gtk3 VTE-monitor window’s height.
when the monitor will open and execute your script. You can choose an address,
or use -initbreak ready to attempt to detect when the kernel is ready and
execute the script then.
-initbreak <address>
-initbreak reset
-initbreak ready
Set an initial breakpoint for the monitor. Addresses with prefix "0x" are hex-
adecimal. -initbreak reset will break just before the reset routine starts.
-initbreak ready will attempt to break when the kernal is ’ready’.
-keepmonopen
+keepmonopen
Enable/disable keeping the monitor window open (KeepMonitorOpen=1,
KeepMonitorOpen=0).
-refreshonbreak
+refreshonbreak
Enable/Disable refresh display when entering monitor and after each monitor
command. (RefreshOnBreak=1, RefreshOnBreak=0).
-remotemonitor
+remotemonitor
Enable/Disable remote monitor
-remotemonitoraddress <name>
The local address the remote monitor should bind to
-binarymonitor
+binarymonitor
Enable/Disable binary monitor
-binarymonitoraddress <name>
The local address the binary monitor should bind to
-nativemonitor
+nativemonitor
Enable/Disable native monitor. (NativeMonitor=1, NativeMonitor=0).
-monlog
+monlog Enable/Disable logging monitor output to a file. (MonitorLogEnabled=1,
MonitorLogEnabled=0).
-monlogname <name>
Specify logfile name for the monitor. (MonitorLogFileName).
-monchislines <value>
Set number of lines to keep in the cpu history. (only when enabled in configure)
(MonitorChisLines).
-monscrollbacklines <value>
Set number of lines to keep in the monitor scrollback buffer (-1 for no limit).
(MonitorScrollbackLines).
Chapter 5: Settings and resources 110
-monitorfont <font-description>
Set the monitor font for the Gtk3 UI’s VTE-monitor. (MonitorFont).
-monitorfg <colour-description>
Set the monitor foreground colour for the Gtk3 UI’s VTE-monitor.
(MonitorFG).
-monitorbg <colour-description>
Set the monitor background colour for the Gtk3 UI’s VTE-monitor.
(MonitorFG).
-monitorxpos <X-position>
Set window X position for the Gtk3 UI’s VTE-monitor. (MonitorXPos).
-monitorxpos <Y-position>
Set window Y position for the Gtk3 UI’s VTE-monitor. (MonitorYPos).
-monitorwidth <width>
Set window width for the Gtk3 UI’s VTE-monitor. (MonitorWidth).
-monitorheight <height>
Set window height for the Gtk3 UI’s VTE-monitor. (MonitorHeight).
RAMInitValueInvert
Integer specifying the number of bytes until the base pattern is inverted (all
emulators except vsid).
RAMInitValueOffset
Integer specifying the number of bytes to offset the base pattern (all emulators
except vsid).
RAMInitPatternInvert
Integer specifying the length of the memory block when inverting the base
pattern (all emulators except vsid).
RAMInitPatternInvertValue
Integer specifying the value to use for inverting the base pattern with (all em-
ulators except vsid).
RAMInitStartRandom
Integer specifying the number of random bytes in the random pattern (all em-
ulators except vsid).
RAMInitRepeatRandom
Integer specifying the number of bytes after which to repeat the random pattern
(all emulators except vsid).
RAMInitRandomChance
Integer specifying the chance of any bit to randomly toggle (0-4096) (all emu-
lators except vsid).
The following are only available when the emulators were compiled in DEBUG
mode:
-trace_maincpu
+trace_maincpu
Trace the main CPU / Do not trace the main CPU (MainCPU_TRACE=1,
MainCPU_TRACE=0)
-trace_drive0
+trace_drive0
Trace the drive 0 CPU / Do not trace the drive 0 CPU (Drive0CPU_TRACE=1,
Drive0CPU_TRACE=0)
-trace_drive1
+trace_drive1
Trace the drive 1 CPU / Do not trace the drive 1 CPU (Drive1CPU_TRACE=1,
Drive1CPU_TRACE=0)
-trace_drive2
+trace_drive2
Trace the drive 2 CPU / Do not trace the drive 2 CPU (Drive2CPU_TRACE=1,
Drive2CPU_TRACE=0)
-trace_drive3
+trace_drive3
Trace the drive 3 CPU / Do not trace the drive 3 CPU (Drive3CPU_TRACE=1,
Drive3CPU_TRACE=0)
-trace_iec
+trace_iec
Trace IEC bus activity / Do not trace IEC bus activity (IEC_TRACE=1, IEC_
TRACE=0)
-trace_mode <value>
Trace mode (0=normal 1=small 2=history)
-autoplaybackframes <frames>
Set the amount of automatic playback frames
• On the client setup the remote address of the server (use 127.0.0.1 to connect to another
VICE instance running on the same machine) and connect to the server.
The experimental nature of this feature also means that you might require both involved
parties to use the exact same version of VICE.
6 Machine-specific features
6.1.1.1 Slot 0
All carts that have a passthrough connector go here. Once a "Slot 0" cartridge is enabled
all further cartridges are connected to its respective passthrough port.
Only one cartridge of this type can be active at a time.
"Slot 0" carts have individual "enable" switches, enabling means enabling permanently.
The following cartridges are emulated in this slot:
• CMD RAMlink
• IEEE-488 Interface (http://www.funet.fi/pub/cbm/schematics/cartridges/c64/
ieee-488/eprom.bin)
• IEEE Flash 64! interface
• Magic Voice
• MMC64
Chapter 6: Machine-specific features 116
6.1.1.2 Slot 1
Mostly RAM based cartridges which for one reason or the other might make sense to be
enabled together with one of the "Main Slot" cartridges go here.
Only one cartridge of this type can be active at a time.
"Slot 1" carts have individual "enable" switches, enabling means enabling permanently
The following cartridges are emulated in this slot:
• Double Quick Brown Box (DQBB)
• Expert Cartridge
• ISEPIC
• RamCart
• EXOS
• The Final Cartridge
• The Final Cartridge III
• Final Cartridge Plus
• Formel 64
• Freeze Frame
• Freeze Frame MK2
• Freeze Machine
• Fun Play / Powerplay
• Game Killer
• GMod2
• GMod3
• Hyper-BASIC
• IDE64 (http://www.ide64.org)
• KCS Power Cartridge
• Kingsoft
• Lt. Kernal Host Adaptor
• MACH 5
• Magic Desk
• Magic Formel
• MAX Basic
• Mikro Assembler
• MMC Replay
• Ocean
• Pagefox
• Prophet64
• REX 256KiB EPROM Cart
• REX RAM-Floppy
• REX Utility
• Retro Replay
• RGCD
• RR-Net MK3
• ROSS
• SD-BOX
• Silverrock 128
• Simons’ BASIC
• Snapshot 64
• Stardos
• Structured BASIC
Chapter 6: Machine-specific features 118
CartridgeReset
Boolean specifying whether the machine should be reset when a cartridge is
changed.
CartridgeType
Integer specifying the type of the default cartridge.
The following cartridge types are valid:
• - 6: Ultimax
• - 3: Generic 8KiB
• - 2: Generic 16KiB
• - 1: None
• 0: CRT
• 1: Action Replay V5
• 2: KCS Power Cartridge
• 3: The Final Cartridge III
• 4: Simons’ BASIC
• 5: Ocean
• 6: Expert Cartridge
• 7: Fun Play
• 8: Super Games
• 9: Atomic Power / Nordic Power
• 10: Epyx FastLoad
• 11: Westermann Learning
• 12: REX Utility
• 13: The Final Cartridge
• 14: Magic Formel
• 15: C64 Games System
• 16: Warp Speed
• 17: Dinamic
• 18: Zaxxon
• 19: Magic Desk
• 20: Super Snapshot V5
• 21: Comal 80
• 22: Structured BASIC
• 23: ROSS
• 24: Dela EP64
• 25: Dela EP7x8
• 26: Dela EP256
• 27: REX 256KiB EPROM Cart
• 28: Mikro Assembler
Chapter 6: Machine-specific features 122
• 68: BIS-Plus
• 69: SD-BOX
• 70: MultiMAX
• 71: Blackbox V9
• 72: Lt. Kernal Host Adaptor
• 73: RAMLink
• 74: Drean
• 75: IEEE Flash! 64
• 76: Turtle Graphics II
• 77: Freeze Frame MK2
• 78: Partner 64
• 79: Hyper-BASIC
CartridgeFile
String specifying the filename of the image for the cartridge emulated in the
"main" slot.
DQBB Boolean specifying whether the Double Quick Brown Box should be emulated
or not.
DQBBfilename
String specifying the filename of the DQBB RAM image.
DQBBImageWrite
Boolean, if true write back the DQBB image file automatically, incase the RAM
contents changed, when detaching or quitting the emulator.
EasyFlashJumper
Boolean specifying whether the Easy Flash jumper is set.
EasyFlashWriteCRT
Boolean, if true write back the Easy Flash image file automatically, incase the
contents changed, when detaching or quitting the emulator.
EasyFlashOptimizeCRT
Boolean, if true omit empty (filled with $ff) banks from the .crt image when
writing.
ExpertCartridgeEnabled
Boolean specifying whether the Expert Cartridge should be emulated or not.
Expertfilename
String specifying the filename of the Expert Cartridge RAM image.
ExpertImageWrite
Boolean, if true write back the Expert Cartridge image file automatically, incase
the RAM contents changed, when detaching or quitting the emulator.
ExpertCartridgeMode
Integer specifying the state of the expert cartridge switch. (0: off, 1: prg, 2:
on)
Chapter 6: Machine-specific features 124
GMod2EEPROMImage
String that specifies the name of the raw GMod2 EEPROM image.
GMod2FlashWrite
Boolean that specifies wether writes to GMod2 EEPROM image are enabled.
GMod2EEPROMRW
Boolean that specifies wether the GMod2 ROM is saved at exit
GMod3FlashWrite
Boolean that specifies wether changes to GMod3 EEPROM image are written
back to the cartridge image.
IDE64version
Integer specifying whether the emulated card version is V3.4, V4.1 or V4.2.
This is automatically detected most of the time for .crt cartridge images.
IDE64Image1
IDE64Image2
IDE64Image3
IDE64Image4
Strings specifying the full path to the four harddisk images. If a file is non-
existing the drive is not emulated. Some older IDEDOS versions only support
the first two harddisks.
IDE64Cylinders1
IDE64Cylinders2
IDE64Cylinders3
IDE64Cylinders4
Integers specifying the number of cylinders for the four harddisk images.
(1..65535)
IDE64Heads1
IDE64Heads2
IDE64Heads3
IDE64Heads4
Integers specifying the number of heads for the four harddisk images. (1..16)
IDE64Sectors1
IDE64Sectors2
IDE64Sectors3
IDE64Sectors4
Integers specifying the number of sectors for the four harddisk images. (1..63)
IDE64AutodetectSize1
IDE64AutodetectSize2
IDE64AutodetectSize3
IDE64AutodetectSize4
Booleans specifying whether the disk geometry should be auto detected based
on the disk image for the respective harddisk, or the cylinder/head/sector re-
sources above should be used.
Chapter 6: Machine-specific features 125
IDE64USBServerAddress
String specifying the address the IDE64 USB server listens to
(ip4://127.0.0.1:64245)
IDE64USBServer
Boolean specifying whether the IDE64 USB server is enabled.
IDE64RTCSave
Boolean specifying whether the IDE64 RTC data should be saved when changed
or not.
IDE64ClockPort
Integer that specifies the enabled IDE64 Clockport device. (0: None, 2: RRNet,
4: MP3@64)
SBDIGIMAX
Boolean that specifies whether the Short Bus DigiMAX expansion is enabled.
SBDIGIMAXbase
Integer specifying the Base address of the Short Bus DigiMAX expansion.
(0xDE40/0xDE48)
SBETFE Boolean specifying whether the Short Bus ETFE expansion is enabled
SBETFEbase
Integer specifying the Base address of the Short Bus ETFE expansion. ($de00,
$de10, $df00)
IEEE488 Boolean specifying whether the IEEE488 interface should be emulated or not.
IEEE488Image
String specifying the filename of the IEEE488 ROM image.
IEEEFlash64
Boolean specifying whether the IEEE Flash! 64 interface should be emulated
or not.
IEEEFlash64Image
String specifying the filename of the IEEE Flash! 64 KERNAL ROM image.
IEEEFlash64Dev8
IEEEFlash64Dev910
IEEEFlash64Dev4
Booleans indicating whether to route devices 8, 9 and 10, and 4 respectively to
the IEEE bus (1) or IEC bus (0).
IsepicCartridgeEnabled
Boolean specifying whether ISEPIC should be emulated or not.
Isepicfilename
String specifying the filename of the ISEPIC RAM image.
IsepicSwitch
Boolean specifying the status of the ISEPIC switch. (0: off, 1: on)
Chapter 6: Machine-specific features 126
IsepicImageWrite
Boolean, if true write back the ISEPIC image file automatically, incase the
RAM contents changed, when detaching or quitting the emulator.
LTKimage0
LTKimage1
LTKimage2
LTKimage3
LTKimage4
LTKimage5
LTKimage6
Strings specifying the full path to up to seven harddisk images. If a file is
non-existing the drive is not emulated. The first drive is necessary.
LTKio Integer specifying the Base address of the I/O interface. (1: $de00, 2: $df00)
Default is $df00.
LTKport Integer specifying the port number in multiplexed multi-computer/single-disk
configurations. (0 to 15) Default is 0, the master.
LTKserial
String specifying the serial number. It must be in the form "00000000" with
all numeric digits. Default is 87000000. LTK DOS install disks are locked to
their respective LTK host adapor boot ROM. This setting will override the boot
ROM value. The floppy disk serial number can be changed with a sector editor
on track 18, sector 18.
MagicVoiceCartridgeEnabled
Boolean specifying whether the Magic Voice should be emulated or not.
MagicVoiceImage
String specifying the filename of the Magic Voice ROM image.
MMC64 Boolean specifying whether the MMC64 should be emulated or not.
MMC64BIOSfilename
String specifying the filename of the MMC64 Flash ROM image.
MMC64_bios_write
Boolean, if true write back the MMC64 Flash ROM image file automatically,
incase the contents changed, when detaching or quitting the emulator.
MMC64_flashjumper
Boolean that specifies whether the MMC64 flash jumper is set.
MMC64_revision
Integer specifying the MMC64 hardware revision. (0: Revision A, 1: Revision
B)
MMC64imagefilename
String specifying the filename of the SD-Card image used by the MMC64 em-
ulation.
MMC64_RO Boolean, if true the SD-Card image is mounted read-only.
Chapter 6: Machine-specific features 127
MMC64_sd_type
Integer that specifies the reported type for the emulated SD-Card. (0: Auto,
1: MMC, 2: SD, 3: SDHC)
MMC64ClockPort
Integer that specifies the clockport device used. (0: None, 1: ETH64-II, 2:
RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
MMCRCardImage
String specifying the filename of the SD-Card image used by the MMCR emu-
lation.
MMCREEPROMImage
String specifying the filename of the MMCR EEPROM image.
MMCRRescueMode
Boolean specifying if the rescue mode (both buttons pressed during powerup)
of the MMCR is active.
MMCRImageWrite
Boolean, if true write back the MMCR Flash ROM image file automatically,
incase the contents changed, when detaching or quitting the emulator.
MMCRCardRW
Boolean specifying if the SD-Card image used by the MMCR emulation is
writeable.
MMCRSDType
Integer that specifies the reported type for the emulated SD-Card. (0: Auto,
1: MMC, 2: SD, 3: SDHC)
MMCREEPROMRW
Boolean specifying if the MMCR EEPROM image is writeable.
MMCRClockPort
Integer that specifies the clockport device. (0: None, 1: ETH64-II, 2: RRNet,
3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
RAMCART Boolean specifying whether the RAMCart should be emulated or not.
RAMCARTfilename
String specifying the filename of the RAMCart RAM image.
RAMCARTImageWrite
Boolean, if true write back the RAMCart image file automatically, incase the
RAM contents changed, when detaching or quitting the emulator.
RAMCART_RO
Boolean, if true the RAMCart contents are read only.
RAMCARTsize
Integer specifying the size of the RAMCart in KiB. (64, 128)
RAMLINK Boolean specifying whether the RAMLink module should be emulated or not.
This option emulates the behavior of the enable/disable switch on the unit.
Chapter 6: Machine-specific features 128
RAMLINKBIOSfilename
String specifying the filename of the RAMLINK ROM image.
RAMLINKfilename
String specifying the filename of the RAMCard image.
RAMLINKImageWrite
Boolean, if true write back the RAMCard image file automatically, in case the
RAM contents changed, when detaching or quitting the emulator.
RAMLINKsize
Integer specifying the size of the RAMCard in MiB. (0..16; default is 0)
RAMLINKmode
Integer specifying the mode of the RAMLink. "1", the default, (Normal) only
allows RAMLink access to the RAM port (REU, GEORAM, and RAMDrive);
their registers are hidden otherwise. "0" (Direct) exposes their registers all the
time. This option emulates the behavior of the Normal/Direct switch on the
unit.
RAMLINKRTCSave
Boolean specifying whether the RTC data should be saved when changed or
not.
RRFfilename
String that specifies the filename for the REX RAM-Floppy RAM image
RRFImageWrite
Boolean, if true write back the REX RAM-Floppy RAM image file automati-
cally, incase the contents changed, when detaching or quitting the emulator.
RGCDrevision
Integer specifying the RGCD-cartridge hardware variant. (0: RGCD 64k, 1:
Hucky’s EPROM Cartridge)
RRrevision
Integer specifying the RR hardware revision. (0: Retro Replay, 1: Nordic
Replay)
RRFlashJumper
Boolean specifying whether the RR flash jumper is set or not.
RRBankJumper
Boolean specifying whether the RR bank jumper is set or not.
RRBiosWrite
Boolean, if true write back the RR Flash ROM image file automatically, incase
the contents changed, when detaching or quitting the emulator.
RRClockPort
Integer that specifies the clockport device. (0: None, 1: ETH64-II, 2: RRNet,
3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
RRNETMK3_flashjumper
Boolean specifying whether the RRNETMK3 Flash Jumper is set.
Chapter 6: Machine-specific features 129
RRNETMK3_bios_write
Boolean specifying whether to save the RRNETMK3 bios when changed.
SSRamExpansion
Boolean, if true enable the 32KiB addon RAM of the Supersnapshot V5
-cartbb8 <name>
Attach raw 32/64KiB Blackbox V8 cartridge image.
-cartbb9 <name>
Attach raw 32KiB Blackbox V9 cartridge image.
-cartcap <name>
Attach raw 8KiB Capture cartridge image.
-cartcomal <name>
Attach raw 64KiB Comal 80 cartridge image.
-cartdep256 <name>
Attach raw Dela EP256 cartridge image.
-cartdep64 <name>
Attach raw Dela EP64 cartridge image.
-cartdep7x8 <name>
Attach raw Dela EP7x8 cartridge image.
-cartdin <name>
Attach raw 128KiB Dinamic cartridge image.
-cartdsm <name>
Attach raw 8KiB Diashow-Maker cartridge image.
-cartdqbb <name>
Attach raw 16KiB Double Quick Brown Box cartridge image.
-dqbb
+dqbb Enable/disable Double Quick Brown Box (DQBB=1, DQBB=0).
-dqbbimage <name>
Specify Double Quick Brown Box filename (DQBBfilename).
-dqbbimagerw
+dqbbimagerw
Allow/disallow writing to DQBB image (DQBBImageWrite=1,
DQBBImageWrite=0).
-carteasy <name>
Attach raw EasyFlash cartridge image.
-carteasycalc <name>
Attach raw 24KiB Easy Calc Result cartridge image
-easyflashjumper
+easyflashjumper
Enable/disable EasyFlash jumper (EasyFlashJumper=1, EasyFlashJumper=0).
-easyflashcrtwrite
+easyflashcrtwrite
Allow/Disallow writing to EasyFlash .crt image (EasyFlashWriteCRT=1,
EasyFlashWriteCRT=0).
Chapter 6: Machine-specific features 131
-easyflashcrtoptimize
+easyflashcrtoptimize
Allow/Disallow EasyFlash .crt image optimizing (omitting of empty banks) on
write (EasyFlashOptimizeCRT=1, EasyFlashOptimizeCRT=0).
-cartepyx <name>
Attach raw 8KiB Epyx FastLoad cartridge image.
-cartexos <name>
Attach raw 8KiB EXOS cartridge image.
-cartexpert <name>
Attach raw 8KiB Expert Cartridge image.
-expert
+expert Enable/Disable the Expert Cartridge (ExpertCartridgeEnabled=1,
ExpertCartridgeEnabled=0).
-expertimagename <name>
Set Expert Cartridge image name (Expertfilename).
-expertimagerw
+expertimagerw
Allow/Disallow writing to Expert Cartridge image (ExpertImageWrite=1,
ExpertImageWrite=0).
-expertmode <mode>
Set Expert Cartridge mode (ExpertCartridgeMode). (0: off, 1: prg, 2: on)
-cartf64 <Name>
Attach raw 32KiB Formel 64 image.
-cartfc1 <name>
Attach raw 16KiB Final Cartridge image.
-cartfc3 <name>
Attach raw 64KiB Final Cartridge III image.
-cartfcplus <name>
Attach raw 32KiB Final Cartridge Plus image.
-cartff <name>
Attach raw 8KiB Freeze Frame image.
-cartff2 <name>
Attach raw 16KiB Freeze Frame MK2 image.
-cartfm <name>
Attach raw 32KiB Freeze Machine image.
-cartfp <name>
Attach raw 128KiB Fun Play/Power Play cartridge image.
-cartgmod2 <name>
Attach raw GMod2 cartridge image.
Chapter 6: Machine-specific features 132
-gmod2eepromimage <name>
Attach raw GMod2 EEPROM image (GMod2EEPROMImage).
-gmod2eepromrw
+gmod2eepromrw
Enable/Disable writes to GMod2 EEPROM image (GMod2EEPROMRW=1,
GMod2EEPROMRW=0).
-gmod2flashwrite
+gmod2flashwrite
Enable/Disable saving of the GMod2 ROM at exit (GMod2FlashWrite=1,
GMod2FlashWrite=0).
-cartgmod3 <name>
Attach raw GMod3 cartridge image.
-gmod3flashwrite
+gmod3flashwrite
Enable/Disable saving of the GMod3 ROM at exit (GMod3FlashWrite=1,
GMod3FlashWrite=0).
-cartgk <name>
Attach raw 8KiB Game Killer cartridge image.
-cartgs <name>
Attach raw 512KiB Game System cartridge image.
-carthyper <name>
Attach raw 64KiB Hyper-BASIC cartridge image.
-cartdrean <name>
Attach raw 32KiB Drean (eg H.E.R.O. bootleg) cartridge image
-cartide64 <name>
Attach raw 64KiB or 128KiB IDE64 cartridge image.
-IDE64image1 <name>
-IDE64image2 <name>
-IDE64image3 <name>
-IDE64image4 <name>
Specify path to the image files for IDE64 harddisks (IDE64Image1,
IDE64Image2, IDE64Image3, IDE64Image4).
-IDE64cyl1 <value>
-IDE64cyl2 <value>
-IDE64cyl3 <value>
-IDE64cyl4 <value>
Set number of cylinders for the IDE64 harddisk emulation (IDE64Cylinders1,
IDE64Cylinders2, IDE64Cylinders3, IDE64Cylinders1). (1..65535)
Chapter 6: Machine-specific features 133
-IDE64hds1 <value>
-IDE64hds2 <value>
-IDE64hds3 <value>
-IDE64hds4 <value>
Set number of heads for the IDE64 harddisk emulation (IDE64Heads1,
IDE64Heads2, IDE64Heads3, IDE64Heads4). (1..16)
-IDE64sec1 <value>
-IDE64sec2 <value>
-IDE64sec3 <value>
-IDE64sec4 <value>
Set number of sectors for the IDE64 harddisk emulation (IDE64Sectors1,
IDE64Sectors2, IDE64Sectors3, IDE64Sectors4). (1..63)
-IDE64autosize1
+IDE64autosize1
Autodetect geometry of formatted image or do not autodetect and use specified
geometry (IDE64AutodetectSize1=1, IDE64AutodetectSize1=0).
-IDE64autosize2
+IDE64autosize2
Autodetect geometry of formatted image or do not autodetect and use specified
geometry (IDE64AutodetectSize2=1, IDE64AutodetectSize2=0).
-IDE64autosize3
+IDE64autosize3
Autodetect geometry of formatted image or do not autodetect and use specified
geometry (IDE64AutodetectSize3=1, IDE64AutodetectSize3=0).
-IDE64autosize4
+IDE64autosize4
Autodetect geometry of formatted image or do not autodetect and use specified
geometry (IDE64AutodetectSize4=1, IDE64AutodetectSize4=0).
-IDE64version <value>
Select IDE64 version V3 (0), V4.1 (1) or V4.2 (2). (IDE64version). (0..2)
-IDE64USB
+IDE64USB
Enable/Disable IDE64 USB server
-IDE64USBAddress <name>
The local address the IDE64 USB server should bind to
-IDE64rtcsave
+IDE64rtcsave
Enable/disable saving of IDE64 RTC data when changed (IDE64RTCSave=1,
IDE64RTCSave=0).
-ide64clockportdevice
Enable IDE64 Clockport device (0: None, 2: RRNet, 4: MP3@64)
(IDE64ClockPort).
Chapter 6: Machine-specific features 134
-sbdigimax
+sbdigimax
Enable/Disable the Short Bus DigiMAX expansion (SBDIGIMAX).
-sbdigimaxbase
Set Base address of the Short Bus DigiMAX expansion (0xDE40/0xDE48)
(SBDIGIMAXbase).
-sbetfe
+sbetfe Enable/Disable the Short Bus ETFE expansion (SBETFE).
-sbetfebase
Set Base address of the Short Bus ETFE expansion (56832: $de00, 56848:
$de10, 57088: $df00) (SBETFEbase).
-cartieee <name>
Attach CBM IEEE-488 cartridge image.
-ieee488
+ieee488 Enable/disable emulation of the IEEE488 interface (IEEE488=1, IEEE488=0).
-ieee488image <name>
Set IEEE488 interface image name (IEEE488Image).
-ieeeflash64
+ieeeflash64
Enable/disable IEEE Flash! 64 interface (IEEEFlash64).
-ieeeflash64image
Set IEEE Flash! 64 ROM image name (IEEEFlash64Image).
-ieeeflash64dev8
+ieeeflash64dev8
Route/do not route device 8 to IEEE bus of IEEE Flash! 64 interface
(IEEEFlash64Dev8).
-ieeeflash64dev910
+ieeeflash64dev910
Route/do not route devices 9 and 10 to IEEE bus of IEEE Flash! 64 interface
(IEEEFlash64Dev910).
-ieeeflash64dev4
+ieeeflash64dev4
Route/do not route device 4 to IEEE bus of IEEE Flash! 64 interface
(IEEEFlash64Dev4).
-cartieeeflash64 <Name>
Attach raw 8KiB IEEE Flash! 64 cartridge image
-isepic
+isepic Enable/disable the ISEPIC cart (IsepicCartridgeEnabled=1,
IsepicCartridgeEnabled=0).
-isepicswitch
+isepicswitch
Enable/disable the ISEPIC switch (IsepicSwitch=1, IsepicSwitch=0).
Chapter 6: Machine-specific features 135
-cartisepic <name>
Attach raw 2KiB ISEPIC cartridge image.
-isepicimagename <name>
Set ISEPIC image name (Isepicfilename).
-isepicimagerw
+isepicimagerw
Allow/disallow writing to ISEPIC image (IsepicImageWrite=1,
IsepicImageWrite=0).
-cartkcs <name>
Attach raw 16KiB KCS Power cartridge image.
-cartks <name>
Attach raw 24KiB Kingsoft cartridge image.
-cartltk <name>
Attach raw Lt. Kernal Host Adaptor cartridge image.
-ltkimage0 <name>
-ltkimage1 <name>
-ltkimage2 <name>
-ltkimage3 <name>
-ltkimage4 <name>
-ltkimage5 <name>
-ltkimage6 <name>
Strings specifying the full path to up to seven harddisk images. If a file is non-
existing the drive is not emulated. The first drive is necessary. (ltkimage0,
ltkimage1, ltkimage2, ltkimage3, ltkimage4, ltkimage5, ltkimage6).
-ltkio <value>
Integer specifying the Base address of the I/O interface. (1: $de00, 2: $df00)
Default is $df00.
-ltkport <value>
Integer specifying the port number in multiplexed multi-computer/single-disk
configurations. (0..15) Default is 0, the master.
-ltkserial <name>
String specifying the serial number. It must be in the form "00000000" with
all numeric digits. Default is 87000000. LTK DOS install disks are locked to
their respective LTK host adapor boot ROM. This setting will override the boot
ROM value. The floppy disk serial number can be changed with a sector editor
on track 18, sector 18.
-cartmach5 <name>
Attach raw 8KiB MACH 5 cartridge image.
-cartmd <name>
Attach raw 32/64/128KiB Magic Desk cartridge image.
-cartmf <name>
Attach raw Magic Formel cartridge image.
Chapter 6: Machine-specific features 136
-cartmax <name>
Attach raw MAX Basic cartridge image.
-cartmm <name>
Attach raw MultiMAX cartridge image.
-cartmikro <name>
Attach raw 8KiB Mikro Assembler cartridge image.
-mmc64
+mmc64 Enable/disable the MMC64 expansion (MMC64=1, MMC64=0).
-cartmmc64 <name>
Attach raw 8KiB MMC64 cartridge image.
-mmc64bios <name>
Specify name of MMC64 BIOS image (MMC64BIOSfilename).
-mmc64image <name>
Specify name of MMC64 image (MMC64imagefilename).
-mmc64readonly
Set the MMC64 card to read-only (MMC64_RO=1).
-mmc64readwrite
Set the MMC64 card to read/write (MMC64_RO=0).
-mmc64flash
+mmc64flash
Enable/Disable the MMC64 flash jumper (MMC64_flashjumper=1,
MMC64_flashjumper=0).
-mmc64bioswrite
Save the MMC64 bios when changed (MMC64_bios_write=1).
-mmc64biosreadonly
Do not save the MMC64 bios when changed (MMC64_bios_write=0).
-mmc64rev <revision>
Specify MMC64 revision (MMC64_revision). (0: Revision A, 1: Revision B)
-mmc64sdtype <type>
Specify MMC64 SD type (MMC64_sd_type). (0: Auto, 1: MMC, 2: SD, 3:
SDHC)
-mmc64clockportdevice <device>
Set MMC64 clockport device (MMC64ClockPort) (0: None, 1: ETH64-II, 2:
RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
-cartmmcr <name>
Attach raw 512KiB MMC Replay cartridge image.
-mmcrrescue
+mmcrrescue
Enable/disable MMC Replay rescue mode (MMCRRescueMode=1,
MMCRRescueMode=0).
Chapter 6: Machine-specific features 137
-mmcrimagerw
+mmcrimagerw
Allow/disallow writing to MMC Replay image (MMCRImageWrite=1,
MMCRImageWrite=0).
-mmcrsdtype <type>
Specify MMC Replay SD type (MMCRSDType). (0: Auto, 1: MMC, 2: SD, 3:
SDHC)
-mmcrcardimage <filename>
Specify MMC Replay card image filename (MMCRCardImage).
-mmcrcardrw
+mmcrcardrw
Allow/disallow writes to MMC Replay card image (MMCRCardRW=1,
MMCRCardRW=0).
-mmcreepromimage <filename>
Specify MMC Replay EEPROM image filename (MMCREEPROMImage).
-mmcreepromrw
+mmcreepromrw
Allow/disallow writes to MMC Replay EEPROM image (MMCREEPROMRW=1,
MMCREEPROMRW=0).
-mmcrclockportdevice <id>
Set MMC Replay clockport device (MMCRClockPort). (0: None, 1: ETH64-II,
2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
-cartmv <name>
Attach raw 16KiB Magic Voice cartridge image.
-magicvoiceimage <name>
Specify Magic Voice cartridge ROM image filename (MagicVoiceImage).
-magicvoice
+magicvoice
Enable/disable Magic Voice cartridge (MagicVoiceCartridgeEnabled=1,
MagicVoiceCartridgeEnabled=0).
-cartocean <name>
Attach raw Ocean cartridge image.
-cartp64 <name>
Attach raw 256KiB Prophet 64 cartridge image.
-cartpf <name>
Attach raw 64KiB Pagefox cartridge image.
-cartpartner64 <name>
Attach raw 16KiB Partner 64 cartridge image.
-cartramcart <name>
Attach raw RamCart cartridge image.
Chapter 6: Machine-specific features 138
-ramcart
+ramcart Enable/disable the RAMCART expansion (RAMCART=1, RAMCART=0).
-ramcartsize <size in KiB>
Size of the RAMCART expansion (RAMCARTsize). (64, 128)
-ramcartimage <name>
Specify name of RAMCART image (RAMCARTfilename).
-ramcartimagerw
+ramcartimagerw
Allow/disallow writing to RAMCart image (RAMCARTImageWrite=1,
RAMCARTImageWrite=0).
-ramcartro
Set the RamCart switch to read-only (RAMCART_RO=1).
-ramcartrw
Set the RamCart switch to read-only (RAMCART_RO=0).
-ramlink
+ramlink Enable/disable emulation of the RAMLink module. This option emulates the
behavior of the enable/disable switch on the unit (RAMLINK=1, RAMLINK=0).
-cartramlink <name>
Attach the raw 64 KiB ROM image.
-ramlinkbios <name>
Specify name of RAMLink BIOS image (RAMLINKBIOSfilename).
-ramlinkbios <name>
Specify name of RAMLink BIOS image (RAMLINKBIOSfilename).
-ramlinkimage <name>
Specify name of RAMLink RAMCard image (RAMLINKfilename).
-ramlinkimagerw
+ramlinkimagerw
Allow/disallow writing to RAMCard image on detach (RAMLINKImageWrite=1,
RAMLINKImageWrite=0).
-ramlinksize <size in MiB>
Size of the RAMCard unit (RAMLINKsize). (0..16; default is 0)
-ramlinkmode <value>
Sets the RAM port mode of the unit. "1", the default, (Normal) only allows
RAMLink access to the RAM port (REU, GEORAM, and RAMDrive); their
registers are hidden otherwise. "0" (Direct) exposes their registers all the time.
This option emulates the behavior of the Normal/Direct switch on the unit.
(RAMLINKmode). (1:normal (default), 0:direct)
-ramlinkrtcsave
+ramlinkrtcsave
Enable/disable saving of the RTC data when changed (RAMLINKRTCSave=1,
RAMLINKRTCSave=0).
Chapter 6: Machine-specific features 139
-cartrep256 <name>
Attach raw REX EP256 cartridge image.
-cartrgcd <Name>
Attach raw 64KiB RGCD cartridge image.
-rgcdrev <Revision>
Set the RGCD-cartridge hardware variant. (RGCDrevision). (0: RGCD 64k,
1: Hucky’s EPROM Cartridge)
-cartross <name>
Attach raw 16/32KiB ROSS cartridge image.
-cartrrnet <name>
Attach raw 8KiB RR-Net MK3 cartridge image.
-cartrr <name>
Attach raw 64KiB Retro Replay cartridge image.
-rrbioswrite
+rrbioswrite
Enable/disable saving of the RR ROM at exit (RRBiosWrite=1,
RRBiosWrite=0).
-rrbankjumper
+rrbankjumper
Set/unset RR Bank Jumper (RRBankJumper=1, RRBankJumper=0).
-rrflashjumper
+rrflashjumper
Set/unset RR Flash Jumper (RRFlashJumper=1, RRFlashJumper=0).
-rrrev <Revision>
Set the RR revision (RRrevision). (0: Retro Replay, 1: Nordic Replay)
-rrclockportdevice <device>
Set the RR clockport device (RRClockPort) (0: None, 1: ETH64-II, 2: RRNet,
3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)
-rrnetmk3flash
+rrnetmk3flash
SetRemove the RRNETMK3 Flash Jumper (RRNETMK3_flashjumper=1,
RRNETMK3_flashjumper=0).
-rrnetmk3bioswrite
+rrnetmk3bioswrite
Save/Do not save the RRNETMK3 bios when changed (RRNETMK3_bios_
write=1, RRNETMK3_bios_write=0).
-cartrrf <name>
Attach raw 8KiB REX RAM-Floppy cartridge image.
-rexramfloppyimage <name>
Set filename for the REX RAM-Floppy RAM image (RRFfilename).
Chapter 6: Machine-specific features 140
-rexramfloppyimagerw
+rexramfloppyimagerw
Save/Do not save the REX RAM-Floppy RAM when changed
(RRFImageWrite=1, RRFImageWrite=0).
-cartru <name>
Attach raw 8KiB REX Utility cartridge image.
-cartsdbox <name>
Attach raw 128KiB SD-BOX cartridge image.
-carts64 <name>
Attach raw 4KiB Snapshot 64 cartridge image.
-cartsb <name>
Attach raw Structured Basic cartridge image.
-cartse5 <name>
Attach raw 16KiB Super Explode V5 cartridge image.
-cartsg <name>
Attach raw 64KiB Super Games cartridge image.
-cartsilver <Name>
Attach raw Silverrock 128 cartridge image.
-cartsimon <name>
Attach raw 16KiB Simons’ Basic cartridge image.
-cartss4 <name>
Attach raw 32KiB Super Snapshot V4 cartridge image.
-cartss5 <name>
Attach raw 64KiB or 128KiB Super Snapshot V5 cartridge image.
-ssramexpansion
+ssramexpansion
Enable/disable 32KiB addon RAM. (SSRamExpansion=1, SSRamExpansion=0).
-cartstar <name>
Attach raw 16KiB Stardos cartridge image.
-cartturtle <name>
Attach raw 16KiB Turtle Graphics II cartridge image.
-cartwl <name>
Attach raw 16KiB Westermann Learning cartridge image.
-cartws <name>
Attach raw 8KiB Warp Speed cartridge image.
-cartzaxxon <name>
Attach raw 16KiB Zaxxon cartridge image.
-cartzipp <name>
Attach raw 8KiB ZIPP-CODE 48 cartridge image.
Chapter 6: Machine-specific features 141
VICIIPALOddLinePhase
Integer specifying phase for color carrier in odd lines. (0..2000)
VICIIPALOddLineOffset
Integer specifying phase offset for color carrier in odd lines. (0..2000)
VICIIPALDelaylineType
Integer specifying the type of delay line used in the CRT (0: normal, 1: U only
(1084 style))
VICIIAudioLeak
Boolean specifying whether to enable/disable video to audio leak emulation.
VICIIFilter
Integer specifying rendering filter. (0: None, 1: CRT emulation, 2: Scale2x)
VICIIBorderMode
Integer specifying border display mode. (0: normal, 1: full, 2: debug, 3: none)
VICIIVSync
Boolean specifying whether to enable vsync to prevent screen tearing. (0: vsync
off, 1: vsync on)
VICIIShowStatusbar
Boolean specifying whether to show the status bar or not (x64, x64sc, x64dtv,
xscpu64, x128 and xcbm5x0).
VICIIFullscreen
Boolean specifying whether to use fullscreen mode or not (all emulators except
xcbm2, xpet, xplus4, xvic and vsid).
The following resources are only present if hardware scaling support (OpenGL or Direct-X)
is present and used at compile time.
VICIIAspectRatio
String/float specifying the aspect ratio. (0.5-2.0)
VICIIAspectMode
Integer specifying the OpenGL aspect mode. (0: off, 1: custom, 2: true)
VICIIGLFilter
Integer specifying the OpenGL filtering mode. (0: nearest neighbour, 1: bilin-
ear, 2: bicubic)
VICIIFlipX
Boolean to enable/disable OpenGL horizontal screen flip.
VICIIFlipY
Boolean to enable/disable OpenGL vertical screen flip.
VICIIRotate
Boolean to enable/disable OpenGL 90 degree clockwise rotation.
Chapter 6: Machine-specific features 144
-VICIIsaturation <0-2000>
Set saturation of internal calculated palette (VICIIColorSaturation).
-VICIIcontrast <0-2000>
Set contrast of internal calculated palette (VICIIColorContrast).
-VICIIbrightness <0-2000>
Set brightness of internal calculated palette (VICIIColorBrightness).
-VICIIgamma <0-4000>
Set gamma of internal calculated palette (VICIIColorGamma).
-VICIItint <0-2000>
Set tint of internal calculated palette (VICIIColorTint).
-VICIIoddlinesphase <0-2000>
Set phase for color carrier in odd lines (VICIIPALOddLinePhase).
-VICIIoddlinesoffset <0-2000>
Set phase offset for color carrier in odd lines (VICIIPALOddLineOffset).
-VICIIcrtblur <0-1000>
Amount of horizontal blur for the CRT emulation (VICIIPALBlur).
-VICIIcrtscanlineshade <0-1000>
Amount of scan line shading for the CRT emulation (VICIIPALScanLineShade).
-VICIIcrtscanlineshade <type>
Type of delay line used in the CRT (0: normal, 1: U only (1084 style))
(VICIIPALDelaylineType).
-VICIIaudioleak
+VICIIaudioleak
Enable/disable video to audio leak emulation (VICIIAudioLeak=1,
VICIIAudioLeak=0).
-VICIIshowstatusbar
+VICIIshowstatusbar
Show/hide status bar (VICIIShowStatusbar=1, VICIIShowStatusbar=0).
-VICIIvsync
Enable vsync to prevent screen tearing (VICIIVSync=1).
+VICIIvsync
Disable vsync to allow screen tearing (VICIIVSync=0).
-VICIIfull
+VICIIfull
Enable/Disable fullscreen (VICIIFullscreen=1, VICIIFullscreen=0) (all em-
ulators except xcbm2, xpet, xplus4, xvic and vsid).
The following command-line options are only present if hardware scaling support (OpenGL
or Direct-X) is present and used at compile time.
-VICIIaspectmode <mode>
Set the aspect mode (VICIIAspectMode). (0: off, 1: custom, 2: true)
Chapter 6: Machine-specific features 146
• “Resampling” clocks the SID chip each cycle, and uses the theoretically correct
method for sample generation. This delivers CD quality sound, but is extremely
CPU intensive, and is thus most useful for non-interactive sound generation. Unless
you have a very fast machine, that is.
• “reSID resampling passband” specifies the percentage of the total bandwidth allocated
to the resampling filter passband. The work rate of the resampling filter is inversely
proportional to the remaining transition band percentage. This implies that e.g. with
the transition band starting at ~ 20kHz, it is faster to generate 48kHz than 44.1kHz
samples. For CD quality sound generation at 44.1kHz the passband percentage should
be set to 90 (i.e. the transition band starting at almost 20kHz).
SidResidEnableRawOutput
Boolean specifying whether raw debug output is enabled. When enabled, the
raw - not downsampled - audio data is written to a file called resid.raw in the
current working directory.
-sid5address ADDRESS
Specifies the start address for the fifth SID chip (Sid5AddressStart) (x64,
x64sc, xscpu64, x128 and vsid only). (x128: 0xD420, 0xD440, 0xD460,
0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)
-sid6address ADDRESS
Specifies the start address for the sixth SID chip (Sid6AddressStart) (x64,
x64sc, xscpu64, x128 and vsid only). (x128: 0xD420, 0xD440, 0xD460,
0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)
-sid7address ADDRESS
Specifies the start address for the seventh SID chip (Sid7AddressStart)
(x64, x64sc, xscpu64, x128 and vsid only). (x128: 0xD420, 0xD440, 0xD460,
0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)
Chapter 6: Machine-specific features 152
-sid8address ADDRESS
Specifies the start address for the eight SID chip (Sid8AddressStart) (x64,
x64sc, xscpu64, x128 and vsid only). (x128: 0xD420, 0xD440, 0xD460,
0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)
-sidenginemodel <engine and model>
Specify engine and model for the emulated SID chip (SidEngine,
SidModel). (FastSID 6581: 0/fast/fastold/fast6581, FastSID 8580:
1/fastnew/fast8580, ReSID 6581: 256/resid/residold/resid6581, ReSID
8580: 257/residnew/resid8580, ReSID 8580 + digiboost: 258/residdigi-
tal/residd/residnewd/resid8580d, DTVSID: 260/dtv/c64dtv/dtvsid, Catweasel
MKIII: 512/catweaselmkiii/catweasel3/catweasel/cwmkiii/cw3/cw, HardSID:
768/hardsid/hard/hs, ParSID Port 1: 1024/parsid/parsid1/par1/lpt1, ParSID
Port 2: 1280/parsid2/par2/lpt2 ParSID Port 3: 1536/parsid3/par3/lpt3)
-sidfilters
+sidfilters
Enable/disable emulation of the built-in SID filters (SidFilters=1,
SidFilters=0).
-residsamp METHOD
Specifies the sampling method; fast (SidResidSampling=0), interpolating
(SidResidSampling=1), resampling (SidResidSampling=2), fast resampling
(SidResidSampling=3).
-residpass PERCENTAGE
Specifies the resampling filter passband in percentage of the total bandwidth
(SidResidPassband=0-90) for 6581.
-residgain PERCENTAGE
Specifies reSID gain in percent (90 - 100) for 6581.
-residfilterbias <number>
reSID filter bias setting for 6581, which can be used to adjust DAC bias in
millivolts.
-residpass PERCENTAGE
Specifies the resampling filter passband in percentage of the total bandwidth
(SidResid8580Passband=0-90) for 8580.
-residgain PERCENTAGE
Specifies reSID gain in percent (90 - 100) for 8580.
Chapter 6: Machine-specific features 153
-residfilterbias <number>
reSID filter bias setting for 8580, which can be used to adjust DAC bias in
millivolts.
-residrawoutput
+residrawoutput
Boolean specifying whether raw debug output is enabled. When enabled, the
raw - not downsampled - audio data is written to a file called resid.raw in the
current working directory.
DS12C887RTCSave
Boolean specifying whether the DS12C887 RTC data should be saved when
changed or not.
ETHERNETCART_ACTIVE
Boolean that specifies whether the CS8900 ethernet interface emulation is ac-
tive.
ETHERNETCARTMode
Boolean that specifies whether RR-Net compatible mapping is enabled.
ETHERNETCARTBase
Integer specifying the I/O base address of the emulated ethernet cartridge,
GEORAM Boolean specifying whether the GEO-RAM cartridge should be emulated or
not. (x64, x64sc, x128).
GEORAMfilename
String specifying the filename of the GEORAM image. (x64, x64sc, x128).
GEORAMImageWrite
Boolean, if true write back the GEO-RAM image file automatically, incase the
RAM contents changed, when detaching or quitting the emulator. (x64, x64sc,
x128).
GEORAMsize
Integer specifying the size of the emulated GEO-RAM in KiB. (512, 1024, 2048,
4096). (x64, x64sc, x128).
MIDIEnable
Boolean specifying whether the MIDI cartridge should be emulated or not (x64,
x64sc, xscpu64, x128 only, and only if MIDI support is enabled and available
at compile time).
MIDIMode Integer specifying the type of emulated MIDI interface (x64, x64sc, xscpu64 and
x128 only, and only if MIDI support is enabled and available at compile time).
(0: Sequential, 1: Passport/Syntech, 2: DATEL/Siel/JMS, 3: Namesoft, 4:
Maplin)
REU Boolean specifying whether the RAM Expansion Module should be emulated
or not.
REUfilename
String specifying the filename of the REU image.
REUImageWrite
Boolean, if true write back the REU image file automatically, in case the RAM
contents changed, when detaching or quitting the emulator.
REUsize Integer specifying the size of the emulated REU in KiB. (128, 256, 512, 1024,
2048, 4096, 8192, 16384)
SFXSoundExpander
Boolean specifying whether the SFX Sound Expander should be emulated or
not.
Chapter 6: Machine-specific features 155
SFXSoundExpanderChip
Integer specifying which YM chip is emulated. (3526, 3812)
SFXSoundSampler
Boolean specifying whether the SFX Sound Sampler should be emulated or not.
-georamimage <name>
Specify name of GEORAM image (GEORAMfilename).
-georamimagerw
+georamimagerw
Allow/disallow writing to GEORAM image (GEORAMImageWrite=1,
GEORAMImageWrite=0).
-georamsize <size in KiB>
Size of the GEORAM expansion unit (GEORAMsize). (512, 1024, 2048, 4096)
-reu
+reu Enable/disable emulation of the RAM Expansion Module (REU=1, REU=0).
-cartreu <name>
Attach raw REU cartridge image.
-reuimage <name>
Specify name of REU image (REUfilename).
-reuimagerw
+reuimagerw
Allow/disallow writing to REU image (REUImageWrite=1, REUImageWrite=0).
-reusize <size in KiB>
Size of the RAM expansion unit (REUsize). (128, 256, 512, 1024, 2048, 4096,
8192, 16384)
-sfxse
+sfxse Enable/disable the SFX soundexpander cartridge (SFXSoundExpander=1,
SFXSoundExpander=0).
-sfxsetype <type>
Set YM chip type (SFXSoundExpanderChip). (3526, 3812)
-sfxss
+sfxss Enable/disable the SFX Sound Sampler cartridge (SFXSoundSampler=1,
SFXSoundSampler=0).
-ethernetcart
+ethernetcart
Disable/Enable the Ethernet Cartridge (ETHERNETCART_ACTIVE). (TFE/RR-
Net/64NIC/FB-NET)
-ethernetcartmode <Mode>
Mode of Ethernet Cartridge (ETHERNETCARTMode). (0: TFE, 1: RR-Net)
-ethernetcartbase <Base address>
Base address of the Ethernet Cartridge. (ETHERNETCARTBase) (0xDE00,
0xDE10, 0xDE20, 0xDE30, 0xDE40, 0xDE50, 0xDE60, 0xDE70, 0xDE80,
0xDE90, 0xDEA0, 0xDEB0, 0xDEC0, 0xDED0, 0xDEE0, 0xDEF0, 0xDF00,
0xDF10, 0xDF20, 0xDF30, 0xDF40, 0xDF50, 0xDF60, 0xDF70, 0xDF80,
0xDF90, 0xDFA0, 0xDFB0, 0xDFC0, 0xDFD0, 0xDFE0, 0xDFF0)
Chapter 6: Machine-specific features 157
-tfe Enable the Ethernet Cartridge in TFE ("The Final Ethernet") compatible
mode and set default I/O address
-rrnet Enable the Ethernet Cartridge in RR-Net compatible mode and set default I/O
address
-burstmod <value>
Set the kind of burst modification. This emulates the fast serial bus connection
as described at https://a1bert.kapsi.fi/Dev/burst/, with the wire to the
tape port cut (BurstMod). (0: None, 1: CIA-1, 2: CIA-2)
MachinePowerFrequency
Integer that specifies the frequency of the power grid in Hz (50, 60). This is
used to determine the tick frequency for the TOD clocks.
CPMCart Boolean that specifies if a CP/M cartridge is attached.
-gmod128eepromrw
+gmod128eepromrw
Enable/Disable writes to Gmod2-C128 EEPROM image (GMod128EEPROMRW=1,
GMod128EEPROMRW=0).
-gmod128flashwrite
+gmod128flashwrite
Enable/Disable saving of the Gmod2-C128 ROM at exit (GMod128FlashWrite=1,
GMod128FlashWrite=0).
VDCPALBlur
Integer specifying amount of horizontal blur for the CRT emulation. (0..1000)
VDCAudioLeak
Boolean specifying whether to enable/disable video to audio leak emulation.
VDCFilter
Integer specifying rendering filter (0: None, 1: CRT emulation, 2: Scale2x)
VDCVSync Boolean specifying whether to enable vsync to prevent screen tearing. (0: vsync
off, 1: vsync on)
TEDShowStatusbar
Boolean specifying whether to show the status bar or not (x128 only).
VDCFullscreen
Boolean specifying whether to use fullscreen mode or not (x128 only).
The following resources are only present if hardware scaling support (OpenGL or Direct-X)
is present and used at compile time.
VDCAspectRatio
String/float specifying the aspect ratio. (0.5-2.0)
VDCAspectMode
Integer specifying the OpenGL aspect mode. (0: off, 1: custom, 2: true)
VDCGLFilter
Integer specifying the OpenGL filtering mode. (0: nearest neighbour, 1: bilin-
ear, 2: bicubic)
VDCFlipX Boolean to enable/disable OpenGL horizontal screen flip.
VDCFlipY Boolean to enable/disable OpenGL vertical screen flip.
VDCRotate
Boolean to enable/disable OpenGL 90 degree clockwise rotation.
-VDCintpal
Use an internal calculated palette (VDCExternalPalette=0).
-VDCextpal
Use an external palette (file) (VDCExternalPalette=1).
-VDCpalette <name>
Specify name of file of external palette (VDCPaletteFile).
-VDC16KB Set the VDC memory size to 16KiB (VDC64KB=0).
-VDC64KB Set the VDC memory size to 64KiB (VDC64KB=1).
-VDCRevision <number>
Set VDC revision (VDCRevision). (0..2)
-VDCsaturation <0-2000>
Set saturation of internal calculated palette (VDCColorSaturation).
-VDCcontrast <0-2000>
Set contrast of internal calculated palette (VDCColorContrast).
-VDCbrightness <0-2000>
Set brightness of internal calculated palette (VDCColorBrightness).
-VDCgamma <0-4000>
Set gamma of internal calculated palette (VDCColorGamma).
-VDCtint <0-2000>
Set tint of internal calculated palette (VDCColorTint).
-VDCcrtblur <0-1000>
Amount of horizontal blur for the CRT emulation (VDCPALBlur).
-VDCcrtscanlineshade <0-1000>
Amount of scan line shading for the CRT emulation (VDCPALScanLineShade).
-VDCaudioleak
+VDCaudioleak
Enable/disable video to audio leak emulation (VDCAudioLeak=1,
VDCAudioLeak=0).
-VDCfilter <Mode>
Select rendering filter (VDCFilter). (0: None, 1: CRT emulation, 2: Scale2x)
-VDCshowstatusbar
+VDCshowstatusbar
Show/hide status bar (VDCShowStatusbar=1, VDCShowStatusbar=0).
-VDCvsync
Enable vsync to prevent screen tearing (VDCVSync=1).
+VDCvsync
Disable vsync to allow screen tearing (VDCVSync=0).
-VDCfull
+VDCfull Enable/Disable fullscreen (VDCFullscreen=1, VDCFullscreen=0) (x128 only).
Chapter 6: Machine-specific features 164
The following command-line options are only present if hardware scaling support (OpenGL
or Direct-X) is present and used at compile time.
-VDCaspectmode <mode>
Set the aspect mode (VDCAspectMode). (0: off, 1: custom, 2: true)
-VDCaspect <aspect ratio>
Set the aspect ratio (VDCAspectRatio). (0.5-2.0)
-VDCglfilter <mode>
Set OpenGL (or Direct-X) filtering mode (0 = nearest, 1 = linear, 2 = bicubic)
(VDCglfilter).
-VDCflipx
+VDCflipx
Enable/disable OpenGL horizontal screen flip (VDCFlipX=1, VDCFlipX=0).
-VDCflipy
+VDCflipy
Enable/disable OpenGL vertical screen flip (VDCFlipY=1, VDCFlipY=0).
-VDCrotate
+VDCrotate
Enable/disable OpenGL 90 degree rotation (VDCRotate=1, VDCRotate=0).
KernalIntName
String specifying the filename of the international Kernal ROM image.
KernalDEName
String specifying the filename of the German Kernal ROM image.
KernalFIName
String specifying the filename of the Finnish Kernal ROM image.
KernalFRName
String specifying the filename of the French Kernal ROM image.
KernalITName
String specifying the filename of the Italian Kernal ROM image.
KernalNOName
String specifying the filename of the Norwegian Kernal ROM image.
KernalSEName
String specifying the filename of the Swedish Kernal ROM image.
KernalCHName
String specifying the filename of the Swiss Kernal ROM image.
BasicLoName
BasicHiName
Strings specifying the filename of the Basic ROM images.
Kernal64Name
String specifying the filename of the C64 Kernal ROM image.
Basic64Name
String specifying the filename of the C64 Basic ROM image.
InternalFunctionROM
Integer specifying the internal function ROM type (0: None, 1: ROM, 2: RAM,
3: RTC).
InternalFunctionName
String specifying the filename of the ROM image for the internal function ROM.
InternalFunctionROMRTCSave
Boolean to enable/disable the saving of the Internal Function RTC data when
changed.
-basichi <name>
Specify name of BASIC ROM image (higher part) (BasicHiName).
-kernal <name>
Specify name of international Kernal ROM image (KernalIntName).
-kernalde <name>
Specify name of German Kernal ROM image (KernalDEName).
-kernalfi <name>
Specify name of Finnish Kernal ROM image (KernalFIName).
-kernalfr <name>
Specify name of French Kernal ROM image (KernalFRName).
-kernalit <name>
Specify name of Italian Kernal ROM image (KernalITName).
-kernalno <name>
Specify name of Norwegian Kernal ROM image (KernalNOName).
-kernalse <name>
Specify name of Swedish Kernal ROM image (KernalSEName).
-kernalch <name>
Specify name of Swiss Kernal ROM image (KernalCHName).
-chargen <name>
Specify name of international character generator ROM image
(ChargenIntName).
-chargde <name>
Specify name of German character generator ROM image (ChargenDEName).
-chargfi <name>
Specify name of Finnish character generator ROM image (ChargenFRName).
-chargfr <name>
Specify name of French character generator ROM image (ChargenFRName).
-chargit <name>
Specify name of Italian character generator ROM image (ChargenFRName).
-chargno <name>
Specify name of Norwegian character generator ROM image (ChargenNOName).
-chargse <name>
Specify name of Swedish character generator ROM image (ChargenSEName).
-chargch <name>
Specify name of Swiss character generator ROM image (ChargenCHName).
-intfunc <type>
Set the internal Function ROM type (InternalFunctionROM). (0: None, 1:
ROM, 2: RAM, 3: RTC)
-intfrom <name>
Specify name of internal Function ROM image (InternalFunctionName).
Chapter 6: Machine-specific features 167
-intfuncrtcsave
+intfuncrtcsave
Enable/disable the saving of the Internal Function RTC data when changed
(InternalFunctionROMRTCSave=1, InternalFunctionROMRTCSave=0).
-model <Model>
Set the C128 model (MachineVideoStandard, MachinePowerFrequency,
CIA1Model, CIA2Model, VICIINewLuminances, VDCRevision, VDC64KB,
SidEngine, SidModel). (c128/c128dcr, pal/ntsc)
-c128fullbanks
+c128fullbanks
Enable/disable RAM banks 2 and 3 (C128FullBanks=1, C128FullBanks=0).
-machinetype <Type>
Set the C128 machine type (MachineType). (0: International, 1: Finnish, 2:
French, 3: German, 4: Italian, 5: Norwegian, 6: Swedish)
-hidevdcwindow
+hidevdcwindow
Hide/show the VDC display window (C128HideVDC=1, C128HideVDC=0).
-dualwindow
Turn on dual-window rendering, opening two windows, one for each display.
(DualWindow).
-palv3romimage <name>
Specify filename of the C64DTV PAL v3 ROM image (DTVPALV3FlashName).
-hummerromimage <name>
Specify filename of the C64DTV Hummer ROM image (DTVHummerFlashName).
-c64dtvromrw
+c64dtvromrw
Enable/disable writing to C64DTV ROM image (c64dtvromrw=1,
c64dtvromrw=0).
The trueflashfs option is analogous to True drive emulation. If disabled, any file access to
the flash filesystem (device 1) will go to the local file system instead.
-trueflashfs
+trueflashfs
Enable/disable true hardware flash file system (FlashTrueFS=1,
FlashTrueFS=0).
-fsflash <name>
Specify the directory for the flash file system device (FSFlashDir).
6.3.3 LumaFix
The PAL C64DTVs have wrong resistors in the video output circuit, which causes incorrect
luminances. Several hardware solutions ("LumaFixes") have been developed to fix this flaw.
The fixed video output is emulated by selecting "New Luminances". The unmodified
C64DTV video output can be emulated with "Old Luminances".
The default setting is "New Luminances".
6.3.4 Userport
The C64DTV userport emulation currently supports three devices: Hummer ADC, userport
joystick and PS/2 mouse.
The joystick that controls either the Hummer ADC or userport joystick can be selected
using the same parameter or menu option.
While using the Hummer ADC, joystick UP and DOWN are mapped to the Hummer buttons
A and B respectively. LEFT and RIGHT set the ADCs output to 0 and 255. Centering
the joystick results in the ADC value of 128.
Currently the Hummer ADC and userport joystick are mutually exclusive. This means that
enabling one disables the other. PS/2 mouse emulation can be used simultaneously with
either Hummer ADC or userport joystick.
-hummeradc
+hummeradc
Enable/Disable Hummer ADC (HummerADC=1, HummerADC=0).
Chapter 6: Machine-specific features 170
-ps2mouse
+ps2mouse
Enable/disable PS/2 mouse on userport (ps2mouse=1, ps2mouse=0).
6.3.5 Debug
Debugging information on Blitter, DMA and Flash can be enabled with command line
parameters. This can be useful for DTV software development.
-dtvblitterlog
+dtvblitterlog
Enable or disable DTV Blitter log
-dtvdmalog
+dtvdmalog
Enable or disable DTV DMA log
-dtvflashlog
+dtvflashlog
Enable or disable DTV Flash log
DTVPALV3FlashName
String specifying the filename of the DTV PAL v3 Flash ROM image.
DTVHummerFlashName
String specifying the filename of the DTV Hummer Flash ROM image.
DTVFlashRevision
Integer specifying which of the above Flash ROM images will be used.
c64dtvromrw
Boolean that specifies whether the emulated Flash ROM is writeable.
FSFlashDir
String specifying the working directory for the flash file system.
FlashTrueFS
Boolean, enables true hardware flash file system.
HummerADC
Boolean to enable/disable the Hummer ADC emulation.
ps2mouse Boolean to enable/disable PS/2 Mouse emulation.
DtvBlitterLog
Boolean, enables Blitter logging.
DtvDMALog
Boolean, enables DMA logging.
DtvFlashLog
Boolean, enables Flash ROM logging.
MachineVideoStandard
Integer that specifies the video standard of the emulated machine. (1: PAL, 2:
NTSC)
• 4: Ultimem
• 5: Final Expansion
• - 10: SID Cartridge
• - 11: IEEE-4888
• - 12: IO ram cart (IO2)
• - 13: IO ram cart (IO3)
• 0x8000: Auto Detect
• 0x8002: 4KiB at $2000-$2FFF
• 0x8003: 8KiB at $2000-$3FFF
• 0x8004: 4KiB at $6000-$6FFF
• 0x8005: 8KiB at $6000-$7FFF
• 0x8006: 4KiB at $A000-$AFFF
• 0x8007: 8KiB at $A000-$BFFF
• 0x8008: 4KiB at $B000-$BFFF
• 0x8009: 8KiB at $4000-$5FFF
• 0x800A: 4KiB at $4000-$4FFF
• 0x8013: 16KiB at $2000-$5FFF
• 0x8015: 16KiB at $6000-$9FFF
• 0x8019: 16KiB at $4000-$7FFF
CartridgeFile
String specifying the filename of the image for the current cartridge.
IOCollisionHandling
Integer specifying the way the I/O collisions should be handled. (0: error
message and detach all involved carts, 1: error message and detach last attached
involved carts, 2: warning in log and ’AND’ the valid return values)
GenericCartridgeFile2000
GenericCartridgeFile4000
GenericCartridgeFile6000
GenericCartridgeFileA000
GenericCartridgeFileB000
Strings specifying the name of the respective cartridge ROM images.
FinalExpansionWriteBack
Boolean, if true write back the Flash ROM image file automatically, incase the
contents changed, when detaching or quitting the emulator.
VicFlashPluginWriteBack
Boolean, if true write back the Flash ROM image file automatically, incase the
contents changed, when detaching or quitting the emulator.
MegaCartNvRAMfilename
String specifying the filename of the MegaCart NvRAM image.
Chapter 6: Machine-specific features 176
MegaCartNvRAMWriteBack
Boolean, if true write back the NvRAM image file automatically, incase the
RAM contents changed, when detaching or quitting the emulator.
UltiMemWriteBack
Boolean, if true write back the Flash ROM image file automatically, incase the
contents changed, when detaching or quitting the emulator.
IO2RAM Boolean specifying whether the I/O-2 ($9800-$9BFF) RAM cartridge should
be emulated or not.
IO3RAM Boolean specifying whether the I/O-3 ($9C00-$9FFF) RAM cartridge should
be emulated or not.
VFLImod Boolean specifying whether the VFLI modification should be enabled.
SFXSoundExpander
Boolean specifying whether the SFX Sound Expander should be emulated or
not.
SFXSoundExpanderChip
Integer specifying which YM chip is emulated. (3526, 3812)
SFXSoundExpanderIOSwap
Boolean, swap io mapping (map cart I/O to VIC20 I/O-2) or don’t swap io
mapping (map cart I/O to VIC20 I/O-3).
SFXSoundSampler
Boolean specifying whether the SFX Sound Sampler should be emulated or not.
SFXSoundSamplerIOSwap
Boolean, swap io mapping (map cart I/O to VIC20 I/O-2) or don’t swap io
mapping (map cart I/O to VIC20 I/O-3).
GEORAMfilename
String specifying the filename of the GEORAM image.
GEORAM Boolean specifying whether the GEO-RAM cartridge (using the MasC=uerade
cartridge adapter) should be emulated or not.
GEORAMsize
Integer specifying the size of the emulated GEO-RAM in KiB. (512, 1024, 2048,
4096).
GEORAMImageWrite
Boolean, if true write back the GEO-RAM image file automatically, incase the
RAM contents changed, when detaching or quitting the emulator.
GEORAMIOSwap
Boolean specifying whether the io mapping should be swapped (map cart I/O-
1 to VIC20 I/O-3 and cart I/O-2 to VIC20 I/O-2) or not (map cart I/O-2 to
VIC20 I/O-2 and cart I/O-2 to VIC20 I/O-3).
SidCart Boolean specifying whether SID-Cart emulation is enabled or not.
Chapter 6: Machine-specific features 177
SidAddress
Integer that specifies the base address of the emulated SID chip. (0x9800,
0x9C00)
SidClock Integer specifying the clock rate used for the emulated SID chip (0: C64, 1:
VIC20)
DIGIMAX Boolean specifying whether the DigiMAX cartridge (using the MasC=uerade
cartridge adapter) should be emulated or not.
DIGIMAXbase
Integer specifying the DigiMAX base address. (0x9800, 0x9820, 0x9840, 0x9860,
0x9880, 0x98A0, 0x98C0, 0x98E0, 0x9C00, 0x9C20, 0x9C40, 0x9C60, 0x9C80,
0x9CA0, 0x9CC0, 0x9CE0)
DS12C887RTC
Boolean specifying whether the DS12C887 RTC cartridge (using the
MasC=uerade cartridge adapter) should be emulated or not.
DS12C887RTCbase
Integer specifying the DS12C887 RTC base address. (0x9800, 0x9C00)
DS12C887RTCRunMode
Boolean specifying whether the DS12C887 RTC cartridge starts out running or
halted. (0: halted, 1: running)
DS12C887RTCSave
Boolean specifying whether the DS12C887 RTC data should be saved when
changed or not.
IEEE488 Boolean specifying whether the IEEE488 interface should be emulated or not.
MachineVideoStandard
Integer that specifies the video standard of the emulated machine (1: PAL, 2:
NTSC).
-cart6 <name>
Specify 4/8/16KiB extension ROM name at $6000
-cartA <name>
Specify 4/8KiB extension ROM name at $A000
-cartB <name>
Specify 4KiB extension ROM name at $B000
-cartgeneric <name>
Specify generic extension ROM name
-cartbb <name>
Specify Behr-Bonz extension ROM name
-cartmega <name>
Specify Mega-Cart extension ROM name
-mcnvramfile <name>
Set Mega-Cart NvRAM filename (MegaCartNvRAMfilename).
-mcnvramwriteback
+mcnvramwriteback
Enable/Disable Mega-Cart NvRAM writeback (MegaCartNvRAMWriteBack=1,
MegaCartNvRAMWriteBack=0).
-cartfe <name>
Specify Final Expansion extension ROM name
-fewriteback
+fewriteback
Enable/disable Final Expansion write back to ROM file (FinalExpansionWriteBack=1,
FinalExpansionWriteBack=0).
-cartfp <name>
Specify Vic Flash Plugin extension ROM name
-fpwriteback
+fpwriteback
Enable/Disable Vic Flash Plugin write back to ROM file (VicFlashPluginWriteBack=1,
VicFlashPluginWriteBack=0).
-ultimem <name>
Specify Ultimem extension ROM name
-umwriteback
+umwriteback
Enable/disable UltiMem write back to ROM file (UltiMemWriteBack=1,
UltiMemWriteBack=0).
-io2ram
+io2ram Enable/disable the I/O-2 ($9800-$9BFF) RAM cartridge (IO2RAM=1,
IO2RAM=0).
Chapter 6: Machine-specific features 179
-io3ram
+io3ram Enable/disable the I/O-3 ($9C00-$9FFF) RAM cartridge (IO3RAM=1,
IO3RAM=0).
-ieee488
+ieee488 Enable/disable VIC-1112 IEEE488 interface (IEEE488=1, IEEE488=0).
-vflimod
+vflimod Enable/disable VIC-20 VFLI modification (VFLImod=1, VFLImod=0)
-sidcart
+sidcart Enable/disable SID Cartridge (SidCart=1, SidCart=0).
-sidcartaddress <address>
Specify address of the SID Cartridge (SidAddress). (0x9800, 0x9C00)
-sidcartclock <clock>
Specify clock of the SID Cartridge (SidClock). (0: C64, 1: VIC20)
-ethernetcart
+ethernetcart
Disable/Enable the Ethernet Cartridge (ETHERNETCART_ACTIVE). (TFE/RR-
Net/64NIC/FB-NET)
-ethernetcartmode <Mode>
Mode of Ethernet Cartridge (ETHERNETCARTMode). (0: TFE, 1: RR-Net)
-ethernetcartbase <Base address>
Base address of the Ethernet Cartridge. (ETHERNETCARTBase) (0x9800,
0x9810, 0x9820, 0x9830, 0x9840, 0x9850, 0x9860, 0x9870, 0x9880, 0x9890,
0x98A0, 0x98B0, 0x98C0, 0x98D0, 0x98E0, 0x98F0, 0x9C00, 0x9C10, 0x9C20,
0x9C30, 0x9C40, 0x9C50, 0x9C60, 0x9C70, 0x9C80, 0x9C90, 0x9CA0,
0x9CB0, 0x9CC0, 0x9CD0, 0x9CE0, 0x9CF0)
-tfe Enable the Ethernet Cartridge in TFE ("The Final Ethernet") compatible
mode and set default I/O address
-rrnet Enable the Ethernet Cartridge in RR-Net compatible mode and set default I/O
address
-digimax
+digimax Enable/disable the DigiMAX cartridge (using the MasC=uerade cartridge
adapter) (DIGIMAX=1, DIGIMAX=0).
-digimaxbase <base address>
Base address of the DigiMAX cartridge (DIGIMAXbase). (0x9800, 0x9820,
0x9840, 0x9860, 0x9880, 0x98A0, 0x98C0, 0x98E0, 0x9C00, 0x9C20, 0x9C40,
0x9C60, 0x9C80, 0x9CA0, 0x9CC0, 0x9CE0)
-ds12c887rtc
+ds12c887rtc
Enable/disable the DS12C887 RTC cartridge (using the MasC=uerade car-
tridge adapter) (DS12C887RTC=1, DS12C887RTC=0).
Chapter 6: Machine-specific features 180
VICPALOddLineOffset
Integer specifying phase offset for color carrier in odd lines. (0..2000)
VICPALDelaylineType
Integer specifying the type of delay line used in the CRT (0: normal, 1: U only
(1084 style))
VICAudioLeak
Boolean specifying whether to enable/disable video to audio leak emulation.
VICFilter
Integer specifying the rendering filter. (0: None, 1: CRT emulation, 2: Scale2x)
VICBorderMode
Integer specifying border display mode (0: normal, 1: full, 2: debug, 3: none)
VICVSync Boolean specifying whether to enable vsync to prevent screen tearing. (0: vsync
off, 1: vsync on)
VICShowStatusbar
Boolean specifying whether to show the status bar or not (xvic only).
VICFullscreen
Boolean specifying whether to use fullscreen mode or not (xvic only).
The following resources are only present if hardware scaling support (OpenGL or Direct-X)
is present and used at compile time.
VICAspectRatio
String/float specifying the aspect ratio. (0.5-2.0)
VICAspectMode
Integer specifying the OpenGL aspect mode. (0: off, 1: custom, 2: true)
VICGLFilter
Integer specifying the OpenGL filtering mode. (0: nearest neighbour, 1: bilin-
ear, 2: bicubic)
VICFlipX Boolean to enable/disable OpenGL horizontal screen flip.
VICFlipY Boolean to enable/disable OpenGL vertical screen flip.
VICRotate
Boolean to enable/disable OpenGL 90 degree clockwise rotation.
-VICfilter <Mode>
Select rendering filter (VICFilter). (0: None, 1: CRT emulation, 2: Scale2x)
-VICpalette NAME
Specify the name of the palette file (VICPaletteFile).
-VICintpal
Use an internal calculated palette (VICExternalPalette=0).
-VICextpal
Use an external palette (file) (VICExternalPalette=1).
-VICborders <mode>
Set VIC border display mode (VICBorderMode). (0: normal, 1: full, 2: debug,
3: none)
-VICsaturation <0-2000>
Set saturation of internal calculated palette (VICColorSaturation).
-VICcontrast <0-2000>
Set contrast of internal calculated palette (VICColorContrast).
-VICbrightness <0-2000>
Set brightness of internal calculated palette (VICColorBrightness).
-VICgamma <0-4000>
Set gamma of internal calculated palette (VICColorGamma).
-VICtint <0-2000>
Set tint of internal calculated palette (VICColorTint).
-VICoddlinesphase <0-2000>
Set phase for color carrier in odd lines (VICPALOddLinePhase).
-VICoddlinesoffset <0-2000>
Set phase offset for color carrier in odd lines. (VICPALOddLineOffset).
-VICcrtblur <0-1000>
Amount of horizontal blur for the CRT emulation (VICPALBlur).
-VICcrtscanlineshade <0-1000>
Amount of scan line shading for the CRT emulation (VICPALScanLineShade).
-VICcrtscanlineshade <type>
Type of delay line used in the CRT (0: normal, 1: U only (1084 style))
(VICPALDelaylineType).
-VICaudioleak
+VICaudioleak
Enable/disable video to audio leak emulation (VICAudioLeak=1,
VICAudioLeak=0).
-VICshowstatusbar
+VICshowstatusbar
Show/hide status bar (VICShowStatusbar=1, VICShowStatusbar=0).
Chapter 6: Machine-specific features 184
-VICvsync
Enable vsync to prevent screen tearing (VICVSync=1).
+VICvsync
Disable vsync to allow screen tearing (VICVSync=0).
-VICfull
+VICfull Enable/Disable fullscreen (VICFullscreen=1, VICFullscreen=0) (xvic only).
The following command-line options are only present if hardware scaling support (OpenGL
or Direct-X) is present and used at compile time.
-VICaspectmode <mode>
Set the aspect mode (VICAspectMode). (0: off, 1: custom, 2: true)
-VICaspect <aspect ratio>
Set the aspect ratio (VICAspectRatio). (0.5-2.0)
-VICglfilter <mode>
Set OpenGL (or Direct-X) filtering mode (0 = nearest, 1 = linear, 2 = bicubic)
(VICglfilter).
-VICflipx
+VICflipx
Enable/disable OpenGL horizontal screen flip (VICFlipX=1, VICFlipX=0).
-VICflipy
+VICflipy
Enable/disable OpenGL vertical screen flip (VICFlipY=1, VICFlipY=0).
-VICrotate
+VICrotate
Enable/disable OpenGL 90 degree rotation (VICRotate=1, VICRotate=0).
BasicName
String specifying the name of the Basic ROM (default basic).
ChargenName
String specifying the name of the character generator ROM (default chargen).
• 3: 1MB Cartridge
CartridgeFile
String specifying the filename of the image for the current cartridge.
c1loName String specifying the filename of cartridge 1 Lo ROM.
c1hiName String specifying the filename of cartridge 1 High ROM.
TEDColorContrast
Integer specifying contrast of internal calculated palette. (0..2000)
TEDColorBrightness
Integer specifying brightness of internal calculated palette. (0..2000)
TEDColorGamma
Integer specifying gamma of internal calculated palette. (0..4000)
TEDColorTint
Integer specifying tint of internal calculated palette. (0..2000)
TEDPALScanLineShade
Integer specifying amount of scan line shading for the CRT emulation. (0..1000)
TEDPALBlur
Integer specifying amount of horizontal blur for the CRT emulation. (0..1000)
TEDPALOddLinePhase
Integer specifying phase for color carrier in odd lines. (0..2000)
TEDPALOddLineOffset
Integer specifying phase offset for color carrier in odd lines. (0..2000)
TEDPALDelaylineType
Integer specifying the type of delay line used in the CRT (0: normal, 1: U only
(1084 style))
TEDAudioLeak
Boolean specifying whether to enable/disable video to audio leak emulation.
TEDFilter
Integer specifying rendering filter. (0: None, 1: CRT emulation, 2: Scale2x)
TEDBorderMode
Integer specifying border display mode. (0: normal, 1: full, 2: debug, 3: none)
TEDVSync Boolean specifying whether to enable vsync to prevent screen tearing. (0: vsync
off, 1: vsync on)
TEDShowStatusbar
Boolean specifying whether to show the status bar or not (xplus4 only).
TEDFullscreen
Boolean specifying whether to use fullscreen mode or not (xplus4 only).
The following resources are only present if hardware scaling support (OpenGL or Direct-X)
is present and used at compile time.
TEDAspectRatio
String/float specifying the aspect ratio. (0.5-2.0)
TEDAspectMode
Integer specifying the OpenGL aspect mode. (0: off, 1: custom, 2: true)
TEDGLFilter
Integer specifying the OpenGL filtering mode. (0: nearest neighbour, 1: bilin-
ear, 2: bicubic)
Chapter 6: Machine-specific features 189
-TEDcrtblur <0-1000>
Amount of horizontal blur for the CRT emulation (TEDPALBlur).
-TEDcrtscanlineshade <0-1000>
Amount of scan line shading for the CRT emulation (TEDPALScanLineShade).
-TEDcrtscanlineshade <type>
Type of delay line used in the CRT (0: normal, 1: U only (1084 style))
(TEDPALDelaylineType).
-TEDaudioleak
+TEDaudioleak
Enable/disable video to audio leak emulation (TEDAudioLeak=1,
TEDAudioLeak=0).
-TEDshowstatusbar
+TEDshowstatusbar
Show/hide status bar (TEDShowStatusbar=1, TEDShowStatusbar=0).
-TEDvsync
Enable vsync to prevent screen tearing (TEDVSync=1).
+TEDvsync
Disable vsync to allow screen tearing (TEDVSync=0).
-TEDfull
+TEDfull Enable/Disable fullscreen (TEDFullscreen=1, TEDFullscreen=0) (xplus4
only).
The following command-line options are only present if hardware scaling support (OpenGL
or Direct-X) is present and used at compile time.
-TEDaspectmode <mode>
Set the aspect mode (TEDAspectMode). (0: off, 1: custom, 2: true)
-TEDaspect <aspect ratio>
Set the aspect ratio (TEDAspectRatio). (0.5-2.0)
-TEDglfilter <mode>
Set OpenGL (or Direct-X) filtering mode (0 = nearest, 1 = linear, 2 = bicubic)
(TEDglfilter).
-TEDflipx
+TEDflipx
Enable/disable OpenGL horizontal screen flip (TEDFlipX=1, TEDFlipX=0).
-TEDflipy
+TEDflipy
Enable/disable OpenGL vertical screen flip (TEDFlipY=1, TEDFlipY=0).
-TEDrotate
+TEDrotate
Enable/disable OpenGL 90 degree rotation (TEDRotate=1, TEDRotate=0).
FunctionHighName
String specifying the filename of the High Function ROM.
c2loName String specifying the filename of cartridge 2 Lo ROM.
c2hiName String specifying the filename of cartridge 2 High ROM.
-ramsize <ramsize>
Specify size of RAM installed in KiB (RamSize). (16, 32, 64)
-memoryexphack <device>
Set active memory expansion hack (MemoryHack). (0: None, 1: C256K, 2:
H256K, 3: H1024K, 4: H4096K)
-acia
+acia Enable/Disable the ACIA emulation
ChargenName
String specifying the name of the character generator ROM (default chargen).
KernalName
String specifying the name of the Kernal ROM (default kernal4).
BasicName
String specifying the name of the Basic ROM (default basic4).
EditorName
String specifying the filename of the editor ROM file. This file contains an
overlay for the editor ROM at $E000-$E7FF if necessary.
RomModule9Name
String specifying the filename for the $9*** Expansion ROM file. This file
contains an expansion ROM image of 4KiB.
RomModuleAName
String specifying the filename for the $A*** Expansion ROM file. This file
contains an expansion ROM image of 4KiB.
RomModuleBName
String specifying the filename for the $B*** Expansion ROM file. This file
contains an expansion ROM image of 4KiB. This file overlays the lowest 4KiB
of a BASIC 4 ROM.
Choosing a common PET model is done from the setting dialog, by choosing an item from
the “Model” selection. Available models are:
• PET 2001-8N
• PET 3008
• PET 3016
• PET 3032
• PET 3032B
• PET 4016
• PET 4032
• PET 4032B
• PET 8032
• PET 8096
• PET 8296
• SuperPET
Notice that this will reset the emulated machine.
It is also possible to select the PET model at startup, with the -model command-line option:
for example, ‘xpet -model 3032’ will emulate a PET 3032 while ‘xpet -model 8296’ will
emulate a PET 8296.
CrtcFullscreen
Boolean specifying whether to use fullscreen mode or not (xcbm2 and xpet
only).
The following resources are only present if hardware scaling support (OpenGL or Direct-X)
is present and used at compile time.
CrtcAspectRatio
String/float specifying the aspect ratio. (0.5-2.0)
CrtcAspectMode
Integer specifying the OpenGL aspect mode. (0: off, 1: custom, 2: true)
CrtcGLFilter
Integer specifying the OpenGL filtering mode. (0: nearest neighbour, 1: bilin-
ear, 2: bicubic)
CrtcFlipX
Boolean to enable/disable OpenGL horizontal screen flip.
CrtcFlipY
Boolean to enable/disable OpenGL vertical screen flip.
CrtcRotate
Boolean to enable/disable OpenGL 90 degree clockwise rotation.
-Crtcpalette <name>
Specify the name of the palette file (CrtcPaletteFile).
-Crtcsaturation <0-2000>
Set saturation of internal calculated palette (CrtcColorSaturation).
-Crtccontrast <0-2000>
Set contrast of internal calculated palette (CrtcColorContrast).
-Crtcbrightness <0-2000>
Set brightness of internal calculated palette (CrtcColorBrightness).
-Crtcgamma <0-4000>
Set gamma of internal calculated palette (CrtcColorGamma).
-Crtctint <0-2000>
Set tint of internal calculated palette (CrtcColorTint).
-Crtccrtblur <0-1000>
Amount of horizontal blur for the CRT emulation (CrtcPALBlur).
-Crtccrtscanlineshade <0-1000>
Amount of scan line shading for the CRT emulation (CrtcPALScanLineShade).
-Crtcaudioleak
+Crtcaudioleak
Enable/disable video to audio leak emulation (CrtcAudioLeak=1,
CrtcAudioLeak=0).
-Crtcshowstatusbar
+Crtcshowstatusbar
Show/hide status bar (CrtcShowStatusbar=1, CrtcShowStatusbar=0).
-Crtcvsync
Enable vsync to prevent screen tearing (CrtcVSync=1).
+Crtcvsync
Disable vsync to allow screen tearing (CrtcVSync=0).
-CRTCfull
+CRTCfull
Enable/Disable fullscreen (CrtcFullscreen=1, CrtcFullscreen=0) (xcbm2
and xpet only).
The following command-line options are only present if hardware scaling support (OpenGL
or Direct-X) is present and used at compile time.
-Crtcaspectmode <mode>
Set the aspect mode (CrtcAspectMode). (0: off, 1: custom, 2: true)
-Crtcaspect <aspect ratio>
Set the aspect ratio (CrtcAspectRatio). (0.5-2.0)
-Crtcglfilter <mode>
Set OpenGL (or Direct-X) filtering mode (0 = nearest, 1 = linear, 2 = bicubic)
(Crtcglfilter).
Chapter 6: Machine-specific features 198
-Crtcflipx
+Crtcflipx
Enable/disable OpenGL horizontal screen flip (CrtcFlipX=1, CrtcFlipX=0).
-Crtcflipy
+Crtcflipy
Enable/disable OpenGL vertical screen flip (CrtcFlipY=1, CrtcFlipY=0).
-Crtcrotate
+Crtcrotate
Enable/disable OpenGL 90 degree rotation (CrtcRotate=1, CrtcRotate=0).
-petdww
+petdww Enable/disable the PET DWW hi-res board (30xx models only) (PETDWW=1,
PETDWW=0).
-petdwwimage <name>
Specify name of PET DWW RAM image (PETDWWfilename).
-pethre
+pethre Enable/disable the PET HRE extension (model 8296 only) (PETHRE=1,
PETHRE=0).
-colour-rgbi
Enable the RGBI colour extension to PET 4032 (PETColour=1).
-colour-analog
Enable the analog colour extension to PET 4032 (PETColour=2).
-colour-analog-bg <Colour 0-255>
Select the analog colour background on PET 4032 (PETColourBG).
-sidcart
+sidcart Enable/disable the SID Cartridge (SidCart=1, SidCart=0).
-sidcartaddress <address>
Specify address of the SID Cartridge (SidAddress). (0x8F00, 0xE900)
-sidcartclock <clock>
Specify clock of the SID Cartridge (SidClock). (0: C64, 1: PET)
-rom9 <name>
Specify the filename for the ROM image file for the $9*** cartridge area
(RomModule9Name).
-romA <name>
Specify the filename for the ROM image file for the $A*** cartridge area
(RomModuleAName).
-romB <name>
Specify the filename for the ROM image file for the $B*** cartridge area
(RomModuleBName).
-6809romA <Name>
Specify 4KiB to 24KiB ROM file name at $A000 for 6809 (H6809RomAName).
-6809romB <Name>
Specify 4KiB to 20KiB ROM file name at $B000 for 6809 (H6809RomBName).
-6809romC <Name>
Specify 4KiB to 16KiB ROM file name at $C000 for 6809 (H6809RomCName).
-6809romD <Name>
Specify 4KiB to 12KiB ROM file name at $D000 for 6809 (H6809RomDName).
-6809romE <Name>
Specify 2KiB or 8KiB ROM file name at $E000 for 6809 (H6809RomEName).
-6809romF <Name>
Specify 4KiB ROM file name at $F000 for 6809 (H6809RomFName).
-diagpin
+diagpin Enable/disable the diagnostic pin at the PET userport (DiagPin=1,
DiagPin=0).
-cb2lowpass
Integer specifying the frequency of the low-pass filter that is applied to the CB2
sound signal. (CB2Lowpass)
for the CRTC and character ROM. It adds the ability to display 512x256 graphics on the
built-in monitor.
The board is accompanied with two extension ROMs:
• 324992-02 HiRes Emulator (at $9000)
• 324993-02 HiRes BASIC (at $A000)
The last value causes the board to switch into graphics mode; former values set up proper
screen dimensions for 512x256 display.
The former is done by changing the following resources (via resource file, command line
options or right-menu items):
RamSize Size of memory in KiB. xcbm2: (128, 256, 512, 1024) xcbm5x0: (64, 128, 256,
512, 1024)
Ram08 Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $0800-$0FFF or not.
Ram1 Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $1000-$1FFF or not.
Ram2 Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $2000-$3FFF or not.
Ram4 Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $4000-$5FFF or not.
Ram6 Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $6000-$7FFF or not.
RamC Boolean specifying whether the RAM should be mapped to the expansion ROM
area at $C000-$CFFF or not.
CartridgeReset
Boolean specifying whether the machine should be reset when a cartridge is
changed.
Cart1Name
String specifying the filename for the $1000-$1FFF expansion ROM file. This
file contains a 4KiB ROM dump.
Cart2Name
String specifying the filename for the $2000-$3FFF expansion ROM file. This
file contains an 8KiB ROM dump.
Cart4Name
String specifying the filename for the $4000-$5FFF expansion ROM file. This
file contains an 8KiB ROM dump.
Cart6Name
String specifying the filename for the $6000-$7FFF expansion ROM file. This
file contains an 8KiB ROM dump.
ModelLine
The CBM-II business models have two hardcoded lines at one of the I/O ports.
From those lines the kernal determines how it should init the CRTC video chip
for either 50Hz (Europe) or 60Hz (North America), and either for 8 (C6x0) or
14 (C7x0) scanlines per character. xcbm2: (0: CBM 7x0 (50Hz), 1: 60Hz C6x0,
2: 50Hz C6x0) xcbm5x0: (1: 60Hz C5x0, 2: 50Hz C5x0)
ChargenName
String specifying the name of the character generator ROM (default for xcbm2:
chargen.600, default for xcbm5x0: chargen.500).
Chapter 6: Machine-specific features 206
KernalName
String specifying the name of the Kernal ROM (default for xcbm2: kernal,
default for xcbm5x0: kernal.500).
BasicName
String specifying the name of the Basic ROM (default for xcbm2: basic.128,
default for xcbm5x0: basic.500).
MachineVideoStandard
Integer that specifies the video standard of the emulated machine (1: PAL, 2:
NTSC).
MachinePowerFrequency
Integer that specifies the frequency of the power grid in Hz (50, 60). This is
used to determine the tick frequency for the TOD clocks.
Choosing a common CBM-II model is done from the right-button menu instead, by choosing
an item from the “Model defaults” submenu. Available models are:
• C510 PAL or NTSC (128KiB RAM)
• C610 PAL or NTSC (128KiB RAM)
• C620 (256KiB RAM)
• C620+ (1024KiB RAM, expanded) PAL or NTSC
• C710 (128KiB RAM) NTSC
• C720 (256KiB RAM) NTSC
• C720+ (1024KiB RAM, expanded) NTSC
Notice that this will reset the emulated machine.
Warning: At this time the 5x0 and other machines are implemented in different executables,
so switching between those models is not possible.
It is also possible to select the CBM model at startup, with the -model command-line
option: for example, ‘xcbm2 -model 610’ will emulate a CBM 610 while ‘xcbm2 -model
620’ will emulate a CBM 620.
-cartreset
+cartreset
Reset/do not reset machine if a cartridge is attached or detached
(CartridgeReset=1, CartridgeReset=0).
-cart1 <name>
Specify the filename for the ROM image file for the cartridge area $1000-$1FFF
(Cart1Name).
-cart2 <name>
Specify the filename for the ROM image file for the cartridge area $2000-$2FFF
(Cart2Name).
-cart4 <name>
Specify the filename for the ROM image file for the cartridge area $4000-$5FFF
(Cart4Name).
-cart6 <name>
Specify the filename for the ROM image file for the cartridge area $6000-$7FFF
(Cart6Name).
-ramC
+ramC Enable/disable RAM mapping in bank 15 at address $C000-$CFFF (RamC=1,
RamC=0).
-model <modelnumber>
Specify CBM-II model to emulate (ModelLine, MachineVideoStandard,
MachinePowerFrequency, RamSize, KernalName, BasicName, ChargenName).
xcbm2: (610, 620, 620+, 710, 720, 720+) xcbm5x0: (510)
7 Platform-specific features
This section lists the settings and commands that are platform specificm, ie which control
the behaviour and appearance of the host user interface.
-jamaction <Type>
Specify the action to take when the CPU encounters a ’JAM’ opcode
(JAMAction) (0: Show dialog, 1: Continue emulation, 2: Start monitor, 3:
Reset, 4: Power cycle, 5: Quit emulator).
-directory <Path>
Specify the system file search path (Directory).
KbdStatusbar
Boolean specifying whether the keyboard-status bar is enabled.
StartMinimized
Boolean specifying whether the emulator should start minimized
JAMAction
Integer specifying the action to take when the CPU encounters a ’JAM’ opcode.
(0: Show dialog, 1: Continue emulation, 2: Start monitor, 3: Reset, 4: Power
cycle, 5: Quit emulator)
Directory
String specifying the search path for system files. It is defined as a sequence
of directory names, separated by colons (‘:’), just like the PATH variable in the
shell. The special string ‘$$’ stands for the default search path.
MenuKeyCancel
Integer specifying the keycode for ’cancel’ in the SDL menu.
MenuKeyExit
Integer specifying the keycode for ’exit’ in the SDL menu.
MenuKeyMap
Integer specifying the keycode for ’map’ in the SDL menu.
SDLBitdepth
Integer specifying the bitdepth used. (0: current, 8, 15, 16, 24, 32)
SDLLimitMode
Integer specifying the resolution limit mode. (0: off, 1: max, 2: fixed)
SDL2Backend
String specifying the preferred SDL2 backend. (See startup log for available
backends, valid ones might be eg: software, opengl, direct3d, direct3d11, open-
gles2)
CrtcFullscreenMode
Integer specifying the fullscreen mode (xcbm2 and xpet only). (0:
use desktop resolution, 1: switch to CrtcFullscreenCustomWidth,
CrtcFullscreenCustomHeight)
CrtcFullscreenCustomWidth
Integer specifying the custom fullscreen resolution width.
CrtcFullscreenCustomHeight
Integer specifying the custom fullscreen resolution height.
TEDFullscreenMode
Integer specifying the fullscreen mode (xplus4 only). (0: use desktop resolution,
1: switch to TEDFullscreenCustomWidth, TEDFullscreenCustomHeight)
TEDFullscreenCustomWidth
Integer specifying the custom fullscreen resolution width.
TEDFullscreenCustomHeight
Integer specifying the custom fullscreen resolution height.
VDCFullscreenMode
Integer specifying the fullscreen mode (x128 only). (0: use desktop resolution,
1: switch to VDCFullscreenCustomWidth, VDCFullscreenCustomHeight)
VDCFullscreenCustomWidth
Integer specifying the custom fullscreen resolution width.
VDCFullscreenCustomHeight
Integer specifying the custom fullscreen resolution height.
VICFullscreenMode
Integer specifying the fullscreen mode (xvic only). (0: use desktop resolution,
1: switch to VICFullscreenCustomWidth, VICFullscreenCustomWidth)
VICFullscreenCustomWidth
Integer specifying the custom fullscreen resolution width.
Chapter 7: Platform-specific features 214
VICFullscreenCustomHeight
Integer specifying the custom fullscreen resolution height.
VICIIFullscreenMode
Integer specifying the fullscreen mode (all emulators except xcbm2,
xpet, xplus4, xvic and vsid). (0: use desktop resolution, 1: switch to
VICIIFullscreenCustomWidth, VICIIFullscreenCustomHeight)
VICIIFullscreenCustomWidth
Integer specifying the custom fullscreen resolution width.
VICIIFullscreenCustomHeight
Integer specifying the custom fullscreen resolution height.
JoyDevice1
Integer specifying which joystick device the emulator should use for the emu-
lation of joystick 1 (all emulators except xcbm2, xpet and vsid). (0: None, 1:
Numpad, 2: Keyset 1, 3: Keyset 2, 4: Joystick (only if joystick support was
present in the compile time SDL library))
JoyDevice2
Integer specifying which joystick device the emulator should use for the emula-
tion of joystick 2 (all emulators except xcbm2, xpet, xvic and vsid). (0: None,
1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Joystick (only if joystick support was
present in the compile time SDL library))
JoyDevice3
Integer specifying which joystick device the emulator should use for the emu-
lation of extra joystick 1 (all emulators except xcbm5x0 and vsid). (0: None,
1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Joystick (only if joystick support was
present in the compile time SDL library))
JoyDevice4
Integer specifying which joystick device the emulator should use for the em-
ulation of extra joystick 2 (all emulators except xcbm5x0, xplus4 and vsid).
(0: None, 1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Joystick (only if joystick
support was present in the compile time SDL library))
The following resources are only present if the SDL library has joystick support at compile
time and applies to all emulators except vsid.
JoyMapFile
String specifying the name of the joystick map file.
JoyThreshold
Integer specifying the joystick threshold. (0..32767)
JoyFuzz Integer specifying the joystick fuzz. (0..32767)
JoyMenuControl
Boolean to enable/disable controlling the SDL menu using a joystick.
Chapter 7: Platform-specific features 215
-CRTCfullmode <Mode>
Set the fullscreen mode (CrtcFullscreenMode) (xcbm2 and xpet only).
(0: use desktop resolution, 1: switch to CrtcFullscreenCustomWidth,
CrtcFullscreenCustomHeight)
-Crtcfullwidth <width>
Set the custom fullscreen resolution width (CrtcFullscreenCustomWidth).
-Crtcfullheight <height>
Set the custom fullscreen resolution height (CrtcFullscreenCustomHeight).
-TEDfullmode <Mode>
Set the fullscreen mode (TEDFullscreenMode) (xplus4 only). (0:
use desktop resolution, 1: switch to TEDFullscreenCustomWidth,
TEDFullscreenCustomHeight)
-TEDfullwidth <width>
Set the custom fullscreen resolution width (TEDFullscreenCustomWidth).
-TEDfullheight <height>
Set the custom fullscreen resolution height (TEDFullscreenCustomHeight).
-VDCfullmode <Mode>
Set the fullscreen mode (VDCFullscreenMode) (x128 only). (0:
use desktop resolution, 1: switch to VDCFullscreenCustomWidth,
VDCFullscreenCustomHeight)
-VDCfullwidth <width>
Set the custom fullscreen resolution width (VDCFullscreenCustomWidth).
-VDCfullheight <height>
Set the custom fullscreen resolution height (VDCFullscreenCustomHeight).
-VICfullmode <Mode>
Set the fullscreen mode (VICFullscreenMode) (xvic only). (0:
use desktop resolution, 1: switch to VICFullscreenCustomWidth,
VICFullscreenCustomHeight)
-VICfullwidth <width>
Set the custom fullscreen resolution width (VICFullscreenCustomWidth).
-VICfullheight <height>
Set the custom fullscreen resolution height (VICFullscreenCustomHeight).
-VICIIfullmode <Mode>
Set the fullscreen mode (VICIIFullscreenMode) (all emulators except xcbm2,
xpet, xplus4, xvic and vsid). (0: use desktop resolution, 1: switch to
VICIIFullscreenCustomWidth, VICIIFullscreenCustomHeight)
-VICIIfullwidth <width>
Set the custom fullscreen resolution width (VICIIFullscreenCustomWidth).
-VICIIfullheight <height>
Set the custom fullscreen resolution height (VICIIFullscreenCustomHeight).
Chapter 7: Platform-specific features 217
When closing the settings dialog the pause state will revert to its state before
triggering the settings UI.
JoyDevice1
Integer specifying which joystick device the emulator should use for the emu-
lation of joystick 1 (all emulators except xcbm2, xpet and vsid). (0: None, 1:
Numpad, 2: Keyset 1, 3: Keyset 2, 4: Analog joystick 1, 5: Analog joystick
2, 6: Analog joystick 3, 7: Analog joystick 4, 8: Analog joystick 5, 9: Analog
joystick 6, 10: Digital joystick 1, 11: Digital joystick 2, 12: USB joystick 1, 13:
USB joystick 2)
JoyDevice2
Integer specifying which joystick device the emulator should use for the emula-
tion of joystick 2 (all emulators except xcbm2, xpet, xvic and vsid). (0: None,
1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Analog joystick 1, 5: Analog joystick
2, 6: Analog joystick 3, 7: Analog joystick 4, 8: Analog joystick 5, 9: Analog
joystick 6, 10: Digital joystick 1, 11: Digital joystick 2, 12: USB joystick 1, 13:
USB joystick 2)
JoyDevice3
Integer specifying which joystick device the emulator should use for the emu-
lation of extra joystick 1 (all emulators except xcbm5x0 and vsid). (0: None,
1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Analog joystick 1, 5: Analog joystick
2, 6: Analog joystick 3, 7: Analog joystick 4, 8: Analog joystick 5, 9: Analog
joystick 6, 10: Digital joystick 1, 11: Digital joystick 2, 12: USB joystick 1, 13:
USB joystick 2)
JoyDevice4
Integer specifying which joystick device the emulator should use for the emu-
lation of extra joystick 2 (all emulators except xcbm5x0, xplus4 and vsid). (0:
None, 1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Analog joystick 1, 5: Analog
joystick 2, 6: Analog joystick 3, 7: Analog joystick 4, 8: Analog joystick 5,
9: Analog joystick 6, 10: Digital joystick 1, 11: Digital joystick 2, 12: USB
joystick 1, 13: USB joystick 2)
The available joysticks might differ depending on operating system and joystick support in
the OS.
Devices 4..9
Only available if joystick support is available at compile time.
Devices 10 and 11
Only available if digital joystick support is available at compile time.
Devices 12 and 13
Only available if USB joystick support is available at compile time.
The following resources are only available if MIDI support is available at compile time.
MIDIName String specifying the name of the MIDI client (default:"VICE") (ALSA and
macOS only, x64, x64sc, xscpu64, x128 and xvic only).
Chapter 7: Platform-specific features 219
MIDIInDev
String specifying the OSS MIDI input device (Windows and OSS, x64, x64sc,
xscpu64, x128 and xvic only).
MIDIOutDev
String specifying the OSS MIDI output device (Windows and OSS, x64, x64sc,
xscpu64, x128 and xvic only).
MIDIInName
String specifying the name of the MIDI input port (default:"VICEInput")
(macOS only, x64, x64sc, xscpu64, x128 and xvic only).
MIDIOutName
String specifying the name of the MIDI output port (default:"VICEOutput")
(macOS only, x64, x64sc, xscpu64, x128 and xvic only).
The following resource is only available if MIDI support and ALSA support is available at
compile time.
MIDIDriver
Enum specifying the MIDI driver (Unix - x64, x64sc, xscpu64, x128 and xvic
only). (0: OSS, 1: ALSA)
8 Snapshots
Every VICE emulator has a built-in snapshot feature, that saves the complete emulator
state into one file for later use. You can therefore save the emulator state - including the
state of the game you are playing for example - in a single file.
Important note: In the past the idea was that snapshots with the same major version can
be exchanged with later versions of the emulator. However, this proved to be too difficult
to maintain, and insanely hard to test for correctness, which is why now the emulator will
reject the snapshot when it finds a module that is too old. Because of this you should not
use snapshots for permanent/long term storage.
8.2.2.1 Terminology
In this section we use certain abbreviations to define the types of the data saved in the
snapshot.
The tables for the single modules state the type, name and description of the data saved in
the modules. The data is saved in the order it is in the tables, so no offset is given.
Chapter 8: Snapshots 225
The POSITIONAL item has been added in PETMEM snapshot version 1.1. It is ignored
by earlier restore routines (V1.0) and the V1.1 restore routines do not change the current
setting when reading a V1.0 snapshot.
In V1.2 the new EOIBLANK variable has been added. This implements the "blank screen
on EOI" feature that was previously linked to a wrong resource.
In V1.3 the state for SuperPET has been added.
The PETROM module
Version numbers: Major 1, Minor 1
Chapter 8: Snapshots 235
9 Media images
FFMPEGFormat
String specifying the current FFMPEG output driver.
FFMPEGAudioBitrate
Integer specifying the current FFMPEG audio bitrate.
FFMPEGVideoBitrate
Integer specifying the current FFMPEG video bitrate.
FFMPEGAudioCodec
Integer specifying the current FFMPEG audio codec.
FFMPEGVideoCodec
Integer specifying the current FFMPEG video codec.
FFMPEGVideoHalveFramerate
Boolean, if true record only every other frame.
ZMBVFormat
String specifying the current ZMBV output driver.
ZMBVAudioCodec
Integer specifying the current ZMBV audio codec.
ZMBVVideoCodec
Integer specifying the current ZMBV video codec.
-koalaundersize <method>
Select the way the undersized input should be handled (KoalaUndersizeHandling)
(all emulators except vsid). (0: scale, 1: borderize)
-koalatedlum <method>
Select the way the TED luminosity should be handled (KoalaTEDLumHandling)
(all emulators except vsid). (0: ignore, 1: dither)
-minipaintoversize <method>
Select the way the oversized input should be handled (MinipaintOversizeHandling)
(all emulators except vsid). (0: scale down, 1: crop left top, 2: crop center
top, 3: crop right top, 4: crop left center, 5: crop center, 6: crop right center,
7: crop left bottom, 8: crop center bottom, 9: crop right bottom)
-minipaintundersize <method>
Select the way the undersized input should be handled (MinipaintUndersizeHandling)
(all emulators except vsid). (0: scale, 1: borderize)
-minipainttedlum <method>
Select the way the TED luminosity should be handled (MinipaintTEDLumHandling)
(all emulators except vsid). (0: ignore, 1: dither)
-ffmpegaudiobitrate <value>
Set bitrate for audio stream in media file
-ffmpegvideobitrate <value>
Set bitrate for video stream in media file
241
10 Event history
VICE supports recording an arbitrary session on the emulated machine and playing back
this session later. This is done by saving a snapshot at the beginning of the recording
session and then remembering all the user interaction such as keyboard and joystick input.
We call this an ’event history’. The main purpose for having an event history is to create
game sessions, e.g. recording how to solve a game. An example walkthrough for the well
known game "Fort Apocalypse" is available.
EventStartSnapshot
String specifying the filename for the start snapshot (all emulators except vsid).
EventEndSnapshot
String specifying the filename for the end snapshot (all emulators except vsid).
EventStartMode
Integer specifying how to start event recording (all emulators except vsid). (0:
save new snapshot, 1: load existing snapshot, 2: reset, 3: playback)
EventImageInclude
Boolean specifying whether to include ROM and Disk images in the snapshots
(all emulators except vsid).
Chapter 10: Event history 243
11 Monitor
The VICE emulator has a complete built-in monitor, which can be used to examine, dis-
assemble and assemble machine language programs, as well as debug them through break-
points. It can be activated by using “Activate monitor” from the menu. The monitor will
either run in a seperate window, or in a terminal emulation program (such as rxvt or xterm)
when “native monitor” has been enabled in the settings.
11.1 Terminology
‘address_space’
This refers to the range of memory locations and a set of registers. This can be
the addresses available to the computer’s processor, the disk drive’s processor
or a specific memory configuration of one of the mentioned processors.
‘bankname’
The CPU can only see 64KiB of memory at any one time, due to its 16 bit
address bus. The C64 and other computers have more than this amount, and
this is handled by banking: a memory address can have different contents,
depending on the active memory bank. A bankname names a specific bank in
the current address space.
‘register’
One of the following: program counter (PC), stack pointer (SP), accumulator
(A), X register (X), or Y register (Y).
‘address’ A specific memory location in the range $0000 to $FFFF.
‘address_range’
Two addresses. If the second address is less than the first, the range is assumed
to wraparound from $FFFF to $0000. Both addresses must be in the same
address space.
‘address_opt_range’
An address or an address range.
‘radix_type’
Radix for the output, H for hex, D for decimal, O for octal, or B for binary.
‘label’ label is the name of a label. It must start with a dot (".") in order for the
monitor to recognize it as a label. Register names preceeded by a dot (for
example .PC) are special labels that evaluate to value of the respective register
at the time it is used, and thus can not be used as a regular label.
‘prompt’ The prompt has the format [x:y]. If x is -, memory reads from the monitor
do not have side effects. Otherwise, x is S. The second part of the prompt, y,
shows the default address space.
‘checkpoint’
The monitor has the ability to setup triggers that perform an action when a
specified situation occurs. There are three types of checkpoints; breakpoints,
tracepoints and watchpoints.
Chapter 11: Monitor 245
‘breakpoint’
A breakpoint is triggered based on the program counter. When it is triggered,
the monitor is entered.
‘tracepoint’
Like breakpoints, a tracepoint is triggered based on the program counter. In-
stead of entering the monitor, the program counter is printed and execution
continues.
‘watchpoint’
Watchpoints are triggered by a read and/or write to an address. When a
watchpoint is triggered, the monitor is entered.
‘memmap’ The memmap keeps track of RAM/ROM/IO read/write/execute accesses. The
feature must be enabled with "–enable-cpuhistory" configure option, as it might
decrease performance notably on slower hardware. The option also enables CPU
history.
‘<...>’ A data type.
‘*’ Zero or more occurrences.
‘[...]’ An optional argument.
log [on|off|toggle]
Control whether the monitor output is logged into a logfile. If the argument
is ’on’ then all output will be written into the logfile. If the argument is ’off’
then no log is produced. If the argument is ’toggle’ then the current mode is
switched. No argument displays the current state.
logname "<filename>"
Sets the filename of the logfile.
exit
x Leave the monitor and return to execution.
quit
q Exit the emulator immediately.
radix [H|D|O|B]
rad [H|D|O|B]
Set the default radix to hex, decimal, octal, or binary. With no argument, the
current radix is printed.
next [<count>]
n [<count>]
Advance to the next instruction(s). COUNT allows stepping more than a single
instruction at a time. Subroutines are treated as a single instruction ("step
over").
registers [<reg_name> = <number> [, <reg_name> = <number>]*]
r [<reg_name> = <number> [, <reg_name> = <number>]*]
Assign respective registers (use FL for status flags). With no parameters, dis-
play register values.
reset [<type>]
Reset the machine or drive. type: 0 = reset, 1 = power cycle, 8-11 = drive.
return
ret Continues execution and returns to the monitor just after the next RTS or RTI
is executed ("step out").
step [<count>]
z [<count>]
Single step through instructions. An optional count allows stepping more than
a single instruction at a time ("step into").
stopwatch [reset]
Print the CPU cycle counter of the current device. ’reset’ sets the counter to 0.
undump "<filename>"
Read a snapshot of the machine from the file specified.
warp [on|off|toggle]
Turn warp mode on or off. If the argument is ’toggle’ then the current mode is
toggled. When no argument is given the current mode is displayed.
cartfreeze
Use cartridge freeze.
cpu <type>
Specify the type of CPU currently used (6502/z80).
export
exp Print out list of attached expansion port devices.
keybuf "<string>"
Put the specified string into the keyboard buffer. Note that you can specify
specific keycodes by using C-style escaped hexcodes ("\x0a").
registers are specified in the expression, the values used are those at the time
the checkpoint is examined, not when the condition is set.
The condition can use registers (A, X, Y, PC, SP, FL and other cpu specific
registers (see manual)) and compare them (==, !=, <, >, <=, >=) against other
registers or constants. RL can be used to refer to the current rasterline, and
CY refers to the current cycle in the line.
Full expressions are also supported (+, -, *, /, &, |, &&, ||). This lets you for
example check specific bits in the FL register using the bitwise boolean operators
(& and |). Parentheses are also supported in the expression. Registers can be
the registers of other devices; this is denoted by a memspace prefix (i.e., c:, 8:,
9:, 10:, 11:) Examples: A == $0, X == Y, 8:X == X
You can also compare against the value of a memory location in a specific
bank, i.e you can break only if the vic register $d020 is $f0. use the form
@[bankname]:[$<address>] | [.label]. Note this is for the C: memspace only.
Examples : if @io:$d020 == $f0, if @io:.vicBorder == $f0
As an extension as the previous case, you can also dereference an expression,
using the form @[bankname]:(expression) . The parentheses around the ex-
pression distinguish it from the previous form. Example: break load 0 $ffff if
@cpu:(pc - $1) == $37
delete <checknum>
del <checknum>
Delete the specified checkpoint.
until [<address>]
un [<address>]
If no address is given, the currently valid breakpoints are printed. If an address
is given, a temporary breakpoint is set for that address and the breakpoint
number is printed. Control is returned to the emulator by this command. The
breakpoint is deleted once it is hit.
Chapter 11: Monitor 251
@<disk command>
Perform a disk command on the currently attached disk image on virtual drive
8. Since the emulated drive is halted when the monitor is open, DOS commands
can not be sent to the actual drive emulation and must be handled by the virtual
drive implementation. As a consequence, all limitations of the virtual drives
apply. Use the regular monitor commands to eg execute code in the drive.
list [<directory>]
List disk contents.
load "<filename>" <device> [<address>]
l "<filename>" <device> [<address>]
Load the specified file into memory. If no address is given, the file is loaded
to the address specified by the first two bytes read from the file. If address is
given, the file is loaded to the specified address and the first two bytes read
from the file are skipped. If device is 0, the file is read from the file system.
loadbasic "<filename>" <device> [<address>]
ldb "<filename>" <device> [<address>]
Load the specified file into memory and set BASIC pointers as if the file was
loaded by the Kernal. If no address is given, the file is loaded to the address
specified by the first two bytes read from the file. If address is given, the file
is loaded to the specified address and the first two bytes read from the file are
skipped. If device is 0, the file is read from the file system.
bload "<filename>" <device> <address>
bl "<filename>" <device> <address>
Load the specified file into memory at the specified address. If device is 0, the
file is read from the file system.
save "<filename>" <device> <address1> <address2>
s "<filename>" <device> <address1> <address2>
Save the memory from address1 to address2 to the specified file. Write two-byte
load address. If device is 0, the file is written to the file system.
bsave "<filename>" <device> <address1> <address2>
bs "<filename>" <device> <address1> <address2>
Save the memory from address1 to address2 to the specified file. If device is 0,
the file is written to the file system.
verify "<filename>" <device> [<address>]
v "<filename>" <device> [<address>]
Compare the specified file with memory. If no address is given, the address
is specified by the first two bytes read from the file. If address is given, the
specified address is used and the first two bytes read from the file are skipped.
If device is 0, the file is read from the file system.
bverify "<filename>" <device> <address>
bv "<filename>" <device> <address>
Compare the specified file with memory at the specified address. If device is 0,
the file is read from the file system.
Chapter 11: Monitor 253
tapectrl <command>
Control the datasette. command: 0 = stop, 1 = start, 2 = forward, 3 = rewind,
4 = record, 5 = reset, 6 = reset counter.
screenshot "<filename>" [<format>]
scrsh "<filename>" [<format>]
Take a screenshot. format: default = BMP, 1 = PCX, 2 = PNG, 3 = GIF, 4
= IFF.
to label names assigned in this way to fit to the Vice label syntax. Normally
the semicolon seperates commands but after an assignment of this kind it may
be used to start a comment to end of line, so unchanged Acme label files can
be fed into Vice.
save_labels [<address_space>] "<filename>"
sl [<address_space>] "<filename>"
Save labels to a file. If no address space is specified, all of the labels are saved.
show_labels [<address_space>]
shl [<address_space>]
Display current label mappings. If no address space is specified, show all labels
from default address space.
clear_labels [<address_space>]
cl [<address_space>]
Clear current label mappings. If no address space is specified, clear all labels
from default address space.
12 Binary monitor
The binary remote monitor commands are sent over a dedicated connection, specified with
the command line options -binarymonitor & -binarymonitoraddress. See Section 5.17
[Monitor settings], page 107. The remote monitor detects a binary command because it
starts with ASCII STX (0x02). Note that there is no termination character. The command
length acts as synchronisation point.
All multibyte values are in little endian order unless otherwise specified.
byte 2-5: response body length. Does not include any header fields
byte 6: response type
This is usually the same as the command ID
byte 7: error code
0x00 OK, everything worked
0x01 The object you are trying to get or set doesn’t exist.
0x02 The memspace is invalid
0x80 Command length is not correct for this command
0x81 An invalid parameter value was present
0x82 The API version is not understood by the server
0x83 The command type is not understood by the server
0x8f The command had parameter values that passed basic checks, but
a general failure occurred
See Section 12.4 [Binary Commands], page 260, for other error
codes
byte 8-11: request ID
This is the request ID given to initiate this response. If the value is 0xffffffff,
Then the response was initiated by an event, such as hitting a checkpoint.
byte 12+: response body.
See Section 12.4 [Binary Commands], page 260.
02 | 02 | 08 00 00 00 | ad de 34 12 | 12 | e2 fc | e3 fc | 01 | 01 | 04 | 01
02 | 02 | 26 00 00 00 | 31 | 00 | ff ff ff ff | 09 00 [ 03 { 03 | cf e5 } 03 { 00
| 00 00 } ... ]
02 | 02 | 02 00 00 00 | 62 | 00 | ff ff ff ff | cf e5
Chapter 12: Binary monitor 259
... | 11 | ... | 02 00 00 00 | 00 | e2 fc | e3 fc | 01 | 01 | 04 | 01 | 00 00 00
00 | 00 00 00 00 | 00
(Some response header fields are omitted (...) for brevity.)
0x11 See Section 12.5.2 [MON RESPONSE CHECKPOINT INFO], page 271.
0x00000002
Checkpoint number is 2
0x00 Checkpoint was not hit (as it was just created)
0xfce2 Checkpoint start address
0xfce3 Checkpoint end address
0x01 The checkpoint will cause the emulator to stop.
0x01 The checkpoint is enabled.
0x04 The checkpoint will trigger on exec from 0xfce2 - 0xfce3.
0x01 The checkpoint is temporary.
0x00000000
The checkpoint has been hit zero times.
0x00000000
The checkpoint has been ignored zero times.
6. Client sends a command to continue:
... | aa
(Some command header fields are omitted (...) for brevity.)
... | aa | ...
(Some response header fields are omitted (...) for brevity.)
... | 63 | ... | cf e5
(Some response header fields are omitted (...) for brevity.)
12.4 Commands
These are the possible command types and responses, without the header portions men-
tioned above.
Response type:
Emits a series of MON RESPONSE CHECKPOINT INFO responses (see Section 12.5.2
[MON RESPONSE CHECKPOINT INFO], page 271) followed by
0x14: MON RESPONSE CHECKPOINT LIST
Response body:
byte 0-3: The total number of checkpoints
12.4.7 Checkpoint toggle (0x15)
Minimum VICE version: 3.5
Command body:
byte 0-3: Checkpoint number
byte 4: Enabled?
0x00: disabled, 0x01: enabled
Response type:
0x15: MON RESPONSE CHECKPOINT TOGGLE
Response body:
Currently empty.
• 0x02: drive 9
• 0x03: drive 10
• 0x04: drive 11
See Section 12.5.3 [MON RESPONSE REGISTER INFO], page 272.
Response body:
byte 0-1: The count of the array items
byte 2+: An array with items of structure:
byte 0: Size of the item, excluding this byte
byte 1: ID of the register
byte 2: Size of the register in bits
byte 3: Length of name
byte 4+: Name
12.4.21 Display Get (0x84)
Gets the current screen in a requested bit format.
Minimum VICE version: 3.5
Minimum API version: 2
Command body:
byte 0: USE VIC-II?
Must be included, but ignored for all but the C128. If true, (>=0x01) the screen
returned will be from the VIC-II. If false (0x00), it will be from the VDC.
byte 1: Format
0x00: Indexed, 8 bit
Response type:
0x84: MON RESPONSE DISPLAY GET
Response body:
4 bytes: Length of the fields before the display buffer
2 bytes: Debug width of display buffer (uncropped)
The largest width the screen gets.
2 bytes: Debug height of display buffer (uncropped)
The largest height the screen gets.
2 bytes: X offset
X offset to the inner part of the screen.
2 bytes: Y offset
Y offset to the inner part of the screen.
2 bytes: Width of the inner part of the screen.
2 bytes: Height of the inner part of the screen.
1 byte: Bits per pixel of display buffer, 8
4 bytes: Length of display buffer = (&buffer)
(*buffer) bytes: Display buffer data
12.4.22 VICE info (0x85)
Get general information about VICE. Currently returns the versions.
Minimum VICE version: 3.6
Chapter 12: Binary monitor 269
Command body:
Always empty
Response type:
0x85: MON RESPONSE VICE INFO
Response body:
1 byte: Length of main version = (&main)
(*main) bytes: Main version
In linear format. For example 0x03, 0x05, 0x00, 0x00 for 3.5.0.0
1 byte: Length of SVN revision = (&rev)
(*rev) bytes: SVN revision
In little endian format. Returns zero if it’s not an SVN build.
Response type:
0xcc: MON RESPONSE RESET
Response body:
Currently empty.
12.5 Responses
These responses are generated by many different commands, or by certain events. Events
are generated with a request ID of 0xffffffff, so that they can be easily distinguished from
regular requests.
Response body:
byte 0-3: Checkpoint number
byte 4: Currently hit?
>=0x01: true, 0x00: false
byte 5-6: start address
byte 7-8: end address
byte 9: stop when hit
>=0x01: true, 0x00: false
byte 10: enabled
>=0x01: true, 0x00: false
byte 11: CPU operation
0x01: load, 0x02: store, 0x04: exec
byte 12: temporary
Deletes the checkpoint after it has been hit once. This is similar to "until"
command, but it will not resume the emulator.
byte 13-16: hit count
byte 17-20: ignore count
byte 21: Has condition?
>=0x01: true, 0x00: false
byte 22: memspace
• 0x00: main memory
• 0x01: drive 8
• 0x02: drive 9
• 0x03: drive 10
• 0x04: drive 11
C64 Studio IDE for assembly and BASIC projects, geared toward game devel-
opment.
https://github.com/GeorgRottensteiner/C64Studio
VICE Binary Monitor A cross platform .NET 5 library that implements a bridge for
Bridge for .NET communication with the VICE binary monitor.
https://github.com/MihaMarkic/vice-bridge-net
IceBro Lite IceBro Lite is a source-level debugger with a graphical user inter-
face (GUI).
https://github.com/Sakrac/IceBroLite
VS64 The VS64 extension makes it easy to build, debug, inspect and
run C64 assembly code from Visual Studio Code.
https://github.com/rolandshacks/vs64
274
13 c1541
VICE is provided with a complete stand-alone disk image maintenance utility, called c1541.
The syntax is:
c1541 [IMAGE1 [IMAGE2]] [COMMAND1 COMMAND2 ... COMMANDN]
IMAGE1 and IMAGE2 are disk image names that can be attached before c1541 starts. c1541
can handle up to two disk images at the same time by using two virtual built-in drives,
numbered 8 and 9; IMAGE1 (if present) is always attached to drive 8, while IMAGE2 is
attached to drive 9.
COMMANDs specified on the command-line all begin with the minus sign (-); if present, c1541
executes them in the same order as they are on the command line and returns a zero error
code if they were successful. If any of the COMMANDs fails, c1541 stops and returns a nonzero
error code.
If no COMMANDs are specified at all, c1541 enters interactive mode, where you can type
commands manually. Commands in interactive mode are the same as commands in batch
mode, but do not require a leading -.
As with the monitor, file name completion and command line editing with history are
provided. Use the command ‘quit’ or press C-d to exit.
14 cartconv
The cartconv program is a cartridge conversion utility, it can convert between binary and
.crt images and it can ’insert’ binary and/or .crt images into the EPROM type of cartridges.
convert: cartconv [-r] [-q|-v] [-t cart type] [-s cart revision] -i "input name" -o "outp
print info: cartconv [-r] [-q|-v] -f "input name"
check file: cartconv [-r] [-q|-v] -c "input name"
-l loadaddress
This parameter is optional and is used as the load-address when converting a
.crt file to a .prg file, or when converting to a generic type .crt file.
-f "input name"
This parameter is optional, and is meant to output information about the named
file. It can’t be used in conjuction with any of the other parameters.
-c "input name"
--check "input name"
Works similar to -f, but does not output anything except on errors. On errors
it will also make cartconv exit with an exitcode of -1.
-r This parameter is optional, it enables repair mode (accept broken input files)
-p This parameter is optional, when it is given cartconv will accept input files that
do not match the cartridge sizes (useful for development).
-b This parameter is optional, when it is given cartconv will not omit banks that
are empty (filled with $ff).
-q This parameter is optional, it disables all non-error messages
-v
--verbose
This parameter is optional, it enables more verbose messages
--types This parameter is optional. It shows all supported cartridge types (see below).
--version
Show cartconv version string and exit
--options-file <filename>
This parameter is optional. If present, cartconv writes options for reverting the
conversion into a file, this is mostly useful for the test script.
ieeeflash64
IEEE Flash! 64 interface .crt file
kcs KCS Power Cartridge .crt file
ks Kingsoft .crt file
ltk Lt. Kernal Host Adaptor .crt file
mach5 MACH 5 .crt file
md Magic Desk .crt file
mf Magic Formel .crt file
max MAX Basic .crt file
mikro Mikro Assembler .crt file
mmc64 MMC64 .crt file
mmcr MMC Replay .crt file
mv Magic Voice .crt file
mm MultiMAX .crt file
ocean Ocean .crt file
p64 Prophet64 .crt file
pf Pagefox .crt file
partner64
Partner 64 .crt file
rep256 REX 256KiB EPROM Cart .crt file, extra files can be inserted (1)(2)(3)
rgcd RGCD .crt file
ross ROSS .crt file
rr Retro Replay .crt file
rrnet RR-Net MK3 .crt file
rrf REX RAM-Floppy .crt file
ru REX Utility .crt file
sdbox SD-BOX .crt file
s64 Snapshot 64 .crt file
sb Structured BASIC .crt file
se5 Super Explode V5.0 .crt file
sg Super Games .crt file
silver Silverrock 128KiB Cartridge .crt file
simon Simons’ BASIC .crt file
Chapter 14: cartconv 283
15 petcat
The petcat program is a text conversion utility, it can convert between ASCII, PETSCII
and tokenized BASIC.
The number of clock cycles per second refer to the clock rate the timers used for the tape
routines in the respective computer system count with, and can be derived from the given
computer platform and video standard, as in the following table:
Computer platform Video standard Timer clock speed
0 = C64 0 = PAL 985248 kHz
1 = NTSC 1022730 kHz
2 = OLD NTSC 1022730 kHz
3 = PAL N 1023440 kHz
1 = VIC-20 0 = PAL 1108405 kHz
1 = NTSC 1022727 kHz
2 = C16 / Plus4 (*) 0 = PAL 886724 kHz
1 = NTSC 894886 kHz
3 = PET 0 = PAL 1000000 kHz
1 = NTSC 1000000 kHz
4 = C5x0 0 = PAL 985248 kHz
1 = NTSC 1022730 kHz
5 = C6x0 / C7x0 0 = PAL 2000000 kHz
1 = NTSC 2000000 kHz
(*) The TED timers always run with the slower clock rate (886724 Hz for PAL machines),
so the length of one TAP pulse should be relative to this frequency.
The original format did not include the "computer platform" and "video system" field, and
the number of clock cycles per second was assumed to always be 985248, as if the tape was
recorded on a PAL C64.
In TAP version $01 files, the data value of $00 has been re-purposed to represent cycle exact
values, which may also be greater than 255 * 8. When a $00 is encountered, three bytes
will follow which are the actual time (in cycles) of a pulse, and the above formula does not
apply. The three bytes are stored in LOW/HIGH format.
TAP Version 2 is an extension made by Markus Brenner for C16 tapes. It is version 1,
but each value represents a halfwave, starting with a ’0’->’1’ transition. The time encoding
doesn’t change.
The actual interpretation of the serial data takes a little more work to explain. The typical
ROM tape loader (and some of the turbo loaders) will initialize a timer with a specified
value and start it counting down. If either the tape data changes or the timer runs out, an
IRQ will occur. The loader will determine which condition caused the IRQ. If the tape data
changed before the timer ran out, we have a short pulse, or a "0" bit. If the timer ran out
first, we have a long pulse, or a "1" bit. Doing this continuously and we decode the entire
file.
Plus4 implementation hints: When playing back a TAP on a Plus/4 emulator, you should
write a routine that sets the CAS READ line to ’0’ for half of the time and ’1’ for the other
half. This should be easy to implement, as your emulator probably counts in units of clock
cycles anyway :) As for writing to a TAP file, you need to watch the CAS WRITE register
(processor port, bit 0x02) and start counting whenever a 0->1 transition happens.
The T64 File Structure was developed by Miha Peternel for use in the C64S emulator. It is
easy to use and allows future extensions.
to define this format from the start with what the 1541 is capable of doing, and not just
what it typically does.
At first, the defined track size value of 7928 bytes may seem to be arbitrary, but it is not. It
is determined by the fastest write speed possible (speed zone 0), coupled with the average
rotation speed of the disk (300 rpm). After some math, the answer that actually comes up
is 7692 bytes. Why the discrepency between the actual size of 7692 and the defined size
of 7928? Simply put, not all drives rotate at 300 rpm. Some can be faster or slower, so a
upper safety margin of +3% was built added, in case some disks rotate slower and can write
more data. After applying this safety factor, and some rounding-up, 7928 bytes per track
was arrived at.
Also note that this upper limit of 7928 bytes per track really only applies to 1541 and
compatible disks. If this format were applied to another disk type like the SFD1001, this
value would be higher.
Below is a dump of the first section of a G64 file, showing the offsets to the data portion for
each track and half-track entry. Following that is a dump of the speed zone offsets.
Addr 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -----------------------------------------------
0000: .. .. .. .. .. .. .. .. .. .. .. .. AC 02 00 00
0010: 00 00 00 00 A6 21 00 00 00 00 00 00 A0 40 00 00
0020: 00 00 00 00 9A 5F 00 00 00 00 00 00 94 7E 00 00
0030: 00 00 00 00 8E 9D 00 00 00 00 00 00 88 BC 00 00
0040: 00 00 00 00 82 DB 00 00 00 00 00 00 7C FA 00 00
0050: 00 00 00 00 76 19 01 00 00 00 00 00 70 38 01 00
0060: 00 00 00 00 6A 57 01 00 00 00 00 00 64 76 01 00
0070: 00 00 00 00 5E 95 01 00 00 00 00 00 58 B4 01 00
0080: 00 00 00 00 52 D3 01 00 00 00 00 00 4C F2 01 00
0090: 00 00 00 00 46 11 02 00 00 00 00 00 40 30 02 00
00A0: 00 00 00 00 3A 4F 02 00 00 00 00 00 34 6E 02 00
00B0: 00 00 00 00 2E 8D 02 00 00 00 00 00 28 AC 02 00
00C0: 00 00 00 00 22 CB 02 00 00 00 00 00 1C EA 02 00
00D0: 00 00 00 00 16 09 03 00 00 00 00 00 10 28 03 00
00E0: 00 00 00 00 0A 47 03 00 00 00 00 00 04 66 03 00
00F0: 00 00 00 00 FE 84 03 00 00 00 00 00 F8 A3 03 00
0100: 00 00 00 00 F2 C2 03 00 00 00 00 00 EC E1 03 00
0110: 00 00 00 00 E6 00 04 00 00 00 00 00 E0 1F 04 00
0120: 00 00 00 00 DA 3E 04 00 00 00 00 00 D4 5D 04 00
0130: 00 00 00 00 CE 7C 04 00 00 00 00 00 C8 9B 04 00
0140: 00 00 00 00 C2 BA 04 00 00 00 00 00 BC D9 04 00
0150: 00 00 00 00 B6 F8 04 00 00 00 00 00 .. .. .. ..
Offset Description
$000C-000F Offset to stored track 1.0 ($000002AC, in LO/HI format, see below for
more)
$0010-0013 Offset to stored track 1.5 ($00000000)
$0014-0017 Offset to stored track 2.0 ($000021A6)
...
$0154-0157 Offset to stored track 42.0 ($0004F8B6)
Chapter 16: The emulator file formats 293
25-30 1
31 and up 0 (lowest writing speed)
Note that you can, through custom programming of the 1541, change the speed zone of
any track to something different (change the 3 to a 0) and write data differently. From the
dump of the speed offset entries above, we see that all the entries are in the range of 0-3.
If any entry is less than 4, this is not considered a speed offset but defines the whole track
to be recorded at that one speed.
In the example I had, there were no offsets defined, so no speed zone dump can be shown.
However, I can define what should be there. You will have a block of data, 1982 bytes long.
Each byte is encoded to represent the speed of 4 bytes in the track offset area, and is broken
down as follows:
Speed entry $FF: in binary %11111111
|’|’|’|’
| | | |
| | | +- 4’th byte speed (binary 11, 3 dec)
| | +--- 3’rd byte speed (binary 11, 3 dec)
| +----- 2’nd byte speed (binary 11, 3 dec)
+------- 1’st byte speed (binary 11, 3 dec)
It was very smart thinking to allow for two speed zone settings, one in the offset block and
another defining the speed on a per-byte basis. If you are working with a normal disk,
where each track is one constant speed, then you don’t need the extra blocks of information
hanging around the image, wasting space.
What may not be obvious is the flexibility of this format to add tracks and speed offset
zones at will. If a program decides to write a track out with varying speeds, and no speed
offset exist, a new block will be created by appending it to the end of the image, and the
offset pointer for that track set to point to the new block. If a track has no offset yet,
meaning it doesn’t exist (like a half-track), and one needs to be added, the same procedure
applies. The location of the actual track or speed zone data is not important, meaning they
do not have to be in any particular order since they are all referenced by the offsets at the
beginning of the image.
Offset Description
$00-$02 extra info tag (EXT) $45,$58,$54
$03 extra info version ($01)
Followed by 16 bytes of extra info for each track in the image:
Offset Description
$00 write splice position
$04 write area size
$08 bitcell size in nanoseconds (eg 3500 means 3.5us)
$0c track fill value
$0d n/a
$0e format code
$0f format extension
A zero value in any of these fields means that the respective default/standard value applies.
Format codes:
ID Description
0 Unknown format
1 GCR Data
2 CBM DOS
3 CBM DOS Extended
4 MicroProse
5 RapidLok
6 Datasoft
7 Vorpal
8 V-MAX!
9 Teque
10 TDP
11 Big Five
12 OziSoft
Format Extensions:
ID Description
0 Unknown protection
1 Datasoft with Weak bits
2 CBM DOS with Cyan loader, Weak bits
3 CBM DOS with Datasoft, Weak bits
4 RapidLok Key
5 Data Duplication
6 Melbourne House
7 Melbourne House, Weak bits
8 PirateBusters v1.0
9 PirateBusters v2.0, Track A
10 PirateBusters v2.0, Track B
11 PirateSlayer
12 CBM DOS, XEMAG
Chapter 16: The emulator file formats 297
| Sub stream | Count of models | Size per model | Total value bits |
+------------------+-----------------+------------------+------------------+
| Position | 4 | 65536 | 32 |
+------------------+-----------------+------------------+------------------+
| Strength | 4 | 65536 | 32 |
+------------------+-----------------+------------------+------------------+
| Position flag | 1 | 2 | 1 |
+------------------+-----------------+------------------+------------------+
| Strenth flag | 1 | 2 | 1 |
+------------------+-----------------+------------------+------------------+
+===Total models===| 10 |==================|==================|
+--------------------------------------------------------------------------+
All initial model state values are initialized with zero.
All initial model probability values are initialized with 2048.
These model probability values will be updating in a adaptive way on the fly and not
precalculated before the encoding and even not loaded before the decoding, see pseudo
code below.
16000000 Hz / 5 rotations per second at 300 RPM = maximal 3200000 flux pulses
So NRZI transition flux pulse positions are in the 0 .. 3199999 value range, which is also
a exact single rotation, where each time unit is a cycle at 16 MHz with 300 RPM as a
mapping for the ideal case.
The NRZI transition flux pulse stength are in the 0x00000000 .. 0xffffffff value range, where
0xffffffff indices a strong flux pulse, that always triggers, and 0x00000001 indices a weak
flux pulse, that almost never triggers, and 0x00000000 indices a flux pulse, that absolutly
never triggers.
For 32-bit values, the model sub streams are subdivided byte wide in a little-endian manner,
and each byte is processed bitwise with model probability shifting of 4 bits, just as:
Pascal-Style pseudo code:
procedure WriteDWord(Model, Value : longword);
var ByteValue, ByteIndex, Context, Bit : longword;
begin
for ByteIndex := 0 to 3 do begin
ByteValue := (Value shr (ByteIndex shl 3)) and $ff;
Context := 1;
for Bit := 7 downto 0 do begin
Context := (Context shl 1) or RangeCoderEncodeBit(
RangeCoderProbabilities[
RangeCoderProbabilityOffsets[Model + ByteIndex] +
(((RangeCoderProbabilityStates[Model + ByteIndex]
shl 8) or Context) and $ffff)], 4, (ByteValue shr
Bit) and 1);
end;
RangeCoderProbabilityStates[Model+ByteIndex] := ByteValue;
end;
end;
Chapter 16: The emulator file formats 299
And for 1-bit flag values it is much simpler, but also with model probability shifting of 4
bits, just as:
Pascal-Style pseudo code:
procedure WriteBit(Model, Value : longword);
begin
RangeCoderProbabilityStates[Model] :=
RangeCoderEncodeBit(RangeCoderProbabilities[
RangeCoderProbabilityOffsets[Model] +
RangeCoderProbabilityStates[Model]], 4, Value and 1);
end;
The position and strength values are delta-encoded. If a value is equal to the last previous
value, then the value will not encoded, instead, a flag for this will encoded. First the position
value will encoded, then the stength value. If the last position delta is 0, then it is a track
stream end marker.
Pascal-Style pseudo code:
LastPosition := 0;
PreviousDeltaPosition := 0
LastStrength := 0;
end;
// End code
WriteBit(ModelPositionFlag, 1);
WriteDWord(ModelPosition, 0);
The decoding is simply just in the another direction way.
Chapter 16: The emulator file formats 300
procedure RangeCoderEncodeNormalize;
begin
while ((RangeLow xor RangeHigh) and $ff000000) = 0 do begin
WriteByteToOutput(RangeHigh shr 24);
RangeLow := RangeLow shl 8;
RangeHigh := (RangeHigh shl 8) or $ff;
end;
end;
end;
RangeCoderEncodeNormalize;
result := BitValue;
end;
procedure RangeCoderDecodeNormalize;
begin
while ((RangeLow xor RangeHigh) and $ff000000) = 0 do begin
RangeLow := RangeLow shl 8;
RangeHigh := (RangeHigh shl 8) or $ff;
RangeCode := (RangeCode shl 8) or ReadByteFromInput;
end;
end;
of sectors per track for a total of 683 sectors. Track counting starts at 1, not 0, and goes
up to 35. Sector counting starts at 0, not 1, for the first sector, therefore a track with 21
sectors will go from 0 to 20.
The original media (a 5.25" disk) has the tracks laid out in circles, with track 1 on the very
outside of the disk (closest to the sides) to track 35 being on the inside of the disk (closest
to the inner hub ring). Commodore, in their infinite wisdom, varied the number of sectors
per track and data densities across the disk to optimize available storage, resulting in the
chart below. It shows the sectors/track for a standard D64. Since the outside diameter of a
circle is the largest (versus closer to the center), the outside tracks have the largest amount
of storage.
Track Sectors/track # Sectors
1-17 21 357
18-24 19 133
25-30 18 108
31-35 17 85
36-40(*) 17 85
41-42(*) 17 34
Track #Sect #SectorsIn D64 Offset
1 21 0 $00000
2 21 21 $01500
3 21 42 $02A00
4 21 63 $03F00
5 21 84 $05400
6 21 105 $06900
7 21 126 $07E00
8 21 147 $09300
9 21 168 $0A800
10 21 189 $0BD00
11 21 210 $0D200
12 21 231 $0E700
13 21 252 $0FC00
14 21 273 $11100
15 21 294 $12600
16 21 315 $13B00
17 21 336 $15000
18 19 357 $16500
19 19 376 $17800
20 19 395 $18B00
21 19 414 $19E00
22 19 433 $1B100
23 19 452 $1C400
24 19 471 $1D700
25 18 490 $1EA00
26 18 508 $1FC00
27 18 526 $20E00
28 18 544 $22000
Chapter 16: The emulator file formats 303
29 18 562 $23200
30 18 580 $24400
31 17 598 $25600
32 17 615 $26700
33 17 632 $27800
34 17 649 $28900
35 17 666 $29A00
36(*) 17 683 $2AB00
37(*) 17 700 $2BC00
38(*) 17 717 $2CD00
39(*) 17 734 $2DE00
40(*) 17 751 $2EF00
41(*) 17 768 $30000
42(*) 17 785 $31100
(*) Tracks 36-40 apply to 40- and 42-track images only. (*) Tracks 41-42 apply to 42-track
images only.
The directory track should be contained totally on track 18. Sectors 1-18 contain the
entries and sector 0 contains the BAM (Block Availability Map) and disk name/ID. Since
the directory is only 18 sectors large (19 less one for the BAM), and each sector can contain
only 8 entries (32 bytes per entry), the maximum number of directory entries is 18 * 8 =
144. The first directory sector is always 18/1, even though the t/s pointer at 18/0 (first two
bytes) might point somewhere else. It then follows the same chain structure as a normal
file, using a sector interleave of 3. This makes the chain links go 18/1, 18/4, 18/7 etc.
Note that you can extend the directory off of track 18, but only when reading the disk
or image. Attempting to write to a directory sector not on track 18 will cause directory
corruption. Each directory sector has the following layout (18/1 partial dump):
00: 12 04 81 11 00 4E 41 4D 45 53 20 26 20 50 4F 53 <- notice the T/S link
10: 49 54 A0 A0 A0 00 00 00 00 00 00 00 00 00 15 00 <- to 18/4 ($12/$04)
20: 00 00 84 11 02 41 44 44 49 54 49 4F 4E 41 4C 20 <- and how its not here
30: 49 4E 46 4F A0 11 0C FE 00 00 00 00 00 00 61 01 <- ($00/$00)
The first two bytes of the sector ($12/$04) indicate the location of the next track/sector of
the directory (18/4). If the track is set to $00, then it is the last sector of the directory. It
is possible, however unlikely, that the directory may *not* be competely on track 18 (some
disks do exist like this). Just follow the chain anyhow.
When the directory is done, the track value will be $00. The sector link should contain a
value of $FF, meaning the whole sector is allocated, but the actual value doesn’t matter.
The drive will return all the available entries anyways.
This is a breakdown of a standard directory sector:
Bytes Description
$00-$1F First directory entry
$20-$3F Second dir entry
$40-$5F Third dir entry
$60-$7F Fourth dir entry
$80-$9F Fifth dir entry
$A0-$BF Sixth dir entry
Chapter 16: The emulator file formats 304
of the floppy drives core ROM routines ignore the track value that the directory is on and
assume the default directory track for operations.
To explain: assume that the directory has been extended from track 18 to track 19/6 and
that the directory is full except for a few slots on 19/6. When saving a new file, the drive
DOS will find an empty file slot at 19/6 offset $40 and correctly write the filename and a
few other things into this slot. When the file is done being saved the final file information
will be written to 18/6 offset $40 instead of 19/6 causing some directory corruption to the
entry at 18/6. Also, the BAM entries for the sectors occupied by the new file will not be
saved and the new file will be left as a SPLAT (*) file.
Attempts to validate the disk will result in those files residing off the directory track to not
be allocated in the BAM, and could also send the drive into an endless loop. The default
directory track is assumed for all sector reads when validating so if the directory goes to
19/6, then the validate code will read 18/6 instead. If 18/6 is part of the normal directory
chain then the validate routine will loop endlessly.
$00. When this happens, the value in the sector link location indicates how much of the
sector is used. For example, the following chain indicates a file 6 sectors long, and ends
when we encounter the $00/$34 chain. At this point the last sector occupies from bytes
$02-$34.
1 2 3 4 5 6
—- —- —- —- —- —-
17/0 17/10 17/20 17/1 17/11 0/52
(11/00) (11/0A) (11/14) (11/01) (11/0B) (0/34)
0070: 12 FF FF 03 12 FF FF 03 12 FF FF 03 11 FF FF 01
0080: 11 FF FF 01 11 FF FF 01 11 FF FF 01 11 FF FF 01
0090: 11 FF FF 01 11 FF FF 01 11 FF FF 01 11 FF FF 01
00A0: 11 FF FF 01 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0
00B0: A0 A0 A0 A0 A0 A0 30 30 A0 32 50 A0 A0 A0 A0 00
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Converting this error to a D64 is very problematic because it depends on where the physical
head is on the disk when a read attempt is made. If it is on valid header/sectors then it
won’t occur. If it happens over an area without SYNC marks, it will happen.
Code : $02 Error : 20 Type : Seek Message : Header descriptor byte not found (HEX $08,
GCR $52)
Each sector is preceeded by an 8-byte GCR header block, which starts with the value $52
(GCR). If this value is not found after 90 attempts, this error is generated.
Basically, what a track has is SYNC marks, and possibly valid data blocks, but no valid
header descriptors.
Code : $09 Error : 27 Type : Seek Message : Checksum error in header block
The header block contains a checksum value, calculated by XOR’ing the TRACK, SECTOR,
ID1 and ID2 values. If this checksum is wrong, this error is generated.
Code : $0B Error : 29 Type : Seek Message : Disk sector ID mismatch
The ID’s from the header block of the currently read sector are compared against the ones
from the low-level header of 18/0. If there is a mismatch, this error is generated.
Code : $02 Error : 20 Type : Seek Message : Header block not found
This error can be reported again when searching for the correct header block. An image
of the header is built and searched for, but not found after 90 read attempts. Note the
difference from the first occurance. The first one only searches for a valid ID, not the whole
header.
Note that error 20 occurs twice during this phase. The first time is when a header ID
is being searched for, the second is when the proper header pattern for the sector being
searched for is not found.
From this point on, all the errors apply to the specific sector you are looking for. If a read
passed all the previous checks, then we are at the sector being searched for.
Note that the entire sector is read before these errors are detected. Therefore the data,
checksum and off bytes are available.
Code : $04 Error : 22 Type : Read Message : Data descriptor byte not found (HEX $07,
GCR $55)
Each sector data block is preceeded by the value $07, the "data block" descriptor. If this
value is not there, this error is generated. Each encoded sector has actually 260 bytes. First
is the descriptor byte, then follows the 256 bytes of data, a checksum, and two "off" bytes.
Code : $05 Error : 23 Type : Read Message : Checksum error in data block
The checksum of the data read of the disk is calculated, and compared against the one
stored at the end of the sector. If there’s a discrepancy, this error is generated.
Code : $0F Error : 74 Type : Read Message : Drive Not Ready (no disk in drive or no
device 1)
These errors only apply when writing to a disk. I don’t see the usefulness of having these
as they cannot be present when only *reading* a disk.
Code : $06 Error : 24 Type : Write Message : Write verify (on format)
Code : $07 Error : 25 Type : Write Message : Write verify error
Chapter 16: The emulator file formats 311
Once the GCR-encoded sector is written out, the drive waits for the sector to come around
again and verifies the whole 325-byte GCR block. Any errors encountered will generate this
error.
Code : $08 Error : 26 Type : Write Message : Write protect on
Self explanatory. Remove the write-protect tab, and try again.
Code : $0A Error : 28 Type : Write Message : Write error
In actual fact, this error never occurs, but it is included for completeness.
This is not an error at all, but it gets reported when the read of a sector is ok.
Code : $01 Error : 00 Type : N/A Message : No error.
Self explanatory. No errors were detected in the reading and decoding of the sector.
The advantage with using the 35 track D64 format, regardless of error bytes, is that it can
be converted directly back to a 1541 disk by either using the proper cable and software on
the PC, or send it down to the C64 and writing it back to a 1541. It is the best documented
format since it is also native to the C64, with many books explaining the disk layout and
the internals of the 1541.
The D71 has 70 tracks, double that of the 1541, with a DOS file size of 349696 bytes. If the
error byte block (1366 bytes) is attached, this makes the file size 351062 bytes. The track
range and offsets into the D71 files are as follows:
Track Sec/trk # Sectors
1-17 (side 0) 21 357
18-24 (side 0) 19 133
25-30 (side 0) 18 108
31-35 (side 0) 17 85
36-52 (side 1) 21 357
53-59 (side 1) 19 133
60-65 (side 1) 18 108
66-70 (side 1) 17 85
Track #Sect #SectorsIn D71 Offset
1 21 0 $00000
2 21 21 $01500
3 21 42 $02A00
4 21 63 $03F00
5 21 84 $05400
6 21 105 $06900
7 21 126 $07E00
8 21 147 $09300
9 21 168 $0A800
10 21 189 $0BD00
11 21 210 $0D200
12 21 231 $0E700
13 21 252 $0FC00
14 21 273 $11100
15 21 294 $12600
16 21 315 $13B00
17 21 336 $15000
18 19 357 $16500
19 19 376 $17800
20 19 395 $18B00
21 19 414 $19E00
22 19 433 $1B100
23 19 452 $1C400
24 19 471 $1D700
25 18 490 $1EA00
26 18 508 $1FC00
27 18 526 $20E00
28 18 544 $22000
29 18 562 $23200
30 18 580 $24400
31 17 598 $25600
32 17 615 $26700
33 17 632 $27800
Chapter 16: The emulator file formats 314
34 17 649 $28900
35 17 666 $29A00
36 21 683 $2AB00
37 21 704 $2C000
38 21 725 $2D500
39 21 746 $2EA00
40 21 767 $2FF00
41 21 788 $31400
42 21 809 $32900
43 21 830 $33E00
44 21 851 $35300
45 21 872 $36800
46 21 893 $37D00
47 21 914 $39200
48 21 935 $3A700
49 21 956 $3BC00
50 21 977 $3D100
51 21 998 $3E600
52 21 1019 $3FB00
53 19 1040 $41000
54 19 1059 $42300
55 19 1078 $43600
56 19 1097 $44900
57 19 1116 $45C00
58 19 1135 $46F00
59 19 1154 $48200
60 18 1173 $49500
61 18 1191 $4A700
62 18 1209 $4B900
63 18 1227 $4CB00
64 18 1245 $4DD00
65 18 1263 $4EF00
66 17 1281 $50100
67 17 1298 $51200
68 17 1315 $52300
69 17 1332 $53400
70 17 1349 $54500
The directory structure is the same as a D64/1541. All the same filetypes apply, the
directory still only holds 144 files per disk and should only exist on track 18.
The first two bytes of the sector ($12/$04 or 18/4) indicate the location of the next
track/sector of the directory. If the track value is set to $00, then it is the last sector
of the directory. It is possible, however unlikely, that the directory may *not* be competely
on track 18 (some disks do exist like this). Just follow the chain anyhow.
When the directory is done, the track value will be $00. The sector link should contain a
value of $FF, meaning the whole sector is allocated, but the actual value doesn’t matter.
Chapter 16: The emulator file formats 315
The drive will return all the available entries anyways. This is a breakdown of a standard
directory sector and entry:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 12 04 82 11 00 4A 45 54 20 53 45 54 20 57 49 4C
10: 4C 59 A0 A0 A0 00 00 00 00 00 00 00 00 00 2B 00
20: 00 00 82 0F 01 4A 53 57 20 31 A0 A0 A0 A0 A0 A0
30: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 BF 00
40: 00 00 82 06 03 53 4F 4E 20 4F 46 20 42 4C 41 47
50: 47 45 52 A0 A0 00 00 00 00 00 00 00 00 00 AE 00
60: 00 00 82 15 0D 50 4F 54 54 59 20 50 49 47 45 4F
70: 4E A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 A2 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Bytes Description
$00-$1F First directory entry
$20-$3F Second dir entry
$40-$5F Third dir entry
$60-$7F Fourth dir entry
$80-$9F Fifth dir entry
$A0-$BF Sixth dir entry
$C0-$DF Seventh dir entry
$E0-$FF Eighth dir entry
This is a breakdown of a standard directory entry:
Bytes Description
$00-$01 Track/Sector location of next directory sector ($00/$FF if its the last
sector)
$02 File type
$03-$04 Track/sector location of first sector of file
$05-$14 16 character filename (in PETASCII, padded with $A0)
$15-$16 Track/Sector location of first side-sector block (REL file only)
$17 REL file record length (REL file only, max. value 254)
$18-$1D Unused (except with GEOS disks)
$1E-$1F File size in sectors, low/high byte order ($1E+$1F*256). The approx.
filesize in bytes is <= #sectors * 254
The file type field is used as follows:
Bits Description
0-3 The actual file type
4 Unused
Chapter 16: The emulator file formats 316
sectors on track 53 are marked in the BAM as allocated. This does mean that except for
one allocated sector on track 53, the rest of the track is unused and wasted. (Track 53 is
the equivalent to track 18, but on the flip side of the disk). Here is a dump of the first BAM
sector. . .
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 12 01 41 80 12 FF F9 17 15 FF FF 1F 15 FF FF 1F
10: 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F
20: 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F
30: 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F 15 FF FF 1F
40: 15 FF FF 1F 15 FF FF 1F 11 FC FF 07 13 FF FF 07
50: 13 FF FF 07 13 FF FF 07 13 FF FF 07 13 FF FF 07
60: 13 FF FF 07 12 FF FF 03 12 FF FF 03 12 FF FF 03
70: 12 FF FF 03 12 FF FF 03 12 FF FF 03 11 FF FF 01
80: 11 FF FF 01 11 FF FF 01 11 FF FF 01 11 FF FF 01
90: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0
A0: A0 A0 30 30 A0 32 41 A0 A0 A0 A0 00 00 00 00 00
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 15 15 15
E0: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 00 13
F0: 13 13 13 13 13 12 12 12 12 12 12 11 11 11 11 11
Bytes Description
$00-$01 Track/Sector location of the first directory
sector (should be set to 18/1 but it doesn’t
matter, and don’t trust what is there, al-
ways go to 18/1 for first directory entry)
$02 Disk DOS version type (see note below) $41
(’A’) = 1541
$03 Double-sided flag $00 - Single sided disk $80
- Double sided disk
$04-8F BAM entries for each track, in groups of
four bytes per track, starting on track 1.
$90-$9F Disk Name (padded with $A0)
$A0-$A1 Filled with $A0
$A2-$A3 Disk ID
$A4 Usually $A0
$A5-$A6 DOS type, usually "2A"
$A7-$AA Filled with $A0
$AB-$DC Not used ($00’s)
$DD-$FF Free sector count for tracks 36-70 (1
byte/track).
The "free sector" entries for tracks 36-70 are likely included here in the first BAM sector due
to some memory restrictions in the 1571 drive. There is only enough memory available for
one BAM sector, but in order to generate the "blocks free" value at the end of a directory
Chapter 16: The emulator file formats 318
listing, the drive needs to know the extra track "free sector" values. It does make working
with the BAM a little more difficult, though.
These are the values that would normally be with the 4-byte BAM entry, but the rest of
the entry is contained on 53/0.
Note: If the DOS version byte is set to anything other than $41 or $00, then we have what
is called "soft write protection". Any attempt to write to the disk will return the "DOS
Version" error code 73. The 1571 is simply telling you that it thinks the disk format version
is incorrect.
The BAM entries require some explanation. Take the first entry at bytes $04-$07 ($12 $FF
$F9 $17). The first byte ($12) is the number of free sectors on that track. Since we are
looking at the track 1 entry, this means it has 18 (decimal) free sectors.
The next three bytes represent the bitmap of which sectors are used/free. Since it is 3 bytes
(8 bits/byte) we have 24 bits of storage. Remember that at most, each track only has 21
sectors, so there are a few unused bits. These entries must be viewed in binary to make any
sense. We will use the first entry (track 1) at bytes 04-07:
FF=11111111, F9=11111001, 17=00010111
In order to make any sense from the binary notation, flip the bits around.
111111 11112222
01234567 89012345 67890123
--------------------------
11111111 10011111 11101000
^ ^
sector 0 sector 20
Since we are on the first track, we have 21 sectors, and only use up to the bit 20 position.
If a bit is on (1), the sector is free. Therefore, track 1 has sectors 9,10 and 19 used, all the
rest are free.
In order to complete the BAM, we must check 53/0.
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: FF FF 1F FF FF 1F FF FF 1F FF FF 1F FF FF 1F FF
10: FF 1F FF FF 1F FF FF 1F FF FF 1F FF FF 1F FF FF
20: 1F FF FF 1F FF FF 1F FF FF 1F FF FF 1F FF FF 1F
30: FF FF 1F 00 00 00 FF FF 07 FF FF 07 FF FF 07 FF
40: FF 07 FF FF 07 FF FF 07 FF FF 03 FF FF 03 FF FF
50: 03 FF FF 03 FF FF 03 FF FF 03 FF FF 01 FF FF 01
60: FF FF 01 FF FF 01 FF FF 01 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Chapter 16: The emulator file formats 319
Each track from 36-70 has 3 byte entries, starting at address $00.
Byte: $00-$02: $FF $FF $1F - BAM map for track 36
$03-$05: $FF $FF $1F - BAM map for track 37
...
$33-$35: $00 $00 $00 - BAM map for track 53
...
$66-$68: $FF $FF $01 - BAM map for track 70
$69-$FF: - Not used
You can break down the entries for tracks 36-70 the same way as track 1, just combine the
free sector bytes from 18/0 and the BAM usage from 53 to get the full 4-byte entry.
Just like a D64, you can attach error bytes to the file, for sector error information. This
block is 1366 bytes long, 1 byte for each of the 1366 sectors in the image. With the error
bytes, the file size is 351062 bytes.
13 40 480 $1E000
14 40 520 $20800
15 40 560 $23000
16 40 600 $25800
17 40 640 $28000
18 40 680 $2A800
19 40 720 $2D000
20 40 760 $2F800
21 40 800 $32000
22 40 840 $34800
23 40 880 $37000
24 40 920 $39800
25 40 960 $3C000
26 40 1000 $3E800
27 40 1040 $41000
28 40 1080 $43800
29 40 1120 $46000
30 40 1160 $48800
31 40 1200 $4B000
32 40 1240 $4D800
33 40 1280 $50000
34 40 1320 $52800
35 40 1360 $55000
36 40 1400 $57800
37 40 1440 $5A000
38 40 1480 $5C800
39 40 1520 $5F000
40 40 1560 $61800
41 40 1600 $64000
42 40 1640 $66800
43 40 1680 $69000
44 40 1720 $6B800
45 40 1760 $6E000
46 40 1800 $70800
47 40 1840 $73000
48 40 1880 $75800
49 40 1920 $78000
50 40 1960 $7A800
51 40 2000 $7D000
52 40 2040 $7F800
53 40 2080 $82000
54 40 2120 $84800
55 40 2160 $87000
56 40 2200 $89800
57 40 2240 $8C000
58 40 2280 $8E800
59 40 2320 $91000
Chapter 16: The emulator file formats 321
60 40 2360 $93800
61 40 2400 $96000
62 40 2440 $98800
63 40 2480 $9B000
64 40 2520 $9D800
65 40 2560 $A0000
66 40 2600 $A2800
67 40 2640 $A5000
68 40 2680 $A7800
69 40 2720 $AA000
70 40 2760 $AC800
71 40 2800 $AF000
72 40 2840 $B1800
73 40 2880 $B4000
74 40 2920 $B6800
75 40 2960 $B9000
76 40 3000 $BB800
77 40 3040 $BE000
78 40 3080 $C0800
79 40 3120 $C3000
80 40 3160 $C5800
The header sector is stored at 40/0, and contains the disk name, ID and DOS version bytes,
but the BAM is no longer contained here (like the D64).
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 28 03 44 00 31 35 38 31 20 55 54 49 4C 49 54 59
10: 20 56 30 31 A0 A0 47 42 A0 33 44 A0 A0 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Bytes Description
$00-$01 Track/Sector location of the first directory sector (should be set to
40/3 but it doesn’t matter, and don’t trust what is there, always go to
40/3 for first directory entry)
$02 Disk DOS version type (see note below) $44 (’D’)=1581
Chapter 16: The emulator file formats 322
$03 $00
$04-$13 16 character Disk Name (padded with $A0)
$14-$15 $A0
$16-$17 Disk ID
$18 $A0
$19 DOS Version ("3")
$1A Disk version ("D")
$1B-$1C $A0
$1D-$FF Unused (usually $00)
The following might be set if the disk is a GEOS format (this info is based on the D64
layout, and might not prove to be true)
Bytes Description
$AB-$AC Border sector (GEOS only, else set to $00)
$AD-$BC GEOS ID string ("geos FORMAT V1.x" GEOS only, else $00)
$BD-$FF Unused (usually $00)
Note: If the DOS version byte is changed to anything other than a $44 (or $00), then we
have what is called "soft write protection". Any attempt to write to the disk will return
the "DOS Version" error code 73. The drive is simply telling you that it thinks the disk
format version is incompatible.
The directory track should be contained totally on track 40. Sectors 3-39 contain the entries
and sector 1 and 2 contain the BAM (Block Availability Map). Sector 0 holds the disk name
and ID. The first directory sector is always 40/3, even though the t/s pointer at 40/0 (first
two bytes) might point somewhere else. It goes linearly up the sector count, 3-4-5-6-etc.
Each sector holds up to eight entries.
The first two bytes of the sector ($28/$04) indicate the location of the next track/sector of
the directory (40/4). If the track is set to $00, then it is the last sector of the directory. It
is possible, however unlikely, that the directory may *not* be competely on track 40. Just
follow the chain anyhow.
When the directory is done (track=$00), the sector should contain an $FF, meaning the
whole sector is allocated. Theactual value doesn’t matter as all the entries will be returned
anyways. Each directory sector has the following layout:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 28 04 81 2B 00 53 43 52 45 45 4E 20 20 33 A0 A0
10: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 02 00
20: 00 00 81 2B 01 53 43 52 45 45 4E 20 20 34 A0 A0
30: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 03 00
40: 00 00 81 2B 02 53 43 52 45 45 4E 20 20 35 A0 A0
50: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 07 00
60: 00 00 81 2B 08 53 43 52 45 45 4E 20 20 36 A0 A0
70: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 08 00
80: 00 00 81 2B 14 53 43 52 45 45 4E 20 20 37 A0 A0
90: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 07 00
A0: 00 00 81 24 00 53 43 52 45 45 4E 20 20 38 A0 A0
B0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 0B 00
Chapter 16: The emulator file formats 323
C0: 00 00 82 24 04 46 49 4C 45 34 32 39 33 36 39 30
D0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 07 00
E0: 00 00 82 24 06 46 49 4C 45 32 35 37 38 38 31 35
F0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 05 00
Bytes Description
$00-$1F First directory entry
$20-$3F Second dir entry
$40-$5F Third dir entry
$60-$7F Fourth dir entry
$80-$9F Fifth dir entry
$A0-$BF Sixth dir entry
$C0-$DF Seventh dir entry
$E0-$FF Eighth dir entry
This is a breakdown of a standard directory entry:
Bytes Description
$00-$01 Track/Sector location of next directory sector
$02 File type
$03-$04 Track/sector location of first sector of file or partition
$05-$14 16 character filename (in PETASCII, padded with $A0)
$15-$16 Track/Sector location of first SUPER SIDE SECTOR block (REL file
only)
$17 REL file record length (REL file only)
$18-$1B Unused (except with GEOS disks)
$1C-$1D (Used during an SAVE or OPEN, holds the new t/s link)
$1E-$1F File or partition size in sectors, low/high byte order ($1E+$1F*256).
The approx. file size in bytes is <= #sectors * 254
The file type field is used as follows:
Bits Description
0-3 The actual file type
4 Unused
5 Used only during SAVE-@ replacement
6 Locked flag (Set produces ">" locked files)
7 Closed flag (Not set produces "*", or "splat" files)
The actual file type can be one of the following:
Binary Decimal File type
0000 0 DEL
0001 1 SEQ
0010 2 PRG
0011 3 USR
0100 4 REL
0101 5 CBM (partition or sub-directory)
Values 6-15 are illegal, but if used will produce very strange results.
Chapter 16: The emulator file formats 324
F0: FF FF FF FF 28 FF FF FF FF FF 28 FF FF FF FF FF
It is laid out exactly as the side 0 BAM except for one difference. The track/sector reference
for the next sector should be set to $00/$FF, indicating there is no next sector.
E0: 13 20 13 21 13 22 13 23 13 24 13 25 13 26 13 27
F0: 12 00 12 01 12 02 12 03 12 04 12 05 12 06 12 07
Bytes:
$00: Track location of next side-sector ($00 if last sector)
$01: Sector location of next side-sector
$02: Side-sector block number (first sector is $00, the next is
$01, then $02, etc)
$03: REL file RECORD size (from directory entry)
$04-$0F: Track/sector locations of the six other side-sectors. Note
the first entry is this very sector we have listed here.
The next is the next t/s listed at the beginning of the
sector. All of this information must be correct. If one of
these chains is $00/$00, then we have no more side sectors.
Also, all of these (up to six) side sectors must have the
same values in this range.
$10-$FF: T/S chains of *each* sector of the data portion. When we
get a $00/$00, we are at the end of the file.
The BAM track for the sub-directory exists on the first track of the partition, and has the
same layout as the disk BAM on track 40. The biggest difference is the "disk name" is
what what given when the partition was formatted rather than what the actual disk name
is. Also, except for the free sectors in the partition area, all other sectors in the BAM will
be allocated.
If the partition size doesn’t match the above rules for a sub-directory, it will simply exist
as a "protected" area of the disk, and can’t be used as a sub-directory. Either way, it still
shows up as a "CBM" type in a directory listing. Below is a dump of a 10-sector partition
starting on track 5/1, which does not qualify as a sub-directory. . .
00: 00 00 85 05 01 53 4D 41 4C 4C 50 41 52 54 20 32
10: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 0A 00
The master BAM shows the entry for this partition on track 5. . .
00: 28 02 44 BB 43 44 C0 00 00 00 00 00 00 00 00 00
10: 23 C1 FF FF FF FF 28 FF FF FF FF FF 28 FF FF FF
20: FF FF 28 FF FF FF FF FF 1E 01 F8 FF FF FF 28 FF
^^^^^^^^^^^^^^^^^
The breakdown of the BAM shows the allocation for this track, with sectors 1-10 allocated,
as it should be.
10000000 00011111 11111111 11111111 11111111
^ ^ ^ ^ ^
0 10 20 30 39
Partitions and sub-directories share one very important trait. When created, the sub-
directory entry simply has the starting track/sector and the size of the partition in sectors.
Partitions are created linearly, meaning if one starts on 30/1 and is of size 15 sectors, then
the sector range from 1 through 15 on track 30 will be allocated. If a partition size crosses
a track boundary, the allocation will continue on the next track starting on sector 0, and
going up.
The section allocated will *not* have a track/sector chain like a file would, but rather is
dependant on the directory entry to keep it from being overwritten. You can store whatever
you want to in the allocated area.
25 29 696 $2B800
26 29 725 $2D500
27 29 754 $2F200
28 29 783 $30F00
29 29 812 $32C00
30 29 841 $34900
31 29 870 $36600
32 29 899 $38300
33 29 928 $3A000
34 29 957 $3BD00
35 29 986 $3DA00
36 29 1015 $3F700
37 29 1044 $41400
38 29 1073 $43100
39 29 1102 $44E00
40 27 1131 $46B00
41 27 1158 $48600
42 27 1185 $4A100
43 27 1212 $4BC00
44 27 1239 $4D700
45 27 1266 $4F200
46 27 1293 $50D00
47 27 1320 $52800
48 27 1347 $54300
49 27 1374 $55E00
50 27 1401 $57900
51 27 1428 $59400
52 27 1455 $5AF00
53 27 1482 $5CA00
54 25 1509 $5E500
55 25 1534 $5FE00
56 25 1559 $61700
57 25 1584 $63000
58 25 1609 $64900
59 25 1634 $66200
60 25 1659 $67B00
61 25 1684 $69400
62 25 1709 $6AD00
63 25 1734 $6C600
64 25 1759 $6DF00
65 23 1784 $6F800
66 23 1807 $70F00
67 23 1830 $72600
68 23 1853 $73D00
69 23 1876 $75400
70 23 1899 $76B00
71 23 1922 $78200
Chapter 16: The emulator file formats 331
72 23 1945 $79900
73 23 1968 $7B000
74 23 1991 $7C700
75 23 2014 $7DE00
76 23 2037 $7F500
77 23 2060 $80C00
The BAM (Block Availability Map) is on track 38. The D80 is only 77 tracks and so the
BAM is contained on 38/0 and 38/3. The BAM interleave is 3.
The directory is on track 39, with 39/0 contains the header (DOS type, disk name, disk
ID’s) and sectors 1-28 contain the directory entries. Both files and the directory use an
interleave of 1. Since the directory is only 28 sectors large (29 less one for the header),
and each sector can contain only 8 entries (32 bytes per entry), the maximum number of
directory entries is 28 * 8 = 224. The first directory sector is always 39/1. It then follows
a chain structure using a sector interleave of 1 making the links go 39/1, 39/2, 39/3 etc.
When reading a disk, you start with 39/0 (disk label/ID) which points to 38/0 (BAM0),
38/3 (BAM1), and finally to 39/1 (first dir entry sector). When writing a file to a blank
disk, it will start at 38/1 because 38/0 is already allocated.
Below is a dump of the header sector 39/0:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 26 00 43 00 00 00 73 61 6D 70 6C 65 20 64 38 30
10: A0 A0 A0 A0 A0 A0 A0 A0 65 72 A0 32 43 A0 A0 A0
20: A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Bytes Description
$00-$01 T/S pointer to first BAM sector (38/0)
$02 $43 ’C’ is for DOS format version
$03 Reserved
$04-$05 Unused
$06-$16 Disk name, padded with 0xA0 ("sample d80")
$17 0xA0
$18-$19 Disk ID bytes "er"
$1A 0xA0
$1B-$1C DOS version bytes "2C"
$1D-$20 0xA0
$21-$FF Unused
Below is a dump of the first directory sector, 39/1
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 27 02 82 26 01 54 45 53 54 A0 A0 A0 A0 A0 A0 A0
10: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
20: 00 00 82 26 02 54 45 53 54 32 A0 A0 A0 A0 A0 A0
30: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
40: 00 00 82 26 04 54 45 53 54 33 A0 A0 A0 A0 A0 A0
Chapter 16: The emulator file formats 332
50: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 05 00
60: 00 00 82 26 0B 54 45 53 54 34 A0 A0 A0 A0 A0 A0
70: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 09 00
80: 00 00 82 26 14 54 45 53 54 35 A0 A0 A0 A0 A0 A0
90: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 0C 00
A0: 00 00 82 28 00 54 45 53 54 36 A0 A0 A0 A0 A0 A0
B0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
C0: 00 00 82 28 01 54 45 53 54 37 A0 A0 A0 A0 A0 A0
D0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
E0: 00 00 82 28 02 54 45 53 54 38 A0 A0 A0 A0 A0 A0
F0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
The first two bytes of the directory sector ($27/$02) indicate the location of the next
track/sector of the directory (39/2). If the track is set to $00, then it is the last sector of
the directory.
When the directory is done, the track value will be $00. The sector link should contain a
value of $FF, meaning the whole sector is allocated, but the actual value doesn’t matter.
The drive will return all the available entries anyways. This is a breakdown of a standard
directory sector:
Bytes Description
$00-$1F First directory entry
$20-$3F Second dir entry
$40-$5F Third dir entry
$60-$7F Fourth dir entry
$80-$9F Fifth dir entry
$A0-$BF Sixth dir entry
$C0-$DF Seventh dir entry
$E0-$FF Eighth dir entry
This is a breakdown of a standard directory entry:
Bytes Description
$00-$01 Track/Sector location of next directory sector ($00 $00 if not the first
entry in the sector)
$02 File type
$03-$04 Track/sector location of first sector of file
$05-$14 16 character filename (in PETASCII, padded with $A0)
$15-$16 Track/Sector location of first side-sector block (REL file only)
$17 REL file record length (REL file only, max. value 254)
$18-$1D Unused
$1E-$1F File size in sectors, low/high byte order ($1E+$1F*256). The approx.
filesize in bytes is <= #sectors * 254
The file type field is used as follows:
Bits Description
0-3 The actual file type
4 Unused
5 Used only during SAVE-@ replacement
6 Locked flag (Set produces ">" locked files)
Chapter 16: The emulator file formats 333
Bytes Description
$00-$01 T/S pointer to second BAM sector (38/3)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x01=1)
$05 Highest+1 track covered by this BAM (0x33=51)
$06-$0A BAM for track 1. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 2
... ...
$FB-$FF BAM for track 50
Being bit-based, the BAM entries need some explanation. The first track entry in the above
BAM sector is at offset 06, "1D FF FF FF 1F". The first number is how many blocks are
free on this track ($1D=29) and the remainder is the bit representation of the usage map
for the track. These entries must be viewed in binary to make any sense. First convert the
values to binary:
FF=11111111, FF=11111111, FF=11111111, 1F=00011111
In order to make any sense from the binary notation, flip the bits around.
111111 11112222 222222
01234567 89012345 67890123 456789...
-------------------------- ---------
11111111 11111111 11111111 11111000
^ ^
sector 0 sector 28
Since we are on the first track, we have 29 sectors, and only use up to the bit 28 position.
If a bit is on (1), the sector is free. Therefore, track 1 is clean, all sectors are free. Any
leftover bits that refer to sectors that don’t exist, like bits 29-31 in the above example, are
set to allocated.
Second BAM block 38/3.
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 27 01 43 00 33 4E 1B FF FF FF 07 1B FF FF FF 07
10: 1B FF FF FF 07 19 FF FF FF 01 19 FF FF FF 01 19
20: FF FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19 FF
30: FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19 FF FF
40: FF 01 19 FF FF FF 01 19 FF FF FF 01 17 FF FF 7F
50: 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00
60: 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 17
70: FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF
80: FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Chapter 16: The emulator file formats 335
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Bytes Description
$00-$01 T/S pointer to second BAM sector (39/1)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x33=51)
$05 Highest+1 track covered by this BAM (0x43=78)
$06-$0A BAM for track 51. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 52
... ...
$88-$8C BAM for track 77
$8D-$FF Not used
6 29 145 $009100
7 29 174 $00AE00
8 29 203 $00CB00
9 29 232 $00E800
10 29 261 $010500
11 29 290 $012200
12 29 319 $013F00
13 29 348 $015C00
14 29 377 $017900
15 29 406 $019600
16 29 435 $01B300
17 29 464 $01D000
18 29 493 $01ED00
19 29 522 $020A00
20 29 551 $022700
21 29 580 $024400
22 29 609 $026100
23 29 638 $027E00
24 29 667 $029B00
25 29 696 $02B800
26 29 725 $02D500
27 29 754 $02F200
28 29 783 $030F00
29 29 812 $032C00
30 29 841 $034900
31 29 870 $036600
32 29 899 $038300
33 29 928 $03A000
34 29 957 $03BD00
35 29 986 $03DA00
36 29 1015 $03F700
37 29 1044 $041400
38 29 1073 $043100
39 29 1102 $044E00
40 27 1131 $046B00
41 27 1158 $048600
42 27 1185 $04A100
43 27 1212 $04BC00
44 27 1239 $04D700
45 27 1266 $04F200
46 27 1293 $050D00
47 27 1320 $052800
48 27 1347 $054300
49 27 1374 $055E00
50 27 1401 $057900
51 27 1428 $059400
52 27 1455 $05AF00
Chapter 16: The emulator file formats 337
53 27 1482 $05CA00
54 25 1509 $05E500
55 25 1534 $05FE00
56 25 1559 $061700
57 25 1584 $063000
58 25 1609 $064900
59 25 1634 $066200
60 25 1659 $067B00
61 25 1684 $069400
62 25 1709 $06AD00
63 25 1734 $06C600
64 25 1759 $06DF00
65 23 1784 $06F800
66 23 1807 $070F00
67 23 1830 $072600
68 23 1853 $073D00
69 23 1876 $075400
70 23 1899 $076B00
71 23 1922 $078200
72 23 1945 $079900
73 23 1968 $07B000
74 23 1991 $07C700
75 23 2014 $07DE00
76 23 2037 $07F500
77 23 2060 $080C00
78 29 2083 $082300
79 29 2112 $084000
80 29 2141 $085D00
81 29 2170 $087A00
82 29 2199 $089700
83 29 2228 $08B400
84 29 2257 $08D100
85 29 2286 $08EE00
86 29 2315 $090600
87 29 2344 $092800
88 29 2373 $094500
89 29 2402 $096200
90 29 2431 $097F00
91 29 2460 $099C00
92 29 2489 $09B900
93 29 2518 $09D600
94 29 2547 $09F300
95 29 2576 $0A1000
96 29 2605 $0A2D00
97 29 2634 $0A4A00
98 29 2663 $0A6700
99 29 2692 $0A8400
Chapter 16: The emulator file formats 338
30: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
40: 00 00 82 26 04 54 45 53 54 33 A0 A0 A0 A0 A0 A0
50: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 05 00
60: 00 00 82 26 0B 54 45 53 54 34 A0 A0 A0 A0 A0 A0
70: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 09 00
80: 00 00 82 26 14 54 45 53 54 35 A0 A0 A0 A0 A0 A0
90: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 0C 00
A0: 00 00 82 28 00 54 45 53 54 36 A0 A0 A0 A0 A0 A0
B0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
C0: 00 00 82 28 01 54 45 53 54 37 A0 A0 A0 A0 A0 A0
D0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
E0: 00 00 82 28 02 54 45 53 54 38 A0 A0 A0 A0 A0 A0
F0: A0 A0 A0 A0 A0 00 00 00 00 00 00 00 00 00 01 00
The first two bytes of the directory sector ($27/$02) indicate the location of the next
track/sector of the directory (39/2). If the track is set to $00, then it is the last sector of
the directory.
When the directory is done, the track value will be $00. The sector link should contain a
value of $FF, meaning the whole sector is allocated, but the actual value doesn’t matter.
The drive will return all the available entries anyways. This is a breakdown of a standard
directory sector:
Bytes Description
$00-$1F First directory entry
$20-$3F Second dir entry
$40-$5F Third dir entry
$60-$7F Fourth dir entry
$80-$9F Fifth dir entry
$A0-$BF Sixth dir entry
$C0-$DF Seventh dir entry
$E0-$FF Eighth dir entry
This is a breakdown of a standard directory entry:
Bytes Description
$00-$01 Track/Sector location of next directory sector ($00 $00 if not the first
entry in the sector)
$02 File type
$03-$04 Track/sector location of first sector of file
$05-$14 16 character filename (in PETASCII, padded with $A0)
$15-$16 Track/Sector location of first side-sector block (REL file only)
$17 REL file record length (REL file only, max. value 254)
$18-$1D Unused
$1E-$1F File size in sectors, low/high byte order ($1E+$1F*256). The approx.
filesize in bytes is <= #sectors * 254
The file type field is used as follows:
Bits Description
0-3 The actual file type
4 Unused
Chapter 16: The emulator file formats 341
E0: FF 07 1B FF FF FF 07 1B FF FF FF 07 1B FF FF FF
F0: 07 1B FF FF FF 07 1B FF FF FF 07 1B FF FF FF 07
Bytes Description
$00-$01 T/S pointer to second BAM sector (38/3)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x01=1)
$05 Highest+1 track covered by this BAM (0x33=51)
$06-$0A BAM for track 1. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 2
... ...
$FB-$FF BAM for track 50
Being bit-based, the BAM entries need some explanation. The first track entry in the above
BAM sector is at offset 06, "1D FF FF FF 1F". The first number is how many blocks are
free on this track ($1D=29) and the remainder is the bit representation of the usage map
for the track. These entries must be viewed in binary to make any sense. First convert the
values to binary:
FF=11111111, FF=11111111, FF=11111111, 1F=00011111
In order to make any sense from the binary notation, flip the bits around.
111111 11112222 222222
01234567 89012345 67890123 456789...
-------------------------- ---------
11111111 11111111 11111111 11111000
^ ^
sector 0 sector 28
Since we are on the first track, we have 29 sectors, and only use up to the bit 28 position.
If a bit is on (1), the sector is free. Therefore, track 1 is clean, all sectors are free. Any
leftover bits that refer to sectors that don’t exist, like bits 29-31 in the above example, are
set to allocated.
Second BAM block 38/3
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 26 06 43 00 33 65 1B FF FF FF 07 1B FF FF FF 07
10: 1B FF FF FF 07 19 FF FF FF 01 19 FF FF FF 01 19
20: FF FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19 FF
30: FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19 FF FF
40: FF 01 19 FF FF FF 01 19 FF FF FF 01 17 FF FF 7F
50: 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00
60: 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 17
70: FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF
80: FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 1D FF FF
90: FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF
A0: 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F
B0: 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D
Chapter 16: The emulator file formats 343
C0: FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF
D0: FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF
E0: FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF
F0: 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F
Bytes Description
$00-$01 T/S pointer to third BAM sector (38/6)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x33=51)
$05 Highest+1 track covered by this BAM (0x65=101)
$06-$0A BAM for track 51. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 52
... ...
$FB-$FF BAM for track 100
Third BAM block 38/6
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 26 09 43 00 65 97 1D FF FF FF 1F 1D FF FF FF 1F
10: 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D
20: FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF
30: FF FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF
40: FF 1F 1D FF FF FF 1F 1D FF FF FF 1F 1D FF FF FF
50: 1F 1D FF FF FF 1F 1B FF FF FF 07 1B FF FF FF 07
60: 1B FF FF FF 07 1B FF FF FF 07 1B FF FF FF 07 1B
70: FF FF FF 07 1B FF FF FF 07 1B FF FF FF 07 1B FF
80: FF FF 07 1B FF FF FF 07 1B FF FF FF 07 1B FF FF
90: FF 07 1B FF FF FF 07 1B FF FF FF 07 19 FF FF FF
A0: 01 19 FF FF FF 01 19 FF FF FF 01 19 FF FF FF 01
B0: 19 FF FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19
C0: FF FF FF 01 19 FF FF FF 01 19 FF FF FF 01 19 FF
D0: FF FF 01 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF
E0: 7F 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F
F0: 00 17 FF FF 7F 00 17 FF FF 7F 00 17 FF FF 7F 00
Bytes Description
$00-$01 T/S pointer to fourth BAM sector (38/9)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x65=101)
$05 Highest+1 track covered by this BAM (0x97=151)
$06-$0A BAM for track 101. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 102
... ...
$FB-$FF BAM for track 150
Fourth BAM block 38/9
Chapter 16: The emulator file formats 344
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 27 01 43 00 97 9B 17 FF FF 7F 00 17 FF FF 7F 00
10: 17 FF FF 7F 00 17 FF FF 7F 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Bytes Description
$00-$01 T/S pointer to first directory sector (39/1)
$02 DOS version byte (0x43=’C’)
$03 Reserved
$04 Lowest track covered by this BAM (0x97=151)
$05 Highest+1 track covered by this BAM (0x9B=155)
$06-$0A BAM for track 151. The first byte shows the "blocks free" for
this track, the remaining 4 show the BAM for the track.
$0B-$0F BAM for track 152
... ...
$15-$19 BAM for track 154
$1A-$FF Not used
The slight difference between the physical sectors and available blocks is due to the overhead
of the CBM filing system (BAM, directory sectors, and bad block list).
The D9090/60 hard disk is the only Commodore drive which uses a "track 0". Sector 0 of
this track contains the track and sector information for the header, directory, beginning of
the BAM, and the beginning of the bad sector list.
Below is a dump of the configuration sector (track 0, sector 0):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 00 01 00 FF 4C 0A 4C 14 01 00 49 44 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
Bytes Description
$00-$01 T/S pointer to bad blocks list
$02 Always 0x00
$03 Always 0xff (DOS version?)
$04-$05 T/S pointer to first directory entry
$06-$07 T/S pointer to header
$08-$08 T/S pointer to first BAM sector
$0A-$0B Disk ID, "ID" in this example
$0C-$FF Always 0x00
This sector is the same for both the D9090 and D9060 as the two hard drives had the same
number of cylinders. The the header and directory are placed in the middle of the disk
(track 76) to minimize access times. The on-board DOS was designed to accommodate for
different cylinder configurations so it was easy to install larger disks by only modifying the
FDC ROM. The number of sectors can not exceed 32, and the number of heads can not
exceed 7 as they would cause unhandled numeric overflow in the DOS. This variation in
configuration values makes it difficult to determine them based solely on the D90 file size.
At this point only the stock image sizes of 5,013,504, and 7,520,256 will be attachable in
VICE.
Regardless of the size, access to the drive is translated from CHS (cylinder, head, sector) to
LBA (logical block address) in the FDC. Although the drive mechanism interface is ST-506,
the AM2910 bridges the SASI communication from the FDC.
Since most hard disks of that era had some type of physical defect, and no defect manage-
ment system, a bad blocks list is included in the DOS. This list begins at track 0, sector 1
as seen from the configuration sector. Below is a dump of an empty bad blocks list (track
0, sector 1):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
...
The list begins as a typical T/S linking sector, however, it is terminated with a T/S of
$FF/$FF unlike the typical $00/$xx normally seen in other standard files. The following is
a more practical example:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
Chapter 16: The emulator file formats 346
00: 00 02 10 20 FF 02 30 40 FF 08 50 60 FF 14 70 80
...
The actual information starts at offset $02. "Bad" blocks are simply marked as "allocated"
in the BAM so the DOS doesn’t try to put any new data in them. This file is processed by
setting the "working" track to 0. Starting at the beginning (offset $02), a byte is read. If
this value is not $FF, it is interpreted as the "working" sector. The "working" track/sector
is marked as bad (used). We continue on by reading the next byte as the "working" sector
and marking it until a $FF is encountered. In the above example, track $0/$10 and $0/$20
would be marked as bad. Once the $FF is found, the next byte is the new "working" track
if it is not $FF; if it is, the list is finished. Otherwise we continue processing the list just
as we did when the "working" track was 0. In the above example, track $2/$30, $2/$40,
$8/$50, $8/$60, $14/70, and $14/$80 would be marked as bad. Note that the list in this
example would continue onto track 0, sector 2 at offset $2 as the T/S link is set. This list is
processed during a "validation" as the current BAM is erased and rebuilt. It also appears
to be processed after a format, but it is not certain if the DOS generates the list or if it was
generated in factory by a diagnostic system prior to the drives distribution.
The BAM (Block Availability Map) generally begins on track 1, sector 0, and continues on
as necessary based on the disk configuration. Below is a dump of that first BAM sector
with a configuration of 32 sectors per head, and 6 heads:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 09 00 FF FF 00 08 00 00 00 00 00 00 00 00 00 00
10: 1E FC FF FF FF 20 FF FF FF FF 20 FF FF FF FF 20
20: FF FF FF FF 20 FF FF FF FF 20 FF FF FF FF 1F FE
30: FF FF FF 20 FF FF FF FF 20 FF FF FF FF 20 FF FF
...
F0: FF 20 FF FF FF FF 20 FF FF FF FF 20 FF FF FF FF
Bytes Description
$00-$01 T/S pointer to next BAM sector ($9/$0)
$02-$03 T/S pointer to previous BAM sector ($FF/$FF)
$04 Lowest track covered by this BAM ($0)
$05 Highest+1 track covered by this BAM ($8)
$06 Possible start of bitmap data
$10-$14 (first entry based BAM for track 0, head 0. The first byte shows the "blocks
on this example) free" for this head, the remaining 4 show the BAM for this
track and head.
$24-$08 BAM for track 0, head 1.
... ...
$2E-$32 BAM for track 1, head 0.
... ...
$FB-$FF BAM for track 7, head 5.
If the T/S pointer is $FF/$FF, it means the end of the BAM. So in this case, there is
no previous BAM sector, whereas in the last BAM sector, bytes $01-$02 will be $FF/$FF
indicating that there is no next BAM sector.
Bytes $4 and $5 show the range of which tracks this BAM sector applies to. There are
250 bytes to hold this information. The size of each bitmap entry is calculated by "ceil-
Chapter 16: The emulator file formats 347
ing(sectors per head/8)+1"; the "1" is to include the block count. This value is then mul-
tipled by the head number and divided into 250. The remainder is added to 6 (the offset
for the start of bitmap data). For this example, the bitmap entry size would be "ceil-
ing(32/8)+1" which is 5 bytes. The offset is "(250%(5*6))+6" which is 16 or $10. The goal
of this calculation is to place the maximum number of whole tracks inside each BAM. In
this case, "int(250/(5*6))" is 8, so we can store 8 tracks per BAM sector. Therefore the
lowest track is 0, and the highest is 0 + 8. The next BAM sector will handle tracks 8 to 15
(16 - 1). The position of the BAMs will start at track 1, and the second will be at track
9 (8 + 1), the third will be at track 17 (2 * 8 + 1), and so on. For this example with 153
tracks, we will need at least 20 (153 divided by 8) BAM sectors. BAM sectors are always
placed on sector 0. The header and directory will never start on sector 0, so we don’t have
to worry if one of the BAM sectors will end up on track 76 for example.
Being bit-based, the BAM entries need some explanation. The first track (track 0) entry in
the above BAM sector is at offset $10, "1E FC FF FF FF". The first number is how many
blocks are free on this track and head ($1E=30) and the remainder is the bit representation
of the usage map for the track. These entries must be viewed in binary to make any sense.
First convert the values to binary:
FC=11111100, FF=11111111, FF=11111111, FF=11111111
In order to make any sense from the binary notation, flip the bits around.
111111 11112222 22222233
01234567 89012345 67890123 45678901
-------------------------- ---------
00111111 11111111 11111111 11111111
^ ^
sector 0 sector 31
If a bit is on (1), the sector is free. We can see all but sectors 0 and 1 are free here as it
holds the configuration sector, and one sector for the bad block list respectively.
At offset $24, "1F FE FF FF FF" describes the allocation at track 1, sector 0. The first
value is the number of free blocks ($1F=31) and the next 4 indicate which sectors are used
(or available); in this case sector 0 is allocated as it is used by the first BAM sector.
Below is the dump of the last BAM sector (track 152, sector 0):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: FF FF 91 00 98 99 00 00 00 00 00 00 00 00 00 00
10: 1F FE FF FF FF 20 FF FF FF FF 20 FF FF FF FF 20
20: FF FF FF FF 20 FF FF FF FF 20 FF FF FF FF 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
Here we can see it only covers tracks 152 ($98) to 152 ($99-1). So only 6 entries are valid,
and the rest are all zeros. The next T/S pointer is $FF/$FF indicating this is the last BAM
sector.
When the blocks free is calculated, only track 0 is excluded. Other Commodore drives
exclude the dedicated directory track.
The directory is generally on track 76 (152 divided by 2), with sector 20 containing the
header (disk name, disk ID’s). The directory entries begin at sector 10. The drives interleave
Chapter 16: The emulator file formats 348
is 10 sectors and it appears the directory entry is allocated before the header on a format.
Once the directory grows, the interleave becomes 3, as on most Commodore drives. Unlike
most Commodore drives, the directory is not limited to track 76, nor is file data limited
to be else where. Once track 76 is filled with directory entries, it will look in other tracks
to place more entries. Filling the disk to capacity will also place data into track 76. Be
warned though as the directory listing can exceed the amount of memory available on the
Commodore machine which is "loading" the directory. It is wise to use a DOS wedge which
displays the directory as it is being read but doesn’t store it in memory.
The D9090/60 emulation in VICE was tested to see how many one block files could be
created on a D9090 image. The disk was filled with 25922 files which required 3241 blocks
for the directory entries.
Below is a dump of the header at track 76, sector 20:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------
00: 4C 0A 00 00 00 00 54 45 53 54 A0 A0 A0 A0 A0 A0
10: A0 A0 A0 A0 A0 A0 A0 A0 49 44 A0 33 41 A0 A0 A0
20: A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
This is very similar to the D80/D82 header in placement but without the DOS version
value. Also note that the dos version bytes are "3A". For the D90, it is believed that the
$FF at offset $3 in the configuration sector dictates the DOS version.
The directory entry generally starts at track 76, sector 10. It has the identical layout as
all other Commodore drives. There are no files specific to the D90 image other than super
side sectors for larger REL files.
X will increase by 128, and it will try again. It will do this until it finds the signature, or
until it gets a read error from the HD signaling the end of disk space. The device will the
switch to installation mode.
The following is an example configuration block of a 40 MB drive:
X * 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
$200 + ----------------------------------------------- ----------------
000400: 94 6C 00 0E 7D E7 00 00 00 00 00 00 00 00 00 00
000410: 20 20 20 20 31 2E 39 32 30 33 2F 32 32 2F 39 36 ....1.9203/22/96
000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000440: 03 02 00 7E C9 55 00 00 00 00 00 00 00 00 00 00
000450: 20 20 20 20 32 2E 30 30 30 33 2F 32 32 2F 39 36 ....2.0003/22/96
000460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
000500: 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000510: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000530: FF FF FF FF FF FF FF FF 00 01 FF FF FF FF FF FF
000540: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000570: 00 41 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000580: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0005A0: FF FF FF FF FF FF FF FF 00 9C FF FF FF FF FF FF
0005B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0005E0: 00 0C 01 01 0C 80 01 00 00 00 00 00 00 00 00 00
0005F0: 43 4D 44 20 48 44 20 20 8D 03 88 8E 02 88 EA 60 CMD HD..........
...
000E00: < start of first OS, n=0, CMD DOS, see $402-$403 >
007E00: < start of second OS, n=1, GEOS overlay, see $442-$443 >
010000: < start of partition table, see $5E6-$5E7 >
The first 256 bytes of the configuration block appear to be a list of loadable operating
systems for the drive. Each entry, "n", uses 64 bytes, so there can be at most 4. The
first is the standard CMD DOS, while the second is an overlay for GEOS. The boot ROM
explicitly loads the first (n=0).
The CMD DOS supports up to 56 connected HDs: 7 devices with 8 logical units (LUNs)
each. For that era, most HDs only supported a single LUN (0), whereas more exotic array
devices would allow for multiple LUNs. The relative location of the disk, "d", in the whole
drive map, is stored in the next 224 bytes. For example, the first disk would start at
location 0. The next disk following the first, would start at LBA $01419C (the size of the
first disk plus its starting point in the map). The 24-bit values used here for the placement
are adequate since a fully populated CMD HD can only access 255 16 MB partitions, which
his just under 4 GiB.
The last portion of the configuration block holds the device parameters (device number,
partition location, default partition) as well as the CMD HD signature.
Bytes Description
(X*$200)+($400-$4FF) Operating System Table
(X*$200+$400+n*$40)+$00 Destination memory page
Chapter 16: The emulator file formats 350
Bytes Description
$00-$01 Track/Sector location of next partition sector ($00 $00 if not the first
entry in the sector)
$02 Partition type: 0x00=none, 0x01=native, 0x02=1541, 0x03=1571,
0x04=1581, 0x05=1581CPM, 0x06=Print Queue, 0x07=Foreign,
0xFF=System. Only partition 0 can be a system type, and type 6
isn’t known to be implemented on any CMD DOS.
$03-$04 0x00 0x00
$05-$14 16 character partition name (in PETASCII, padded with $A0)
$15-$17 Location of the partition data offset from X in sectors (256 bytes);
MSB format; partition 0, the system partition always starts a 0.
$18-$1D All 0x00
$1E-$1F Size of partition (in blocks) in MSB format. Partition 0, the system
partition is always 0x90 blocks, which includes blocks from X to the
end of the partition table.
When a partition is deleted, its entry is removed and all others stay in their existing place.
The partition data following the deleted partition is moved back to fill in the gap from the
deletion; this can be very time consuming. So, when deleting a partition, it is suggested to
start with the one with the highest start LBA.
The data at the starting LBA is simply the associated disk image of the partition type. It
follows the formats (D64, D71, and D81) documented previously.
which are the same, they *cannot* co-exist in the same directory. If we have two files which
do convert down to be the same DOS filename, the extension is incremented until an unused
one is found (x01, x02, x03, up to x99). We can have up to 99 different C64 files with the
same corresponding DOS names as that’s all the extension will hold (from P00 to P99).
Each PC64 file only has one entry, there are no multi-file containers allowed. This could
result in a large number of these files in a directory, even for only a few programs, as each
C64 file will result in a PC64 file entry. The best use for a PC64 file is a single-file program,
one which does not load anything else.
$0010-$0013 - File header length (in high/low format, counting from offset $0000).
Chapter 16: The emulator file formats 353
The default (and also the minimum) value is $40, which should always
be used for compatibility reasons. Some cartridge images exist which
use a value of $00000020, which is wrong.
$0016-$0017 - Cartridge hardware type ($0000, high/low) - see below for details
exrom / game
0 0 - 16k Game
0 1 - 8k Game
1 0 - ultimax
1 1 - ram/off
Emulators should only use this field with "generic" C64 cartridges
(type 0), for all others the startup mode is implied by the type
of the cartridge. It should still be filled correctly in the crt
file, but a lot of files with wrong values exist "in the wild".
$0040- xxxx - Cartridge contents (called CHIP PACKETS, as there can be more than
one per CRT file). See below for a breakdown of the CHIP format.
0040: 03 A5 49 9D 60 03 A5 48 18 69 28 85 48 A5 49 69 ..I.‘..H.i(.H.Ii
0050: 00 85 49 E8 E0 18 D0 E4 60 A6 03 A4 02 BD 40 03 ..I.....‘.....@.
...
$0000-$0003 - Contained ROM signature "CHIP" (note there can be more than one
CHIP image in a .CRT file)
0 - ROM
1 - RAM
2 - Flash ROM
3 - EEPROM
Number of the bank this CHIP package appears in. This should be
a logical bank number, not the value stored into some banking
register which might have its bit-order rearranged.
The load address tells the loader which part of the given bank
is to be used for this chunk. It is only really important in
formats where actually more than one CHIP chunk exists for each
bank - most notable the "generic" (type 0) cartridges.
$000E-$000F - ROM image size in bytes (high/low format, typically $2000 or $4000)
54 Kingsoft
55 Silverrock 128K Cartridge
56 Formel 64
57 RGCD (Subtype 1: Hucky)
58 RR-Net MK3
59 EasyCalc
60 GMod2
61 MAX Basic
62 GMod3
63 ZIPP-CODE 48
64 Blackbox V8
65 Blackbox V3
66 Blackbox V4
67 REX RAM-Floppy
68 BIS-Plus
69 SD-BOX
70 MultiMAX
71 Blackbox V9
72 Lt. Kernal Host Adaptor
73 RAMLink
74 H.E.R.O.
75 IEEE Flash! 64
76 Turtle Graphics II
77 Freeze Frame MK2
78 Partner 64
79 Hyper-BASIC
(*Note: Ocean type 1 includes Navy Seals, Robocop 2 & 3, Shadow of the Beast, Toki,
Terminator 2 and more)
(**Note: Dinamic includes Narco Police and more)
8000-9FFF RAM RAM RAM RAM RAM ROML RAM ROML ROML(*)
4000-7FFF RAM RAM RAM RAM RAM RAM RAM RAM -
1000-3FFF RAM RAM RAM RAM RAM RAM RAM RAM -
0000-0FFF RAM RAM RAM RAM RAM RAM RAM RAM RAM
(*) Internal memory does not respond to write accesses in these areas
From the above chart, the following table can be built. It shows standard cartridges, either
8KiB or 16KiB in size, and the memory ranges they load into.
Type Size Game EXRom Low Bank High Bank
in K Line Line (ROML) (ROMH)
-------------------------------------------------
Normal 8KiB hi lo $8000 ----
Normal 16KiB lo lo $8000 $A000
Ultimax 8KiB lo hi $E000 ----
The ROMH and ROML lines are CPU-controlled status lines, used to bank in/out RAM,
ROM or I/O, depending on what is needed at the time.
generic 8K GAME cartridge
Size 8KiB
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 00 00 01 00 00 00 00 00 00 ...@............
0020: 41 54 54 41 43 4B 20 4F 46 20 54 48 45 20 4D 55 ATTACK OF THE MU
0030: 54 41 4E 54 20 43 41 4D 45 4C 53 00 00 00 00 00 TANT CAMELS.....
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: D3 9B BC FE C3 C2 CD 38 30 EA EA EA A9 01 85 13 .......80.......
generic 16K GAME cartridge
This sample is a dump of "Adventure Creator", a 16KiB standard cartridge.
Size 16KiB
EXROM active (lo) (0)
GAME active (lo) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 ...@............
0020: 41 64 76 65 6E 74 75 72 65 20 43 72 65 61 74 6F Adventure Creato
0030: 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r...............
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 09 80 81 EA C3 C2 CD 38 30 A2 00 78 D8 8E 11 D0 .......80..x....
ULTIMAX cartridge
Chapter 16: The emulator file formats 358
Ultimax cartridges typically are situated in the $E000-FFFF (8KiB) ROM address range.
There are some cartridges which only use 4KiB of the 8KiB allocation. If the cartridge is
16KiB in size, then it will reside in both $8000-9FFF and $E000-FFFF.
This sample below is a dump of "Music Machine", a 4KiB ULTIMAX mode cartridge. It
is still identified as a "generic cartridge" according to the ID.
Size 4KiB (ULTIMAX mode)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $F000-F7FF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 00 01 00 00 00 00 00 00 00 ...@............
0020: 4D 55 53 49 43 20 4D 41 43 48 49 4E 45 00 00 00 MUSIC MACHINE...
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 10 10 00 00 00 00 F0 00 10 00 CHIP............
0050: 3C 66 C3 C3 66 3C FF FF 18 3C 66 7E 66 66 66 00 <f..f<...<f~fff.
The CRT file contains two CHIP blocks of length $2000 each, the first block having a start
address of $8000, the second block $A000. In the cartridge header, EXROM ($18) is set to
0, GAME ($19) is set to 1 to indicate the RESET/power-up configuration of 8 KiB ROM.
Bank switching is done by writing to $DE00. The lower six bits give the bank number
(ranging from 0-63). Bit 7 in this selection word is always set.
The Super Games cartridge uses 4 16KiB banks ($8000-$BFFF) of ROM memory. Bank
selecting is done by writing to $DF00.
$DF00 register is as follows:
bit meaning
--- -------
0 bank bit 0
1 bank bit 1
2 mode (0 = EXROM/GAME (bridged on the same wire - 16KiB config)
1 = cartridge disabled)
3 write-protect-latch (1 = no more changes are possible until
the next hardware-reset )
4-7 unused
2060: 4C 5F E4 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D L_....‘...‘...‘.
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 E0 00 20 00 CHIP.. ....... .
4070: 4D 46 32 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF2...‘...‘...‘.
...
6070: 43 48 49 50 00 00 20 10 00 00 00 03 E0 00 20 00 CHIP.. ....... .
6080: 4D 46 33 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF3...‘...‘...‘.
...
8080: 43 48 49 50 00 00 20 10 00 00 00 04 E0 00 20 00 CHIP.. ....... .
8090: 4D 46 34 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF4...‘...‘...‘.
...
A090: 43 48 49 50 00 00 20 10 00 00 00 05 E0 00 20 00 CHIP.. ....... .
A0A0: 4D 46 35 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF5...‘...‘...‘.
...
C0A0: 43 48 49 50 00 00 20 10 00 00 00 06 E0 00 20 00 CHIP.. ....... .
C0B0: 4D 46 36 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF6...‘...‘...‘.
...
E0B0: 43 48 49 50 00 00 20 10 00 00 00 07 E0 00 20 00 CHIP.. ....... .
E0C0: 4D 46 37 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF7...‘...‘...‘.
16.14.3.18 17 - Dinamic
Size 128KiB (16 banks of 8KiB each)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-9FFF (all modules)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
00000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
00010: 00 00 00 40 01 00 00 11 00 01 00 00 00 00 00 00 ...@............
00020: 4E 61 72 63 6F 20 50 6F 6C 69 63 65 00 00 00 00 Narco Police....
00030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Chapter 16: The emulator file formats 369
16.14.3.22 21 - Comal-80
Size 64KiB (4 banks of 16KiB each)
EXROM active (low) (0)
GAME active (low) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 15 00 00 00 00 00 00 00 00 ...@............
0020: 43 6F 6D 61 6C 20 38 30 00 00 00 00 00 00 00 00 Comal 80........
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 87 87 70 CF C3 C2 CD 38 30 4C AA CF 4C 70 CF 4C ..p....80L..Lp.L
Chapter 16: The emulator file formats 372
...
4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP..@.......@.
4060: AA CF 70 CF C3 C2 CD 38 30 01 29 01 28 01 2C 04 ..p....80.).(.,.
...
8060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP..@.......@.
8070: AA CF 70 CF C3 C2 CD 38 30 91 92 92 92 92 92 92 ..p....80.......
...
C070: 43 48 49 50 00 00 40 10 00 00 00 03 80 00 40 00 CHIP..@.......@.
C080: 7B C8 7E C8 C3 C2 CD 38 30 43 4F 4D 41 4C 80 93 {.~....80COMAL..
The Comal-80 Cartridge uses 16KiB banks ($4000) at $8000-$BFFF. There are 4 banks
of ROM memory and the cart has 1 (write-only) bank control register which is located at
$DE00 and mirrored throughout the $DE00-$DEFF range.
bit meaning
--- -------
7 exrom?
6 game?
5 unknown function (used by the software to disable the cartridge)
4 unused?
3 unused?
2 unknown function (used by the software however)
0-1 selects bank
16.14.3.24 23 - Ross
Size 16KiB or 32KiB sizes (1 or 2 banks of 16KiB each)
EXROM active (lo) (0)
GAME active (lo) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 17 00 00 00 00 00 00 00 00 ...@............
0020: 52 6F 73 73 20 31 34 00 00 00 00 00 00 00 00 00 Ross 14.........
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 09 80 09 80 C3 C2 CD 38 30 A2 00 BD 20 80 4D 0E .......80... .M.
...
4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP..@.......@.
4060: 3F 5A 4D 4D 50 4D 8D 25 3F 1A 1F 77 3F CD E0 3F ?ZMMPM.%?..w?..?
Any read access to $DE00 will switch in bank 1 (if cart is 32KiB). Any read access to $DF00
will switch off EXROM and GAME.
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
2060: 09 80 F2 8F C3 C2 CD 38 30 A2 C8 8E 16 D0 20 A3 .......80..... .
...
4060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP..@.......@.
4070: 09 80 09 80 C3 C2 CD 38 30 58 D8 20 84 FF 20 8A .......80X. .. .
This is an eprom cartridge. It has 9 eprom sockets, of which the first holds the base eprom
with the base menu which is an 8KiB eprom, the other eprom sockets can handle 8KiB,
16KiB or 32KiB eproms, of which 8KiB can be banked into the $8000-9FFF area.
The bank selecting is done by writing to $DFA0. Bits 2, 1 and 0 determine which socket is
used and bits 5 and 4 are used to select an 8KiB piece of the eprom.
The possible values for bits 5 and 4 for the (extra) eprom banks are:
8KiB : 3, 2, 1, 0
16KiB bank 0 : 2, 0
16KiB bank 1 : 3, 1
32KiB bank 0 : 0
32KiB bank 1 : 1
32KiB bank 2 : 2
32KiB bank 3 : 3
Reading from $DFC0 switches off the EXROM. Reading from $DFE0 switches on the
EXROM.
2 Freeze-end bit (disables the register and hides any rom bank)
3 Controls the Exrom line (1 sets EXROM low, 0 sets EXROM high)
4 Eprom banking bit 1 (bank address 14)
5-7 Unused
The first page of the currently banked ROM block can be read in the I/O-2 range.
16.14.3.32 31 - Stardos
Size 16KiB (2 banks of 8KiB)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $8000-$9FFF (bank 0), $E000-$FFFF (bank 1)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 1F 01 00 00 00 00 00 00 00 ...@............
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: F9 80 B6 80 C3 C2 CD 38 30 FD 80 89 80 4C 0C 88 .......80....L..
...
2050: 43 48 49 50 00 00 20 10 00 00 00 00 E0 00 20 00 CHIP.. ....... .
2060: 85 56 20 0F BC A5 61 C9 88 90 03 20 D4 BA 20 CC .V ...a.... .. .
This cart has 16KiB of ROM, of which the first 8KiB is mapped in at $8000-$9FFF and
the second 8KiB is used as a kernel replacement. The kernel replacement is achieved by a
clip that needs to be installed inside the C64.
Reading from I/O-1 causes a capacitor to get charged with every read, once the capacitor
is charged enough it switches the cart on.
Reading from I/O-2 causes a different capacitor to get charged with every read, once the
capacitor is charged enough it switched the cart off.
16.14.3.33 32 - EasyFlash
Size 1024KiB (64 banks of 2 * 8KiB)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $8000-$9FFF (ROML), $A000-$BFFF or $E000-$FFFF
(ROMH)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 20 01 00 00 00 00 00 00 00 ...@... ........
0020: 45 61 73 79 46 6C 61 73 68 20 43 61 72 74 72 69 EasyFlash Cartri
0030: 64 67 65 00 00 00 00 00 00 00 00 00 00 00 00 00 dge.............
0040: 43 48 49 50 00 00 20 10 00 02 00 01 80 00 20 00 CHIP.. ....... .
0050: 00 85 5E FE C3 C2 CD 38 30 93 0D 2B 2B 2B 20 45 ..^....80..+++ E
EasyFlash is a 1 MiB Flash EPROM card with multiple configurations and banks possible,
it also has 256 bytes of RAM which is mapped into the I/O-2 range.
Chapter 16: The emulator file formats 379
There are two control registers, one at $DE00 and one at $DE02.
The register at $DE00 controls which bank is mapped into ROMH and ROML.
The register at $DE02 does the following:
bit meaning
--- -------
7 LED control
6-3 Unused
2 Mode (0/1)
1 Exrom line control
0 Game line control
16.14.3.35 34 - Capture
Size 8KiB (1 bank of 8KiB)
EXROM inactive (hi) (1)
GAME inactive (hi) (1)
Load address $E000-$FFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 22 00 00 00 00 00 00 00 00 ...@..."........
0020: 4D 61 67 69 63 20 46 6F 72 6D 65 6C 00 00 00 00 Magic Formel....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 01 E0 00 20 00 CHIP.. ....... .
0050: 00 0A 0D 8A B4 A1 20 80 00 0A 82 8A 8D 20 9E 20 ...... ...... .
This cart has 8KiB of ROM which is mapped to $E000, and 8KiB of RAM which is mapped
to $6000. The cartridge is disabled after a reset.
When the freeze button is pressed the following happens:
• an NMI is generated
• as soon as the current adress is in bank 0xfe the cart switches to ultimax mode. The
cart ROM then contains one page full of "jmp $eaea", which ultimately calls the freezer
code.
• the $FFF7/$FFF8 "register" logic is enabled and any access (read or write) to $FFF7
will turn the cart enabled off (leave ultimax mode), and an access to $FFF8 will turn
the cart back on (enter ultimax mode). the "register logic" that causes this can only
be disabled again by a hardware reset.
Chapter 16: The emulator file formats 380
The register at $DE00 is reset to $00 on a hard reset if not in flash mode. If in flash mode,
it is set to $02 in order to prevent the computer from starting the normal cartridge. Flash
mode is selected with a jumper.
Register at $DE00:
bit meaning
--- -------
0 Controls the GAME line: A 1 asserts the line, a 0 will deassert
it.
1 Controls the EXROM line: A 0 will assert it, a 1 will deassert
it.
2 Writing a 1 will disable further write accesses to all registers
of the Retro Replay, and set the memory map of the C64 to
standard, as if there is no cartridge installed at all.
3 Controls bank-address 13 for ROM and RAM banking.
4 Controls bank-address 14 for ROM and RAM banking.
5 Switches between ROM and RAM: 0=ROM, 1=RAM
6 Must be written once to "1" after a successful freeze in order to
set the correct memory map and enable bits 0 and 1 of this
register. Otherwise no effect.
7 Controls bank-address 15 for ROM banking.
The register at $DE01 is the extended control register. If not in Flash mode, bits 1, 2 and
6 can only be written once. If in Flash mode, the REUcomp bit cannot be set, but the
register will not be disabled by the first write. Bit 5 is always set to 0 if not in Flash mode.
Register at $DE01:
bit meaning
--- -------
0 Enable clockport connector.
1 AllowBank (1 allows banking of RAM in $DF00/$DE02 area)
2 NoFreeze (1 disables Freeze function)
3 Bank-address 13 for RAM and ROM (mirror of $DE00)
4 Bank-address 14 for RAM and ROM (mirror of $DE00)
5 Bank-address 16 for ROM (only in flash mode)
6 REU compatibility bit. 0=standard memory map, 1 = REU compatible
memory map
7 Bank-address 15 for ROM (mirror of $DE00)
Reading from the registers at either $DE00 or $DE01 will return the content of the status
register.
Status register:
bit meaning
--- -------
0 1=Flashmode active (jumper set)
1 feedback of AllowBank bit
2 1=Freeze button pressed
3 feedback of banking bit 13
4 feedback of banking bit 14
Chapter 16: The emulator file formats 382
16.14.3.38 37 - MMC64
Size 8KiB (1 bank of 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 25 00 01 00 00 00 00 00 00 ...@...%........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 02 00 00 80 00 20 00 CHIP.. ....... .
0050: 09 80 64 97 C3 C2 CD 38 30 78 D8 A2 FF 9A 20 D4 ..d....80x.... .
The clockport registers of this cart can be switched to either $DE01-$DE0F or $DF21-
$DF2F. The control registers are available at $DF10-$DF13.
The register at $DE01 / $DF21 is write only:
bit meaning
Chapter 16: The emulator file formats 383
--- -------
7-1 Unused
0 0 = disable clock port, 1 = enable clockport
The registers at $DE02-$DE0F / $DF22-$DF2F are for the clock port and are read/write.
The register at $DF10 is the MMC64 SPI transfer register, a byte written to this registers
is sent to the card & response from the card is read here.
The register at $DF11 is the MMC64 control register:
bit meaning
--- -------
0 0 = MMC64 BIOS active, 1 = external ROM active
1 0 = card selected, 1 = card not selected
2 0 = 250khz transfer, 1 = 8mhz transfer
3 0 = clock port @ $DE00, 1 = clock port @ $DF20
4 0 = normal Operation, 1 = flash mode (*)
5 0 = allow external rom when BIOS is disabled,
1 = disable external ROM
6 0 = SPI write trigger mode, 1 = SPI read trigger mode
7 0 = MMC64 is active, 1 = MMC64 is completely disabled (**)
(*) bit can only be programmed when flash jumper is set (**) bit can only be modified after
unlocking
The register at $DF12 is the MMC64 status register, which is read-only:
bit meaning
--- -------
0 0 = SPI ready, 1 = SPI busy
1 external GAME line
2 external EXROM line
3 0 = card inserted, 1 = no card inserted
4 0 = card write enabled, 1 = card write disabled
5 0 = flash jumper not set, 1 = flash jumper set
6-7 unused
The register at $DF13 is the MMC64 identification register, which when reading from it
can have the following values:
$64 when bit 1 of $DF11 is 0. $01 when bit 1 of $DF11 is 1 and REV A hardware is used.
$02 when bit 1 of $DF11 is 1 and REV B hardware is used.
when writing to it it can be used to unlock bit 7 of $DF11 or to re-enable the cart:
Write $55 & $AA into this register to unlock bit 7 of $DF11. Write $0A & $1C into this
register to re-enable MMC64 hardware.
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 26 00 00 00 00 00 00 00 00 ...@...&........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 02 00 00 80 00 20 00 CHIP.. ....... .
0050: 1A 80 6E 9E C3 C2 CD 38 30 4D 4D 43 52 45 50 4C ..n....80MMCREPL
The cart uses the following registers:
$DE00 - RR control register write
bit meaning
--- -------
0 GAME line
1 EXROM line
2 1 = disable RR, bit can be reset by setting bit 6 of $DF12
3 bank address 13
4 bank address 14
5 0 = rom enable, 1 = ram enable
6 1 = exit freeze mode
7 bank address 15
$DE01 - extended RR control register write
bit meaning
--- -------
0 0 = disable clockport, 1 = enable clockport
1 0 = disable I/O RAM banking, 1 = enable I/O RAM banking
2 0 = enable freeze, 1 = disable freeze
3 bank address 13 (mirror of $DE00)
4 bank address 14 (mirror of $DE00)
5 0 = enable MMC registers, 1 = disable MMC registers. Can only be
written when bit 6 of $DF12 is 1. Register becomes effective when
bit 0 of $DF11 is 1.
6 0 = RAM/ROM at $DFxx, 1 = RAM/ROM at $DExx
7 bank address 15 (mirror of $DE00)
$DE02-$DE0F - Clockport memory area (when enabled)
$DF10 - MMC SPI transfer register, a byte written is sent to the card & response from the
card is read here.
$DF11 - MMC control register
bit meaning
--- -------
0 0 = MMC BIOS enabled, 1 = MMC BIOS disabled. Enabling MMC BIOS
sets ROM banking to the last 64KiB bank.
1 0 = card selected, 1 = card not selected. This bit also controls
the green activity LED.
2 0 = 250khz transfer, 1 = 8mhz transfer
3 ALWAYS 0
4 ALWAYS 0
Chapter 16: The emulator file formats 385
5 (in RR-Mode:)
0 = allow RR rom when MMC BIOS disabled , 1 = disable RR ROM
(in mmcreplay bios mode:)
RAM banking (0 = $E000 - $FFFF, 1 = $8000 - $9FFF)
(in 16KiB mode:)
enable RAM at $A000 - $BFFF
6 0 = SPI write trigger mode, 1 = SPI read trigger mode
7 ALWAYS 0
$DF12 - MMC status register
bit meaning
--- -------
0 0 = SPI ready, 1 = SPI busy (read)
1 = forbid ROM write accesses (write). Setting
this bit will disable writes to ROM until next
reset
1 feedback of $DE00 bit 0 (GAME)
2 feedback of $DE00 bit 1 (EXROM)
3 0 = card inserted, 1 = no card inserted
4 0 = card write enabled, 1 = card write disabled
5 EEPROM DATA line / DDR register. Setting DATA to "1" enables
reading data bit from EEPROM at this position.
6 0 = RR compatibility mode, 1 = Extended mode
Selecting RR compatibility mode limits RAM to 32KiB and disables
writes to extended banking register. Selecting Extended mode
enables full RAM banking and enables Nordic Power mode in RR mode.
7 EEPROM CLK line
$DF13 - Extended banking register Can only be read/written to when bit 6 of $DF12 is 1
bit meaning
--- -------
0 bank address 16
1 bank address 17
2 bank address 18
3 ALWAYS 0
4 ALWAYS 0
5 16KiB rom mapping
6 1 = enable RR register. Disabling RR register disables ALL
ROM/RAM banking too.
7 ALWAYS 0
NOTE THAT THE MMC REPLAY EMULATION IS CURRENTLY INCOMPLETE AND
CONSIDERED BROKEN.
16.14.3.40 39 - IDE64
Size 64KiB or 128KiB (4 or 8 banks of 16KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Chapter 16: The emulator file formats 386
2060: 13 80 BC FE C3 C2 CD 38 30 08 48 A9 02 8D 00 DF .......80.H.....
This cart has 32KiB of ROM and 8KiB of RAM, it uses I/O-1 as a mirror of the last page
of cart RAM. It has the following registers in the I/O-2 range:
ROM config register at $DF00 (can only be written to):
bit meaning
--- -------
0 ?
1 ? (write 1 to release freeze mode)
2 ROM bank select
3 write 1 to disable cartridge
4-6 unused
7 ?
Note: if bit0, bit1, bit7 are all 0, then ultimax mapping is selected and RAM is enabled at
ROML, otherwise if bit 0 is 0, then 16KiB mapping is enabled, or if bit 0 is 1, then 8KiB
mapping is enabled.
RAM config register at $DF01 (read/write):
If written value == last value - 1, then ultimax mapping is selected and RAM is enabled
at ROML, if written value == last value + 1, then ROM is enabled at ROML and exrom
is deasserted (switch to either 8KiB or 16KiB mapping)
$DF02-$DFFF holds the last page of the first 8KiB of the current bank.
16.14.3.42 41 - IEEE-488
Size 4KiB (1 bank of 4KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-$8FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 29 00 01 00 00 00 00 00 00 ...@...)........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 10 10 00 00 00 00 80 00 10 00 CHIP............
0050: 09 80 7A 80 C3 C2 CD 38 30 8E 16 D0 20 84 FF 20 ..z....80... ..
The cart uses a TPI for the IEEE488 interface/communication in the I/O-2 range:
$DF00 - Port A Data
$DF01 - Port B Data
$DF02 - Port C Data
$DF03 - Port A Direction
$DF04 - Port B Direction
$DF05 - Port C Direction
$DF06 - Control register
$DF07 - Active Interrupt register
Chapter 16: The emulator file formats 388
16.14.3.44 43 - Prophet64
Size 256KiB (32 banks of 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 2B 00 01 00 00 00 00 00 00 ...@...+........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 09 80 09 80 C3 C2 CD 38 30 78 A0 00 84 F8 84 FA .......80x......
The control register is the I/O-2 range:
bit meaning
--- -------
7-6 unused
5 disable cart
4-0 bank select
16.14.3.45 44 - EXOS
Size 8KiB (1 bank of 8KiB)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $E000-$FFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
Chapter 16: The emulator file formats 389
When the cart starts, the first half of the active ROM is banked to ROML ($8000-$9fff).
When reading from the I/O-1 range the second half of the active ROM bank is enabled in
RMH ($A000-$BFFF). When reading from the I/O-2 range the cart is disabled.
The 32k variant swaps the 16k bank with a second one when a reset happens.
When a freeze happens the first half of the ROM is mapped to ROML ($8000-$9FFF) and
the second half to ROMH ($E000-$FFFF).
16.14.3.48 47 - Snapshot 64
Size 4KiB (1 bank of 4KiB)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $E000-$EFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 2F 01 00 00 00 00 00 00 00 ...@.../........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 10 10 00 00 00 00 E0 00 10 00 CHIP............
0050: 78 D8 48 8A 48 98 48 AC 0D DD 10 03 4C EE F2 AD x.H.H.H.....L...
Warning, the following information is based on guess-work and might be incorrect, any
further information and/or corrections are appreciated.
The cart has a control bit (bit 0) in the I/O-2 range which is used to disable or enable the
cart.
The cart has 16KiB of ROM which are used as two banks of 8KiB, they are mapped into
$8000-$9FFF and the last page of the current ROM bank is mirrored in $DF00-$DFFF.
The cart has a control bit (bit 7) at $DF00, which is used to select what ROM bank is used.
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 32 00 01 00 00 00 00 00 00 ...@...2........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: EA EA 68 AA 68 85 94 68 85 95 68 85 96 68 85 97 ..h.h..h..h..h..
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
2060: 30 80 5E FE C3 C2 CD 38 30 20 04 90 4C 38 DF 1A 0.^....80 ..L8..
Warning, the following information is based on guess-work and might be incorrect, any
further information and/or corrections are appreciated.
I/O-1 is somehow used to enable the cart, the exact way in which this is done is unknown.
Reading from the I/O-2 range will give you the last page of the current ROM bank, and
writing to it will disable the cart.
16.14.3.52 51 - MACH 5
Size 4KiB or 8KiB (1 bank of 4KiB or 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-$8FFF (4KiB), $8000-$9FFF (8KiB)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 33 00 01 00 00 00 00 00 00 ...@...3........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: AF 83 5E FE C3 C2 CD 38 30 4D 41 43 48 35 A5 93 ..^....80MACH5..
This cart has 8KiB ROM mapped at $8000-$9FFF, the $9E00-$9EFF range is mirrored at
$DE00-$DEFF and the $9F00-$9FFF range is mirrored at $DF00-$DFFF.
16.14.3.54 53 - Pagefox
Size 64KiB (4 banks of 16KiB)
EXROM active (lo) (0)
GAME active (lo) (0)
Startup mode 16KiB Game
Load address $8000-$BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 35 00 00 00 00 00 00 00 00 ...@...5........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 31 80 BB 0E C3 C2 CD 38 30 50 46 20 56 31 2E 30 1......80PF V1.0
...
4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP..@.......@.
4060: A2 FE 9A 20 EC AE 20 82 80 20 74 86 20 A5 8B 4C ... .. .. t. ..L
...
8060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP..@.......@.
8070: 5A 01 02 03 04 06 0A 0B 10 14 1E 28 3C 00 00 00 Z..........(<...
...
C070: 43 48 49 50 00 00 40 10 00 00 00 03 80 00 40 00 CHIP..@.......@.
C080: 1E 03 14 82 09 05 09 0F 0C 0D 0F 05 09 09 0B 0A ................
This cart has 64KiB ROM (2 32KiB Eproms, mapped to $8000 and $A000 in 16KiB Game
Mode), and 32KiB RAM (mapped to $8000 and $A000 in 16KiB Game Mode). The cart
has 1 (write-only) bank control register which is located at $DE80 and mirrored throughout
the $DE80-$DEFF range:
Bit 0: unused/don’t care
Bit 1: Bank select: 0=upper, 1=lower (not correct ?!)
Bit 2: chip select 0
Bit 3: chip select 1
Bit 4: cartridge enable/disable: 0=enable, 1=disable
Bits 5-7: unused/don’t care
Chip select combinations of 0/1 are:
00: Eprom "79"
01: Eprom "ZS3"
10: Ram
11: empty space (reading returns VIC-II data)
Chapter 16: The emulator file formats 394
note: on the original hardware "disabling" the cartridge by setting bit 4 of the control
register does NOT prevent write accesses to the cartridge RAM!. So to actually disable the
RAM, it is suggested to write $FF to the register.
16.14.3.55 54 - Kingsoft
Size 24KiB (3 banks of 8KiB)
EXROM active (lo) (0)
GAME active (lo) (0)
Startup mode 16KiB Game
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 36 00 00 00 00 00 00 00 00 ...@...6........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 09 80 A2 89 C3 C2 CD 38 30 20 D3 83 78 8D 00 DE .......80 ..x...
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
2060: 72 A2 05 A5 45 10 01 CA A5 46 10 02 CA CA 86 28 r...E....F.....(
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP.. ....... .
4070: 78 A2 FF 9A D8 A9 08 8D 16 D0 A0 00 98 99 02 00 x...............
This cart has 24KiB ROM (3 8KiB Eproms)
reading io1:
- switches to 16KiB game mode
- first eprom mapped to 8000 (ROML)
- second eprom mapped to A000 (ROMH)
writing io1:
- switches to ultimax mode _only_:
- if 0xc000 > address >= 0x8000
- if address >= 0xe000
(meaning 0x0000-0x7fff and 0xc000-0xdfff gives normal c64 ram/io)
- first eprom mapped to 8000 (ROML)
- third eprom mapped to e000 (ROMH)
1C130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
1E130: 43 48 49 50 00 00 20 10 00 00 00 0F 80 00 20 00 CHIP.. ....... .
1E140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Cartridge hardware is designed around a 128KiB ROM (PROM or Mask ROM) which is
divided into 16 banks each of 8KiB. When adressing the onboard bank-switching logic the
requested ROM bank is mapped at address range $8000-$9fff (8KiB)
The cartridge PCB layout was cost-optimized for mass-production purposes.
The address-/data-lines and bank-switching logic uses the closest address-/data-lines with
shortest and most direct path/distance in order to avoid too much PCB re-routing and keep
production costs as low as possible.
This means that the respective address-/data-lines from the cartridge port may not nec-
essarily connect with the corresponding address-/data-line of the ROM according to the
official specs of the ROM.
This has over the years given some headaches and invalid dumps when cartridge dumpers
that wanted to dump the cartridge contents by de-soldering the ROM and dumping it using
an EPROM programmer/reader.
The image extracted from such an operation would need transformation according to the
actual cartridge PCB re-routing of address-/data-lines. Alternatively one can make an
adapter that implements this applied re-routing of the address-/data-lines.
This mass-production cost optimization also results in an obscured bank-switching address
pattern/values more info on that later.
[HWrev1]: The original "Hugo" PCB [HWrev1] is labeled "HUGO Copyright 1990" on
both sides of the PCB. PCB production date is stamped on the back og PCB in the for-
mat: "YYMM" 1Mib 27C010 EPROM or PROM (typical Atmel) "Hugo" PCB [HWrev1]
contains the following discrete logic IC components: 74LS00N (DIP) and 74LS237N (DIP)
DIP pitch (pin spacing) 2.54mm (0.1 inch) Assembly/production facilities: Philips, Strand-
lodsvej (Amager), Copenhagen, Denmark
[HWrev1] Bank-switching pattern: In order for the rom contents to appear as a continuous
memory layout the following ROM bank-switching pattern must be applied by writing to
adress 0xDE00: Cartridge bank-switching values: 00 80 10 90 20 a0 30 b0 40 c0 50 d0 60
e0 70 f0 Writing the bank-switch value to any address in address-range 0xDE00-0xDEFF
will work.
[HWrev2]: Revised PCB [HWrev2] for SMD mount is labeled "SO-A4-1" on both sides
of PCB. 1Mib Mask ROM (SOIC-32) PCB contains the following discrete logic SMD IC
components: 74HCT02T (SOIC-14) and 74HCT174T (SOIC-16) SOIC (pitch) pin spacing
1.27mm (SMD mounted) Assembly/production facilities: Sono Press, Germany.
[HWrev2] Uses alternative bank-switching pattern: Writing *ANY* value to address
0xDE0y (offset y) will select ROM bank y Cartridge still has 16 banks and the lower four
bits in the address selects the right bank. Hence the valid address range is 0xDE00-0xDE0F
16.14.3.57 56 - Formel 64
Size 32KiB (4 banks of 8KiB)
EXROM inactive (hi) (1)
Chapter 16: The emulator file formats 397
16.14.3.58 57 - RGCD
Size 64KiB (8 banks of 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 39 00 01 00 00 00 00 00 00 ...@...9........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 0C 80 0C 80 C3 C2 CD 38 30 31 30 34 8E 16 D0 20 .......80104...
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
2060: B9 0A 72 AB 0B F0 08 C9 2F 0C 10 27 E8 EF 5A C5 ..r...../..’..Z.
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP.. ....... .
4070: C0 B4 6C A6 6A 0A 14 5E 65 AD 94 02 86 C8 30 1F ..l.j..^e.....0.
...
6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP.. ....... .
6080: A4 89 C6 3A C4 60 F0 10 4D F5 89 F0 13 6C E0 78 ...:.‘..M....l.x
...
8080: 43 48 49 50 00 00 20 10 00 00 00 04 80 00 20 00 CHIP.. ....... .
8090: 00 0B 08 14 00 9E 32 30 36 31 00 00 00 A0 35 BA ......2061....5.
...
A090: 43 48 49 50 00 00 20 10 00 00 00 05 80 00 20 00 CHIP.. ....... .
A0A0: 1B 4A 00 53 90 77 8E 1A 1D 94 00 A6 E2 50 29 11 .J.S.w.......P).
...
C0A0: 43 48 49 50 00 00 20 10 00 00 00 06 80 00 20 00 CHIP.. ....... .
C0B0: 14 F7 2E 1A 34 B4 60 53 07 88 C4 F0 21 F6 88 20 ....4.‘S....!..
...
Chapter 16: The emulator file formats 399
16.14.3.60 59 - EasyCalc
Size 24KiB (3 banks of 8KiB)
EXROM active (lo) (0)
GAME active (lo) (0)
Startup mode 16KiB Game
Load address $8000-$9FFF (bank 1), $A000-$BFFF (banks 2/3)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 3B 00 00 00 00 00 00 00 00 ...@...;........
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 59 89 BC FE C3 C2 CD 38 30 0B 80 B1 84 48 E6 84 Y......80....H..
Chapter 16: The emulator file formats 400
...
2050: 43 48 49 50 00 00 20 10 00 00 00 00 A0 00 20 00 CHIP.. ....... .
2060: 04 0B 20 52 45 50 4C 49 43 41 54 45 20 FB 89 0F .. REPLICATE ...
...
4060: 43 48 49 50 00 00 20 10 00 00 00 01 A0 00 20 00 CHIP.. ....... .
4070: 02 10 B5 00 C9 E3 D0 01 C8 C9 E2 D0 01 C8 C9 E0 ................
This cart uses 8KiB mapped in at $8000-$9FFF and 2 banks of 8KiB mapped in at $A000-
$BFFF.
The bank at $A000-$BFFF is selected by bit 0 of the address of a write access to I/O-1.
A0 | bank
---------
0 | 0
1 | 1
16.14.3.61 60 - GMod2
Size 512KiB (64 banks of 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
00000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
00010: 00 00 00 40 01 00 00 3C 00 01 00 00 00 00 00 00 ...@...<........
00020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
00030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00040: 43 48 49 50 00 00 20 10 00 02 00 00 80 00 20 00 CHIP.. ....... .
00050: 09 80 09 80 C3 C2 CD 38 30 78 8E 16 D0 20 A3 FD .......80x... ..
...
02050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
02060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
7E430: 43 48 49 50 00 00 20 10 00 00 00 3F 80 00 20 00 CHIP.. ....?.. .
7E440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
GMod2 (Individual Computers)
This cart uses 512KiB Flash ROM (29F040) in 64 banks, mapped in at $8000-$9fff and has
a 2KiB serial EEPROM (m93C86).
io1
- register at de00
bit7 (rw) write enable (write 1), EEPROM data output (read)
bit6 (ro) EXROM (0=active) and EEPROM chip select (1=selected)
bit5-0 (ro) rom bank bit5 EEPROM clock bit4 EEPROM data input
see http://wiki.icomp.de/wiki/GMod2
Chapter 16: The emulator file formats 401
16.14.3.63 62 - GMod3
Size 2MiB/4MiB/8MiB/16MiB (256/512/1024/2048 banks of
8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
00000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
00010: 00 00 00 40 01 00 00 3E 00 01 00 00 00 00 00 00 ...@...<........
00020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
00030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00040: 43 48 49 50 00 00 20 10 00 02 00 00 80 00 20 00 CHIP.. ....... .
00050: 09 80 09 80 C3 C2 CD 38 30 78 8E 16 D0 20 A3 FD .......80x... ..
...
02050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
02060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
001FF030: 43 48 49 50 00 00 20 10 00 00 00 FF 80 00 20 00 CHIP.. ....?.. .
001FF040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
To select the ROM bank, write to de00-7. The lower 3 bits of the address
Chapter 16: The emulator file formats 402
see http://wiki.icomp.de/wiki/GMod3
16.14.3.64 63 - ZIPP-CODE 48
Size 8KiB
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 3f 00 01 00 00 00 00 00 00 ...@...?........
0020: 5a 49 50 50 2d 43 4f 44 45 20 34 38 00 00 00 00 ZIPP-CODE 48....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 11 de 7b e3 c3 c2 cd 38 30 41 80 00 00 03 81 31 ..?....80A.....1
16.14.3.65 64 - Blackbox V8
Size 32KiB or 64KiB
EXROM active (lo) (0)
GAME active (lo) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 40 00 00 00 00 00 00 00 00 ...@...@........
0020: 42 4c 41 43 4b 42 4f 58 20 56 38 00 00 00 00 00 BLACKBOX V8.....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 09 80 22 80 c3 c2 cd 38 30 8e 16 d0 20 a3 fd 20 ..?....80... ..
16.14.3.66 65 - Blackbox V3
Size 8KiB
EXROM active (lo) (0)
GAME inactive (hi) (1)
Load address $8000-9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 41 00 01 00 00 00 00 00 00 ...@...A........
0020: 42 4c 41 43 4b 42 4f 58 20 56 33 00 00 00 00 00 BLACKBOX V3.....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: a7 85 2b 80 c3 c2 cd 38 30 8e 16 d0 20 a3 fd 20 ..+....80... ..
16.14.3.67 66 - Blackbox V4
Size 16KiB
EXROM active (lo) (0)
GAME active (lo) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
Chapter 16: The emulator file formats 404
0010: 00 00 00 40 01 00 00 42 00 00 00 00 00 00 00 00 ...@...B........
0020: 42 4c 41 43 4b 42 4f 58 20 56 34 00 00 00 00 00 BLACKBOX V4.....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: a7 85 2b 80 c3 c2 cd 38 30 8e 16 d0 20 a3 fd 20 ..+....80... ..
This cartridge contains an 8KiB ROM which contains the software, plus up to 256KiB RAM
which can then be used to store up to 100 programs. The RAM is battery buffered, and
the cartridge can be disabled with a switch on the board.
dfa0 (write) selects RAM bank
df50 (read) toggles RAM writeable
dfc0 (read) toggles cartridge enable
dfe0 (read) toggles RAM enable
This cartridge contains a 2, 4 or 8KiB ROM. The software is copied to RAM and then the
cartridge disables itself by writing to IO1 (de00).
16.14.3.70 69 - SD-BOX
Size 128KiB
EXROM active (lo) (0)
GAME active (lo) (0)
Load address $8000-BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 45 00 00 00 00 00 00 00 00 ...@...E........
0020: 53 44 2d 42 4f 58 00 00 00 00 00 00 00 00 00 00 SD-BOX..........
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 09 80 81 ea c3 c2 cd 38 30 a9 00 8d 00 de a9 40 .......80......@
This cartridge contains a 128KiB banked ROM with a filebrowser and some extra software
on it. It also contains a sd2iec clone, which seems to be seperate and runs the original
sd2iec firmware.
there is one register at de00:
16.14.3.71 70 - MultiMAX
Size 1MiB, 64*16KiB (ULTIMAX mode)
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $8000-$9FFF (odd banks), $E000-$FFFF (even banks)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 46 01 00 00 00 00 00 00 00 ...@...F........
0020: 4d 55 4c 54 49 4d 41 58 00 00 00 00 00 00 00 00 MULTIMAX........
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 48 80 48 83 48 83 48 83 64 85 64 85 f5 87 aa 88 H.H.H.H.d.d.....
This cartridge contains 1MiB ROM organised in 64 16KiB banks. It operates in ultimax
mode and contains all known ultimax releases. It also provides additional 2KiB RAM for
MAX-Basic, which will be mapped to $0800.
Chapter 16: The emulator file formats 406
bit 7 when set, the register is disabled and can only be reenabled by reset
bit 0-5 select ROM bank 0-63
16.14.3.72 71 - Blackbox V9
Size 32KiB, 2*16KiB
EXROM inactive (hi) (1)
GAME active (lo) (0)
Load address $8000-$9FFF $E000-$FFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 47 01 00 00 00 00 00 00 00 ...@...G........
0020: 42 4c 41 43 4b 42 4f 58 20 56 39 00 00 00 00 00 BLACKBOX V9.....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
0050: 00 9a b6 fe c3 c2 cd 38 30 c3 ff 00 ff 00 ff 00 .......80.......
The cartridge starts in ultimax mode in the last bank. The IO1 area also contains a mirror
of the second last ROM page.
a register is mapped to IO1, which is changed by accessing an address in
the IO space, the address bits are mapped like this:
The Lt. Kernal Host Adaptor (SCSI ID 7) boot rom looks on sector 0 of drive 0 (ID 0) to
find the partition (LU or logical unit) information and DOS. If the drive is not found, it
will start up in stock mode. See src/c64/cart/ltkernal.c for more details.
The Lt. Kernal Host Adaptor uses the following registers:
Chapter 16: The emulator file formats 407
16.14.3.74 73 - RAMLink
Size 64KiB ROM, 8KiB RAM
EXROM inactive (hi) (1) Initially
GAME active (lo) (0) Initially
Load address $8000-$BFFF and $E000-$FFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 49 01 00 00 00 00 00 00 00 ................
0020: 43 4d 44 20 52 41 4d 4c 49 4e 4b 20 32 2e 30 31 CMD RAMLink 2.01
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 20 00 CHIP............
0050: 00 00 00 00 00 00 00 00 ee 42 df 20 1c b9 ee 42 ................
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP............
2060: 03 4c 75 9c 88 f0 01 88 8c 80 de a9 8d 20 38 8f ................
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP............
4070: 0a 17 d8 8d 64 8c be 00 ce 42 df 20 48 88 ce 42 ................
...
6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP............
6080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
...
8080: 43 48 49 50 00 00 20 10 00 00 00 04 80 00 20 00 CHIP............
8090: 40 48 20 c9 ff aa 68 90 01 8a 60 20 bd ff 20 64 ................
...
a090: 43 48 49 50 00 00 20 10 00 00 00 05 80 00 20 00 CHIP............
a0a0: 85 56 20 0f bc a5 61 c9 88 90 03 20 d4 ba 20 cc ................
...
c0a0: 43 48 49 50 00 00 20 10 00 00 00 06 80 00 20 00 CHIP............
c0b0: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
e0b0: 43 48 49 50 00 00 20 10 00 00 00 07 80 00 20 00 CHIP............
e0c0: a2 ff 78 9a d8 a9 00 8d 00 ff a2 0a bd 4b e0 9d ................
or
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 49 00 01 00 00 00 00 00 00 ................
0020: 43 4d 44 20 52 41 4d 4c 49 4e 4b 20 31 2e 34 30 CMD RAMLink 1.40
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 20 00 CHIP............
0050: 52 41 4d 4c 49 4e 4b 20 44 4f 53 20 28 43 29 31 ................
...
Chapter 16: The emulator file formats 409
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP............
2060: 4e 54 41 58 20 45 52 52 4f 52 00 57 52 49 54 45 ................
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP............
4070: aa 09 f9 10 ec b9 9e 1b ec ce 3f 70 8d 84 df a9 ................
...
6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP............
6080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
...
8080: 43 48 49 50 00 00 20 10 00 00 00 04 80 00 20 00 CHIP............
8090: 40 48 20 c9 ff aa 68 90 01 8a 60 20 bd ff 20 64 ................
...
a090: 43 48 49 50 00 00 20 10 00 00 00 05 80 00 20 00 CHIP............
a0a0: 85 56 20 0f bc a5 61 c9 88 90 03 20 d4 ba 20 cc ................
...
c0a0: 43 48 49 50 00 00 20 10 00 00 00 06 80 00 20 00 CHIP............
c0b0: 80 8d 3f de a9 1b 8d 32 de 8d 34 de a9 ee 8d 33 ................
...
e0b0: 43 48 49 50 00 00 20 10 00 00 00 07 80 00 20 00 CHIP............
e0c0: a2 ff 78 9a d8 a9 00 8d 00 ff a2 0a bd 4b e0 9d ................
The RAMLink CRT file is 64 KiB and consists of eight 8 KiB banks. The first two are for
the RAMLink DOS which is banked in from $8000-$BFFF (16 KiB). The third and forth
are the configuration portion of the DOS which also banks in at $8000-$BFFF, however
only the first 8 KiB is officially used. The banks are the 64 shadow kernal, 64 trap kernal,
128 shadow kernal, and 128 trap kernal respectively. The first bytes of the configuration
DOS bank contain 16-bit checksums of various parts of the ROM. The precise mapping is
specific to the particular version of the ROM as the code resides there. The ROMs verify
these checksums on boot up. Should this fail, the firmware turns on the error LED and goes
into an infinite loop. Since vice doesn’t provide an error or activity LED for RAMLink, the
system would just appear to hang.
The actual RAMLink appears to have the ability to upgrade to a 128 KiB ROM, but no
firmware which utilizes it is known to exist.
The RAMLink uses many locations in IO2 primarily so that it can co-exist with other
cartridges. Most of these registers are write only, that is to say, all that is required to
activate them is a write; the contents of the write are not important. This technique
minimizes the coding required to interact with the device. Although RAMLink has 2 pass-
thru ports, they are not complete shorts to the cartridge bus, some of the control lines are
altered based on the state of the device. Initially, RAMLink is disabled, the trap kernal is
active and only one of its registers is visible:
$DF7E = Enable RAMLink registers and switch to shadow kernal
Once a write is done to $DF7E, all the other registers become active. The shadow kernal
also switches in. This happens regardless of the state of the microprocessor IO port ($1).
Even if the kernal ROM is mapped out, the shadow kernal will appear.
$DF20 = NMI Trap Enable? (not certain as to its function)
$DF21 = Mirror to $DF01 (for REU) when NMI trap is on
Chapter 16: The emulator file formats 410
16.14.3.75 74 - Drean
Size 32KiB (4 banks of 8KiB each)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 4a 00 01 00 00 00 00 00 00 ......J........
0020: 44 52 45 41 4e 20 48 45 52 4f 00 00 00 00 00 00 DREAN HERO......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP.. ....... .
0050: 0b 80 bc fe c3 c2 cd 38 30 03 49 8e 16 d0 bd 00 .......80.I.....
..
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP.. ....... .
2060: 32 aa 5a aa 00 00 ff 00 90 d9 68 d9 00 00 90 05 2.Z.......h.....
..
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP.. ....... .
4070: ff 7f 7f ff ff 3f 00 00 00 00 00 c0 00 c0 ff 3f .....?.........?
..
6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP.. ....... .
6080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
This cartridge type was found in an argentinian H.E.R.O. clone cartridge, ROM memory is
organized in 8KiB ($2000) banks located at $8000-$9FFF. There appears to be one register
mirrored over IO2 (the software uses $DFFF). Banks are selected by writing to the lower 2
bits of the register, bit 5 disables the cartridge.
16.14.3.79 78 - Partner 64
Size 16KiB
Chapter 16: The emulator file formats 413
Warning, the following information is based on guess-work and might be incorrect, any
further information and/or corrections are appreciated.
This cartridge has 16KiB of ROM and 8KiB of RAM. It starts in ultimax mode with ROML
at $8000, ROMH at $e000 and the extra RAM at $a000.
16.14.3.80 79 - Hyper-BASIC
Size 64KiB (8 banks of 8KiB)
EXROM active (lo) (0)
GAME inactive (hi) (1)
Startup mode 8KiB Game
Load address $8000-$9FFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
0010: 00 00 00 40 01 00 00 4F 00 01 00 00 00 00 00 00 ......O........
0020: 48 79 70 65 72 2D 42 41 53 49 43 00 00 00 00 00 Hyper-BASIC.....
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP............
0050: 44 CF 4C 4F 4F D0 45 58 49 D4 43 41 53 C5 47 4B D.LOO.EXI.CAS.GK
...
2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP............
2060: A9 FF 2C A9 01 85 FF A5 D6 48 A5 D3 48 20 9E B7 ..,.............
...
4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP.. ....... .
4070: A9 01 A0 A1 A2 A1 20 BD FF A0 0F A2 04 20 BA FF .. ... .. ... ..
...
6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP.. ....... .
6080: 09 80 BC FE C3 C2 CD 38 30 A2 FF 8E 02 DC E8 8E .......80.......
...
8080: 43 48 49 50 00 00 20 10 00 00 00 04 80 00 20 00 CHIP.. ....... .
8090: A0 0F B9 40 80 99 00 01 88 10 F7 AE 01 08 E0 09 ..............
Chapter 16: The emulator file formats 414
...
A090: 43 48 49 50 00 00 20 10 00 00 00 05 80 00 20 00 CHIP.. ....... .
A0A0: A0 00 B9 00 9E 99 00 9E B9 00 9F 99 00 9F C8 D0 ...............
...
C0A0: 43 48 49 50 00 00 20 10 00 00 00 06 80 00 20 00 CHIP.. ....... .
C0B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
...
E0B0: 43 48 49 50 00 00 20 10 00 00 00 07 80 00 20 00 CHIP.. ....... .
E0C0: 2C CA 91 AD 0A 03 AE 0B 03 8D B8 02 8E B9 02 A9 ,...............
This cartridge is organized in 8KiB ($2000) banks located at $8000-$9FFF. Bank switching
is done by writing to the register at $de00, which is mirrored across the entire IO1 range.
Somewhat uncommon is that the register directly exposes the chip-enable for the two ROMs.
bit 0 - _CE for ROM2, 0 = enable (don’t select both)
bit 1 - _CE for ROM1, 0 = enable (don’t select both)
(bit 2 - probably unused)
(bit 3 - probably unused)
bit 4 - A13
bit 5 - A14
bit 6 and/or 7 - _EXROM, 0 = make cart visible
16.14.4.2 1 - Warpspeed128
Size 16KiB
Load address $8000-$BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 43 31 32 38 20 43 41 52 54 52 49 44 47 45 20 20 C128 CARTRIDGE
0010: 00 00 00 40 02 00 00 01 00 00 00 00 00 00 00 00 ...............
Chapter 16: The emulator file formats 416
16.14.4.4 3 - Comal 80
Size 96KiB (6 banks of 16KiB)
Load address $C000-$FFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
000000: 43 31 32 38 20 43 41 52 54 52 49 44 47 45 20 20 C128 CARTRIDGE
000010: 00 00 00 40 02 00 00 03 00 00 00 00 00 00 00 00 ...............
000020: 43 6f 6d 61 6c 20 38 30 20 28 43 31 32 38 29 00 Comal 80 (C128).
000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000040: 43 48 49 50 00 00 40 10 00 00 00 00 c0 00 40 00 CHIP..........
000050: 4c 8c c9 4c 85 1f 01 43 42 4d 4c 5d d2 4c b9 cd L..L...CBML].L..
...
018080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
Chapter 16: The emulator file formats 417
018090: 20 20 20 20 20 20 20 20 20 20 05 ff 3d ff 17 ff ..=...
This cartridge contains 3 32KiB ROMs, each containing two 16KiB banks, which are
mapped to $C000 (ROMH). Bankswitching is done via one register at $DE00.
16.14.4.6 5 - Gmod2-C128
Size 16KiB ROM, up to 32 banks (=512KiB)
Load address $8000-$BFFF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
000000: 43 31 32 38 20 43 41 52 54 52 49 44 47 45 20 20 C128 CARTRIDGE
000010: 00 00 00 40 02 00 00 05 00 00 00 00 00 00 00 00 ...............
000020: 47 6d 6f 64 32 2d 43 31 32 38 00 00 00 00 00 00 Gmod2-C128......
000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..........
000050: 4c 0a 80 4c 0a 80 02 43 42 4d 78 a9 0a 8d 00 ff L..L...CBMx.....
...
080220: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
080230: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
This is similar to the C64 Gmod2 Cartridge. The differences are: - Banks are 16KiB instead
of 8. Because of that one bit less in the register is used for banking - The ROM is always
mapped to ROML area
Chapter 16: The emulator file formats 418
16.14.5.2 1 - Mega-Cart
Size 2MiB
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 56 49 43 32 30 20 43 41 52 54 52 49 44 47 45 20 VIC20 CARTRIDGE
0010: 00 00 00 40 02 00 00 01 00 00 00 00 00 00 00 00 ...............
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 a0 00 20 00 CHIP.. ....... .
0050: fd be 0e bf 41 30 c3 c2 cd 81 00 81 55 c1 5a 81 ....A0......U.Z.
...
201020: a7 ac b0 b5 b9 bd c1 c4 c7 ca cd d0 d3 d5 d8 da ................
201030: dc de e0 e2 e3 e5 fe 24 17 00 00 00 00 00 00 00 .......$........
0010: 00 00 00 40 02 00 00 02 00 00 00 00 00 00 00 00 ...............
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 a0 00 20 00 CHIP.. ....... .
0050: 10 b0 10 b0 41 30 c3 c2 cd ff ff ff ff ff ff ff ....A0..........
...
201020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
201030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
This cartridge has one bank register, mirrored over the whole IO3 ($9c00-$9fff)
16.14.5.5 4 - UltiMem
Size 8MiB or 16MiB
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
----------------------------------------------- ----------------
0000: 56 49 43 32 30 20 43 41 52 54 52 49 44 47 45 20 VIC20 CARTRIDGE
0010: 00 00 00 40 02 00 00 04 00 00 00 00 00 00 00 00 ...............
0020: 56 49 43 45 20 43 41 52 54 00 00 00 00 00 00 00 VICE CART.......
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040: 43 48 49 50 00 00 20 10 00 00 00 00 a0 00 20 00 CHIP.. ....... .
0050: 09 a0 09 a0 41 30 c3 c2 cd 78 a2 ff 9a d8 a9 7f ....A0...x......
Chapter 16: The emulator file formats 420
...
1008020: a7 00 a2 07 a3 74 a3 57 a1 55 a1 be a9 ea a0 da .....t.W.U......
1008030: ff ea a0 d0 ff b6 a3 aa aa aa aa aa aa aa aa aa ................
This cartridge has 512KiB or 1MiB of RAM and 8MiB or 16MiB of flash rom.
$9c03
bit 7 1: register off
bit 6 1: invert A14
bit 5 1: invert A13
bit 4 1: block5 off
bit 3 1: block3 off
bit 2 1: block2 off
bit 1 1: block1 off
bit 0 1: block0 off
Chapter 16: The emulator file formats 421
The original documentation maintained by the HVSC team can be found here: http://
www.hvsc.de/download/C64Music/DOCUMENTS/SID_file_format.txt
SID files use the .sid file extension.
Since PSID v2 is simply an extension of PSID v1, PSID v2NG is an extension of PSID v2,
RSID is a restricted version of PSID v2NG, PSID v3/v4 and RSID v3/v4 are extentions of
PSID v2NG and RSID v2, all of the formats are discussed together below. RSID in specific
is discussed in detail under the ’magicID’ field description.
The information presented here targets programmers or other people with reasonable back-
ground. It is not suitable for newbies who have never before used a machine code monitor,
a disassembler, or a hexadecimal editor.
See section "The SID file environment" below for the default C64 power-on environment
for each SID file format.
+04 WORD version
Available version number can be 0001, 0002, 0003 or 0004. Headers of version 2, 3 and 4
provide additional fields. RSID and PSID v2NG files must have 0002, 0003 or 0004 here.
+06 WORD dataOffset
This is the offset from the start of the file to the C64 binary data area. Because of the fixed
size of the header, this is either 0x0076 for version 1 and 0x007C for version 2, 3 and 4.
+08 WORD loadAddress
The C64 memory location where to put the C64 data. 0 means the data are in original C64
binary file format, i.e. the first two bytes of the data contain the little-endian load address
(low byte, high byte). This must always be true for RSID files. Furthermore, the actual
load address must NOT be less than $07E8 in RSID files.
You must be absolutely sure what to enter here. There is no way to detect automatically
whether the first two bytes in a C64 data file are meant to be a load address or some
arbitrary bytes of code or data. Unless your C64 file is not a normal binary file and thus
has no load address in front, you need not enter anything else than 0 here. The SID tune
will not play if you specify a load address which is present in the C64 file already.
Normal C64 binary data files have a load address in their first two bytes, so they can be
loaded to a pre-defined destination address by executing LOAD"FILE",8,1, for instance. If
a load address is explicitly specified in the sidtune info file, some sidtune converters and
utilities conjecture that the C64 data don’t have a load address in their first two bytes.
Hence, the explicit load address from the info file is moved in front of the C64 data to
create a valid C64 binary file which can be easily loaded on a C64, too. If that C64 file
were to be saved, it would contain two superfluous data bytes at offset 2 if an original load
address had been in the first two bytes of the old file. This process of adding a duplicate
load address can be repeated. The file loader strips off the first two bytes (the used load
address) and puts the rest of the file contents (including the now obsolete load address at
file offset 2) into memory. If the new load address is the same than the old one the two
added bytes cause the whole data to be displaced by two bytes, which most likely results
in malfunctioning code. Also, superfluous bytes in memory then can confuse disassemblers
which start at the beginning of the file or memory buffer.
+0A WORD initAddress
The start address of the machine code subroutine that initializes a song, accepting the
contents of the 8-bit 6510 Accumulator as the song number parameter. 0 means the address
is equal to the effective load address.
In RSID files initAddress must never point to a ROM area ($A000-$BFFF or $D000-$FFFF)
or be lower than $07E8. Also, if the C64 BASIC flag is set, initAddress must be 0.
+0C WORD playAddress
The start address of the machine code subroutine that can be called frequently to produce
a continuous sound. 0 means the initialization subroutine is expected to install an interrupt
handler, which then calls the music player at some place. This must always be true for
RSID files.
+0E WORD songs
Chapter 16: The emulator file formats 425
The number of songs (or sound effects) that can be initialized by calling the init address.
The minimum is 1. The maximum is 256.
+10 WORD startSong
The song number to be played by default. This value is optional. It often specifies the first
song you would hear upon starting the program is has been taken from. It has a default of
1.
+12 LONGWORD speed
This is a 32 bit big endian number.
For version 1 and 2 and for version 2NG, 3 and 4 with PlaySID specific flag (+76) set, the
’speed’ should be handled as follows:
Each bit in ’speed’ specifies the speed for the corresponding tune number, i.e. bit 0 specifies
the speed for tune 1. If there are more than 32 tunes, the speed specified for tune 32 is the
same as tune 1, for tune 33 it is the same as tune 2, etc.
For version 2NG, 3 and 4 with PlaySID specific flag (+76) cleared, the ’speed’ should be
handled as follows:
Each bit in ’speed’ specifies the speed for the corresponding tune number, i.e. bit 0 specifies
the speed for tune 1. If there are more than 32 tunes, the speed specified for tune 32 is also
used for all higher numbered tunes.
For all version counts:
• A 0 bit specifies vertical blank interrupt (50Hz PAL, 60Hz NTSC), and a 1 bit specifies
CIA 1 timer interrupt (default 60Hz).
• Surplus bits in ’speed’ should be set to 0.
• For RSID files ’speed’ must always be set to 0.
Note that if ’play’ = 0, the bits in ’speed’ should still be set for backwards compatibility
with older SID players. New SID players running in a C64 environment will ignore the
speed bits in this case.
WARNING: This field does not work in PlaySID for Amiga like it was intended, therefore
the above is a redefinition of the original ’speed’ field in SID v2NG! See also the ’clock’
(video standard) field described below for ’flags’.
+16 ‘‘<name>’’
+36 ‘‘<author>’’
+56 ‘‘<released>’’ (once known as ‘‘<copyright>’’)
These are 32 byte long ASCII character strings. Upon evaluating the header, these fields
may hold a character string of 32 bytes which is not zero terminated. For less than 32
characters the string should be zero terminated. The maximum number of available free
characters is 32.
+76 <data>
Version 1 of the SID header is complete at this point. The binary C64 data starts here.
If bits 6-7 are set to Unknown then the second SID will be set to the same SID model as
the first SID.
This is a v3 specific field.
• Bits 8-9 specify the SID version (sidModel) of the third SID: 00 = Unknown, 01 =
MOS6581, 10 = MOS8580, 11 = MOS6581 and MOS8580.
If bits 8-9 are set to Unknown then the third SID will be set to the same SID model as the
first SID.
This is a v4 specific field.
The MOS6581 and the MOS8580 have three notable differences. First, combined waveforms
are generally louder on a MOS8580, to the extent that some combinations that are clearly
audible on a MOS8580 are completely silent on a MOS6581. Second, the internal DC levels
in the MOS8580 are so small that software or hardware tricks must be used to play volume
samples. Third, the MOS8580 analog filter has totally different characteristics from the
MOS6581 analog filter.
To ensure that music specifically written for one of the two SID versions can be played back
correctly, bits 4-9 in ’flags’ are used as stated above.
• Bits 10-15 are reserved and should be set to 0.
+78 BYTE startPage (relocStartPage)
This is a v2NG specific field.
This is an 8 bit number. If ’startPage’ is 0, the SID file is clean, i.e. it does not write outside
its data range within the driver ranges. In this case the largest free memory range can be
determined from the start address and the data length of the SID binary data. If ’startPage’
is 0xFF, there is not even a single free page, and driver relocation is impossible. Otherwise,
’startPage’ specifies the start page of the single largest free memory range within the driver
ranges. For example, if ’startPage’ is 0x1E, this free memory range starts at $1E00.
+79 BYTE pageLength (relocPages)
This is a v2NG specific field.
This is an 8 bit number indicating the number of free pages after ’startPage’. If ’startPage’
is not 0 or 0xFF, ’pageLength’ is set to the number of free pages starting at ’startPage’. If
’startPage’ is 0 or 0xFF, ’pageLength’ must be set to 0.
The relocation range indicated by ’startPage’ and ’pageLength’ should never overlap or
encompass the load range of the C64 data. For RSID files, the relocation range should also
not overlap or encompass any of the ROM areas ($A000-$BFFF and $D000-$FFFF) or the
reserved memory area ($0000-$03FF).
+7A BYTE secondSIDAddress
This is a v3 specific field. For v2NG, it should be set to 0.
This is an 8 bit number indicating the address of the second SID. It specifies the middle
part of the address, $Dxx0, starting from value $42 for $D420 to $FE for $DFE0). Only
even values are valid. Ranges $00-$41 ($D000-$D410) and $80-$DF ($D800-$DDF0) are
invalid. Any invalid value means that no second SID is used, like $00.
+7B BYTE thirdSIDAddress
This is a v4 specific field. For v2NG and v3, it should be set to 0.
Chapter 16: The emulator file formats 428
This is an 8 bit number indicating the address of the third SID. It specifies the middle part
of the address, $Dxx0, starting from value $42 for $D420 to $FE for $DFE0). Only even
values are valid. Ranges $00-$41 ($D000-$D410) and $80-$DF ($D800-$DDF0) are invalid.
Any invalid value means that no third SID is used, like $00. The address of the third SID
cannot be the same as the second SID.
+7C <data>
Version 2, 3 and 4 of the SID header ends here. This offset is the start of the binary C64
data. See also ’loadAddress’ for what the first 2 bytes of ’data’ might indicate.
16.16.1 general
The format itself is pretty straightforward and almost trivial: it is simply a text file con-
taining one filename per line.
• Each line contains a filename. Depending on the device or emulator, this does not
necessarily have to be a disk image (see below). Filenames can contain a full (absolute)
or relative (to the swaplist file) path, or no path at all.
Note that path notation is device- and/or OS specific and not portable - for that reason
it is probably a good idea to not put pathes into these files unless absolutely necessary.
What happens when a (non comment) line contains an invalid/non existing file name
is undefined and implementation specific (see below)
• Blank lines are ignored, and parsing is tolerant of varying line?endings (any occurrences
and/or combination of 0x0a and/or 0x0d constitutes a line-ending)
• Any line starting with a semicolon (;) is a comment and will be skipped. Any device
specific extensions should be implemented in comment lines, so other devices will always
skip them.
16.16.2 extensions
Some devices introduced custom extensions on the format, which are considered completely
optional. Most notable is the #PETSCII tag introduced by sd2iec, which parsers that don’t
support it should simply ignore.
Details on the various devices/emulators that support swaplists follow:
16.16.2.1 VICE
• Until 3.5, VICE used to write "# Vice fliplist file" to the first line of the file. To
make the created files more universal, this was changed to use the new comment line
delimiter in 3.5 r40450, ie "; Vice fliplist file"
• A line containing ";UNIT X" indicates that the following files belong to the drive X
(This used to be "UNIT X" before 3.5 r40481). When the swaplist contains only files
for one drive, this marker will not be created.
• File names that are not readable (or do not exist) will be ignored/skipped
• the sd2iec #PETSCII marker is recognized since VICE 3.5 r40450
After 3.5 r40450 VICE will still accept (read) files in the old format, but only create files
in the new, more compatible format.
Chapter 16: The emulator file formats 430
16.16.2.2 sd2iec
• The file names are parsed in the same way as the CD command, so you can include a
path to the image if desired. Due to the way this feature is implemented you are not
limited to a swap list containing just D64 images, M2I and even FAT directories will
work too.
• a file name including path can be max. 255 characters long
• there can be max. 255 files in a swaplist
• By default sd2iec assumes the swap file is encoded in ASCII. If the the first line of the
file matches "#PETSCII" (in hex: $23 $50 $45 $54 $53 $43 $49 $49), filenames are
assumed to be encoded in PETSCII instead.
• When sd2iec finds an invalid/non existing file name, it will stop and indicate an error
by blinking the LED
The comment delimiter (;) is recognized in firmware since April 22nd, 2021
16.16.2.3 Chameleon
• as of now, filenames must not contain a path component
• a file name can be max. 255 characters long
• since the files in the list are not "swapped" but immediately mounted, there can be
max. 4 files in the list
• d64 and g64 files are recognized, files with other extensions are skipped
• the sd2iec #PETSCII marker is recognized
16.16.2.4 pi1541
(some of the following needs more explanation and/or will perhaps change in the future):
• Path can be relative or not and is in the format; [drive#:][/]directory/file
• Comments are in the C programming style of // and /* */
• All files will be ignored if they don’t have an extension of the currently supported disk
image (d64, g64, nib, nbz or t64). If the disk image fails to load then it will be ignored.
• When a file is found where the file name does not end with a supported disk extension
the file name will be compared to the list of ROM file names that have been specified
inside of the Pi1541’s options.txt file and if a match is found then that ROM will be
used for that LST selection. If more than one has been specified inside the LST file
then the last one encountered will be used.
16.16.3 Examples
example: barebones minimal swaplist
FOO.D64
BAR.D64
BAZ.D64
example: simple VICE fliplist
; Vice fliplist file
FOO.D64
431
BAR.D64
BAZ.D64
example: VICE fliplist for multiple drives + comments
; Vice fliplist file
;UNIT 8
FOO.D64
BAR.D64
BAZ.D64
;UNIT 9
FUU.D64
BOR.D64
BOZ.D64
; don’t forget this one
;UNIT 10
BUZ.D64
example: sd2iec style pathes + comment
//NEATGAME/:DISK1A.D64
//NEATGAME/:DISK1B.D64
//NEATGAME/:DISK2A.D64
//NEATGAME/:DISK2B.D64
; save disk in separate directory for easier backup
//SAVEDISKS/:NEATGAME.D64
432
17 Acknowledgments
VICE derives from X64, the first Commodore 64 emulator for the X Window System. Here
is an informal list of the people who were mostly involved in the development of X64 and
VICE:
The VICE core team:
• Pottendo Fixed WiC64 support. Most of the former contributions (pre V3.x) have
been taken over and/or replaced by other’s contributions.
• Marco van den Heuvel Translated the UI to Dutch. Made the internationalization sup-
port for the Win32 and Amiga ports. Wrote the GEO-RAM and RamCart cartridge
code. Wrote the c64 +60K, +256K and 256K memory expansions code. Wrote the pet
REU code. Wrote the plus4 memory expansions code. Made the ethernet support
for the DOS port. Maintains the QNX 4.x, QNX 6.x, Solaris, Openserver, Unixware,
Minix 3.x, Amiga, Syllable and OS/2 binary ports. Maintains the Win64 and Open
Watcom project files. Maintains the SDL port(s). Added new .crt support. Added new
screenshot formats. Added new sound recording support. Added SID cartridge support
for xpet, xplus4 and xvic. Improved the MMC64 emulation. Added 2 MHz mode and
banks 2/3 support for x128. Added the various userport joystick emulations. Added
text copy and paste support to the Amiga and BeOS ports. Added DQBB and ISEPIC
cartridge support. Added SFX Sound Sampler and SFX Sound Expander support.
Added PCI support to the Amiga and DOS ports. Rewrote the sound system into
a modular one, added always mono and always stereo support for the sound output.
Added the RTC system. Added digiblaster support. Added 3rd SID support. Added
the 6309 CPU emulation. Added the 65(S)C02 emulation. Added the 65816 emula-
tion. Added native screenshot (koala/doodle) support. Added 6502/6510/8500/8502
cpu port unused bit fading. Added vice.chm (windows), vice.guide (amiga), vice.hlp
(windows), vice.inf (os/2), vice.pdf (generic) and vice.txt documentation generation.
Added Android port based on ’AnVICE 1.0.5’. Improved/fixed the ’in-source’ FFM-
PEG support and fixed it for msvc7.0 and up. Generalized the ’RS232 net’ support to
be able to be used on any network supporting arch. Started the SDL2 port. Added
generic sampler input support. Added new joyport system and converted the joy-
stick, mouse and lightpen code to use the new system. Added joyport attached rtc
(bbrtc). Added joyport attached cardkey keypad. Added joyport attached coplin key-
pad. Added joyport attached atari cx21 keypad. Added joyport attached atari cx85
keypad. Added joyport attached paperclip 64 dongle. Added joyport attached rush-
ware keypad. Added joyport attached 2/4 bit samplers. Added vic20 I/O-2 and I/O-3
RAM support. Added the c64 cp/m (z80) cartridge. Added IDE64 digimax short
bus device emulation. Added tapeport system and the tapelog, cp-clockf83, tape-sense
dongle, and (not yet working) dtl basic dongle devices. Added easy calc result cartridge
emulation. Added hardware SID I/O access system which allows CW3, HardSID, Par-
SID and SSI2001 to work on AmigaOS, BeOS, DOS, SDL, *nix and windows with and
without device drivers. Added clockport system for mmc64, mmcreplay, retroreplay
and ide64. Added rrnet clockport device. Added mp3@64 clockport device. Added
userport snes pad (petscii) support. Extended the joyport system to be able to handle
all snes pad buttons. Extended the joyport system to be able to handle 8-player joystick
adapters. Added spaceballs joystick adapter support. Added trapthem joyport snes
Chapter 17: Acknowledgments 433
pad adapter support. Added superpad64 support. Added multijoy joystick adapter
support. Added inception joystick adapter support. Added protopad support. Added
autofire support. Added plus4 Synergy 3-port joystick adapter support. Added user-
port I/O simulation device. Added Microflyte analog joystick support. Added Stupid
Pet Tricks joystick adapter support. And lots of other fixes and improvements.
• Fabrizio Gennari Added some improvements to the DOS and GTK+ ports. Changed
the Windows video to use GDI as fallback, making it compile without DX if needed.
Fixed the t64 support. Added monitor window support using VTE to the GTK+ GUI.
Made some monitor fixes. Fixed some tape code issues.
• Groepaz Added new more precise CRT emulation. Added support for the new cartridge
system and many new cartridges. Fixed up parts of cartconv, c1541 and petcat. Added
video to audio leak sound support. Improved the GTK3 GUI. Added x64(sc), x128,
x64dtv, xplus4, xvic model selection system. Added KoalaPad emulation. Added
keyrah keymaps. Added joystick keys mapping to the keymap system. CIA emulation
improvements. Added basic support for compute gazette sidplayer files (mus/str) to
vsid. Added new palette files. Added ’available features’ code. Fixed/added some
items in the OSX GUI. Added random tape wobble emulation. Added 64KiB RGCD
cartridge emulation. Added psid v4 3sid support to vsid. Added single frame advance.
Added drive RPM and wobble support. Added rrnet mk3 emulation. Added GMod2
and GMod3 cartridge emulation. Added xvic BehrBonz cartridge emulation. Added
VICII VSP-bug emulation. Wrote alot of test programs. Updated this document after
a long period of outdated mess. And various fixes and improvements.
• Olaf Seibert Contributed some PET, including PET DWW hires, Xaw, lightpen, hard-
ware scaling, and disk drive patches. Added proper SuperPET support, including
6809/6309 CPU emulation. Maintained the Xaw UI. Added PET HRE (High Res
Emulator) board emulation. Added the 2-chip colour board for the Universal PET
mainboard. Added support for ’printer/plotter’ Commodore 1520. Overhauled inter-
nals of VIA and CIA code. Corrected pre-CRTC PET display timing. REL-file support
for the filesystem device and c1541.
• Marcus Sutton Made some console, dialog and joystick fixes for the BeOS port. Main-
tains the BeOS port. Added some GTK2 fixes. Fixed some PET model selection issues.
Revived the Windows NT Unicode port.
• Kajtar Zsolt Wrote the IDE64 interface emulation, FD2000/4000 drive emulation,
SCPU64 emulation and alot of fixes. Improved the mouse support. Added drive burst
modification support. Added 1541 drive sounds emulation. Improved c64 cart emu-
lation. Added DAC high pass filtering. Added the xscpu64 emulator. Added scroll
wheel support for the Micromys mouse emulation. Added Swiss ROM support to x128.
Added IDE64 USB server emulation. Added 1540 drive emulation. Improved monitor
support. Improved vdrive compatibility. Added godot screenshot support. And fixed
various issues.
• AreaScout Fixed the SDL2 port. Revived the Android port. Maintains the SDL1,
SDL2 and Android ports.
• Bas Wassink Fixed some gtk2/3 issues. Fixed t64 file handling. Fixed memory leaks.
Added more doxygen documentation. Fixed c1541 issues. Updated the Linux-Native-
Howto.txt file. Added autoconf, automake and yasm version checking. Fixed runtime
Chapter 17: Acknowledgments 434
linker path issues with *BSD. Fixed out-of-tree building. One of the driving forces
behind the GTK3 port.
• Michael C. Martin One of the driving forces behind the GTK3 port.
• June Tate-Gans Made the dual window feature for the SDL2 UI.
• Pablo Roldan Contributed improvements and fixes to the RS-232 emulation. Con-
tributed initial patch for VIC-II PAL-N model selection.
Former/inactive team members:
• BSzili Provided many amigaos4 fixes. Maintained the amigaos based and derived ports.
• Errol Smith Improved VDC emulation. Improved MPS803 printer emulation.
• Daniel Kahlin Worked on DTV VIC emulation, palette, DTV SID support in resid,
better DMA/Blitter support and did lots of refactoring. Added new monitor commands
and features. Improved the VIC emulation for xvic. Made MIDI driver code for
Win32. Rewrote the xvic cartridge system. Added Mega-Cart and Final Expansion
V3.2 support to xvic. Wrote large parts of the new VIC-II emulation used in x64sc,
especially the dot clock domain emulation. Wrote many test programs for hardware
analysis.
• Andreas Matthies Improved the datasette support, the VIC20 video emulation and
some UI stuff in the Win32 and DOS ports. He also wrote the BeOS port and im-
plemented video/audio capture support. Improved history recording/playback and
implemented support for video recording and the netlink feature. Made the Win32
user changable keyboard shortcut system. Improved CIA and VIA emulation. Worked
on x64sc, especially interrupt timing. Improved the FFMPEG support and started the
’in-source’ FFMPEG support/merge. Wrote test programs. Various bug(fixe)s. ;-)
• Ulrich Schulz Maintains the Dingoo port(s).
• Stefan Haubenthal Added some Amiga fixes.
• Thomas Giesel Added new monitor commands, features and improvements.
• Ingo Korb Corrected block allocation and interleave for c1541/vdrive, added rudimen-
tary xplus4 tape recording support, fixed some GTK2 issues, corrected a case of missing
Pi symbols in petcat, changed the trap opcode byte, stopped the high-level serial drive
code from responding to addresses 16-30 and was forced to update this entry himself.
• Antti S. Lankila Made the ReSID-fp engine, rewrote the PAL emulation code and fixed
the sound core for lower latency. Rewrote DTV SID support (ReSID-dtv). Improved
1541 drive rotation emulation. Worked on x64sc. Added RSID BASIC tunes support
to vsid. Several ReSID fixes and improvements.
• Christian Vogelgsang Maintained the Mac OS X port. Added Intel Mac support and
universal binary creation. Wrote the build scripts for all external Mac libraries and the
bindist bundle tool. Improved the TFE chip emulation. Added some GTK+ fixes.
• Dag Lem Implemented the reSID SID emulation engine and video hardware scaling.
• Spiro Trikaliotis Copyright c 2000-2011 Wrote the Win32 console implementation for
the built-in monitor, corrected some REU related bugs, improved the CIA emulation,
added com-port CIA support to the Win32 port, added text copy and paste support
to the Win32 port, added support for the TFE and RR-Net (cs8900a), and wrote some
further patches.
Chapter 17: Acknowledgments 435
• Hannu Nuotio Copyright c 2007-2011 Implemented DTV flash emulation, DTV sup-
port in the monitor, large parts of the DTV VIC, burst mode and skip cycle emulation
as well as many other things. Added NEOS and Amiga mouse, paddle and light pen
support. Added new monitor commands and features, including memmap. Made
MIDI support and OSS MIDI driver. Implemented most of the SDL UI. Rewrote xvic
CPU/VIC-I core for cycle based emulation. Implemented C64 cartridge snapshot sup-
port. Initiated and worked on all parts of implementing x64sc. Wrote test programs.
• Andreas Boose Copyright c 1998-2010 Gave lots of information and bug reports about
the VIC-II, the 6510 and the CIAs; moreover, he wrote several test-routines that were
used to improve the emulation. He also added cartridge support and has been the
main head behind the drive and datasette emulation since version 0.15. Also added
several UI elements to the DOS, Win32 and *nix ports. He rewrote the C128 emulation
adding Z80 mode, C64 mode and function ROM support, wrote the screenshot and the
event system and started the plus4 emulator. Restructured the serial bus emulation
and added realdrive and rawdrive support.
• Tibor Biczo Copyright c 1998-2010 Improved the Win32 port and plus4 emulation.
• M. Kiesel Copyright c 2007-2010 Started implementing x64dtv. The C64DTV mem-
ory model and early versions of the DMA and Blitter engine have been implemented
by him. Added new monitor commands and features.
• Andreas Dehmel Copyright c 1999-2007 Wrote the Acorn RISC OS port.
• David Hansel Copyright c 2003-2005 Wrote the Star NL10 printer driver, implemented
IEC devices and improved the tape emulation.
• Markus Brenner Copyright c 2000-2004 Added VDC emulation to x128 and added
support for some more cartridges.
• Thomas Bretz Copyright c 1999-2004 Started the OS/2 port.
• Daniel Sladic Copyright c 1997-2001 Started the work on hardware-level 1541 emula-
tion and wrote the new monitor introduced with VICE 0.15.
• Andre Fachat Copyright c 1996-2001 Wrote the PET and CBM-II emulators, the CIA
and VIA emulation, the IEEE488 interface, implemented the IEC serial bus in ‘xvic’
and made tons of bug fixes.
• Ettore Perazzoli Copyright c 1996-1999 Made the 6510, VIC-II, VIC-I and CRTC
emulations, part of the hardware-level 1541 emulation, speed optimizations, bug fixes,
the event-driven cycle-exact engine, the Xt/Xaw/Xfwf-based GUI for X11, a general
code reorganization, the new resource handling, most of the documentation. He also
wrote the DOS port and the initial Win32 port (well, somebody had to do it).
• Teemu Rantanen Copyright c 1993-1994, 1997-1999 Implemented the SID emulation
and the trap-based disk drive and serial bus implementation; added support for multiple
display depths under X11. Also wrote c1541
• Jouko Valta Copyright c 1993-1996 Wrote petcat and c1541, T64 handling, user
service and maintenance (most of the work in x64 0.3.x was made by him); retired
from the project in July 96, after VICE 0.10.0.
• Jarkko Sonninen Copyright c 1993-1994 He was the founder of the project, wrote the
old version of the 6502 emulation and the XDebugger, and retired from the project
after x64 0.2.1.
Chapter 17: Acknowledgments 436
Internationalization Team:
• Mikkel Holm Olsen Copyright c 2009-2017 Provided the Danish user interface trans-
lations and fixed a few monitor bugs.
Pottendo Copyright c 2000-2017 Provided the German user interface translations.
Manuel Antonio Rodriguez Bas Copyright c 2011-2017 Provided the Spanish user
interface translations.
Paul Dube Copyright c 2004-2017 Provided the French user interface translations.
Czirkos Zoltan Copyright c 2006-2017 Provided the Hungarian user interface transla-
tions.
Karai Csaba Copyright c 2006-2017 Provided the Hungarian user interface transla-
tions.
Andrea Musuruane Copyright c 2001-2017 Provided the Italian user interface trans-
lations.
Jesse Lee Copyright c 2011-2016 Provided the Korean user interface translations.
Marco van den Heuvel Copyright c 2005-2017 Provided the Dutch user interface
translations.
Jarek Sobolewski Copyright c 2011-2017 Provided the Polish user interface transla-
tions.
Michael Litvinov Copyright c 2010-2017 Provided the Russian user interface transla-
tions.
Peter Krefting Copyright c 2000-2017 Provided the Swedish user interface transla-
tions.
Emir Akaydin Copyright c 2008-2017 Provided the Turkish user interface translations.
Documentation Team:
• Daniel Kahlin
Groepaz
Kajtar Zsolt
Marco van den Heuvel
Olaf Seibert
External contributors:
• Alexis Ballier Provided some ffmpeg fixes.
• Christian Bauer Wrote the very interesting “VIC article” from which we got invaluable
information about the VIC-II chip: without this, the VIC-II implementation would not
have been possible.
• Anthony J. Bentley Provided some man page fixes.
• Eliseo Bianchi Provided the italian Amiga translations.
• Enrico Bruttomesso Improved some italian translations.
• Frank Buss Provide some midi fixes.
• ck! Provided a win32 cbm character font.
• iAN CooG Added win32 vsid GUI and contributed various patches.
Chapter 17: Acknowledgments 437
• Bernd Kortz Provided some fixes for ZETA and the ZETA binary package.
• Bernhard Kuhn Made some joystick improvements for Linux.
• Alexander Lehmann Added complete support for all the VIC20 memory configurations
for the old VICE 0.12.
• Ilkka "itix" Lehtoranta Provided the routines for the cybergraphics support for the
Amiga ports.
• Magnus Lind Atari ST mouse and Atari CX-22 trackball emulation and pixel aspect
fixes. Improved the Amiga mouse emulation. Improved the vic20 sound output. Added
windows POV hat support. Improved sound fragment size handling. Provided some
windows fixes. Provided some gtk port fixes. Provided some SDL port fixes.
• Lioncash Provided some c1541 fixes. Fixed some ’geninfocontrib’ helper tool issues.
Fixed some ’embedded’ build issues. Fixed some memory leaks.
• Locnet Made the initial android port of x64.
• Wolfgang Lorenz Wrote an excellent 6510 test suite that helped us to debug the CPU
emulation.
• lvd Provided some monitor fixes.
• Marko Mäkelä Wrote lots of CPU documentation. Wrote the VIC Flash Plugin car-
tridge emulation in xvic. Wrote the Ultimem cartridge emulation in xvic.
• mar77i Fixed some resource handling issues.
• Robert McIntyre Bugged people enough to get the improved g64 support rolling, up-
dated g64 support to allow variable-length tracks, and performed initial development
of half-track support.
• Robert W. McMullen Provided parts of the widget set for implementing the Xaw GUI.
• Jennifer Medkief Was in charge of checking up on the GUIs for elements that are
wrong, unaccessable, and missing.
• Dan Miner Contributed some patches to the fast disk drive emulation.
• mjhn Provided some *nix ’readme’ fixes.
• Moiree Provided some command line fixes. Improved the build system. Fixed some
vsid bugs. Fixed some SDL GUI issues. Fixed some documentation items.
• Luca Montecchiani Contributed a new Unix joystick driver.
• Wolfgang Moser Provided small optimization fixes to the GCR code, provided an ex-
cellent REU test suite and added REU fixes, and is always the good guy reviewing and
commenting changes in the background.
• Roberto Muscedere Improved support for REL files in vdrive. Added Lt. Kernal
Host Adaptor, CMD HD, CMD RAMLINK, and CBM D9090/60 emulation. Added
D90 support to vdrive. Added joyport attached paperclip 64E, paperclip 64SC, and
paperclip 2 dongle.
• Leandro Nini Improved ReSID emulation. And fixed some c64dtv cpu opcode issues.
• Tomi Ollila Donated findpath.c.
• Per Olofsson Digitalized the C64 colors used in the (old) default palette.
• Lasse Öörni Contributed the Windows Multimedia sound driver
• Stein Pedersen Fixed windows midi driver for 64bit windows.
Chapter 17: Acknowledgments 439
• Helfried Peyrl Supplied a patch that fixes REL file records larger 256 bytes when using
vdrive.
Christopher Phillips Fixed and improved some Mac OS X gui items.
• Frank Prindle Contributed some patches.
• Giuliano Procida Used to maintain the VICE deb package for the Debian distribution,
and also helped proofreading the documentation.
• Vesa-Matti Puro Wrote the very first 6502 CPU emulator in x64 0.1.0. That was the
beginning of the story. . .
• Rami Rasanen Rewrote the VIC20 sound code.
• Peter Rittwage Made 1541 GCR hardware tests.
• David Roden Fixed various issues related to ffmpeg settings.
• Mathias Roslund Provided the AmigaOS4 port.
• Gunnar Ruthenberg Provided some VIC-II enhancements and improved the Win32
port.
• Johan Samuelsson Provided the Swedish Amiga translations.
• Oliver Schaertel Wrote the X11 full screen, parts of custom ROM set support and 1351
mouse emulation for unix.
• Peter Schepers Contributed a document describing the G64 image format.
• Michael Schwendt Helped with the SID (audio) chip emulation, bringing important
suggestions and bug reports, as well as the wave tables and filter emulation from his
SIDplay emulator.
• Heiko Selber Contributed some VIC20 I/O patches.
• John Selck Improved the video rendering and added the fast PAL emulation. Imple-
mented new color generation based on P. Timmermanns knowledge.
• Chris Sharp Wrote the AIX sound driver.
• Andr351 "JoBBo" Siegel Provided the native MorphOS icons.
• Harry "Piru" Sintonen Provided lots of fixes and improvements for the Amiga ports.
• Manfred Spraul Wrote the Win32 text lister.
• Markus Stehr Provided the MMC64 emulation.
• Michael Steil Provided some c1541 fixes.
• Dominique Strigl Contributed miscellaneous patches in the old X64 times.
• Samuli Suominen Fixed XShm includes for newer xextproto versions and updated
libpng check for newer versions.
• Steven Tieu Added initial support for 16/24 bpp X11 displays.
• Philip Timmermann Did a lot of research about the VIC-II colors.
• TMLPiper Provided fixes for the osx port.
• Brian Totty Provided parts of the widget set for implementing the Xaw GUI.
• Mustafa "GnoStiC" Tufan Made improvements to the GP2x port.
• Lionel Ulmer Implemented joystick support for Linux and a first try of a SID emulation
for SGI machines.
Chapter 17: Acknowledgments 440
• Gary Glenn
Last but not least, a very special thank to Andreas Arens, Lutz Sammer, Edgar Tornig,
Christian Bauer, Wolfgang Lorenz, Miha Peternel, Per Håkan Sundell, David Horrocks,
Benjamin Rosseaux and William McCabe for writing cool emulators to compete with. :-)
442
18 Copyright
• Copyright c 1999-2023 Pottendo
• Copyright c 2005-2023 Marco van den Heuvel
• Copyright c 2007-2023 Fabrizio Gennari
• Copyright c 2009-2023 Groepaz
• Copyright c 2009-2023 Errol Smith
• Copyright c 2009-2023 Ingo Korb
• Copyright c 2010-2023 Olaf Seibert
• Copyright c 2011-2023 Marcus Sutton
• Copyright c 2011-2023 Kajtar Zsolt
• Copyright c 2016-2023 AreaScout
• Copyright c 2016-2023 Bas Wassink
• Copyright c 2017-2023 Michael C. Martin
• Copyright c 2018-2023 Christopher Phillips
• Copyright c 2019-2023 David Hogan
• Copyright c 2020-2023 Empathic Qubit
• Copyright c 2020-2023 Roberto Muscedere
• Copyright c 2021-2023 June Tate-Gans
• Copyright c 2021-2023 Pablo Roldan
• Copyright c 2011-2016 Stefan Haubenthal
• Copyright c 2015-2016 BSzili
• Copyright c 1999-2016 Andreas Matthies
• Copyright c 2007-2015 Daniel Kahlin
• Copyright c 2012-2014 Benjamin ’BeRo’ Rosseaux
• Copyright c 2011-2014 Ulrich Schulz
• Copyright c 2011-2014 Thomas Giesel
• Copyright c 2006-2014 Christian Vogelgsang
• Copyright c 1998-2014 Dag Lem
• Copyright c 2000-2011 Spiro Trikaliotis
• Copyright c 1998-2010 Tibor Biczo
• Copyright c 1998-2010 Andreas Boose
• Copyright c 2007-2010 M. Kiesel
• Copyright c 2007-2011 Hannu Nuotio
• Copyright c 1999-2007 Andreas Dehmel
• Copyright c 2003-2005 David Hansel
• Copyright c 2000-2004 Markus Brenner
• Copyright c 1999-2004 Thomas Bretz
• Copyright c 1997-2001 Daniel Sladic
443
19 Contact information
• When you report a bug, please try to be as accurate as possible and describe how it
can be reproduced to the very detail. You should also tell us what machine you are
running on, what operating system you are using as well as the version of it.
• Please don’t ask us how to transfer original C64 disk or tapes to your PC; this has
been asked a gazillion times through email. To transfer disks, you can use the Star
Commander (http://sta.c64.org/sc.html) on DOS, and OpenCBM (http://www.
trikaliotis.net/opencbm) on Windows and Linux. And no, you cannot read C64
disks with your old 5"1/4 PC drive (unless investing in a disk drive controller that can
do this).
• Please don’t ask us where to find games for the emulator on the Internet. It should be
very easy to find them using your favourite search engine.
• Please don’t ask us when the next version will be out, because we really don’t know.
• Please write in English.
In any case, we would be really glad to receive your comments about VICE. We cannot
always answer all the email, but we surely read all of it.
Thanks!
Preamble
The licenses for most software are designed to take away your freedom to share and change
it. By contrast, the GNU General Public License is intended to guarantee your freedom
to share and change free software—to make sure the software is free for all its users. This
General Public License applies to most of the Free Software Foundation’s software and to
any other program whose authors commit to using it. (Some other Free Software Foundation
software is covered by the GNU Library General Public License instead.) You can apply it
to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public
Licenses are designed to make sure that you have the freedom to distribute copies of free
software (and charge for this service if you wish), that you receive source code or can get
it if you want it, that you can change the software or use pieces of it in new free programs;
and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these
rights or to ask you to surrender the rights. These restrictions translate to certain respon-
sibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you
must give the recipients all the rights that you have. You must make sure that they, too,
receive or can get the source code. And you must show them these terms so they know
their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this
license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author’s protection and ours, we want to make certain that everyone un-
derstands that there is no warranty for this free software. If the software is modified by
someone else and passed on, we want its recipients to know that what they have is not the
original, so that any problems introduced by others will not reflect on the original authors’
reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid
the danger that redistributors of a free program will individually obtain patent licenses, in
effect making the program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone’s free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
Chapter 20: GNU GENERAL PUBLIC LICENSE 447
Thus, it is not the intent of this section to claim rights or contest your rights to
work written entirely by you; rather, the intent is to exercise the right to control the
distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or distribution
medium does not bring the other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it, under Section 2)
in object code or executable form under the terms of Sections 1 and 2 above provided
that you also do one of the following:
a. Accompany it with the complete corresponding machine-readable source code,
which must be distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
b. Accompany it with a written offer, valid for at least three years, to give any third
party, for a charge no more than your cost of physically performing source distri-
bution, a complete machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium customarily
used for software interchange; or,
c. Accompany it with the information you received as to the offer to distribute cor-
responding source code. (This alternative is allowed only for noncommercial dis-
tribution and only if you received the program in object code or executable form
with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifi-
cations to it. For an executable work, complete source code means all the source code
for all modules it contains, plus any associated interface definition files, plus the scripts
used to control compilation and installation of the executable. However, as a spe-
cial exception, the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major components (compiler,
kernel, and so on) of the operating system on which the executable runs, unless that
component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from
a designated place, then offering equivalent access to copy the source code from the
same place counts as distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly
provided under this License. Any attempt otherwise to copy, modify, sublicense or
distribute the Program is void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties remain in full
compliance.
5. You are not required to accept this License, since you have not signed it. However,
nothing else grants you permission to modify or distribute the Program or its derivative
works. These actions are prohibited by law if you do not accept this License. Therefore,
by modifying or distributing the Program (or any work based on the Program), you
indicate your acceptance of this License to do so, and all its terms and conditions for
copying, distributing or modifying the Program or works based on it.
Chapter 20: GNU GENERAL PUBLIC LICENSE 449
6. Each time you redistribute the Program (or any work based on the Program), the
recipient automatically receives a license from the original licensor to copy, distribute
or modify the Program subject to these terms and conditions. You may not impose
any further restrictions on the recipients’ exercise of the rights granted herein. You are
not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any
other reason (not limited to patent issues), conditions are imposed on you (whether by
court order, agreement or otherwise) that contradict the conditions of this License, they
do not excuse you from the conditions of this License. If you cannot distribute so as
to satisfy simultaneously your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the Program at all. For
example, if a patent license would not permit royalty-free redistribution of the Program
by all those who receive copies directly or indirectly through you, then the only way
you could satisfy both it and this License would be to refrain entirely from distribution
of the Program.
If any portion of this section is held invalid or unenforceable under any particular
circumstance, the balance of the section is intended to apply and the section as a
whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other
property right claims or to contest validity of any such claims; this section has the
sole purpose of protecting the integrity of the free software distribution system, which
is implemented by public license practices. Many people have made generous contri-
butions to the wide range of software distributed through that system in reliance on
consistent application of that system; it is up to the author/donor to decide if he or
she is willing to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence
of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either
by patents or by copyrighted interfaces, the original copyright holder who places the
Program under this License may add an explicit geographical distribution limitation
excluding those countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the limitation as if written
in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General
Public License from time to time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a
version number of this License which applies to it and “any later version”, you have
the option of following the terms and conditions either of that version or of any later
version published by the Free Software Foundation. If the Program does not specify a
version number of this License, you may choose any version ever published by the Free
Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distri-
bution conditions are different, write to the author to ask for permission. For software
Chapter 20: GNU GENERAL PUBLIC LICENSE 450
which is copyrighted by the Free Software Foundation, write to the Free Software Foun-
dation; we sometimes make exceptions for this. Our decision will be guided by the two
goals of preserving the free status of all derivatives of our free software and of promoting
the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLI-
CABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPY-
RIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS
IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST
OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an
interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type ‘show w’. This is free software, and you are welcome
to redistribute it under certain conditions; type ‘show c’
for details.
The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the
General Public License. Of course, the commands you use may be called something other
than ‘show w’ and ‘show c’; they could even be mouse-clicks or menu items—whatever suits
your program.
You should also get your employer (if you work as a programmer) or your school, if any,
to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the
names:
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program ‘Gnomovision’
(which makes passes at compilers) written
by James Hacker.
Concept Index
A R
ACIA (Swiftlink, Turbo232). . . . . . . . . . . . . . . . . . . 153 reSID resampling passband . . . . . . . . . . . . . . . . . . . 147
Audio buffer size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 reSID samping method. . . . . . . . . . . . . . . . . . . . . . . . 146
REU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
C
Converting X64 files into D64 . . . . . . . . . . . . . . . . . . 22 S
Sample rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Sampler Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
D Sampler File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
DigiMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Sampler Gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Double-scan mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Second SID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Double-size mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Second SID base address . . . . . . . . . . . . . . . . . . . . . . 146
DS12C887 RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 SFX Sound Expander . . . . . . . . . . . . . . . . . . . . . . . . . 153
DWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 SFX Sound Sampler . . . . . . . . . . . . . . . . . . . . . . . . . . 153
SID filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
SID models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
E Sound buffer size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Ethernet (The Final Ethernet, RR-Net) . . . . . . . 153 Sound speed adjustment . . . . . . . . . . . . . . . . . . . . . . . 73
Sound suspend time. . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Sound syncronization . . . . . . . . . . . . . . . . . . . . . . . . . . 73
G Sprite collision detection . . . . . . . . . . . . . . . . . . . . . . 141
GEO-RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
H T
Toggling reSID emulation . . . . . . . . . . . . . . . . . . . . . 146
HRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Turning sound playback on/off . . . . . . . . . . . . . . . . . 73
HRG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
L V
Limiting emulation speed . . . . . . . . . . . . . . . . . . . . . . 57 VIC-II color sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Video cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
M
MIDI (Passport, Datel, Maplin, W
Namesoft, Sequential) . . . . . . . . . . . . . . . . . . . . . . 153 Warp speed mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
453
Index of Resources
A Cart6Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Acia1Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 CartridgeFile . . . . . . . . . . . . . . . . . . . . . . 123, 175, 187
Acia1Dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 CartridgeReset . . . . . . . . . . . . . . . . 120, 174, 186, 205
Acia1Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98, 192 CartridgeType . . . . . . . . . . . . . . . . . 121, 160, 174, 186
Acia1Irq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 CB2Lowpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Acia1Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 ChargenCHName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice10d0Readonly . . . . . . . . . . . . . . . . . . . . 83 ChargenDEName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice10d1Readonly . . . . . . . . . . . . . . . . . . . . 83 ChargenFIName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice11d0Readonly . . . . . . . . . . . . . . . . . . . . 83 ChargenFRName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice11d1Readonly . . . . . . . . . . . . . . . . . . . . 83 ChargenIntName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice8d0Readonly . . . . . . . . . . . . . . . . . . . . . 83 ChargenITName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice8d1Readonly . . . . . . . . . . . . . . . . . . . . . 83 ChargenName . . . . . 157, 170, 172, 186, 193, 205, 208
AttachDevice9d0Readonly . . . . . . . . . . . . . . . . . . . . . 83 ChargenNOName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AttachDevice9d1Readonly . . . . . . . . . . . . . . . . . . . . . 83 ChargenSEName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
AutoPlaybackFrames . . . . . . . . . . . . . . . . . . . . . . . . . . 112 CIA1Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
AutostartBasicLoad . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 CIA2Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
AutostartDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ConfirmOnExit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
AutostartDelayRandom . . . . . . . . . . . . . . . . . . . . . . . . 56 CPClockF83Save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
AutostartHandleTrueDriveEmulation . . . . . . . . . 55 CPMCart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
AutostartOnDoubleClick . . . . . . . . . . . . . . . . . . . . . . 56
CPUswitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
AutostartPrgDiskImage . . . . . . . . . . . . . . . . . . . . . . . 55
Crtc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
AutostartPrgMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
CrtcAspectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
AutostartRunWithColon . . . . . . . . . . . . . . . . . . . . . . . 55
CrtcAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
AutostartTapeBasicLoad . . . . . . . . . . . . . . . . . . . . . . 55
AutostartWarp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 CrtcAudioLeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
CrtcColorBrightness . . . . . . . . . . . . . . . . . . . . . . . . 195
CrtcColorContrast . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
B CrtcColorGamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
CrtcColorSaturation . . . . . . . . . . . . . . . . . . . . . . . . 195
Basic1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
CrtcColorTint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Basic64Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
CrtcDoubleScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
BasicHiName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
CrtcDoubleSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
BasicLoName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
BasicName . . . . . . . 157, 170, 185, 191, 194, 206, 208 CrtcExternalPalette . . . . . . . . . . . . . . . . . . . . . . . . 195
BBRTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 CrtcFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
BinaryMonitorServer . . . . . . . . . . . . . . . . . . . . . . . . 107 CrtcFlipX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
BinaryMonitorServerAddress . . . . . . . . . . . . . . . . 107 CrtcFlipY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
BoardType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 CrtcFullscreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
BurstMod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158, 172 CrtcFullscreenCustomHeight . . . . . . . . . . . . . . . . 213
CrtcFullscreenCustomWidth. . . . . . . . . . . . . . . . . . 213
CrtcFullscreenMode . . . . . . . . . . . . . . . . . . . . . . . . . . 213
C CrtcGLFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
c1hiName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 CrtcPALBlur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
c1loName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 CrtcPaletteFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
c2hiName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 CrtcPALScanLineShade . . . . . . . . . . . . . . . . . . . . . . . 195
c2loName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 CrtcRotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
c64dtvromrw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 CrtcShowStatusbar . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
C128ColumnKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 CrtcStretchVertical . . . . . . . . . . . . . . . . . . . . . . . . 195
C128FullBanks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 CrtcVideoCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
C128HideVDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 CrtcVSync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
C64_256Kbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
C64_256Kfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Cart1Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Cart2Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Cart4Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Index of Resources 454
D Drive11ParallelCable . . . . . . . . . . . . . . . . . . . . . . . . 80
DatasetteResetWithCPU . . . . . . . . . . . . . . . . . . . . . . . 77 Drive11ProfDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DatasetteSound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Drive11RAM2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DatasetteSoundVolume . . . . . . . . . . . . . . . . . . . . . . . . 77 Drive11RAM4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DatasetteSpeedTuning . . . . . . . . . . . . . . . . . . . . . . . . 77 Drive11RAM6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DatasetteTapeAzimuthError . . . . . . . . . . . . . . . . . . . 77 Drive11RAM8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DatasetteTapeWobbleAmplitude . . . . . . . . . . . . . . . 77 Drive11RAMA000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DatasetteTapeWobbleFrequency . . . . . . . . . . . . . . . 77 Drive11RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
DatasetteZeroGapDelay . . . . . . . . . . . . . . . . . . . . . . . 77 Drive11RTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DebugCartEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Drive11StarDos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DiagPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Drive11SuperCard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DIGIBLASTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Drive11TrueEmulation . . . . . . . . . . . . . . . . . . . . . . . . 79
DIGIMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153, 177 Drive11Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DIGIMAXbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153, 177 Drive11WobbleAmplitude . . . . . . . . . . . . . . . . . . . . . . 82
Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Drive11WobbleFrequency . . . . . . . . . . . . . . . . . . . . . . 82
DoCoreDump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Drive1CPU_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
DosName1001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive2CPU_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
DosName1540 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive3CPU_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
DosName1541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8ExtendImagePolicy . . . . . . . . . . . . . . . . . . . . . 81
DosName1541ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8FixedSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
DosName1551 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8IdleMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
DosName1570 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8ParallelCable. . . . . . . . . . . . . . . . . . . . . . . . . . 80
DosName1571 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8ProfDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DosName1571cr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8RAM2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName1581 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8RAM4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8RAM6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName2031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8RAM8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName2040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8RAMA000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName3040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
DosName4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8RTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DosName4040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8StarDos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
DosName9000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Drive8SuperCard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DosNameCMDHD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive8TrueEmulation. . . . . . . . . . . . . . . . . . . . . . . . . . 79
DQBB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Drive8Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
DQBBfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Drive8WobbleAmplitude . . . . . . . . . . . . . . . . . . . . . . . 82
DQBBImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Drive8WobbleFrequency . . . . . . . . . . . . . . . . . . . . . . . 82
Drive0CPU_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Drive9ExtendImagePolicy . . . . . . . . . . . . . . . . . . . . . 81
Drive10ExtendImagePolicy . . . . . . . . . . . . . . . . . . . . 81 Drive9FixedSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Drive10FixedSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive9IdleMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Drive10IdleMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive9ParallelCable. . . . . . . . . . . . . . . . . . . . . . . . . . 80
Drive10ParallelCable . . . . . . . . . . . . . . . . . . . . . . . . 80 Drive9ProfDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Drive10ProfDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Drive9RAM2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10RAM2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9RAM4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10RAM4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9RAM6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10RAM6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9RAM8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10RAM8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9RAMA000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10RAMA000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Drive10RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Drive9RTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Drive10RTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Drive9StarDos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Drive10StarDos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Drive9SuperCard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Drive10SuperCard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Drive9TrueEmulation. . . . . . . . . . . . . . . . . . . . . . . . . . 79
Drive10TrueEmulation . . . . . . . . . . . . . . . . . . . . . . . . 79 Drive9Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Drive10Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Drive9WobbleAmplitude . . . . . . . . . . . . . . . . . . . . . . . 82
Drive10WobbleAmplitude . . . . . . . . . . . . . . . . . . . . . . 82 Drive9WobbleFrequency . . . . . . . . . . . . . . . . . . . . . . . 82
Drive10WobbleFrequency . . . . . . . . . . . . . . . . . . . . . . 82 DriveProfDOS1571Name . . . . . . . . . . . . . . . . . . . . . . . . 83
Drive11ExtendImagePolicy . . . . . . . . . . . . . . . . . . . . 81 DriveSoundEmulation. . . . . . . . . . . . . . . . . . . . . . . . . . 79
Drive11FixedSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 DriveSoundEmulationVolume . . . . . . . . . . . . . . . . . . . 80
Drive11IdleMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 DriveStarDosName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Index of Resources 455
DriveSuperCardName . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 FSDevice10Dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DS12C887RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153, 177 FSDevice10HideCBMFiles . . . . . . . . . . . . . . . . . . . . . . 90
DS12C887RTCbase . . . . . . . . . . . . . . . . . . . . . . . . 153, 177 FSDevice10SaveP00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DS12C887RTCRunMode . . . . . . . . . . . . . . . . . . . . . 153, 177 FSDevice11ConvertP00 . . . . . . . . . . . . . . . . . . . . . . . . 90
DS12C887RTCSave . . . . . . . . . . . . . . . . . . . . . . . . 153, 177 FSDevice11Dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DtvBlitterLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 FSDevice11HideCBMFiles . . . . . . . . . . . . . . . . . . . . . . 90
DtvDMALog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 FSDevice11SaveP00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DtvFlashLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 FSDevice8ConvertP00. . . . . . . . . . . . . . . . . . . . . . . . . . 90
DTVFlashRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 FSDevice8Dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DTVHummerFlashName . . . . . . . . . . . . . . . . . . . . . . . . . . 171 FSDevice8HideCBMFiles . . . . . . . . . . . . . . . . . . . . . . . 90
DTVNTSCV2FlashName . . . . . . . . . . . . . . . . . . . . . . . . . . 170 FSDevice8SaveP00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DTVNTSCV3FlashName . . . . . . . . . . . . . . . . . . . . . . . . . . 170 FSDevice9ConvertP00. . . . . . . . . . . . . . . . . . . . . . . . . . 90
DTVPALV2FlashName . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 FSDevice9Dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DTVPALV3FlashName . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 FSDevice9HideCBMFiles . . . . . . . . . . . . . . . . . . . . . . . 90
DtvRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 FSDevice9SaveP00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
DualWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 FSDeviceLongNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
FSDeviceOverwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
FSFlashDir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
E FullscreenDecorations . . . . . . . . . . . . . . . . . . . . . . 217
EasyFlashJumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 FunctionHighName . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
EasyFlashOptimizeCRT . . . . . . . . . . . . . . . . . . . . . . . 123 FunctionLowName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
EasyFlashWriteCRT . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
EditorName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
EoiBlank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 G
ETHERNET_DISABLED . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
GenericCartridgeFile2000 . . . . . . . . . . . . . . . . . . . 175
ETHERNET_DRIVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
ETHERNET_INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . 103 GenericCartridgeFile4000 . . . . . . . . . . . . . . . . . . . 175
ETHERNETCART_ACTIVE . . . . . . . . . . . . . . . . . . . . . . . . 154 GenericCartridgeFile6000 . . . . . . . . . . . . . . . . . . . 175
ETHERNETCARTBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 GenericCartridgeFileA000 . . . . . . . . . . . . . . . . . . . 175
ETHERNETCARTMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 GenericCartridgeFileB000 . . . . . . . . . . . . . . . . . . . 175
EventEndSnapshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 GEORAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154, 176
EventImageInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 GEORAMfilename . . . . . . . . . . . . . . . . . . . . . . . . . 154, 176
EventSnapshotDir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 GEORAMImageWrite . . . . . . . . . . . . . . . . . . . . . . . 154, 176
EventStartMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 GEORAMIOSwap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
EventStartSnapshot . . . . . . . . . . . . . . . . . . . . . . . . . . 242 GEORAMsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154, 176
ExitScreenshotName . . . . . . . . . . . . . . . . . . . . . . . . . . 211 GlueLogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158, 172
ExitScreenshotName1 . . . . . . . . . . . . . . . . . . . . . . . . 211 GMod128EEPROMImage . . . . . . . . . . . . . . . . . . . . . . . . . . 160
ExpertCartridgeEnabled . . . . . . . . . . . . . . . . . . . . . 123 GMod128EEPROMRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
ExpertCartridgeMode . . . . . . . . . . . . . . . . . . . . . . . . 123 GMod128FlashWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Expertfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 GMod2EEPROMImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
ExpertImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 GMod2EEPROMRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
GMod2FlashWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
GMod3FlashWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
F Go64Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
FFMPEGAudioBitrate . . . . . . . . . . . . . . . . . . . . . . . . . . 239
FFMPEGAudioCodec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
FFMPEGFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
H
FFMPEGVideoBitrate . . . . . . . . . . . . . . . . . . . . . . . . . . 239 H6809RomAName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FFMPEGVideoCodec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 H6809RomBName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FFMPEGVideoHalveFramerate. . . . . . . . . . . . . . . . . . 239 H6809RomCName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FileSystemDevice10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 H6809RomDName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FileSystemDevice11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 H6809RomEName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FileSystemDevice8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 H6809RomFName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
FileSystemDevice9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 HotkeyFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
FinalExpansionWriteBack . . . . . . . . . . . . . . . . . . . . 175 HummerADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
FlashTrueFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 HVSCRoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
FliplistName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
FSDevice10ConvertP00 . . . . . . . . . . . . . . . . . . . . . . . . 90
Index of Resources 456
I J
IDE64AutodetectSize1 . . . . . . . . . . . . . . . . . . . . . . . 124 JAMAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
IDE64AutodetectSize2 . . . . . . . . . . . . . . . . . . . . . . . 124 JiffySwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
IDE64AutodetectSize3 . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice1 . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 214, 218
IDE64AutodetectSize4 . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64ClockPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyDevice11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Cylinders1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice2 . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 214, 218
IDE64Cylinders2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice3 . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 214, 218
IDE64Cylinders3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice4 . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 214, 218
IDE64Cylinders4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Heads1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Heads2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Heads3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Heads4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyDevice9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IDE64Image1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyFuzz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
IDE64Image2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyMapFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
IDE64Image3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyMenuControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
IDE64Image4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyOpposite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
IDE64RTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyPort10Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IDE64Sectors1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort11Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IDE64Sectors2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort1Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
IDE64Sectors3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort2Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
IDE64Sectors4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort3Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IDE64USBServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyPort4Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IDE64USBServerAddress . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort5Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IDE64version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 JoyPort6Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IEC_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 JoyPort7Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IECDevice10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 JoyPort8Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IECDevice11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 JoyPort9Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
IECDevice4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 JoyStick10AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IECDevice5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 JoyStick10AutoFireMode . . . . . . . . . . . . . . . . . . . . . . 67
IECDevice6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 JoyStick10AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . 68
IECDevice7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 JoyStick11AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IECDevice8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 JoyStick11AutoFireMode . . . . . . . . . . . . . . . . . . . . . . 67
JoyStick11AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . 68
IECDevice9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
JoyStick1AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IECReset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158, 172
JoyStick1AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IEEE488 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125, 177
JoyStick1AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
IEEE488Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick2AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IEEEFlash64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick2AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IEEEFlash64Dev4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick2AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
IEEEFlash64Dev8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick3AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IEEEFlash64Dev910 . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick3AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IEEEFlash64Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
JoyStick3AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
InitialWarpMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
JoyStick4AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
InternalFunctionName . . . . . . . . . . . . . . . . . . . . . . . 165
JoyStick4AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
InternalFunctionROM . . . . . . . . . . . . . . . . . . . . . . . . 165
JoyStick4AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
InternalFunctionROMRTCSave . . . . . . . . . . . . . . . . 165 JoyStick5AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IO2RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 JoyStick5AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IO3RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 JoyStick5AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
IOCollisionHandling . . . . . . . . . . . . . . . . . . . . 120, 175 JoyStick6AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IOSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 JoyStick6AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IsepicCartridgeEnabled . . . . . . . . . . . . . . . . . . . . . 125 JoyStick6AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
Isepicfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyStick7AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
IsepicImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyStick7AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
IsepicSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 JoyStick7AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68
JoyStick8AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
JoyStick8AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67
Index of Resources 457
JoyStick8AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68 KeySet2SouthEast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
JoyStick9AutoFire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 KeySet2SouthWest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
JoyStick9AutoFireMode . . . . . . . . . . . . . . . . . . . . . . . 67 KeySet2West . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
JoyStick9AutoFireSpeed . . . . . . . . . . . . . . . . . . . . . . 68 KeySetEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
JoyThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 KoalaOversizeHandling . . . . . . . . . . . . . . . . . . . . . . 238
KoalaTEDLumHandling . . . . . . . . . . . . . . . . . . . . . . . . 238
KoalaUndersizeHandling . . . . . . . . . . . . . . . . . . . . . 238
K
KbdbufDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
KbdStatusbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 L
KeepMonitorOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 LogFileName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Kernal64Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalCHName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalDEName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalFIName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalFRName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalIntName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 LTKimage5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalITName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKimage6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalName . . . . . . 157, 170, 185, 191, 194, 205, 208 LTKio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalNOName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 LTKport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalRev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157, 208 LTKserial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KernalSEName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
KeyboardMapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
KeyboardType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 M
KeymapIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 MachinePowerFrequency . . . 158, 167, 172, 206, 209
KeymapPosFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 MachineType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
KeymapSymFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 MachineVideoStandard . . . . 158, 167, 171, 172, 177,
KeymapUserPosFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 192, 200, 206, 209
KeymapUserSymFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 MagicVoiceCartridgeEnabled . . . . . . . . . . . . . . . . 126
KeySet1East . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MagicVoiceImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
KeySet1Fire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MainCPU_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
KeySet1Fire2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MegaCartNvRAMfilename . . . . . . . . . . . . . . . . . . . . . . 175
KeySet1Fire3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MegaCartNvRAMWriteBack . . . . . . . . . . . . . . . . . . . . . 175
KeySet1Fire4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MemoryHack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158, 192
KeySet1Fire5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1Fire6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1Fire7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1Fire8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyEnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1North . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyExit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
KeySet1NorthEast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyHome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1NorthWest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyLeft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1South . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
KeySet1SouthEast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyPageDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1SouthWest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyPageUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet1West . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 MenuKeyRight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet2East . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MenuKeySelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet2Fire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MenuKeyUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
KeySet2Fire2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIDriver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
KeySet2Fire3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
KeySet2Fire4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIInDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
KeySet2Fire5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIInName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
KeySet2Fire6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
KeySet2Fire7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
KeySet2Fire8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIOutDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
KeySet2North . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MIDIOutName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
KeySet2NorthEast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MinipaintOversizeHandling. . . . . . . . . . . . . . . . . . 238
KeySet2NorthWest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MinipaintTEDLumHandling . . . . . . . . . . . . . . . . . . . . 238
KeySet2South . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MinipaintUndersizeHandling . . . . . . . . . . . . . . . . 238
Index of Resources 458
MMC64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 P
MMC64_bios_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PaddlesInput1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
MMC64_flashjumper . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PaddlesInput2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
MMC64_revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PauseOnSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
MMC64_RO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PETColour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMC64_sd_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PETColourBG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMC64BIOSfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PETDWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMC64ClockPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PETDWWfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMC64imagefilename . . . . . . . . . . . . . . . . . . . . . . . . . . 126 PETHRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMCRCardImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PETREU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMCRCardRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PETREUfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMCRClockPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PETREUsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
MMCREEPROMImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PLUS256Kfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
MMCREEPROMRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PLUS60Kbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
MMCRImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PLUS60Kfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Printer4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MMCRRescueMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Printer4Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MMCRSDType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Printer4Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
ModelLine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Printer4TextDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorBG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorChisLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer5Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MonitorFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer5Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MonitorFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer5TextDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorHeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorLogEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Printer6Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MonitorLogFileName . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Printer6Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MonitorScrollbackLines . . . . . . . . . . . . . . . . . . . . . 108 Printer6TextDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Printer7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
MonitorServerAddress . . . . . . . . . . . . . . . . . . . . . . . 107 PrinterTextDevice1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorWidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 PrinterTextDevice2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorXPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 PrinterTextDevice3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MonitorYPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 PrinterUserportDriver . . . . . . . . . . . . . . . . . . . . . . . 94
Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 PrinterUserportOutput . . . . . . . . . . . . . . . . . . . . . . . 94
PrinterUserportTextDevice . . . . . . . . . . . . . . . . . . . 94
ps2mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
PSIDKeepEnv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
N PSIDTune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
NativeMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
NetworkControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 R
NetworkServerBindAddress . . . . . . . . . . . . . . . . . . . 114 Ram08. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
NetworkServerName . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Ram1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
NetworkServerPort . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Ram2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Ram4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Ram6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Ram9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
O RamA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
OCPMultiColorHandling . . . . . . . . . . . . . . . . . . . . . . 238 RAMBlock0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
OCPOversizeHandling . . . . . . . . . . . . . . . . . . . . . . . . 238 RAMBlock1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
RAMBlock2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
OCPTEDLumHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
RAMBlock3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
OCPUndersizeHandling . . . . . . . . . . . . . . . . . . . . . . . 238
RAMBlock5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
RamC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
RAMCART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
RAMCART_RO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
RAMCARTfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
RAMCARTImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
RAMCARTsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Index of Resources 459
RAMInitPatternInvert . . . . . . . . . . . . . . . . . . . . . . . 111 S
RAMInitPatternInvertValue. . . . . . . . . . . . . . . . . . 111 SampleName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
RAMInitRandomChance . . . . . . . . . . . . . . . . . . . . . . . . 111 SamplerDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
RAMInitRepeatRandom . . . . . . . . . . . . . . . . . . . . . . . . 111 SamplerGain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
RAMInitStartRandom . . . . . . . . . . . . . . . . . . . . . . . . . . 111 SaveResourcesOnExit . . . . . . . . . . . . . . . . . . . . . . . . 211
RAMInitStartValue . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 SBDIGIMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RAMInitValueInvert . . . . . . . . . . . . . . . . . . . . . . . . . . 110 SBDIGIMAXbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RAMInitValueOffset . . . . . . . . . . . . . . . . . . . . . . . . . . 111 SBETFE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RAMLINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 SBETFEbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
RAMLINKBIOSfilename . . . . . . . . . . . . . . . . . . . . . . . . 127 SCPU64Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
RAMLINKfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Screen2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
RAMLINKImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SDL2Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
RAMLINKmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SDLBitdepth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
RAMLINKRTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SDLLimitMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
RAMLINKsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SFXSoundExpander . . . . . . . . . . . . . . . . . . . . . . . 154, 176
RamSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192, 193, 205 SFXSoundExpanderChip. . . . . . . . . . . . . . . . . . . 154, 176
RefreshOnBreak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 SFXSoundExpanderIOSwap . . . . . . . . . . . . . . . . . . . . . 176
REU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 SFXSoundSampler . . . . . . . . . . . . . . . . . . . . . . . . 155, 176
REUfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 SFXSoundSamplerIOSwap . . . . . . . . . . . . . . . . . . . . . . 176
REUImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Sid2AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
REUsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Sid3AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
RGCDrevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Sid4AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
RomModule9Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Sid5AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
RomModuleAName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Sid6AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
RomModuleBName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Sid7AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
RRBankJumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Sid8AddressStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RRBiosWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SidAddress . . . . . . . . . . . . . . . . . . . . . . . . . 176, 191, 198
RRClockPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SidCart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176, 191, 198
RRFfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SIDCartJoy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
RRFImageWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SidClock . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177, 191, 198
RRFlashJumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SidEngine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RRNETMK3_bios_write . . . . . . . . . . . . . . . . . . . . . . . . 128 SidFilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RRNETMK3_flashjumper . . . . . . . . . . . . . . . . . . . . . . . 128 SidModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RRrevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SidResid8580FilterBias . . . . . . . . . . . . . . . . . . . . . 149
RsDevice1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 SidResid8580Gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice1Baud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SidResid8580Passband . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice1ip232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SidResidEnableRawOutput . . . . . . . . . . . . . . . . . . . . 149
RsDevice2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 SidResidFilterBias . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice2Baud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SidResidGain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice2ip232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SidResidPassband . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 SidResidSampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
RsDevice3Baud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SidStereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
RsDevice3ip232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SIMMSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
RsDevice4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 SmartMouseRTCSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
RsDevice4Baud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RsDevice4ip232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SoundBufferSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RsUserBaud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SoundDeviceArg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
RsUserCTSInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SoundDeviceName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RsUserDCDInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 SoundFragmentSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
RsUserDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SoundOutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
SoundRecordDeviceArg . . . . . . . . . . . . . . . . . . . . . . . . 75
RsUserDSRInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
SoundRecordDeviceName . . . . . . . . . . . . . . . . . . . . . . . 75
RsUserDTRInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
SoundSampleRate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RsUserRIInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
SoundVolume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
RsUserRTSInv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
SpeechEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
RsUserUP9600 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
SpeedSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
SSRamExpansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Index of Resources 460
StartMinimized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 V
SuperPET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 VDC64KB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
VDCAspectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
VDCAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
VDCAudioLeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
T VDCColorBrightness . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapecartLogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 VDCColorContrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapecartOptimizeTCRT . . . . . . . . . . . . . . . . . . . . . . . 103 VDCColorGamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapecartTCRTFilename . . . . . . . . . . . . . . . . . . . . . . . 104 VDCColorSaturation . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapecartUpdateTCRT . . . . . . . . . . . . . . . . . . . . . . . . . . 103 VDCColorTint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapePort1Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 VDCDoubleScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TapePort2Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 VDCDoubleSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDAspectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCExternalPalette . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDAudioLeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCFlipX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDBorderMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCFlipY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
VDCFullscreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDColorBrightness . . . . . . . . . . . . . . . . . . . . . . . . . . 188
VDCFullscreenCustomHeight. . . . . . . . . . . . . . . . . . 213
TEDColorContrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
VDCFullscreenCustomWidth . . . . . . . . . . . . . . . . . . . 213
TEDColorGamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
VDCFullscreenMode . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
TEDColorSaturation . . . . . . . . . . . . . . . . . . . . . . . . . . 187
VDCGLFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDColorTint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCPALBlur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDDoubleScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VDCPaletteFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDDoubleSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VDCPALScanLineShade . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDExternalPalette . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VDCRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCRotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDFlipX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCShowStatusbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDFlipY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 VDCStretchVertical . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDFullscreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VDCVideoCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TEDFullscreenCustomHeight. . . . . . . . . . . . . . . . . . 213 VDCVSync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TEDFullscreenCustomWidth . . . . . . . . . . . . . . . . . . . 213 VFLImod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
TEDFullscreenMode . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 VICAspectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
TEDGLFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VICAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
TEDPALBlur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VICAudioLeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
TEDPALDelaylineType . . . . . . . . . . . . . . . . . . . . . . . . 188 VICBorderMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
TEDPaletteFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VICColorBrightness . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDPALOddLineOffset . . . . . . . . . . . . . . . . . . . . . . . . 188 VICColorContrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDPALOddLinePhase . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VICColorGamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDPALScanLineShade . . . . . . . . . . . . . . . . . . . . . . . . 188 VICColorSaturation . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDRotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 VICColorTint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDShowStatusbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 VICDoubleScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDVideoCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VICDoubleSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
VICExternalPalette . . . . . . . . . . . . . . . . . . . . . . . . . . 181
TEDVSync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
VICFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
TraceMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
VicFlashPluginWriteBack . . . . . . . . . . . . . . . . . . . . 175
VICFlipX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
VICFlipY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
U VICFullscreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
VICFullscreenCustomHeight. . . . . . . . . . . . . . . . . . 213
UltiMemWriteBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 VICFullscreenCustomWidth . . . . . . . . . . . . . . . . . . . 213
UserportDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 VICFullscreenMode . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
UserportRTC58321aSave . . . . . . . . . . . . . . . . . . . . . . 105 VICGLFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
UserportRTCDS1307Save . . . . . . . . . . . . . . . . . . . . . . 105 VICIIAspectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
VICIIAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
VICIIAudioLeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
VICIIBorderMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
VICIICheckSbColl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
VICIICheckSsColl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
461
+ -autoplaybackframes . . . . . . . . . . . . . . . . . . . . . . . . 113
+cart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129, 206 -autostart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 27
-autostart-delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
-autostart-delay-random,
– +autostart-delay-random . . . . . . . . . . . . . . . . . . . 57
-autostart-handle-tde,
--check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
+autostart-handle-tde . . . . . . . . . . . . . . . . . . . . . 56
--options-file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
-autostart-on-doubleclick,
--types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
+autostart-on-doubleclick . . . . . . . . . . . . . . . . 57
--verbose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
--version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 -autostart-warp, +autostart-warp . . . . . . . . . . . 57
-? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 285 -autostartprgdiskimage . . . . . . . . . . . . . . . . . . . . . . 56
-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -autostartprgmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -autostarttapoffset. . . . . . . . . . . . . . . . . . . . . . . . . . 56
-10d1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -autostartwithcolon, +autostartwithcolon . . 56
-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
-11d1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -basic . . . . . . . . . . . . . . . . 158, 171, 186, 199, 206, 209
-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -basic <Name> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
-256kbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -basic1, +basic1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
-256kimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -basic64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
-40col . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 -basichi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
-6809romA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -basiclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
-6809romB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -basicload, +basicload. . . . . . . . . . . . . . . . . . . . . . . 56
-6809romC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -bbrtcsave, +bbrtcsave. . . . . . . . . . . . . . . . . . . . . . . 62
-6809romD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -binarymonitor, +binarymonitor . . . . . . . . . . . . 109
-6809romE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -binarymonitoraddress . . . . . . . . . . . . . . . . . . . . . . 109
-6809romF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 -burstmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157, 173
-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280, 285
-80col . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 -c128fullbanks, +c128fullbanks . . . . . . . . . . . . 168
-8d1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -c1hi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -c1lo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
-9d1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -c2hi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
-acia, +acia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 -c2lo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
-acia1, +acia1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 -c64dtvromrw, +c64dtvromrw . . . . . . . . . . . . . . . . . 169
-acia1base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 -cart, +cart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
-acia1irq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 -cart1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-acia1mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 -cart16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-addconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 -cart2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177, 186, 207
-attach10d1ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cart4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177, 186, 207
-attach10d1rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cart6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177, 186, 207
-attach10ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cart8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach10rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach11d1ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartar2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach11d1rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartar3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach11ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartar4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach11rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartar5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach8d1ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178, 186
-attach8d1rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
-attach8ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbb3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach8rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbb4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach9d1ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbb8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach9d1rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbb9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
-attach9ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
-attach9rw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -cartB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178, 186
-autoload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 -cartcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Index of Command-line options 463
-controlport9device. . . . . . . . . . . . . . . . . . . . . . . . . . 61 -dos1541II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-core, +core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 -dos1551 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-cpclockf83save, +cpclockf83save . . . . . . . . . . 104 -dos1570 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-cpmcart, +cpmcart . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -dos1571 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-cpu6502 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -dos1571cr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-cpu6809 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -dos1581 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-cpuprog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -dos2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-crtc, +crtc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 -dos2031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
-Crtcaspect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -dos2040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
-Crtcaspectmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -dos3040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
-Crtcaudioleak, +Crtcaudioleak . . . . . . . . . . . . 197 -dos4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-Crtcbrightness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -dos4040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
-Crtccontrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -dos9000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
-Crtccrtblur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -dosCMDHD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-Crtccrtscanlineshade . . . . . . . . . . . . . . . . . . . . . . 197 -dqbb, +dqbb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
-Crtcdscan, +Crtcdscan . . . . . . . . . . . . . . . . . . . . . 196 -dqbbimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
-Crtcdsize, +Crtcdsize . . . . . . . . . . . . . . . . . . . . . 196 -dqbbimagerw, +dqbbimagerw . . . . . . . . . . . . . . . . . 130
-Crtcextpal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 -drive10extend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-Crtcfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 -drive10fixedsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-Crtcflipx, +Crtcflipx . . . . . . . . . . . . . . . . . . . . . 197 -drive10idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-Crtcflipy, +Crtcflipy . . . . . . . . . . . . . . . . . . . . . 198 -drive10profdos, +drive10profdos . . . . . . . . . . . 88
-CRTCfull, +CRTCfull . . . . . . . . . . . . . . . . . . . . . . . . 197 -drive10ram2000, +drive10ram2000 . . . . . . . . . . . 87
-Crtcfullheight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 -drive10ram4000, +drive10ram4000 . . . . . . . . . . . 87
-CRTCfullmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 -drive10ram6000, +drive10ram6000 . . . . . . . . . . . 87
-Crtcfullwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 -drive10ram8000, +drive10ram8000 . . . . . . . . . . . 88
-Crtcgamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -drive10rama000, +drive10rama000 . . . . . . . . . . . 88
-Crtcglfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -drive10rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-Crtcintpal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 -drive10rtcsave, +drive10rtcsave . . . . . . . . . . . 84
-Crtcpalette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 -drive10stardos, +drive10stardos . . . . . . . . . . . 88
-Crtcrotate, +Crtcrotate . . . . . . . . . . . . . . . . . . . 198 -drive10supercard, +drive10supercard . . . . . . 88
-Crtcsaturation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -drive10truedrive, +drive10truedrive . . . . . . 84
-Crtcshowstatusbar, +Crtcshowstatusbar . . . 197 -drive10type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-CRTCstretchvertical, -drive10wobbleamplitude . . . . . . . . . . . . . . . . . . . . . 85
+CRTCstretchvertical . . . . . . . . . . . . . . . . . . . . . 196 -drive10wobblefrequency . . . . . . . . . . . . . . . . . . . . . 85
-Crtctint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 -drive11extend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-Crtcvcache, +Crtcvcache . . . . . . . . . . . . . . . . . . . 196 -drive11fixedsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-Crtcvsync, +Crtcvsync . . . . . . . . . . . . . . . . . . . . . 197 -drive11idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 -drive11profdos, +drive11profdos . . . . . . . . . . . 88
-datasettesound, +datasettesound . . . . . . . . . . . 78 -drive11ram2000, +drive11ram2000 . . . . . . . . . . . 87
-debug, +debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 -drive11ram4000, +drive11ram4000 . . . . . . . . . . . 87
-debugcart, +debugcart . . . . . . . . . . . . . . . . . . . . . 112 -drive11ram6000, +drive11ram6000 . . . . . . . . . . . 87
-default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 -drive11ram8000, +drive11ram8000 . . . . . . . . . . . 88
-device10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 -drive11rama000, +drive11rama000 . . . . . . . . . . . 88
-device11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 -drive11rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-device4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 -drive11rtcsave, +drive11rtcsave . . . . . . . . . . . 84
-device5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -drive11stardos, +drive11stardos . . . . . . . . . . . 88
-device6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -drive11supercard, +drive11supercard . . . . . . 88
-device7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -drive11truedrive, +drive11truedrive . . . . . . 84
-device8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 -drive11type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
-device9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 -drive11wobbleamplitude . . . . . . . . . . . . . . . . . . . . . 85
-diagpin, +diagpin . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -drive11wobblefrequency . . . . . . . . . . . . . . . . . . . . . 85
-digiblaster, +digiblaster . . . . . . . . . . . . . . . . . 191 -drive8extend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-digimax, +digimax . . . . . . . . . . . . . . . . . . . . . 155, 179 -drive8fixedsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
-digimaxbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155, 179 -drive8idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
-directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 -drive8profdos, +drive8profdos . . . . . . . . . . . . . 88
-dos1001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 -drive8ram2000, +drive8ram2000 . . . . . . . . . . . . . 87
-dos1540 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 -drive8ram4000, +drive8ram4000 . . . . . . . . . . . . . 87
-dos1541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 -drive8ram6000, +drive8ram6000 . . . . . . . . . . . . . 87
Index of Command-line options 465
-ntsc. . . 159, 167, 171, 172, 181, 192, 201, 207, 209 -r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
-ntscold . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159, 172, 209 -ram08, +ram08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-ntscv2romimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 -ram1, +ram1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-ntscv3romimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 -ram2, +ram2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 -ram4, +ram4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-o <name> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 -ram6, +ram6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-ocpmc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 -ramC, +ramC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-ocpoversize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 -ramcart, +ramcart . . . . . . . . . . . . . . . . . . . . . . . . . . 137
-ocptedlum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 -ramcartimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-ocpundersize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 -ramcartimagerw, +ramcartimagerw . . . . . . . . . . 138
-p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 -ramcartro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-paddles1inputjoyaxis . . . . . . . . . . . . . . . . . . . . . . . 73 -ramcartrw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-paddles1inputmouse. . . . . . . . . . . . . . . . . . . . . . . . . . 73 -ramcartsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-paddles2inputjoyaxis . . . . . . . . . . . . . . . . . . . . . . . 73 -raminitpatterninvert . . . . . . . . . . . . . . . . . . . . . . 111
-paddles2inputmouse. . . . . . . . . . . . . . . . . . . . . . . . . . 73 -raminitpatterninvertvalue . . . . . . . . . . . . . . . . 111
-pal . . . . 159, 167, 171, 172, 181, 192, 201, 207, 209 -raminitrandomchance . . . . . . . . . . . . . . . . . . . . . . . 112
-paln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159, 172, 209 -raminitrepeatrandom . . . . . . . . . . . . . . . . . . . . . . . 111
-palv2romimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 -raminitstartrandom . . . . . . . . . . . . . . . . . . . . . . . . 111
-palv3romimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 -raminitstartvalue . . . . . . . . . . . . . . . . . . . . . . . . . . 111
-parallel10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 -raminitvalueinvert . . . . . . . . . . . . . . . . . . . . . . . . 111
-parallel11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 -raminitvalueoffset . . . . . . . . . . . . . . . . . . . . . . . . 111
-parallel8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 -ramlink, +ramlink . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-parallel9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 -ramlinkbios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-pauseonsettings, +pauseonsettings . . . . . . . . 219 -ramlinkimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-petdww, +petdww . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 -ramlinkimagerw, +ramlinkimagerw . . . . . . . . . . 138
-petdwwimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 -ramlinkmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-pethre, +pethre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 -ramlinkrtcsave, +ramlinkrtcsave . . . . . . . . . . 138
-petram9, +petram9 . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -ramlinksize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
-petramA, +petramA . . . . . . . . . . . . . . . . . . . . . . . . . . 201 -ramsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192, 201, 207
-petreu, +petreu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 -refreshonbreak, +refreshonbreak . . . . . . . . . . 109
-petreuimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 -remotemonitor, +remotemonitor . . . . . . . . . . . . 109
-petreuramsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 -remotemonitoraddress . . . . . . . . . . . . . . . . . . . . . . 109
-playback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 -resid8580filterbias . . . . . . . . . . . . . . . . . . . . . . . 152
-plus256kimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -resid8580gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-plus60kbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -resid8580pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-plus60kimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 -residfilterbias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-poskeymap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 -residgain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-power50 . . . . . . . . . . . . . . . . . . 159, 167, 172, 207, 209 -residpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-power60 . . . . . . . . . . . . . . . . . . 159, 167, 172, 207, 209 -residrawoutput, +residrawoutput . . . . . . . . . . 153
-pr4drv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -residsamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
-pr4output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -reu, +reu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
-pr4txtdev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -reuimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
-pr5drv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -reuimagerw, +reuimagerw . . . . . . . . . . . . . . . . . . . 156
-pr5output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -reusize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
-pr5txtdev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -rexramfloppyimage . . . . . . . . . . . . . . . . . . . . . . . . . . 139
-pr6drv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -rexramfloppyimagerw,
-pr6output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 +rexramfloppyimagerw . . . . . . . . . . . . . . . . . . . . . 139
-pr6txtdev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -rgcdrev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
-profdos1571 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 -rom9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
-prtxtdev1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -romA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
-prtxtdev2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -romB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
-prtxtdev3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -romsetarchive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-pruserdrv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -romsetarchiveselect . . . . . . . . . . . . . . . . . . . . . . . . 38
-pruseroutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -romsetfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
-prusertxtdev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 -rrbankjumper, +rrbankjumper . . . . . . . . . . . . . . 139
-ps2mouse, +ps2mouse . . . . . . . . . . . . . . . . . . . . . . . . 169 -rrbioswrite, +rrbioswrite . . . . . . . . . . . . . . . . . 139
-q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 -rrclockportdevice . . . . . . . . . . . . . . . . . . . . . . . . . . 139
-qc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 -rrflashjumper, +rrflashjumper . . . . . . . . . . . . 139
Index of Command-line options 469
Table of Contents
1 About VICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 C64 emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 C64DTV emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 C128 emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 VIC20 emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.5 PET emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.6 CBM-II emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.7 SCPU64 emulator features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 The keyboard emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 C64 & VIC20 Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2 C128 Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.3 C16 & Plus4 Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.4 PET Graphics Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.4.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.4.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.5 PET Business Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.5.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.5.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.5.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.5.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.6 CBM2 Keyboard Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.6.1 Symbolic (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.6.2 Positional (US) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.6.3 Symbolic (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.6.4 Positional (DE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 The joystick emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 The disk drive emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.5 Supported file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ii
3 System files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1 ROM files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Keymap files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.2 Control commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.3 Key mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.3.1 Special Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.3.2 Modifier Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3 Palette files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Romset files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.1 Romset command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Hotkeys files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5.1 Hotkeys command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2 Syntax of the hotkeys files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2.2 Directives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2.3 Hotkey mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.3 List of modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.4 List of action names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.5 Syntax highlighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4 Basic operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1 The emulation window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Using the menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3 Getting help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 Using the file selector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5 Using disk and tape images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5.1 “Autostarting” an image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5.2 Using compressed files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5.3 Using Zipcode and Lynx images. . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.6 Using printer emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7 Resetting the machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
iii
8 Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.1 Snapshot usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.2 Snapshot format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.2.1 Emulator modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.2.1.1 x64 modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.2.1.2 x128 modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.2.1.3 xvic modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.2.1.4 xpet modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
8.2.1.5 xcbm2 and xcbm5x0 modules . . . . . . . . . . . . . . . . . . . . . . . 223
8.2.1.6 Drive modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.2.2 Module formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.2.2.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.2.2.2 Module framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.2.2.3 CPU 6502 module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.2.2.4 CPU 6809 module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.2.2.5 CIA module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.2.2.6 VIA module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
8.2.2.7 PIA module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.2.2.8 TPI module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.2.2.9 RIOT module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.2.10 SID module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.2.11 ACIA module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.2.12 VIC-I module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.2.13 VIC-II module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.2.14 CRTC module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.2.2.15 C64 memory module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.2.2.16 C128 memory module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
8.2.2.17 VIC20 memory module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
8.2.2.18 PET memory module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
8.2.2.19 CBM-II memory module . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
8.2.2.20 C500 data module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.2 General commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.3 Monitor state commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.4 Machine state commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
11.5 Memory commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
11.6 Assembly commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.7 Checkpoint commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.8 File commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
11.9 Command file commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11.10 Label commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11.11 Profiling commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
11.12 Resources commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
13 c1541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
13.1 Specifying files in c1541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
13.2 Using quotes and backslashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
13.3 c1541 commands and options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
13.4 Executing shell commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
13.5 c1541 examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
14 cartconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
14.1 cartconv command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
14.2 cartconv supported cartridge types . . . . . . . . . . . . . . . . . . . . . . . . . . 280
14.3 cartconv examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
15 petcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
15.1 petcat command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
15.2 petcat examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
17 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
18 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442