In the VICE emulators, all the settings are stored in entities known as called resources. Each resource has a name and a value which may be either an integer or a string. Integer values are often used as boolean values with the usual convention of using zero for "false" and any other value for "true".
Resource values can be changed via the the options menu, via command-line options, using monitor commands, or via the resource file.
The resource file is a human-readable file containing resource values: it is called `vicerc' and is stored in the directory `.vice/' in the user's home directory. It is possible to dump the current values of the resources into that file or load the values stored into that file as the current values, at any time. This is achieved with the "Save settings" and "Load settings" right menu items. A third menu item, "Restore Default Settings", can be used to reset all the values to the factory defaults.
A special resource, SaveResourcesOnExit
, if set to a non zero
value, causes the emulator to save the current
(changed) settings before exiting, and can be toggled with the "Save
settings on exit" item from the options menu.
A resource file is made up of several sections; sections have the purpose of separating the resources of a certain emulator from the ones of the other emulators. A section starts with the name of an emulator in brackets (e.g., `[C64]') and ends when another section starts or when the file ends.
Every line in a section has the following format:
RESOURCE=VALUE
where RESOURCE
is the name of a resource and VALUE
is its
assigned value. Resource names are case-sensitive and resource values
are either strings or integers. Strings must start and end with a
double quote character ("
), while integers must be given in
decimal notation.
Here is an example of a stripped-down `.vice/vicerc' file:
[VIC20] SaveResourcesOnExit=0 FileSystemDevice8=1 FSDevice8ConvertP00=1 FSDevice8Dir="/home/ettore/cbm/stuff/vic20p00" FSDevice8SaveP00=1 FSDevice8HideCBMFiles=1 [C64] SaveResourcesOnExit=1 FileSystemDevice8=1 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.
Resources can also be changed via command-line options.
Command-line options always override the defaults from .vice/vicerc
,
and their assignments last for the whole session. So, if you specify a
certain command-line option that changes a certain resource from its
default value and then use "Save Settings", the value specified with
the command-line option will be saved back to the resource file.
Command-line options can begin with with a minus sign (`-') or with a plus sign (`+'). Options beginning with a minus sign may require an additional parameter, while the ones beginning with the plus sign never require one.
Moreover, options beginning with a plus sign always have a counterpart
with the same name, but with a minus sign; in that case, the option
beginning with a minus sign is used to enable a certain
feature, while the one beginning with a plus sign is used to
disable the same feature (this is an X11 convention). For
example, -warp
enables warp mode, while +warp
disables it.
All these resources are available for all emulators except vsid.
AutostartPrgDiskImage
AutostartBasicLoad
AutostartRunWithColon
AutostartHandleTrueDriveEmulation
AutostartWarp
AutostartPrgMode
AutostartDelayRandom
AutostartDelay
(all emulators except vsid).
AutostartDelay
All these command-line options are available for all emulators except vsid.
-autostartprgdiskimage <Name>
AutostartPrgDiskImage
)
(all emulators except vsid).
-basicload
AutostartBasicLoad=1
)
(all emulators except vsid).
+basicload
AutostartBasicLoad=0
)
(all emulators except vsid).
-autostartwithcolon
AutostartRunWithColon=1
).
(all emulators except vsid)
+autostartwithcolon
AutostartRunWithColon=0
)
(all emulators except vsid).
-autostart-handle-tde
+autostart-handle-tde
AutostartHandleTrueDriveEmulation=1
, AutostartHandleTrueDriveEmulation=0
)
(all emulators except vsid).
-autostart-warp
+autostart-warp
AutostartWarp=1
, AutostartWarp=0
)
(all emulators except vsid).
-autostartprgmode <Mode>
AutostartPrgMode
)
(all emulators except vsid).
(0: virtual filesystem, 1: inject to RAM, 2: copy to D64)
-autostart-delay-random
+autostart-delay-random
AutostartDelayRandom
)
(all emulators except vsid).
-autostart-delay <seconds>
AutostartDelay
)
(all emulators except vsid).
(0..1000)
It is possible to control the emulation speed by using the "Maximum
speed" item in the speed setting. The default setting is
100
, which causes the emulation to never run faster than the real
machine. A higher value allows the emulator to run faster, a lower one
may force it to run slower. The setting "No limit" means to run as
fast as possible, without limiting speed.
It is also possible to control the emulator's rate of frame update using the "Refresh rate" setting; the value ranges from "1/1" (update 1/1 of the frames of the real machine, that is 50 frames per second) to "1/10" (update 1 every 10 frames) and can be changed via the "Refresh Rate" setting. The "Auto" setting means to dynamically adapt the refresh rate to the current speed of the host machine, making sure the maximum speed specified by the via "Maxium speed" is always reached if possible. In any case, the refresh rate will never be worse than 1/10 if this option is specified.
Note that you cannot simultaneously specify "Auto" as the refresh rate and "No limit" as the maximum speed..
Moreover, a special warp speed mode is provided and can be toggled with the "Enable Warp Mode" menu item. If this mode is enabled, it will cause the emulator to disable any speed limit, turn sound emulation off and use a 1/10 refresh rate, so that it will run at the maximum possible speed.
Speed
0
stands for "no limit".
RefreshRate
n
specifies a
refresh rate of 1/n
. A value of 0
enables automatic frame
skipping.
WarpMode
-speed <percent>
0
stands for "no limit"
(Speed
).
-refresh <value>
n
specifies a refresh rate of
1/n
. A value of 0
enables automatic frame skipping
(RefreshRate
).
-warp
+warp
WarpMode=1
, WarpMode=0
).
The following right-button menu items control the video output.
On emulators that include two video chips (like x128
)
all options exist twice, once for each chip.
The following resources affect the screen emulation.
HwScalePossible
Speed
0
stands for "no limit".
RefreshRate
n
specifies a
refresh rate of 1/n
. A value of 0
enables automatic frame
skipping.
WarpMode
FullscreenEnable
-hwscalepossible
+hwscalepossible
HwScalePossible=1
or HwScalePossible=1
).
It is possible to specify whether the "positional" or "symbolic" keyboard mapping should be used with the "Keyboard mapping type" submenu (see section 2.8 The keyboard emulation for an explanation of positional and symbolic mappings).
The keyboard settings also allows you to:
KeymapIndex
KeymapSymFile
KeymapIndex
,
KeyboardMapping
or KeyboardType
).
KeymapPosFile
KeymapIndex
,
KeyboardMapping
or KeyboardType
).
KeymapUserSymFile
KeymapUserPosFile
KeyboardMapping
KeyboardType
-keymap <number>
KeymapIndex
0: symbolic, 1: positional, 2: symbolic (user), 3: positional (user)).
-symkeymap <Name>
KeymapUserSymFile
).
-poskeymap <Name>
KeymapUserPosFile
).
-keyboardmapping <number>
KeyboardMapping
0: American 1: British 2: German 3: Danish 4: Norwegian 5: Finnish 6: Italian).
-keyboardtype <number>
KeyboardType
machine specific, currently always 0 except for xpet: 0: Business (us)
1: Business (uk) 2: Business (de) 3: Business (jp) 4: Graphics (us)).
The control port settings submenu allows you to select which control port device is connected to a control port.
JoyPort1Device
JoyPort2Device
JoyPort3Device
JoyPort4Device
JoyPort5Device
BBRTCSave
-controlport1device <device>
JoyPort1Device
).
(x64, x64sc, xscpu, x128, xcbm5x0, xvic: 0: None, 1: Joystick, 2: Paddles, 3: Mouse (1351), 4: Mouse (NEOS), 5: Mouse (Amiga), 6: Mouse (CX-22), 7: Mouse (Atari ST), 8: Mouse (SmartMouse), 9: Mouse (Micromys), 10: KoalaPad, 11: Light Pen (up trigger), 12: Light Pen (left trigger), 13: Datel Light Pen, 14: Magnum Light Phaser, 15: Stack Light Rifle, 16: Inkwell Light Pen, 17: Sampler (2bit))
(x64dtv, xplus4: 0: None, 1: Joystick, 6: Mouse (CX-22), 17: Sampler (2bit))
-controlport2device <device>
JoyPort2Device
).
(x64, x64sc, xscpu, x128, xcbm5x0: 0: None, 1: Joystick, 2: Paddles, 3: Mouse (1351), 4: Mouse (NEOS), 5: Mouse (Amiga), 6: Mouse (CX-22), 7: Mouse (Atari ST), 8: Mouse (SmartMouse), 9: Mouse (Micromys), 10: KoalaPad, 17: Sampler (2bit))
(x64dtv, xplus4: 0: None, 1: Joystick, 6: Mouse (CX-22), 17: Sampler (2bit))
-controlport3device <device>
JoyPort3Device
).
(x64, x64sc, x64dtv, xscpu, x128, xcbm2, xpet, xvic: 0: None, 1: Joystick, 6: Mouse (CX-22), 17: Sampler (2bit))
(xplus4: 0: None, 1: Joystick, 2: Paddles, 3: Mouse (1351), 4: Mouse (NEOS), 5: Mouse (Amiga), 6: Mouse (CX-22), 7: Mouse (Atari ST), 8: Mouse (SmartMouse), 9: Mouse (Micromys), 10: KoalaPad, 17: Sampler (2bit))
-controlport4device <device>
JoyPort4Device
).
(x64, x64sc, xscpu, x128, xcbm2, xpet, xvic: 0: None, 1: Joystick, 6: Mouse (CX-22), 17: Sampler (2bit))
-controlport5device <device>
JoyPort5Device
).
(xplus4: 0: None, 1: Joystick, 2: Paddles, 3: Mouse (1351), 4: Mouse (NEOS), 5: Mouse (Amiga), 6: Mouse (CX-22), 7: Mouse (Atari ST), 8: Mouse (SmartMouse), 9: Mouse (Micromys), 10: KoalaPad, 17: Sampler (2bit), 18: Sampler (4bit), 19: BBRTC, 20: Paperclip64 dongle, 21: Coplin Keypad, 22: Cardco Cardkey 1 keypad, 23: Atari CX85 keypad, 24: RushWare Keypad, 25: Atari CX21 keypad)
-bbrtcsave
+bbrtcsave
BBRTCSave
).
JoyDevice1
JoyDevice2
JoyDevice3
JoyDevice4
JoyDevice5
JoyOpposite
UserportJoy
UserportJoyType
Mouse
SmartMouseRTCSave
KeySet1NorthWest
KeySet1North
KeySet1NorthEast
KeySet1East
KeySet1SouthEast
KeySet1South
KeySet1SouthWest
KeySet1West
KeySet1Fire
KeySet2NorthWest
KeySet2North
KeySet2NorthEast
KeySet2East
KeySet2SouthEast
KeySet2South
KeySet2SouthWest
KeySet2West
KeySet2Fire
KeySetEnable
KbdbufDelay
-joydev1 <range>
-joydev2 <range>
JoyDevice1
, JoyDevice2
).
The range for OS/2 is, valid numbers in the range are 0, 1, 2, 4, 8 and 16.
-extrajoydev1 <0-8>
-extrajoydev2 <0-8>
-extrajoydev3 <0-8>
-joyopposite
+joyopposite
JoyOpposite=1
, JoyOpposite=0
).
(all emulators except vsid)
-userportjoy
+userportjoy
UserportJoy=1
, UserportJoy=0
).
(all emulators except xcbm5x0 and vsid).
-userportjoytype <Type>
UserportJoyType
)
(all emulators except xcbm5x0 and vsid).
(0: Classical Games/Protovision, 1: PET, 2: Hummer, 3: OEM, 4: Digital Excess/Hitmen, 5: Kingsoft, 6: Starbyte)
4, 5 and 6 are x64, x64sc, xscpu64 and x128 only.
-mouse
+mouse
-smartmousertcsave
+smartmousertcsave
-keyset
+keyset
KeySetEnable=1
, KeySetEnable=0
)
(all emulators except vsid).
-keybuf-delay <value>
KbdbufDelay
).
(0: use default)
The following menu items control sound output:
Sound
SoundSpeedAdjustment
SoundSampleRate
SoundBufferSize
SoundSuspendTime
0
means no pause is done.
SoundDeviceName
ahi
, for the Amiga/Morphos/Aros sound driver.
aix
, for the IBM AIX sound driver.
allegro
, for the DOS Allegro sound driver.
alsa
, for the linux ALSA sound driver.
arts
, for the *nix ARTS sound driver.
beos
, for the BeOS/Zeta/Haiku sound driver.
bsp
, for the BeOS/Zeta/Haiku BeOS Media Kit sound driver.
coreaudio
, for the Mac OS X sound driver (SoundDeviceArg
specifies the audio device, default system output by default).
dart
, for the OS/2 sound driver.
dummy
, fully emulating the sound output chip(s), but not actually playing samples.
dx
, for the Windows Direct-X sound driver.
hpux
, for the HP-UX audio device (unfinished;
SoundDeviceArg
specifies the audio device, `/dev/audio' by
default).
midas
, for the DOS Midas sound driver.
pulse
, for the Pulseaudio sound driver.
sdl
, for the Simple DirectMedia Layer audio driver.
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.
SoundDeviceArg
SoundDeviceName
).
SoundRecordDeviceName
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.
SoundRecordDeviceArg
SoundFragmentSize
SoundVolume
SoundOutput
SamplerDevice
SamplerGain
SampleName
-sound
+sound
Sound=1
, Sound=0
).
-soundsync <sync>
SoundSpeedAdjustment
).
(0: flexible, 1: adjusting, 2: exact)
-soundrate <value>
SoundSampleRate
).
(8000..48000)
-soundoutput <output mode>
SoundOutput
).
(0: system decides mono/stereo, 1: always mono, 2: always stereo)
-soundbufsize <value>
SoundBufferSize
).
-soundfragsize <value>
SoundFragmentSize
).
(0: very small, 1: small, 2: medium, 3: large, 4: very large)
-sounddev <Name>
SoundDeviceName
).
(ahi, aix, allegro, alsa, arts, beos, bsp, coreaudio, dart, dummy, dx, hpux, midas, pulse, sdl, sgi, sun, uss, wmm)
-soundarg <args>
SoundDeviceArg
).
-soundrecdev <name>
SoundRecordDeviceName
).
(aiff, dump, fs, iff, mp3, flac, ogg, speed, voc, wav)
-soundrecarg <args>
SoundRecordDeviceArg
).
-soundsuspend <seconds>
SoundSuspendTime
).
-soundvolume <volume>
SoundVolume
).
(0..100)
-samplerdev <device number>
SamplerDevice
).
(0: file device, 1: portaudio device)
-samplergain <percent>
SamplerGain
).
(0..200)
-samplename <name>
SampleFile
).
These settings are used to control the hardware-level emulation of the Tape drive.
Datasette
DatasetteResetWithCPU
DatasetteZeroGapDelay
DatasetteSpeedTuning
DatasetteTapeWobble
-datasette
+datasette
Datasette=1
, Datasette=0
).
-dsresetwithcpu
+dsresetwithcpu
DatasetteResetWithCPU=1
, DatasetteResetWithCPU=0
).
-dszerogapdelay <value>
DatasetteZeroGapDelay
).
-dsspeedtuning <value>
DatasetteSpeedTuning
).
-dstapewobble <value>
DatasetteTapeWobble
).
These settings are used to control the hardware-level emulation of the Disk drives. When hardware-level emulation is turned on, only drives 8 and 9 are being emulated.
The following settings affect both drives:
sync_factor = 65536 * clk_drive / clk_machinewhere
clk_drive
and clk_machine
are clock speeds in MHz.
The menu lets you choose between the PAL and NTSC values, and also lets
you specify whatever value you want. Be careful when changing it,
though, because a wrong value can break things and even corrupt disk
images.
The following settings, instead, are specific of each 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.
DriveTrueEmulation
DriveSoundEmulation
DriveSoundEmulationVolume
Drive8Type
Drive9Type
Drive10Type
Drive11Type
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 emulators 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],
8050
[all emulators except x64dtv, xplus4 and vsid],
8250
[all emulators except x64dtv, xplus4 and vsid].
Drive8RTCSave
Drive9RTCSave
Drive10RTCSave
Drive11RTCSave
Drive8ParallelCable
Drive9ParallelCable
Drive10ParallelCable
Drive11ParallelCable
Drive8ProfDOS
Drive9ProfDOS
Drive10ProfDOS
Drive11ProfDOS
Drive8SuperCard
Drive9SuperCard
Drive10SuperCard
Drive11SuperCard
Drive8StarDos
Drive9StarDos
Drive10StarDos
Drive11StarDos
Drive8RAM2000
Drive8RAM4000
Drive8RAM6000
Drive8RAM8000
Drive8RAMA000
Drive9RAM2000
Drive9RAM4000
Drive9RAM6000
Drive9RAM8000
Drive9RAMA000
Drive10RAM2000
Drive10RAM4000
Drive10RAM6000
Drive10RAM8000
Drive10RAMA000
Drive11RAM2000
Drive11RAM4000
Drive11RAM6000
Drive11RAM8000
Drive11RAMA000
Drive8ExtendImagePolicy
Drive9ExtendImagePolicy
Drive10ExtendImagePolicy
Drive11ExtendImagePolicy
Drive8IdleMethod
Drive9IdleMethod
Drive10IdleMethod
Drive11IdleMethod
Drive8RPM
Drive9RPM
Drive10RPM
Drive11RPM
Drive8Wobble
Drive9Wobble
Drive10Wobble
Drive11Wobble
DosName1540
DosName1541
DosName1541ii
DosName1570
DosName1571
DosName1581
DosName2000
DosName4000
DosName1551
DosName1571cr
DosName2031
DosName2040
DosName3040
DosName4040
DosName1001
DriveProfDOS1571Name
DriveSuperCardName
DriveStarDosName
-truedrive
+truedrive
DriveTrueEmulation=1
, DriveTrueEmulation=0
).
-drivesound
+drivesound
DriveSoundEmulation=1
, DriveSoundEmulation=0
)
(all emulators except vsid).
-drivesoundvolume <Volume>
DriveSoundEmulationVolume=1
, DriveSoundEmulationVolume=0
)
(all emulators except vsid).
-drive8type <Type>
-drive9type <Type>
-drive10type <Type>
-drive11type <Type>
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],
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]
and 8250
[all emulators except x64dtv, xplus4 and vsid].
-drive8rtcsave
-drive8rtcsave
Drive8RTCSave=1
, Drive8RTCSave=0
).
-drive9rtcsave
-drive9rtcsave
Drive9RTCSave=1
, Drive9RTCSave=0
).
-drive10rtcsave
-drive10rtcsave
Drive10RTCSave=1
, Drive10RTCSave=0
).
-drive11rtcsave
-drive11rtcsave
Drive11RTCSave=1
, Drive11RTCSave=0
).
-parallel8 <type>
-parallel9 <type>
-parallel10 <type>
-parallel11 <type>
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>
Drive8IdleMethod
, Drive9IdleMethod
,
Drive10IdleMethod
), Drive11IdleMethod
).
(0: none, 1: skip cycles, 2: trap idle)
-drive8extend <method>
-drive9extend <method>
-drive10extend <method>
-drive11extend <method>
Drive8ExtendImagePolicy
, Drive9ExtendImagePolicy
,
Drive10ExtendImagePolicy
, Drive11ExtendImagePolicy
).
(0: never extend, 1: ask on extend, 2: extend on access)
-drive8rpm <rpm>
-drive9rpm <rpm>
-drive10rpm <rpm>
-drive11rpm <rpm>
-drive8wobble <wobble>
-drive9wobble <wobble>
-drive10wobble <wobble>
-drive11wobble <wobble>
-dos1540 <name>
DosName1540
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos1541 <name>
DosName1541
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos1541II <name>
DosName1541ii
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos1551 <name>
DosName1551
).
(xplus4 only)
-dos1570 <name>
DosName1570
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos1571 <name>
DosName1571
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos1571cr <name>
DosName1571CR
).
(x128 only)
-dos1581 <name>
DosName1581
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos2000 <name>
DosName2000
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos4000 <name>
DosName4000
).
(all emulators except xcbm2, xcbm5x0, xpet and vsid)
-dos2031 <name>
DosName2031
).
(all emulators except x64dtv, xplus4 and vsid)
-dos2040 <name>
DosName2040
).
(all emulators except x64dtv, xplus4 and vsid)
-dos3040 <name>
DosName3040
).
(all emulators except x64dtv, xplus4 and vsid)
-dos4040 <name>
DosName4040
).
(all emulators except x64dtv, xplus4 and vsid)
-dos1001 <name>
DosName1001
).
(all emulators except x64dtv, xplus4 and vsid)
-drive8ram2000, +drive8ram2000
Drive8RAM2000=1
, Drive8RAM2000=0
).
-drive9ram2000, +drive9ram2000
Drive9RAM2000=1
, Drive9RAM2000=0
).
-drive10ram2000, +drive10ram2000
Drive10RAM2000=1
, Drive10RAM2000=0
).
-drive11ram2000, +drive11ram2000
Drive11RAM2000=1
, Drive11RAM2000=0
).
-drive8ram4000, +drive8ram4000
Drive8RAM4000=1
, Drive8RAM4000=0
).
-drive9ram4000, +drive9ram4000
Drive9RAM4000=1
, Drive9RAM4000=0
).
-drive10ram4000, +drive10ram4000
Drive10RAM4000=1
, Drive10RAM4000=0
).
-drive11ram4000, +drive11ram4000
Drive11RAM4000=1
, Drive11RAM4000=0
).
-drive8ram6000, +drive8ram6000
Drive8RAM6000=1
, Drive8RAM6000=0
).
-drive9ram6000, +drive9ram6000
Drive9RAM6000=1
, Drive9RAM6000=0
).
-drive10ram6000, +drive10ram6000
Drive10RAM6000=1
, Drive10RAM6000=0
).
-drive11ram6000, +drive11ram6000
Drive11RAM6000=1
, Drive11RAM6000=0
).
-drive8ram8000, +drive8ram8000
Drive8RAM8000=1
, Drive8RAM8000=0
).
-drive9ram8000, +drive9ram8000
Drive9RAM8000=1
, Drive9RAM8000=0
).
-drive10ram8000, +drive10ram8000
Drive10RAM8000=1
, Drive10RAM8000=0
).
-drive11ram8000, +drive11ram8000
Drive11RAM8000=1
, Drive11RAM8000=0
).
-drive8rama000, +drive8rama000
Drive8RAMA000=1
, Drive8RAMA000=0
).
-drive9rama000, +drive9rama000
Drive9RAMA000=1
, Drive9RAMA000=0
).
-drive10rama000, +drive10rama000
Drive10RAMA000=1
, Drive10RAMA000=0
).
-drive11rama000, +drive11rama000
Drive11RAMA000=1
, Drive11RAMA000=0
).
-drive8profdos
+drive8profdos
Drive8ProfDOS=1
, Drive8ProfDOS=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive9profdos
+drive9profdos
Drive9ProfDOS=1
, Drive9ProfDOS=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive10profdos
+drive10profdos
Drive10ProfDOS=1
, Drive10ProfDOS=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive11profdos
+drive11profdos
Drive11ProfDOS=1
, Drive11ProfDOS=0
)
(x64, x64sc, xscpu64 and x128 only).
-profdos1571 <name>
DriveProfDOS1571Name
)
(x64, x64sc, xscpu64 and x128).
-drive8supercard
+drive8supercard
Drive8SuperCard=1
, Drive8SuperCard=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive9supercard
+drive9supercard
Drive9SuperCard=1
, Drive9SuperCard=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive10supercard
+drive10supercard
Drive10SuperCard=1
, Drive10SuperCard=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive11supercard
+drive11supercard
Drive11SuperCard=1
, Drive11SuperCard=0
)
(x64, x64sc, xscpu64 and x128 only).
-supercard <name>
DriveSuperCardName
)
(x64, x64sc, xscpu64 and x128 only).
-drive8stardos
+drive8stardos
Drive8StarDos=1
, Drive8StarDos=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive9stardos
+drive9stardos
Drive9StarDos=1
, Drive9StarDos=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive10stardos
+drive10stardos
Drive10StarDos=1
, Drive10StarDos=0
)
(x64, x64sc, xscpu64 and x128 only).
-drive11stardos
+drive11stardos
Drive11StarDos=1
, Drive11StarDos=0
)
(x64, x64sc, xscpu64 and x128 only).
-stardos <name>
DriveStarDosName
)
(x64, x64sc, xscpu64 and x128 only).
VICE is able to support some special peripherals:
These features depend on some kernal traps that replace the existing routines in the original Commodore operating system with custom-made C routines.
These settings deal with the drive-like peripherals connected to the bus of the emulated machine. The first setting relates to the parallel IEEE488 interface. With this interface a special engine is used to listen to the bus lines to translates them to the filesystem code. Thus the PET will always detect a drive for example, but it can also use drives 10 and 11 even together with true disk drive emulation.
Four peripherals, numbered from 8 to 11, are accessible; each of them provides the following settings:
Note that, by default, all drives create P00 files on save.
IECDevice8
IECDevice9
IECDevice10
IECDevice11
FileSystemDevice8
FileSystemDevice9
FileSystemDevice10
FileSystemDevice11
FSDevice8ConvertP00
FSDevice9ConvertP00
FSDevice10ConvertP00
FSDevice11ConvertP00
FSDevice8SaveP00
FSDevice9SaveP00
FSDevice10SaveP00
FSDevice11SaveP00
FSDevice8HideCBMFiles
FSDevice9HideCBMFiles
FSDevice10HideCBMFiles
FSDevice11HideCBMFiles
FSDevice8Dir
FSDevice9Dir
FSDevice10Dir
FSDevice11Dir
-iecdevice8
+iecdevice8
IECDevice8=1
, IECDevice8=0
).
-iecdevice9
+iecdevice9
IECDevice9=1
, IECDevice9=0
).
-iecdevice10
+iecdevice10
IECDevice10=1
, IECDevice10=0
).
-iecdevice11
+iecdevice11
IECDevice11=1
, IECDevice11=0
).
-device8 <type>
-device9 <type>
-device10 <type>
-device11 <type>
FileSystemDevice8
, FileSystemDevice9
, FileSystemDevice10
, FileSystemDevice11
)
(all emulators except vsid).
(0: None, 1: Filesystem, 2: OpenCBM (Real))
-fs8 <Name>
-fs9 <Name>
-fs10 <Name>
-fs11 <Name>
FSDevice8Dir
, FSDevice9Dir
,
FSDevice10Dir
and FSDevice11Dir
)
(all emulators except vsid).
-fs8convertp00
+fs8convertp00
FSDevice8ConvertP00=1
, FSDevice8ConvertP00=0
)
(all emulators except vsid).
-fs9convertp00
+fs9convertp00
FSDevice9ConvertP00=1
, FSDevice9ConvertP00=0
)
(all emulators except vsid).
-fs10convertp00
+fs10convertp00
FSDevice10ConvertP00=1
, FSDevice10ConvertP00=0
)
(all emulators except vsid).
-fs11convertp00
+fs11convertp00
FSDevice11ConvertP00=1
, FSDevice11ConvertP00=0
)
(all emulators except vsid).
-fs8savep00
+fs8savep00
FSDevice8SaveP00=1
, FSDevice8SaveP00=0
)
(all emulators except vsid).
-fs9savep00
+fs9savep00
FSDevice9SaveP00=1
, FSDevice9SaveP00=0
)
(all emulators except vsid).
-fs10savep00
+fs10savep00
FSDevice10SaveP00=1
, FSDevice10SaveP00=0
)
(all emulators except vsid).
-fs11savep00
+fs11savep00
FSDevice11SaveP00=1
, FSDevice11SaveP00=0
)
(all emulators except vsid).
-fs8hidecbm
+fs8hidecbm
FSDevice8HideCBMFiles=1
, FSDevice8HideCBMFiles=0
)
(all emulators except vsid).
-fs9hidecbm
+fs9hidecbm
FSDevice9HideCBMFiles=1
, FSDevice9HideCBMFiles=0
)
(all emulators except vsid).
-fs10hidecbm
+fs10hidecbm
FSDevice10HideCBMFiles=1
, FSDevice10HideCBMFiles=0
)
(all emulators except vsid).
-fs11hidecbm
+fs11hidecbm
FSDevice11HideCBMFiles=1
, FSDevice11HideCBMFiles=0
)
(all emulators except vsid).
-flipname <name>
FliplistName
)
(all emulators except vsid).
The VICE emulators can emulate printers connected to either the IEC buffer or the user port. Emulation can be achieved by redirecting the printer output to a file or by piping it through an external process. This is defined by so-called printer device file names; a printer device file name can be either a simple path, or a command name preceeded by a pipe symbol `|'.
For example, printer device `filename' will cause the output to be
appended to the file `filename', while printer device `|lpr'
will cause the lpr
command to be executed and be fed the printer
output. The printer output will not be converted but saved as printed
by the emulated machine.
Up to three printer devices may be specified through the following resources:
print.dump
;
|lpr
.
|petlp -F PS|lpr
;
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
.
IECDevice4
IECDevice5
IECDevice6
IECDevice7
PrinterTextDevice1
PrinterTextDevice2
PrinterTextDevice3
Printer4TextDevice
Printer5TextDevice
Printer6TextDevice
Printer4
Printer5
Printer6
Printer7
Printer4Driver
Printer5Driver
Printer6Driver
Printer4Output
Printer5Output
Printer6Output
PrinterUserport
PrinterUserportTextDevice
PrinterUserportDriver
PrinterUserportOutput
-iecdevice4
+iecdevice4
IECDevice4=1
, IECDevice4=0
).
-iecdevice5
+iecdevice5
IECDevice5=1
, IECDevice5=0
).
-iecdevice6
+iecdevice6
IECDevice6=1
, IECDevice6=0
).
-iecdevice7
+iecdevice7
IECDevice7=1
, IECDevice7=0
).
-device4 <type>
Printer4
).
(0: None, 1: Filesystem, 2: Real)
-device5 <type>
Printer5
).
(0: None, 1: Filesystem, 2: Real)
-device6 <type>
Printer6
).
(0: None, 1: Filesystem, 2: Real)
-device7 <type>
Printer7
).
(0: None, 2: Real)
-prtxtdev1 <name>
-prtxtdev2 <name>
-prtxtdev3 <name>
PrinterTextDevice1
, PrinterTextDevice2
, PrinterTextDevice3
).
-pr4txtdev <0-2>
-pr5txtdev <0-2>
-pr6txtdev <0-2>
Printer4TextDevice
, Printer5TextDevice
, Printer6TextDevice
).
-pr4output <name>
Printer4Output
).
(text, graphics)
-pr5output <name>
Printer5Output
).
(text, graphics)
-pr6output <name>
Printer6Output
).
(text, graphics)
-pr4drv <name>
Printer4Driver
).
(raw, ascii, mps803, nl10)
-pr5drv <name>
Printer5Driver
).
(raw, ascii, mps803, nl10)
-pr6drv <name>
Printer6Driver
).
(raw, 1520)
-pruser
+pruser
PrUser=1
, PrUser=0
).
-prusertxtdev <0-2>
PrinterUserportTextDevice
).
-pruseroutput <name>
PrinterUserportOutput
).
(text, graphics)
-pruserdrv <name>
PrinterUserportDriver
).
If you have compatibility problems, you can completely disable Kernal traps with the "Disable kernal traps" option. This will of course disable all the features that depend on it, such as the fast 1541 emulation (so you will have to turn true 1541 emulation on if you want to be able to read or write disk images) and tape (t64) support.
Since the 3.0 release kernal traps have been disabled by default to ensure maximum compatibility.
VirtualDevices
-virtualdev
+virtualdev
VirtualDevices=1
, VirtualDevices=0
).
The VICE emulators can emulate the RS232 device most of the machines
have. The C64, C128 and VIC20 emulators emulate the userport RS232
interface at 300, 1200 and 2400 baud. The C64 and C128 can also use the 9600
baud 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 Swithlink, Datapump
or Turbo232 for example) as extension at $de**
.
Emulation can be achieved by either:
It is possible to define up to four UNIX 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') 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:
/dev/ttyS0
;
/dev/ttyS1
;
127.0.0.1:25232
;
|nc 127.0.0.1:25232
.
You can change the baudrate the tty device is set to by specifying it on the commandline or in the menu.
RsDevice1
RsDevice2
RsDevice3
RsDevice4
RsDevice1ip232
RsDevice2ip232
RsDevice3ip232
RsDevice4ip232
Acia1Enable
Acia1Dev
Acia1Base
Acia1Mode
Acia1Irq
RsUserEnable
RsUserBaud
RsUserDev
The following resources are only available if RS232 device support or RS232 network support is available at compile time.
RsDevice1Baud
RsDevice2Baud
RsDevice3Baud
RsDevice4Baud
-rsdev1 <Name>
-rsdev2 <Name>
-rsdev3 <Name>
-rsdev4 <Name>
RsDevice1
, RsDevice2
RsDevice3
and RsDevice4
).
-rsdev1ip232
+rsdev1ip232
-rsdev2ip232
+rsdev2ip232
-rsdev3ip232
+rsdev3ip232
-rsdev4ip232
+rsdev4ip232
-acia1
+acia1
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>
-acia1base <Base address>
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>
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>
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)
-rsuser
+rsuser
RsUser
; C64, C128 and VIC20)
-rsuserbaud <baud>
-rsuserdev <0-3>
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>
RsDevice1Baud
, RsDevice2Baud
RsDevice3Baud
and
RsDevice4Baud
)
(all emulators except vsid).
Here we give you a simple example how to set up an emulated C64 using the modem connected to your PC. The following list shows each step.
Attach your modem to your PC at a serial port.
start VICE
Setup VICE to use your modem as "serial device 1"
Select the RS232 emulation your programs use
Enable the emulation
Load your program and start it.
CPClockF83
CPClockF83Save
TapeSenseDongle
DTLBasicDongle
-cpclockf83
+cpclockf83
CPClockF83=1
, CPClockF83=0
).
-cpclockf83save
+cpclockf83save
CPClockF83Save=1
, CPClockF83Save=0
).
-tapesensedongle
+tapesensedongle
TapeSenseDongle=1
, TapeSenseDongle=0
).
-dtlbasicdongle
+dtlbasicdongle
DTLBasicDongle=1
, DTLBasicDongle=0
).
UserportCollisionHandling
UserportDIGIMAX
Userport4bitSampler
Userport8BSS
UserportRTC58321a
UserportRTC58321aSave
UserportRTCDS1307
UserportRTCDS1307Save
-userportcollision
UserportCollisionHandling
)
@findex -userportdigimax, +userportdigimax
-userportdigimax
+userportdigimax
UserportDIGIMAX=1
, UserportDIGIMAX=0
)
-userport4bitsampler
+userport4bitsampler
Userport4bitSampler=1
, Userport4bitSampler=0
)
-userport8bss
+userport8bss
Userport8BSS=1
, Userport8BSS=0
)
-userportrtc58321a
+userportrtc58321a
UserportRTC58321a=1
, UserportRTC58321a=0
)
(xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
-userportrtc58321asave
+userportrtc58321asave
UserportRTC58321aSave=1
, UserportRTC58321aSave=0
)
(xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
-userportrtcds1307
+userportrtcds1307
UserportRTCDS1307=1
, UserportRTCDS1307=0
)
(xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
-userportrtcds1307save
+userportrtcds1307save
UserportRTCDS1307Save=1
, UserportRTCDS1307Save=0
)
(xpet, cbm2, x64, x64sc, xscpu64 and x128 only).
This section lists command-line options specific to the built-in monitor.
KeepMonitorOpen
MonitorServer
MonitorServerAddress
NativeMonitor
MonitorLogEnabled
MonitorLogFileName
-moncommands <Name>
-initbreak <address>
-keepmonopen
+keepmonopen
KeepMonitorOpen=1
, KeepMonitorOpen=0
).
-remotemonitor
+remotemonitor
-remotemonitoraddress <name>
-nativemonitor
+nativemonitor
NativeMonitor=1
, NativeMonitor=0
).
-monlog
+monlog
MonitorLogEnabled=1
, MonitorLogEnabled=0
).
-monlogname <name>
MonitorLogFileName
).
The initial content of uninitialized RAM depends on many factors, the inner workings of the RAM chip, the motherboard, etc. Generally, many RAM chips are build in a way that - however - at powerup about half the bits turn out 1, and about the other half turns out 0. As a consequence, and depending on what kind of RAM chips have been used in what kind of way, the typical patterns can be "seen" by the CPU right after powerup.
VICE tries to model (some of) the real patterns accurately. Please be aware of the fact that there is - technically buggy - software out there that will only work with a certain RAM init pattern.
How generating the pattern works is easily described in three simple steps:
1. A base pattern is created using blocks of RAMInitStartValue
, which
is inverted every RAMInitValueInvert
bytes. This pattern can be offset
("rotated") by RAMInitValueOffset
bytes. This step creates the typical
00 00 ff ff ff ff 00 00 etc patterns.
2. Every RAMInitPatternInvert
bytes the base pattern is inverted
("xored") by RAMInitPatternInvertValue
. This step creates the inverted
pattern every $4000 or so bytes that is typical for some boards/ICs. It may
also create the 0x99, 0x66 based patterns that show up on other setups.
3. Every RAMInitRepeatRandom
bytes RAMInitStartRandom
bytes are
randomly inverted ("xored"). Additionally every bit is randomly inverted with
a RAMInitRandomChance
: 4096 chance. This step creates the typical
random bytes that have been observed with some boards/ICs.
RAMInitStartValue
RAMInitValueInvert
RAMInitValueOffset
RAMInitPatternInvert
RAMInitPatternInvertValue
RAMInitStartRandom
RAMInitRepeatRandom
RAMInitRandomChance
-raminitstartvalue <value>
RAMInitStartValue
)
(all emulators except vsid).
(0..255)
-raminitvalueinvert <num of bytes>
RAMInitValueInvert
)
(all emulators except vsid).
-raminitvalueoffset <num of bytes>
RAMInitValueOffset
)
(all emulators except vsid).
-raminitpatterninvert <num of bytes>
RAMInitPatternInvert
)
(all emulators except vsid).
-raminitpatterninvertvalue <value>
RAMInitPatternInvertValue
)
(all emulators except vsid).
-raminitstartrandom <num of bytes>
RAMInitStartRandom
)
(all emulators except vsid).
-raminitrepeatrandom <num of bytes>
RAMInitRepeatRandom
)
(all emulators except vsid).
-raminitrandomchance <value>
RAMInitRandomChance
)
(all emulators except vsid).
TapeLog
TapeLogDestination
TapeLogfilename
DebugCartEnable
TraceMode
AutoPlaybackFrames
MainCPU_TRACE
Drive0CPU_TRACE
Drive1CPU_TRACE
Drive2CPU_TRACE
Drive3CPU_TRACE
IEC_TRACE
-core
+core
DoCoreDump=1
, DoCoreDump=0
)
(all emulators except vsid).
-debug
+debug
DoCoreDump=1
, DoCoreDump=0
)
(all emulators except vsid).
-debugcart
+debugcart
-tapelog
+tapelog
TapeLog=1
, TapeLog=0
).
-tapelogtofile
TapeLogDestination=1
).
-tapelogtolog
TapeLogDestination=0
).
-tapelogimage <name>
TapeLogfilename
).
The following are only available when the emulators were compiled in DEBUG mode:
-trace_maincpu
+trace_maincpu
MainCPU_TRACE=1
, MainCPU_TRACE=0
)
-trace_drive0
+trace_drive0
Drive0CPU_TRACE=1
, Drive0CPU_TRACE=0
)
-trace_drive1
+trace_drive1
Drive1CPU_TRACE=1
, Drive1CPU_TRACE=0
)
-trace_drive2
+trace_drive2
Drive2CPU_TRACE=1
, Drive2CPU_TRACE=0
)
-trace_drive3
+trace_drive3
Drive3CPU_TRACE=1
, Drive3CPU_TRACE=0
)
-trace_iec
+trace_iec
IEC_TRACE=1
, IEC_TRACE=0
)
-trace_mode <value>
-autoplaybackframes <frames>
NetworkServerName
NetworkServerBindAddress
NetworkServerPort
NetworkControl
-netplayserver <name>
-netplaybind <ip>
-netplayport <port>
-netplayctrl <flag>
This section lists generic resources that do not fit in the other categories.
JAMAction
Directory
PATH
variable in the shell. The special string `$$'
stands for the default search path.
DoCoreDump
LogFileName
ExitScreenshotName
ExitScreenshotName1
FliplistName
AttachDevice8Readonly
AttachDevice9Readonly
AttachDevice10Readonly
AttachDevice11Readonly
-jamaction <Type>
JAMAction
)
(0: Show dialog, 1: continue emulation, 2: start monitor, 3: soft reset, 4: hard reset, 5: quit emulator).
-directory <Path>
Directory
).
Go to the first, previous, next, last section, table of contents.