
	*************************************************
	*    A1200 Beispielprogramm V40.1 (11.8.1993)   *
	*     von Alexander Kochann und Oliver Reiff    *
	*	     geschrieben mit DevPacIII		*
	*************************************************

loclea	macro
	pea	\1
	bsr	GetString
	move.l	(sp)+,\2
	endm

VERSION	macro
	endm
LEN	macro
	endm
CATALOG	macro
	endm
CATDATE	macro
	endm
D	macro
	endm
DK	macro
	endm
E	macro
	endm
F	macro
	endm
GB	macro
	endm
I	macro
	endm
N	macro
	endm
NL	macro
	endm
P	macro
	endm
S	macro
	endm

Red			equ	%10000000
Green			equ	%11000000
Blue			equ	%01000000

FALSE			equ	0
TRUE			equ	1
TAG_DONE		equ	0

RemoveGList		equ	-444
GT_RefreshWindow	equ	-84
FreeGadgets		equ	-36
FreeVisualInfo		equ	-132
GetVisualInfoA		equ	-126
CreateContext		equ	-114
CreateGadgetA		equ	-30
AddGList		equ	-438
RefreshGadgets		equ	-222
OpenAmigaGuideA		equ	-54
CloseAmigaGuide		equ	-66
GetProgramDir		equ	-600
ScreenToFront		equ	-252
FindTask		equ	-294
Forbid			equ	-132
WaitPort		equ	-384
OpenLocale		equ	-156
OpenCatalogA		equ	-150
CloseScreen		equ	-66
CloseWindow		equ	-72
InitRastPort		equ	-198
WritePixel		equ	-324
SetAPen			equ	-342
Wait			equ	-318
GetMsg			equ	-372
ReplyMsg		equ	-378
InitBitMap		equ	-390
CloseLibrary		equ	-414
OpenLibrary		equ	-552
PubScreenStatus		equ	-552
EasyRequestArgs		equ	-588
OpenWindowTagList	equ	-606
OpenScreenTagList	equ	-612
NewObjectA		equ	-636
DisposeObject		equ	-642
WritePixelArray8	equ	-786
SetWindowPointerA	equ	-816
LoadRGB32		equ	-882
AllocBitMap		equ	-918
FreeBitMap		equ	-924
CxMsgID			equ	-150
GetCatalogStr		equ	-72
AddPort			equ	-354
CreateMsgPort		equ	-666
RemPort			equ	-360
DeleteMsgPort		equ	-672
CloseCatalog		equ	-36
CloseLocale		equ	-42
RemoveCxObj		equ	-102
DeleteCxObjAll		equ	-54
ActivateCxObj		equ	-42
CreateCxObj		equ	-30
CxBroker		equ	-36
AttachCxObj		equ	-84
SetFilter		equ	-120

rm_ARG0			equ	40
LN_NAME			equ	10
wd_RPort		equ	50
wd_UserPort		equ	86
im_Class		equ	20
im_IAddress		equ	28
gg_GadgetID		equ	38
rp_SIZEOF		equ	100
bm_SIZEOF		equ	40
es_SIZEOF		equ	30
sc_ViewPort		equ	44
sc_RastPort		equ	84
gb_ChipRevBits0		equ	236
pr_MsgPort		equ	92
pr_CLI			equ	172
AttnFlags		equ	296
LIB_VERSION		equ	20

AFB_68020		equ	1
BUTTON_KIND		equ	1
IDCMP_GADGETUP		equ	$40

SA_PubName		equ	$8000002f
SA_DisplayID		equ	$80000032
SA_Pens			equ	$8000003a
SA_Parent		equ	$8000003d
SA_Draggable		equ	$8000003e
SA_Interleaved		equ	$80000042
SA_Colors32		equ	$80000043
WA_NewLookMenus		equ	$80000093
WA_Pointer		equ	$80000097
WA_BusyPointer		equ	$80000098
WA_PointerDelay		equ	$80000099
WA_PubScreenName	equ	$80000078
POINTERA_BitMap		equ	$80039001
POINTERA_XOffset	equ	$80039002
POINTERA_YOffset	equ	$80039003
POINTERA_WordWidth	equ	$80039004
POINTERA_XResolution	equ	$80039005
POINTERA_YResolution	equ	$80039006

