Some years ago, I wrote a program named the CD Detection Experiment to toy around with compact discs. I reference this tool often in my Multimedia Exploration Journal. The end goal was a tool that could analyze a variety of different CD types, including mode 2 discs, Philips CD-I discs, and 3DO discs. All it does is open a raw CD device under Unix, check the first few sectors, and decide what kind of CD is in the drive. I’m trying to remember if this tool preceded my CD-related work for xine or if I used code from my xine work in this program. There is code for Solaris and FreeBSD reading, so I am guessing that I based this on the xine work.
Anyway, if you care, here is the code. Here is some sample output, from that Deathtrap Dungeon game discussed in this journal entry, the one with a weird mixed mode:
$ ./cdexp /dev/cdrom CD Detection Experiment toc: first track = 1 last track = 18 toc entries: leadout track: MSF: 76:16:18, first frame = 343218 track 1, data, MSF: 00:02:00, first frame = 150 mode 1 data iso9660 fs signature found system id = volume id = Deathtrap track 2, audio, MSF: 28:09:14, first frame = 126689 track 3, audio, MSF: 30:37:58, first frame = 137833 track 4, audio, MSF: 32:37:28, first frame = 146803 track 5, audio, MSF: 35:32:30, first frame = 159930 track 6, audio, MSF: 39:57:58, first frame = 179833 track 7, audio, MSF: 43:07:24, first frame = 194049 track 8, audio, MSF: 45:45:35, first frame = 205910 track 9, audio, MSF: 49:33:19, first frame = 222994 track 10, audio, MSF: 52:38:22, first frame = 236872 track 11, audio, MSF: 55:17:04, first frame = 248779 track 12, audio, MSF: 58:13:66, first frame = 262041 track 13, audio, MSF: 60:28:28, first frame = 272128 track 14, audio, MSF: 62:43:43, first frame = 282268 track 15, audio, MSF: 64:59:33, first frame = 292458 track 16, audio, MSF: 67:14:00, first frame = 302550 track 17, audio, MSF: 75:36:00, first frame = 340200 track 18, data, MSF: 76:00:00, first frame = 342000 mode 1 data iso9660 fs signature found system id = volume id = Deathtrap