Wavedriver TSR support routines for DOS2.XX
-------------------------------------------

Ik krijg regelmatig e-mailtjes van mensen die problemen
hebben met het integreren van mwm music in hun programma,
mede hierdoor heb ik besloten mijn replayer (WAVDRV) dus-
danig om te bouwen dat hij gebruikt kan worden als driver.
Dit heeft, ook voor mij zelf, meerdere voordelen zoals:

Als je programma maakt waar in muziek nodig is (bv een spel
of een demo) dan kun je die nu zeer makelijk integreren.

Als er een nieuwe versie van de replayer uitkomt hoef je niks
aan je programma te veranderen.

Ik alle commando's als macro uitgevoert om de leesbaarheid te
vergroten. Hier volgt een simpel voorbeeld hoe een nummer kan
worden ingeladen en worden afgespeeld.


Alle macro's staan in de file MWMDRIVR.ASC en MWMDRIVR.ASM.
De macro zijn voor compass gemaakt, maar met wat gepruts
moeten ze het ook wel in GEN80 doen.

Nu eerst even een voorbeeld:

	  org	  $100
	  include "MWMDRIVR.ASC"

	  MUSIC.INIT_DRIVER    ;
	  JP	  C,PRINT      ; Print foutmelding
			       ; als de driver niet
			       ; aanwezig is
	  MUSIC.ALLOC 1        ; Alloceer 1 segment(bank0)
	  MUSIC.STOP	       ;
	  MUSIC.MWK.LOAD B:\MUSIC\SONG.MWK
			       ; Laad sample kit in
	  MUSIC.MWM.LOAD 0,B:\MUSIC\SONG.MWM
			       ; Laad MWM in bank 0 op adres
			       ; $8000
	  MUSIC.PLAY 0
	  ret
	  MUSIC.DRIVER

PRINT	  ld	  c,9
	  jp	  5

Nu volgt nog een korte bescrijving van alle fucties
Heb je verder nog vragen over deze driver bel dan : 0517-415906

MUSIC.INIT_DRIVER
-----------------
Controlleerd of driver aanwezig is en initialiseerd de driver.
Gebruik deze functie altijd voor je de driver wilt gebruiken.
Als de driver niet aanwezig is wordt er een pointer (DE) terug
gegeven naar een string (met een foutmelding) en de
Carray vlag wordt gezet.

MUSIC.DRIVER
------------
In deze macro staan een aantal functies die door andere macro's
gebruikt worden. PLak deze ergens in je source.

MUSIC.DRIVER_INF
----------------
Met deze functie kun je de driver versie opvragen en de grote van
het sram op de opl4.

ADE = versie nummer (VB: A="1" en DE="00" = 1.00).
HL = Geheugen grote van de opl4 in KB.

MUSIC.PLAY [bank]
-----------------
Met het bank nummer kan aangegeven worden in welke bank
de mwm staat. Deze macro kan op twee manieren gebruikt
worden. Het bank nummer kan in register A worden gezet
of direct achter het commando.

LD A,2
MUSIC.PLAY

of

MUSIC.PLAY 2

MUSIC.STOP
----------
Stop/pause.

MUSIC.CONT
----------
Continue.

MUSIC.FADE [n]
--------------
Fade out. N moet tussen 0 tot en met 127 zijn.
Gebruikt deze macro als volgt:
MUSIC.FADE 34	

MUSIC.MWM.LOAD [bank],[drive\path\file name]
--------------------------------------------
Laad MWM file in bank. Ook deze macro kan op 2
manieren gebruikt worden.

	     LD  DE,file_name
	     MUSIC.MWM.LOAD 3

file_name:   DB "B:\MUSIC\MWM\SONG.MWM",0               

of

MUSIC.MWM.LOAD 3,B:\MUSIC\MWM\SONG.MWM

De volgende 'Messages' worden in A doorgegeven.

0 =  Niks aan het handje.
1 =  Dos Laad error.
2 =  Niet een MWM file of opgeslagen in EDIT mode.

Dit geldt ook voor MUSIC.MWK.LOAD

Let er op dat de file naam niet in tussen adres &H4000
en &H7FFF staat.

MUSIC.MWK.LOAD [drive\path\file name]
-------------------------------------
Laad MWK file in. Dit werk het zelfde als
de LOAD functie alleen hoeft er nu geen bank
nummer meegegeven worden. Bank 0 wordt gebruikt
als laad buffer voor de samples. Let hier op als
je een nummer in bank 0 zet. Deze wordt 
overschreven door de MWK laad functie.
 

MUSIC.MWM.INFO [address]
------------------------
Haal de 'song name' en 'wavekit name' uit de huidige song
bank. De huidige songbank kun wordt geselecteerd door
de laad of play functie. De strings (afgesloten met $) worden
weggeschreven op de plek aangewezen door het adres
wat achter de functie moeten worden gezet.
 
		MUSIC.MWM.INFO song_name
		
Reseveer een data blok als volgt:

song_name:	DS 51,0
wavekit:	DS 9,0				   


MUSIC.ALLOC [banks]
-------------------
Alloceer banken voor MWM data. Deze functie alloceert
alleen segmenten uit de primary mapper!. Dit in het
kader van de snelheid. Bij het aanroepen van deze
functie worden alle eerder gealloceerde banken
vrijgegeven. Er wordt niet gecontroleerd of er genoeg
segmenten vrij zijn.


MUSIC.FREE
----------
Geef alle 'banken' weer vrij.

MUSIC.ADDRESS [address]
-----------------------
Verander het huidige afspeel adres. Dit werkt hetzelfde als
de MBADDRESS van de BASIC driver.
Dit benvloed de volgende functies: PLAY,INFO en MWM.LOAD.

