Current version

Altirra 2.40

Navigation

Main page

Altirra, an 8-bit Atari computer emulator

I had access to a number of 8-bit computers in my childhood, but my most favorite was the Atari 800, a 1.79MHz 6502-based computer with color graphics and a disk drive, and which as the predecessor to the Amiga, another favorite of mine. Over a decade later, I was struck by both nostalgia and ambition and started to write a new 8-bit Atari emulator from scratch. This is the result.

At this point, I've learned a lot more about the Atari and Altirra now emulates more than I ever had or did years ago, but I still work on it periodically. It also serves as a modularity test for the VirtualDub code base, from which Altirra shares some components. If you are struck by nostalgia too or have a desire to do some Atari development, perhaps it might be useful to you, too.

Note: Neither the author nor the software on this page is affiliated with Atari, and there is no code or software from Atari included in the downloads. All trademarks belong to their respective owners.

System requirements

Altirra has relatively few system requirements:

If you can run VirtualDub, you can run Altirra, with the one exception that it will not work with the Win9X derived versions of Windows (Windows 95/98/ME).

Before you begin

Altirra is designed with emulation quality in mind, sometimes over speed and polish. It's designed as a system emulator and debugger instead of a games machine, so there is some setup involved. There is a README file in the archive, but here are some quick tips:

First: Software. you need some actual 8-bit Atari (not Atari ST!) software to run. If you don't have any, it'll be a pretty boring experience. I can't give this to you for various reasons, but there are freely available demos, and if you have converted your Atari software to disk images for other emulators, those will work too. Specifically, disk images are supported in ATR, DCM, ATX, and PRO formats; some simple cartridge types are also supported, and you can directly load Atari executables as well (.obx/.xex).

Second: kernel ROMs. Altirra has an internal kernel that can be used to run Atari software, and thus you can run demos, games, and productivity software without needing any Atari ROM images. However, this kernel is reimplemented from scratch, and has some compatibility problems. Therefore, you may want to consider hooking up real kernel ROM images, which will greatly increase Altirra's software compatibility. I'm afraid I can't offer these for download, but if you have downloaded ROM images from your Atari, Altirra uses the same format and filenames as most other popular Atari 8-bit system emulators.

Third: compatibility. Altirra is designed to emulate the actual Atari hardware as closely as possible. Its compatibility has been increasing over time, and at this point it should run most software correctly. However, there can still be problems, some of which may be emulation bugs, and some of which are related to hardware emulation settings. Tips:

Downloads

Altirra is licensed under the GNU General Public License (GPL).

Binaries (i.e. stuff you can run):

Altirra 2.40 binary (local download)
Altirra 2.30 binary (local download)
Altirra 2.20 binary (local download)
Altirra 2.10 binary (local download)
Altirra 2.00 binary (local download)
Altirra 1.9 binary (local download)
Altirra 1.8 binary (local download)
Altirra 1.7 binary (local download)
Altirra 1.6 binary (local download)
Altirra 1.5 binary (local download)
Altirra 1.4 binary (local download)
Altirra 1.3 binary (local download)
Altirra 1.2 binary (local download)

Source code (i.e. stuff programmers can modify and compile):

Altirra 2.40 source code (local download)
Altirra 2.30 source code (local download)
Altirra 2.20 source code (local download)
Altirra 2.10 source code (local download)
Altirra 2.00 source code (local download)
Altirra 1.9 source code (local download)
Altirra 1.8 source code (local download)
Altirra 1.7 source code (local download)
Altirra 1.6 source code (local download)
Altirra 1.5 source code (local download)
Altirra 1.4 source code (local download)
Altirra 1.3 source code (local download)
Altirra 1.2 source code (local download)

The compile requirements are the same as for VirtualDub 1.9.2: Visual Studio 2005, YASM 0.4.0+, DirectX SDK, Platform SDK (now Windows SDK).

Acid800 Test Suite

Acid800 is a test suite designed to stress 8-bit Atari emulators. It tests a wide variety of program-visible hardware behaviors and reports any deviations from actual hardware behavior, such as missing features or incorrect timing. Acid800 can be run either as a full suite or as standalone tests, with symbols and source included. Also included are the Acid5200 test suite for the 5200 SuperSystem and the AcidSAP suite for SAP players.

Hardware Reference Manual

This is a document describing all of the interesting behavior I've discovered in the Atari 8-bit hardware.

Altirra Hardware Reference Manual, 5/14/2013 version (local download, PDF)

Screenshots


A complex screen in the game Alley Cat.

Running the SpartaDOS X shell.

Mid-scanline changes in the BeweSoft 8 players demo.

3D graphics in the Numen demo.

Running drac030's 65C816 XL/XE OS.

Debugging one of the GTIA unit tests.

Running BASIC in enhanced text mode.

 

Changelog

Version 2.40 [November 1, 2013]:
[features added]
  • 65C816: Optimized mode switches.
  • Audio: Added drive sound volume level option.
  • Cartridge: Added support for .CAR types 53-59 (2K, 4K, right-as-left 8K, right slot 4K, 128-512K SIC!).
  • CPU: Preliminary support for accelerated 65C816 operation.
  • Debugger: Added .dmabuf command.
  • Debugger: Added %e, %f, and %g formats to .printf command.
  • Debugger: Verifier can now detect 64K address space index wrapping and abnormal DMA conditions.
  • Debugger: Added fbx (fill bytes with expression) command.
  • Debugger: r (register) command now allows access to 65C816 registers.
  • Disk: Added "Extract Boot Sectors" command to disk dialog for use with bootable virtual disks.
  • LLE: Added PBI device interrupt support.
  • MMU: High (65C816) memory can now be adjusted from 0KB-4032KB.
  • Profiler: Added 65C816 support.
  • Recorder: Added .WAV file audio recording.
  • Recorder: Added option for encoding duplicate frames as full frames.
  • UI: Added on-screen indicators for console buttons held on startup.
  • UI: Added on-screen indication for some view mode changes.
  • UI: Added support for per-monitor DPI scaling in Windows 8.1.
  • UI: Added custom debug font dialog for half point sizes.
  • UI: File > Exit now confirms if there are modified images.
  • XEP80: Initial support.
[bugs fixed]
  • 5200: Floating data bus is now enabled in 5200 mode.
  • 65C816: Fixed cycle timing for JMP (abs) instruction.
  • 65C816: Fixed cycle timing for TXY instruction.
  • 65C816: Fixed TYX instruction.
  • 65C816: INX was checking M bit instead of X bit.
  • 65C816: Read/modify/write instructions now do read/write/write in emulation mode.
  • 65C816: Fixed (dp), (dp,X), and (dp,Y) behavior with DP!=0.
  • ANTIC: Disabling playfield DMA after playfield start now reads bus data into the line buffer.
  • ANTIC: Abnormal playfield DMA is now emulated.
  • ANTIC: Improved precision of CHACTL changes.
  • Cartridge: Fixed $BFxx reading with 5200 64K cartridge type.
  • CPU: Illegal instruction option now saves correctly.
  • Debugger: Display float (df) command displays all ten significant digits.
  • Debugger: Fixed LLE kernel ROM auto-reload and symbol load option.
  • Debugger: UI panels are now more consistent with debugger commands in numeric base handling.
  • Debugger: Fixed incorrect disassembly on step when running from high banks.
  • GTIA: Fixed bug with VDELAY on missiles.
  • GTIA: Fixed regression with hires player-playfield collisions (since 2.30).
  • LLE: Fixes and optimizations to math pack.
  • LLE: Decimal flag is now cleared before dispatching IRQs.
  • LLE: Fixed BRK handler to handle stack wrapping.
  • LLE: 5200 BIOS now strobes NMIRES for DLIs.
  • LLE: Fixed CIOINV timing so that emulated CIO hooks work.
  • LLE: Corrected K: debounce logic and E: AUX2 open handling (fixes Action! with LLE firmware).
  • HLE: Fixes to math pack acceleration.
  • HLE: Added partial fix for CDTMA1 during accelerated disk reads (fixes Ankh with SIO patch enabled).
  • IDE: Fixed value of Sector Count register after READ SECTOR and WRITE SECTOR commands.
  • MMU: Fixed aliasing of high memory banks.
  • POKEY: SKSTAT bit 1 is now emulated.
  • Printer: Emulated P: device now supports the PUT CHARS command with len=0.
  • Serial: Emulated R: device supports break interrupts.
  • UI: Fixed GDI handle leak in text editor.
  • UI: Added workaround for set file associations dialog not appearing on Windows 8.
  • UI: Fixed ANTIC DMA visualization mode with extended PAL height.
  • UI: Fixed PCLink indicator not updating.
  • U1MB: Fixed PIA read decoding to only respond to $D300-D37F (unfixes Bounty Bob Strikes Back!).
