
DMACONW  EQU   $DFF096
ADKCONW  EQU   $DFF09E
AUD0LCH  EQU   $DFF0A0
AUD1LCH  EQU   $DFF0B0
AUD0LEN  EQU   $DFF0A4
AUD1LEN  EQU   $DFF0B4
AUD0PER  EQU   $DFF0A6
AUD1PER  EQU   $DFF0B6
AUD0VOL  EQU   $DFF0A8
AUD1VOL  EQU   $DFF0B8

_AbsExecBase      equ   4
_LVOOpenLibrary   equ   -552
_LVOInput         equ   -54
_LVOOpen          equ   -30
_LVOClose         equ   -36
_LVORead          equ   -42

Existing: EQU 1005
   movem.l a0/d0,-(SP)
   move.l _AbsExecBase,a6
   move.l #DOS_Name,a1
   clr.l  d0
   jsr    _LVOOpenLibrary(a6)
   move.l d0,a6
   tst.l  d0
   beq    Abort
   jsr    _LVOInput(a6)
   move.l d0,StdIn
   beq    Abort

   movem.l (SP)+,a0/d0
   move.l  a0,d1
   move.b #0,-1(a0,d0)
   move.l #Existing,d2
   jsr    _LVOOpen(a6)
   move.l d0,FileHandle
   bne    Display_File
   bra    Abort
Display_File:
   move.l FileHandle,d1
   move.l #Buffer,d2
   move.l #8,d3
   jsr    _LVORead(a6)
   move.l d2,a0
   move.l (a0),d4
   cmp.l  #'FORM',d4
   bne    Abort
   move.l 4(a0),d3
   move.l d3,chunksize
   cmp.l  #131300,d3
   bhi    Abort
   move.l #$7fc00,d2
   sub.l  d3,d2
   move.l d2,so_buf
   move.l FileHandle,d1
   jsr    _LVORead(a6)
   move.l FileHandle,d1
   jsr    _LVOClose(a6)

   move.l so_buf,a1
vh:cmp.l  #'VHDR',(A1)+
   bne.s  vh
   move.w 16(a1),d4
bo:cmp.l  #'BODY',(A1)+
   bne.s  bo
   move.l (A1)+,d1
   cmp.l  #131070,d1
   bhi    Abort
   divu   #2,d1
   move.l A1,d2
   move.l #3579546,d3
   divu   d4,d3
   MOVE.W        d1,AUD0LEN
   MOVE.W        d1,AUD1LEN
   MOVE.W        d3,AUD0PER
   MOVE.W        d3,AUD1PER
   MOVE.W       #64,AUD0VOL
   MOVE.W       #64,AUD1VOL
   MOVE.L        d2,AUD0LCH
   MOVE.L        d2,AUD1LCH
   MOVE.W #%1000001000000011,DMACONW
Abort:
   clr.l  d0
   rts

   SECTION data,DATA
DOS_Name:
   dc.b 'dos.library',0

   SECTION mem,BSS
StdIn      ds.l  1
FileHandle:ds.l  1
Buffer:    ds.l  2
chunksize: ds.l  1
so_buf:    ds.l  1
   END

