;
;  Asm source code created by Interface Editor v2.0
;  Copyright 1994-95 by Simone Tellini Software
;
;  Copy registered to :  Simone Tellini
;  Serial Number      : #0
;

	include	intuition/intuition.i
	include	libraries/gadtools.i
	include	graphics/displayinfo.i

	XREF	int_base
	XREF	gad_base

_LVOOpenWindowTagList	EQU	-606
_LVOCloseWindow	EQU	-72
_LVOOpenScreenTagList	EQU	-612
_LVOCloseScreen	EQU	-66
_LVOLockPubScreen	EQU	-510
_LVOUnlockPubScreen	EQU	-516
_LVOItemAddress	EQU	-144
_LVOGetVisualInfoA	EQU	-126
_LVOFreeVisualInfo	EQU	-132
_LVOCreateContext	EQU	-114
_LVOCreateGadgetA	EQU	-30
_LVOFreeGadgets	EQU	-36
_LVOGT_RefreshWindow	EQU	-84
_LVOGT_GetIMsg	EQU	-72
_LVOGT_ReplyIMsg	EQU	-78
_LVOGT_BeginRefresh	EQU	-90
_LVOGT_EndRefresh	EQU	-96
_LVOCopyMem	EQU	-624

Main_CNT	EQU	9
GD_Mon	EQU	0
GD_Size	EQU	1
GD_Adr	EQU	2
GD_Asc	EQU	3
GD_Hex	EQU	4
GD_Dec	EQU	5
GD_Beep	EQU	6
GD_Sign	EQU	7
GD_Bin	EQU	8


OpenWnd	tst.w	d7
	bmi.s	OpenWndNoG
	link	a5,#-gng_SIZEOF
	move.l	Scr,a1
	move.b	sc_WBorTop(a1),d3
	ext.w	d3
	move.l	sc_Font(a1),a1
	add.w	ta_YSize(a1),d3
	sub.w	#10,d3
	move.l	gad_base,a6
	jsr	_LVOCreateContext(a6)
	tst.l	d0
	bne.s	OpenWndCOk
	moveq	#1,d0
	unlk	a5
	rts
OpenWndCOk	move.l	d0,a0
	move.w	(a4)+,d0
	ext.l	d0
	lea	-gng_SIZEOF(a5),a1
	movem.l	d0/a0-a1,-(sp)
	move.l	d2,a0
	moveq	#gng_SIZEOF,d0
	add.l	d0,d2
	move.l	4,a6
	jsr	_LVOCopyMem(a6)
	movem.l	(sp)+,d0/a0-a1
	add.w	d3,gng_TopEdge(a1)
	move.l	Visual,gng_VisualInfo(a1)
	move.l	a3,a2
	move.l	gad_base,a6
	jsr	_LVOCreateGadgetA(a6)
	tst.l	d0
	bne.s	OpenWndGOk
	moveq	#2,d0
	unlk	a5
	rts
OpenWndGOk	move.l	d5,a0
	addq.l	#4,d5
	move.l	d0,(a0)
OpenWndTloop	tst.l	(a3)+
	beq.s	OpenWndTOk
	addq.l	#4,a3
	bra.s	OpenWndTloop
OpenWndTOk	dbra	d7,OpenWndCOk
	unlk	a5
OpenWndNoG	move.l	int_base,a6
	move.l	d6,a1
	sub.l	a0,a0
	jsr	_LVOOpenWindowTagList(a6)
	tst.l	d0
	bne.s	OpenWndWOk
	moveq	#4,d0
	rts
OpenWndWOk	move.l	d4,a0
	move.l	d0,(a0)
	move.l	gad_base,a6
	sub.l	a1,a1
	move.l	d0,a0
	jsr	_LVOGT_RefreshWindow(a6)
	moveq	#0,d0
	rts

CloseWnd	movem.l	d0-d1/a0-a1/a6,-(sp)
	move.l	a0,d0
	beq.s	CloseWndNoW
	move.l	int_base,a6
	jsr	_LVOCloseWindow(a6)
CloseWndNoW	tst.l	d2
	beq.s	ExitCloseWnd
	move.l	gad_base,a6
	move.l	d2,a0
	jsr	_LVOFreeGadgets(a6)
ExitCloseWnd	movem.l	(sp)+,d0-d1/a0-a1/a6
	rts

	XDEF	SetupScreen
SetupScreen	movem.l	d1/a0-a1/a6,-(sp)
	move.l	PubScreenName,a0
	move.l	int_base,a6
	jsr	_LVOLockPubScreen(a6)
	move.l	d0,Scr
	bne.s	SetupScreenSOk
	moveq	#1,d0
	bra.s	ExitSetupScreen
SetupScreenSOk	move.l	gad_base,a6
	move.l	d0,a0
	sub.l	a1,a1
	jsr	_LVOGetVisualInfoA(a6)
	move.l	d0,Visual
	beq.s	SetupScreenVErr
	moveq	#0,d0