Version 2.30 [May 14, 2013]:
[features added]
  • Cartridge: SIC! cartridges can now be switched between Am29F040B and SST39SF040 flash chip emulation in Options.
  • Debugger: History pane supports horizontal scrolling and hiding S/P registers.
  • Debugger: Added .readmem command.
  • Debugger: .basic_dumpline command now handles DATA statements and decodes variable names.
  • Debugger: The ESC key moves from several debugger panes to the Console pane.
  • Debugger: Added set tracepoint (bt) command.
  • Debugger: Added deref signed dword (dsd) operator.
  • Debugger: Added brief (-b) format to .sio command.
  • Debugger: .tapedata command now supports seeking options and reports gaps.
  • Debugger: Added .reload command.
  • Disk: Folders can now be mounted as virtual disk images using the SpartaDOS file system.
  • Display: Normal overscan mode now only shows 224 scanlines in NTSC mode instead of 240.
  • Display: Altered full screen resolution selection to allow possibly unsupported modes for better access to 50Hz refresh modes.
  • IDE: Added SIDE 2 support.
  • MMU: Added support for Axlon banked memory.
  • Simulation: Split XL/XE hardware into separate XL and XE modes to handle hardware differences.
  • UI: Full-screen mode can now be used when paused.
  • UI: Added full-screen versions of the Boot Image file browser and emulation error dialog.
  • UI: Added initial UI bindings for controllers (under the Console controller).
  • UI: Added on-screen keyboard (activated by UI Option from main screen).
  • UI: Improved text rendering quality.
  • UI: Right-drag drop brings up a context menu with mounting options.
  • UI: Panes can now be stacked with tabs.
  • VBXE: Updated core support to 1.24, including a/r flag in bit 7 of the MINOR_REVISION register.
[bugs fixed]
  • 65C816: The abs,X, abs,Y, (dp),Y, [dp],Y and (d,S),Y addressing modes can now cross bank boundaries.
  • 65C816: An additional instruction is no longer executed after WAI before servicing the interrupt.
  • 65C816: JMP (abs) now always reads from bank 0 instead of the data bank.
  • 65C816: JMP (abs,X), and JSR (abs,X) now read from the program bank rather than the data bank.
  • 65C816: Fixed switch between DL=0 and DL!=0 in emulation mode not taking effect immediately.
  • 65C816: Indexed modes now properly take an additional cycle for writes and for 16-bit index registers.
  • 65C816: The d,S addressing mode can now index out of page one in emulation mode.
  • 65C816: d,S and (d,S),Y now always read from bank 0.
  • 65C816: 16-bit stack operations can access page zero and page two in emulation mode.
  • 65C816: TCS/TXS can no longer change SH in emulation mode.
  • Debugger: .tracecio now reports correct status.
  • Debugger: Fixed an issue with stack overflow in History pane on very deep recursion.
  • Debugger: Verifier now allows jumps to the CIO device initialization vectors.
  • Debugger: Fixed incorrect wrapping of zero page indexed addressing modes in disassembly.
  • Debugger: Threaded static trace (st) command.
  • Debugger: e (enter) now follows normal expression evaluation rules.
  • Debugger: Fixed disassembly of PEA ($F4) opcode.
  • Debugger: PHX and PHY no longer create bogus call trees in the History window in 16-bit indexing mode.
  • Debugger: Fixed disassembly of opcodes with the (d,S),Y addressing mode.
  • Debugger: Corrected off-by-one index handling in .unloadsym command.
  • Debugger: Fixed blowup with memory access breakpoints in GTIA range with VBXE enabled.
  • Disk: Status byte 1 bit 5 is now updated after a Write PERCOM Block command.
  • Display: Fixed a crash when Direct3D 11 is enabled and fails to initialize.
  • Display: Fixed alignment errors in OS Screen Only mode with extended PAL height enabled.
  • Display: Enabled frame skip and reduced latency in full screen vsync mode.
  • GTIA: Player/missile size code %%10 can now trigger shifter lockup.
  • GTIA: Improved accuracy of mid-shift size changes.
  • HLE: Fixed editor tab commands.
  • HLE: Fixed bug with init segment dispatching.
  • IDE: READ SECTOR and WRITE SECTOR commands now allow up to 256 sector transfers.
  • IDE: READ MULTIPLE and WRITE MULTIPLE commands now produce errors when multiple mode is disabled.
  • IDE: The block size set by the SET MULTIPLE MODE command is now reflected in IDENTIFY DEVICE output.
  • Input: Fixed MultiJoy #8 input conflict.
  • LLE: Fixed system reset NMI handling.
  • LLE: Implemented PBI handler and CIO support.
  • LLE: Keyboard routines now update ATACHR.
  • LLE: Fixed editor tab set/clear commands.
  • LLE: Added printer (P:) device support.
  • LLE: Added light pen/gun support.
  • MMU: Fixed crashes accessing high 65C816 memory in the x64 version.
  • MMU: VBXE can now properly overlay Covox.
  • POKEY: Fixed timers 3+4 occasionally not being shut off when switching to asynchronous receive mode.
  • POKEY: Fixed timers 1-3 having the wrong offset when underflowing immediately before a write to STIMER.
  • POKEY: Corrected start timing of polynomial counters.
  • POKEY: Corrected audio pattern for 9-bit and 17-bit polynomial counters (was incorrectly inverted).
  • Recorder: Fixed 8-bit uncompressed output.
  • Recorder: Minor fixes to compressor.
  • Serial: SIO emulation level setting is now saved correctly.
  • VBXE: Writing a '1' to the blitter start bit no longer aborts an active blit.
Version 2.20 [January 6, 2013]:
[features added]
  • UI: Overlays are now rendered through composition at native resolution instead of simulated resolution.
  • UI: Text can now be copied out when the simulation is stopped.
  • UI: Keyboard shortcuts are now configurable.
  • UI: Drag-and-drop from compressed folders in Explorer is now supported.
  • UI: Shift-hover over a BASIC or DOS error message now displays error help.
  • UI: Mouse cursor changes when light pen/gun is moved on and off the virtual screen.
  • Debugger: Holding SHIFT with the mouse over the display pane now shows the beam coordinates for that point.
  • Debugger: Added .pbi and .ultimate1mb commands.
  • Debugger: Extended many commands to accept expressions for address and length arguments.
  • Debugger: The default numeric base for addresses can now be changed (.base).
  • Debugger: Added extended memory bank variable to expression parser.
  • Debugger: Symbols using reserved expression operator names can now be escaped with #.
  • Debugger: e (enter) command now accepts extended addresses.
  • Debugger: .map command now displays layer names.
  • Debugger: bs (break on sector) command now accepts expressions.
  • Debugger: Added .ide_rdsec and .ide_wrsec commands.
  • Debugger: Added .diskdumpsec command.
  • Debugger: Added deref signed word (dsw) operator.
  • Debugger: .tracecio gives more detailed output.
  • Disk: Added option to format new disks with a DOS 2 filesystem.
  • Disk: Folders can now be mounted as virtual DOS 2 disk images.
  • MyIDE II emulation support.
  • Ultimate1MB emulation support.
  • Save states: Initial support for external save state files.
  • SIDE: Implemented top cartridge register and un-reversed image order.
  • Input: Input map editor now shows more specific button and axis labels.
  • IDE: Selecting a physical disk now updates the CHS mapping.
  • IDE: Fixed-size and dynamic .VHD images can now be mounted.
  • HLE/LLE: Added boot screen.
[bugs fixed]
  • ANTIC: Fixed regression with the first byte in a wide scanline occasionally being decoded before being fetched.
  • ANTIC: Fixed display list pointer corruption when a jump instruction executes across vertical blank (fixes Spindizzy load).
  • Serial: Fixed R: not going into concurrent mode on open with AUX1 bit 0 set.
  • Cartridge: Re-added missing 512K detection size for SIC! cartridges.
  • Cartridge: 5200 4K/8K/16K cartridges now mirror to the full 32K region.
  • Display: Fixed offset on display in sharp bilinear mode on downlevel graphics cards.
  • Debugger: Fixed debug reads not seeing some partially overlaid memory layers.
  • Debugger: Fixed memory leak when an error occurs during expression parsing.
  • Debugger: Fixed 'value' operator returning incorrect value when used in a range write breakpoint conditional expression.
  • Debugger: Debug display now displays IR modes 8-10 correctly.
  • Debugger: Fixed history pane bugs with stack wrapping and with the scroll bar being flaky after a clear.
  • Disk: Fixed writes being gated by rotational timing even if accurate sector timing was turned off.
  • Disk Explorer: Fixed file deletion on DOS 2 volumes to not leave orphaned directory entries.
  • Disk Explorer: DOS 2 validator now allows both DOS 2 719 sector and MyDOS 720 sector VTOCs.
  • Disk Explorer: Fixed crash with large MyDOS file systems.
  • Display: Fixed text highlighting in "OS Display" overscan mode.
  • HDevice: Get Bytes command now returns $03 status code on impending EOF (fixes BLOAD from Turbo Basic XL).
  • HLE: Fixed off-by-one handling of RMARGN in screen editor.
  • HLE: Fixed some errors in updating LOGCOL on vertical cursor movement.
  • HLE: Fixed crash when disk boot sector signals a boot error (C=1).
  • HLE: Added missing international font.
  • HLE: Fixed many compatibility issues.
  • Input: Extended paddle and tablet range to 0-228.
  • Input: Tablet stylus is now always touching the tablet when the raise stylus input (button 4) is unbound.
  • Input: The "warm reset" input of the console controller was issuing a cold reset.
  • LLE: Improved display editor.
  • LLE: Fixed many compatibility issues.
  • Flash: Multiple sector erase commands are now supported.
  • Flash: Fixed Am29F040B flash to only validate A0-A10 for commands (the Am29F040 is the one that does A0-A14).
  • POKEY: Attempting to use synchronous clocking mode during serial input now produces framing errors.
  • UI: Tabs now paste properly.
  • UI: Non-ASCII characters are now saved correctly into the Altirra.ini file in portable mode.
