module Sound.MED.Raw.MMDInfo where

import Sound.MED.Basic.Amiga

data MMDInfo = MMDInfo
  { next     :: Maybe MMDInfo
  , reserved :: UWORD
  , typ      :: UWORD
  , len      :: ULONG
  , dat      :: [ UBYTE ]
  }
  deriving (Show)

peek :: MEM -> PTR -> IO MMDInfo
peek m p = do
  next'''   <- peekPTR m p
  next'     <- peek m $? next'''
  reserved' <- peekUWORD m (p+4)
  typ'      <- peekUWORD m (p+6)
  len'      <- peekULONG m (p+8)
  dat'      <- mapM (peekUBYTE m) $ pointerRangeGen (p+12) 1 len'
  return $ MMDInfo
    next' reserved' typ' len' dat'