Il ne s’agit pas vraiment d’un émulateur mais plutot d’une machine virtuelle pour développer et faire tourner des applications Atari ST, mais aussi TT & Falcon tournant sous Windows et en Open Source. Maintenant ARAnyM est fourni avec EmuTOS, un TOS gratuit. Deux versions sont disponible : Une avec et l’autre sans l’émulation du DSP.
Les améliorations sont les suivantes:
– input.cpp: improved the help message in window title
– various files: version++ and other minor updates for the new release
– MacAranym.xcodeproj, configure.ac: Fixing build on Mac OS 10.9 / Xcode 5.1
– New config setting [LILO] LoadToFastRAM to load kernel in FastRAM
– Delete some FreeMiNT’s specific code, like usb_device struct, leave
the updates to the members of this struct to FreeMiNT’s driver.
– Remove some endianess swapping where not necessary, and add them
where was needed. Use SDL function instead our owns.
– Update API version, because some function have now less parameters.
– Fix some return values.
– ikbd.cpp – force transition for GPIP pin
– fpu_mpfr.cpp – Be more careful about SNaN
– newcpu.cpp – Fix printing of sign-extended operands in disassembler
– fpu_mpfr.cpp – Preserve the bits of NaN
– fpu_mpfr.c – Improve accuracy of denormal results, fix decoding of FBcc.L
– Unix/vm_alloc.cpp – Use MAP_32BIT only when requested
– m68k.h – Added ARM flags optimization
– configure.ac – Added ARM flags optimization
– sysdeps.h – Improved clobber list
– configure.ac : Added ARM Assembly compiler flags (build armv6 optimized
assembly on armv6 and above)
– src/Unix/sysdeps.h : Improved __asm__ memory access (supports armv6, armv7
and common arm)
(ARMV6_ASSEMBLY for armv6 -> armv8; or ARM_ASSEMBLY for armv1 -> armv5)
because extended optimation is for armv6 and above
i.e. –build=armv5l-unknown-linux-gnueabi will build an
generic arm version with common ARM instructions
– sigsegv_linux_arm.cpp : Bug fixed with word/int byte order
– configure.ac : Added sigsegv_linux.arm.cpp for linux ARM Architecture
– sigsegv_linux_arm.cpp : sigsegv support for ARM Linux
– Support for –enable-addr-check=sseg on ARM Linux
– configure.ac : Reverted to previous FIXED_ADDRESS implementation for 64 Bit
previous change wasn’t necessary
– sigsegv_darwin_x86.cpp : 64 Bit code
– sigsegv_darwin_x86.cpp : xor added statement
– New files: MachServer.c, MachUser.c and gen_machfiles.sh
– MacAranym.xcodeproj: New build phase gen_machfiles
– sigsegv_linux_x86_64.cpp : New 64 Bit Jit for Linux
– MacAranym.xcodeproj: Fixed Profile settings
– configure.ac : Fixed typo
– bpf_helper.c: Set executable flag in fix permissions and wait for child
processes to finish.
– configure.ac prepared for 64Bit Fixed addressing vm_allocate on darwin targets
– MacAranym.xcodeproj: Fixed Packaging scheme for 32/64 Bit Targets
– sigsegv_darwin_x86.cpp: added break in set_eflags. (Not sure if the eflags
are really relevant)
– sigsegv_darwin_x86.cpp: Fixed X86_REG_EDX
– sigsegv_darwin_x86.cpp: Limit to BAD_ACCESS and forward_exception to enable
XCode Debugging
– MacAranym.xcodeproj: Removed specific compilation flags of bpf_helper target.
This should enable error-free compilation with Xcode 3.1.
– newcpu.cpp/compemu_fpp.cpp/fpu_ieee.cpu: fixed bugs which were reported as
warnings by LLVM.
– ethernet_macosx.cpp: BPF packet filtering improvements: added a new filter for
multi-cast packets (MAC based) and another filter solely based on the IP
address (ARP and IP protocol only).
« nofilter » should only be used for debugging, as it causes memory leaks on the
Atari/MiNT side and therefore system crashes.
Implemented multi-packet reads from BPF device (one read operation can deliver
multiple ethernet frames).
– uae_cpu/compiler/compemu.h: Avoid conflict with definitions from
<byteswap.h>, imported by SDL.
– ethernet_macosx.cpp: fixed memory leak on Atari side by implementing a
working packet filter which ensures that only valid ethernet frames are
forwarded to the Atari side. Removed the « nofilter » keyword.
Thanks to Zorro for pointing me to this severe bug.
– natfeat/ethernet.h: Increase MAX_PACKET_SIZE to 9000 to allow enabling
Ethernet on systems with MTU bigger than 1514.
– ethernet_macosx.cpp: Fix memory overflow in BPF driver.
– input.cpp: fixed click to grab input, added proper host<->Atari mouse sync
– ikbd.cpp: fixed SendMouseMotion() and MergeMousePacket()
– include/aradata.h: added setAtariMousePosition()
– natfeat/nfvdi.cpp: fixes a bug (sort of a race condition) in NFVDI.
When fVDI switches to 32-bit display in VdiDriver::setResolution(),
a new HostSurface is created immediately for the VDI driver.
Then the video mode change is applied to the host window only on next VBL,
in HostScreen::refreshSurface().
But in VdiDriver::expandArea(), there was a bogus test:
if (host->video->getBpp() == 8) {
This was wrong, because the VDI made a test on the host window surface,
which would only be correct on next VBL. Found and fixed by Vincent Riviere.
– bootos_emutos.cpp: fix for now correct BCD date format in EmuTOS by Vincent.
– include/natfeats.h: added proper check for end of memory block that
is to be copied between host and guest using the LIBC memcpy().
Re-enabled NATFEAT_LIBC_MEMCPY fast copying in NatFeats because
I believe it’s relatively safe now when there are checks for
begin and end of the Atari memory block. Atari memory is contiguous
so when both begin and end of the block is readable/writeable
the whole block should be OK to copy by LIBC memcpy.
– input.cpp: « Reseting weird mouse packet » error message changed to
« Resetting suspicious mouse packet » debug message thus it’ll no longer
annoy you. Thanks to Helmut Karlowski for pointing it out.
– include/natfeats.h: added switch for previously default and dangerous
direct LIBC memcpy() to/from guest provided memory pointer. Now it is
disabled by default and byte by byte copying routine is used instead
(guest programs should no longer be able to kill the whole ARAnyM).
It might affect the NatFeats performance negatively so if required
set the newly introduced NATFEAT_LIBC_MEMCPY define to 1.
In addition the direct LIBC memcpy() is now guarded by proper pointer check
so even if you enable it for speed reasons you should still be relatively
safe. Thanks to Thorsten Glaser for providing simple linux user program
that was able to kill ARAnyM by issuing NF_NAME NatFeat.
– natfeat/nf_basicset.cpp, natfeat/ethernet.cpp: removed incorrect ValidAddr
checks.
– Xcode 4.5 project/build system: fixes for building with OS X 10.8, changed
packaging DMG to include README_ethernet.rtf instead of TunTap description,
adjusted detection of aclocal and makedepend to support usage of MacPorts
– Disabled loading of WMIcon on MacAranym as the correct icon is already bundled
with the application.
– README, NEWS: updated for a new release
– aranym.spec, version.h, export: increased version to 0.9.14
– input.cpp: use host middle mouse button for keyboard/mouse ungrab. Works only
if Eiffel mouse middle button/wheel mode is not enabled.
– Added new option –enable-bpf-ethernet for Mac OS X. This allows using bridged
ethernet without installing TunTap kernel extensions. See README_ethernet.rtf.
– ethernet_macosx.cpp: Berkley Packet Filter (BPF) based ethernet driver
for Mac OS X. This driver supports only « bridge » mode, i.e. Aranym
is part of your LAN, with its own IP address.
– bpf_helper.c,fd_trans.c: a small utility used to do privileged operations
like opening a BPF device. When run for the first time it tries to
fix the permissions (chown root, chmod ug+s).
The file descriptor to the device is then passed using Unix sockets.
– Added Xcode 4 scheme files: added shared schemes for building the targets
– Source cleanup/remove warnings for compilation with latest LLVM compiler of
Xcode 4.5
– Building on Mac OS 10.7: Do not set « -isysroot » during compilation. Targetting
Mac OS 10.5 is still possible without explicitely specifying the SDK to use
for compilation. This was only necessary during Universal Binary builds where
explicitely the MacOSX10.4u.sdk had to be used to build multi architecture
builds.
– hostscreen.cpp: « enforce VIDEL refresh » was missing => no screen updates
during boot up when no nfVDI was active.
– gui-osx/SDLMain.m: Fix « deprecated » warning for « poseAsClass »
– Xcode project: enable X86_64 compilation beside i386 architecture and build
fat binaries. 64 bit support in SDL is only available as of Mac OS 10.6.
Therefore on 10.5 only the 32 bit version will run.
– hostscreen.cpp: fix missing check for « SingleBlitRefresh » configuration in
refreshScreen().
– nfvdi_soft.cpp: Performance improvements by skipping memory translation
if MMU emulation is disabled.
– dirty_rect.cpp: maintain a surrounding rectangle containing the whole
dirtied area.
– hostscreen.cpp: Two possible modes for updating the atari screen surface
and the host screen surface: « chunky » (as in previous versions, uses
multiple, small rectangular updates) and « single » (which uses one single
rectangular update over the whole « dirty » surface)
– parameters.cpp/dlgVideo.cpp: new boolean « SingleBlitRefresh »
and « SingleBlitComposing » for the video configuration segment.
If set to « Yes » the screen to be composed/screen to be refreshed will be sent
in a single BitBlit to the screen/graphics card. If set to « No », only the
dirty screen areas are sent by using multiple BitBlits.
Default is « No ».
=> Checkout what combination gives you the best performance.
– hostscreen: Merge consecutive dirty blocks to reduce number of update to
screen operations.
– MacAranym.xcodeproj: Support compilation with SDL 1.2.15.
The standard Mac OS X deployment target is now 10.6, Intel only.
It’s still possible to compile binaries with PowerPC and OS 10.5
but no more Universal Binaries are going to be built.
Build configuration « Release G5 » has been removed.
– MacAranym.xcodeproj: Added new target « MacAranym MMU MPFR » with MPFR FPU
engine enabled. This target needs libgmp and libmpfr from MacPorts.
Please checkout the README_Xcode.rtf for more details on how to build.
– MacAranym.xcodeproj: Renamed « MacAranym JIT IEEE » to « MacAranym JIT » as JIT
already implies IEEE FPU.
Further this target has been modified to include always « –enable-jit-fpu ».
– MacAranym.xcodeproj: Clean-up of project global and target specific configure
flags (CONFIGURE_OPTIONS_BASE and CONFIGURE_OPTIONS_TARGET).
Automatic detection when COMPILE_DEFS do not match what is generated in the
Makefile during configure. It is now easier to change configure options on a
target and really getting the right stuff compiled.
– sigsegv_darwin_x86.cpp: Fix compilation of JIT if Mac OS X Deployment target >= 10.5
– fpu/mathlib.h: fix compilation problem with in fp_do_expm1 inline assembly
and LLVM GCC compiler.
– dirty_rects.cpp/h: implemented setDirtyLine which calculates the surrounding
rectangle and adds it to the dirty rectangle list.
– nfvdi_soft.cpp: use setDirtyLine instead of setDirtyRect whenever a line is
drawn. This fixes redraw glitches whenever a line is not drawn from top left
to bottom right.
– configure.ac: don’t stop if libusb not found (apparently Debian on kfreebsd
has the libusb as a fake package or what so the build was failing there)
– fpu_mpfr.cpp: Fix range check when converting to long word
– Fix MacAranym JIT: set/enforce deployment target to OS 10.4
– fpu_mpfr.cpp: Fix missing fpu exception update

