* 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 ]2 <<< 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 <<<