Version 2.10 [August 13, 2012]:
[features added]
  • SlightSID emulation support.
  • Covox emulation support.
  • 1200XL emulation support.
  • BASIC programs can now be booted.
  • Fast boot option now accelerates timeouts for powered down disk drives.
  • Disk: Added support for format skewed ($66) command.
  • Disk: Format commands ($21, $22) now support high-speed operation.
  • Disk: Added emulation profile modes for various disk drives.
  • Disk: Reduced ACK-to-complete delay when accurate sector timing is off.
  • Disk: Added rotation and seek sound emulation.
  • Disk: Accurate disk timing prediction is now preserved when burst I/O transfers are enabled.
  • Debugger: Added .sum (sum memory area) command.
  • Debugger: Added .warmstart command.
  • Debugger: Added ap (alias pattern) command for adding aliases with patterns.
  • Debugger: Added additional aliases to a8 command (set Atari800-compatible command aliases).
  • Debugger: Added alternate L>addr syntax for setting an address range length based on an end address.
  • Debugger: Added heat map support.
  • Debugger: Added .basic_dumpline command.
  • Debugger: Enter now repeats the last command.
  • Debugger: .dumpdlist command now collapses runs of identical commands.
  • Debugger: Unassemble and dump commands now support continuation from the last address.
  • Debugger: Added deref signed byte (dsb) expression operator.
  • Debugger: Added %c and %y formatting specifiers to .printf command.
  • Debugger: Added .dmamap command to show ANTIC DMA pattern over the course of a frame.
  • Serial: 1030 Modem support.
  • Display: Added scanline display mode.
  • Display: Added integer-multiple version of preserve aspect ratio sizing mode.
  • Display: Added sharp bilinear filter mode.
  • Display: Text can now be copied out of ANTIC modes 2, 3, 6, and 7 (GR.0, 1, and 2).
  • Display: Added CIO intercept based enhanced text mode.
  • HDevice: Added minimal support for SDX Get Current Directory command ($30).
  • HDevice: Added support for H6-H9: text translation modes.
  • HDevice: Implemented rename, get/set/create/remove directory, and get file length commands.
  • HDevice/PCLink: Fixed lock command not setting read-only flag.
  • Cartridge: Added MicroCalc 32K cartridge type support.
  • Cartridge: Added cartridge type autodetection.
  • UI: Screenshot command now adjusts for interlacing and 14MHz dot clock rendering.
  • UI: The program is now marked as high DPI aware in the application manifest.
  • Simulator: Added support for MapRAM MMU modification.
[bugs fixed]
  • Increased paste keyboard timer to reduce dropped keys on line processing delays.
  • Fixed startup crash on Sandy Bridge CPUs on Windows XP.
  • Simulator: Inhibit FP math acceleration hooks when PBI ROM overlay is active.
  • Simulator: BASIC disable Option key hold is now released more quickly to reduce cartridge conflicts.
  • Debugger: "read" and "write" terms can now appear more than twice in a conditional breakpoint expression.
  • Debugger: Fixed .tracecio off not working.
  • Debugger: Fixed execution stopping on TRACE statements.
  • Debugger: Breakpoint clear (bc) command no longer interprets breakpoint numbers as hex.
  • Debugger: Fixed console entry window not always disabling properly.
  • Debugger: .pokey command now reports correct status for secondary POKEY.
  • Display: Fixed crash on some XP systems on display mode change.
  • Display: Added workaround for ps1.1 precision issue on Intel graphics cards.
  • Display: Fixed bicubic scaling in OpenGL mode.
  • ANTIC: Fixed line buffer addressing to correctly handle aliasing of buffered data to different modes.
  • POKEY: Fixed glitching in high-pass filtering.
  • POKEY: Fixed wrong bit in SKSTAT being set for serial input overruns.
  • POKEY: Fixed asynchronous receive mode not resetting timers 3+4 that are already running.
  • Disk: Fixed handling of XF551 high-speed sector skew format commands ($A1/$A2).
  • Disk: Format command now sends back ACK+ERROR+buffer instead of NAK on a read-only disk.
  • Disk: Adjusted step rate of 810 drive to 5.3ms.
  • Disk: Fixed forced sector ordering command (.diskorder) for .pro images.
  • Disk: Step delays were not always reflected correctly in command delay time (only rotational position).
  • Disk: Fixed inverted write protect bit status.
  • Disk: Attempted writes to a write protected disk now return errors instead of a NAK.
  • Disk: Fixed command response when accessing a drive with no disk.
  • Disk: Fixed error return for unsupported Write PERCOM Block requests.
  • Disk Explorer: Fixed case sensitivity issue allowing duplicate file creation on DOS 2 file systems.
  • Input: Fixed bug in keyboard repeat detection code.
  • Input: Improved Caps Lock key support.
  • Cartridge: An error is now thrown when attempting to save a cartridge image in .CAR format with an unsupported mapper.
  • Cartridge: Fixed switchable XEGS cartridge modes.
  • Display: Fixed display mode matching when /f is specified on the command line.
  • Display: Improved behavior of interlaced mode when frames are dropped.
  • CPU: Fixed cycle behavior of ASL/LSR/ROL/ROR abs,X instructions in 65C02 mode.
  • HLE Kernel: Fixed BUFADR being overwritten by CIO, which broke the DOS XE executable loader.
  • IDE: Fixed banking in KMK/JZ V1 mode and added 3K ROM support.
  • IDE: Fixed multiple sector read requests of exactly 32 sectors.
  • VBXE: Fixed memory not being cleared on cold reset with randomize function disabled.
  • Serial: Fixed incompatibility with Ice-T XE and the R: handler's STATUS handler.
  • Misc: Fixed upper 4 bits for some R-Time 8 register reads.
  • HDevice: Fixed NOTE and POINT commands.
  • Cheats: Fixed 16-bit option not being tracked properly for manually entered cheats.
  • GTIA: Sprites are now triggered properly from within horizontal blank.
  • GTIA: Fixed sprite image overlap result.
  • Cassette: Loading a new tape didn't press 'play' on the emulated player until the next cold reset.
Version 2.00 [December 24, 2011]:
[breaking changes]
  • Debugger: The step over command has been changed from s to o.
[features added]
  • UI: Added OS Screen size setting.
  • UI: Added support for gzip compressed images (*.gz, *.atz).
  • UI: Arrow key behavior is now configurable.
  • UI: Added speed options.
  • UI: Added option to control whether emulation sees the Shift key pressed after a Shift+F5 cold reset.
  • UI: Added MRU list for booted images.
  • UI: Color settings can now be exported as a palette file (*.pal).
  • UI: Display API options can now be changed through the GUI (not just cmdline).
  • UI: Added full screen resolution options.
  • UI: Added single instance option.
  • UI: Request 1ms system timer precision only when unpaused.
  • UI: Added option to bind file associations in Windows for image types.
  • UI: Added /run, /disk, /tape, and /cart switches to force load types on the command line.
  • UI: Added mute option.
  • Debugger: Added command aliases (ac, al, as, a8).
  • Debugger: Added watch expression (wx) command.
  • Debugger: Added multiple memory panes.
  • Debugger: Added watch panes.
  • Debugger: Initial version of debug display.
  • Debugger: Disassembler can now display offsets from symbols.
  • Debugger: Profiler now distinguishes between VBIs and DLIs in function sampling mode.
  • Debugger: Profiler now shows unhalted cycle counts and DMA contention rates.
  • Debugger: Added call graph profiling support.
  • Debugger: Mouse wheel is now position-based instead of focus-based.
  • Debugger: Address range breakpoints can now trigger commands.
  • Debugger: Added log output filter commands (lfd/lfe/lfl/lft).
  • Debugger: Added .ide command.
  • Debugger: Enter (e) command now takes expressions.
  • Debugger: Added bitwise/low-byte/high-byte operators and address/value variables to expression evaluator.
  • Debugger: Break on expression command (bx) can now include address ranges.
  • Debugger: Added dump double words (dd) command.
  • Debugger: Go (g) command now has options to preserve and force source mode.
  • Debugger: Added batch (.batch) command.
  • Debugger: Added source mode control (.sourcemode) command.
  • Debugger: Commands can now be queued to run when an EXE loads or runs.
  • Debugger: Source line breakpoints can now be set prior to line debug information being available.
  • Debugger: A matching .atdbg file is now processed when an executable loads.
  • Debugger: startup.atdbg in the program directory is now processed on startup if present.
  • Debugger: Ctrl+Up/Down from output window command line now scrolls log pane by single lines.
  • Debugger: Added fill (f), search (s), and move (m) commands.
  • Debugger: Register (r) command can now set individual flags.
  • Debugger: Improved output of .pia command.
  • Debugger: Call, loop, and interrupt collapsing in history window can now be toggled.
  • Debugger: History window can now show timestamps in cycles, unhalted cycles, and microseconds from an anchor point.
  • Debugger: Extended memory syntax now allows access to hidden RAM (r: prefix).
  • Debugger: Added .tape and .tapedata commands.
  • Disk: Added support for Write PERCOM Block command.
  • Disk: Added option to auto-detect firmware overrides of disk accesses and automatically disable SIO patch for those drives.
  • Disk: Live disk images can now be explored directly from the disk drive entry rather than requiring an unmount and remount.
  • Disk: Disk explorer shows timestamps.
  • Disk: .ARC compressed archives can now be explored.
  • Disk: Fixed a couple of bugs with DCM disk image decoding.
  • Cartridge: Added another Atrax 128K cartridge variant used for SpartaDOS X.
  • Cartridge: Added support for OSS 8K, Blizzard 4K, AST 32K, Atrax SDX 64K, Turbosoft 64K, and Turbosoft 128K types.
  • Cartridge: Added support for newer MaxFlash 1MB cartridges that power up in bank 0 instead of bank 127.
  • Cartridge: Added support for 1M Megacart (different type with similar name).
  • Cartridge: Added support for a 5200 64K cartridge with 32K banks.
  • Input: MultiJoy8 support.
  • Input: CX-80 and 5200 trackball support.
  • Input: 1200XL F1-F4 keys can now be enabled in keyboard options.
  • Input: ~ key is now an alternate mapping for the inverse key.
  • IDE: KMK/JZ IDE / IDEPlus 2.0 emulation support.
  • IDE: Initial SIDE emulation support.
  • IDE: Solid-state mode supports up through PIO mode 6.
  • IDE: Read-only physical disk access.
  • GTIA: SECAM support.
  • GTIA: Optimizations to mode 9 and mode 10 rendering.
  • MMU: Added 800 8K/24K/32K/40K configurations.
  • MMU: Added 320K and 576K Compy Shop configurations.
  • MMU: Sped up extended bank switching.
  • Simulator: Added XEGS support.
  • SoundBoard: Multiplier support.
  • POKEY: Rewrote sound core to defer repeating events whenever possible for extra speed.
