Skip to content

compilation

Thorsten Otto edited this page Feb 6, 2018 · 1 revision

ARAnyM compile-time configuration

Compilation is the process of creating a program executable from a bunch of source code files using a compiler and a linker. For ARAnyM, we rely on GNU autotools suite to generate some scripts that will drive the whole compilation process on Unix-like systems. The configure script can receive many command-line parameters to generate a customized ARAnyM binary, suited for your needs or your system. Here is the detail of these ARAnyM specific options.

CPU emulation

Just in time compiler

Instead of interpreting each m68k instruction one at a time, JIT allows a global conversion of the m68k program to the host processor instruction set, so the m68k program are running fast, nearly the speed of a host program. At this time, this translation is only available for x86 CPUs.

  • --enable-jit-compiler: Enable the JIT compiler
  • --enable-jit-fpu: Enable JIT for FPU instructions
  • --enable-jit-debug: Enable some native code disassembler

PMMU emulation

PMMU emulation is required to run an Atari OS that protect some parts of memory against unauthorized access (in a multitasking environment), to implement virtual memory (and usage of a swap file on disk to supply lack of RAM). At that time, enable it only if you want to use Linux/m68k, or MiNT with memory protection enabled. Note that using PMMU is not possible with JIT, so you'll have a super slow Atari system.

  • --enable-fullmmu: Enable PMMU emulation
  • --enable-fullatc: Enable ATC (Address translation cache) in PMMU emulation

Debugger

FPU emulation

FPU emulation in ARAnyM can be done by several implementations, and you must choose one.

  • --enable-fpe=value: Select an FPU emulation

value can be one of:

  • auto: configure script will try ieee then uae implementation
  • ieee: Use IEEE-754 implementation
  • uae: Use UAE' FPU implementation
  • x86: Use x86 FPU implementation

Hardware emulation

Most Atari hardware emulated don't required any configuration. However, some not-often used devices may not need to be emulated.

ATAPI CD-ROM emulation

Inside the Falcon IDE emulation, you can add support for the ATAPI CD-ROM emulation, to access your host CD-ROM drives. As IDE emulation is mostly useful for disk images, and you can only have two of them, you may not need to have the ATAPI CD-ROM emulation, and prefer to use the Natfeat CD-ROM driver.

  • --enable-ata-cdrom: Enable ATAPI CD-ROM emulation

DSP 56k emulation

TOS requires a minimal DSP 56k emulation to boot, which is present if you disable the far-from-complete DSP 56k emulation. At this time, only a big part of the core CPU of the DSP is emulated. It means you can debug some DSP program with it, provided you don't use host commands, interruptions, and many other features. Also, the emulation does not provide the interesting audio-related part.

  • --enable-dsp: Enable DSP 56k emulation
  • --enable-dsp-disasm: Enable a complete disassembler for DSP instructions executed, mostly useful for DSP coders.

Parallel port emulation

Parallel port emulation is often use for printers. Inside ARAnyM, you have the default option to send the bytes to a file. Under Linux systems, you can either use the parport driver, or a direct hardware parallel port driver on x86 systems. Both can be compiled in.

  • --enable-parport: Enable parport parallel port driver (Linux only)
  • --enable-parallelx86: Enable x86 hardware parallel port driver (Linux/x86 only)

Linux/m68k loader

To run Linux/m68k in ARAnyM, you can either use the standard ataboot program under TOS to start the Linux/m68k kernel, or you can boot ARAnyM straight into Linux, with its built-in Linux loader. Linux/m68k requires PMMU emulation in CPU. You may also add support in ARAnyM for zlib library, so you can load gzipped kernels and ramdisks.

  • --enable-lilo: Enable Linux/m68k loader

Native features

Native features (or 'Natfeat' in short) are treated from the Atari side as special hardware you can talk to. Using them is done inside specific device drivers for the Atari OS (BOS or DOS for MetaDOS, XDD or XFS for MiNT, or even loadable libraries), so that Atari applications don't have to be specifically coded for them, to use the power of host system.

CD-ROM driver###

The NF CD-ROM driver is a driver that allows Atari applications to access host' CD-ROM drives, without requiring SCSI or IDE, or whatever hardware emulation needed to access it. Inside ARAnyM, you'll find two drivers for this native feature: a SDL one, that works on every system, but is limited to audio CD usage, and a Linux one, that can also be used to access data CD-ROM.

  • --enable-nfcdrom: Enable NF CD-ROM driver

Ethernet driver###

Atari applications can have access to the host network using an Ethernet card emulation using Natfeat.

  • --enable-ethernet: Enable Ethernet card emulation

FVDI driver

The NF VDI driver for FVDI is always compiled in. There are two renderers: the default software renderer, and an hardware accelerated OpenGL renderer, if your system support it, and you have enabled OpenGL support.

JPEG decoder

On Falcon, there is a famous JPEG decoder that uses the DSP 56k chip, and which is much faster the the 68030 of the same machine. This driver uses the host CPU to decode JPEG images, and so is much faster than any DSP 56k emulation could be for the standard JPEG DSP 56k decoder.

  • --enable-nfjpeg: Enable NF JPEG decoder

Host filesystem driver

To be able to transfer files between the Atari system and the host system, it was required to have a filesystem driver where you could mount host filesystem directories as Atari drives.

  • --enable-hostfs: Enable NF Host filesystem driver

OSMesa renderer

Mesa is an open source OpenGL library. It provides some functions to create and render images in memory using host CPU. This API exists on Atari side, and can be used by Atari applications through the use of a special loadable library. This driver allows Atari applications to use the host CPU to render their images, instead of using the standard m68k loadable library.

  • --enable-nfosmesa: Enable NF OSMesa driver

PCI driver

The goal of this driver is to give access to the host PCI bus through the standard PCIBIOS interface on the Atari side. Inside ARAnyM, the driver only allows for enumeration of PCI devices, and is only available for Linux systems.

  • --enable-nfpci: Enable NF PCI driver

Miscellaneous options

OpenGL

If your system support hardware accelerated OpenGL, then you can enable it in ARAnyM. OpenGL rendering can be used either for the emulated Videl video chip, or for the NF VDI driver.

  • --enable-opengl: Enable OpenGL usage.
Clone this wiki locally