Bridging vintage hardware to modern networks
Version 1.0.2 — pre-built, signed binaries. Every archive also carries the README, the licence and both CP/M terminals.
chmod +x, or tick Allow executing file as program in your file manager's properties, then run it.xattr -d com.apple.quarantine.ethernetgateway.exe; it creates its data folder beside itself on first launch.
Every file is published with a SHA-256 sum and a keyless
Sigstore signature
(.sha256 and a .sigstore.json bundle) so a download
can be verified with
cosign verify-blob (v2.5 or newer). Older versions, the checksums and the full release notes are on the
releases page;
the source is on GitHub
and builds with cargo build --release on rustc 1.92 or newer.
New here? The user manual (PDF) walks through the first launch, the terminal types and every setting.
Ethernet Gateway is a lightweight bridge that connects serial devices and legacy systems to modern TCP/IP networks.
It is a standalone, retro-themed server written in Rust. It offers telnet
and SSH access to a full-featured gateway with XMODEM, XMODEM-1K, YMODEM,
ZMODEM, Kermit and Punter file transfer, SSH and telnet proxying, a CP/M
emulator that runs real .COM software and boots real disk
images, an AI chat client, a text-mode web browser, weather reports, and
Hayes-compatible modem emulation on two physically independent
serial ports — each of which also flips to a telnet-serial
console bridge or an always-on Kermit server on demand.
Designed to work with hardware as old as the Commodore 64 and CP/M machines while remaining fully functional on modern ANSI terminals, Ethernet Gateway adapts its display automatically to the capabilities of each connected client — PETSCII at 40 columns, ANSI in colour, or plain ASCII.
ATDT TCP dial-out with a phone book, and peer-to-peer dialling between two devicesA> file manager over the transfer directory.dsk imagesLST: output as OpenDocument or text
The desktop console — every setting is also reachable over telnet and from a browser.
The manual, and the companion documents that go deeper than it does.
The whole gateway end to end: setup, terminal types, the menus, file transfer, the gateways, the modem, the config file and troubleshooting. Kept in the repository and rebuilt with every release.
The emulated Z80/8080 machine, the BDOS and BIOS services, mounting disk images, booting one, the virtual modem and the printer.
The measured geometry of every supported .dsk format, the Altair 88-DCDD controller, sector skew and the two sector checksums.
CRC-16 versus the older checksum, 128-byte and 1024-byte framing, block anatomy, error handling and the timeout tunables.
What YMODEM adds over XMODEM-1K: the block-0 header, batch transfers, the end-of-batch null block and exact size-based truncation.
The ZDLE escape layer, hex and binary headers, CRC-16 and CRC-32, batch send and receive, resume, and the rz auto-start trigger.
Using Kermit through the gateway: client and server modes, the serial Kermit port, and what to set on the vintage end.
The protocol itself: packet types, sliding windows, long and extended packets, block-check types and 8-bit quoting.
The protocol Commodore terminals speak natively: dual checksums, the two-phase block transfer and the CCGMS/Novaterm handshake.
Every Hayes command the modem emulator answers, the S-registers, the result codes and the dial-out forms.
The IAC option negotiation the gateway performs, which options it accepts, and how binary transfers survive it.
The inbound SSH server and the outbound SSH gateway: host keys, public-key authentication and known-hosts handling.
PETSCII, ASCII and control-code tables, and the ANSI escape sequences the gateway emits and filters.