Seems to be mostly fixed now: looks like I am responsible for telling the monitor when to ask for stuff on the falling edge of the input clock. There's a hangup somewhere though...
Changed the data bus channel to read entire data buses. IT ALMOST WORKS!
Cleanup on perfect6502.go. Now the only issue left is that I sometimes get UNIMPL: VERIFY, but I think I know why (multithreading fiasco)... also do I need to move monitor to run on the rising edge of clk0?
Replaced direct calls to readA(), etc. in the monitor loop with a channel send now that readA(), etc. are no longer thread safe.
Looks like I'll have to have the monitor running on the same clock and in sync in order for this to work properly (because I need to have the kernal called on the rising edge, otherwise strange things happen (like VERIFY commands being called when in reality none was issued). IT WORKS!
Cleaned things up.