[bugs fixed]
  • ANTIC: Added emulation of bus data displaying at the very right border of a wide scrolled playfield.
  • ANTIC: Improved accuracy of mid scan line changes to HSCROL and DMACTL.
  • ANTIC: Fixed phantom DMA data during WSYNC.
  • ANTIC: Implemented phantom DMA artifacts along right side of wide playfield.
  • ANTIC: Fixed NMIs not being reactivated after a write to NMIRES on cycle 7.
  • Disk: PERCOM block is now initialized for a drive without a disk.
  • Disk: Fixed errors in PERCOM block track and sectors per track counts.
  • Disk: Switching a disk from R/W to VirtRW mode now clears pending flush errors.
  • Disk: Fixed incorrect serial transfer rates for XF551 high speed Put/Write and Write PERCOM commands.
  • Disk: Fixed H: device not handling zero-byte get/puts properly with burst I/O enabled (affected GET/PUT from BASIC).
  • Disk: H: device now supports OPEN with AUX1=7 to fix directory listing from DOS 2.5.
  • Disk: Disk explorer now properly increments volume sequence number when modifying SpartaDOS X images.
  • Disk: DSKINV hook now supports writes to sectors bigger than 128 bytes.
  • Disk: Fixed crash with very short disk images.
  • CPU: Fixed undocumented $BB opcode using abs instead of abs,Y addressing mode.
  • CPU: Undocumented $6B opcode now supports decimal mode.
  • Debugger: Profiler sometimes lost track of intermediate call frames during function sampling.
  • Debugger: Mouse wheel now uses system wheel scroll setting.
  • Debugger: Improved parsing of MADS listings.
  • Debugger: Fixed command escaping so that escapes are no longer processed unless enabled, i.e. \"foo\nbar".
  • Debugger: Register (r) can no longer clear bits 4 and 5 of P when unsupported by current CPU mode.
  • Debugger: _ and . are now accepted as part of symbol names in expressions.
  • Debugger: Fixed crash when attempting to load empty file as symbol file.
  • Debugger: Source path matching now allows partial path matches both ways and has improved behavior with duplicate filenames in different directories.
  • Debugger: Fixed wrapping of frame counter in history window.
  • Debugger: Built-in kernel symbols now take priority over loaded symbols.
  • Debugger: Fixed page scrolling in history window after enabling CPU history tracking.
  • IDE: Added mandatory Recalibrate, Read Verify, Read Multiple, Write Multiple, Seek, Set Multiple Mode, and Initialize Device Parameters commands.
  • IDE: Fixed response from device 1 status register.
  • IDE: Improved response from Identify Drive command.
  • IDE: Set transfer mode command is now supported.
  • Cartridge: Reverted OSS 034M mapper back to original bank order and added OSS 043M mapper mode for alternate bank layout.
  • Input: Fixed crash when activating triggers to unavailable controllers.
  • PIA: Implemented IRQB and control bit 6.
  • HLE: Fixed escape handling in display handler.
  • HLE: Screen setup now matches the display list and playfield addressing of the stock OS ROM.
  • HLE: Fixed cartridge handling so that cartridges are run after disk boot completes.
  • HLE: Added known RTS instruction at $E4C0.
  • HLE: CIO now allows SPECIAL commands to be issued on a closed IOCB.
  • HLE: Boot loader now sets DBYTLO/DBYTHI to $0400 before launching.
  • HLE: Fixed crash in CIO on OPEN command with unknown device.
  • HLE: S: now supports the Get Status, line, and fill commands.
  • UI: Disk sector display was incorrect for accelerated writes.
  • UI: Fixed crash if DirectX 9 is not installed.
  • UI: Display window can no longer be undocked in full screen mode.
  • UI: Adjusted default NTSC color preset. The old preset is still available.
  • UI: Command-line processing now better matches standard VC++ escaping rules.
  • UI: Direct3D9/OpenGL rendering now works over Remote Desktop with Windows Vista/7.
  • SoundBoard: Restricted $D5/D6xx mapping to $D500-D53F and $D600-D63F.
  • POKEY: Fixed incorrect latching on IRQST bit 4 (serial output ready IRQ).
  • POKEY: Fixed deassert timing for IRQST bit 3 (serial output complete IRQ).
  • POKEY: Added partial emulation of SKSTAT bit 4 (direct input) during disk transfers.
  • Cassette: Fixed data blocks being silently dropped when reading some .cas files.
  • Cassette: Fixed inaccuracy in data rate produced from loading .cas files.
  • GTIA: Fixed incorrect color for %%1000 pattern in mode 10 with lores ANTIC input.
  • VBXE: Warm reset no longer resets all registers like a cold reset.
Version 1.9 [May 15, 2011]:
[features added]
  • Debugger: Multiple memory access breakpoints can now be placed.
  • Debugger: Added option to break on run address of loaded executable.
  • Debugger: Conditional breakpoints (bx) are now supported.
  • Debugger: Commands can now be run when a breakpoint fires.
  • Debugger: Added ? (evaluate) and .printf commands.
  • Debugger: Trace and assert statements can now be embedded in assembler listings.
  • Debugger: Added vta, vtc, vtl, and vtr commands to control verifier OS entry point checking.
  • Debugger: Added .dumpsnap command.
  • Debugger: Memory access breakpoints can now be placed on an address range.
  • Debugger: History window now has a Copy Visible context menu option.
  • Debugger: Verifier modes are now configurable.
  • Debugger: Verifier can now catch register corruption across interrupts.
  • Debugger: .writemem now supports extended address syntax.
  • Debugger: Added .sio command.
  • Debugger: Added .sdx_loadsyms command.
  • SoundBoard: Initial support.
  • UI: Added emulator crash dialog.
  • UI: Show FPS option now also shows CPU usage.
  • Input: Added Amiga mouse support.
  • Input: Added CX-85 keypad support.
  • GTIA: NTSC and PAL modes can now have separate palettes.
  • GTIA: Added option for PAL encoding quirks.
  • GTIA: Added PAL high artifacting mode.
  • Disk: Initial version of disk explorer.
  • Serial: Inbound connections are now supported.
  • Serial: Added support for A, L, M, P, Q, S, T, V, X, &C, &D, &F, &G, &P, &T, &V, and &W modem commands.
  • Serial: Added DTR and CRX signal support.
  • Serial: Added IPv6 support.
  • Serial: Added option to force specific connection and DTE communication rates.
  • Serial: Added option to bypass accurate serial port rate throttling.
  • Cartridge: Two cartridges are now supported for 800 left+right and stacked cartridge configurations.
  • Cartridge: 2K and 4K cartridges are now supported (as mirrored 8K cartridges).
  • Cartridge: SIC! cartridge support.
  • PCLink: Initial support.
