mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
175 lines
4.5 KiB
Plaintext
175 lines
4.5 KiB
Plaintext
;
|
|
; File: LCursor.a
|
|
;
|
|
; Contains: xxx put contents here (or delete the whole line) xxx
|
|
;
|
|
; Written by: xxx put name of writer here (or delete the whole line) xxx
|
|
;
|
|
; Copyright: © 1981-1990 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; This file is used in these builds: Mac32 Bigbang Sys606
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <3> 9/17/90 BG Removed <2>. 040s are now behaving more reliably.
|
|
; <2> 6/26/90 BG Added EclipseNOPs for flakey 040s.
|
|
; <¥1.4> 5/29/89 BAL Blasting in 32-Bit QuickDraw version 1.0 Final
|
|
; <¥1.3> 4/12/89 BAL Blasting in 32-Bit QuickDraw 1.0B1
|
|
; 10/13/86 EHB Moved AllocCrsr to CRSRCORE; Call it from AllocCursor
|
|
; 10/6/86 EHB Redid AllocCrsr to lock handles down and expand data.
|
|
; 10/3/86 EHB Moved AllocCrsr here from GrafAsm Added routine SetCCursor
|
|
;
|
|
|
|
BLANKS ON
|
|
STRING ASIS
|
|
|
|
;------------------------------------------------------------------
|
|
;
|
|
; --> LCURSOR.TEXT
|
|
;
|
|
; Interfaces to low-level cursor routines.
|
|
;
|
|
; New color cursor support routines.
|
|
;
|
|
;------------------------------------------------------------------
|
|
|
|
AllocCursor PROC EXPORT
|
|
IMPORT AllocCrsr
|
|
;----------------------------------------------------------
|
|
;
|
|
; PROCEDURE AllocCursor;
|
|
;
|
|
|
|
LEA AllocCrsr,A0 ;get default cursor routine
|
|
MOVE.L JAllocCrsr,D0 ;has vector been initialized?
|
|
BEQ.S @0 ;=>no, use default routine
|
|
MOVE.L D0,A0 ;else use routine in vector
|
|
@0 JMP (A0) ;and call it
|
|
|
|
|
|
InitCursor PROC EXPORT
|
|
;----------------------------------------------------------
|
|
;
|
|
; PROCEDURE InitCursor;
|
|
;
|
|
MOVE.L GRAFGLOBALS(A5),A0 ;POINT TO QUICKDRAW GLOBALS
|
|
PEA ARROW(A0) ;PUSH ADDR OF ARROW
|
|
_SetCursor ;INSTALL ARROW CURSOR
|
|
MOVE.L JInitCrsr,A0 ;get lo mem pointer
|
|
JMP (A0) ;and call it
|
|
|
|
|
|
|
|
SetCursor PROC EXPORT
|
|
;---------------------------------------------------
|
|
;
|
|
; PROCEDURE SetCursor(crsr: Cursor);
|
|
;
|
|
MOVE.L 4(SP),A0 ;Point to Cursor
|
|
MOVE.L HOTSPOT+V(A0),-(SP) ;PUSH HOTX & HOTY
|
|
MOVE #16,-(SP) ;HEIGHT:=16
|
|
PEA DATA(A0) ;PUSH ADDR OF DATA
|
|
PEA MASK(A0) ;PUSH ADDR OF MASK
|
|
MOVE.L JSetCrsr,A0 ;get lo mem vector
|
|
JSR (A0) ;call vector
|
|
MOVE.L (SP)+,(SP) ;strip param
|
|
RTS ;and return
|
|
|
|
|
|
SetCCursor PROC EXPORT
|
|
;---------------------------------------------------
|
|
;
|
|
; PROCEDURE SetCCursor(CCRSR: CCrsrHandle);
|
|
;
|
|
; For compatibility with other cursor drawing routines, set up the
|
|
; old cursor data as before, but make sure it's hidden so the B/W cursor
|
|
; isn't displayed.
|
|
|
|
; _HideCursor ; make sure it's hidden
|
|
; MOVE.L 4(SP),A0 ; get the color cursor handle
|
|
; MOVE.L (A0),A0 ; get the color cursor pointer
|
|
; PEA CRSR1DATA(A0) ; point to the old-style cursor
|
|
; _SetCursor ; and set it the old way
|
|
|
|
MOVE.L 4(SP),-(SP) ; Push handle to color cursor
|
|
MOVE.L JSetCCrsr,A0 ; get lo mem vector
|
|
JSR (A0) ; call vector (but don't call him hector)
|
|
; _ShowCursor ; balance is a virtue
|
|
MOVE.L (SP)+,(SP) ; strip param
|
|
RTS ; and return
|
|
|
|
|
|
|
|
HideCursor PROC EXPORT
|
|
;---------------------------------------------------------
|
|
;
|
|
; PROCEDURE HideCursor;
|
|
;
|
|
; ALL REGS PRESERVED.
|
|
;
|
|
MOVE.L JHideCursor,-(SP) ;get lo mem vector
|
|
RTS ;and call it
|
|
|
|
|
|
|
|
ShowCursor PROC EXPORT
|
|
;---------------------------------------------------------
|
|
;
|
|
; PROCEDURE ShowCursor;
|
|
;
|
|
; ALL REGS PRESERVED.
|
|
;
|
|
MOVE.L JShowCursor,-(SP) ;get lo mem vector
|
|
RTS ;and call it
|
|
|
|
|
|
|
|
ShieldCursor PROC EXPORT
|
|
;---------------------------------------------------------
|
|
;
|
|
; PROCEDURE ShieldCursor(shieldRect: Rect; offset: Point);
|
|
;
|
|
; ALL REGS PRESERVED.
|
|
;
|
|
MOVEM.L D0-D3/A0-A1,-(SP) ;SAVE REGS
|
|
MOVE.L 32(SP),A0 ;POINT TO SHIELDRECT
|
|
MOVEM.W (A0)+,D0/D1/D2/D3 ;GET TOP ... RIGHT
|
|
LEA 28(SP),A1
|
|
SUB (A1),D0 ;TOP - OFFSET.V
|
|
SUB (A1)+,D2 ;BOTTOM - OFFSET.V
|
|
SUB (A1),D1 ;LEFT - OFFSET.H
|
|
SUB (A1),D3 ;RIGHT - OFFSET.H
|
|
MOVE D1,-(SP) ;PUSH GLOBAL LEFT
|
|
MOVE D0,-(SP) ;PUSH GLOBAL TOP
|
|
MOVE D3,-(SP) ;PUSH GLOBAL RIGHT
|
|
MOVE D2,-(SP) ;PUSH GLOBAL BOTTOM
|
|
MOVE.L JShieldCursor,A0 ;get lo mem vector
|
|
JSR (A0) ;and call it
|
|
MOVEM.L (SP)+,D0-D3/A0-A1 ;RESTORE REGS
|
|
MOVE.L (SP)+,(SP)
|
|
MOVE.L (SP)+,(SP) ;STRIP 8 BYTES
|
|
RTS ;AND RETURN
|
|
|
|
|
|
|
|
ObscureCursor PROC EXPORT
|
|
;---------------------------------------------------------
|
|
;
|
|
; PROCEDURE ObscureCursor;
|
|
;
|
|
; Hide the cursor image until the next time the mouse moves.
|
|
;
|
|
MOVE.L JCrsrObscure,A0 ;get lo mem vector
|
|
JMP (A0) ;and call it
|
|
|
|
|
|
ds.b 32
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|