/tools/cc65-2.13.2/libsrc/runtime/laddeq.s
Assembly | 53 lines | 31 code | 14 blank | 8 comment | 0 complexity | 1d7eeac66efde1968ad1ca5bc087b521 MD5 | raw file
- ;
- ; Ullrich von Bassewitz, 07.04.2000
- ;
- ; CC65 runtime: += operator
- ;
- ; On entry, the low byte of the address of the variable to increment is
- ; in ptr1, the high byte is in Y, and the increment is in eax.
- ;
- .export laddeq1, laddeqa, laddeq
- .importzp sreg, ptr1, tmp1
- laddeq1:
- lda #$01
- laddeqa:
- ldx #$00
- stx sreg
- stx sreg+1
- laddeq: sty ptr1+1 ; Store high byte of address
- ldy #$00 ; Address low byte
- clc
- adc (ptr1),y
- sta (ptr1),y
- pha ; Save byte 0 of result for later
- iny ; Address byte 1
- txa
- adc (ptr1),y ; Load byte 1
- sta (ptr1),y
- tax
- iny ; Address byte 2
- lda sreg
- adc (ptr1),y
- sta (ptr1),y
- sta sreg
- iny ; Address byte 3
- lda sreg+1
- adc (ptr1),y
- sta (ptr1),y
- sta sreg+1
- pla ; Retrieve byte 0 of result
- rts ; Done