12345678910111213141516171819202122232425262728293031323334353637383940 |
- .define Sli4
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! This subroutine shift a signed or unsigned fourbyte integer
- ! n times left. N is in register X.
- Sli4:
- cpx #0
- beq 9f ! zero shift, return input
- lda SP+2 ! the shifting is done on the stack
- sta ADDR ! address of integer (lowbyte)
- lda SP+1
- sta ADDR+1 ! address of integer (highbyte)
- 2: ldy #0
- clc
- lda (ADDR),y
- rol a
- sta (ADDR),y
- iny
- lda (ADDR),y
- rol a
- sta (ADDR),y
- iny
- lda (ADDR),y
- rol a
- sta (ADDR),y
- iny
- lda (ADDR),y
- rol a
- sta (ADDR),y ! shift left
- dex
- bne 2b
- 9: rts
|