Up-to-date list of command line parameters and key mappings
===========================================================

Usage:
atari800 [options] [filenames]

where:
"filenames" are names of files supported by the emulator.
The following file types are currently supported:
- disk images: ATR, XFD, ATR.GZ/ATZ, XFD.GZ/XFZ, DCM, PRO, ATX
- programs: COM/EXE/XEX, BAS, LST
- cartridge images: CAR/CART, ROM (raw)
- tape images: CAS, raw bootable programs, sound files (WAV, FLAC, Ogg Vorbis)
- Atari800 state files: compressed and not compressed
Disk images are mounted in order, i.e. the first file is mounted
to the drive 1, next one to the drive 2, etc.

Cassette operation
==================
There is support for loading and saving from/to CAS tape images and sound
files (WAV, FLAC, Ogg Vorbis etc.). It is also possible to select raw files
(DOS binaries, bootable programs, BASIC programs etc.) as tape images. Upon
attaching a tape image, the emulator acts as if the tape recorder's "Play"
button was permanently pressed, so that a tape rolls automatically when
an Atari program turns the tape motor on.

Turning the SIO patch on speeds up the tape load and save operations. Note
that toggling the SIO patch during any tape operation will cause it to fail.

A tape image can be rewound to a specific part (specific block for CAS/raw
images, or specific second for sound files), to allow loading from tape images
which contain multiple programs one-after-another. After rewinding the
"Record" option is automatically turned off. Rewinding will cause any tape
operation being in progress to fail.

When a tape image is attached to Atari800, only loading from it is possible.
Before saving data on the tape, a user has to manually switch the "Record"
option to "yes", in the same way as one would manually press/release the
"Record" button on a physical tape recorder. Remember to disable the "Record"
option before loading from tape. Note that switching the "Record" option
on/off during any tape operation will cause it to fail and may cause random
data to be saved to a tape image.

With the SIO patch active, the emulator automatically recognises whether
a load or save operation is requested. and it is not necessary to touch the
"Record" option. This can lead to unwanted changes in a tape file. To avoid
the problem, a user can mark the attached cassette image as read-only to
disallow any write operations.

Saving to tape casues the new blocks to be appended at the tape's current
position. If a tape image contained some data after the current recording
position, it is removed and the tape is truncated. So, since with the SIO
patch active the emulator automatically switches itself to recording, it is
rather easy to accidentally overwrite data on tape.

A user can create a new empty tape image (CAS< raw or audio) with the "Make
blank tape" option. The user then provides the image's filename and its
description (only for CAS format, stored in the CAS image's header; may be
left empty). The created image is automatically attached to Atari800 with the
"Record" option turned on, which allows to go straight to saving the data.
Creating an image with the filename pointing to an existing file will cause
that file to be cleared.

Saving the emulator's state during a tape loading/saving is not supported. The
current tape operation is not stored in the savestate and it will not be
restored properly when that savestate is later loaded.

MIO and Black Box
==================
You need ROM images (not provided.)
Make a blank SCSI disk image (using dd for instance.)
Set MIO_SCSI_DISK or BB_SCSI_DISK to the disk image name.
Use 256 byte sectors for the Black Box.
Don't use SASI.
Use ALT-Backslash for the Black Box menu.
Don't use the OS patches, use -nopatchall.  The patches conflict with D1xx

1400XL/1450XLD
==================
You need ROM images (not provided.)
Don't use the OS patches, use -nopatchall.  The patches conflict with D1xx
The Self test can talk.
You can use the V: device to talk.
If you set the drives to empty, then a message appears on the 1450XLD screen
asking you to insert a disk.
If you press select when booting, the behavior of the 1450XLD disks is changed.
I believe it slows down for compability.

Command line options
====================

-help                 Display list of options and terminate
-v                    Display version number and terminate
-verbose              Display framerate when exiting

-config <filename>    Use specified configuration file instead of default
-autosave-config      Automatically save the current configuration on emulator
                      exit
