It looks as if I spoke too soon.
I’m still having reading problems. The data used to be forced into an MFM mold, but all that’s done in some cases, is to further corrupt the corrupt data.
I rewrote my ISR to simplify it.
SETB rb.1 ‘debug pin(inside interrupt)
‘these next two instructions retrieve the edge-pending register and clear it in the event an edge triggered it
mov myres, w
‘W NOW CONTAINS A %00000001 IF FIRED BY EDGE, 0 IF RTCC
‘next 5 lines store the bit in the fram
CLRB SCK ‘make sure clock is low to start with
MOVB SI, myres.0 ‘send bit to fram
SETB SCK ‘raise clock notifying chip to read the data
‘COUNT THE Bit stored
IJNZ lobyte, goback
IJNZ hibyte, goback
CLRB rb.1 ‘debug pin
MOV W, #-101 ‘wait 101 cycles(101/50 = 2.02 us) to fire next timed interrupt
Once again, I’m seeing duplicate 1’s. Either there really are two edges close together, or my SX is detecting the same edge twice.