Home


SourceForge.net Logo

Valid XHTML 1.0!

Valid CSS!


Project Status

CPU

The Z80 emulation uses an enhanced version of Ian Collier's Z80 core (from xz80), giving full instruction set coverage, including all undocumented instructions and flags.

Instruction timings are built entirely from memory and I/O accesses, giving accurate emulation of ASIC contention. RAM accesses are restricted to once every 4 cycles, or every 8 cycles during the main screen area (and additional mode 1 bands). Also supported are unrounded instruction timings, as required for ROM accesses to be correct. This level of accuracy does require more processing power, but is essential for the majority of visual effects in SAM demos to be correct.

FRAME, LINE and MIDI OUT interrupts are present, with the correct triggering points (start of right-hand border) and duration. MIDI IN interrupt are not yet generated.

Memory configuration allows for 256K or 512K main memory, and up to 4MB external memory (in 1MB units).

Graphics

SAM's four display modes are fully supported, with updates accurate to a single 8x1 pixel cell. This allows for any kind of video effect (mode mixing, on/off-screen border and palette effects, etc.) to be displayed correctly.

Also supported are a few display related quirks. The first is the cell artefact produced when switching between certain screen modes, as a result of the ASIC drawing in the new mode using display data read for the previous mode. The second is seen when re-enabling the display using the border port, which generates a partial pixel in the previous border colour. This also happens over the main screen area since the ASIC hasn't read any data to display.

Screen disabling is supported (for modes 3 and 4 only, as with the real SAM), which also eliminates ASIC contention during the off period.

Sound

The Philips SAA 1099 sound chip emulation has been complete for a while now, mainly thanks to Dave Hooper's excellent SAASound library. As well as regular music playback this also include sound sample playback, as well as various other quirky ways of driving the chip.

Parallel port 8-bit mono and stereo DACs (SAMDAC/EDDAC) are present, as also used for sample/MOD playack. The Spectrum-style beeper is also supported in the same way, as used by BASIC for BEEP/ZAP/POW/ZOOM commands (and of course Spectrum software). Sample recording is not currently supported, but may be added in the future.

MIDI OUT is available for driving real MIDI devices and software/hardware synths. No MIDI IN support is available yet, though basic support probably wouldn't require much work.

There are no plans to add support for the 16-bit Quazar Surround hardware, on the request of Quazar.

Input

By default, all keyboard input is mapped to the key strokes requires to produce the same letters or symbols on the SAM, so no special knowledge of SAM key positions is required. A Spectrum mapping is also available, or the mapping can be disabled to allow input of unusual key combinations. Multiple key-presses are only limited by the capabilities of the keyboard being used.

System joysticks can be mapped to either SAM joystick device, generating keys 6 to 0 and 1 to 5 as appropriate.

SAM Mouse support is available as a polled device. Support for the Keyboard Mouse may be added for completeness, but no titles are known to use it.

Disk

All 1772-02 floppy controller commands are implemented, giving control down to the format of each track (if the disk image format supports it). DSK and SAD images are also supported, and all can be used uncompressed, gzipped or zipped (read-only, at present). The SDF image format allows for unformatted tracks, mixed sector sizes, disk errors and modified ID field values - enough for all known SAM protected disks.

Access to real SAM disks is possible only if the platform-specific implementation allows it. Implementations currently exist for NT/W2K and Linux, but no other platforms at this time. Also, only regular format disks are supported, due to limitations of modern floppy drives.

Edwin Blink's ATOM hard-disk interface is supported, making a single virtual ATA hard disk available for BDOS. Future support will allow a second hard disk or an ATAPI CD-ROM to be present as a slave device.

Nev Young's SD-IDE interface is supported, as used by H-DOS. Preliminary support for Jarek Adamski's YAMOD.ATBUS interface is also available, but requires further testing.

The ATOM, SD-IDE and YAMOD.ATBUS interfaces all use Ramsoft's HDF format to store the hard disk contents. Win32 and Linux versions can also access SAM-formatted IDE hard disks and Compact Flash cards, for convenient sharing of files with a real SAM.

Peripherals

SAMBUS and DALLAS clocks are implemented, and can be enabled independently.

MIDI network support has yet to be added, but is likely to be implemented using TCP sockets, enabling daft things like Internet connected instances of SimCoupe.

Serial support has been started, but needs lots more work. It will allow the use of a modem by communications programs, and if/when a TCP/IP stack is ported, it should give us direct dial-up access!

After a few requests, TAP/TZX support will be added to an up-coming version.

Misc

Much of the debugger core has been completed already, giving powerful control over the emulated system, with minimal effect on running speed. The debugger UI, for editing/viewing breakpoints/memory/state is unfinished.