revert memset.s

This commit is contained in:
hugova 2025-07-15 22:37:56 +02:00
parent b8df5cb84b
commit bf7021a3a9

View file

@ -18,8 +18,6 @@ big_set: ;sets $ff of memory
DEY DEY
.endrepeat .endrepeat
STA (A_start), Y ; dont forget Y =0 STA (A_start), Y ; dont forget Y =0
NOP
NOP
big_set_end: big_set_end:
;;set all hole $ff memory chunks! ;;set all hole $ff memory chunks!
INC A_start + 1 INC A_start + 1
@ -28,46 +26,15 @@ big_set_end:
JMP big_set JMP big_set
;;sets the rest of the memory
;; note that this can use code above (smc) or the same method. may implement later.
small_set: small_set:
STA data_to_write LDY length
LDA length small_set_loop:
STA length_copy STA (A_start), Y
DEY
;; calculate rts-position BNE small_set_loop
LDA #$00 STA (A_start), Y
STA length + 1
;; 4 bytes = STA DEY NOP = seting 1 byte of memory.
;; So we need to calculate: length*4
Mult_16 length, length + 1
Add_16 length, length + 1, length_copy, #$00
;; Now RTS_pointer = length*4 + big_set_label
CLC
LDA #<big_set
ADC length
STA RTS_pointer
LDA #>big_set
ADC length + 1
STA RTS_pointer + 1
;; read data we will change to RTS
LDY #$00
LDA (RTS_pointer), Y
STA instruction_backup
;; set RTS in big_set
LDA #$60
STA (RTS_pointer), Y
;; JSR to modified big_set
LDY length_copy
DEY ; because we want to count to Y=0 :)
LDA data_to_write
JSR big_set
;; revert changes
LDY #$00
LDA instruction_backup
STA (RTS_pointer), Y
RTS RTS
.endproc .endproc