
	XREF	_DCScrBase
	XDEF	TypeAsk

	INCLUDE exec/exec_lib.i
	INCLUDE intuition/intuition_lib.i
	INCLUDE help.i

	SECTION "AskWindow",CODE

TypeAsk bsr	GetLibs
	SADD	AskWindow,a0
	move.l	_DCScrBase,$1e(a0)
	CALLPC	_IntuitionBase,OpenWindow
	beq	NoType
	move.l	d0,a1
	SADD	_AskWindBase,a0
	move.l	a1,(a0)
	move.l	$32(a1),4(a0)
	move.l	$56(a1),8(a0)
	PEEKL	_AskWindRast,a0
	SADD	ABorder8,a1
	moveq.l #0,d0
	moveq.l #0,d1
	CALLSYS DrawBorder
	PEEKL	_AskWindRast,a0
	SADD	ChangeText,a1
	moveq.l #0,d0
	moveq.l #0,d1
	CALLSYS PrintIText
	bsr	CalcProp
AskWait PEEKL	_AskWindUser,a0
	CALLEXEC WaitPort
	PEEKL	_AskWindUser,a0
	CALLSYS GetMsg
	move.l	d0,a1
	move.l	$14(a1),d4
	move.l	$1c(a1),a4
	CALLSYS ReplyMsg
	cmpi.b	#$20,d4
	beq.s	GadDown
	cmpi.b	#$40,d4
	beq.s	GadUp
	bra	AskWait
GadUp	cmpi.w	#"CL",$26(a4)
	bne.s	NoQuit
	move.w	#"CL",d7
	bra	AskQuit
NoQuit	cmpi.w	#"OK",$26(a4)
	bne.s	AskWait
	bsr	MakeReturn
	bra	AskQuit
GadDown cmpi.w	#"PR",$26(a4)
	bne.s	NoProp
	bsr	CalcProp
	bra	AskWait
NoProp	bsr	SetBool
	bra	AskWait
AskQuit PEEKL	_AskWindBase,a0
	CALLPC	_IntuitionBase,CloseWindow
NoType	PEEKL	Memory,d0
	mulu	#100,d0
	rts

CalcProp
	moveq.l #0,d0
	PEEKW	APropSpecial+2,d0
	mulu	#3000,d0
	swap	d0
	andi.l	#$ffff,d0
	addq.l	#1,d0
	POKEL	d0,Memory
	SADD	PropBytes+8,a1
	bsr	MakeMem
	PEEKL	_AskWindRast,a0
	SADD	PropText,a1
	moveq.l #0,d0
	moveq.l #0,d1
	CALLPC	_IntuitionBase,PrintIText
	cmpi.w	#$80,AProp+12
	beq.s	CalcProp
	rts

MakeMem moveq.l #3,d1
	SADD	Tens,a0
Next	moveq.l #"0",d2
Dec	addq.l	#1,d2
	sub.l	(a0),d0
	bcc.s	Dec
	subq.l	#1,d2
	add.l	(a0)+,d0
	move.b	d2,(a1)+
	dbra	d1,Next
	rts

Tens	dc.l	1000,100,10,1

MakeReturn
	SADD	BoolList,a0
Make1	move.l	(a0)+,a1
	cmpi.w	#$82,$c(a1)
	bne.s	NotSelected
	move.w	$26(a1),d7
NotSelected
	tst.l	(a0)
	bne.s	Make1
	rts

SetBool SADD	BoolList,a0
Set1	move.l	(a0)+,a1
	move.w	#2,$c(a1)
	move.w	$26(a1),d1
	cmp.w	$26(a4),d1
	bne.s	NoSet
	move.w	#$82,$c(a1)
NoSet	tst.l	(a0)
	bne.s	Set1
	SADD	ABool0,a0
	PEEKL	_AskWindBase,a1
	suba.l	a2,a2
	CALLPC	_IntuitionBase,RefreshGadgets
	rts

BoolList	dc.l	ABool0,ABool1,ABool2,0

***	Library-Zeiger suchen und merken

GetLibs move.l	4,a6
	lea	$17a(a6),a0
	SADD	IntName,a1
	CALLSYS FindName
	POKEL	d0,_IntuitionBase
	rts

IntName 	INTNAME
_IntuitionBase	ds.l	1

***	Data-Teil

AskWindow	dc.w	160,21,320,158
		dc.b	-1,-1
		dc.l	8!$20!$40,$800!$1000!$10000,AProp,0,0,0,0
		dc.w	0,0,0,0,15
