home *** CD-ROM | disk | FTP | other *** search
/ modiromppu / modiromppu.iso / PROGRAMS / ORGPACKS / SNGPLY10.ZIP / PLAYMUS1.ASM < prev    next >
Assembly Source File  |  1997-01-01  |  3KB  |  199 lines

  1.                 .Model Tiny
  2.         Smart
  3.                 Stack 100h
  4.  
  5.                 .DATA
  6.  
  7. SongLength      EQU     0A13Bh+8
  8. SongLoopStart   EQU     015Ch+8
  9. NotePos        dw    12
  10. DelayCt        db    50
  11.  
  12. SongSeg        Segment    Public
  13.  
  14. Include         PlayMus1.inc
  15.  
  16. SongSeg        EndS        
  17.  
  18.                 .CODE
  19.  
  20. OutAdlib    Proc    Near
  21.         Push    ax
  22.         Push    dx
  23.         Mov    dx, 388h
  24.         Xchg    al, ah
  25.         Out    dx, al
  26.         Inc    dx
  27.         In    al, dx
  28.         In    al, dx
  29.         In    al, dx
  30.         In    al, dx
  31.         In    al, dx
  32.         In    al, dx
  33.         In    al, dx
  34.         Mov    al, ah
  35.         Out    dx, al
  36.         In    al, dx
  37.         In    al, dx
  38.         In    al, dx
  39.         In    al, dx
  40.         In    al, dx
  41.         In    al, dx
  42.         In    al, dx
  43.         In    al, dx
  44.         In    al, dx
  45.         In    al, dx
  46.         In    al, dx
  47.         In    al, dx
  48.         In    al, dx
  49.         In    al, dx
  50.         In    al, dx
  51.         In    al, dx
  52.         In    al, dx
  53.         In    al, dx
  54.         In    al, dx
  55.         In    al, dx
  56.         In    al, dx
  57.         In    al, dx
  58.         In    al, dx
  59.         In    al, dx
  60.         In    al, dx
  61.         In    al, dx
  62.         In    al, dx
  63.         In    al, dx
  64.         In    al, dx
  65.         In    al, dx
  66.                 Pop     dx
  67.                 Pop     ax
  68.                 Ret
  69. OutAdlib        EndP
  70.  
  71. InitAdlib       Proc    Near
  72.         Mov    cx, 0F0h
  73.         Mov    ax, 1000h
  74. Loop_1:
  75.                 Call    OutAdlib
  76.         Inc    ah
  77.         Loop    Loop_1
  78.  
  79.  
  80.         Mov    cx, 20h
  81.         Mov    ax, 403Fh
  82. Loop_2:
  83.                 Call    OutAdlib
  84.         Inc    ah
  85.         Loop    Loop_2
  86.  
  87.  
  88.         Mov    cx, 0A0h
  89.         Mov    ax, 6000h
  90. Loop_3:
  91.                 Call    OutAdlib
  92.         Inc    ah
  93.         Loop    Loop_3
  94.  
  95.  
  96.         Mov    ax, 120h
  97.         Call    OutAdlib
  98.  
  99.  
  100.         Mov    ax, 0800h
  101.         Call    OutAdlib
  102.  
  103.  
  104.         Mov    ax, 0BD00h
  105.         Call    OutAdlib
  106.  
  107.         Mov    cx, 9
  108.         Xor    di, di
  109.  
  110. Loop_4:
  111.                 Push    cx
  112.         Xor    ax, ax
  113.         Mov    bx, di
  114.         Mov    bh, ah
  115.         Mov    ah, 0A0h
  116.         Add    ah, bl
  117.         Call    OutAdlib
  118.  
  119.         Mov    al, bh
  120.         Add    ah, 10h
  121.         Call    OutAdlib
  122.  
  123.         Inc    di
  124.         Pop    cx
  125.         Loop    Loop_4
  126.  
  127.         Ret
  128. InitAdlib       EndP
  129.  
  130. PlayNote        Proc    Near
  131.         Push    ax
  132.         Push    bx
  133.         Mov    ax, SongSeg
  134.         Mov    ES, ax
  135.         Dec    DelayCt
  136.         Cmp    DelayCt, 0
  137.         Jne    DelayNOTDone
  138.         Mov    bx, NotePos
  139. NextCommand:
  140.         Mov    ax, ES:[bx]
  141.         Add    bx, 2
  142.         Cmp    bx, SongLength
  143.         Jae    SongDone
  144.         Cmp    ah, 0
  145.         Je    RowDone
  146.         Call    OutAdlib
  147.         Jmp    NextCommand
  148. RowDone:
  149.         Mov    DelayCt, al
  150.         Mov    NotePos, bx
  151. DelayNOTDone:
  152.         Pop    bx
  153.         Pop    ax
  154.         Ret
  155. SongDone:
  156.         Mov    bx, SongLoopStart
  157.         Jmp    NextCommand
  158. PlayNote    EndP
  159.  
  160.  
  161. WaitRetrace    Proc    Near
  162.         Mov    dx, 3DAh
  163. NoRetrace:
  164.         In    al, dx
  165.         Test    al, 8
  166.         Jz    NoRetrace
  167.  
  168. TestRetrace:
  169.         In    al, dx
  170.         test    al, 8
  171.         jnz    TestRetrace
  172.         
  173.         Ret
  174. WaitRetrace    EndP
  175.  
  176. Init        Proc    Near
  177.         Mov    ax, @DATA
  178.         Mov    DS, ax
  179.         Call    InitAdlib
  180. NoKeyPressed:
  181.                 Call    PlayNote
  182.  
  183.         Call    WaitRetrace
  184.  
  185.                 Mov     ah, 01
  186.                 Int     16h
  187.                 Jz      NoKeyPressed
  188.  
  189.         Mov    ah, 00
  190.         Int    16h
  191.         Cmp    al, 27
  192.         Jne    NoKeyPressed
  193.  
  194.         Call    InitAdlib
  195.  
  196.                 Mov     ax, 4C00h
  197.                 Int     21h
  198. Init            EndP
  199. End Init