;Recursion – Example program for THRSim11 – S.Norr

; Program contains a recursive subroutine to

; calculate SumR(N) = N + N-1 + N-2 + … + 2 + 1

;

      org ff00

      lds #00ff

      ldaa #10

      psha

      jsr SumR

      pula

      bra *

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SumR:

                  ; Calculate RangeSum(N)

                  ; = N + N-1 + N-2 + … + 2 + 1

                  ; Input Registers: None, 4-bit

                  ;                   variable, N, passed

                  ;                   to stack

                  ;                    {3 .le. N .le. F}

                  ; Output Registers:  None, result on stack

      pshx

      psha

      pshb

      tsx

      ldab 6,x

      decb

      beq SumOut

      pshb

      jsr SumR

      pulb

      ldaa 6,x

      aba

      staa 6,x

SumOut: pulb

      pula

      pulx

      rts

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;