home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / akm-mt20.zip / TESTMTR.ASM < prev    next >
Assembly Source File  |  1995-02-26  |  7KB  |  195 lines

  1. ;┌─────────────────────────────────────────────────────────────────────┐
  2. ;│EXAMPLE OF USING THE MASTER TRACKER 1.1 AKMTRK1.OBJ FILE IN ASSEMBLER│
  3. ;│BY [PYRO-FYRE]/ARKHAM                                        28/02/94│
  4. ;└─────────────────────────────────────────────────────────────────────┘
  5.  
  6. .386P
  7.  
  8. AKMTRACK  SEGMENT PARA PUBLIC USE16 ;INIT CODE SEGMENT FOR THE PLAYER
  9. AKMTRACK  ENDS
  10.   
  11.   EXTRN   INITADL:FAR             ;THE START MUSIC PROCEDURE
  12.   EXTRN   STOPADL:FAR             ;PROCEDURE FOR STOPING MUSIC
  13.   EXTRN   BARNOTE0:BYTE           ;BARNOTEx IS SET TO 1 WHEN THE VOICE x IS USED FOR A NEW KEY
  14.   EXTRN   BARNOTE1:BYTE
  15.   EXTRN   BARNOTE2:BYTE
  16.   EXTRN   BARNOTE3:BYTE
  17.   EXTRN   BARNOTE4:BYTE
  18.   EXTRN   BARNOTE5:BYTE
  19.   EXTRN   BARNOTE6:BYTE
  20.   EXTRN   BARNOTE7:BYTE
  21.   EXTRN   BARNOTE8:BYTE
  22.   EXTRN   RESTART:BYTE            ;RESTART AT THIS POSITION AT THE END OF THE MUSIC
  23.   EXTRN   NUMVOICE:BYTE           ;NUMBER OF ADLIB VOICE (MAX 9)
  24.   EXTRN   POSITIONFIN:BYTE        ;LENGHT OF THE MUSIC
  25.   EXTRN   POSITION:BYTE           ;CURRENT POSITION OF THE MUSIC
  26.   EXTRN   SEGPATTERN:WORD         ;SEGMENT OF THE PATTERNS
  27.   EXTRN   OFFPATTERN:WORD         ;OFFSET OF THE PATTERNS
  28.   EXTRN   SEGSONG:WORD            ;SEGMENT OF THE POSITIONS + ADLIB SAMPLES
  29.   EXTRN   OFFSONG:WORD            ;OFFSET OF THE POSITION +ADLIB SAMPLES
  30.   EXTRN   PATPOSITION:BYTE        ;CURRENT PATTERN PLAYED
  31.   EXTRN   SPEED:WORD              ;THIS VALUE IS SET IN THE TIMER INTERRUPTION 8
  32.   EXTRN   FASTADLREG:BYTE         ;IF SET TO 0->SLOW ADLIB/SB REGISTER, IF SET TO 1->FAST REGISTERS FOR SBPRO/SB16/GUS
  33.  
  34. PILE      SEGMENT STACK USE16
  35.   DW      512 DUP (0)
  36. PILE      ENDS
  37.  
  38. ZONE      SEGMENT USE16           ;MEMORY WHERE IS STOCKED THE MUSIC
  39.   DB      11584 DUP (0)           ;THE LARGER MUST BE THE SAME AS THE .MTR FILE
  40. ZONE      ENDS
  41.  
  42. CODE      SEGMENT USE16
  43.           ASSUME CS:CODE,DS:CODE,SS:PILE
  44.  
  45. ASC2HEX   PROC FAR
  46.   XOR     EDX,EDX
  47. ASC2HEX3:  
  48.   LODSB
  49.   CMP     AL,57
  50.   JG      ASC2HEX1
  51.   SUB     AL,48
  52.   JMP     ASC2HEX2
  53. ASC2HEX1:
  54.   SUB     AL,55
  55. ASC2HEX2:
  56.   SHL     EDX,4
  57.   OR      DL,AL
  58. LOOP      ASC2HEX3
  59.   RET
  60. ASC2HEX   ENDP
  61.   
  62.   FREEWAY_MTR DB 'FREEWAY.MTR',0
  63.   NUMFILE     DW 0
  64.   
  65. START:
  66.  
  67.   MOV     AX,AKMTRACK
  68.   MOV     ES,AX
  69.   MOV     AX,CS
  70.   MOV     DS,AX
  71.   MOV     AX,03D00H               ;OPEN FILE
  72.   MOV     DX,OFFSET FREEWAY_MTR
  73.   INT     021H
  74.   MOV     BX,AX
  75.   MOV     CS:NUMFILE,BX
  76.  
  77.   MOV     AX,ZONE                 ;READ MUSIC FILE'S INFORMATIONS
  78.   MOV     DS,AX                   ;TARGET SEGMENT
  79.   MOV     AX,03F00H               ;READ MODE
  80.   XOR     DX,DX                   ;TARGET OFFSET
  81.   MOV     CX,53                   ;LENGTH OF THE INFORMATIONS
  82.   INT     021H                    ;DOS CALL
  83.   
  84.   MOV     SI,27                   ;FIND NUMBER OF VOICES
  85.   MOV     CX,2
  86.   CALL    ASC2HEX
  87.   INC     DL
  88.   MOV     ES:NUMVOICE,DL
  89.  
  90.   MOV     SI,33                   ;FIND LENGHT
  91.   MOV     CX,2
  92.   CALL    ASC2HEX
  93.   DEC     DL
  94.   MOV     ES:POSITIONFIN,DL
  95.  
  96.   MOV     SI,36                   ;FIND RESTART
  97.   MOV     CX,2
  98.   CALL    ASC2HEX
  99.   MOV     ES:RESTART,DL
  100.  
  101.   MOV     SI,39                   ;FIND FILE LENGHT
  102.   MOV     CX,8
  103.   CALL    ASC2HEX
  104.   SUB     DX,3
  105.   MOV     AX,DS:[50]
  106.   MOV     ES:SPEED,AX
  107.  
  108.   MOV     BX,CS:NUMFILE
  109.   MOV     AX,03F00H               ;READ MODE
  110.   MOV     CX,DX                   ;LENGTH OF FILE
  111.   XOR     DX,DX                   ;TARGET OFFSET
  112.   INT     021H                    ;DOS CALL
  113.  
  114.   MOV     AX,03E00H               ;CLOSE FILE
  115.   INT     021H
  116.  
  117.   MOV     AX,ZONE
  118.   MOV     ES:SEGPATTERN,AX        ;INITIALISE INFORMATIONS
  119.   MOV     ES:SEGSONG,AX
  120.   MOV     ES:OFFPATTERN,4352      ;MEMORY LOCATION OF THE PATTERNS
  121.   MOV     ES:OFFSONG,0            ;MEMORY LOCATION OF THE POSITION
  122.   MOV     ES:POSITION,0           ;POSITION START AT 0
  123.   MOV     BYTE PTR ES:FASTADLREG,0 ;0=SLOW ADLIB/SB 1=FAST SBPRO/SB16/GUS
  124.   
  125.   CALL    INITADL                 ;START MUSIC (NOT ENTRIES)
  126.   XOR     AH,AH                   ;WAIT KEYBOARD
  127.   INT     16H
  128.  
  129.   CALL    STOPADL                 ;STOP MUSIC
  130.   MOV     AX,04C00H               ;RETURN TO DOS (NOT WINDOWS OR SLOW OS PLEASE!)
  131.   INT     21H
  132.  
  133. CODE      ENDS
  134.  
  135. END START
  136.  
  137. '-------------------------
  138. 'FILE FORMAT:      LENGTH
  139. '-------------------------
  140. 'INFORMATION      | 0050 | MTRACK NOM_MUSIQUE (20 CHAR) 00 (NBVOICES%-1) 00 (NB PATTERN-1) 00 (LENGTH) 01F3 (RESTART)  00000000 (LONGUEUR) + CHR(1AH)
  141. 'SPEED            | 0002 |
  142. 'DEVICE           | 0001 | 0=SPK 1=ADL 2=SBP ;NOT USED NOW 
  143. 'POSITIONS        | 0256 |
  144. 'VOICES TYPE      | 0256 |
  145. '-------------------------
  146. 'INSTRUMENTS:     | 4096 | (TOTAL BYTES, 64 INSTRUMENTS)
  147. '-------------------------
  148. 'INSTRUM NAME     | 0020 |
  149. 'DATAS            | 0044 | (TOTAL BYTES, 1 INSTRUMENT
  150. 'IDENTIFICATION---|------|------|
  151. '                 | 0001 | 0001 | IDENTIFICATION: THIS BYTE=02 WHEN IT IS USED OR 00 WHEN NOT.
  152. '1° OPPERATOR-----|------|------|
  153. '                 |      | 0004B| MODULATOR FREQUECY MULTIPLE
  154. '                 |      | 0001B| KSR
  155. '                 |      | 0001B| EG TYPE
  156. '                 |      | 0001B| VIBRATO
  157. '                 |      | 0001B| AMPLITUDE MODULATION
  158. '                 |      |      |
  159. '                 |      | 0006B| TOTAL LEVEL
  160. '                 |      | 0002B| SCALING LEVEL
  161. '                 |      |      |
  162. '                 |      | 0004B| DECAY RATE
  163. '                 |      | 0004B| ATTACK RATE
  164. '                 |      |      |
  165. '                 |      | 0004B| RELEASE RATE
  166. '                 |      | 0004B| SUBSTAIN LEVEL
  167. '                 |      |      |
  168. '                 |      | 0001B| ALGORITHM
  169. '                 |      | 0003B| CONNECTION
  170. '                 |      |      |
  171. '                 |      | 0002B| WAVEFORM SELECT
  172. '                 |      | 0004B| MODULATOR FREQUECY MULTIPLE
  173. '                 |      | 0001B| KSR
  174. '                 |      | 0001B| EG TYPE
  175. '                 |      | 0001B| VIBRATO
  176. '                 |      | 0001B| AMPLITUDE MODULATION
  177. '2° OPPERATOR-----|------|------|
  178. '                 |      | 0006B| TOTAL LEVEL
  179. '                 |      | 0002B| SCALING LEVEL
  180. '                 |      |      |
  181. '                 |      | 0004B| DECAY RATE
  182. '                 |      | 0004B| ATTACK RATE
  183. '                 |      |      |
  184. '                 |      | 0004B| RELEASE RATE
  185. '                 |      | 0004B| SUBSTAIN LEVEL
  186. '                 |      |      |
  187. '                 |      | 0001B| ALGORITHM
  188. '                 |      | 0003B| CONNECTION
  189. '                 |      |      |
  190. '                 |      | 0002B| WAVEFORM SELECT
  191. ' OTHER BYTES UNUSED     |      |
  192. '-------------------------
  193. 'PATTERN          | ???? | ????=NUMBER OF VOICES * NUMBER OF PATTERN * 256 -> MAX=65536
  194. '-------------------------
  195.