ror4.s 542 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. .define Ror4
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! This subroutine rotates right a fourbyte word.
  8. ! The number of rotates is in X.
  9. Ror4:
  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: lsr ARTH+3 ! rotate word
  21. ror ARTH+2
  22. ror ARTH+1
  23. ror ARTH
  24. bcc 1f ! no carry
  25. lda #0x80 ! put carry in leftmost bit
  26. ora ARTH+3
  27. sta ARTH+3
  28. 1: dey
  29. bne 2b
  30. lda ARTH+3
  31. ldx ARTH+2
  32. jsr Push
  33. lda ARTH+1
  34. ldx ARTH
  35. jmp Push ! push result onto the stack