[bugs fixed]
  • UI: Pane dragging is less twitchy and no longer undocks a pane as soon as you click on the caption.
  • UI: Fixed undocked panes getting lost on exit when no other panes were docked.
  • UI: Optimized Direct3D9 code to reduce flickering when switching artifacting modes.
  • UI: Fixed current beam position indicator not updating properly when stepping with interlacing enabled.
  • UI: Auto-size command now works when menu wraps.
  • HLE: Fixed crash when NMI handler is invoked with no NMIs pending.
  • HLE: Added support for XL OS PENTV vector.
  • HLE: E: device now excludes prompts from data returned by get-line commands.
  • HLE: Increased HLE kernel compatibility with SpartaDOS X.
  • HLE: Fixed BASIC ^ operator with HLE kernel or floating-point acceleration.
  • HLE: Fixed AFP not accepting leading spaces (which broke the Atari BASIC READ statement).
  • Simulator: Default kernel mode now prefers ROM images properly again.
  • Simulator: BOOT? and DOSINI are now set at the beginning of EXE/XEX loads to support more WARMSV tricks.
  • Cheats: Enable checkbox on cheats was broken.
  • CPU: Added missing SHA abs,Y ($9F) instruction.
  • CPU: Fixed CMOS BIT #imm ($89) instruction.
  • CPU: Fixed 65C02 $FC instruction.
  • CPU: Back-to-back interrupts are no longer allowed.
  • CPU: Added emulation of BRK/NMI bug.
  • CPU: Added option to emulate masked NMIs (off by default).
  • CPU: Fixed dp,X, dp,Y, and (dp,X) page wrapping behavior in 65C816 E=1 mode.
  • ANTIC: DMACTL bits 6 and 7 are no longer reflected in .dlhistory output.
  • ANTIC: Fixed CPU not being halted when playfield DMA occurred on cycle 10.
  • ANTIC: Fixed timing of when VSCROL affects DLIs.
  • Debugger: Optimized History pane.
  • Debugger: Avoid re-requesting the same source file when it is not found on disk.
  • Debugger: Improved reliability of source-level stepping.
  • Debugger: Added XL OS entry points to default entry points allowed by verifier.
  • Recorder: Fixed crash on recording errors.
  • Recorder: Fixed incorrect format on video stream when using ZMBV compression.
  • Disk: SIO receive speeds are now validated for more reliable high-speed SIO detection.
  • Disk: VAPI (ATX) images can now be loaded from .zip files.
  • Disk: Fixed problems binding disk images to D9:-D15:.
  • GTIA: NTSC high artifacting mode now respects artifact phase setting.
  • GTIA: Fixed trigger state sometimes being initially wrong when enabling latching.
  • GTIA: Improved accuracy of transitions from mode 8 to mode 9/10.
  • GTIA: Fixed hires lines not artifacting correctly with the extended PAL height setting enabled.
  • Serial: Telnet emulation now reads out of band data.
  • Serial: Telnet emulation now handles incoming WILL and WONT commands.
  • Serial: Telnet server now attempts to turn off local echo on remote end.
  • Serial: Fixed sporadic missing newlines on modem status messages.
  • Serial: Control line state is now reported in non-concurrent mode.
  • Serial: Ring pattern adjusted to match US standard (2s/4s).
  • Serial: Re-opening the R: device now flushes buffered data.
  • Serial: Closing the R: device deactivates concurrent mode to make subsequent status requests work.
  • Serial: Fixed crash in R: when invoking GET BYTE with an empty input buffer or PUT BYTE with a full output buffer.
  • Serial: Fixed BASIC GET command failing after XIO on R:.
  • Serial: Fixed erroneous CR-to-CRLF conversion on transmit path.
  • Serial: XIO commands to R: instead of R1-R4: now work properly.
  • Serial: Closing R: waits for queued output data to flush.
  • Printer: Fixed close command not actually closing IOCB.
  • VBXE: VBXE memory no longer overlays extended memory in 1088K mode with shared memory disabled.
  • IDE: Cold reset now also resets the emulated IDE device.
  • IDE: Addressing is now restricted to offsets $00-07 to avoid conflicting with OS PBI scan.
  • Cartridge: Corrected banks 1 and 2 for OSS 034M cartridge type.
Version 1.8 [December 22, 2010]:
[features added]
  • Initial 5200 support.
  • Simulator: Added 16K memory size support.
  • Simulator: 576K and 1088K modes now allow ANTIC access to extended memory.
  • Simulator: ROM image paths are now configurable.
  • Cartridge: Added support for Corina 1MB + 8K EEPROM and 512K + 512K SRAM + 8K EEPROM cartridges.
  • Cartridge: Added support for Telelink II NVSRAM.
  • Cartridge: Added support for DB 32K, Williams 32K / 64K, Diamond 64K, SpartaDOS X 64K/128K, Phoenix 8K, Blizzard 16K, and Atrax 128K cartridges.
  • Cartridge: Added support for 8K right slot cartridges.
  • Cartridge: Added support for non-switchable 256K-1M XEGS cartridges.
  • Cartridge: Mapper dialog attempts to detect Atari 2600 cartridge images (unsupported).
  • Debugger: The history window no longer needs to be closed and reopened after toggling history mode.
  • Debugger: Source windows now highlight lines that have symbol information associated and can be used for execution control.
  • Debugger: Added on-screen watch byte/word commands (wb/ww/wc/wl).
  • Debugger: History window now detects and collapses loops.
  • Debugger: Added optional length parameter for dump and disassemble commands.
  • Debugger: Added dump INTERNAL string command (di).
  • Debugger: Added .iocb command.
  • Debugger: Added ya/yc/yd/yr/yw commands for manually adding symbols.
  • Debugger: Verifier now detects recursive NMIs.
  • Debugger: Font and font size can now be changed.
  • Debugger: Added 6502 miniassembler.
  • Debugger: Added detailed command help.
  • Debugger: Added .pathrecord command and documented existing path commands.
  • Debugger: Added .basic and .basic_vars commands.
  • Debugger: Console window now supports multiple history entries and page up/down from the command line.
  • Debugger: Added symbol parsing support for ATasm and XASM assembler output.
  • Disk: Added support for D9: through D15:.
  • UI: Added DirectSound support.
  • UI: Audio latency can now be adjusted.
  • UI: Switched to larger font for on-screen UI.
  • UI: Shift key now controls whether dropped files are mounted/added (shift) or booted (no shift).
  • UI: Left-shift and right-shift keys can now be bound separately.
  • UI: Warnings are now displayed before modified images are implicitly discarded.
  • UI: Enabled themed controls.
  • UI: Removed borders on docked panes.
  • UI: Added first pass at pause button (F9).
  • UI: Ctrl+Arrow keys now give the un-Ctrl'd keys on the emulated keyboard for programs that use pseudo arrow keys.
  • UI: Mouse auto-capture is now an option.
  • UI: Added option to resize main window to remove letterboxing on display.
  • Input: Input map editor redesigned for easier controller configuration.
  • Input: Input maps now support shifted subsets via flags.
  • Input: Analog axes can now be bound as either relative or absolute, with tunable speed for relative mode.
  • Input: Paddles now support rotation-based control.
  • Input: Added light pen/gun support.
  • Input: Added tablet support.
  • VBXE: 5200 support added.
  • IDE: Added option to switch between short and long BSY-to-DRQ delays to simulate platter and solid-state media.
  • Serial: Added support for 850 R: and basic virtual-modem-over-TCP emulation.
  • Cheats: Added simple cheat finder and value locker.
  • Recording: Added options to tweak the frame rate and to record at half rate.
[bugs fixed]
  • Disk: Added workaround for yet another goofy way to store boot sectors in a DD ATR image (3 x 128K followed by 384K of nulls).
  • Disk: Fixed crash when opening .zip file containing files with no filename extension.
  • Disk: Disk drives dialog now highlights disk images that have been modified and not saved.
  • IDE: Fixed excessively long delay for BSY to assert after a command is issued.
  • Input: Binding mouse up/down/left/right outputs to digital inputs now works.
  • UI: Fix for crash when using Direct3D display on video cards that don't support arbitrary non-pow2 textures.
  • UI: Rewrote audio output path to use block duplication/removal rather than resampling to maintain sync.
  • UI: Fixed emulated mouse button not working reliably.
  • UI: Reduced border artifacts when using bicubic display stretching.
  • UI: Fixed crosstalk between interlace and frame blending settings.
  • PIA: Control bits 6 and 7 are no longer writable.
  • POKEY: Fixed RANDOM offset in 17-bit noise generator mode.
  • POKEY: Fixed IRQ timing for CPU-triggered IRQs.
  • POKEY: Fixed serial output complete interrupt not always deactivating properly.
  • POKEY: Clearing SKCTL bit 1 now disables the keyboard.
  • POKEY: Adjusted timing of 15KHz and 64KHz timers after exiting initializing mode.
  • GTIA: Phantom P/M graphics DMA is now implemented.
  • GTIA: Fixed graphic output when changing the size in the middle of a player image.
  • GTIA: Improved accuracy of graphic output when changing GTIA modes mid-screen.
  • GTIA: Latched triggers are now implemented.
  • HLE: Delete line ($9C) now resets cursor column.
  • HLE: Implemented CRSINH function.
  • HLE: IRQ handler now clears decimal flag.
  • HLE: Fixed crash when jumping to cassette init routine.
  • Debugger: Fixed MADS listing parsing for code lines after ORG statements.
  • Debugger: .dumpdsm command works again.
  • Debugger: History window now shows effective addresses.
  • Debugger: Disassembly and history windows now allow disassembly columns to be toggled.
  • Debugger: Stepping in source view now steps by source line instead of instruction.
  • Debugger: Fixed uninitialized screen data sometimes appearing when stepping.
  • Debugger: Register "r" command can now set A register.
  • Debugger: Breakpoints now work on the run address of a loaded executable.
  • Debugger: Fixed .writemem crashing if filename was invalid.
  • CPU: Fixed IRQ timing around CLI and SEI instructions.
  • CPU: Fixed a couple of bugs with decimal mode.
  • CPU: Taken branches now delay IRQ/NMI acknowledgement by one cycle.
  • CPU: Fixed false read behavior for: STA (zp),Y; STA abs,Y; STA abs,X; STX abs,Y.
  • CPU: Implemented reserved NOPs in 65C02 mode.
  • CPU: Fixes to undocumented opcodes: RLA ($23, $27, $2F, $33, $37, $3B, $3F); ASR ($4B); SAX ($83, $87, $8F, $97); SHX ($9E).
  • ANTIC: Fixed occasional unexpected DLIs on cold reset, which was causing once-only emulation crashes.
  • ANTIC: Corrected NMIST change timing.
  • Cartridge: Fixed OSS 034M and M091 mappers.
  • Recording: Fixed crashes in some cases when recording start process failed.
  • VBXE: Attribute map RES bit is now implemented.
  • VBXE: Fixed attribute map addressing getting scrambled on mid-screen changes.
  • VBXE: Overlay scrolling and addressing is now reset at VBL and no longer affects bitmap modes.
  • VBXE: Frame blending is now supported in VBXE mode.
