home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / exetoexp / sample.asm < prev    next >
Assembly Source File  |  1990-06-14  |  3KB  |  248 lines

  1.     .386p
  2.  
  3. TOWNS    equ    0C0h
  4.  
  5. DEVNO    equ    TOWNS
  6.  
  7. TBIOS    equ    0110h
  8. SND    equ    080h
  9.  
  10.     assume    cs:code,ds:data,ss:sseg
  11. ;
  12. ;
  13. ;
  14.  
  15. data    segment dword  'DATA' use32
  16.  
  17. TOCDATA    db    303 dup(0)
  18. PLAY3    db    6 dup(0)
  19.  
  20. PARABLK    label    far
  21. RINT    dw    0
  22. DSWD    dw    0
  23. ESWD    dw    0
  24. FSWD    dw    0
  25. GSWD    dw    0
  26. EAXWD    dd    0
  27. EDXWD    dd    0
  28.  
  29. data    ends
  30.  
  31. ;
  32. ;
  33. ;
  34.  
  35. code    segment dword 'CODE' use32
  36.  
  37.     mov    ax,ds
  38.     mov    es,ax
  39.  
  40. ;
  41. ;
  42. ;
  43. TOC_READ:
  44.         mov    ax,250Fh
  45.     lea    ebx,TOCDATA
  46.         mov    ecx,303
  47.     int    21h
  48.  
  49.     jc    error
  50.  
  51.     mov    di,cx
  52.     ror    ecx,16
  53.     mov    DSWD,cx
  54.  
  55.     mov    ah,54h
  56.     mov    al,DEVNO
  57.     mov    ch,00h
  58.     mov    cl,00h
  59.  
  60.     mov    EAXWD,eax
  61.     mov    bx,93h
  62.     mov    RINT,bx
  63.  
  64.     mov    ax,2511h
  65.     lea    edx,PARABLK
  66.     int    21h
  67.  
  68.     cmp    ah,00h
  69.     je    short CD_PLAY3
  70.     cmp    ah,80h
  71.     je    short TOC_READ
  72.     cmp    ah,10h
  73.     jne    error
  74.  
  75.     mov    ah,55h
  76.     mov    al,DEVNO
  77.     mov    ch,00h
  78.     jmp    TOC_READ
  79.  
  80. ;
  81. ;
  82. ;
  83.  
  84. CD_PLAY3:
  85.     mov    ax,TBIOS
  86.     mov    fs,ax
  87.     mov    ah,46h
  88.     mov    bl,00110000b
  89.     call    pword ptr fs:[SND]
  90.     mov    ah,49h
  91.     mov    dl,0ffh
  92.     call    pword ptr fs:[SND]
  93.  
  94.     lea    esi,TOCDATA
  95.     lea    edi,PLAY3
  96.  
  97.     mov    al,[esi+12]
  98.     mov    [edi+00],al
  99.     mov    al,[esi+13]
  100.     mov    [edi+01],al
  101.     mov    al,[esi+14]
  102.     mov    [edi+02],al
  103.  
  104.     mov    al,[esi+02]
  105.     cmp    al,3
  106.     jl    error
  107.     je    short Disc_Time
  108.  
  109. Track_Time:
  110.     mov    dl,[esi+15]
  111.     mov    ah,[esi+16]
  112.     mov    al,[esi+17]
  113.     jmp    short Calc_Music_End_Time
  114.  
  115. Disc_Time:
  116.     mov    dl,[esi+03]
  117.     mov    ah,[esi+04]
  118.     mov    al,[esi+05]
  119.  
  120. Calc_Music_End_Time:
  121.     call    conv_msf2lsn
  122.     dec    ax
  123.     sbb    dx,0
  124.     call    conv_lsn2msf
  125.  
  126.     mov    [edi+03],dl
  127.     mov    [edi+04],ah
  128.     mov    [edi+05],al
  129.  
  130.     mov    ax,250Fh
  131.     lea    ebx,PLAY3
  132.     mov    ecx,6
  133.     int    21h
  134.  
  135.     jc    error
  136.  
  137.     mov    di,cx
  138.     ror    ecx,16
  139.     mov    DSWD,cx
  140.  
  141.     mov    ah,50h
  142.     mov    al,DEVNO
  143.     mov    ch,00h
  144.     mov    cl,01h
  145.  
  146.     mov    EAXWD,eax
  147.     mov    bx,93h
  148.     mov    RINT,bx
  149.  
  150.     mov    ax,2511h
  151.     lea    edx,PARABLK
  152.     int    21h
  153.  
  154. check:
  155.     mov    ah,53h
  156.     mov    al,DEVNO
  157.     mov    ch,00
  158.     mov    cl,00
  159.     int    93h
  160.  
  161.     cmp    al,1
  162.     jz    check
  163.  
  164. stop:
  165.     mov    ah,52h
  166.     mov    al,DEVNO
  167.     mov    ch,00
  168.     int    93h
  169.     jmp    short owari
  170.  
  171. ;
  172. ;
  173. ;
  174. owari:
  175.     mov    ax,4c00h
  176.     int    21h
  177.  
  178. ;
  179. ;
  180. ;
  181. error:
  182.  
  183.     ;
  184.     ;
  185.     ;
  186.  
  187.     jmp    short owari
  188. ;
  189. ;
  190. ;
  191. ;
  192. ;
  193. ;
  194. conv_msf2lsn:
  195.     push    bx
  196.     push    cx
  197.  
  198.     mov    bx,ax
  199.     mov    al,dl
  200.     mov    cl,60
  201.     mul    cl
  202.         add    al,bh
  203.     adc    ah,0
  204.     mov    cx,75
  205.     mul    cx
  206.     mov    bh,0
  207.     add    ax,bx
  208.     adc    dx,0
  209.     sub    ax,150
  210.     sbb    dx,0
  211.  
  212.     pop    cx
  213.     pop    bx
  214.     ret
  215.  
  216.  
  217. ;
  218. ;
  219. ;
  220. ;
  221. ;
  222. ;
  223. conv_lsn2msf:
  224.     push    cx
  225.  
  226.     add    ax,150
  227.     adc    dx,0
  228.     mov    cx,75*60
  229.     div    cx
  230.     xchg    dx,ax
  231.     mov    cl,75
  232.     div    cl
  233.     xchg    ah,al
  234.     xor    dh,dh
  235.  
  236.     pop    cx
  237.     ret
  238.  
  239. code    ends
  240.  
  241. ;
  242. ;
  243. sseg    segment dword stack use32
  244.         db      4096 dup(?)
  245. sseg    ends
  246.  
  247.         end
  248.