collapseos/blk/400

16 lines
537 B
Plaintext

( With dst being assumed to be an AT28 EEPROM, perform !
operation while doing the right thing. Checks data integrity
and ABORT on mismatch. )
: AT28! ( n a -- )
2DUP C!
( as long as writing operation is running, IO/6 will toggle
at each read attempt. We know that write is finished when
we read the same value twice. )
BEGIN ( n1 a )
DUP C@ ( n1 a n2 )
OVER C@ ( n1 a n2 n3 )
= UNTIL
( We're finished writing. do we have a mismatch? )
C@ = NOT IF ABORT" mismatch" THEN
;