*--------------------------------

PrgStart
	opt	o+
	move.l	4.w,a6
	
	sub.l	a1,a1
	jsr	FindTask(a6)
	move.l	d0,a2
	tst.l	pr_CLI(a2)
	bne.s	.VonCLI
	
.VonWB	lea	pr_MsgPort(a2),a0
	jsr	WaitPort(a6)
	jsr	GetMsg(a6)
	lea	MyWBMsg,a0
	move.l	d0,(a0)
	
.VonCLI	cmp.w	#39,LIB_VERSION(a6)	
	blt	Error

	bsr	OpenLibs

	move.w	AttnFlags(a6),d0
	btst	#AFB_68020,d0
	beq	No68020	

	bsr	OpenCatalog
	bsr	InitARexx
	bsr	InitHotkey	

	move.l	GfxBase,a6
	move.b	gb_ChipRevBits0(a6),d0
	and.b	#$f,d0		* AA-Chipset vorhanden
	cmp.b	#$f,d0		* und aktiviert ?
	bne	NoAAChips

	move.l	IntBase,a6
	lea	ScreenData,a0
	loclea	ScreenName,20(a0)
	lea	ScreenTags,a1
	jsr	OpenScreenTagList(a6)		
	lea	Screen,a0
	move.l	d0,(a0)
	beq	NoScreen

	move.l	d0,a0
	moveq	#0,d0
	jsr	PubScreenStatus(a6)

	lea	WindowData,a0
	loclea	WindowName,26(a0)
	lea	WindowTags,a1
	jsr	OpenWindowTagList(a6)
	lea	Window,a0
	move.l	d0,(a0)
	lea	RastPort,a1
	move.l	d0,a0
	move.l	wd_RPort(a0),(a1)

	move.l	GfxBase,a6
	move.w	#640,d0
	moveq	#2,d1
	moveq	#8,d2
	moveq	#0,d3
	sub.l	a0,a0
	jsr	AllocBitMap(a6)
	lea	TempBM,a0
	move.l	d0,(a0)
	beq.s	NoBitMap

	lea	TempRP,a1
	jsr	InitRastPort(a6)

	lea	TempRP,a1
	move.l	TempBM,4(a1)

	bsr	DrawColors
	bsr	OpenGadgetWindow
	bsr	SetPointer

*---------------------

MainLoop	move.l	4.w,a6
	moveq	#-1,d0
	jsr	Wait(a6)

	moveq	#0,d7
	bsr	GetGadgetMsg
	bsr	GetCxMsg
	bsr	GetARexxMsg
	tst.l	d7
	bne.s	Ende
	
	move.l	4.w,a6
	move.l	Window,a0
	move.l	wd_UserPort(a0),a0
	jsr	GetMsg(a6)
	tst.l	d0
	beq.s	MainLoop
	move.l	d0,a0
	move.l	im_Class(a0),d0

	cmp.l	#$200,d0		* CloseWindow	
	bne.s	MainLoop



*---------------------

Ende	move.l	GfxBase,a6
	move.l	TempBM,a0
	jsr	FreeBitMap(a6)
NoBitMap	
	bsr	CloseGadgetWindow
	bsr	FreeHotkey
	bsr	FreeARexx
	bsr	FreeCatalog
	move.l	IntBase,a6
	move.l	Window,a0
	jsr	CloseWindow(a6)
	move.l	Screen,a0
	jsr	CloseScreen(a6)
	move.l	ExtSprite,a0
	jsr	DisposeObject(a6)
	bsr	CloseLibs

	move.l	MyWBMsg,d7
	beq.s	.exit

	move.l	4.w,a6
	jsr	Forbid(a6)
	move.l	d7,a1
	jsr	ReplyMsg(a6)
.exit	rts
	
*----------
Error	moveq	#20,d0
	rts

*---------------------

NoAAChips
	loclea	ReqNoAA,a0
	bsr.s	ShowReq
	bsr	CloseLibs
	bra	Error
No68020
	loclea	ReqNo68020,a0
	bsr.s	ShowReq
	bsr	CloseLibs
	bra	Error
NoScreen
	loclea	ReqNoScreen,a0
	bsr.s	ShowReq
	bsr	CloseLibs
	bra	Error

