mirror of
https://github.com/elliotnunn/boot3.git
synced 2025-01-14 06:29:45 +00:00
5b0f0cc134
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
181 lines
4.7 KiB
Plaintext
181 lines
4.7 KiB
Plaintext
;EASE$$$ READ ONLY COPY of file ÒOVALS.m.aÓ
|
|
; 1.1 CCH 11/11/1988 Fixed Header.
|
|
; 1.0 CCH 11/ 9/1988 Adding to EASE.
|
|
; OLD REVISIONS BELOW
|
|
; 1.2 CCH 10/12/1988 Changed Òm.GrafType.aÓ to ÒGrafType.m.aÓ.
|
|
; 1.1 MSH 5/18/88 Changed inclides to use m.GRAPHTYPES to work under EASE.
|
|
; 1.0 BBM 2/11/88 Adding file for the first time into EASEÉ
|
|
; END EASE MODIFICATION HISTORY
|
|
|
|
|
|
BLANKS ON
|
|
STRING ASIS
|
|
|
|
INCLUDE 'GRAFTYPES.m.A'
|
|
;-----------------------------------------------------------
|
|
;
|
|
;
|
|
; *** * * * * ***
|
|
; * * * * * * * * *
|
|
; * * * * * * * *
|
|
; * * * * * * * ***
|
|
; * * * * ***** * *
|
|
; * * * * * * * * *
|
|
; *** * * * ***** ***
|
|
;
|
|
;
|
|
;
|
|
StdOval PROC EXPORT
|
|
IMPORT CheckPic,PutPicVerb,PutPicRect
|
|
IMPORT PutOval,PushVerb,DrawArc
|
|
;---------------------------------------------------------------
|
|
;
|
|
; PROCEDURE StdOval(verb: GrafVerb; r: Rect);
|
|
;
|
|
; A6 OFFSETS OF PARAMS AFTER LINK:
|
|
;
|
|
PARAMSIZE EQU 6
|
|
VERB EQU PARAMSIZE+8-2 ;GRAFVERB
|
|
RECT EQU VERB-4 ;LONG, ADDR OF RECT
|
|
|
|
OVWD EQU -2 ;WORD
|
|
OVHT EQU OVWD-2 ;WORD
|
|
VARSIZE EQU OVHT ;TOTAL BYTES OF LOCALS
|
|
|
|
|
|
LINK A6,#VARSIZE ;ALLOCATE STACK FRAME
|
|
MOVEM.L D7/A3-A4,-(SP) ;SAVE REGS
|
|
MOVE.B VERB(A6),D7 ;GET VERB
|
|
JSR CHECKPIC ;SET UP A4,A3 AND CHECK PICSAVE
|
|
BLE.S NOTPIC ;BRANCH IF NOT PICSAVE
|
|
|
|
MOVE.B D7,-(SP)
|
|
JSR PutPicVerb ;PUT ADDIONAL PARAMS TO THEPIC
|
|
MOVEQ #$50,D0 ;PUT OVALNOUN IN HI NIBBLE
|
|
ADD D7,D0 ;PUT VERB IN LO NIBBLE
|
|
MOVE.B D0,-(SP) ;PUSH OPCODE
|
|
MOVE.L RECT(A6),-(SP) ;PUSH ADDR OF RECT
|
|
JSR PutPicRect ;PUT OPCODE AND RECTANGLE
|
|
|
|
NOTPIC MOVE.L RECT(A6),A0 ;POINT TO RECT
|
|
MOVE RIGHT(A0),D0
|
|
SUB LEFT(A0),D0
|
|
MOVE D0,OVWD(A6) ;OVWD := R.RIGHT - R.LEFT
|
|
MOVE BOTTOM(A0),D0
|
|
SUB TOP(A0),D0
|
|
MOVE D0,OVHT(A6) ;OVHT := R.BOTTOM - R.TOP
|
|
|
|
MOVE.L A0,-(SP) ;PUSH ADDR OF RECT
|
|
TST.B D7 ;IS VERB FRAME ?
|
|
BNE.S NOTFR ;NO, CONTINUE
|
|
TST.L RGNSAVE(A3) ;YES, IS RGNSAVE TRUE ?
|
|
BEQ.S NOTRGN ;NO, CONTINUE
|
|
|
|
MOVE.L A0,-(SP) ;YES, PUSH ADDR OF RECT
|
|
MOVE.L OVHT(A6),-(SP) ;PUSH OVWD, OVHT
|
|
MOVE.L RGNBUF(A4),-(SP) ;PUSH RGNBUF
|
|
PEA RGNINDEX(A4) ;PUSH VAR RGNINDEX
|
|
PEA RGNMAX(A4) ;PUSH VAR RGNMAX
|
|
JSR PutOval ;ADD AN OVAL TO THERGN
|
|
|
|
NOTRGN MOVE.B #1,-(SP) ;PUSH HOLLOW = TRUE
|
|
BRA.S DOIT
|
|
NOTFR CLR.B -(SP) ;PUSH HOLLOW = FALSE
|
|
DOIT MOVE.L OVHT(A6),-(SP) ;PUSH OVWD,OVHT
|
|
JSR PushVerb ;PUSH MODE AND PATTERN
|
|
CLR -(SP) ;PUSH STARTANGLE = 0
|
|
MOVE #360,-(SP) ;PUSH ARCANGLE = 360
|
|
|
|
; DrawArc(r,hollow,ovWd,ovHt,mode,pat,startAng,arcAng);
|
|
|
|
JSR DrawArc
|
|
MOVEM.L (SP)+,D7/A3-A4 ;RESTORE REGS
|
|
UNLINK PARAMSIZE,'STDOVAL '
|
|
|
|
|
|
|
|
FrameOval PROC EXPORT
|
|
EXPORT CallOval,PaintOval,EraseOval,InvertOval,FillOval
|
|
;-----------------------------------------------------
|
|
;
|
|
; PROCEDURE FrameOval(* r: Rect *);
|
|
;
|
|
MOVEQ #FRAME,D0 ;VERB = FRAME
|
|
BRA.S CallOval ;SHARE COMMON CODE
|
|
|
|
|
|
;-----------------------------------------------------
|
|
;
|
|
; PROCEDURE PaintOval(* r: Rect *);
|
|
;
|
|
PaintOval
|
|
MOVEQ #PAINT,D0 ;VERB = PAINT
|
|
BRA.S CallOval ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE EraseOval(* r: Rect *);
|
|
;
|
|
EraseOval
|
|
MOVEQ #ERASE,D0 ;VERB = ERASE
|
|
BRA.S CallOval ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE InvertOval(* r: Rect *);
|
|
;
|
|
InvertOval
|
|
MOVEQ #INVERT,D0 ;VERB = INVERT
|
|
BRA.S CallOval ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE FillOval(* r: Rect; pat: Pattern *);
|
|
;
|
|
FillOval
|
|
MOVE.L (SP)+,A0 ;POP RETURN ADDR
|
|
MOVE.L (SP)+,A1 ;POP ADDR OF PATTERN
|
|
MOVE.L A0,-(SP) ;PUT RETURN ADDR BACK
|
|
MOVE.L GRAFGLOBALS(A5),A0 ;POINT TO LISAGRAF GLOBALS
|
|
MOVE.L THEPORT(A0),A0 ;GET CURRENT GRAFPORT
|
|
LEA FILLPAT(A0),A0 ;POINT TO FILLPAT
|
|
MOVE.L (A1)+,(A0)+ ;COPY PAT INTO FILLPAT
|
|
MOVE.L (A1)+,(A0)+ ;ALL EIGHT BYTES
|
|
MOVEQ #FILL,D0 ;VERB = FILL
|
|
BRA.S CallOval ;SHARE COMMON CODE
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
;
|
|
; PROCEDURE CallOval(r: Rect);
|
|
;
|
|
; code shared by FrameOval, PaintOval, EraseOval, InvertOval, and FillOval.
|
|
; enter with verb in D0.
|
|
;
|
|
CallOval
|
|
MOVE.L (SP)+,A0 ;POP RETURN ADDR
|
|
MOVE.L (SP)+,A1 ;POP ADDR OF RECT
|
|
MOVE.B D0,-(SP) ;PUSH VERB
|
|
MOVE.L A1,-(SP) ;PUSH ADDR OF RECT
|
|
MOVE.L A0,-(SP) ;RESTORE RETURN ADDR
|
|
MOVE.L GRAFGLOBALS(A5),A0 ;POINT TO LISAGRAF GLOBALS
|
|
MOVE.L THEPORT(A0),A0 ;GET CURRENT GRAFPORT
|
|
MOVE.L GRAFPROCS(A0),D0 ;IS GRAFPROCS NIL ?
|
|
MOVE.L JStdOval,A0 ;get piece of trap table
|
|
BEQ.S USESTD ;YES, USE STD PROC
|
|
MOVE.L D0,A0
|
|
MOVE.L OVALPROC(A0),A0 ;NO, GET PROC PTR
|
|
USESTD JMP (A0) ;GO TO IT
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|