1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-07-20 13:28:56 +00:00

Consistent API names for SANE

This commit is contained in:
David Schmenk 2017-12-15 10:51:44 -08:00
parent 00cf842afb
commit b6d7986249
3 changed files with 131 additions and 131 deletions

View File

@ -130,17 +130,17 @@ end
// SANE PLASMA interface
//
struc t_sane
word fpInit
word fpHalt
word fpOp0
word fpOp1
word fpOp2
word fpOp3
word elOp1
word elOp2
word elOp3
word zpSave
word zpRestore
word initFP
word haltFP
word op0FP
word op1FP
word op2FP
word op3FP
word op1ELEM
word op2ELEM
word op3ELEM
word saveZP
word restoreZP
end
word sane
end

View File

@ -124,8 +124,8 @@ export def str2ext(str, ext)
decrec.sig = 1
decrec.sig.1 = '0'
fin
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOD2B, ext, @decrec))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOD2B, ext, @decrec))
end
//
// Convert extended FP to string using , return string
@ -139,8 +139,8 @@ export def ext2str(ext, str, intdigits, fracdigits, format)
numdigits = intdigits + fracdigits
decform:style = format & $01
decform:digits = decform:style ?? fracdigits :: numdigits
sane:zpSave()
sane:zpRestore(sane:fpOp3(FFEXT|FOB2D, @decrec, ext, @decform))
sane:saveZP()
sane:restoreZP(sane:op3FP(FFEXT|FOB2D, @decrec, ext, @decform))
^(str+1) = decrec.sgn ?? '-' :: ' '
if decrec.sig.1 == 'I'
^(str+2) = 'I'

View File

