home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / falcon / sound / dsp_mod / dsp_mod.s next >
Text File  |  1993-11-12  |  5KB  |  206 lines

  1. ;DSP MOD replay routine written by bITmASTER of BSW
  2. ;This is source code for Devpack 3
  3. ;Additional code by Dusan
  4.  
  5.                 opt D+
  6.  
  7.  
  8. iera            equ $fffffa07           ;Interrupt-Enable-Register A
  9. ierb            equ $fffffa09           ;                                                               B
  10. imra            equ $fffffa13
  11. isra            equ $fffffa0f
  12. isrb            equ $fffffa11
  13. tacr            equ $fffffa19
  14. tbcr            equ $fffffa1b
  15. tadr            equ $fffffa1f
  16. tbdr            equ $fffffa21
  17. tccr            equ $fffffa1d
  18. tcdr            equ $fffffa23
  19. aer             equ $fffffa03
  20. STColor         equ $ffff8240
  21. FColor          equ $ffff9800
  22. vbl             equ $70
  23. timer_int       equ $0120
  24. timer_c_int     equ $0114
  25.  
  26. ym_select       equ $ffff8800
  27. ym_write        equ $ffff8802
  28. ym_read         equ $ffff8800
  29.  
  30. vbaselow        equ $ffff820d
  31. vbasemid        equ $ffff8203
  32. vbasehigh       equ $ffff8201
  33. vcountlow       equ $ffff8209
  34. vcountmid       equ $ffff8207
  35. vcounthigh      equ $ffff8205
  36. linewid         equ $ffff820f
  37. hscroll         equ $ffff8265
  38.  
  39. keyctl          equ $fffffc00
  40. keybd           equ $fffffc02
  41.  
  42. DspHost         equ $ffffa200
  43. HostIntVec      equ $03fc
  44.  
  45. PCookies        equ $05a0
  46.  
  47. hop             equ $ffff8a3a
  48. op              equ $ffff8a3b
  49. line_nr         equ $ffff8a3c
  50. mode            equ $ffff8a3c
  51. skew            equ $ffff8a3d
  52. endmask1        equ $ffff8a28
  53. endmask2        equ $ffff8a2a
  54. endmask3        equ $ffff8a2c
  55. x_count         equ $ffff8a36
  56. y_count         equ $ffff8a38
  57. dest_x_inc      equ $ffff8a2e
  58. dest_y_inc      equ $ffff8a30
  59. dest_adr        equ $ffff8a32
  60. src_x_inc       equ $ffff8a20
  61. src_y_inc       equ $ffff8a22
  62. src_adr         equ $ffff8a24
  63.  
  64. mpx_src         equ $ffff8930
  65. mpx_dst         equ $ffff8932
  66.  
  67.  
  68.         move.l    4(a7),a5
  69.         move.l    a5,a6
  70.         move.l    $c(a5),d0
  71.         add.l    $14(a5),d0
  72.         add.l    $1c(a5),d0
  73.         addi.l    #500,d0
  74.         move.l    d0,-(a7)
  75.         move.l    a5,-(a7)
  76.         clr.w    -(a7)
  77.         move.w    #$4a,-(a7)        ;memory shrink
  78.         trap    #1
  79.         add.l    #$c,a7
  80.  
  81.  
  82.         move.l    #ime,a4
  83.         pea    $81(a6)            ;take name of MOD
  84.         move.l    (a7)+,a3        ;from stack
  85. opet        cmp.b    #0,(a3)
  86.         beq    izlaz
  87.         move.b    (a3)+,(a4)+
  88.         bra    opet
  89.         
  90. izlaz        CLR.W    -(A7)
  91.         MOVE.L    #ime,-(A7)        ;filename a0
  92.         MOVE.W    #$3D,-(A7)
  93.         TRAP    #1
  94.         ADDQ.L    #%1000,A7
  95.  
  96.         MOVE.W    D0,D1
  97.         move.l    #mod1,-(a7)        ;addr of load
  98.         MOVE.L    #512000,-(A7)        ;lenght in a2
  99.         MOVE.W    D1,-(A7)
  100.         MOVE.W    #$3F,-(A7)
  101.         TRAP    #1
  102.         ADDA.L    #$C,A7
  103.  
  104.         move.w    d1,-(a7)          ;close file
  105.         move.w    #$3e,-(a7)
  106.         trap    #1
  107.         add.l    #4,a7
  108.  
  109.         move.l    #mod_text,-(sp)
  110.         move.w    #9,-(sp)
  111.         trap    #1
  112.         add.l    #6,sp
  113.  
  114.         move.l    #mod1,-(sp)
  115.         move.w    #9,-(sp)
  116.         trap    #1
  117.         add.l    #6,sp
  118.  
  119.                 lea     player,a0
  120.                 bsr     reloziere
  121.  
  122.  
  123.                 moveq   #1,d0
  124.                 lea     mod1,a0
  125.                 bsr     player+28       ;ein
  126.                 pea     init
  127.                 move.w  #$26,-(sp)
  128.                 trap    #14
  129.                 addq.l  #6,sp
  130.  
  131.  
  132.                 move.w  #1,-(sp)
  133.                 trap    #1
  134.                 addq.l  #2,sp
  135.  
  136.                 pea     off
  137.                 move.w  #$26,-(sp)
  138.                 trap    #14
  139.                 addq.l  #6,sp
  140.                 bsr     player+28+4     ;aus
  141.  
  142. kraj            clr.w   -(sp)
  143.                 trap    #1
  144.  
  145.  
  146. timer_b:        movem.l d0-a6,-(sp)
  147.                 bsr     player+28+8
  148.                 movem.l (sp)+,d0-a6
  149.                 bclr    #0,$fffffa0f.w
  150.                 rte
  151.  
  152.  
  153. init:           lea     SaveArea,a0
  154.                 move.l  timer_int.w,(a0)+
  155.                 move.b  tbcr.w,(a0)+
  156.                 move.b  tbdr.w,(a0)+
  157.                 move.b  #246,tbdr.w
  158.                 move.b  #7,tbcr.w
  159.                 move.l  #timer_b,timer_int.w
  160.                 bset    #0,imra.w
  161.                 bset    #0,iera.w
  162.                 rts
  163.  
  164. off:            bclr    #0,iera.w
  165.                 bclr    #0,imra.w
  166.                 lea     SaveArea,a0
  167.                 move.l  (a0)+,timer_int.w
  168.                 move.b  (a0)+,tbcr.w
  169.                 move.b  (a0)+,tbdr.w
  170.                 rts
  171.  
  172. reloziere:      
  173.                 move.l  2(a0),d0        ;Relozieren
  174.                 add.l   6(a0),d0
  175.                 add.l   14(a0),d0
  176.                 adda.l  #$1c,a0
  177.                 move.l  a0,d1
  178.                 movea.l a0,a1
  179.                 movea.l a1,a2
  180.                 adda.l  d0,a1
  181.                 move.l  (a1)+,d0
  182.                 adda.l  d0,a2
  183.                 add.l   d1,(a2)
  184.                 clr.l   d0
  185. L000A:          move.b  (a1)+,d0
  186.                 beq     L000C
  187.                 cmp.b   #1,d0
  188.                 beq     L000B
  189.                 adda.l  d0,a2
  190.                 add.l   d1,(a2)
  191.                 bra     L000A
  192. L000B:          adda.l  #$fe,a2
  193.                 bra     L000A
  194. L000C:          rts
  195.         section    data
  196. player:         incbin 'e:\devpack\sources\DSP.BSW'
  197. mod_text    dc.b    '   DSP MOD Player for Falcon',13,10
  198.         dc.b    'Original Protracker 3.0 replay by ',13,10
  199.         dc.b    '      bITmASTER of BSW',13,10
  200.         dc.b    '   Additional coding by Dusan',13,10,13,10
  201.         dc.b    'Now playing ',0
  202.         section bss
  203.         even
  204. mod1        ds.b    512000            ;only moduls up to 512K!!
  205. SaveArea:       ds.b 6
  206. ime        ds.l    16