Skip to content

Releases

tme-rp 1.2.5

Choose a tag to compare

@rpajarola rpajarola released this 31 Oct 05:07

MCP, for AI agents

tmesh --mcp SOCKET is an MCP server, so that an AI agent such as Claude Code can use a running tmesh's control socket as tools, without a shell command per step:

$ tmesh --control unix:/tmp/tme.sock -c tme.cfg &
$ claude mcp add tme -- tmesh --mcp unix:/tmp/tme.sock
  • The tools are the control socket's commands, with the same parameters. status also has the CPUs (with their models) and consoles.
  • pause, step and run_until wait for the machine to stop and say how it stopped; so does continue, with wait. The wait tool waits for a running machine to stop.
  • screendump returns the screen as an image, so the agent sees it directly.
  • console_write and keyboard take enter to press Return.
  • Each tool call is a connection of its own: tmesh can be started or restarted before or after the agent, and tmesh --ctl keeps working.

See "MCP Server" in the manual's Control Socket section.

tme-rp 1.2.4

Choose a tag to compare

@rpajarola rpajarola released this 31 Oct 01:46

A VNC display

A machine's screen can now be shown to VNC clients such as TigerVNC or macOS Screen Sharing, also from another computer, instead of in an SDL window. Replace the display line in the machine's configuration:

display0: tme/host/rfb/display

tmesh says where it listens (tmesh: VNC server: 127.0.0.1 port 5900). By default it takes the first free port from 5900 on, on this computer only. Optional arguments:

  • port 5901 picks the port.
  • address 0.0.0.0 listens on all IPv4 addresses; address "::" (with the quotes) on IPv4 and IPv6.
  • socket PATH listens on a Unix socket instead.

The keyboard and the mouse work as in the SDL window. Up to four clients can connect at once. Updates are sent as Raw, Zlib or ZRLE, whichever the client prefers.

  • Password. Set TME_VNC_PASSWORD to require a password (VNC Authentication, at most 8 characters); macOS Screen Sharing needs one. Without a password, listening on anything but the loopback address gives a warning. VNC Authentication isn't encryption, so over a network an SSH tunnel is safer.
  • Trace. TME_VNC_DEBUG=1 logs the protocol on standard error.
  • screendump through the control socket works with the VNC display too.

The VNC display no longer needs libvncserver, so it's included in every build and package.

tme-rp 1.2.3

Choose a tag to compare

@rpajarola rpajarola released this 29 Oct 15:37

The screen and keyboard through the control socket

