; mmap ; ; Block device that maps to memory. ; ; *** DEFINES *** ; MMAP_START: Memory address where the mmap begins ; Memory address where the mmap stops, exclusively (we aren't allowed to access ; that address). .equ MMAP_LEN 0xffff-MMAP_START ; Returns absolute addr of memory pointer in HL if HL is within bounds. ; Sets Z on success, unset when out of bounds. _mmapAddr: push de ld de, MMAP_LEN call cpHLDE jr nc, .outOfBounds ; HL >= DE ld de, MMAP_START add hl, de cp a ; ensure Z pop de ret .outOfBounds: pop de jp unsetZ mmapGetB: push hl call _mmapAddr jr nz, .end ld a, (hl) ; Z already set .end: pop hl ret mmapPutB: push hl call _mmapAddr jr nz, .end ld (hl), a ; Z already set .end: pop hl ret