*************************************************
*						*
*		 (C)opyright 1992-93		*
*						*
*		  by Tomi Blinnikka		*
*						*
*	Don't try to understand the code	*
*						*
* Version 0.01	13/06/1992-			*
*	 -0.99ö	20/06/1992			*
*						*
* Version 1.00	07/02/1993			*
*						*
* Changed parser				*
*						*
* Added: From option, generic sampler, timer	*
*	 selection, fixed lotsa bugs		*
*						*
* BUGS: 					*
*						*
*************************************************

	INCLUDE	"JMPLibs.i"
	INCLUDE	"exec/memory.i"
	INCLUDE	"exec/io.i"
	INCLUDE	"exec/tasks.i"
	INCLUDE	"libraries/dosextens.i"
	INCLUDE	"libraries/dos.i"
	INCLUDE	"libraries/gadtools.i"
	INCLUDE "workbench/startup.i"
	INCLUDE "dos/dostags.i"

	INCLUDE	"XREF:2.0.xref"
	INCLUDE	"XREF:intuition.xref"
	INCLUDE	"XREF:exec.xref"
	INCLUDE	"XREF:dos.xref"
	INCLUDE	"XREF:icon.xref"
	INCLUDE	"XREF:gfx.xref"

*************************************************
*	Voice.library version 6.6 offsets	*
*************************************************
_LVOLearn		EQU	-30
_LVORecognize		EQU	-36
_LVOAddVoiceTask	EQU	-42
_LVORemVoiceTask	EQU	-48
_LVOGainUp		EQU	-54
_LVOGainDown		EQU	-60
_LVORecDataAddress	EQU	-66
_LVORecMapAddress	EQU	-72
_LVOWordScore		EQU	-78
_LVOPickSampler		EQU	-84
_LVOSetVoicePri		EQU	-90
_LVOPickTimer		EQU	-96
*************************************************

DVoice		set	1

ShellTop:	EQU	2
OptionTop:	EQU	46
VocabSIZE:	EQU	60
NUMGADS:	EQU	10
GADLENG1:	EQU	16
GADLENG2:	EQU	64
GADLENGTH:	EQU	(GADLENG1+GADLENG2)

Samp1MenuN:	EQU	$0002		;0002
Samp2MenuN:	EQU	$0802		;0802
Samp3MenuN:	EQU	$1002		;1002
ResLoMenuN:	EQU	$0022		;0022
ResHiMenuN:	EQU	$0822		;0822

TRUE:		EQU	1
do_ToolTypes:	EQU	$36

		section	VS,CODE

		push	d2-d7/a2-a6

		sub.l	a1,a1			;Find our task
		lib	Exec,FindTask
		move.l	d0,OurTask
		move.l	d0,a4
		move.l	pr_CLI(a4),d0
		bne	OpenDos

		lea.l	pr_MsgPort(a4),a0
		lib	Exec,WaitPort
		lea.l	pr_MsgPort(a4),a0
		lib	Exec,GetMsg
		move.l	d0,WBMsg

OpenDos:	openlib	Dos,NoDos		;Keep at beginning

		tst.l	WBMsg
		beq	CLIStart

		lea.l	NILName,a0
		move.l	a0,d1
		move.l	#MODE_NEWFILE,d2
		lib	Dos,Open
		move.l	d0,NILFile
		beq	NoNIL
		move.l	NILFile,_stdout

		openlib	Icon,NoIcon

		move.l	WBMsg,a0
		move.l	sm_ArgList(a0),a1
		move.l	wa_Lock(a1),d1
		lib	Dos,CurrentDir
		move.l	d0,OldLock

		move.l	WBMsg,a0
		move.l	sm_ArgList(a0),a1
		move.l	wa_Name(a1),a0
		lib	Icon,GetDiskObject
		move.l	d0,DiskObject
		beq	MainStart

DoToolType1:	move.l	DiskObject,a4
		move.l	do_ToolTypes(a4),a0
		lea.l	ICONIFYText1,a1
		lib	Icon,FindToolType
		tst.l	d0
		beq	DoToolType2
		move.l	d0,a0
		lea.l	YESText1,a1
		lib	Icon,MatchToolValue
		tst.l	d0
		beq	DoToolType2
		move.l	#1,OptionIconify

DoToolType2:	move.l	do_ToolTypes(a4),a0
		lea.l	FROMText1,a1
		lib	Icon,FindToolType
		move.l	d0,FromFile

DoToolType3:	bra	MainStart

CLIStart:	lib	Dos,Output
		move.l	d0,_stdout

		lea.l	CLTemplate1,a0
		move.l	a0,d1
		lea.l	CLArray1,a0
		move.l	a0,d2
		clr.l	d3
		lib	Dos,ReadArgs
		move.l	d0,RDArgs1
		beq	NoRDArgs

MainStart:	openlib	Intuition,NoInt

		move.l	#6,d0
		move.l	$4,a6
		lea.l	_VoiceLib,a1
		jsr	_LVOOpenLibrary(a6)
		move.l	d0,_VoiceBase
		beq	NoVoice

		openlib	GadTools,NoGadTools
		openlib	Gfx,NoGfx

;Create a message port for the voice.library

		lib	Exec,CreateMsgPort
		move.l	d0,VoicePort
		beq	NoMsgPort

		bsr	LockPubScr
		tst.l	PubScreen
		beq	NoPubScreen

;Get visualinfo

		move.l	PubScreen,a0
		sub.l	a1,a1
		lib	GadTools,GetVisualInfoA
		move.l	d0,vi

;Make gadget stuff

		lea.l	glist,a0
		lib	GadTools,CreateContext
		move.l	d0,ContextGad
		beq	NoContextGad

		move.l	glist,a0
		lea.l	NGOnOffGad1,a1
		move.l	#CHECKBOX_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	GadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,OnOffGad1
		move.l	d0,a0
		or.w	#RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGGainUGad,a1
		move.l	#BUTTON_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	GadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		move.l	a0,GainUGad1
		or.w	#RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGGainDGad,a1
		move.l	#BUTTON_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	GadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		move.l	a0,GainDGad1
		or.w	#RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGSaveGad,a1
		move.l	#BUTTON_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	GadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		move.l	a0,SaveGad1
		or.w	#RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGQuitGad,a1
		move.l	#BUTTON_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	GadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		move.l	a0,QuitGad1
		or.w	#GRELRIGHT,gg_Flags(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGDatStrGad1,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	DatStrGadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,DatStrGad1
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),DatStrGadBuf1
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStatusGad,a1
		move.l	#TEXT_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StatGadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		move.l	a0,StatusGad1
		add.w	d5,gg_TopEdge(a0)

		lea.l	glist2,a0
		lib	GadTools,CreateContext
		move.l	d0,ContextGad2
		beq	NoContextGad

		move.l	glist2,a0
		lea.l	NGStrGad1,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad1
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf1
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad2,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad2
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf2
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad3,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad3
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf3
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad4,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad4
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf4
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad5,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad5
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf5
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad6,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad6
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf6
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad7,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad7
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf7
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad8,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad8
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf8
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad9,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad9
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf9
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad10,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad10
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf10
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad11,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad11
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf11
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad12,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad12
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf12
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad13,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad13
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf13
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad14,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad14
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf14
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad15,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad15
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf15
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad16,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad16
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf16
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad17,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad17
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf17
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad18,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad18
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf18
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad19,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList1,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad19
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf19
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGStrGad20,a1
		move.l	#STRING_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	StrGadTagList2,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,StrGad20
		move.l	d0,a0
		move.l	$22(a0),a1
		move.l	(a1),StrGadBuf20
		or.w	#GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGDesc1Gad,a1
		move.l	#TEXT_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	DescGadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		add.w	d5,gg_TopEdge(a0)

		lea.l	NGDesc2Gad,a1
		move.l	#TEXT_KIND,d0
		move.l	vi,gng_VisualInfo(a1)
		lea.l	DescGadTagList,a2
		lib	GadTools,CreateGadgetA

		move.l	d0,a0
		add.w	d5,gg_TopEdge(a0)

		move.b	#1,GadMagic		;Make worked OK

;New style menu stuff

		lea.l	MNProjectMenu1,a0
		lea.l	MenuTagList,a1
		lib	GadTools,CreateMenusA
		move.l	d0,mlist
		beq	NoMenus

		move.l	mlist,a0
		move.l	vi,a1
		lea.l	MenuTagList,a2
		lib	GadTools,LayoutMenusA

		lea.l	MNPageMenu1,a0
		lea.l	MenuTagList2,a1
		lib	GadTools,CreateMenusA
		move.l	d0,mlist2
		beq	NoMenus

		move.l	mlist2,a0
		move.l	vi,a1
		lea.l	MenuTagList2,a2
		lib	GadTools,LayoutMenusA
		move.b	#1,MenuMagic

