;****h* Beast/BeastConstants ************************************************
;*
;*	NAME
;*	  BeastConstants -- Constants definition for BEAST. (v0.1)
;*
;*	COPYRIGHT
;*	  Maverick Software Development
;*
;*	FUNCTION
;*
;*	AUTHOR
;*	  Jacco van Weert
;*
;*	CREATION DATE
;*	  23-Apr-95
;*
;*	MODIFICATION HISTORY
;*
;*	NOTES
;*
;****************************************************************************

	IFND	UTILITY_TAGITEM_I
	INCLUDE	"utility/tagitem.i"
	ENDC
	IFND	UTILITY_HOOKS_I
	INCLUDE	"utility/hooks.i"
	ENDC

;****** BeastConstants/BSTC_Root ********************************************
;*
;*	NAME
;*	  BSTC_Root -- Root class. (v0.1)
;*
;****************************************************************************
			rsreset
BSTC_Root:		rs.b	LN_SIZE
BSTC_Size:		rs.l	1		;* Size of the total Class.
BSTC_InputPorts:	rs.b	MLH_SIZE
BSTC_OutputPorts:	rs.b	MLH_SIZE
BSTC_Methods:		rs.b	MLH_SIZE	;* List of supported methods (CLSS_MLxx)
BSTC_ObjectCount:	rs.l	1		;* How many objects created of this class?
BSTC_ExtClass:		rs.l	1		;* Pointer to ExtClass library
BSTC_UserData:		rs.l	1
BSTC_RootSIZE:		rs.w	0

;****** BeastConstants/CLSS_MethodList **************************************
;*
;*	NAME
;*	  CLSS_MethodList -- List of methods. (v0.1)
;*
;****************************************************************************
			rsreset
CLSS_MethodList:	rs.b	MLN_SIZE
CLSS_MLMethodID:	rs.l	1		;* Method ID
CLSS_MLHookList:	rs.b	MLH_SIZE	;* List of method calls
CLSS_MethodListSIZE:	rs.w	0


;****** BeastConstants/ML_Hook **********************************************
;*
;*	NAME
;*	  ML_Hook -- Method hook. (v0.1)
;*
;****************************************************************************
			rsreset
ML_Hook:		rs.b	h_SIZEOF
ML_HookSIZE:		rs.w	0

;****** BeastConstants/BSTO_System ******************************************
;*
;*	NAME
;*	  BSTO_System -- Standard Object. (v0.1)
;*
;****************************************************************************
			rsreset
OBJ_BSTObject:		rs.b	MLN_SIZE
OBJ_DataSection:	rs.l	1		;* Pointer to the data section (WILL NOT CHANGE)
OBJ_InputList:		rs.b	MLH_SIZE	;* Pointer a list of inputs
OBJ_OutputList:		rs.b	MLH_SIZE	;* Pointer a list of outputs
OBJ_Class:		rs.l	1		;* ^ObjectClass
OBJ_Parent:		rs.l	1		;* Parent-Object
OBJ_Childs:		rs.b	MLH_SIZE	;* Childs-Objects
OBJ_Flags:		rs.l	1		;* Object-Flags
OBJ_SystemSIZE:		rs.w	0

	BITDEF	OBJ,Dispose,0			;* The object must be disposed
	BITDEF	OBJ,Skip,1			;* This object will be skipped in the method calls
	BITDEF	OBJ,SubClass,2			;* Object is an integral part of another object.

;****** BeastConstants/OBJ_InputOutput **************************************
;*
;*	NAME
;*	  OBJ_InputOutput -- (v0.1)
;*
;****************************************************************************

;	**********************************
;	**** OIL ObjectInputLink structure
			rsreset
OIL_Connection:		rs.b	MLN_SIZE	;* OIL = Object Input Link
OIL_Object:		rs.l	1		;* Pointer to *this* object
OIL_FromMethodOOL:	rs.l	1		;* Pointer to the connected input OOL structure
OIL_InputMethod:	rs.l	1		;* The input method ID
OIL_ConnectionSIZE:	rs.w	0

