* ============================================================================ *
*	ExpandIBox.asm: expands or contracts an IBox on all sides
*
*		struct IBox *ExpandIBox(struct IBox *b, int dx, int dy)
*					     		a1  			d0      d1
*
*	This function moves the left and right edges of an IBox outward by the
*	amount specified in dx, and the top and bottom edges by dy.
* ============================================================================ *

			include		"exec/types.i"
			include		"intuition/intuition.i"
			include		"macros.i"

			SECTION		expandibox.asm,CODE

			xdef		_ExpandIBox,ExpandIBox

_ExpandIBox:
; changed to use register calling parameters
;			move.l		4(sp),a1				; IBox
;			move.l		8(sp),d0				; dx
;			move.l		12(sp),d1				; dy
ExpandIBox:
			sub.w		d0,ibox_Left(a1)
			add.w		d0,ibox_Width(a1)
			add.w		d0,ibox_Width(a1)
			sub.w		d1,ibox_Top(a1)
			add.w		d1,ibox_Height(a1)
			add.w		d1,ibox_Height(a1)
			move.l		a1,d0					; return address of box
			rts

			end