ShowReq	lea	EasyStruct,a1
	move.l	a0,12(a1)
	sub.l	a0,a0
	sub.l	a2,a2
	sub.l	a3,a3
	move.l	IntBase,a6
	jmp	EasyRequestArgs(a6)

*-----------------------

OpenLibs
	move.l	4.w,a6

	moveq	#36,d0
	lea	DosName,a1
	jsr	OpenLibrary(a6)
	lea	DosBase,a0
	move.l	d0,(a0)

	moveq	#36,d0
	lea	CxName,a1
	jsr	OpenLibrary(a6)
	lea	CxBase,a0
	move.l	d0,(a0)
	
	moveq	#38,d0
	lea	LocName,a1
	jsr	OpenLibrary(a6)
	lea	LocBase,a0
	move.l	d0,(a0)

	moveq	#39,d0
	lea	AgName,a1
	jsr	OpenLibrary(a6)
	lea	AgBase,a0
	move.l	d0,(a0)

	lea	GfxName,a1
	moveq	#39,d0
	jsr	OpenLibrary(a6)
	lea	GfxBase,a0
	move.l	d0,(a0)

	lea	IntName,a1
	moveq	#39,d0
	jsr	OpenLibrary(a6)
	lea	IntBase,a0
	move.l	d0,(a0)

	lea	GadName,a1
	moveq	#36,d0
	jsr	OpenLibrary(a6)
	lea	GadBase,a0
	move.l	d0,(a0)

	rts

*-----------------------

CloseLibs
	move.l	4.w,a6
	move.l	CxBase,a1
	jsr	CloseLibrary(a6)
	move.l	LocBase,a1
	jsr	CloseLibrary(a6)
	move.l	AgBase,a1
	jsr	CloseLibrary(a6)
	move.l	DosBase,a1
	jsr	CloseLibrary(a6)
	move.l	IntBase,a1
	jsr	CloseLibrary(a6)
	move.l	GfxBase,a1
	jsr	CloseLibrary(a6)
	move.l	GadBase,a1
	jsr	CloseLibrary(a6)
	rts

*-----------------------

DrawColors
	movem.l	d0-a6,-(sp)
	move.l	GfxBase,a6
	bsr	DrawFirstLine_1
	
	move.w	#Red,d0
	moveq	#1,d1
	moveq	#1,d2
	bsr.s	DrawColorBox
	move.w	#Green,d0
	moveq	#1,d1
	bsr.s	DrawColorBox
	move.w	#Red,d0
	moveq	#-1,d1
	bsr.s	DrawColorBox
	move.w	#Blue,d0
	moveq	#1,d1
	bsr.s	DrawColorBox
	move.w	#Green,d0
	moveq	#-1,d1
	bsr.s	DrawColorBox
	move.w	#Red,d0
	moveq	#1,d1
	bsr.s	DrawColorBox
	move.w	#Blue,d0
	moveq	#-1,d1
	bsr.s	DrawColorBox
	move.w	#Green,d0
	moveq	#1,d1
	bsr.s	DrawColorBox
	move.w	#Blue,d0
	moveq	#1,d1
	bsr.s	DrawColorBox
	
	bsr.s	DrawLastLines
	movem.l	(sp)+,d0-a6
	rts
*-------
DrawColorBox
	move.l	d2,-(sp)
	move.l	d1,d7
	move.l	d0,d6
	lea	Pixels,a0
	moveq	#0,d4
.Loop_3	moveq	#3,d3
.Loop_2	moveq	#0,d2
.Loop_1	move.w	d2,d1
	tst.b	d7
	bgt.s	.Ok_1
	moveq	#63,d1
	sub.w	d2,d1
.Ok_1	mulu	d4,d1
	divu	#63,d1	
	move.w	d6,d0
	add.w	d1,d0
	move.b	d0,(a0)+
  	addq.w	#1,d2
	cmp.w	#64,d2
	bne.s	.Loop_1
	dbra	d3,.Loop_2
 	addq.w	#1,d4
	cmp.w	#64,d4
	bne.s	.Loop_3
	move.l	(sp),d0
	lea	TempRP,a1
	lea	Pixels,a2
	move.l	RastPort,a0
	moveq	#0,d1
	move.w	d0,d2
	add.w	#63,d2
	move.w	#256,d3
	jsr	WritePixelArray8(a6)
	move.l	(sp)+,d2
	add.w	#64,d2
	rts
