help with pasm subroutines

in Propeller 1
I have been trying to get the math from the book to work as a subroutine as advertised. Tried several combinations and I cannot get them to work. Would someone please look at this as a second set of eyes.
Thanks.
It appears that it should be simple. I have a incrementing count program working but these will not work.
Again thanks
Thanks.
It appears that it should be simple. I have a incrementing count program working but these will not work.
Again thanks
Comments
Also the unnecessary "mov x_var, temp_var" lines are still there. This will confuse a reader of your tutorial.
Here is your 2 subroutine code with better indentions and the above issues corrected. I also renamed the temp_var to varptr, because that describes it better.
{{Multiplication based on the propeller manual page 380}} CON _clkmode = xtal1 + pll16x '_xinfreq = 6_250_000 'MY BOARD AT 1OOMHZ DIFFERENT CRYSTAL _xinfreq = 5_000_000 'QUICKSTART 80 MHZ NORMAL CRYSTAL var 'Spin variables long x 'we pass this address in par at cognew long y long product obj pst : "parallax serial terminal" pub main x := 3 y := 9 pst.start(115000) waitcnt(clkfreq*5 +cnt) 'hold five sec to open the 'serial terminal and enable it cognew(@asm,@x) 'start cog at the first variable address waitcnt(clkfreq*2 +cnt) 'give pasm time to do the work pst.str(string("product:")) 'show a string on terminal pst.dec(product~) 'show decimal value of product on terminal pst.newline dat ' asm org mov varptr, par 'move par to the local varptr (points to x-var) rdlong x_var, varptr 'read in the x value from Spin vars add varptr, #4 'incr varptr to next long which is the y-var address rdlong y_var, varptr 'read in the y value add varptr, #4 'inc varptr to the product variable address call #multiply 'multiply x with y call #writer 'and write result to product var cogid t 'stop the cog cogstop t ' Subroutines multiply shl x_var,#16 'get multiplicand into x[31..16] mov t,#16 'ready for 16 multiplier bits shr y_var,#1 wc 'get initial multiplier bit into c :loop if_c add y_var,x_var wc 'if bit set, add multiplicand to product rcr y_var,#1 wc 'put next multiplier in c, shift prod. djnz t,#:loop 'loop until done multiply_ret ret 'return with product in y[31..0] 'this would be a subroutine writer wrlong y_var, varptr 'write the product from y[31..0] to the writer_ret ret 'product variable for the top object varptr res 1 'reserve space for cogregisters x_var res 1 y_var res 1 t res 1
Andy