Repository navigation
v3.0.1
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$01when its buffer is
nearly full and$09once 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.