                                                            24/05/95

                DSPMOD96 User's Manual
                ====================
                      written by bITmASTER of TCE


Hi Freaks,

eigentlich mu ich an einer Diplomarbeit schreiben, aber sowas macht
einfach kein Spa ( ja genau: no DSP - no FUN, ok die Diplomarbeit
hat auch was mit DSP's zu tun, so schlecht ist das Thema ( FFT ) 
nicht, aber ich schreibe nun mal nicht gerne irgendwelche 
Abhandlungen  )

Falsch geraten, das ist nicht DSPMOD V 9.6 sondern DSPMOD96 V1.0 !
Die 96 steht fr 96 kByte d.h. alle Samples eines MOD's drfen
max. 96 kBytes lang sein. Ist natrlich ein Nachteil, aber dafr
sind die Samples komplett im DSP und die CPU hat weniger zu tun.
Auerdem wirken sich Einschrnkungen ja immer positiv auf die 
Kreativitt aus. Ich denke, da gute MOD's auch mit 96 kByte
Samples auskommen knnen.

DSPMOD96 kann zur Zeit nur 4-Kanal-MODs abspielen. Auerdem
gibt es kein Surround ( kein Speicher mehr frei ) und keine 
Interpolation ( kommt spter... )

Wenn man DSPMOD96.PRG startet ( MOD draufziehen, mit 640*480 / 2 
Farben ) sieht man den Raster fr den Rechenzeitverbrauch. Natrlich
knnte man den MOD-Interpreter noch optimieren. Ich habe den Player 
nicht grndlich getestet. Ich mu nmlich wieder mal was fr die
Diplomarbeit machen......


DSPMOD96 ist kein PD oder Shareware sondern No-Profit-Ware. Das bedeutet:

- DSPMOD96 kann beliebig kopiert werden, aber nur ohne Profit-Absicht,
  d.h. DSPMOD darf nicht auf kommerziellen PD-Disk's, Coverdisk's oder
  CD's verkauft werden

- DSPMOD96 kann ber Mailboxen verbreitet werden

- DSPMOD96 kann in jeden nichtkommerziellen Programm ( Freeware )
  verwendet werden ( z.B. Demos )

- wer DSPMOD96 in Sharewareprogrammen ( z.B. Games ) verwenden will,
  mu mir dies mitteilen.

- kommerzielle Nutzung ist nur mit mein vorheriges Einverstndnis
  mglich

Die DSPMOD96-Funktionen:

Offset  Funktion
 28	init
 32 	off
 36	PlayerOn
 40	PlayerOff
 44	PlayMusic
 48	PlayTime
 52	ModType
 56	fx
 60	not used
 61	Flags
 62	SurroundDelay
 64	DspTracks
 66	PlayInfos
 70	SampleSets

init
====

Assembler:

bsr DSPMOD96+28
in:	-
out:   	a0: Zeiger auf Version-String

C:

char *init( void );

Diese Funktion mu immer zuerst aufgerufen werden.
u.a. wird die Soundmatrix initialisiert. Es wird der DSP-Output
mit den Codec ( DA-Wandler ) verbunden.

off
===

Assembler:

bsr DSPMOD96+32
in:	-
out:	-

C:

void off( void )

Deinstalliert DSPMOD96. Die Matrix wird wieder auf den alten Zustand
zurckgesetzt. Diese Funktion mu bei beenden des Programm's, welches
DSPMOD96 benutzt, ausgefhrt werden.

PlayerOn
========

Assembler:

bsr DSPMOD96+36
in:	a0: Zeiger auf Modul, a1: Zeiger auf VolumeTab
out:	d0 = 0 wenn die Samples > 96kByte sind, MOD kann nicht
        abgespielt wwerden

C:

int PlayerOn( char *mod, int *vol_tab )

Spiel ein Modul ab. Die Volume-Tabelle besteht aus 8 Words, welche die
SampleMainVol's festlegen. Zur Bestimmung der Volumes siehe "Volume-
Calculation".

PlayerOff
=========

Assembler:

bsr DSPMOD96+40
in:	-
out:	-

C:

void PlayerOn( void )

Stoppt das Abspielen des Modules. Nach PlayerOff() kann mit PlayerOn()
ein neues Modul gestartet werden.



PlayMusic
=========

Assembler:

bsr DSPMOD96+44
in:	-
out:	-

C:

void PlayMusic( void )

PlayMusic ist die Interruptroutine, sie mu regelmig aufgerufen
werden. Die Interruptfrequenz kann zwischen 50...70 Hz liegen.
Die Inhalter der Register d0-a6 werden dabei verndert !


PlayTime
========

Assembler:

bsr DSPMOD96+48
in:	a0: Zeiger auf Modul
out:	d0: Playtime in BCD, z.B. $1234 = 12 Min, 34 Sek

C:

int PlayTime( char *mod )

Ermittelt die Spieldauer eine Modules.

ModType
=======

Assembler:

bsr DSPMOD96+52
in:	a0: Zeiger auf Modul
out:	d0: Anzahl der Tracks ( 4 oder 8 ), 0 bei unbekannten MOD

C:

int ModType( char *mod )

Es werden Module mit folgenden Magic erkannt:
"M.K."
"FLT4"
"CD8 "
"CD81"
"FA08"
Achtung: ein altes 15er Module wird nicht erkannt ( d0 = 0 ) !

fx
==

Assembler:

bsr DSPMOD96+56: 	not used

DSPMOD96+60:		Kopierschutz-Byte ;-)

DSPMOD96+61:		not used


DSPMOD96+62:		not used


DSPMOD96+64:	dc.w	immer 4

DSPMOD96+66:	dc.l	PlayInfos
Zeiger auf Variablen des MOD-Interpreters

DSPMOD96+70 	Zeiger auf SampleSets[4]


extern struct {
	char SampNr;
	char SampVol;
	char SampMainVol;
	char SampPos;
	int	 SampPer;
} SampSets[];

 
EOF ( ich bin immer noch schreibfaul )
ich hoffe, da die Doc einigermaen stimmt .....
