¶Altirra now has a home
My 8-bit Atari computer emulator, Altirra, now has a home. You can find it at the bottom of the nav bar on the left. I finally got around to doing it since I don't frequent AtariAge enough to actually participate much there, so I needed somewhere else to put updates, and this blog isn't a good way to keep a permanent link to tip. I was going to do it via a second blog, but after running in circles trying to configure it, I gave up and just made it a static page. There's a reason I work on client-side software.
Anyway, while I was at it, I threw the release switch on the dev directory and posted a new version, Altirra 1.2. Most of the changes are nitpicky emulation fixes, and not too significant unless you have something that actually cares that changes to VSCROL are checked on cycles 108 and 0 of a scanline. A significant change, however, is that I added 65C816 support. The 6502 was first extended in the 65C02 by the addition of some useful opcodes, and the 65C816 was an even bigger upgrade to handle a 24-bit address space and 16-bit arithmetic. It was used in the SNES and in the Apple II GS, but Atari never released an 8-bit system with anything other than a good old fashioned 6502/6502C, making its addition is a bit whimsical. Apparently some accelerators with 65C816s were made, however, and there is a little bit of software out there. It's a bit buggy, but it can run at least one 65C816-based kernel ROM replacement. I think I can also say, after having implemented it, that the 65816 instruction set was a valiant attempt to make the x86 ISA look good. 8-bit emulation + 8/16-bit acc/mem mode + 8/16-bit indexing mode... what a mess. I think I actually prefer x86 real mode to banks and m/x bits.
The change list is a bit better formatted this time. I'm a bit embarrassed to say that it never occurred to me before that after writing the RTF-based change log window code for VirtualDub -- which is also in Altirra -- that I could have simply copied and pasted its text into here instead of manually word-wrapping the text like I usually do.
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.
This blog was originally open for comments when this entry was first posted, but was later closed and then removed due to spam and after a migration away from the original blog software. Unfortunately, it would have been a lot of work to reformat the comments to republish them. The author thanks everyone who posted comments and added to the discussion.