;Read preferences

		bsr	Load

		bsr	OpenWin1
		tst.l	Window1
		beq	NoWindow1

		bsr	AddVTask

;Unlock PubScreen

		sub.l	a0,a0
		move.l	PubScreen,a1
		lib	Intuition,UnlockPubScreen
		clr.l	PubScreen

Window1IDCMP:	move.l	Window1,a0
		bsr	CheckIDCMP
		tst.l	d0			;Test for CTRL_C
		beq	ShutDown
		cmp.l	#1,d0			;Test for CTRL_D
		beq	DoCTRL_D
		cmp.l	#2,d0			;Test for CTRL_E
		beq	DoCTRL_E
		cmp.l	#3,d0
		beq	DoVoice
		cmp.l	#INTUITICKS,d2
		beq	DoTicks
		cmp.l	#GADGETUP,d2
		beq	DoGads
		cmp.l	#CLOSEWINDOW,d2
		beq	Quit
		cmp.l	#MENUPICK,d2
		beq	Win1Menus
		cmp.l	#VANILLAKEY,d2
		beq	VanillaKeys
		cmp.l	#ACTIVEWINDOW,d2
		beq	ActivateGads
		bra	Window1IDCMP

DoCTRL_D:	bsr	RemGads
		move.l	OnOffGad1,a0
		and.w	#~SELECTED,gg_Flags(a0)
		bsr	RemVTask1
		bsr	AddGads
		bra	Window1IDCMP
DoCTRL_E:	bsr	RemGads
		move.l	OnOffGad1,a0
		or.w	#SELECTED,gg_Flags(a0)
		bsr	AddVTask1
		bsr	AddGads
		bra	Window1IDCMP

Win1Menus:	bsr	MenuNull
		cmp.w	#$00,d6
		beq	Win1Menus1
		cmp.w	#$01,d6
		beq	Win1Menus2
		cmp.w	#$02,d6
		beq	Win1Menus3
		bra	Window1IDCMP
Win1Menus1:	cmp.w	#$00,d5
		beq	DoLoad
		cmp.w	#$01,d5
		beq	Save
		cmp.w	#$02,d5
		beq	About
		cmp.w	#$04,d5
		beq	Quit
		bra	Window1IDCMP
Win1Menus2:	cmp.w	#$00,d5
		beq	EditCmds
		bra	Window1IDCMP
Win1Menus3:	cmp.w	#$00,d5
		beq	Win1Menus3.1
		cmp.w	#$01,d5
		beq	Win1Menus3.2
		cmp.w	#$02,d5
		beq	Win1Menus3.3
		bra	Window1IDCMP
Win1Menus3.1:	cmp.w	#$00,d4
		beq	SetSamp1
		cmp.w	#$01,d4
		beq	SetSamp2
		cmp.w	#$02,d4
		beq	SetSamp3
		bra	Window1IDCMP
Win1Menus3.2:	cmp.w	#$00,d4
		beq	SetResLo
		cmp.w	#$01,d4
		beq	SetResHi
Win1Menus3.3:	cmp.w	#$00,d4
		beq	SetTimerA
		cmp.w	#$01,d4
		beq	SetTimerB
		bra	Window1IDCMP

DoTicks:	add.w	#1,TickCount
		cmp.w	#20,TickCount
		bne	Window1IDCMP
		clr.w	TickCount
		tst.w	TaskOn
		beq	DoTicks2
		lea.l	ReadyText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP
DoTicks2:	lea.l	InactiveText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP

EditCmds:	clr.w	Saved
		bsr	RemVTask1
		bsr	SleepPointer
		bsr	MenusOff
		bsr	RemGads

		bsr	OpenWin2
		tst.l	d0
		beq	NoWindow1
		bsr	RemGads2
		bsr	SetStrGads
		bsr	AddGads2

Window2IDCMP:	move.l	Window2,a0
		bsr	CheckIDCMP

		tst.l	d0
		beq	ShutDown
		cmp.l	#GADGETUP,d2
		beq	ActivateGads2
		cmp.l	#CLOSEWINDOW,d2
		beq	EditCmds_OUT
		cmp.l	#MENUPICK,d2
		beq	Win2Menus
		cmp.l	#VANILLAKEY,d2
		beq	EditKeys
		cmp.l	#ACTIVEWINDOW,d2
		beq	GoActGads2
		bra	Window2IDCMP

Win2Menus:	bsr	MenuNull
		cmp.w	#$00,d6
		beq	Win2Menus1
		bra	Window2IDCMP
Win2Menus1:	cmp.w	#$00,d5
		beq	DoPage1
		cmp.w	#$01,d5
		beq	DoPage2
		cmp.w	#$02,d5
		beq	DoPage3
		cmp.w	#$03,d5
		beq	DoPage4
		cmp.w	#$04,d5
		beq	DoPage5
		cmp.w	#$05,d5
		beq	DoPage6
		cmp.w	#$07,d5
		beq	EditCmds_OUT
		bra	Window2IDCMP

DoPage1:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#0,Page
		bsr	SetStrGads
		bsr	AddGads2
		bra	Window2IDCMP

DoPage2:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#1,Page
		bsr	SetStrGads
		bsr	AddGads2
		bsr	ActGad2
		bra	Window2IDCMP

DoPage3:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#2,Page
		bsr	SetStrGads
		bsr	AddGads2
		bsr	ActGad2
		bra	Window2IDCMP

DoPage4:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#3,Page
		bsr	SetStrGads
		bsr	AddGads2
		bsr	ActGad2
		bra	Window2IDCMP

DoPage5:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#4,Page
		bsr	SetStrGads
		bsr	AddGads2
		bsr	ActGad2
		bra	Window2IDCMP

DoPage6:	bsr	SaveStrGads
		bsr	RemGads2
		move.w	#5,Page
		bsr	SetStrGads
		bsr	AddGads2
		bsr	ActGad2
		bra	Window2IDCMP

SaveStrGads:	lea.l	CmdList,a2
		move.w	Page,d0
		mulu.w	#NUMGADS*GADLENGTH,d0
		add.w	d0,a2			;a2=start of strings

		move.l	StrGadBuf1,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf2,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf3,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf4,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf5,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf6,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf7,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf8,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf9,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf10,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf11,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf12,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf13,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf14,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf15,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf16,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf17,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf18,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf19,a0
		move.l	a2,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	StrGadBuf20,a0
		move.l	a2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem
		rts

SetStrGads:	lea.l	CmdList,a2
		move.w	Page,d0
		mulu.w	#NUMGADS*GADLENGTH,d0
		add.w	d0,a2			;a2=start of strings

		move.l	a2,a0
		move.l	StrGadBuf1,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf2,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf3,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf4,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf5,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf6,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf7,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf8,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf9,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf10,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf11,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf12,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf13,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf14,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf15,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf16,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf17,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf18,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf19,a1
		move.l	#GADLENG1,d0
		add.l	d0,a2
		lib	Exec,CopyMem

		move.l	a2,a0
		move.l	StrGadBuf20,a1
		move.l	#GADLENG2,d0
		add.l	d0,a2
		lib	Exec,CopyMem
		rts

GoActGads2:	bsr	ActGad2
		bra	Window2IDCMP

EditCmds_OUT:	bsr	SaveStrGads
		bsr	CloseWin2
		bsr	AddGads
		bsr	MenusOn
		bsr	AddVTask
		bsr	NormalPointer
		bra	Window1IDCMP

EditKeys:	cmp.w	#$1b,d3
		beq	EditCmds_OUT
		bra	Window2IDCMP

DoVoice:	cmp.w	#-1,d3
		beq	VoiceUnknown
		cmp.w	#-2,d3
		beq	VoiceClip
		cmp.w	#-3,d3
		beq	VoiceLow
		cmp.w	#-4,d3
		beq	VoiceNoisy

		lea.l	CmdList,a2
		move.w	d3,d0
		mulu.w	#GADLENGTH,d0
		add.w	d0,a2			;a2=start of strings

		move.l	a2,a0
		bsr	GetLength
		bsr	Inform

		add.l	#GADLENG1,a2
		cmp.l	#0,(a2)
		beq	DoVoice2

		move.l	a2,d1			;execute command
		lea.l	CMDTags,a0
		move.l	a0,d2
		lib	Dos,SystemTagList
		cmp.l	#-1,d0
		beq	DoVoice3

		bra	Window1IDCMP

DoVoice2:	lea.l	NoCMDText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP
DoVoice3:	lea.l	CMDFailText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP

