Skip to content

v3.0.1

Choose a tag to compare

@acwright acwright released this 17 Sep 00:57
· 58 commits to main since this release

Serial flow control, off by default. Serial input can now honour the ACIA's
RTS, as a terminal set to RTS/CTS flow control does. While the machine holds RTS
high, input waits instead of overrunning the BIOS's 256-byte input buffer, and
nothing is dropped. With it off, nothing changes from 3.0.0.


Turning it on

The setting is called flowControl everywhere.

Where How Default
Command line, headless or windowed 6502 run --flow-control off
Desktop and web app Settings → SERIAL → RTS/CTS flow control (saved) off
Debug protocol session.info, session.config, serial.config → flowControl; 6502 dbg config --flow-control on|off off
  • It applies to all host input into the ACIA: stdin, --input-after,
    serial.write, and a host serial port in the app.
  • RTS is read the way the R6551 drives it: command register bits 3-2 = 00
    with the receiver enabled (bit 0). The BIOS writes $01 when its buffer is
    nearly full and $09 once it drains. Software that never enables the receiver
    is never held.
  • It is host configuration, not machine state. Snapshots don't store it, and
    the snapshot format is unchanged.
  • Embeds take no parameter. They have no host serial port.

Why it is off by default

BIOS 1.6's BASIC and EhBASIC stall with it on. Their line input reads the
buffer without lowering RTS again once the IRQ handler has raised it. With flow
control on, a paste of more than a few lines stops being accepted until a reset.
With it off, the paste overruns the buffer and loses lines, as it always did.

Firmware that lowers RTS as its buffer drains gets every line of a paste with flow
control on. The end-to-end tests show this with 1.6 patched so BasReadKey reads
through Chrin.


Tests: 2,133 across 60 files, all passing. Flow control is tested on and off
for the ACIA, the machine and the serial console. With it off, a 22-line paste
into the bundled 1.6 gives a transcript byte for byte the same as v3.0.0's. The
goldens and traces haven't moved.

ROM: BIOS.bin is unchanged from 3.0.0 (6502-BIOS v1.6, SHA-256
fc0002d0…). The CPU is untouched.

Downloads

  • macOS (Apple Silicon): 6502-emulator-3.0.1-mac-arm64.dmg
  • Windows (x64): 6502-emulator-3.0.1-win-x64.exe
  • Linux (AppImage): 6502-emulator-3.0.1-linux-x86_64.AppImage
  • Linux (deb): 6502-emulator_3.0.1_amd64.deb

Live at https://acwright.github.io/6502-EMULATOR/. The /v2/ build (2.7.0) is
unchanged.