*-------
DrawLastLines
	lea	Pixels,a0
	move.w	#255,d7
.Loop_1	move.w	#Red,d0
	move.w	#255,d6
	sub.w	d7,d6
	lsr.w	#2,d6
	add.w	d6,d0
	moveq	#63,d1
.Loop_2	move.b	d0,(a0)+
	dbra	d1,.Loop_2
	dbra	d7,.Loop_1

	lea	TempRP,a1
	lea	Pixels,a2
	move.l	RastPort,a0
	move.w	#577,d0
	moveq	#0,d1
	move.w	#633,d2
	move.w	#256,d3
	jmp	WritePixelArray8(a6)
	rts
*-------
DrawFirstLine_1	
	move.l	GfxBase,a6
	clr.b	Smooth
	move.w	#255,d7
.Loop	move.w	#255,d2
	sub.w	d7,d2
	move.l	d2,d0
	and.w	#3,d0
	addq	#4,d0
	move.l	RastPort,a1
	jsr	SetAPen(a6)
	moveq	#0,d0
	move.l	d2,d1
	move.l	RastPort,a1
	jsr	WritePixel(a6)
	dbra	d7,.Loop
	rts
*-------
DrawFirstLine_2	
	move.l	GfxBase,a6
	st.b	Smooth
	moveq	#4,d0
	move.l	RastPort,a1
	jsr	SetAPen(a6)
	move.w	#255,d7
.Loop	moveq	#0,d0
	move.l	d7,d1
	move.l	RastPort,a1
	jsr	WritePixel(a6)
	dbra	d7,.Loop
	rts

*-----------------------

SetPointer
	move.l	GfxBase,a6
	lea	PointerBM,a0
	moveq	#2,d0
	moveq	#16,d1
	moveq	#16,d2
	jsr	InitBitMap(a6)
	lea	PointerBM,a1
	lea	PointerPlane0,a0
	move.l	a0,8(a1)		* Erste BitPlane
	lea	PointerPlane1,a0
	move.l	a0,12(a1)		* Zweite BitPlane

	lea	SpriteTags,a2
	move.l	a1,4(a2)
	lea	PointerClass,a1
	sub.l	a0,a0
	move.l	IntBase,a6
	jsr	NewObjectA(a6)
	lea	ExtSprite,a0
	move.l	d0,(a0)

	move.l	Window,a0
	lea	PointerTags,a1
	move.l	ExtSprite,4(a1)
	move.l	IntBase,a6
	jmp	SetWindowPointerA(a6)

*-----------------------

OpenCatalog
	move.l	LocBase,d0
	beq.s	.exit
	move.l	d0,a6
	sub.l	a0,a0
	jsr	OpenLocale(a6)
	lea	Locale1,a0
	move.l	d0,(a0)
	beq.s	.exit
	
	move.l	d0,a0
	lea	CatName,a1
	sub.l	a2,a2
	jsr	OpenCatalogA(a6)
	lea	Catalog1,a0
	move.l	d0,(a0)

.exit	rts

*-------

FreeCatalog
	move.l	LocBase,d0
	beq.s	.exit
	move.l	d0,a6
	
	move.l	Catalog1,a0
	jsr	CloseCatalog(a6)
	
	move.l	Locale1,a0
	jsr	CloseLocale(a6)

.exit	rts

*-------

GetString
	movem.l	d0-d1/a0-a1/a6,-(sp)
	move.l	LocBase,d0
	beq.s	.Ende
	move.l	d0,a6
	move.l	Catalog1,d0
	beq.s	.Ende
	move.l	24(sp),a1	String
	moveq	#0,d0
	move.l	a1,d1
	lea	LOCALE_START,a0
	sub.l	a0,d1
	beq.s	.GetIt
.Loop	tst.b	(a0)+
	bne.s	.Ok
	addq.l	#1,d0
.Ok	subq.l	#1,d1
	bne.s	.Loop
.GetIt	move.l	Catalog1,a0
	jsr	GetCatalogStr(a6)
	move.l	d0,24(sp)
.Ende	movem.l	(sp)+,d0-d1/a0-a1/a6
	rts

*-------

