sli.s 419 B

12345678910111213141516171819202122232425262728
  1. .define Sli2
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! This subroutine shifts a signed or unsigned interger to the
  8. ! left n times.
  9. ! N is in register X.
  10. ! The returned value is in registerpair AX.
  11. Sli2:
  12. txa
  13. bne 1f
  14. jmp Pop ! zero shift, return input
  15. 1: tay
  16. jsr Pop ! get integer
  17. stx Ytmp ! save lowbyte
  18. 2: asl Ytmp
  19. rol a ! shift left
  20. dey
  21. bne 2b
  22. ldx Ytmp ! get lowbyte
  23. rts