_AskWindBase	ds.l	1
_AskWindRast	ds.l	1
_AskWindUser	ds.l	1
AProp		dc.l	ABool0
		dc.w	24,109,272,6,0,2,3
		dc.l	APropInfo,0,0,0,APropSpecial
		dc.w	"PR"
		dc.l	0
APropInfo	ds.w	4
APropSpecial	dc.w	1!2!8,1140*$ffff/3000,0,$200
		ds.w	7
ABool0		dc.l	ABool1
		dc.w	20,27,280,11,$80!2,2,1
		dc.l	ABorder0,ABorder2,AText0,0,0
		dc.w	"AS"
		dc.l	0
AText0		dc.b	1,0,1,0
		dc.w	140-9*4,2
		dc.l	0,ABytes0,0
		TEXT	ABytes0,"ASSEMBLER"
ABool1		dc.l	ABool2
		dc.w	20,27+21,280,11,2,2,1
		dc.l	ABorder0,ABorder2,AText1,0,0
		dc.w	"BS"
		dc.l	0
AText1		dc.b	1,0,1,0
		dc.w	140-5*4,2
		dc.l	0,ABytes1,0
		TEXT	ABytes1,"BASIC"
ABool2		dc.l	ABool3
		dc.w	20,27+2*21,280,11,2,2,1
		dc.l	ABorder0,ABorder2,AText2,0,0
		dc.w	"CS"
		dc.l	0
AText2		dc.b	1,0,1,0
		dc.w	140-4,2
		dc.l	0,ABytes2,0
		TEXT	ABytes2,"C"
ABool3		dc.l	ABool4
		dc.w	20,27+20+7+5*10+3*11,130,11,2,1,1
		dc.l	ABorder4,ABorder6,AText3,0,0
		dc.w	"CL"
		dc.l	0
AText3		dc.b	1,0,1,0
		dc.w	65-5*4,2
		dc.l	0,ABytes3,0
		TEXT	ABytes3,"CANCEL"
ABool4		dc.l	0
		dc.w	170,27+20+7+5*10+3*11,130,11,2,1,1
		dc.l	ABorder4,ABorder6,AText4,0,0
		dc.w	"OK"
		dc.l	0
AText4		dc.b	1,0,1,0
		dc.w	65-8*4,2
		dc.l	0,ABytes4,0
		TEXT	ABytes4,"CONTINUE"

ChangeText	dc.b	1,0,1,0
		dc.w	160-12*4,10
		dc.l	0,ChangeBytes,PropText
		TEXT	ChangeBytes,<"CHANGE TO ...">
PropText	dc.b	1,0,1,0
		dc.w	160-14*4,90
		dc.l	0,PropBytes,0
		TEXT	PropBytes,<"BUFFER: 000000">
Memory		ds.l	1

ABorder0	dc.w	0,0
		dc.b	2,0,1,3
		dc.l	APairs02,ABorder1
ABorder1	dc.w	0,0
		dc.b	1,0,1,3
		dc.l	APairs13,0
ABorder2	dc.w	0,0
		dc.b	1,0,1,3
		dc.l	APairs02,ABorder3
ABorder3	dc.w	0,0
		dc.b	2,0,1,3
		dc.l	APairs13,0
APairs02	dc.w	279,0,0,0,0,9
APairs13	dc.w	0,10,279,10,279,1
ABorder4	dc.w	0,0
		dc.b	2,0,1,3
		dc.l	APairs46,ABorder5
ABorder5	dc.w	0,0
		dc.b	1,0,1,3
		dc.l	APairs57,0
ABorder6	dc.w	0,0
		dc.b	1,0,1,3
		dc.l	APairs46,ABorder7
ABorder7	dc.w	0,0
		dc.b	2,0,1,3
		dc.l	APairs57,0
APairs46	dc.w	129,0,0,0,0,9
APairs57	dc.w	0,10,129,10,129,1
ABorder8	dc.w	0,0
		dc.b	2,0,1,3
		dc.l	APairs8,ABorder9
APairs8 	dc.w	319,0,0,0,0,156
ABorder9	dc.w	0,0
		dc.b	1,0,1,3
		dc.l	APairs9,PropBorder0
APairs9 	dc.w	0,157,319,157,319,1
PropBorder0	dc.w	20,107
		dc.b	1,0,1,3
		dc.l	PropPairs0,PropBorder1
PropPairs0	dc.w	279,0,0,0,0,8
PropBorder1	dc.w	20,107
		dc.b	2,0,1,3
		dc.l	PropPairs1,0
PropPairs1	dc.w	0,9,279,9,279,1

	END


