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 right-button menu (the settings menu), via command-line options 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 ask you if you want to save the current
(changed) settings before exiting, and can be toggled with the "Save
settings on exit" command from the right-button menu.
Notice that not all the resources can be changed from the menus; some of them can only be changed by manually modifying the resource file or by using command-line options.
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] HTMLBrowserCommand="netscape %s" SaveResourcesOnExit=0 FileSystemDevice8=1 FSDevice8ConvertP00=1 FSDevice8Dir="/home/ettore/cbm/stuff/vic20p00" FSDevice8SaveP00=1 FSDevice8HideCBMFiles=1 [C64] HTMLBrowserCommand="netscape %s" 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, -mitshm
enables support of MITSHM, while +mitshm
disables it.
All these resources are available for all emulators except vsid.
AutostartPrgDiskImage
AutostartBasicLoad
AutostartRunWithColon
AutostartHandleTrueDriveEmulation
AutostartWarp
AutostartPrgMode
AutostartDelayRandom
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" menu item in the right-button menu. 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" submenu. 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 but XSync exist twice, once for each chip.
XSync is shared between the video chips.
XSync()
before updating the emulation window: this might be
necessary on low-end systems to prevent it from consuming so many system
resources that it becomes impossible for the user to interact with it.
Warning: To get full retro experience with synchronization to the vertrical raster retrace messing with X11 modelines (resolution and refresh frequencies) is necessary. This description is a suggestion - Follow this instructions at your own risk!
The following was tested under Ubuntu Linux (8.04) featuring Xorg Xserver 1:7.3+10ubuntu and mesa openGL including HW support (NVIDIA driver) supporting glx version 1.4 supplying GLX_SGI_video_sync.
It is assumed that this works also on other systems supporting the required extensions.
Preconditions:
If your systems lacks 50 or 60Hz modes you might try using `gtf' (typcally shipped with Xorg, xserver) - see related man page.
You might need to add the output such as:
# 800x600 # 50.00 Hz (GTF) hsync: 30.90 kHz; pclk: 31.15 MHz Modeline "800x600_50.00" 31.15 800 824 904 1008 600 601 604 618 -HSync +Vsync
to you Monitor Section of /etc/X11/xorg.conf and add the resolution to the `Screen' section.
Sometimes some consistency checks within the display driver drop
this resolutions again.
To drop e.g. the autodetection features in the NVIDIA driver you
might add Option "UseEDID" "FALSE"
in section Device
.
XRandR cannot cope properly with the DynamicTwinView feature of the proprietary nvidia driver. You might need
Option "DynamicTwinView" "False"
to get proper results (in Screen or Device section of you xorg.conf).
ATTENTION: Disabling such features might allow X11 to access your HW in a way that it gets damaged! You are at your own risk!
Enable fullscreen (not necessary, but makes sense):
Note that:
The following resources affect the screen emulation.
HwScalePossible
openGL_sync
openGL_no_sync
Speed
0
stands for "no limit".
RefreshRate
n
specifies a
refresh rate of 1/n
. A value of 0
enables automatic frame
skipping.
WarpMode
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 submenu 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
-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))
JoyDevice1
JoyDevice2
JoyDevice3
JoyDevice4
JoyOpposite
UserportJoy
UserportJoyType
Mouse
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>
-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
-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.
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
-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)
These settings are used to control the hardware-level emulation of the Tape drive.
DatasetteResetWithCPU
DatasetteZeroGapDelay
DatasetteSpeedTuning
DatasetteTapeWobble
-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.
RawDriveDriver
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
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
-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).
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), 3: Block device (Raw))
-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 support.
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 and 1200 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 Datapump
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, 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.
You can not simply run a shell from VICE, as the shell will notice that it does not run on its own pseudo terminal and will thus buffer its output. You need to write some program that opens an own pseudo terminal and runs the shell from there (not yet finished).
Up to four RS232 devices may be specified through the following resources:
/dev/ttyS0
;
/dev/ttyS1
;
rs232.dump
;
|lpr
.
For the first two devices you can change the baudrate the tty device is set to by specifying it on the commandline or in the menu. This baudrate is 9600 by default for the latter two, but can be changed only by resources (The baudrate is independent from the baudrate the emulator actually expects).
RsDevice1
RsDevice2
RsDevice3
RsDevice4
Acia1Enable
Acia1Dev
Acia1Base
Acia1Mode
Acia1Irq
RsUserEnable
RsUserBaud
RsUserDev
-rsdev1 <Name>
-rsdev2 <Name>
-rsdev3 <Name>
-rsdev4 <Name>
RsDevice1
, RsDevice2
RsDevice3
and RsDevice4
).
-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).
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.
This section lists command-line options specific to the built-in monitor.
KeepMonitorOpen
MonitorServer
MonitorServerAddress
-moncommands <Name>
-initbreak <address>
-keepmonopen
+keepmonopen
KeepMonitorOpen=1
, KeepMonitorOpen=0
).
-remotemonitor
+remotemonitor
-remotemonitoraddress <name>
RAMInitStartValue
RAMInitValueInvert
RAMInitPatternInvert
-raminitstartvalue <value>
RAMInitStartValue
)
(all emulators except vsid).
(0..255)
-raminitvalueinvert <num of bytes>
RAMInitValueInvert
)
(all emulators except vsid).
-raminitpatterninvert <num of bytes>
RAMInitPatternInvert
)
(all emulators except vsid).
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
NetworkServerName
NetworkServerBindAddress
NetworkServerPort
NetworkControl
LogFileName
FliplistName
AttachDevice8Readonly
AttachDevice9Readonly
AttachDevice10Readonly
AttachDevice11Readonly
UserportRTC
UserportRTCSave
-jamaction <Type>
JAMAction
)
(0: Show dialog, 1: continue emulation, 2: start monitor, 3: soft reset, 4: hard reset, 5: quit emulator).
-directory <Path>
Directory
).
-core
+core
DoCoreDump=1
, DoCoreDump=0
)
(all emulators except vsid).
-debug
+debug
DoCoreDump=1
, DoCoreDump=0
)
(all emulators except vsid).
-userportrtc
+userportrtc
UserportRTC=1
, UserportRTC=0
)
(x64, x64sc, xscpu64 and x128 only).
-userportrtcsave
+userportrtcsave
UserportRTCSave=1
, UserportRTCSave=0
)
(x64, x64sc, xscpu64 and x128 only).
Go to the first, previous, next, last section, table of contents.