VoiceUnknown:	lea.l	NoMatchText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP
VoiceClip:	lea.l	ClippingText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP
VoiceLow:	lea.l	LowVolText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP
VoiceNoisy:	lea.l	NoisyText1,a0
		bsr	GetLength
		bsr	Inform
		bra	Window1IDCMP

SetResLo:	bsr	RemVTask
		move.b	#1,PrefsSampRes
		bsr	AddVTask
		bra	Window1IDCMP
SetResHi:	bsr	RemVTask
		move.b	#0,PrefsSampRes
		bsr	AddVTask
		bra	Window1IDCMP

SetSamp1:	clr.b	PrefsSampType			;PerfectSound
		clr.l	d0
		lib	Voice,PickSampler
		bsr	RemGads
		move.l	GainUGad1,a0
		and.w	#~GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		and.w	#~GADGDISABLED,gg_Flags(a0)
		bsr	AddGads
		bra	Window1IDCMP
SetSamp2:	move.b	#1,PrefsSampType		;SoundMaster
		move.l	#$01,d0
		lib	Voice,PickSampler
		bsr	RemGads
		move.l	GainUGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		bsr	AddGads
		bra	Window1IDCMP
SetSamp3:	move.b	#2,PrefsSampType		;Generic
		move.l	#$02,d0
		lib	Voice,PickSampler
		bsr	RemGads
		move.l	GainUGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		bsr	AddGads
		bra	Window1IDCMP

SetTimerA:	move.b	#1,PrefsTimer			;Timer A=1
		move.l	#$01,d0
		lib	Voice,PickTimer
		bra	Window1IDCMP

SetTimerB:	clr.b	PrefsTimer			;Timer B=0
		clr.l	d0
		lib	Voice,PickTimer
		bra	Window1IDCMP

DoLoad:		bsr	RemGads
		bsr	Load
		bsr	AddVTask
		bsr	AddGads
		move.l	#5,d1
		lib	Dos,Delay
		bra	ActivateGads

VanillaKeys:	cmp.w	#$1b,d3
		beq	Quit
		cmp.w	#'s',d3			;Lower case
		beq	Save
		cmp.w	#'q',d3
		beq	Quit
		cmp.w	#'d',d3
		beq	ActivateGads
		cmp.w	#'S',d3			;Upper case
		beq	Save
		cmp.w	#'Q',d3
		beq	Quit
		cmp.w	#'D',d3
		beq	ActivateGads
		bra	Window1IDCMP

DoGads:		cmp.w	#10,$26(a5)
		beq	DoOnOff
		cmp.w	#1,$26(a5)
		beq	ActivateGads
		cmp.w	#20,$26(a5)
		beq	GainUp
		cmp.w	#30,$26(a5)
		beq	GainDown
		cmp.w	#98,$26(a5)
		beq	Save
		cmp.w	#99,$26(a5)
		beq	Quit
		bra	Window1IDCMP

DoOnOff:	bsr	AddVTask		;one or the other
		bsr	RemVTask		;will respond
		bra	Window1IDCMP

GainUp:		lib	Voice,GainUp
		bra	Window1IDCMP
GainDown:	lib	Voice,GainDown
		bra	Window1IDCMP

ActivateGads:	move.l	DatStrGad1,a0
		move.l	Window1,a1
		sub.l	a2,a2
		lib	Intuition,ActivateGadget
		bra	Window1IDCMP

ActGad:		move.l	DatStrGad1,a0
		move.l	Window1,a1
		sub.l	a2,a2
		lib	Intuition,ActivateGadget
		rts

ActivateGads2:	cmp.w	#1,$26(a5)
		beq	Learn
		cmp.w	#2,$26(a5)
		bne	Window2IDCMP
		cmp.l	#$00,(a5)
		beq	ActivateGads2.01
		move.l	(a5),a0
		move.l	StrGad20,a1
		cmp.l	a5,a1
		bne	ActivateGads2.1
ActivateGads2.01: move.l StrGad1,a0
ActivateGads2.1: move.l	Window2,a1
		sub.l	a2,a2
		lib	Intuition,ActivateGadget
		bra	Window2IDCMP

ActGad2:	move.l	StrGad1,a0
		move.l	Window2,a1
		sub.l	a2,a2
		lib	Intuition,ActivateGadget
		rts

Learn:		move.w	Page,d0
		mulu.w	#NUMGADS,d0
		move.l	$22(a5),a0
		move.l	(a0),a0
		cmp.l	StrGadBuf1,a0
		bne	Learn1
		add.w	#1,d0
		bra	Learn10
Learn1:		cmp.l	StrGadBuf3,a0
		bne	Learn2
		add.w	#2,d0
		bra	Learn10
Learn2:		cmp.l	StrGadBuf5,a0
		bne	Learn3
		add.w	#3,d0
		bra	Learn10
Learn3:		cmp.l	StrGadBuf7,a0
		bne	Learn4
		add.w	#4,d0
		bra	Learn10
Learn4:		cmp.l	StrGadBuf9,a0
		bne	Learn5
		add.w	#5,d0
		bra	Learn10
Learn5:		cmp.l	StrGadBuf11,a0
		bne	Learn6
		add.w	#6,d0
		bra	Learn10
Learn6:		cmp.l	StrGadBuf13,a0
		bne	Learn7
		add.w	#7,d0
		bra	Learn10
Learn7:		cmp.l	StrGadBuf15,a0
		bne	Learn8
		add.w	#8,d0
		bra	Learn10
Learn8:		cmp.l	StrGadBuf17,a0
		bne	Learn9
		add.w	#9,d0
		bra	Learn10
Learn9:		cmp.l	StrGadBuf19,a0
		bne	Learn10
		add.w	#10,d0

Learn10:	sub.w	#1,d0
		lea.l	MapBuffer,a0
		move.l	$22(a5),a1
		move.l	(a1),a1
		sub.l	a2,a2		;screen
		move.l	#220,d1
		move.l	#42,d2
		lib	Voice,Learn
		move.l	(a5),a0
		bra	ActivateGads2.1

Load:		bsr	RemVTask1

		move.l	FromFile,d1		;If set to something else
		bne	Load1
		lea.l	PrefsName,a0
		move.l	a0,d1
Load1:		move.l	#MODE_OLDFILE,d2
		lib	Dos,Open
		move.l	d0,PrefsFile
		beq	Load_ERR1

		move.l	PrefsFile,d1
		lea.l	Prefs,a0
		move.l	a0,d2
		move.l	#2,d3
		lib	Dos,Read
		cmp.l	#2,d0
		bne	Load_ERR2

		cmp.w	#'VS',Prefs
		bne	Load_ERR3

		move.l	PrefsFile,d1
		add.l	#2,d2
		move.l	#PrefsSize-2,d3
		lib	Dos,Read
		cmp.l	#PrefsSize-2,d0
		bne	Load_ERR2

Load2:		move.l	DatStrGadBuf1,d1
		move.l	#MODE_OLDFILE,d2
		lib	Dos,Open
		move.l	d0,DataFile
		beq	Load_ERR1.1

		move.l	DataFile,d1
		lea.l	MapBuffer,a0
		move.l	a0,d2
		move.l	#DataSize,d3
		lib	Dos,Read
		cmp.l	#DataSize,d0
		bne	Load_ERR2

		move.w	#1,Saved

Load_OUT:	move.l	DataFile,d1
		beq	Load_OUT0.1
		lib	Dos,Close
		clr.l	DataFile
Load_OUT0.1:	move.l	PrefsFile,d1
		beq	Load_OUT1
		lib	Dos,Close
		clr.l	PrefsFile

Load_OUT1:	bsr	SetModes
		rts

Load_ERR1:	lea.l	File_ERRTxt1,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		bra	Load2

Load_ERR1.1:	lea.l	File_ERRTxt4,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		bra	Load_OUT

Load_ERR2:	lea.l	File_ERRTxt2,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		bra	Load_OUT

Load_ERR3:	lea.l	File_ERRTxt3,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		bra	Load_OUT

Save:		bsr	CheckModes

		move.l	FromFile,d1		;If set to something else
		bne	Save1
		lea.l	PrefsName,a0
		move.l	a0,d1
Save1:		move.l	#MODE_NEWFILE,d2
		lib	Dos,Open
		move.l	d0,PrefsFile
		beq	Save_ERR1

		move.w	#'VS',Prefs

		move.l	PrefsFile,d1
		lea.l	Prefs,a0
		move.l	a0,d2
		move.l	#PrefsSize,d3
		lib	Dos,Write
		cmp.l	#PrefsSize,d0
		bne	Save_ERR2

