rol4.s 476 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. .define Rol4
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! This subroutine rotates left a fourbyte integer n times.
  8. ! N is in register X.
  9. Rol4:
  10. txa
  11. bne 1f ! a zero rotate skip
  12. rts
  13. 1: tay
  14. jsr Pop
  15. stx ARTH
  16. sta ARTH+1
  17. jsr Pop
  18. stx ARTH+2
  19. sta ARTH+3
  20. 2: asl ARTH
  21. rol ARTH+1
  22. rol ARTH+2
  23. rol ARTH+3 ! rotate left
  24. bcc 1f
  25. inc ARTH ! put carry in rightmost bit
  26. 1: dey
  27. bne 2b
  28. ldx ARTH+2
  29. lda ARTH+3
  30. jsr Push
  31. ldx ARTH
  32. lda ARTH+1
  33. jmp Push