1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-27 17:38:06 +11:00
collapseos/parts/z80/mmap.asm
Virgil Dupras 055e0d7a31 Split parts in two: z80 and avr
Also, clarify the role of recipes.
2019-04-25 16:03:45 -04:00

68 lines
955 B
NASM

; mmap
;
; Block device that maps to memory.
;
; *** DEFINES ***
; MMAP_START: Memory address where the mmap begins
; *** VARIABLES ***
MMAP_PTR .equ MMAP_RAMSTART
MMAP_RAMEND .equ MMAP_PTR+2
; *** CODE ***
mmapInit:
xor a
ld (MMAP_PTR), a
ld (MMAP_PTR+1), a
ret
; Increase mem pointer by one
_mmapForward:
ld hl, (MMAP_PTR)
inc hl
ld (MMAP_PTR), hl
ret
; Returns absolute addr of memory pointer in HL.
_mmapAddr:
push de
ld hl, (MMAP_PTR)
ld de, MMAP_START
add hl, de
jr nc, .end
; we have carry? out of bounds, set to maximum
ld hl, 0xffff
.end:
pop de
ret
; if out of bounds, will continually return the last char
; TODO: add bounds check and return Z accordingly.
mmapGetC:
push hl
call _mmapAddr
ld a, (hl)
call _mmapForward
cp a ; ensure Z
pop hl
ret
mmapPutC:
push hl
call _mmapAddr
ld (hl), a
call _mmapForward
cp a ; ensure Z
pop hl
ret
mmapSeek:
ld (MMAP_PTR), hl
ret
mmapTell:
ld hl, (MMAP_PTR)
ret