Save2:		move.l	DatStrGadBuf1,d1
		move.l	#MODE_NEWFILE,d2
		lib	Dos,Open
		move.l	d0,DataFile
		beq	Save_ERR1.1

		move.l	DataFile,d1
		lea.l	MapBuffer,a0
		move.l	a0,d2
		move.l	#DataSize,d3
		lib	Dos,Write
		cmp.l	#DataSize,d0
		bne	Save_ERR2

		move.w	#1,Saved

Save_OUT:	move.l	DataFile,d1
		beq	Save_OUT0.1
		lib	Dos,Close
		clr.l	DataFile
Save_OUT0.1:	move.l	PrefsFile,d1
		beq	Save_OUT1
		lib	Dos,Close
		clr.l	PrefsFile
Save_OUT1:	bra	ActivateGads

Save_ERR1:	lea.l	File_ERRTxt1,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		clr.w	Saved
		bra	Save2

Save_ERR1.1:	lea.l	File_ERRTxt4,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		clr.w	Saved
		bra	Save_OUT

Save_ERR2:	lea.l	File_ERRTxt2,a1
		move.l	#$00,a2
		lea.l	OKTxt,a3
		bsr	DoAutoRequest
		clr.w	Saved
		bra	Save_OUT

About:		bsr	RemVTask1
		bsr	SleepPointer
		bsr	MenusOff
		bsr	RemGads

		move.l	Window1,a0
		lea.l	AboutTxt1,a1
		move.l	#$00,a2		;positive text
		lea.l	OKTxt,a3	;a bit the wrong way around but...
		move.l	#$00,d0
		move.l	#$00,d1
		move.l	#320,d2
		move.l	#$50,d3
		lib	Intuition,AutoRequest
		bsr	AddGads
		bsr	MenusOn
		bsr	NormalPointer
		bsr	AddVTask
		bra	Window1IDCMP

;This is emergency exit, that's why it changes the Saved-flag

Break:		lea.l	BreakText1,a0
		bsr	Printer
		move.l	#CLOSEWINDOW,d2		;fake closewindow...
		move.l	#-1,d0
		move.w	#1,Saved
		rts

AddVTask:	move.l	OnOffGad1,a0
		move.w	gg_Flags(a0),d0
		and.w	#SELECTED,d0
		cmp.w	#SELECTED,d0
		bne	AddVTask_OUT
AddVTask1:	tst.w	TaskOn
		bne	AddVTask_OUT
		lea.l	MapBuffer,a0
		move.l	VoicePort,a1
		clr.l	d0
		clr.l	d1
		move.w	#VocabSIZE,d0
		move.b	PrefsSampRes,d1
		lib	Voice,AddVoiceTask

		move.w	#1,TaskOn
		lea.l	TaskOnText1,a0
		bsr	GetLength
		bsr	Inform
AddVTask_OUT:	rts

RemVTask:	move.l	OnOffGad1,a0
		move.w	gg_Flags(a0),d0
		and.w	#SELECTED,d0
		cmp.w	#SELECTED,d0
		beq	RemVTask_OUT
RemVTask1:	tst.w	TaskOn
		beq	RemVTask_OUT
		bsr	C3GetMsg1		;Clear messages
		lib	Voice,RemVoiceTask

		clr.w	TaskOn
		lea.l	TaskOffText1,a0
		bsr	GetLength
		bsr	Inform
RemVTask_OUT:	rts

SetModes:	move.l	OnOffGad1,a0
		and.w	#~SELECTED,gg_Flags(a0)

		move.l	OnOffGad1,a0
		tst.b	PrefsOnOff
		beq	SetModes1
		or.w	#SELECTED,gg_Flags(a0)

SetModes1:	move.l	mlist,a0			;UnCheck SampType1
		move.l	#Samp1MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		and.w	#~CHECKED,$c(a0)

		move.l	mlist,a0			;UnCheck SampType2
		move.l	#Samp2MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		and.w	#~CHECKED,$c(a0)

		move.l	mlist,a0			;UnCheck SampType3
		move.l	#Samp3MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		and.w	#~CHECKED,$c(a0)

		tst.b	PrefsSampType
		bne	SetModes2
		move.l	mlist,a0
		move.l	#Samp1MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		or.w	#CHECKED,$c(a0)
		move.l	#$00,d0
		lib	Voice,PickSampler
		move.l	GainUGad1,a0
		and.w	#~GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		and.w	#~GADGDISABLED,gg_Flags(a0)

SetModes2:	cmp.b	#1,PrefsSampType
		bne	SetModes2.1
		move.l	mlist,a0
		move.l	#Samp2MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		or.w	#CHECKED,$c(a0)
		move.l	#$01,d0
		lib	Voice,PickSampler
		move.l	GainUGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)

SetModes2.1:	cmp.b	#2,PrefsSampType
		bne	SetModes3
		move.l	mlist,a0
		move.l	#Samp3MenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		or.w	#CHECKED,$c(a0)
		move.l	#$01,d0
		lib	Voice,PickSampler
		move.l	GainUGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)
		move.l	GainDGad1,a0
		or.w	#GADGDISABLED,gg_Flags(a0)

SetModes3:	move.l	mlist,a0			;UnCheck ResLo
		move.l	#ResLoMenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		and.w	#~CHECKED,$c(a0)

		move.l	mlist,a0			;UnCheck ResHi
		move.l	#ResHiMenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		and.w	#~CHECKED,$c(a0)

		cmp.b	#1,PrefsSampRes
		bne	SetModes4
		move.l	mlist,a0
		move.l	#ResLoMenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		or.w	#CHECKED,$c(a0)

SetModes4:	tst.b	PrefsSampRes
		bne	SetModes5
		move.l	mlist,a0
		move.l	#ResHiMenuN,d0
		lib	Intuition,ItemAddress
		move.l	d0,a0
		or.w	#CHECKED,$c(a0)

SetModes5:	lea.l	DatBuffer,a0
		move.l	DatStrGadBuf1,a1
		move.l	#32,d0
		lib	Exec,CopyMem

		tst.l	Window1
		beq	SetModes6
		move.l	Window1,a0
		move.w	Alt1XPos,d0
		move.w	Alt1YPos,d1
		move.w	wd_Width(a0),d2
		move.w	wd_Height(a0),d3
		lib	Intuition,ChangeWindowBox
		rts
SetModes6:	move.l	Alt1XPos,NewWindow1
		rts

CheckModes:	move.l	OnOffGad1,a0
		move.w	gg_Flags(a0),d0
		clr.b	PrefsOnOff
		and.w	#SELECTED,d0
		cmp.w	#SELECTED,d0
		bne	CheckModes1
		move.b	#$01,PrefsOnOff

CheckModes1:	move.l	DatStrGadBuf1,a0
		lea.l	DatBuffer,a1
		move.l	#32,d0
		lib	Exec,CopyMem

		move.l	Window1,a0
		move.l	wd_LeftEdge(a0),Alt1XY
		rts

RemGads:	move.l	Window1,a0
		move.l	OnOffGad1,a1
		sub.l	a2,a2
		move.l	#-1,d0
		lib	Intuition,RemoveGList
		rts

AddGads:	move.l	Window1,a0
		move.l	OnOffGad1,a1
		sub.l	a2,a2
		move.l	#-1,d0
		move.l	#-1,d1
		lib	Intuition,AddGList

		move.l	OnOffGad1,a0
		move.l	Window1,a1
		sub.l	a2,a2
		move.l	#-1,d0
		lib	Intuition,RefreshGList

		move.l	Window1,a0
		sub.l	a1,a1
		lib	GadTools,GT_RefreshWindow
		rts

RemGads2:	move.l	Window2,a0
		move.l	StrGad1,a1
		sub.l	a2,a2
		move.l	#-1,d0
		lib	Intuition,RemoveGList
		rts

AddGads2:	move.l	Window2,a0
		move.l	StrGad1,a1
		sub.l	a2,a2
		move.l	#-1,d0
		move.l	#-1,d1
		lib	Intuition,AddGList

		move.l	StrGad1,a0
		move.l	Window2,a1
		sub.l	a2,a2
		move.l	#-1,d0
		lib	Intuition,RefreshGList

		move.l	Window2,a0
		sub.l	a1,a1
		lib	GadTools,GT_RefreshWindow
		rts

Quit:		tst.w	Saved
		bne	ShutDown
		bsr	RemVTask1
		bsr	SleepPointer
		bsr	MenusOff
		bsr	RemGads

		lea.l	QuitTxt1,a1
		lea.l	OKTxt,a2
		lea.l	CancelTxt,a3
		bsr	DoAutoRequest
		tst.l	d0
		bne	Quit2
		bsr	AddGads
		bsr	MenusOn
		bsr	NormalPointer
		bsr	AddVTask
		bra	Window1IDCMP

Quit2:		bsr	MenusOn
		bsr	NormalPointer
		bsr	AddGads
		bsr	AddVTask
		bra	ShutDown

