mirror of
https://github.com/elliotnunn/sys7.1-doc-wip.git
synced 2024-11-19 06:30:59 +00:00
111 lines
3.8 KiB
Plaintext
111 lines
3.8 KiB
Plaintext
;
|
|
; File: FPHW.a
|
|
;
|
|
; Contains: HW Floating Point FP68K ("PACK 4") that calls MC68881/882 or uses MC68040 FPU
|
|
;
|
|
; Written by: Apple Numerics Group, DSG
|
|
;
|
|
; Copyright: © 1985-1992 by Apple Computer, Inc. All rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <SM2> 10/29/92 SWC Changed ToolEqu.a->ToolUtils.a.
|
|
; <2> 10/28/91 SAM/KSM Added a default definition for BACKPATCH of true.
|
|
; <1> 10/24/91 SAM/KSM Rolled in Regatta file.
|
|
;
|
|
; Terror Change History:
|
|
;
|
|
; <2> 1/9/91 BG Removed the PROC040 -IF- directive. FPHW.a will now build with
|
|
; MACHINE MC68040 set so that all the FPU instructions will be
|
|
; assembled the same as if there was an MC68881 directive, but
|
|
; this will also allow the use of 040 cache manipulation
|
|
; instructions (CPUSH).
|
|
; <1> 01/06/90 BG Added to TERROR/BBS for the time.
|
|
; ———————————————————————————————————————————————————————————————————————————————————————
|
|
; Pre-TERROR ROM comments begin here.
|
|
; ———————————————————————————————————————————————————————————————————————————————————————
|
|
; 12/17/90 JPO Added conditional equate for PROC040.
|
|
; 12/6/90 JPO Modified for MC68040 platform.
|
|
; 9/30/90 SM Goes final for Terror alpha.
|
|
; 9/7/90 SM Goes beta for Tim. Updated version number.
|
|
; 5/22/90 SM Goes alpha for waimea. Copyright updated.
|
|
; 12/18/89 SM Complete rewrite begins.
|
|
; 1/23/87 SM MC68881 directive moved here from file fp881arith.a.
|
|
; 1/16/87 SM Added INCLUDE TRAPS.A for _SysError call in fp881ctrl.a.
|
|
; 1/15/87 SM Changed copyright notice.
|
|
; 1/15/87 SM Deleted INCLUDE SYSEQU.A.
|
|
; Rev28 1/16/85 moved to MPW.
|
|
; Rev27 12/19/85 CVT routines fixed and shortened.
|
|
; Rev26 12/5/85 NextAfter OK.
|
|
; Rev14 8/28/85 (Debugging Coonen Bin-Dec routines).
|
|
; Rev9 6/17/85
|
|
;
|
|
|
|
MAIN
|
|
BLANKS ON
|
|
STRING ASIS
|
|
|
|
DATA MAIN
|
|
ORG -$100
|
|
CODE
|
|
|
|
PRINT ON
|
|
|
|
FPASSEMBLER EQU 1
|
|
|
|
;------------------------------------------------------------------------------- <T2> thru next <T2>
|
|
;
|
|
; NOTE - The MACHINE MC68040 directive "should" create the same instructions as
|
|
;
|
|
; MACHINE MC68020
|
|
; MC68881
|
|
;
|
|
; ... but allows you to also use the 040 special cache-flushing instructions
|
|
; as well. As far as I know, there's only one place where this could be an
|
|
; issue (FLUSHCACHE), which uses a CPUSHL bc,(Ax) to push the appropriate
|
|
; cache line in the backpatching install code on an 040, whereas it does a
|
|
; MOVEC D0,CACR to set the "flush I-Cache" bit on 020/030s. This should
|
|
; still work, since the MOVEC Dx,CACR instruction creates the same instruction
|
|
; in both the 020/030 and 040.
|
|
;-------------------------------------------------------------------------------
|
|
|
|
MACHINE MC68040
|
|
|
|
; MACHINE MC68020
|
|
; MC68881 ; <T2>
|
|
|
|
INCLUDE 'FPHWEqus.a'
|
|
INCLUDE 'ToolUtils.a'
|
|
INCLUDE 'Traps.a'
|
|
|
|
; This is not a standard definition in the System Equates, so it is included here <T2>
|
|
|
|
IF &TYPE('BACKPATCH') = 'UNDEFINED' THEN ; <2>
|
|
BACKPATCH: EQU 1
|
|
ENDIF
|
|
|
|
If &TYPE('_SysBreak') = 'UNDEFINED' Then ; Arg!! <T3>
|
|
|
|
MACRO ; <T2>
|
|
_SysBreak ; <T2>
|
|
MOVE.W #-490, D0 ; <T2>
|
|
_SysError ; <T2>
|
|
ENDM ; <T2>
|
|
ENDIF ; <T3>
|
|
INCLUDE 'SANEMacs.a'
|
|
|
|
CPUFlag EQU $12F ; So this builds! <T3>
|
|
cpu68040 EQU 4
|
|
|
|
;INCLUDE 'SysEqu.a' ; for CPUFlag definition <T2>
|
|
|
|
EXPORT FP68K
|
|
FP68K
|
|
|
|
INCLUDE 'FPHWCtrl.a'
|
|
INCLUDE 'FPHWArith.a'
|
|
INCLUDE 'FPHWNonArith.a'
|
|
INCLUDE 'FPHWB2DC.a'
|
|
OMEGA881END:
|
|
END
|