Annotation of hatari/doc/manual.html, revision 1.1.1.10

1.1       root        1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                      2: <html>
                      3: <head>
                      4:   <title>Hatari User's Manual</title>
1.1.1.3   root        5:   <meta name="description"
                      6:  content="User's manual for the Atari ST emulator Hatari">
1.1.1.8   root        7:   <meta name="author" content="Hatari development team">
1.1       root        8:   <meta name="keywords" content="hatari, documentation, manual, linux">
                      9:   <meta name="resource-type" content="document">
                     10:   <meta name="distribution" content="global">
1.1.1.5   root       11:   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
1.1       root       12:   <meta http-equiv="Content-Style-Type" content="text/css">
                     13:   <style type="text/css">
                     14:   <!--
1.1.1.2   root       15:        body {  background-color:#FFFFFF;
                     16:                color:#000000;
1.1.1.7   root       17:                margin-left:10px;
1.1.1.2   root       18:                margin-right:10px;
1.1.1.8   root       19:                font-family:Verdana,Arial,Helvetica,sans-serif;
1.1.1.2   root       20:                }
1.1       root       21: 
1.1.1.8   root       22:        h2 { border-bottom:solid thin black;}
                     23:        h4.gui { clear:right }
1.1.1.10! root       24:        h5 { margin-bottom:2px; margin-left:1em; }
        !            25: 
        !            26:        pre {   color: black;
        !            27:                background-color: #eeeeee;
        !            28:                margin: 0px 20px 8px 20px;
        !            29:                padding: 2px 8px 1px 8px;
        !            30:                border: solid thin #ccaa88;
        !            31:                }
