;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-

;;############ HANDLES BIG MEMORY MANAGMENTS ############
;;Sets big parts 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