Version 1.7 [September 4, 2010]:
[features added]
  • Cartridge: Fixed ID mistake on mappers 1 and 2; added 3, 15, 26-30, 32-38.
  • Cartridge: Added dialog to ask for mapper when header is missing.
  • Cartridge: Added write support for 1Mb/8Mb flash cartridges.
  • Cartridge: Added option to create new 1Mb/8Mb flash cartridges.
  • Cartridge: Added option to save cartridge images.
  • Cartridge: Added support for AtariMax 1Mb+MyIDE cartridge banking mapper.
  • UI: Added /bootvrw and /bootrw to boot disks in read/write or virtual R/W mode.
  • UI: Added /artifact switch for controlling video artifacting.
  • UI: Multiple types of images can now be mounted simultaneously via the command line.
  • UI: Added /type switch to push keys on startup.
  • UI: Added /cartmapper switch to specify mapper when booting headerless cartridges.
  • UI: Added support for saving settings in an .ini file instead of the Registry.
  • UI: Added more color presets.
  • UI: Added save screenshot command.
  • UI: Ctrl+\ and Ctrl+Shift+\ now produce Ctrl+Esc and Ctrl+Shift+Esc.
  • UI: Added /portable mode to switch to Altirra.ini for settings.
  • UI: Added help file.
  • UI: Disk, cartridge, and tape images can now be loaded from .zip files.
  • UI: Heads-up display now indicates H: access.
  • Recording: Added video recording.
  • Simulator: Added option for faster kernel boot by accelerating checksum and RAM test routines.
  • Simulator: .bin and .xfd extensions now override content-based identification for images.
  • Simulator: BASIC disable now lifts Option key on playfield enable rather than VBI enable to avoid breaking games that don't use VBIs.
  • Debugger: Added .pathbreak command to stop when new code is executed for the first time.
  • Debugger: Disassembly window now auto-pages when scrolling up or down beyond the current view.
  • Disk: Individual disk drives can now be powered on and off from the Disk Drives dialog.
  • Disk: Improved compatibility of H: device.
  • Disk: Added support for H: burst I/O.
  • IDE: Added emulation support for MyIDE interface.
  • HLE: Rearranged SIO to improve compatibility with naughty programs that copy out parts of kernel ROM.
[bugs fixed]
  • UI: Fixed random crash when opening debugger or new debug panes.
  • UI: Booting images on the command line now removes previously mounted images.
  • UI: Fixed Alt+8 keyboard shortcut.
  • UI: Remapped Insert/Delete/Home keys to better match their Atari equivalents.
  • UI: Fixed joystick ports 3 and 4 not being mappable.
  • UI: Fixed focus anomalies when bringing up profile view undocked.
  • UI: Rewrote bicubic pixel shader to fix artifacts on Intel GMA 950.
  • UI: Display acceleration is now supported on secondary monitors.
  • POKEY: Added support for using channel 2 as serial transmit clock (SKCTL[6:5]=11).
  • POKEY: Unassigned registers now properly read $FF.
  • Disk: Increased delay from complete byte to first data in high speed mode to fix data overruns in SIO-based routines.
  • Disk: Fixed bug that caused corruption of newly created disk images during incremental updates.
  • CPU: Fixed bug in DCP opcodes.
  • CPU: Added missing ARR #imm ($6B) opcode.
  • CPU: Added missing SAX zp,Y ($97) opcode.
  • CPU: Added missing XAS abs,Y ($9B) opcode.
  • CPU: Fixed ATX #imm ($AB) opcode.
  • Debugger: Fixed crash/errors when trying to reopen printer pane after closing it.
  • Debugger: Memory leak fixes.
  • Debugger: Fixed disassembly window jumping when changing breakpoints after selecting a nested call stack frame.
  • Debugger: Fixed Alt+Shift+0 shortcut for profiler view.
  • Simulator: Fixed bug where BASIC bit wasn't handled properly in 576K and 1088K memory modes.
  • Cartridge: SuperCharger 3D cartridge is now saved and restored properly across runs.
  • HLE: Added initial cassette reading support.
  • HLE: Fixed bugs in E: logical line handling in bottom third of screen.
  • HLE: Fixed handling of undocumented ZFL entry point in math pack with accelerated FP disabled (improves compatibility with Atari BASIC).
  • HLE: SIO now disables level 2 VBLANK when active.
  • HLE: CIO no longer throws an error when closing an IOCB that is not open.
  • HLE: CIO now allows opening a device without a colon, i.e. "K".
  • GTIA: Fixed some display artifacts when extended PAL height is enabled.
Version 1.6 [April 25, 2010]:
[features added]
  • Debugger: Added profiler.
  • Debugger: Added support for loading CA65 labels.
  • Debugger: Added verifier to catch possible coding errors.
  • Debugger: Added support to view extended memory to some commands and panes.
  • UI: Added option for controlling vertical sync lock.
  • UI: Added /opengl command line switch.
  • UI: BASIC ROM is now noted on window caption.
  • UI: Window position is saved on exit.
  • UI: Added /debug switch to launch in debugger mode.
  • UI: Added /f switch for full-screen mode.
  • UI: Added .car extension to Open Image dialog.
  • UI: Input maps can now be cloned.
  • UI: Input maps can now be bound to a specific game controller index.
  • UI: Create disk dialog now has entries for standard disk formats.
  • UI: Added ability to paste text from clipboard.
  • UI: Moved warm reset to F5, bound Help to F6 and Break to F7, and merged Run into F8 to match other emulators.
  • UI: Added program icon.
  • Simulator: Added option to fill memory with a psuedorandom pattern on cold boot instead of zeroes.
  • Simulator: Added support for 65C816 high memory at banks $01-03.
  • POKEY: Increased playback sampling rate to 44KHz.
  • POKEY: Added option to toggle non-linear mixing.
  • POKEY: Added option to toggle individual sound channels.
  • POKEY: Implemented keyboard overrun bit.
  • VBXE: Register window can now be switched between $D6xx and $D7xx.
  • Disk: Added support for 1050 drive dual density format.
  • Disk: Added support for XF551 drive high speed commands.
  • GTIA: Added a stronger level of NTSC artifact emulation.
[bugs fixed]
  • Fixed command line parsing and added several new switches.
  • HLE: Fixed math pack issues preventing Atari Basic ATN(), INT(), and SQR() from working.
  • HLE: Fixed handling of BASIC enable/disable on warm reset.
  • LLE: Improved math pack implementation.
  • ANTIC: Playfield DMA wasn't properly shut off on cold reset.
  • ANTIC: Improved emulation of mid scan line DMACTL changes.
  • ANTIC: Reset line now resets position counters.
  • ANTIC: Emulated single cycle glitch in VCOUNT at the end of a frame.
  • ANTIC: Implemented delay for changes to CHBASE to take effect.
  • POKEY: Adjusted timing of STIMER and timer rollovers.
  • POKEY: Retuned filters and non-linear mixing curve.
  • POKEY: Fixed behavior of SKSTAT serial overrun bit.
  • GTIA: Added option for displaying full PAL height when extending display past scan line 239.
  • GTIA: Fixed display of beam position when single stepping with VBXE enabled.
  • Debugger: Fixed bug where history window didn't allow scrolling to the bottom via the slider.
  • Debugger: History window now always shows last executed instruction.
  • Debugger: History window now flushes and rebuilds the tree when the history window rolls over.
  • Debugger: "Toggle read/write breakpoint" in the memory window was using the wrong address.
  • Debugger: Disassembly window now tracks 65C816 M/X/E state.
  • Debugger: .history command was using wrong register state for decoding indexed effective addresses.
  • Debugger: Fixed incorrect index register values in Registers pane in 65C816 emulation mode.
  • Debugger: Fixed disassembly of JMP (abs,X) and JSR (abs,X) instructions.
  • CPU: XCE instruction no longer sets M/X bits when staying in native mode.
  • CPU: Fixed bank used by JML, JMP (abs), and JMP (abs,X) instructions in 65C816 mode.
  • Disk: Added support for reading broken DD disks that have full 256 byte boot sectors.
  • Disk: SIO acceleration hook now sets SKCTL correctly.
  • UI: Fixed issue where full-screen mode didn't always cover the entire screen.
  • Simulator: Shortened delay to releasing OPTION on startup.
