	opt	d+,l-

*****************************************************************
*								*
*	A small cute test program for ArgAsm to assemble	*
*		By Fuzzz 4/1/89					*
*								*
*****************************************************************

	output	window

_SysBase	equ	4
_LVOOpenLibrary	equ	-552		* library offsets from _SysBase
_LVOCloseLibrary	equ	-414
_LVOGetMsg	equ	-372
_LVOReplyMsg	equ	-378
_LVOWaitPort	equ	-384
_LVOFindPort	equ	-390

_LVOCloseWindow	equ	-72
_LVOOpenWindow	equ	-204




start	clr.l	d0			* Open the DOS Library
	lea.l	intname,a1
	move.l	4,a6
	jsr	_LVOOpenLibrary(a6)
	move.l	d0,a6			* keep library pointer in a6
	move.l	d0,intbase

*	lea	winttl,a0		* insert the window title ptr.
*	lea	windowtitle,a1
*	move.l	a1,(a0)

openwindow
	lea	newwindow,a0	* Open a window
	jsr	_LVOOpenWindow(a6)
	lea	windowptr,a0
	move.l	d0,(a0)			* Save the ptr to the window

	move.l	d0,a0
	move.l	wd_UserPort(a0),a0	* find out the message port
	move.l	a0,a2

wp	move.l	a2,a0
	move.l	_SysBase,a6
	jsr	_LVOWaitPort(a6)

	move.l	a2,a0
	move.l	_SysBase,a6
	jsr	_LVOGetMsg(a6)

	move.l	d0,a1			* reply to the massage
	move.l	d0,a3

	move.l	_SysBase,a6
	jsr	_LVOReplyMsg(a6)

	cmp.l	#$200,$14(a3)
	bne.s	wp

closew	move.l	intbase(pc),a6
	move.l	windowptr(pc),a0
	jsr	_LVOCloseWindow(a6)

close	move.l	intbase(pc),a1
	move.l	_SysBase,a6
	jsr	_LVOCloseLibrary(a6)

end	moveq	#0,d0
	rts

** Data **

windowptr	dc.l	0
intbase		dc.l	0

newwindow
	dc.w	100		LeftEdge
	dc.w	100		TopEdge
	dc.w	200		Width
	dc.w	100		Height
	dc.b	-1		DetailPen
	dc.b	-1		BlockPen
	dc.l	$202		IDCMP Flags (Just CloseWindow)
	dc.l	$000F		Flags(close,drag,depth,size)
	dc.l	0		FirstGadget
	dc.l	0		CheckMark
winttl	dc.l	windowtitle		Windowtitle
	dc.l	0		Screen
	dc.l	0		BitMap
	dc.w	200		MinWidth
	dc.w	32		MinHeight
	dc.w	500		MaxWidth
	dc.w	256		MaxHeight
	dc.w	1		Type

windowtitle	dc.b	"Hello World!",0
	nop
intname	DC.B	"intuition.library",0
	even

** Window structure **

	rsset	0

wd_NextWindow	rs.l	1
wd_LeftEdge	rs.w	1
wd_TopEdge	rs.w	1
wd_Width	rs.w	1
wd_Height	rs.w	1
wd_MouseY	rs.w	1
wd_MouseX	rs.w	1
wd_MinWidth	rs.w	1
wd_MinHeight	rs.w	1
wd_MaxWidth	rs.w	1
wd_MaxHeight	rs.w	1
wd_Flags	rs.l	1
wd_MenuStrip	rs.l	1
wd_Title	rs.l	1
wd_FirstRequest	rs.l	1
wd_DMRequest	rs.l	1
wd_ReqCount	rs.w	1
wd_WScreen	rs.l	1
wd_RPort	rs.l	1
wd_BorderLeft	rs.b	1
wd_BorderTop	rs.b	1
wd_BorderRight	rs.b	1
wd_BorderBottom	rs.b	1
wd_BorderRPort	rs.l	1
wd_FirstGadget	rs.l	1
wd_Parent	rs.l	1
wd_Descendant	rs.l	1
wd_Pointer	rs.l	1
wd_PtrHeight	rs.b	1
wd_PtrWidth	rs.b	1
wd_XOffset	rs.b	1
wd_YOffset	rs.b	1
wd_IDCMPFlags	rs.l	1
wd_UserPort	rs.l	1
wd_WindowPort	rs.l	1
wd_MessageKey	rs.l	1
wd_DetailPen	rs.b	1
wd_BlockPen	rs.b	1
wd_CheckMark	rs.l	1
wd_ScreenTitle	rs.l	1
wd_GZZMouseX	rs.w	1
wd_GZZMouseY	rs.w	1
wd_GZZWidth	rs.w	1
wd_GZZHeight	rs.w	1
wd_ExtData	rs.l	1
wd_UserData	rs.l	1
wd_WLayer	rs.l	1
wd_Size	rs.w	0



