At the start of the music bank, AMOS Professional stores offsets to the various components of the music.
Header dc.l Next_Bank
dc.l Length_Of_Bank + 16
dc.l Number_Of_The_Bank
dc.w Flag
dc.w Free_For_Future
dc.b "Music " * 8 Letters
Start: dc.l Instruments_Start * Offset to first instrument
dc.l Musics_Start * Offset to first music
dc.l Patterns_Start * Offset to first pattern
dc.l 0 * Free for future!
* The Instrument part
Instruments:
dc.w Number_Of_Instruments
* For each instrument (.inst represents the number of the instrument)
* Repeat
REPT Number_Of_Instruments
* Offset to sample attack part
dc.l Attack.inst_Instruments
* Offset to instrument loop. If there is no loop, this points to a null sample at the start
dc.l Loop.inst Instruments
* Length of the samples, in words (ready to Doke into the circuitry)
dc.w Attack_Length.inst
dc.w Loop_Length.inst
* Volume level
dc.w Volume.inst
dc.w Total_length.inst
* Name of the instrument in Ascii
dc.b Name_Of_Instrument_In_16_Bytes
ENDR
* Until Last instrument
* End of instrument definitions
* Now comes the null sample
dc.w 0,0
* And the sample data for each instrument, one after another
* Repeat for every instrument
REPT Number_Of_Instruments
Attack.inst:
dcb.b Sample ... *Sample data for attack
* If a loop is defined:
Loop.inst:
dcb.b Sample ... * Loop sample goes here
ENDR
* Until Last Instrument
*