1234567891011121314151617181920212223242526272829303132333435 |
- .define Xor
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! This subroutine performs the exclusive or on two groups of bytes.
- ! The groups consists of atmost 254 bytes.
- ! The result is on top of the stack.
- Xor:
- lda SP+1
- sta ADDR+1 ! address of first group (lowbyte)
- lda SP+2
- sta ADDR ! address of first group (highbyte)
- clc
- tya
- adc SP+2
- sta SP+2 ! new stackpointer (lowbyte)
- sta ADDR+2 ! address of second group (lowbyte)
- lda #0
- adc SP+1
- sta SP+1 ! new stackpointer (highbyte)
- sta ADDR+3 ! address of second group (highbyte)
- 1: dey
- lda (ADDR),y ! get byte first group
- eor (ADDR+2),y ! exclusive or with byte second group
- sta (ADDR+2),y ! restore result
- tya
- bne 1b
- rts
|