mirror of
https://github.com/cshepherd/gscifs.git
synced 2024-12-03 12:53:01 +00:00
605 lines
14 KiB
ArmAsm
605 lines
14 KiB
ArmAsm
* Sane Toolset macros.
|
|
* by Dave Klimas
|
|
;
|
|
; Copyright Apple Computer, Inc. 1986, 1987
|
|
; and Roger Wagner Publishing, Inc. 1988
|
|
; All Rights Reserved
|
|
;
|
|
_SANEBootInit MAC
|
|
Tool $10A
|
|
<<<
|
|
~SANEStartUp MAC
|
|
PHW ]1
|
|
_SANEStartUp MAC
|
|
Tool $20A
|
|
<<<
|
|
_SANEShutDown MAC
|
|
Tool $30A
|
|
<<<
|
|
~SANEVersion MAC
|
|
PHA
|
|
_SANEVersion MAC
|
|
Tool $40A
|
|
<<<
|
|
_SANEReset MAC
|
|
Tool $50A
|
|
<<<
|
|
~SANEStatus MAC
|
|
PHA
|
|
_SANEStatus MAC
|
|
Tool $60A
|
|
<<<
|
|
_SANEFP816 MAC
|
|
Tool $90A
|
|
<<<
|
|
_SANEDecStr816 MAC
|
|
Tool $A0A
|
|
<<<
|
|
_SANEElems816 MAC
|
|
Tool $B0A
|
|
<<<
|
|
~qSANEStartUp MAC
|
|
NextDP ]1;$100
|
|
Tool $20A
|
|
<<<
|
|
* Auxiliary macros
|
|
|
|
FOPRF MAC ;call FP
|
|
PEA ]1
|
|
_SANEFP816
|
|
<<<
|
|
FOPRD MAC ;call DecStr
|
|
PEA ]1
|
|
_SANEDecStr816
|
|
<<<
|
|
FOPRE MAC ;call Elems
|
|
PEA ]1
|
|
_SANEElems816
|
|
<<<
|
|
* Addition
|
|
|
|
FADDX MAC
|
|
FOPRF 0
|
|
<<<
|
|
FADDD MAC
|
|
FOPRF $100
|
|
<<<
|
|
FADDS MAC
|
|
FOPRF $200
|
|
<<<
|
|
FADDC MAC
|
|
FOPRF $500
|
|
<<<
|
|
FADDI MAC
|
|
FOPRF $400
|
|
<<<
|
|
FADDL MAC
|
|
FOPRF $300
|
|
<<<
|
|
* Subtraction
|
|
|
|
FSUBX MAC
|
|
FOPRF $002
|
|
<<<
|
|
FSUBD MAC
|
|
FOPRF $102
|
|
<<<
|
|
FSUBS MAC
|
|
FOPRF $202
|
|
<<<
|
|
FSUBC MAC
|
|
FOPRF $502
|
|
<<<
|
|
FSUBI MAC
|
|
FOPRF $402
|
|
<<<
|
|
FSUBL MAC
|
|
FOPRF $302
|
|
<<<
|
|
* Multiplication
|
|
|
|
FMULX MAC
|
|
FOPRF $004
|
|
<<<
|
|
FMULD MAC
|
|
FOPRF $104
|
|
<<<
|
|
FMULS MAC
|
|
FOPRF $204
|
|
<<<
|
|
FMULC MAC
|
|
FOPRF $504
|
|
<<<
|
|
FMULI MAC
|
|
FOPRF $404
|
|
<<<
|
|
FMULL MAC
|
|
FOPRF $304
|
|
<<<
|
|
* Division
|
|
|
|
FDIVX MAC
|
|
FOPRF $006
|
|
<<<
|
|
FDIVD MAC
|
|
FOPRF $106
|
|
<<<
|
|
FDIVS MAC
|
|
FOPRF $206
|
|
<<<
|
|
FDIVC MAC
|
|
FOPRF $506
|
|
<<<
|
|
FDIVI MAC
|
|
FOPRF $406
|
|
<<<
|
|
FDIVL MAC
|
|
FOPRF $306
|
|
<<<
|
|
* Square root
|
|
|
|
FSQRTX MAC
|
|
FOPRF $12
|
|
<<<
|
|
|
|
* Round to integer, according to the current rounding mode
|
|
|
|
FRINTX MAC
|
|
FOPRF $14
|
|
<<<
|
|
|
|
* Truncate to integer, using round toward zero.
|
|
|
|
FTINTX MAC
|
|
FOPRF $16
|
|
<<<
|
|
* Remainder
|
|
|
|
FREMX MAC
|
|
FOPRF $00C
|
|
<<<
|
|
FREMD MAC
|
|
FOPRF $10C
|
|
<<<
|
|
FREMS MAC
|
|
FOPRF $20C
|
|
<<<
|
|
FREMC MAC
|
|
FOPRF $50C
|
|
<<<
|
|
FREMI MAC
|
|
FOPRF $40C
|
|
<<<
|
|
FREML MAC
|
|
FOPRF $30C
|
|
<<<
|
|
* Logb
|
|
|
|
FLOGBX MAC
|
|
FOPRF $1A
|
|
<<<
|
|
* Scalb
|
|
|
|
FSCALBX MAC
|
|
FOPRF $18
|
|
<<<
|
|
* Copy-sign
|
|
|
|
FCPYSGNX MAC
|
|
FOPRF $011
|
|
<<<
|
|
FCPYSGND MAC
|
|
FOPRF $111
|
|
<<<
|
|
FCPYSGNS MAC
|
|
FOPRF $211
|
|
<<<
|
|
FCPYSGNC MAC
|
|
FOPRF $511
|
|
<<<
|
|
FCPYSGNI MAC
|
|
FOPRF $411
|
|
<<<
|
|
FCPYSGNL MAC
|
|
FOPRF $311
|
|
<<<
|
|
* Negate
|
|
|
|
FNEGX MAC
|
|
FOPRF $0D
|
|
<<<
|
|
|
|
* Absolute value
|
|
|
|
FABSX MAC
|
|
FOPRF $0F
|
|
<<<
|
|
|
|
* Next-after. NOTE: both operands are of the
|
|
* the same format, as specified by the usual suffix.
|
|
|
|
FNEXTS MAC
|
|
FOPRF $21E
|
|
<<<
|
|
FNEXTD MAC
|
|
FOPRF $11E
|
|
<<<
|
|
FNEXTX MAC
|
|
FOPRF $01E
|
|
<<<
|
|
|
|
* Conversion to extended
|
|
|
|
FX2X MAC
|
|
FOPRF $00E
|
|
<<<
|
|
FD2X MAC
|
|
FOPRF $10E
|
|
<<<
|
|
FS2X MAC
|
|
FOPRF $20E
|
|
<<<
|
|
|
|
* 16-bit integer, by address
|
|
|
|
FI2X MAC
|
|
FOPRF $40E
|
|
<<<
|
|
|
|
* 32-bit integer, by address
|
|
|
|
FL2X MAC
|
|
FOPRF $30E
|
|
<<<
|
|
FC2X MAC
|
|
FOPRF $50E
|
|
<<<
|
|
|
|
* Conversion from extended
|
|
|
|
FX2D MAC
|
|
FOPRF $110
|
|
<<<
|
|
FX2S MAC
|
|
FOPRF $210
|
|
<<<
|
|
FX2I MAC
|
|
FOPRF $410
|
|
<<<
|
|
FX2L MAC
|
|
FOPRF $310
|
|
<<<
|
|
FX2C MAC
|
|
FOPRF $510
|
|
<<<
|
|
|
|
* Binary to decimal conversion
|
|
|
|
FX2DEC MAC
|
|
FOPRF $00B
|
|
<<<
|
|
FD2DEC MAC
|
|
FOPRF $10B
|
|
<<<
|
|
FS2DEC MAC
|
|
FOPRF $20B
|
|
<<<
|
|
FC2DEC MAC
|
|
FOPRF $50B
|
|
<<<
|
|
FI2DEC MAC
|
|
FOPRF $40B
|
|
<<<
|
|
FL2DEC MAC
|
|
FOPRF $30B
|
|
<<<
|
|
|
|
* Decimal to binary conversion
|
|
|
|
FDEC2X MAC
|
|
FOPRF $009
|
|
<<<
|
|
FDEC2D MAC
|
|
FOPRF $109
|
|
<<<
|
|
FDEC2S MAC
|
|
FOPRF $209
|
|
<<<
|
|
FDEC2C MAC
|
|
FOPRF $509
|
|
<<<
|
|
FDEC2I MAC
|
|
FOPRF $409
|
|
<<<
|
|
FDEC2L MAC
|
|
FOPRF $309
|
|
<<<
|
|
|
|
* Compare, not signaling invalid on unordered
|
|
|
|
FCMPX MAC
|
|
FOPRF $008
|
|
<<<
|
|
FCMPD MAC
|
|
FOPRF $108
|
|
<<<
|
|
FCMPS MAC
|
|
FOPRF $208
|
|
<<<
|
|
FCMPC MAC
|
|
FOPRF $508
|
|
<<<
|
|
FCMPI MAC
|
|
FOPRF $408
|
|
<<<
|
|
FCMPL MAC
|
|
FOPRF $308
|
|
<<<
|
|
|
|
* Compare, signaling invalid on unordered
|
|
|
|
FCPXX MAC
|
|
FOPRF $00A
|
|
<<<
|
|
FCPXD MAC
|
|
FOPRF $10A
|
|
<<<
|
|
FCPXS MAC
|
|
FOPRF $20A
|
|
<<<
|
|
FCPXC MAC
|
|
FOPRF $50A
|
|
<<<
|
|
FCPXI MAC
|
|
FOPRF $40A
|
|
<<<
|
|
FCPXL MAC
|
|
FOPRF $30A
|
|
<<<
|
|
|
|
* The following macros define a set of so-called floating
|
|
* branches. They presume that the appropriate compare
|
|
* operation, macro FCMPz or FCPXz, precedes.
|
|
|
|
FBEQ MAC
|
|
BEQ ]1
|
|
<<<
|
|
FBLT MAC ;less
|
|
BMI ]1
|
|
<<<
|
|
FBLE MAC ;less or equal
|
|
BMI ]1
|
|
BEQ ]1
|
|
<<<
|
|
FBGT MAC ;greater
|
|
BVS ]1
|
|
<<<
|
|
FBGE MAC ;greater or equal
|
|
BVS ]1
|
|
BEQ ]1
|
|
<<<
|
|
FBULT MAC ;less or unordered
|
|
BMI ]1
|
|
BVS *+4
|
|
BNE ]1
|
|
<<<
|
|
FBULE MAC ;unordered, less, or equal
|
|
BMI ]1
|
|
BEQ ]1
|
|
BVC ]1
|
|
<<<
|
|
FBUGT MAC ;unordered or greater
|
|
BVS ]1
|
|
BMI *+4
|
|
BNE ]1
|
|
<<<
|
|
FBUGE MAC ;unordered, greater, or equal
|
|
BVS ]1
|
|
BEQ ]1
|
|
BPL ]1
|
|
<<<
|
|
FBU MAC ;unordered
|
|
BVS *+6
|
|
BMI *+4
|
|
BNE ]1
|
|
<<<
|
|
FBO MAC ;ordered
|
|
BMI ]1
|
|
BVS ]1
|
|
BEQ ]1
|
|
<<<
|
|
FBNE MAC ;not equal
|
|
BMI ]1
|
|
BVS ]1
|
|
BNE ]1
|
|
<<<
|
|
FBUE MAC ;unordered, equal
|
|
BEQ ]1
|
|
BMI *+4
|
|
BVC ]1
|
|
<<<
|
|
FBLG MAC ;less or greater
|
|
BMI ]1
|
|
BVS ]1
|
|
<<<
|
|
|
|
FCLASSS MAC
|
|
FOPRF $21C
|
|
<<<
|
|
FCLASSD MAC
|
|
FOPRF $11C
|
|
<<<
|
|
FCLASSX MAC
|
|
FOPRF $01C
|
|
<<<
|
|
FCLASSC MAC
|
|
FOPRF $51C
|
|
<<<
|
|
FCLASSI MAC
|
|
FOPRF $41C
|
|
<<<
|
|
FCLASSL MAC
|
|
FOPRF $31C
|
|
<<<
|
|
|
|
* The following macros provide branches based on the
|
|
* the result of a FCLASSz macro.
|
|
|
|
FBSNAN MAC ;signaling NaN
|
|
TXA
|
|
ASL
|
|
CMP #2*$FC
|
|
BEQ ]1
|
|
<<<
|
|
FBQNAN MAC ;quiet NaN
|
|
TXA
|
|
ASL
|
|
CMP #2*$FD
|
|
BEQ ]1
|
|
<<<
|
|
FBINF MAC ;infinite
|
|
TXA
|
|
ASL
|
|
CMP #2*$FE
|
|
BEQ ]1
|
|
<<<
|
|
FBZERO MAC ;zero
|
|
TXA
|
|
ASL
|
|
CMP #2*$FF
|
|
BEQ ]1
|
|
<<<
|
|
FBNORM MAC ;normal
|
|
TXA
|
|
ASL
|
|
BEQ ]1
|
|
<<<
|
|
FBDENORM MAC ;denormal
|
|
TXA
|
|
ASL
|
|
CMP #2*1
|
|
BEQ ]1
|
|
<<<
|
|
FBNZENUM MAC ;non-zero num (norm or denorm)
|
|
TXA
|
|
XBA
|
|
ASL
|
|
BCC ]1
|
|
<<<
|
|
FBNUM MAC ;number (zero, norm or denorm)
|
|
TXA
|
|
INC A
|
|
XBA
|
|
ASL
|
|
BCC ]1
|
|
<<<
|
|
FBMINUS MAC ;minus sign
|
|
BMI ]1
|
|
<<<
|
|
FBPLUS MAC ;plus sign
|
|
BPL ]1
|
|
<<<
|
|
|
|
* Get and set environment
|
|
|
|
FGETENV MAC
|
|
FOPRF $03
|
|
<<<
|
|
FSETENV MAC
|
|
FOPRF $01
|
|
<<<
|
|
|
|
* Test and set exception
|
|
|
|
FTESTXCP MAC
|
|
FOPRF $1B
|
|
<<<
|
|
FSETXCP MAC
|
|
FOPRF $15
|
|
<<<
|
|
|
|
* Procedure entry and exit
|
|
|
|
FPROCENTRY MAC
|
|
FOPRF $17
|
|
<<<
|
|
FPROCEXIT MAC
|
|
FOPRF $19
|
|
<<<
|
|
|
|
* Get and set halt vector
|
|
|
|
FGETHV MAC
|
|
FOPRF $07
|
|
<<<
|
|
FSETHV MAC
|
|
FOPRF $05
|
|
<<<
|
|
|
|
* Elementary function macros
|
|
|
|
FLNX MAC ;natural (base-e) log
|
|
FOPRE $00
|
|
<<<
|
|
FLOG2X MAC ;base-2 log
|
|
FOPRE $02
|
|
<<<
|
|
FLN1X MAC ;ln (1 + x)
|
|
FOPRE $04
|
|
<<<
|
|
FLOG21X MAC ;log2 (1 +x)
|
|
FOPRE $06
|
|
<<<
|
|
FEXPX MAC ;base-e exponential
|
|
FOPRE $08
|
|
<<<
|
|
FEXP2X MAC ;base-2 exponential
|
|
FOPRE $0A
|
|
<<<
|
|
FEXP1X MAC ;exp (x) - 1
|
|
FOPRE $0C
|
|
<<<
|
|
FEXP21X MAC ;exp2 (x) - 1
|
|
FOPRE $0E
|
|
<<<
|
|
FXPWRI MAC ;integer exponential
|
|
FOPRE $10
|
|
<<<
|
|
FXPWRY MAC ;general exponential
|
|
FOPRE $12
|
|
<<<
|
|
FCOMPOUND MAC ;compound
|
|
FOPRE $14
|
|
<<<
|
|
FANNUITY MAC ;annuity
|
|
FOPRE $16
|
|
<<<
|
|
FATANX MAC ;arctangent
|
|
FOPRE $18
|
|
<<<
|
|
FSINX MAC ;sine
|
|
FOPRE $1A
|
|
<<<
|
|
FCOSX MAC ;cosine
|
|
FOPRE $1C
|
|
<<<
|
|
FTANX MAC ;tangent
|
|
FOPRE $1E
|
|
<<<
|
|
FRANDX MAC ;random number generator
|
|
FOPRE $20
|
|
<<<
|
|
|
|
* Scanner and formatter function macros
|
|
|
|
FPSTR2DEC MAC ;pascal string to decimal record
|
|
FOPRD 0
|
|
<<<
|
|
FDEC2STR MAC ;decimal record to pascal string
|
|
FOPRD 1
|
|
<<<
|
|
FCSTR2DEC MAC ;C string to decimal record
|
|
FOPRD 2
|
|
<<<
|
|
|