c64-livecoding/wip-hugo/routines/memory/memset.s

39 lines
787 B
ArmAsm
Executable file

;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
;;##### HANDLES BIG MEMORY MANAGMENTS ############
;;Sets big barts of memory to a certain byte.
.proc memset
Address_start = $FBFC
Address_end = $FDFE
;;Writes data in A
;;Adress start: $FC, $FB
;;Adress end: $FE, $FD
;;Example [ $FC =$44, $FB =$00, $FE =$45, $FD =$01, A =0]
;;writes zeros in memory from $4400 to $4501.
;;put what to recursive write in Y.
LDX #$0
TAY
loop:
;;write to byte
TYA
STA ($FB ,X)
Add_16 >Address_start, <Address_start, #$01, #$00
LDA >Address_start
CMP >Address_end
BEQ test
jmp loop
test:
LDA <Address_start
CMP <Address_end
BEQ end
jmp loop
end:
;;Dont forget to rewrite last byte
TYA
STA ($FB, X)
RTS
.endproc