1.1       root       32: 
1.1.1.8   root       33:        td { font-family:Verdana,Arial,Helvetica,sans-serif; }
1.1       root       34: 
                     35:        a:link { color:#000099; background-color:#ffffff; text-decoration:none; }
1.1.1.7   root       36:        a:visited { color:#cc0000; background-color:#ffffff; text-decoration:none;}
                     37:        a:hover { color:#0000ff; background-color:#ffffff; text-decoration:none; }
                     38:        a:active { color:#993399; background-color:#ffffff; text-decoration:none; }
1.1       root       39: 
1.1.1.8   root       40:        *.commandline { font-family:Fixed,Courier,monospace; font-size:90% }
1.1.1.2   root       41:        *.file { color: #000088;}
1.1.1.10! root       42:        *.button { color:#000000; background-color:#c0c0c0; border:outset thin grey; font-family:Fixed,Courier,monospace; padding-left:1em; padding-right:1em;}
1.1.1.8   root       43:        *.key { color:#550000; font-family:Fixed,Courier,monospace; font-size:90% }
1.1       root       44:        *.backdropped { background-color:#ffffee; }
1.1.1.5   root       45:        *.image {margin-left: 5px; margin-right: 5px; border-width:2px; border-style:solid; border-color:#eeeeff; padding:1cm; text-align:center; }
                     46:        *.floatimage { clear:right; float:right; margin-left:0.5cm; border-width:2px; border-style:solid; border-color:#eeeeff; padding:0.5cm; }
1.1       root       47: 
                     48:   -->
                     49:   </style>
                     50: </head>
1.1.1.5   root       51: 
                     52: <body>
                     53: 
1.1       root       54: <h1 align="center">Hatari User's Manual</h1>
1.1.1.5   root       55: 
1.1.1.2   root       56: <p align="center">
1.1.1.10! root       57: Version 1.3
1.1.1.3   root       58: </p>
                     59: <p align="center">
1.1.1.8   root       60: Manual written by: <strong>Thomas Huth</strong>, <strong>Matthias Arndt</strong>
1.1.1.10! root       61:  &amp; <strong>Eero Tamminen</strong>
1.1.1.2   root       62: </p>
                     63: <p align="center">
1.1.1.9   root       64: Hatari on the WWW: <strong><a href="http://hatari.berlios.de/"
                     65:  target="_blank">http://hatari.berlios.de/</a></strong>
1.1.1.2   root       66: </p>
1.1       root       67: 
1.1.1.5   root       68: <h2>Index</h2>
                     69: <ul>
                     70:   <li><a href="#Introduction">Introduction</a>
                     71:   <ul>
                     72:     <li><a href="#General description">General description</a>
                     73:     <li><a href="#Features">Features</a>
1.1.1.7   root       74:     <li><a href="#STE hardware emulation">STE hardware emulation</a>
                     75:     <li><a href="#Very experimental TT hardware emulation">Very experimental TT hardware emulation</a>
                     76:     <li><a href="#Very experimental Falcon hardware emulation">Very experimental Falcon hardware emulation</a>
1.1.1.5   root       77:     <li><a href="#System requirements">System requirements</a>
                     78:   </ul>
                     79:   <li><a href="#Compiling and running">Compiling and running</a>
                     80:   <ul>
                     81:     <li><a href="#Compiling Hatari">Compiling Hatari</a>
                     82:     <li><a href="#Installation of a TOS ROM">Installation of a TOS ROM</a>
                     83:     <li><a href="#Installation of the binary">Installation of the binary</a>
                     84:     <li><a href="#Running Hatari for the first time">Running Hatari for the first time</a>
                     85:   </ul>
                     86:   <li><a href="#Command line options">Command line options</a>
                     87:   <li><a href="#Using the emulated system">Using the emulated system</a>
                     88:   <ul>
                     89:     <li><a href="#The GUI">The GUI</a>
                     90:     <ul>
                     91:       <li><a href="#The Main Menu">The Main Menu</a>
1.1.1.10! root       92:       <li><a href="#The File Selector Dialog">The File Selector Dialog</a>
1.1.1.5   root       93:       <li><a href="#The System Dialog">The System Dialog</a>
1.1.1.10! root       94:       <li><a href="#The Floppy Disks Dialog">The Floppy Disks Dialog</a>
        !            95:       <li><a href="#The Hard Disks Dialog">The Hard Disks Dialog</a>
1.1.1.5   root       96:       <li><a href="#The Memory Dialog">The Memory Dialog</a>
                     97:       <li><a href="#The ROM Dialog">The ROM Dialog</a>
                     98:       <li><a href="#The Joystick Dialog">The Joystick Dialog</a>
                     99:       <li><a href="#The Screen Dialog">The Screen Dialog</a>
                    100:       <li><a href="#The Keyboard Dialog">The Keyboard Dialog</a>
                    101:       <li><a href="#The Sound Dialog">The Sound Dialog</a>
                    102:       <li><a href="#The Devices Dialog">The Devices Dialog</a>
                    103:     </ul>
                    104:     <li><a href="#Keyboard shortcuts">Keyboard shortcuts</a>
                    105:     <li><a href="#Emulated Atari ST keyboard">Emulated Atari ST keyboard</a>
                    106:     <li><a href="#Emulated mouse">Emulated mouse</a>
                    107:     <li><a href="#Emulated joystick">Emulated joystick</a>
                    108:     <li><a href="#Emulated video">Emulated video</a>
                    109:     <li><a href="#Emulated printer">Emulated printer</a>
                    110:     <li><a href="#Emulated RS232">Emulated RS232</a>
                    111:   </ul>
                    112:   <li><a href="#Floppy disk images">Floppy disk images</a>
                    113:   <li><a href="#Hard disk support">Hard disk support</a>
1.1.1.6   root      114:   <ul>
                    115:     <li><a href="#GEMDOS based hard disk emulation">GEMDOS based hard disk emulation</a></li>
1.1.1.10! root      116:     <li><a href="#ACSI hard disk emulation">ACSI hard disk emulation</a></li>
        !           117:     <li><a href="#IDE hard disk emulation">IDE hard disk emulation</a></li>
        !           118:     <li><a href="#Accessing disk image partitions outside of Hatari">Accessing disk image partitions outside of Hatari</a></li>
        !           119:   </ul>
        !           120:   <li><a href="#The debugger">The debugger</a>
        !           121:   <li><a href="#Performance">Performance</a>
        !           122:   <ul>
        !           123:     <li><a href="#Improving Hatari performance">Improving Hatari performance</a>
        !           124:     <li><a href="#Measuring the performance">Measuring the performance</a>
1.1.1.6   root      125:   </ul>
1.1.1.5   root      126:   <li><a href="#Appendix">Appendix</a>
                    127:   <ul>
                    128:     <li><a href="#Copying">Copying</a>
                    129:     <li><a href="#Introduction to Emulation">Introduction to Emulation</a>
                    130:   </ul>
                    131: </ul>
                    132: 
                    133: 
                    134: <a name="Introduction"></a><h2>Introduction</h2>
1.1       root      135: 
1.1.1.5   root      136: <a name="General description"></a><h3>General description</h3>
1.1       root      137: <p>
1.1.1.7   root      138: Hatari is an Atari ST, STE, TT and Falcon emulator for Linux, FreeBSD, BeOS and
                    139: other Systems which are supported by the SDL library.
1.1.1.4   root      140: The emulator is open source software and is distributed under the terms of the
1.1.1.7   root      141: <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General
                    142: Public License (GPL)</a>.
1.1.1.4   root      143: </p>
                    144: <p>
1.1.1.3   root      145: The Atari ST was a 16/32 bit computer system which was first released by Atari
1.1.1.4   root      146: in 1985. Using the Motorola 68000 CPU, it was a very popular computer having
                    147: quite a lot of CPU power at that time. See Appendix B for details on emulation
                    148: in general.
1.1.1.3   root      149: </p>
                    150: <p>
1.1.1.4   root      151: Unlike many other Atari ST emulators which try to give you a good
                    152: environment for running GEM applications, Hatari tries to emulate the hardware
                    153: of a ST as close as possible so that it is able to run most of the old ST games
                    154: and demos. Of course you can run normal GEM applications with Hatari, too.
1.1.1.7   root      155: Recent versions of Hatari even feature basic STE, TT and Falcon emulation.
1.1       root      156: </p>
                    157: 
1.1.1.5   root      158: <a name="Features"></a><h3>Features</h3>
1.1       root      159: <ul>
1.1.1.7   root      160:   <li>68000 - 68040 emulation via the UAE CPU core (no PMMU support though)</li>
                    161:   <li>ST RAM size variable (from 512kiB up to 14MiB are possible)</li>
1.1.1.3   root      162:   <li>optional cartridge images for the ST ROM port</li>
1.1.1.2   root      163:   <li>most of the ST specific hardware</li>
1.1       root      164:   <li>ST Shifter with ST-High, ST-Medium and ST-Low resolutions,
1.1.1.7   root      165:     overscan effects for all borders in color resolutions</li>
1.1.1.6   root      166:   <li>512 color ST palette</li>
1.1.1.7   root      167:   <li>many raster effects </li>
1.1.1.8   root      168:   <li>scaling of low resolutions by factor two</li>
1.1.1.7   root      169:   <li>interleaved lines rendering of ST-medium and (scaled) ST-low
                    170:     resolutions for the TV "monitor type"</li>
1.1.1.8   root      171:   <li>Blitter chip emulation</li>
1.1.1.2   root      172:   <li>PSG YM2149 emulation (soundchip) including STFM samples</li>
1.1.1.8   root      173:   <li>Printer port emulation on hardware level (print to file)</li>
1.1.1.10! root      174:   <li>RS232 emulation</li>
        !           175:   <li>MIDI input/output/through emulation</li>
1.1       root      176:   <li>Mega ST real time clock</li>
1.1.1.3   root      177:   <li>IKBD emulation (keyboard, mouse and joystick) with custom
1.1.1.7   root      178:     keyboard mapping</li>
1.1       root      179:   <li>joystick emulation via cursor keys and joystick emulation via a
1.1.1.7   root      180:     connected PC joystick</li>
1.1.1.3   root      181:   <li>FDC emulation using floppy disk images in standard formats (*.ST,
1.1.1.7   root      182:     *.MSA and *.DIM)</li>
1.1.1.5   root      183:   <li>support for packed disk images (PkZip and Gzip)</li>
1.1.1.7   root      184:   <li>optional write-protection for disk images</li>
1.1.1.2   root      185:   <li>partial ACSI emulation for harddisk support</li>
1.1.1.10! root      186:   <li>GEMDOS interface driver to mount directories as harddrives</li>
1.1.1.7   root      187:   <li>support for memory snapshots (save whole system state)</li>
1.1.1.2   root      188:   <li>driver for extended VDI resolutions</li>
                    189:   <li>recording of sound as .WAV and .YM files</li>
1.1.1.8   root      190:   <li>screenshots in PNG or BMP format</li>
1.1.1.2   root      191:   <li>animation capturing</li>
1.1.1.8   root      192:   <li>TOS versions 1.00, 1.02, 1.04 and 2.06 (and EmuTOS) can be used in ST mode.</li>
1.1       root      193: </ul>
1.1.1.5   root      194: 
1.1.1.7   root      195: <a name="STE hardware emulation"></a>
                    196: <h4>STE hardware emulation</h4>
1.1.1.6   root      197: STE emulation is still a little bit experimental, but basically
1.1.1.7   root      198: there is support for most of the enhanced/additional STE features:
1.1.1.5   root      199: <ul>
                    200:   <li>horizontal and vertical hardware fine scrolling</li>
                    201:   <li>split screen techniques / in-screen video address manipulations</li>
1.1.1.8   root      202:   <li>(STE specific) left border opening</li>
1.1.1.5   root      203:   <li>4096 colors STE palette</li>
1.1.1.8   root      204:   <li>Stereo DMA sample sound ("microwire" audio balance support missing)</li>
1.1.1.7   root      205:   <li>STE joypads</li>
1.1.1.8   root      206:   <li>TOS versions 1.06, 1.62, 2.05 and 2.06 (and EmuTOS) can be used in STE mode.</li>
1.1.1.5   root      207: </ul>
                    208: 
1.1.1.7   root      209: <a name="Very experimental TT hardware emulation"></a>
                    210: <h4>Very experimental TT hardware emulation</h4>
                    211: There is support for following additional TT features:
                    212: <ul>
                    213:   <li>TT low/med/high resolution support</li>
                    214:   <li>ST/TT palette switching and video shifter</li>
                    215:   <li>RAM upto 14MiB (ST-RAM only, there is no support for TT-RAM yet)</li>
1.1.1.8   root      216:   <li>Only TOS version 3.06 (and EmuTOS) can be used in TT mode.</li>
1.1.1.7   root      217: </ul>
                    218: 
                    219: <a name="Very experimental Falcon hardware emulation"></a>
                    220: <h4>Very experimental Falcon hardware emulation</h4>
                    221: There is support for following additional Falcon features:
                    222: <ul>
                    223:   <li>Videl emulation for all Falcon screen modes</li>
                    224:   <li>STE/Falcon palette switching and shifter</li>
                    225:   <li>Mono/RGB/VGA/TV monitor types</li>
1.1.1.10! root      226:   <li>Experimental IDE emulation for harddisk support</li>
1.1.1.7   root      227:   <li>Some few parts of the Falcon sound system are emulated
                    228:       (e.g. the additional sample rates of the DMA sound)</li>
1.1.1.8   root      229:   <li>TOS versions 4.00, 4.02, 4.04 and 4.92 (and EmuTOS) can be used in Falcon mode.</li>
1.1.1.7   root      230: </ul>
                    231: 
1.1.1.8   root      232: <p>
1.1.1.10! root      233: DSP emulation is still very experimental, but many games and demos
        !           234: already work with it.  If it takes too much CPU, there's a dummy mode
1.1.1.8   root      235: too, which helps to get some demos and games running.
1.1       root      236: </p>
1.1.1.5   root      237: 
                    238: 
                    239: <a name="System requirements"></a><h3>System requirements</h3>
                    240: 
1.1       root      241: <p> Hatari currently has the following system requirements: </p>
                    242: <ul>
1.1.1.7   root      243:   <li>a fast PC (&gt;500MHz, for Falcon and TT emulation even faster) </li>
1.1.1.3   root      244:   <li>some sort of Unix (preferable <a href="http://www.linux.org/">GNU/Linux</a>)
                    245:   </li>
1.1       root      246:   <li>the SDL library (<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>)</li>
1.1.1.3   root      247:   <li>the zLib (<a href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>)
1.1.1.5   root      248: for support of ZIP-packed disk images (*.zip and *.gz)</li>
1.1       root      249: </ul>
1.1.1.5   root      250: 
                    251: <p>
                    252: Certain versions of Hatari have successfully been tested by various people on
                    253: the following systems:
                    254: </p>
1.1       root      255: <ul>
1.1.1.8   root      256:   <li>Linux/i86 with Kernel 2.4.x and 2.6.x</li>
                    257:   <li>Linux/PPC with Kernel 2.4.x and 2.6.x</li>
1.1.1.2   root      258:   <li>BeOS/i86 </li>
1.1       root      259:   <li>Apple PowerMac with Mac OS X </li>
                    260:   <li>NetBSD 1.6 </li>
1.1.1.4   root      261:   <li>NetBSD on a Digital Alpha</li>
1.1.1.8   root      262:   <li>FreeBSD 4.1 on an i486, FreeBSD 4.8 on a Pentium 4 and FreeBSD 5.1</li>
1.1.1.2   root      263:   <li>OpenBSD 3.5 </li>
1.1.1.4   root      264:   <li>Solaris 8 on a SUN UltraSparc 1</li>
1.1.1.8   root      265:   <li>Linux/ARM (oabi) on Sharp Zaurus SL-C760 PDA</li>
                    266:   <li>Linux/ARM (eabi) on Nokia 770, N800 and N810 Internet Tablets</li>
1.1       root      267: </ul>
1.1.1.5   root      268: 
                    269: <a name="Compiling and running"></a><h2>Compiling and running</h2>
                    270: 
                    271: <a name="Compiling Hatari"></a><h3>Compiling Hatari</h3>
                    272: 
1.1       root      273: <p> First, you need the SDL library, you can get it at:
1.1.1.3   root      274: <a href="http://www.libsdl.org/">http://www.libsdl.org/</a>. Most
                    275: distributions already ship a suitable version.
                    276: Make sure to install the appropriate header files as well often called
                    277: "libsdl-dev" or the like.
                    278: </p>
                    279: <p> Second, you need the zLib compression library. You can get it from <a
                    280:  href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>
                    281: but the version shipped with your distribution will be sufficient in
                    282: most cases. Make sure to have the header files
1.1       root      283: for it installed as well.
                    284: </p>
                    285: <p>
1.1.1.8   root      286: For optional features like PNG format screenshots and Hatari window
                    287: embedding, you need to have the header files for libpng and libX11.
                    288: </p>
                    289: <p>
1.1       root      290: Of course, you need the GNU C compiler and (GNU) Make, too!
                    291: </p>
1.1.1.8   root      292: <p> Change to the <span class="file">hatari/</span> directory, copy
                    293: <span class="file">Makefile-default.cnf</span> to
                    294: <span class="file">Makefile.cnf</span> and adapt the configuration file
                    295: to suite your system. Alternatively, you can use the supplied configure
                    296: script to auto-detect all parameters (type
                    297: "<span class="commandline">./configure --help</span>"
1.1.1.3   root      298: to see the options of the script).
                    299: Don't forget to use some good CFLAGS for the compiler optimizations, e.g.
                    300: run <span class="commandline">configure</span> in the following way:
                    301: </p>
1.1.1.10! root      302: <pre>
        !           303: CFLAGS="-O3 -fomit-frame-pointer" ./configure
        !           304: </pre>
1.1.1.3   root      305: <p>
                    306: Then compile Hatari by typing <span class="commandline">make</span>.
                    307: If all
                    308: works fine, you'll get the executable <span class="commandline">hatari</span>
                    309: in the src/ subdirectory.
1.1.1.2   root      310: </p>
1.1.1.5   root      311: 
                    312: <a name="Installation of a TOS ROM"></a><h3>Installation of a TOS ROM</h3>
                    313: 
1.1.1.6   root      314: <p>
                    315: Before you can start Hatari, you have to copy a TOS ROM image to the data
                    316: directory (the data directory is specified
1.1.1.3   root      317: in the configuration file <span class="file">Makefile.cnf</span>) and
                    318: rename it to <span class="commandline">tos.img</span>, or use the
                    319: <span class="commandline">--tos</span> command line option to tell
                    320: Hatari where to find a TOS ROM.
1.1       root      321: Hatari needs a TOS ROM image because this contains the operating system
1.1.1.6   root      322: of the emulated Atari.
                    323: </p>
                    324: <p>
                    325: Unfortunately it is not possible to ship an original ROM
1.1.1.5   root      326: image with the Hatari package since these images are still copyrighted.
                    327: But you can easily create an image with a real ST and one of those various
                    328: ROM-image programs for the ST (search for &quot;TOSDUMP&quot; with your
                    329: favourite internet search engine). If your old ST does not work anymore, you
                    330: can also try to search the internet directly for corresponding TOS ROM image,
                    331: but don't ask the Hatari team where to get one. </p>
                    332: <p> Another solution is EmuTOS, which is also shipped with the official
                    333: release versions of Hatari. EmuTOS is an open-source TOS clone. You can find
                    334: it at:
                    335: <a href="http://emutos.sourceforge.net/">http://emutos.sourceforge.net/</a>.
                    336: It is not the best solution for playing games or running other old software
1.1.1.8   root      337: due to compatibility issues (see <span class="file">emutos.txt</span> for
                    338: more details), but it's free and compatible with Hatari.</p>
1.1       root      339: <p>If you do not specify a TOS image on the commandline nor can Hatari
                    340: find a suitable TOS image in the default dir, you'll get the chance to
                    341: select a TOS image file from the GUI. </p>
1.1.1.5   root      342: 
                    343: <a name="Installation of the binary"></a><h3>Installation of the binary</h3>
                    344: 
1.1.1.3   root      345: <p> Type <span class="commandline">make install</span> as root to do a
                    346: systemwide installation. In this case it is recommended
                    347: to set the DATADIR variable in Makefile.cnf to a proper value. <tt>/usr/local/share/hatari</tt>
                    348: is a good value in that case.</p>
                    349: <p>The Hatari executable should now be in your PATH and accessible from
                    350: anywhere.</p>
1.1       root      351: <p> When you finally have got a TOS image, try starting Hatari with the
1.1.1.3   root      352: option <span class="commandline">--help</span> to find out more about
                    353: its command line parameters. </p>
1.1.1.5   root      354: 
                    355: <a name="Running Hatari for the first time"></a><h3>Running Hatari for the first time</h3>
                    356: 
1.1.1.3   root      357: <p> Now type <span class="commandline">hatari</span> to run the
                    358: emulator for the first time. If all goes
                    359: well, you should now be presented with a window showing you the
                    360: familiar
                    361: little green desktop of the Atari ST. Press <span class="key">F12</span>
                    362: to turn on the GUI to
                    363: configure Hatari to suit your needs, press <span class="key">F11</span>
                    364: to toggle windowed and fullscreen mode. </p>
1.1.1.5   root      365: 
                    366: <a name="Command line options"></a><h2>Command line options</h2>
                    367: 
1.1.1.7   root      368: <p>Usage:</p>
                    369: <pre>
                    370:  hatari [options] [disk image name]
                    371: </pre>
                    372: 
1.1.1.8   root      373: <p>Hatari command line options are split into several categories:</p>
1.1.1.7   root      374: 
1.1.1.8   root      375: <!--
                    376: Generated from hatari.1 options section by changing subheaders to h3
                    377: and removing extra paragraphs:
                    378:   groff -man -Thtml hatari.1 | awk '
                    379:   /OPTIONS<\/h/ { out = 1; next }
                    380:   /INDENTATION/ { next }
                    381:   /COMMANDS/ { out = 0; next }
                    382:   { if(out) print }' | sed -e 's/h2/h3/g' -e 's/<\/*p>//g'
                    383: -->
                    384: 
                    385: <a name="General options"></a>
                    386: <h3>General options</h3>
                    387: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      388:        cellspacing="0" cellpadding="0">
1.1.1.8   root      389: <tr valign="top" align="left">
                    390: <td width="10%"></td>
                    391: <td width="89%">
                    392: <b>&minus;h, &minus;&minus;help</b></td>
                    393: </table>
                    394: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      395:        cellspacing="0" cellpadding="0">
1.1.1.8   root      396: <tr valign="top" align="left">
                    397: <td width="21%"></td>
                    398: <td width="77%">
                    399: Print command line options and terminate
                    400: </td>
                    401: </table>
                    402: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      403:        cellspacing="0" cellpadding="0">
1.1.1.8   root      404: <tr valign="top" align="left">
                    405: <td width="10%"></td>
                    406: <td width="89%">
                    407: <b>&minus;v, &minus;&minus;version</b></td>
                    408: </table>
                    409: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      410:        cellspacing="0" cellpadding="0">
1.1.1.8   root      411: <tr valign="top" align="left">
                    412: <td width="21%"></td>
                    413: <td width="77%">
                    414: Print version information and terminate
                    415: </td>
                    416: </table>
                    417: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      418:        cellspacing="0" cellpadding="0">
1.1.1.8   root      419: <tr valign="top" align="left">
                    420: <td width="10%"></td>
                    421: <td width="89%">
                    422: <b>&minus;&minus;confirm-quit &lt;bool&gt;</b></td>
                    423: </table>
                    424: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      425:        cellspacing="0" cellpadding="0">
1.1.1.8   root      426: <tr valign="top" align="left">
                    427: <td width="21%"></td>
                    428: <td width="77%">
                    429: Whether Hatari confirms quitting
                    430: </td>
                    431: </table>
                    432: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      433:        cellspacing="0" cellpadding="0">
1.1.1.8   root      434: <tr valign="top" align="left">
                    435: <td width="10%"></td>
                    436: <td width="89%">
                    437: <b>&minus;c, &minus;&minus;configfile
                    438: &lt;filename&gt;</b></td>
                    439: </table>
                    440: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      441:        cellspacing="0" cellpadding="0">
1.1.1.8   root      442: <tr valign="top" align="left">
                    443: <td width="21%"></td>
                    444: <td width="77%">
                    445: use the given file as configuration file instead of
                    446: ~/.hatari/hatari.cfg
                    447: </td>
                    448: </table>
                    449: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      450:        cellspacing="0" cellpadding="0">
1.1.1.8   root      451: <tr valign="top" align="left">
                    452: <td width="10%"></td>
                    453: <td width="89%">
                    454: <b>&minus;&minus;fast-forward &lt;bool&gt;</b></td>
                    455: </table>
                    456: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      457:        cellspacing="0" cellpadding="0">
1.1.1.8   root      458: <tr valign="top" align="left">
                    459: <td width="21%"></td>
                    460: <td width="77%">
                    461: On fast machine helps skipping (fast forwarding) Hatari
                    462: output
                    463: </td>
                    464: </table>
                    465: <a name="Display options"></a>
                    466: <h3>Display options</h3>
                    467: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      468:        cellspacing="0" cellpadding="0">
1.1.1.8   root      469: <tr valign="top" align="left">
                    470: <td width="10%"></td>
                    471: <td width="89%">
                    472: <b>&minus;m, &minus;&minus;mono</b></td>
                    473: </table>
                    474: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      475:        cellspacing="0" cellpadding="0">
1.1.1.8   root      476: <tr valign="top" align="left">
                    477: <td width="21%"></td>
                    478: <td width="77%">
                    479: Start in monochrome mode instead of color
                    480: </td>
                    481: </table>
                    482: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      483:        cellspacing="0" cellpadding="0">
1.1.1.8   root      484: <tr valign="top" align="left">
                    485: <td width="10%"></td>
                    486: <td width="89%">
                    487: <b>&minus;&minus;monitor &lt;x&gt;</b></td>
                    488: </table>
                    489: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      490:        cellspacing="0" cellpadding="0">
1.1.1.8   root      491: <tr valign="top" align="left">
                    492: <td width="21%"></td>
                    493: <td width="77%">
                    494: Select monitor type (x = mono/rgb/vga/tv)
                    495: </td>
                    496: </table>
                    497: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      498:        cellspacing="0" cellpadding="0">
1.1.1.8   root      499: <tr valign="top" align="left">
                    500: <td width="10%"></td>
                    501: <td width="89%">
                    502: <b>&minus;f, &minus;&minus;fullscreen</b></td>
1.1       root      503: </table>
1.1.1.8   root      504: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      505:        cellspacing="0" cellpadding="0">
1.1.1.8   root      506: <tr valign="top" align="left">
                    507: <td width="21%"></td>
                    508: <td width="77%">
                    509: Start the emulator in fullscreen mode
                    510: </td>
                    511: </table>
                    512: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      513:        cellspacing="0" cellpadding="0">
1.1.1.8   root      514: <tr valign="top" align="left">
                    515: <td width="10%"></td>
                    516: <td width="89%">
                    517: <b>&minus;w, &minus;&minus;window</b></td>
                    518: </table>
                    519: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      520:        cellspacing="0" cellpadding="0">
1.1.1.8   root      521: <tr valign="top" align="left">
                    522: <td width="21%"></td>
                    523: <td width="77%">
                    524: Start the emulator in window mode
                    525: </td>
                    526: </table>
                    527: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      528:        cellspacing="0" cellpadding="0">
1.1.1.8   root      529: <tr valign="top" align="left">
                    530: <td width="10%"></td>
                    531: <td width="89%">
1.1.1.10! root      532: <b>&minus;&minus;grab</b></td>
        !           533: </table>
        !           534: <table width="100%" border=0 rules="none" frame="void"
        !           535:        cellspacing="0" cellpadding="0">
        !           536: <tr valign="top" align="left">
        !           537: <td width="21%"></td>
        !           538: <td width="77%">
        !           539: Grab mouse (also) in window mode
        !           540: </td>
        !           541: </table>
        !           542: <table width="100%" border=0 rules="none" frame="void"
        !           543:        cellspacing="0" cellpadding="0">
        !           544: <tr valign="top" align="left">
        !           545: <td width="10%"></td>
        !           546: <td width="89%">
1.1.1.8   root      547: <b>&minus;z, &minus;&minus;zoom &lt;x&gt;</b></td>
                    548: </table>
                    549: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      550:        cellspacing="0" cellpadding="0">
1.1.1.8   root      551: <tr valign="top" align="left">
                    552: <td width="21%"></td>
                    553: <td width="77%">
                    554: Zoom low resolution (1=no, 2=yes)
                    555: </td>
                    556: </table>
                    557: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      558:        cellspacing="0" cellpadding="0">
1.1.1.8   root      559: <tr valign="top" align="left">
                    560: <td width="10%"></td>
                    561: <td width="89%">
                    562: <b>&minus;&minus;frameskips &lt;x&gt;</b></td>
                    563: </table>
                    564: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      565:        cellspacing="0" cellpadding="0">
1.1.1.8   root      566: <tr valign="top" align="left">
                    567: <td width="21%"></td>
                    568: <td width="77%">
                    569: Skip &lt;x&gt; frames after each displayed frame to
                    570: accelerate emulation (0=disabled, &gt;4 uses automatic
                    571: frameskip with given value as maximum)
                    572: </td>
                    573: </table>
                    574: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      575:        cellspacing="0" cellpadding="0">
1.1.1.8   root      576: <tr valign="top" align="left">
                    577: <td width="10%"></td>
                    578: <td width="89%">
                    579: <b>&minus;&minus;borders &lt;bool&gt;</b></td>
                    580: </table>
                    581: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      582:        cellspacing="0" cellpadding="0">
1.1.1.8   root      583: <tr valign="top" align="left">
                    584: <td width="21%"></td>
                    585: <td width="77%">
                    586: Show screen borders (for overscan demos, ST(e) color mode
                    587: specific etc)
                    588: </td>
                    589: </table>
                    590: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      591:        cellspacing="0" cellpadding="0">
1.1.1.8   root      592: <tr valign="top" align="left">
                    593: <td width="10%"></td>
                    594: <td width="89%">
                    595: <b>&minus;&minus;statusbar &lt;bool&gt;</b></td>
                    596: </table>
                    597: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      598:        cellspacing="0" cellpadding="0">
1.1.1.8   root      599: <tr valign="top" align="left">
                    600: <td width="21%"></td>
                    601: <td width="77%">
                    602: Show statusbar (with floppy leds etc etc)
                    603: </td>
                    604: </table>
                    605: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      606:        cellspacing="0" cellpadding="0">
1.1.1.8   root      607: <tr valign="top" align="left">
                    608: <td width="10%"></td>
                    609: <td width="89%">
                    610: <b>&minus;&minus;drive-led &lt;bool&gt;</b></td>
                    611: </table>
                    612: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      613:        cellspacing="0" cellpadding="0">
1.1.1.8   root      614: <tr valign="top" align="left">
                    615: <td width="21%"></td>
                    616: <td width="77%">
                    617: Show overlay drive led when statusbar isn&rsquo;t
                    618: shown
                    619: </td>
                    620: </table>
                    621: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      622:        cellspacing="0" cellpadding="0">
1.1.1.8   root      623: <tr valign="top" align="left">
                    624: <td width="10%"></td>
                    625: <td width="89%">
                    626: <b>&minus;&minus;spec512 &lt;x&gt;</b></td>
                    627: </table>
                    628: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      629:        cellspacing="0" cellpadding="0">
1.1.1.8   root      630: <tr valign="top" align="left">
                    631: <td width="21%"></td>
                    632: <td width="77%">
                    633: Hatari uses this threshold to decide when to render a
                    634: screen with the slower but more accurate Spectrum512 screen
                    635: conversion functions (0 &lt;= x &lt;= 512, 0=disable)
                    636: </td>
                    637: </table>
                    638: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      639:        cellspacing="0" cellpadding="0">
1.1.1.8   root      640: <tr valign="top" align="left">
                    641: <td width="10%"></td>
                    642: <td width="89%">
                    643: <b>&minus;&minus;bpp &lt;bool&gt;</b></td>
                    644: </table>
                    645: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      646:        cellspacing="0" cellpadding="0">
1.1.1.8   root      647: <tr valign="top" align="left">
                    648: <td width="21%"></td>
                    649: <td width="77%">
                    650: Force internal bitdepth (x = 8/15/16/32, 0=disable)
                    651: </td>
                    652: </table>
                    653: <a name="VDI options"></a>
                    654: <h3>VDI options</h3>
                    655: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      656:        cellspacing="0" cellpadding="0">
1.1.1.8   root      657: <tr valign="top" align="left">
                    658: <td width="10%"></td>
                    659: <td width="89%">
                    660: <b>&minus;&minus;vdi &lt;bool&gt;</b></td>
                    661: </table>
                    662: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      663:        cellspacing="0" cellpadding="0">
1.1.1.8   root      664: <tr valign="top" align="left">
                    665: <td width="21%"></td>
                    666: <td width="77%">
                    667: Whether to use VDI screen mode
                    668: </td>
                    669: </table>
                    670: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      671:        cellspacing="0" cellpadding="0">
1.1.1.8   root      672: <tr valign="top" align="left">
                    673: <td width="10%"></td>
                    674: <td width="89%">
                    675: <b>&minus;&minus;vdi&minus;planes &lt;x&gt;</b></td>
                    676: </table>
                    677: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      678:        cellspacing="0" cellpadding="0">
1.1.1.8   root      679: <tr valign="top" align="left">
                    680: <td width="21%"></td>
                    681: <td width="77%">
                    682: Use extended VDI resolution with bit depth &lt;x&gt; (x =
                    683: 1, 2 or 4)
                    684: </td>
                    685: </table>
                    686: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      687:        cellspacing="0" cellpadding="0">
1.1.1.8   root      688: <tr valign="top" align="left">
                    689: <td width="10%"></td>
                    690: <td width="89%">
                    691: <b>&minus;&minus;vdi&minus;width &lt;w&gt;</b></td>
                    692: </table>
                    693: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      694:        cellspacing="0" cellpadding="0">
1.1.1.8   root      695: <tr valign="top" align="left">
                    696: <td width="21%"></td>
                    697: <td width="77%">
                    698: Use extended VDI resolution with width &lt;w&gt; (384
                    699: &lt;= w &lt;= 1024)
                    700: </td>
                    701: </table>
                    702: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      703:        cellspacing="0" cellpadding="0">
1.1.1.8   root      704: <tr valign="top" align="left">
                    705: <td width="10%"></td>
                    706: <td width="89%">
                    707: <b>&minus;&minus;vdi&minus;height &lt;h&gt;</b></td>
                    708: </table>
                    709: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      710:        cellspacing="0" cellpadding="0">
1.1.1.8   root      711: <tr valign="top" align="left">
                    712: <td width="21%"></td>
                    713: <td width="77%">
                    714: Use extended VDI resolution with height &lt;h&gt; (200
                    715: &lt; h &lt;= 768)
                    716: </td>
                    717: </table>
                    718: <a name="Devices options"></a>
                    719: <h3>Devices options</h3>
                    720: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      721:        cellspacing="0" cellpadding="0">
1.1.1.8   root      722: <tr valign="top" align="left">
                    723: <td width="10%"></td>
                    724: <td width="89%">
                    725: <b>&minus;j, &minus;&minus;joystick
                    726: &lt;port&gt;</b></td>
                    727: </table>
                    728: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      729:        cellspacing="0" cellpadding="0">
1.1.1.8   root      730: <tr valign="top" align="left">
                    731: <td width="21%"></td>
                    732: <td width="77%">
                    733: Emulate joystick with cursor keys in given port (0-5)
                    734: </td>
                    735: </table>
                    736: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      737:        cellspacing="0" cellpadding="0">
1.1.1.8   root      738: <tr valign="top" align="left">
                    739: <td width="10%"></td>
                    740: <td width="89%">
                    741: <b>&minus;&minus;joy&lt;port&gt;
                    742: &lt;type&gt;</b></td>
                    743: </table>
                    744: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      745:        cellspacing="0" cellpadding="0">
1.1.1.8   root      746: <tr valign="top" align="left">
                    747: <td width="21%"></td>
                    748: <td width="77%">
                    749: Set joystick type (none/keys/real) for given port
                    750: </td>
                    751: </table>
                    752: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      753:        cellspacing="0" cellpadding="0">
1.1.1.8   root      754: <tr valign="top" align="left">
                    755: <td width="10%"></td>
                    756: <td width="89%">
                    757: <b>&minus;&minus;printer &lt;file&gt;</b></td>
                    758: </table>
                    759: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      760:        cellspacing="0" cellpadding="0">
1.1.1.8   root      761: <tr valign="top" align="left">
                    762: <td width="21%"></td>
                    763: <td width="77%">
                    764: Enable printer support and write data to &lt;file&gt;
                    765: </td>
                    766: </table>
                    767: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      768:        cellspacing="0" cellpadding="0">
1.1.1.8   root      769: <tr valign="top" align="left">
                    770: <td width="10%"></td>
                    771: <td width="89%">
1.1.1.9   root      772: <b>&minus;&minus;midi&minus;in &lt;filename&gt;</b></td>
1.1.1.8   root      773: </table>
                    774: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      775:        cellspacing="0" cellpadding="0">
1.1.1.8   root      776: <tr valign="top" align="left">
                    777: <td width="21%"></td>
                    778: <td width="77%">
1.1.1.9   root      779: Enable MIDI support and write MIDI data to &lt;file&gt;
1.1.1.8   root      780: </td>
                    781: </table>
                    782: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      783:        cellspacing="0" cellpadding="0">
1.1.1.8   root      784: <tr valign="top" align="left">
                    785: <td width="10%"></td>
                    786: <td width="89%">
1.1.1.9   root      787: <b>&minus;&minus;midi&minus;out &lt;filename&gt;</b></td>
1.1.1.8   root      788: </table>
                    789: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      790:        cellspacing="0" cellpadding="0">
1.1.1.8   root      791: <tr valign="top" align="left">
                    792: <td width="21%"></td>
                    793: <td width="77%">
1.1.1.9   root      794: Enable MIDI support and read MIDI data from &lt;file&gt;
                    795: </td>
                    796: </table>
                    797: <table width="100%" border=0 rules="none" frame="void"
                    798:        cellspacing="0" cellpadding="0">
                    799: <tr valign="top" align="left">
                    800: <td width="10%"></td>
                    801: <td width="89%">
                    802: <b>&minus;&minus;rs232&minus;in &lt;filename&gt;</b></td>
                    803: </table>
                    804: <table width="100%" border=0 rules="none" frame="void"
                    805:        cellspacing="0" cellpadding="0">
                    806: <tr valign="top" align="left">
                    807: <td width="21%"></td>
                    808: <td width="77%">
                    809: Enable serial port support and use &lt;file&gt; as the input device
                    810: </td>
                    811: </table>
                    812: <table width="100%" border=0 rules="none" frame="void"
                    813:        cellspacing="0" cellpadding="0">
                    814: <tr valign="top" align="left">
                    815: <td width="10%"></td>
                    816: <td width="89%">
                    817: <b>&minus;&minus;rs232&minus;out &lt;filename&gt;</b></td>
                    818: </table>
                    819: <table width="100%" border=0 rules="none" frame="void"
                    820:        cellspacing="0" cellpadding="0">
                    821: <tr valign="top" align="left">
                    822: <td width="21%"></td>
                    823: <td width="77%">
                    824: Enable serial port support and use &lt;file&gt; as the output device
1.1.1.8   root      825: </td>
                    826: </table>
                    827: <a name="Disk options"></a>
                    828: <h3>Disk options</h3>
                    829: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      830:        cellspacing="0" cellpadding="0">
1.1.1.8   root      831: <tr valign="top" align="left">
                    832: <td width="10%"></td>
                    833: <td width="89%">
                    834: <b>&minus;&minus;disk-a &lt;file&gt;</b></td>
                    835: </table>
                    836: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      837:        cellspacing="0" cellpadding="0">
1.1.1.8   root      838: <tr valign="top" align="left">
                    839: <td width="21%"></td>
                    840: <td width="77%">
                    841: Set disk image for floppy drive A
                    842: </td>
                    843: </table>
                    844: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      845:        cellspacing="0" cellpadding="0">
1.1.1.8   root      846: <tr valign="top" align="left">
                    847: <td width="10%"></td>
                    848: <td width="89%">
                    849: <b>&minus;&minus;disk-b &lt;file&gt;</b></td>
                    850: </table>
                    851: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      852:        cellspacing="0" cellpadding="0">
1.1.1.8   root      853: <tr valign="top" align="left">
                    854: <td width="21%"></td>
                    855: <td width="77%">
                    856: Set disk image for floppy drive B
                    857: </td>
                    858: </table>
                    859: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      860:        cellspacing="0" cellpadding="0">
1.1.1.8   root      861: <tr valign="top" align="left">
                    862: <td width="10%"></td>
                    863: <td width="89%">
                    864: <b>&minus;d, &minus;&minus;harddrive
                    865: &lt;dir&gt;</b></td>
                    866: </table>
                    867: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      868:        cellspacing="0" cellpadding="0">
1.1.1.8   root      869: <tr valign="top" align="left">
                    870: <td width="21%"></td>
                    871: <td width="77%">
                    872: Emulate an ST harddrive (&lt;dir&gt; = root
                    873: directory)
                    874: </td>
                    875: </table>
                    876: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      877:        cellspacing="0" cellpadding="0">
1.1.1.8   root      878: <tr valign="top" align="left">
                    879: <td width="10%"></td>
                    880: <td width="89%">
                    881: <b>&minus;&minus;acsi &lt;file&gt;</b></td>
                    882: </table>
                    883: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      884:        cellspacing="0" cellpadding="0">
1.1.1.8   root      885: <tr valign="top" align="left">
                    886: <td width="21%"></td>
                    887: <td width="77%">
                    888: Emulate an ACSI hard disk with an image &lt;file&gt;
                    889: </td>
                    890: </table>
                    891: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      892:        cellspacing="0" cellpadding="0">
1.1.1.8   root      893: <tr valign="top" align="left">
                    894: <td width="10%"></td>
                    895: <td width="89%">
                    896: <b>&minus;&minus;ide &lt;file&gt;</b></td>
                    897: </table>
                    898: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      899:        cellspacing="0" cellpadding="0">
1.1.1.8   root      900: <tr valign="top" align="left">
                    901: <td width="21%"></td>
                    902: <td width="77%">
1.1.1.9   root      903: Emulate an IDE hard disk with an image &lt;file&gt;
1.1.1.8   root      904: </td>
                    905: </table>
                    906: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      907:        cellspacing="0" cellpadding="0">
1.1.1.8   root      908: <tr valign="top" align="left">
                    909: <td width="10%"></td>
                    910: <td width="89%">
                    911: <b>&minus;&minus;slowfdc &lt;bool&gt;</b></td>
                    912: </table>
                    913: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      914:        cellspacing="0" cellpadding="0">
1.1.1.8   root      915: <tr valign="top" align="left">
                    916: <td width="21%"></td>
                    917: <td width="77%">
                    918: slow down FDC emulation (deprecated)
                    919: </td>
                    920: </table>
                    921: <a name="Memory options"></a>
                    922: <h3>Memory options</h3>
                    923: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      924:        cellspacing="0" cellpadding="0">
1.1.1.8   root      925: <tr valign="top" align="left">
                    926: <td width="10%"></td>
                    927: <td width="89%">
                    928: <b>&minus;s, &minus;&minus;memsize &lt;x&gt;</b></td>
                    929: </table>
                    930: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      931:        cellspacing="0" cellpadding="0">
1.1.1.8   root      932: <tr valign="top" align="left">
                    933: <td width="21%"></td>
                    934: <td width="77%">
                    935: Set amount of emulated RAM, x = 1 to 14 MiB, or 0 for 512
                    936: KiB
                    937: </td>
                    938: </table>
                    939: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      940:        cellspacing="0" cellpadding="0">
1.1.1.8   root      941: <tr valign="top" align="left">
                    942: <td width="10%"></td>
                    943: <td width="89%">
                    944: <b>&minus;t, &minus;&minus;tos
                    945: &lt;imagefile&gt;</b></td>
                    946: </table>
                    947: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      948:        cellspacing="0" cellpadding="0">
1.1.1.8   root      949: <tr valign="top" align="left">
                    950: <td width="21%"></td>
                    951: <td width="77%">
                    952: Specify TOS ROM image to use
                    953: </td>
                    954: </table>
                    955: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      956:        cellspacing="0" cellpadding="0">
1.1.1.8   root      957: <tr valign="top" align="left">
                    958: <td width="10%"></td>
                    959: <td width="89%">
                    960: <b>&minus;&minus;cartridge &lt;imagefile&gt;</b></td>
                    961: </table>
                    962: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      963:        cellspacing="0" cellpadding="0">
1.1.1.8   root      964: <tr valign="top" align="left">
                    965: <td width="21%"></td>
                    966: <td width="77%">
                    967: Use ROM cartridge image &lt;file&gt; (only works if
                    968: GEMDOS HD emulation and extended VDI resolution are
                    969: disabled)
                    970: </td>
                    971: </table>
                    972: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      973:        cellspacing="0" cellpadding="0">
1.1.1.8   root      974: <tr valign="top" align="left">
                    975: <td width="10%"></td>
                    976: <td width="89%">
                    977: <b>&minus;&minus;memstate &lt;file&gt;</b></td>
                    978: </table>
                    979: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      980:        cellspacing="0" cellpadding="0">
1.1.1.8   root      981: <tr valign="top" align="left">
                    982: <td width="21%"></td>
                    983: <td width="77%">
                    984: Load memory snap-shot &lt;file&gt;
                    985: </td>
                    986: </table>
                    987: <a name="CPU options"></a>
                    988: <h3>CPU options</h3>
                    989: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      990:        cellspacing="0" cellpadding="0">
1.1.1.8   root      991: <tr valign="top" align="left">
                    992: <td width="10%"></td>
                    993: <td width="89%">
                    994: <b>&minus;&minus;cpulevel &lt;x&gt;</b></td>
                    995: </table>
                    996: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root      997:        cellspacing="0" cellpadding="0">
1.1.1.8   root      998: <tr valign="top" align="left">
                    999: <td width="21%"></td>
                   1000: <td width="77%">
                   1001: Specify CPU (680x0) to use (use x &gt;= 1 with EmuTOS or
                   1002: TOS &gt;= 2.06 only!)
                   1003: </td>
                   1004: </table>
                   1005: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1006:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1007: <tr valign="top" align="left">
                   1008: <td width="10%"></td>
                   1009: <td width="89%">
                   1010: <b>&minus;&minus;cpuclock &lt;x&gt;</b></td>
                   1011: </table>
                   1012: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1013:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1014: <tr valign="top" align="left">
                   1015: <td width="21%"></td>
                   1016: <td width="77%">
                   1017: Set the CPU clock (8, 16 or 32 Mhz)
                   1018: </td>
                   1019: </table>
                   1020: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1021:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1022: <tr valign="top" align="left">
                   1023: <td width="10%"></td>
                   1024: <td width="89%">
                   1025: <b>&minus;&minus;compatible &lt;bool&gt;</b></td>
                   1026: </table>
                   1027: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1028:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1029: <tr valign="top" align="left">
                   1030: <td width="21%"></td>
                   1031: <td width="77%">
                   1032: Use a more compatible but slower 68000 CPU mode
                   1033: </td>
                   1034: </table>
                   1035: <a name="Misc system options"></a>
                   1036: <h3>Misc system options</h3>
                   1037: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1038:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1039: <tr valign="top" align="left">
                   1040: <td width="10%"></td>
                   1041: <td width="89%">
                   1042: <b>&minus;&minus;machine &lt;x&gt;</b></td>
                   1043: </table>
                   1044: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1045:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1046: <tr valign="top" align="left">
                   1047: <td width="21%"></td>
                   1048: <td width="77%">
                   1049: select machine type (x = st, ste, tt or falcon)
                   1050: </td>
                   1051: </table>
                   1052: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1053:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1054: <tr valign="top" align="left">
                   1055: <td width="10%"></td>
                   1056: <td width="89%">
                   1057: <b>&minus;&minus;blitter &lt;bool&gt;</b></td>
                   1058: </table>
                   1059: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1060:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1061: <tr valign="top" align="left">
                   1062: <td width="21%"></td>
                   1063: <td width="77%">
                   1064: Enable blitter emulation (ST only)
                   1065: </td>
                   1066: </table>
                   1067: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1068:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1069: <tr valign="top" align="left">
                   1070: <td width="10%"></td>
                   1071: <td width="89%">
1.1.1.10! root     1072: <b>&minus;&minus;timer&minus;d &lt;bool&gt;</b></td>
        !          1073: </table>
        !          1074: <table width="100%" border=0 rules="none" frame="void"
        !          1075:        cellspacing="0" cellpadding="0">
        !          1076: <tr valign="top" align="left">
        !          1077: <td width="21%"></td>
        !          1078: <td width="77%">
        !          1079: Patch redundantly high Timer-D frequency set by TOS.  This about doubles
        !          1080: Hatari speed as the original Timer-D frequency causes most of the
        !          1081: interrupts.
        !          1082: </td>
        !          1083: </table>
        !          1084: <table width="100%" border=0 rules="none" frame="void"
        !          1085:        cellspacing="0" cellpadding="0">
        !          1086: <tr valign="top" align="left">
        !          1087: <td width="10%"></td>
        !          1088: <td width="89%">
1.1.1.8   root     1089: <b>&minus;&minus;dsp &lt;x&gt;</b></td>
                   1090: </table>
                   1091: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1092:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1093: <tr valign="top" align="left">
                   1094: <td width="21%"></td>
                   1095: <td width="77%">
                   1096: Falcon DSP emulation (x = none, dummy or emu, Falcon
                   1097: only)
                   1098: </td>
                   1099: </table>
                   1100: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1101:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1102: <tr valign="top" align="left">
                   1103: <td width="10%"></td>
                   1104: <td width="89%">
                   1105: <b>&minus;&minus;sound &lt;x&gt;</b></td>
                   1106: </table>
                   1107: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1108:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1109: <tr valign="top" align="left">
                   1110: <td width="21%"></td>
                   1111: <td width="77%">
1.1.1.10! root     1112: Sound frequency: 6000-50066. "off" disables the sound and speeds up
        !          1113: the emulation. To prevent extra sound artifacts, the frequency should be
        !          1114: selected so that it either matches evenly with the STE/TT/Falcon sound
        !          1115: DMA (6258, 12517, 250033, 50066 Hz) or your sound card frequencies
        !          1116: (11025, 22050, 44100 or 6000...48000 Hz).  Check what your sound card
        !          1117: supports.
1.1.1.8   root     1118: </td>
                   1119: </table>
                   1120: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1121:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1122: <tr valign="top" align="left">
                   1123: <td width="10%"></td>
                   1124: <td width="89%">
                   1125: <b>&minus;k, &minus;&minus;keymap
                   1126: &lt;file&gt;</b></td>
                   1127: </table>
                   1128: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1129:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1130: <tr valign="top" align="left">
                   1131: <td width="21%"></td>
                   1132: <td width="77%">
                   1133: load keyboard mapping from &lt;file&gt;
                   1134: </td>
                   1135: </table>
                   1136: <a name="Debug options"></a>
                   1137: <h3>Debug options</h3>
                   1138: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1139:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1140: <tr valign="top" align="left">
                   1141: <td width="10%"></td>
                   1142: <td width="89%">
1.1.1.10! root     1143: <b>&minus;D, &minus;&minus;debug</b></td>
1.1.1.8   root     1144: </table>
                   1145: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1146:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1147: <tr valign="top" align="left">
                   1148: <td width="21%"></td>
                   1149: <td width="77%">
1.1.1.10! root     1150: Toggle whether CPU exceptions invoke the debugger
1.1.1.8   root     1151: </td>
                   1152: </table>
                   1153: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1154:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1155: <tr valign="top" align="left">
                   1156: <td width="10%"></td>
                   1157: <td width="89%">
                   1158: <b>&minus;&minus;bios-intercept</b></td>
                   1159: </table>
                   1160: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1161:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1162: <tr valign="top" align="left">
                   1163: <td width="21%"></td>
                   1164: <td width="77%">
                   1165: Enable Bios/XBios interception
                   1166: </td>
                   1167: </table>
                   1168: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1169:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1170: <tr valign="top" align="left">
                   1171: <td width="10%"></td>
                   1172: <td width="89%">
                   1173: <b>&minus;&minus;trace &lt;trace1,...&gt;</b></td>
                   1174: </table>
                   1175: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1176:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1177: <tr valign="top" align="left">
                   1178: <td width="21%"></td>
                   1179: <td width="77%">
                   1180: Activate debug traces, see <b>--trace help</b> for available tracing options
                   1181: </td>
                   1182: </table>
                   1183: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1184:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1185: <tr valign="top" align="left">
                   1186: <td width="10%"></td>
                   1187: <td width="89%">
                   1188: <b>&minus;&minus;control-socket &lt;file&gt;</b></td>
                   1189: </table>
                   1190: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1191:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1192: <tr valign="top" align="left">
                   1193: <td width="21%"></td>
                   1194: <td width="77%">
                   1195: Hatari reads options from given socket at run-time
                   1196: </td>
                   1197: </table>
                   1198: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1199:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1200: <tr valign="top" align="left">
                   1201: <td width="10%"></td>
                   1202: <td width="89%">
                   1203: <b>&minus;&minus;log-file &lt;file&gt;</b></td>
                   1204: </table>
                   1205: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1206:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1207: <tr valign="top" align="left">
                   1208: <td width="21%"></td>
                   1209: <td width="77%">
                   1210: Save log output to &lt;file&gt; (default=stderr)
                   1211: </td>
                   1212: </table>
                   1213: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1214:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1215: <tr valign="top" align="left">
                   1216: <td width="10%"></td>
                   1217: <td width="89%">
                   1218: <b>&minus;&minus;log-level &lt;x&gt;</b></td>
                   1219: </table>
                   1220: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1221:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1222: <tr valign="top" align="left">
                   1223: <td width="21%"></td>
                   1224: <td width="77%">
                   1225: Log output level (x=debug/todo/info/warn/error/fatal)
                   1226: </td>
                   1227: </table>
                   1228: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1229:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1230: <tr valign="top" align="left">
                   1231: <td width="10%"></td>
                   1232: <td width="89%">
                   1233: <b>&minus;&minus;alert-level &lt;x&gt;</b></td>
                   1234: </table>
                   1235: <table width="100%" border=0 rules="none" frame="void"
1.1.1.9   root     1236:        cellspacing="0" cellpadding="0">
1.1.1.8   root     1237: <tr valign="top" align="left">
                   1238: <td width="21%"></td>
                   1239: <td width="77%">
                   1240: Show dialog for log messages above given level
                   1241: </td>
                   1242: </table>
1.1.1.10! root     1243: <table width="100%" border=0 rules="none" frame="void"
        !          1244:        cellspacing="0" cellpadding="0">
        !          1245: <tr valign="top" align="left">
        !          1246: <td width="10%"></td>
        !          1247: <td width="89%">
        !          1248: <b>&minus;&minus;run-vbls &lt;x&gt;</b></td>
        !          1249: </table>
        !          1250: <table width="100%" border=0 rules="none" frame="void"
        !          1251:        cellspacing="0" cellpadding="0">
        !          1252: <tr valign="top" align="left">
        !          1253: <td width="21%"></td>
        !          1254: <td width="77%">
        !          1255: Exit after X VBLs
        !          1256: </td>
        !          1257: </table>
1.1.1.8   root     1258: 
1.1.1.5   root     1259: 
1.1.1.7   root     1260: <p>Type <span class="commandline">hatari --help</span> to list all
                   1261: the command line options supported by a given version of Hatari.</p>
                   1262: 
1.1.1.5   root     1263: <a name="Using the emulated system"></a><h2>Using the emulated system</h2>
                   1264: 
1.1       root     1265: <p> Once you've started Hatari succesfully, you can use the emulator as
1.1.1.10! root     1266: an almost complete Atari ST computer system. </p>
1.1.1.5   root     1267: 
                   1268: <a name="The GUI"></a><h3>The GUI</h3>
                   1269: 
1.1.1.3   root     1270: <p>Press <span class="key">F12</span> to enter the GUI. Navigate it
                   1271: with the mouse.
1.1       root     1272: The GUI is rather self explanatory.</p>
1.1.1.5   root     1273: 
1.1.1.8   root     1274: <a name="The Main Menu"></a><h4 class="gui">The Main Menu</h4>
1.1.1.5   root     1275: 
                   1276: <div class="floatimage">
1.1.1.10! root     1277: <img src="images/main.png" width="500" height="304" alt="Hatari's GUI - the main menu">
1.1.1.5   root     1278: </div>
                   1279: 
                   1280: <p>From the main menu, you can reach the other setup dialogs by clicking on
                   1281: the appropriate buttons.</p>
                   1282: 
                   1283: <p>You can load the current settings from a configuration file by clicking
1.1.1.10! root     1284: on the <span class="button">Load&nbsp;config</span> button and you can save the
        !          1285: current settings to a configuration file with the
        !          1286: <span class="button">Save&nbsp;config</span> button.</p>
1.1.1.5   root     1287: 
1.1.1.10! root     1288: <p>Click <span class="button">OK</span> to go back to the emulated
1.1.1.5   root     1289: ST. All changed options will be applied.</p>
1.1.1.10! root     1290: <p>Check the <span class="button">Reset&nbsp;machine</span> button if you want
        !          1291: the emulated machine to perform a cold reset. This is equal to
1.1.1.5   root     1292: switching the power off and on again on a real ST.
1.1.1.3   root     1293: </p>
                   1294: <p>Click <span class="button">Quit</span> to terminate Hatari and
                   1295: return to the host OS.</p>
                   1296: <p>Click <span class="button">Cancel</span> to abandon any changes
1.1.1.5   root     1297: that you have made.</p>
                   1298: 
1.1.1.10! root     1299: 
        !          1300: <a name="The File Selector Dialog"></a><h4 class="gui">The File Selector Dialog</h4>
        !          1301: 
        !          1302: <div class="floatimage">
        !          1303: <img src="images/fileselector.png" width="640" height="399" alt="Hatari's GUI - the fileselector">
        !          1304: </div>
        !          1305: 
        !          1306: <p>
        !          1307:  The file selector dialog appears whenever you are prompted to choose a file
        !          1308:  or folder.
        !          1309: </p>
        !          1310: <p>
        !          1311:  To enter a folder or choose a file, simply click on the entry in the main box
        !          1312:  of the dialog. You can use the arrows at the right, the cursor up and down
        !          1313:  keys and the page up and down keys to navigate through the list.
        !          1314: </p>
        !          1315: <p>
        !          1316:  You can use the three buttons in the upper right corner for additional folder
        !          1317:  navigation. Use the <span class="button">..</span> button to go up one level
        !          1318:  in the directory tree. Use the <span class="button">~</span> button to return
        !          1319:  to your home directory. The <span class="button">/</span> button can be used
        !          1320:  to go to the root directory of the file system.
        !          1321: </p>
        !          1322: 
        !          1323: 
1.1.1.8   root     1324: <a name="The System Dialog"></a><h4 class="gui">The System Dialog</h4>
1.1.1.5   root     1325: 
                   1326: <div class="floatimage">
1.1.1.10! root     1327: <img src="images/system.png" width="360" height="384" alt="Hatari's GUI - the system dialog">
1.1.1.5   root     1328: </div>
                   1329: 
1.1.1.7   root     1330: <p>
                   1331:  First you can select the CPU type here. Here are some important hints for
                   1332:  choosing the correct CPU type:
                   1333: </p>
                   1334: <ul>
                   1335:  <li>
                   1336:   Atari ST and STE have only been shipped with a 68000 CPU, so for best
                   1337:   compatibility with old programs, choose this CPU type.
                   1338:  </li>
                   1339:  <li>
                   1340:   Atari TT and Falcon computers were using the 68030 CPU, so you should switch
                   1341:   either to 68020 or 68020+FPU when you want to use TT or Falcon mode.
                   1342:   (The 68020 and 68030 were pretty much the same apart from some minor details).
                   1343:  </li>
                   1344:  <li>
                   1345:   TOS 1.0x only works with 68000, while TOS 3.0x and 4.0x work only with a CPU
                   1346:   &gt;= 68020.
                   1347:  </li>
                   1348:  <li>
                   1349:   68010 and 68040 have never been used in official Atari computers, so don't
                   1350:   use these CPU types unless you've got some good reasons.
                   1351:  </li>
                   1352: </ul>
                   1353: 
                   1354: <p>
                   1355:  Beside the CPU type, you can also choose the machine type to emulate.
                   1356:  The ST was the very first 16/32-bit computer from Atari. Most older games
                   1357:  and demos require an ST. The STE was introduced some years later and had
                   1358:  some more advanced hardware features. There are not that many demos or
                   1359:  games that really require an STE but since most normal ST games/demos also
                   1360:  work with an STE, it's normally safe to always work in STE mode.
                   1361:  <br>
                   1362:  TT and Falcon are more advanced, but they are not as compatible to the ST as
1.1.1.8   root     1363:  the STE was. Therefore many old games and demos do not work with these machine
                   1364:  types anymore. There were only very few programs that were made for the TT
1.1.1.7   root     1365:  exclusively, while there were some interesting games and demos specially made
                   1366:  for the Falcon.
                   1367:  <em>Note:</em> TT and Falcon emulation are very incomplete. They may not work
                   1368:  very well.
                   1369: </p>
                   1370: <p>
                   1371:  For STE emulation a STE compatible TOS image, e.q. version 1.06, 1.62 or
                   1372:  2.x, is strongly recommended. For TT emulation you need TOS 3.0x and for Falcon
                   1373:  emulation you need TOS 4.0x. EmuTOS can be used on all machine types.
                   1374: </p>
                   1375: <p>
                   1376:  Select the CPU clock you want to use. 8Mhz is ST standard and the most
                   1377:  compatible. Use 16MHz for Mega STE and Falcon emulation.
                   1378:  The CPU in the TT was clocked with 32 MHz.
                   1379: </p>
1.1.1.5   root     1380: <p>With the &quot;Slower but more compatible CPU&quot; option, you can enable
                   1381:  the emulation of 68k address errors and the CPU prefetch buffer. This is needed
                   1382:  for best compatibility, but it slows down emulation a little bit so you can
                   1383:  disable it if you don't need it.</p>
1.1.1.10! root     1384: <p>
        !          1385:  For Falcon mode, you can choose whether you want to enable DSP emulation,
        !          1386:  fake it or completely disable it. Most Falcon programs only play sound or work
        !          1387:  correctly when you enable the DSP emulation, but it needs a lot of host CPU
        !          1388:  power (more than 2 GHz). So if you have a slow host CPU, you can try if your
        !          1389:  Falcon program also runs with DSP disabled or in &quot;dummy&quot; mode.
        !          1390:  Note that you can not change this option while the DSP based program already
        !          1391:  runs.
        !          1392: </p>
1.1.1.5   root     1393: <p>You can also enable/disable Blitter emulation here. The Blitter is a custom
                   1394:  chip that accelerates some graphical operations. This switch only toggles the
                   1395:  Blitter in plain ST mode. In STE mode, the Blitter is always enabled (since all
                   1396:  STEs have been sold with a Blitter chip).</p>
                   1397: <p>If you enable the &quot;Real time clock emulation&quot; switch, a RTC will
                   1398:  be emulated based on the time of the host computer. Note that you need at least
                   1399:  TOS 1.02 for proper RTC emulation, TOS 1.00 does not support this.</p>
                   1400: <p>The Timer-D patch changes the Timer-D initialization from TOS. TOS uses
                   1401:  the MFP timer D as a baudrate generator for RS232. However, the TOS default
                   1402:  value slows down the emulation. The patch gives you a better performance.
1.1.1.7   root     1403:  It is normally safe to enable the patch, but if you encounter a program that
1.1.1.5   root     1404:  does not work, you can try to disable the patch to see if it works then.</p>
1.1.1.3   root     1405: <p><em>NOTE:</em> These parameters are very sensitive to the emulated
                   1406: ST and it is strongly recommended to
1.1       root     1407: reset the emulated ST after changing these options.</p>
1.1.1.5   root     1408: 
                   1409: 
1.1.1.10! root     1410: <a name="The Floppy Disks Dialog"></a><h4 class="gui">The Floppy Disks Dialog</h4>
1.1.1.5   root     1411: 
1.1.1.10! root     1412: <div class="floatimage">
        !          1413: <img src="images/floppydisks.png" width="640" height="320" alt="Hatari's GUI - the floppy disks dialog">
1.1.1.5   root     1414: </div>
                   1415: 
1.1.1.10! root     1416: <p>
        !          1417:  This dialog can be used to choose which floppy disks should be emulated
        !          1418:  in the disk drives. You can use most standard Atari ST disk image files.
        !          1419:  You may select and browse also zipped disk images. See the chapter
        !          1420:  <a href="#Floppy disk images">&quot;Floppy disk images&quot;</a> for details.
        !          1421: </p>
        !          1422: <p>
        !          1423:  Click on the button <span class="button">Browse</span> next to the
        !          1424:  A: and B: option to go to the fileselector to choose a disk image for the
        !          1425:  corresponding drive.
        !          1426: </p>
1.1.1.3   root     1427: <p>Click on <span class="button">Eject</span> to eject a disk image
                   1428: from the emulated drive. The emulated ST will act as if had no floppy
                   1429: disk in its drive.</p>
                   1430: <p>You can specify a default directory where Hatari will start to
                   1431: browse the filesystem.</p>
1.1.1.2   root     1432: <p>
1.1.1.6   root     1433: Check the "Auto insert B" option if you want Hatari to be smart and
                   1434: insert the second disk of a two disk game automatically.
                   1435: Some games then use the second drive automatically.
                   1436: In the case that a game is not able to find the disk in the second drive,
                   1437: you have to insert the second disk in drive A: manually when prompted.
                   1438: <br>
                   1439: <em>NOTE:</em> This option only works properly if the file name of the
                   1440: first disks ends with an 'a' before the extension and the second disk name
                   1441: ends with a 'b'.
1.1.1.2   root     1442: </p>
1.1.1.10! root     1443: <p>
        !          1444:  Select if you want to use slow FDC (Floppy Disk Controller) emulation.
        !          1445:  &quot;Slow floppy access&quot; is normally not required, except for some few
        !          1446:  slideshows / intros which run too fast without this option.
        !          1447: </p>
        !          1448: <p>
        !          1449:  You can choose if you want Hatari to write-protect your disks. Atari ST virii
        !          1450:  can spread on disk images too so it might be a good idea to enable the write
        !          1451:  protection option. However you can't save highscores or games to your disk
        !          1452:  images in that case.
        !          1453: </p>
        !          1454: 
        !          1455: <div class="floatimage">
        !          1456: <img src="images/newfloppy.png" width="280" height="192" alt="Hatari's GUI - the new floppy dialog">
        !          1457: </div>
        !          1458: 
        !          1459: <p>
        !          1460:  If you need to create a new blank disk image, click on
        !          1461:  <span class="button">Create&nbsp;blank&nbsp;image</span>.
        !          1462:  Parameters for the new image can be set in the following dialog.
        !          1463:  Click on <span class="button">Create</span> to save the new image or on
        !          1464:  <span class="button">Back</span> to return to the disk dialog.
        !          1465: </p>
        !          1466: <p>
        !          1467:  After clicking <span class="button">Create</span>, a fileselector
        !          1468:  appears. You can browse the filesystem now. Select the target directory,
        !          1469:  click beside &quot;File:&quot; and type in a name for the new disk image.
        !          1470:  The name should terminate with .st or .msa.
        !          1471: </p>
        !          1472: <p>
        !          1473:  Hatari can currently create plain .ST and .MSA disk images exclusively.
        !          1474: </p>
        !          1475: 
        !          1476: 
        !          1477: <a name="The Hard Disks Dialog"></a><h4 class="gui">The Hard Disks Dialog</h4>
        !          1478: 
        !          1479: <div class="floatimage">
        !          1480: <img src="images/harddisks.png" width="640" height="256" alt="Hatari's GUI - the hard disks dialog">
        !          1481: </div>
        !          1482: 
        !          1483: <p>
        !          1484:  This dialog can be used to change the harddisk settings.
        !          1485: </p>
        !          1486: <p>
        !          1487:  You can select a harddrive image for ACSI or IDE hard drive emulation via
        !          1488:  image file here or you may select a directory of your local filesystem to be
        !          1489:  emulated as the harddrive of the emulated system.
        !          1490: </p>
        !          1491: <p>
        !          1492:  Check "Boot from HD" if you want Hatari to execute the AUTO folder
        !          1493:  on the harddrive.
        !          1494:  This option is checked by default if you specify a harddrive image or a
        !          1495:  directory via the command line.
        !          1496: </p>
        !          1497: <p>
        !          1498:  Note that for IDE hard disk emulation you also need a TOS version &gt;= 2.05.
        !          1499:  And ACSI hard disk emulation does not work with TOS 4.0x in Falcon mode.
        !          1500: </p>
        !          1501: 
1.1.1.5   root     1502: 
1.1.1.8   root     1503: <a name="The Memory Dialog"></a><h4 class="gui">The Memory Dialog</h4>
1.1.1.5   root     1504: 
1.1.1.8   root     1505: <div class="floatimage">
                   1506: <img src="images/memory.png" width="398" height="349" alt="Hatari's GUI - the memory dialog">
1.1.1.5   root     1507: </div>
                   1508: 
1.1.1.3   root     1509: <p>You can select the amount of RAM for the emulated ST here. Only
                   1510: amounts that were valid on a real unmodified STFM can be selected.</p>
                   1511: <p><em>Note:</em> This option is critical and you are strongly advised
                   1512: to reset the emulated ST
1.1       root     1513: when changing this option.</p>
1.1.1.2   root     1514: <p>Here you will find the options to save memory snapshots as well.</p>
1.1.1.3   root     1515: <p>Click on <span class="button">Save</span> to save a memory snapshot
                   1516: to file. You can select a new filename here.</p>
                   1517: <p>Click on <span class="button">Restore</span> to restore a memory
                   1518: snapshot from a file. Use the fileselector to select the snapshot to be
                   1519: restored.</p>
                   1520: <p><em>NOTE:</em> Memory snapshots are not interchangeable between
                   1521: different versions of Hatari. E.q. if you compile a newer Hatari, you
                   1522: cannot load your old memory snapshots back.</p>
                   1523: 
1.1.1.5   root     1524: 
1.1.1.8   root     1525: <a name="The ROM Dialog"></a><h4 class="gui">The ROM Dialog</h4>
                   1526: 
                   1527: <div class="floatimage">
                   1528: <img src="images/tos.png" width="519" height="367" alt="Hatari's GUI - the ROM dialog">
1.1.1.5   root     1529: </div>
                   1530: 
1.1.1.3   root     1531: <p>Here you can select the TOS image to use. Click on <span
1.1.1.5   root     1532:  class="button">Browse</span> to select it via the fileselector.
1.1.1.3   root     1533: You can also select an optional cartridge image to use. Click on <span
1.1.1.4   root     1534:  class="button">Browse</span> to select one via the fileselector. Click on <span
1.1.1.5   root     1535:  class="button">Eject</span> to disconnect the custom cartridge image.
                   1536: </p>
1.1.1.7   root     1537: <p>
                   1538: For ST mode, use TOS 1.00, 1.02, 1.04 or 2.06.
                   1539: For STE mode, use TOS 1.06, 1.62, 2.05 or 2.06.
                   1540: If you want to use the TT mode, you must specify a TOS 3.06 image here.
                   1541: And in Falcon mode, you have to use either TOS 4.00, 4.02, 4.04 or 4.92.
                   1542: However, you should always use TOS 4.04 for Falcon mode, it's the most common one.
                   1543: Also note that TOS 4.92 can not be booted from a boot disk (like it's done on a
                   1544: real Falcon), you have to specify it directly in the TOS ROM setup dialog here.
                   1545: </p>
                   1546: <p>
                   1547: Keep in mind that any custom cartridge image will not work together with
1.1.1.5   root     1548: GEMDOS hard disk emulation or the VDI extended resolution emulation
1.1.1.3   root     1549: since some additional driver code will be used in the cartridge memory
1.1.1.7   root     1550: space for these emulations.
                   1551: </p>
                   1552: <p>
                   1553: <em>Note:</em> These options are critical and you are strongly
1.1.1.3   root     1554: advised to reset the emulated ST
1.1.1.7   root     1555: when changing one of these option.
                   1556: </p>
1.1.1.5   root     1557: 
1.1.1.8   root     1558: 
                   1559: <a name="The Joystick Dialog"></a><h4 class="gui">The Joystick Dialog</h4>
1.1.1.5   root     1560: 
                   1561: <div class="floatimage">
                   1562: <img src="images/joystick.png" width="320" height="288" alt="Hatari's GUI - the joystick dialog">
                   1563: </div>
                   1564: 
                   1565: <p>In this dialog, you can configure the emulated joysticks.
                   1566: With the upper two arrows, you can choose the joystick which you want to
                   1567: configure.</p>
1.1.1.3   root     1568: <p>Joystick 1 is the normal ST joystick port and 99.9% of all ST games
1.1.1.5   root     1569: use this port.
                   1570: Joystick 0 emulates a joystick plugged into the ST mouse port
                   1571: and is often used in games for two players.</p>
                   1572: <p>With STE joypad A and B, you can enable the emulation of Jaguar joypads
                   1573: which are plugged in the enhanced joystick ports of the Atari STE.
                   1574: Only very few STE games support these joypads, so you often won't need this.</p>
                   1575: <p>Finally, Hatari also emulates joysticks which were plugged on the parallel
                   1576: port with a special adapter on a real ST. These were used in some few
                   1577: multi-player games like &quot;Gauntlet 2&quot;.</p>
                   1578: <p>For each ST joystick, choose whether you want to disable it,
                   1579: use the keyboard for emulation or use a real PC joystick.</p>
                   1580: <p>For keyboard emulation, you can select the keys by pressing the
1.1.1.10! root     1581: <span class="button">Define&nbsp;keys</span> button. You will be prompted to press
1.1.1.5   root     1582: the keys for up, down, left, right and fire.</p>
                   1583: <p>If you want to use a real PC joystick for the emulation, you should connect
                   1584: it to your PC before you start Hatari. Then you can choose the joystick with
                   1585: the two lower arrows.</p>
                   1586: <p>Check the &quot;Enable autofire&quot; option if you are too lazy to pound
                   1587: on the fire button in shoot'em-up games. However, this option only works with
                   1588: certain games. In some other games, it gets worse if you enable this option.</p>
                   1589: <p>See also the chapter "Emulated Joystick" for details.</p>
                   1590: 
1.1.1.8   root     1591: 
                   1592: <a name="The Screen Dialog"></a><h4 class="gui">The Screen Dialog</h4>
1.1.1.5   root     1593: 
1.1.1.7   root     1594: <div class="floatimage">
1.1.1.8   root     1595: <img src="images/screen.png" width="498" height="399" alt="Hatari's GUI - the screen dialog">
1.1.1.5   root     1596: </div>
1.1       root     1597: 
1.1.1.7   root     1598: <p>
                   1599:  Here you control the video output of the emulated Atari.
                   1600: </p>
                   1601: <p>
                   1602:  Check &quot;Fullscreen&quot; to run Hatari fullscreen, default is windowed.
                   1603: </p>
                   1604: <p>
                   1605:  &quot;Use Borders&quot; toggles the displaying of the borders around the ST
                   1606:  screen. Some few demos/games use the borders for displaying additional
                   1607:  graphics. However, when you enable this option, it increases CPU computing
                   1608:  time, so you should not enable it if you have a slow computer.
                   1609:  Please note that this option also only affects the ST and STE mode, TT and
                   1610:  Falcon modes are always displayed without borders.
                   1611: </p>
                   1612: <p>
                   1613:  &quot;Zoom ST-Low res.&quot; controls whether Hatari doubles the low
                   1614:  resolutions. For example Hatari then zooms the ST low resolution 320x200 to
                   1615:  640x400 and it doubles 384x267 (ST low with borders) to 768x534.
                   1616:  Note that zooming also takes a lot of CPU computing time and should not be
                   1617:  enabled on slow computers.
                   1618: </p>
                   1619: <p>
1.1.1.8   root     1620:  &quot;Statusbar&quot; toggles the statusbar at the bottom of the screen.
                   1621:  The statusbar shows the floppy drive LEDs, the current frameskip value,
                   1622:  the machine type including TOS version and memory size, and whether
                   1623:  recording is currently active.
1.1.1.7   root     1624: </p>
                   1625: <p>
                   1626:  The &quot;Frame Skip&quot; option can be set to speed up the emulator
1.1.1.8   root     1627:  if it is running too slow on your system. Disable frame-skip if you have
                   1628:  a fast computer. When selecting 1, 2 or 4, drawing of corresponding number
                   1629:  of frames will be skipped after each frame actually shown by Hatari.
                   1630:  Select &quot;Auto&quot; to let the emulator to decide whether, and
                   1631:  how many frames will be skipped.<br>
                   1632:  <em>Note:</em> The frameskip option also affects the frame rate of the
                   1633:  screen animation recording!
1.1.1.7   root     1634: </p>
                   1635: <p>
                   1636:  You can select which sort of monitor to use. This option depends on the
                   1637:  machine type which you have selected in the &quot;System options&quot;
                   1638:  dialog. In ST and STE mode, you can choose between monochrome mode (select
                   1639:  &quot;Mono&quot;) and color mode (select one of the other monitor types).
                   1640:  Note that when you select &quot;TV&quot; and use zoomed low resolution or
                   1641:  switch to ST medium resolution, you will get a TV-like screen rendering
                   1642:  which is a little bit faster but darker compared to the normal &quot;RGB&quot;
                   1643:  monitor mode. Switching between mono and a color monitor acts like a monitor
                   1644:  switch on a real ST - so beware, this will reboot your emulated system!<br>
                   1645:  In TT mode, you can only choose between TT-high resolution (&quot;Mono&quot;)
                   1646:  and normal modes (select one of the other monitor types).
                   1647:  Finally the Falcon mode supports all four types of monitors. Note that most
                   1648:  Falcon demos/games require a RGB or TV mode and do not work with VGA.
                   1649: </p>
                   1650: <p>
1.1.1.3   root     1651: Extended GEM resolutions will emulate some sort of extended graphics
                   1652: card in the emulated ST giving you larger resolutions and a higher
                   1653: colordepth in GEM. Select a resolution and color depth. Check to
                   1654: activate. It will disable all other video options mentioned above.
                   1655: Uncheck to get back to a normal ST behaviour.<br>
                   1656: <em>Note:</em> Using an extended resolution will only work with GEM
                   1657: conformant applications. 99% of all games and demos will not run if you
1.1.1.7   root     1658: activate any extended resolution here.
                   1659: </p>
1.1.1.10! root     1660: <p>Click <span class="button">Capture&nbsp;Screen</span> to create a
1.1.1.8   root     1661: screenshot in PNG (or BMP) format to the current working directory or click
1.1.1.10! root     1662: <span class="button">Record&nbsp;Animation</span> to record a sequence of single
1.1.1.3   root     1663: screenshots. You can opt to only record new movie frames when the
                   1664: screen content really changed.
1.1       root     1665: </p>
1.1.1.5   root     1666: 
1.1.1.8   root     1667: 
                   1668: <a name="The Keyboard Dialog"></a><h4 class="gui">The Keyboard Dialog</h4>
1.1.1.5   root     1669: 
                   1670: <div class="floatimage">
1.1.1.8   root     1671: <img src="images/keyboard.png" width="459" height="223" alt="Hatari's GUI - the keyboard dialog">
1.1.1.5   root     1672: </div>
                   1673: 
                   1674: <p>Here you can select the keyboard mapping to use. Two different mappings
                   1675:  called &quot;Symbolic&quot; and &quot;Scancode&quot; are predefined.</p>
                   1676: <p>&quot;Symbolic&quot; tries to map the symbolic values of your PC keys
                   1677:  to the ST keys. It should be working pretty good on all systems as long
                   1678:  as your keyboard layout looks close to the standard english keyboard
                   1679:  layout. However, you might experience some problems with special keys like
                   1680:  brackets etc.</p>
                   1681: <p>&quot;Scancode&quot; uses the scancode values of your PC keys for keyboard
                   1682:  mapping. This only works on certain architectures like Linux where the
                   1683:  scancodes are similar to the ST scancodes (e.g. it does not work on Mac OS X).
                   1684:  If it works on your system, this often gives better results than the symbolic
                   1685:  mapping. Note that you also need a TOS version with the right language
                   1686:  (e.g. use a French TOS if you are using a French keyboard).</p>
                   1687: <p>You can also load a custom keyboard mapping file here if you wish. Please
1.1.1.6   root     1688:  note that the custom keyboard mapping will use the &quot;symbolic&quot;
                   1689:  mapping for all keys that are not defined by your map file. Have a look
                   1690:  at the supplied example mapfile (keymap-sample.txt) to see how to create
                   1691:  your own keyboard mapping.</p>
1.1.1.8   root     1692: <p>
                   1693:  When the emulator runs in fast forward mode, and you want to type text,
                   1694:  it can be annoying that the emulated system detects multiple key events
                   1695:  due to the key repetition of the emulated system. To avoid this you can
                   1696:  disable the key repetition in fast forward mode here.
                   1697: </p>
1.1.1.5   root     1698: 
                   1699: 
1.1.1.8   root     1700: <a name="The Sound Dialog"></a><h4 class="gui">The Sound Dialog</h4>
                   1701: 
                   1702: <div class="floatimage">
1.1.1.10! root     1703: <img src="images/sound.png" width="380" height="384" alt="Hatari's GUI - the sound dialog">
1.1.1.5   root     1704: </div>
                   1705: 
1.1.1.2   root     1706: <p>Here you can control the sound subsystem.</p>
1.1.1.3   root     1707: <p>Check if you want emulated sound at all. Emulation is faster if
                   1708: sound emulation is turned off.</p>
1.1.1.10! root     1709: <p>
        !          1710:  Nine frequencies from low to high quality are available. Experiment a
        !          1711:  little bit to find out which fits best for your setup.
        !          1712:  For most modern computers, 44100 Hz or 48000 Hz should be fine.
        !          1713:  For older or slower host systems, you should use a lower frequency.
        !          1714:  12517, 250033 and 50066 Hz are frequencies supported by
        !          1715:  the STE/TT/Falcon sound DMA.
        !          1716: </p>
        !          1717: <p>
        !          1718:  You can select to record a piece of sound here.
        !          1719:  Use the <span class="button">Browse</span> button to choose a file.
        !          1720:  The file name extension that you use (.WAV or .YM) determines in which format
        !          1721:  the sound is recorded in. The <span class="button">Record&nbsp;sound</span> button
        !          1722:  is a toggle so you will need to return to the GUI to switch sound recording off
        !          1723:  again (or to use the keyboard shortcut for that).
        !          1724: </p>
1.1.1.5   root     1725: 
                   1726: 
1.1.1.8   root     1727: <a name="The Devices Dialog"></a><h4 class="gui">The Devices Dialog</h4>
1.1.1.5   root     1728: 
1.1.1.8   root     1729: <div class="floatimage">
1.1.1.10! root     1730: <img src="images/devices.png" width="520" height="383" alt="Hatari's GUI - the device dialog">
1.1.1.5   root     1731: </div>
                   1732: 
1.1.1.10! root     1733: <p>Check the first checkmark to enable experimental printer support.
        !          1734: See the <a href="#Emulated printer">Emulated printer</a> section for
        !          1735: details.</p>
1.1.1.8   root     1736: 
1.1.1.3   root     1737: <p>As Hatari currently only supports printing to file, click on <span
1.1.1.10! root     1738:  class="button">Browse</span> to select the file to print to. You can
1.1.1.3   root     1739: enter a new filename as well.</p>
1.1.1.10! root     1740: <p>Check the second checkmark to enable experimental RS232 support.
        !          1741: The RS232 device is configured according to the settings of
1.1.1.3   root     1742: the emulated RS232 of the Atari ST. This means Hatari will
                   1743: automatically use baudrate and handshaking as configured for the
                   1744: emulated ST.</p>
1.1.1.10! root     1745: <p>Click on <span class="button">Browse</span> to select suitable
        !          1746: device files for serial input and output.  On Linux a good choice is
        !          1747: /dev/ttyS0 or /dev/ttyS1.
        !          1748: </p>
        !          1749: <p>Check the third checkmark to enable experimental MIDI support.
        !          1750: Click on <span class="button">Browse</span> to select a suitable
        !          1751: MIDI device files for MIDI input and output.</p>
        !          1752: <p><span class="file">midi-linux.txt</span> file explains how to
        !          1753: select the correct MIDI device file, how to set up softare sound
        !          1754: synthetizing on Linux (using Alsa), if your sound card/driver doesn't
        !          1755: support MIDI, and how to set up MIDI networking between multiple
        !          1756: Hatari instances.
1.1.1.2   root     1757: </p>
1.1.1.5   root     1758: 
1.1.1.8   root     1759: 
                   1760: <a name="Keyboard shortcuts"></a><h3 style="clear:both;">Keyboard shortcuts</h3>
1.1.1.5   root     1761: 
1.1       root     1762: <p> While the emulator is running, you can activate or toggle various
1.1.1.6   root     1763: features via Hatari keyboard shortcuts. Below are listed the default
                   1764: shortcut key bindings:</p>
1.1.1.3   root     1765: <table border="1" cellpadding="3">
1.1       root     1766:   <tbody>
                   1767:     <tr class="backdropped">
                   1768:       <td align="center">Shortcut</td>
                   1769:       <td align="center">Purpose</td>
                   1770:     </tr>
                   1771:     <tr>
1.1.1.2   root     1772:       <td align="center"><span class="key">ALTGR+a</span></td>
                   1773:       <td align="center">record animation</td>
                   1774:     </tr>
                   1775:     <tr>
1.1       root     1776:       <td align="center"><span class="key">ALTGR+g</span></td>
1.1.1.8   root     1777:       <td align="center">grab a screenshot</td>
1.1       root     1778:     </tr>
                   1779:     <tr>
1.1.1.2   root     1780:       <td align="center"><span class="key">ALTGR+i</span></td>
1.1.1.8   root     1781:       <td align="center">boss key: leave full screen mode, pause Hatari
                   1782: and iconify its window</td>
1.1.1.2   root     1783:     </tr>
                   1784:     <tr>
1.1       root     1785:       <td align="center"><span class="key">ALTGR+j</span></td>
1.1.1.8   root     1786:       <td align="center">toggle joystick emulation via cursor keys
                   1787: on/off between ports 0 and 1</td>
1.1       root     1788:     </tr>
                   1789:     <tr>
                   1790:       <td align="center"><span class="key">ALTGR+m</span></td>
1.1.1.8   root     1791:       <td align="center">(un-)lock the mouse into the window</td>
1.1       root     1792:     </tr>
                   1793:     <tr>
                   1794:       <td align="center"><span class="key">ALTGR+r</span></td>
1.1.1.2   root     1795:       <td align="center">(warm) reset the ST</td>
1.1       root     1796:     </tr>
                   1797:     <tr>
                   1798:       <td align="center"><span class="key">ALTGR+c</span></td>
1.1.1.3   root     1799:       <td align="center">coldreset the ST (same as the original power
                   1800: switch)</td>
1.1       root     1801:     </tr>
                   1802:     <tr>
1.1.1.8   root     1803:       <td align="center"><span class="key">ALTGR+d</span></td>
                   1804:       <td align="center">open dialog to select/change disk A</td>
                   1805:     </tr>
                   1806:     <tr>
1.1.1.2   root     1807:       <td align="center"><span class="key">ALTGR+s</span></td>
                   1808:       <td align="center">enable/disable sound</td>
                   1809:     </tr>
                   1810:     <tr>
1.1       root     1811:       <td align="center"><span class="key">ALTGR+q</span></td>
                   1812:       <td align="center">quit the emulator</td>
                   1813:     </tr>
                   1814:     <tr>
1.1.1.2   root     1815:       <td align="center"><span class="key">ALTGR+x</span></td>
1.1.1.10! root     1816:       <td align="center">toggle normal speed/fast forward</td>
1.1.1.2   root     1817:     </tr>
                   1818:     <tr>
                   1819:       <td align="center"><span class="key">ALTGR+y</span></td>
                   1820:       <td align="center">enable/disable sound recording</td>
                   1821:     </tr>
                   1822:     <tr>
1.1.1.7   root     1823:       <td align="center"><span class="key">ALTGR+k</span></td>
                   1824:       <td align="center">save memory snapshot</td>
                   1825:     </tr>
                   1826:     <tr>
                   1827:       <td align="center"><span class="key">ALTGR+l</span></td>
                   1828:       <td align="center">load memory snapshot</td>
                   1829:     </tr>
                   1830:     <tr>
1.1.1.5   root     1831:       <td align="center"><span class="key">ALTGR+f or F11</span></td>
1.1.1.8   root     1832:       <td align="center">toggle between fullscreen and windowed mode</td>
1.1       root     1833:     </tr>
                   1834:     <tr>
1.1.1.5   root     1835:       <td align="center"><span class="key">ALTGR+o or F12</span></td>
1.1.1.8   root     1836:       <td align="center">activate the options GUI</td>
1.1       root     1837:     </tr>
                   1838:     <tr>
                   1839:       <td align="center"><span class="key">PAUSE</span></td>
1.1.1.10! root     1840:       <td align="center">pause emulation</td>
        !          1841:     </tr>
        !          1842:     <tr>
        !          1843:       <td align="center"><span class="key">AltGr+PAUSE</span></td>
        !          1844:       <td align="center">invoke the internal Hatari debugger</td>
1.1       root     1845:     </tr>
                   1846:   </tbody>
                   1847: </table>
1.1.1.5   root     1848: 
1.1.1.6   root     1849: <p>You can change the key bindings from the Hatari configuration file.
1.1.1.10! root     1850: The required key values can be seen in the SDL_keysym.h include file
1.1.1.8   root     1851: (usually in /usr/include/SDL/).</p>
1.1.1.6   root     1852: 
                   1853: 
1.1.1.5   root     1854: <a name="Emulated Atari ST keyboard"></a><h3>Emulated Atari ST keyboard</h3>
                   1855: 
1.1       root     1856: <p> All other keys on the keyboard act as the normal Atari ST keys so
                   1857: pressing SPACE on your PC will result in an emulated press of the SPACE
                   1858: key on the ST. The following keys have special meanings: </p>
1.1.1.3   root     1859: <table border="1" cellpadding="3">
1.1       root     1860:   <tbody>
                   1861:     <tr class="backdropped">
                   1862:       <td align="center">Key</td>
                   1863:       <td align="center">Meaning</td>
                   1864:     </tr>
                   1865:     <tr>
                   1866:       <td align="center"><span class="key">Alt</span></td>
                   1867:       <td align="center">will act as the ST's ALTERNATE key</td>
                   1868:     </tr>
                   1869:     <tr>
                   1870:       <td align="center"><span class="key">left CTRL</span></td>
                   1871:       <td align="center">will act as the ST's CONTROL key</td>
                   1872:     </tr>
                   1873:     <tr>
1.1.1.2   root     1874:       <td align="center"><span class="key">Print Screen</span></td>
1.1       root     1875:       <td align="center">will emulate the ST's HELP key</td>
                   1876:     </tr>
                   1877:     <tr>
1.1.1.2   root     1878:       <td align="center"><span class="key">Scroll Lock</span></td>
1.1       root     1879:       <td align="center">will emulate the ST's UNDO key</td>
                   1880:     </tr>
1.1.1.2   root     1881:     <tr>
                   1882:       <td align="center"><span class="key">Page Up</span></td>
                   1883:       <td align="center">will emulate the ST's ( key in the keypad</td>
                   1884:     </tr>
                   1885:     <tr>
                   1886:       <td align="center"><span class="key">Page Down</span></td>
                   1887:       <td align="center">will emulate the ST's ) in the keypad</td>
                   1888:     </tr>
1.1       root     1889:   </tbody>
                   1890: </table>
1.1.1.5   root     1891: 
1.1.1.8   root     1892: <p>If joystick emulation via keyboard is enabled, by default cursor keys
                   1893: are used for the directions and <span class="key">right CTRL</span> key
                   1894: as the fire button. Otherwise they act as corresponding keys of the emulated
                   1895: Atari ST.</p>
                   1896: 
1.1.1.5   root     1897: 
                   1898: <a name="Emulated mouse"></a><h3>Emulated mouse</h3>
                   1899: 
1.1       root     1900: <p>For obvious reasons your PC mouse will act as the emulated Atari ST
                   1901: mouse. In fullscreen mode it will act as expected, directly controlling
                   1902: the ST mouse pointer. </p>
                   1903: <p>However it is a little bit different in windowed mode. To make the
                   1904: mouse work there as expected you need to grab it first or lock it into
1.1.1.3   root     1905: the Hatari window. Do this by pressing the <span class="key">ALTGR+m</span>
1.1.1.10! root     1906: hotkey combination or starting Hatari with the
        !          1907: <span class="commandline">--grab</span> command line option.
        !          1908: Press the shortcut key (again) to go back to normal mouse behaviour
        !          1909: which allows you to move mouse outside outside the Hatari window while
        !          1910: Hatari is up and running. Note: pausing the emulation will also
        !          1911: (temporarily) release the mouse grab.</p>
1.1.1.6   root     1912: <p>Mouse scrollwheel will act as cursor up and down keys. </p>
1.1.1.5   root     1913: 
                   1914: <a name="Emulated joystick"></a><h3>Emulated joystick</h3>
                   1915: 
1.1       root     1916: <p>The Atari ST joysticks are emulated ofcourse allowing you to play
                   1917: your favourite games with Hatari. </p>
                   1918: <p>The default mode is to use a connected PC joystick. You can use any
                   1919: joystick that is supported by your kernel. If your joystick works with
                   1920: other applications, it will likely work with Hatari as well. Make sure
                   1921: it is calibrated and then off you go. Move the stick to point into the
                   1922: desired direction. Please note that Hatari will not detect analogue
                   1923: movement as the Atari ST only had digital joysticks. The first
1.1.1.3   root     1924: firebutton will act as the normal firebutton on the Atari ST while the
                   1925: second
                   1926: firebutton will emulate a keypress of the <span class="key">SPACE</span>
                   1927: key on the ST as many ST
1.1.1.8   root     1928: games utilize the SPACE bar for secondary game functions. (Xenon for
1.1.1.3   root     1929: example)</p>
1.1       root     1930: <p>If you do not have a PC joystick or joypad, then you do not need to
                   1931: desperate. You can emulate one of the two Atari ST joysticks via the
                   1932: cursor keys. Just activate it in the GUI. Then the cursor keys will act
                   1933: as the joystick directions, the right CTRL key will act as the
                   1934: firebutton. You can still use the cursor keys as the ST's
1.1.1.3   root     1935: cursorkeys in this mode as long as you press <span class="key">SHIFT</span>
1.1.1.8   root     1936: along with the cursorkeys.  You can also configure these keys from the
                   1937: joystick options.</p>
1.1.1.5   root     1938: 
                   1939: <a name="Emulated video"></a><h3>Emulated video</h3>
                   1940: 
1.1.1.8   root     1941: <p>Hatari emulates all screen modes of the original machine.</p>
                   1942: <p>
                   1943: ST/STE shifter overscan effects are emulated, but due to the fact
                   1944: that these effects are achieved by using quirks and glitches in the
                   1945: original chips to do things beyond their specification, emulation is
                   1946: a bit tricky for these effects. As a result, some demos using these
                   1947: techniques might not be displayed correctly in Hatari, known ones are
                   1948: listed in the <span class="file">compatibility.html</span> file.
1.1.1.3   root     1949: </p>
                   1950: <p>Beside that you can setup extended VDI modes. These only work with
                   1951: GEM-compliant applications and they are equal to fitting a videocard
                   1952: into your Mega ST.</p>
                   1953: <p>Make sure to disable extended VDI modes for playing games as 99% of
                   1954: all ST games will not be able to make use of higher resolutions.</p>
1.1.1.5   root     1955: 
                   1956: <a name="Emulated printer"></a><h3>Emulated printer</h3>
                   1957: 
1.1.1.3   root     1958: <p>Due to the fact that printer handling is very different between Unix
                   1959: style machines and the Atari ST, emulation
1.1.1.2   root     1960: of the printer is achieved by writing all printer output to a file.</p>
1.1.1.3   root     1961: <p>The file will contain a sequence of data, the same that would appear
                   1962: on the data pins of the Atari ST printer port.
                   1963: That would include control characters and commands for graphic
                   1964: printing. Clicking "Print desktop" on the GEM desktop would result
1.1.1.2   root     1965: in a messy data dump in the printer output.</p>
1.1.1.3   root     1966: <p>Printer emulation works best for plain text files or programs that
                   1967: do not format the output for a specific printer.
                   1968: The file contents can be used with your favourite text editor for
                   1969: further processing and printing to a real printer.</p>
                   1970: <p>To get real direct printing out of Hatari on a PostScript printer,
                   1971: you may set up a GDOS printer with a PostScript driver on the emulated
                   1972: Atari and set your printer device file as Hatari's printer output.<br>
                   1973: <em>NOTE:</em> This has not been tested yet and the Hatari team cannot
                   1974: guarantee that it will work.</p>
1.1.1.5   root     1975: 
                   1976: <a name="Emulated RS232"></a><h3>Emulated RS232</h3>
                   1977: 
1.1.1.3   root     1978: <p>Serial communications in Hatari is designed to directly use a serial
                   1979: port on your PC.</p>
                   1980: <p>Communications parameters are set automatically upon the settings of
                   1981: the emulated ST. This means all you do is to set
                   1982: the communication parameters like baudrate from your ST communications
                   1983: software. Hatari will do the rest and handle
1.1.1.2   root     1984: the serial input and output for you.</p>
1.1.1.5   root     1985: 
                   1986: <a name="Floppy disk images"></a><h2>Floppy disk images</h2>
                   1987: 
1.1       root     1988: <p>Hatari does not use floppy disks directly but disk images due to
                   1989: differences between the floppy disk controllers of the ST and the PC.
1.1.1.3   root     1990: Three types of disk images are currently supported: The raw "ST" type,
                   1991: the similar "DIM" type and
1.1.1.2   root     1992: the compressed "MSA" (Magic-Shadow-Archiver) type. </p>
1.1       root     1993: <p> The raw type (file suffix should be "*.st") is simply a sector by
                   1994: sector image of a real floppy disk. You can easily create such an image
1.1.1.3   root     1995: with the <span class="commandline">dd</span> program which should
                   1996: normally be pre-installed on every
                   1997: Unix-like system. Simply type something like <span class="commandline">dd
                   1998: if=/dev/fd0 of=myimage.st</span> to create a disk image. Of course you
                   1999: need access to
1.1       root     2000: /dev/fd0, and depending on your system and the type of floppy disk you
                   2001: might have to use another device name here (for example I use
1.1.1.3   root     2002: /dev/fd0u720 for 720kB disks). However, if the disk is copy-protected
                   2003: or
1.1       root     2004: doesn't use a MSDOS compatible file system, this might fail. So be very
1.1.1.10! root     2005: careful if you are not sure about the disk format. </p>
1.1.1.3   root     2006: <p> The other possibility is to image the disk on a real Atari ST.
                   2007: There
1.1       root     2008: are programs like the Magic Shadow Archiver for this task. Hatari
1.1.1.3   root     2009: supports this slightly compressed MSA disk images, too. Note that
                   2010: Hatari
                   2011: only supports the "old" MSA format, there are some Magic Shadow
                   2012: Archiver
1.1       root     2013: clones (like Jay-MSA) that create better compressed but
1.1.1.2   root     2014: Hatari-incompatible disk images. However, if you have got such a MSA
1.1.1.3   root     2015: disk and want to use it with Hatari, you can still run the
                   2016: corresponding
1.1.1.2   root     2017: MSA program within Hatari to extract the incompatible disk image to a
                   2018: normal floppy disk image. </p>
1.1       root     2019: <p> While *.ST and *.MSA are more or less the "standard" types of Atari
1.1.1.2   root     2020: disk images, you might sometimes also find STT or ADF images on the
1.1.1.3   root     2021: internet. These currently do not work with Hatari. </p>
                   2022: <p>Hatari can now also utilize *.DIM images just as *.ST ones without
                   2023: any problems.
1.1.1.2   root     2024: Note that DIM images are nearly the same as the raw ST images
1.1.1.3   root     2025: (they only have an additional 32 bytes header), so you can easily
                   2026: transform
1.1.1.2   root     2027: the DIM images into ST images by stripping the header from the files.
                   2028: For example try something like:
                   2029: <span class="commandline">dd if=input.dim of=output.st bs=32 skip=1</span>
                   2030: </p>
1.1       root     2031: <p> If you've got a disk image that has been created with the old ST
                   2032: emulator PaCifiST (for DOS) or with early versions of the program
                   2033: Makedisk, and the disk image does not work with Hatari, then the disk
1.1.1.3   root     2034: probably suffers from the "PaCifiST bootsector bug" (Hatari will
                   2035: display a
1.1       root     2036: warning message then). In this case, the bootsector of the disk
                   2037: contains some illegal data, so that the disk even does not work on a
                   2038: real ST any more. However, if it is a .ST and not a .MSA disk, you can
1.1.1.3   root     2039: easily fix it by using a hex-editor to change the byte at offset $D
                   2040: (13)
1.1       root     2041: from 0 to 1 (don't forget to backup your disk image first, since you
                   2042: can also easily destroy your disk image when changing a wrong byte
                   2043: there). If the disk contains a bootsector program, you probably have to
                   2044: adjust the boot sector check sum, too (it can be found at offset $1FE +
                   2045: $1FF). </p>
1.1.1.2   root     2046: <p>Hatari supports disk images that are compressed with (Pk-)ZIP
                   2047: (file suffix must be ".zip") or GZip (file suffix must be ".st.gz" or
1.1.1.3   root     2048: ".msa.gz"), so you can archive your disk images into zip archives.
1.1.1.2   root     2049: You can also directly run the zip archives you may download from the
                   2050: net as long as the archive contains a disk image in .ST or .MSA format.</p>
1.1.1.3   root     2051: <p><em>Note:</em> Hatari does not save disk images back to *.ZIP files
                   2052: so
1.1.1.2   root     2053: your highscores and savegames are lost if you load the game from such
                   2054: a zipped disk image.</p>
1.1.1.5   root     2055: 
1.1.1.10! root     2056: 
1.1.1.5   root     2057: <a name="Hard disk support"></a><h2>Hard disk support</h2>
                   2058: 
1.1.1.8   root     2059: <p>
1.1.1.10! root     2060: Hatari supports three ways of emulating Atari hard drives: The low-level
        !          2061: ACSI and IDE hard disk emulation and a GEMDOS based drive emulation.
        !          2062: In most cases the GEMDOS based hard disk emulation is best as it allows
        !          2063: exchanging files easily between the emulated and the host environment.
        !          2064: </p>
        !          2065: <p>
        !          2066: Please note that changing the HD-image or the GEMDOS HD-folder will reset
1.1.1.8   root     2067: the emulated Atari since it is not possible to switch the hard disk
                   2068: while the emulator is running.
                   2069: </p>
1.1.1.6   root     2070: 
                   2071: 
                   2072: <a name="GEMDOS based hard disk emulation"></a><h3>GEMDOS based hard disk emulation</h3>
1.1       root     2073: <p>With the GEMDOS based drive emulation, you can easily "mount" a
                   2074: folder from the host file system to a drive of the emulated Atari. To
                   2075: use the GEMDOS based drive emulation, you should use a folder on your
1.1.1.3   root     2076: hard disk that only contains files and folders with valid TOS
                   2077: filenames.
1.1       root     2078: That means that all files/folders should be written in capital letters
                   2079: and their length mustn't exceed the 8+3 file name length limit. If you
                   2080: don't want to rename all files to get capital letters, it is also
                   2081: possible to store that folder on a FAT filesystem since those
                   2082: filesystems are case-insensitive. </p>
                   2083: <p>GEMDOS drive emulation is an easy way to share files between the
1.1.1.8   root     2084: host system and the emulated Atari, but it is known to be incomplete and
1.1       root     2085: a little bit unstable, especially if you use it together with the ACSI
                   2086: hard disk emulation. So if your programs complain that they could not
                   2087: find/read/write files on the GEMDOS HD drive, you should try to copy
1.1.1.3   root     2088: them to a floppy disk image or a real hard disk image!</p>
1.1.1.6   root     2089: <p>
1.1.1.8   root     2090: There are also some known limitations which are due to the way the GEMDOS
                   2091: drive emulation is implemented: First, it is not possible to use a cartridge
                   2092: image together with GEMDOS drive emulation at the same time.
                   2093: Second, <em>the GEMDOS HD emulation does not work very well with TOS
                   2094: 1.00 and 1.02</em>.  So you should use at least TOS 1.04 if you want
                   2095: to use the GEMDOS HD emulation.
1.1.1.6   root     2096: </p>
1.1.1.4   root     2097: 
1.1.1.8   root     2098: 
1.1.1.10! root     2099: <a name="ACSI hard disk emulation"></a><h3>ACSI hard disk emulation</h3>
        !          2100: <p>
        !          2101: To use the ACSI hard disk emulation, you need a hard disk image file
        !          2102: with a pre-installed HD driver in it. So either try to image your old
        !          2103: ST hard disk or grab one from the internet (e.g. from the Hatari website).
        !          2104: Please note that AHDI 5.0 is currently the <em>only</em> hard disk driver
        !          2105: that is officially supported. Other hard disk drivers might not work.
        !          2106: </p>
        !          2107: <p>
        !          2108: To create a new ACSI hard disk image, you can start with an empty image that
        !          2109: you have for example created with the following command:
        !          2110: <span class="commandline">dd if=/dev/zero of=hd.img bs=512 count=xxx</span>.
        !          2111: Then copy the complete AHDI 5.0 package to a floppy disk image, and enable
        !          2112: this floppy disk image and the fresh hard disk image in the emulator.
        !          2113: Start HDX.PRG from the floppy disk and format and partition the hard disk
        !          2114: with this tool. When you're finished, you have to restart the emulated system,
        !          2115: run AHDI.PRG from the floppy disk and HINSTALL.PRG afterwards.
        !          2116: With HINSTALL.PRG you can install the hard disk driver to the fresh HD image,
        !          2117: so you can directly boot from the hard disk image in the future.
        !          2118: </p>
        !          2119: 
        !          2120: <a name="IDE hard disk emulation"></a><h3>IDE hard disk emulation</h3>
        !          2121: <p>
        !          2122: Create an empty image file with the size of your choice with:
        !          2123: <span class="commandline">dd if=/dev/zero of=hd.img bs=1k count=xxx</span>.
        !          2124: Then get the Cecile hard disk driver from
        !          2125: <a href="http://centek.free.fr/atari/softs/s_cecile.htm">http://centek.free.fr/atari/softs/s_cecile.htm</a>
        !          2126: and put it on a floppy disk image (named "cecile.st") e.g. with:
        !          2127: <span class="commandline">zip2st.sh cecile.zip</span>.
        !          2128: </p>
        !          2129: <p>
        !          2130: Run Hatari with
        !          2131: <span class="commandline">hatari --machine falcon --tos tos404.rom --ide hd.img cecile.st</span>,
        !          2132: warm up your French language skills, start the Cecile hard disk driver
        !          2133: CECILE.PRG, then use the tool CC_TOOLS.APP to partition your hard disk
        !          2134: image: click to "Partition", select "Hatari IDE disk" and set suitable
        !          2135: partition size. Then click "Valider".
        !          2136: </p>
        !          2137: <p>
        !          2138: If you only want to use your HD image in Falcon mode, you can install
        !          2139: the Cecile hard disk driver to the image from the Cecile CC_TOOLS.APP:
        !          2140: select "Installer" from main menu and save the Cecile driver to the
        !          2141: 1st partition on "Hatari IDE disk". If you want to also use your HD
        !          2142: image in ST/STE mode, you need to get and install AHDI 6 driver on it
        !          2143: instead (see "ASCI hard disk emulation" section for AHDI usage
        !          2144: instructions).
        !          2145: </p>
        !          2146: <p>
        !          2147: Then you can boot from your hard disk image by simply specifying it
        !          2148: with the <span class="commandline">--ide</span> parameter.
        !          2149: </p>
        !          2150: 
        !          2151: 
        !          2152: <a name="Accessing disk image partitions outside of Hatari"></a><h3>Accessing disk image partitions outside of Hatari</h3>
        !          2153: <p>
        !          2154: If you want to access the partitions also outside the emulation,
        !          2155: the disk image needs to have a DOS partition table.  The
        !          2156: <span class="commandline">atari-hd-image</span> script included
        !          2157: with Hatari can be used to create such an image.
        !          2158: </p>
        !          2159: <p>
        !          2160: Inside the Hatari emulator, EmuTOS can access partition(s) on these
        !          2161: kind of images directly without any driver software.  Of the Atari HD
        !          2162: drivers, Centek's Cecile (mentioned above) and Uwe Seimet's
        !          2163: <a href="http://www.seimet.de/atari/en/hddriver.html">HD Driver
        !          2164: (demo)</a> work fine with them.  E.g. AHDI and CBHD don't.
        !          2165: </p>
        !          2166: <p>
        !          2167: Note also that plain EmuTOS supports only ACSI and the drivers support
        !          2168: only IDE (emulation). Cecile needs TT or Falcon and HD driver doesn't
        !          2169: work with EmuTOS or TOS4.  To summarise; if ASCI emulation and EmuTOS
        !          2170: are enough, use those. Otherwise, if you want to use TT or Falcon
        !          2171: emulation, use Cecile (or full HD Driver version if you have it),
        !          2172: otherwise use HD driver (demo).
        !          2173: </p>
        !          2174: <p>
        !          2175: To access the content of the partitions on Linux host, there are two
        !          2176: possibilities:
        !          2177: 
        !          2178: <h4>Using Mtools</h4>
        !          2179: <p>
        !          2180: For this you need to add an entry for the hard disk
        !          2181: image to your <span class="commandline">~/.mtoolsrc</span> and
        !          2182: specify which partition you want to access from the image. For
        !          2183: an image created with the above mentioned script, the line in
        !          2184: the configuration file should look something like this:
        !          2185: </p>
        !          2186: <pre>
        !          2187: MTOOLS_NO_VFAT=1
        !          2188: drive c: file="/home/user/hatari/hd.img" partition=1
        !          2189: </pre>
        !          2190: <p>
        !          2191: Note that Mtools is instructed to use FAT compatibility mode because
        !          2192: EmuTOS cannot deal properly with VFAT file information.  If you don't
        !          2193: want this setting for all your Mtools drives, you can set it also via
        !          2194: the environment like this:
        !          2195: </p>
        !          2196: <pre>
        !          2197: MTOOLS_NO_VFAT=1 mcopy foobar.txt c:
        !          2198: </pre>
        !          2199: 
        !          2200: <h4>Using a loopback device</h4>
        !          2201: <p>
        !          2202: This is recommended even by Mtools documentation, but it's less
        !          2203: convenient as it requires root rights. First you need to "loop"
        !          2204: mount the image:
        !          2205: </p>
        !          2206: <pre>
        !          2207: $ su
        !          2208: # image="hd.img"; mountdir="hd"
        !          2209: # start=$(parted $image unit s print | awk '/ 1 /{print $2}' | tr -d s)
        !          2210: # losetup -f $image -o $((512*$start))
        !          2211: # loop=$(losetup -a | tail -1 | cut -d: -f1)
        !          2212: # mkdir -p $mountdir
        !          2213: # mount -t msdos $loop $mountdir
        !          2214: </pre>
        !          2215: <p>
        !          2216: This uses <span class="commandline">parted</span> to find out the first
        !          2217: partition offset in sectors and then tells <span class="commandline">losetup</span>
        !          2218: to bind the first free loop device to a corresponding offset from
        !          2219: the <span class="commandline">hd.img</span> image.
        !          2220: <span class="commandline">mount</span> is then used to mount the file system
        !          2221: from the loop device on top of the "hd" directory.
        !          2222: </p>
        !          2223: <p>
        !          2224: After you've copied the relevant files to the "hd" directory, you need
        !          2225: unmount the file system and remove the loop device binding before using
        !          2226: the disk image from Hatari:
        !          2227: </p>
        !          2228: <pre>
        !          2229: # umount $mountdir
        !          2230: # losetup -d $loop
        !          2231: </pre>
        !          2232: 
        !          2233: <a name="The debugger"></a><h2>The debugger</h2>
        !          2234: 
        !          2235: <p>
        !          2236: Hatari has a built-in debugging interface which can be used for
        !          2237: analyzing the program that runs in the emulated system. The debugger
        !          2238: uses Hatari's parent console window, so make sure you run Hatari from
        !          2239: the command line when you want to use the debugger.  To invoke
        !          2240: the debugger, press the <span class="key">AltGr + Pause</span> key
        !          2241: combination.
        !          2242: <p>
        !          2243: 
        !          2244: <p>
        !          2245: If you start Hatari with the &quot;-D&quot; command line option, m68k
        !          2246: exceptions will automatically invoke the debugger. You can toggle
        !          2247: this also later from the debugger with the &quot;setopt -D&quot;
        !          2248: command.
        !          2249: </p>
        !          2250: 
        !          2251: <p>
        !          2252: When entering values to the debugger in other number bases than the
        !          2253: default/selected one, they need to be prefixed with a character
        !          2254: indicating this.  For decimals it's &quot;#&quot; (#15), for
        !          2255: hexadecimals &quot;$&quot; ($F), and for binary values it's
        !          2256: &quot;%&quot; (%1111).  By default the debugger expects all values
        !          2257: without a prefix to be decimals, but you can change the default number
        !          2258: base with the &quot;value&quot; command.
        !          2259: </p>
        !          2260: 
        !          2261: <p>
        !          2262: At the debugger prompt, type &quot;help&quot; to get a list of all
        !          2263: the available commands and their shortcuts:
        !          2264: </p>
        !          2265: <pre>
        !          2266: Available commands:
        !          2267:    dspaddress (da) : toggle or list (traditional) DSP address breakpoints
        !          2268:      dspbreak (db) : set/remove/list DSP register/RAM condition breakpoints
        !          2269:     dspdisasm (dd) : disassemble DSP code
        !          2270:    dspmemdump (dm) : dump DSP memory
        !          2271:        dspreg (dr) : read/write DSP registers
        !          2272:       dspcont (dc) : continue emulation / DSP single-stepping
        !          2273:       address ( a) : toggle or list (traditional) CPU address breakpoints
        !          2274:    breakpoint ( b) : set/remove/list register/RAM condition breakpoints
        !          2275:        disasm ( d) : disassemble from PC, or given address
        !          2276:        cpureg ( r) : dump register values or set register to value
        !          2277:       memdump ( m) : dump memory
        !          2278:      memwrite ( w) : write bytes to memory
        !          2279:       logfile ( f) : open or close log file
        !          2280:       loadbin ( l) : load a file into memory
        !          2281:       savebin ( s) : save memory to a file
        !          2282:        setopt ( o) : set Hatari command line options
        !          2283:         value ( v) : set number base / show value in other number bases
        !          2284:          cont ( c) : continue emulation / CPU single-stepping
        !          2285:          quit ( q) : quit emulator
        !          2286:          help ( h) : print help
        !          2287: </pre>
        !          2288: 
        !          2289: <p>
        !          2290: In the beginning, probably the most interesting commands are
        !          2291: &quot;m&quot; and &quot;d&quot; for dumping and disassembling memory
        !          2292: regions.
        !          2293: </p>
        !          2294: <pre>
        !          2295: &gt; help memdump
        !          2296: 'memdump' or 'm' - dump memory
        !          2297: Usage:  m [address]
        !          2298:         dump memory at address or continue dump from previous address.
        !          2299: </pre>
        !          2300: <pre>
        !          2301: &gt; help disasm
        !          2302: 'disasm' or 'd' - disassemble from PC, or given address
        !          2303: Usage:  d [address]
        !          2304:         If no address is given, this command disassembles from the last
        !          2305:         position or from current PC if no last postition is available.
        !          2306: </pre>
        !          2307: <pre>
        !          2308: &gt; d
        !          2309: 0000aa6e: 2f08 0241 0fff 207c 00fe MOVE.L A0,-(A7)
        !          2310: 0000aa70: 0241 0fff 207c 00fe 78c0 AND.W #$0fff,D1
        !          2311: 0000aa74: 207c 00fe 78c0 2070 1000 MOVEA.L #$00fe78c0,A0
        !          2312: 0000aa7a: 2070 1000 4ed0 0241 0ffe MOVEA.L (A0, D1.W*1, $00) == $00fe34ae,A0
        !          2313: 0000aa7e: 4ed0 0241 0ffe 6712 e549 JMP.L (A0)
        !          2314: </pre>
        !          2315: 
        !          2316: <p>
        !          2317: Hatari has two kinds of breakpoints. First, there are the fast and
        !          2318: simple address breakpoints which trigger when the CPU (or DSP) program counter
        !          2319: hits a given address. Use &quot;a&quot; (or &quot;da&quot; for the DSP) to
        !          2320: manage them. Then there are the conditional breakpoints which are a little bit
        !          2321: slower but can handle more complex break conditions. Use &quot;b&quot; (or
        !          2322: &quot;db&quot; for the DSP) to manage them. &quot;b help&quot; explains
        !          2323: the syntax:
        !          2324: </p>
        !          2325: 
        !          2326: <pre>
        !          2327: breakpoint = &lt;expression&gt; [ &amp;&amp; &lt;expression&gt; [ &amp;&amp; &lt;expression&gt; ] ... ]
        !          2328: expression = &lt;value&gt;[.mode] [&amp; &lt;number&gt;] &lt;condition&gt; &lt;value&gt;[.mode]
        !          2329: 
        !          2330: where:
        !          2331:       value = [(] &lt;register-name | hatari-variable | number&gt; [)]
        !          2332:       number = [#|$|%]&lt;digits&gt;
        !          2333:       condition = '&lt;' | '&gt;' | '=' | '!'
        !          2334:       addressing mode (width) = 'b' | 'w' | 'l'
        !          2335:       addressing mode (space) = 'p' | 'x' | 'y'
        !          2336: </pre>
        !          2337: 
        !          2338: <p>
        !          2339: If the value is in parenthesis like in '($ff820)' or '(a0)', then the
        !          2340: used value will be read from the memory address pointed by it.
        !          2341: </p>
        !          2342: <p>
        !          2343: M68k addresses can have byte (&quot;b&quot;), word (&quot;w&quot;) or
        !          2344: long (&quot;l&quot;, default) width. DSP addresses belong to different
        !          2345: address spaces: &quot;P&quot;, &quot;X&quot; or &quot;Y&quot;. Note
        !          2346: that on DSP only R0-R7 registers can be used for memory addressing.
        !          2347: </p>
        !          2348: 
        !          2349: <p>Examples:</p>
        !          2350: <pre>
        !          2351: pc = $64543  &amp;&amp;  ($ff820).w &amp; 3 = (a0)  &amp;&amp;  d0 = %1100
        !          2352: (r0).x = 1 &amp;&amp; (r0).y = 2
        !          2353: </pre>                       
        !          2354: 
        !          2355: <p>
        !          2356: The debugger supports also setting breakpoints on values of some
        !          2357: internal Hatari variables (listed by &quot;b help&quot;). For example
        !          2358: if you want to stop at a specific cycle within a frame (that is, PC
        !          2359: relative to the current VBL/HBL in cycles), set breakpoints to specific
        !          2360: &quot;HBL&quot; and &quot;LineCycles&quot; variable values.
        !          2361: 
        !          2362: <p>
        !          2363: After analyzing and/or setting new breakpoints, you can continue the emulation
        !          2364: with the &quot;c&quot; command. You can continue for a given number of
        !          2365: CPU instructions (or DSP instructions when &quot;dc&quot; is used), or
        !          2366: you can continue forever (until a breakpoint triggers) if you omit the
        !          2367: instruction count.
        !          2368: </p>
        !          2369: 
        !          2370: <p>
        !          2371: By the way, if you want to continue with real-time disassembling, you
        !          2372: can enable it by typing &quot;setopt --trace cpu_disasm&quot; at the
        !          2373: debugger prompt.  Disable it with &quot;setopt --trace none&quot; when
        !          2374: you enter the debugger again. &quot;--trace help&quot; can be used to
        !          2375: list all the supported trace points. (Similar things can be done even
        !          2376: from a program within the emulation if you enable Hatari
        !          2377: &quot;--bios-intercept&quot; option and call XBios 255 from
        !          2378: the program with a suitable command line string.)
        !          2379: </p>
        !          2380: 
        !          2381: <p>
        !          2382: Lastly, the debugger is much nicer to use with the command line
        !          2383: editing support. If you're building Hatari yourself, please make sure
        !          2384: that you have the GNU readline development files installed (on Debian
        !          2385: / Ubuntu these come from the libreadline5-dev package).  Otherwise
        !          2386: this doesn't get enabled when you configure Hatari.
        !          2387: </p>
        !          2388: 
        !          2389: 
        !          2390: <a name="Performance"></a><h2>Performance</h2>
        !          2391: <a name="Improving Hatari performance"></a><h3>Improving Hatari performance</h3>
        !          2392: 
        !          2393: <p>
        !          2394: Unless you've disabled compiler optimizations (like GCC's -O2 or -O3
        !          2395: options) in the Hatari build, the extra optimization flags (like GCC's
        !          2396: "-mtune=i686") don't seem to have very large effect on Hatari
        !          2397: performance.
        !          2398: </p>
        !          2399: <p>
        !          2400: However, Hatari can be sped up considerably by giving up some
        !          2401: emulation or emulator accuracy.  Most of these options should
        !          2402: be needed only on slow devices like handhelds.
        !          2403: </p>
        !          2404: 
        !          2405: 
        !          2406: <h4>Emulation options</h4>
        !          2407: 
        !          2408: <p>
        !          2409: Emulation options have the largest impact on performance.
        !          2410: These options can be changed from the Hatari GUI System dialog and
        !          2411: the emulation needs to be rebooted for any of these changes to take
        !          2412: an effect!
        !          2413: </p>
        !          2414: 
        !          2415: <h5>DSP</h5>
        !          2416: <p>
        !          2417: Emulating the DSP is performance-wise several times more demanding
        !          2418: than emulating the m68k; DSP runs at higher frequency, executes many
        !          2419: instructions for each m68k instruction and emulation isn't as mature
        !          2420: and optimized.  Unless some program needs DSP, <em>none</em> or
        !          2421: <em>dummy</em> DSP emulation mode could be used.  Even of the programs
        !          2422: that do use DSP, many use it only for background music and work
        !          2423: fine without the real DSP emulation.
        !          2424: </p>
        !          2425: <h5>Timer-D</h5>
        !          2426: <p>
        !          2427: The single largest factor contributing to general Hatari emulation
        !          2428: performance is the handling of interrupts.  Enabling Timer-D patching
        !          2429: option (about) doubles Hatari performance as it significantly reduces
        !          2430: the number of interrupts generated by the emulated Atari machine.
        !          2431: Using this has adverse effect only for very rare programs.
        !          2432: </p>
        !          2433: <h5>Compatible CPU</h5>
        !          2434: <p>
        !          2435: After the DSP and Timer-D interrupts, m68k emulation takes most time.
        !          2436: Disabling the "Slower but more compatible CPU" option will speed up
        !          2437: the emulation a lot, but it won't anymore be cycle accurate.  This can
        !          2438: be fine for many games and other programs, but won't work e.g. for demos
        !          2439: using overscan or rasters.
        !          2440: </p>
        !          2441: 
        !          2442: <p>
        !          2443: Roughly speaking, for DSP emulation, one needs at least 2Ghz machine;
        !          2444: for normal (unpatched) Timer-D frequency on some specific cases (like
        !          2445: demos with overscan 512 color animations) one may need over 1GHz
        !          2446: machine.  For Compatible CPU one needs at least 1/2Ghz machine.
        !          2447: </p>
        !          2448: <p>
        !          2449: Above options may cause some programs not to work correctly.
        !          2450: The <a href="compatibility.html">Hatari Software Compatibility List</a> lists
        !          2451: programs known to need real DSP emulation or Timer-D frequency.
        !          2452: </p>
        !          2453: 
        !          2454: 
        !          2455: <h4>Emulator options</h4>
        !          2456: 
        !          2457: <p>
        !          2458: Emulator options don't have as large effect on performance as
        !          2459: emulation options, but they don't affect the emulated programs at all,
        !          2460: just the quality of the emulation "output". These options can also
        !          2461: be toggled at run-time without rebooting the emulation.
        !          2462: </p>
        !          2463: 
        !          2464: <h5>Sound</h5>
        !          2465: <p>
        !          2466: Internal Hatari sound handling and the SDL_mixer sound thread
        !          2467: libALSA sound processing can account up to 1/3 of the Hatari CPU usage
        !          2468: (depending on other options you're using). Disabling sound will get
        !          2469: rid of that.  Using low sound frequency or one matching your sound
        !          2470: card may also help.  Best is if you disable also background music
        !          2471: from the programs you run in Hatari as this can significantly reduce
        !          2472: the number of generated interrupts.
        !          2473: </p>
        !          2474: <h5>Frame skipping</h5>
        !          2475: <p>
        !          2476: Screen rendering can take noticeable amount of CPU time. The default
        !          2477: Hatari "auto" frame skipping should be used unless there's a good
        !          2478: reason not to.  It will skip converting and showing some of the frames
        !          2479: if there's not enough time for them. If your monitor refresh frequency
        !          2480: is lower than the selected Hatari monitor frequency (e.g. LCD monitors
        !          2481: usually use 60Hz whereas Atari monochrome monitor uses 72Hz), you
        !          2482: should use frameskip of one. The reason is that if your SDL library
        !          2483: uses VSync to synchronize the output to screen (like OSX one?), with
        !          2484: zero frame skip that forces the emulation to run slower than a real
        !          2485: Atari.  If SDL doesn't use VSync, Hatari does redundant work to
        !          2486: convert frames you can't see.
        !          2487: </p>
        !          2488: <h5>Low-rez zooming</h5>
        !          2489: <p>
        !          2490: If you are not using frame skip, disabling zooming can have
        !          2491: noticeable improvement on performance.  If you still want to have a
        !          2492: nice fullscreen mode, you should rather add the right resolution
        !          2493: mode-lines (e.g. "320x200") to your xorg.conf file.  If you still
        !          2494: want to use zooming, disabling borders may help a bit.
        !          2495: </p>
        !          2496: <h5>Spec512 color handling</h5>
        !          2497: <p>
        !          2498: Handling Spec512 color modes which change the ST/e palette constantly
        !          2499: takes some extra CPU.  If you have problems with CPU usage in such
        !          2500: screens and you care more e.g. from the sound quality than visuals, you
        !          2501: can disable the Spec512 mode handling by zeroing the threshold for that
        !          2502: with the <span class="commandline">--spec512 0</span> option.
        !          2503: </p>
        !          2504: <h5>Statusbar and drive LED</h5>
        !          2505: <p>
        !          2506: If your version of libSDL uses VSync to synchronize the screen
        !          2507: output, drawing of the statusbar or the drive LED (when statusbar is
        !          2508: disabled) may have some minor impact on performance too.  Normally
        !          2509: they shouldn't.
        !          2510: </p>
        !          2511: 
        !          2512: <p>
        !          2513: Btw. Hatari currently runs best in 16 or 32 bits per pixel color depth
        !          2514: mode, so try to avoid 24 bits per pixel display modes if possible.
        !          2515: 16-bit mode is fastest.
        !          2516: </p>
        !          2517: <p>
        !          2518: If nothing else helps, try an earlier Hatari version.  More accurate
        !          2519: emulation or emulator output in newer Hatari versions means that they
        !          2520: can be slower despite optimizations.
        !          2521: </p>
        !          2522: 
        !          2523: 
        !          2524: <a name="Measuring the performance"></a><h3>Measuring the performance</h3>
        !          2525: 
        !          2526: <p>
        !          2527: There are a couple of ways to monitor and measure Hatari performance.
        !          2528: </p>
        !          2529: <p>
        !          2530: By default Hatari has Statusbar visible and automatic frameskip
        !          2531: enabled. When Hatari has enough time that it can sleep a little each
        !          2532: frame, the statusbar frame skip ("FS") value keeps at zero.  If Hatari
        !          2533: is completely busy, it will increase to the maximum specified
        !          2534: (automatic) frame skip value.
        !          2535: </p>
        !          2536: <p>
        !          2537: Hatari has also a facility to measure FPS i.e. Frames Per Second.
        !          2538: Just enable the <span class="commandline">--fast-forward</span> option
        !          2539: on command line (or use the corresponding keyboard shortcut), and
        !          2540: after a while, press the "Pause" key.  Whenever Hatari emulation is
        !          2541: paused, Hatari will show how many VBLs it could show per second along
        !          2542: with some other numbers.
        !          2543: </p>
        !          2544: <p>
        !          2545: It depends on what you want to measure, but usually it's best to
        !          2546: disable sound and set high frame skip like
        !          2547: <span class="commandline">--sound off --frameskips 60</span> so that
        !          2548: the associated external overheads are minimized.  E.g. video output
        !          2549: can on some platforms do VSync and measurements would then show
        !          2550: your monitor refresh frequency instead of actual Hatari performance.
        !          2551: </p>
        !          2552: <p>
        !          2553: On Unix systems with <span class="commandline">times()</span> function
        !          2554: call, only the time spent by the Hatari process itself is measured.
        !          2555: On other systems much less accurate SDL "wall clock" timings are
        !          2556: used.  To make latter more accurate you could use also
        !          2557: <span class="commandline">--run-vbls</span> option to specify how many
        !          2558: VBLs Hatari should run in fast forward mode before it exits.  In this
        !          2559: case it's best to either have the test-case run automatically from the
        !          2560: AUTO-folder or given as memory snapshot to Hatari with the frame skip
        !          2561: set equal to the VBL count.
        !          2562: </p>
        !          2563: <p>
        !          2564: Note that the numbers can fluctuate quite a bit, <em>especially</em>
        !          2565: when the SDL timings are used, so for (statistically) reliable numbers
        !          2566: you may need to repeat the measurement several times.  You should of
        !          2567: course make also sure that the system doesn't have any other activity
        !          2568: at the same time you're making the measurements.
        !          2569: </p>
        !          2570: 
        !          2571: 
1.1.1.5   root     2572: <a name="Appendix"></a><h2>Appendix</h2>
                   2573: 
                   2574: <a name="Copying"></a><h3>Copying</h3>
1.1.1.4   root     2575: 
1.1       root     2576: <div class="backdropped">
                   2577: <p>This program is free software; you can redistribute it and/or modify
1.1.1.3   root     2578: it under the terms of the GNU General Public License as published by
                   2579: the
1.1       root     2580: Free Software Foundation; either version 2 of the License, or (at your
                   2581: option) any later version. </p>
                   2582: <p>This program is distributed in the hope that it will be useful, but <em>WITHOUT
                   2583: ANY WARRANTY</em>; without even the implied warranty of <em>MERCHANTABILITY</em>
1.1.1.3   root     2584: or <em>FITNESS FOR A PARTICULAR PURPOSE</em>. See the GNU General
1.1.1.4   root     2585: Public License for more details. </p>
                   2586: <p>
                   2587: You should have received a copy of the GNU General Public License
                   2588: along with this program; if not, write to the Free Software Foundation,
                   2589: Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                   2590: </p>
1.1       root     2591: </div>
1.1.1.3   root     2592: <p><a href="http://www.gnu.org/">The GNU Project and the Free Software
                   2593: Foundation</a> | <a href="http://www.fsf.org/licenses/gpl.html">The
                   2594: GNU General Public License</a></p>
1.1.1.4   root     2595: 
1.1.1.5   root     2596: <a name="Introduction to Emulation"></a><h3>Introduction to Emulation</h3>
                   2597: 
1.1       root     2598: <p>Emulation via software is an art and Hatari is an example of this.</p>
1.1.1.3   root     2599: <p>Emulation is to make a computer behave like a (probably) completely
                   2600: different machine on the lowest possible niveau.
                   2601: This includes CPU and custom chip emulation allowing software written
                   2602: for the emulated machine to be run without notice.
                   2603: A good emulator will run most of the software intended for the emulated
                   2604: platform without trouble.
1.1       root     2605: </p>
                   2606: <p>
1.1.1.3   root     2607: The key to emulation is to simply do those things with a software
                   2608: program, the emulator, that normally chips would perform.
                   2609: So you have an CPU emulator that basically consists of a large loop
                   2610: that does exactly what the real thing would do:
1.1       root     2611: </p>
                   2612: <ul>
1.1.1.3   root     2613:   <li>fetch an instruction from virtual memory</li>
                   2614:   <li>interpret this instruction</li>
                   2615:   <li>fetch operands from the emulated registers and memory</li>
                   2616:   <li>perform the operation like addition or changing the program
                   2617: counter on a jump instruction</li>
                   2618:   <li>writes results back into the intended registers or memory
                   2619: locations</li>
                   2620:   <li>increment of the program counter and loop</li>
1.1       root     2621: </ul>
                   2622: <p>
1.1.1.3   root     2623: The typical von-Neumann CPU can be emulated very fast, stable and
                   2624: error-free using such a simple loop system.
1.1       root     2625: </p>
                   2626: <p>
1.1.1.3   root     2627: But in most cases the CPU emulation is the simplest part. Correct
                   2628: emulation of the various custom chips and hardware
1.1       root     2629: parts of the emulated system is much trickier.
                   2630: </p>
                   2631: 
1.1.1.6   root     2632: <br>
                   2633: 
1.1.1.3   root     2634: <hr style="width: 100%; height: 2px;">
1.1       root     2635: <table border="0" width="100%">
1.1.1.3   root     2636:   <tbody>
1.1       root     2637:     <tr>
1.1.1.3   root     2638:       <td align="left"><a href="http://validator.w3.org/check/referer"><img
                   2639:  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
                   2640:  border="0" height="31" width="88"></a></td>
                   2641:       <td align="right">
1.1.1.10! root     2642:       August 2009
1.1.1.3   root     2643:       </td>
1.1       root     2644:     </tr>
1.1.1.3   root     2645:   </tbody>
1.1       root     2646: </table>
                   2647: </body>
                   2648: </html>

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.