ShutDown:	bsr	RemVTask1
		tst.l	PubScreen
		beq	ShutDown9000
		sub.l	a0,a0
		move.l	PubScreen,a1
		lib	Intuition,UnlockPubScreen

ShutDown9000:	bsr	CloseWin1
		bsr	CloseWin2
		bsr	Clean2.0Magic

ShutDown8000:	move.l	PrefsFile,d1
		beq	ShutDown7000
		lib	Dos,Close

ShutDown7000:	tst.l	NILFile
		beq	ShutDown6000
		move.l	NILFile,d1
		lib	Dos,Close

ShutDown6000:	tst.l	DiskObject
		beq	ShutDown5000
		move.l	DiskObject,a0
		lib	Icon,FreeDiskObject

ShutDown5000:	move.l	OldLock,d1
		beq	ShutDown4050
		lib	Dos,CurrentDir

ShutDown4050:	move.l	WBMsg,d2
		beq	ShutDown3000
		lib	Exec,Forbid
		move.l	d2,a1
		flib	Exec,ReplyMsg
		flib	Exec,Permit		;Added, not checked

ShutDown3000:	move.l	RDArgs1,d1
		beq	ShutDown2000
		lib	Dos,FreeArgs

ShutDown2000:	move.l	VoicePort,a0
		lib	Exec,DeleteMsgPort

ShutDown1000:	closlib	Voice
		closlib	Icon
		closlib	Intuition
		closlib	GadTools
		closlib	Gfx
		closlib	Dos
		pull	d2-d7/a2-a6
		clr.l	d0
		rts

;CheckIDCMP gets messages from keyboard (CTRL_C) and Intuition.
;Give it the window structure in a0

CheckIDCMP:	move.l	$56(a0),a2		;Get window's port
		clr.l	d1			;Set signals for
		clr.l	d0
		move.b	MP_SIGBIT(a2),d1	;IntuiMessages,
		bset.l	d1,d0
		clr.l	d1			;Set signals for
		move.l	VoicePort,a0		;voice.library
		move.b	MP_SIGBIT(a0),d1
		bset.l	d1,d0
		bset.l	#SIGBREAKB_CTRL_C,d0	;and CTRL_C
		bset.l	#SIGBREAKB_CTRL_D,d0	;and CTRL_C
		bset.l	#SIGBREAKB_CTRL_E,d0	;and CTRL_C
		lib	Exec,Wait

		cmp.l	#SIGBREAKF_CTRL_C,d0	;If CTRL_C
		beq	Break			;go break
		cmp.l	#SIGBREAKF_CTRL_D,d0	;If CTRL_D
		bne	CheckIDCMP2		;inform about it
		move.l	#1,d0
		rts
CheckIDCMP2:	cmp.l	#SIGBREAKF_CTRL_E,d0	;If CTRL_E
		bne	CheckIDCMP3		;inform about it
		move.l	#2,d0
		rts
CheckIDCMP3:	move.l	VoicePort,a0
		move.b	MP_SIGBIT(a0),d1	;If voice.library
		btst	d1,d0
		bne	C3GetMsg1

C2GetMsg1:	move.l	a2,a0	
		lib	GadTools,GT_GetIMsg
		tst.l	d0
		beq	C2GetMsg2
	
		move.l	d0,a1 
		move.l	$14(a1),d2		;answers with Class in d2,
		move.w	$18(a1),d3		;Code in d3 and
		move.w	$1a(a1),a4		;Qualifier in a4
		move.l	$1c(a1),a5		;IAddress in a5
		lib	GadTools,GT_ReplyIMsg
		bra	C2GetMsg1
C2GetMsg2:	move.l	#-1,d0
		rts

C3GetMsg1:	move.l	VoicePort,a0	
		lib	Exec,GetMsg
		tst.l	d0
		beq	C3GetMsg2
	
		move.l	d0,a1 
		move.l	$14(a1),d2		;Class in d2 and
		move.w	$18(a1),d3		;Code in d3
		lib	Exec,ReplyMsg
		bra	C3GetMsg1
C3GetMsg2:	move.l	#3,d0
		rts

;Newer MenuNull subroutine

MenuNull:	move.w	d3,d0
		and.w	#$1f,d0
		move.w	d0,d6
		move.w	d3,d0
		lsr.w	#5,d0
		move.w	d0,d1
		and.w	#$3f,d0
		move.w	d0,d5
		lsr.w	#6,d1
		move.w	d1,d4
		rts

SleepPointer:	move.l	Window1,a0
		lea.l	ClockPointer1,a1
		move.l	#16,d0
		move.l	#16,d1			;WHAT-THE-HECK IS THIS FOR?
		move.l	#-6,d2
		move.l	#0,d3
		lib	Intuition,SetPointer
		rts

NormalPointer:	move.l	Window1,a0
		lib	Intuition,ClearPointer
		rts

MenusOn:	move.l	Window1,a0
		move.l	mlist,a1
		lib	Intuition,SetMenuStrip
		rts

MenusOff:	move.l	Window1,a0
		lib	Intuition,ClearMenuStrip
		rts

;Lock PublicScreen

LockPubScr:	sub.l	a0,a0
		lib	Intuition,LockPubScreen
		move.l	d0,PubScreen
		beq	LockPubScr_OUT

;Get some sizes

		move.l	PubScreen,a0
		move.b	sc_BarHeight(a0),d0
		add.b	#1,d0
		move.b	d0,BHeight+1
		move.w	BHeight,d5
		add.w	d5,SmallYSize
		add.w	d5,Win1YSize
		add.w	d5,Win2YSize
LockPubScr_OUT:	rts

;Open Window 1

OpenWin1:	tst.l	OptionIconify
		beq	OpenWin1.01
		lea.l	NewWindow1,a0
		and.l	#~ACTIVATE,nw_Flags(a0)
		move.l	NewWindow1,ZoomXY
		move.l	NewWindow1+4,ZoomXY+4
		move.l	Alt1XY,nw_LeftEdge(a0)
		move.w	#160,nw_Width(a0)
		move.w	BHeight,nw_Height(a0)
OpenWin1.01:	lea.l	NewWindow1,a0
		lea.l	Win1TagList,a1
		lib	Intuition,OpenWindowTagList
		move.l	d0,Window1
		beq	OpenWin1_ERR1
		bsr	AddGads
		move.l	Window1,a0
		move.l	$32(a0),RP
		move.l	mlist,a1
		lib	Intuition,SetMenuStrip
		bsr	ActGad
		move.l	#-1,d0
		rts
OpenWin1_ERR1:	clr.l	d0
		rts		

CloseWin1:	tst.l	Window1
		beq	CloseWin1_OUT
CloseWin1.1:	move.l	Window1,a0
		lib	Intuition,ClearMenuStrip
		move.l	Window1,a3
		bsr	ClearMSGs
CloseWin1_OUT:	clr.l	Window1
		rts

;Open Window 2

OpenWin2:	lea.l	NewWindow2,a0
		add.w	d0,nw_Height(a0)
		lea.l	Win2TagList,a1
		lib	Intuition,OpenWindowTagList
		move.l	d0,Window2
		beq	OpenWin2_ERR1
		move.l	Window2,a0
		move.l	mlist2,a1
		lib	Intuition,SetMenuStrip
		bsr	AddGads2
		move.l	#-1,d0
		rts
OpenWin2_ERR1:	clr.l	d0
		rts		

CloseWin2:	tst.l	Window2
		beq	CloseWin2_OUT
CloseWin2.1:	move.l	Window2,a0
		lib	Intuition,ClearMenuStrip
		move.l	Window2,a3
		bsr	ClearMSGs
CloseWin2_OUT:	clr.l	Window2
		rts

;ClearMsgs subroutine
;a3 = window structure

ClearMSGs:	lib	Exec,Forbid
		move.l	$56(a3),a2
ClearMsg1:	move.l	a2,a0	
		lib	GadTools,GT_GetIMsg
		tst.l	d0
		beq	ClearMsg2
		move.l	d0,a1
		flib	GadTools,GT_ReplyIMsg
		bra	ClearMsg1
ClearMsg2:	move.l	a3,a0
		lib	Intuition,CloseWindow
		lib	Exec,Permit
ClearMsg3:	rts

;Get length of text in given address
;
;Input a0 = Address of null terminated text string
;
;Result d0 = Length

GetLength:	push	a0
		clr.l	d0
		cmp.l	#$00,a0		;fixes enforcer hit
		beq	GetLength_OUT
GetLength2:	add.l	#1,d0
		tst.b	(a0)+
		bne	GetLength2
		sub.l	#1,d0		;don't include NULL
GetLength_OUT:	pull	a0
		rts