InitARexx	move.l	4.w,a6
	jsr	CreateMsgPort(a6)
	lea	ARexxPort,a0
	move.l	d0,(a0)
	beq.s	.exit
	move.l	d0,a1
	lea	ARexxPortName,a0
	move.l	a0,LN_NAME(a1)
	jsr	AddPort(a6)
.exit	rts

*-------

FreeARexx
	move.l	ARexxPort,d2
	beq.s	.exit
	move.l	4.w,a6
	move.l	d2,a1
	jsr	RemPort(a6)	RemPort
	move.l	d2,a0
	jsr	DeleteMsgPort(a6)
.exit	rts

*-------

GetARexxMsg
	move.l	ARexxPort,d0
	beq.s	.exit

	moveq	#0,d2

	move.l	4.w,a6
	move.l	d0,a0
	jsr	GetMsg(a6)
	tst.l	d0
	beq.s	.exit
	
	move.l	d0,a2
	move.l	rm_ARG0(a2),a3

	lea	Blabla_Text,a0
	bsr.s	CmpString
	tst.l	d0
	beq.s	.next
	bsr	Hotkey_Routine
	bra.s	.reply
	
.next	lea	Ende_Text,a0
	bsr.s	CmpString
	tst.l	d0
	beq.s	.reply
	moveq	#-1,d7

.reply	move.l	a2,a1
	jsr	ReplyMsg(a6)
.exit	rts

CmpString
	move.l	a3,a1
.loop	move.b	(a0)+,d0
	beq.s	.null
	bclr	#5,d0
	cmp.b	(a1)+,d0
	beq.s	.loop
.bad	moveq	#0,d0
	rts
.null	tst.b	(a1)
	bne.s	.bad
	moveq	#-1,d0
	rts

*-------

InitHotkey	
	lea	NewBroker1,a5
	loclea	BrokerTitle,6(a5)
	loclea	BrokerText,10(a5)
	move.l	4.w,a6
	jsr	CreateMsgPort(a6)
	move.l	d0,20(a5)
	beq.s	.exit
	
	move.l	CxBase,a6
	move.l	a5,a0
	moveq	#0,d0
	jsr	CxBroker(a6)
	lea	Broker1,a0
	move.l	d0,(a0)
	beq.s	Cx_FreePort
	
	moveq	#1,d0		CxFilter
	sub.l	a0,a0
	sub.l	a1,a1
	jsr	CreateCxObj(a6)
	tst.l	d0
	beq.s	Cx_FreeBroker
	move.l	d0,a2

	move.l	d0,a0
	lea	Hotkey_Text,a1
	jsr	SetFilter(a6)
	
	moveq	#8,d0		CxCustom
	lea	Hotkey_Routine,a0
	sub.l	a1,a1
	jsr	CreateCxObj(a6)
	tst.l	d0
	beq.s	Cx_FreeBroker
	move.l	d0,a3

	move.l	Broker1,a0
	move.l	a2,a1
	jsr	AttachCxObj(a6)

	move.l	a2,a0
	move.l	a3,a1
	jsr	AttachCxObj(a6)		

	moveq	#1,d0
	bsr.s	Cx_Activate
	
.exit	rts

*-------

Cx_Activate
	move.l	CxBase,a6
	move.l	Broker1,a0
	jsr	ActivateCxObj(a6)
	rts

*-------

FreeHotkey
	move.l	CxBase,a6

Cx_FreeBroker
	move.l	Broker1,a0
	jsr	RemoveCxObj(a6)

	move.l	Broker1,a0
	jsr	DeleteCxObjAll(a6)		

Cx_FreePort
	move.l	4.w,a6
	lea	NewBroker1,a5
	move.l	20(a5),a0
	jsr	DeleteMsgPort(a6)
	rts
	
*-------

GetCxMsg
	lea	NewBroker1,a0
	move.l	20(a0),d0
	beq.s	.exit
	move.l	d0,a0
	move.l	4.w,a6
	jsr	GetMsg(a6)
	move.l	d0,d6	
	beq.s	.exit
	
	move.l	d0,a0
	move.l	CxBase,a6
	jsr	CxMsgID(a6)
	move.l	d0,d2

	move.l	4.w,a6
	move.l	d6,a1
	jsr	ReplyMsg(a6)
	
	cmp.l	#15,d2
	beq.s	.disable
	cmp.l	#17,d2
	beq.s	.enable
	cmp.l	#19,d2
	beq.s	.appear
