DIOCGDINFO, DIOCGPART, DIOCWDINFO, DIOCSDINFO, CDIOCPLAYMSF, CDIOCRESET,
CDIOCEJECT.
CDIOCPLAYBLOCKS removed (old implementation completely wrong and I don't
know how to implement it correctly).
All routines now detects media change correctly.
DELAY_GETREPLAY increased for long time access from first track
to last.
mcd_waitrdy() now use MIN_DELAY=15 as minimal delay which independs
of machine speed.
mcd_doread() now uses real status (old code uses obsoleted soft copy of it).
clear XBSY on error in mcd_doread()
mcd_statrt(): add missing splx(s), cause dead hang with unmatched slpbio()
optimize mcd_doread(), don't set CD mode each time, keep soft copy of mode.
call getdisklabel() _after_ mcdsize() for proper sizes
mcdopen(): old code forget to set MCDREADRAW in flags when open RAW
partition, doread check it for setting RAW CD mode.
Do nothing on stray interrupt (which sometimes occurse, because driver
read data block too slow, DOS driver use 'insb' here). Old stray code
cause timeouts.
Read toc entries code rewritten to return many requested entries
(as supposed) instead of one entry with incorrect structure.
CMDREAD2 requests covered with disable_intr()/enable_intr()
(from DOS driver)
Read junk code added after read block code in doread (from DOS driver)
mcd_read_toc() code fixed to read all needed entries, old code cause
some audio tracks is not played.
mcd_playtracks() code fixed to proper check valid track range.
New binary read modes implemented (from DOS driver).