mirror of
https://github.com/roughana/supermacs.git
synced 20240712 19:28:59 +00:00
600 lines
6.4 KiB
ArmAsm
600 lines
6.4 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



<<<



* 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



<<<



* Copysign






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



<<<






* Nextafter. 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



<<<






* 16bit integer, by address






FI2X MAC



FOPRF $40E



<<<






* 32bit 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 socalled 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 ;nonzero 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 (basee) log



FOPRE $00



<<<



FLOG2X MAC ;base2 log



FOPRE $02



<<<



FLN1X MAC ;ln (1 + x)



FOPRE $04



<<<



FLOG21X MAC ;log2 (1 +x)



FOPRE $06



<<<



FEXPX MAC ;basee exponential



FOPRE $08



<<<



FEXP2X MAC ;base2 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



<<<