;	***********************************
;	**** OOL ObjectOutputLink structure
			rsreset
OOL_Connection:		rs.b	MLN_SIZE	;* OOL = Object Output Link
OOL_Object:		rs.l	1		;* Pointer to *this* object
OOL_ToMethodOIL:	rs.l	1		;* Pointer to the connected output OIL structure
OOL_OutputMethod:	rs.l	1		;* The output method ID
OOL_ConnectionSIZE:	rs.w	0


;	**********************************************
;	**** CIL ClassInputLink structure OBSOLETE!!!!
			rsreset
CIL_Input:		rs.b	MLN_SIZE
CIL_InputMethod:	rs.l	1
CIL_InputPortname:	rs.l	1
CIL_InputSIZE:		rs.w	0

;	***********************************************
;	**** COL ClassOutputLink structure OBSOLETE!!!!
			rsreset
COL_Output:		rs.b	MLN_SIZE
COL_OutputMethod:	rs.l	1
COL_OutputPortname:	rs.l	1
COL_OutputSIZE:		rs.w	0




;****** BeastConstants/BST_Base *********************************************
;*
;*	NAME
;*	  BST_Base -- Base structure. (v0.1)
;*
;****************************************************************************
			rsreset
BST_Base:		rs.b	OBJ_SystemSIZE
BST_DefinedClasses:	rs.b	MLH_SIZE
BST_BaseSIZE:		rs.w	0

;****** BeastConstants/BST_StandardMethods **********************************
;*
;*	NAME
;*	  BST_StandardMethods -- Standard methods. (v0.1)
;*
;*	RESULT
;*
;****************************************************************************

OBM_bits_FUNCTION =$F0000000
OBM_type_None	  =$00000000

OBM_bits_FAMILY	  =$0F000000
OBM_type_Plain	  =$00000000
OBM_type_System	  =$01000000
OBM_type_General  =$02000000
OBM_type_B52	  =$03000000
OBM_type_BeaVis	  =$04000000
OBM_type_BFS	  =$05000000
OBM_type_BeaMM	  =$06000000
OBM_type_BEASTAR  =$07000000


;	/**** Numbers   $0000040 - $000007f Free */
OBM_local0	=$0000040
;	/**** Numbers   $0000100 - $00007ff Free */
OBM_local1	=$0000100
;	/**** Numbers 	$0004000 - $0004fff Free */
OBM_local2	=$0004000
;	/**** Numbers   $0100000 - $01fffff Free */
OBM_local3	=$0100000

OBM_INPUT       =$0000080
OBM_OUTPUT      =$0000081
OBM_INPUT2      =$0000082
OBM_OUTPUT2     =$0000083
OBM_INPUT3      =$0000084
OBM_OUTPUT3     =$0000085
OBM_INPUT4      =$0000086
OBM_OUTPUT4     =$0000087
OBM_SYSINPUT    =$0000088
OBM_SYSOUTPUT   =$0000089
OBM_IDCMPINPUT	=$000008A
OBM_IDCMPOUTPUT	=$000008B
OBM_BVSINPUT	=$000008C
OBM_BVSOUTPUT	=$000008D
OBM_BEAMMINPUT  =$000008E
OBM_BEAMMOUTPUT	=$000008F
OBM_BFSINPUT	=$0000090
OBM_BFSOUTPUT	=$0000091

OBM_ALLOCMEM	=$0000100
OBM_FREEMEM	=$0000101
OBM_LOCKMEM	=$0000102
OBM_UNLOCKMEM	=$0000103

OBM_GETATTR     =$0001000
OBM_SETATTR     =$0001001

OBM_INIT        =$0040000
OBM_DISPOSE     =$0040001

;**********************************
;**** Beast General classes methods
;****
OBM_GETEACH	=$0000000+OBM_type_System
OBM_FOREACH	=$0000001+OBM_type_System



BST_bits_System		=$7F000000
BST_TAG 		=TAG_USER+$40000000

	BITDEF	BT,Ignore,29
	BITDEF	BT,Attributes,28
	BITDEF	BT,UserTag,27