*	cmp.l	#21,d2
*	beq.s	.disappear
	cmp.l	#23,d2
	bne.s	.exit
	
.kill	moveq	#-1,d7
	bra.s	.exit

.disable
	moveq	#0,d0
	bsr	Cx_Activate
	bra.s	.exit
.enable	moveq	#1,d0
	bsr	Cx_Activate
.exit	rts

.appear	bsr	ShowAmigaGuide
	bra.s	.exit

*-------

OpenGadgetWindow

	move.l	GadBase,d0
	beq	.exit

	move.l	IntBase,a6
	lea	GWindowData,a0
	loclea	GWindowName,26(a0)
	lea	GWindowTags,a1
	jsr	OpenWindowTagList(a6)
	lea	GWindow,a0
	move.l	d0,(a0)

	move.l	GadBase,a6
	move.l	Screen,a0
	sub.l	a1,a1
	jsr	GetVisualInfoA(a6)
	lea	VInfo,a0
	move.l	d0,(a0)
	beq	.exit

	lea	GList,a0
	jsr	CreateContext(a6)
	move.l	d0,d2
	beq	.exit
	
	lea	Text_Tab,a3
	loclea	Guide_Text,(a3)+
	loclea	Cx_Text,(a3)+
	loclea	Loc_Text,(a3)+
	loclea	Rexx_Text,(a3)+
	loclea	Paladin_Text,(a3)+
	loclea	Smooth_Text,(a3)
	
	lea	Text_Tab,a3
	moveq	#5,d7
	
.Loop	moveq	#BUTTON_KIND,d0
	move.l	d2,a0
	lea	NewGadget1,a1
	move.l	(a3)+,8(a1)
	sub.l	a2,a2
	jsr	CreateGadgetA(a6)
	move.l	d0,d2
	beq.s	.exit
	
	lea	NewGadget1,a0
	move.w	6(a0),d0
	addq.w	#2,d0
	add.w	d0,2(a0)
	addq.w	#4,16(a0)
	dbra	d7,.Loop
	
	move.l	IntBase,a6
	move.l	GWindow,a0
	move.l	GList,a1
	moveq	#-1,d0
	moveq	#-1,d1
	sub.l	a2,a2
	jsr	AddGList(a6)
	
	move.l	GList,a0
	move.l	GWindow,a1
	sub.l	a2,a2
	jsr	RefreshGadgets(a6)	
	
	move.l	GadBase,a6
	move.l	GWindow,a0
	sub.l	a1,a1
	jsr	GT_RefreshWindow(a6)
	
.exit	rts

*-------------------------------------------

CloseGadgetWindow

	move.l	GList,d0
	beq.s	.close
	
	move.l	IntBase,a6
	move.l	GWindow,a0
	move.l	GList,a1
	moveq	#-1,d0
	jsr	RemoveGList(a6)
	
	move.l	GadBase,a6
	move.l	GList,a0
	jsr	FreeGadgets(a6)
	
	move.l	VInfo,a0
	jsr	FreeVisualInfo(a6)

.close	move.l	IntBase,a6
	move.l	GWindow,a0
	jsr	CloseWindow(a6)
	rts

*-------------------------------------------

GetGadgetMsg
	move.l	4.w,a6
	move.l	GWindow,a0
	move.l	wd_UserPort(a0),a0
	jsr	GetMsg(a6)
	tst.l	d0
	beq.s	.exit
	move.l	d0,a1
	move.l	im_Class(a1),d5
	move.l	im_IAddress(a1),a0
	move.w	gg_GadgetID(a0),d6
	
	jsr	ReplyMsg(a6)
	
	cmp.l	#IDCMP_GADGETUP,d5
	bne.s	.exit
	
	cmp.w	#20,d6
	beq.s	.Smooth
	
	lea	MyNag_Node,a0
	lea	Text_Tab,a1
	move.l	(a1,d6.w),(a0)
	
	bsr.s	ShowAmigaGuide
	
.exit	moveq	#0,d7
	rts	

.Smooth	tst.b	Smooth
	bne.s	.Smooth2
	bsr	DrawFirstLine_2
	bra.s	.exit
.Smooth2
	bsr	DrawFirstLine_1
	bra.s	.exit


