Moreover, a rather complete emulation of the SID sound chip is
provided. All the basic features are implemented as well as
most of the complex ones including sync and ring modulation.
Filters are the only major feature missing at the moment.
The VIC-I video chip is not complete, but already emulates most of the
registers. The inverse text mode is not implemented.
Also sound is implemented, but is still at the experimental stage. If
you think it does not sound right and know how to improve it, feel free
to contact us.
The VIA chips are not cycle exact at the moment.
Both the 40 column and 80 column CRTC video chips are emulated, but
some of the features are not implemented yet (for example, you cannot
make the 80 column CRTC work in 40 column mode). Anyway, most of the
missing features are not very important for average applications.
Sound is available for the PET as well, but as for the VIC20 it is
still under construction (speaker dynamics are not emulated, and this
can give very poor sound output).
Special keys are mapped differently for the VIC20 and C64 emulators and the
PET emulator.
VIC20/C64 mapping:
There are also some keys that perform frequently used commands:
There are two available types of 1541 emulation for the disk image-based
emulation. One of them the DOS level drive emulation. It does
not really emulate the serial line, but patches the kernal ROM
(with the so-called serial traps) so that serial line operations
can be emulated via C language routines. This emulation is very fast, but
only allows use of standard DOS functions (and not even all of them).
The other alternative is a hardware level drive emulation. As you
probably know, the Commodore 1541 disk drive was provided with its own CPU
(a 6502 as the VIC20) and its own RAM and ROM. So, in order to more
closely emulate its features, a complete emulation of this hardware must be
provided and that is what the hardware level emulation does. When
the hardware level emulation is used, the kernal routines are no
longer patched and the serial line is fully emulated. The problem with
this emulation is that it needs a lot of processing power, mainly because
the emulator has to emulate two CPUs instead of one.
The hardware level emulation is only available on the VIC20 and
C64 emulators, and can only be used to emulate one drive at once. As a
consequence, it is only available for unit 8 and disables all the other
drives when activated.
On the other hand, the PETs don't use a serial IEC bus to communicate with
the floppy, instead they use the parallel IEEE488 bus. This bus transfers
byte by byte, as opposed to bit by bit as the C64 and
VIC20 do, so in this case it is feasible to emulate the parallel line
completely while emulating the drive at DOS level only. The IEEE488 line
interpreter maps the drives 8-11 (as described above) to the IEEE488 disk
units, and no kernal traps are needed. The same emulation is available in
the C64, to emulate the Commodore IEEE488 bus interface.
Notice that the native format for disk images is X64; this means
that, although the emulators and utilities can both read and write on
D64 disk images, they never produce D64 files.
You can convert a X64 file back into a D64 file with the
Un*x dd command:
Linux and SGI systems should play sound well without any problems; if you
are running Linux please use the new 2.x kernels, as VICE needs some
features that were not implemented in older versions of the Linux sound
driver.
On the other hand, HP-UX and Solaris machines are known to cause troubles.
If you think you can help debugging the code for these systems, your help
would be really appreciated. We are having troubles finding HP-UX and SUN
consoles to work at...
The names of the available emulators are:
There are several options you can specify on the command line, and the
-help option lists them all. See
below for a detailed description
of all the command-line options.
In order to work properly, the emulators need to load the system ROMs. The
place where they will be searched for depends on the value of the
directory resource. (See
below for a description of what
resources are and how they can be changed)
If directory is empty, the emulator will search for the ROMs in
two places; first of all, it will try to load them from
If a directory has been specified instead, the emulator will
always try to boot only from that directory.
The default ROM names for the VIC20 and C64 emulators are the following:
Special care must be taken as the PET emulator selects the model by
autodetecting (via checksum) the system ROM, so if you load the 3032 ROM it
will behave like a 3032 (40 column), while if you load the 8032 ROM it will
behave like a 8032 (80 column). For this reason, to select the appropriate
PET model you can use the -kernal option or edit the
configuration file as explained in the
appropriate section.
When started, the &emulator will also try to load a RAM image file (default
name is ram) with the same behavior described above. If not
found, the RAM will be initialized as after a power-up.
When the emulator is running, two pop-up menus can be opened by pressing
the right and left mouse button. The `left' menu is used to issue
commands, while the `right' menu can be used to change emulation
settings.
These commands can be used to insert or remove virtual disks and
cassette tapes from the emulated units. Supported formats are
D64 and X64 for disk images (devices 8, 9 and 10)
and T64 for tape images.
While devices 8, 9 and 10 are connected to virtual 1541 disk drives
that are suitable for use with disk images, device 11 is always
connected to a virtual drive that accesses the standard (Un*x) file
system. By using this option, you can specify the path where the
files are read or written.
The VICE emulators all have a built-in ML monitor, and this option
activates it. See below for a
complete description of the monitor commands.
The XDebugger is a simple X11-based tool that allows you to examine
and disassemble the memory contents (still under construction, see
below for a complete
description of the XDebugger).
Run the stand-alone c1541 utility, that must be found
somewhere in your $PATH (see below for a complete description of
c1541).
View the documentation using the browser specified in the
HTMLBrowserCommand resource, whose default value is
netscape %s (see
below to know how this
can be changed).
Reset the emulated machine. ``Power-On Reset'' also resets the RAM
as after a power-up and can be performed by pressing
F12.
Exit the emulator. If the save settings on exit option
is set and settings have changed, it will ask you whether you want
to save them.
Pause the emulation. Select this option again to restart.
Show copyright information, contributors, and copying license.
With this settings, you can control whether the emulator repaints all
the frames or not. With the 1/1 setting, all frames are repainted
and animations are rendered as accurately as possible, but this can
be too slow for certain machines. Lower settings such as
1/2 or 1/3 make animations less smooth but also
need much less computing power.
Specify the maximum emulation speed, relative to the real machine.
You can also enable full speed operation (i.e. the emulator runs as
fast as possible), but this will make the `auto' refresh setting no
longer available.
These can be used to enable or disable the internal sprite-sprite and
sprite-background collision registers. Disabling these registers
will make you invincible in some games (but sometimes also your
enemies become invincible :-)).
With these options, you can specify which devices should be used for
the two joystick ports. The available settings are ``None'', ``Analog
Joystick 0'', ``Analog Joystick 1'', ``Digital Joystick 0'', ``Digital
Joystick 1'', ``Numpad''. This is only available if the configure
script detected a supported joystick driver.
If no joystick support is available on your machine (or was not
available when the executable was built, or VICE does not support
it), you can only emulate joysticks using the numeric keypad. The
arrow keys emulate the four directions, while the 0 and right Ctrl
emulate the Fire button.
This swaps the two joystick devices. It can also be done by
pressing F11.
Enable/disable the video cache. The video cache is used to avoid
recalculating those parts of the screen that have not changed since
last update; it can give a great performance boost in text mode and
when there are not too many animations on the screen, but it can also
just slow things down if the X server is very fast and the screen
changes a lot. If the MITSHM extensions are not available on the
machine you are using (e.g. you are running on a networked
X-terminal), you should probably always keep this enabled.
This option increases the size of the emulation window. It can slow
things down a lot, so beware! If you have a slow machine running
Linux and XFree, you can probably achieve better results by changing
the XFree screen size with Ctrl-Alt-+ and
Ctrl-Alt--. If you use double size, you will probably have
to turn the video cache on to obtain decent performance.
If this option is disabled and double size is enabled, only half of
the lines are painted and the rest is kept black. This makes the
emulator faster, and gives an old-stylish look to the window, but is
also uglier to see.
If this option is enabled, when the emulation window is updated the
emulator will always wait for the X server to complete the operation
by using the XSync() call. Otherwise, it will simply
perform the request and go on without waiting for the server to do
its job, and the emulator and the X11 server processes will be
executed in parallel for a short period of time. Keeping this option
disabled can give a speed boost, but can also cause bad
responsiveness to keyboard and mouse events as the X server is being
constantly flooded (with double size windows, you might even have
troubles opening the pop-up menus, especially if the X server is not
very fast). The effect of this option is particularly noticeable
when the video cache is disabled.
As explained in the overview section, a hardware-level 1541 emulation
is available, so that programs that rely on the drive internals can
be emulated properly (e.g. fastloaders). Be sure to use this option
only if necessary, as keeping it disabled makes things much faster.
Notice that with this option turned on, only drive 8 is emulated,
while devices 9, 10 and 11 are disabled completely.
On the real C64/VIC20, the drive clock frequency is different from
the one of the computer and VICE takes account for this. You can
then select if you want PAL, NTSC or custom frequency ratio. The
sync value is calculated as follows:
In order to save CPU resources, the 1541 drive emulation is disabled
when not strictly necessary. With this option you can select
when it is disabled.
This can be used to enable or disable the sound support.
Important notice: The VIC20 and PET sound
emulations are still at the experimental stage.
Specify the sample rate, in Hz, for the sound emulation. Standard
values are 8000, 11025, 22050,
44100 and 48000. Higher values are obviously
slower, so don't try to use the 48KHz setting unless your machine can
really handle it.
Specify the sound buffer size in seconds. The optimal sound buffer
size depends greatly on the system performance, system load and the
program running in the emulator. Using a higher value gives a longer
delay but can be handled better by slower machines.
There are 3 available extensions:
These options can be used to save and retrieve settings. If the
``Save Settings on Exit'' option is enabled and the resources have
been changed the emulator will ask you whether you want to save them
before exiting.
When being run, the emulator will search for a .vicerc
configuration file in your $HOME directory (VICERC in the
current directory on MS-DOS). On Unix, if this is not found it will also
try to find a vicerc file in your installation directory (usually
something like /usr/local/lib/VICE). If they are both
unavailable, the default values will be set. After the settings are
initialized, the emulator parses the command line; this allows you to
override the values found in the configuration file.
The configuration file contains the settings for all the emulators; this is
achieved by dividing the file into emulator-specific sections. Each
section begins with the name of the related emulator in brackets, i.e. one
of these:
The resources for one emulator must be specified in the following form:
There can be spaces between the ResourceValue and the `='
symbol, and they will not be included in the value. If you want to force
them, you must put the ResourceValue between double quotes
("...").
All the resources have command-line counterparts, but some command-line
options are not available as resources. Here is a list of all the
command-line options (in parenthesis, you'll find the name of the
corresponding resource specification if available):
Specify the directory where the VICE support files are. Default is
none (autodetect).
Specify the names of the disk images to attach to devices 8, 9 and
10 respectively at startup.
Specify a tape image in T64 format to attach at startup (device 1).
Specify in which port the joystick emulated via numeric keypad should
be.
Specify the joystick device for ports 1 and 2, respectively.
NUM can be one of the following:
Specify the maximum percentage speed for the emulator
(e.g. 100 gives exact speed, if possible). 0
specifies that no speed limit is desired and makes the emulator run as
fast as possible.
Specify than only one for each N frames must be recalculated.
If N is equal to 0, then the value is automatically
adjusted to obtain the maximum speed specified. (This cannot be done
if Speed is set to 0, i.e. no speed limit)
Enable(-)/disable(+) double size window. If you are
running on a monochrome X11 server, you should enable double size in
order to enable the dithering.
Enable(-)/disable(+) double scan. If double scan is
disabled and double size is enabled, only one each 2 lines is actually
repainted, and the others are left black.
Enable(-)/disable(+) the video cache. This is
enabled by default.
Enable(-)/disable(+) usage of a private colormap.
This must be used when the emulator runs out of colors and thus cannot
initialize the colormap correctly. When the option is enabled, it will
use its own colormap instead of trying to allocate the colors on the
default one: this will cause flashing when entering or leaving the
emulation window but will also allow it to always have the correct
colors.
Enable(-)/disable(+) the sound support.
Specify the sample rate for sound emulation in Hz.
Specify the sound buffer size in milliseconds.
Specify one sound device and one (optional) argument for the device
driver. If no device is specified or NAME is an empty string,
the emulator selects a supported sound device automatically. Available
sound devices are:
Enable(-)/disable(+) saving of resources when exiting
the emulator (you will be asked first).
Enable(-)/disable(+) the slower
hardware-level 1541 disk drive emulation. By default, the
fast 1541 emulation is used.
Specify the 1541 ROM image name. Default value is dos1541.
Specify a method to disable the 1541 emulation when not necessary. 0
stands for `skip cycles', 1 for `trap idle' (see above for an
explanation of what this means). The default is 1.
Specify the drive/computer clock ratio in 1/65536ths. The standard
values are 66516 for PAL and 64094 for NTSC on the
C64, 59126 for PAL and 64079 for NTSC on the
VIC20. The default setting is PAL.
Specify the name of an HTML browser for consulting the on-line
documentation. You can also specify command-line options as you
would normally do from a shell. The string %s in
COMMAND will be automatically replaced with the name of the
file containing the manual page (VICE must be correctly installed to
make this work correcly).
Specify the RAM expansions for the VIC20 emulation. You must specify
a comma separated list of options that can be one of the following:
Enable(-)/disable(+) usage of the MITSHM extensions.
These extensions allow much faster performance if the program runs on
the console, but are not available on all systems and cannot be used if
you are running on a networked X-terminal. If the MITSHM extensions
were not found when compiling the program, this option will have no
effect and usage of the extensions will always be disabled.
Specify the X11 display depth. If not specified, it tries to find it
out automatically.
Enable(-)/disable(+) usage of the
XSync() call when the contents of the video frame buffer
are blitted to the emulation window. Keeping this enabled will give
slower performance but better X11 responsiveness.
Specify the name of the Kernal and Basic ROM image names. The PET ROM
image contains both kernal and basic.
Specify a RAM image name to load at startup. If not specified, RAM is
reset as after a power up.
Enable(-)/disable(+) hexadecimal notation in monitor.
This is enabled by default
Enable(-)/disable(+) the kernal traps. ``Traps'' are
patches that are applied to the operating system to allow certain
operations. If serial traps are disabled, you cannot use the fast
DOS-level 1541 emulation or the T64 tape images, but you are using the
raw Kernal ROM without any modifications. The traps are enabled by
default, and you probably need to disable them if you are going to use
alternative ROM images.
Enable(-)/disable(+) the IEEE488 interface emulation.
This is disabled by default.
Enable(-)/disable(+) the emulator identification
feature. This is enabled by default.
VICE can transform one ROM revision into another by patching the ROM
image after it has been loaded. There are 4 available revisions,
0, 3, 100 and 67. 0 and
3 refer to the standard C64, while 67 refers to the
SX64 (portable model) and 100 to the Educator 64 (aka
PET4064). As the hardware of the corresponding machines is almost the
same, you can thus emulate all of them just by using this option.
Enable or disable the external 512K RAM Expansion Unit.
The built-in monitor features command-line editing with history and file
name completion. It accepts the following commands:
Fill from START to END (or from START
to START + LEN) with BYTES (or with
STRING).
Search from START to END (or from START
to START + LEN) for BYTES (or
STRING).
Compare from START to END (or from START
to START + LEN) with TARGET.
Copy the memory area from START to END (or from
START to START + LEN) to
DEST.
Relink code from START to END (or from START
to START + LEN).
Assemble from START (default is current address).
Disassemble from START (default is current address) to
END (or to START + LEN).
Show memory contents in hexadecimal format from START to
END (or from START to START +
LEN).
Show memory contents in binary format from START to
END (or from START to START +
LEN).
Write to memory the sequence BYTES or string STRING
from address START.
Jump to ADDR, setting register values REGISTERS.
Jump to subroutine at ADDR.
Show register contents.
Move up and down on stack.
Change working directory to PATH.
Save/load memory contents.
Save/load RAM state.
Attach IMAGE to device DEV. The format of
IMAGE must match the device, i.e. you must specify a
T64 image for unit 1 or a D64 image for units 8, 9
and 10.
Display video memory contents. If N is specified, look at
bank N ; if ADDR is specified, look at address
ADDR . The default is the current video matrix memory
address.
Describe commands.
Exit monitor.
Exit monitor and emulator.
When the XDebugger is enabled, a new window pops up. On the left
it shows the opcode the CPU is working on, on the right several register
contents are displayed.
Below the registers is the status line. It shows the status of the
emulator. It can be Running, Halted or Trace.
You can switch between the states with the buttons below the status line.
Run lifts off the CPU, Stop halts it, and
Trace lets it run with displaying the executed opcodes in the
left window.
When the emulator is stopped, it is possible to run single-step execution
by pushing the Step button.
c1541 is a stand-alone disk image maintenance program. It can be
used both interactively and from the command line.
The syntax is:
If some OPTIONS but no IMAGE are specified,
c1541 runs in batch mode; otherwise, it attaches the
IMAGE if present and enters the interactive mode, where you can
type commands that are executed when you press Enter (abbreviations can are
allowed). As with the monitor, file name completion and command line
editing with history are provided. Use quit to exit.
Notice that c1541 always creates X64 files, but can read
and write D64 files automatically, without the need for any
special options.
Each command-line option has an interactive-mode counterpart, that is shown
in parenthesis: (abbreviations are allowed when not ambiguous)
Attach the disk image IMAGE for use. All consequent commands
in interactive mode will refer to this image.
Detach currently attached disk image.
Format disk image IMAGE, giving the specified label. If
IMAGE does not exist, create it.
Delete FILES from IMAGE.
List files in IMAGE.
Validate the disk.
Concatenate OLDNAME1, OLDNAME2.. into
NEWNAME on IMAGE (can be used to copy files).
Build IMAGE from raw dump file DUMP (i.e. convert
from D64 to X64 file).
Transfer FILES from TAPEIMAGE to IMAGE
(default is copy all files).
Extract 1541NAME from the disk image into FSNAME
(1541NAME by default) from IMAGE.
Extract all files from IMAGE.
Write FSNAME to IMAGE as 1541NAME
(FSNAME by default). (works with P00 files as well)
Show disk blocks in hex format.
Show version information about IMAGE.
This information should also be available in section 1 of your
on-line manual pages (man 1 c1541).
petcat can be used to expand tokenized basic programs into 7-bit
ASCII text. syntax is:
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 original VICE code:
Thanks also to everyone else for sending suggestions, ideas, bug reports,
questions and requests. In particular, a warm thank goes to the following
people:
VICE is Copyright (c) 1993-1997 Ettore Perazzoli, Teemu Rantanen, André
Fachat, Jouko Valta, Jarkko Sonninen and Daniel Sladic.
You can find the latest news about VICE at the official VICE home page:
Also the public patches and beta releases will be available there as well.
If you want to report bugs, make suggestions or contribute to the project,
e-mail one of the following people:
In any case, we would really be glad to receive your comments about
VICE.
If you want to contribute, please ask first. It has already
happened a couple of times that somebody started working at something that
had already been done but not released to the public, and we really do
not want anybody to waste time.
People willing to port VICE to other platforms are always welcome. In
particular, we would really be glad if somebody ported VICE to MacOS or
Windows NT/95. A port of the 0.11.0 C64 emulator for MacOS already exists
but it is quite buggy and not maintained any longer.
There are some newsgroups you might be interested in:
1.1. Emulation features
All the emulators provide an accurate 6502/6510 emulator, with emulation of
all the opcodes and accurate timing. Also all the undocumented opcodes are
implemented, although (at the moment) only the 6510 version of them (the
C64 uses a 6510, while the VIC20 and PET use a 6502). Unlike other
emulators, the emulation of all the chips is cycle accurate, and tries to
emulate timings as precisely as possible. 1.1.1. C64 emulator
The C64 emulator features a fairly complete emulation of the VIC-II
video chip: sprites, all registers and all video modes are fully
emulated. In order to save system resources, raster line updates and
sprites are handled on a line-by-line basis, although most of the other
features are emulated with a rather precise synchronization. This
compromise allows most of the video tricks to work correctly
(eg. $D011 techniques such as VSP, FLD,
FLI, AFLI, IFLI) without eating too much CPU
time. 1.1.2. VIC20 emulator
The VIC20 is not complete yet, but already emulates all the internal
hardware, including the VIA chips. The CPU instruction set is fully
emulated, although it emulates the 6510 instead of the 6502 one (the
only difference is in undocumented opcodes anyway). 1.1.3 PET 3032/4032/8032 emulator
The PET emulator emulates the 3032, 4032 and 8032 models. The hardware
is pretty much the same and that's why one single program is enough to
emulate all of them. 1.2. The keyboard
Using the keyboard is quite straightforward, as each key is mapped to its
usual character. VICE will press and release the Shift keys automatically
to make everything work as expected.
X11 key VIC20/C64 key
--------------------- ---------------------
TAB RESTORE
LEFT CTRL CTRL
BACKSPACE DEL
INSERT INS
LEFT ALT C= (Commodore key)
ESC STOP
PET mapping:
X11 key PET key
--------------------- ---------------------
TAB REVERSE
LEFT CTRL STOP
BACKSPACE DEL
INSERT INS
When joystick emulation via the numeric keypad is enabled, the numeric
keypad emulates the joystick as follows:
8 (up)
(left) 4 6 (right)
2 (down)
(fire) 0 or right Control
You can press two direction keys at once to emulated diagonal
directions.
1.3. The disk drive emulation
All the emulators support emulation of up to 4 external disk drives as
devices 8, 9, 10 and 11. Devices 8, 9 and 10 emulate virtual Commodore
1541 drives using disk images, i.e. files that contain a dump of all the
blocks contained in a real floppy disk (if you want more information about
what a disk image is, consult the comp.emulators.cbm FAQ). Device
11, instead, accesses file system directories, thus allowing you to access
files without having to copy them to disk images. In addition, device 11
can be used to read and write P00 files (notice that, unlike other
emulators, VICE uses the real file system name instead of the internal
P00 name to access these files). 1.4. Supported file formats
VICE supports the most popular file formats:
X64 (preferred) or D64 disk image files;
An utility (c1541) is provided to allow transfers between these
formats.
T64 tape image files (read-only);
P00 program files.
dd bs=1 skip=64 if=IMAGE.X64 of=IMAGE.D64
1.5. System-specific notes
VICE should compile and run without major problems on many Un*x systems,
but there are some known issues related to the sound driver. In fact,
sound is the less portable part of the emulator and has not been thoroughly
tested on all the supported platforms yet.
2. Usage
2.1. Using the PET/VIC20/C64 emulators
x64, the C64 emulator
You can run each of them by simply typing the name from a shell. If you
want to run them from another application (e.g. a window manager or some
other sort of program launcher) you should always run them from a terminal
window such as xterm or rxvt, as a lot of debugging
information is printed and the built-in monitor will be run in there.
xpet, the PET3032/4032/8032 emulator
xvic, the VIC20 emulator 2.1.1 The system ROMs
/usr/local/lib/VICE/<EMU>
where <EMU> is the emulator ID and can be either
C64, VIC20 or PET. If they are not found here,
it will try to load them from the current directory, under C64,
VIC20 or PET.
kernal, the Kernal ROM (8 KBytes)
For the PET emulator the Basic and Kernal must be packed into a single
file. The PET ROMs have the following names:
basic, the Basic ROM (8 KBytes)
kernal3032, the PET3032 Basic + Kernal ROM (32 KBytes)
The actual ROM size would be 20 Kbytes, but the 32 KByte length is to allow
loading of custom ROM extensions. The ROM loads at $8000, and the
extension areas start at $9000. They reach to $C000
(12K, PET3032) or $B000 (8K, PET4032 and PET8032).
kernal4032, the PET4032 Basic + Kernal ROM (32 KBytes)
kernal8032, the PET8032 Basic + Kernal ROM (32 KBytes)
2.1.2. The menus
Notice that T64
support is read-only, and that the cassette is automatically
rewound from the start when you reach the end.
Disk images can also be attached to unit 8 by pressing the
F10 key.
Notice that some programs are designed to ignore a simple
RESET and that some games might not work if the RAM
is not completely initialized (eg. ``Q*Bert''). In such cases, you
must use the ``Power-On Reset'' function instead of just a
``Reset''.
If a maximum speed limit has been specified, you can use the ``auto''
setting that makes the emulator dynamically adapt to the speed of the
host machine, trying to reach the specified speed limit and skipping
frames only if necessary. If this setting is enabled, the emulator
will never skip more than 10 consecutive frames, so the result will
never be worse than using the 1/10 setting.
On the PET 8032 emulator, only the height is doubled, thus giving the
a more correct aspect ratio to the PET screen.
You have to enable double size to obtain dithering when you are
running on a monochrome X11 display.
True1541SyncFactor = 65536 * clk_1541 / clk_[c64|vic20]
where clk_1541 is the 1541 clock (about 1 MHz), while
clk_c64 and clk_vic20 depend on the model being
used (PAL or NTSC). For example, 65536 makes the drive run
as fast as the computer, 65540 makes the drive faster,
65530 makes the computer faster.
The standard values are:
VIC20: 59126 (PAL) or 64079 (NTSC)
Though the VICE emulators emulate only PAL (European) machines, the
NTSC setting can make many fastloaders that are designed for NTSC
machines work.
C64: 65516 (PAL) or 64094 (NTSC)
The first option (``Skip cycles'') is usually better for performance,
as the drive is emulated as little as possible; on the other hand,
you can notice sudden slowdowns (when the drive executes several
cycles at once) and you never know the LED status correctly.
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 can have no effect on performance if one
program continuously reads the CIA ports, as the drive will have to
be emulated in any case.
Each time the serial line is accessed by the C64, the drive
executes all the cycles since the last time it was running. If
the number of elapsed cycles is larger than a certain value, the
drive discards part of them.
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.
The second option (``Trap idle'') is usually a bit slower, as at
least interrupts are always emulated, but allows the LED state to be
always updated correctly and always keeps the 1541 and the computer
in sync. On the other hand, if a program installs a non-standard
idle loop in the drive, the 1541 CPU has to be emulated even when not
necessary and the global emulation speed is then much
slower.
Notice that you cannot enable more than one option at once in this
case, as they could cause conflicts.
Notice that, though all options are stored in ~/.vicerc,
saving the values does not destroy the settings for other emulators.
See below for a complete
description of the .vicerc file format. 2.1.3. The .vicerc configuration file and the command-line
options
[C64]
This setup makes it possible for you to edit the configuration file with a
text editor.
[VIC20]
[PET]
ResourceName=ResourceValue
Examples:
Obviously, not all of them might be available on your system.
Standard Linux/FreeBSD USS sound driver; the argument specifies the
sound device file name (/dev/dsp is the default).
Silicon Graphics audio support; the argument specifies the sound
device file name (/dev/audio by default).
Solaris audio support (unfinished); the argument specifies the
sound device file name (/dev/audio by default).
HP-UX audio support (unfinished); the argument specifies the sound
device file name (/dev/audio by default).
Write samples to a file; the argument specifies the file name
(vicesnd.raw by default).
Fully emulate the SID, but do not actually play samples.
Similar to dummy, but also calculates samples. This is
used to evaluate the speed of the sample generator.
Dump all register write accesses to a file for debugging; the
argument specifies the file name (vicesnd.sid by
default).
This feature allows you to issue any command you like to browse the
documentation; for example, instead of running a new browser whenever
you want to read the manual, you can remotely issue commands to an
already running browser (for example, Netscape Navigator supports
this with the -remote option).
The default value is netscape %s.
none no extension
all all blocks
3k 3k space in block 0
8k 1st 8k extension block
16k 1st and 2nd 8k extension blocks
24k 1st, 2nd and 3rd extension blocks
0, 1, 2, 3, 5 memory in respective blocks
04, 20, 40, 60, A0 memory at respective address
gives unexpanded VIC20.
enables memory in blocks 3 and 5, which is the usual configuration
for 16k ROM modules.
The default is no patching (i.e. KernalRev is an empty
string). 2.1.4. The Monitor
2.1.5. The XDebugger
2.2. Using c1541
c1541 [OPTIONS] [IMAGE]
When more than one command is specified in batch mode, all of them are
executed in the same order they have on the command line. 2.3. Using petcat
petcat [OPTIONS..] [--] [FILES...]
FILES can be either raw CBM binary files or
P00. Available options are:
Available versions are:
Interpret control codes
Suppress control codes
Skip N bytes at the beginning of input file. Ignored on
P00.
Specify a load address.
Use keywords for VERSION instead of the 7.0 ones.
Tokenize using keywords on the specified VERSION.
List all the keywords for the specified VERSION. If no
VERSION is specified, list all the versions available.
More information about petcat should be available in section 1 of
your on-line manual pages (man 1 petcat).
PET Basic 1.0
Basic 2.0
Basic 2.0 with Super Expander (VIC20)
Basic 2.0 with Turtle Basic by Craig Bruce (VIC20)
Basic 2.0 with AtBasic (C64)
Basic 2.0 with Simon's Basic (C64)
Basic 2.0 with Speech Basic 2.7 (C64)
Basic 4.0 (PET/C64)
Basic 3.5 (C16/Plus4)
Basic 7.0 (C128)
Basic 10.0 (C64DX, aka C65)
3. Other documents
4. Acknowledgments
External contributors:
6510, VIC-II, VIC-I and CRTC emulations, hardware-level 1541 emulation,
speed optimizations, bug fixes, new interrupt code, Xt/Xaw/Xfwf-based GUI
for X11, code reorganization, new resource handling, MS-DOS port.
SID emulation, fast disk drive and serial bus implementation, support
for multiple X11 display depths.
PET 3032/4032/8032 emulators, timer/interrupt code, CIA and VIA
emulation, serial code improvements, IEEE488 interface, serial bus
for VIC20 and tons of bug fixes.
Utilities (petcat and c1541), documentation, 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.
Hardware-level 1541 emulation with fastloader support.
Originator, wrote the previous version of the 6502 emulation and
the XDebugger; retired from the project after x64 0.2.1.
(We hope we have not forgotten anybody; if you think we have, please tell us)
PET, Disk drives.
Disk drives.
VIC-20 I/O patches.
Added support for 16/24 bpp X11 displays.
Added complete support for all the VIC20 memory configurations.
Joystick support for Linux, first try of a SID emulation for SGI machines.
Lionel, where are you now?
c1541 improvements (extract command).
Joystick improvements for Linux.
X11/Video Interface and PostScript programming guru.
REU Emulation, Testing.
Testing.
Testing and suggestions.
Ideas, patches, debugging and moral support.
Wrote the very first 6502 CPU emulator in x64 0.1.0. That was
the beginning of the story... :-)
Several patches to the fast disk drive emulation.
Patches.
Many ideas and ROM patcher.
Patches.
Patches.
Patches.
Wrote the very interesting ``VIC article'' from which we got invaluable
information about the VIC-II chip. Without this, the VIC-II implementation
would have not been possible.
Wrote an excellent 6510 test suite that helped us to debug the
CPU emulation.
Digitalized the C64 colors.
CPU documentation and Usenet flames.
Provided the widget set for implementing the GUI.
Lutz Sammer (e-mail address not available)
Last but not least, a very special thank to:
Ralph Mason (RALPHM@msmail02.liffe.com)
George Caswell (timbuktu@the-eye.res.wpi.edu)
Per Olofsson (MagerValp@goth.org)
Jasper Phillips (philljas@newt.cs.orst.edu)
Luca Forcucci (frk@geocities.com)
Asger Alstrup (alstrup@diku.dk)
Andreas Arens, Lutz Sammer and Edgar Tornig
For writing really cool emulators to compete with. :-)
Christian Bauer
Wolfgang Lorentz
Miha Peternel
Per Hakan Sundell
5. Copyright
This program is free software; you can redistribute it and/or modify
Matrix Printer Emulator,
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
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., 675 Mass Ave, Cambridge, MA 02139, USA.
Both C and PostScript(R) programs
Bitmap Font Building from the Blue Book Program program_21.ps
Copyright (C) 1995 Jouko Valta and Hannu Helminen.
All rights reserved.
Copyright (C) 1985 Adobe Systems Incorporated.
All rights reserved.
6. Contacts
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.