        .data
        .text
	.align	1
	.globl	_ascil
        /* argument offsets are amp=4,si=12,*array=20,len=24,*phase=28 */
_ascil :
        .word   0xC00
        cvtlf   24(ap),r0
        movf    *28(ap),r11           /* put phase in r11 */
        cvtfl   r11,r1                /* extract index from phase for mulf3*/
        addf2   12(ap),r11            /* add sampling increment to update phs */
        subf3   r11,r0,r0             /* subtract new phase from length */
        bgtr    getval                /* if difference > 0, goto getval */
        mnegf   r0,r11                /* else ch sign of diff ,put in r11 */
getval: movf    r11,*28(ap)           /* store r11 to phase       */
        mulf3   *20(ap)[r1],4(ap),r0  /* access value, mult val*amp, return*/ 
        ret
