* $Id: intuition.s 1.1 1999/02/03 04:10:30 jotd Exp jotd $
**************************************************************************
*   INTUITION-LIBRARY                                                    *
**************************************************************************
**************************************************************************
*   INITIALIZATION                                                       *
**************************************************************************

INTUIINIT	move.l	_intbase,d0
		beq	.init
		rts

.init		move.l	#-_LVOBltBitMapRastPort,d0
		move.l	#242,d1
		lea	_intname,a0
		bsr	_InitLibrary
		move.l	d0,a0
		move.l	d0,_intbase
		
		patch	_LVOCloseWorkBench(a0),CLOSEWB(pc)
		patch	_LVOClearDMRequest(A0),MYRTZ(PC)
		patch	_LVOOpenWindow(A0),_OPENWINDOW(PC)
		patch	_LVOCloseWindow(A0),_CLOSEWINDOW(PC)
		patch	_LVOCloseScreen(A0),MYRTS(PC)		; -- added by JOTD
		patch	_LVOShowTitle(A0),MYRTS(PC)		; -- added by JOTD
		patch	_LVOClearPointer(A0),MYRTS(PC)		; -- added by JOTD
		patch	_LVOClearMenuStrip(A0),MYRTS(PC)	; -- added by JOTD
		patch	_LVOOpenWorkBench(A0),_OPENWB(PC)	; -- added by JOTD
		patch	_LVOAlohaWorkbench(A0),MYRTS(PC)	; -- added by JOTD
		patch	_LVORethinkDisplay(A0),MYRTS(PC)	; -- added by JOTD
		patch	_LVOCurrentTime(A0),_CURRENTTIME(PC)	; -- added by JOTD
		patch	_LVOGetPrefs(A0),_GETPREFS(PC)		; -- added by JOTD
		patch	_LVOSetPrefs(A0),_SETPREFS(PC)		; -- dummy, JOTD
		patch	_LVOOpenScreen(A0),_OPENSCREEN(PC)		; -- dummy, JOTD
		patch	_LVOLockIBase(A0),_LOCKIBASE(PC)

		rts

**************************************************************************
*   SCREEN FUNCTIONS                                                     *
**************************************************************************

_OPENSCREEN:
	move.l	A0,D0	; returns user pointer (dummy function!)
	rts

_OPENWB:
	moveq.l	#1,D0	; non-NULL
	rts

ISCLOSED
	dc.l	0	; added by JOTD

;since there is no workbench, closing should awlays return 0 for success
;but some programs loop until the routine returns false (ok the wb is closed)

CLOSEWB
	movem.l	A0,-(A7)
	lea	ISCLOSED(pc),A0
	move.l	(A0),D0		; first time returns 0, and 1 afterwards
	move.l	#1,(A0)
	movem.l	(A7)+,A0
	RTS

_SETPREFS:
	move.l	A0,D0	
	rts

; < A0: PrefBuffer
; < D0: Size
; > D0: returns PrefBuffer

_GETPREFS
	lea	prefsdata(pc),A1
	move.l	D0,D1
	move.l	D0,A0
	subq.l	#1,D1
.copy
	move.b	(A1)+,(A0)+
	dbf	D1,.copy
	rts


_OPENWINDOW	MOVE.L	A0,-(A7)
		MOVE.L	#$84,D0
		MOVEQ.L	#0,D1
		BSR.W	ALLOCM
		MOVE.L	D0,A1
		MOVE.L	(A7)+,A0
		MOVE.L	(A0),wd_LeftEdge(A1)
		MOVE.L	nw_Width(A0),wd_Width(A1)
		MOVE.W	nw_DetailPen(A0),wd_DetailPen(A1)
		MOVE.L	nw_IDCMPFlags(A0),wd_IDCMPFlags(A1)
		MOVE.L	nw_Flags(A0),wd_Flags(A1)
		MOVE.L	nw_FirstGadget(A0),wd_FirstGadget(A1)
		MOVE.L	nw_CheckMark(A0),wd_CheckMark(A1)
		MOVE.L	nw_Title(A0),wd_Title(A1)
		MOVE.L	nw_Screen(A0),wd_WScreen(A1)
;		MOVE.L	nw_BitMap(A0),wd_	;rastport ignored
		MOVE.L	nw_MinWidth(A0),wd_MinWidth(A1)
		MOVE.L	nw_MaxWidth(A0),wd_MaxWidth(A1)
		RTS

_CLOSEWINDOW	MOVE.L	A0,A1
		MOVE.L	#$84,D0
		BSR.W	FREEM
		RTS

_LOCKIBASE	MOVE.L	#'MYLK',D0
		RTS
		
**************************************************************************
*   ICON-LIBRARY                                                         *
**************************************************************************
**************************************************************************
*   INITIALIZATION                                                       *
**************************************************************************

ILIBINIT	move.l	_ilibbase,d0
		beq	.init
		rts

.init		move.l	#-_LVOBumpRevision,d0
		move.l	#LIB_SIZE,D1
		lea	_ilibname,a0
		bsr	_InitLibrary
		move.l	d0,a0
		move.l	d0,_ilibbase
		
;		patch	_LVOCloseWorkBench(a0),CLOSEWB(pc)

		rts


**************************************************************************
*   LAYERS-LIBRARY                                                       *
**************************************************************************
**************************************************************************
*   INITIALIZATION                                                       *
**************************************************************************

LAYERSINIT	move.l	_laybase,d0
		beq	.init
		rts

.init		move.l	#-_LVOMoveLayerInFrontOf,d0
		move.l	#LIB_SIZE,D1
		lea	_layname,a0
		bsr	_InitLibrary
		move.l	d0,a0
		move.l	d0,_laybase
		
;		patch	_LVOCloseWorkBench(a0),CLOSEWB(pc)

		rts

; mathffp, mathtrans stuff relocated in specific files

_CURRENTTIME:				; added by JOTD
	move.l	sec_timer,(A0)
	move.l	millisec_timer,(A1)
	rts

prefsdata:
	incbin	"prefsfile"
	cnop	0,4