ExitSetupScreen	movem.l	(sp)+,d1/a0-a1/a6
	rts
SetupScreenVErr	moveq	#2,d0
	bra.s	ExitSetupScreen

	XDEF	CloseDownScreen
CloseDownScreen	movem.l	d0-d1/a0-a1/a6,-(sp)
	tst.l	Visual
	beq.s	CDS_NoVisual
	move.l	gad_base,a6
	move.l	Visual,a0
	jsr	_LVOFreeVisualInfo(a6)
CDS_NoVisual	tst.l	Scr
	beq.s	CDS_Exit
	move.l	int_base,a6
	sub.l	a0,a0
	move.l	Scr,a1
	jsr	_LVOUnlockPubScreen(a6)
CDS_Exit	movem.l	(sp)+,d0-d1/a0-a1/a6
	rts

	XDEF	OpenMainWindow
OpenMainWindow	movem.l	d1-d7/a0-a6,-(sp)
	moveq	#Main_CNT-1,d7
	move.l	#MainWTags,d6
	move.l	#MainGadgets,d5
	move.l	#MainWnd,d4
	move.l	#MainNGads,d2
	lea	MainGList,a0
	lea	MainGTypes,a4
	lea	MainGTags,a3
	bsr	OpenWnd
	movem.l	(sp)+,d1-d7/a0-a6
	rts

	XDEF	CloseMainWindow
CloseMainWindow	movem.l	d1-d2/a0-a1/a6,-(sp)
	move.l	MainWnd,a0
	move.l	MainGList,d2
	bsr	CloseWnd
	clr.l	MainWnd
	movem.l	(sp)+,d1-d2/a0-a1/a6
	rts

	XDEF	HandleMainIDCMP
HandleMainIDCMP	movem.l	d0-d7/a0-a6,-(sp)
.loop	move.l	gad_base,a6
	move.l	MainWnd,a0
	move.l	wd_UserPort(a0),a0
	jsr	_LVOGT_GetIMsg(a6)
	move.l	4,a6
	move.l	d0,a0
	move.l	d0,d2
	beq	ExitMainHandler
	lea	MainMsg,a1
	move.l	a1,a5
	moveq	#im_SIZEOF,d0
	jsr	_LVOCopyMem(a6)
	move.l	im_Class(a5),d7

	move.l	gad_base,a6
	move.l	d2,a1
	jsr	_LVOGT_ReplyIMsg(a6)

	cmp.l	#IDCMP_REFRESHWINDOW,d7
	bne.s	.NoRefresh
	move.l	MainWnd,a0
	jsr	_LVOGT_BeginRefresh(a6)
	move.l	MainWnd,a0
	moveq	#-1,d0
	jsr	_LVOGT_EndRefresh(a6)
	bra	.loop

.NoRefresh	cmp.l	#IDCMP_GADGETDOWN,d7
	beq.s	.Gadget
	cmp.l	#IDCMP_GADGETUP,d7
	bne.s	.NoGadget
.Gadget	move.l	im_IAddress(a5),a0
	move.l	gg_UserData(a0),a0
	jsr	(a0)
	bra	.loop

.NoGadget	cmp.l	#IDCMP_CLOSEWINDOW,d7
	bne.s	.NoCloseWnd
	XREF	MainCloseWindow
	jsr	MainCloseWindow
	bra	ExitMainHandler

.NoCloseWnd	cmp.l	#IDCMP_VANILLAKEY,d7
	bne.s	.NoVanilla
	XREF	MainVanillaKey
	jsr	MainVanillaKey
	bra	.loop

.NoVanilla
ExitMainHandler	movem.l	(sp)+,d0-d7/a0-a6
	rts

	SECTION Gui,DATA

topaz8_065	dc.l topaz8_065Name
	dc.w 8
	dc.b $0,$41


	XDEF	SizeLabels
SizeLabels	dc.l SizeLab0,SizeLab1,SizeLab2,0

	XDEF	MainGTypes
MainGTypes	dc.w CHECKBOX_KIND
	dc.w MX_KIND
	dc.w STRING_KIND
	dc.w TEXT_KIND
	dc.w NUMBER_KIND
	dc.w NUMBER_KIND
	dc.w CHECKBOX_KIND
	dc.w CHECKBOX_KIND
	dc.w TEXT_KIND

	XDEF	MainNGads