Version 1.5 [January 31, 2010]:
[features added]
  • Added option to redirect P: to a text pane.
  • UI: Added handing for gamepads being added or pulled during execution.
  • UI: Rewrote input system and added general input mapper.
  • UI: Added options for controlling display stretching and aspect ratio.
  • UI: Added better handling for cases in which a requested firmware ROM is not available.
  • UI: Added option to control overscan display.
  • UI: Mounted disks and cartridges are saved and restored across runs.
  • UI: FPS display in window caption is now optional.
  • UI: System configuration is now shown on the window caption.
  • POKEY: Added volume control.
  • Simulator: Added "Other" firmware option to load an otheros.rom custom kernel (16K XL).
  • Cassette: Added seek UI.
  • Cassette: Reworked playback indicator.
  • GTIA: Added option to blend adjacent frames to reduce flicker.
  • GTIA: Added System > Video > Adjust Colors.
  • GTIA: Added support for interlaced output.
  • Disk: Added sector counter option.
  • Disk: Increased max drive count to 8.
  • Disk: Added burst transfer mode compatible with SpartaDOS X.
  • Disk: Get Status and Read PERCOM Block commands are now accelerated.
  • Disk: Lazy writes are now incremental.
  • VBXE: Initial emulation support.
  • Misc: Added R-Time 8 support.
  • Debugger: Added list nearest symbol (ln) command.
  • Debugger: "Go to Source" command now asks for source file location if it
  • cannot be found.
[bugs fixed]
  • HLE: Improved compatibility of screen editor.
  • HLE: Fixed bug in emulated math pack that broke Atari Basic.
  • Debugger: Fixed crash when a source file couldn't be found.
  • Debugger: Auto-loading of symbols for executable files works again.
  • Debugger: Source windows no longer recenter when toggling breakpoints.
  • Debugger: Fixed misspelled SKRES symbol.
  • ANTIC: Fixed incorrect CPU timing for STA WSYNC + PHA combination.
  • ANTIC: Vertical scroll bit is now kept across VBLANK if display list is too long.
  • ANTIC: Fixed timing of display list DMA enable changes (DMACTL bit 5).
  • ANTIC: Internal line buffer is no longer cleared when repeating mode lines with display list DMA disabled.
  • ANTIC: Mode lines can now repeat across VBLANK with display list DMA disabled.
  • ANTIC: Added emulation of bug where VBLANK can fail to occur if scan line 247 is a hires line.
  • POKEY: Fixed reading of POT timers before pot counters have stabilized.
  • CPU: Implemented SBX instruction ($CB).
  • Disk: Increased reliability of lazy flush mechanism.
  • Disk: Fixed PERCOM block for large disk images.
  • Disk: Fixed boot sector count for 512 byte/sector images.
  • Disk: Hard disk (H:) no longer goes away on a warm reset.
  • Disk: Reverted change to raise RTCLOK on SIO acceleration to fix bugs with programs that monitor RTCLOK from a VBI handler.
  • UI: Mouse capture is automatically released when the simulator stops.
  • UI: Fixed USER handle leaks.
  • Simulator: 1088K memory mode no longer disables self-test bit when extended RAM is disabled.
  • LLE: Fixed cartridge initialization.
  • LLE: Fixed BASIC ROM switching.
  • LLE: K: open/close calls are now implemented.
  • LLE: Added initial math pack implementation.
  • LLE: SIO now shuts off all audio channels.
Version 1.4 [November 8, 2009]:
[features added]
  • Debugger: Added .diskorder command to force phantom sector load order.
  • Debugger: Added .dma command to dump current ANTIC DMA pattern.
  • Debugger: Added .caslogdata to diagnose cassette data read failures.
  • Debugger: Added .pia command to dump PIA state.
  • Disk: Added support for command $4E (Read PERCOM Block).
  • Disk: Added support for reading Diskcomm (DCM) images.
  • Cassette: CAS images and mono WAV files now play data as audio.
  • Cassette: The SIO acceleration engine now reports diagnostics about damaged blocks to the console window.
  • Cassette: Made accelerated read routine more robust against interpreting garbage as the start of block sync.
  • Cassette: Optimized WAV processing routine.
  • Cassette: Added command to unload tape.
  • Cassette: Added emulation of feedback from SIO motor control line into audio input.
  • UI: Added command to reset window layout.
  • UI: Drag-and-drop is now a synonym for the Open Image command.
  • UI: Added more key mappings.
  • UI: Added Boot Image command to unload all existing cartridges/disks/tapes and cold reset after loading an image.
  • UI: Added debugging option to dump raw audio to disk (32-bit float @ 63920.4 NTSC / 63337.4Hz PAL).
  • UI: Added .com to list of file filters for the Open Image/Boot Image commands.
  • UI: Added enhanced text display mode.
  • Simulator: Added support for loading OS-A kernel ROM.
  • GTIA: Added support for PAL artifacting.
[bugs fixed]
  • UI: Mapped Ctrl+alpha/num and Ctrl+Shift+alpha/num keys.
  • UI: Arrow-keys now auto-repeat.
  • UI: View > Display works when the debugger is disabled.
  • UI: Fixed window activation and sizing problems when toggling full screen mode.
  • UI: This simulation is now throttled in full-screen mode.
  • CPU: Implemented TDC instruction in 65C816 mode.
  • CPU: Implemented undocumented $93 (SHA) and $BB (LAS) opcodes.
  • CPU: Fixed flags on $9C (SHY) opcode.
  • CPU: Removed bogus 65C816 opcode ($DC) in 6502 decoder.
  • Cassette: Fixed desync between audio and data after accelerated load.
  • Cassette: Audio/data channels are no longer swapped when processing stereo input.
  • Cassette: Raised cutoff on control line low-pass filter to fix reliability problems at turbo baud rates.
  • Cassette: Fixed incorrect SIO return code for accelerated cassette reads.
  • Cartridge: Fixed MMU mapper so that the cartridge ROM now overrides BASIC at $A000-BFFF.
  • Cartridge: TRIG3 is now deasserted when $A000-BFFF is unmapped.
  • Cartridge: The second bank setting for Bounty Bob Strikes Back! cartridges is now saved in save states.
  • Disk: Added support for weak bit emulation in VAPI images.
  • Disk: Fixed VAPI image read errors when missing sectors are present.
  • Disk: Fixed incorrect FDC status when loading long sectors that set the "lost data" status bit.
  • Disk: SIOV/DSKINV acceleration handlers set more kernel variables for better compatibility.
  • Disk: Abort acceleration attempt when disk buffer contains SIO timeout flag (TIMFLG).
  • Disk: Adjusted sector read delay to increase VAPI image compatibility.
  • Disk: Fixed cases where the virtual read/write setting was not obeyed properly.
  • GTIA: Changes to GRAFPx/GRAFM are latched and no longer affect a sprite image that is already shifting out.
  • GTIA: Increased timing precision of console speaker from 28 cycles to single cycle.
  • GTIA: Fixed bug that caused some apps to misdetect the video mode as SECAM.
  • GTIA: Adjusted timing for mid-screen changes to P/M graphics and color registers.
  • GTIA: CONSOL output bit 3 wasn't affecting input bit 3.
  • GTIA: VDELAY now masks DMA fetches rather than actually delaying loads.
  • POKEY: Fixed random crash in stereo mode.
  • POKEY: 15KHz and 64KHz clocks are no longer joined between the left and right channel chips.
  • POKEY: The channels now have the correct 0-3 clock skew for reading the noise generators.
  • POKEY: Implemented channel 1/2 inversion when not in volume-only mode.
  • POKEY: Implemented non-linear mixing.
  • POKEY: Audio plays again when initialization mode is active.
  • POKEY: Implemented serial force break bit (SKCTL bit 7) affecting two-tone mode.
  • POKEY: STIMER now resets output channel states properly.
  • POKEY: Asynchronous serial input mode now holds down timers 3 and 4 again when a byte is not shifting in.
  • HLE: The math pack is now emulated even if the acceleration option is disabled.
  • HLE: POTGO is now strobed during vertical blank stage 2 processing.
  • HLE: STRIG2/3 are now updated from TRIG0/1 instead of TRIG2/3 for XL/XE hardware compatibility.
  • HLE: Fixed bug where POKEY was put into initialization mode after an unaccelerated SIO transfer.
  • HLE: POKEY audio channels are now shut off after an SIO operation.
  • HLE: Added keyboard click.
  • ANTIC: Two-line resolution mode now reloads GTIA every scan line.
  • ANTIC: Fixed timing when using read-modify-write instructions to trigger WSYNC.
  • Simulator: Memory banking wasn't updated properly on changes to the port B data direction register.
Version 1.3 [September 4, 2009]:
[features added]
  • Debugger: Register pane now shows 65C816 state.
  • Debugger: Added context menu to disassembly pane.
  • Debugger: *.lst and *.lab symbols are automatically detected and loaded for direct-run EXEs and cartridges.
  • Debugger: Improved source-level debugging capability.
  • Debugger: Opcodes are now cached so that they show correctly in the history log even with bank switching.
  • UI: Filter mode is now saved on exit.
  • UI: Added command to copy current frame to the clipboard.
  • UI: Added paddle support.
  • GTIA: Optimized artifacting code.
  • GTIA: Added the ability to disable collisions for cheating.
  • Cartridge: Added support for 64K XEGS and 512K MegaCart cartridge types.
  • Cartridge: Added support for SuperCharger 3D cartridge.
  • Cassette: Added support for non-standard baud rates.
  • Cassette: Added auto-boot option.
  • Cassette: Device open commands are now accelerated.