*-------------------------------------------

ShowAmigaGuide

	move.l	AgBase,d0
	beq.s	.exit
	
	move.l	DosBase,a6
	jsr	GetProgramDir(a6)
	lea	MyNag_Lock,a0
	move.l	d0,(a0)
	beq.s	.exit
	
	bsr.s	Hotkey_Routine
	
	move.l	AgBase,a6
	lea	MyNag,a0
	sub.l	a1,a1
	jsr	OpenAmigaGuideA(a6)
	
	move.l	d0,a0
	jsr	CloseAmigaGuide(a6)

.exit	rts

*-------

Hotkey_Routine
	movem.l	d0-a6,-(sp)	unbedingt alle Register retten !
	move.l	IntBase,a6
	move.l	Screen,a0
	jsr	ScreenToFront(a6)
	movem.l	(sp)+,d0-a6	
	rts

*-------------------------------------------

LocBase		dc.l	0
CxBase		dc.l	0
AgBase		dc.l	0
DosBase		dc.l	0
IntBase		dc.l	0
GfxBase		dc.l	0
GadBase		dc.l	0
Window		dc.l	0
TempBM		dc.l	0
ExtSprite	dc.l	0
RastPort	dc.l	0
Locale1		dc.l	0
Catalog1	dc.l	0
MyWBMsg		dc.l	0
GList		dc.l	0
GWindow		dc.l	0
ARexxPort	dc.l	0
Broker1		dc.l	0

ScreenData	dc.w	0,0,640,280,8,1,0,15
		dc.l	Topaz8,0,0,0

WindowData	dc.w	0,11,640,269,1
		dc.l	$200220,$3140c,0,0,0
Screen		dc.l	0,0	
		dc.w	50,50,640,400,15	

WindowTags	dc.l	WA_BusyPointer,TRUE
		dc.l	TAG_DONE

ScreenTags	dc.l	SA_Pens,PenArray
		dc.l	SA_DisplayID,$8804
		dc.l	SA_Colors32,ColorTable	
		dc.l	SA_PubName,ScreenPubName
		dc.l	SA_Interleaved,TRUE
		dc.l	TAG_DONE

PointerTags	dc.l	WA_Pointer,0
		dc.l	WA_PointerDelay,TRUE
		dc.l	TAG_DONE

SpriteTags	dc.l	POINTERA_BitMap,0
		dc.l	POINTERA_XOffset,-6
		dc.l	POINTERA_WordWidth,4
		dc.l	POINTERA_XResolution,4
		dc.l	POINTERA_YResolution,2
		dc.l	TAG_DONE

GWindowData	dc.w	520,0,120,105,1
		dc.l	$60,$30406,0,0,0
		dc.l	0,0
		dc.w	10,10,600,280,2
	
GWindowTags	dc.l	WA_PubScreenName,ScreenPubName
		dc.l	TAG_DONE

ColorTable	dc.w	8,0
		dc.l	$9c9c9c9c,$9c9c9c9c,$9c9c9c9c
		dc.l	$ffffffff,$ffffffff,$ffffffff
		dc.l	$46464646,$66666666,$bfbfbfbf
		dc.l	$f4f4f4f4,$e8e8e8e8,$00000000
		dc.l	$00000000,$00000000,$00000000
		dc.l	$01010101,$01010101,$01010101
		dc.l	$02020202,$02020202,$02020202
		dc.l	$03030303,$03030303,$03030303
		dc.w	3,17
		dc.l	$e8e8e8e8,$00000000,$00000000
		dc.l	$00000000,$00000000,$00000000
		dc.l	$eeeeeeee,$dddddddd,$cccccccc
		dc.l	0
	
PenArray	dc.w	0,0,4,1,4,2,3,0,1,4,1,4,-1

EasyStruct	dc.l	es_SIZEOF,0,ReqTitle,0,ReqButton

Topaz8		dc.l	FontName
		dc.w	8,0
MyNag
MyNag_Lock	dc.l	0
MyNag_Name	dc.l	NagName
MyNag_Screen	dc.l	0
MyNag_ScreenName dc.l	ScreenPubName
MyNag_Port	dc.l	0
MyNag_ClientPort dc.l	0
MyNag_BaseName	dc.l	BaseName
MyNag_Flags	dc.l	0
MyNag_Context	dc.l	0
MyNag_Node	dc.l	NodeName
MyNag_Line	dc.l	0
MyNag_Extens	dc.l	0
MyNag_Private	dc.l	0

