Nowa wersja testowej Altirry i Phaeron zabrał się za poprawki związane z najpopularniejszej u nas peryferium do Atari czyli magnetofonu.
Ostatnia pełna wersja tego emulatora, jaka publicznie została udostępniona to Alirra 2.90 z 15 lipca 2017 r.
→ [ATARI] Altirra x86 i x64 2.99 test 19
The Way of Exploding Fist, konwersja Fandal/Miker z Commodore 16 (2017)
Altirra 2.9.9 Beta 19 16/11/2017
- Devices: An automatic reboot is now requested before adding or removing devices that practically require one.
Fixes for Rapidus:
- HLE system is aware of Rapidus OS switching so that acceleration hooks no longer cause a crash when switching OSes.
- Fixed issues with the $FFD000-FFD7FF hardware mirror.
- Additional 16MB of banked SDRAM is now supported.
- Fast_mem_0 ($0000-3FFF write-through disable) is now supported.
- Hardware protect unit is now supported. (Who wants to write a VM?)
- Added .rapidus command to debugger to dump control register and EEPROM state.
- Implemented enough functionality in the 16-bit bootstrap PBI for the stock menu options to work -- this means you can flash the 6502 PBI and firmware images and the menu will be functional. The bootstrap flash will also apply options, but that's of limited use since it still has no menu.
- Rapidus, and several other "internal" device types, will now auto-reset the computer when added or removed.
Special thanks to laoo and drac030 for assistance.
→ [ATARI] Altirra x86 i x64 2.99 test 18
Joe Blade 2
Altirra 2.9.9 Beta 18 07/11/2017
- The issue was that pulling Rapidus at the wrong times left the CPU core trying to run '816 microcode on the 6502. This stems from an issue in the device framework with devices not being able to signal that they need the computer power cycled when added or removed, so right now mucking around with the devices causes them to be hotplugged. As usual, no smoke or smells are emulated... but generally not the cleanest experience. I changed the CPU to force a warm reset there so at least the CPU core won't go off into the weeds.
Altirra 2.9.9 Beta 17 05/11/2017
- Display: Added workaround for breaking change in Windows 10 build 1709 that caused D3D9 exclusive fullscreen mode to not render.
Figured out what Microsoft did with their "fullscreen optimizations" in Windows 10 version 1709 (Fall Creators Update) and got a workaround in so that D3D9 exclusive fullscreen should work again. Needless to say that's a few hours of my life I wish I could get back.
Fixed 400/800 mode crash with Rapidus, which is nonsensical but shouldn't crash. CPU mode setting is now split so that the UI option is disabled when Rapidus is active and the original mode is restored when the device is removed.
→ [ATARI] Altirra x86 i x64 2.99 test 16
Altirra 2.9.9 Beta 16 05/11/2017
- Debugger: Symbols can now be present above bank 0.
- Implemented two undocumented registers needed for the 6502C and SDRAM 4K options to work (though the latter has no effect). Note that all of the menu options are still unoperational unless you have the firmware dump of the 16-bit PBI ROM, until I figure out a solution for the bootstrap one. Pulling it out of the FPGA core isn't really an option....
- Fixed Rapidus flash residing on the chip bus instead of the fast bus.... though that may be too fast, if I'm reading the specs on the flash chip correctly.
- Fixed bugs with the page 0 mirroring option which could cause a crash if you did enough cold resets with it on.
- Fixed several bugs with bogus symbol decoding in disassembly above bank 0, notably JMP/JSR instructions still showing bank 0 OS symbols and other indirect jumps using the wrong banks (0/PBK/DBK depending on addressing mode).
- Unassemble (u) command now decodes symbols by default like the Disassembly pane unless -n is specified.
- Added some support for having debug symbols in bank 1+.
- Added an explicit Copy menu command to the console log window. Never minded its absence since I always use Ctrl+C instead. That keyboard shortcut also works in the disassembly view, but I couldn't trivially add a menu option there due to the way that the right-click currently clears the selection.
Enabling Rapidus OS seems to crash in emulation unless you have the same OS flashed to Rapidus and the base machine -- from what I can tell the firmware is trying to do a hot swap of the OS. CPU mode staying stuck is not fixed yet.
→ [ATARI] Altirra x86 i x64 2.99 test 15
Altirra 2.9.9 Beta 15 01/11/2017
- Debugger: u (unassemble) command now has switches to track 65C816 M/X/E state.
- Debugger: Memory access breakpoints are now supported in banks $01-FF.
- Debugger: added bta (set tracepoint on memory access) command.
- Debugger: db/dw/dsb/dsw/dsd expression operators now accept 24-bit addresses.
- Devices: Added Rapidus Accelerator emulation.
- POKEY: Fixed keys not being immediately recognized in raw mode when exiting init mode.
Adds preliminary Rapidus emulation. Some caveats:
- The emulator has bootstrap firmware built-in, but it simply boots in 65C816 mode and has no menu support.
- Flashing is supported (SST39SF040, 4K sectors). There are four components to flash: the 6502 New Device firmware, the boot firmware, the core firmware, and the 65C816 OS.
- Speed is approximate. The 65C816 runs at 11x synchronous (19.7MHz) and SDRAM wait states are not emulated.
- Supported hardware features: 6502/65C816 switching, SRAM overlay in bank 0, SRAM write-through, flash OS mapping, page zero mirroring into bank 1, $FF:D000-D7FF mirroring, EEPROM access.
- Not supported hardware features: fast IO cycles, U1MB compatibility mode, fast self test, high fast RAM mirroring, USB serial, SDRAM caching.
- The emulation also requires the 65C816 PBI firmware, which unfortunately is not readily available since it is built into the FPGA core. If you have the 2K image, it has an additional firmware slot.
- The real Rapidus firmware can be used but currently the menu options will not work, for unknown reasons. The most likely reason is the the missing 65C816 PBI firmware; the bootstrap firmware allows the menu to display and the system to boot but it appears that part of the configuration logic is also supposed to be in that firmware.
This involved a fairly heavy rewrite of the memory handling code, so there may be regressions. Other changes:
- C++ compiler updated to VS2017 15.4.2.
- Memory access expressions (db addr) and memory access breakpoints are now supported above bank 0.
- The u (unassemble) command now supports 65C816 M/X/E flag prediction like the Disassembly window and has mode override switches.
- Added bta (set tracepoint on memory access) debugger command to make it easier to trace reads/writes.
- Fixed a bug where held keys wouldn't be recognized immediately in raw key mode when exiting POKEY initialization mode (this affected the inverse key shortcut for entering the Rapidus menu).
→ [ATARI] Altirra x86 i x64 2.99 test 14
Drol (Broderbund, 1983)
Altirra 2.9.9 Beta 14 22/10/2017
- CPU: Fix incorrect extra cycle for opcode $04 (NOP zp).
- Debugger: Fixed crash when toggling breakpoints through UI on top of hidden break/tracepoints from loaded symbols.
- Debugger: Fixed crash with certain command alias patterns using wildcards.
Fixes debugger alias and toggle breakpoint crashes, fixed $04 opcode to be 3 cycles, fixed a DirectSound initialization issue that didn't seem to be causing functional issues but was triggering warnings, fixed an occasional pause in emulation when switching from PAL to NTSC.
Compatibility note: if you've upgraded to Windows 10 Fall Creator's Update, full screen mode may fail to work in all versions. From what I can tell, Microsoft broke some methods of doing full screen mode in D3D9 with their "fullscreen optimizations," and I'll have to make some major changes to the display code to work around their breakage. I've verified this on two independent systems, one with an Intel graphics card and another with NVIDIA, so it's not a driver problem. To work around it, either enable D3D11 mode or check the "disable fullscreen optimizations" compatibility option on the program's Compatibility property tab in Explorer.
→ [ATARI] Altirra x86 i x64 2.99 test 13
Altirra 2.9.9 Beta 13 15/10/2017
- Debugger: Undocumented store and read/modify/write instructions are now shown with write symbols rather than read symbols.
- Debugger: Extended .pia command output.
- Debugger: .basic_dumpline now supports reading program text from extended memory.
- Debugger: ~ (target info) command displays coprocessor types and speeds.
- Debugger: Added support for per-instruction breakpoints.
- Devices: Added feature to IDEPlus 2.0 to guard against NVRAM corruption on reset during clock reads.
- Devices: Added XEL-CF adapter emulation.
- Disk: Added support for ATX images with MFM tracks.
- PCLink: Added option to use creation timestamps passed in commands.
- AltirraOS: Fixed polarity of CKEY flag.
- Cheats: Fixed sorting issues in active list.
- CPU: Fixed 65C816 being reverted to emulation mode when changing CPU speed dynamically.
- CPU: Interrupts in 65C816 emulation mode now force K=0.
- Debugger: Disassembly window now scrolls properly above bank 0.
- Debugger: Improved breakpoint and stepping behavior with coprocessors.
- Debugger: Fixed incorrect execution history timings for Percom disk drives.
- Devices: Fixed IDEPlus 2.0 to have internal SDX at higher priority than external cart.
- Disk: Fixed crash when expanding archives in filesystems with empty directories.
- IDE: Serial number field in identify command data is now padded with spaces.
- PCLink: Directory search operations now return creation time instead of last write time.
- POKEY: Serial output data is now truncated when the output clock is stopped.
- UI: Fixed /type not working on cold boot.
- UI: Fix garbage when pasting text copied from WordPad.
- VBXE: Overlay priority is reset to $FF at top of XDL.
- Improved handling of truncated serial output bytes. This improves the load speed of some versions of Rescue on Fractalus to be more accurate -- the loader of this game has a bug where it turns off serial output too early, causing broken command frame checksums and command retries on real hardware. However, in emulation the next command frame was also getting mangled, which caused the load speed to be even lower.
- Tape sample jittering is now disabled when turbo modes are enabled. The timing for turbo reads is too tight for this, particularly with Turbo 6000.
- Fixed compile errors in VS2017 15.5 Preview 1 due to new warnings. (Still using 15.3.1 for now.)
- Also, some additional work on the performance analyzer: Traces now include the PIA control bytes and tape data for debugging tape loads. Compression has also been added to the video channel and improved on the CPU history channel to decrease the data rate. Standard 1.8MHz 6502 traces now take about 3-4MB/sec and video traces ~1MB/sec, the latter of which can be reduced further by dropping the frame rate to 25/30 or 17/20Hz in the trace settings. Finally, the tracer now automatically stops the trace by default when the buffered data reaches 500MB in a 32-bit build or 4GB in a 64-bit build to prevent running out of memory. This is generally good for at least a couple of minutes of tracing.
Altirra 2.9.9 Beta 12 6/10/2017
- Also fixed the serial number being reported by IDE devices -- it changes again and doesn't have nulls in the string.
Altirra 2.9.9 Beta 11 6/10/2017
- PCLink now uses creation timestamps and has an option to also set the creation timestamps from emulation time.
- Added XEL-CF emulation support. (Untested.)
- The ~ (list targets) debugger command now shows coprocessor types and speeds.
- Fixed wrong history timestamps and broken breakpoint ranges for Percom drive coprocessor.
- Frame PC is now updated when breakpoints are hit in coprocessors.
- Added support for per-instruction breakpoints.
- Fixed PAL high artifacting crash in 32-bit.
- Fixed garbage text paste from WordPad.
- Added support for mixed FM/MFM sectors on disks and ATX images with MFM tracks.
Altirra 2.9.9 Beta 10 24/09/2017
- .pia command now shows edge detection polarities.
- .basic_dumpline command now accepts extended memory addresses.
- Fixed bold console font on XP. (RichEdit is a mess with high DPI).
- Added option for inverting turbo tape input signal. Does nothing for non-turbo as FSK decoding is mostly invariant to phase.
- Fixed a crash in the expand archives command if empty directories were present.
Altirra 2.9.9 Beta 9 19/09/2017
- Fixes crash in history view in cases where history is empty.
- History view dynamically updates again on history enable/disable.
- Fixed /type keys getting dropped during boot.
- Added SIO interrupt line based cassette turbo. Needs testing as I don't have a test case for it.
- IDE+2: Added option to protect NVRAM against corruption in case of reset during clock read. By default, the emulator will now shadow user writes and back out the clock read when saving the NVRAM. This can be disabled if you actually want to emulate the NVRAM getting trashed.
- IDE+2: Internal SDX has priority over external cart. Note that the external cart option is finicky; as far as I can tell, it doesn't work when SDX is enabled because the SDX boot code turns the external cart back on.
- Help: Added some info for IDE+2. (I just noticed the character encoding error in the TOC. I'll fix that....)
- Cheats: Fixed sorting issues in the active cheat list.
- CPU: PBK is now reset to 0 when taking interrupts in emulation mode on an '816.
Altirra 2.9.9 Beta 8 4/09/2017
- Prevent wraparound on VBXE blitter timer if blitter not used for 20 minutes.
- CKEY polarity reversed in AltirraOS and now also cleared after cassette boot. Note that AltirraOS always uses the XL/XE address of CKEY while the debugger uses the 800 address; I need to resolve this at some point.
- Performance analyzer can now toggle CPU insn, video, and BASIC tracing.
- Added CIO/SIO code tracing, though I'm not sure if I'll keep it (it can't see direct put calls).
- The debugger now uses write symbols for read/modify/write and illegal store instructions, i.e. INC IRQEN instead of INC IRQST.
- Regarding the verifier: currently the verifier and the profiler are unable to deal with memory overlays, including extended memory. This is because they work on CPU addresses and can't tell when layers have been swapped in and out during execution, so they will be confused by the memory aliasing. Fixing this requires tracking the changes to the memory map and the virtual-to-physical address translations, which I haven't figured out an efficient way to do yet.
Altirra 2.9.9 Beta 7 24/08/2017
- Whelp, still no luck on the VBXE issue, but:
- Stability fixes to history views.
- History search optimized (sprintf is sloooowwww).
- VBXE: Overlay priority is now properly reset to $FF at the top of the XDL.
- VBXE: Fixed regression in reporting blitter line count remaining (was reporting full line count). Now also reports cycle delta and cycles to finish if within a scanline.
Altirra 2.9.9 Beta 6 20/08/2017
- Now includes CPU history tracing in the Performance Analyzer:
- The CPU history view has been rewritten and adapted for use with the tracing engine. Traces now include a compressed CPU execution history and clicking in the event view will show the execution history at that point, up to a 400K instruction window around it. (The normal CPU history is limited to 128K instructions.) Similarly, selecting an instruction in the CPU history will show the corresponding activity in the event view. This is currently always enabled for now and the trace will consume about 4-9MB/sec depending on how well the trace compresses; in the future the video and CPU history tracing will be optional to allow for longer traces. Fixed an issue with the CPU tracer that prevented some interrupt handlers from showing up properly if executed back-to-back with the RTI from the previous interrupt handler. This particularly affected IRQs serviced immediately after the VBI; these were showing up as extended VBIs rather than the CPU switching to handling the IRQ.
- Added some polish to the analyzer UI: added horizontal scroll bar, added zoom limits, and extended scale to microseconds. It now uses the same window docking code as the main UI to allow for additional views. Fixed a high-DPI problem on the debug console window, which should no longer show funky font sizes when the DPI scaling factor on the monitor changes.
- Compiler upgraded to Visual Studio 2017 Update 15.3.1. Had to work around one compiler bug that caused the debug build to crash; we'll see how the release build fares.
Altirra 2.9.9 Beta 5 5/08/2017
- Fixes 65C816 CPU reverting to emulation mode when switching speeds on the fly.
- Fixes VBXE XDL not being halted at the beginning of vertical blank.
- Also adds the initial version of a new debug feature, the performance analyzer. This records an execution trace and uses it to display a timeline of what functional units are doing. It is available at the bottom of the Debug menu.
Altirra 2.9.9 Beta 4 5/08/2017
- Problem: A program written for 65C816 is running in the high RAM past the first 64k. I hit F8 to abort it. The "disassembly window" displays the disassembled code at, say, $010100. I click the down arrow gadget in this window to scroll the disassembled listing down: the view immediately switches to $000100.
- Status Fixed
Chuckie Egg (A&F Software Ltd., 1985)
Altirra Version 2.99 test 3 [July 19, 2017]:
- Cassette: Added option to export decoded tape back out as audio.
- Disk: Tightened validation when mounting MyDOS filesystems.
- Fixes crash by tightening MyDOS validation and detection.
- Also adds an option to write out decoded tapes as audio. One use for this is that if you have a tape that decodes with Altirra but not another utility that you're using for .cas conversion; you can attempt to resynthesize it and see if the other utility can decode that. Altirra doesn't do silence detection, so this can help if the volume drops very low at some point on the tape. This will also amplify noise, though, so sometimes it won't work or may require manual cleanup. Also, it always produces FSK encoding, so don't try it with a turbo tape. The emulator doesn't know which encoding is used at any point in the tape, and while it can handle that internally by keeping both formats, it has to choose one when exporting audio.
Altirra Version 2.99 test 2 [July 19, 2017]:
- MIO bus binding bug fixed, and SCSI bus no longer mislabeled as IDE bus.
- On turbo tapes -- the decoder is still a work in progress. There are a couple of cautions regarding creating or using existing recordings of turbo tapes. Unlike the standard Atari encoding, which uses FSK and is relatively robust, turbo encodings are more sensitive to distortion. In particular, attenuation of higher frequencies can distort the waveforms and make the tapes more difficult to decode. The AST-encoded Arkanoid tape in the a8cas example archive has this problem:
- This shifts the zero crossing times, affecting decoding. Carefully applying a high-pass filter can reverse this:
- Currently Altirra cannot detect or correct for this issue automatically, so it is a manual process. If you are recording an actual turbo tape, turn off all enhancements on the tape deck including Dolby-B; these are not done by a normal Atari tape deck and turning them off will reduce the need to correct the recording.
- The analysis mode available in the Tools menu can be useful for diagnosing these issues, though it requires a lot of elbow grease. It decodes the tape and outputs a multi-track sound file that can be opened in a sound editor:
- The tracks, from top to bottom, are: resampled raw audio, FSK raw decoder outputs, FSK decoded data, turbo decoder AGC, turbo decoded data.
→ [ATARI] Altirra x86 i x64 2.99 test 1
Spellbinder (Fandal/Jose Pereira, 2017). Conversion from BBC (Dan & Ethan Shirron, 1987)
Altirra Version 2.99 test 1 [July 16, 2017]:
- Devices: Internal device tree storage has changed. Device trees may need to be remade.
- Input: Added detection and button naming for DualShock 4 controllers.
- VBXE: VideoBoard XE configuration has been moved from the menu to a device entry.
- Cassette: Added initial support for turbo tape decoding.
- Cassette: Mounted tape is now persisted along with other mounted images.
- Cassette: %-age position is now shown on HUD.
- Cassette: Improved FSK decoder.
- Cassette: Added analysis tool to compare raw signal against FSK and turbo decoder outputs.
- Debugger: History pane now has a more powerful loop detector that can handle larger loops and call/loop nesting.
- Debugger: History pane can now label each instruction with tape position.
- Debugger: .tapedata command now accepts position by sample (-s).
- Debugger: Added bsc command to change condition on a breakpoint.
- Devices: Added browser device (B:).
- Disk: ATX images are now saved with a unique creator code.
- SCSI: Fast/slow block storage speed is now implemented on SCSI buses.
- UI: Added support for per-monitor V2 DPI awareness in Windows 10 Creator's Update.
- VBXE: Added option to emulate FX1.24 or FX1.26 behavior.
- VBXE: Overlay collision detection is now implemented.
- VBXE: Improved blitter timing precision to sub-scanline.
- ATBasic: Added compatibility workaround for programs that use locations 183 and 184 to read the current DATA line.
- Cartridge: Fixed error when loading untagged cartridge from drag-and-drop stream source.
- Display: Improved display recovery when secondary monitors are turned on or off.
- VBXE: Attribute map is now constrained to 43 cells rather than a lower limit of 8 pixels horizontally.
- VBXE: Added emulation of color 0 bug in GR.11 in FX1.24 core.
- VBXE: Blit pattern width field is now 6 bits instead of 7.
Time to start the next set of test releases:
- C++ compiler updated from VS2015.3 to VS2017.2.
- System requirements change: SSE2 support is now required; 2.90 will be the last version supporting Athlon XP and Pentium III CPUs. Minimum OS is still Windows XP SP2 for now.
- Cassette tape revamp: OSD shows %age position, current tape is saved along with other mounted images, raw FSK decoder improved, turbo decoding options added. New analysis mode writes out a multichannel audio file that can be viewed in a sound editor to compare the raw audio against the FSK and turbo decoder outputs to check where and why errors are occurring. Debugger history can now label instruction execution with tape position.
- Debugger history window upgraded with more powerful loop detector, supporting larger loops, nested loops, and subroutine calls within loops.
- ATBasic updated to 1.55: now compatible with programs that directly peek at the internal variable for current DATA line.
- VideoBoard XE revamp: core version is now selectable between FX1.20, FX1.24, and FX1.26. Pre-FX1.26 cores show the VBXE-specific GR.11 emulation bug, and FX1.26 enables the new priority bit scheme. Attribute map and overlay collision detection is implemented, attribute map cells narrower than 8 pixels work now. Blits can now start and stop mid-scanline and blitter speed has been adjusted to be more accurate.
- SCSI devices now support fast and slow timing.
- The browser (B:) device is now supported for launching the web browser from within the emulation.
- PS4 controllers are now detected and appear in the input UI with button and axis names.
- Saved ATX disks now use a unique creator ID.
- Improved high DPI support in the UI: dialogs now automatically adjust to per-monitor DPI, and the new per-monitor V2 support in Windows 10 Creator's Update is now also supported.