This is vice.info, produced by makeinfo version 6.6 from vice.texi.

START-INFO-DIR-ENTRY
* VICE: (vice).        VICE, the Versatile Commodore Emulator.
END-INFO-DIR-ENTRY

VICE Manual

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.


File: vice.info,  Node: Top,  Next: License,  Prev: (dir),  Up: (dir)

This is the documentation for version 3.3 of VICE, the Versatile
Commodore Emulator.

* Menu:

* License::                     The GNU General Public License gives you
                                permission to redistribute this program
                                on certain terms; and also explains that
                                there is no warranty.

* Preface::                     Fundamental concepts.

* Usage::                       Invoking the emulators.
* System files::                Files needed to emulate.

* Basics::                      Simple things you can do.

* Settings and resources::      Emulator parameters you can change.

* Machine-specific features::   Peculiar characteristics of the emulators.

* Platform-specific features::  Host platform specific features.

* Snapshots::                   Save the emulator state in one file
* Monitor::                     The VICE built-in monitor.
* c1541::                       The disk-image maintenance utility.

* File formats::                Technical description of file formats.

* Acknowledgments::             People involved in VICE.
* Copyright::                   Legal stuff.
* Contacts::                    Official home page, email addresses...

* Concept Index::
* Resource Index::
* Command-line Index::


File: vice.info,  Node: License,  Next: Preface,  Prev: Top,  Up: Top

1 GNU GENERAL PUBLIC LICENSE
****************************

                         Version 2, June 1991

     Copyright © 1989, 1991 Free Software Foundation, Inc.
     675 Mass Ave, Boston, MA 02111-1307, USA

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

Preamble
========

The licenses for most software are designed to take away your freedom to
share and change it.  By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free software--to
make sure the software is free for all its users.  This General Public
License applies to most of the Free Software Foundation's software and
to any other program whose authors commit to using it.  (Some other Free
Software Foundation software is covered by the GNU Library General
Public License instead.)  You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have the
freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights.  These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you have.
You must make sure that they, too, receive or can get the source code.
And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary.  To prevent this, we have made it clear that any patent
must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and
modification follow.

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains a
     notice placed by the copyright holder saying it may be distributed
     under the terms of this General Public License.  The "Program",
     below, refers to any such program or work, and a "work based on the
     Program" means either the Program or any derivative work under
     copyright law: that is to say, a work containing the Program or a
     portion of it, either verbatim or with modifications and/or
     translated into another language.  (Hereinafter, translation is
     included without limitation in the term "modification".)  Each
     licensee is addressed as "you".

     Activities other than copying, distribution and modification are
     not covered by this License; they are outside its scope.  The act
     of running the Program is not restricted, and the output from the
     Program is covered only if its contents constitute a work based on
     the Program (independent of having been made by running the
     Program).  Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's source
     code as you receive it, in any medium, provided that you
     conspicuously and appropriately publish on each copy an appropriate
     copyright notice and disclaimer of warranty; keep intact all the
     notices that refer to this License and to the absence of any
     warranty; and give any other recipients of the Program a copy of
     this License along with the Program.

     You may charge a fee for the physical act of transferring a copy,
     and you may at your option offer warranty protection in exchange
     for a fee.

  2. You may modify your copy or copies of the Program or any portion of
     it, thus forming a work based on the Program, and copy and
     distribute such modifications or work under the terms of Section 1
     above, provided that you also meet all of these conditions:

       a. You must cause the modified files to carry prominent notices
          stating that you changed the files and the date of any change.

       b. You must cause any work that you distribute or publish, that
          in whole or in part contains or is derived from the Program or
          any part thereof, to be licensed as a whole at no charge to
          all third parties under the terms of this License.

       c. If the modified program normally reads commands interactively
          when run, you must cause it, when started running for such
          interactive use in the most ordinary way, to print or display
          an announcement including an appropriate copyright notice and
          a notice that there is no warranty (or else, saying that you
          provide a warranty) and that users may redistribute the
          program under these conditions, and telling the user how to
          view a copy of this License.  (Exception: if the Program
          itself is interactive but does not normally print such an
          announcement, your work based on the Program is not required
          to print an announcement.)

     These requirements apply to the modified work as a whole.  If
     identifiable sections of that work are not derived from the
     Program, and can be reasonably considered independent and separate
     works in themselves, then this License, and its terms, do not apply
     to those sections when you distribute them as separate works.  But
     when you distribute the same sections as part of a whole which is a
     work based on the Program, the distribution of the whole must be on
     the terms of this License, whose permissions for other licensees
     extend to the entire whole, and thus to each and every part
     regardless of who wrote it.

     Thus, it is not the intent of this section to claim rights or
     contest your rights to work written entirely by you; rather, the
     intent is to exercise the right to control the distribution of
     derivative or collective works based on the Program.

     In addition, mere aggregation of another work not based on the
     Program with the Program (or with a work based on the Program) on a
     volume of a storage or distribution medium does not bring the other
     work under the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
     under Section 2) in object code or executable form under the terms
     of Sections 1 and 2 above provided that you also do one of the
     following:

       a. Accompany it with the complete corresponding machine-readable
          source code, which must be distributed under the terms of
          Sections 1 and 2 above on a medium customarily used for
          software interchange; or,

       b. Accompany it with a written offer, valid for at least three
          years, to give any third party, for a charge no more than your
          cost of physically performing source distribution, a complete
          machine-readable copy of the corresponding source code, to be
          distributed under the terms of Sections 1 and 2 above on a
          medium customarily used for software interchange; or,

       c. Accompany it with the information you received as to the offer
          to distribute corresponding source code.  (This alternative is
          allowed only for noncommercial distribution and only if you
          received the program in object code or executable form with
          such an offer, in accord with Subsection b above.)

     The source code for a work means the preferred form of the work for
     making modifications to it.  For an executable work, complete
     source code means all the source code for all modules it contains,
     plus any associated interface definition files, plus the scripts
     used to control compilation and installation of the executable.
     However, as a special exception, the source code distributed need
     not include anything that is normally distributed (in either source
     or binary form) with the major components (compiler, kernel, and so
     on) of the operating system on which the executable runs, unless
     that component itself accompanies the executable.

     If distribution of executable or object code is made by offering
     access to copy from a designated place, then offering equivalent
     access to copy the source code from the same place counts as
     distribution of the source code, even though third parties are not
     compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense or distribute the Program is
     void, and will automatically terminate your rights under this
     License.  However, parties who have received copies, or rights,
     from you under this License will not have their licenses terminated
     so long as such parties remain in full compliance.

  5. You are not required to accept this License, since you have not
     signed it.  However, nothing else grants you permission to modify
     or distribute the Program or its derivative works.  These actions
     are prohibited by law if you do not accept this License.
     Therefore, by modifying or distributing the Program (or any work
     based on the Program), you indicate your acceptance of this License
     to do so, and all its terms and conditions for copying,
     distributing or modifying the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
     Program), the recipient automatically receives a license from the
     original licensor to copy, distribute or modify the Program subject
     to these terms and conditions.  You may not impose any further
     restrictions on the recipients' exercise of the rights granted
     herein.  You are not responsible for enforcing compliance by third
     parties to this License.

  7. If, as a consequence of a court judgment or allegation of patent
     infringement or for any other reason (not limited to patent
     issues), conditions are imposed on you (whether by court order,
     agreement or otherwise) that contradict the conditions of this
     License, they do not excuse you from the conditions of this
     License.  If you cannot distribute so as to satisfy simultaneously
     your obligations under this License and any other pertinent
     obligations, then as a consequence you may not distribute the
     Program at all.  For example, if a patent license would not permit
     royalty-free redistribution of the Program by all those who receive
     copies directly or indirectly through you, then the only way you
     could satisfy both it and this License would be to refrain entirely
     from distribution of the Program.

     If any portion of this section is held invalid or unenforceable
     under any particular circumstance, the balance of the section is
     intended to apply and the section as a whole is intended to apply
     in other circumstances.

     It is not the purpose of this section to induce you to infringe any
     patents or other property right claims or to contest validity of
     any such claims; this section has the sole purpose of protecting
     the integrity of the free software distribution system, which is
     implemented by public license practices.  Many people have made
     generous contributions to the wide range of software distributed
     through that system in reliance on consistent application of that
     system; it is up to the author/donor to decide if he or she is
     willing to distribute software through any other system and a
     licensee cannot impose that choice.

     This section is intended to make thoroughly clear what is believed
     to be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
     certain countries either by patents or by copyrighted interfaces,
     the original copyright holder who places the Program under this
     License may add an explicit geographical distribution limitation
     excluding those countries, so that distribution is permitted only
     in or among countries not thus excluded.  In such case, this
     License incorporates the limitation as if written in the body of
     this License.

  9. The Free Software Foundation may publish revised and/or new
     versions of the General Public License from time to time.  Such new
     versions will be similar in spirit to the present version, but may
     differ in detail to address new problems or concerns.

     Each version is given a distinguishing version number.  If the
     Program specifies a version number of this License which applies to
     it and "any later version", you have the option of following the
     terms and conditions either of that version or of any later version
     published by the Free Software Foundation.  If the Program does not
     specify a version number of this License, you may choose any
     version ever published by the Free Software Foundation.

  10. If you wish to incorporate parts of the Program into other free
     programs whose distribution conditions are different, write to the
     author to ask for permission.  For software which is copyrighted by
     the Free Software Foundation, write to the Free Software
     Foundation; we sometimes make exceptions for this.  Our decision
     will be guided by the two goals of preserving the free status of
     all derivatives of our free software and of promoting the sharing
     and reuse of software generally.

                              NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
     WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
     LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
     AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
     OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
     PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
     DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
     OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
     MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
     INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
     OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
     OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

                      END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs
=============================================

If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.

To do so, attach the following notices to the program.  It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

     ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
     Copyright (C) 19YY  NAME OF AUTHOR

     This program is free software; you can redistribute it and/or
     modify 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

     Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
     type `show w'.  This is free software, and you are welcome
     to redistribute it under certain conditions; type `show c'
     for details.

