home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 4: The Falcon Archive / nf_archive_four_v1.0.iso / ARCHIVE / WORK / MSX / GTK08777.ZIP / GTK.DEV / SOURCES.OFF / EXEMPLE2.S < prev    next >
Text File  |  1996-03-24  |  8KB  |  287 lines

  1. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  2. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈*
  3. *                            *
  4. *               DSP-replay routine            *
  5. *              for Graoumf Tracker modules (.GT2)        *
  6. *            Falcon 030                *
  7. *            Code 68030                *
  8. *                            *
  9. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈*
  10. *                            *
  11. *    Exemple d'utilisation des routines de soundtrack avec noyau    *
  12. *    sonore résident.                    *
  13. *                            *
  14. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈*
  15. * Version     : 15/12/1995, v0.742                *
  16. * Tab setting : 11                        *
  17. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈(C)oderight L. de Soras 1994-95*
  18. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  19.  
  20.  
  21.  
  22.     opt    p=68030
  23.  
  24.  
  25.  
  26. *~~~ Constantes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  27.  
  28. RESIDENT_KER:    Equ    1
  29. KERNEL_TRAP_NUM:    Equ    8    ; Trap #8 pour les appels au noyau
  30. KERNEL_COOKIE:    Equ    'SKER'    ; Id du cookie du noyau
  31.  
  32. ;--- Cst propres au noyau, destinées au soundtracker -------------------------
  33.  
  34. NBRVOIES_MAXI:    Equ    32
  35. CONST_T:        Equ    1
  36. USER_T:        Equ    $40
  37. TOTAL_T:        Equ    $100
  38.  
  39.         RsReset
  40. onoff_t:        Rs.w    1    ; 0 = voie off, 1 = voie on
  41. nbits_t:        Rs.w    1    ; 1 = 8 bits, 2 = 16 bits
  42. fech_t:        Rs.w    1    ; Fréquence d'échantillonnage du sample (8363 Hz par défaut)
  43. vol_t:        Rs.w    1    ; Volume courant (0-$800)
  44. bal_t:        Rs.w    1    ; Balance courante ($000..$800..$FFF)
  45. per_t:        Rs.w    1    ; Période courante (format "soundtracker" * $10)
  46. adrsam_t:        Rs.l    1    ; Adresse du sample, paire
  47. pos_t:        Rs.l    1    ; Position dans le sample, paire
  48. finepos_t:        Rs.w    1    ; Position précise (1/65536)
  49. reppos_t:        Rs.l    1    ; Position de répétition du sample, paire
  50. replen_t:        Rs.l    1    ; Longueur de bouclage du sample    , paire
  51. rbuffer_t:        Rs.l    1    ; Adresse du buffer de répétition de l'instrument
  52. protect_t:        Rs.w    1    ; 0 = voie non protégé, sinon numéro de la protection
  53.         IfNe    CONST_T
  54.          IfNe    __rs>USER_T
  55.           Fail    "Taille de la structure InfoTrack-Kernel supérieure à la taille maximum fixée!"
  56.          Else
  57.           RsSet    USER_T
  58.          EndC
  59.         EndC
  60. kernelend_t:    Rs    0    ; Une routine voulant utiliser la structure User
  61.                 ; devra initialiser son Rs avec cette valeur.
  62.  
  63. ;--- Numéros des routines du noyau -------------------------------------------
  64. n_gtkr_remove_kernel:        Equ    $000
  65. n_gtkr_kernel_status:        Equ    $001
  66. n_gtkr_kernel_on:        Equ    $002
  67. n_gtkr_kernel_off:        Equ    $003
  68. n_gtkr_reset_kernel_tracks:    Equ    $004
  69. n_gtkr_reserve_track:        Equ    $005
  70. n_gtkr_free_track:        Equ    $006
  71. n_gtkr_make_rbuffer:        Equ    $007
  72. n_gtkr_play_sample:        Equ    $008
  73. n_gtkr_stop_track:        Equ    $009
  74. n_gtkr_pause_track:        Equ    $00A
  75. n_gtkr_cont_track:        Equ    $00B
  76. n_gtkr_add_routine:        Equ    $00C
  77. n_gtkr_remove_routine:    Equ    $00D
  78. n_gtkr_get_master_vol:    Equ    $00E
  79. n_gtkr_set_master_vol:    Equ    $00F
  80. n_gtkr_get_vblsize:        Equ    $010
  81. n_gtkr_set_vblsize:        Equ    $011
  82. n_gtkr_get_track_adr:        Equ    $012
  83. n_gtkr_set_track_adr:        Equ    $013
  84. n_gtkr_get_replay_freq:    Equ    $014
  85. n_gtkr_set_replay_freq:    Equ    $015
  86. n_gtkr_total_nbr_of_tracks:    Equ    $016
  87. n_gtkr_nbr_of_free_tracks:    Equ    $017
  88. n_gtkr_put_new_app_id:    Equ    $018
  89. n_gtkr_get_app_id:        Equ    $019
  90. n_gtkr_remove_app_id:        Equ    $01A
  91. n_gtkr_nbr_of_app_id:        Equ    $01B
  92. n_gtkr_interpolate_track:    Equ    $01C
  93.  
  94.  
  95.  
  96. *~~~ Macros ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  97.  
  98. sndkernel:    Macro            ; Appel à une fonction du noyau sonore
  99.     move.w    #n_gtkr_\1,-(sp)
  100.     trap    #KERNEL_TRAP_NUM
  101.     addq.l    #2,sp
  102.     EndM
  103.  
  104. waitakey:    Macro
  105.     move.w    #7,-(sp)        ; Crawcin
  106.     trap    #1
  107.     addq.l    #2,sp
  108.     EndM
  109.  
  110. printames:    Macro
  111.     pea    \1
  112.     move.w    #9,-(sp)        ; Cconws
  113.     trap    #1
  114.     addq.l    #6,sp
  115.     EndM
  116.  
  117.  
  118.  
  119. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  120.  
  121. gtkpl_source_first_byte:
  122.  
  123. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  124.  
  125.     bra    exemple
  126.  
  127.     Include    'cookie.s'        ; Les routines de gestion des cookies
  128.     Include    'gt2playr.s'    ; Les routines de soundtrack
  129.  
  130.  
  131.  
  132. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  133.  
  134.     Text
  135.  
  136.  
  137.  
  138. exemple:
  139.     clr.l    -(sp)
  140.     move.w    #$20,-(sp)
  141.     trap    #1        ; Superviseur (à cause des cookies)
  142.     addq.l    #6,sp
  143.  
  144.     readcookie    #KERNEL_COOKIE    ; Noyau résident ?
  145.     tst.l    d0
  146.     beq    error0        ; Non, mais qu'est-ce qu'on fait ici ???
  147.  
  148.     sndkernel    kernel_status    ; Le noyau est activé ?
  149.     tst.l    d0
  150.     bne.s    activated
  151.  
  152.     move.l    #gtkr_info_track,-(sp)
  153.     move.w    #NBRVOIES_MAXI,-(sp)
  154.     sndkernel    kernel_on        ; Non, on l'active
  155.     addq.l    #6,sp
  156.     tst.l    d0
  157.     bmi    error5        ; Impossible de l'activer!
  158. activated:
  159.  
  160. ;--- Exemple de replay d'un module -------------------------------------------
  161.     bsr    gtkpl_player_on    ; Installe le player
  162.     tst.l    d0
  163.     bmi    error1
  164.  
  165.     pea    module_gt2        ; Convertit le module au format interne
  166.     pea    module_gt2
  167.     move.w    #0,-(sp)        ; *** 0 = GT2 ***
  168.     bsr    gtkpl_convert_module
  169.     lea    10(sp),sp
  170.     tst.l    d0
  171.     bmi    error2
  172.  
  173.     pea    0.l        ; Prépare les samples du module en calculant les
  174.     pea    repeatbuffer    ; buffers de bouclage
  175.     pea    module_gt2
  176.     bsr    gtkpl_make_rb_module
  177.     lea    12(sp),sp
  178.     tst.l    d0
  179.     bmi    error3
  180.  
  181.     clr.w    -(sp)        ; Pof, on fait tourner tout ça
  182.     clr.w    -(sp)
  183.     pea    repeatbuffer
  184.     pea    module_gt2
  185.     bsr    gtkpl_new_module
  186.     lea    12(sp),sp
  187.     tst.l    d0
  188.     bmi    error4
  189.     printames    str_playmod
  190.     waitakey            ; On attend que l'utilisateur presse une touche
  191.  
  192.     and.b    #%11011111,d0    ; -> majuscule
  193.     cmp.b    #'R',d0        ; Touche R ?
  194.     bne.s    exit_player_not_res    ; Non, on retire le player avant de partir
  195.  
  196.     clr.w    -(sp)        ; Oui, on le laisse tourner
  197.     move.l    #gtkpl_source_last_byte-gtkpl_source_first_byte+256,-(sp)
  198.     move.w    #$31,-(sp)
  199.     trap    #1        ; On quitte avec le player en résident
  200.  
  201. exit_player_not_res:
  202.     bsr    gtkpl_player_off    ; Retire le player et libère ses voies
  203. exit:    clr.w    -(sp)        ; Sortie
  204.     trap    #1
  205.  
  206. error0:    printames    str_error0
  207.     waitakey
  208.     bra.s    exit
  209.  
  210. error1:    printames    str_error1
  211.     waitakey
  212.     bra.s    exit
  213.  
  214. error2:    printames    str_error2
  215.     waitakey
  216.     bra.s    exit_player_not_res
  217.  
  218. error3:    printames    str_error3
  219.     waitakey
  220.     bra.s    exit_player_not_res
  221.  
  222. error4:    printames    str_error4
  223.     waitakey
  224.     bra.s    exit_player_not_res
  225.  
  226. error5:    printames    str_error5
  227.     waitakey
  228.     bra    exit
  229.  
  230.  
  231.  
  232. ;-----------------------------------------------------------------------------
  233. ;    Déplie les routines de gestion de cookies
  234. ;-----------------------------------------------------------------------------
  235.     cookie_routines
  236.  
  237.  
  238.  
  239. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  240.  
  241.     Section    Data
  242.  
  243.  
  244.  
  245. str_playmod:    Dc.b    'Playing a module...',10,13
  246.         Dc.b    'Press <R> if you want to quit and',10,13
  247.         Dc.b    'continue playing the module.',10,13,0
  248. str_pausemod:    Dc.b    'Pause...',10,13,0
  249. str_contmod:    Dc.b    'Continue...',10,13,0
  250. str_stopmod:    Dc.b    'Stop module.',10,13,0
  251. str_playspl:    Dc.b    'Playing a sample...',10,13,0
  252. str_pausespl:    Dc.b    'Pause...',10,13,0
  253. str_contspl:    Dc.b    'Continue...',10,13,0
  254. str_stopspl:    Dc.b    'Stop sample.',10,13,0
  255. str_error0:    Dc.b    'Error: Sound Kernel not installed...',10,13,0
  256. str_error1:    Dc.b    'Error: player can''t be installed',10,13,0
  257. str_error2:    Dc.b    'Error: module can''t be converted',10,13,0
  258. str_error3:    Dc.b    'Error: loopbuffer can''t be created',10,13,0
  259. str_error4:    Dc.b    'Error: module can''t be played',10,13,0
  260. str_error5:    Dc.b    'Error: Sound Kernel can''t be activated.',10,13
  261.         Dc.b    'Probably sound sub-system locked...',10,13,0
  262.         Even
  263.  
  264. module_gt2:    IncBin    'blouba.gt2'    ; *** Mettre ici le nom du module
  265.         Ds.b    50000
  266.         Even
  267.  
  268.  
  269.  
  270. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  271.  
  272.     Bss
  273.  
  274.  
  275.  
  276. gtkr_info_track:    Ds.b    next_t*NBRVOIES_MAXI
  277.         Even
  278. repeatbuffer:    Ds.b    NBRSAMPLES_MAXI*1024    ; Buffers de répétition de N samples maxi + 1 vide
  279.  
  280.  
  281.  
  282. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  283.  
  284. gtkpl_source_last_byte:
  285.  
  286. *~~~ FIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  287.