mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-29 20:49:19 +00:00
506 lines
14 KiB
Plaintext
506 lines
14 KiB
Plaintext
|
;
|
|||
|
; File: QD.a
|
|||
|
;
|
|||
|
; Contains: RAM Based Color QuickDraw
|
|||
|
;
|
|||
|
; Written by: Bruce Leak
|
|||
|
;
|
|||
|
; Copyright: © 1989-1991, 1993 by Apple Computer, Inc., all rights reserved.
|
|||
|
;
|
|||
|
; Change History (most recent first):
|
|||
|
;
|
|||
|
; <SM2> 9/12/93 SAM Added "NOT forROM" around the code that implements
|
|||
|
; _Translate24to32. SuperMario is a 32-bit only ROM.
|
|||
|
; <19> 8/30/91 DTY Define hasCQD since we took it out of BBSStartup. QuickDraw
|
|||
|
; used to use {Defs32}, so hasCQD needs to be true as it was in
|
|||
|
; that case.
|
|||
|
; <18> 7/10/91 JSM Remove obsolete SysVers conditional and some code that never is
|
|||
|
; compiled.
|
|||
|
; <17> 6/14/91 JL Removed benign redefinition of HWCfgFlags declared in Private.a.
|
|||
|
; <16> 6/12/91 LN Removed #includes for private interfaces from public interfaces.
|
|||
|
; Changed #include 'HardwareEqu.a' to 'HardwarePrivateEqu.a'
|
|||
|
; <15> 8/17/90 KON Added support for Restor Macro so traps can be installed to
|
|||
|
; point to ROM addresses.
|
|||
|
; <14> 7/26/90 KON Removed nsStackerr, now defined in ColorEqu.a
|
|||
|
; <13> 7/24/90 gbm axe some duplicate definitions
|
|||
|
; <12> 7/11/90 gbm argh, more asm warnings bite the dust
|
|||
|
; <11> 6/25/90 DVB Fix alignment problem
|
|||
|
; <10> 6/25/90 CL Included fontPrivate.a for build
|
|||
|
; <9> 6/20/90 CL Taking out rswapmmuMode since it now exists in qdHooks.a.
|
|||
|
; <8> 5/30/90 JT Added equates for hasPenFraction for the included source files
|
|||
|
; that need it.
|
|||
|
; <7> 2/2/90 BAL Unhook the crsr code from the vbl task during the
|
|||
|
; installation process. Deallocate old crsr data
|
|||
|
; structures before jetisoning them.
|
|||
|
; <6> 2/1/90 BAL Unhook the crsr code from the vbl task during the installation
|
|||
|
; process. Deallocate old crsr data structures before jetisoning
|
|||
|
; them.
|
|||
|
; <5> 1/18/90 DVB Include PalettePriv.a
|
|||
|
; <4> 1/17/90 BAL Made the installation of the new crsr code AUX conditional.
|
|||
|
; <3> 1/15/90 BAL For AUX: Only install Translate24To32 if it doesn't already
|
|||
|
; exist.
|
|||
|
; <2> 1/3/90 EMT (with BAL) Moved trap installs to QDTrapInstall.a.
|
|||
|
; <2.7> 11/19/89 BAL Added StdOpcodeProc to the install process.
|
|||
|
; <2.6> 11/18/89 BAL Added QuickerDraw conditional "Quicker" for fast 8-bit
|
|||
|
; arithmetic modes
|
|||
|
; <2.5> 11/17/89 BAL Moved GetPMData outside of a conditional
|
|||
|
; <2.4> 11/16/89 BAL Added GetPMData as a vector for picture unpacking.
|
|||
|
; <2.3> 11/15/89 KON Split GetPMData.a into separate file and included here and in
|
|||
|
; B&W QD.
|
|||
|
; <2.2> 11/8/89 BAL Added NewOpenPicture and suppport for special cased 8 bit
|
|||
|
; arithmetic modes.
|
|||
|
; <2.1> 11/1/89 BAL Reworked to support separate "32-Bit QuickDraw" builds as well.
|
|||
|
; <•2.0> 10/10/89 djw Removed _alloccursor, _initcursor since the magical slot manager
|
|||
|
; patch takes care of that for us.
|
|||
|
; <1.9> 9/25/89 CCH Changed include of "DeclRomEqu.a" to "ROMEqu.a".
|
|||
|
; <1.8> 9/25/89 BAL Made compatible with the current version of qdTrapInstall.a
|
|||
|
; <1.7> 9/25/89 BAL Removed _debugger from install process
|
|||
|
; <1.6> 9/25/89 BAL Merged into System 7.0 EASE build process; broke off text/font
|
|||
|
; stuff.
|
|||
|
; <1.5> 6/30/89 BAL Now supports ram based build of aurora sources
|
|||
|
; <•1.4> 5/29/89 BAL Blasting in 32-Bit QuickDraw version 1.0 Final
|
|||
|
;
|
|||
|
|
|||
|
;--------------------------------------------------------------------------------
|
|||
|
;
|
|||
|
; QuickDraw patch program
|
|||
|
;
|
|||
|
;--------------------------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
BLANKS ON
|
|||
|
STRING ASIS
|
|||
|
|
|||
|
MACHINE MC68020
|
|||
|
;--------------------------------------------------------------------------------
|
|||
|
; This file builds Color QuickDraw
|
|||
|
;
|
|||
|
;--------------------------------------------------------------------------------
|
|||
|
;Modification History
|
|||
|
;
|
|||
|
;
|
|||
|
|
|||
|
IF (&TYPE('useColorICON') = 'UNDEFINED') THEN
|
|||
|
useColorICON EQU 0
|
|||
|
ENDIF
|
|||
|
|
|||
|
IF (&TYPE('installText') = 'UNDEFINED') THEN
|
|||
|
installText EQU 0
|
|||
|
ENDIF
|
|||
|
|
|||
|
IF (&TYPE('installFont') = 'UNDEFINED') THEN
|
|||
|
installFont EQU installText
|
|||
|
ENDIF
|
|||
|
|
|||
|
IF (&TYPE('installAllQD') = 'UNDEFINED') THEN
|
|||
|
installAllQD EQU 0
|
|||
|
ENDIF
|
|||
|
|
|||
|
IF (&TYPE('separateFile') = 'UNDEFINED') THEN
|
|||
|
separateFile EQU 0
|
|||
|
ENDIF
|
|||
|
|
|||
|
ROMPaletteMgr EQU 1
|
|||
|
has32BitQD EQU 1
|
|||
|
Quicker EQU 1
|
|||
|
|
|||
|
IF (&TYPE('hasPenFraction') = 'UNDEFINED') THEN
|
|||
|
IF forROM THEN
|
|||
|
hasPenFraction EQU 0
|
|||
|
ELSE
|
|||
|
hasPenFraction EQU 1
|
|||
|
ENDIF
|
|||
|
ENDIF
|
|||
|
|
|||
|
if (&type('hasCQD') = 'UNDEFINED') then
|
|||
|
hasCQD: equ 1
|
|||
|
endif
|
|||
|
|
|||
|
|
|||
|
PrintinROM EQU 1
|
|||
|
PrNonPortable EQU 1
|
|||
|
WholeErrors EQU 1
|
|||
|
|
|||
|
print off
|
|||
|
|
|||
|
INCLUDE 'quickequ.a'
|
|||
|
INCLUDE 'SysEqu.a'
|
|||
|
INCLUDE 'syserr.a'
|
|||
|
INCLUDE 'toolequ.a'
|
|||
|
INCLUDE 'fasttraps.a'
|
|||
|
INCLUDE 'qdHooks.a'
|
|||
|
INCLUDE 'fontPrivate.a'
|
|||
|
|
|||
|
INCLUDE 'colorequ.a'
|
|||
|
INCLUDE 'SlotMgrEqu.a'
|
|||
|
INCLUDE 'ROMEqu.a'
|
|||
|
INCLUDE 'VideoEqu.a'
|
|||
|
INCLUDE 'HardwarePrivateEqu.a'
|
|||
|
INCLUDE 'PaletteEqu.a'
|
|||
|
INCLUDE 'PalettePriv.a'
|
|||
|
|
|||
|
_FixDiv OPWORD $A84D
|
|||
|
_PMForeColor OPWORD $Aa97
|
|||
|
_PMBackColor OPWORD $Aa98
|
|||
|
|
|||
|
|
|||
|
MACRO
|
|||
|
_SeedFill
|
|||
|
JSR ([$E00+$39*4])
|
|||
|
ENDM
|
|||
|
|
|||
|
MACRO
|
|||
|
_CalcMask
|
|||
|
JSR ([$E00+$38*4])
|
|||
|
ENDM
|
|||
|
|
|||
|
MACRO
|
|||
|
_rGetCTSeed
|
|||
|
JSR ([$E00+$228*4])
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
MACRO
|
|||
|
_ColorThing2Index
|
|||
|
JSR ([$E00+$392*4])
|
|||
|
ENDM
|
|||
|
|
|||
|
MACRO
|
|||
|
_tstMFExists
|
|||
|
move.l ($E00+$9f*4),d0 ;get address of unimplemented trap
|
|||
|
cmp.l ($E00+$8f*4),d0 ;same as OSDispatch?
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;Sleezy Low-Memory Locations pilfered by FCQD
|
|||
|
|
|||
|
FMSynthXtra equ $c1c
|
|||
|
jpCicn equ $1c4c
|
|||
|
|
|||
|
;$d44 is a block of 12 lowmem bytes: Could be good!
|
|||
|
ShieldJunkBase EQU $d44
|
|||
|
|
|||
|
ShieldRect EQU ShieldJunkBase
|
|||
|
ShieldDepth EQU ShieldJunkBase+8
|
|||
|
|
|||
|
;new private equates used by FCQD
|
|||
|
|
|||
|
runMaskBit equ 30 ;bit number for run MASK instruction
|
|||
|
staleRGBbkBit equ 2 ;bit number in PMFlags
|
|||
|
staleRGBfgBit equ 3 ;bit number in PMFlags
|
|||
|
PMVersMask EQU $7FFF ; mask to remove high bit of version
|
|||
|
fAddr32clean EQU $8000 ; flag to say pixMap's baseAddr is 32 bit clean
|
|||
|
|
|||
|
CLUTBusy EQU 13 ; bit number in CTFlags (TransIndex) to
|
|||
|
; mark CLUT is being changed in SetEntries
|
|||
|
|
|||
|
PRINT NOGEN,NOMDIR
|
|||
|
PRINT ON
|
|||
|
|
|||
|
|
|||
|
BlockHead MAIN EXPORT
|
|||
|
|
|||
|
Export CodeStart
|
|||
|
|
|||
|
Import Install
|
|||
|
|
|||
|
bra.l Install
|
|||
|
|
|||
|
DC.B 'ptchQD32'
|
|||
|
ALIGN
|
|||
|
|
|||
|
|
|||
|
GBLC &CurFile ;current file name used by Drawing Vars
|
|||
|
|
|||
|
CodeStart equ *
|
|||
|
|
|||
|
if separateFile then
|
|||
|
lea BlockHead,a0 ; get block start pointer in a0
|
|||
|
rts
|
|||
|
endif
|
|||
|
|
|||
|
if quicker then
|
|||
|
INCLUDE 'arith8blt.a'
|
|||
|
endif
|
|||
|
INCLUDE 'GDevice.a'
|
|||
|
INCLUDE 'LCURSOR.a'
|
|||
|
if installText then
|
|||
|
INCLUDE 'DRAWTEXT.a'
|
|||
|
INCLUDE 'TEXT.a'
|
|||
|
endif
|
|||
|
INCLUDE 'LINES.a'
|
|||
|
INCLUDE 'PUTLINE.a'
|
|||
|
INCLUDE 'DRAWLINE.a'
|
|||
|
INCLUDE 'RGNBLT.a'
|
|||
|
INCLUDE 'RECTS.a'
|
|||
|
INCLUDE 'BITBLT.a'
|
|||
|
INCLUDE 'cCrsrCore.a'
|
|||
|
INCLUDE 'QDUtil.a'
|
|||
|
INCLUDE 'Colorasm.a'
|
|||
|
INCLUDE 'Patterns.a'
|
|||
|
INCLUDE 'GRAFAsm.a'
|
|||
|
INCLUDE 'PICTURES.a'
|
|||
|
INCLUDE 'getPMData.a'
|
|||
|
INCLUDE 'POLYGONS.a'
|
|||
|
INCLUDE 'RRECTS.a'
|
|||
|
INCLUDE 'DRAWARC.a'
|
|||
|
INCLUDE 'BITMAPS.a'
|
|||
|
INCLUDE 'REGIONS.a'
|
|||
|
INCLUDE 'SEEKRGN.a'
|
|||
|
INCLUDE 'STRETCH.a'
|
|||
|
INCLUDE 'seekMask.a'
|
|||
|
INCLUDE 'OVALS.a'
|
|||
|
INCLUDE 'ARCS.a'
|
|||
|
INCLUDE 'SORTPOINTS.a'
|
|||
|
INCLUDE 'PUTRGN.a'
|
|||
|
INCLUDE 'ColorMgr.a'
|
|||
|
INCLUDE 'ANGLES.a'
|
|||
|
INCLUDE 'PUTOVAL.a'
|
|||
|
INCLUDE 'PACKRGN.a'
|
|||
|
INCLUDE 'RGNOP.a'
|
|||
|
INCLUDE 'MaskAsm.a'
|
|||
|
INCLUDE 'PaletteMgr.a'
|
|||
|
if installText then
|
|||
|
INCLUDE 'fontmgr.a'
|
|||
|
endif
|
|||
|
INCLUDE 'GWorld.a'
|
|||
|
|
|||
|
;----------------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
CodeEnd PROC EXPORT
|
|||
|
|
|||
|
bra.s @1
|
|||
|
@CutBack DC.L 0 ;do nothing flag for cut back code
|
|||
|
@1
|
|||
|
lea @CutBack,a1 ;set up pointer to end o' code
|
|||
|
rts
|
|||
|
|
|||
|
|
|||
|
Install PROC EXPORT
|
|||
|
IMPORT CodeEnd,CodeStart
|
|||
|
IMPORT FastStart
|
|||
|
|
|||
|
lea CleanStart,A0
|
|||
|
move.l A0,D0
|
|||
|
_StripAddress ; clean the pc
|
|||
|
move.l D0,-(sp)
|
|||
|
DummyTask rts ; go there
|
|||
|
CleanStart
|
|||
|
|
|||
|
PEA -4(A5) ; push address of QuickDraw vars
|
|||
|
_InitGraf ; initialize QuickDraw
|
|||
|
_HideCursor ; restore the screen data
|
|||
|
|
|||
|
|
|||
|
if separateFile then
|
|||
|
bsr.l CodeStart ; get src pointer in a0
|
|||
|
bsr.s CodeEnd ; get end pointer in a1
|
|||
|
sub.l a0,a1 ; compute size
|
|||
|
move.l a1,d0 ; get size in d0
|
|||
|
sub.l d0,BufPtr ; make room above stack
|
|||
|
move.l BufPtr,a1 ; get dst in a1
|
|||
|
MOVE.L A1,A4 ; copy dst ptr
|
|||
|
sub.l a0,a4 ; compute there-here offset
|
|||
|
_BlockMove
|
|||
|
else
|
|||
|
sub.l a4,a4 ; compute there-here offset
|
|||
|
endif
|
|||
|
|
|||
|
MOVE.W HwCfgFlags,D0 ; check ‘em the compulsive way
|
|||
|
BTST #hwCbAUX,D0 ; is it A/UX time?
|
|||
|
BNE.S @skipCrsr ; if so, show the crsr
|
|||
|
lea DummyTask,a0
|
|||
|
move.l a0,JCrsrTask ; unhook the crsr during install
|
|||
|
@skipCrsr
|
|||
|
|
|||
|
JSR FastStart
|
|||
|
|
|||
|
|
|||
|
MOVE.W HwCfgFlags,D0 ; check ‘em the compulsive way
|
|||
|
BTST #hwCbAUX,D0 ; is it A/UX time?
|
|||
|
BNE.S @AUX ; if so, show the crsr
|
|||
|
|
|||
|
move.l crsrPtr,a0 ; pick up handle to crsr save record
|
|||
|
move.l (a0),a2
|
|||
|
move.l CCMap(a2),-(sp) ; get handle to crsr pixmap
|
|||
|
_disposPixmap
|
|||
|
move.l CCData(a2),a0 ; get handle to crsr color data
|
|||
|
_disposHandle
|
|||
|
move.l CCSave(a2),a0 ; get handle to save bits under crsr
|
|||
|
_disposHandle
|
|||
|
move.l crsrPtr,a0 ; pick up handle to crsr save record
|
|||
|
_disposHandle
|
|||
|
|
|||
|
|
|||
|
MOVE.L MINUSONE,CRSRPTR ; deallocate crsr data
|
|||
|
|
|||
|
; LEA JAllocCrsr,A1 ; first entry in second table
|
|||
|
; move.l (a1),a1 ; get vector
|
|||
|
; JSR (a1) ; allocate it right
|
|||
|
; _InitCursor
|
|||
|
|
|||
|
bra.s @noAUX
|
|||
|
@AUX
|
|||
|
_InitCursor ; make sure the cursor gets shown
|
|||
|
@noAUX
|
|||
|
clr.l -(sp) ; take params from theGD
|
|||
|
clr.l -(sp)
|
|||
|
clr.w -(sp)
|
|||
|
_MakeITable ; force a rebuild of the ITab
|
|||
|
|
|||
|
|
|||
|
IF useColorICON THEN
|
|||
|
|
|||
|
theZone equ $118
|
|||
|
sysZone equ $2a6
|
|||
|
|
|||
|
move.l theZone,-(sp)
|
|||
|
move.l sysZone,theZone
|
|||
|
|
|||
|
subq #4,sp ;make room for result
|
|||
|
move.w #32,-(sp) ;push id
|
|||
|
_getCicon
|
|||
|
move.l (sp)+,a0 ;get cicn handle
|
|||
|
move.l a0,jpCicn ;save for later
|
|||
|
_MoveHHi
|
|||
|
_HLock
|
|||
|
|
|||
|
MOVE.L (A0),A3 ; keep pointer in A3
|
|||
|
MOVE iconPMap+bounds+bottom(A3),D3 ; get bottom
|
|||
|
SUB iconPMap+bounds+top(A3),D3 ; calc height, keep in D3
|
|||
|
|
|||
|
; set the base addresses of the pixMap, the mask, and the bitMap
|
|||
|
|
|||
|
LEA iconRec(A3),A0 ; point to the mask data
|
|||
|
MOVE.L A0,iconMask+baseAddr(A3) ; and set the mask's base address
|
|||
|
MOVE iconMask+rowBytes(A3),D0 ; get mask's rowbytes
|
|||
|
MULU D3,D0 ; get size of mask
|
|||
|
ADD.L D0,A0 ; point to BitMap data
|
|||
|
MOVE.L A0,iconBMap+baseAddr(A3) ; and set the b/w icon's base address
|
|||
|
|
|||
|
MOVE.L iconData(A3),A0 ; get the pixmap data handle
|
|||
|
_MoveHHi
|
|||
|
_HLock
|
|||
|
MOVE.L (A0),A0 ; point at the data
|
|||
|
MOVE.L A0,iconPMap+baseAddr(A3) ; and set the color icon's base address
|
|||
|
|
|||
|
move.l (sp)+,theZone
|
|||
|
|
|||
|
ENDIF
|
|||
|
|
|||
|
if not separateFile then
|
|||
|
bsr.l CodeEnd ; get end pointer in a1
|
|||
|
move.l a1,a0 ; copy for cut back code
|
|||
|
endif
|
|||
|
rts
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;--------------------------------------------------------------------------------------
|
|||
|
|
|||
|
FastStart PROC EXPORT
|
|||
|
IMPORT INITCRTABLE,CRSRVBLTASK,Translate24To32
|
|||
|
|
|||
|
; This patch installs the Translate24To32 routine as trap number $A091 if it doesn't
|
|||
|
; already exist. Since this is the very first implementation of Translate24To32,
|
|||
|
; if another version is already installed, it is a later version, which we don't want
|
|||
|
; to override.
|
|||
|
|
|||
|
; Does the Translate24To32 dispatch trap exist?
|
|||
|
IF NOT forROM THEN ; SuperMario is a 32-bit only ROM.
|
|||
|
MOVE.W #$A091, D0 ; Translate24To32 Trap number
|
|||
|
_GetTrapAddress ,NewOS ; get the address of Translate24To32
|
|||
|
MOVEA.L A0, A1 ; Hold it for a sec
|
|||
|
MOVE.W #$A89F, D0 ; get address of Unimplemented trap
|
|||
|
_GetTrapAddress
|
|||
|
CMPA.L A0,A1 ; see if a later version is already installed
|
|||
|
BNE.S @skip ; if so, we're done
|
|||
|
|
|||
|
move.w #$91,d0
|
|||
|
lea ((Translate24To32).L,pc),a0 ; install address translation routine
|
|||
|
ADD.L A4,a0 ; really get the actual address
|
|||
|
_SetTrapAddress ,newOS
|
|||
|
@skip
|
|||
|
ENDIF
|
|||
|
lea $4081c11c,a0 ;point to copyright notice in rom78
|
|||
|
move.l a0,d7 ;make a copy
|
|||
|
|
|||
|
MOVE.W HwCfgFlags,D0 ; check ‘em the compulsive way
|
|||
|
BTST #hwCbAUX,D0 ; is it A/UX time?
|
|||
|
BNE.S MDONE ; if so, skip crsr installs
|
|||
|
|
|||
|
;offset from here to there in a4
|
|||
|
|
|||
|
lea ((InitCrTable).L,pc),a2 ; get address of jump table
|
|||
|
LEA JHideCursor,A1 ; first entry in the lo-mem jump table
|
|||
|
MOVE.L A2,A0 ; get a trashable copy of the table addr
|
|||
|
MOVEQ #7,D1 ; there are 8 vectors
|
|||
|
@8 MOVEQ #0,D2 ; clear the register for add
|
|||
|
MOVE.W (A0)+,D2 ; get a vector (actually an offset)
|
|||
|
ADD.L A2,D2 ; get the actual address
|
|||
|
ADD.L A4,D2 ; really get the actual address
|
|||
|
MOVE.L D2,(A1)+ ; and put in the lo-mem table
|
|||
|
DBRA D1,@8 ; do them all
|
|||
|
|
|||
|
LEA JAllocCrsr,A1 ; first entry in second table
|
|||
|
MOVEQ #1,D1 ; there are 2 vectors
|
|||
|
@9 MOVEQ #0,D2 ; clear the register for add
|
|||
|
MOVE.W (A0)+,D2 ; get a vector (actually an offset)
|
|||
|
ADD.L A2,D2 ; get the actual address
|
|||
|
ADD.L A4,D2 ; really get the actual address
|
|||
|
MOVE.L D2,(A1)+ ; and put in the lo-mem table
|
|||
|
DBRA D1,@9 ; do them all
|
|||
|
|
|||
|
MOVE.L Mouse,D0 ; get the current mouse position...
|
|||
|
LEA MTemp,A0 ; point to the temp mouse variable
|
|||
|
MOVE.L D0,(A0)+ ; put MTemp AT 15,15
|
|||
|
MOVE.L D0,(A0)+ ; put RawMouse AT 15,15 TOO
|
|||
|
MOVE.L D0,(A0)+ ; put Mouse AT 15,15 TOO
|
|||
|
MOVE.L #0,(A0)+ ; top = 0, left = 0
|
|||
|
MOVE.W ColLines,(A0)+ ; set bottom
|
|||
|
MOVE.W RowBits,(A0) ; set left
|
|||
|
MOVE.W #$0006,CrsrThresh ; CrsrThresh
|
|||
|
MDONE
|
|||
|
|
|||
|
MOVEM.L A2-A3,-(SP) ; save regs
|
|||
|
|
|||
|
LEA LastTrap,A2 ; point to end
|
|||
|
LEA FirstTrap,A3 ; point to first trap
|
|||
|
NxtTrap MOVE.L A3,d1 ; get pointer to offset
|
|||
|
ADD.L (A3)+,d1 ; add offset to pointer
|
|||
|
ADD.L A4,D1 ; really get the actual address
|
|||
|
moveq #0,d0
|
|||
|
MOVE.W (A3)+,D0 ; get trap number
|
|||
|
bpl.s @NotROMAddress
|
|||
|
and.w #$7fff,d0 ;strip high bit indicating it's a ROM address
|
|||
|
move.l -6(a3),d1 ;get ROM offset
|
|||
|
add.l ROMBase,d1 ;make it real
|
|||
|
@NotROMAddress
|
|||
|
lsl.l #2,d0
|
|||
|
move.l d0,a0
|
|||
|
add.w #$0e00,a0
|
|||
|
move.l d1,(a0) ; _SetTrapAddress ,New,Tool
|
|||
|
CMP.L A3,A2 ; done yet?
|
|||
|
BNE.S NxtTrap ; =>no
|
|||
|
|
|||
|
MOVE.W HwCfgFlags,D0 ; check ‘em the compulsive way
|
|||
|
BTST #hwCbAUX,D0 ; is it A/UX time?
|
|||
|
BNE.S @AUX ; if so, skip crsr installs
|
|||
|
lea ((CrsrVBLTask).L,pc),a0 ; install cursor VBL task
|
|||
|
ADD.L A4,A0 ; really get the actual address
|
|||
|
MOVE.L A0,JCrsrTask ; JCrsrTask
|
|||
|
@AUX
|
|||
|
|
|||
|
move.l $1204,jswapfont ;font manager hack
|
|||
|
MOVEM.L (SP)+,A2-A3 ; restore regs
|
|||
|
|
|||
|
RTS ; and return
|
|||
|
|
|||
|
INCLUDE 'QDTrapInstall.a'
|
|||
|
|
|||
|
END
|
|||
|
|