Atari 800 Emulator for Unix, Version 0.1.5
------------------------------------------

    Copyright (C) 1995 David Firth. E-Mail: david@signus.demon.co.uk

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 1, or (at your option)
    any later version.

This is the version 0.1.6 of my Atari 800 emulator for Unix (consider
it an early Alpha). My main objective is to create a portable freely
distributable emulator (i.e. with source code available). It can be
configured to run in the following ways :-

	1. BASIC mode
	2. CURSES Mode
	3. SVGALIB for Linux Systems
	4. X-Windows
	5. CBM Amiga 1200

The basic mode is only useful for running programs such as MAC65,
Atari Basic etc. I have had this version running on Linux, SunOS 4.1.3,
Solaris 2.4, VAX/VMS, CBM Amiga (Dice C) and the HP-UX 9000/380.

The CURSES mode is similar to the basic mode, but it also enables full
screen editing capability. Some computer don't seem to support curses
fully - SunOS 4.1.3, VAX/VMS, LINUX (but ncurses is OK).

The SVGALIB version runs at a reasonable speed. The screen dimensions
are limited to 320x200 and is unable to display the overscan modes.
Instead SVGALIB displays the core 320x192 pixels.

The X-Windows version supports graphics but runs *very* slowly. This
appears to be due to overheads with X-Windows.

The Amiga version supports graphics but currently lacks Paddle support.

---------------------------------------------------------------------------

Features
--------

Note: Not all features are supported on all platforms.

48K/52K Atari 400/800 emulation (optional RAM between 0xc000 and 0xcfff)
Atari 800XL emulation.
OSS Super Cartridges.
Should run on any Unix computer running X-Windows.
Wide / Normal / Standard Playfields.
Joystick controller using numeric keypad.
Paddle controller using X-Windows mouse position.
Display List Interrupts.
Vertical Blank Interrupts.
All Antic Display modes.
Player Missile Graphics with collision detection.
Character vertical reflect, invert and blank.
Files can be stored directly on your host computer via the H: device.
	(H: replaces the C: device which serves no useful purpose)
Reads ATR (128 bytes sector disks only) and XFD disk files.
Disk swapping (Crude but works - needs to be improved)
PIL modes - allows memory between 0x8000 and 0xbfff to be toggled
between RAM and ROM.

Bugs / Known Problems
---------------------

1. A few programs cause the emulator to enter its built in debugger. The
  reason for this is unknown at the moment. It might be use of undocumented
  instructions.

2. Player missile priority is ignored.

3. Programs that monitor VCOUNT usually don't work. This is because the
   VBI + all DLIs and screen generation are all done together with no
   intervening 6502 clock cycles.

   Example: programs that use vcount to determine which character set to
	    display will appear wrong. The display tends to alternate
	    between good and bad screens.

   Solution: 6502 clock cycles should be issued during screen generation.

4. Antic Modes 2, 3 and f which display two true colours and not one
   colour with two luminances. Should this be called a bug or feature? -
   its easy to fix (for an example type POKE 709,40).

Future Atari 800 Enhancements
-----------------------------

Hardware scrolling - pointless until the screen refresh rate is improved.
GTIA graphics support for ANTIC modes.
Atari 800XE emulation.
Printer support (Print to file + spool on close).
Paged memory using PORTB.
Sound possibly through /dev/audio (don't hold your breath though)

It should be possible to add support for non OSS Super Cartridges. If
you can forward details on how the cartridge works I'll see what I
can do.