-no-autosave-config   Don't save the current configuration on emulator exit
                      (the default)

-osa_rom <filename>   Use specified OS/A ROM image
-osb_rom <filename>   Use specified OS/B ROM image
-xlxe_rom <filename>  Use specified XL/XE OS ROM image
-5200_rom <filename>  Use specified 5200 OS ROM image
-basic_rom <filename> Use specified Atari BASIC ROM image

-atari                Emulate Atari 800
-xl                   Emulate Atari 800 XL
-xe                   Emulate Atari 130 XE
-320xe                Emulate Atari 320 XE (Compy Shop)
-rambo                Emulate Atari 320 XE (Rambo)
-5200                 Emulate Atari 5200

-emuos                Use EmuOS
-a                    Use OS/A for Atari 800
-b                    Use OS/B for Atari 800
-c                    Enable RAM between 0xc000 and 0xcfff in Atari 800

-axlon <n>            Use Atari 800 Axlon memory expansion: <n> k total RAM
-axlon0f              Use Axlon shadow at 0x0fc0-0x0fff
-mosaic <n>           Use 400/800 Mosaic memory expansion: <n> k total RAM

-pal                  Emulate PAL TV mode
-ntsc                 Emulate NTSC TV mode

-nobasic              Turn off Atari BASIC ROM
-basic                Turn on Atari BASIC ROM

-cart <filename>      Insert cartridge (CART or raw format)
-cart-type <0..51>    Select type of cartridge inserted with -cart. 0 means
                      no cartridge, and other values indicate a specific
                      cartridge type as in cart.txt.
-cart2 <filename>     Insert second cartridge (CART or raw format)
                      Only if first cartridge is SpartaDOS X (64 or 128)
-cart2-type <0..51>   Similar to -cart-type. Select type of cartridge inserted
                      with -cart2.
