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

;; Sets memory in A to all addresses from B_start to B_end
;; Modifies A, X and B_start
.proc memset
        .include "mem.inc"
        LDY #$00
loop:
        STA (A_start), Y
        INY
        BEQ y_overflow
change_length:
        DEC length
        BNE loop

        DEC length +1
        BPL loop
        RTS
y_overflow:
        ;; Y is now 0
        INC A_start + 1
        jmp change_length
.endproc