Clock Signal Emulator Updated

Dos 3.3 Booted on the Clock Signal Emulator

The Clock Signal Emulator for MacOS has been updated. This emulator simulates a variety of platforms including the Apple II series computers.

Clock Signal currently emulates the following platforms:

  • Acorn Electron;
  • Amstrad CPC;
  • Apple II/II+ and IIe;
  • Atari 2600;
  • ColecoVision;
  • Commodore Vic-20 (and Commodore 1540/1);
  • Macintosh 512ke and Plus;
  • MSX 1;
  • Oric 1/Atmos;
  • Sega Master System; and
  • Sinclair ZX80/81.

In addition, emulation of the Atari ST is experimental.

Clock Signal Author, Tom Harte writes of the new release saying “This release rethinks the means by which emulation is scheduled:

  • machines that are running close to an integer multiple of your display’s native output rate are now run very slightly too quickly or very slightly too slowly to bring them into sync, thereby eliminating tearing artefacts;
    • this is evaluated dynamically, so is fully compatible with machines such as the Atari 2600, ZX80/81 and Amstrad CPC which have variable frame timings;
  • machine update periods are now more granular, lowering input latency and improving parallelisation;
  • a further frame’s length of output latency has been eliminated on macOS, where vsync frame output delays have been eliminated; and
  • on the Mac, where joystick input is polled, polling now occurs at a fixed 200 checks/second, independent of your display.

Unfortunately it has still not proven possible to bring the SDL build up to parity with macOS builds in latency terms — SDL’s built-in timer is low precision†, and it offers no means to observe vertical sync events without double buffering.

Under macOS, SDL gets vertical sync events wrong — e.g. it offers them at a rate of 59.97Hz on my monitor, despite the fact that I’m running it at 30Hz non-interlaced — but your mileage may vary elsewhere. I test the Linux build under virtualisation so was not able to evaluate this factor there.

Otherwise, it:

  • adds initial support for the Atari ST’s .STX file format;
  • in support of which, system-wide improvements for ‘fuzzy’ disk bits are also of benefit to CPC .DSK support;
  • adds multi-sync output support for the Oric, so 60Hz mode is now useable;
  • corrects a handful of potential thread safety errors in SDL/kiosk mode;
  • SDL/kiosk users can now specify a machine speed multiplier, e.g. --speed=0.75 to run at 75% of original speed, or --speed=2.5 to run at 250% speed;
  • on macOS, resolves an issue that would lead to window contents being mis-scaled when dragging the window between Retina and non-Retina displays (in either direction);
  • also on macOS, resolves an issue where sound output could fail to recover from an ephemeral audio drop-out, leading to a permanent loss of audio;
  • attempts to resolve the problem of drive activity lights sometimes staying permanently on, that arrived in the previous release (and, indirectly, with disk drives having something sort-of momentum-esque, ish);
  • slightly extends Byte Drive 500 emulation to support four drives in principle; and
  • corrects a potential undefined-behaviour causing random memory write shortly after Oric startup.

† for the record, I found the native macOS timer to be over 1,000,000 times as precise as SDL’s — its jitter at its specified resolution of nanoseconds was better than SDL’s at its specified resolution of milliseconds.”

You can download the Clock Signal Emulator for MacOS at:
https://github.com/TomHarte/CLK/releases

Please follow and like us:

About the Author