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

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">
        !             7:   <meta name="author" content="Matthias Arndt &lt;[email protected]&gt;">
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.3 ! root       11:   <meta http-equiv="Content-Type"
        !            12:  content="text/html; charset=iso-8859-15">
1.1.1.2   root       13:   <meta name="Generator" content="Quanta Plus 3.2.1  SuSE Linux 9.1">
1.1       root       14:   <meta http-equiv="Content-Style-Type" content="text/css">
                     15:   <style type="text/css">
                     16:   <!--
1.1.1.2   root       17:        body {  background-color:#FFFFFF;
                     18:                color:#000000;
                     19:                margin-left:10px;
                     20:                margin-right:10px;
                     21:                font-family:Verdana,Arial,Helvetica,sans-serif; font-size:12pt;
                     22:                }
1.1       root       23: 
                     24:        h1 { font-size:28pt; }
                     25:        h2 { font-size:22pt; border-bottom:solid thin black;}
                     26:        h3 { font-size:16pt; }
                     27:        h4 { font-size:13pt; }
                     28: 
                     29:        td { font-family:Verdana,Arial,Helvetica,sans-serif; font-size:12pt; }
                     30: 
                     31:        a:link { color:#000099; background-color:#ffffff; text-decoration:none; }
                     32:        a:visited { color:#cc0000; background-color:#ffffff; text-decoration:none;}
1.1.1.3 ! root       33:        a:hover { color:#0000ff; background-color:#ffffff; text-decoration:none; }
        !            34:        a:active { color:#993399; background-color:#ffffff; text-decoration:none; }
1.1       root       35: 
                     36:        *.commandline { font-family:Fixed,Courier,monospace; font-size:10pt; }
1.1.1.2   root       37:        *.file { color: #000088;}
                     38:        *.button { color: #468E64;}
1.1       root       39:        *.key { color:#550000; font-family:Fixed,Courier,monospace; font-size:10pt; }
                     40:        *.backdropped { background-color:#ffffee; }
                     41:        *.image {border-width:2px; border-style:solid; border-color:#eeeeff; padding:1cm; text-align:justify; }
                     42: 
                     43:   -->
                     44:   </style>
                     45: </head>
1.1.1.3 ! root       46: <body link="#000099" alink="#993399" bgcolor="#ffffff" text="#000000"
        !            47:  vlink="#cc0000">
1.1       root       48: <h1 align="center">Hatari User's Manual</h1>
1.1.1.2   root       49: <p align="center">
1.1.1.3 ! root       50: Version 0.60
        !            51: </p>
        !            52: <p align="center">
        !            53: <strong>project initiator and main developer of Hatari: Thomas Huth &lt;<a
        !            54:  href="mailto:[email protected]">[email protected]</a>&gt;</strong><br>
        !            55: <strong>manual by Matthias Arndt &lt;<a
        !            56:  href="mailto:[email protected]">[email protected]</a>&gt;</strong>
1.1.1.2   root       57: </p>
                     58: <p align="center">
1.1.1.3 ! root       59: <strong>Hatari on the WWW: <a href="http://hatari.sourceforge.net/"
        !            60:  target="_blank">http://hatari.sourceforge.net/</a> </strong>
1.1.1.2   root       61: </p>
1.1       root       62: <br>
                     63: 
                     64: <h2>Introduction</h2>
                     65: 
                     66: <h3>General description</h3>
                     67: <p>
1.1.1.3 ! root       68: Hatari is an Atari ST emulator for Linux, FreeBSD, BeOS and other
        !            69: Systems which are supported by the SDL library.
        !            70: See Appendix B for details on emulation in general.
        !            71: The Atari ST was a 16/32 bit computer system which was first released by Atari
        !            72: in 1985. Using the Motorola 68000 CPU, it was quite a popular computer having
        !            73: quite a lot of CPU power at that time.
        !            74: </p>
        !            75: <p>
        !            76: Hatari started as an adaption of the free
        !            77: <a href="http://www.sourceforge.net/projects/winston/">WinSTon source code</a>
        !            78: to Linux (WinSTon is a ST emulator for Windows).
        !            79: But since WinSTon's CPU core was written in i86 assembler, it was not possible
        !            80: to use it for Hatari as Hatari is intended to be platform independent.
        !            81: So the <a href="http://www.freiburg.linux.de/%7Euae/">CPU core of UAE</a>
        !            82: was used for Hatari instead, because this CPU core has been written in
1.1       root       83: portable C and also has some nice features like 68040 and FPU support.
                     84: </p>
                     85: 
                     86: <h3>Features</h3>
                     87: <ul>
1.1.1.2   root       88:   <li>complete m68k emulation via UAE's CPU core</li>
                     89:   <li>support for EmuTOS, TOS 1.00, 1.02, 1.04, 2.05 and 2.06</li>
                     90:   <li>ST RAM size variable (512k, 1MB, 2MB and 4MB possible)</li>
1.1.1.3 ! root       91:   <li>optional cartridge images for the ST ROM port</li>
1.1.1.2   root       92:   <li>most of the ST specific hardware</li>
1.1       root       93:   <li>ST Shifter with ST-High, ST-Medium and ST-Low resolutions,
1.1.1.3 ! root       94: overscan effects for lower border and partially in the upper, left and
        !            95: right border too</li>
1.1.1.2   root       96:   <li>512 colour ST palette</li>
                     97:   <li>Blitter chip emulation</li>
                     98:   <li>PSG YM2149 emulation (soundchip) including STFM samples</li>
                     99:   <li>Printer emulation on GEMDOS and Hardware level (print to file)</li>
                    100:   <li>experimental support for RS232</li>
                    101:   <li>extremely experimental MIDI support</li>
1.1       root      102:   <li>Mega ST real time clock</li>
                    103:   <li>many (but not all) raster effects </li>
1.1.1.3 ! root      104:   <li>IKBD emulation (keyboard, mouse and joystick) with custom
        !           105: keyboard mapping</li>
1.1       root      106:   <li>joystick emulation via cursor keys and joystick emulation via a
1.1.1.2   root      107: connected PC joystick</li>
1.1.1.3 ! root      108:   <li>FDC emulation using floppy disk images in standard formats (*.ST,
        !           109: *.MSA
1.1.1.2   root      110: and *.DIM)</li>
                    111:   <li>support for zipped disk images (both PkZip and Gzip)</li>
                    112:   <li>partial ACSI emulation for harddisk support</li>
                    113:   <li>GEMDOS interface driver to mount a directory as a harddrive</li>
                    114:   <li>experimental support for memory snapshots</li>
                    115:   <li>driver for extended VDI resolutions</li>
                    116:   <li>recording of sound as .WAV and .YM files</li>
                    117:   <li>screenshots in .BMP format</li>
                    118:   <li>animation capturing</li>
1.1       root      119:   <li>interlaced rendering of ST-Low and ST-Medium resolutions </li>
                    120:   <li>scaling of ST-Low and ST-Medium to 800x600 resolution </li>
                    121: </ul>
                    122: <p>
                    123: At the time of this writing there is neither a complete MMU emulation
                    124: nor support for STE specific features.
                    125: </p>
                    126: <h3>System requirements</h3>
                    127: <p> Hatari currently has the following system requirements: </p>
                    128: <ul>
                    129:   <li>a fast PC (&gt;200MHz) </li>
1.1.1.3 ! root      130:   <li>some sort of Unix (preferable <a href="http://www.linux.org/">GNU/Linux</a>)
        !           131:   </li>
1.1       root      132:   <li>the SDL library (<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>)</li>
1.1.1.3 ! root      133:   <li>the zLib (<a href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>)
        !           134: for support of gzipped disk images</li>
1.1       root      135: </ul>
                    136: Hatari has been succesfully tested on the following machines:
                    137: <ul>
1.1.1.2   root      138:   <li>Linux/i86 with Kernel 2.6.6, AMD Athlon 600MHz</li>
                    139:   <li>Linux/i86 with Kernel 2.4.x, AMD Athlon 600MHz </li>
1.1       root      140:   <li>Linux/i86 with Kernel 2.2.18, Pentium MMX 200MHz </li>
1.1.1.2   root      141:   <li>Linux/PPC with Kernel 2.4.x </li>
                    142:   <li>BeOS/i86 </li>
1.1       root      143:   <li>Apple PowerMac with Mac OS X </li>
                    144:   <li>NetBSD 1.6 </li>
1.1.1.3 ! root      145:   <li>FreeBSD 4.1 on an i486 computer, FreeBSD 4.8 on a Pentium 4 and
        !           146: FreeBSD 5.1 </li>
1.1.1.2   root      147:   <li>OpenBSD 3.5 </li>
1.1.1.3 ! root      148:   <li>Since version 0.40, Hatari now also works on machines with a
        !           149: Sparc CPU </li>
1.1.1.2   root      150:   <li>Zaurus SL-C760 PDA </li>
1.1       root      151: </ul>
                    152: <h2>Compiling and running</h2>
                    153: <h3>Compiling Hatari</h3>
                    154: <p> First, you need the SDL library, you can get it at:
1.1.1.3 ! root      155: <a href="http://www.libsdl.org/">http://www.libsdl.org/</a>. Most
        !           156: distributions already ship a suitable version.
        !           157: Make sure to install the appropriate header files as well often called
        !           158: "libsdl-dev" or the like.
        !           159: </p>
        !           160: <p> Second, you need the zLib compression library. You can get it from <a
        !           161:  href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>
        !           162: but the version shipped with your distribution will be sufficient in
        !           163: most cases. Make sure to have the header files
1.1       root      164: for it installed as well.
                    165: </p>
                    166: <p>
                    167: Of course, you need the GNU C compiler and (GNU) Make, too!
                    168: </p>
1.1.1.2   root      169: <p> Change to the hatari/ directory and adapt the configuration file
                    170: <span class="file">Makefile.cnf</span> to suite your system.
                    171: Alternatively, you can use the supplied configure script to auto-detect
1.1.1.3 ! root      172: all parameters (type " <span class="commandline">./configure --help</span>"
        !           173: to see the options of the script).
        !           174: Don't forget to use some good CFLAGS for the compiler optimizations, e.g.
        !           175: run <span class="commandline">configure</span> in the following way:
        !           176: </p>
        !           177: <p>
        !           178:  <kbd> CFLAGS="-O3 -fomit-frame-pointer" ./configure</kbd>
        !           179: </p>
        !           180: <p>
        !           181: Then compile Hatari by typing <span class="commandline">make</span>.
        !           182: If all
        !           183: works fine, you'll get the executable <span class="commandline">hatari</span>
        !           184: in the src/ subdirectory.
1.1.1.2   root      185: </p>
1.1       root      186: <h3>Installation of a TOS ROM</h3>
1.1.1.3 ! root      187: <p> Then you'll have to copy a TOS ROM to the data directory (the data
        !           188: directory is specified
        !           189: in the configuration file <span class="file">Makefile.cnf</span>) and
        !           190: rename it to <span class="commandline">tos.img</span>, or use the
        !           191: <span class="commandline">--tos</span> command line option to tell
        !           192: Hatari where to find a TOS ROM.
1.1       root      193: Hatari needs a TOS ROM image because this contains the operating system
                    194: of the emulated Atari. Sorry, it is not possible to ship an image with
1.1.1.3 ! root      195: the Hatari package since these images are still copyrighted. But you
        !           196: can
1.1       root      197: easily create an image with a real ST and one of those various
1.1.1.3 ! root      198: ROM-image programs for the ST. Or search the internet, but don't ask
        !           199: the Hatari team
1.1       root      200: where to find one.
                    201: </p>
                    202: <p> Another solution is EmuTOS, which is an open-source
1.1.1.3 ! root      203: TOS clone. You can find EmuTOS at: <a
        !           204:  href="http://emutos.sourceforge.net/">http://emutos.sourceforge.net/</a>.
        !           205: It's
1.1       root      206: not the best solution for playing games or running other old software
1.1.1.3 ! root      207: due to compatibility issues, but it's free and officially compatible
        !           208: with Hatari! </p>
1.1       root      209: <p>If you do not specify a TOS image on the commandline nor can Hatari
                    210: find a suitable TOS image in the default dir, you'll get the chance to
                    211: select a TOS image file from the GUI. </p>
                    212: <h3>Installation of the binary</h3>
1.1.1.3 ! root      213: <p> Type <span class="commandline">make install</span> as root to do a
        !           214: systemwide installation. In this case it is recommended
        !           215: to set the DATADIR variable in Makefile.cnf to a proper value. <tt>/usr/local/share/hatari</tt>
        !           216: is a good value in that case.</p>
        !           217: <p>The Hatari executable should now be in your PATH and accessible from
        !           218: anywhere.</p>
1.1       root      219: <p> When you finally have got a TOS image, try starting Hatari with the
1.1.1.3 ! root      220: option <span class="commandline">--help</span> to find out more about
        !           221: its command line parameters. </p>
1.1       root      222: <h3>Running Hatari for the first time</h3>
1.1.1.3 ! root      223: <p> Now type <span class="commandline">hatari</span> to run the
        !           224: emulator for the first time. If all goes
        !           225: well, you should now be presented with a window showing you the
        !           226: familiar
        !           227: little green desktop of the Atari ST. Press <span class="key">F12</span>
        !           228: to turn on the GUI to
        !           229: configure Hatari to suit your needs, press <span class="key">F11</span>
        !           230: to toggle windowed and fullscreen mode. </p>
1.1       root      231: <h2>Command line options</h2>
                    232: <p> Hatari ofcourse understands several command line options. </p>
1.1.1.3 ! root      233: <p> Type <span class="commandline">hatari --help</span> to list them
        !           234: all. </p>
1.1       root      235: <p> The command line options in detail are as follows (in brackets the
                    236: long version): </p>
1.1.1.3 ! root      237: <table border="1" cellpadding="3">
1.1       root      238:   <tbody>
                    239:     <tr class="backdropped">
                    240:       <td align="center">Option</td>
                    241:       <td align="center">Purpose</td>
                    242:     </tr>
                    243:     <tr>
                    244:       <td align="center">-h (--help)</td>
                    245:       <td align="center">prints command line options and terminates</td>
                    246:     </tr>
                    247:     <tr>
                    248:       <td align="center">-v (--version)</td>
                    249:       <td align="center">prints version information and terminates</td>
                    250:     </tr>
                    251:     <tr>
                    252:       <td align="center">-m (--mono)</td>
                    253:       <td align="center">starts the emulated Atari ST in monochrome
                    254: resolution</td>
                    255:     </tr>
                    256:     <tr>
                    257:       <td align="center">-f (--fullscreen)</td>
                    258:       <td align="center">tries to use a fullscreen mode</td>
                    259:     </tr>
                    260:     <tr>
1.1.1.3 ! root      261:       <td align="center">--window</td>
        !           262:       <td align="center">forces Hatari to use a windowed mode</td>
        !           263:     </tr>
        !           264:     <tr>
1.1       root      265:       <td align="center">-j (--joystick)</td>
                    266:       <td align="center">activates joystick emulation via cursor keys</td>
                    267:     </tr>
                    268:     <tr>
                    269:       <td align="center">--nosound</td>
                    270:       <td align="center">disables sound (makes emulation faster)</td>
                    271:     </tr>
                    272:     <tr>
                    273:       <td align="center">--frameskip</td>
                    274:       <td align="center">drops every second frame (accelerates
                    275: emulation)</td>
                    276:     </tr>
                    277:     <tr>
                    278:       <td align="center">-D (--debug)</td>
                    279:       <td align="center">activates the simple builtin debugger</td>
                    280:     </tr>
                    281:     <tr>
1.1.1.3 ! root      282:       <td align="center">--slowfdc</td>
        !           283:       <td align="center">slows down FDC emulation (needed to make some
        !           284: games and demos work)</td>
1.1.1.2   root      285:     </tr>
                    286:     <tr>
1.1       root      287:       <td align="center">-d &lt;dir&gt; (--harddrive &lt;dir&gt;)</td>
                    288:       <td align="center">emulates &lt;dir&gt; as a hard disk</td>
                    289:     </tr>
                    290:     <tr>
                    291:       <td align="center">--hdimage &lt;imagefile&gt;</td>
1.1.1.3 ! root      292:       <td align="center">emulate hard disk with an image file<br>
        !           293:       </td>
        !           294:     </tr>
        !           295:     <tr>
        !           296:       <td style="text-align: center;">--cartridge &lt;imagefile&gt;<br>
        !           297:       </td>
        !           298:       <td style="text-align: center;">sets imagefile as the cartridge
        !           299: on the ROM port<br>
        !           300: This currently does not work together with GEMDOS harddisc emulation!<br>
        !           301:       </td>
1.1       root      302:     </tr>
                    303:     <tr>
                    304:       <td align="center">--tos &lt;imagefile&gt;</td>
                    305:       <td align="center">specify TOS ROM image to use</td>
                    306:     </tr>
1.1.1.3 ! root      307:     <tr>
        !           308:       <td align="center">--memsize x</td>
1.1       root      309:       <td align="center">set amount of emulated RAM<br>
1.1.1.3 ! root      310: x=0 for 512K, x=1,x=2 or x=4 for 1,2 or 4 MB</td>
1.1       root      311:     </tr>
                    312:     <tr>
                    313:       <td align="center">--cpulevel x</td>
                    314:       <td align="center">specify CPU (680x0) to use (TOS 2.06 only!!)</td>
                    315:     </tr>
                    316:     <tr>
                    317:       <td align="center">--compatible</td>
                    318:       <td align="center">use a more compatible but slower 68000 CPU mode</td>
                    319:     </tr>
                    320:     <tr>
                    321:       <td align="center">--blitter</td>
                    322:       <td align="center">enable blitter emulation</td>
                    323:     </tr>
                    324:     <tr>
                    325:       <td align="center">--vdi</td>
                    326:       <td align="center">use extended VDI resolution</td>
                    327:     </tr>
1.1.1.3 ! root      328:     <tr>
1.1.1.2   root      329:       <td align="center">--printer</td>
                    330:       <td align="center">enable experimental printer support</td>
                    331:     </tr>
                    332:     <tr>
                    333:       <td align="center">--midi &lt;filename&gt;</td>
1.1.1.3 ! root      334:       <td align="center">enable experimental MIDI output to the
        !           335: mentioned file</td>
1.1.1.2   root      336:     </tr>
                    337:     <tr>
                    338:       <td align="center">--rs232 &lt;filename&gt;</td>
1.1.1.3 ! root      339:       <td align="center">enable experimental RS232 communication via
        !           340: the mentioned file</td>
1.1.1.2   root      341:     </tr>
                    342:     <tr>
                    343:       <td align="center">-c &lt;filename&gt; (--configfile)</td>
1.1.1.3 ! root      344:       <td align="center">Use the mentioned file as configuration file
        !           345: instead of ~/.hatari.cfg</td>
1.1.1.2   root      346:     </tr>
1.1       root      347:   </tbody>
                    348: </table>
                    349: <h2>Using the emulated system</h2>
                    350: <p> Once you've started Hatari succesfully, you can use the emulator as
                    351: an allmost complete Atari ST computer system. </p>
                    352: <h3>The GUI</h3>
                    353: <h4>General usage</h4>
1.1.1.3 ! root      354: <p>Press <span class="key">F12</span> to enter the GUI. Navigate it
        !           355: with the mouse.
1.1       root      356: The GUI is rather self explanatory.</p>
1.1.1.3 ! root      357: <p>Click <span class="button">Okay</span> to go back to the emulated
        !           358: ST. All checked options will be applied.</p>
        !           359: <p>Check the <span class="button">Reset ST</span> option if you want
        !           360: the emulated ST to perform a soft reset. This should be equal to
        !           361: pressing the reset button on your ST.
        !           362: </p>
        !           363: <p>Click <span class="button">Quit</span> to terminate Hatari and
        !           364: return to the host OS.</p>
        !           365: <p>Click <span class="button">Cancel</span> to abandon any changes
        !           366: made.</p>
1.1       root      367: <h4>The System Dialog</h4>
1.1.1.3 ! root      368: <p>Check the CPU type to use here, enable prefetch mode and if the
        !           369: Blitter should be active.</p>
1.1       root      370: <p>For best Atari ST compatibility choose plain 68000 here.</p>
1.1.1.3 ! root      371: <p>The Timer-D patch changes the Timer-D initialization from TOS. TOS
        !           372: uses Timer-D as a baudrate generator for RS232.
        !           373: The TOS default slows the emulation down so the patch gives you a
        !           374: faster emulation.
        !           375: </p>
        !           376: <p>You can disable the Timer-D patch if games or demos require the
        !           377: original TOS setting.</p>
        !           378: <p><em>NOTE:</em> These parameters are very sensitive to the emulated
        !           379: ST and it is strongly recommended to
1.1       root      380: reset the emulated ST after changing these options.</p>
1.1.1.2   root      381: <h4>The Discs Dialog</h4>
1.1.1.3 ! root      382: <p>Use the upper dialog to choose which floppy disks should be emulated
        !           383: in the disk drives.</p>
        !           384: <p>You can use most standard Atari ST disk image files. See the chapter
        !           385: "Floppy disk images"
1.1       root      386: for details.</p>
1.1.1.3 ! root      387: <p>Click on the button <span class="button">Browse</span> next to the
        !           388: A: and B: option to go to the fileselector.
1.1.1.2   root      389: You may select and browse zipped disk images as well.</p>
1.1.1.3 ! root      390: <p>Click on <span class="button">Eject</span> to eject a disk image
        !           391: from the emulated drive. The emulated ST will act as if had no floppy
        !           392: disk in its drive.</p>
        !           393: <p>You can specify a default directory where Hatari will start to
        !           394: browse the filesystem.</p>
        !           395: <p>Check the "Auto insert B" option if you want Hatari to be smart and
        !           396: insert the second disk
        !           397: of a two disk game automatically. This option will insert the second
        !           398: disk in drive B and some
        !           399: games may not be able to find the disks there. In that rare case you
        !           400: will need to insert the
1.1       root      401: second disk manually when prompted.</p>
1.1.1.2   root      402: <p>
                    403: <em>NOTE:</em> This option does not always work properly.
                    404: </p>
1.1.1.3 ! root      405: <p>If you need to create a new blank disk image, click on <span
        !           406:  class="button">Create disk image</span>.
        !           407: Parameters for the new image can be set in the following dialog. Click
        !           408: on <span class="create">create</span> to create the image or on <span
        !           409:  class="button">back</span> to get back to the
1.1.1.2   root      410: disk dialog.
                    411: </p>
                    412: <p>
1.1.1.3 ! root      413: After clicking <span class="button">create</span>, a fileselector
        !           414: appears. You can browse the filesystem now. Select the target
        !           415: directory, click beside File:
        !           416: and type in a name for the new disk image. The name should terminate
        !           417: with .st or .msa.
1.1.1.2   root      418: </p>
1.1.1.3 ! root      419: <p>Hatari can currently create plain .ST and .MSA disk images
        !           420: exclusively.</p>
1.1.1.2   root      421: <p>Use the lower dialog to change the harddisk settings.</p>
1.1.1.3 ! root      422: <p>You can select a harddrive image for harddrive emulation via image
        !           423: file here or you may select
        !           424: a directory of your local filesystem to be emulated as the ST's
        !           425: harddrive.</p>
        !           426: <p>Check "Boot from HD" if you want Hatari to execute the AUTO folder
        !           427: on the harddrive.
        !           428: This option is checked by default if you specify a harddrive image or a
        !           429: directory via the command line.</p>
1.1       root      430: <h4>The Memory Dialog</h4>
1.1.1.3 ! root      431: <p>You can select the amount of RAM for the emulated ST here. Only
        !           432: amounts that were valid on a real unmodified STFM can be selected.</p>
        !           433: <p><em>Note:</em> This option is critical and you are strongly advised
        !           434: to reset the emulated ST
1.1       root      435: when changing this option.</p>
1.1.1.2   root      436: <p>Here you will find the options to save memory snapshots as well.</p>
1.1.1.3 ! root      437: <p>Click on <span class="button">Save</span> to save a memory snapshot
        !           438: to file. You can select a new filename here.</p>
        !           439: <p>Click on <span class="button">Restore</span> to restore a memory
        !           440: snapshot from a file. Use the fileselector to select the snapshot to be
        !           441: restored.</p>
        !           442: <p><em>NOTE:</em> Memory snapshots are not interchangeable between
        !           443: different versions of Hatari. E.q. if you compile a newer Hatari, you
        !           444: cannot load your old memory snapshots back.</p>
        !           445: 
        !           446: <h4>The ROM Dialog</h4>
        !           447: <p>Here you can select the TOS image to use. Click on <span
        !           448:  class="button">Browse</span> to select it via the fileselector.</p>
        !           449: You can also select an optional cartridge image to use. Click on <span
        !           450:  class="button">Browse</span> to select one via the fileselector. Keep
        !           451: in mind that any custom cartridge image will not work together with
        !           452: GEMDOS harddisc emulation or the VDI extended resolution emulation
        !           453: since some additional driver code will be used in the cartridge memory
        !           454: space for these emulations.<br>
        !           455: <p><em>Note:</em> These options are critical and you are strongly
        !           456: advised to reset the emulated ST
1.1       root      457: when changing one of these option.</p>
                    458: <h4>The Joystick Dialog</h4>
1.1.1.3 ! root      459: <p>Here you can select which joystick you want to emulate via the
        !           460: cursor keys.</p>
        !           461: <p>Joystick 1 is the normal ST joystick port and 99.9% of all ST games
        !           462: use this port, Joystick 0
        !           463: emulates a joystick plugged into the ST mouse port allowing you to play
        !           464: 2 player games.</p>
        !           465: <p>If no joystick is checked here, joystick emulation is done via a
        !           466: connected PC joystick.</p>
1.1       root      467: <p>See the chapter "Emulated Joystick" for details.</p>
                    468: 
                    469: <h4>The Screen Dialog</h4>
                    470: <p>Here you control the video output of the emulated ST.</p>
                    471: <p>Check "Fullscreen" to run Hatari fullscreen, default is windowed.</p>
1.1.1.3 ! root      472: <p>Check "Interleaved mode" if you wish to have that old TV feeling in
        !           473: Hatari. Every second line will be black.
1.1       root      474: This will only work in ST-MEDIUM or ST-LOW in scaled up resolutions.</p>
1.1.1.3 ! root      475: <p>Check "Frame Skip" to speed Hatari up if emulation is too slow. This
        !           476: will only draw every second ST frame
        !           477: instead of the default of drawing every ST frame. Uncheck if you have a
        !           478: fast PC.</p>
        !           479: <p>Check "Use Borders" if you wish to have the borders around the ST
        !           480: screen.</p>
        !           481: <p>"Force 8Bpp" will force SDL to use an 8bit video mode. You don't
        !           482: need this for modern video cards.</p>
        !           483: <p>You can select which sort of monitor to use. Check "Color" for games
        !           484: and demos. If you check "Mono" here,
        !           485: Hatari will emulate the good old SM124 and will not allow you to switch
        !           486: to color modes from the running ST.
        !           487: This toggle acts like a monitor switch with a color and monochrome
        !           488: monitor connected.</p>
        !           489: <p>"Zoom ST-Low res." will control if Hatari renders ST-LOW to a
        !           490: 320x200 or 640x400 PC display (with borders turned off) or 384x267 or
        !           491: 768x534.
1.1       root      492: Basically select this to toggle between a small or a large window.</p>
1.1.1.3 ! root      493: Extended GEM resolutions will emulate some sort of extended graphics
        !           494: card in the emulated ST giving you larger resolutions and a higher
        !           495: colordepth in GEM. Select a resolution and color depth. Check to
        !           496: activate. It will disable all other video options mentioned above.
        !           497: Uncheck to get back to a normal ST behaviour.<br>
        !           498: <em>Note:</em> Using an extended resolution will only work with GEM
        !           499: conformant applications. 99% of all games and demos will not run if you
        !           500: activate any extended resolution here.<br>
        !           501: <p>Click <span class="button">Capture Screen</span> to create a
        !           502: screenshot in .BMP format to the current working directory or click <span
        !           503:  class="button">Record Animation</span> to record a sequence of single
        !           504: screenshots. You can opt to only record new movie frames when the
        !           505: screen content really changed.
1.1       root      506: </p>
                    507: <h4>The Keyboard Dialog</h4>
                    508: <p>Here you can select the keyboard mapping to use.</p>
1.1.1.3 ! root      509: <p>Two different mappings called "Symbolic" and "Scancode" are
        !           510: predefined.</p>
        !           511: <p>You can also load a custom keymapping file here if you wish. Please
        !           512: note that selecting to use a custom keyboard mapping will
        !           513: use the "symbolic" mapping for all keys not defined by your map file.
        !           514: See the supplied example mapfile on how to build your
1.1       root      515: own keyboard mapping.</p>
                    516: <h4>The Sound Dialog</h4>
1.1.1.2   root      517: <p>Here you can control the sound subsystem.</p>
1.1.1.3 ! root      518: <p>Check if you want emulated sound at all. Emulation is faster if
        !           519: sound emulation is turned off.</p>
        !           520: <p>3 frequencies from low to high quality are available. Experiment a
        !           521: little bit to find out which fits best for your setup.
1.1       root      522: Medium quality will work ok in most cases.</p>
1.1.1.3 ! root      523: <p>You can select to record a piece of sound here. Check which format
        !           524: to use and click the button. It is a toggle button so
1.1       root      525: you will need to return to the GUI to switch sound recording off again.</p>
1.1.1.2   root      526: <h4>The Devices Dialog</h4>
1.1.1.3 ! root      527: <p>Check here if you want to enable experimental printer support. See
        !           528: the chapter "Emulated printer" for details.</p>
        !           529: <p>As Hatari currently only supports printing to file, click on <span
        !           530:  class="button">Select</span> to select the file to print to. You can
        !           531: enter a new filename as well.</p>
        !           532: <p><em>NOTE:</em> As the printer emulation is not perfect yet,
        !           533: activated printer support may interfere with the emulated sound.
        !           534: This is due to the fact that the Atari ST uses some general I/O ports
        !           535: of the soundchip for the printer port. The Hatari team suggests to
1.1.1.2   root      536: disable printing while using games and demos.
                    537: </p>
1.1.1.3 ! root      538: <p>Check the second checkmark if you want to enable experimental RS232
        !           539: support. The RS232 device is configured according to the settings of
        !           540: the emulated RS232 of the Atari ST. This means Hatari will
        !           541: automatically use baudrate and handshaking as configured for the
        !           542: emulated ST.</p>
        !           543: <p>Select a suitable device file for input and output. Click on <span
        !           544:  class="button">Browse</span> to select.
1.1.1.2   root      545: A good choice is /dev/ttyS0 or /dev/ttyS1.
                    546: </p>
1.1.1.3 ! root      547: <p>You can enable MIDI as well. This currently works for outputting
        !           548: MIDI data only. A good choice is /dev/midi00.</p>
        !           549: <p>Click on <span class="button">Browse</span> to select a suitable
        !           550: MIDI device file for output.</p>
1.1.1.2   root      551: <p>Your sound driver must support MIDI to make this work.</p>
                    552: <p><em>NOTE:</em> RS232 and MIDI emulation are very experimental, too.
                    553: Don't enable them unless you really need them!
                    554: </p>
1.1       root      555: <h3>Keyboard shortcuts</h3>
                    556: <p> While the emulator is running, you can activate or toggle various
                    557: features via the following keyboard shortcuts. </p>
1.1.1.3 ! root      558: <table border="1" cellpadding="3">
1.1       root      559:   <tbody>
                    560:     <tr class="backdropped">
                    561:       <td align="center">Shortcut</td>
                    562:       <td align="center">Purpose</td>
                    563:     </tr>
                    564:     <tr>
1.1.1.2   root      565:       <td align="center"><span class="key">ALTGR+a</span></td>
                    566:       <td align="center">record animation</td>
                    567:     </tr>
                    568:     <tr>
1.1       root      569:       <td align="center"><span class="key">ALTGR+g</span></td>
                    570:       <td align="center">grabs a screenshot</td>
                    571:     </tr>
                    572:     <tr>
1.1.1.2   root      573:       <td align="center"><span class="key">ALTGR+i</span></td>
1.1.1.3 ! root      574:       <td align="center">boss key: leave full screen mode and iconify
        !           575: window</td>
1.1.1.2   root      576:     </tr>
                    577:     <tr>
1.1       root      578:       <td align="center"><span class="key">ALTGR+j</span></td>
                    579:       <td align="center">activates joystick emulation via cursor keys</td>
                    580:     </tr>
                    581:     <tr>
                    582:       <td align="center"><span class="key">ALTGR+m</span></td>
                    583:       <td align="center">(un-)locks the mouse into the window</td>
                    584:     </tr>
                    585:     <tr>
                    586:       <td align="center"><span class="key">ALTGR+r</span></td>
1.1.1.2   root      587:       <td align="center">(warm) reset the ST</td>
1.1       root      588:     </tr>
                    589:     <tr>
                    590:       <td align="center"><span class="key">ALTGR+c</span></td>
1.1.1.3 ! root      591:       <td align="center">coldreset the ST (same as the original power
        !           592: switch)</td>
1.1       root      593:     </tr>
                    594:     <tr>
1.1.1.2   root      595:       <td align="center"><span class="key">ALTGR+s</span></td>
                    596:       <td align="center">enable/disable sound</td>
                    597:     </tr>
                    598:     <tr>
1.1       root      599:       <td align="center"><span class="key">ALTGR+q</span></td>
                    600:       <td align="center">quit the emulator</td>
                    601:     </tr>
                    602:     <tr>
1.1.1.2   root      603:       <td align="center"><span class="key">ALTGR+x</span></td>
                    604:       <td align="center">toggle normal/max speed</td>
                    605:     </tr>
                    606:     <tr>
                    607:       <td align="center"><span class="key">ALTGR+y</span></td>
                    608:       <td align="center">enable/disable sound recording</td>
                    609:     </tr>
                    610:     <tr>
1.1       root      611:       <td align="center"><span class="key">F11</span></td>
                    612:       <td align="center">toggles fullscreen and windowed mode</td>
                    613:     </tr>
                    614:     <tr>
                    615:       <td align="center"><span class="key">F12</span></td>
1.1.1.3 ! root      616:       <td align="center">
        !           617:       <p>activate the GUI</p>
        !           618:       <p>You may need to hold <span class="key">SHIFT</span> down
        !           619: while in windowed mode.</p>
        !           620:       </td>
1.1       root      621:     </tr>
                    622:     <tr>
                    623:       <td align="center"><span class="key">PAUSE</span></td>
1.1.1.3 ! root      624:       <td align="center">will go to the debugger if it was activated at
        !           625: compile time</td>
1.1       root      626:     </tr>
                    627:   </tbody>
                    628: </table>
                    629: <h3>Emulated Atari ST keyboard</h3>
                    630: <p> All other keys on the keyboard act as the normal Atari ST keys so
                    631: pressing SPACE on your PC will result in an emulated press of the SPACE
                    632: key on the ST. The following keys have special meanings: </p>
1.1.1.3 ! root      633: <table border="1" cellpadding="3">
1.1       root      634:   <tbody>
                    635:     <tr class="backdropped">
                    636:       <td align="center">Key</td>
                    637:       <td align="center">Meaning</td>
                    638:     </tr>
                    639:     <tr>
                    640:       <td align="center"><span class="key">Alt</span></td>
                    641:       <td align="center">will act as the ST's ALTERNATE key</td>
                    642:     </tr>
                    643:     <tr>
                    644:       <td align="center"><span class="key">left CTRL</span></td>
                    645:       <td align="center">will act as the ST's CONTROL key</td>
                    646:     </tr>
                    647:     <tr>
1.1.1.2   root      648:       <td align="center"><span class="key">Print Screen</span></td>
1.1       root      649:       <td align="center">will emulate the ST's HELP key</td>
                    650:     </tr>
                    651:     <tr>
1.1.1.2   root      652:       <td align="center"><span class="key">Scroll Lock</span></td>
1.1       root      653:       <td align="center">will emulate the ST's UNDO key</td>
                    654:     </tr>
1.1.1.2   root      655:     <tr>
                    656:       <td align="center"><span class="key">Page Up</span></td>
                    657:       <td align="center">will emulate the ST's ( key in the keypad</td>
                    658:     </tr>
                    659:     <tr>
                    660:       <td align="center"><span class="key">Page Down</span></td>
                    661:       <td align="center">will emulate the ST's ) in the keypad</td>
                    662:     </tr>
1.1       root      663:   </tbody>
                    664: </table>
1.1.1.3 ! root      665: <p> <span class="key">ALTGR</span> will act as ALTERNATE as well as
        !           666: long as you do not press it
1.1       root      667: together with a Hatari hotkey combination. </p>
1.1.1.3 ! root      668: <p> The <span class="key">right CTRL</span> key is used as the fire
        !           669: button of the emulated
1.1       root      670: joystick when you turn on joystick emulation via keyboard. </p>
1.1.1.3 ! root      671: <p> The cursor keys will act as the cursor keys on the Atari ST as long
        !           672: as joystick emulation
1.1       root      673: via keyboard has been turned off.</p>
                    674: <h3>Emulated mouse</h3>
                    675: <p>For obvious reasons your PC mouse will act as the emulated Atari ST
                    676: mouse. In fullscreen mode it will act as expected, directly controlling
                    677: the ST mouse pointer. </p>
                    678: <p>However it is a little bit different in windowed mode. To make the
                    679: mouse work there as expected you need to grab it first or lock it into
1.1.1.3 ! root      680: the Hatari window. Do this by pressing the <span class="key">ALTGR+m</span>
        !           681: hotkey combination.
1.1       root      682: Press it again to go back to normal mouse behaviour which allows you to
                    683: work in other X11 windows while Hatari is up and running. </p>
                    684: <h3>Emulated joystick</h3>
                    685: <p>The Atari ST joysticks are emulated ofcourse allowing you to play
                    686: your favourite games with Hatari. </p>
                    687: <p>The default mode is to use a connected PC joystick. You can use any
                    688: joystick that is supported by your kernel. If your joystick works with
                    689: other applications, it will likely work with Hatari as well. Make sure
                    690: it is calibrated and then off you go. Move the stick to point into the
                    691: desired direction. Please note that Hatari will not detect analogue
                    692: movement as the Atari ST only had digital joysticks. The first
1.1.1.3 ! root      693: firebutton will act as the normal firebutton on the Atari ST while the
        !           694: second
        !           695: firebutton will emulate a keypress of the <span class="key">SPACE</span>
        !           696: key on the ST as many ST
        !           697: games utilitze the SPACE bar for secondary game functions. (Xenon for
        !           698: example)</p>
1.1       root      699: <p>If you do not have a PC joystick or joypad, then you do not need to
                    700: desperate. You can emulate one of the two Atari ST joysticks via the
                    701: cursor keys. Just activate it in the GUI. Then the cursor keys will act
                    702: as the joystick directions, the right CTRL key will act as the
                    703: firebutton. You can still use the cursor keys as the ST's
1.1.1.3 ! root      704: cursorkeys in this mode as long as you press <span class="key">SHIFT</span>
        !           705: along with the cursorkeys. </p>
1.1.1.2   root      706: <h3>Emulated video</h3>
                    707: <p>Hatari by default only handles ST modes, ST-LOW, ST-MED and ST-HIGH.</p>
                    708: <p>Overscan effects and socalled "Border Removal" are possible too.</p>
1.1.1.3 ! root      709: <p>Due to the fact that these effects are achieved by using quirks and
        !           710: glitches in the original chips to do things beyond their specification
        !           711: emulation is a bit tricky for these and not all ST applications
        !           712: utilizing these techniques will work properly in Hatari.
        !           713: Especially socalled "Sync Scrolling", a special technique to emulate
        !           714: the low byte of the video address, currently does not work properly in
        !           715: Hatari.
        !           716: </p>
        !           717: <p>Beside that you can setup extended VDI modes. These only work with
        !           718: GEM-compliant applications and they are equal to fitting a videocard
        !           719: into your Mega ST.</p>
        !           720: <p>Make sure to disable extended VDI modes for playing games as 99% of
        !           721: all ST games will not be able to make use of higher resolutions.</p>
1.1.1.2   root      722: <h3>Emulated printer</h3>
1.1.1.3 ! root      723: <p>Due to the fact that printer handling is very different between Unix
        !           724: style machines and the Atari ST, emulation
1.1.1.2   root      725: of the printer is achieved by writing all printer output to a file.</p>
1.1.1.3 ! root      726: <p>The file will contain a sequence of data, the same that would appear
        !           727: on the data pins of the Atari ST printer port.
        !           728: That would include control characters and commands for graphic
        !           729: printing. Clicking "Print desktop" on the GEM desktop would result
1.1.1.2   root      730: in a messy data dump in the printer output.</p>
1.1.1.3 ! root      731: <p>Printer emulation works best for plain text files or programs that
        !           732: do not format the output for a specific printer.
        !           733: The file contents can be used with your favourite text editor for
        !           734: further processing and printing to a real printer.</p>
        !           735: <p>To get real direct printing out of Hatari on a PostScript printer,
        !           736: you may set up a GDOS printer with a PostScript driver on the emulated
        !           737: Atari and set your printer device file as Hatari's printer output.<br>
        !           738: <em>NOTE:</em> This has not been tested yet and the Hatari team cannot
        !           739: guarantee that it will work.</p>
1.1.1.2   root      740: <h3>Emulated RS232</h3>
1.1.1.3 ! root      741: <p>Serial communications in Hatari is designed to directly use a serial
        !           742: port on your PC.</p>
        !           743: <p>Communications parameters are set automatically upon the settings of
        !           744: the emulated ST. This means all you do is to set
        !           745: the communication parameters like baudrate from your ST communications
        !           746: software. Hatari will do the rest and handle
1.1.1.2   root      747: the serial input and output for you.</p>
1.1       root      748: <h2>Floppy disk images</h2>
                    749: <p>Hatari does not use floppy disks directly but disk images due to
                    750: differences between the floppy disk controllers of the ST and the PC.
1.1.1.3 ! root      751: Three types of disk images are currently supported: The raw "ST" type,
        !           752: the similar "DIM" type and
1.1.1.2   root      753: the compressed "MSA" (Magic-Shadow-Archiver) type. </p>
1.1       root      754: <p> The raw type (file suffix should be "*.st") is simply a sector by
                    755: sector image of a real floppy disk. You can easily create such an image
1.1.1.3 ! root      756: with the <span class="commandline">dd</span> program which should
        !           757: normally be pre-installed on every
        !           758: Unix-like system. Simply type something like <span class="commandline">dd
        !           759: if=/dev/fd0 of=myimage.st</span> to create a disk image. Of course you
        !           760: need access to
1.1       root      761: /dev/fd0, and depending on your system and the type of floppy disk you
                    762: might have to use another device name here (for example I use
1.1.1.3 ! root      763: /dev/fd0u720 for 720kB disks). However, if the disk is copy-protected
        !           764: or
1.1       root      765: doesn't use a MSDOS compatible file system, this might fail. So be very
                    766: careful if you're not sure about the disk format. </p>
1.1.1.3 ! root      767: <p> The other possibility is to image the disk on a real Atari ST.
        !           768: There
1.1       root      769: are programs like the Magic Shadow Archiver for this task. Hatari
1.1.1.3 ! root      770: supports this slightly compressed MSA disk images, too. Note that
        !           771: Hatari
        !           772: only supports the "old" MSA format, there are some Magic Shadow
        !           773: Archiver
1.1       root      774: clones (like Jay-MSA) that create better compressed but
1.1.1.2   root      775: Hatari-incompatible disk images. However, if you have got such a MSA
1.1.1.3 ! root      776: disk and want to use it with Hatari, you can still run the
        !           777: corresponding
1.1.1.2   root      778: MSA program within Hatari to extract the incompatible disk image to a
                    779: normal floppy disk image. </p>
1.1       root      780: <p> While *.ST and *.MSA are more or less the "standard" types of Atari
1.1.1.2   root      781: disk images, you might sometimes also find STT or ADF images on the
1.1.1.3 ! root      782: internet. These currently do not work with Hatari. </p>
        !           783: <p>Hatari can now also utilize *.DIM images just as *.ST ones without
        !           784: any problems.
1.1.1.2   root      785: Note that DIM images are nearly the same as the raw ST images
1.1.1.3 ! root      786: (they only have an additional 32 bytes header), so you can easily
        !           787: transform
1.1.1.2   root      788: the DIM images into ST images by stripping the header from the files.
                    789: For example try something like:
                    790: <span class="commandline">dd if=input.dim of=output.st bs=32 skip=1</span>
                    791: </p>
1.1       root      792: <p> If you've got a disk image that has been created with the old ST
                    793: emulator PaCifiST (for DOS) or with early versions of the program
                    794: Makedisk, and the disk image does not work with Hatari, then the disk
1.1.1.3 ! root      795: probably suffers from the "PaCifiST bootsector bug" (Hatari will
        !           796: display a
1.1       root      797: warning message then). In this case, the bootsector of the disk
                    798: contains some illegal data, so that the disk even does not work on a
                    799: real ST any more. However, if it is a .ST and not a .MSA disk, you can
1.1.1.3 ! root      800: easily fix it by using a hex-editor to change the byte at offset $D
        !           801: (13)
1.1       root      802: from 0 to 1 (don't forget to backup your disk image first, since you
                    803: can also easily destroy your disk image when changing a wrong byte
                    804: there). If the disk contains a bootsector program, you probably have to
                    805: adjust the boot sector check sum, too (it can be found at offset $1FE +
                    806: $1FF). </p>
1.1.1.2   root      807: <p>Hatari supports disk images that are compressed with (Pk-)ZIP
                    808: (file suffix must be ".zip") or GZip (file suffix must be ".st.gz" or
1.1.1.3 ! root      809: ".msa.gz"), so you can archive your disk images into zip archives.
1.1.1.2   root      810: You can also directly run the zip archives you may download from the
                    811: net as long as the archive contains a disk image in .ST or .MSA format.</p>
1.1.1.3 ! root      812: <p><em>Note:</em> Hatari does not save disk images back to *.ZIP files
        !           813: so
1.1.1.2   root      814: your highscores and savegames are lost if you load the game from such
                    815: a zipped disk image.</p>
1.1       root      816: <h2>Hard disk support</h2>
                    817: <p>Hatari supports two ways of emulating a ST hard drive: The low-level
                    818: ACSI hard disk emulation and a GEMDOS based drive emulation. </p>
                    819: <p>To use the ACSI hard disk emulation, you need a hard disk image file
1.1.1.3 ! root      820: with a pre-installed HD driver in it. So either try to image your old
        !           821: ST
1.1       root      822: hard disk or grab one from the internet. There is a HD image on the
                    823: Hatari web page for download. Perhaps we'll also provide a tool for
                    824: creating HD images one day. </p>
                    825: <p>With the GEMDOS based drive emulation, you can easily "mount" a
                    826: folder from the host file system to a drive of the emulated Atari. To
                    827: use the GEMDOS based drive emulation, you should use a folder on your
1.1.1.3 ! root      828: hard disk that only contains files and folders with valid TOS
        !           829: filenames.
1.1       root      830: That means that all files/folders should be written in capital letters
                    831: and their length mustn't exceed the 8+3 file name length limit. If you
                    832: don't want to rename all files to get capital letters, it is also
                    833: possible to store that folder on a FAT filesystem since those
                    834: filesystems are case-insensitive. </p>
                    835: <p>GEMDOS drive emulation is an easy way to share files between the
1.1.1.3 ! root      836: host system and the emulated Atari, but it is known to be incomplete
        !           837: and
1.1       root      838: a little bit unstable, especially if you use it together with the ACSI
                    839: hard disk emulation. So if your programs complain that they could not
                    840: find/read/write files on the GEMDOS HD drive, you should try to copy
1.1.1.3 ! root      841: them to a floppy disk image or a real hard disk image!</p>
        !           842: <p>Due to the way the GEMDOS drive emulation is implemented at the
        !           843: moment, it is not possible to use a cartridge image together with
        !           844: GEMDOS drive emulation. </p>
1.1       root      845: <p> Note that changing the HD-image or the GEMDOS HD-folder will reset
                    846: the emulated Atari since it is not possible to switch the hard disk
                    847: while the emulator is running. </p>
                    848: <p> May the fun without the price to be with you ;-) ! </p>
                    849: <h2>Appendix</h2>
                    850: <h3>Copying</h3>
                    851: <div class="backdropped">
                    852: <p>This program is free software; you can redistribute it and/or modify
1.1.1.3 ! root      853: it under the terms of the GNU General Public License as published by
        !           854: the
1.1       root      855: Free Software Foundation; either version 2 of the License, or (at your
                    856: option) any later version. </p>
                    857: <p>This program is distributed in the hope that it will be useful, but <em>WITHOUT
                    858: ANY WARRANTY</em>; without even the implied warranty of <em>MERCHANTABILITY</em>
1.1.1.3 ! root      859: or <em>FITNESS FOR A PARTICULAR PURPOSE</em>. See the GNU General
        !           860: Public
1.1       root      861: License for more details. </p>
                    862: <p>You should have received a copy of the GNU General Public License
                    863: along with this program; if not, write to Free Software Foundation,
                    864: Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </p>
                    865: </div>
1.1.1.3 ! root      866: <p><a href="http://www.gnu.org/">The GNU Project and the Free Software
        !           867: Foundation</a> | <a href="http://www.fsf.org/licenses/gpl.html">The
        !           868: GNU General Public License</a></p>
1.1       root      869: <h3>Introduction to Emulation</h3>
                    870: <p>Emulation via software is an art and Hatari is an example of this.</p>
1.1.1.3 ! root      871: <p>Emulation is to make a computer behave like a (probably) completely
        !           872: different machine on the lowest possible niveau.
        !           873: This includes CPU and custom chip emulation allowing software written
        !           874: for the emulated machine to be run without notice.
        !           875: A good emulator will run most of the software intended for the emulated
        !           876: platform without trouble.
1.1       root      877: </p>
                    878: <p>
1.1.1.3 ! root      879: The key to emulation is to simply do those things with a software
        !           880: program, the emulator, that normally chips would perform.
        !           881: So you have an CPU emulator that basically consists of a large loop
        !           882: that does exactly what the real thing would do:
1.1       root      883: </p>
                    884: <ul>
1.1.1.3 ! root      885:   <li>fetch an instruction from virtual memory</li>
        !           886:   <li>interpret this instruction</li>
        !           887:   <li>fetch operands from the emulated registers and memory</li>
        !           888:   <li>perform the operation like addition or changing the program
        !           889: counter on a jump instruction</li>
        !           890:   <li>writes results back into the intended registers or memory
        !           891: locations</li>
        !           892:   <li>increment of the program counter and loop</li>
1.1       root      893: </ul>
                    894: <p>
1.1.1.3 ! root      895: The typical von-Neumann CPU can be emulated very fast, stable and
        !           896: error-free using such a simple loop system.
1.1       root      897: </p>
                    898: <p>
1.1.1.3 ! root      899: But in most cases the CPU emulation is the simplest part. Correct
        !           900: emulation of the various custom chips and hardware
1.1       root      901: parts of the emulated system is much trickier.
                    902: </p>
                    903: 
                    904: <h3>Software compatibility list</h3>
1.1.1.3 ! root      905: <p>This is a little compilation of what Atari software does work in
        !           906: Hatari. It is by no means finished.</p>
1.1       root      907: 
1.1.1.3 ! root      908: <table border="1" cellpadding="3">
        !           909:   <caption align="bottom">tested games</caption> <tbody>
1.1       root      910:     <tr class="backdropped">
                    911:       <td align="center">Game</td>
                    912:       <td align="center">Working</td>
1.1.1.3 ! root      913:       <td align="center">Sound</td>
        !           914:       <td align="center">Comment</td>
        !           915:     </tr>
        !           916:     <tr>
        !           917:       <td>Eliminator</td>
        !           918:       <td>yes</td>
        !           919:       <td>perfect</td>
        !           920:       <td>&nbsp;</td>
        !           921:     </tr>
        !           922:     <tr>
        !           923:       <td>Speedball</td>
        !           924:       <td>yes</td>
        !           925:       <td>perfect</td>
        !           926:       <td>&nbsp;</td>
        !           927:     </tr>
        !           928:     <tr>
        !           929:       <td>Xenon</td>
        !           930:       <td>yes</td>
        !           931:       <td>music ok - fx dodgy</td>
        !           932:       <td>bullets and explosions sound weired</td>
        !           933:     </tr>
        !           934:     <tr>
        !           935:       <td>Bubble Bobble</td>
        !           936:       <td>yes</td>
        !           937:       <td>&nbsp;</td>
        !           938:       <td>&nbsp;</td>
        !           939:     </tr>
        !           940:     <tr>
        !           941:       <td>F15 Strike Eagle 2</td>
        !           942:       <td>yes</td>
        !           943:       <td>ok</td>
        !           944:       <td>keyboard emulation seems to be dodgy</td>
1.1       root      945:     </tr>
1.1.1.3 ! root      946:     <tr>
        !           947:       <td>Rick Dangerous</td>
        !           948:       <td>yes</td>
        !           949:       <td>perfect</td>
        !           950:       <td>&nbsp;</td>
        !           951:     </tr>
        !           952:     <tr>
        !           953:       <td>Slayer</td>
        !           954:       <td>yes</td>
        !           955:       <td>ok</td>
        !           956:       <td>raster fx at highscore entry dodgy</td>
        !           957:     </tr>
        !           958:     <tr>
        !           959:       <td>Lethal Xcess</td>
        !           960:       <td>no</td>
        !           961:       <td>&nbsp;</td>
        !           962:       <td>crashes while loading, sync scrolling will not work properly</td>
        !           963:     </tr>
        !           964:     <tr>
        !           965:       <td>Star Goose</td>
        !           966:       <td>yes</td>
        !           967:       <td>music ok - bullet sound dodgy</td>
        !           968:       <td>&nbsp;</td>
        !           969:     </tr>
        !           970:     <tr>
        !           971:       <td>Xenon 2 - Megablast</td>
        !           972:       <td>yes</td>
        !           973:       <td>nearly perfect (including sampled intro)</td>
        !           974:       <td>&nbsp;</td>
        !           975:     </tr>
        !           976:     <tr>
        !           977:       <td>Metal Mutant</td>
        !           978:       <td>yes</td>
        !           979:       <td>seems ok</td>
        !           980:       <td>some color effects in the lower screen seem buggy</td>
        !           981:     </tr>
        !           982:     <tr>
        !           983:       <td>Defenders Of The Earth</td>
        !           984:       <td>yes</td>
        !           985:       <td>&nbsp;</td>
        !           986:       <td>&nbsp;</td>
        !           987:     </tr>
        !           988:     <tr>
        !           989:       <td>Nebulus</td>
        !           990:       <td>yes</td>
        !           991:       <td>music ok; snowball, balls and trapdoors dodgy</td>
        !           992:       <td>otherwise working to a playable extend</td>
        !           993:     </tr>
        !           994:     <tr>
        !           995:       <td>Leander</td>
        !           996:       <td>yes</td>
        !           997:       <td>&nbsp;</td>
        !           998:       <td>&nbsp;</td>
        !           999:     </tr>
        !          1000:     <tr>
        !          1001:       <td>Navy Seals</td>
        !          1002:       <td>yes</td>
        !          1003:       <td>&nbsp;</td>
        !          1004:       <td>&nbsp;</td>
        !          1005:     </tr>
        !          1006:     <tr>
        !          1007:       <td>Armalyte</td>
        !          1008:       <td>yes</td>
        !          1009:       <td>&nbsp;</td>
        !          1010:       <td>&nbsp;</td>
        !          1011:     </tr>
        !          1012:     <tr>
        !          1013:       <td>Wings Of Death</td>
        !          1014:       <td>yes</td>
        !          1015:       <td>&nbsp;</td>
        !          1016:       <td>&nbsp;</td>
        !          1017:     </tr>
        !          1018:     <tr>
        !          1019:       <td>Toki</td>
        !          1020:       <td>yes</td>
        !          1021:       <td>&nbsp;</td>
        !          1022:       <td>&nbsp;</td>
        !          1023:     </tr>
        !          1024:     <tr>
        !          1025:       <td>Alien World</td>
        !          1026:       <td>yes</td>
        !          1027:       <td>&nbsp;</td>
        !          1028:       <td>Only works with "--slowfdc"</td>
        !          1029:     </tr>
        !          1030:     <tr>
        !          1031:       <td>Skweek</td>
        !          1032:       <td>yes</td>
        !          1033:       <td>&nbsp;</td>
        !          1034:       <td>Does not work with cartridge / HD emulation</td>
        !          1035:     </tr>
        !          1036:   </tbody>
        !          1037: </table>
        !          1038: 
        !          1039: <br>
1.1.1.2   root     1040: 
1.1.1.3 ! root     1041: <table border="1" cellpadding="3">
        !          1042:   <caption align="bottom">tested demos</caption> <tbody>
        !          1043:     <tr class="backdropped">
        !          1044:       <td align="center">Demo</td>
        !          1045:       <td align="center">Working</td>
        !          1046:       <td align="center">Sound</td>
        !          1047:       <td align="center">Comment</td>
        !          1048:     </tr>
        !          1049:     <tr>
        !          1050:       <td>Fantasia (by Dune)</td>
        !          1051:       <td>yes</td>
        !          1052:       <td>&nbsp;</td>
        !          1053:       <td>Only works with "--slowfdc"</td>
        !          1054:     </tr>
        !          1055:     <tr>
        !          1056:       <td>Oddstuff (by Dune/SectorOne)</td>
        !          1057:       <td>yes</td>
        !          1058:       <td>&nbsp;</td>
        !          1059:       <td>Only works with "--slowfdc".
        !          1060:           Enable "frameskip" to avoid the flicker.</td>
        !          1061:     </tr>
        !          1062:     <tr>
        !          1063:       <td>If pigs could fly (by Syndicate)</td>
        !          1064:       <td>yes</td>
        !          1065:       <td>&nbsp;</td>
        !          1066:       <td>Only works with "--slowfdc"</td>
        !          1067:     </tr>
        !          1068:     <tr>
        !          1069:       <td>LongScreen (by X-Troll)</td>
        !          1070:       <td>yes</td>
        !          1071:       <td>&nbsp;</td>
        !          1072:       <td>Only works with "--slowfdc"</td>
        !          1073:     </tr>
        !          1074:     <tr>
        !          1075:       <td>Overdose (by Aggression)</td>
        !          1076:       <td>yes</td>
        !          1077:       <td>&nbsp;</td>
        !          1078:       <td>Does not work with cartridge / HD emulation</td>
        !          1079:     </tr>
1.1       root     1080:   </tbody>
                   1081: </table>
                   1082: 
1.1.1.3 ! root     1083: <br>
        !          1084: 
        !          1085: <table border="1" cellpadding="3">
        !          1086:   <caption align="bottom">tested applications</caption> <tbody>
1.1       root     1087:     <tr class="backdropped">
                   1088:       <td align="center">Application</td>
                   1089:       <td align="center">Working</td>
1.1.1.3 ! root     1090:       <td align="center">Comment</td>
        !          1091:     </tr>
        !          1092:     <tr>
        !          1093:       <td>DevPac 2.2</td>
        !          1094:       <td>yes</td>
        !          1095:       <td>MonST crashy</td>
        !          1096:     </tr>
        !          1097:     <tr>
        !          1098:       <td>Turbo Assembler</td>
        !          1099:       <td>yes</td>
        !          1100:       <td>&nbsp;</td>
        !          1101:     </tr>
        !          1102:     <tr>
        !          1103:       <td>GFABASIC 3.6TT</td>
        !          1104:       <td>yes</td>
        !          1105:       <td>MENU.PRG does not like harddisks. Use diskimages for
        !          1106: compiling.</td>
        !          1107:     </tr>
        !          1108:     <tr>
        !          1109:       <td>ST Basic</td>
        !          1110:       <td>yes</td>
        !          1111:       <td>&nbsp;</td>
        !          1112:     </tr>
        !          1113:     <tr>
        !          1114:       <td>Neochrome</td>
        !          1115:       <td>yes</td>
        !          1116:       <td>rasters sometimes unstable</td>
        !          1117:     </tr>
        !          1118:     <tr>
        !          1119:       <td>Crackart</td>
        !          1120:       <td>yes</td>
        !          1121:       <td>Harddisk access does not work with GEMDOS emulation - fine
        !          1122: with disk images</td>
        !          1123:     </tr>
        !          1124:     <tr>
        !          1125:       <td>Tempus</td>
        !          1126:       <td>yes</td>
        !          1127:       <td>&nbsp;</td>
        !          1128:     </tr>
        !          1129:     <tr>
        !          1130:       <td>Sagrotan</td>
        !          1131:       <td>yes</td>
        !          1132:       <td>&nbsp;</td>
        !          1133:     </tr>
        !          1134:     <tr>
        !          1135:       <td>SidSound Designer</td>
        !          1136:       <td>yes</td>
        !          1137:       <td>&nbsp;</td>
        !          1138:     </tr>
        !          1139:     <tr>
        !          1140:       <td>MusicMon 2</td>
        !          1141:       <td>yes</td>
        !          1142:       <td>&nbsp;</td>
        !          1143:     </tr>
        !          1144:     <tr>
        !          1145:       <td>Protracker</td>
        !          1146:       <td>yes</td>
        !          1147:       <td>&nbsp;</td>
        !          1148:     </tr>
        !          1149:     <tr>
        !          1150:       <td>Teradesk</td>
        !          1151:       <td>yes</td>
        !          1152:       <td>&nbsp;</td>
        !          1153:     </tr>
        !          1154:     <tr>
        !          1155:       <td>Qed</td>
        !          1156:       <td>yes</td>
        !          1157:       <td>&nbsp;</td>
        !          1158:     </tr>
        !          1159:     <tr>
        !          1160:       <td>Everest</td>
        !          1161:       <td>yes</td>
        !          1162:       <td>&nbsp;</td>
        !          1163:     </tr>
        !          1164:     <tr>
        !          1165:       <td>Speed Of Light</td>
        !          1166:       <td>yes</td>
        !          1167:       <td>&nbsp;</td>
1.1       root     1168:     </tr>
                   1169:   </tbody>
                   1170: </table>
                   1171: 
1.1.1.3 ! root     1172: <br>
1.1       root     1173: 
1.1.1.3 ! root     1174: <hr style="width: 100%; height: 2px;">
1.1       root     1175: <table border="0" width="100%">
1.1.1.3 ! root     1176:   <tbody>
1.1       root     1177:     <tr>
1.1.1.3 ! root     1178:       <td align="left"><a href="http://validator.w3.org/check/referer"><img
        !          1179:  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
        !          1180:  border="0" height="31" width="88"></a></td>
        !          1181:       <td align="right">
        !          1182:       <address><a href="mailto:[email protected]">Matthias Arndt</a>
        !          1183: December 18 2004</address>
        !          1184:       </td>
1.1       root     1185:     </tr>
1.1.1.3 ! root     1186:   </tbody>
1.1       root     1187: </table>
                   1188: </body>
                   1189: </html>

unix.superglobalmegacorp.com

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