TRACKERS MOONBLASTER NL 08

From MSX MUSIC WIKI
Jump to: navigation, search

8.GEBRUIK IN EIGEN PROGRAMMA'S

8.1.Gebruik in BASIC

Om de MoonBlaster muziek in BASIC te kunnen gebruiken is het noodzakelijk dat eerst de BASIC-driver ingeladen wordt. Deze driver staat op de Music disk onder de naam MBDRV.BIN. Deze wordt opgestart met het commando BLOAD 'MBDRV.BIN',R. Omdat de driver het geheugengebied boven &HDA00 gebruikt moet voor het opstarten van de driver het commando CLEAR 200,&HD9FF gegeven worden om ervoor te zorgen dat het BASIC programma deze grens niet overschrijdt.

Als dit gebeurd is heeft u enkele extra BASIC commandofs tot uw beschikking. Hieronder een overzicht:

CALL MBKLOAD("samplekitnaam")

Dit commando zorgt ervoor dat er een samplekit ingeladen wordt en dat deze in het MSX-AUDIO RAM wordt gezet. Let op: dit commando gebruikt de geheugenbank met de song als buffer, dus de inhoud hiervan zal worden gewist!

CALL MBMLOAD("songnaam")

Hiermee kunt u een MoonBlaster song inladen. Deze song wordt ingeladen op het ingestelde adres in de ingestelde geheugenbank. Let erop dat alleen USER-files juist ingeladen en afgespeeld zullen worden.

CALL MBCHIP(chipnr)

Stelt de gewenste soundchip in waar de muziek op afgespeeld moet worden:

0 MSX-AUDIO
1 MSX-MUSIC
2 of hoger STEREO (MSX-AUDIO en MSX-MUSIC)
CALL MBBANK(banknr)

Stelt de geheugenbank van de memory mapper in waarin de song staat die afgespeeld moet worden, of waarin een song ingeladen moet worden. Werkt alleen als er geen muziek speelt. Een geheugenbank van de memory mapper is 16 kB groot. Meestal zal voor banknr de waarde 3 worden genomen. Het maximale banknr is athankelijk van de hoeveelheid geheugen in uw computer.

CALL MBADDR(adres)

Stelt het geheugenadres in waar de song staat of waarop een song ingeladen moet worden. Zorg ervoor dat de gehele song tussen de adressen &H8000 en &HC000 staat. Werkt alleen als er geen muziek speelt.

CALL MBPLAY

Speelt een song af op de ingestelde soundchip. De plaats van de song in het geheugen is bepaald met bovenstaande commando's.

CALL MBSTOP

Stopt het spelen van een song.

CALL MBCONT

Gaat verder met het spelen van een song na een pauze. Werkt dus alleen correct na een MBHALT commando.

CALL MBHALT

Pauzeert een song. Dit is bijvoorbeeld handig hij laden. Geef voor het laden een _MBHALT, en als het laden afgelopen is kunt u de muziek weer verder laten gaan met een _MBCONT.

CALL MBVER

Geeft huidige versienummer van de BASIC-driver weer op het beeldscherm.

Tevens kunnen door de BASIC-programmeur nog diverse geheugenadressen uitgelezen worden:

PEEK(&HDA00) = Ingestelde soundchip met MBCHIP commando.

PEEK(&HDA01) = Status: 0 = speelt niet, 255 = speelt wel.

PEEK(&HDA02) = Ingestelde geheugenbank met MBBANK commando.

PEEK(&HDA03)+256*PEEK(&HDA04) = Ingestelde geheugenadres met MBADDR commando.

Om de werking van de commando's goed te kunnen begrijpen staat er een voorbeeldprogramma op de Music Disk onder de naam "BASIC.BAS". In dit programma zullen met uitzondering van het MBVER commando alle commando's gebruikt worden.

Gebruik in machinetaal

Voor de machinetaalprogrammeurs staan er twee source-codes op de Music disk. Dit zijn MBPLAY.SRC en MBLOADER.SRC. De eerste van de twee is de daadwerkelijke playroutine en de tweede is een programma om de MoonBlaster songs en drumkits in te laden en te kijken welke soundchips in de computer aanwezig zijn en deze zonodig te initialiseren.

De sources zijn geschreven voor de DevPac-80 assembler (GEN80), maar kunnen eenvoudig ook in andere assemblers ingeladen worden. Enkele labels zijn in allebei de sources gebruikt. Hier wordt natuurlijk hetzelfde geheugen adres mee bedoeld, dus bij samenvoeging dienen deze verwijderd te worden.

Enkele korte opmerkingen die van belang zijn voor de ML-programmeurs:

- De song kan gecruncht in het geheugen blijven staan. Het decrunchen gebeurt tijdens het afspelen.
- Het beginadres van de song en de memory-mapperbank kunnen ingesteld worden. De playroutine zorgt er dan zelf voor dat het schakelen van banken juist verloopt.
- Als er gebruik wordt gemaakt van PSG-drums zal hiervoor alleen PSG-kanaal A gebruikt worden. Er is duidelijk aangegeven waar de PSG wordt aangestuurd zodat dit eenvoudig gewijzigd kan worden.
- De playroutine werkt zowel onder Z80 als R800 mode, maar er mag niet tijdens het spelen van de song van processor worden gewisseld! Bij de STRMUS routine wordt gekeken welke processor op dat moment aktief is en de playroutine zonodig automatisch aangepast.

Overige uitleg staat vermeld in de sources zelf.