|
- ; If you find youself needing to write to an EEPROM through a shell that isn't
- ; built for this, compile this dependency-less code (change memory offsets as
- ; needed) and run it in a USR-like fashion.
-
- ld bc, 0x1000 ; bytecount to write
- ld de, 0xd000 ; source data
- ld hl, 0x2000 ; dest EEPROM memory mapping
-
- loop:
- ld a, (de)
- ld (hl), a
- push de ; --> lvl 1
- push bc ; --> lvl 2
- ld bc, 0x2000 ; Should be plenty enough to go > 10ms
- ld e, a ; save expected data for verification
- wait:
- ; as long as writing operation is running, IO/6 will toggle at each
- ; read attempt and IO/7 will be the opposite of what was written. Simply
- ; wait until the read operation yields the same value as what we've
- ; written
- ld a, (hl)
- cp e
- jr z, waitend
- dec bc
- ld a, b
- or c
- jr nz, wait
- ; mismatch
- pop bc ; <-- lvl 2
- pop de ; <-- lvl 1
- ld a, 1 ; nonzero
- or a ; unset Z
- ret
- waitend:
- pop bc ; <-- lvl 2
- pop de ; <-- lvl 1
- inc hl
- inc de
- dec bc
- ld a, b
- or c
- jr nz, loop
- ret ; Z already set
|