BST_bits_Types		=$00F00000
BTA_type_Plain		=$00000000
BTA_type_CString	=$00100000
BTA_type_Object		=$00200000
BTA_type_Pointer	=$00300000

;************
;**** Control
;****/
BTA_CONTROL		=BST_TAG+BTF_Attributes+$000
BTA_NumberOf		=BTA_CONTROL+$01

;*************
;**** Position
;****/
BTA_POSITION		=BST_TAG+BTF_Attributes+$100
BTA_X			=BTA_POSITION+$00+BTA_type_Plain
BTA_Y			=BTA_POSITION+$01+BTA_type_Plain
BTA_Width		=BTA_POSITION+$02+BTA_type_Plain
BTA_Height		=BTA_POSITION+$03+BTA_type_Plain
BTA_Size		=BTA_POSITION+$04+BTA_type_Plain

;**********
;**** Types
;****/
BTA_TYPES		=BST_TAG+BTF_Attributes+$200
BTA_LongNumber		=BTA_TYPES+$00

;**********
;**** 
BTA_IDENTIFIER		=BST_TAG+BTF_Attributes+$300
BTA_Title		=BTA_IDENTIFIER+$00+BTA_type_CString
BTA_MainObject		=BTA_IDENTIFIER+$01+BTA_type_Object
BTA_Object1		=BTA_IDENTIFIER+$02+BTA_type_Object
BTA_Object2		=BTA_IDENTIFIER+$03+BTA_type_Object
BTA_Object3		=BTA_IDENTIFIER+$04+BTA_type_Object
BTA_Object4		=BTA_IDENTIFIER+$05+BTA_type_Object
BTA_Object5		=BTA_IDENTIFIER+$06+BTA_type_Object
BTA_Object6		=BTA_IDENTIFIER+$07+BTA_type_Object
BTA_Object7		=BTA_IDENTIFIER+$08+BTA_type_Object
BTA_Object8		=BTA_IDENTIFIER+$09+BTA_type_Object
BTA_Object9		=BTA_IDENTIFIER+$0A+BTA_type_Object
BTA_Method		=BTA_IDENTIFIER+$0B+BTA_type_Plain
BFS_UserName		=BTA_IDENTIFIER+$0C+BTA_type_CString

;***********
;**** SYSTEM
;****
BTA_SYSTEM		=BST_TAG+BTF_Attributes+$400
BTA_MemBlock		=BTA_SYSTEM+$00+BTA_type_Pointer
BTA_MemHandle		=BTA_SYSTEM+$01+BTA_type_Pointer
BTA_MemFlags		=BTA_SYSTEM+$02+BTA_type_Plain
	BITDEF	MEM,MOVEABLE,25
	BITDEF	MEM,DISCARDABLE,26

;**********************************************
;**** Method Flags for the OBJ_DoMethod routine
;****/
	BITDEF	MTH,DOCHILDREN,0
	BITDEF	MTH,DOPARENTS,1
	BITDEF	MTH,DISPOSED,2		;/* INTERNAL: Somewhere an object must be disposed */
	BITDEF	MTH,EVENTDISPOSE,3 	;/* INTERNAL: MUST be used in combination with the MTHF_DISPOSED
					;	   flag, now *also* the eventobject will be disposed. */
	BITDEF	MTH,PASSTOCHILD,4
	BITDEF	MTH,ERROR,6
	BITDEF	MTH,FATALERROR,7
	BITDEF	MTH,BREAK,8

MTHF_B52_bits		=$0000F000	;/* Methodflags used by B52 */


;****** BeastConstants/BST_macros *******************************************
;*
;*	NAME
;*	  BST_macros -- (v0.1)
;*
;****************************************************************************

OBJ_m_DoMethod	MACRO	; Object, MethodID, TagList, MethodFlags
		moveq		#\4,d3
		move.l		\1,a0
		move.l		#\2,d0
		move.l		\3,a1
		CALLBEAST	OBJ_DoMethod
		ENDM

