Skip to content

eighty-three 1.1

Latest

Choose a tag to compare

@alffcpu alffcpu released this 03 Aug 11:24

The MCP server has 66 tools instead of 59. The emulator itself is unchanged: if
you do not drive it from an agent, there is nothing here for you.

Measuring works while a program runs

Coverage, tracing and profiling only worked while single-stepping. A real program
runs frame by frame, and there they reported nothing. They work in both cases now.

Drawing the picture is no longer counted as executing code. On a ZX81 the CPU
walks through memory to put the display on screen, and those bytes never run as
instructions. The profiler separates the two, so what the program itself costs is
visible.

New tools

  • load_labels and resolve_symbol - load a pasmo symbol file and use names
    instead of addresses everywhere.
  • screen_digest - hash the screen to check whether the picture changed.
  • audio_capture and ay_writes - measure the sound, save it as a .wav, and
    list the AY register writes.
  • record_video - record the screen to an animated GIF.
  • release_keys - release every key at once.

coverage takes a range and points at the longest stretches that never ran.
profile reports calls and time per call. frame_timing reports how much time is
left for the program.

Fixes

  • An address that could not be read became address 0, so a typo returned ROM bytes
    as if they were right. Bad numbers are an error now.
  • Starting the server with a path without a trailing slash gave a machine with no
    ROM, and it still said it was ready. It refuses to start now.
  • Profiler counters overflowed after about a minute of emulated time.
  • A loaded label could be substituted into a hex number and break it.
  • A GIF of a blank screen came out white on white.
  • ay_writes could report an older capture as the current one.
  • Map files were read in the wrong number base, so half the labels were dropped.
  • A typo in an action argument, or an assemble call with nothing to assemble,
    reported success instead of refusing.