A program can now use a machine's graphics console, not just its serial console:

  • screendump saves what a screen shows as a PNG file, at the size of the emulated framebuffer, also while the machine runs (like QEMU's screendump). It returns the file's absolute path, the framebuffer's name (such as bwtwo0) and the image's size.
  • keyboard types on the display's keyboard, as if from the host's keyboard. It takes text (Shift, Control, Return, Tab and so on are handled), or keys named as X11 keysyms. Keys joined by + are held together, as in "L1+a" for a Sun's Stop-A. The keys are typed as fast as the emulated keyboard takes them, and keep going after the client disconnects.
  • Without windows. With SDL_VIDEODRIVER=dummy, the SDL display runs without opening any windows, e.g. for an agent on a server. The framebuffer is kept at full size, so screenshots show every pixel.
$ SDL_VIDEODRIVER=dummy tmesh --control unix:/tmp/tme.sock -c tme.cfg &
$ tmesh --ctl unix:/tmp/tme.sock keyboard '{"keys":["L1+a"]}'
$ tmesh --ctl unix:/tmp/tme.sock screendump /tmp/screen.png

Fixes

  • Shift could stay pressed. The keyboard held a modifier's release back until the next key. After a shifted character typed quickly, the next key could come out shifted, and the last Shift release wasn't sent at all.

Packages: a .deb for Debian and Ubuntu (amd64, arm64), a macOS installer package (arm64), and the Homebrew formula rpajarola/tap/tme-rp. See packaging for installing.

Full Changelog: v1.2.2...v1.2.3

tme-rp 1.2.2

Choose a tag to compare

@rpajarola rpajarola released this 29 Oct 04:10

A control socket

Programs, such as AI agents, can now drive tmesh through a socket, with JSON requests and replies, one per line. It is the same protocol as gxemul's.

  • Start it with tmesh --control unix:PATH or tmesh --control tcp:PORT (on 127.0.0.1). One client at a time.
  • Run and inspect. Run, step and stop the CPUs. Read and write registers and memory, also while running. List the devices and where they are on the buses.
  • Breakpoints and watches. Watches can be on exceptions and traps (by name, e.g. bus_error or trap_*, or by number) or on device accesses (e.g. writes to zs0). They either stop the machine at the handler's first instruction or add to a trace.
  • Events. The socket sends events when the machine stops or exits, and for console output and log messages if subscribed.
  • tmesh --ctl SOCKET COMMAND [ARGUMENT] sends one request and prints the reply, for use from scripts and shells.

Works with the m68k and SPARC CPUs. See "Control Socket" in the manual (tme/tme.texi).

Fixes

  • Crash in recode on x86-64. Read and write assists were called with the stack misaligned, which crashed when the compiler used aligned SSE stores, e.g. in the SPARCstation 2's serial ports on Linux.

Packages: a .deb for Debian and Ubuntu (amd64, arm64), a macOS installer package (arm64), and the Homebrew formula rpajarola/tap/tme-rp. See packaging for installing.

Full Changelog: v1.2.1...v1.2.2

tme-rp 1.2.1

Choose a tag to compare

@rpajarola rpajarola released this 26 Oct 05:46

tme's icon: a robot emu whose body is a SPARCstation IPC

An icon

tme has an icon: a robot emu whose body is a SPARCstation IPC-like lunchbox.

  • The machine window and the display's windows show it, and on macOS so does the Dock.
  • The .deb installs it in the icon theme, with a desktop entry (tme.desktop) that starts tmesh and that task switchers match to its windows.
  • packaging/icon/make-icons.sh makes the PNGs and the window icon from packaging/icon/tme-icon.svg.

Packages: a .deb for Debian and Ubuntu (amd64, arm64), a macOS installer package (arm64), and the Homebrew formula rpajarola/tap/tme-rp. See packaging for installing.

tme-rp 1.2.0

Choose a tag to compare

@rpajarola rpajarola released this 25 Oct 18:42

Highlights

A window for your machines

Run tmesh without a script and it opens a window that lists your machines, makes new ones and edits them. A machine is its tmesh script (tme.cfg), kept in a folder of its own with its files.

  • New... starts from a script that's known to work, for a Sun-2/120, a Sun-3/160 or a SPARCstation 2. You supply the PROM image, plus the framebuffer's FCode ROM for the SPARCstation 2. Choose them under Files, or add a ROM folder under Settings and new machines pick them up automatically.
  • The editor has pages for the memory, the ROM and state files, the SCSI disks, CD-ROMs and tapes, the display and framebuffer, the Ethernet connection (none, UDP, BPF or tap), and the SPARC idle type. It changes only the lines it knows and keeps every other line and comment, so Open... works on scripts you wrote by hand too.
  • Saving a machine creates its missing disk images, copies its ROM images into its folder and writes its keyboard macros.
  • While a machine runs, Screen → Edit Configuration... opens its script in another window.
  • tmesh --edit [SCRIPT] opens the window on one machine, and tmesh --shell gives the old prompt.

The GTK display is gone

The SDL display has the same menus (scaling, screenshots and recordings, media and the machine's controls), so tme no longer builds a GTK display, and it no longer needs GTK at all. The macOS package and the Homebrew formula are much smaller as a result.

If a script uses display0: tme/host/gtk/display, change that line to display0: tme/host/sdl/display. When the machine window opens such a script, it tells you to choose another display. Passing gtk in --enable-hosts now stops configure with an error.

Emulation fixes

  • CD-ROM drives:
    • A drive with no disc now answers NOT READY, MEDIUM NOT PRESENT, instead of looking like no drive at all. The SS2 PROM's boot cdrom now waits for a disc.
    • Loading a disc reports UNIT ATTENTION, MEDIUM CHANGED, so the guest sees the new disc.
  • SCSI probing: INQUIRY for a missing LUN answers 0x7f, as a real target does, so the sun4c PROM's probe-scsi no longer lists every LUN.
  • SPARCstation 2 SCSI: the esp is now emulated as the ESP100A it is, so NetBSD no longer takes it for a later chip.
  • SPARC CPUs: unassigned opcodes now take an illegal_instruction trap instead of crashing tmesh.
  • Sun-3: the ncr5380 now clears its DMA input pointer for writes in every build, not only debug builds.

Install

  • Debian/Ubuntu: the .deb below, or the apt repository.
  • macOS: the .pkg below, or brew install rpajarola/tap/tme-rp.
  • From source: the tarball below.

What's Changed

Full Changelog: v1.1.0...v1.2.0

tme-rp 1.1.0

Choose a tag to compare

@rpajarola rpajarola released this 19 Oct 16:32

What's Changed

  • SDL phase 0: Look up keysym names without GDK by @rpajarola in #1
  • SDL phase 1: Bring the SDL display up to the GTK display's basics by @rpajarola in #2
  • SDL phase 3a: Add menus and a status line that display backends can share by @rpajarola in #3
  • SDL phase 3b: Draw a menu bar and status line in the SDL display by @rpajarola in #4
  • SDL phase 2: Move screenshots and recordings into shared display code by @rpajarola in #5
  • SDL phase 4: Build GTK and SDL when found, and add SDL machine configs by @rpajarola in #6
  • Build the GTK display's menus from the shared ones by @rpajarola in #7
  • Show the SDL display's quit and error dialogs in its window by @rpajarola in #8
  • Add a Devices menu with the machines' reset and switches by @rpajarola in #9
  • Build every push and pull request on Linux and macOS by @rpajarola in #10
  • Release 1.1.0 by @rpajarola in #11

New Contributors

Full Changelog: v1.0.0...v1.1.0

tme-rp 1.0.0

Choose a tag to compare

@rpajarola rpajarola released this 14 Oct 06:09

Full Changelog: v0.12rc7...v1.0.0

tme 0.12rc7

Choose a tag to compare

@rpajarola rpajarola released this 14 Oct 03:32

First release with packages: a .deb for Debian and Ubuntu (amd64, arm64), a macOS installer package (Apple silicon, runs without Homebrew), and the Homebrew formula rpajarola/tap/tme. See packaging for installing.