Files
SDD d7725faa1e docs: enumerate the three remaining failing checks; record the transmit-start citation
Enumeration (measurement only): of the 18 flag-set sites in L3FA71BC0 and 4 in L3FA753D0,
exactly three fire -- L3FA71BC0 c6 (cmp 3FA73970 btst5 on struct[index].0x60; actual
0x0001/0x0009, bit5 clear) and L3FA753D0 c1/c0 (cmp 3FA760E0 btst1 / 3FA76050 btst4 on
the index4/index5 SRA snapshots; actual 0x05/0x07, FFULL and OVR clear).  All other
checks pass; cE is a summary flag, not a check.

Task 2 citation (for independent reading): SCN2681 p.7 "Data is transferred from the
holding register to transmit shift register when it is idle..." and p.22 "TxRDY sets at
the end of the 'start bit' time.  It is during the start bit that the data in the transmit
holding register is transferred...".  Neither states a bit-count latency; MAME measurably
inserts ~1 bit (RX sync = THRA write + 2605 cycles, bit = 2604).  Candidate deviation,
not written.

Full picture (established / ruled out / remaining discrepancy / open deviations) recorded
in DUART_REPORT.md.  Acceptance still fails; regression holds.
2026-10-16 12:21:16 +03:00

24 lines
1.2 KiB
Lua

-- hp_flags.lua -- which check in each sub-test fails: break on every flag-set site.
local machine = manager.machine
local cpu = machine.devices[':maincpu']
local dbg = machine.debugger
if not dbg then print("ERROR: no debugger"); machine:exit(); return end
local function bp(addr, msg)
dbg:command('bpset ' .. addr .. ',,{ printf "FLAG ' .. msg .. '\\n" ; g }')
end
-- L3FA71BC0 flag-set sites (dis34 addresses)
bp("3fa73490","BC0/c0"); bp("3fa73520","BC0/c1"); bp("3fa735a0","BC0/c2"); bp("3fa73630","BC0/c3")
bp("3fa73830","BC0/c4"); bp("3fa738f0","BC0/c5"); bp("3fa739b0","BC0/c6"); bp("3fa73a70","BC0/c7")
bp("3fa73cb0","BC0/c8a"); bp("3fa73ee0","BC0/c9a"); bp("3fa74110","BC0/c9b"); bp("3fa743b0","BC0/c8b")
bp("3fa745c0","BC0/c9c"); bp("3fa74850","BC0/cA"); bp("3fa74a40","BC0/cB"); bp("3fa74f70","BC0/cC")
bp("3fa75000","BC0/cD"); bp("3fa75060","BC0/cE")
-- L3FA753D0 flag-set sites
bp("3fa76090","RX/c0"); bp("3fa76120","RX/c1"); bp("3fa76220","RX/c3"); bp("3fa763d0","RX/c2")
local n = 0
emu.register_frame_done(function()
n = n + 1
if n >= tonumber(os.getenv("HP_FRAMES") or "700") then print("done "..n); machine:exit() end
end, "vt1200-hp-flags")
dbg.visible_cpu = cpu
dbg.execution_state = 'run'