MainNGads	dc.w 11,13,26,11
	dc.l MonGText,topaz8_065
	dc.w GD_Mon
	dc.l PLACETEXT_RIGHT,0,MonClicked
	XREF	MonClicked
	dc.w 131,13,17,9
	dc.l 0,topaz8_065
	dc.w GD_Size
	dc.l PLACETEXT_RIGHT,0,SizeClicked
	XREF	SizeClicked
	dc.w 260,13,109,14
	dc.l AdrGText,topaz8_065
	dc.w GD_Adr
	dc.l 0,0,AdrClicked
	XREF	AdrClicked
	dc.w 260,28,55,14
	dc.l AscGText,topaz8_065
	dc.w GD_Asc
	dc.l 0,0,0
	dc.w 114,43,109,14
	dc.l HexGText,topaz8_065
	dc.w GD_Hex
	dc.l 0,0,0
	dc.w 260,43,109,14
	dc.l DecGText,topaz8_065
	dc.w GD_Dec
	dc.l 0,0,0
	dc.w 11,26,26,11
	dc.l BeepGText,topaz8_065
	dc.w GD_Beep
	dc.l PLACETEXT_RIGHT,0,BeepClicked
	XREF	BeepClicked
	dc.w 11,39,26,11
	dc.l SignGText,topaz8_065
	dc.w GD_Sign
	dc.l PLACETEXT_RIGHT,0,SignClicked
	XREF	SignClicked
	dc.w 114,58,304,14
	dc.l BinGText,topaz8_065
	dc.w GD_Bin
	dc.l 0,0,0

	XDEF	MainGTags
MainGTags	dc.l GT_Underscore,'_',TAG_END
	dc.l GT_Underscore,'_',GTMX_Labels,SizeLabels,GTMX_TitlePlace,PLACETEXT_LEFT,TAG_END
	dc.l GT_Underscore,'_',STRINGA_ReplaceMode,-1,GTST_MaxChars,8,STRINGA_Justification,GACT_STRINGCENTER,GTST_String,AdrString,TAG_END
	dc.l GTTX_Border,-1,GTTX_Clipped,-1,GTTX_Justification,GTJ_CENTER,TAG_END
	dc.l GTNM_Border,-1,GTNM_Clipped,-1,GTNM_Justification,GTJ_CENTER,GTNM_Format,HexFormat,TAG_END
	dc.l GTNM_Border,-1,GTNM_Clipped,-1,GTNM_Justification,GTJ_CENTER,GTNM_MaxNumberLen,0,GTNM_Format,DecFormat,TAG_END
	dc.l GT_Underscore,'_',TAG_END
	dc.l GT_Underscore,'_',TAG_END
	dc.l GTTX_Border,-1,GTTX_Clipped,-1,GTTX_Justification,GTJ_CENTER,GTTX_Text,BinText,TAG_END

	XDEF	MainZoom
MainZoom	dc.w -1,-1,450,10

	XDEF	MainWTags
MainWTags	dc.l WA_Left,65,WA_Top,66,WA_Width,450,WA_Height,75
	dc.l WA_MinWidth,0,WA_MaxWidth,-1,WA_MinHeight,0,WA_MaxHeight,-1
	dc.l WA_Title,MainWTitle
	dc.l WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SIMPLE_REFRESH!WFLG_ACTIVATE!WFLG_RMBTRAP
	dc.l WA_IDCMP,IDCMP_REFRESHWINDOW!IDCMP_GADGETDOWN!IDCMP_GADGETUP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY
	dc.l WA_ScreenTitle,MainSTitle
	dc.l WA_Zoom,MainZoom
	dc.l WA_Gadgets
	XDEF	MainGList
MainGList	dc.l 0
	dc.l TAG_END

	XDEF	PubScreenName
PubScreenName	dc.l 0
topaz8_065Name	dc.b "topaz.font",0

SizeLab0	dc.b "_L",0
SizeLab1	dc.b "_W",0
SizeLab2	dc.b "_B",0

MonGText	dc.b "_Monitor",0
AdrGText	dc.b "_Address :",0
AscGText	dc.b "ASCII",0
HexGText	dc.b "Hex",0
DecGText	dc.b "Dec",0
BeepGText	dc.b "B_eep",0
SignGText	dc.b "_Sign",0
BinGText	dc.b "Bin",0

AdrString	dc.b "00000000",0

HexFormat	dc.b "$%08lx",0

DecFormat	dc.b "#%010lu",0

BinText	dc.b "%00000000.00000000.00000000.00000000",0

MainWTitle	dc.b "Memory Observer  v1.0  -  ©1995 Simone Tellini",0
MainSTitle	dc.b "Memory Observer, a little big friend! :-)   *FREEWARE*",0

	SECTION Gui,BSS

	XDEF	Scr
	XDEF	Visual
Scr	ds.l 1
Visual	ds.l 1
	XDEF	MainWnd
MainWnd	ds.l 1
	XDEF	MainGadgets
MainGadgets
	XDEF	MonGadget
MonGadget	ds.l 1

	XDEF	SizeGadget
SizeGadget	ds.l 1

	XDEF	AdrGadget
AdrGadget	ds.l 1

	XDEF	AscGadget
AscGadget	ds.l 1

	XDEF	HexGadget
HexGadget	ds.l 1

	XDEF	DecGadget
DecGadget	ds.l 1

	XDEF	BeepGadget
BeepGadget	ds.l 1

	XDEF	SignGadget
SignGadget	ds.l 1

	XDEF	BinGadget
BinGadget	ds.l 1
	XDEF	MainMsg
MainMsg	ds.b im_SIZEOF
