mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-04 01:29:22 +00:00
165 lines
6.3 KiB
Plaintext
165 lines
6.3 KiB
Plaintext
|
;EASE$$$ READ ONLY COPY of file <20>FPEQUS.a<>
|
|||
|
; 1.1 CCH 11/11/1988 Fixed Header.
|
|||
|
; 1.0 CCH 11/ 9/1988 Adding to EASE.
|
|||
|
; OLD REVISIONS BELOW
|
|||
|
; 1.0 BBM 2/12/88 Adding file for the first time into EASE<53>
|
|||
|
; END EASE MODIFICATION HISTORY
|
|||
|
;-----------------------------------------------------------
|
|||
|
; 04JUL82: WRITTEN BY JEROME COONEN
|
|||
|
; 10AUG82: REMOVE OPWORD ERROR MASKS AND SET UP OPWORD
|
|||
|
; TESTS ON WORD, RATHER THAN LONG, BOUNDARY. (JTC)
|
|||
|
; 28AUG82: REMOVE FLAGS FOR STATE AREA ACCESS. (JTC)
|
|||
|
; 30AUG82: UNDERFLOW AND DIVBYZERO FLAGS SWAPPED (JTC)
|
|||
|
; 01SEP82: RND ENCODINGS CHANGED (JTC)
|
|||
|
; 03SEP82: FLAG ORDER REVERSED (JTC)
|
|||
|
; 13OCT82: ADD ROUND UP BIT (JTC)
|
|||
|
; 12DEC82: REMOVE PROJECTIVE MODE MATERIAL (JTC)
|
|||
|
; 13APR83: EXPAND COMMENT ABOUT STKREM... (JTC)
|
|||
|
; 29APR83: ADD OPHIBIT CONSTANT FOR DISTINGUISHING CLASS AND
|
|||
|
; COMPARE IN NANHANDLER. ADD NEXT CONSTANTS. (JTC)
|
|||
|
; 09MAY83: REPLACE STACK CONSTANTS WITH LINK CONSTANTS (JTC)
|
|||
|
; 26AUG83: MOVED FOR... EQUS FROM FPDRIVER TO HERE (JTC)
|
|||
|
; 01NOV83: PRECISION CONTROL TO MODE BITS (JTC)
|
|||
|
; 15APR84: MOVED FOR... EQUS BACK OUT TO FPDRIVER FROM HERE (JTC&DGH)
|
|||
|
; 14JAN85: MDS (JTC)
|
|||
|
; 26MAR85: ADDED QNANBIT (JTC).
|
|||
|
; 31JUL85: BACK TO PORKSHOP (JTC). <31JUL85>
|
|||
|
;
|
|||
|
; SOME BITS ARE ACCESSIBLE BY <TST; BMI> SEQUENCES BECAUSE
|
|||
|
; THEY OCCUR AT THE HIGH END OF A BYTE, WORD, OR LONG
|
|||
|
; SUBPIECE. WHENEVER SUCH TESTS ARE EXPLOITED (PREFERABLE
|
|||
|
; TO BTST), THE BIT NUMBER IS USED IN THE COMMENT.
|
|||
|
; THIS SHOULD AID IN LATER CHANGES.
|
|||
|
;-----------------------------------------------------------
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; PC-RELATIVE ADDRESSING GLITCHES. PIC DEPENDS ON
|
|||
|
; PC-RELATIVE. MOTOROLA DOCUMENTATION SPECIFIES SYNTAX
|
|||
|
; LIKE MOVE.W TABLE(PC,D3),D3
|
|||
|
; BUT APPLE ASSEMBLERS ASSUME PC, AND DON'T ALLOW IT TO
|
|||
|
; BE PUT. PCOK TELLS WHETHER OR NOT "PC" IS TO BE USED.
|
|||
|
;-----------------------------------------------------------
|
|||
|
|
|||
|
BLANKS ON
|
|||
|
STRING ASIS
|
|||
|
|
|||
|
PCOK EQU 0
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; STACK FRAME INFORMATION. AFTER ENTRY DO A "LINK A6,#-2"
|
|||
|
; TO GET STACK:
|
|||
|
; CNT WORD < OLD A6 < RET < OP < ADR1 < ADR2...
|
|||
|
; WITH A6 POINTING TO OLD A6. THEN THE FOLLOWING LINK
|
|||
|
; OFFSETS ACCESS STACK ELEMENTS.
|
|||
|
;-----------------------------------------------------------
|
|||
|
LKCNT EQU -2 ; BYTE COUNT FOR TRAP
|
|||
|
LKA6 EQU 0 ; SAVED A6
|
|||
|
LKRET EQU 4 ; RETURN ADDRESS
|
|||
|
LKOP EQU 8 ; OPWORD
|
|||
|
LKADR1 EQU 10 ; FIRST ADDRESS
|
|||
|
LKADR2 EQU 14 ; SECOND ADDRESS
|
|||
|
LKADR3 EQU 18 ; THIRD ADDRESS
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; WHEN A HALT EXIT IS TAKEN, THE STACK CONSISTS OF:
|
|||
|
; RET TO FP68K < OP < ADR1 < ADR2 < ADR3 < PTR
|
|||
|
; WHERE PTR REFERS TO THE THREE WORD STRUCTURE: CCR | D0
|
|||
|
; TO BE STUFFED AFTER RETURN TO PACKAGE.
|
|||
|
; TO RETURN TO EXECUTING PROGRAM JUST DO
|
|||
|
; MOVEA.L (SP)+,A0 ; RETURN ADRS
|
|||
|
; ADDA.W #18,SP ; KILL OP, 4 ADRS'S
|
|||
|
; JMP (A0)
|
|||
|
;-----------------------------------------------------------
|
|||
|
STKREM1 EQU 12 ; BYTES TO TOSS IF 1
|
|||
|
STKREM2 EQU 16 ; BYTES TO TOSS IF 2
|
|||
|
STKREM3 EQU 20 ; BYTES TO TOSS IF 3
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; POSITION OF ERROR BITS IN BYTE. W-MASKS ARE FOR SETTING
|
|||
|
; MULTIPLE EXCEPTIONS IN BITS $1F00 OF A WORD.
|
|||
|
;-----------------------------------------------------------
|
|||
|
ERRX EQU 4 ; INEXACT
|
|||
|
ERRZ EQU 3 ; DIVISION BY ZERO
|
|||
|
ERRO EQU 2 ; OVERFLOW
|
|||
|
ERRU EQU 1 ; UNDERFLOW
|
|||
|
ERRI EQU 0 ; INVALID
|
|||
|
|
|||
|
ERRWXO EQU $1400 ; INEXACT AND OVERFLOW
|
|||
|
ERRWXU EQU $1200 ; INEXACT AND UNDERFLOW
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; RESULTS OF COMPARISONS, BASED ON CPU MAP: XNZVC.
|
|||
|
;-----------------------------------------------------------
|
|||
|
CMPE EQU $04 ; .EQUAL
|
|||
|
CMPL EQU $19 ; LESS
|
|||
|
CMPG EQU $00 ; GREATER
|
|||
|
CMPU EQU $02 ; UNORDERED
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; CLASS OPERATOR RETURN CODES
|
|||
|
;-----------------------------------------------------------
|
|||
|
CLSNAN EQU 1 ; SIGNALING NAN
|
|||
|
CLQNAN EQU 2 ; QUIET NAN
|
|||
|
CLINF EQU 3 ; INFINITY
|
|||
|
CLZERO EQU 4 ; ZERO
|
|||
|
CLNORM EQU 5 ; NORMAL NUMBER
|
|||
|
CLDENORM EQU 6 ; DENORMAL NUMBER
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; OPWORD BITS, BASED ON WORD VALUE.
|
|||
|
;-----------------------------------------------------------
|
|||
|
TWOADRS EQU 00 ; 1 IFF 2 ADDRESSES
|
|||
|
OPHIBIT EQU 04 ; 0010 = OPCODE LEAD BIT
|
|||
|
DSTOUT EQU 05 ; 1 IFF NOT COMPARISON
|
|||
|
SRCIN EQU 06 ; 1 IFF SRC INPUT
|
|||
|
DSTIN EQU 07 ; 1 IFF DST INPUT
|
|||
|
DSTLO EQU 08 ; LO BIT OF DST FORMAT
|
|||
|
DSTMD EQU 09 ; MED BIT OF DST FORMAT
|
|||
|
DSTINT EQU 10 ; 1 IFF INTEGER OUTPUT
|
|||
|
SRCLO EQU 11 ; LO BIT OF SRC FORMAT
|
|||
|
SRCMD EQU 12 ; MED BIT OF SRC FORMAT
|
|||
|
SRCHI EQU 13 ; HI BIT OF SRC FORMAT
|
|||
|
DPREC EQU 14 ; DOUBLE OPERATION
|
|||
|
SPREC EQU 15 ; SINGLE OPERATION (TST.L)
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; TESTS FOR OPERATIONS, ALL AS WORD TESTS. AND SOME
|
|||
|
; USEFUL OPCODES FOR B<->D CONVERSIONS.
|
|||
|
;-----------------------------------------------------------
|
|||
|
OPIFCPX EQU 1 ; 1 IFF CMPX VS CMP
|
|||
|
OPIFTR EQU 1 ; 1 IFF TRUNC VS ROUND
|
|||
|
OPAMASK EQU $001E ; ISOLATE OPCODE BITS
|
|||
|
OPFOMASK EQU $3800 ; TO GET SRC FORMAT BITS
|
|||
|
OPMUL EQU $0004 ; MULTIPLY OPCODE
|
|||
|
OPDIV EQU $0006 ; DIVIDE OPCODE
|
|||
|
OPCMP EQU $0008 ; COMPARE WITHOUT EXCEPTIONS
|
|||
|
OP2EXT EQU $000E ; CONVERT TO EXTENDED
|
|||
|
OPEXT2 EQU $0010 ; CONVERT FROM EXTENDED
|
|||
|
OPRINT EQU $0014 ; ROUND TO INTEGER
|
|||
|
OPCLASS EQU $001C ; CLASS
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; MODE BITS AND MASKS IN BYTE.
|
|||
|
;-----------------------------------------------------------
|
|||
|
RNDMSK EQU $60 ; AS THOUGH IN LOW WORD
|
|||
|
RNDUP EQU $20
|
|||
|
RNDDN EQU $40
|
|||
|
RND0 EQU $60
|
|||
|
RNDLO EQU 5
|
|||
|
RNDHI EQU 6 ; LEAD RND BIT
|
|||
|
|
|||
|
; ..EQU 7 ...USED TO BE AFF/PROJ BIT
|
|||
|
|
|||
|
DBRMSK EQU $8f ; KILL RND BITS AND INEXACT
|
|||
|
|
|||
|
RNDINC EQU 7 ; IN LOW BYTE OF WORD
|
|||
|
PRECMSK EQU RNDMSK ; IN LOW BYTE OF WORD
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; AS OF MARCH 85, BIT #30 OF HIGH LONG OF SIGNIFICAND IS
|
|||
|
; 0 FOR SIGNALING AND 1 FOR QUIET NANS.
|
|||
|
;-----------------------------------------------------------
|
|||
|
QNANBIT EQU 30 ; INDEX IN HIGH LONGWORD <26MAR85>
|
|||
|
|
|||
|
|