ConvASCII:	clr.l	d0
		clr.l	d1
		cmp.b	#' ',(a0)
		bne	ConvASCII2
		add.l	#1,a0
ConvASCII2:	move.b	(a0),d1
		cmp.b	#'0',d1
		bcs	ConvASCII_OUT
		cmp.b	#'9',d1
		bhi	ConvASCII_OUT
		sub.b	#'0',d1
		mulu.w	#10,d0
		add.l	d1,d0
		add.l	#1,a0
		bra	ConvASCII2
ConvASCII_OUT:	rts

Clean2.0Magic:	tst.b	GadMagic
		beq	Clean2.0M2
		move.l	glist,a0
		lib	GadTools,FreeGadgets
		move.l	glist2,a0
		lib	GadTools,FreeGadgets

Clean2.0M2:	tst.b	MenuMagic
		beq	Clean2.0M3
		move.l	mlist,a0
		lib	GadTools,FreeMenus
		move.l	mlist2,a0
		lib	GadTools,FreeMenus

Clean2.0M3:	tst.l	vi
		beq	Clean2.0_OUT
		move.l	vi,a0
		lib	GadTools,FreeVisualInfo

Clean2.0_OUT:	rts

;Error etc. messages

NoRDArgs:	lib	Dos,IoErr
		move.l	d0,d1
		clr.l	d2
		lib	Dos,PrintFault
		bra	ShutDown

NoMsgPort:	lea.l	NoMsgPortText1,a0
		bsr	Printer
		bra	ShutDown

NoDos:		pull	d2-d7/a2-a6
		move.l	#RETURN_FAIL,d0
		rts

NoInt:		lea.l	NoIntText1,a0
		bsr	Printer
		bra	ShutDown

NoVoice:	lea.l	NoVoiceText1,a0
		bsr	Printer
		bra	ShutDown

NoGadTools:	lea.l	NoGTText1,a0
		bsr	Printer
		bra	ShutDown

NoGfx:		lea.l	NoGfxText1,a0
		bsr	Printer
		bra	ShutDown

NoNIL:		lea.l	NoNILText1,a0
		bsr	Printer
		bra	ShutDown

NoNIL2:		lea.l	NoNILText1,a0
		bsr	Printer
		rts

NoIcon:		lea.l	NoIconText1,a0
		bsr	Printer
		bra	ShutDown

NoPubScreen:	lea.l	NoPubScrText1,a0
		bsr	Printer
		bra	ShutDown

NoWindow1:	lea.l	NoWindowText1,a0
		bsr	Printer
		bra	ShutDown

NoContextGad:	lea.l	NoContextText1,a0
		bsr	Printer
		bra	ShutDown

NoMenus:	lea.l	NoMenusText1,a0
		bsr	Printer
		bra	ShutDown

Printer:	printa	a0,_stdout
		rts

Inform:		push	a0/d0
		move.l	RP,a1
		clr.l	d0
		lib	Gfx,SetAPen

		move.l	RP,a1
		move.l	#12,d0
		move.l	#20,d1
		add.w	BHeight,d1
		move.l	#147,d2
		move.l	#29,d3
		add.w	BHeight,d3
		lib	Gfx,RectFill

;Draw text
		move.l	RP,a1
		move.l	#$01,d0
		lib	Gfx,SetAPen

		move.l	RP,a1
		move.l	#13,d0
		move.l	#27,d1
		add.w	BHeight,d1
		lib	Gfx,Move

		pull	a0/d0
		push	a0
		move.l	RP,a1
		lib	Gfx,Text

		pull	a1
		bsr	SetTitle

		rts

;Give this the title pointer in a1

SetTitle:	push	a2
		move.l	Window1,a0
		lea.l	VSName1,a2
		lib	Intuition,SetWindowTitles
		pull	a2
		rts

;Does a normal AutoRequest
;
;INPUT
;
;a1 = Main text body
;a2 = Pos text
;a3 = Neg text

DoAutoRequest:	clr.l	d0
		clr.l	d1
		clr.l	d2
		clr.l	d3
		sub.l	a0,a0		;No win, cos' might be here b4 anything open
		lib	Intuition,AutoRequest
		rts

;Reservations

		libnames

RDArgs1:	dc.l	0

;Options

CLArray1:
FromFile:	dc.l	0		;A pointer to filename of PREFS!
OptionIconify:	dc.l	0

;GadTools stuff

vi:		dc.l	0		;Visual Info
mlist:		dc.l	0
mlist2:		dc.l	0
ContextGad:	dc.l	0
ContextGad2:	dc.l	0
GadMagic:	dc.b	0
MenuMagic:	dc.b	0

;Gadgets

OnOffGad1:	dc.l	0
GainUGad1:	dc.l	0
GainDGad1:	dc.l	0
SaveGad1:	dc.l	0
QuitGad1:	dc.l	0
DatStrGad1:	dc.l	0
DatStrGadBuf1:	dc.l	0		;Only a pointer!
StatusGad1:	dc.l	0

StrGad1:	dc.l	0
StrGadBuf1:	dc.l	0		;Only a pointer!
StrGad2:	dc.l	0
StrGadBuf2:	dc.l	0		;Only a pointer!
StrGad3:	dc.l	0
StrGadBuf3:	dc.l	0		;Only a pointer!
StrGad4:	dc.l	0
StrGadBuf4:	dc.l	0		;Only a pointer!
StrGad5:	dc.l	0
StrGadBuf5:	dc.l	0		;Only a pointer!
StrGad6:	dc.l	0
StrGadBuf6:	dc.l	0		;Only a pointer!
StrGad7:	dc.l	0
StrGadBuf7:	dc.l	0		;Only a pointer!
StrGad8:	dc.l	0
StrGadBuf8:	dc.l	0		;Only a pointer!
StrGad9:	dc.l	0
StrGadBuf9:	dc.l	0		;Only a pointer!
StrGad10:	dc.l	0
StrGadBuf10:	dc.l	0		;Only a pointer!
StrGad11:	dc.l	0
StrGadBuf11:	dc.l	0		;Only a pointer!
StrGad12:	dc.l	0
StrGadBuf12:	dc.l	0		;Only a pointer!
StrGad13:	dc.l	0
StrGadBuf13:	dc.l	0		;Only a pointer!
StrGad14:	dc.l	0
StrGadBuf14:	dc.l	0		;Only a pointer!
StrGad15:	dc.l	0
StrGadBuf15:	dc.l	0		;Only a pointer!
StrGad16:	dc.l	0
StrGadBuf16:	dc.l	0		;Only a pointer!
StrGad17:	dc.l	0
StrGadBuf17:	dc.l	0		;Only a pointer!
StrGad18:	dc.l	0
StrGadBuf18:	dc.l	0		;Only a pointer!
StrGad19:	dc.l	0
StrGadBuf19:	dc.l	0		;Only a pointer!
StrGad20:	dc.l	0
StrGadBuf20:	dc.l	0		;Only a pointer!

;display stuff

PubScreen:	dc.l	0
Window1:	dc.l	0
Window2:	dc.l	0
BHeight:	dc.w	0
RP:		dc.l	0


		ds.w	0

;Other stuff, part I

OurTask:	dc.l	0
PrefsFile:	dc.l	0
DataFile:	dc.l	0
NILFile:	dc.l	0
_stdout:	dc.l	0
WBMsg:		dc.l	0
DiskObject:	dc.l	0
OldLock:	dc.l	0
TaskOn:		dc.w	0		;0=Off, 1=On
TickCount:	dc.w	10		;Delay Status update
Page:		dc.w	0		;What page are we on ?
Saved:		dc.w	1		;0=No, 1=Yes
VoicePort:	dc.l	0		;Message port for voice.library

;Strings, error

BreakText1:	dc.b	"***Break",13,10,0
NoMsgPortText1:	dc.b	"ERROR: Couldn't get message port!",13,10,0
NoIntText1:	dc.b	"ERROR: Couldn't open intuition.library",13,10,0
NoVoiceText1:	dc.b	"ERROR: Couldn't open voice.library",13,10,0
NoGTText1:	dc.b	"ERROR: Couldn't open gadtools.library!",13,10,0
NoGfxText1:	dc.b	"ERROR: Couldn't open graphics.library!",13,10,0
NoNILText1:	dc.b	"ERROR: Couldn't open device NIL:!",13,10,0
NoIconText1:	dc.b	"ERROR: Couldn't open icon.library!",13,10,0
NoPubScrText1:	dc.b	"ERROR: Couldn't lock PublicScreen",13,10,0
NoContextText1:	dc.b	"ERROR: Couldn't create context gadget",13,10,0
NoMenusText1:	dc.b	"ERROR: Couldn't allocate menus structure",13,10,0
NoWindowText1:	dc.b	"ERROR: Couldn't open window",13,10,0
File_ERRText1:	dc.b	"Couldn't open preferences file!",0
File_ERRText2:	dc.b	"File error!",0
File_ERRText3:	dc.b	"Incorrect file type!",0
File_ERRText4:	dc.b	"Couldn't open data file!",0
NoMatchText1:	dc.b	"No Match",0
LowVolText1:	dc.b	"Low Volume",0
ClippingText1:	dc.b	"Clipping",0
NoisyText1:	dc.b	"Too Noisy",0
TaskOnText1:	dc.b	"Turned On",0
TaskOffText1:	dc.b	"Turned Off",0
ReadyText1:	dc.b	"Ready",0
InactiveText1:	dc.b	"Inactive",0
NoCMDText1:	dc.b	"No Command!",0
CMDFailText1:	dc.b	"Command Failed!",0

