On a legacy-free board COM1 is decoded but has no live UART: its LSR reads 0x00, so the transmit-holding-empty bit never sets and writeByte spun its full 100k-iteration guard on every logged byte (~15ms/byte x ~3.7k bytes to 'initialised' ~= 57s). QEMU always has a working UART, so this only bit real hardware; the boot log survived via log.ramSink. - probe() loopback-tests the UART in init(); write() is a no-op when absent, so a dead port costs nothing per byte - guard cut 100k -> 5k (backstop for a live-but-stalled UART only) - serialPresent() + a boot line making the absent-UART case visible |
||
|---|---|---|
| .. | ||
| x86_64 | ||