

		section "Recognizer",code

	incdir "includes:"
	include	"asm:datamaster.library/datamaster.i"
	include	"asm:datamaster.library/datamaster_lib.i"


CALLBASE:	MACRO
	jsr	_LVO\1(a6)
		ENDM

JMPBASE:	MACRO
	jmp	_LVO\1(a6)
		ENDM

SUN_MAGIC    =$2e736e64              ;/* Really '.snd' */
SUN_INV_MAGIC=$646e732e              ;/* '.snd' upside-down */
DEC_MAGIC    =$2e736400              ;/* Really '\0ds.' (or DEC) */
DEC_INV_MAGIC=$0064732e              ;/* '\0ds.' upside-down */

		RECOHEADER reco
reco:	dc.l	DMR_Flags,RECOF_CheckData+RECOF_CheckPatt+RECOF_SubType
	dc.l	DMR_Name,.name
	dc.l	DMR_Descr,.descr
	dc.l	DMR_DMVersion,2
	dc.l	DMR_Version,1<<16+4
	dc.l	DMR_Class,DMCLASSF_SAMPLE
	dc.l	DMR_SubTypesTable,.table
	dc.l	TAG_END

.check:	
	move.l	(a0),d0
	lea	adpcm_name(pc),a3
	cmp.l	#"ADPC",d0
	beq.s	.done

	lea	sun_name(pc),a3
	cmp.l	#SUN_MAGIC,d0
	beq.s	.done
	cmp.l	#SUN_INV_MAGIC,d0
	beq.s	.done
	cmp.l	#DEC_MAGIC,d0
	beq.s	.done
	cmp.l	#DEC_INV_MAGIC,d0
	beq.s	.done

	lea	voc_name(pc),a3
	lea	.voc(pc),a1		;check VOC string
	CALLBASE dmCmpTextNC
	tst.l	d0
	beq.s	.done

	move.l	a2,a0
	lea	wav_name(pc),a3
	lea	.riff(pc),a1		;check WAV type
	CALLBASE dmCmpTextNC
	tst.l	d0
	bne.s	.notwav
	lea	8(a2),a0
	lea	wav_name(pc),a1
	CALLBASE dmCmpTextNC
	tst.l	d0
	beq.s	.done

.notwav:move.l	a2,a0
	lea	aiff_name(pc),a3
	lea	.form(pc),a1		;check AIFF type
	CALLBASE dmCmpTextNC
	tst.l	d0
	bne.s	.failure
	lea	8(a2),a0
	lea	aiff_name(pc),a1
	CALLBASE dmCmpTextNC
	tst.l	d0
	bne.s	.failure
.done:	move.l	a3,d0		;result=string
	rts

.failure:

	moveq	#0,d0
	rts
	even

.table:	dc.l	.check,aiff_patt,aiff_name
	dc.l	.check,wav_patt,wav_name
	dc.l	.check,voc_patt,voc_name
	dc.l	.check,sun_patt,sun_name
	dc.l	.check,adpcm_patt,adpcm_name
	dc.l	0,0,0


.name:	dc.b	"SMPL-Others",0
.descr:	dc.b	"Non-IFF Sample formats",0
.form:	dc.b	"FORM",0
.voc:	dc.b	"Creative Voice File",0
.riff:	dc.b	"RIFF",0

aiff_patt:
	dc.b	"AIFF.*",0
	dc.b	"*.AIFF",0
	dc.b	$ff


adpcm_patt:
	dc.b	"*.ADPCM",0
	dc.b	"ADPCM.*",0
	dc.b	$ff


voc_patt:
	dc.b	"VOC.*",0
	dc.b	"*.VOC",0,$ff


wav_patt:
	dc.b	"WAV.*",0
	dc.b	"*.WAV",0,$ff

sun_patt:
	dc.b	"AU.*",0
	dc.b	"*.AU",0
	dc.b	$ff



wav_name:
	dc.b	"WAVE",0
aiff_name:
	dc.b	"AIFF",0
voc_name:
	dc.b	"VOC",0
sun_name:
	dc.b	"SUN",0
adpcm_name:
	dc.b	"ADPCM",0
	even	