;Strings, names

CLTemplate1:	dc.b	"FROM/K,I=ICONIFY/S",0
VSVersion:	dc.b	"$VER: VShell 1.00 (7.2.93) (C)opyright Tomi Blinnikka 1993",0
OKText1:	dc.b	"OK",0
CancelText1:	dc.b	"Cancel",0
PrefsName:	dc.b	"ENV:VShell.PREFS",0
NILName:	dc.b	"NIL:",0
ICONIFYText1:	dc.b	"ICONIFY",0
YESText1:	dc.b	"YES",0
FROMText1:	dc.b	"FROM",0
AboutText1:	dc.b	"Name   : VShell",0
AboutText2:	dc.b	"Version: 1.00",0
AboutText3:	dc.b	"Author : Tomi Blinnikka",0
AboutText4:	dc.b	"   (C)opyright  1993",0
QuitText1:	dc.b	"The data file has not been saved!",0
QuitText2:	dc.b	"Are you sure you want to quit?",0
VSName1:	dc.b	"VShell",0
VSName2:	dc.b	"VShell: Edit & Learn",0
		ds.w	0

;New screen & new window structures

NewWindow1:	dc.w	200,31			;X,Y POS
		dc.w	310			;WIDTH
Win1YSize:	dc.w	62			;HEIGHT
		dc.b	0,1			;PENS
		dc.l	INTUITICKS!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP	;IDCMP FLAGS
		dc.l	NOCAREREFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE	;FLAGS
		dc.l	0,0			;GADGETS, CHECKMARK
		dc.l	VSName1			;TITLE
		dc.l	0			;SCREEN ADDRESS
		dc.l	0			;BITMAP			
		dc.w	0,0,0,0			;MIN/MAX SIZE
		dc.w	PUBLICSCREEN		;TYPE

Win1TagList:	dc.l	WA_AutoAdjust,TRUE
		dc.l	WA_Zoom,ZoomXY
		dc.l	TAG_DONE,0

ZoomXY:
SmallXPos:	dc.w	10
SmallYPos:	dc.w	21
SmallXSize:	dc.w	160
SmallYSize:	dc.w	0

NewWindow2:	dc.w	220,42			;X,Y POS
		dc.w	330			;WIDTH
Win2YSize:	dc.w	122			;HEIGHT
		dc.b	0,1			;PENS
		dc.l	ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP	;IDCMP FLAGS
		dc.l	NOCAREREFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE	;FLAGS
		dc.l	0,0			;GADGETS, CHECKMARK
		dc.l	VSName2			;TITLE
		dc.l	0			;SCREEN ADDRESS
		dc.l	0			;BITMAP			
		dc.w	0,0,0,0			;MIN/MAX SIZE
		dc.w	PUBLICSCREEN		;TYPE

Win2TagList:	dc.l	WA_AutoAdjust,TRUE
		dc.l	TAG_DONE,0
;Fonts

Topaz:		dc.l	TopazName
		dc.w	8
		dc.b	0
		dc.b	0
TopazName:	dc.b	"topaz.font",0
		ds.w	0


;ITextStructures

OKTxt:		dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,0			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	OKText1			;TEXT
		dc.l	0			;NEXTTEXT

CancelTxt:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,0			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	CancelText1		;TEXT
		dc.l	0			;NEXTTEXT

File_ERRTxt1:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	10,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	File_ERRText1		;TEXT
		dc.l	0			;NEXTTEXT

File_ERRTxt2:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	10,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	File_ERRText2		;TEXT
		dc.l	0			;NEXTTEXT

File_ERRTxt3:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	10,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	File_ERRText3		;TEXT
		dc.l	0			;NEXTTEXT

File_ERRTxt4:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	10,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	File_ERRText4		;TEXT
		dc.l	0			;NEXTTEXT

AboutTxt1:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,0			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	AboutText1		;TEXT
		dc.l	AboutTxt2		;NEXTTEXT

AboutTxt2:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	AboutText2		;TEXT
		dc.l	AboutTxt3		;NEXTTEXT

AboutTxt3:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,20			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	AboutText3		;TEXT
		dc.l	AboutTxt4		;NEXTTEXT

AboutTxt4:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,30			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	AboutText4		;TEXT
		dc.l	0 ;AboutTxt5		;NEXTTEXT

QuitTxt1:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,0			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	QuitText1		;TEXT
		dc.l	QuitTxt2		;NEXTTEXT

QuitTxt2:	dc.b	1,2			;PENS
		dc.w	0			;MODE
		dc.w	0,10			;LEFT+TOPEDGE
		dc.l	0			;FONT
		dc.l	QuitText2		;TEXT
		dc.l	0 ;QuitTxt3		;NEXTTEXT

;Gadgets

OnOffGadText1:	dc.b	"On/Off",0
GainUGadText1:	dc.b	"Vol Up",0
GainDGadText1:	dc.b	"Vol Dwn",0
SaveGadText1:	dc.b	"_Save",0
QuitGadText1:	dc.b	"_Quit",0
DatGadText1:	dc.b	"_Data file",0
StatGadText1:	dc.b	"Status",0
DescGadText1:	dc.b	"Description",0
DescGadText2:	dc.b	"Command to run",0
		ds.l	0

glist:		dcb.b	gg_SIZEOF,0
glist2:		dcb.b	gg_SIZEOF,0

NGOnOffGad1:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop	;gng_TopEdge
		dc.w	0		;gng_Width
		dc.w	12		;gng_Height
		dc.l	OnOffGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	10		;gng_GadgetID
		dc.l	PLACETEXT_RIGHT	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGGainUGad:	dc.w	160		;gng_LeftEdge
		dc.w	ShellTop	;gng_TopEdge
		dc.w	60		;gng_Width
		dc.w	12		;gng_Height
		dc.l	GainUGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	20		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGGainDGad:	dc.w	228		;gng_LeftEdge
		dc.w	ShellTop	;gng_TopEdge
		dc.w	60		;gng_Width
		dc.w	12		;gng_Height
		dc.l	GainDGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	30		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGSaveGad:	dc.w	10		;gng_LeftEdge
		dc.w	OptionTop	;gng_TopEdge
		dc.w	60		;gng_Width
		dc.w	12		;gng_Height
		dc.l	SaveGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	98		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGQuitGad:	dc.w	-70		;gng_LeftEdge
		dc.w	OptionTop	;gng_TopEdge
		dc.w	60		;gng_Width
		dc.w	12		;gng_Height
		dc.l	QuitGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	99		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGDatStrGad1:	dc.w	160		;gng_LeftEdge
		dc.w	ShellTop+17	;gng_TopEdge
		dc.w	128		;gng_Width
		dc.w	12		;gng_Height
		dc.l	DatGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	PLACETEXT_BELOW	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStatusGad:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+17	;gng_TopEdge
		dc.w	140		;gng_Width
		dc.w	12		;gng_Height
		dc.l	StatGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	0		;gng_GadgetID
		dc.l	PLACETEXT_BELOW	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

;Gadget TagLists

GadTagList:	dc.l	GT_Underscore,'_'
		dc.l	TAG_DONE,0

StatGadTagList:	dc.l	GTTX_Border,1
		dc.l	TAG_DONE,0

DatStrGadTagList: dc.l	GTST_String,DatBuffer
		dc.l	GT_Underscore,'_'
		dc.l	GTST_MaxChars,32
		dc.l	TAG_DONE,0

;Gadgets for edit window

NGDesc1Gad:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	DescGadText1	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	0		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGDesc2Gad:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	DescGadText2	;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	0		;gng_GadgetID
		dc.l	PLACETEXT_IN	;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad1:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+15	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad2:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+15	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad3:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+25	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad4:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+25	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad5:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+35	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad6:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+35	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad7:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+45	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad8:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+45	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad9:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+55	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad10:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+55	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad11:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+65	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad12:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+65	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad13:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+75	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad14:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+75	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad15:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+85	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad16:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+85	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad17:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+95	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad18:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+95	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad19:	dc.w	10		;gng_LeftEdge
		dc.w	ShellTop+105	;gng_TopEdge
		dc.w	100		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	1		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

