sys7.1-doc-wip/Toolbox/InSANE/HWElemsEqus.a

136 lines
4.4 KiB
Plaintext
Raw Normal View History

2019-07-27 14:37:48 +00:00
;
; File: HWElemsEqus.a
;
; Contains: Equates for HW SANE routines
;
; Written by: Apple Numerics Group, DSG
;
; Copyright: © 1985-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM2> 2/3/93 CSS Update from Horror:
; <H2> 9/29/92 BG Adding Jon Okada's latest fixes.
; <1> 10/24/91 SAM/KSM Rolled in Regatta file.
;
; Regatta Change History:
;
; <2> 5/28/91 SAM Merged from TERROR sources. [<2> Added the constants IsItFinan &
; flag96bit]
; <1> 5/15/91 SAM Split off from TERROR Proj.
;
; Terror Change History:
;
; <1> 01/06/91 BG Added to TERROR/BBS for the time.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; File: 881ELEMSequs.a
;; Implementation of PACK5 for OmegaSANE. Expects 881
;; Copyright Apple Computer, Inc. 1985-7, 1989, 1990, 1992, 1993.
;; All Rights Reserved
;; Confidential and Proprietary to Apple Computer,Inc.
;;
;; Written by Clayton Lewis, begun 20 March 89.
;; Based on Elems881, package code for Mac by Jerome Coonen,
;; as modified for MacII by Stuart McDonald.
;;
;; Modification history:
;; 20 Mar 89 First paltry efforts
;; 6 Jun 89 ali: added more constants & NaNs for logorithms
;; 05 Apr 91 added the constant IsItFinan & flag96bit
;; 31 Mar 92 JPO Deleted 881 constant ROM selector values
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DebugON EQU 0 ; 1 = install debug stops in code, 0 = production code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Exception bits for exceptions to be set at exit time (high word)
;; and for exceptions to be cleared at exit time (low word)
;; Exceptions themselves by bit number
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SetInexact EQU $00080000
SetDivByZ EQU $00100000
SetUFlow EQU $00200000
SetOFlow EQU $00400000
SetInvalid EQU $00800000
ClrInexact EQU $0008
ClrUflow EQU $0020
ClrOflow EQU $0040
Uflow EQU $0020
Oflow EQU $0040
invalid EQU $80 ; invalid bit pattern
divbyzero EQU $10 ; divide by zero bit pattern
Inexact EQU 3 ; accrued inexact bit number
ExcMask EQU $0F000000 ; to get flag bits from FPSR
ShiftIt EQU 5 ; number of fpsr bits to shift
UnderFlow EQU 5 ; accrued underflow bit number
IsItFinan EQU 14 ; is opcode a financial function <2>
flag96bit EQU 7 ; the 96 bit flag in the opword <2>
NegInf EQU "$FFFF00000000000000000000" ; bit pattern for -∞
NaNLog EQU "$7FFF00004024000000000000" ; bit pattern for NaNLog
NaNTrig EQU "$7FFF00004021000000000000" ; bit pattern for NaNTrig
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Stack frame offsets, register usage
;; Control also saves FPSR and FPCR in correct order for ProcExit
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FPRegs FREG FP2/FP3 ; 6 longs (record changes in control)
Regs REG D0/D1/A0/A4 ; 4 longs (record changes in control)
SavedRegs EQU 48 ; including status and control
; (record changes in control)
Addr3 EQU 14+SavedRegs ; source2
Addr2 EQU 10+SavedRegs ; source
Addr1 EQU 6+SavedRegs ; destination
Opcode EQU 4+SavedRegs ; opcode word
RetAddr EQU SavedRegs ; return address
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; The opcode is defined as: [XY00 0000 NNNN NNN0]
;; X=1 for 2 & 3 address functions, Y=1 for 3 address functions
;; The six low order bits are the jump table index for the instruction
;; Bit 7 is set <=> all extended data is in 96- bit format
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OPMASK EQU $003E ; mask for jump table index
THREEARG EQU $C0 ; high byte of opword for annuity, compound
SMALLEXP EQU 255
NANPOWER EQU 37
NANFINAN EQU 38
PLUSINFSGL EQU $7F800000
MINUSINFSGL EQU $FF800000
MINUSONESGL EQU $BF800000
PLUSONESGL EQU $3F800000
MINUSZEROSGL EQU $80000000
BIGSINGLE EQU $7F7FFFFF ; 2^128 - ulp
RANDMODULUS EQU $7FFFFFFF ; 2^31-1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Bit indices into STATUS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XBit EQU 3
DBit EQU 4
UBit EQU 5
OBit EQU 6
IBit EQU 7
NaNBit EQU 24
InfBit EQU 25
ZeroBit EQU 26
NegBit EQU 27
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Values in 881 constant ROM - DELETED <3/31/92, JPO>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Ln2 EQU $30 ; offset of Ln(2) in the 68881 ROM
;CONSTONE EQU $32
;CONSTZERO EQU $0F