1
0
mirror of https://github.com/stid/woz64.git synced 2024-06-01 01:41:34 +00:00
woz64/memory.asm

56 lines
1.2 KiB
NASM
Raw Normal View History

2019-11-16 22:09:22 +00:00
#importonce
#import "mem_map.asm"
* = * "Memory Routines"
2019-11-18 03:28:54 +00:00
.macro clone(from, to, dest) {
lda #<from
sta MemMap.MEMORY.from
lda #>from
sta MemMap.MEMORY.from+1
lda #<dest
sta MemMap.MEMORY.dest
lda #>dest
sta MemMap.MEMORY.dest+1
lda #<to-from
sta MemMap.MEMORY.size+1
lda #>to-from
sta MemMap.MEMORY.size
jsr Memory._clone
}
.filenamespace Memory
2019-11-16 22:09:22 +00:00
// move memory down
//
// from = source start address
// to = destination start address
// size = number of bytes to move
//
2019-11-18 03:28:54 +00:00
_clone: {
2019-11-21 06:18:23 +00:00
sei
2019-11-16 22:09:22 +00:00
ldy #0
2019-11-17 07:41:00 +00:00
ldx MemMap.MEMORY.size
2019-11-16 22:09:22 +00:00
beq md2
2019-11-17 07:41:00 +00:00
md1: lda (MemMap.MEMORY.from),y // move a page at a time
2019-11-18 03:28:54 +00:00
sta (MemMap.MEMORY.dest),y
2019-11-16 22:09:22 +00:00
iny
bne md1
2019-11-17 07:41:00 +00:00
inc MemMap.MEMORY.from+1
2019-11-18 03:28:54 +00:00
inc MemMap.MEMORY.dest+1
2019-11-16 22:09:22 +00:00
dex
bne md1
2019-11-17 07:41:00 +00:00
md2: ldx MemMap.MEMORY.size+1
2019-11-16 22:09:22 +00:00
beq md4
2019-11-17 07:41:00 +00:00
md3: lda (MemMap.MEMORY.from),y // move the remaining bytes
2019-11-18 03:28:54 +00:00
sta (MemMap.MEMORY.dest),y
2019-11-16 22:09:22 +00:00
iny
dex
bne md3
2019-11-21 06:18:23 +00:00
cli
2019-11-16 22:09:22 +00:00
md4: rts
2019-11-18 03:28:54 +00:00
}