-cart-autoreboot      Automatically reboot after cartridge inserting/removing
                      (doesn't affect the piggyback cartridge)
-no-cart-autoreboot   Don't reboot after cartridge inserting/removing

-run <filename>       Run Atari program (EXE, COM, XEX, BAS, LST)

-state <filename>     Load saved-state file

-tape <filename>      Attach cassette image (CAS, raw file, WAV, FLAC,
                      Ogg Vorbis)
-boottape <filename>  Attach cassette image and boot it
-tape-readonly        Set the attached cassette image as read-only
-tape-turbo <type>    Choose tape recorder's turbo modification.
                      Possible values: none, ast-xc12, blizzard, hard,
                      manual, manual-rev

-1400                 Emulate the Atari 1400XL
-xld                  Emulate the Atari 1450XLD
-bb                   Emulate the CSS Black Box
-mio                  Emulate the ICD MIO board

-voicebox             Emulate the Alien Group Voice Box I
-voiceboxii           Emulate the Alien Group Voice Box II

-nopatch              Don't patch SIO routine in OS
-nopatchall           Don't patch OS at all, H:, P: and R: devices won't work
-H1 <path>            Set path for H1: device
-H2 <path>            Set path for H2: device
-H3 <path>            Set path for H3: device
-H4 <path>            Set path for H4: device
-hreadonly            Enable read-only mode for H: device
-hreadwrite           Disable read-only mode for H: device
-devbug               Put debugging messages for H: and P: devices in log file

-rtime                Enable R-Time 8 emulation
-nortime              Disable R-Time 8 emulation

-rdevice [<dev>]      Enable R: device (<dev> can be host serial device name)

-mouse off            Do not use mouse
-mouse pad            Emulate paddles
-mouse touch          Emulate Atari Touch Tablet
-mouse koala          Emulate Koala Pad
-mouse pen            Emulate Light Pen
-mouse gun            Emulate Light Gun
-mouse amiga          Emulate Amiga mouse
-mouse st             Emulate Atari ST mouse
-mouse trak           Emulate Atari Trak-Ball
-mouse joy            Emulate joystick using mouse
-mouseport <num>      Set mouse port 1-4 (default 1)
-mousespeed <num>     Set mouse speed 1-9 (default 3)
-multijoy             Emulate MultiJoy4 interface
-directmouse          Use mouse's absolute position
-cx85 <num>           Emulate CX85 numeric keypad on port <num>
-grabmouse            SDL only, prevent mouse pointer from leaving the window

-record <filename>    Record input to <filename>
-playback <filename>  Playback input from <filename>

-refresh <rate>       Set screen refresh rate
-artif <mode>         Set artifacting mode 0-4 (0 = disable) (see also -ntscemu)

-colors-preset standard|deep-black|vibrant
                      Use one of predefined color adjustments
-saturation <n>       Set screen color saturation (like TV Colour control)
-contrast <n>         Set screen contrast (also called white level)
-brightness <n>       Set screen brightness (also called black level)
-gamma <n>            Set screen gamma correction
-ntsc-saturation <n>  Set saturation only for NTSC
-ntsc-contrast <n>    Set contrast only for NTSC
-ntsc-brightness <n>  Set brightness only for NTSC
-ntsc-gamma <n>       Set gamma adjustment only for NTSC
-hue <n>              Set hue -1..1 (like TV Tint control, NTSC only)
-colordelay <n>       Set GTIA color delay (emulates the potentiometer at the
                      bottom of Atari computers, that adjusts colors; NTSC only)
-pal-saturation <n>   Set saturation only for PAL
-pal-contrast <n>     Set contrast only for PAL
-pal-brightness <n>   Set brightness only for PAL
-pal-gamma <n>        Set gamma adjustment only for PAL

-paletten <filename>  Read Atari NTSC colors from ACT file
-paletten-adjust      Apply the colour adjustments to the loaded NTSC palette
-palettep <filename>  Read Atari PAL colors from ACT file
-palettep-adjust      Apply the colour adjustments to the loaded PAL palette

-screenshots <pattern>Set filename pattern for screenshots
-showspeed            Show percentage of actual speed
-turbo                Run at max speed (Turbo mode)

-sound                Enable sound
-nosound              Disable sound
-dsprate <freq>       Set mixing frequency (Hz)
-snddelay <time>      Set sound delay (milliseconds)
-ide <file>           Enable IDE emulation
-ide_debug            Enable IDE Debug output
-ide_cf               Enable CF emulation


Curses version options
----------------------
-left                 Use columns 0 to 39
-central              Use columns 20 to 59
-right                Use columns 40 to 79
-wide1                Use columns 0 to 79 (spaces between characters)
-wide2                Use columns 0 to 79 (as above but normal/reverse spaces)


DOS/VGA version options
-----------------------

-interlace            Generate screen with interlace
-video <mode>         0=320x200, 1=320x240, 2=320x480 interlaced with black
                      lines, 3=320x480 interlaced with darker lines
-novesa               Do not use VESA 2 video modes
-vretrace             Use vertical retrace control

-LPTjoy1              Read joystick connected to LPT1
-LPTjoy2              Read joystick connected to LPT2
-LPTjoy3              Read joystick connected to LPT3
-joyswap              Swap joysticks

-keyboard 0           PC keyboard layout
-keyboard 1           Atari keyboard layout


Falcon version options
----------------------

-interlace <x>        Generate Falcon screen only every x frame
-videl                Direct VIDEL programming (Falcon/VGA only)
-double               Double the screen size on NOVA
-delta                Delta screen output (differences only)

-joyswap              Swap joysticks


Java NestedVM version options
----------------------
-scale <n>            Scale width and height by <n>


SDL version options
-------------------

-fullscreen           Start in fullscreen mode
-windowed             Start in windowed mode (the default)
-rotate90             Rotate display (useful for devices with 240x320 screen)
-no-rotate90          Don't rotate display (the default)
-fs-width <x>         Set horizontal fullscreen resolution
-fs-height <y>        Set vertical fullscreen resolution
-win-width <x>        Set window's horizontal size
-win-height <y>       Set window's vertical size
-bpp <n>              Set mode bits per pixel, only if OpenGL is disabled
                      (0=desktop depth, 8, 16, 32)
-vsync                Synchronize the display with monitor's vertical retrace
                      to avoid image tearing.
-no-vsync             Don't synchronize the display with the monitor (the default).
-horiz-area narrow|tv|full|<number>
                      Set visible horizontal area:
                      narrow: 320 pixels,
                      tv: similar to real tv - 336 pixels,
                      full: full overscan - 384 pixels,
                      or provide a number between 160 and 384.
-vert-area short|tv|full|<number>
                      Set visible vertical area:
                      short: 200 pixels,
                      tv: similar to real tv - 224 or 240 pixels (depending on
                      TV system),
                      full: full overscan - 275 pixels,
                      or provide a number between 100 and 275.
-horiz-shift <n>      Set horizontal shift of the visible area (-384..384)
-vert-shift <n>       Set vertical shift of the visible area (-275..275)
-stretch none|integral|full|<number>
                      Set method for image stretching:
                      none: no stretching at all,
                      integral: fit to screen/window, but stretch only by
                      integral multiplier
                      full: stretch to fit screen/window, unrestricted
                      or provide a custom multiplier (e.g. 2, 3, 2.5, ...)
-fit-screen width|height|both
                      Set method of fitting the display to screen/window.
-image-aspect none|square-pixels|real
                      How to maintain image aspect ratio when stretching:
                      none: maintaining disabled, image stretches to fill
                      the entire screen/window
                      square-pixels: width and height stretched by the same
                      multiplier
                      real: real TV's aspect ratio (depending on TV system)
-host-aspect-ratio auto|<x>:<y>
                      Set host display's aspect ratio. Used to correctly
                      compute aspect ratio when -image-aspect is "real".
                      Can be set to values such as 4:3, 16:9, 1.25:1, etc.
                      "auto" tries to autodetect the ratio.
-80column             Display output of 80 column hardware. Usable only in
                      conjunction with one of -xep80, -proto80, -af80
-no-80column          Display normal screen instead of 80 column output

-audio16              Use 16-bit sound
-audio8               Use 8-bit sound

-nojoystick           Do not initialize joysticks
-joy0 </dev/lp0>      Define the device for LPTjoy
-joy1 </dev/lp1>      --""-- only when LPTjoy support compiled in

-ntscemu              Emulate NTSC composite video
This includes NTSC TV artifacts.  "-artif" is not needed in this mode and will
not work.
-no-ntscemu            Disable emulation of NTSC composite video
The following 7 items are for -ntscemu only:
-ntsc-filter-preset composite|svideo|rgb|monochrome
                      Use one of predefined NTSC filter adjustments
-ntsc-sharpness <n>   Set sharpness
-ntsc-resolution <n>  Set resolution
-ntsc-artifacts <n>   Set artifacts
-ntsc-fringing <n>    Set fringing
-ntsc-bleed <n>       Set bleed
-ntsc-burstphase <n>  Set burst phase. This changes colors of artifacts.
                      The best values are 0, 0.5, 1, 1.5
-scanlines <n>        Set visibility of scanlines (0-100)
-scanlinesint         Enable scanlines interpolation
-no-scanlinesint      Disable scanlines interpolation
-video-accel          Use OpenGL hardware acceleration
-no-video-accel       Don't use OpenGL hardware acceleration
-pixel-format bgr16|rgb16|bgra32|argb32
                      Choose OpenGL texture format
-pbo                  With OpenGL, use Pixel Buffer Objects for performance
-no-pbo               Disable usage of Pixel Buffer Objects
-bilinear-filter      Enable OpenGL bilinear filtering
-no-bilinear-filter   Disable OpenGL bilinear filtering
-opengl-lib <path>    Use a custom OpenGL shared library
-proto80              Emulate a prototype 80 column board for the 1090
-xep80                Emulate the XEP80
-xep80port <n>        Use XEP80 on joystick port <n>
-af80                 Emulate the Austin Franklin 80 column board


X11 options
-----------

-small                Single size window
-large                Double size window
-huge                 Triple size window
-clip_x <n>           Left offset for clipping
-clip_y <n>           Top offset for clipping
-clip_width           Width of the clipping area
-clip_height          Height of the clipping area
-private_cmap         Use private colormap

-sio                  Show SIO monitor
-x11bug               Enable debug code in atari_x11.c

-keypad               Keypad mode


Keyboard, joystick and other controllers
========================================

Unlike PC Xformer, I have not tried to emulate the exact keyboard layout,
instead, I have tried to make your native keyboard work as normal.

F1                   Built in user interface
F2                   Option key
F3                   Select key
F4                   Start key
F5                   Reset key ("warm reset")
Shift+F5             Reboot ("cold reset")
F6                   Help key (XL/XE only)
F7                   Break key
F8                   Enter monitor
F9                   Exit emulator
F10                  Save screenshot
Shift+F10            Save interlaced screenshot
F12                  Turbo mode
Alt+R                Run Atari program
Alt+D                Disk management
Alt+C                Cartridge management
Alt+T                Tape management
Alt+Y                Select system
Alt+O                Sound settings
Alt+W                Sound recording start/stop
Alt+S                Save state file
Alt+L                Load state file
Alt+A                About the emulator
Insert               Insert line (Atari Shift+'>')
Ctrl+Insert          Insert character (Atari Ctrl+'>')
Shift+Ctrl+Insert    Shift+Ctrl+'>'
Delete               Delete line (Atari Shift+Backspace)
Shift+Backspace      Delete line (Atari Shift+Backspace)
Ctrl+Delete          Delete character (Atari Ctrl+Backspace)
Ctrl+Backspace       Delete character (Atari Ctrl+Backspace)
Shift+Ctrl+Delete    Shift+Ctrl+Backspace
Shift+Ctrl+Backspace Shift+Ctrl+Backspace
Home                 Clear (Atari Shift+'<')
Ctrl+Home            Ctrl+'<' (also clears screen)
Shift+Ctrl+Home      Shift+Ctrl+'<'
~                    Inverse video
Up                   Up (Atari Ctrl+'-')
Down                 Down (Atari Ctrl+'=')
Left                 Left (Atari ctrl+'+')
Right                Right (Atari ctrl+'*')
Ctrl+Up              -
Ctrl+Down            =
Ctrl+Left            +
Ctrl+Right           *
Shift+Up             _ (Atari Shift+'-')
Shift+Down           | (Atari Shift+'=')
Shift+Left           \ (Atari Shift+'+')
Shift+Right          ^ (Atari Shift+'*')
Shift+Ctrl+Up        Shift+Ctrl+-
Shift+Ctrl+Down      Shift+Ctrl+=
Ctrl+'\'             Ctrl+Esc  (Workaround for Windows)
Shift+Ctrl+'\'       Shift+Ctrl+Esc (Workaround for Windows)

CX85 Keypad (if enabled):
host keypad 0123456789-.   0123456789-.
host keypad /              NO
host keypad Ctrl+/         ESCAPE
host keypad *              DELETE
host keypad +              YES
host keypad Enter          +ENTER

Paddles, Atari touch tablet, Koala pad, light pen, light gun,
ST/Amiga mouse, Atari trak-ball, joystick and Atari 5200 analog
controller are emulated using mouse on ports that support it.
See the options above for how to enable mouse.


Amiga keyboard, joystick and other controllers
----------------------------------------------

Please look into the supplied Atari800.guide.


BASIC keyboard, joystick and other controllers
----------------------------------------------

No function keys or Alt+letter shortcuts.
Use Ctrl+C to enter the monitor.
Controllers not supported in this version.


Curses keyboard, joystick and other controllers
-----------------------------------------------

F10 (Save screenshot) does not work in the default CURSES_BASIC build.
Shift+F5 and Shift+F10 don't work at all.
Avoid Ctrl + C, H, J, M, Q, S and Z. The remaining control characters
can be typed. Control characters are displayed on the screen
with the associated upper case character in bold.
Controllers not supported in this version.


DOS VGA keyboard, joystick and other controllers
------------------------------------------------

F7         Switch between Emulated joysticks mode and Normal keyboard
`          Atari/Inverse key

Joysticks can be either real one connected to game port, or old 8-bit
digital CX-40 joysticks connected to parallel port or keyboard joysticks
(try out JOYCFG.EXE).


Falcon keyboard, joystick and other controllers
-----------------------------------------------

Help       Help key (XL/XE)

Joystick 0 is operated by the numeric keypad (make sure that the numeric
keypad has been enabled).

        7 8 9
         \|/
        4 5 6
         /|\
        1 2 3

        And 0 is the fire key.

Mouse not supported in this version.


SDL keyboard, joystick and other controllers
--------------------------------------------
`          Atari/Inverse key
LSUPER     Atari/Inverse key (unusable under Windows)
RSUPER     CapsToggle (+Shift = CapsLock)

LAlt+F     Switch fullscreen
LAlt+G     Switch visible horizontal area. See -horiz-area.
LAlt+J     Swap joysticks 0 and 1
LAlt+M     Grab mouse (prevents mouse pointer from leaving the window)

LAlt+LShift+1     Decrease hue (like TV Tint control, only NTSC)
LAlt+1            Increase hue
LAlt+LShift+2     Decrease saturation (like TV Colour control)
LAlt+2            Increase saturation
LAlt+LShift+3     Decrease contrast (also called white level)
LAlt+3            Increase contrast
LAlt+LShift+4     Decrease brightness (also called black level)
LAlt+4            Increase brightness
LAlt+LShift+5     Decrease gamma adjustment
LAlt+5            Increase gamma adjustment
LAlt+LShift+6     Decrease color delay (Atari color adjustment potentiometer, only NTSC)
LAlt+6            Increase color delay

The following keys work only in the NTSC filter mode (-ntscemu):
LAlt+LShift+7     Decrease sharpness
LAlt+7            Increase sharpness
LAlt+LShift+8     Decrease resolution
LAlt+8            Increase resolution
LAlt+LShift+9     Decrease artifacts
LAlt+9            Increase artifacts
LAlt+LShift+0     Decrease fringing
LAlt+0            Increase fringing
LAlt+LShift+-     Decrease bleed
LAlt+-            Increase bleed
LAlt+LShift+=     Decrease burst phase (use this to change artifacting colours)
LAlt+=            Increase burst phase
LAlt+LShift+[     Decrease scanlines percentage
LAlt+[            Increase scanlines percentage
LAlt+]            Toggle NTSC composite/S-Video/RGB/monochrome settings
 
LAlt+Shift+X      Enable/disable 80 column screen (for -xep80/-af80/-proto80)

Apart from standard joysticks (handled by the SDL) up to two keyboard joysticks
are supported. The keys used for joystick directions and the trigger can be
freely defined in the config UI (Controller Config -> Define layout).
Keyboard joystick emulation can be enabled/disabled in the Controller Config.
By default, joy 0 is enabled and joy 1 is disabled (to not steal normal
AWDS keys in the emulator).


X11 keyboard, joystick and other controllers
--------------------------------------------

Alt        Atari/Inverse key (either Alt key will work)

Joystick 0 is operated by the mouse position relative to the center of the
screen. The mouse button acts as the trigger. On Linux, standard joysticks
are also supported.

