NEW PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- * # FAdd,FSub,FMult,FDiv,FPwr * Return X+Y, X-Y, X*Y, X/Y, X^Y * **In:** * PUSHF = X (Float) * PUSHF = Y (Float) * **Out:** * On stack (Float) *\-------------------------------------- K.FAdd ldx #ROM.FADD .HS 2C BIT ABS K.FSub ldx #ROM.FSUB .HS 2C BIT ABS K.FMult ldx #ROM.FMULT .HS 2C BIT ABS K.FDiv ldx #ROM.FDIV .HS 2C BIT ABS K.FPwr ldx #ROM.PWR phx jsr MATH.PullFAC jsr MATH.PullARG plx bra MATH.Go */-------------------------------------- * # Log,Sqr,Exp,Cos,Sin,Tan,ATan * Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x) * **In:** * PUSHF = X (Float) * **Out:** * On stack (Float) *\-------------------------------------- K.Log ldx #ROM.LOG .HS 2C BIT ABS K.Sqr ldx #ROM.SQR .HS 2C BIT ABS K.Exp ldx #ROM.EXP .HS 2C BIT ABS K.Cos ldx #ROM.COS .HS 2C BIT ABS K.Sin ldx #ROM.SIN .HS 2C BIT ABS K.Tan ldx #ROM.TAN .HS 2C BIT ABS K.ATan ldx #ROM.ATAN phx jsr MATH.PullFAC plx bra MATH.Go */-------------------------------------- * # Float * Return 'floated' long * **In:** * PUSHL = X (long) * **Out:** * On stack (Float) *\-------------------------------------- K.Float >PULLW FAC+1 >PULLW FAC+3 stz FAC.SIGN lda #$A0 sta FAC Exp=32 ldx #ROM.LTOF MATH.Go jsr GP.ROMCALL lda pStack sec sbc #5 sta pStack sta FORPNT lda pStack+1 sta FORPNT+1 ldx #ROM.GETFAC jsr GP.ROMCALL clc rts */-------------------------------------- * # LRIntF * Return Float rounded into a long * **In:** * PUSHF = X (Float) * **Out:** * On stack (long) *\-------------------------------------- K.LRIntF jsr MATH.PullFAC ldx #ROM.QINT jsr GP.ROMCALL >PUSHW FAC+1 >PUSHW FAC+3 clc rts *-------------------------------------- MATH.PullARG ldx #ROM.SETARG .HS 2C BIT ABS MATH.PullFAC ldx #ROM.SETFAC >LDYA pStack >STYA INDEX jsr GP.ROMCALL lda pStack clc adc #5 sta pStack rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.MATH LOAD /A2OSX.SRC/SYS/KERNEL.S ASM