[bugs fixed]
  • Simulator: More fixes to executable loader.
  • Simulator: 320K memory mode now banks ANTIC along with the CPU.
  • Simulator: Joystick and bank switch masking via the PIA data direction register is now supported.
  • Simulator: Rewrote BASIC handling to use the OPTION switch rather than masking PORTB bit 1.
  • Simulator: Reset PIA, ANTIC, and CPU on warm reset for XL hardware.
  • Simulator: Self-test ROM no longer appears if kernel ROM is disabled.
  • Simulator: Adjusted PAL frame rate.
  • Simulator: Disk boot flag is now set when loading EXEs to accommodate programs that warm start through DOSINI vector.
  • Simulator: EXE loader is more tolerant of broken files.
  • CPU: Fixed many 65C02/65C816 bugs.
  • CPU: Fixed emulation of NMOS 6502 decimal mode.
  • CPU: Fixed bugs in undocumented instructions.
  • CPU: Fixed emulation crash when switching to 65C816 on the fly.
  • CPU: Fixed handling of break flag.
  • CPU: Now allow one instruction to pass before taking IRQ interrupt after clearing I flag.
  • Debugger: Improved handling of 65C816 modes in disassembler.
  • Debugger: Debug memory reads no longer see $FF in the page where a read memory breakpoint is set.
  • Debugger: Fixed bugs in symbol parser when loading MADS listings.
  • Debugger: Fixed line highlighting in source windows.
  • Debugger: Disassembly recomputes on 65C816 mode changes.
  • Disk: Fixed bug in loading of ATR files that have non-standard boot sector counts.
  • Disk: Additional compatibility fixes to DSKINV acceleration.
  • Disk: Status commands are no longer delayed by the accurate disk timing option.
  • Disk: Applied slight adjustment to SIO transfer rate.
  • Disk: POKEY timers are now shut off after SIO/DSKINV acceleration.
  • Disk: Strengthened disk image format validation and made XFD loading more tolerant.
  • UI: Fixed bug in CPU mode dialog that prevented selection of 65C02 mode.
  • UI: Fixed crash when accessing menu with display pane closed.
  • UI: Keyboard-as-joystick logic no longer allows simultaneous up+down and left+right.
  • UI: Added support for controlling joystick port 2.
  • UI: Blocked invalid machine configurations with XL kernel and 800 hardware or less than 64K of memory.
  • ANTIC: Fixed broken mode 9.
  • ANTIC: Vertical reflect now works on modes 4-7.
  • ANTIC: Player/missile DMA no longer occurs during vertical blank.
  • ANTIC: Fixed behavior of vertical scrolling on blank lines.
  • ANTIC: Changes in playfield width are now supported later in a scan line.
  • ANTIC: Moved VCOUNT advance forward by one cycle.
  • ANTIC: NMIs are now suppressed if enabled too close to trigger point.
  • ANTIC: NMIs are now delayed by one cycle if enabled exactly on cycle 8.
  • GTIA: Bogus missile-player collisions were reported if a register change occurred in the middle of a missile.
  • GTIA: Fixed CONSOL I/O interactions on switch lines.
  • GTIA: Save states now restore player/missile widths.
  • HLE: DSKINV now supports double-density disks.
  • HLE: Improved compatibility of post-init PORTB state.
  • POKEY: Rewrote resampling filter to better block high frequencies.
  • POKEY: Fixed 17-bit noise register polynomial and shift direction.
  • POKEY: Initialization mode (SKCTL[1:0] == 0) now resets the low-speed clocks and polynomial shift registers.
  • POKEY: Asynchronous serial receive mode no longer suspends channels 3 and 4.
Version 1.2 [July 5, 2009]:
[features added]
  • Debugger: Added memory pane.
  • Debugger: Shift+F11 is now a shortcut for Step Out.
  • Debugger: History window now supports the mouse wheel.
  • GTIA: Added artifacting support.
  • UI: Cursor auto-hides when over display pane.
  • UI: Added window pane layout saving.
  • UI: Basic support for an Atari ST mouse in port 2.
  • UI: Added more keyboard mappings.
  • Simulator: Added initial save state support.
  • Simulator: Added option to pause when not the active application.
  • CPU: Initial 65C02 and 65C816 support.
[bugs fixed]
  • Simulator: Fixed RUNAD handling in executable loader.
  • Simulator: Fixed incorrect TRIG3 cartridge sense on launch.
  • UI: Tweaked aspect ratio constants.
  • UI: Fixed some bugs with pane undocking.
  • ANTIC: Added missing address wrapping (fixes hang loading Bounty Bob).
  • ANTIC: Fixed VSCROL timing to acccommodate more mode line extension tricks.
  • ANTIC: Fixed low bits in NMIST register.
  • POKEY: Tweaked hi-pass to sound better.
  • POKEY: Implemented fast pot scan mode.
  • POKEY: Two-tone serial mode now affects timer 1/2 sound output.
  • Debugger: Breakpoints can now be seen on the active line.
  • Debugger: Fixed early stop when trying to Step Out across a PLA or PLP instruction.
  • Debugger: CPU status traces on single-step use the instruction PC rather than the raw PC.
  • HLE: Fixed black status pane in Pole Position due to incorrect attract mode handling.
  • HLE: Fixed startup path problems that prevented SpartaDOS X from starting.
  • HLE: Screen handler now adjusts user memory limit.
  • HLE: Fixed length return value bug in CIO put characters command.
  • HLE: Control codes now work with S:.
  • Disk: Fixed CIO return codes for H: handler.
  • Cartridge: Cart bank is now reset on cold reset.
  • Cartridge: Fixed banking and recognition problems with MaxFlash 1M cartridge format.
  • CPU: Added option to halt on BRK instructions.
  • GTIA: Fixed nasty bug where P/M collisions got messed up whenever the simulator dropped a frame.
  • GTIA: Fixed behavior of sprites when repositioned during active region.
  • GTIA: Implemented text blink and vertical reflect bits.
  • GTIA: Fixed low bit in PAL register in NTSC mode.
Version 1.1 [May 12, 2009]:
[features added]
  • CPU: Added an option to disable illegal opcode support.
  • Disk: Added .XFD support.
  • Disk: Added rudimentary hard disk (H:) support.
  • UI: Added exception handler to write crash information.
  • UI: F8 now also breaks into the debugger.
  • UI: Fixed some window activation issues in the docking system.
  • UI: Display is now locked to correct aspect ratio.
  • UI: Dockable panes are now based on percentage rather than absolute width.
  • UI: Changed location of Registry key to work around antivirus false positives.
  • Cartridge: Added support for cartridge images that have headers.
  • Cartridge: Added support for MaxFlash 128K and 1M cartridge formats.
  • Debugger: F5/F8/F9/F10/Shift+F10 now work.
  • Debugger: Frames are now double-clickable in the call stack window.
  • Debugger: F10 now works in the console command line.
  • Debugger: Added history window.
  • HLE: Rewrote HLE kernel mode to be based off the LLE kernel for better compatibility.
[bugs fixed]
  • Simulator: Init and run vectors are now implemented properly -- fixes New Year's Miracle demo.
  • Simulator: $FFFF optional headers in executables no longer produce load errors.
  • Kernel: DRKMSK was not set -- fixes missing status bar in The Last Word.
  • Debugger: The start of instruction PC is now reported instead of the CPU raw internal PC.
  • Debugger: Fixed infinite loop when viewing disassembly beyond $FFFF.
  • Debugger: Disassembly view edit window now works.
  • Debugger: Fixed a cycle being lost by the CPU on each step or breakpoint hit.
  • Debugger: Console window now scrolls to bottom when updating.
  • UI: Implemented some Ctrl+Key combinations.
  • UI: Fixed jittering problems in full-screen mode.
  • UI: Fixed some focus problems when docking and undocking panes.
  • UI: Full-screen mode no longer shows window borders when using GDI or DirectDraw for display.
  • UI: Removed horizontal and vertical blank regions from display window.
  • UI: Caps Lock now works.
  • UI: Mouse pointer is now hidden in full-screen mode.
  • Disk: Improved disk emulation compatibility with SpartaDOS X.
  • Disk: Fixed corruption of first byte on sector writes.
  • Pokey: Added missing channel 2+4 high pass filter.
  • Pokey: Fixed off-by-one in 1.79MHz 16-bit timing that screwed up some demos using 4-bit polynomial beats.
  • Pokey: Pot scanning is now implemented.
  • GTIA: Color mixing with PRIOR D0-D3=0 now works.
  • GTIA: Fixed incorrect luminance for background in 16 color mode.
  • GTIA: Fixed player/playfield priorities in 9 color mode.
  • GTIA: Fifth player now mixes in PF3 color properly in 16 color/luma modes.
  • GTIA: Color registers no longer have four luma bits.
  • GTIA: ANTIC modes other than 2, 3, and F now work with GTIA modes.
  • GTIA: Implemented psuedo-mode-E caused by resetting the GTIA mode mid-scanline.
  • GTIA: Collisions now register in 9 color mode.
  • GTIA: Implemented one color clock shift in 9 color mode.
  • GTIA: Changing HSCROL in the middle of a mode line now works.
  • ANTIC: Corrected WSYNC, DLI, and VBI timing.
  • CPU: Fixed instruction timing for read-modify-write opcodes using abs,X addressing.
Version 1.0:
  • Initial release.