

		section "Recognizer",code

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

	incdir	"asm:datamaster.library/"
	include	"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_check,.check
	dc.l	DMR_Pattern,.patt
	dc.l	DMR_name,.name
	dc.l	DMR_Descr,.descr
	dc.l	DMR_Reconumber,4
	dc.l	DMR_Flags,recoF_CheckData+recoF_CheckPatt
	dc.l	TAG_END

.check:	move.l	(a0),d0			;check 1st LONG for SUN/DEC format
	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(pc),a1		;check VOC string
	CALLBASE dmCmpTextNC
	tst.l	d0
	beq.s	.done

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

.notwav:move.l	a2,a0
	lea	.form(pc),a1		;check AIFF type
	CALLBASE dmCmpTextNC
	tst.l	d0
	bne.s	.notaiff
	lea	8(a2),a0
	lea	.aiff(pc),a1
	JMPBASE dmCmpTextNC

.done:	moveq	#0,d0		;result=OK
.notaiff:
	rts			;result=d0

	
.name:	dc.b	"SMPL-Others",0
.descr:	dc.b	"Non-Amiga Sample formats (WAV,VOC etc...)",0
.form:	dc.b	"FORM",0
.voc:	dc.b	"Creative Voice File",0
.wav:	dc.b	"WAVE",0
.riff:	dc.b	"RIFF",0

.patt:	dc.b	"*."
.aiff:	dc.b	"AIFF",0
	dc.b	"*.AU",0
	dc.b	"*.VOC",0
	dc.b	"*.WAV",0
	dc.b	$ff
	even	