NewGadget1	dc.w	5,5,100,12
		dc.l	0,Topaz8
		dc.w	0
		dc.l	$10
VInfo		dc.l	0,0

NewBroker1	dc.b	5,0		Version
		dc.l	BrokerName
		dc.l	0		BrokerTitle
		dc.l	0		BrokerText
		dc.w	0
		dc.w	4		Show/Hide
		dc.b	0,0
		dc.l	0		MsgPort
		dc.w	0		Strukturende

Smooth		dc.b	0

CxName		dc.b	'commodities.library',0
LocName		dc.b	'locale.library',0
AgName		dc.b	'amigaguide.library',0
DosName		dc.b	'dos.library',0
IntName		dc.b	'intuition.library',0
GfxName		dc.b	'graphics.library',0
GadName		dc.b	'gadtools.library',0
PointerClass	dc.b	'pointerclass',0
FontName	dc.b	'topaz.font',0
CatName		dc.b	'A1200Demo.catalog',0
NodeName	dc.b	'MAIN',0
NagName		dc.b	'A1200Demo.guide',0
BaseName	dc.b	'Demo.guide',0
ARexxPortName	dc.b	'A1200DEMO_REXX',0
Blabla_Text	dc.b	'SCREENTOFRONT',0
Ende_Text	dc.b	'ENDE',0
ScreenPubName	dc.b	'A1200.DemoScreen',0 
ReqButton	dc.b	'Ok',0
ReqTitle	dc.b	'A1200Demo',0
VersionStr	dc.b	'$VER: A1200Demo 40.1 (11.8.93) - by PALADIN SOFTWARE',0
Hotkey_Text	dc.b	'ctrl q',0
BrokerName	dc.b	'A1200Demo',0

LOCALE_START
*-----------------------
	CATALOG	A1200Demo
	CATDATE	11.8.93
	VERSION	40.1
*-----------------------
ScreenName	dc.b	'Hires-HAM8 Screen',0
		D	'Hires-HAM8 Bildschirm',0
WindowName	dc.b	'Color-run',0
		D	'Farbverlauf',0
ReqNoAA		dc.b	'No AGA chipset present !',0
		D	'Kein AA-Chipset vorhanden !',0
ReqNo68020	dc.b	'No MC68020 or higher present !',0
		D	'Kein MC68020 oder höher vorhanden !',0
ReqNoScreen	dc.b	"Couldn't open screen !",0
		D	'Kann Bildschirm nicht öffnen !',0
GWindowName	dc.b	'Help',0
		D	'Hilfe',0
Guide_Text	dc.b	'AmigaGuide',0
		D	'',0
Cx_Text		dc.b	'Commodities',0
		D	'',0
Loc_Text	dc.b	'Locale',0
		D	'',0
Rexx_Text	dc.b	'ARexx',0
		D	'',0
Paladin_Text	dc.b	'PALADIN',0
		D	'',0
Smooth_Text	dc.b	'Smooth',0
		D	'Weich',0
BrokerTitle	dc.b	'A1200Demo by PALADIN SOFTWARE',0
		D	'A1200Demo von PALADIN SOFTWARE',0
BrokerText	dc.b	'a demo for the Amiga 1200',0
		D	'ein Demo für den Amiga 1200',0
*-----------------------
LOCALE_END


	SECTION	'Buffers',BSS_C	
Text_Tab	ds.l	7
PointerBM	ds.b	bm_SIZEOF
TempRP		ds.b	rp_SIZEOF
Pixels		ds.b	20000

	SECTION	'Sprite Data',DATA_C
PointerPlane0	dc.w	$0180,$0180,$0180,$0ff0,$3ffc,$7ffe,$ffff,$ffff
		dc.w	$ffff,$ffff,$ffff,$ffff,$7ffe,$7ffe,$3ffc,$0ff0
PointerPlane1	dc.w	$0c60,$3e70,$6018,$0000,$0000,$0660,$0440,$0000
		dc.w	$0000,$0000,$0000,$0ef0,$07e0,$0340,$0000,$0000
	
	