@ -53,28 +53,28 @@ word stackRegs[4]
// Environment access
//
def setEnv(env)
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FOSETENV, env))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FOSETENV, env))
end
def getEnv
sane:zpSave()
return sane:zpRestore(sane:fpOp0(FOGETENV))
sane:saveZP()
return sane:restoreZP(sane:op0FP(FOGETENV))
end
def testExcept(except)
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FOTESTXCP, except))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FOTESTXCP, except))
end
def setExcept(except)
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FOSETXCP, except))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FOSETXCP, except))
end
def enterProc(pEnv)
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FOPROCENTRY, pEnv))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FOPROCENTRY, pEnv))
end
def exitProc(env)
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FOPROCEXIT, env))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FOPROCEXIT, env))
end
//
// Stack manipulation routines
@ -118,79 +118,79 @@ end
def clear
word zero
zero = 0
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFINT|FOZ2X, stackRegs[0], @zero))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[0], @zero))
end
//
// Stack access
//
def pushInt(pInt)
stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2]
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFINT|FOZ2X, stackRegs[0], pInt))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[0], pInt))
end
def pullInt(pInt)
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFINT|FOX2Z, pInt, stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFINT|FOX2Z, pInt, stackRegs[0])))
end
def loadInt(pInt, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFINT|FOZ2X, stackRegs[reg & $03], pInt))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[reg & $03], pInt))
end
def storInt(pInt, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFINT|FOX2Z, pInt, stackRegs[reg & $03]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFINT|FOX2Z, pInt, stackRegs[reg & $03]))
end
def pushSgl(pSgl)
stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2]
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFSGL|FOZ2X, stackRegs[0], pSgl))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFSGL|FOZ2X, stackRegs[0], pSgl))
end
def pullSgl(pSgl)
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFSGL|FOX2Z, pSgl, stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFSGL|FOX2Z, pSgl, stackRegs[0])))
end
def loadSgl(pSgl, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFSGL|FOZ2X, stackRegs[reg & $03], pSgl))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFSGL|FOZ2X, stackRegs[reg & $03], pSgl))
end
def storSgl(pSgl, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFSGL|FOX2Z, pSgl, stackRegs[reg & $03]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFSGL|FOX2Z, pSgl, stackRegs[reg & $03]))
end
def pushDbl(pDbl)
stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2]
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFDBL|FOZ2X, stackRegs[0], pDbl))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFDBL|FOZ2X, stackRegs[0], pDbl))
end
def pullDbl(pDbl)
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFDBL|FOX2Z, pDbl, stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFDBL|FOX2Z, pDbl, stackRegs[0])))
end
def loadDbl(pDbl, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFDBL|FOZ2X, stackRegs[reg & $03], pDbl))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFDBL|FOZ2X, stackRegs[reg & $03], pDbl))
end
def storDbl(pDbl, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFDBL|FOX2Z, pDbl, stackRegs[reg & $03]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFDBL|FOX2Z, pDbl, stackRegs[reg & $03]))
end
def pushExt(pExt)
stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2]
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOZ2X, stackRegs[0], pExt))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOZ2X, stackRegs[0], pExt))
end
def pullExt(pExt)
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FOX2Z, pExt, stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOX2Z, pExt, stackRegs[0])))
end
def loadExt(pExt, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOZ2X, stackRegs[reg & $03], pExt))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOZ2X, stackRegs[reg & $03], pExt))
end
def storExt(pExt, reg)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOX2Z, pExt, stackRegs[reg & $03]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOX2Z, pExt, stackRegs[reg & $03]))
end
def pushStr(pStr)
stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2]
@ -209,139 +209,139 @@ end
// Basic math operations
//
def add
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FOADD, stackRegs[1], stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOADD, stackRegs[1], stackRegs[0])))
end
def sub
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FOSUB, stackRegs[1], stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOSUB, stackRegs[1], stackRegs[0])))
end
def mul
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FOMUL, stackRegs[1], stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOMUL, stackRegs[1], stackRegs[0])))
end
def div
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FODIV, stackRegs[1], stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FODIV, stackRegs[1], stackRegs[0])))
end
def rem
sane:zpSave()
return _drop(sane:zpRestore(sane:fpOp2(FFEXT|FOREM, stackRegs[1], stackRegs[0])))
sane:saveZP()
return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOREM, stackRegs[1], stackRegs[0])))
end
def neg
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FONEG, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FONEG, stackRegs[0]))
end
def abs
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FOABS, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FOABS, stackRegs[0]))
end
def type
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FOCLASS, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FOCLASS, stackRegs[0]))
end
def cmp
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOCMP, stackRegs[1], stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOCMP, stackRegs[1], stackRegs[0]))
end
def trunc
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FOTTI, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FOTTI, stackRegs[0]))
end
def round
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FORTI, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FORTI, stackRegs[0]))
end
def sqrt
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FOSQRT, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FOSQRT, stackRegs[0]))
end
def squared
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOMUL, stackRegs[0], stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOMUL, stackRegs[0], stackRegs[0]))
end
def logb
sane:zpSave()
return sane:zpRestore(sane:fpOp1(FFEXT|FOLOGB, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1FP(FFEXT|FOLOGB, stackRegs[0]))
end
def scalb(scale)
sane:zpSave()
return sane:zpRestore(sane:fpOp2(FFEXT|FOSCALB, stackRegs[0], scale))
sane:saveZP()
return sane:restoreZP(sane:op2FP(FFEXT|FOSCALB, stackRegs[0], scale))
end
//
// Elems operations
//
def cos
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOCOSX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOCOSX, stackRegs[0]))
end
def sin
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOSINX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOSINX, stackRegs[0]))
end
def tan
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOTANX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOTANX, stackRegs[0]))
end
def atan
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOATANX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOATANX, stackRegs[0]))
end
def log2X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOLOG2X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOLOG2X, stackRegs[0]))
end
def log21X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOLOG21X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOLOG21X, stackRegs[0]))
end
def lnX
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOLNX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOLNX, stackRegs[0]))
end
def ln1X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOLN1X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOLN1X, stackRegs[0]))
end
def pow2X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOEXP2X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP2X, stackRegs[0]))
end
def pow21X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOEXP21X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP21X, stackRegs[0]))
end
def powEX
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOEXPX, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXPX, stackRegs[0]))
end
def powE1X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOEXP1X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP1X, stackRegs[0]))
end
def powE21X
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FOEXP21X, stackRegs[0]))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP21X, stackRegs[0]))
end
def powXInt(powInt)
sane:zpSave()
return sane:zpRestore(sane:elOp2(FFEXT|FOXPWRI, stackRegs[0], powInt))
sane:saveZP()
return sane:restoreZP(sane:op2ELEM(FFEXT|FOXPWRI, stackRegs[0], powInt))
end
def powXY
sane:zpSave()
return sane:zpRestore(_drop(_swap(sane:elOp2(FFEXT|FOXPWRY, stackRegs[0], stackRegs[1]))))
sane:saveZP()
return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOXPWRY, stackRegs[0], stackRegs[1]))))
end
def compXY
sane:zpSave()
return sane:zpRestore(_drop(_swap(sane:elOp2(FFEXT|FOCOMPND, stackRegs[0], stackRegs[1]))))
sane:saveZP()
return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOCOMPND, stackRegs[0], stackRegs[1]))))
end
def annuityXY
sane:zpSave()
return sane:zpRestore(_drop(_swap(sane:elOp2(FFEXT|FOANNUIT, stackRegs[0], stackRegs[1]))))
sane:saveZP()
return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOANNUIT, stackRegs[0], stackRegs[1]))))
end
def randNum(pSeed)
sane:zpSave()
return sane:zpRestore(sane:elOp1(FFEXT|FORANDX, pSeed))
sane:saveZP()
return sane:restoreZP(sane:op1ELEM(FFEXT|FORANDX, pSeed))
end
//
// Push useful constants
@ -360,12 +360,12 @@ def reset
word zero
zero = 0
sane:fpInit()
sane:zpSave()
sane:initFP()
sane:saveZP()
for i = 0 to 3
stackRegs[i] = @stack[i * t_extended]
sane:fpOp2(FFINT|FOZ2X, stackRegs[i], @zero)
sane:op2FP(FFINT|FOZ2X, stackRegs[i], @zero)
next
return sane:zpRestore(0)
return sane:restoreZP(0)
end
done