# zk4 board-device mutants: NAME<TAB>file<TAB>sed. Each must FAIL run_zk4_board.sh <cold log> exact.
#   B1 PICIN: status_r's side effect seen by read() (operand order, midwayic.cpp:1093 + :418-459)
#   B2 PIC latch data-ready held for one status read fewer (0x480 -> 0x380 on write, :471)
#   B3 serial encoding constant misread (0x1bcd -> 0x1bce, :104)
#   B4 CMOS write does not re-arm the protection (midzeus.cpp:282)
#   B5 CMOS writes ignore disk_asic_jr[2] (:278)
#   B6 disk_asic_jr[6] reset id 0x90 instead of 0xA0 (:242)
#   B7 SOUNDSTAT output-full bit not inverted (midwayic.cpp:1060 ^ 0x40)
#   B8 unmapped reads return 0 instead of high (unmap_value_high, midzeus.cpp:828)
# Equivalent on MK4 evidence (MAME-unreachable, internal validation notes s7; the RTL keeps MAME's rule regardless):
#   B4 B5 all 67,169 CMOS writes of the 3,600-frame cold boot follow an unprotect with disk_asic_jr[2] set (awk over the
#         log), so the protection never blocks a write; B6 MK4 never reads 8D0006 (reads only 8D0002 / 8D0003).
#EQUIV B4 B5 B6
B1	zk4_pic2.sv	s/    if (latch\[11:8\] != 4'd0) d = latch\[7:0\];/    if (latch[11:8] > 4'd1) d = latch[7:0];/
B2	zk4_pic2.sv	s/nl = {4'h4, 4'h8, pic_wdata\[3:0\]};/nl = {4'h3, 4'h8, pic_wdata[3:0]};/
B3	zk4_pic2.sv	s/32'h1bcd/32'h1bce/
B4	zk4_board_io.sv	s/        if (is_cmos) prot <= 1'b1;/        if (1'b0) prot <= 1'b1;/
B5	zk4_board_io.sv	s/is_cmos \&\& jr\[2\] != 32'd0 \&\& !prot/is_cmos \&\& !prot/
B6	zk4_board_io.sv	s/jr\[6\] <= 32'hA0;/jr[6] <= 32'h90;/
B7	zk4_ioasic.sv	s/((dcs_control >> 4) ^ 16'h0040)/(dcs_control >> 4)/
B8	zk4_board_io.sv	s/is_io ? io_q : 32'hFFFFFFFF;/is_io ? io_q : 32'h00000000;/
