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 be‹nvloed de volgende functies: PLAY,INFO en MWM.LOAD.