NGStrGad20:	dc.w	120		;gng_LeftEdge
		dc.w	ShellTop+105	;gng_TopEdge
		dc.w	200		;gng_Width
		dc.w	12		;gng_Height
		dc.l	0		;gng_GadgetText
		dc.l	Topaz		;gng_TextAttr
		dc.w	2		;gng_GadgetID
		dc.l	0		;gng_Flags
		dc.l	0		;gng_VisualInfo
		dc.l	0		;gng_UserData

DescGadTagList:	dc.l	GTTX_Border,1
		dc.l	TAG_DONE,0

StrGadTagList1:	dc.l	GTST_MaxChars,GADLENG1-1
		dc.l	TAG_DONE,0
StrGadTagList2:	dc.l	GTST_MaxChars,GADLENG2-1
		dc.l	TAG_DONE,0

;Menus

Menu1Name:	dc.b	"Project",0
Menu2Name:	dc.b	"Commands",0
Menu3Name:	dc.b	"Sampler",0

LoadMenuText1:	dc.b	"Load",0
LoadCommKey:	dc.b	"L",0
SaveMenuText1:	dc.b	"Save",0
SaveCommKey:	dc.b	"S",0
AboutMenuText1:	dc.b	"About...",0
AboutCommKey:	dc.b	"?",0
QuitMenuText1:	dc.b	"Quit",0
QuitCommKey:	dc.b	"Q",0
EditMenuText1:	dc.b	"Edit/Learn",0
EditCommKey:	dc.b	"E",0
PriMenuText1:	dc.b	"Priority",0
PriCommKey:	dc.b	"P",0

TypeMenuText1:	dc.b	"Type",0
PerfSMenuText1:	dc.b	"PerfectSound",0
Type1CommKey:	dc.b	"1",0
SoundMMenuText1: dc.b	"SoundMaster",0
Type2CommKey:	dc.b	"2",0
GenericMenuText1: dc.b	"Generic",0
Type3CommKey:	dc.b	"3",0

ResMenuText1:	dc.b	"Resolution",0
ResLoMenuText1:	dc.b	"Low",0
Res1CommKey:	dc.b	"-",0
ResHiMenuText1: dc.b	"High",0
Res2CommKey:	dc.b	"+",0

TimerMenuText1:	dc.b	"CIA Timer",0
TimerAMenuText1: dc.b	"Timer A",0
TimerACommKey:	dc.b	"A",0
TimerBMenuText1: dc.b	"Timer B",0
TimerBCommKey:	dc.b	"B",0

Menu1Name2:	dc.b	"Page",0
EditMenu1Text1:	dc.b	"Commands  1-10",0
Edit1CommKey:	dc.b	"1",0
EditMenu2Text1:	dc.b	"Commands 11-20",0
Edit2CommKey:	dc.b	"2",0
EditMenu3Text1:	dc.b	"Commands 21-30",0
Edit3CommKey:	dc.b	"3",0
EditMenu4Text1:	dc.b	"Commands 31-40",0
Edit4CommKey:	dc.b	"4",0
EditMenu5Text1:	dc.b	"Commands 41-50",0
Edit5CommKey:	dc.b	"5",0
EditMenu6Text1:	dc.b	"Commands 51-60",0
Edit6CommKey:	dc.b	"6",0
		ds.l	0

MNProjectMenu1:	dc.b	NM_TITLE		;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	Menu1Name		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNLoad1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	LoadMenuText1		;gnm_Label
		dc.l	LoadCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNSave1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	SaveMenuText1		;gnm_Label
		dc.l	SaveCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNAbout1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	AboutMenuText1		;gnm_Label
		dc.l	AboutCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNP1SepMenu1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	NM_BARLABEL		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNQuit1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	QuitMenuText1		;gnm_Label
		dc.l	QuitCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNCmdMenu1:	dc.b	NM_TITLE		;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	Menu2Name		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNEdit1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenuText1		;gnm_Label
		dc.l	EditCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPriority:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	PriMenuText1		;gnm_Label
		dc.l	PriCommKey		;gnm_CommKey
		dc.w	NM_ITEMDISABLED		;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNSamplerMenu1:	dc.b	NM_TITLE		;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	Menu3Name		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNType1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	TypeMenuText1		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTypeSub1:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	PerfSMenuText1		;gnm_Label
		dc.l	Type1CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~1			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTypeSub2:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	SoundMMenuText1		;gnm_Label
		dc.l	Type2CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~2			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTypeSub3:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	GenericMenuText1	;gnm_Label
		dc.l	Type3CommKey		;gnm_CommKey
		dc.w	CHECKIT!CHECKED		;gnm_Flags
		dc.l	~4			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNRes1:		dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	ResMenuText1		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNResSub1:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	ResLoMenuText1		;gnm_Label
		dc.l	Res1CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~1			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNResSub2:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	ResHiMenuText1		;gnm_Label
		dc.l	Res2CommKey		;gnm_CommKey
		dc.w	CHECKIT!CHECKED		;gnm_Flags
		dc.l	~2			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTimer1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	TimerMenuText1		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTimerSub1:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	TimerAMenuText1		;gnm_Label
		dc.l	TimerACommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~1			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNTimerSub2:	dc.b	NM_SUB			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	TimerBMenuText1		;gnm_Label
		dc.l	TimerBCommKey		;gnm_CommKey
		dc.w	CHECKIT!CHECKED		;gnm_Flags
		dc.l	~2			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

		dc.w	0			;NM_END?

;Menu TagList(s)

MenuTagList:	dc.l	GTMN_Menu,MNProjectMenu1
		dc.l	TAG_DONE,0

MNPageMenu1:	dc.b	NM_TITLE		;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	Menu1Name2		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu1Text1		;gnm_Label
		dc.l	Edit1CommKey		;gnm_CommKey
		dc.w	CHECKIT!CHECKED		;gnm_Flags
		dc.l	~1			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage2:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu2Text1		;gnm_Label
		dc.l	Edit2CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~2			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage3:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu3Text1		;gnm_Label
		dc.l	Edit3CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~4			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage4:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu4Text1		;gnm_Label
		dc.l	Edit4CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~8			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage5:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu5Text1		;gnm_Label
		dc.l	Edit5CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~16			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNPage6:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	EditMenu6Text1		;gnm_Label
		dc.l	Edit6CommKey		;gnm_CommKey
		dc.w	CHECKIT			;gnm_Flags
		dc.l	~32			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNP2SepMenu1:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	NM_BARLABEL		;gnm_Label
		dc.l	0			;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

MNQuit2:	dc.b	NM_ITEM			;gnm_Type
		dc.b	0			;gnm_Pad
		dc.l	QuitMenuText1		;gnm_Label
		dc.l	QuitCommKey		;gnm_CommKey
		dc.w	0			;gnm_Flags
		dc.l	0			;gnm_MutualExclude
		dc.l	0			;gnm_UserData

		dc.w	0			;NM_END?

;Menu TagList(s) for Edit window

MenuTagList2:	dc.l	GTMN_Menu,MNPageMenu1
		dc.l	TAG_DONE,0

;SysTagList 2.0 Execute commands TagList(s)

CMDTags:	dc.l	SYS_Asynch
		dc.l	TAG_DONE

PREFS_START:

Prefs:		dc.b	"VS"
PrefsOnOff:	dc.b	1		;0=Off, 1=On
PrefsSampType:	dc.b	2		;0=Perf.Snd, 1=SndMstr, 2=Generic
PrefsSampRes:	dc.b	0		;0=High, 1=Low
PrefsTimer	dc.b	0		;0=Timer B, 1=Timer A

Alt1XY:
Alt1XPos:	dc.w	200
Alt1YPos:	dc.w	31

DatBuffer:	dc.b	"S:VShell.DAT"
		dcb.b	34-12,0

PREFS_END:	dc.l	0,0

PrefsSize:	EQU	(PREFS_END-PREFS_START)

		Section	VS,BSS

DATA_START:

MapBuffer:	ds.b	(VocabSIZE*304)		;64 words

CmdList:	ds.b	(VocabSIZE*GADLENGTH)

DATA_END:	ds.l	1

DataSize:	EQU	(DATA_END-DATA_START)


		Section	VS,DATA,CHIP

		ds.w	0

ClockPointer1:	dc.w	$0000,$0000
		dc.w	$0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
		dc.w	$07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
		dc.w	$7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
		dc.w	$3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
		dc.w	$0000,$0000

		end