The hypothetical commands 'show w' and 'show c' should show the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than 'show w' and 'show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

     Yoyodyne, Inc., hereby disclaims all copyright
     interest in the program `Gnomovision'
     (which makes passes at compilers) written
     by James Hacker.

     SIGNATURE OF TY COON, 1 April 1989
     Ty Coon, President of Vice

This General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications
with the library.  If this is what you want to do, use the GNU Library
General Public License instead of this License.


File: vice.info,  Node: Preface,  Next: Usage,  Prev: License,  Up: Top

2 About VICE
************

VICE is the one and only "Versatile Commodore Emulator".  It provides
emulation of the Commodore C64, C64DTV, C128, VIC20, PET, PLUS4, SCPU64
and CBM-II computers within a single package.  The emulators run as
separate programs, but have the same user interface, share the same
settings and support the same file formats.

*Important notice:* If you have no idea what a Commodore 8-bit computer
is, or have questions about how these machines are used, how the file
formats work or anything else that is not strictly related to VICE, you
should read the appropriate FAQs _first_, as that kind of information is
not available here.  *Note Contacts::.  for information about how to
retrieve the FAQs.

All the emulators provide an accurate 6502/6510 emulator, with emulation
of all the opcodes (both documented and undocumented ones) and accurate
timing.  Unlike other emulators, VICE aims to be cycle accurate; it
tries to emulate chip timings as precisely as possible and does so
_efficiently_.

Please do _not_ expect the C64DTV, C128, PET, PLUS4, SCPU64 and CBM-II
emulators to be as good as the C64 or VIC20 one, as they are still under
construction.

_Notice:_ This documentation is written for the Unix release of VICE,
but is slowly being made universal.

* Menu:

* C64 emulator features::
* C64DTV emulator features::
* C128 emulator features::
* VIC20 emulator features::
* PET emulator features::
* CBM-II emulator features::
* SCPU64 emulator features::
* Keyboard emulation::
* Joystick emulation::
* Disk drive emulation::
* Supported file formats::
* Common problems::


File: vice.info,  Node: C64 emulator features,  Next: C64DTV emulator features,  Prev: Preface,  Up: Preface

2.1 C64 emulator features
=========================

As of version 2.3, two C64 emulators are provided: 'x64' (fast) and
'x64sc' (accurate).  As of version 3.4 'x64' will no more get built by
default and is not contained in the default binary packages.

The fast C64 emulator, called 'x64', features a fairly complete
emulation of the VIC-II video chip: sprites, all registers and all video
modes are fully emulated.  The emulation has been fully cycle-accurate
since version 0.13.0.

The accurate C64 emulator, called 'x64sc', features a cycle-based and
pixel-accurate VIC-II emulation.  This requires a much faster machine
than the old 'x64'.

A rather complete emulation of the SID sound chip is also provided.  All
the basic features are implemented as well as most of the complex ones
including synchronisation, ring modulation and filters.  There are two
emulators of the SID chip available: first is the "standard" VICE
emulator, available since VICE 0.12; the second is Dag Lem's reSID
engine.  The reSID engine is a lot more accurate than the standard
engine, but it is also a lot slower, and only suitable for faster
machines.

Naturally, also both CIAs (or VIAs, in some cases) are fully emulated
and cycle accurate.


File: vice.info,  Node: C64DTV emulator features,  Next: C128 emulator features,  Prev: C64 emulator features,  Up: Preface

2.2 C64DTV emulator features
============================

The C64DTV emulator, called 'x64dtv', features emulation of C64DTV
revisions 2 and 3.  The emulator is under construction, but most of the
DTV specific features are already supported (with varying accuracy).

Video cache is disabled by default as it currently doesn't work with
some of C64DTV's new video modes.  The new video modes have a simple
"fake" video cache implementation that may give incorrect results and
decreased performance.


File: vice.info,  Node: C128 emulator features,  Next: VIC20 emulator features,  Prev: C64DTV emulator features,  Up: Preface

2.3 C128 emulator features
==========================

The C128 emulator, called 'x128', features a complete emulation of the
internal MMU ("Memory Management Unit"), 80 column VDC screen, fast IEC
bus emulation, 2 MHz mode, Z80 emulation plus all the features of the
C64 emulation.


File: vice.info,  Node: VIC20 emulator features,  Next: PET emulator features,  Prev: C128 emulator features,  Up: Preface

2.4 VIC20 emulator features
===========================

The VIC20 emulates all the internal hardware, including the VIA chips.
The VIC-I video chip is fully emulated except NTSC interlace mode, so
most graphical effects will work correctly.

The VIC20 emulator allows the use of the VIC1112 IEEE488 interface.  You
have to enable the hardware (by menu, resource, or commandline option)
and then load the IEEE488 ROM (see for example
<http://www.funet.fi/pub/cbm/schematics/cartridges/vic20/ieee-488/325329-04.bin>,
but you have to double the size to 4k for now).  The IEEE-488 code is
then started by 'SYS45065'.


File: vice.info,  Node: PET emulator features,  Next: CBM-II emulator features,  Prev: VIC20 emulator features,  Up: Preface

2.5 PET emulator features
=========================

The PET emulator emulates the 2001, 3032, 4032, 8032, 8096, 8296 and
SuperPET (MicroMainFrame 9000) models, covering the whole series.  The
hardware is pretty much the same in each and that is why one single
program is enough to emulate all of them.  For more detailed information
about PET hardware please refer to the 'PETdoc' file.

Both the 40 column and 80 column CRTC video chips are emulated (from the
4032 onward), but a few of the features are not implemented yet (numbers
of rasterlines per char and lines per screen).  Fortunately, they are
not very important for average applications.

The PET 8096 is basically a PET 8032 with a 64k extension board which
allows remapping the upper 32k with RAM. You have to write to a special
register at '$fff0' to remap the memory.  The PET 8296 is a 8096 but
with a completely redesigned motherboard with 128k RAM in total.  Of the
additional 32k RAM you can use only some in blocks of 4k, but you have
to set jumpers on the motherboard for it.  VICE uses the command line
options '-petram9' and '-petramA' instead.  Also, the video controller
can handle a larger address range.  The PET 8x96 model emulations run
the Commodore LOS-96 operating system - basically an improved BASIC 4
version with up to 32k for BASIC text and 32k for variables.  See
'PETdoc' for more information.

The PET 8296D is an 8296 with built-in 8250 low-profile dual disk drive.

The PET 8296GD is an 8296D with additionally a "HiRes Emulator" (HRE).
This is a cheaper version of a "HRG" hi-res board which was based on
Thomson chips.  This version instead uses no additional hardware support
apart from some memory mapping tricks.  It has supporting software in
the hre-*.bin rom files.

The SuperPET also is a PET 8032 with an expansion board.  It can map 4k
at a time out of 64k into the '$9***' area.  Also it has an ACIA 6551
for RS232 communication.  The 6809 CPU that is built into the SuperPET
is now emulated, since release 2.4, including the 6702 dongle chip.

The Super-OS-9 MMU expansion, developed by TPUG (Toronto PET Users
Group) is also emulated.

The PET computers came with three major ROM revisions, so-called BASIC
1, 2 and 4, all of which are provided.  The PET 2001 uses the version 1,
the PET 3032 uses version 2, and the others use version 4.  The 2001 ROM
is horribly broken with respect to IEEE488 (they shipped it before they
tested it with the floppy drive, so only tape worked.  Therefore the
emulator patches the ROM to fix the IEEE488 routines.

As well as other low-level fixes the 2001 patch obtains the load address
for a program file from the first two bytes of the file.  This allows
the loading of both PET2001-saved files (that have $0400 as their load
address) and other PET files (that have $0401).  The PET2001 saves from
$0400 and not from $0401 as other PETs do.

Moreover, the secondary addresses used are now '0' and '1' for load and
save, respectively, and not arbitrary unused secondary addresses.

To select which model to run, specify it on the command line with the
'-model MODEL' option, where 'MODEL' can be one of a list of PET model
numbers, all described in *note PET model::


File: vice.info,  Node: CBM-II emulator features,  Next: SCPU64 emulator features,  Prev: PET emulator features,  Up: Preface

2.6 CBM-II emulator features
============================

The CBM-II emulator emulates several types of CBM-II models.  Those
models are known under different names in the USA and Europe.  In the
States they have been sold as 'B128' and 'B256', in Europe as 'CBM 610',
'CBM 620' (low-profile case) or 'CBM 710' and 'CBM 720' (high-profile
case with monitor).  In addition to that now an experimental C510
emulation is included.  The C510 (also known as P500) is the little
brother of the C600/700 machines.  It runs at roughly 1 MHz and,
surprise, it has a VIC-II instead of the CRTC. Otherwise the different
line of computers are very similar.

These computers are prepared to take a coprocessor board with an 8088 or
Z80 CPU. Indeed there are models 'CBM 630' and 'CBM 730' that supposedly
had those processors.  However these models are not emulated.

The basic difference is the amount of RAM these machines have been
supplied with.  The 'B128' and the 'CBM *10' models had 128k RAM, the
others 256k.  This implies some banking scheme, as the 6502 can only
address 64k.  And indeed those machines use a 6509, that can address 1
MByte of RAM. It has 2 registers at addresses 0 and 1.  The indirect
bank register at address 1 determines the bank (0-15) where the opcodes
'LDA (zp),Y' and 'STA (zp),Y' take the data from.  The exec bank
register at address 0 determines the bank where all other read and write
addresses take place.

The business line machines (C6xx/7xx) have the RAM in banks 1-2, resp.
1-4.  All available banks are used for BASIC, where program code is
separated from all variables, resp.  from normal variables, strings and
arrays that are distributed over other banks.  The C510 instead has RAM
in banks 0 and 1, and uses bank 1 for program and all variables.  Bank
0, though, can be accessed by the VIC-II to display graphics.

Many models have been expanded to more than the built-in memory.  In
fact some machines have been expanded to the full 1M. Bank 15 is used as
system bank, with only little RAM, and lots of expansion cartridge ROM
area, the I/O and the kernal/basic ROMs.  Some models have been modified
to map RAM into the expansion ROM area.  Those modifications can be
emulated as well.

The different settings are described in *note CBM-II model::.


File: vice.info,  Node: SCPU64 emulator features,  Next: Keyboard emulation,  Prev: CBM-II emulator features,  Up: Preface

2.7 SCPU64 emulator features
============================

The XSCPU64 emulator is a simulation of a C64 equipped with a SuperCPU64
V2B. Features:

   * 20 MHz asynchronous single cycle 65816 CPU core with proper dummy
     and invalid cycle handling.
   * 128 KiB static RAM, 0-16 MiB SIMM RAM, 64-512 KiB EPROM emulated
     and their respective timing details.
   * All RAM optimization configurations supported with write buffer.
   * I/O area access delays, write through to SRAM implemented.
   * Memory mappings including cartridge and boot memory map and kernal
     shadow.
   * Hardware registers and switches implemented.
   * Replacement SCPU64 ROM compatible with the original to avoid
     distribution problems
   * It's using the single cycle VICII core for accurate simulation

Still to do:

   * Measure and verify VICII interrupt phase shift
   * Measure and verify BA phase shift
   * SIMM RAM extra 7.5 cycle refresh delay every 10us missing.
   * CPU NMI support for "reset" button

The emulation is quite accurate but not perfect.  If you code something
timing intensive using this simulation please always check it on real
hardware to avoid bad surprises.

The hardware itself is asynchronous in nature, therefore caution must be
taken to not do long timing loops without synchronization in 20 MHz
mode.  Also don't squeeze out the last remaining cycles without leaving
a safety buffer.  Synchronization points can be created by doing I/O
reads or writes and leaving a few hundred cycles left each frame will
not hurt.

Otherwise it can happen that the code is running on this version of VICE
or my SCPU64 V2+C128D perfectly but nowhere else due to manufacturing
variations and frequency drifts.


File: vice.info,  Node: Keyboard emulation,  Next: Joystick emulation,  Prev: SCPU64 emulator features,  Up: Preface

2.8 The keyboard emulation
==========================

There are two ways of emulating the keyboard in VICE.

The default way ("symbolic mapping") is to map every key combination to
the corresponding key combination on the real machine: for example, if
you press <*>, which is bound to 'Shift-8' on a U.S. keyboard, in the
C64 emulator, the emulated machine will have just the _unshifted_ <*>
key pressed (as <*> is unshifted on the C64 keyboard).  Likewise,
pressing <'> on the same U.S. keyboard without any shift key will cause
the combination 'Shift-7' to be pressed in the emulated C64.  This way,
it becomes quite obvious what keys should be typed to obtain all the
symbols.  "The key printed on the host keyboard will be pressed in the
emulator".

There is, however, one problem with symbolic mapping: some keys really
need to be mapped specially regardless (those that do not exist on a PC
keyboard).  Some examples are the <Commodore> key, <RUN/STOP>,
<Clear/Home>.  The exact mapping depends on your host layout, but should
be easy to find out by try and error :) If in doubt, you can read the
keyboard mapping files.

The second way ("positional mapping") is to map every key on the host
keyboard to the key which has the same position on the keyboard of the
emulated machine.  This way the keyboard is more comfortable to use in
those programs (such as some games) that require the keys to be in the
correct positions.  On the other hand it can be quite confusing if you
are not very familiar with the original emulated keyboards.  Also not
all keys can be mapped exactly this way either, which means some of them
still need to be mapped to other keys (see above).

*Warning:* unlike the real C64, VICE "presses" the <Shift> key
_together_ with the key to shift when the <Shift> must be forced.  In
most cases this should work fine, but some keyboard routines are quite
picky and tend not to recognize the shift key because of this.  For
instance, 'F6' (which on the real C64 is obtained with 'Shift + F5')
could be recognized as 'F5'.  In that case, use the shift key manually
(i.e., type 'Shift + F5' in the example).  Yes, we know this is a bug.

We depend a lot on your support to improve the keyboard maps, as we can
not test all emulators in all possible configurations and using all host
keyboard mappings.  Please report any problems to us so we can fix them!

If you experience problems with 'accent' keys such as acute, grave,
tilde, circumflex, diaresis (and possibly more/other, depending on your
host keyboard layout) try switching to a "no deadkeys" layout in your
OS. In any case, please also report these problems so we can fix them!

To find out the keycodes to use, incase you want to edit the keymaps
yourself, you can enable showing the keycodes in the status bar in the
settings.


File: vice.info,  Node: Joystick emulation,  Next: Disk drive emulation,  Prev: Keyboard emulation,  Up: Preface

2.9 The joystick emulation
==========================

Joysticks can be emulated both via the keyboard and via a real joystick
connected to the host machine.

There are two keyboard layouts for joystick use, known as "numpad" and
"custom".

The "numpad" layout uses the numeric keypad keys, i.e., the numbers
<1>...<9> which emulate all the directions including the diagonal ones;
<0> emulates the fire button.

The "custom" layout is configurable to your liking.


File: vice.info,  Node: Disk drive emulation,  Next: Supported file formats,  Prev: Joystick emulation,  Up: Preface

2.10 The disk drive emulation
=============================

All the emulators support up to 4 external disk drives as devices 8, 9,
10 and 11.  Each of these devices can emulate virtual Commodore 1541,
1541-II, 1571, 1581, 2031, 2040, 3040, 4040, 1001, 8050 and 8250 drives
in one of the following ways:

   * 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);
   * accessing file system directories, thus giving you the use of files
     without having to copy them to disk images; this also allows you to
     read and write files in the 'P00' format (again, consult the
     'comp.emulators.cbm' FAQ for more info).
   * accessing a real device connected to the host machine.  This works
     using the OpenCBM library.  You can get it from
     <http://cbm4win.sf.net>.

When using disk images there are two available types of drive emulation.
One of them the "virtual drive" emulation.  It does _not_ really emulate
the serial line, but patches the kernal ROM (with the so-called "kernal
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).  For real device access it is
required to enable this type of emulation.

The IEEE488 drives (2031, 2040, 3040, 4040, 1001, 8050 and 8250) do not
use kernal traps.  Instead the IEEE488 interface lines are monitored and
the data is passed to the drive emulation.  To use them on the C64, you
need to enable the IEEE488 interface emulation.  Only if the IEEE488
emulation is enabled, those drives can be selected.

The other alternative is a "true drive" emulation.  The Commodore disk
drives are provided with their own CPU (a 6502 as the VIC20 and the
PETs) and their 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 remain unpatched 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 PETs do not use a serial IEC bus to communicate with the floppy
drive but instead use the parallel IEEE488 bus.  This does _byte by
byte_ transfers, as opposed to the _bit by bit_ transfers of the C64 and
VIC20, so making it 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 of the
Commodore IEEE488 bus interface is available for the C64 and the VIC20.
With IEEE488 drives you can have true 2031 emulation at unit #8, and
still have filesystem access at units #10 or #11, because monitoring the
IEEE488 lines does not interfere with the true drive emulation.

The IEEE488 disk drives 2040, 3040, 4040, 8050 and 8250 are Dual Drive
Floppy Disks.  This means that these drives handle two disks.  To
accomplish the emulation, only two disks can be emulated, namely units
#8 and #10.  The attached image, track display and LED display of unit
#9 and #11 are used for the second drive of the dual disk drives.  On
unix the unit number display (8 or 9, 10 or 11) in the emulation window
changes to the drive number display (0 or 1).

The Commodore 2040, 3040, 4040, 1001, 8050 and 8250 disk drives are
so-called "old-style" disk drives.  Their architecture includes not one,
but two processors of the 6502 type, namely a 6502 for the file handling
and communication with the PET (IP), and a 6504 (which is a 6502 with
reduced address space) for the drive handling (FDC). Both processors
communicate over a shared memory area.  The IP writes commands to
read/write blocks to this area and the FDC executes them.  To make the
emulation feasible, the FDC processor is not emulated cycle-exactly as a
6504, but simply by checking the commands and executing them on the
host.  This provides a fast FDC emulation, but disallows the sending the
FDC processor commands to execute code.  Applications where this is
necessary are believed to be rather seldom.  Only the format command
uses this feature, but this is checked for.

The dual disk drive 2040 emulates one of the very first CBM disk drives.
This drive has DOS version 1.  DOS1 uses an own disk type, that is
closely related to the 1541 disk image.  Only on tracks 18-24 DOS1 disks
have a sector more than 1541 disks.  DOS1 disk images have the extension
.d67.

The dual disk drives 3040 and 4040 use the same logical disk format as
the VC1541 and the 2031.  In fact, the 4040 was the first disk with DOS
version 2.  The 3040 emulated here originally was the same as 2040, only
for the european 30xx PET series.  As many of the original DOS1 disk
drives were upgraded (a simple ROM upgrade!)  to DOS2, I use the 3040
number for a DOS 2.0 disk drive, and 4040 for a revised DOS 2 disk
drive.  It is, however, not yet clear whether the disks here are write
compatible to the 1541, as rumors exist that the write gap between
sectors is different.  But read compatible they are.  As VICE emulates
the FDC processor in C and not as 6504 emulation, this does not matter
in VICE.

The drives 1001, 8050 and 8250 do actually have the very same DOS ROM.
Only the code in the FDC is different, which is taken care of by VICE.
So for all three of those disk drives, only 'dos1001' is needed.  The
DOS version used is 2.7.


File: vice.info,  Node: Supported file formats,  Next: Common problems,  Prev: Disk drive emulation,  Up: Preface

2.11 Supported file formats
===========================

VICE supports the most popular Commodore file formats:

   * 'X64' or 'D64' disk image files; Used by the 1541, 2031, 3040, 4040
     drives.

   * 'G64' GCR-encoded 1541 disk image files

   * 'P64' lowlevel NRZI flux pulse disk image files

   * 'D67' CBM2040 (DOS1) disk image format

   * 'D71' VC1571 disk image format

   * 'D81' VC1581 disk image format

   * 'D80' CBM8050 disk image format

   * 'D82' CBM8250/1001 disk image format

   * 'D1M' FD2000/FD4000 DD disk image format

   * 'D2M' FD2000/FD4000 HD disk image format

   * 'D4M' FD4000 ED disk image format

   * 'T64' tape container files (read-only)

   * 'TAP' lowlevel tape image files

   * 'P00' program files

   * 'CRT' C64 cartridge image files

   * 'TCRT' tapecart image files

An utility ('c1541', *note c1541::) is provided to allow transfers and
conversions between these formats.

Notice that the use of the 'X64' file format is depreciated now.

You can convert an 'X64' file back into a 'D64' file with the UNIX 'dd'
command:

     dd bs=64 skip=1 if=IMAGE.X64 of=IMAGE.D64

*Note File formats::.  for a technical description of the supported file
formats.


File: vice.info,  Node: Common problems,  Prev: Supported file formats,  Up: Preface

2.12 Common problems
====================

This section tries to describe the most common known problems with VICE,
and how to resolve them.

* Menu:

* Sound problems::
* Video problems::
* Printer problems::
* PET keyboard problems::


File: vice.info,  Node: Sound problems,  Next: Video problems,  Prev: Common problems,  Up: Common problems

2.12.1 Sound problems
---------------------

VICE should compile and run without major problems on many systems, but
there are some known issues related to the sound driver.

If you are having sound problems, such as skipping, first monitor how
much CPU time the respective emulator is taking on your system.  To run
smoothly, on a modern system, it should really never go over 50% or so,
except for very short peaks that should also stay well beyond 90%.  If
you see it takes more, try disabling some of the most CPU intense
features (disable CRT emulation, use fastsid instead of reSID, disable
true drive emulation).

If the CPU usage is ok, try using a different sound driver.  You may
also try increasing the sound buffer size (although the default should
be ok for modern systems).

All platforms that can run the SDL port (like Amiga, BeOS, etc) should
be able to play sound via SDL.


File: vice.info,  Node: Video problems,  Next: Printer problems,  Prev: Sound problems,  Up: Common problems

2.12.2 Video problems
---------------------

Due to the way VICE currently handles its main loop, a common problem
with video sync occurs when the real (the monitors) frame rate is very
close to, equal, or lower than the framerate of the emulated machine.
We recommend to use a framerate which is slightly higher than that (eg
51Hz for the C64).


File: vice.info,  Node: Printer problems,  Next: PET keyboard problems,  Prev: Video problems,  Up: Common problems

2.12.3 Printer problems
-----------------------

VICE supports the emulation of a printer either on the userport or as
IEC device 4.  Unfortunately the Commodore IEC routines do not send all
commands to the IEC bus.  For example an 'OPEN 1,4' is not seen on the
IEC bus.  Also a 'CLOSE 1' after that is not seen.  VICE can see from
printing that there was an 'OPEN', but it cannot see when the close was.
Also a "finish print job" cannot be seen on the userport device.  To
flush the printer buffer (write to 'print.dump' or to the printer) now a
menu entry can be used.  Disabling and re-enabling the printer should
work as well.

The printing services have not been extensively tested but apart from
the problem mentioned above it should work fine now.


File: vice.info,  Node: PET keyboard problems,  Prev: Printer problems,  Up: Common problems

2.12.4 PET keyboard problems
----------------------------

If you find that the German keyboard mapping (plus German charset) does
not print uppercase umlauts, then you are right.  The umlauts replace
the [,\ and ] characters in the charset.  The keys that make these
characters do not have a different entry in the PET editor ROM tables
when shifted.  Thus it is not possible to get the uppercase umlauts in
the editor.  Nevertheless other programs are reported to change the
keyboard mapping table and thus allow the use of the shifted (uppercase)
umlauts.

Anyway, the VICE keyboard mappings are far from being perfect and we are
open to any suggestions.


File: vice.info,  Node: Usage,  Next: System files,  Prev: Preface,  Up: Top

3 Invoking the emulators
************************

The names of the available emulators are:

   * 'vsid', the SID player

   * 'x64', the fast C64 emulator

   * 'x64sc', the accurate C64 emulator

   * 'x64dtv', the C64DTV emulator

   * 'x128', the C128 emulator

   * 'xvic', the VIC20 emulator

   * 'xpet', the PET emulator

   * 'xplus4', the PLUS4 emulator

   * 'xcbm2', the CBM-II emulator (CRTC models)

   * 'xcbm5x0', the CBM-II emulator (VIC-II models)

   * 'xscpu64', the SCPU64 emulator

You can run each of them by simply typing the name from a shell or by
configuring your window manager for example to use them to open disk
images.

If you want to look at the log output run them from a terminal window
such as 'xterm' or 'rxvt'.  For example, you could do

     xterm -e x64sc

* Menu:

* Command-line initialization::
* Command-line autostart::


File: vice.info,  Node: Command-line initialization,  Next: Command-line autostart,  Prev: Usage,  Up: Usage

3.1 Command-line options used during initialization
===================================================

There are several options you can specify on the command line.  Some of
them are used to specify emulation settings and will be described in
detail later (*note Settings and resources:: for a complete list).  The
remaining options are used only to give usage information or to
initialize the emulator in some way:

'-help'
'-?'
     List all the available command-line options and their meaning.

'-features'
     List all compile time features

'-default'
     Set default resources (*note Settings and resources::).  This will
     override all the settings specified before, but not the settings
     specified afterwards on the command line.

'-config <filename>'
     Specify config file

'-dumpconfig <filename>'
     Write the complete config into file.  Normally only resources that
     have been changed from their default value would be written to the
     config file, however with this option you can see all resources and
     their current values.

'-logfile <name>'
     Specify log file name ('LogFileName').

'-verbose'
     Enable verbose log output.

'-silent'
     Disable all log output (except errors).

'-keybuf <string>'
     Put the specified string into the keyboard buffer.

'-console'
     Console mode (for music playback, or for running the emulator test
     programs)

'-limitcycles <cycles>'
     Automatically exit the emulator after a given number of cycles.

'-chdir <directory>'
     Change the working directory.

'-autostart <name>'
     Autostart <name> (*note Command-line autostart::).

'-autoload <name>'
     Attach and autoload tape/disk image <name>

'-1 <Name>'
     Attach <Name> as a tape image file.
'-8 <Name>'
'-9 <Name>'
'-10 <Name>'
'-11 <Name>'
     Attach <Name> as a disk image to device 8, 9, 10 or 11.

'-attach8ro'
'-attach9ro'
'-attach10ro'
'-attach11ro'
     Attach disk image for drive #8-11 read only
     ('AttachDevice8Readonly=1', 'AttachDevice9Readonly=1',
     'AttachDevice10Readonly=1', 'AttachDevice11Readonly=1') (all
     emulators except vsid).

'-attach8rw'
'-attach9rw'
'-attach10rw'
'-attach11rw'
     Attach disk image for drive #8-11 read write (if possible)
     ('AttachDevice8Readonly=0', 'AttachDevice9Readonly=0',
     'AttachDevice10Readonly=0', 'AttachDevice11Readonly=0') (all
     emulators except vsid).

'-exitscreenshot <name>'
     Specify name of a screenshot file that will be written when the
     emulator exits.  ('ExitScreenshotName').

'-exitscreenshotvicii <name>'
     Specify name of a screenshot file that will be written when the
     emulator exits.  ('ExitScreenshotName1').  (x128)


File: vice.info,  Node: Command-line autostart,  Prev: Command-line initialization,  Up: Usage

3.2 Autostarting programs from the command-line
===============================================

It is possible to let the emulator "autostart" a disk or tape image
file, by simply specifying its name as the _last_ argument on the
command line, for example

     x64sc lovelygame.d64

will start the C64 emulator, attaching 'lovelygame.d64' as a disk image
and running the first program on it.  You can also specify the name of
the program on the fisk image by appending a colon (':') the name itself
to the argument; for example

     x64sc "lovelygame.d64:run me"

will run the program named 'run me' on 'lovelygame.d64' instead of the
first one.

Using the command-line option '-autostart' is equivalent; so the same
result can be obtained with

     x64sc -autostart "lovelygame.d64:run me"

If you specify a raw CBM or P00 file, the emulator will setup the file
system based drive emulation so that it is enabled and accesses the
directory containing the file first.  This is a very convenient way to
start multi-file programs stored in file system directories and not
requiring "true" drive emulation.

*Note Disk and tape images::.  for more information about images and
autostart.


File: vice.info,  Node: System files,  Next: Basics,  Prev: Usage,  Up: Top

4 System files
**************

In order to work properly, the emulators need to load a few system
files:

   * the "system ROMs", raw binary files containing copies of the
     original ROMs of the machine you are emulating;

   * the "keyboard maps", text files describing the keyboard layout;

   * the "palette files", text files describing the colors of the
     machine you are emulating.

   * the "romset files", text files describing the different ROMs to
     load.

The place where they will be searched for depends on the value of the
'Directory' resource, which is a colon (':')-separated search path list,
like the UNIX 'PATH' environment variable.  The default value is

     PREFIX/lib/vice/EMU:$HOME/.vice/EMU:BOOTPATH/EMU

Where 'PREFIX' is the installation prefix (usually '/usr/local'), 'EMU'
is the name of the emulated machine ('C64', 'C64DTV', 'C128', 'PET',
'PLUS4', 'CBM-II', 'SCPU64' or 'VIC20') and 'BOOTPATH' is the directory
where the executable resides.  The disk drive ROMs are looked for in a
directory with 'EMU' set to 'DRIVES'.  '$HOME' is the user's home
directory.

For example, if you have the C64 emulator installed in

     /usr/local/bin/x64

then the value will be

     /usr/local/lib/vice/C64:$HOME/.vice/C64:/usr/local/bin/C64

And system files will be searched for under the following directories,
in the specified order:

  1. '/usr/local/lib/VICE/C64'
  2. '$HOME/.vice/C64'
  3. '/usr/local/bin/C64'

System files can still be installed in a different directory if you
specify a complete path instead of just a file name.  For example, if
you specify './kernal' as the kernal image name, the kernal image will
be loaded from the current directory.  This can be done by using
command-line options or by modifying resource values (*note Resource
files::).

* Menu:

* ROM files::                   Files containing dumps of the original ROMs.
* Keymap files::                Files describing the keyboard layout.
* Palette files::               Files defining the machine's colors.
* Romset files::                Files defining the machine's ROM set.


File: vice.info,  Node: ROM files,  Next: Keymap files,  Prev: System files,  Up: System files

4.1 ROM files
=============

Every emulator requires its own ROM set.  For the VIC20 and the C64, the
ROM set consists of the following files:

   * 'kernal', the Kernal ROM (8 KBytes)

   * 'basic', the Basic ROM (8 KBytes)

   * 'chargen', the character generator ROM (4 Kbytes)

The C128 needs the following files:

   * 'kernal', the Kernal ROM (8 Kbytes)

   * 'basic', the Basic + Editor ROM (32 Kbytes)

   * 'chargen', the character generator ROM (4 Kbytes)

The C128, VIC20, SCPU64 and C64 emulators also need the following DOS
ROMs for the hardware-level emulation of the 1540, 1541, 1571, 1581,
2000 and 4000 disk drives:

   * 'dos1540', the 1540 drive ROM (16 Kbytes)

   * 'dos1541', the 1541 drive ROM (16 Kbytes)

   * 'dos1541II', the 1541-II drive ROM (16 Kbytes)

   * 'dos1571', the 1571 drive ROM (32 Kbytes)

   * 'dos1581', the 1581 drive ROM (32 Kbytes)

   * 'dos2000', the 2000 drive ROM (32 Kbytes)

   * 'dos4000', the 4000 drive ROM (32 Kbytes)

In addition to those all emulators can handle a parallel IEEE488
interface (the C64 and C128 via '$df**' extension, the VIC20 via VIC1112
emulation) so they also need the DOS ROM for the IEEE disk drives:

   * 'dos2031', the 2031 drive ROM (16 Kbytes) (DOS 2.6, Commodore ROM
     images 901484-03 and 901484-05)

   * 'dos2040', the 2040 drive ROM (8 Kbytes) (DOS 1, Commodore ROM
     images 901468-06, 901468-07)

   * 'dos3040', the 3040 drive ROM (12 Kbytes) (DOS 2, Commodore ROM
     images 901468-11, 901468-12 and 901468-13)

   * 'dos4040', the 4040 drive ROM (12 Kbytes) (DOS 2, Commodore ROM
     images 901468-14, 901468-15 and 901468-16)

   * 'dos1001', the 1001/8050/8250 drive ROM (16 Kbytes) (DOS 2.7,
     Commodore ROM images 901887-01 and 901888-01)

Note that there are other DOS images on the internet.  The DOS 2.5
images might be used with the 8050, but it cannot handle the double
sided drives of the 1001 and 8250 and it is not supported by VICE.

The PET emulator uses an expanded setup, because there are three major
versions of the Basic and the Kernal, and many versions of the Editor
ROM. In addition there are cartridge ROM sockets.

The Kernal files contain the memory from range $F000-$FFFF, the Basic
ROMs either the range $C000-$DFFF or $B000-$DFFF. To handle the
different screen sizes and keyboards, different so-called "editor-ROMs"
for the memory range $E000-$E800 are provided.  The PET ROMs have the
following names:

   * 'kernal1', the PET2001 Kernal ROM (4 KBytes) (Commodore ROM images
     901447-06 and 901447-07)
   * 'kernal2', the PET3032 Kernal ROM (4 KBytes) (Commodore ROM image
     901465-03)
   * 'kernal4', the PET4032/8032 Kernal ROM (4 KBytes) (Commodore ROM
     image 901465-22)

   * 'basic1', the PET2001 Basic 1 ROM (8 KBytes) (Commodore ROM images
     901447-09, 901447-02, 901447-03, 901447-04.bin.  The -09 ROM is the
     revised -01 ROM)
   * 'basic2', the PET3032 Basic 2 ROM (8 KBytes) (Commodore ROM images
     901465-01 and 901465-01)
   * 'basic4', the PET4032/8032 Basic 4 ROM (12 KBytes) (Commodore ROM
     images 901465-23, 901465-20 and 901465-21.  The -23 ROM is a
     revised -19 ROM)

   * 'edit1g', the PET2001 editor for graphics keyboards (2 KBytes)
     (Commodore ROM image 901447-05)
   * 'edit2b', the PET3032 editor for business keyboards (2 KBytes)
     (Commodore ROM image 901474-01)
   * 'edit2g', the PET3032 editor for graphics keyboards (2 KBytes)
     (Commodore ROM image 901447-24)
   * 'edit4g40', the PET4032 editor for graphics keyboards (2 KBytes)
     (Commodore ROM image 901498-01)
   * 'edit4b40', the PET4032 editor for business keyboards (2 KBytes)
     (Commodore ROM image 901474-02)
   * 'edit4b80', the PET8032 editor for business keyboards (2 KBytes)
     (Commodore ROM image 901474-04-?)

   * 'chargen', the character generator ROM (2k).  It has two sets with
     128 chars each.  The second (inverted) half of each set is computed
     from the first half by inverting it.  This is a PET hardware
     feature.  (Commodore ROM image 901447-10)
   * 'chargen.de', the character generator ROM (2k).  This version is a
     patched German charset, with the characters [, \ and ] replaced by
     umlauts.  It has been provided by U. Guettich and he reports that
     it is supported by some programs.

   * 'characters.901640-01.bin', the SuperPET character generator ROM
     (4k).  The first half is the same as 'chargen', the second half
     contains, instead of an upper and lower case set, an ASCII
     character set and an APL character set.  For these sets, the screen
     code is equal to the ASCII/APL code.
   * 'waterloo-[abcdf]000.901898-0[1-5].bin',
     'waterloo-e000.901897-01.bin'.  The Waterloo system ROMs.

   * 'hre-9000.324992-02.bin' HiRes Emulator (at $9000) and
     'hre-a000.324993-02.bin' HiRes BASIC (at $A000).  These are the two
     roms for supporting the HRE on the 8296.  The ROMs are initialized
     by the command 'SYS 36864'.

The PETs also have sockets for extension ROMs for the addresses
$9000-$9FFF, $A000-$AFFF and $B000-$BFFF (the last one for PET2001 and
PET3032 only).  You can specify ROM image files for those extensions
command line options '-petrom9', '-petromA' and '-petromB' resp.

An alternative would be to specify a long kernal ROM with the '-kernal'
option that includes the extension ROM areas.

Also, you can specify replacements for the basic ROM at $B000-$DFFF with
the '-petromBasic' option and for the editor ROM at $E000-$E7FF with the
'-petromEditor' option.

The CBM-II emulator again uses another setup.  For those models the
kernal used is the same for all.  However, for different amounts of
memory exist different versions of the BASIC ROMs.  The 128k RAM version
(C610, C710, B128) uses one bank of 64k for the BASIC text and another
one for all the variables.  The 256k RAM version uses one bank for text,
one for variables, one for arrays and one for strings.

Also the character generator ROMs have a format different from the
above.  The other character ROMs have 8 bytes of pixel data per
character.  Those ROMs have 16 bytes per character instead.  The C6x0
only uses the first 8 of it, but the C7x0 uses 14 lines per character
and needs those larger ROMs.  Both ROMs hold, like the PET, two
character sets with 128 characters each.  Again the second half of the
full (256 char) character set is computed by inverting.

   * 'kernal', the KERNAL (8k) for the business machines (6xx/7xx)

   * 'kernal.500', the KERNAL (8k) for the personal machine (510)
     (901234-02)

   * 'basic.128', the CBM-II 128k BASIC (16k)

   * 'basic.256', CBM-II 256k BASIC (16k)

   * 'basic.500', C510 BASIC (16k) (901236-02 + 901235-02)

   * 'chargen.500', character generator ROM for the C5x0 (4k)
     (901225-01)

   * 'chargen.600', character generator ROM for the C6x0 (4k)

   * 'chargen.700', character generator ROM for the C7x0 (4k)

The SCPU64 needs the following files:

   * 'scpu64', the SCPU64 ROM (128 Kbytes)

   * 'chargen', the character generator ROM (4 Kbytes)


File: vice.info,  Node: Keymap files,  Next: Palette files,  Prev: ROM files,  Up: System files

4.2 Keymap files
================

"Keymap files" are used to define the keyboard layout, defining which
key (or combination of keys) must be mapped to each keysym.

In other words, the keyboard emulation works like this: whenever the
user presses or releases a key while the emulation window has the input
focus, the emulator receives an event with a value that identifies that
key.  That value is called a "keysym" and is unique to that key.  The
emulator then looks up that keysym in an internal table that tells it
which key(s) to press or release on the emulated keyboard.

This table is described by the keymap file, which is made up of lines
like the following:

     KEYSYM ROW COLUMN SHIFTFLAG

Where:

   * 'KEYSYM' is a string (GTK) or number (SDL) identifying the keysym:
     you can use the "show keycodes in statusbar" feature to see what
     keysym is bound to any key;

   * 'ROW' and 'COLUMN' identify the key on the emulated keyboard;

   * 'SHIFTFLAG' can have one of the following values:

        * '0': the key is never shifted;

        * '1': the key is shifted;

        * '2': the key is the left shift;

        * '4': the key is the right shift;

        * '8': the key can be (optionally) shifted by the user.

        * '16': deshift key for this keysym/scancode

        * '32': another definition for this keysym/scancode follows

        * '64': key is shift-lock on emulated machine

        * '128': shift modifier required on host

        * '256': key is used for an alternative keyboard mapping

        * '512': alt-r (alt-gr) modifier required on host

        * '1024': ctrl modifier required on host

        * '2048': key is combined with cbm for this keysym/scancode

        * '4096': key is combined with ctrl for this keysym/scancode

        * '8192': key is (left) cbm on emulated machine

        * '16384': key is (left) ctrl on emulated machine

The 'SHIFTFLAG' is useful if you want certain keys to be "artificially"
shifted by the emulator, and not by the user.  For example, <F2> is
shifted on the C64 keyboard, but you might want it to be mapped to the
unshifted <F2> key on the PC keyboard.  To do so, you just have to use a
line like the following:

     F2 0 4 1

where '0' and '4' identify the key (row 0, column 4 on the keyboard
matrix), and '1' specifies that every time the user presses <F2> the
shift key on the C64 keyboard must be pressed.

There are also some special commands you can put into the keyboard file;
they are recognized because they start with an exclamation mark:

   * '!CLEAR' clears the currently loaded keyboard map; it is necessary
     to put this at the beginning of the file if you want the keymap
     file to override all of the current internal settings;

   * '!INCLUDE' followed by "filename" reads (inserts) file as mapping
     file.  This is useful when adding local mappings to an otherwise
     generic file (so you dont have to copy the while file, but just
     add/modify a few keys).

   * '!UNDEF' keysym' remove keysym from table

   * '!LSHIFT', '!RSHIFT', followed by a row and a column value, specify
     where the left and right shift keys are located on the emulated
     keyboard; for example, C64 default keymaps will specify

          !LSHIFT 1 7
          !RSHIFT 6 4

   * '!LCTRL', followed by a row and a column value, specifiy where the
     left control key is located on the emulated keyboard.

   * '!LCBM', followed by a row and a column value, specifiy where the
     left CBM key is located on the emulated keyboard.

   * '!VSHIFT', followed by a shiftkey (RSHIFT or LSHIFT), specify what
     key will be used as a virtual shift key when the shift flag is set.

   * '!SHIFTL', followed by a shiftkey (RSHIFT or LSHIFT), specify what
     key will be used as a virtual shift-lock key.

   * '!VCTRL', followed by a ctrlkey (LCTRL), specify what key will be
     used as a virtual control key.

   * '!VCBM', followed by a cbmkey (LCBM), specify what key will be used
     as a virtual CBM key.

Any line starting with the '#' sign, instead, is completely ignored.
This is useful for adding comments within the keymap file.

VICE keymap files have the '.vkm' default extension, and every emulator
comes with a default positional mapping and a default symbolic mapping.


File: vice.info,  Node: Palette files,  Next: Romset files,  Prev: Keymap files,  Up: System files

4.3 Palette files
=================

"Palette files" are used to specify the colors used in the emulators.
They are made up of lines like the following:

     RED GREEN BLUE DITHER

where 'RED', 'GREEN' and 'BLUE' are hexadecimal values ranging from 0 to
FF and specifying the amount of red, green and blue you want for each
color and 'DITHER' is a 4-bit hexadecimal number specifying the pattern
you want when rendering on a B/W display.

You have to include as many lines as the number of colors the emulated
machine has, and the order of the lines must respect the one used in the
machine (so the N'th line must contain the specifications for color N -
1 in the emulated machine).

Lines starting with the '#' sign are completely ignored.  This is useful
for adding comments (such as color names) within the palette file.

For example, the default PET palette file (which has only two colors, 0
for background and 1 for foreground), looks like the following:

     #
     # VICE Palette file
     #
     # Syntax:
     # Red Green Blue Dither
     #

     # Background
     00 00 00 0

     # Foreground
     00 FF 00 F


File: vice.info,  Node: Romset files,  Prev: Palette files,  Up: System files

4.4 Romset files
================

The Romset files are not used by default on all emulators.  You might
have recognized that the names of the ROM images are saved in resources.
Loading a Romset file now just means a 'shortcut' to changing all the
resources with ROM image names and reloading the ROMs.

The PET and CBM-II emulators use this feature to change between the
different ROM versions available for those machines.  E.g.  the Romset
file for the PET 2001 is

     KernalName="pet2001"
     EditorName=
     ChargenName="chargen"
     RomModule9Name=
     RomModuleAName=
     RomModuleBName=

As you can see, the file even uses the same syntax as the resource file,
it is just a bit stripped down.

While a Romset file is processed, the directory where the Romset file
was found is temporarily prepended to the search path ('Directory'
resource).  This also means that if you have a setting for 'Directory'
in it, its effect is limited to the Romset file itself.

4.4.1 Romset command line options
---------------------------------

'-romsetfile <File>'
     load the given romset file

'-romsetarchive <File>'
     load the given romset archive

'-romsetarchiveselect <Item number>'
     select the given item from the current romset archive


File: vice.info,  Node: Basics,  Next: Settings and resources,  Prev: System files,  Up: Top

5 Basic operation
*****************

This section describes the basic things you can do once the emulator has
been fired up.

* Menu:

* Emulation window::            The window the emulator runs in.
* Menus::                       Using emulator menus.
* Help::                        Getting help if you are stuck.
* File Selector::               Selecting files interactively.
* Disk and tape images::        Using virtual disks and tapes.
* Reset::                       Resetting the virtual machines.


File: vice.info,  Node: Emulation window,  Next: Menus,  Prev: Basics,  Up: Basics

5.1 The emulation window
========================

When the emulator is run, the screen of the emulated machine is
displayed in a window which we will call the "emulation window".  This
window will be updated in real time, displaying the same contents that a
real monitor or TV set would.

Below the emulation window there is an area which is used to display
information about the state of the emulator; we will call this area the
"status bar".

On the extreme left of the status bar, there is a "performance meter".
This displays the current relative speed of the emulator (as a
percentage) and the update frequency (in frames per second).  All the
machines emulated are PAL, so the update frequency will be 50 frames per
second if your system is fast enough to allow emulation at the speed of
the real machine.

On the extreme right of the status bar, there is a "drive status
indicator".  This is only visible if the hardware-level ("True") 1541
emulation is turned on.  In that case, the drive status indicator will
contain a rectangle emulating the drive LED and will display the current
track position of the drive's read/write head.


File: vice.info,  Node: Menus,  Next: Help,  Prev: Emulation window,  Up: Basics

5.2 Using the menus
===================

It is possible to execute some commands and change emulation parameters
while the emulator is running: most emulation settings can be changed in
the "options menu".  Additionally clicking on the various widgets in the
status bar gives access to related settings.  Settings can be saved and
later used with the "Save settings" and "Load settings" menu items,
respectively.  Also by default, settings will get saved when exiting the
emulator.  "Restore default settings" restores the factory defaults.
See *Note Settings and resources:: for more information about how
settings work in VICE.

A lot of settings and actions can be reached via "shortcuts" or
"hotkeys", i.e., it is possible to execute them by pressing a sequence
of keys instead of going through the menu with the mouse.  Where
shortcuts exist, they are displayed in parentheses at the right edge of
the menu item.  In VICE, all shortcuts must begin with the <Meta> or
<Alt> key.  So, for example, to attach a disk image to drive #8 (the
corresponding menu item displays "M-8"), you have to press the <Meta>
(or <Alt>) and then <8>.

Note that no other key presses are passed on to the emulated machine
while either <Meta> or <Alt> are held down.


File: vice.info,  Node: Help,  Next: File Selector,  Prev: Menus,  Up: Basics

5.3 Getting help
================

At any time, if you get stuck or do not remember how to perform a
certain action, you can use the "Browse manuals" command (from the help
menu).  This will open either the PDF or popup a browser and open the
HTML version of the documentation.

Notice that on Linux this requires VICE to be properly (and fully)
installed, eg with a 'make install'.


File: vice.info,  Node: File Selector,  Next: Disk and tape images,  Prev: Help,  Up: Basics

5.4 Using the file selector
===========================

In those situations where it is necessary to specify a file name, all of
the VICE emulators will pop up a file selector window allowing you to
select or specify a file interactively.

To the left of the file selector, there is a list of ancestor
directories: by clicking on them, you can ascend the directory tree.  To
the right, there is a list of the files in the current directory; files
can be selected by clicking on them.  If you click on a directory, that
directory becomes the current one; if you click on an ordinary file, it
becomes the active selection.

At the top, there is a "directory box", with the complete path of the
current directory, and a "file name box", with the name of the currently
selected file.  At the bottom there are two buttons: "OK" confirms the
selected file and "Cancel" abandons the file selector without cancelling
the operation.

It is also possible to specify what files you want to show in the file
selector by writing an appropriate shell-like pattern in the directory
box; e.g., '~/*.[dx]64' will only show files in the home directory whose
name ends with either '.d64' or with '.x64'.


File: vice.info,  Node: Disk and tape images,  Next: Reset,  Prev: File Selector,  Up: Basics

5.5 Using disk and tape images
==============================

The emulator is able to emulate disk drives and tape recorders if
provided with suitable "disk images" or "tape images".  An "image" is a
raw dump of the contents of the media, and must be "attached" before the
emulator can use it.  "Attaching" a disk or tape image is like
"virtually" inserting a diskette or a cassette into the disk drive or
the tape recorder: once an image is attached, the emulator is able to
use it as a storage media.

There are five commands that deal with disk and tape images:

   * Attach Disk Image
   * Detach Disk Image
   * Attach Tape Image
   * Detach Tape Image
   * Smart-attach a file

The first four commands are used to insert and remove the virtual disks
and cassettes from the respective units.  On the other hand, the last
commands tries to guess the type of the image you are attaching from its
name and size, and attaches it to the most reasonable device.

Supported formats are 'D64', 'G64', 'P64' and the ancient 'X64' for disk
images (devices 8, 9 and 10) and 'T64' and 'TAP' for tape images.

Notice that 'T64' support is _read-only_, and that the cassette is
automatically rewound when you reach its end.  For actually emulating
tape, the 'TAP' format is highly recommended.

Another important feature is that raw Commodore BASIC binary files and
.P00 files can be attached as tapes.  As you can autostart a tape image
when it is attached (*note Autostart::), this allows you to autostart
these particular files as well.

You can attach a disk for which you do not have write permissions: when
this happens, the 1541 emulator will emulate a write-protected disk.
This is also useful if you want to prevent certain disk images from
being written to; in the latter case, just remove the write permission
for that file, e.g., by doing a 'chmod a-w'.

* Menu:

* Autostart::                   Starting a program automagically.
* Compressed files::            Dealing with compressed files.
* Zipcode and Lynx::            Using Zipcoded ([1-4]!*) and Lynx files.


File: vice.info,  Node: Autostart,  Next: Compressed files,  Prev: Disk and tape images

5.5.1 "Autostarting" an image
-----------------------------

If you want to reset the machine and run the first program on a certain
image without typing any commands at the Commodore BASIC prompt, you can
use the "Autostart" button in the file selector window after selecting a
proper disk or tape image file.

If true drive emulation is turned on, and the "Handle TDE at Autostart"
setting is enabled, true drive emulation will be turned off before
running the program and then turned on again after it has been loaded.
This way, you get the maximum possible speed while loading the file, but
you do not lose compatibility once the program itself is running.  This
method is not completely safe, because some autostarting methods might
cause the true drive emulation not to be turned on again, which is why
it is disabled by default.


File: vice.info,  Node: Compressed files,  Next: Zipcode and Lynx,  Prev: Autostart,  Up: Disk and tape images

5.5.2 Using compressed files
----------------------------

It is also possible to attach disk or tape images that have been
compressed through various algorithms; compression formats are
identified from the file extension.  The following formats are supported
(the expected file name extension is in parenthesis):

   * GNU Zip ('.gz' or '.z');
   * BZip version 2 ('.bz2');
   * PkZip ('.zip');
   * GNU Zipped TAR archives ('.tar.gz', '.tgz');
   * Zoo ('.zoo').

PkZip, 'tar.gz', 'lha' and 'zoo' support is _read-only_ and always uses
the _first_ 'T64' or 'D64' file in the archive.  So archives containing
multiple files will always be handled as if they contain only a single
file.

Windows and DOS don't contain the needful programs to handle compressed
archives.  Get gzip and unzip for Windows at
<ftp://ftp.freesoftware.com/pub/infozip/WIN32> and for DOS at
<ftp://ftp.freesoftware.com/pub/infozip/MSDOS>.  Don't use pkunzip for
DOS, it doesn't work.  The programs to use BZip2 archives may be found
at <http://sourceware.cygnus.com/bzip2>.  Just put the programs
(unzip.exe, gzip.exe, bzip2.exe) into a directory of your search path
(e.g.  C:\DOS or C:\WINDOWS\COMMAND; have a look at the PATH variable).


File: vice.info,  Node: Zipcode and Lynx,  Prev: Compressed files,  Up: Disk and tape images

5.5.3 Using Zipcode and Lynx images
-----------------------------------

Since version 0.15, the VICE emulators have been able to attach disks
packed with Zipcode or Lynx directly, removing the need to manually
convert them into 'D64' or 'X64' files with 'c1541'.  This is achieved
by automatically invoking 'c1541', letting it decode the file into a
temporary image and attaching the resulting temporary image read-only.
For this to work, the directory containing 'c1541' must be in your
'PATH'.

This uses the '-unlynx' and '-zcreate' options of 'c1541' (*note c1541
commands and options::); these commands are not very reliable yet, and
could fail with certain kinds of Lynx and Zipcode images (for example,
they cannot deal with 'DEL' files properly).  So please use them with
caution.

Lynx files usually come as '.lnx' files which are unpacked into single
disk images.  On the other hand, Zipcode files do not have a particular
extension (although '.z64' is sometimes used), and represent a disk by
means of component files, named as follows:

   * '1!NAME'
   * '2!NAME'
   * '3!NAME'
   * '4!NAME'

If you attach as a disk image (or smart-attach) any one of these files,
the emulator will simply pick up the other three (by examining the name)
and then build a disk image using all four.


File: vice.info,  Node: Reset,  Prev: Disk and tape images,  Up: Basics

5.6 Resetting the machine
=========================

You can reset the emulated machine at any time by using the "Reset"
command from the file menu.  There are two types of reset:

   * "soft reset", which simply resets the CPU and all the other chips;
   * "hard reset", which also clears up the contents of RAM.

A "soft reset" is the same as a hardware reset achieved by pulling the
RESET line down; a "hard reset" is more like a power on/power off
sequence in that it makes sure the whole RAM is cleared.

It is possible that a soft reset may not be enough to take the machine
to the OS initialization sequence: in such cases, you will have to do a
hard reset instead.

This is especially the case for the CBM-II emulators.  Those machines
examine a memory location and if they find a certain "magic" value they
only do what you know from the C64 as 'Run/Stop-Restore'.  Therefore, to
really reset a CBM-II use hard reset.


File: vice.info,  Node: Settings and resources,  Next: Machine-specific features,  Prev: Basics,  Up: Top

6 Settings and resources
************************

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.

* Menu:

* Resource files::              Format of resource files.
* Resources and command-line::  Specifying settings from the
                                command-line

* Performance settings::        Settings that affect speed of execution.
* Video settings::              Settings dealing with the video output.
* Keyboard settings::           Settings relative to the keyboard emulation.
* Control port settings::       Settings that control what device is emulated on available control ports.
* Sound settings::              Settings that control audio playback
* Drive settings::              Settings that control disk-drive emulation.
* Peripheral settings::         Settings for emulated external devices.
* RS232 settings::              Settings for the RS232 emulation.
* Monitor settings::            Settings for the built-in monitor.
* Misc settings::               Other settings.


File: vice.info,  Node: Resource files,  Next: Resources and command-line,  Prev: Settings and resources,  Up: Settings and resources

6.1 Format of resource files
============================

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.


File: vice.info,  Node: Resources and command-line,  Next: Performance settings,  Prev: Resource files,  Up: Settings and resources

6.2 Using command-line options to change resources
==================================================

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.

6.3 Autostart settings
======================

6.3.1 Autostart resources
-------------------------

All these resources are available for all emulators except vsid.

'AutostartPrgDiskImage'
     String specifying the filename of the disk image used when
     autostarting a prg file and "copy to D64" is enabled (all emulators
     except vsid).

'AutostartBasicLoad'
     Boolean, if true load to basic start using ,8 when autostarting
     (all emulators except vsid).

'AutostartRunWithColon'
     Boolean, if true put a colon after the load command when
     autostarting (all emulators except vsid).

'AutostartHandleTrueDriveEmulation'
     Boolean, if true handle (enable/disable) True Drive Emulation on
     autostart (all emulators except vsid).  This is disabled by default
     to ensure maximum compatibility.

'AutostartWarp'
     Boolean, if true temporarily enable warp mode when autostarting
     (all emulators except vsid).

'AutostartPrgMode'
     Integer specifying the autostart mode for prg files (all emulators
     except vsid).  (0: virtual filesystem, 1: inject to RAM, 2: copy to
     D64)

'AutostartDelayRandom'
     Boolean, enables a short (0-10 frames) random delay on autostart.
     This is added to the 'AutostartDelay' (all emulators except vsid).

'AutostartDelay'
     Integer specifying the delay in seconds required to wait for the
     kernal reset routine before autostart.  (0: use builtin value for
     standard kernal) When tweaking this value start with 'large' values
     and then lower it, a value that is too small results in autostart
     not happening.  (all emulators except vsid).  (0..1000)

6.3.2 Autostart command-line options
------------------------------------

All these command-line options are available for all emulators except
vsid.

'-autostartprgdiskimage <Name>'
     Set disk image for autostart of PRG files ('AutostartPrgDiskImage')
     (all emulators except vsid).

'-basicload'
     On autostart, load to BASIC start (without ',1')
     ('AutostartBasicLoad=1') (all emulators except vsid).
'+basicload'
     On autostart, load with ',1' ('AutostartBasicLoad=0') (all
     emulators except vsid).

'-autostartwithcolon'
     On autostart, use the 'RUN' command with a colon, i.e., 'RUN:'
     ('AutostartRunWithColon=1').  (all emulators except vsid)
'+autostartwithcolon'
     On autostart, do not use the 'RUN' command with a colon; i.e.,
     'RUN' ('AutostartRunWithColon=0') (all emulators except vsid).

'-autostart-handle-tde'
'+autostart-handle-tde'
     Handle/Do not handle True Drive Emulation on autostart
     ('AutostartHandleTrueDriveEmulation=1',
     'AutostartHandleTrueDriveEmulation=0') (all emulators except vsid).

'-autostart-warp'
'+autostart-warp'
     Enable/disable warp mode during autostart ('AutostartWarp=1',
     'AutostartWarp=0') (all emulators except vsid).

'-autostartprgmode <Mode>'
     Set autostart mode for PRG files ('AutostartPrgMode') (all
     emulators except vsid).  (0: virtual filesystem, 1: inject to RAM,
     2: copy to D64)

'-autostart-delay-random'
'+autostart-delay-random'
     Enable/disable random delay on autostart ('AutostartDelayRandom')
     (all emulators except vsid).

'-autostart-delay <seconds>'
     Set initial autostart delay in seconds for the kernal reset routine
     before autostart.  (0: use builtin value for standard kernal).
     When tweaking this value start with 'large' values and then lower
     it, a value that is too small results in autostart not happening.
     ('AutostartDelay') (all emulators except vsid).  (0..1000)


File: vice.info,  Node: Performance settings,  Next: Video settings,  Prev: Resources and command-line,  Up: Settings and resources

6.4 Performance settings
========================

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.

* Menu:

* Performance resources::
* Performance options::


File: vice.info,  Node: Performance resources,  Next: Performance options,  Prev: Performance settings,  Up: Performance settings

6.4.1 Performance resources
---------------------------

'Speed'
     Integer specifying the maximum relative speed, as a percentage.
     '0' stands for "no limit".

'RefreshRate'
     Integer specifying the refresh rate; a value of 'n' specifies a
     refresh rate of 1/'n'.  A value of '0' enables automatic frame
     skipping.

'WarpMode'
     Booolean specifying whether "warp mode" is turned on or not.


File: vice.info,  Node: Performance options,  Prev: Performance resources,  Up: Performance settings

6.4.2 Performance command-line options
--------------------------------------

'-speed <percent>'
     Specifies the maximum speed as a percentage.  '0' stands for "no
     limit" ('Speed').

'-refresh <value>'
     Specifies refresh rate, a value of 'n' specifies a refresh rate of
     1/'n'.  A value of '0' enables automatic frame skipping
     ('RefreshRate').

'-warp'
'+warp'
     Enable/Disable warp mode ('WarpMode=1', 'WarpMode=0').


File: vice.info,  Node: Video settings,  Next: Keyboard settings,  Prev: Performance settings,  Up: Settings and resources

6.5 Video settings
==================

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.

   * "Video Cache" enables a video cache that can speed up the emulation
     when little graphics activity is going on; it is especially useful
     when you run the emulator on a networked X terminal as it can
     reduce the network bandwidth required.  However, this setting can
     actually make the emulator slower when there is little graphics
     activity and the amount of work needed to maintain the cache is
     greater than the amount of work that would be wasted by not using
     it (if any).

   * "Double Size" toggles "double-size mode", which makes the emulation
     window twice as big.  It also selects a more accurate CRT emulation
     renderer with scanlines.

   * "Double Scan" toggles "double-scan mode", which causes the emulator
     to draw only odd lines when running in double-size mode (this saves
     some CPU time and also makes the emulation window look more like an
     old monitor).

* Menu:

* Video resources::


File: vice.info,  Node: Video resources,  Prev: Video settings,  Up: Video settings

6.5.1 Video resources
---------------------

The following resources affect the screen emulation.

'HwScalePossible'
     Boolean that indicates whether hardware scaling is possible or not.

'Speed'
     Integer specifying the maximum relative speed, as a percentage.
     '0' stands for "no limit".

'RefreshRate'
     Integer specifying the refresh rate, a value of 'n' specifies a
     refresh rate of 1/'n'.  A value of '0' enables automatic frame
     skipping.

'WarpMode'
     Boolean specifying whether "warp mode" is turned on or not.

'FullscreenEnable'
     Boolean specifying whether "fullscreen" is turned on at startup or
     not.

6.5.2 Video command line options
--------------------------------

'-hwscalepossible'
'+hwscalepossible'
     Enable/Disable the possibility of hardware scaling
     'HwScalePossible=1' or 'HwScalePossible=1').


File: vice.info,  Node: Keyboard settings,  Next: Control port settings,  Prev: Video settings,  Up: Settings and resources

6.6 Keyboard settings
=====================

It is possible to specify whether the "positional" or "symbolic"
keyboard mapping should be used with the "Keyboard mapping type" submenu
(*note Keyboard emulation:: for an explanation of positional and
symbolic mappings).

The keyboard settings also allows you to:

   * Load custom-made positional and symbolic keymap files ("Set
     symbolic keymap file" and "Set positional keymap file").
   * Dump the current keymap to a user-defined keymap file ("Dump to
     keymap file").

* Menu:

* Keyboard resources::
* Keyboard options::


File: vice.info,  Node: Keyboard resources,  Next: Keyboard options,  Prev: Keyboard settings,  Up: Keyboard settings

6.6.1 Keyboard resources
------------------------

'KeymapIndex'
     Integer identifying which keymap is being used.  (0: symbolic, 1:
     positional, 2: symbolic (user), 3: positional (user)).

'KeymapSymFile'
     String specifying the name of the keymap file for the symbolic
     mapping (*note Keyboard emulation:: (this will be set indirectly by
     changing 'KeymapIndex', 'KeyboardMapping' or 'KeyboardType').

'KeymapPosFile'
     String specifying the name of the keymap file for the positional
     mapping (*note Keyboard emulation:: (this will be set indirectly by
     changing 'KeymapIndex', 'KeyboardMapping' or 'KeyboardType').

'KeymapUserSymFile'
     String specifying the name of the user keymap file for symbolic
     mapping (*note Keyboard emulation::

'KeymapUserPosFile'
     String specifying the name of the user keymap file for positional
     mapping (*note Keyboard emulation::

'KeyboardMapping'
     Integer specifying the keyboard layout of the host.  (0: American
     1: British 2: German 3: Danish 4: Norwegian 5: Finnish 6: Italian).

'KeyboardType'
     Integer specifying the emulated type of keyboard.  (machine
     specific, currently always 0 except for xpet: 0: Business (us) 1:
     Business (uk) 2: Business (de) 3: Business (jp) 4: Graphics (us)).


File: vice.info,  Node: Keyboard options,  Prev: Keyboard resources,  Up: Keyboard settings

6.6.2 Keyboard command-line options
-----------------------------------

'-keymap <number>'
     Specifies which keymap is being used ('KeymapIndex' 0: symbolic, 1:
     positional, 2: symbolic (user), 3: positional (user)).

'-symkeymap <Name>'
     Specify filename of the symbolic user keymap file
     ('KeymapUserSymFile').

'-poskeymap <Name>'
     Specify filename of the positional user keymap file
     ('KeymapUserPosFile').

'-keyboardmapping <number>'
     Specifies the keyboard layout of the host ('KeyboardMapping' 0:
     American 1: British 2: German 3: Danish 4: Norwegian 5: Finnish 6:
     Italian).

'-keyboardtype <number>'
     Specifies the emulated type of keyboard ('KeyboardType' machine
     specific, currently always 0 except for xpet: 0: Business (us) 1:
     Business (uk) 2: Business (de) 3: Business (jp) 4: Graphics (us)).


File: vice.info,  Node: Control port settings,  Next: Sound settings,  Prev: Keyboard settings,  Up: Settings and resources

The control port settings submenu allows you to select which control
port device is connected to a control port.

* Menu:

* Control port resources::
* Control port options::


File: vice.info,  Node: Control port resources,  Next: Control port options,  Prev: Control port settings,  Up: Control port settings

6.6.3 Control port resources
----------------------------

'JoyPort1Device'
     Set the device attached to: control port 1 (x64, x64sc, x64dtv,
     xscpu64, x128, xcbm5x0, xplus4) control port (xvic).  (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))

'JoyPort2Device'
     Set the device attached to: control port 2 (x64, x64sc, x64dtv,
     xscpu64, x128, xcbm5x0, xplus4) (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))

'JoyPort3Device'
     Set the device attached to: userport joystick adapter port 1 (x64,
     x64sc, xscpu64, x128, xcbm2, xpet, xvic) userport joystick adapter
     port (x64dtv) sidcart control port (xplus4).  (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))

'JoyPort4Device'
     Set the device attached to: userport joystick adapter port 2 (x64,
     x64sc, xscpu64, x128, xcbm2, xpet, xvic) (x64, x64sc, xscpu, x128,
     xcbm2, xpet, xvic: 0: None, 1: Joystick, 6: Mouse (CX-22), 17:
     Sampler (2bit))

'JoyPort5Device'
     Set the device attached to: SidCart on the Plus4 (xplus4)

'BBRTCSave'
     Enable saving of the battery-backed real time clock data.


File: vice.info,  Node: Control port options,  Prev: Control port resources,  Up: Control port settings

6.6.4 Control port command-line options
---------------------------------------

'-controlport1device <device>'
     Set the device attached to: control port 1 (x64, x64sc, x64dtv,
     xscpu, x128, xcbm5x0, xplus4) control port (xvic)
     ('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>'
     Set the device attached to: control port 2 (x64, x64sc, x64dtv,
     xscpu, x128, xcbm5x0, xplus4) ('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>'
     Set the device attached to: userport joystick adapter port 1 (x64,
     x64sc, xscpu, x128, xcbm2, xpet, xvic) userport joystick adapter
     port (x64dtv) sidcart control port (xplus4) ('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>'
     Set the device attached to: userport joystick adapter port 2 (x64,
     x64sc, xscpu, x128, xcbm2, xpet, xvic) ('JoyPort4Device').  (x64,
     x64sc, xscpu, x128, xcbm2, xpet, xvic: 0: None, 1: Joystick, 6:
     Mouse (CX-22), 17: Sampler (2bit))

'-controlport5device <device>'
     Set the device attached to: SID cart joystick port (xplus4)
     ('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'
     Enable/Disable saving of the battery-backed real time clock data
     ('BBRTCSave').

6.7 Joystick settings
=====================

6.7.1 Joystick resources
------------------------

'JoyDevice1'
'JoyDevice2'
'JoyDevice3'
'JoyDevice4'
'JoyDevice5'
     Integer specifying which joystick device the emulator should use
     for joystick emulation for ports 1 - 5, respectively.  (0=None,
     1=Joystick 1, 2=Joystick 2, 4=Numpad, 8=Keyset 1, 16=Keyset 2 on
     OS/2) (0=None, 1=Numpad, 2=Keyset 1, 3=Keyset 2, 4=HID joystick 0,
     5=HID joystick 1 on Mac OS X) The available joysticks might differ
     depending on operating system and joystick support in the OS (Linux
     joystick module must be available for example).

'JoyOpposite'
     Boolean, if true allow (usually impossible) bitcombinations for
     opposite directions.  (all emulators except vsid)

'UserportJoy'
     Boolean to enable/disable extra joysticks (all emulators except
     xcbm5x0 and vsid).

'UserportJoyType'
     Integer specifying the type of adapter used for the extra joysticks
     (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'
     Boolean, enables mouse emulation

'SmartMouseRTCSave'
     Boolean, specified whether to save real time clock data for the
     SmartMouse

'KeySet1NorthWest'
'KeySet1North'
'KeySet1NorthEast'
'KeySet1East'
'KeySet1SouthEast'
'KeySet1South'
'KeySet1SouthWest'
'KeySet1West'
'KeySet1Fire'
     Integers specifying the keycodes for keyset 1 (all emulators except
     vsid).

'KeySet2NorthWest'
'KeySet2North'
'KeySet2NorthEast'
'KeySet2East'
'KeySet2SouthEast'
'KeySet2South'
'KeySet2SouthWest'
'KeySet2West'
'KeySet2Fire'
     Integers specifying the keycodes for keyset 2 (all emulators except
     vsid).

'KeySetEnable'
     Boolean that specifies whether user defined keysets are enabled
     (all emulators except vsid).

'KbdbufDelay'
     Integer specifying the additional keyboard delay.  (0: use default)

6.7.2 Joystick command-line options
-----------------------------------

'-joydev1 <range>'
'-joydev2 <range>'
     Set the device for joystick emulation of port 1 and 2,
     respectively.  ('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>'
     Set device for extra joystick port 1, 2 and 3.

'-joyopposite'
'+joyopposite'
     Enable/disable opposite joystick directions ('JoyOpposite=1',
     'JoyOpposite=0').  (all emulators except vsid)

'-userportjoy'
'+userportjoy'
     Enable/disable extra joystick(s) ('UserportJoy=1',
     'UserportJoy=0').  (all emulators except xcbm5x0 and vsid).

'-userportjoytype <Type>'
     Set extra joystick 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'
     Enable/Disable mouse grab

'-smartmousertcsave'
'+smartmousertcsave'
     Enable/Disable saving of the real time clock data for the
     SmartMouse

'-keyset'
'+keyset'
     Enable/disable user defined keyset ('KeySetEnable=1',
     'KeySetEnable=0') (all emulators except vsid).

'-keybuf-delay <value>'
     Set additional keyboard buffer delay ('KbdbufDelay').  (0: use
     default)


File: vice.info,  Node: Sound settings,  Next: Drive settings,  Prev: Control port settings,  Up: Settings and resources

6.8 Sound settings
==================

The following menu items control sound output:

   * "Enable sound playback" turns sound emulation on and off.

   * "Sound synchronization" specifies the method for syncronizing the
     sound playback.  Possible settings are:
        * "Flexible", i.e., the audio renderer flexibly adds/removes
          samples to the output to smoothly adapt the playback to slight
          changes in the speed of the emulator.
        * "Adjusting" works like "flexible", but supports bigger
          differences in speed.  For example, if the emulation speed
          drops down from from 100% to 50%, audio slows down by the same
          amount too.
        * "Exact", instead, makes the audio renderer output always the
          same sounds you would hear from the real thing, without trying
          to adapt the ratio; to compensate the tolerances in speed,
          some extra frames will be skipped or added.

   * "Sample rate" specifies the sampling frequency, ranging from 8000
     to 48000 Hz (not all the sound cards and/or sound drivers can
     support all the frequencies, so actually the nearest candidate will
     be chosen).

   * "Buffer size" specifies the size of the audio buffer; the bigger
     the buffer, the longer the delay with which sounds are played.  You
     should pick the smallest value your machine can handle without
     problems.

   * "Sound suspend time", will cause the audio playback to pause for
     the specified number of seconds whenever some clicking happens.  If
     "Keep going" is selected, no pausing is done.

     The following menu items control sound input:

   * "Sampler Device" specifies the host device/method used for
     sampling/sound input, currently portaudio (if linked in) and file
     methods are supported.

   * "Sampler Gain" specifies the amount of gain (increase the input
     volume if above 100 or decrease the input volume if below 100) for
     the input of the sampler device.

   * "Sampler File" specifies the name of the file to be uses as an
     input source for the 'file' method/device.

* Menu:

* Sound resources::
* Sound options::


File: vice.info,  Node: Sound resources,  Next: Sound options,  Prev: Sound settings,  Up: Sound settings

6.8.1 Sound resources
---------------------

'Sound'
     Boolean specifying whether audio emulation is turned on.

'SoundSpeedAdjustment'
     Integer specifying what speed adjustment method the audio renderer
     should use.  (0: flexible, 1: adjusting, 2: exact)

'SoundSampleRate'
     Integer specifying the sampling frequency in Hz (not all the sound
     cards and/or sound drivers can support all the frequencies, so
     actually the nearest candidate will be chosen).  (8000..48000)

'SoundBufferSize'
     Integer specifying the size of the audio buffer, in milliseconds.

'SoundSuspendTime'
     Integer specifying the pause interval when audio underflows
     ("clicks") happen.  '0' means no pause is done.

'SoundDeviceName'
     String specifying the audio driver.

     Implemented drivers are:

        * '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.

     These drivers will actually be present only if the VICE
     configuration script detected the corresponding development support
     at the time of compilation.

'SoundDeviceArg'
     String specifying an additional parameter for the audio driver (see
     'SoundDeviceName').

'SoundRecordDeviceName'
     String specifying the driver used for sound recording.

     Implemented drivers are:

        * 'aiff', for the Apple Interchange File Format 16bit sound
          recorder driver.
        * 'dump', writing all the write accesses to the registers to a
          file (specified by 'SoundDeviceArg', default value is
          'vicesnd.sid');
        * 'fs', writing samples to a file (specified by
          'SoundDeviceArg'; default is 'vicesnd.raw'); 'iff', for the
          Amiga Interchange File Format (8SVX) 8bit sound recorder
          driver.
        * 'mp3', for the MP3 sound recorder driver.
        * 'flac', for the FLAC sound recorder driver.
        * 'ogg', for the ogg/vorbis sound recorder driver.
        * 'voc', for the Creative Voice (VOC) sound recorder driver.
        * 'wav', for the RIFF/WAV sound recorder driver.

     These drivers will actually be present only if the VICE
     configuration script detected the corresponding development support
     at the time of compilation.

'SoundRecordDeviceArg'
     String specifying additional arguments for sound recording.

'SoundFragmentSize'
     Integer specifying the fragment size.  (0: very small, 1: small, 2:
     medium, 3: large, 4: very large)

'SoundVolume'
     Integer specifying the master volume in percent.  (0..100)

'SoundOutput'
     Integer specifying the type of sound output.  Output is selectable
     between 'system' (system decides to use mono or stereo output based
     on the presence of a stereo sid), 'always mono' (output is always
     mono, stereo streams are mixed into a mono stream) or 'always
     stereo' (output is always stereo, mono streams are multiplexed to a
     stereo stream).  (0: system, 1: mono, 2: stereo)

'SamplerDevice'
     Integer specifying the device/method to be used for sound input.
     (0: sample file device, 1: PortAudio device)

'SamplerGain'
     Integer specifying the gain to be used for sound input.  (>100
     increase input volume, <100: decrease input volume)

'SampleName'
     String specifying the name of the file/sample to be used as the
     input source for the 'file' sampler device.


File: vice.info,  Node: Sound options,  Prev: Sound resources,  Up: Sound settings

6.8.2 Sound command-line options
--------------------------------

'-sound'
'+sound'
     Enable/disable sound emulation ('Sound=1', 'Sound=0').

'-soundsync <sync>'
     Specify the sound speed adjustment method ('SoundSpeedAdjustment').
     (0: flexible, 1: adjusting, 2: exact)

'-soundrate <value>'
     Specify the sound playback sample rate ('SoundSampleRate').
     (8000..48000)

'-soundoutput <output mode>'
     Sound output mode ('SoundOutput').  (0: system decides mono/stereo,
     1: always mono, 2: always stereo)

'-soundbufsize <value>'
     Specify the size of the audio buffer in milliseconds
     ('SoundBufferSize').

'-soundfragsize <value>'
     Set sound fragment size ('SoundFragmentSize').  (0: very small, 1:
     small, 2: medium, 3: large, 4: very large)

'-sounddev <Name>'
     Specifies the name of the audio device ('SoundDeviceName').  (ahi,
     aix, allegro, alsa, arts, beos, bsp, coreaudio, dart, dummy, dx,
     hpux, midas, pulse, sdl, sgi, sun, uss, wmm)

'-soundarg <args>'
     Specifies an additional parameter for the audio device
     ('SoundDeviceArg').

'-soundrecdev <name>'
     Specify recording sound driver ('SoundRecordDeviceName').  (aiff,
     dump, fs, iff, mp3, flac, ogg, speed, voc, wav)

'-soundrecarg <args>'
     Specify initialization parameters for recording sound driver
     ('SoundRecordDeviceArg').

'-soundsuspend <seconds>'
     Specify the pause interval when audio underflows (clicks) happen.
     0 means no pause is done ('SoundSuspendTime').

'-soundvolume <volume>'
     Specify the sound volume ('SoundVolume').  (0..100)

'-samplerdev <device number>'
     Specify the device to use for audio input ('SamplerDevice').  (0:
     file device, 1: portaudio device)

'-samplergain <percent>'
     Specify the amount of gain (volume increase/decrease) for the audio
     input device ('SamplerGain').  (0..200)

'-samplename <name>'
     Specify the name of the file to use for the 'file' audio input
     device ('SampleFile').

6.9 Tape settings
=================

These settings are used to control the hardware-level emulation of the
Tape drive.

6.9.1 Tape resources
--------------------

'Datasette'
     Boolean specifying whether to emulate the datasette.

'DatasetteResetWithCPU'
     Boolean specifying whether to reset (rewind) the tape when
     resetting the CPU.

'DatasetteZeroGapDelay'
     Integer specifying the delay in cycles for a zero in the tap.

'DatasetteSpeedTuning'
     Integer specifying the number of cycles added to each gap in the
     tap.

'DatasetteTapeWobble'
     Integer specifying the maximum random number of cycles added to
     each gap in the tap.

6.9.2 Tape command-line options
-------------------------------

'-datasette'
'+datasette'
     Enable/disable datasette emulation ('Datasette=1', 'Datasette=0').

'-dsresetwithcpu'
'+dsresetwithcpu'
     Enable/disable automatic Datasette-Reset
     ('DatasetteResetWithCPU=1', 'DatasetteResetWithCPU=0').

'-dszerogapdelay <value>'
     Set delay in cycles for a zero in the tap
     ('DatasetteZeroGapDelay').

'-dsspeedtuning <value>'
     Set number of cycles added to each gap in the tap
     ('DatasetteSpeedTuning').

'-dstapewobble <value>'
     Set maximum random number of cycles added to each gap in the tap
     ('DatasetteTapeWobble').


File: vice.info,  Node: Drive settings,  Next: Peripheral settings,  Prev: Sound settings,  Up: Settings and resources

6.10 Drive settings
===================

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:

   * "Enable true drive emulation" enables the (slow) hardware-level
     emulation of the drives for maximum compatibility.  This must be
     turned on for any of the following settings to have effect.

   * "Drive sync factor" specifies the speed of the drive's CPU. This
     can be used to help loading certain programs that have trouble with
     the default PAL setting (for example, programs designed for NTSC
     machines).  The ratio is calculated as follows:

          sync_factor = 65536 * clk_drive / clk_machine

     where '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:

   * "Drive model" specifies the model of the drive being emulated.
     *Warning:* This will reset the drive.

   * "Enable parallel cable" enables emulation of a SpeedDOS parallel
     cable; if you switch this option on and replace the original
     Commodore ROMs with SpeedDOS-compatible ones, you can speed up
     loading/saving times.

   * "Idle method" specifies which method the drive emulation should use
     to save CPU cycles in the host CPU. There are three methods:

        * "Skip cycles": Each time the serial line is accessed by the
          C64, the drive executes all the cycles since the last time it
          ran.  If the number of elapsed cycles is larger than a certain
          value, the drive discards part of them.
        * "Trap idle": The disk drive is still emulated upon serial line
          accesses as with the previous option, but it is also always
          emulated at the end of each screen frame.  If the drive gets
          into the DOS idle loop, only pending interrupts are emulated
          to save time.
        * "No traps": Like "Trap idle", but without any traps at all.
          So basically the drive works exactly as with the real thing,
          and nothing is done to reduce the power needs of the drive
          emulation.

     The first option ("Skip cycles") is usually best for performance,
     as the drive is emulated as little as possible; on the other hand,
     you may notice sudden slowdowns (when the drive executes several
     cycles at once) and the LED status is never updated (because it
     would not be possible to do correctly so).  Moreover, if the drive
     tries to get in sync with the computer in some weird way and the
     computer does not access the serial line for a long time, it is
     possible that some cycles are discarded and the sync is lost.
     Notice that this hack will have no effect on performance if a
     program continuously reads from the IEC port, as the drive will
     have to be fully emulated in any case (some stupid programs do
     this, even when they don't actually need to use the drive).

     The second option ("Trap idle") is usually a bit slower, as at
     least interrupts are always emulated, but ensures the LED state is
     always updated correctly and always keeps the drive and the
     computer in sync.  On the other hand, if a program installs a
     non-standard idle loop in the drive, the drive CPU has to be
     emulated even when not necessary and the global emulation speed is
     then _much_ slower.

   * "40-track image support" specifies how 40-track ("extended") disk
     images should be supported.  There are three possible ways:

        * "Never extend" never extends disk images at all (so if a
          program tries to write tracks beyond the 35th, it is not
          allowed to do so);
        * "Ask on extend" prompts the user as soon as a program tries to
          write tracks beyond the 35th, and the user can then choose
          whether he wants the disk image to be extended or not;
        * "Extend on access" simply extends the disk image as soon the
          program needs it, without prompting the user.

* Menu:

* Drive resources::
* Drive options::


File: vice.info,  Node: Drive resources,  Next: Drive options,  Prev: Drive settings,  Up: Drive settings

6.10.1 Drive resources
----------------------

'DriveTrueEmulation'
     Boolean controlling whether the "true" drive emulation is turned
     on.

'DriveSoundEmulation'
     Boolean controlling whether the drive noise emulation is turned on
     (all emulators except vsid).

'DriveSoundEmulationVolume'
     Integer specifying the volume of the drive noise emulation (all
     emulators except vsid).  (0..4000)

'Drive8Type'
'Drive9Type'
'Drive10Type'
'Drive11Type'
     Integers specifying the model number for drives 8 to 11.  Possible
     values are '1541' [all emulators except xcbm2, xcbm5x0, xpet and
     vsid], '1542' (1541-II) [all emulators except xcbm2, xcbm5x0, xpet
     and vsid], '1570' [all emulators except xcbm2, xcbm5x0, xpet and
     vsid], '1571' [all emulators except xcbm2, xcbm5x0, xpet and vsid],
     '1573' (1571CR) [x128 only], '1551' [xplus4 only], '1581' [all
     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'
     Integer specifying whether the RTC data of drive 8 should be saved
     when changed or not (drive type 2000/4000 only).

'Drive9RTCSave'
     Integer specifying whether the RTC data of drive 9 should be saved
     when changed or not (drive type 2000/4000 only).

'Drive10RTCSave'
     Integer specifying whether the RTC data of drive 10 should be saved
     when changed or not (drive type 2000/4000 only).

'Drive11RTCSave'
     Integer specifying whether the RTC data of drive 11 should be saved
     when changed or not (drive type 2000/4000 only).

'Drive8ParallelCable'
'Drive9ParallelCable'
'Drive10ParallelCable'
'Drive11ParallelCable'
     integers controlling what type of parallel cable is emulated for
     drives 8 to 11 (x64, x64sc, xscpu64, x128 and xplus4 only).  x64,
     x64sc, xscpu64, x128: (0: None, 1: Standard, 2: Dolphin DOS 3, 3:
     Formel64) xplus4: (0: None, 1: Standard)

'Drive8ProfDOS'
'Drive9ProfDOS'
'Drive10ProfDOS'
'Drive11ProfDOS'
     Booleans controlling whether Professional DOS is emulated or not
     for drives 8 to 11 (x64, x64sc, xscpu64 and x128 only).

'Drive8SuperCard'
'Drive9SuperCard'
'Drive10SuperCard'
'Drive11SuperCard'
     Booleans controlling whether Supercard is emulated or not for
     drives 8 to 11 (x64, x64sc, xscpu64 and x128 only).

'Drive8StarDos'
'Drive9StarDos'
'Drive10StarDos'
'Drive11StarDos'
     Booleans controlling whether StarDOS is emulated or not for drives
     8 to 11 (x64, x64sc, xscpu64 and x128 only).

'Drive8RAM2000'
'Drive8RAM4000'
'Drive8RAM6000'
'Drive8RAM8000'
'Drive8RAMA000'
'Drive9RAM2000'
'Drive9RAM4000'
'Drive9RAM6000'
'Drive9RAM8000'
'Drive9RAMA000'
'Drive10RAM2000'
'Drive10RAM4000'
'Drive10RAM6000'
'Drive10RAM8000'
'Drive10RAMA000'
'Drive11RAM2000'
'Drive11RAM4000'
'Drive11RAM6000'
'Drive11RAM8000'
'Drive11RAMA000'
     Booleans controlling whether a RAM block is emulated at the
     respective block or not for drives 8 to 11 respectively.

'Drive8ExtendImagePolicy'
'Drive9ExtendImagePolicy'
'Drive10ExtendImagePolicy'
'Drive11ExtendImagePolicy'
     Integer specifying the policy for 40-track support for drives 8 to
     11.  (0: never extend, 1: ask on extend, 2: extend on access)

'Drive8IdleMethod'
'Drive9IdleMethod'
'Drive10IdleMethod'
'Drive11IdleMethod'
     Integers specifying the idling method for the drive CPU. *Note
     Drive settings::.  (0: none, 1: skip cycles, 2: trap idle)

'Drive8RPM'
'Drive9RPM'
'Drive10RPM'
'Drive11RPM'
     Integers specifying the rotation speed of the drive, multiplied by
     100, so 300rpm equals 30000.

'Drive8Wobble'
'Drive9Wobble'
'Drive10Wobble'
'Drive11Wobble'
     Integers specifying the random deviation of the rotation speed,
     multiplied by 100 so 100 equals +/- 1rpm.

'DosName1540'
'DosName1541'
'DosName1541ii'
'DosName1570'
'DosName1571'
'DosName1581'
'DosName2000'
'DosName4000'
     Strings specifying the names of the ROM images for the drive
     emulation.  (all emulators except xcbm2, xcbm5x0, xpet and vsid)

'DosName1551'
     String specifying the name of the ROM image for the drive
     emulation.  (xplus4 only)

'DosName1571cr'
     String specifying the name of the ROM image for the drive
     emulation.  (x128 only)

'DosName2031'
'DosName2040'
'DosName3040'
'DosName4040'
'DosName1001'
     Strings specifying the names of the ROM images for the drive
     emulation.  (all emulators except x64dtv, xplus4 and vsid)

'DriveProfDOS1571Name'
     String specifying the filename of the 1571 professional DOS ROM
     image (x64, x64sc, xscpu64 and x128 only).

'DriveSuperCardName'
     String specifying the filename of the Supercard ROM image (x64,
     x64sc, xscpu64 and x128 only).

'DriveStarDosName'
     String specifying the filename of the image of the lower half of
     the StarDOS ROM (x64, x64sc, xscpu64 and x128 only).


File: vice.info,  Node: Drive options,  Prev: Drive resources,  Up: Drive settings

6.10.2 Drive command-line options
---------------------------------

'-truedrive'
'+truedrive'
     Enable/disable true drive emulation ('DriveTrueEmulation=1',
     'DriveTrueEmulation=0').

'-drivesound'
'+drivesound'
     Enable/disable drive sound emulation ('DriveSoundEmulation=1',
     'DriveSoundEmulation=0') (all emulators except vsid).

'-drivesoundvolume <Volume>'
     Set the volume of the drive sound emulation
     ('DriveSoundEmulationVolume=1', 'DriveSoundEmulationVolume=0') (all
     emulators except vsid).

'-drive8type <Type>'
'-drive9type <Type>'
'-drive10type <Type>'
'-drive11type <Type>'
     Specifies the drive types for drives 8-11, respectively.  Possible
     values for 'TYPE' are '1541' [all emulators except xcbm2, xcbm5x0,
     xpet and vsid], '1542' (meaning 1541-II) [all emulators except
     xcbm2, xcbm5x0, xpet and vsid], '1551' [xplus4 only], '1570' [all
     emulators except xcbm2, xcbm5x0, xpet and vsid], '1571' [all
     emulators except xcbm2, xcbm5x0, xpet and vsid], '1573' (meaning
     1571cr) [x128 only], '1581' [all emulators except xcbm2, xcbm5x0,
     xpet and vsid], '2000' [all emulators except xcbm2, xcbm5x0, xpet
     and vsid], '4000' [all emulators except xcbm2, xcbm5x0, xpet and
     vsid], '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'
     Enable/disable the saving of the RTC data for drive 8 when changed
     (drive type 2000/4000 only) ('Drive8RTCSave=1', 'Drive8RTCSave=0').

'-drive9rtcsave'
'-drive9rtcsave'
     Enable/disable the saving of the RTC data for drive 9 when changed
     (drive type 2000/4000 only) ('Drive9RTCSave=1', 'Drive9RTCSave=0').

'-drive10rtcsave'
'-drive10rtcsave'
     Enable/disable the saving of the RTC data for drive 10 when changed
     (drive type 2000/4000 only) ('Drive10RTCSave=1',
     'Drive10RTCSave=0').

'-drive11rtcsave'
'-drive11rtcsave'
     Enable/disable the saving of the RTC data for drive 11 when changed
     (drive type 2000/4000 only) ('Drive11RTCSave=1',
     'Drive11RTCSave=0').

'-parallel8 <type>'
'-parallel9 <type>'
'-parallel10 <type>'
'-parallel11 <type>'
     Set parallel cable type for drives 8-11 respectively
     ('Drive8ParallelCable', 'Drive9ParallelCable',
     'Drive10ParallelCable', 'Drive11ParallelCable') (x64, x64sc,
     xscpu64, x128 and xplus4 only).  x64, x64sc, xscpu64, x128: (0:
     None, 1: Standard, 2: Professional DOS, 3: Formel64) xplus4: (0:
     None, 1: Standard)

'-drive8idle <method>'
'-drive9idle <method>'
'-drive10idle <method>'
'-drive11idle <method>'
     Specifies <method> as the idling method for drives 8-11
     respectively ('Drive8IdleMethod', 'Drive9IdleMethod',
     'Drive10IdleMethod'), 'Drive11IdleMethod').  (0: none, 1: skip
     cycles, 2: trap idle)

'-drive8extend <method>'
'-drive9extend <method>'
'-drive10extend <method>'
'-drive11extend <method>'
     Specifies <method> as the track 40 extend policy in drives 8-11
     respectively ('Drive8ExtendImagePolicy', 'Drive9ExtendImagePolicy',
     'Drive10ExtendImagePolicy', 'Drive11ExtendImagePolicy').  (0: never
     extend, 1: ask on extend, 2: extend on access)

'-drive8rpm <rpm>'
'-drive9rpm <rpm>'
'-drive10rpm <rpm>'
'-drive11rpm <rpm>'
     Specifies the rotation speed of the drive, multiplied by 100 so
     300rpm equal 30000.

'-drive8wobble <wobble>'
'-drive9wobble <wobble>'
'-drive10wobble <wobble>'
'-drive11wobble <wobble>'
     Specifies random amount of wobble added to the rotation speed.

'-dos1540 <name>'
     Specify the ROM name for the 1540 emulation ('DosName1540').  (all
     emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos1541 <name>'
     Specify the ROM name for the 1541 emulation ('DosName1541').  (all
     emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos1541II <name>'
     Specify the ROM name for the 1541-II emulation ('DosName1541ii').
     (all emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos1551 <name>'
     Specify the ROM name for the 1551 emulation ('DosName1551').
     (xplus4 only)

'-dos1570 <name>'
     Specify the ROM name for the 1570 emulation ('DosName1570').  (all
     emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos1571 <name>'
     Specify the ROM name for the 1571 emulation ('DosName1571').  (all
     emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos1571cr <name>'
     Specify the ROM name for the 1571 emulation ('DosName1571CR').
     (x128 only)

'-dos1581 <name>'
     Specify the ROM name for the 1581 emulation ('DosName1581').  (all
     emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos2000 <name>'
     Specify the ROM name for the FD2000 emulation ('DosName2000').
     (all emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos4000 <name>'
     Specify the ROM name for the FD4000 emulation ('DosName4000').
     (all emulators except xcbm2, xcbm5x0, xpet and vsid)

'-dos2031 <name>'
     Specify the ROM name for the 2031 emulation ('DosName2031').  (all
     emulators except x64dtv, xplus4 and vsid)

'-dos2040 <name>'
     Specify the ROM name for the 2040 emulation ('DosName2040').  (all
     emulators except x64dtv, xplus4 and vsid)

'-dos3040 <name>'
     Specify the ROM name for the 3040 emulation ('DosName3040').  (all
     emulators except x64dtv, xplus4 and vsid)

'-dos4040 <name>'
     Specify the ROM name for the 4040 emulation ('DosName4040').  (all
     emulators except x64dtv, xplus4 and vsid)

'-dos1001 <name>'
     Specify the ROM name for the 1001, 8050 and 8250 emulations
     ('DosName1001').  (all emulators except x64dtv, xplus4 and vsid)

'-drive8ram2000, +drive8ram2000'
     Enable/disable 8KB RAM expansion at $2000-$3FFF for drive 8
     ('Drive8RAM2000=1', 'Drive8RAM2000=0').

'-drive9ram2000, +drive9ram2000'
     Enable/disable 8KB RAM expansion at $2000-$3FFF for drive 9
     ('Drive9RAM2000=1', 'Drive9RAM2000=0').

'-drive10ram2000, +drive10ram2000'
     Enable/disable 8KB RAM expansion at $2000-$3FFF for drive 10
     ('Drive10RAM2000=1', 'Drive10RAM2000=0').

'-drive11ram2000, +drive11ram2000'
     Enable/disable 8KB RAM expansion at $2000-$3FFF for drive 11
     ('Drive11RAM2000=1', 'Drive11RAM2000=0').

'-drive8ram4000, +drive8ram4000'
     Enable/disable 8KB RAM expansion at $4000-$5FFF for drive 8
     ('Drive8RAM4000=1', 'Drive8RAM4000=0').

'-drive9ram4000, +drive9ram4000'
     Enable/disable 8KB RAM expansion at $4000-$5FFF for drive 9
     ('Drive9RAM4000=1', 'Drive9RAM4000=0').

'-drive10ram4000, +drive10ram4000'
     Enable/disable 8KB RAM expansion at $4000-$5FFF for drive 10
     ('Drive10RAM4000=1', 'Drive10RAM4000=0').

'-drive11ram4000, +drive11ram4000'
     Enable/disable 8KB RAM expansion at $4000-$5FFF for drive 11
     ('Drive11RAM4000=1', 'Drive11RAM4000=0').

'-drive8ram6000, +drive8ram6000'
     Enable/disable 8KB RAM expansion at $6000-$7FFF for drive 8
     ('Drive8RAM6000=1', 'Drive8RAM6000=0').

'-drive9ram6000, +drive9ram6000'
     Enable/disable 8KB RAM expansion at $6000-$7FFF for drive 9
     ('Drive9RAM6000=1', 'Drive9RAM6000=0').

'-drive10ram6000, +drive10ram6000'
     Enable/disable 8KB RAM expansion at $6000-$7FFF for drive 10
     ('Drive10RAM6000=1', 'Drive10RAM6000=0').

'-drive11ram6000, +drive11ram6000'
     Enable/disable 8KB RAM expansion at $6000-$7FFF for drive 11
     ('Drive11RAM6000=1', 'Drive11RAM6000=0').

'-drive8ram8000, +drive8ram8000'
     Enable/disable 8KB RAM expansion at $8000-$9FFF for drive 8
     ('Drive8RAM8000=1', 'Drive8RAM8000=0').

'-drive9ram8000, +drive9ram8000'
     Enable/disable 8KB RAM expansion at $8000-$9FFF for drive 9
     ('Drive9RAM8000=1', 'Drive9RAM8000=0').

'-drive10ram8000, +drive10ram8000'
     Enable/disable 8KB RAM expansion at $8000-$9FFF for drive 10
     ('Drive10RAM8000=1', 'Drive10RAM8000=0').

'-drive11ram8000, +drive11ram8000'
     Enable/disable 8KB RAM expansion at $8000-$9FFF for drive 11
     ('Drive11RAM8000=1', 'Drive11RAM8000=0').

'-drive8rama000, +drive8rama000'
     Enable/disable 8KB RAM expansion at $A000-$BFFF for drive 8
     ('Drive8RAMA000=1', 'Drive8RAMA000=0').

'-drive9rama000, +drive9rama000'
     Enable/disable 8KB RAM expansion at $A000-$BFFF for drive 9
     ('Drive9RAMA000=1', 'Drive9RAMA000=0').

'-drive10rama000, +drive10rama000'
     Enable/disable 8KB RAM expansion at $A000-$BFFF for drive 10
     ('Drive10RAMA000=1', 'Drive10RAMA000=0').

'-drive11rama000, +drive11rama000'
     Enable/disable 8KB RAM expansion at $A000-$BFFF for drive 11
     ('Drive11RAMA000=1', 'Drive11RAMA000=0').

'-drive8profdos'
'+drive8profdos'
     Enable/disable Professional DOS for drive 8 ('Drive8ProfDOS=1',
     'Drive8ProfDOS=0') (x64, x64sc, xscpu64 and x128 only).

'-drive9profdos'
'+drive9profdos'
     Enable/disable Professional DOS for drive 9 ('Drive9ProfDOS=1',
     'Drive9ProfDOS=0') (x64, x64sc, xscpu64 and x128 only).

'-drive10profdos'
'+drive10profdos'
     Enable/disable Professional DOS for drive 10 ('Drive10ProfDOS=1',
     'Drive10ProfDOS=0') (x64, x64sc, xscpu64 and x128 only).

'-drive11profdos'
'+drive11profdos'
     Enable/disable Professional DOS for drive 11 ('Drive11ProfDOS=1',
     'Drive11ProfDOS=0') (x64, x64sc, xscpu64 and x128 only).

'-profdos1571 <name>'
     Specify name of Professional DOS 1571 ROM image
     ('DriveProfDOS1571Name') (x64, x64sc, xscpu64 and x128).

'-drive8supercard'
'+drive8supercard'
     Enable/disable Supercard for drive 8 ('Drive8SuperCard=1',
     'Drive8SuperCard=0') (x64, x64sc, xscpu64 and x128 only).

'-drive9supercard'
'+drive9supercard'
     Enable/disable Supercard for drive 9 ('Drive9SuperCard=1',
     'Drive9SuperCard=0') (x64, x64sc, xscpu64 and x128 only).

'-drive10supercard'
'+drive10supercard'
     Enable/disable Supercard for drive 10 ('Drive10SuperCard=1',
     'Drive10SuperCard=0') (x64, x64sc, xscpu64 and x128 only).

'-drive11supercard'
'+drive11supercard'
     Enable/disable Supercard for drive 11 ('Drive11SuperCard=1',
     'Drive11SuperCard=0') (x64, x64sc, xscpu64 and x128 only).

'-supercard <name>'
     Specify name of Supercard ROM image ('DriveSuperCardName') (x64,
     x64sc, xscpu64 and x128 only).

'-drive8stardos'
'+drive8stardos'
     Enable/disable StarDOS for drive 8 ('Drive8StarDos=1',
     'Drive8StarDos=0') (x64, x64sc, xscpu64 and x128 only).

'-drive9stardos'
'+drive9stardos'
     Enable/disable StarDOS for drive 9 ('Drive9StarDos=1',
     'Drive9StarDos=0') (x64, x64sc, xscpu64 and x128 only).

'-drive10stardos'
'+drive10stardos'
     Enable/disable StarDOS for drive 10 ('Drive10StarDos=1',
     'Drive10StarDos=0') (x64, x64sc, xscpu64 and x128 only).

'-drive11stardos'
'+drive11stardos'
     Enable/disable StarDOS for drive 11 ('Drive11StarDos=1',
     'Drive11StarDos=0') (x64, x64sc, xscpu64 and x128 only).

'-stardos <name>'
     Specify name of the image of the lower half of the StarDOS ROM.
     (Attach the upper half using the -dos1541 option.)
     ('DriveStarDosName') (x64, x64sc, xscpu64 and x128 only).


File: vice.info,  Node: Peripheral settings,  Next: RS232 settings,  Prev: Drive settings,  Up: Settings and resources

6.11 Peripheral settings
========================

VICE is able to support some special peripherals:

   * "file system devices", pseudo-drives accessing the Unix file
     system;
   * printers.

These features depend on some "kernal traps" that replace the existing
routines in the original Commodore operating system with custom-made C
routines.

* Menu:

* File system device settings::  Settings for file system devices.
* Printer settings::            Settings for emulating a printer.
* No kernal traps::             Disabling kernal traps completely.


File: vice.info,  Node: File system device settings,  Next: Printer settings,  Prev: Peripheral settings,  Up: Peripheral settings

6.11.1 Settings for file system devices
---------------------------------------

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.

   * "Enable virtual devices", enables the peripheral access via the
     fast disk emulation (either kernal traps or IEEE488 interface).
     Both, filesystem and disk image access via fast drive emulation,
     are affected.

Four peripherals, numbered from 8 to 11, are accessible; each of them
provides the following settings:

   * "File system access", if enabled, allows the device to emulate a
     drive accessing a file system directory; note that when a disk
     image is attached to the same drive, the directory is no longer
     visible and the attached disk is used instead.
   * "File system directory" specifies the directory to be accessed by
     the drive.
   * "Convert P00 file names", if enabled, allows access to P00 files
     using their built-in name instead of the Unix one.
   * "Create P00 files on save", if enabled, creates P00 files (instead
     of raw CBM files) whenever a program creates a file.

Note that, by default, all drives create P00 files on save.

* Menu:

* File system device resources::
* File system device options::


File: vice.info,  Node: File system device resources,  Next: File system device options,  Prev: File system device settings,  Up: File system device settings

6.11.1.1 Resources for file system devices
..........................................

'IECDevice8'
'IECDevice9'
'IECDevice10'
'IECDevice11'
     Booleans that specify whether IEC device emulation for device #8 to
     #11 is enabled.

'FileSystemDevice8'
'FileSystemDevice9'
'FileSystemDevice10'
'FileSystemDevice11'
     Integers specifying the device type for device 8-11 respectively
     (all emulators except vsid).  (0: None, 1: Filesystem, 2: OpenCBM
     (Real))

'FSDevice8ConvertP00'
'FSDevice9ConvertP00'
'FSDevice10ConvertP00'
'FSDevice11ConvertP00'
     Booleans specifying whether on-read support for P00 files is
     enabled on drives 8, 9, 10 and 11 respectively (all emulators
     except vsid).

'FSDevice8SaveP00'
'FSDevice9SaveP00'
'FSDevice10SaveP00'
'FSDevice11SaveP00'
     Booleans specifying whether the drives should create P00 files
     instead of plain CBM ones for drives 8, 9, 10 and 11 respectively
     (all emulators except vsid).

'FSDevice8HideCBMFiles'
'FSDevice9HideCBMFiles'
'FSDevice10HideCBMFiles'
'FSDevice11HideCBMFiles'
     Booleans specifying whether non-P00 files should be invisible for
     drives 8, 9, 10 and 11 respectively (all emulators except vsid).

'FSDevice8Dir'
'FSDevice9Dir'
'FSDevice10Dir'
'FSDevice11Dir'
     Strings specifying the directories to which drives 8, 9, 10 and 11
     have access (all emulators except vsid).


File: vice.info,  Node: File system device options,  Prev: File system device resources,  Up: File system device settings

6.11.1.2 Command-line options for file system devices
.....................................................

'-iecdevice8'
'+iecdevice8'
     Enable/disable IEC device emulation for device #8 ('IECDevice8=1',
     'IECDevice8=0').

'-iecdevice9'
'+iecdevice9'
     Enable/disable IEC device emulation for device #9 ('IECDevice9=1',
     'IECDevice9=0').

'-iecdevice10'
'+iecdevice10'
     Enable/disable IEC device emulation for device #10
     ('IECDevice10=1', 'IECDevice10=0').

'-iecdevice11'
'+iecdevice11'
     Enable/disable IEC device emulation for device #11
     ('IECDevice11=1', 'IECDevice11=0').

'-device8 <type>'
'-device9 <type>'
'-device10 <type>'
'-device11 <type>'
     Set device type for device 8-11 respectively ('FileSystemDevice8',
     'FileSystemDevice9', 'FileSystemDevice10', 'FileSystemDevice11')
     (all emulators except vsid).  (0: None, 1: Filesystem, 2: OpenCBM
     (Real))

'-fs8 <Name>'
'-fs9 <Name>'
'-fs10 <Name>'
'-fs11 <Name>'
     Specify the paths for the file system access on drives 8, 9, 10 and
     11, respectively ('FSDevice8Dir', 'FSDevice9Dir', 'FSDevice10Dir'
     and 'FSDevice11Dir') (all emulators except vsid).

'-fs8convertp00'
'+fs8convertp00'
     Enable/disable on-read support for P00 files on drive 8
     ('FSDevice8ConvertP00=1', 'FSDevice8ConvertP00=0') (all emulators
     except vsid).

'-fs9convertp00'
'+fs9convertp00'
     Enable/disable on-read support for P00 files on drive 9
     ('FSDevice9ConvertP00=1', 'FSDevice9ConvertP00=0') (all emulators
     except vsid).

'-fs10convertp00'
'+fs10convertp00'
     Enable/disable on-read support for P00 files on drive 10
     ('FSDevice10ConvertP00=1', 'FSDevice10ConvertP00=0') (all emulators
     except vsid).

'-fs11convertp00'
'+fs11convertp00'
     Enable/disable on-read support for P00 files on drive 11
     ('FSDevice11ConvertP00=1', 'FSDevice11ConvertP00=0') (all emulators
     except vsid).

'-fs8savep00'
'+fs8savep00'
     Enable/disable saving P00 files on drive 8 ('FSDevice8SaveP00=1',
     'FSDevice8SaveP00=0') (all emulators except vsid).

'-fs9savep00'
'+fs9savep00'
     Enable/disable saving P00 files on drive 9 ('FSDevice9SaveP00=1',
     'FSDevice9SaveP00=0') (all emulators except vsid).

'-fs10savep00'
'+fs10savep00'
     Enable/disable saving P00 files on drive 10 ('FSDevice10SaveP00=1',
     'FSDevice10SaveP00=0') (all emulators except vsid).

'-fs11savep00'
'+fs11savep00'
     Enable/disable saving P00 files on drive 11 ('FSDevice11SaveP00=1',
     'FSDevice11SaveP00=0') (all emulators except vsid).

'-fs8hidecbm'
'+fs8hidecbm'
     Enable/disable hiding of CBM files for drive 8
     ('FSDevice8HideCBMFiles=1', 'FSDevice8HideCBMFiles=0') (all
     emulators except vsid).

'-fs9hidecbm'
'+fs9hidecbm'
     Enable/disable hiding of CBM files for drive 9
     ('FSDevice9HideCBMFiles=1', 'FSDevice9HideCBMFiles=0') (all
     emulators except vsid).

'-fs10hidecbm'
'+fs10hidecbm'
     Enable/disable hiding of CBM files for drive 10
     ('FSDevice10HideCBMFiles=1', 'FSDevice10HideCBMFiles=0') (all
     emulators except vsid).

'-fs11hidecbm'
'+fs11hidecbm'
     Enable/disable hiding of CBM files for drive 11
     ('FSDevice11HideCBMFiles=1', 'FSDevice11HideCBMFiles=0') (all
     emulators except vsid).

'-flipname <name>'
     Specify name of the flip list file image ('FliplistName') (all
     emulators except vsid).


File: vice.info,  Node: Printer settings,  Next: No kernal traps,  Prev: File system device settings,  Up: Peripheral settings

6.11.2 Printer settings
-----------------------

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:

   * device 1, whose default value is 'print.dump';
   * device 2, whose default value is '|lpr'.
   * device 3, whose default value is '|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'.

* Menu:

* Printer resources::
* Printer options::


File: vice.info,  Node: Printer resources,  Next: Printer options,  Prev: Printer settings,  Up: Printer settings

6.11.2.1 Printer resources
..........................

'IECDevice4'
'IECDevice5'
'IECDevice6'
'IECDevice7'
     Booleans that specify whether IEC device emulation for device #4,
     #5, #6 and #7 is enabled.

'PrinterTextDevice1'
'PrinterTextDevice2'
'PrinterTextDevice3'
     Strings specifying the printer devices (*note Printer settings::).

'Printer4TextDevice'
'Printer5TextDevice'
'Printer6TextDevice'
     Integer (ranging from 0 to 2, for device 1-3) specifying what
     printer device (*note Printer settings::) the IEC printer is using.

'Printer4'
'Printer5'
'Printer6'
     Integer specifying how the printer (device 4-6) is being emulated.
     (0: None, 1: Filesystem, 2: Real)

'Printer7'
     Integer specifying how printer 7 is being emulated.  (0: None, 2:
     Real)

'Printer4Driver'
     String specifying the printer output driver.  (raw, ascii, mps803,
     nl10)

'Printer5Driver'
     String specifying the printer output driver.  (raw, ascii, mps803,
     nl10)

'Printer6Driver'
     String specifying the printer output driver.  (raw, 1520)

'Printer4Output'
'Printer5Output'
'Printer6Output'
     Strings specifying the IEC printer output device.  (text, graphics)

'PrinterUserport'
     Boolean specifying if the user-port printer is being emulated.

'PrinterUserportTextDevice'
     Integer (ranging from 0 to 2, for device 1-3) specifying what
     printer device the user-port printer is using.

'PrinterUserportDriver'
     String specifying the user-port printer output driver.
     (ascii/nl10/raw)

'PrinterUserportOutput'
     String specifying the user-port printer output device.  (text,
     graphics)


File: vice.info,  Node: Printer options,  Prev: Printer resources,  Up: Printer settings

6.11.2.2 Printer command-line options
.....................................

'-iecdevice4'
'+iecdevice4'
     Enable/disable IEC device emulation for device #4 ('IECDevice4=1',
     'IECDevice4=0').

'-iecdevice5'
'+iecdevice5'
     Enable/disable IEC device emulation for device #5 ('IECDevice5=1',
     'IECDevice5=0').

'-iecdevice6'
'+iecdevice6'
     Enable/disable IEC device emulation for device #6 ('IECDevice6=1',
     'IECDevice6=0').

'-iecdevice7'
'+iecdevice7'
     Enable/disable IEC device emulation for device #7 ('IECDevice7=1',
     'IECDevice7=0').

'-device4 <type>'
     Set device type for device 4 ('Printer4').  (0: None, 1:
     Filesystem, 2: Real)

'-device5 <type>'
     Set device type for device 5 ('Printer5').  (0: None, 1:
     Filesystem, 2: Real)

'-device6 <type>'
     Set device type for device 6 ('Printer6').  (0: None, 1:
     Filesystem, 2: Real)

'-device7 <type>'
     Set device type for device 7 ('Printer7').  (0: None, 2: Real)

'-prtxtdev1 <name>'
'-prtxtdev2 <name>'
'-prtxtdev3 <name>'
     Specify name of printer text device or dump file
     ('PrinterTextDevice1', 'PrinterTextDevice2', 'PrinterTextDevice3').

'-pr4txtdev <0-2>'
'-pr5txtdev <0-2>'
'-pr6txtdev <0-2>'
     Specify printer text output device for IEC printer #4-6
     ('Printer4TextDevice', 'Printer5TextDevice', 'Printer6TextDevice').

'-pr4output <name>'
     Specify name of output device for device #4 ('Printer4Output').
     (text, graphics)

'-pr5output <name>'
     Specify name of output device for device #5 ('Printer5Output').
     (text, graphics)

'-pr6output <name>'
     Specify name of output device for device #6 ('Printer6Output').
     (text, graphics)

'-pr4drv <name>'
     Specify name of printer driver for device #4 ('Printer4Driver').
     (raw, ascii, mps803, nl10)

'-pr5drv <name>'
     Specify name of printer driver for device #5 ('Printer5Driver').
     (raw, ascii, mps803, nl10)

'-pr6drv <name>'
     Specify name of printer driver for device #6 ('Printer6Driver').
     (raw, 1520)

'-pruser'
'+pruser'
     Enable/disable emulation of the userport printer emulation
     ('PrUser=1', 'PrUser=0').

'-prusertxtdev <0-2>'
     Specify printer text output device for userport printer
     ('PrinterUserportTextDevice').

'-pruseroutput <name>'
     Specify name of output device for the userport printer
     ('PrinterUserportOutput').  (text, graphics)

'-pruserdrv <name>'
     Specify name of printer driver for the userport printer
     ('PrinterUserportDriver').


File: vice.info,  Node: No kernal traps,  Prev: Printer settings,  Up: Peripheral settings

6.11.3 Disabling kernal traps
-----------------------------

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.

* Menu:

* No traps resources::
* No traps options::


File: vice.info,  Node: No traps resources,  Next: No traps options,  Prev: No kernal traps,  Up: No kernal traps

6.11.3.1 Resources to control Kernal traps
..........................................

'VirtualDevices'
     Boolean specifying whether all the mechanisms for virtual device
     emulation should be enabled.  Serial IEC devices use kernal traps,
     parallel IEEE488 devices use an own IEEE488 engine.  Both are
     switched on and off with this resource.


File: vice.info,  Node: No traps options,  Prev: No traps resources,  Up: No kernal traps

6.11.3.2 Command-line options to control Kernal traps
.....................................................

'-virtualdev'
'+virtualdev'
     Enable/disable virtual devices ('VirtualDevices=1',
     'VirtualDevices=0').


File: vice.info,  Node: RS232 settings,  Next: Monitor settings,  Prev: Peripheral settings,  Up: Settings and resources

6.12 RS232 settings
===================

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:

   * connecting a real UNIX serial device;
   * dumping to a file;
   * piping through a process.
   * connect through a network socket.

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:

   * device 1, whose default value is '/dev/ttyS0';
   * device 2, whose default value is '/dev/ttyS1';
   * device 3, whose default value is '127.0.0.1:25232';
   * device 4, whose default value is '|nc 127.0.0.1:25232'.

You can change the baudrate the tty device is set to by specifying it on
the commandline or in the menu.

* Menu:

* RS232 resources::
* RS232 options::
* RS232 usage::


File: vice.info,  Node: RS232 resources,  Next: RS232 options,  Prev: RS232 settings,  Up: RS232 settings

6.12.1 RS232 resources
----------------------

'RsDevice1'
'RsDevice2'
'RsDevice3'
'RsDevice4'
     Strings specifying the RS232 devices (*note RS232 settings::).

'RsDevice1ip232'
'RsDevice2ip232'
'RsDevice3ip232'
'RsDevice4ip232'
     Boolean specifying whether the respective RS232 devices (*note
     RS232 settings::) use the IP232 protocol supported by tcpser.  This
     only works with Socket connections.

'Acia1Enable'
     Boolean specifying whether the ACIA (Swiftlink, Turbo232) cartridge
     should be emulated or not (x64, x64sc, xscpu64, x128 and xvic only,
     and only if RS232 support is enabled and supported at compile
     time).

'Acia1Dev'
     Integer specifying what RS232 device (*note RS232 settings::) the
     ACIA is using (all emulators except x64dtv and vsid, and only if
     RS232 support is enabled and supported at compile time).

'Acia1Base'
     Integer specifying the base address for the emulated ACIA chip
     (x64, x64sc, xscpu64, xvic and x128 only, and only if RS232 support
     is enabled and supported at compile time).  (xvic: $9800/$9C00,
     x128: $D700/$DE00/$DF00, x64, x64sc, xscpu64: $DE00/$DF00)

'Acia1Mode'
     Integer specifying the type of emulated RS232 interface (x64,
     x64sc, xscpu64, xvic and x128 only, and only if RS232 support is
     enabled and supported at compile time).  (0: normal, 1: Swiftlink,
     2: Turbo232)

'Acia1Irq'
     Integer specifying which interrupt to use (x64, x64sc, xscpu64,
     xvic and x128 only, and only if RS232 support is enabled and
     supported at compile time).  (0 = none, 1 = NMI, 2 = IRQ)

'RsUserEnable'
     Boolean specifying if the user-port RS232 interface is being
     emulated (C64, C128 and VIC20).

'RsUserBaud'
     Integer specifying the baudrate of the user-port RS232 interface
     (C64, C128 and VIC20).

'RsUserDev'
     Integer (ranging from 0 to 3, for device 1-4) specifying what RS232
     device the user-port interface is using (C64, C128 and VIC20).

The following resources are only available if RS232 device support or
RS232 network support is available at compile time.

'RsDevice1Baud'
'RsDevice2Baud'
'RsDevice3Baud'
'RsDevice4Baud'
     Integers specifying the RS232 baudrate devices if the device file
     points to a special device (like '/dev/ttyS0'; *note RS232
     settings::) (all emulators except vsid).


File: vice.info,  Node: RS232 options,  Next: RS232 usage,  Prev: RS232 resources,  Up: RS232 settings

6.12.2 RS232 command-line options
---------------------------------

'-rsdev1 <Name>'
'-rsdev2 <Name>'
'-rsdev3 <Name>'
'-rsdev4 <Name>'
     Specify <Name> as RS232 devices 1, 2, 3 and 4, respectively
     ('RsDevice1', 'RsDevice2' 'RsDevice3' and 'RsDevice4').

'-rsdev1ip232'
'+rsdev1ip232'
'-rsdev2ip232'
'+rsdev2ip232'
'-rsdev3ip232'
'+rsdev3ip232'
'-rsdev4ip232'
'+rsdev4ip232'
     Enable/Disable whether the respective RS232 devices (*note RS232
     settings::) use the IP232 protocol supported by tcpser.  This only
     works with Socket connections.

'-acia1'
'+acia1'
     Enable/Disable the $DE** ACIA RS232 interface emulation
     ('Acia1Enable=1', 'Acia1Enable=0') (x64, x64sc, xscpu64, x128 and
     xvic only, and only if RS232 support is enabled and supported at
     compile time).

'-myaciadev <0-3>'
     Specify RS232 device the ACIA should work on (all emulators except
     x64dtv and vsid, and only if RS232 support is enabled and supported
     at compile time)

'-acia1base <Base address>'
     Set the base address of the ACIA cartridge ('Acia1Base') (x64,
     x64sc, xscpu, x128 and xvic only, and only if RS232 support is
     enabled and supported at compile time).  (xvic: $9800/$9C00, x128:
     $D700/$DE00/$DF00, x64, x64sc, xscpu: $DE00/$DF00)

'-acia1mode <mode>'
     Set the ACIA mode ('Acia1Mode') (x64, x64sc, xscpu64, xvic and x128
     only, and only if RS232 support is enabled and supported at compile
     time).  (0: Normal, 1: Swiftlink, 2: Turbo232)

'-acia1irq <interrupt>'
     Set the ACIA interrupt ('Acia1Irq') (x64, x64sc, xscpu64, xvic and
     x128 only, and only if RS232 support is enabled and supported at
     compile time).  (0: None, 1: NMI, 2: IRQ)

'-rsuser'
'+rsuser'
     Enable or disable emulation of the userport RS232 emulation
     ('RsUser'; C64, C128 and VIC20)

'-rsuserbaud <baud>'
     Set the baud rate of the RS232 userport emulation.

'-rsuserdev <0-3>'
     Specify device for the userport RS232 emulation ('RsUserDev'; C64,
     C128 and VIC20).

The following command-line options are only available if RS232 device
support or RS232 network support is available at compile time.

'-rsdev1baud <baudrate>'
'-rsdev2baud <baudrate>'
'-rsdev3baud <baudrate>'
'-rsdev4baud <baudrate>'
     Specify <baudrate> as baudrate for the RS232 devices if the device
     name specifies a special device (like '/dev/ttyS0' for example,
     *note RS232 settings::; 'RsDevice1Baud', 'RsDevice2Baud'
     'RsDevice3Baud' and 'RsDevice4Baud') (all emulators except vsid).


File: vice.info,  Node: RS232 usage,  Prev: RS232 options,  Up: RS232 settings

6.12.3 RS232 usage example
--------------------------

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.'
     Normally you should set it up to use the modem as "/dev/modem".
'start VICE'

'Setup VICE to use your modem as "serial device 1"'
     Go to the RS232 settings menu and change "Serial 1 device" to
     "/dev/modem" (or the device where you attached your modem to) Then
     go to the RS232 settings menu and change "Serial 1 baudrate" to the
     baudrate your modem should run at.  Watch out, e.g.  on Linux there
     is an additional multiplier to multiply with the baudrate (so e.g.
     19200 gives 115200 or so baud) See the "setserial" manpage on Linux
     for example.  However, most modems should be able to autodetect the
     speed to the computer as well.

'Select the RS232 emulation your programs use'
     If you want to use the Userport emulation, go to the RS232 settings
     and change "Userport RS232 Device" to "Serial 1".  If you want ACIA
     emulation (swiftlink or what's it called?)  then change "ACIA $DE**
     device" to "Serial 1".

'Enable the emulation'
     Go to the RS232 settings and select either "ACIA $DE** emulation"
     or Userport 300/1200 baud or CIA 9600 baud emulation.

'Load your program and start it.'
     If it is able to detect an RS232 cartridge like swiftlink or so,
     try to detect the ACIA emulation if enabled.  Otherwise just set
     the baudrate to either 300, 1200, 2400 or 9600 according to what
     you enabled in the VICE menu for the userport.

6.13 Tape port devices
======================

6.13.1 Tape port resources
--------------------------

'CPClockF83'
     Boolean specifying whether the CP Clock F83 (PCF8583 RTC) is
     enabled.

'CPClockF83Save'
     Boolean specifying whether the CP Clock F83 (PCF8583 RTC) data is
     saved when changed.

'TapeSenseDongle'
     Boolean specifying whether the tape sense dongle is enabled.

'DTLBasicDongle'
     Boolean specifying whether the DTL Basic dongle is enabled.

6.13.2 Tape port command line options
-------------------------------------

'-cpclockf83'
'+cpclockf83'
     Enable/Disable CP Clock F83 (PCF8583 RTC) ('CPClockF83=1',
     'CPClockF83=0').

'-cpclockf83save'
'+cpclockf83save'
     Enable/Disable saving of the CP Clock F83 (PCF8583 RTC) data when
     changed ('CPClockF83Save=1', 'CPClockF83Save=0').

'-tapesensedongle'
'+tapesensedongle'
     Enable/Disable tape sense dongle ('TapeSenseDongle=1',
     'TapeSenseDongle=0').

'-dtlbasicdongle'
'+dtlbasicdongle'
     Enable/Disable DTL Basic dongle ('DTLBasicDongle=1',
     'DTLBasicDongle=0').

6.14 Userport devices
=====================

6.14.1 Userport resources
-------------------------

'UserportCollisionHandling'
     Boolean specifying the way the Userport collisions should be
     handled, (0: error message and detach all involved devices, 1:
     error message and detach last attached involved device, 2: warning
     in log and 'AND' the valid return values)

'UserportDIGIMAX'
     Boolean specifying whether the userport DigiMAX device is enabled.

'Userport4bitSampler'
     Boolean specifying whether the Userport 4bit sampler is enabled.

'Userport8BSS'
     Boolean specifying whether the Userport 8bit stereo sampler is
     enabled.

'UserportRTC58321a'
     Boolean specifying whether the userport RTC is emulated or not
     (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).

'UserportRTC58321aSave'
     Boolean specifying whether the userport RTC data is saved when
     changed or not (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).

'UserportRTCDS1307'
     Boolean specifying whether the userport RTC is emulated or not
     (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).

'UserportRTCDS1307Save'
     Boolean specifying whether the userport RTC data is saved when
     changed or not (xpet, cbm2, x64, x64sc, xscpu64 and x128 only).

6.14.2 Userport command line options
------------------------------------

'-userportcollision'
     Select the way the Userport collisions should be handled, (0: error
     message and detach all involved devices, 1: error message and
     detach last attached involved device, 2: warning in log and 'AND'
     the valid return values) ('UserportCollisionHandling')

'-userportdigimax'
'+userportdigimax'
     Enable/Disable the userport DigiMAX device ('UserportDIGIMAX=1',
     'UserportDIGIMAX=0')

'-userport4bitsampler'
'+userport4bitsampler'
     Enable/Disable Userport 4bit sampler ('Userport4bitSampler=1',
     'Userport4bitSampler=0')

'-userport8bss'
'+userport8bss'
     Enable/Disable Userport 8bit stereo sampler ('Userport8BSS=1',
     'Userport8BSS=0')

'-userportrtc58321a'
'+userportrtc58321a'
     Enable/disable the userport RTC emulation ('UserportRTC58321a=1',
     'UserportRTC58321a=0') (xpet, cbm2, x64, x64sc, xscpu64 and x128
     only).

'-userportrtc58321asave'
'+userportrtc58321asave'
     Disable/enable saving of the userport RTC data when changed
     ('UserportRTC58321aSave=1', 'UserportRTC58321aSave=0') (xpet, cbm2,
     x64, x64sc, xscpu64 and x128 only).

'-userportrtcds1307'
'+userportrtcds1307'
     Enable/disable the userport RTC emulation ('UserportRTCDS1307=1',
     'UserportRTCDS1307=0') (xpet, cbm2, x64, x64sc, xscpu64 and x128
     only).

'-userportrtcds1307save'
'+userportrtcds1307save'
     Disable/enable saving of the userport RTC data when changed
     ('UserportRTCDS1307Save=1', 'UserportRTCDS1307Save=0') (xpet, cbm2,
     x64, x64sc, xscpu64 and x128 only).


File: vice.info,  Node: Monitor settings,  Next: Misc settings,  Prev: RS232 settings,  Up: Settings and resources

6.15 Monitor settings
=====================

This section lists command-line options specific to the built-in
monitor.

* Menu:

* Monitor options::


File: vice.info,  Node: Monitor options,  Up: Monitor settings

6.15.1 Monitor resources
------------------------

'KeepMonitorOpen'
     Boolean, if true the monitor window may stay open when the
     emulation is running, eg to look at trace-point output.  (Not all
     ports/UIs support this, in that case this setting has no effect.)

'MonitorServer'
     Boolean specifying whether the remote monitor server is enabled.

'MonitorServerAddress'
     String specifying the address the remote monitor server listens to
     (ip4://127.0.0.1:6510)

'NativeMonitor'
     Boolean specifying whether the native monitor is enabled.  When
     enabled, the monitor will not run in the interface of the emulator,
     but instead work in the spawning terminal.

'MonitorLogEnabled'
     Boolean specifying whether the output of the monitor will be logged
     to a file.

'MonitorLogFileName'
     String specifying the logfile name for the monitor.

6.15.2 Monitor command-line options
-----------------------------------

'-moncommands <Name>'
     Execute the commands from the file <Name> in the monitor after
     starting up.  This command line switch is mainly thought to load
     labels and to set breakpoints.  Not all other commands are useful
     to be executed in this way, some may even lead to strange effects.

'-initbreak <address>'
     Set an initial breakpoint for the monitor.  Addresses with prefix
     "0x" are hexadecimal.

'-keepmonopen'
'+keepmonopen'
     Enable/disable keeping the monitor window open
     ('KeepMonitorOpen=1', 'KeepMonitorOpen=0').

'-remotemonitor'
'+remotemonitor'
     Enable/Disable remote monitor

'-remotemonitoraddress <name>'
     The local address the remote monitor should bind to

'-nativemonitor'
'+nativemonitor'
     Enable/Disable native monitor.  ('NativeMonitor=1',
     'NativeMonitor=0').

'-monlog'
'+monlog'
     Enable/Disable logging monitor output to a file.
     ('MonitorLogEnabled=1', 'MonitorLogEnabled=0').

'-monlogname <name>'
     Specify logfile name for the monitor.  ('MonitorLogFileName').

6.16 RAM init pattern settings
==============================

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.

6.16.1 RAM init pattern resources
---------------------------------

'RAMInitStartValue'
     Integer specifying the first value of the base pattern (all
     emulators except vsid).  (0..255)

'RAMInitValueInvert'
     Integer specifying the number of bytes until the base pattern is
     inverted (all emulators except vsid).

'RAMInitValueOffset'
     Integer specifying the number of bytes to offset the base pattern
     (all emulators except vsid).

'RAMInitPatternInvert'
     Integer specifying the length of the memory block when inverting
     the base pattern (all emulators except vsid).

'RAMInitPatternInvertValue'
     Integer specifying the value to use for inverting the base pattern
     with (all emulators except vsid).

'RAMInitStartRandom'
     Integer specifying the number of random bytes in the random pattern
     (all emulators except vsid).

'RAMInitRepeatRandom'
     Integer specifying the number of bytes after which to repeat the
     random pattern (all emulators except vsid).

'RAMInitRandomChance'
     Integer specifying the chance of any bit to randomly toggle
     (0-4096) (all emulators except vsid).

6.16.2 RAM init pattern command-line options
--------------------------------------------

'-raminitstartvalue <value>'
     Set the first value of the base pattern ('RAMInitStartValue') (all
     emulators except vsid).  (0..255)

'-raminitvalueinvert <num of bytes>'
     Set the number of bytes until the base pattern is inverted
     ('RAMInitValueInvert') (all emulators except vsid).

'-raminitvalueoffset <num of bytes>'
     Offset the first pattern by <num> of bytes ('RAMInitValueOffset')
     (all emulators except vsid).

'-raminitpatterninvert <num of bytes>'
     Set the length of the memory block when inverting the base pattern
     ('RAMInitPatternInvert') (all emulators except vsid).

'-raminitpatterninvertvalue <value>'
     Set the length of the memory block when inverting the base pattern
     ('RAMInitPatternInvertValue') (all emulators except vsid).

'-raminitstartrandom <num of bytes>'
     Set the number of random bytes in the random pattern
     ('RAMInitStartRandom') (all emulators except vsid).

'-raminitrepeatrandom <num of bytes>'
     Set the number of bytes after which to repeat the random pattern
     ('RAMInitRepeatRandom') (all emulators except vsid).

'-raminitrandomchance <value>'
     Set the chance of any bit to randomly toggle (0-4096)
     ('RAMInitRandomChance') (all emulators except vsid).

6.17 Debug settings
===================

6.17.1 Debug resources
----------------------

'TapeLog'
     Boolean specifying whether the tape log device is enabled.

'TapeLogDestination'
     Integer specifying where the tape log goes to (0=Enable logging to
     the emulator log file 1=Enable logging to a file).

'TapeLogfilename'
     String that specifies the tape log file name

'DebugCartEnable'
     Boolean specifying whether the debug "cartridge" used for the test
     suite is enabled.

     The following are only available when the emulators were compiled
     in DEBUG mode:

'TraceMode'
     Integer specifying the trace mode (0=normal 1=small 2=history)

'AutoPlaybackFrames'
     Amount of automatic playback frames

'MainCPU_TRACE'
     Trace the main CPU / Do not trace the main CPU
'Drive0CPU_TRACE'
     Trace the drive 0 CPU / Do not trace the drive 0 CPU
'Drive1CPU_TRACE'
     Trace the drive 1 CPU / Do not trace the drive 1 CPU
'Drive2CPU_TRACE'
     Trace the drive 2 CPU / Do not trace the drive 2 CPU
'Drive3CPU_TRACE'
     Trace the drive 3 CPU / Do not trace the drive 3 CPU

'IEC_TRACE'
     Trace IEC bus activity / Do not trace IEC bus activity

6.17.2 Debug command-line options
---------------------------------

'-core'
'+core'
     Enable/disable generation of core dumps ('DoCoreDump=1',
     'DoCoreDump=0') (all emulators except vsid).

'-debug'
'+debug'
     Disable/enable calling of the exception handler ('DoCoreDump=1',
     'DoCoreDump=0') (all emulators except vsid).

'-debugcart'
'+debugcart'
     Enable/disable the debug "cartridge" used for the test suite.

'-tapelog'
'+tapelog'
     Enable/Disable the tape log device.  ('TapeLog=1', 'TapeLog=0').

'-tapelogtofile'
     Enable logging to a file ('TapeLogDestination=1').

'-tapelogtolog'
     Enable logging to the emulator log file ('TapeLogDestination=0').

'-tapelogimage <name>'
     Specify tape log file name ('TapeLogfilename').

     The following are only available when the emulators were compiled
     in DEBUG mode:

'-trace_maincpu'
'+trace_maincpu'
     Trace the main CPU / Do not trace the main CPU ('MainCPU_TRACE=1',
     'MainCPU_TRACE=0')

'-trace_drive0'
'+trace_drive0'
     Trace the drive 0 CPU / Do not trace the drive 0 CPU
     ('Drive0CPU_TRACE=1', 'Drive0CPU_TRACE=0')

'-trace_drive1'
'+trace_drive1'
     Trace the drive 1 CPU / Do not trace the drive 1 CPU
     ('Drive1CPU_TRACE=1', 'Drive1CPU_TRACE=0')

'-trace_drive2'
'+trace_drive2'
     Trace the drive 2 CPU / Do not trace the drive 2 CPU
     ('Drive2CPU_TRACE=1', 'Drive2CPU_TRACE=0')

'-trace_drive3'
'+trace_drive3'
     Trace the drive 3 CPU / Do not trace the drive 3 CPU
     ('Drive3CPU_TRACE=1', 'Drive3CPU_TRACE=0')

'-trace_iec'
'+trace_iec'
     Trace IEC bus activity / Do not trace IEC bus activity
     ('IEC_TRACE=1', 'IEC_TRACE=0')

'-trace_mode <value>'
     Trace mode (0=normal 1=small 2=history)

'-autoplaybackframes <frames>'
     Set the amount of automatic playback frames

6.18 Network Play settings
==========================

6.18.1 Network Play resources
-----------------------------

'NetworkServerName'
     String specifying the name of the remote server.

'NetworkServerBindAddress'
     String specifying the IP of the remote server.

'NetworkServerPort'
     Integer specifying the port used for network play.

'NetworkControl'
     Integer specifying whether the emulator is running as server or
     client (0: client, 1: server)

6.18.2 Network Play command-line options
----------------------------------------

'-netplayserver <name>'
     Set the name of the remote server.

'-netplaybind <ip>'
     Set the IP of the remote server.

'-netplayport <port>'
     Set the port used for network play.

'-netplayctrl <flag>'
     Specify whether the emulator is running as server or client (0:
     client, 1: server)


File: vice.info,  Node: Misc settings,  Prev: Monitor settings,  Up: Settings and resources

6.19 Miscellaneous settings
===========================

This section lists generic resources that do not fit in the other
categories.

* Menu:

* Misc resources::
* Misc options::


File: vice.info,  Node: Misc resources,  Next: Misc options,  Prev: Misc settings,  Up: Misc settings

6.19.1 Miscellaneous resources
------------------------------

'JAMAction'
     Integer specifying the action to take when the CPU encounters a
     'JAM' opcode.  (0: show dialog, 1: continue emulation, 2: start
     monitor, 3: soft reset, 4: hard reset, 5: quit emulator)

'Directory'
     String specifying the search path for system files.  It is defined
     as a sequence of directory names, separated by colons (':'), just
     like the 'PATH' variable in the shell.  The special string '$$'
     stands for the default search path.

'DoCoreDump'
     Boolean specifying whether the emulator should dump core when it
     gets a signal (all emulators except vsid).

'LogFileName'
     String specifying the filename of the current log file.

'ExitScreenshotName'
     String specifying the filename of a screenshot file that will be
     written when the emulator exits.

'ExitScreenshotName1'
     String specifying the filename of a screenshot file that will be
     written when the emulator exits.  (x128)

'FliplistName'
     String specifying the filename of the current flip list.  (Drive 8
     only) (all emulators except vsid).

'AttachDevice8Readonly'
'AttachDevice9Readonly'
'AttachDevice10Readonly'
'AttachDevice11Readonly'
     Booleans that specify whether to attach images on drives 8 to 11
     read-only or not (all emulators except vsid).


File: vice.info,  Node: Misc options,  Prev: Misc resources,  Up: Misc settings

6.19.2 Miscellaneous command-line options
-----------------------------------------

'-jamaction <Type>'
     Specify the action to take when the CPU encounters a 'JAM' opcode
     ('JAMAction') (0: Show dialog, 1: continue emulation, 2: start
     monitor, 3: soft reset, 4: hard reset, 5: quit emulator).

'-directory <Path>'
     Specify the system file search path ('Directory').


File: vice.info,  Node: Machine-specific features,  Next: Platform-specific features,  Prev: Settings and resources,  Up: Top

7 Machine-specific features
***************************

* Menu:

* C64/128-specific::            Commands and settings specific to the
                                C64/128 emulators
* C128-specific::               Commands and settings specific to the
                                C128 emulator
* C64DTV-specific::             Commands and settings specific to the
                                C64DTV emulator
* SCPU64-specific::             Commands and settings specific to the
                                SCPU64 emulator
* VIC20-specific::              Commands and settings specific to the
                                VIC20 emulator
* PLUS4-specific::              Commands and settings specific to the
                                PLUS4 emulator
* PET-specific::                Commands and settings specific to the
                                PET emulator
* CBM-II-specific::             Commands and settings specific to the
                                CBM-II emulator
* VSID-specific::               Commands and settings specific to the
                                VSID music player


File: vice.info,  Node: C64/128-specific,  Next: C128-specific,  Prev: Machine-specific features,  Up: Machine-specific features

7.1 C64/128-specific commands and settings
==========================================

This section lists the settings and commands that are C64/128 specific
and thus are not present in the other emulators.

* Menu:

* C64 cartridges::              Using cartridges with the C64 emulator.
* VIC-II settings::             Settings that control the video chip.
* SID settings::                Settings that control the audio chip.
* C64 I/O extension settings::  Settings that enable special extensions.
* C64 system ROM settings::     Settings to control the C64 system ROMs.


File: vice.info,  Node: C64 cartridges,  Next: VIC-II settings,  Prev: C64/128-specific,  Up: C64/128-specific

7.1.1 Using cartridges
----------------------

The cartridge system is organized in "Slots" to allow more than one
cartridge connected at a time, like it can be done using an expansion
port expander on a real C64 (see below).

Generally a cartridge can be enabled by attaching its respective
cartridge image, or using the respective menu option for cartridges that
do not require an image.

x64, x64sc and x128 allow you to attach the following kinds of images:

   * '.crt' images, as used by the CCS64 emulator by Per Håkan Sundell
   * raw '.bin' images, with or without load address

"Cartridge images" are like disk images, but contain the contents of
cartridge ROM and/or RAM images instead of disk images.

To attach cartridges, use the "Attach a cartridge image" submenu.  When
using '.crt' images, this will work for every cartridge which is
supported.  For raw '.bin' images you might have to use command line
options.

When you have successfully attached a cartridge image, you should then
reset the machine to make sure the cartridge initializes itself.  (Or
enable the "reset on cartridge change" option).

Of course, it is also possible to detach a currently attached cartridge
image ("Detach cartridge image").

If you are using a freezer cart like an Action Replay cartridge, you can
emulate the cartridge's freeze button with the "Cartridge freeze"
command.

The imaginary expansion port expander is organized in 4 slots, the
cartridges are associated with them like this:

7.1.1.1 Slot 0
..............

All carts that have a passthrough connector go here.  Once a "Slot 0"
cartridge is enabled all further cartridges are connected to its
respective passthrough port.

Only one cartridge of this type can be active at a time.

"Slot 0" carts have individual "enable" switches, enabling means
enabling permanently.

The following cartridges are emulated in this slot:

   * IEEE-488 Interface
     (<http://www.funet.fi/pub/cbm/schematics/cartridges/c64/ieee-488/eprom.bin>)
   * Magic Voice
   * MMC64

7.1.1.2 Slot 1
..............

Mostly RAM based cartridges which for one reason or the other might make
sense to be enabled together with one of the "Main Slot" cartridges go
here.

Only one cartridge of this type can be active at a time.

"Slot 1" carts have individual "enable" switches, enabling means
enabling permanently

The following cartridges are emulated in this slot:

   * Double Quick Brown Box (DQBB)
   * Expert Cartridge
   * ISEPIC
   * RamCart

7.1.1.3 Main Slot
.................

All other cartridges which are not pure i/o extensions go here.

Only one cartridge of this type can be active at a time.

Cartridges in the "Main Slot" must be explicitly set as default to
enable them permanently.

The following cartridges are emulated in this slot:

   * generic 4K, 8K and 16K game- and ultimax cartridges
   * Action Replay V5
   * Action Replay MK2
   * Action Replay MK3
   * Action Replay MK4
   * Atomic Power
   * C64 Games System
   * Capture
   * Comal 80
   * Dela EP64
   * Dela EP7x8
   * Dela EP256
   * Diashow-Maker
   * Dinamic
   * EasyFlash
   * Epyx FastLoad
   * EXOS
   * The Final Cartridge
   * The Final Cartridge III
   * Final Cartridge Plus
   * Freeze Frame
   * Freeze Machine
   * Fun Play
   * Game Killer
   * IDE64 (<http://www.ide64.org>)
   * KCS Power Cartridge
   * MACH 5
   * Magic Desk
   * Magic Formel
   * Mikro Assembler
   * MMC Replay
   * Ocean
   * Prophet64
   * REX 256k EPROM Cart
   * REX Utility
   * Retro Replay
   * RGCD
   * RR-Net MK3
   * ROSS
   * Simons' BASIC
   * Snapshot 64
   * Stardos
   * Structured BASIC
   * Super Explode V5.0
   * Super Games
   * Super Snapshot V4
   * Super Snapshot V5
   * Warp Speed
   * Westermann Learning
   * Zaxxon

7.1.1.4 I/O Slot
................

All carts that are pure I/O extensions go here.

Any number of "I/O Slot" Carts may be active at a time.

"I/O Slot" carts have individual "enable" switches, enabling means
enabling permanently.

The following cartridges are emulated in this slot:

   * ACIA (Swiftlink, Turbo232)
   * DigiMAX
   * DS12C887 RTC
   * Ethernet (The Final Ethernet, RR-Net)
   * GEO-RAM
   * MIDI (Passport/Syntech, Datel/Siel/JMS/C-Lab, Maplin, Namesoft,
     Sequential)
   * RAM Expansion Module (REU)
   * SFX Sound Expander
   * SFX Sound Sampler

7.1.1.5 Expected behaviour
..........................

When the emulator is run without arguments, all settings from the config
file should be applied and arguments override settings from the config
file.

When saving the settings to the config file it is expected that on the
next run of the emulator all settings will be in the same state as they
were when saved.

There is an exception to this rule: the cartridge in the "Main Slot"
must be explicitly set as default before it gets saved to the config
file.

'+cart' should disable ALL cartridges, including eventually activated
REU, Swithlink and all similar expansionport devices.

'-cartXYZ' options should generally attach AND activate a cart of type
XYZ. As a consequence, attaching carts this way which are NOT in the
"Main Slot" will also enable the cart permanently.

7.1.1.6 Common problems
.......................

If attaching a cartridge does not work as expected, this may be because
of various reasons:

   * Not seldomly the CRT type is incorrectly set in '.crt' files found
     "in the wild".  Make sure this is not the case (if in doubt use
     'cartconv' to verify and/or fix).

   * You may have unintentionally enabled more than one cartridge at
     once, for example by saving the settings with REU enabled, and then
     later attaching a game cartridge from the command-line.  The
     cartridge system will allow certain combinations, but (as on the
     real thing) not all do (can) actually work.  To make sure this is
     not the case, either detach all cartridges from the menus, or use
     '+cart' on the command-line.

   * The cartridge image might be broken.  Try one from a different
     source.  If you are sure the dump is ok (for example because you
     dumped it yourself) then make sure it is in proper linear order (on
     some cartridges, for example "capture", address and/or data lines
     at the eprom are shuffled around so a dump made with an eprom
     burner can not be used as is).

   * Last not least you might have encountered a bug in the emulation.
     If you suspect this is the case, and you can still reproduce the
     bug after checking the things above, please file a bug report
     including the following information:

        * attach your vicerc and a reference to the cartridge binaries
        * if you can, comment in the respective DEBUGXYZ macros
          prominently defined at the top of these files:
          src/c64/cart/c64cart.c src/c64/cart/c64cartmem.c
          src/c64/c64io.c src/c64/c64export.c and then recompile.  this
          will add debug output that might make it much easier to locate
          certain problems.

7.1.1.7 IEEE-488 interface
..........................

To be able to use an IEEE drive, you need to enable IEEE emulation for
the emulator.  To do this, follow the following steps:

Download the IEEE 488 ROM image from the CBM archives (formerly known as
FUNET) Attach that image with File/Attach cartridge image/IEEE488
interface image.

Make sure you have a one-drive system only (that is, go to
Settings/Peripheral Setting, uncheck "use IEC device" for all devices,
go to Settings/Drive Settings and select "Floppy type" as "none" for all
drives other than drive 8.

After this, all drives can be selected in x64 and x128.

7.1.1.8 The Final Cartridge 3
.............................

The Final Cartridge 3 detects whether a mouse is connected when it
starts and disables mouse support if it doesnt detect one.  So to make
mouse emulation work you must either enable it on the command line, or
reset the cartridge after enabling it from the user interface.

7.1.2 C64 cartridge settings
----------------------------

7.1.2.1 C64 cartridge resources
...............................

'IOCollisionHandling'
     Integer specifying the way the I/O collisions should be handled.
     (0: error message and detach all involved carts, 1: error message
     and detach last attached involved carts, 2: warning in log and
     'AND' the valid return values)

'CartridgeReset'
     Boolean specifying whether the machine should be reset when a
     cartridge is changed.

'CartridgeType'
     Integer specifying the type of cartridge emulated in the "main"
     slot.

     The following cartridge types are valid:

        * - 6: Ultimax
        * - 3: Generic 8k
        * - 2: Generic 16k
        * - 1: None
        * 0: CRT
        * 1: Action Replay V5
        * 2: KCS Power Cartridge
        * 3: The Final Cartridge III
        * 4: Simons' BASIC
        * 5: Ocean
        * 6: Expert Cartridge
        * 7: Fun Play
        * 8: Super Games
        * 9: Atomic Power / Nordic Power
        * 10: Epyx FastLoad
        * 11: Westermann Learning
        * 12: REX Utility
        * 13: The Final Cartridge
        * 14: Magic Formel
        * 15: C64 Games System
        * 16: Warp Speed
        * 17: Dinamic
        * 18: Zaxxon
        * 19: Magic Desk
        * 20: Super Snapshot V5
        * 21: Comal 80
        * 22: Structured BASIC
        * 23: ROSS
        * 24: Dela EP64
        * 25: Dela EP7x8
        * 26: Dela EP256
        * 27: REX 256k EPROM Cart
        * 28: Mikro Assembler
        * 29: Final Cartridge Plus
        * 30: Action Replay MK4
        * 31: Stardos
        * 32: EasyFlash
        * 33: EasyFlash Xbank
        * 34: Capture
        * 35: Action Replay MK3
        * 36: Retro Replay
        * 37: MMC64
        * 38: MMC Replay
        * 39: IDE64
        * 40: Super Snapshot V4
        * 41: IEEE-488 Interface
        * 42: Game Killer
        * 43: Prophet64
        * 44: EXOS
        * 45: Freeze Frame
        * 46: Freeze Machine
        * 47: Snapshot 64
        * 48: Super Explode V5.0
        * 49: Magic Voice
        * 50: Action Replay MK2
        * 51: MACH 5
        * 52: Diashow-Maker
        * 53: Pagefox
        * 54: Kingsoft
        * 55: Silverrock 128K Cartridge
        * 56: Formel 64
        * 57: RGCD
        * 58: RR-Net MK3
        * 59: EasyCalc
        * 60: GMod2
        * 61: MAX Basic

'CartridgeFile'
     String specifying the filename of the image for the cartridge
     emulated in the "main" slot.

'DQBB'
     Boolean specifying whether the Double Quick Brown Box should be
     emulated or not.

'DQBBfilename'
     String specifying the filename of the DQBB RAM image.

'DQBBImageWrite'
     Boolean, if true write back the DQBB image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.

'EasyFlashJumper'
     Boolean specifying whether the Easy Flash jumper is set.

'EasyFlashWriteCRT'
     Boolean, if true write back the Easy Flash image file
     automatically, incase the contents changed, when detaching or
     quitting the emulator.

'EasyFlashOptimizeCRT'
     Boolean, if true omit empty (filled with $ff) banks from the .crt
     image when writing.

'ExpertCartridgeEnabled'
     Boolean specifying whether the Expert Cartridge should be emulated
     or not.

'Expertfilename'
     String specifying the filename of the Expert Cartridge RAM image.

'ExpertImageWrite'
     Boolean, if true write back the Expert Cartridge image file
     automatically, incase the RAM contents changed, when detaching or
     quitting the emulator.

'ExpertCartridgeMode'
     Integer specifying the state of the expert cartridge switch.  (0:
     off, 1: prg, 2: on)

'GMod2EEPROMImage'
     String that specifies the name of the raw GMod2 EEPROM image.

'GMod2FlashWrite'
     Boolean that specifies wether writes to GMod2 EEPROM image are
     enabled.

'GMod2EEPROMRW'
     Boolean that specifies wether the GMod2 ROM is saved at exit

'IDE64version'
     Integer specifying whether the emulated card version is V3.4, V4.1
     or V4.2.  This is automatically detected most of the time for .crt
     cartridge images.

'IDE64Image1'
'IDE64Image2'
'IDE64Image3'
'IDE64Image4'
     Strings specifying the full path to the four harddisk images.  If a
     file is non-existing the drive is not emulated.  Some older IDEDOS
     versions only support the first two harddisks.

'IDE64Cylinders1'
'IDE64Cylinders2'
'IDE64Cylinders3'
'IDE64Cylinders4'
     Integers specifying the number of cylinders for the four harddisk
     images.  (1..65535)

'IDE64Heads1'
'IDE64Heads2'
'IDE64Heads3'
'IDE64Heads4'
     Integers specifying the number of heads for the four harddisk
     images.  (1..16)

'IDE64Sectors1'
'IDE64Sectors2'
'IDE64Sectors3'
'IDE64Sectors4'
     Integers specifying the number of sectors for the four harddisk
     images.  (1..63)

'IDE64AutodetectSize1'
'IDE64AutodetectSize2'
'IDE64AutodetectSize3'
'IDE64AutodetectSize4'
     Booleans specifying whether the disk geometry should be auto
     detected based on the disk image for the respective harddisk, or
     the cylinder/head/sector resources above should be used.

'IDE64USBServerAddress'
     String specifying the address the IDE64 USB server listens to
     (ip4://127.0.0.1:64245)
'IDE64USBServer'
     Boolean specifying whether the IDE64 USB server is enabled.

'IDE64RTCSave'
     Boolean specifying whether the IDE64 RTC data should be saved when
     changed or not.

'IDE64ClockPort'
     Integer that specifies the enabled IDE64 Clockport device.  (0:
     None, 2: RRNet, 4: MP3@64)

'SBDIGIMAX'
     Boolean that specifies whether the Short Bus DigiMAX expansion is
     enabled.

'SBDIGIMAXbase'
     Integer specifying the Base address of the Short Bus DigiMAX
     expansion.  (0xDE40/0xDE48)

'SBETFE'
     Boolean specifying whether the Short Bus ETFE expansion is enabled

'SBETFEbase'
     Integer specifying the Base address of the Short Bus ETFE
     expansion.  ($de00, $de10, $df00)

'IEEE488'
     Boolean specifying whether the IEEE488 interface should be emulated
     or not.

'IEEE488Image'
     String specifying the filename of the IEEE488 ROM image.

'IsepicCartridgeEnabled'
     Boolean specifying whether ISEPIC should be emulated or not.

'Isepicfilename'
     String specifying the filename of the ISEPIC RAM image.

'IsepicSwitch'
     Boolean specifying the status of the ISEPIC switch.  (0: off, 1:
     on)

'IsepicImageWrite'
     Boolean, if true write back the ISEPIC image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.

'MagicVoiceCartridgeEnabled'
     Boolean specifying whether the Magic Voice should be emulated or
     not.

'MagicVoiceImage'
     String specifying the filename of the Magic Voice ROM image.

'MMC64'
     Boolean specifying whether the MMC64 should be emulated or not.

'MMC64BIOSfilename'
     String specifying the filename of the MMC64 Flash ROM image.

'MMC64_bios_write'
     Boolean, if true write back the MMC64 Flash ROM image file
     automatically, incase the contents changed, when detaching or
     quitting the emulator.

'MMC64_flashjumper'
     Boolean that specifies whether the MMC64 flash jumper is set.

'MMC64_revision'
     Integer specifying the MMC64 hardware revision.  (0: Revision A, 1:
     Revision B)

'MMC64imagefilename'
     String specifying the filename of the SD-Card image used by the
     MMC64 emulation.

'MMC64_RO'
     Boolean, if true the SD-Card image is mounted read-only.

'MMC64_sd_type'
     Integer that specifies the reported type for the emulated SD-Card.
     (0: Auto, 1: MMC, 2: SD, 3: SDHC)

'MMC64ClockPort'
     Integer that specifies the clockport device used.  (0: None, 1:
     ETH64-II, 2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII
     SID)

'MMCRCardImage'
     String specifying the filename of the SD-Card image used by the
     MMCR emulation.

'MMCREEPROMImage'
     String specifying the filename of the MMCR EEPROM image.

'MMCRRescueMode'
     Boolean specifying if the rescue mode (both buttons pressed during
     powerup) of the MMCR is active.

'MMCRImageWrite'
     Boolean, if true write back the MMCR Flash ROM image file
     automatically, incase the contents changed, when detaching or
     quitting the emulator.

'MMCRCardRW'
     Boolean specifying if the SD-Card image used by the MMCR emulation
     is writeable.

'MMCRSDType'
     Integer that specifies the reported type for the emulated SD-Card.
     (0: Auto, 1: MMC, 2: SD, 3: SDHC)

'MMCREEPROMRW'
     Boolean specifying if the MMCR EEPROM image is writeable.

'MMCRClockPort'
     Integer that specifies the clockport device.  (0: None, 1:
     ETH64-II, 2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII
     SID)

'RAMCART'
     Boolean specifying whether the RAMCart should be emulated or not.

'RAMCARTfilename'
     String specifying the filename of the RAMCart RAM image.

'RAMCARTImageWrite'
     Boolean, if true write back the RAMCart image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.

'RAMCART_RO'
     Boolean, if true the RAMCart contents are read only.

'RAMCARTsize'
     Integer specifying the size of the RAMCart in KB. (64, 128)

'RRrevision'
     Integer specifying the RR hardware revision.  (0: Retro Replay, 1:
     Nordic Replay)

'RRFlashJumper'
     Boolean specifying whether the RR flash jumper is set or not.

'RRBankJumper'
     Boolean specifying whether the RR bank jumper is set or not.

'RRBiosWrite'
     Boolean, if true write back the RR Flash ROM image file
     automatically, incase the contents changed, when detaching or
     quitting the emulator.

'RRClockPort'
     Integer that specifies the clockport device.  (0: None, 1:
     ETH64-II, 2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII
     SID)

'RRNETMK3_flashjumper'
     Boolean specifying whether the RRNETMK3 Flash Jumper is set.

'RRNETMK3_bios_write'
     Boolean specifying whether to save the RRNETMK3 bios when changed.

'SSRamExpansion'
     Boolean, if true enable the 32k addon RAM of the Supersnapshot V5

7.1.2.2 C64 cartridge command-line options
..........................................

'-iocollision <method>'
     Select the way the I/O collisions should be handled
     ('IOCollisionHandling').  (0: error message and detach all involved
     carts, 1: error message and detach last attached involved carts, 2:
     warning in log and 'AND' the valid return values

'+cart'
     Disable all cartridges (which would eventually be enabled in the
     config file).

'-cartreset'
'+cartreset'
     Reset/Do not reset machine if a cartridge is attached or detached
     ('CartridgeReset=1', 'CartridgeReset=0').

'-cart8 <name>'
     Attach generic 8KB cartridge image.

'-cart16 <name>'
     Attach generic 16KB cartridge image.

'-cartultimax <name>'
     Attach generic 16kB Ultimax cartridge image.

'-cartcrt <name>'
     Attach CRT cartridge image.

'-cartap <name>'
     Attach raw 32KB Atomic Power cartridge image.

'-cartar2 <name>'
     Attach raw 16kB Action Replay MK2 cartridge image.

'-cartar3 <name>'
     Attach raw 16KB Action Replay MK3 cartridge image.

'-cartar4 <name>'
     Attach raw 32KB Action Replay MK4 cartridge image.

'-cartar5 <name>'
     Attach raw 32KB Action Replay cartridge image.

'-cartcap <name>'
     Attach raw 8kB Capture cartridge image.

'-cartcomal <name>'
     Attach raw 64kB Comal 80 cartridge image.

'-cartdep256 <name>'
     Attach raw Dela EP256 cartridge image.

'-cartdep64 <name>'
     Attach raw Dela EP64 cartridge image.

'-cartdep7x8 <name>'
     Attach raw Dela EP7x8 cartridge image.

'-cartdin <name>'
     Attach raw 128kB Dinamic cartridge image.

'-cartdsm <name>'
     Attach raw 8kB Diashow-Maker cartridge image.

'-cartdqbb <name>'
     Attach raw 16kB Double Quick Brown Box cartridge image.

'-dqbb'
'+dqbb'
     Enable/disable Double Quick Brown Box ('DQBB=1', 'DQBB=0').

'-dqbbimage <name>'
     Specify Double Quick Brown Box filename ('DQBBfilename').

'-dqbbimagerw'
'+dqbbimagerw'
     Allow/disallow writing to DQBB image ('DQBBImageWrite=1',
     'DQBBImageWrite=0').

'-carteasy <name>'
     Attach raw EasyFlash cartridge image.

'-carteasycalc <name>'
     Attach raw 24kB Easy Calc Result cartridge image

'-easyflashjumper'
'+easyflashjumper'
     Enable/disable EasyFlash jumper ('EasyFlashJumper=1',
     'EasyFlashJumper=0').

'-easyflashcrtwrite'
'+easyflashcrtwrite'
     Allow/Disallow writing to EasyFlash .crt image
     ('EasyFlashWriteCRT=1', 'EasyFlashWriteCRT=0').

'-easyflashcrtoptimize'
'+easyflashcrtoptimize'
     Allow/Disallow EasyFlash .crt image optimizing (omitting of empty
     banks) on write ('EasyFlashOptimizeCRT=1',
     'EasyFlashOptimizeCRT=0').

'-cartepyx <name>'
     Attach raw 8KB Epyx FastLoad cartridge image.

'-cartexos <name>'
     Attach raw 8kB EXOS cartridge image.

'-cartexpert <name>'
     Attach raw 8kB Expert Cartridge image.

'-expert'
'+expert'
     Enable/Disable the Expert Cartridge ('ExpertCartridgeEnabled=1',
     'ExpertCartridgeEnabled=0').

'-expertimagename <name>'
     Set Expert Cartridge image name ('Expertfilename').

'-expertimagerw'
'+expertimagerw'
     Allow/Disallow writing to Expert Cartridge image
     ('ExpertImageWrite=1', 'ExpertImageWrite=0').

'-expertmode <mode>'
     Set Expert Cartridge mode ('ExpertCartridgeMode').  (0: off, 1:
     prg, 2: on)

'-cartf64 <Name>'
     Attach raw 32kB Formel 64 image.

'-cartfc1 <name>'
     Attach raw 16kB Final Cartridge image.

'-cartfc3 <name>'
     Attach raw 64kB Final Cartridge III image.

'-cartfcplus <name>'
     Attach raw 32kB Final Cartridge Plus image.

'-cartff <name>'
     Attach raw 8kB Freeze Frame image.

'-cartfm <name>'
     Attach raw 32kB Freeze Machine image.

'-cartfp <name>'
     Attach raw 128kB Fun Play/Power Play cartridge image.

'-cartgmod2 <name>'
     Attach raw GMod2 cartridge image.

'-gmod2eepromimage <name>'
     Attach raw GMod2 EEPROM image ('GMod2EEPROMImage').

'-gmod2eepromrw'
'+gmod2eepromrw'
     Enable/Disable writes to GMod2 EEPROM image ('GMod2EEPROMRW=1',
     'GMod2EEPROMRW=0').

'-gmod2flashwrite'
'+gmod2flashwrite'
     Enable/Disable saving of the GMod2 ROM at exit
     ('GMod2FlashWrite=1', 'GMod2FlashWrite=0').

'-cartgk <name>'
     Attach raw 8KB Game Killer cartridge image.

'-cartgs <name>'
     Attach raw 512kB Game System cartridge image.

'-cartide64 <name>'
     Attach raw 64KB or 128KB IDE64 cartridge image.

'-IDE64image1 <name>'
'-IDE64image2 <name>'
'-IDE64image3 <name>'
'-IDE64image4 <name>'
     Specify path to the image files for IDE64 harddisks ('IDE64Image1',
     'IDE64Image2', 'IDE64Image3', 'IDE64Image4').

'-IDE64cyl1 <value>'
'-IDE64cyl2 <value>'
'-IDE64cyl3 <value>'
'-IDE64cyl4 <value>'
     Set number of cylinders for the IDE64 harddisk emulation
     ('IDE64Cylinders1', 'IDE64Cylinders2', 'IDE64Cylinders3',
     'IDE64Cylinders1').  (1..65535)

'-IDE64hds1 <value>'
'-IDE64hds2 <value>'
'-IDE64hds3 <value>'
'-IDE64hds4 <value>'
     Set number of heads for the IDE64 harddisk emulation
     ('IDE64Heads1', 'IDE64Heads2', 'IDE64Heads3', 'IDE64Heads4').
     (1..16)

'-IDE64sec1 <value>'
'-IDE64sec2 <value>'
'-IDE64sec3 <value>'
'-IDE64sec4 <value>'
     Set number of sectors for the IDE64 harddisk emulation
     ('IDE64Sectors1', 'IDE64Sectors2', 'IDE64Sectors3',
     'IDE64Sectors4').  (1..63)

'-IDE64autosize1'
'+IDE64autosize1'
     Autodetect geometry of formatted image or do not autodetect and use
     specified geometry ('IDE64AutodetectSize1=1',
     'IDE64AutodetectSize1=0').

'-IDE64autosize2'
'+IDE64autosize2'
     Autodetect geometry of formatted image or do not autodetect and use
     specified geometry ('IDE64AutodetectSize2=1',
     'IDE64AutodetectSize2=0').

'-IDE64autosize3'
'+IDE64autosize3'
     Autodetect geometry of formatted image or do not autodetect and use
     specified geometry ('IDE64AutodetectSize3=1',
     'IDE64AutodetectSize3=0').

'-IDE64autosize4'
'+IDE64autosize4'
     Autodetect geometry of formatted image or do not autodetect and use
     specified geometry ('IDE64AutodetectSize4=1',
     'IDE64AutodetectSize4=0').

'-IDE64version <value>'
     Select IDE64 version V3 (0), V4.1 (1) or V4.2 (2).
     ('IDE64version').  (0..2)

'-IDE64USB'
'+IDE64USB'
     Enable/Disable IDE64 USB server
'-IDE64USBAddress <name>'
     The local address the IDE64 USB server should bind to

'-IDE64rtcsave'
'+IDE64rtcsave'
     Enable/disable saving of IDE64 RTC data when changed
     ('IDE64RTCSave=1', 'IDE64RTCSave=0').

'-ide64clockportdevice'
     Enable IDE64 Clockport device (0: None, 2: RRNet, 4: MP3@64)
     ('IDE64ClockPort').

'-sbdigimax'
'+sbdigimax'
     Enable/Disable the Short Bus DigiMAX expansion ('SBDIGIMAX').

'-sbdigimaxbase'
     Set Base address of the Short Bus DigiMAX expansion (0xDE40/0xDE48)
     ('SBDIGIMAXbase').

'-sbetfe'
'+sbetfe'
     Enable/Disable the Short Bus ETFE expansion ('SBETFE').

'-sbetfebase'
     Set Base address of the Short Bus ETFE expansion (56832: $de00,
     56848: $de10, 57088: $df00) ('SBETFEbase').

'-cartieee <name>'
     Attach CBM IEEE-488 cartridge image.

'-ieee488'
'+ieee488'
     Enable/disable emulation of the IEEE488 interface ('IEEE488=1',
     'IEEE488=0').

'-ieee488image <name>'
     Set IEEE488 interface image name ('IEEE488Image').

'-isepic'
'+isepic'
     Enable/disable the ISEPIC cart ('IsepicCartridgeEnabled=1',
     'IsepicCartridgeEnabled=0').

'-isepicswitch'
'+isepicswitch'
     Enable/disable the ISEPIC switch ('IsepicSwitch=1',
     'IsepicSwitch=0').

'-cartisepic <name>'
     Attach raw 2kB ISEPIC cartridge image.

'-isepicimagename <name>'
     Set ISEPIC image name ('Isepicfilename').

'-isepicimagerw'
'+isepicimagerw'
     Allow/disallow writing to ISEPIC image ('IsepicImageWrite=1',
     'IsepicImageWrite=0').

'-cartkcs <name>'
     Attach raw 16kB KCS Power cartridge image.

'-cartks <name>'
     Attach raw 24kB Kingsoft cartridge image.

'-cartmach5 <name>'
     Attach raw 8kB MACH 5 cartridge image.

'-cartmd <name>'
     Attach raw 32/64/128kB Magic Desk cartridge image.

'-cartmf <name>'
     Attach raw Magic Formel cartridge image.

'-cartmax <name>'
     Attach raw MAX Basic cartridge image.

'-cartmikro <name>'
     Attach raw 8kB Mikro Assembler cartridge image.

'-mmc64'
'+mmc64'
     Enable/disable the MMC64 expansion ('MMC64=1', 'MMC64=0').

'-cartmmc64 <name>'
     Attach raw 8kB MMC64 cartridge image.

'-mmc64bios <name>'
     Specify name of MMC64 BIOS image ('MMC64BIOSfilename').

'-mmc64image <name>'
     Specify name of MMC64 image ('MMC64imagefilename').

'-mmc64readonly'
     Set the MMC64 card to read-only ('MMC64_RO=1').

'-mmc64readwrite'
     Set the MMC64 card to read/write ('MMC64_RO=0').

'-mmc64flash'
'+mmc64flash'
     Enable/Disable the MMC64 flash jumper ('MMC64_flashjumper=1',
     'MMC64_flashjumper=0').

'-mmc64bioswrite'
     Save the MMC64 bios when changed ('MMC64_bios_write'=1).

'-mmc64biosreadonly'
     Do not save the MMC64 bios when changed ('MMC64_bios_write'=0).

'-mmc64rev <revision>'
     Specify MMC64 revision ('MMC64_revision').  (0: Revision A, 1:
     Revision B)

'-mmc64sdtype <type>'
     Specify MMC64 SD type ('MMC64_sd_type').  (0: Auto, 1: MMC, 2: SD,
     3: SDHC)

'-mmc64clockportdevice <device>'
     Set MMC64 clockport device ('MMC64ClockPort') (0: None, 1:
     ETH64-II, 2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII
     SID)

'-cartmmcr <name>'
     Attach raw 512kB MMC Replay cartridge image.

'-mmcrrescue'
'+mmcrrescue'
     Enable/disable MMC Replay rescue mode ('MMCRRescueMode=1',
     'MMCRRescueMode=0').

'-mmcrimagerw'
'+mmcrimagerw'
     Allow/disallow writing to MMC Replay image ('MMCRImageWrite=1',
     'MMCRImageWrite=0').

'-mmcrsdtype <type>'
     Specify MMC Replay SD type ('MMCRSDType').  (0: Auto, 1: MMC, 2:
     SD, 3: SDHC)

'-mmcrcardimage <filename>'
     Specify MMC Replay card image filename ('MMCRCardImage').

'-mmcrcardrw'
'+mmcrcardrw'
     Allow/disallow writes to MMC Replay card image ('MMCRCardRW=1',
     'MMCRCardRW=0').

'-mmcreepromimage <filename>'
     Specify MMC Replay EEPROM image filename ('MMCREEPROMImage').

'-mmcreepromrw'
'+mmcreepromrw'
     Allow/disallow writes to MMC Replay EEPROM image ('MMCREEPROMRW=1',
     'MMCREEPROMRW=0').

'-mmcrclockportdevice <id>'
     Set MMC Replay clockport device ('MMCRClockPort').  (0: None, 1:
     ETH64-II, 2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII
     SID)

'-cartmv <name>'
     Attach raw 16kB Magic Voice cartridge image.

'-magicvoiceimage <name>'
     Specify Magic Voice cartridge ROM image filename
     ('MagicVoiceImage').

'-magicvoice'
'+magicvoice'
     Enable/disable Magic Voice cartridge
     ('MagicVoiceCartridgeEnabled=1', 'MagicVoiceCartridgeEnabled=0').

'-cartocean <name>'
     Attach raw Ocean cartridge image.

'-cartp64 <name>'
     Attach raw 256KB Prophet 64 cartridge image.

'-cartpf <name>'
     Attach raw 64kb Pagefox cartridge image.

'-cartramcart <name>'
     Attach raw RamCart cartridge image.

'-ramcart'
'+ramcart'
     Enable/disable the RAMCART expansion ('RAMCART=1', 'RAMCART=0').

'-ramcartsize <size in KB>'
     Size of the RAMCART expansion ('RAMCARTsize').  (64, 128)

'-ramcartimage <name>'
     Specify name of RAMCART image ('RAMCARTfilename').

'-ramcartimagerw'
'+ramcartimagerw'
     Allow/disallow writing to RAMCart image ('RAMCARTImageWrite=1',
     'RAMCARTImageWrite=0').

'-ramcartro'
     Set the RamCart switch to read-only ('RAMCART_RO=1').

'-ramcartrw'
     Set the RamCart switch to read-only ('RAMCART_RO=0').

'-cartrep256 <name>'
     Attach raw REX EP256 cartridge image.

'-cartrgcd <Name>'
     Attach raw 64kB RGCD cartridge image.

'-cartross <name>'
     Attach raw 16/32kB ROSS cartridge image.

'-cartrrnet <name>'
     Attach raw 8KB RR-Net MK3 cartridge image.

'-cartrr <name>'
     Attach raw 64KB Retro Replay cartridge image.

'-rrbioswrite'
'+rrbioswrite'
     Enable/disable saving of the RR ROM at exit ('RRBiosWrite=1',
     'RRBiosWrite=0').

'-rrbankjumper'
'+rrbankjumper'
     Set/unset RR Bank Jumper ('RRBankJumper=1', 'RRBankJumper=0').

'-rrflashjumper'
'+rrflashjumper'
     Set/unset RR Flash Jumper ('RRFlashJumper=1', 'RRFlashJumper=0').

'-rrrev <Revision>'
     Set the RR revision ('RRrevision').  (0: Retro Replay, 1: Nordic
     Replay)

'-rrclockportdevice <device>'
     Set the RR clockport device ('RRClockPort') (0: None, 1: ETH64-II,
     2: RRNet, 3: Silver Surfer, 4: MP3@64, 5: Catweasel MkIII SID)

'-rrnetmk3flash'
'+rrnetmk3flash'
     SetRemove the RRNETMK3 Flash Jumper ('RRNETMK3_flashjumper=1',
     'RRNETMK3_flashjumper=0').

'-rrnetmk3bioswrite'
'+rrnetmk3bioswrite'
     Save/Do not save the RRNETMK3 bios when changed
     ('RRNETMK3_bios_write=1', 'RRNETMK3_bios_write=0').

'-cartru <name>'
     Attach raw 8kB REX Utility cartridge image.

'-carts64 <name>'
     Attach raw 4kB Snapshot 64 cartridge image.

'-cartsb <name>'
     Attach raw Structured Basic cartridge image.

'-cartse5 <name>'
     Attach raw 16kB Super Explode V5 cartridge image.

'-cartsg <name>'
     Attach raw 64kB Super Games cartridge image.

'-cartsilver <Name>'
     Attach raw Silverrock 128 cartridge image.

'-cartsimon <name>'
     Attach raw 16kB Simons' Basic cartridge image.

'-cartss4 <name>'
     Attach raw 32KB Super Snapshot V4 cartridge image.

'-cartss5 <name>'
     Attach raw 64KB Super Snapshot V5 cartridge image.

'-ssramexpansion'
'+ssramexpansion'
     Enable/disable 32k addon RAM. ('SSRamExpansion=1',
     'SSRamExpansion=0').

'-cartstar <name>'
     Attach raw 16KB Stardos cartridge image.

'-cartwl <name>'
     Attach raw 16KB Westermann Learning cartridge image.

'-cartws <name>'
     Attach raw 8kB Warp Speed cartridge image.

'-cartzaxxon <name>'
     Attach raw 16kB Zaxxon cartridge image.

7.1.3 CIA settings
------------------

7.1.3.1 CIA resources
.....................

'CIA1Model'
     Integer specifying CIA1 model (all emulators except x64dtv, xpet,
     xplus4, xvic).  (0: old 6526, 1: new 6526A)

'CIA2Model'
     Integer specifying CIA2 model (all emulators except x64dtv, xcbm2,
     xcbm5x0, xpet, xplus4, xvic).  (0: old 6526, 1: new 6526A)

7.1.3.2 CIA command-line options
................................

'-ciamodel <model>'
     Set both CIA models ('CIA1Model', 'CIA2Model') (all emulators
     except x64dtv, xcbm2, xcbm5x0, xpet, xplus4, xvic).  (0: old 6526,
     1: new 6526A)

'-cia1model <model>'
     Set CIA1 model ('CIA1Model') (all emulators except x64dtv, xpet,
     xplus4, xvic).  (0: old 6526, 1: new 6526A)

'-cia2model <model>'
     Set CIA2 model ('CIA2Model') (all emulators except x64dtv, xcbm2,
     xcbm5x0, xpet, xplus4, xvic).  (0: old 6526, 1: new 6526A)


File: vice.info,  Node: VIC-II settings,  Next: SID settings,  Prev: C64 cartridges,  Up: C64/128-specific

7.1.4 VIC-II settings
---------------------

These settings control the emulation of the VIC-II (MOS6569) video chip
used in both the C64 and the C128.

   * "Sprite-sprite collisions" and "Sprite-background collisions", if
     enabled, cause the hardware detection of sprite-to-sprite and
     sprite-to-background collisions of the VIC-II to be emulated.  This
     feature is used by many games, and disabling either of the two
     detection systems can sometimes make you invincible (although there
     is also a chance that also enemies become invincible then).

   * "Color set" can be used to dynamically change the palette file
     being used by choosing one of the available predefined color sets,
     for example:

        * 'pepto-pal.vpl' ("Pepto PAL"), a Palette calculated by Philip
          "Pepto" Timmermann (<http://www.pepto.de/projects/colorvic/>).
          (This is the default)
        * 'vice.vpl' ("VICE"), the old default VICE palette.
        * 'c64s.vpl' ("C64S"), palette taken from the shareware C64S
          emulator by Miha Peternel.
        * 'ccs64.vpl' ("CCS64"), palette taken from the shareware CCS64
          emulator by Per Håkan Sundell.
        * 'frodo.vpl' ("Frodo"), palette taken from the free Frodo
          emulator by Christian Bauer (<https://frodo.cebix.net/>).
        * 'pc64.vpl' ("PC64"), palette taken from the free PC64 emulator
          by Wolfgang Lorenz.
        * 'godot.vpl' ("GoDot"), palette as suggested by the authors of
          the C64 graphics package GoDot (<https://www.godot64.de>).

* Menu:

* VIC-II resources::
* VIC-II options::


File: vice.info,  Node: VIC-II resources,  Next: VIC-II options,  Prev: VIC-II settings,  Up: VIC-II settings

7.1.4.1 VIC-II resources
........................

'VICIIModel'
     Integer that specifies VIC-II model (x64sc, xscpu64 only).  (6569,
     6569r1, 8565, 6567, 8562, 6567r56a, 6572)

'VICIICheckSsColl'
     Boolean specifying whether the sprite-sprite hardware collision
     detection must be emulated.

'VICIICheckSbColl'
     Boolean specifying whether the sprite-background hardware collision
     detection must be emulated.

'VICIIVSPBug'
     Boolean specifying whether the "VSP Bug" must be emulated (x64sc,
     xscpu64 only).

'VICIIVideoCache'
     Boolean specifying whether the video cache is turned on.

'VICIIDoubleSize'
     Boolean specifying whether double-size mode is turned on.

'VICIIDoubleScan'
     Boolean specifying whether double-scan mode is turned on.

'VICIINewLuminances'
     Boolean specifying whether to use new (9 steps) luminances.

'VICIIPaletteFile'
     String specifying the name of the palette file being used.  The
     '.vpl' extension is optional.

'VICIIExternalPalette'
     Boolean specifying whether to use external palette file or not.

'VICIIColorSaturation'
     Integer specifying saturation of internal calculated palette.
     (0..2000)

'VICIIColorContrast'
     Integer specifying contrast of internal calculated palette.
     (0..2000)

'VICIIColorBrightness'
     Integer specifying brightness of internal calculated palette.
     (0..2000)

'VICIIColorGamma'
     Integer specifying gamma of internal calculated palette.  (0..4000)

'VICIIColorTint'
     Integer specifying tint of internal calculated palette.  (0..2000)

'VICIIPALScanLineShade'
     Integer specifying amount of scan line shading for the CRT
     emulation.  (0..1000)

'VICIIPALBlur'
     Integer specifying amount of horizontal blur for the CRT emulation.
     (0..1000)

'VICIIPALOddLinePhase'
     Integer specifying phase for color carrier in odd lines.  (0..2000)

'VICIIPALOddLineOffset'
     Integer specifying phase offset for color carrier in odd lines.
     (0..2000)

'VICIIAudioLeak'
     Boolean specifying whether to enable/disable video to audio leak
     emulation.

'VICIIFilter'
     Integer specifying rendering filter.  (0: None, 1: CRT emulation,
     2: Scale2x)

'VICIIBorderMode'
     Integer specifying border display mode.  (0: normal, 1: full, 2:
     debug, 3: none)


File: vice.info,  Node: VIC-II options,  Prev: VIC-II resources,  Up: VIC-II settings

7.1.4.2 VIC-II command-line options
...................................

'-VICIIcheckss'
'+VICIIcheckss'
     Enable/disable emulation of hardware sprite-sprite collision
     detection ('VICIICheckSsColl=1', 'VICIICheckSsColl=0').

'-VICIIchecksb'
'+VICIIchecksb'
     Enable/disable emulation of hardware sprite-background collision
     detection ('VICIICheckSbColl=1', 'VICIICheckSbColl=0').

'-VICIIvspbug'
'+VICIIvspbug'
     Enable/disable emulation of the "VSP bug" ('VICIIVSPBug=1',
     'VICIIVSPBug=0') (x64sc, xscpu64 only).

'-VICIIvcache'
'+VICIIvcache'
     Enable/disable the video cache ('VICIIVideoCache=1',
     'VICIIVideoCache=0').

'-VICIIdsize'
'+VICIIdsize'
     Enable/disable the double size mode ('VICIIDoubleSize=1',
     'VICIIDoubleSize=0').

'-VICIIdscan'
'+VICIIdscan'
     Enable/disable the double scan mode ('VICIIDoubleScan=1',
     'VICIIDoubleScan=0').

'-VICIIfilter <Mode>'
     Select rendering filter ('VICIIFilter').  (0: None, 1: CRT
     emulation, 2: Scale2x)

'-VICIIintpal'
     Use an internal calculated palette ('VICIIExternalPalette=0').

'-VICIIextpal'
     Use an external palette (file) ('VICIIExternalPalette=1').

'-VICIIpalette <Name>'
     Specify the name of the palette file ('VICIIPaletteFile').

'-VICIIborders <mode>'
     Set VIC-II border display mode ('VICIIBorderMode').  (0: normal, 1:
     full, 2: debug, 3: none)

'-VICIImodel <model>'
     Set VIC-II model ('VICIIModel') (x64sc and xscpu64 only).  (6569,
     6569r1, 8565, 6567, 8562, 6567r56a, 6572)

'-VICIInewluminance'
'+VICIInewluminance'
     Enable/disable new luminances ('VICIINewLuminances=1',
     'VICIINewLuminances=0').

'-VICIIsaturation <0-2000>'
     Set saturation of internal calculated palette
     ('VICIIColorSaturation').

'-VICIIcontrast <0-2000>'
     Set contrast of internal calculated palette ('VICIIColorContrast').

'-VICIIbrightness <0-2000>'
     Set brightness of internal calculated palette
     ('VICIIColorBrightness').

'-VICIIgamma <0-4000>'
     Set gamma of internal calculated palette ('VICIIColorGamma').

'-VICIItint <0-2000>'
     Set tint of internal calculated palette ('VICIIColorTint').

'-VICIIoddlinesphase <0-2000>'
     Set phase for color carrier in odd lines ('VICIIPALOddLinePhase').

'-VICIIoddlinesoffset <0-2000>'
     Set phase offset for color carrier in odd lines
     ('VICIIPALOddLineOffset').

'-VICIIcrtblur <0-1000>'
     Amount of horizontal blur for the CRT emulation ('VICIIPALBlur').

'-VICIIcrtscanlineshade <0-1000>'
     Amount of scan line shading for the CRT emulation
     ('VICIIPALScanLineShade').

'-VICIIaudioleak'
'+VICIIaudioleak'
     Enable/disable video to audio leak emulation ('VICIIAudioLeak=1',
     'VICIIAudioLeak=0').


File: vice.info,  Node: SID settings,  Next: C64 I/O extension settings,  Prev: VIC-II settings,  Up: C64/128-specific

7.1.5 SID settings
------------------

These settings control the emulation of the SID (MOS6581 or MOS8580)
audio chip.

   * "Second SID" maps a second SID chip into the address space for
     stereo sound.  This emulates e.g.  the "SID Symphony Stereo
     Cartridge" from Dr.  Evil Laboratories.  The second SID can be used
     with software such as "Stereo SID Player" by Mark Dickenson or "The
     Enhanced Sidplayer" by Craig Chamberlain.

   * "Second SID base address" sets the start address for the second SID
     chip.  Software normally uses $DE00 or $DF00, since $DE00-$DEFF and
     $DF00-$DFFF can be mapped through the cartridge port of the C64.
     The default start address is $DE00.

   * "Emulate filters" causes the built-in programmable filters of the
     SID chip to be emulated.  A lot of C64 music requires them to be
     emulated properly, but their emulation requires some additional
     processor power.

   * "ChipModel" specifies the model of the SID chip being emulated:
     there are two slightly different generations of SID chips: MOS6581
     ones and MOS8580 ones.  Additionally there is "8580D", which refers
     to MOS8580 with added "Digifix" modification, which adds a DC
     offset to audio-in, which makes classic samples audible also on the
     8580.

   * "Use reSID emulation" specifies whether the more accurate (and
     resource hungry) reSID emulation is turned on or off.

   * "reSID sampling method" selects the method for conversion of the
     SID output signal to a sampling rate appropriate for playback by
     standard digital sound equipment.  Possible settings are:
        * "Fast" simply clocks the SID chip at the output sampling
          frequency, picking the nearest sample.  This yields acceptable
          sound quality, but sampling noise is noticeable in some cases,
          especially with SID combined waveforms.  The sound emulation
          is still cycle exact.
        * "Interpolating" clocks the SID chip each cycle, and calculates
          each sample with linear interpolation.  The sampling noise is
          now strongly attenuated by the SID external filter (as long as
          "Emulate filters" is selected), and the linear interpolation
          further improves the sound quality.
        * "Resampling" clocks the SID chip each cycle, and uses the
          theoretically correct method for sample generation.  This
          delivers CD quality sound, but is extremely CPU intensive, and
          is thus most useful for non-interactive sound generation.
          Unless you have a very fast machine, that is.

   * "reSID resampling passband" specifies the percentage of the total
     bandwidth allocated to the resampling filter passband.  The work
     rate of the resampling filter is inversely proportional to the
     remaining transition band percentage.  This implies that e.g.  with
     the transition band starting at ~ 20kHz, it is faster to generate
     48kHz than 44.1kHz samples.  For CD quality sound generation at
     44.1kHz the passband percentage should be set to 90 (i.e.  the
     transition band starting at almost 20kHz).

* Menu:

* SID resources::
* SID options::


File: vice.info,  Node: SID resources,  Next: SID options,  Prev: SID settings,  Up: SID settings

7.1.5.1 SID resources
.....................

'SidStereo'
     Integer specifying the amount of emulated extra SIDs.  (0: off, 1:
     1 extra sid, 2: 2 extra sids, 3: three extra sids)

'SidStereoAddressStart'
     Integer specifying the base address of the second SID (x64, x64sc,
     xscpu64, x128 and vsid only).  (x128: 0xD420, 0xD440, 0xD460,
     0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
     0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
     0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
     0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
     0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
     0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
     0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
     0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
     0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
     0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)

'SidTripleAddressStart'
     Integer specifying the base address of the third SID (x64, x64sc,
     xscpu64, x128 and vsid only).  (x128: 0xD420, 0xD440, 0xD460,
     0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
     0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
     0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
     0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
     0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
     0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
     0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
     0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
     0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
     0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)

'SidQuadAddressStart'
     Integer specifying the base address of the third SID (x64, x64sc,
     xscpu64, x128 and vsid only).  (x128: 0xD420, 0xD440, 0xD460,
     0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760,
     0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60,
     0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60,
     0xDF80, 0xDFA0, 0xDFC0, 0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420,
     0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520,
     0xD540, 0xD560, 0xD580, 0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620,
     0xD640, 0xD660, 0xD680, 0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720,
     0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20,
     0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20,
     0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)

'SidFilters'
     Boolean specifying whether the built-in SID filters must be
     emulated.

'SidModel'
     Integer specifying what model of the SID must be emulated.  (0:
     6581, 1: 8580, 2: 8580D, 3: DTVSID)

'SidEngine'
     Integer specifying what SID engine will be used.  (0: FastSID, 1:
     ReSID, 2: Catweasel MKIII, 3: HardSID, 4: ParSID Port 1, 5: ParSID
     Port 2, 6: ParSID Port 3)

'SidResidSampling'
     Integer specifying the sampling method ('0': Fast, '1':
     Interpolation, '2': Resampling, '3': Fast Resampling)

'SidResidPassband'
     Integer specifying the resampling filter passband in percentage of
     the total bandwidth ('0 - 90') for 6581.

'SidResidGain'
     Integer that specifies reSID gain in percent [97] (90..100) for
     6581.

'SidResidFilterBias'
     Integer that specifies reSID filter bias for 6581, which can be
     used to adjust DAC bias in millivolts.  [0] (-5000..5000)

'SidResid8580Passband'
     Integer specifying the resampling filter passband in percentage of
     the total bandwidth ('0 - 90') for 8580.

'SidResid8580Gain'
     Integer that specifies reSID gain in percent [97] (90..100) for
     8580.

'SidResid8580FilterBias'
     Integer that specifies reSID filter bias for 8580, which can be
     used to adjust DAC bias in millivolts.  [0] (-5000..5000)


File: vice.info,  Node: SID options,  Prev: SID resources,  Up: SID settings

7.1.5.2 SID command-line options
................................

'-sidstereo'
     Specify the amount of extra SID chips to emulate ('SidStereo').
     (0: off, 1: 1 extra sid, 2: 2 extra sids)

'-sidstereoaddress <Base address>'
     Specifies the start address for the second SID chip
     ('SidStereoAddressStart') (x64, x64sc, xscpu64, x128 and vsid
     only).  (x128: 0xD420, 0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0,
     0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0,
     0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0,
     0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0,
     0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420, 0xD440, 0xD460, 0xD480,
     0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520, 0xD540, 0xD560, 0xD580,
     0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620, 0xD640, 0xD660, 0xD680,
     0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720, 0xD740, 0xD760, 0xD780,
     0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80,
     0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80,
     0xDFA0, 0xDFC0, 0xDFE0)

'-sidtripleaddress ADDRESS'
     Specifies the start address for the third SID chip
     ('SidTripleAddressStart') (x64, x64sc, xscpu64, x128 and vsid
     only).  (x128: 0xD420, 0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0,
     0xD4E0, 0xD700, 0xD720, 0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0,
     0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0,
     0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0,
     0xDFE0) (x64, x64sc, xscpu64, vsid: 0xD420, 0xD440, 0xD460, 0xD480,
     0xD4A0, 0xD4C0, 0xD4E0, 0xD500, 0xD520, 0xD540, 0xD560, 0xD580,
     0xD5A0, 0xD5C0, 0xD5E0, 0xD600, 0xD620, 0xD640, 0xD660, 0xD680,
     0xD6A0, 0xD6C0, 0xD6E0, 0xD700, 0xD720, 0xD740, 0xD760, 0xD780,
     0xD7A0, 0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80,
     0xDEA0, 0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80,
     0xDFA0, 0xDFC0, 0xDFE0)

'-sidquadaddress ADDRESS'
     Specifies the start address for the forth SID chip
     ('SidQuadAddressStart') (x64, x64sc, xscpu64, x128 and vsid only).
     (x128: 0xD420, 0xD440, 0xD460, 0xD480, 0xD4A0, 0xD4C0, 0xD4E0,
     0xD700, 0xD720, 0xD740, 0xD760, 0xD780, 0xD7A0, 0xD7C0, 0xD7E0,
     0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0,
     0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)
     (x64, x64sc, xscpu64, vsid: 0xD420, 0xD440, 0xD460, 0xD480, 0xD4A0,
     0xD4C0, 0xD4E0, 0xD500, 0xD520, 0xD540, 0xD560, 0xD580, 0xD5A0,
     0xD5C0, 0xD5E0, 0xD600, 0xD620, 0xD640, 0xD660, 0xD680, 0xD6A0,
     0xD6C0, 0xD6E0, 0xD700, 0xD720, 0xD740, 0xD760, 0xD780, 0xD7A0,
     0xD7C0, 0xD7E0, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0,
     0xDEC0, 0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0,
     0xDFC0, 0xDFE0)

'-sidenginemodel <engine and model>'
     Specify engine and model for the emulated SID chip ('SidEngine',
     'SidModel').  (FastSID 6581: 0/fast/fastold/fast6581, FastSID 8580:
     1/fastnew/fast8580, ReSID 6581: 256/resid/residold/resid6581, ReSID
     8580: 257/residnew/resid8580, ReSID 8580 + digiboost:
     258/residdigital/residd/residnewd/resid8580d, DTVSID:
     260/dtv/c64dtv/dtvsid, Catweasel MKIII:
     512/catweaselmkiii/catweasel3/catweasel/cwmkiii/cw3/cw, HardSID:
     768/hardsid/hard/hs, ParSID Port 1: 1024/parsid/parsid1/par1/lpt1,
     ParSID Port 2: 1280/parsid2/par2/lpt2 ParSID Port 3:
     1536/parsid3/par3/lpt3)

'-sidfilters'
'+sidfilters'
     Enable/disable emulation of the built-in SID filters
     ('SidFilters=1', 'SidFilters=0').

'-residsamp METHOD'
     Specifies the sampling method; fast ('SidResidSampling=0'),
     interpolating ('SidResidSampling=1'), resampling
     ('SidResidSampling=2'), fast resampling ('SidResidSampling=3').

'-residpass PERCENTAGE'
     Specifies the resampling filter passband in percentage of the total
     bandwidth ('SidResidPassband=0-90') for 6581.

'-residgain PERCENTAGE'
     Specifies reSID gain in percent (90 - 100) for 6581.

'-residfilterbias <number>'
     reSID filter bias setting for 6581, which can be used to adjust DAC
     bias in millivolts.

'-residpass PERCENTAGE'
     Specifies the resampling filter passband in percentage of the total
     bandwidth ('SidResid8580Passband=0-90') for 8580.

'-residgain PERCENTAGE'
     Specifies reSID gain in percent (90 - 100) for 8580.

'-residfilterbias <number>'
     reSID filter bias setting for 8580, which can be used to adjust DAC
     bias in millivolts.


File: vice.info,  Node: C64 I/O extension settings,  Next: C64 system ROM settings,  Prev: SID settings,  Up: C64/128-specific

7.1.6 C64 I/O extension settings
--------------------------------

I/O extensions are (usually) cartridges which do not map into ROM space,
but use only the I/O space at address range $DE00 ... $DEFF and/or $DF00
... $DFFF.

Please use these extensions only when needed, as they might cause
compatibility problems.

The following I/O extensions are available:

   * ACIA (Swiftlink, Turbo232)

   * DigiMAX

   * DS12C887 RTC

   * Ethernet (The Final Ethernet, RR-Net)

   * GEO-RAM

   * MIDI (Passport, Datel, Maplin, Namesoft, Sequential)

   * REU - The "RAM Expansion Module" extension emulates a standard
     Commodore RAM Expansion Unit; this can be used with GEOS and other
     programs that are designed to take advantage of it.  This currently
     works only in the C64 emulator.

   * SFX Sound Expander

   * SFX Sound Sampler

* Menu:

* C64 I/O extension resources::
* C64 I/O extension options::


File: vice.info,  Node: C64 I/O extension resources,  Next: C64 I/O extension options,  Prev: C64 I/O extension settings,  Up: C64 I/O extension settings

7.1.6.1 C64 I/O extension resources
...................................

'DIGIMAX'
     Boolean specifying whether the DigiMAX cartridge should be emulated
     or not.

'DIGIMAXbase'
     Integer specifying the DigiMAX base address.  (0xDD00: useport,
     0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0, 0xDEE0,
     0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0, 0xDFE0)

'DS12C887RTC'
     Boolean specifying whether the DS12C887 RTC cartridge should be
     emulated or not.

'DS12C887RTCbase'
     Integer specifying the DS12C887 RTC base address.  x128: (0xD700,
     0xDE00, 0xDF00) x64, x64sc, xscpu64: (0xD500, 0xD600, 0xD700,
     0xDE00, 0xDF00)

'DS12C887RTCRunMode'
     Boolean specifying whether the DS12C887 RTC cartridge starts out
     running or halted.  (0: halted, 1: running)

'DS12C887RTCSave'
     Boolean specifying whether the DS12C887 RTC data should be saved
     when changed or not.

'ETHERNETCART_ACTIVE'
     Boolean that specifies whether the CS8900 ethernet interface
     emulation is active.
'ETHERNET_INTERFACE'
     String specifying the device name of the ethernet device to use for
     the emulation.
'ETHERNET_DISABLED'
     Boolean that specified whether ethernet emulation has been disabled
     because it is not available in the current configuration.
'ETHERNETCARTMode'
     Boolean that specifies whether RR-Net compatible mapping is
     enabled.
'ETHERNETCARTBase'
     Integer specifying the I/O base address of the emulated ethernet
     cartridge,

'GEORAM'
     Boolean specifying whether the GEO-RAM cartridge should be emulated
     or not.  (x64, x64sc, x128).

'GEORAMfilename'
     String specifying the filename of the GEORAM image.  (x64, x64sc,
     x128).

'GEORAMImageWrite'
     Boolean, if true write back the GEO-RAM image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.  (x64, x64sc, x128).

'GEORAMsize'
     Integer specifying the size of the emulated GEO-RAM in KB. (64,
     128, 256, 512, 1024, 2048, 4096).  (x64, x64sc, x128).

'MIDIEnable'
     Boolean specifying whether the MIDI cartridge should be emulated or
     not (x64, x64sc, xscpu64, x128 only, and only if MIDI support is
     enabled and available at compile time).

'MIDIMode'
     Integer specifying the type of emulated MIDI interface (x64, x64sc,
     xscpu64 and x128 only, and only if MIDI support is enabled and
     available at compile time).  (0: Sequential, 1: Passport/Syntech,
     2: DATEL/Siel/JMS, 3: Namesoft, 4: Maplin)

'REU'
     Boolean specifying whether the RAM Expansion Module should be
     emulated or not.

'REUfilename'
     String specifying the filename of the REU image.

'REUImageWrite'
     Boolean, if true write back the REU image file automatically, in
     case the RAM contents changed, when detaching or quitting the
     emulator.

'REUsize'
     Integer specifying the size of the emulated REU in KB. (128, 256,
     512, 1024, 2048, 4096, 8192, 16384)

'SFXSoundExpander'
     Boolean specifying whether the SFX Sound Expander should be
     emulated or not.

'SFXSoundExpanderChip'
     Integer specifying which YM chip is emulated.  (3526, 3812)

'SFXSoundSampler'
     Boolean specifying whether the SFX Sound Sampler should be emulated
     or not.


File: vice.info,  Node: C64 I/O extension options,  Prev: C64 I/O extension resources,  Up: C64 I/O extension settings

7.1.6.2 C64 I/O extension command-line options
..............................................

'-digimax'
'+digimax'
     Enable/disable the DigiMAX cartridge ('DIGIMAX=1', 'DIGIMAX=0').

'-digimaxbase <base address>'
     Base address of the DigiMAX cartridge ('DIGIMAXbase').  (0xDD00:
     userport, 0xDE00, 0xDE20, 0xDE40, 0xDE60, 0xDE80, 0xDEA0, 0xDEC0,
     0xDEE0, 0xDF00, 0xDF20, 0xDF40, 0xDF60, 0xDF80, 0xDFA0, 0xDFC0,
     0xDFE0)

'-ds12c887rtc'
'+ds12c887rtc'
     Enable/disable the DS12C887 RTC cartridge ('DS12C887RTC=1',
     'DS12C887RTC=0').

'-ds12c887rtcbase <base address>'
     Base address of the DS12C887 RTC cartridge ('DS12C887RTCbase').
     x128: (0xD700, 0xDE00, 0xDF00) x64, x64sc, xscpu64: (0xD500,
     0xD600, 0xD700, 0xDE00, 0xDF00)

'-ds12c887rtchalted'
     Set the DS12C887 RTC oscillator to 'halted'
     ('DS12C887RTCRunMode=0').
'-ds12c887rtcrunning'
     Set the DS12C887 RTC oscillator to 'running'
     ('DS12C887RTCRunMode=1').

'-ds12c887rtcsave'
'+ds12c887rtcsave'
     Enable/disable saving of the DS12C887 RTC data when changed
     ('DS12C887RTCSave=1', 'DS12C887RTCSave=0').

'-miditype <0-4>'
     Set MIDI interface type ('MIDIMode') (x64, x64sc, xscpu64 and x128
     only, and only if MIDI support is enabled and available at compile
     time).  (0: Sequential, 1: Passport/Syntech, 2: DATEL/Siel/JMS, 3:
     Namesoft, 4: Maplin)

'-midi'
'+midi'
     Enable/disable MIDI emulation ('MIDIEnable=1', 'MIDIEnable=0')
     (x64, x64sc, xscpu64 and x128 only, and only if MIDI support is
     enabled and available at compile time).  (0: Sequential, 1:
     Passport/Syntech, 2: DATEL/Siel/JMS, 3: Namesoft, 4: Maplin)

'-georam'
'+georam'
     Enable/disable the GEORAM expansion unit ('GEORAM=1', 'GEORAM=0').

'-cartgeoram <name>'
     Attach raw GEO-RAM cartridge image.

'-georamimage <name>'
     Specify name of GEORAM image ('GEORAMfilename').

'-georamimagerw'
'+georamimagerw'
     Allow/disallow writing to GEORAM image ('GEORAMImageWrite=1',
     'GEORAMImageWrite=0').

'-georamsize <size in KB>'
     Size of the GEORAM expansion unit ('GEORAMsize').  (64, 128, 256,
     512, 1024, 2048, 4096)

'-reu'
'+reu'
     Enable/disable emulation of the RAM Expansion Module ('REU=1',
     'REU=0').

'-cartreu <name>'
     Attach raw REU cartridge image.

'-reuimage <name>'
     Specify name of REU image ('REUfilename').

'-reuimagerw'
'+reuimagerw'
     Allow/disallow writing to REU image ('REUImageWrite=1',
     'REUImageWrite=0').

'-reusize <size in KB>'
     Size of the RAM expansion unit ('REUsize').  (128, 256, 512, 1024,
     2048, 4096, 8192, 16384)

'-sfxse'
'+sfxse'
     Enable/disable the SFX soundexpander cartridge
     ('SFXSoundExpander=1', 'SFXSoundExpander=0').

'-sfxsetype <type>'
     Set YM chip type ('SFXSoundExpanderChip').  (3526, 3812)

'-sfxss'
'+sfxss'
     Enable/disable the SFX Sound Sampler cartridge
     ('SFXSoundSampler=1', 'SFXSoundSampler=0').

'-cs8900ioif <name>'
     Set the system ethernet interface for Ethernet Cartridge emulation

'-ethernetcart'
'+ethernetcart'
     Disable/Enable the Ethernet Cartridge (TFE/RR-Net/64NIC/FB-NET)

'-ethernetcartmode <Mode>'
     Mode of Ethernet Cartridge (0: TFE, 1: RR-Net)

'-ethernetcartbase <Base address>'
     Base address of the Ethernet Cartridge.  (0xDE00, 0xDE10, 0xDE20,
     0xDE30, 0xDE40, 0xDE50, 0xDE60, 0xDE70, 0xDE80, 0xDE90, 0xDEA0,
     0xDEB0, 0xDEC0, 0xDED0, 0xDEE0, 0xDEF0, 0xDF00, 0xDF10, 0xDF20,
     0xDF30, 0xDF40, 0xDF50, 0xDF60, 0xDF70, 0xDF80, 0xDF90, 0xDFA0,
     0xDFB0, 0xDFC0, 0xDFD0, 0xDFE0, 0xDFF0)

'-tfe'
     Enable the Ethernet Cartridge in TFE ("The Final Ethernet")
     compatible mode and set default I/O address

'-rrnet'
     Enable the Ethernet Cartridge in RR-Net compatible mode and set
     default I/O address

'-burstmod <value>'
     Set the kind of burst modification.  This emulates the fast serial
     bus connection as described at
     <http://www.cs.tut.fi/~albert/Dev/burst/>, with the wire to the
     tape port cut ('BurstMod').  (0: None, 1: CIA-1, 2: CIA-2)


File: vice.info,  Node: C64 system ROM settings,  Prev: C64 I/O extension settings,  Up: C64/128-specific

7.1.7 C64 system ROM settings
-----------------------------

These settings can be used to control what system ROMs are loaded in the
C64 emulator at startup.  They cannot be changed from the menus.

* Menu:

* C64 system ROM resources::
* C64 system ROM options::


File: vice.info,  Node: C64 system ROM resources,  Next: C64 system ROM options,  Prev: C64 system ROM settings,  Up: C64 system ROM settings

7.1.7.1 C64 system ROM resources
................................

'BasicName'
     String specifying the name of the Basic ROM (default 'basic').

'ChargenName'
     String specifying the name of the character generator ROM (default
     'chargen').

'KernalName'
     String specifying the name of the Kernal ROM (default 'kernal').

'KernalRev'
     String specifying the Kernal revision.  This resource can be used
     to control what revision of the C64 kernal is being used; it cannot
     be changed at runtime.  VICE is able to automatically convert one
     ROM revision into another, by manually patching the loaded image.
     This way, it is possible to use any of the ROM revisions without
     changing the ROM set.  Valid values are:

     '0'
          Kernal revision 0;
     '3'
          Kernal revision 3;
     'sx'
     '67'
          Commodore SX-64 ROM;
     '100'
     '4064'
          Commodore 4064 (also known as "PET64" or "Educator 64") ROM.


File: vice.info,  Node: C64 system ROM options,  Prev: C64 system ROM resources,  Up: C64 system ROM settings

7.1.7.2 C64 system ROM command-line options
...........................................

'-basic <name>'
     Specify filename of the Basic ROM file ('BasicName').

'-chargen <name>'
     Specify filename of the character generator ROM file
     ('ChargenName').

'-kernal <name>'
     Specify filename of the Kernal ROM file ('KernalName').

'-kernalrev <revision>'
     Specify Kernal revision ('KernalRev').  (1/2/3, 67/sx, 100/4064)

7.1.8 C64 settings
------------------

7.1.8.1 C64 resources
.....................

'GlueLogic'
     Integer specifying the type of emulated glue-logic.  (0: discrete,
     1: custom IC)

'BurstMod'
     Integer specifying the kind of Burst-Mode modification.  (0: None,
     1: CIA-1, 2: CIA-2)

'BoardType'
     Integer specifying the type of emulated board (not available in
     xscpu64).  (0: C64, 1: MAX)

'IECReset'
     Integer specifying if the IEC bus resets when the CPU resets.  (0:
     No, 1: Yes)

'MemoryHack'
     Integer specifying what memory expansion hack is active.  (0: None,
     1: C64 256K, 2: PLUS60K, 3: PLUS256K)

'PLUS60Kfilename'
     String specifying the filename of the PLUS60K RAM image.

'PLUS60Kbase'
     Integer that specifies the base address of the PLUS60K RAM
     expansion.  (0xD040, 0xD100)

'PLUS256Kfilename'
     String specifying the filename of the PLUS256K RAM image.

'C64_256Kfilename'
     String specifying the filename of the 256K RAM image.

'C64_256Kbase'
     Integer that specifies the base address of the 256K RAM expansion.
     (0xDE00/0xDE80/0xDF00/0xDF80)

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine
     (0: PAL, 1: Old PAL, 2: NTSC, 3: Old NTSC, 4: PAL-N).

'CPMCart'
     Boolean that specifies if a CP/M cartridge is attached.

'TapecartEnabled'
     Boolean that specifies if a tapecart is attached.

'TapecartUpdateTCRT'
     Boolean, if true write back the tapecart memory contents back to
     the .tcrt file when detaching the image or quitting the emulator.

'TapecartOptimizeTCRT'
     Boolean, when set to true the .tcrt image will be optimized by
     leaving out blank space at the end when saving.

'TapecartLogLevel'
     Integer that specifies the tapecart emulation log level.  At the
     default level of 0, only errors are logged.  Level 1 additionally
     logs mode changes and command bytes and level 2 adds details of
     command parameters.

'TapecartTCRTFilename'
     String specifying the file name of the current tapecart image.

7.1.8.2 C64 command-line options
................................

'-gluelogictype <type>'
     Set glue logic type ('GlueLogic').  (0: discrete, 1: 252535-01)

'-iecreset <value>'
     Set IEC reset bahaviour ('IECReset').  (0: Do not reset with CPU
     reset, 1: Reset with CPU reset)

'-memoryexphack <device>'
     Set active memory expansion hack ('MemoryHack').  (0: None, 1: C64
     256K, 2: PLUS60K, 3: PLUS256K)

'-plus60kimage <name>'
     Specify name of PLUS60K image ('PLUS60Kfilename').

'-plus60kbase <base address>'
     Base address of the PLUS60K expansion ('PLUS60Kbase').
     (0xD040/0xD100)

'-plus256kimage <name>'
     Specify name of PLUS256K image ('PLUS256Kfilename').

'-256kimage <name>'
     Specify name of 256K image ('C64_256Kfilename').

'-256kbase <base address>'
     Base address of the 256K expansion ('C64_256Kbase').  (0xDE00,
     0xDE80, 0xDF00, 0xDF80)

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

'-ntscold'
     Use old NTSC sync factor ('MachineVideoStandard=3').

'-paln'
     Use PAL-N sync factor ('MachineVideoStandard=4').

'-model <Model>'
     Set the C64 model ('VICIIModel', 'CIA1Model', 'CIA2Model',
     'GlueLogic', 'BoardType', 'IECReset', 'KernalName', 'ChargenName',
     'SidEngine', 'SidModel') (x64 and x64sc only).  (c64/c64c/c64old,
     ntsc/newntsc/oldntsc, drean, jap, c64gs, pet64, ultimax)

'-cpmcart'
'+cpmcart'
     Enable/disable the CP/M cartridge ('CPMCart=1', 'CPMCart=0')

'-tapecart'
'+tapecart'
     Enable/disable tapecart emulation ('TapecartEnabled=1',
     'TapecartEnabled=0')

'-tcrt <name>'
     Specify tapecart .tcrt image filename ('TapecartTCRTFilename')

'-tapecartupdatetcrt'
'+tapecartupdatetcrt'
     Specify if the attached .tcrt image should be updated when the
     emulated tapecart is written to.  ('TapecartUpdateTCRT=1',
     'TapecartUpdateTCRT=0')

'-tapecartoptimizetcrt'
'+tapecartoptimizetcrt'
     Specify if writing to a .tcrt file should optimize its size by
     leaving out blank space at the end.  ('TapecartOptimizeTCRT=1',
     'TapecartOptimizeTCRT=0')

'-tapecartloglevel <number>'
     Specify the tapecart log level.  The default level of 0 only logs
     errors.  Level 1 additionally logs mode changes and command bytes
     and level 2 adds details of command parameters.


File: vice.info,  Node: C128-specific,  Next: C64DTV-specific,  Prev: C64/128-specific,  Up: Machine-specific features

7.2 C128-specific commands and settings
=======================================

7.2.1 VDC settings
------------------

7.2.1.1 VDC resources
.....................

'VDC64KB'
     Boolean to enabled/disable full 64k video ram.

'VDCRevision'
     Integer specifying the VDC hardware revision (0: Rev 0, 1: Rev 1,
     2: Rev 2).

'VDCVideoCache'
     Boolean specifying whether the video cache is turned on.

'VDCDoubleSize'
     Boolean specifying whether double-size mode is turned on.

'VDCDoubleScan'
     Boolean specifying whether double-scan mode is turned on.

'VDCStretchVertical'
     Boolean specifying whether vertical stretching is turned on.

'VDCPaletteFile'
     String specifying the name of the palette file being used.  The
     '.vpl' extension is optional.

'VDCExternalPalette'
     Boolean specifying whether to use external palette file or not.

'VDCColorSaturation'
     Integer specifying saturation of internal calculated palette.
     (0..2000)

'VDCColorContrast'
     Integer specifying contrast of internal calculated palette.
     (0..2000)

'VDCColorBrightness'
     Integer specifying brightness of internal calculated palette.
     (0..2000)

'VDCColorGamma'
     Integer specifying gamma of internal calculated palette.  (0..4000)

'VDCColorTint'
     Integer specifying tint of internal calculated palette.  (0..2000)

'VDCPALScanLineShade'
     Integer specifying amount of scan line shading for the CRT
     emulation.  (0..1000)

'VDCPALBlur'
     Integer specifying amount of horizontal blur for the CRT emulation.
     (0..1000)

'VDCPALOddLinePhase'
     Integer specifying phase for color carrier in odd lines.  (0..2000)

'VDCPALOddLineOffset'
     Integer specifying phase offset for color carrier in odd lines.
     (0..2000)

'VDCAudioLeak'
     Boolean specifying whether to enable/disable video to audio leak
     emulation.

'VDCFilter'
     Integer specifying rendering filter (0: None, 1: CRT emulation, 2:
     Scale2x)

7.2.1.2 VDC command-line options
................................

'-VDCvcache'
'+VDCvcache'
     Enable/disable the video cache ('VDCVideoCache=1',
     'VDCVideoCache=0').

'-VDCdsize'
'+VDCdsize'
     Enable/disable double size ('VDCDoubleSize=1', 'VDCDoubleSize=0').

'-VDCstretchvertical'
'+VDCstretchvertical'
     Enable/Disable vertical stretching ('VDCStretchVertical=1',
     'VDCStretchVertical=0').

'-VDCdscan'
'+VDCdscan'
     Enable/disable double scan ('VDCDoubleScan=1', 'VDCDoubleScan=0').

'-VDCintpal'
     Use an internal calculated palette ('VDCExternalPalette=0').

'-VDCextpal'
     Use an external palette (file) ('VDCExternalPalette=1').

'-VDCpalette <name>'
     Specify name of file of external palette ('VDCPaletteFile').

'-VDC16KB'
     Set the VDC memory size to 16KB ('VDC64KB=0').

'-VDC64KB'
     Set the VDC memory size to 64KB ('VDC64KB=1').

'-VDCRevision <number>'
     Set VDC revision ('VDCRevision').  (0..2)

'-VDCsaturation <0-2000>'
     Set saturation of internal calculated palette
     ('VDCColorSaturation').

'-VDCcontrast <0-2000>'
     Set contrast of internal calculated palette ('VDCColorContrast').

'-VDCbrightness <0-2000>'
     Set brightness of internal calculated palette
     ('VDCColorBrightness').

'-VDCgamma <0-4000>'
     Set gamma of internal calculated palette ('VDCColorGamma').

'-VDCtint <0-2000>'
     Set tint of internal calculated palette ('VDCColorTint').

'-VDCoddlinesphase <0-2000>'
     Set phase for color carrier in odd lines ('VDCPALOddLinePhase').

'-VDCoddlinesoffset <0-2000>'
     Set phase offset for color carrier in odd lines
     ('VDCPALOddLineOffset').

'-VDCcrtblur <0-1000>'
     Amount of horizontal blur for the CRT emulation ('VDCPALBlur').

'-VDCcrtscanlineshade <0-1000>'
     Amount of scan line shading for the CRT emulation
     ('VDCPALScanLineShade').

'-VDCaudioleak'
'+VDCaudioleak'
     Enable/disable video to audio leak emulation ('VDCAudioLeak=1',
     'VDCAudioLeak=0').

'-VDCfilter <Mode>'
     Select rendering filter ('VDCFilter').  (0: None, 1: CRT emulation,
     2: Scale2x)

7.2.2 C128 system ROM settings
------------------------------

7.2.2.1 C128 system ROM resources
.................................

'ChargenIntName'
     String specifying the filename of the international character
     generator ROM image.

'ChargenDEName'
     String specifying the filename of the German character generator
     ROM image.

'ChargenFRName'
     String specifying the filename of the French character generator
     ROM image.

'ChargenSEName'
     String specifying the filename of the Swedish character generator
     ROM image.

'ChargenCHName'
     String specifying the filename of the Swiss character generator ROM
     image.

'ChargenNOName'
     String specifying the filename of the Norwegian character generator
     ROM image.

'KernalIntName'
     String specifying the filename of the international Kernal ROM
     image.

'KernalDEName'
     String specifying the filename of the German Kernal ROM image.

'KernalFIName'
     String specifying the filename of the Finnish Kernal ROM image.

'KernalFRName'
     String specifying the filename of the French Kernal ROM image.

'KernalITName'
     String specifying the filename of the Italian Kernal ROM image.

'KernalNOName'
     String specifying the filename of the Norwegian Kernal ROM image.

'KernalSEName'
     String specifying the filename of the Swedish Kernal ROM image.

'KernalCHName'
     String specifying the filename of the Swiss Kernal ROM image.

'BasicLoName'
'BasicHiName'
     Strings specifying the filename of the Basic ROM images.

'Kernal64Name'
     String specifying the filename of the C64 Kernal ROM image.

'Basic64Name'
     String specifying the filename of the C64 Basic ROM image.

'InternalFunctionROM'
     Integer specifying the internal function ROM type (0: None, 1: ROM,
     2: RAM, 3: RTC).

'InternalFunctionName'
     String specifying the filename of the ROM image for the internal
     function ROM.

'InternalFunctionROMRTCSave'
     Boolean to enable/disable the saving of the Internal Function RTC
     data when changed.

'ExternalFunctionROM'
     Integer specifying the external function ROM type (0: None, 1: ROM,
     2: RAM, 3: RTC)

'ExternalFunctionName'
     String specifying the filename of the ROM image for the external
     function ROM.

'ExternalFunctionROMRTCSave'
     Boolean to enable/disable the saving of the External Function RTC
     data when changed.

7.2.2.2 C128 system ROM command-line options
............................................

'-basic64 <name>'
     Specify name of C64 mode BASIC ROM image ('Basic64Name').

'-kernal64 <name>'
     Specify name of C64 mode Kernal ROM image ('Kernal64Name').

'-basiclo <name>'
     Specify name of BASIC ROM image (lower part) ('BasicLoName').

'-basichi <name>'
     Specify name of BASIC ROM image (higher part) ('BasicHiName').

'-kernal <name>'
     Specify name of international Kernal ROM image ('KernalIntName').

'-kernalde <name>'
     Specify name of German Kernal ROM image ('KernalDEName').

'-kernalfi <name>'
     Specify name of Finnish Kernal ROM image ('KernalFIName').

'-kernalfr <name>'
     Specify name of French Kernal ROM image ('KernalFRName').

'-kernalit <name>'
     Specify name of Italian Kernal ROM image ('KernalITName').

'-kernalno <name>'
     Specify name of Norwegian Kernal ROM image ('KernalNOName').

'-kernalse <name>'
     Specify name of Swedish Kernal ROM image ('KernalSEName').

'-kernalch <name>'
     Specify name of Swiss Kernal ROM image ('KernalCHName').

'-chargen <name>'
     Specify name of international character generator ROM image
     ('ChargenIntName').

'-chargde <name>'
     Specify name of German character generator ROM image
     ('ChargenDEName').

'-chargfr <name>'
     Specify name of French character generator ROM image
     ('ChargenFRName').

'-chargse <name>'
     Specify name of Swedish character generator ROM image
     ('ChargenSEName').

'-chargch <name>'
     Specify name of Swiss character generator ROM image
     ('ChargenCHName').

'-chargno <name>'
     Specify name of Norwegian character generator ROM image
     ('ChargenNOName').

'-intfunc <type>'
     Set the internal Function ROM type ('InternalFunctionROM').  (0:
     None, 1: ROM, 2: RAM, 3: RTC)

'-intfrom <name>'
     Specify name of internal Function ROM image
     ('InternalFunctionName').

'-intfuncrtcsave'
'+intfuncrtcsave'
     Enable/disable the saving of the Internal Function RTC data when
     changed ('InternalFunctionROMRTCSave=1',
     'InternalFunctionROMRTCSave=0').

'-extfunc <type>'
     Set the external Function ROM type ('ExternalFunctionROM').  (0:
     None, 1: ROM, 2: RAM, 3: RTC)

'-extfrom <name>'
     Specify name of external Function ROM image
     ('ExternalFunctionName').

'-extfuncrtcsave'
'+extfuncrtcsave'
     Enable/disable the saving of the External Function RTC data when
     changed ('ExternalFunctionROMRTCSave=1',
     'ExternalFunctionROMRTCSave=0').

7.2.3 C128 settings
-------------------

7.2.3.1 C128 resources
......................

'C128ColumnKey'
     Boolean specifying the status of the 40/80 columns key.  (0: Not
     pressed, 1: Pressed)

'Go64Mode'
     Boolean, if true enter C64 mode on reset.

'C128FullBanks'
     Boolean to enable/disable RAM banks 2 and 3.

'MachineType'
     Integer specifying the C128 machine type.  (0: International, 1:
     Finnish, 2: French, 3: German, 4: Italian, 5: Norwegian, 6:
     Swedish)

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine
     (1: PAL, 2: NTSC).

7.2.3.2 C128 command-line options
.................................

'-40col'
     Activate 40 column mode ('C128ColumnKey=1').

'-80col'
     Activate 80 column mode ('C128ColumnKey=0').

'-go64'
     Always switch to C64 mode on reset ('Go64Mode=1'.
'+go64'
     Always switch to C128 mode on reset ('Go64Mode=0'.

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

'-model <Model>'
     Set the C128 model ('MachineVideoStandard', 'CIA1Model',
     'CIA2Model', 'VICIINewLuminances', 'VDCRevision', 'VDC64KB',
     'SidEngine', 'SidModel').  (c128/c128dcr, pal/ntsc)

'-c128fullbanks'
'+c128fullbanks'
     Enable/disable RAM banks 2 and 3 ('C128FullBanks=1',
     'C128FullBanks=0').

'-machinetype <Type>'
     Set the C128 machine type ('MachineType').  (0: International, 1:
     Finnish, 2: French, 3: German, 4: Italian, 5: Norwegian, 6:
     Swedish)


File: vice.info,  Node: C64DTV-specific,  Next: SCPU64-specific,  Prev: C128-specific,  Up: Machine-specific features

7.3 C64DTV-specific commands and settings
=========================================

This section lists the settings and commands that are C64DTV specific
and thus are not present in the other emulators.

* Menu:

* C64DTV ROM image::
* DTV revision::
* LumaFix::
* Userport::
* Debug::
* Monitor DTV features::


File: vice.info,  Node: C64DTV ROM image,  Next: DTV revision,  Prev: C64DTV-specific,  Up: C64DTV-specific

7.3.1 C64DTV ROM image
----------------------

The DTV has a 2MB Flash chip which contains the kernal, basic and
character set ROMs along with other data, such as games in the case of
the original C64DTV ROM.

The image file is a dump of the flash chip.  It is exactly 2MB (2097152
bytes).

If you do not have a suitable image file, an image using the C64 kernal,
basic and charset is automatically created.

If writing to the C64DTV ROM is enabled, the image file is rewritten
with the current data when exiting x64dtv.

Note that x64dtv tries to load the image file from the C64DTV directory
first, and if it isn't found there, x64dtv tries to load it from the
current directory.  If you do not have 'dtvrom.bin' in your C64DTV
directory and writing to DTV ROM is enabled, the 'dtvrom.bin' file is
created to the current directory.

NOTE: The original C64DTV ROM has somewhat distorted colors, normally
you should use a patched rom.

'-c64dtvromimage <name>'
     Specify filename of the C64DTV ROM image ('c64dtvromfilename').

'-c64dtvromrw'
'+c64dtvromrw'
     Enable/disable writing to C64DTV ROM image ('c64dtvromrw=1',
     'c64dtvromrw=0').

The trueflashfs option is analogous to True drive emulation.  If
disabled, any file access to the flash filesystem (device 1) will go to
the local file system instead.

'-trueflashfs'
'+trueflashfs'
     Enable/disable true hardware flash file system ('FlashTrueFS=1',
     'FlashTrueFS=0').

'-fsflash <name>'
     Specify the directory for the flash file system device
     ('FSFlashDir').


File: vice.info,  Node: DTV revision,  Next: LumaFix,  Prev: C64DTV ROM image,  Up: C64DTV-specific

7.3.2 DTV revision
------------------

The DTV revision 2 has a bug in the Blitter.  Using revision 3 is
recommended.  Emulation of DTV revision 2 including Blitter bug is
intended for testing DTV software.

'-dtvrev <revision>'
     Specify DTV revision ('DtvRevision').  (2: DTV2, 3: DTV3)


File: vice.info,  Node: LumaFix,  Next: Userport,  Prev: DTV revision,  Up: C64DTV-specific

7.3.3 LumaFix
-------------

The PAL C64DTVs have wrong resistors in the video output circuit, which
causes incorrect luminances.  Several hardware solutions ("LumaFixes")
have been developed to fix this flaw.

The fixed video output is emulated by selecting "New Luminances".  The
unmodified C64DTV video output can be emulated with "Old Luminances".

The default setting is "New Luminances".


File: vice.info,  Node: Userport,  Next: Debug,  Prev: LumaFix,  Up: C64DTV-specific

7.3.4 Userport
--------------

The C64DTV userport emulation currently supports three devices: Hummer
ADC, userport joystick and PS/2 mouse.

The joystick that controls either the Hummer ADC or userport joystick
can be selected using the same parameter or menu option.

While using the Hummer ADC, joystick UP and DOWN are mapped to the
Hummer buttons A and B respectively.  LEFT and RIGHT set the ADCs output
to 0 and 255.  Centering the joystick results in the ADC value of 128.

Currently the Hummer ADC and userport joystick are mutually exclusive.
This means that enabling one disables the other.  PS/2 mouse emulation
can be used simultaneously with either Hummer ADC or userport joystick.

'-hummeradc'
'+hummeradc'
     Enable/Disable Hummer ADC ('HummerADC=1', 'HummerADC=0').

'-ps2mouse'
'+ps2mouse'
     Enable/disable PS/2 mouse on userport ('ps2mouse=1', 'ps2mouse=0').


File: vice.info,  Node: Debug,  Next: Monitor DTV features,  Prev: Userport,  Up: C64DTV-specific

7.3.5 Debug
-----------

Debugging information on Blitter, DMA and Flash can be enabled with
command line parameters.  This can be useful for DTV software
development.

'-dtvblitterlog'
'+dtvblitterlog'
     Enable or disable DTV Blitter log

'-dtvdmalog'
'+dtvdmalog'
     Enable or disable DTV DMA log

'-dtvflashlog'
'+dtvflashlog'
     Enable or disable DTV Flash log


File: vice.info,  Node: Monitor DTV features,  Prev: Debug,  Up: C64DTV-specific

7.3.6 Monitor DTV features
--------------------------

Currently the registers A, Y and X are registers R0, R1 and R2
regardless of the mapping, which can be seen and modified via the
registers ACM and XYM.

The monitor can access all 2MB of RAM and 2MB of Flash, but only 64 kB
at a time.  The 64kB bank can be selected with "bank ram00".."ram1f" for
RAM and "bank rom00".."rom1f" for Flash.

The "load" command can load large files (>64kB) correctly if the bank is
set to "ramXX", where XX is the starting bank (usually "bank00").

7.3.7 DTV resources
-------------------

'DtvRevision'
     Integer specifying the emulated DTV revision.  (2: DTV2, 3: DTV3)

'ChargenName'
     String specifying the name of the character generator ROM (default
     'chargen').

'KernalName'
     String specifying the name of the Kernal ROM (default 'kernal').

'BasicName'
     String specifying the name of the Basic ROM (default 'basic').

'c64dtvromfilename'
     String specifying the filename of the DTV Flash ROM image.

'c64dtvromrw'
     Boolean that specifies whether the emulated Flash ROM is writeable.

'FSFlashDir'
     String specifying the working directory for the flash file system.

'FlashTrueFS'
     Boolean, enables true hardware flash file system.

'HummerADC'
     Boolean to enable/disable the Hummer ADC emulation.

'ps2mouse'
     Boolean to enable/disable PS/2 Mouse emulation.

'DtvBlitterLog'
     Boolean, enables Blitter logging.
'DtvDMALog'
     Boolean, enables DMA logging.
'DtvFlashLog'
     Boolean, enables Flash ROM logging.

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine.
     (1: PAL, 2: NTSC)

7.3.8 DTV command-line options
------------------------------

'-model <Model>'
     Set the DTV model ('MachineVideoStandard', 'DtvRevision',
     'HummerADC').  (v2/v2pal/v2ntsc, v3/v3pal/v3ntsc, hummer)

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

'-chargen <name>'
     Specify filename of the character generator ROM file
     ('ChargenName').

'-kernal <name>'
     Specify filename of the Kernal ROM file ('KernalName').

'-basic <name>'
     Specify the filename of the Basic ROM file ('BasicName').


File: vice.info,  Node: SCPU64-specific,  Next: VIC20-specific,  Prev: C64DTV-specific,  Up: Machine-specific features

7.4 SCPU64-specific commands and settings
=========================================

7.4.1 SCPU64 resources
----------------------

'ChargenName'
     String specifying the name of the character generator ROM (default
     'chargen').

'SCPU64Name'
     String specifying the name of the SCPU64 ROM (default 'scpu64').

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine
     (4: PAL-N, 3: Old NTSC, 1: PAL, 2: NTSC).

'IECReset'
     Integer specifying if the IEC bus resets when the CPU resets.  (0:
     No, 1: Yes)

'BurstMod'
     Integer specifying the kind of Burst-Mode modification.  (0: None,
     1: CIA-1, 2: CIA-2)

'SIMMSize'
     Integer specifying the size of the SIMM RAM. (0, 1, 4, 8, 16)

'JiffySwitch'
     Boolean to enable/disable the jiffy switch.

'SpeedSwitch'
     Boolean to enable/disable the speed switch.

'GlueLogic'
     Integer specifying the type of emulated glue-logic.  (0: discrete,
     1: custom IC)

7.4.2 SCPU64 command-line options
---------------------------------

'-chargen <name>'
     Specify filename of the character generator ROM file
     ('ChargenName').

'-scpu64 <Name>'
     Specify filename of the SCPU64 ROM file ('SCPU64Name').

'-model <Model>'
     Set the C64 model ('MachineVideoStandard', 'CIA1Model',
     'CIA2Model', 'VICIINewLuminances', 'IECReset', 'ChargenName',
     'SidEngine', 'SidModel').  (c64/c64c/c64old, ntsc/newntsc/oldntsc,
     drean, jap, c64gs)

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

'-ntscold'
     Use old NTSC sync factor ('MachineVideoStandard=3').

'-paln'
     Use PAL-N sync factor ('MachineVideoStandard=4').

'-iecreset <value>'
     Set IEC reset bahaviour ('IECReset').  (0: Do not reset with CPU
     reset, 1: Reset with CPU reset)

'-burstmod <value>'
     Set the kind of burst modification.  This emulates the fast serial
     bus connection as described at
     <http://www.cs.tut.fi/~albert/Dev/burst/>, with the wire to the
     tape port cut ('BurstMod').  (0: None, 1: CIA-1, 2: CIA-2)

'-simmsize <number>'
     Set the size of the SIMM RAM ('SIMMSize').  (0, 1, 4, 8, 16)

'-jiffyswitch'
'+jiffyswitch'
     Enable/disable the jiffy switch ('JiffySwitch=1', 'JiffySwitch=0').

'-speedswitch'
'+speedswitch'
     Enable/disable the speed switch ('SpeedSwitch=1', 'SpeedSwitch=0').

'-gluelogictype <type>'
     Set glue logic type ('GlueLogic').  (0: discrete, 1: 252535-01)


File: vice.info,  Node: VIC20-specific,  Next: PLUS4-specific,  Prev: SCPU64-specific,  Up: Machine-specific features

7.5 VIC20-specific commands and settings
========================================

This section lists the settings and commands that are VIC20-specific and
thus are not present in the other emulators.

* Menu:

* VIC20 cartridges::
* VIC20 memory expansions::
* VIC20 system ROM settings::


File: vice.info,  Node: VIC20 cartridges,  Next: VIC20 memory expansions,  Prev: VIC20-specific,  Up: VIC20-specific

7.5.1 Using cartridge images
----------------------------

As with the C64 (*note C64 cartridges::), it is possible to attach
several types of cartridge images:

   * 4 or 8 Kbyte cartridges located at $2000;
   * 4 or 8 Kbyte cartridges located at $4000;
   * 4 or 8 Kbyte cartridges located at $6000;
   * 4 or 8 Kbyte cartridges located at $A000;
   * 4 Kbyte cartridges located at $B000.

This can all be done via the "Attach cartridge image..." command in the
left-button menu.  It is also possible to let xvic "guess" the type of
cartridge using "Smart-attach cartridge image...".

Notice that several cartridges are actually made up of two pieces (and
two files), that need to be loaded separately at different addresses.
In that case, you have to know the addresses (which are usually
specified in the file name) and use the "attach" command twice.

A special kind of cartridge file is where the two files mentioned above
are concatenated (with removing the two byte load address of the second
image) into one 16k image.  There are only few of those images, though.
Vice can now attach such concatenated files at the start address $2000,
$4000, and $6000.  The second half of such an image is moved to the
memory block following the first block.  If you encounter 16k images
that have the second half at eg $A000 you can split the image into two
halfs (i.e.  one 8194 byte and one 8192 byte, because the first has the
load address) and attach both files separately.

One cartridge that is currently only partially supported here is the
VIC1112 IEEE488 interface.  You have to load the ROM as a cartridge, but
you also have to enable the IEEE488 hardware by menu.

7.5.2 VIC20 cartridge settings
------------------------------

7.5.2.1 VIC20 cartridge resources
.................................

'CartridgeReset'
     Boolean specifying whether the machine should be reset when a
     cartridge is changed.

'CartridgeType'
     Integer specifying the type of cartridge emulated.

     The following cartridge types are valid:

        * - 1: None
        * 1: Generic
        * 2: Megacart
        * 3: Final Expansion
        * 4: Vic Flash Plugin
        * 5: IEEE-4888
        * 6: SIDCart
        * 7: Ultimem
        * 8: IO ram cart (IO2)
        * 9: IO ram cart (IO3)
        * 10: BehrBonz
        * 0x8000: Auto Detect
        * 0x8002: 4KB at $2000-$2FFF
        * 0x8003: 8KB at $2000-$3FFF
        * 0x8004: 4KB at $6000-$6FFF
        * 0x8005: 8KB at $6000-$7FFF
        * 0x8006: 4KB at $A000-$AFFF
        * 0x8007: 8KB at $A000-$BFFF
        * 0x8008: 4KB at $B000-$BFFF
        * 0x8009: 8KB at $4000-$5FFF
        * 0x800A: 4KB at $4000-$4FFF
        * 0x8013: 16KB at $2000-$5FFF
        * 0x8015: 16KB at $6000-$9FFF
        * 0x8019: 16KB at $4000-$7FFF

'CartridgeFile'
     String specifying the filename of the image for the current
     cartridge.

'IOCollisionHandling'
     Integer specifying the way the I/O collisions should be handled.
     (0: error message and detach all involved carts, 1: error message
     and detach last attached involved carts, 2: warning in log and
     'AND' the valid return values)

'GenericCartridgeFile2000'
'GenericCartridgeFile4000'
'GenericCartridgeFile6000'
'GenericCartridgeFileA000'
'GenericCartridgeFileB000'
     Strings specifying the name of the respective cartridge ROM images.

'FinalExpansionWriteBack'
     Boolean, if true write back the Flash ROM image file automatically,
     incase the contents changed, when detaching or quitting the
     emulator.

'VicFlashPluginWriteBack'
     Boolean, if true write back the Flash ROM image file automatically,
     incase the contents changed, when detaching or quitting the
     emulator.

'MegaCartNvRAMfilename'
     String specifying the filename of the MegaCart NvRAM image.

'MegaCartNvRAMWriteBack'
     Boolean, if true write back the NvRAM image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.

'UltiMemWriteBack'
     Boolean, if true write back the Flash ROM image file automatically,
     incase the contents changed, when detaching or quitting the
     emulator.

'IO2RAM'
     Boolean specifying whether the I/O-2 ($9800-$9BFF) RAM cartridge
     should be emulated or not.

'IO3RAM'
     Boolean specifying whether the I/O-3 ($9C00-$9FFF) RAM cartridge
     should be emulated or not.

'VFLImod'
     Boolean specifying whether the VFLI modification should be enabled.

'SFXSoundExpander'
     Boolean specifying whether the SFX Sound Expander should be
     emulated or not.

'SFXSoundExpanderChip'
     Integer specifying which YM chip is emulated.  (3526, 3812)

'SFXSoundExpanderIOSwap'
     Boolean, swap io mapping (map cart I/O to VIC20 I/O-2) or don't
     swap io mapping (map cart I/O to VIC20 I/O-3).

'SFXSoundSampler'
     Boolean specifying whether the SFX Sound Sampler should be emulated
     or not.

'SFXSoundSamplerIOSwap'
     Boolean, swap io mapping (map cart I/O to VIC20 I/O-2) or don't
     swap io mapping (map cart I/O to VIC20 I/O-3).

'GEORAMfilename'
     String specifying the filename of the GEORAM image.

'GEORAM'
     Boolean specifying whether the GEO-RAM cartridge (using the
     MasC=uerade cartridge adapter) should be emulated or not.

'GEORAMsize'
     Integer specifying the size of the emulated GEO-RAM in KB. (64,
     128, 256, 512, 1024, 2048, 4096).

'GEORAMImageWrite'
     Boolean, if true write back the GEO-RAM image file automatically,
     incase the RAM contents changed, when detaching or quitting the
     emulator.

'GEORAMIOSwap'
     Boolean specifying whether the io mapping should be swapped (map
     cart I/O-1 to VIC20 I/O-3 and cart I/O-2 to VIC20 I/O-2) or not
     (map cart I/O-2 to VIC20 I/O-2 and cart I/O-2 to VIC20 I/O-3).

'SidCart'
     Boolean specifying whether SID-Cart emulation is enabled or not.

'SidAddress'
     Integer that specifies the base address of the emulated SID chip.
     (0x9800, 0x9C00)

'SidClock'
     Integer specifying the clock rate used for the emulated SID chip
     (0: C64, 1: VIC20)

'DIGIMAX'
     Boolean specifying whether the DigiMAX cartridge (using the
     MasC=uerade cartridge adapter) should be emulated or not.

'DIGIMAXbase'
     Integer specifying the DigiMAX base address.  (0x9800, 0x9820,
     0x9840, 0x9860, 0x9880, 0x98A0, 0x98C0, 0x98E0, 0x9C00, 0x9C20,
     0x9C40, 0x9C60, 0x9C80, 0x9CA0, 0x9CC0, 0x9CE0)

'DS12C887RTC'
     Boolean specifying whether the DS12C887 RTC cartridge (using the
     MasC=uerade cartridge adapter) should be emulated or not.

'DS12C887RTCbase'
     Integer specifying the DS12C887 RTC base address.  (0x9800, 0x9C00)

'DS12C887RTCRunMode'
     Boolean specifying whether the DS12C887 RTC cartridge starts out
     running or halted.  (0: halted, 1: running)

'DS12C887RTCSave'
     Boolean specifying whether the DS12C887 RTC data should be saved
     when changed or not.

'IEEE488'
     Boolean specifying whether the IEEE488 interface should be emulated
     or not.

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine
     (1: PAL, 2: NTSC).

7.5.2.2 VIC20 cartridge command-line options
............................................

'-iocollision <method>'
     Select the way the I/O collisions should be handled
     ('IOCollisionHandling').  (0: error message and detach all involved
     carts, 1: error message and detach last attached involved carts, 2:
     warning in log and 'AND' the valid return values

'-cartreset'
'+cartreset'
     Do/don't reset machine if a cartridge is attached or detached
     ('CartridgeReset=1', 'CartridgeReset').

'-cart2 <name>'
     Specify 4/8/16K extension ROM name at $2000
'-cart4 <name>'
     Specify 4/8/16K extension ROM name at $4000
'-cart6 <name>'
     Specify 4/8/16K extension ROM name at $6000
'-cartA <name>'
     Specify 4/8K extension ROM name at $A000
'-cartB <name>'
     Specify 4K extension ROM name at $B000
'-cartgeneric <name>'
     Specify generic extension ROM name

'-cartbb <name>'
     Specify Behr-Bonz extension ROM name

'-cartmega <name>'
     Specify Mega-Cart extension ROM name

'-mcnvramfile <name>'
     Set Mega-Cart NvRAM filename ('MegaCartNvRAMfilename').

'-mcnvramwriteback'
'+mcnvramwriteback'
     Enable/Disable Mega-Cart NvRAM writeback
     ('MegaCartNvRAMWriteBack=1', 'MegaCartNvRAMWriteBack=0').

'-cartfe <name>'
     Specify Final Expansion extension ROM name

'-fewriteback'
'+fewriteback'
     Enable/disable Final Expansion write back to ROM file
     ('FinalExpansionWriteBack=1', 'FinalExpansionWriteBack=0').

'-cartfp <name>'
     Specify Vic Flash Plugin extension ROM name

'-fpwriteback'
'+fpwriteback'
     Enable/Disable Vic Flash Plugin write back to ROM file
     ('VicFlashPluginWriteBack=1', 'VicFlashPluginWriteBack=0').

'-ultimem <name>'
     Specify Ultimem extension ROM name

'-umwriteback'
'+umwriteback'
     Enable/disable UltiMem write back to ROM file
     ('UltiMemWriteBack=1', 'UltiMemWriteBack=0').

'-io2ram'
'+io2ram'
     Enable/disable the I/O-2 ($9800-$9BFF) RAM cartridge ('IO2RAM=1',
     'IO2RAM=0').

'-io3ram'
'+io3ram'
     Enable/disable the I/O-3 ($9C00-$9FFF) RAM cartridge ('IO3RAM=1',
     'IO3RAM=0').

'-ieee488'
'+ieee488'
     Enable/disable VIC-1112 IEEE488 interface ('IEEE488=1',
     'IEEE488=0').

'-vflimod'
'+vflimod'
     Enable/disable VIC-20 VFLI modification ('VFLImod=1', 'VFLImod=0')

'-sidcart'
'+sidcart'
     Enable/disable SID Cartridge ('SidCart=1', 'SidCart=0').

'-sidcartaddress <address>'
     Specify address of the SID Cartridge ('SidAddress').  (0x9800,
     0x9C00)

'-sidcartclock <clock>'
     Specify clock of the SID Cartridge ('SidClock').  (0: C64, 1:
     VIC20)

'-cs8900ioif <name>'
     Set the system ethernet interface for Ethernet Cartridge emulation

'-ethernetcart'
'+ethernetcart'
     Disable/Enable the Ethernet Cartridge (TFE/RR-Net/64NIC/FB-NET)

'-ethernetcartmode <Mode>'
     Mode of Ethernet Cartridge (0: TFE, 1: RR-Net)

'-ethernetcartbase <Base address>'
     Base address of the Ethernet Cartridge.  (0x9800, 0x9810, 0x9820,
     0x9830, 0x9840, 0x9850, 0x9860, 0x9870, 0x9880, 0x9890, 0x98A0,
     0x98B0, 0x98C0, 0x98D0, 0x98E0, 0x98F0, 0x9C00, 0x9C10, 0x9C20,
     0x9C30, 0x9C40, 0x9C50, 0x9C60, 0x9C70, 0x9C80, 0x9C90, 0x9CA0,
     0x9CB0, 0x9CC0, 0x9CD0, 0x9CE0, 0x9CF0)

'-tfe'
     Enable the Ethernet Cartridge in TFE ("The Final Ethernet")
     compatible mode and set default I/O address

'-rrnet'
     Enable the Ethernet Cartridge in RR-Net compatible mode and set
     default I/O address

'-digimax'
'+digimax'
     Enable/disable the DigiMAX cartridge (using the MasC=uerade
     cartridge adapter) ('DIGIMAX=1', 'DIGIMAX=0').

'-digimaxbase <base address>'
     Base address of the DigiMAX cartridge ('DIGIMAXbase').  (0x9800,
     0x9820, 0x9840, 0x9860, 0x9880, 0x98A0, 0x98C0, 0x98E0, 0x9C00,
     0x9C20, 0x9C40, 0x9C60, 0x9C80, 0x9CA0, 0x9CC0, 0x9CE0)

'-ds12c887rtc'
'+ds12c887rtc'
     Enable/disable the DS12C887 RTC cartridge (using the MasC=uerade
     cartridge adapter) ('DS12C887RTC=1', 'DS12C887RTC=0').

'-ds12c887rtcbase <base address>'
     Base address of the DS12C887 RTC cartridge ('DS12C887RTCbase').
     (0x9800, 0x9C00)

'-ds12c887rtchalted'
     Set the DS12C887 RTC oscillator to 'halted'
     ('DS12C887RTCRunMode=0').
'-ds12c887rtcrunning'
     Set the DS12C887 RTC oscillator to 'running'
     ('DS12C887RTCRunMode=1').

'-ds12c887rtcsave'
'+ds12c887rtcsave'
     Enable/disable saving of the DS12C887 RTC data when changed
     ('DS12C887RTCSave=1', 'DS12C887RTCSave=0').

'-sfxse'
'+sfxse'
     Enable/disable the SFX soundexpander cartridge (using the
     MasC=uerade cartridge adapter) ('SFXSoundExpander=1',
     'SFXSoundExpander=0').

'-sfxsetype <type>'
     Set YM chip type ('SFXSoundExpanderChip').  (3526, 3812)

'-sfxseioswap'
     Swap io mapping (map cart I/O to VIC20 I/O-2)
     ('SFXSoundExpanderIOSwap=1').
'+sfxseioswap'
     Swap io mapping (map cart I/O to VIC20 I/O-3)
     ('SFXSoundExpanderIOSwap=0').

'-sfxssioswap'
     Swap io mapping (map cart I/O to VIC20 I/O-2)
     ('SFXSoundSamplerIOSwap=1').
'+sfxssioswap'
     Don't swap io mapping (map cart I/O to VIC20 I/O-3)
     ('SFXSoundSamplerIOSwap=0').

'-sfxss'
'+sfxss'
     Enable/disable the SFX Sound Sampler cartridge
     ('SFXSoundSampler=1', 'SFXSoundSampler=0').

'-georamioswap'
     Swap the io mapping (map cart I/O-1 to VIC20 I/O-3 and cart I/O-2
     to VIC20 I/O-2) ('GEORAMIOSwap=1').
'+georamioswap'
     Do not swap the io mapping (map cart I/O-2 to VIC20 I/O-2 and cart
     I/O-2 to VIC20 I/O-3) ('GEORAMIOSwap=0').

'-georam'
'+georam'
     Enable/disable the GEORAM expansion unit (using the MasC=uerade
     cartridge adapter) ('GEORAM=1', 'GEORAM=0').

'-georamimage <name>'
     Specify name of GEORAM image ('GEORAMfilename').

'-georamimagerw'
'+georamimagerw'
     Allow/disallow writing to GEORAM image ('GEORAMImageWrite=1',
     'GEORAMImageWrite=0').

'-georamsize <size in KB>'
     Size of the GEORAM expansion unit ('GEORAMsize').  (64, 128, 256,
     512, 1024, 2048, 4096)

'-model <model>'
     Specify the VIC20 model you want to emulate
     ('MachineVideoStandard', 'RamBlock0', 'RamBlock1', 'RamBlock2',
     'RamBlock3' and 'RamBlock5').  (vic20/vic20pal/vic20ntsc, vic21)

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

7.5.3 VIC settings
------------------

7.5.3.1 VIC resources
.....................

'VICVideoCache'
     Boolean specifying whether the video cache is turned on.

'VICDoubleSize'
     Boolean specifying whether double-size mode is turned on.

'VICDoubleScan'
     Boolean specifying whether double-scan mode is turned on.

'VICPaletteFile'
     String specifying the name of the palette file being used.  The
     '.vpl' extension is optional.

'VICExternalPalette'
     Boolean specifying whether to use external palette file or not.

'VICColorSaturation'
     Integer specifying saturation of internal calculated palette.
     (0..2000)

'VICColorContrast'
     Integer specifying contrast of internal calculated palette,
     (0..2000)

'VICColorBrightness'
     Integer specifying brightness of internal calculated palette.
     (0..2000)

'VICColorGamma'
     Integer specifying gamma of internal calculated palette.  (0..4000)

'VICColorTint'
     Integer specifying tint of internal calculated palette.  (0..2000)

'VICPALScanLineShade'
     Integer specifying amount of scan line shading for the CRT
     emulation.  (0..1000)

'VICPALBlur'
     Integer specifying amount of horizontal blur for the CRT emulation.
     (0..1000)

'VICPALOddLinePhase'
     Integer specifying phase for color carrier in odd lines.  (0..2000)

'VICPALOddLineOffset'
     Integer specifying phase offset for color carrier in odd lines.
     (0..2000)

'VICAudioLeak'
     Boolean specifying whether to enable/disable video to audio leak
     emulation.

'VICFilter'
     Integer specifying the rendering filter.  (0: None, 1: CRT
     emulation, 2: Scale2x)

'VICBorderMode'
     Integer specifying border display mode (0: normal, 1: full, 2:
     debug, 3: none)

7.5.3.2 VIC command-line options
................................

'-VICvcache'
'+VICvcache'
     Enable/disable the video cache ('VICVideoCache=1',
     'VICVideoCache=0').

'-VICdsize'
'+VICdsize'
     Enable/disable the double size mode ('VICDoubleSize=1',
     'VICDoubleSize=0').

'-VICdscan'
'+VICdscan'
     Enable/disable the double scan mode ('VICDoubleScan=1',
     'VICDoubleScan=0').

'-VICfilter <Mode>'
     Select rendering filter ('VICFilter').  (0: None, 1: CRT emulation,
     2: Scale2x)

'-VICpalette NAME'
     Specify the name of the palette file ('VICPaletteFile').

'-VICintpal'
     Use an internal calculated palette ('VICExternalPalette=0').

'-VICextpal'
     Use an external palette (file) ('VICExternalPalette=1').

'-VICborders <mode>'
     Set VIC border display mode ('VICBorderMode').  (0: normal, 1:
     full, 2: debug, 3: none)

'-VICsaturation <0-2000>'
     Set saturation of internal calculated palette
     ('VICColorSaturation').

'-VICcontrast <0-2000>'
     Set contrast of internal calculated palette ('VICColorContrast').

'-VICbrightness <0-2000>'
     Set brightness of internal calculated palette
     ('VICColorBrightness').

'-VICgamma <0-4000>'
     Set gamma of internal calculated palette ('VICColorGamma').

'-VICtint <0-2000>'
     Set tint of internal calculated palette ('VICColorTint').

'-VICoddlinesphase <0-2000>'
     Set phase for color carrier in odd lines ('VICPALOddLinePhase').

'-VICoddlinesoffset <0-2000>'
     Set phase offset for color carrier in odd lines.
     ('VICPALOddLineOffset').

'-VICcrtblur <0-1000>'
     Amount of horizontal blur for the CRT emulation ('VICPALBlur').

'-VICcrtscanlineshade <0-1000>'
     Amount of scan line shading for the CRT emulation
     ('VICPALScanLineShade').

'-VICaudioleak'
'+VICaudioleak'
     Enable/disable video to audio leak emulation ('VICAudioLeak=1',
     'VICAudioLeak=0').


File: vice.info,  Node: VIC20 memory expansions,  Next: VIC20 system ROM settings,  Prev: VIC20 cartridges,  Up: VIC20-specific

7.5.4 Changing memory configuration
-----------------------------------

It is possible to change the VIC20 memory configuration in two ways: by
enabling and/or disabling certain individual memory blocks, or by
choosing one among a few typical memory configurations.  The former can
be done by modifying resource values directly or from the right-button
menu; the latter can only be done from the menu.

There are 5 RAM expansion blocks in the VIC20, numbered 0, 1, 2, 3 and
5:

   * block 0 (3 Kbytes at $0400-$0FFF);
   * block 1 (8 Kbytes at $2000-$3FFF);
   * block 2 (8 Kbytes at $4000-$5FFF);
   * block 3 (8 Kbytes at $6000-$7FFF);
   * block 5 (8 Kbytes at $A000-$BFFF).

These blocks are called "expansion blocks" because they are not present
a stock ("unexpanded") machine.  Each of them is associated to a boolean
'RamBlockX' resource (where 'X' is the block number) that specifies
whether the block is enabled or not.

There are also some common memory configurations you can select:

   * no RAM expansion blocks at all;
   * all RAM expansion blocks enabled;
   * 3K expansion (only block 0 is enabled);
   * 8K expansion (only block 1 is enabled);
   * 16K expansion (only blocks 1 and 2 are enabled);
   * 24K expansion (only blocks 1, 2 and 3 are enabled).

* Menu:

* VIC20 memconf resources::
* VIC20 memconf options::


File: vice.info,  Node: VIC20 memconf resources,  Next: VIC20 memconf options,  Prev: VIC20 memory expansions,  Up: VIC20 memory expansions

7.5.4.1 VIC20 memory configuration resources
............................................

'RAMBlock0'
'RAMBlock1'
'RAMBlock2'
'RAMBlock3'
'RAMBlock5'
     Booleans specifying whether RAM blocks 0, 1, 2, 3 and 5 must be
     enabled.


File: vice.info,  Node: VIC20 memconf options,  Prev: VIC20 memconf resources,  Up: VIC20 memory expansions

7.5.4.2 VIC20 memory configuration command-line options
.......................................................

'-memory <config>'
     Specify memory configuration.  It must be a comma-separated list of
     options, each of which can be one the following:

        * 'none' (no extension);
        * 'all' (all blocks);
        * '3k' (3k space in block 0);
        * '8k' (first 8k extension block);
        * '16k' (first and second 8k extension blocks);
        * '24k' (first, second and 3rd extension blocks);
        * '0', '1', '2', '3', '5' (memory in respective blocks);
        * '04', '20', '40', '60', 'A0' (memory at respective address.

     For example,

          xvic -memory none

     gives an unexpanded VIC20.  While

          xvic -memory 60,a0

     or

          xvic -memory 3,5

     enables memory in blocks 3 and 5, which is the usual configuration
     for 16k ROM modules.


File: vice.info,  Node: VIC20 system ROM settings,  Prev: VIC20 memory expansions,  Up: VIC20-specific

7.5.5 VIC20 system ROM settings
-------------------------------

These settings can be used to control what system ROMs are loaded in the
VIC20 emulator at startup.

* Menu:

* VIC20 system ROM resources::
* VIC20 system ROM options::


File: vice.info,  Node: VIC20 system ROM resources,  Next: VIC20 system ROM options,  Prev: VIC20 system ROM settings,  Up: VIC20 system ROM settings

7.5.5.1 VIC20 system ROM resources
..................................

'KernalName'
     String specifying the name of the Kernal ROM (default 'kernal').

'BasicName'
     String specifying the name of the Basic ROM (default 'basic').

'ChargenName'
     String specifying the name of the character generator ROM (default
     'chargen').


File: vice.info,  Node: VIC20 system ROM options,  Prev: VIC20 system ROM resources,  Up: VIC20 system ROM settings

7.5.5.2 VIC20 system ROM command-line options
.............................................

'-kernal <name>'
     Specify the filename of the Kernal ROM file ('KernalName').

'-basic <name>'
     Specify the filename of the Basic ROM file ('BasicName').

'-chargen <name>'
     Specify the filename of the character generator ROM file
     ('ChargenName').

'-cart2 NAME'
'-cart4 NAME'
'-cart6 NAME'
'-cartA NAME'
'-cartB NAME'
     Specify 'NAME' as the cartridge image to attach.
     ('CartridgeFile2000', ..., 'CartridgeFileB000').

7.5.6 VIC20 settings
--------------------

7.5.6.1 VIC20 command-line options
..................................


File: vice.info,  Node: PLUS4-specific,  Next: PET-specific,  Prev: VIC20-specific,  Up: Machine-specific features

7.6 PLUS4-specific commands and settings
========================================

7.6.1 TED settings
------------------

7.6.1.1 TED resources
.....................

'TEDVideoCache'
     Boolean specifying whether the video cache is turned on.

'TEDDoubleSize'
     Boolean specifying whether double-size mode is turned on.

'TEDDoubleScan'
     Boolean specifying whether double-scan mode is turned on.

'TEDPaletteFile'
     String specifying the name of the palette file being used.  The
     '.vpl' extension is optional.

'TEDExternalPalette'
     Boolean specifying whether to use external palette file or not.

'TEDColorSaturation'
     Integer specifying saturation of internal calculated palette.
     (0..2000)

'TEDColorContrast'
     Integer specifying contrast of internal calculated palette.
     (0..2000)

'TEDColorBrightness'
     Integer specifying brightness of internal calculated palette.
     (0..2000)

'TEDColorGamma'
     Integer specifying gamma of internal calculated palette.  (0..4000)

'TEDColorTint'
     Integer specifying tint of internal calculated palette.  (0..2000)

'TEDPALScanLineShade'
     Integer specifying amount of scan line shading for the CRT
     emulation.  (0..1000)

'TEDPALBlur'
     Integer specifying amount of horizontal blur for the CRT emulation.
     (0..1000)

'TEDPALOddLinePhase'
     Integer specifying phase for color carrier in odd lines.  (0..2000)

'TEDPALOddLineOffset'
     Integer specifying phase offset for color carrier in odd lines.
     (0..2000)

'TEDAudioLeak'
     Boolean specifying whether to enable/disable video to audio leak
     emulation.

'TEDFilter'
     Integer specifying rendering filter.  (0: None, 1: CRT emulation,
     2: Scale2x)

'TEDBorderMode'
     Integer specifying border display mode.  (0: normal, 1: full, 2:
     debug, 3: none)

7.6.1.2 TED command-line options
................................

'-TEDvcache'
'+TEDvcache'
     Enable/disable the video cache ('TEDVideoCache=1',
     'TEDVideoCache=0').

'-TEDdsize'
'+TEDdsize'
     Enable/disable double size ('TEDDoubleSize=1', 'TEDDoubleSize=0').

'-TEDdscan'
'+TEDdscan'
     Enable/disable double scan ('TEDDoubleScan=1', 'TEDDoubleScan=0').

'-TEDfilter <Mode>'
     Select rendering filter ('TEDFilter').  (0: None, 1: CRT emulation,
     2: Scale2x)

'-TEDintpal'
     Use an internal calculated palette ('TEDExternalPalette=0').

'-TEDextpal'
     Use an external palette (file) ('TEDExternalPalette=1').

'-TEDpalette <name>'
     Specify name of the external palette file ('TEDPaletteFile').

'-TEDborders <mode>'
     Set TED border display mode ('TEDBorderMode').  (0: normal, 1:
     full, 2: debug, 3: none)

'-TEDsaturation <0-2000>'
     Set saturation of internal calculated palette
     ('TEDColorSaturation').

'-TEDcontrast <0-2000>'
     Set contrast of internal calculated palette ('TEDColorContrast').

'-TEDbrightness <0-2000>'
     Set brightness of internal calculated palette
     ('TEDColorBrightness').

'-TEDgamma <0-4000>'
     Set gamma of internal calculated palette ('TEDColorGamma').

'-TEDtint <0-2000>'
     Set tint of internal calculated palette ('TEDColorTint').

'-TEDoddlinesphase <0-2000>'
     Set phase for color carrier in odd lines ('TEDPALOddLinePhase').

'-TEDoddlinesoffset <0-2000>'
     Set phase offset for color carrier in odd lines
     ('TEDPALOddLineOffset').

'-TEDcrtblur <0-1000>'
     Amount of horizontal blur for the CRT emulation ('TEDPALBlur').

'-TEDcrtscanlineshade <0-1000>'
     Amount of scan line shading for the CRT emulation
     ('TEDPALScanLineShade').

'-TEDaudioleak'
'+TEDaudioleak'
     Enable/disable video to audio leak emulation ('TEDAudioLeak=1',
     'TEDAudioLeak=0').

7.6.2 PLUS4 I/O extension settings
----------------------------------

7.6.2.1 PLUS4 I/O extension resources
.....................................

'CartridgeReset'
     Boolean specifying whether the machine should be reset when a
     cartridge is changed.

'DIGIBLASTER'
     Boolean to enable/disable the Digiblaster emulation.

'SpeechEnabled'
     Boolean to enable/disable the emulation of the V364 speech chip.

'SpeechImage'
     String specifying the filename of the speech ROM image.

'SidCart'
     Boolean specifying whether SID-Cart emulation is enabled or not.

'SidAddress'
     Integer that specifies the base address of the emulated SID chip.
     (0xFD40, 0xFE80)

'SidClock'
     Integer specifying the clock rate used for the emulated SID chip
     (0: C64, 1: Plus4)

'SIDCartJoy'
     Boolean to enable/disable the emulation of the SID-Cart control
     port.

7.6.2.2 PLUS4 I/O extension command-line options
................................................

'-cartreset'
'+cartreset'
     Do/don't reset machine if a cartridge is attached or detached
     ('CartridgeReset=1', 'CartridgeReset').

'-cart <Name>'
'+cart'
     Smart-attach cartridge image / Start without cartridge

'-digiblaster'
'+digiblaster'
     Enable/disable the digiblaster add-on ('DIGIBLASTER=1',
     'DIGIBLASTER=0').

'-sidcart'
'+sidcart'
     Enable/disable SID Cartridge ('SidCart=1', 'SidCart=0').

'-sidcartjoy'
'+sidcartjoy'
     Enable/disable SID cartridge control port ('SIDCartJoy=1',
     'SIDCartJoy=0').

'-sidcartaddress <address>'
     Specify address of the SID Cartridge ('SidAddress').  (0xFD40,
     0xFE80)

'-sidcartclock <clock>'
     Specify clock of the SID Cartridge ('SidClock').  (0: C64, 1:
     Plus4)

'-speech'
'+speech'
     Enable/Disable the v364 speech add-on ('SpeechEnabled=1',
     'SpeechEnabled=0').

'-speechrom <name>'
     Attach Speech ROM image ('SpeechImage', 'SpeechEnabled').

7.6.3 PLUS4 system ROM settings
-------------------------------

7.6.3.1 PLUS4 system ROM resources
..................................

'KernalName'
     String specifying the name of the Kernal ROM (default 'kernal').

'BasicName'
     String specifying the name of the Basic ROM (default 'basic').

'FunctionLowName'
     String specifying the filename of the Lo Function ROM.

'FunctionHighName'
     String specifying the filename of the High Function ROM.

'c1loName'
     String specifying the filename of cartridge 1 Lo ROM.

'c1hiName'
     String specifying the filename of cartridge 1 High ROM.

'c2loName'
     String specifying the filename of cartridge 2 Lo ROM.

'c2hiName'
     String specifying the filename of cartridge 2 High ROM.

7.6.3.2 PLUS4 system ROM command-line options
.............................................

'-kernal <Name>'
     Specify name of the Kernal ROM image ('KernalName').

'-basic <Name>'
     Specify name of the BASIC ROM image ('BasicName').

'-functionlo <name>'
     Specify name of Function low ROM image ('FunctionLowName').

'-functionhi <name>'
     Specify name of Function high ROM image ('FunctionHighName').

'-c1lo <name>'
     Specify name of Cartridge 1 low ROM image ('c1loName').

'-c1hi <name>'
     Specify name of Cartridge 1 high ROM image ('c1HiName').

'-c2lo <name>'
     Specify name of Cartridge 2 low ROM image ('c2loName').

'-c2hi <name>'
     Specify name of Cartridge 2 high ROM image ('c2HiName').

7.6.4 PLUS4 settings
--------------------

7.6.4.1 PLUS4 resources
.......................

'MachineVideoStandard'
     Integer that specifies the video standard of the emulated machine
     (1: PAL, 2: NTSC).

'RamSize'
     Integer specifying the size of the memory in kByte.  (16, 32, 64)

'MemoryHack'
     Integer specifying what memory expansion hack is active.  (0: None,
     1: C256K, 2: H256K, 3: H1024K, 4: H4096K)

'Acia1Enable'
     Boolean specifying whether the ACIA should be emulated or not.

7.6.4.2 PLUS4 command-line options
..................................

'-model <model>'
     Specify the PLUS4 model you want to emulate
     ('MachineVideoStandard', 'RamSize', 'KernalName', 'BasicName',
     'FunctionLowName', 'FunctionHighName', 'Acia1Enable',
     'SpeechImage', 'SpeechEnabled').  (c16/c16pal/c16ntsc,
     plus4/plus4pal/plus4ntsc, v364/cv364, c232)

'-pal'
     Use PAL sync factor ('MachineVideoStandard=1').

'-ntsc'
     Use NTSC sync factor ('MachineVideoStandard=2').

'-ramsize <ramsize>'
     Specify size of RAM installed in kb ('RamSize').  (16, 32, 64)

'-memoryexphack <device>'
     Set active memory expansion hack ('MemoryHack').  (0: None, 1:
     C256K, 2: H256K, 3: H1024K, 4: H4096K)

'-acia'
'+acia'
     Enable/Disable the ACIA emulation

'-userportdac'
'+userportdac'
     Enable/disable the userport DAC ('UserportDAC=1', 'UserportDAC=0').


File: vice.info,  Node: PET-specific,  Next: CBM-II-specific,  Prev: PLUS4-specific,  Up: Machine-specific features

7.7 PET-specific commands and settings
======================================

This section lists the settings and commands that are PET-specific and
thus are not present in the other emulators.

* Menu:

* PET model::
* CRTC Settings::
* PET I/O extensions::
* PET system ROM::
* PET diagnostic pin::
* PET settings::
* Colour PET::
* PET colors::
* PET DWW high resolution graphics::
* PET HRE (HiRes Emulator) high resolution graphics::


File: vice.info,  Node: PET model,  Next: CRTC Settings,  Up: PET-specific

7.7.1 Changing PET model settings
---------------------------------

With 'xpet', it is possible to change at runtime the characteristics of
the emulated PET so that it matches (or not) the ones of a certain PET
model, and it is also possible to select from a common set of PET models
so that all the features are selected accordingly.

The former is done by changing the following resources (via resource
file, command line options or right-menu items):

'RamSize'
     Integer specifying the size of the memory in kByte.  96k denotes an
     8096, 128k an 8296.  (4, 8, 16, 32, 96, 128)

'IOSize'
     Integer specifying the size of the I/O area in Bytes for the 8296
     model.  (256, 2048)

'VideoSize'
     Integer specifying the number of columns on the screen.  (0:
     Automatic from ROM, 40: 40 columns, 80: 80 columns)

'Ram9'
     Boolean specifying if the 8296 can map RAM into the address range
     $9*** or not.

'RamA'
     Boolean specifying if the 8296 can map RAM into the address range
     $A*** or not.

'SuperPET'
     Boolean that enables/disables the SuperPET (MicroMainFrame 9000)
     I/O and 6809 CPU, and disables/enables the 8x96 mappings.

'Basic1'
     Boolean to enable/disable the patching of a version 1 kernal ROM to
     make the IEEE488 interface work.

'Basic1Chars'
     Boolean to enable/disable the exchanges of some characters in the
     character ROM that have changed between the first PET 2001 and all
     newer versions.

'EoiBlank'
     Boolean to enable/disable the "blank screen on EOI" feature of the
     oldest PET 2001.

'DiagPin'
     Boolean to enable/disable the diagnostic pin on the PET userport
     (see below).

'ChargenName'
     String specifying the name of the character generator ROM (default
     'chargen').

'KernalName'
     String specifying the name of the Kernal ROM (default 'kernal4').

'BasicName'
     String specifying the name of the Basic ROM (default 'basic4').

'EditorName'
     String specifying the filename of the editor ROM file.  This file
     contains an overlay for the editor ROM at $E000-$E7FF if necessary.

'RomModule9Name'
     String specifying the filename for the $9*** Expansion ROM file.
     This file contains an expansion ROM image of 4k.

'RomModuleAName'
     String specifying the filename for the $A*** Expansion ROM file.
     This file contains an expansion ROM image of 4k.

'RomModuleBName'
     String specifying the filename for the $B*** Expansion ROM file.
     This file contains an expansion ROM image of 4k.  This file
     overlays the lowest 4k of a BASIC 4 ROM.

Choosing a common PET model is done from the setting dialog, by choosing
an item from the "Model" selection.  Available models are:

   * PET 2001-8N
   * PET 3008
   * PET 3016
   * PET 3032
   * PET 3032B
   * PET 4016
   * PET 4032
   * PET 4032B
   * PET 8032
   * PET 8096
   * PET 8296
   * SuperPET

Notice that this will *reset the emulated machine*.

It is also possible to select the PET model at startup, with the
'-model' command-line option: for example, 'xpet -model 3032' will
emulate a PET 3032 while 'xpet -model 8296' will emulate a PET 8296.

