HiMD device control command (0xC2)

The device control command is 12 bytes (0x0C), and depending on subcommand, intiates a data transfer from or to the device. The layout of the command block is

Byte 00: Command (0xC2)
Byte 01: Unknown, sent as zero (maybe LUN?)
Byte 02: For some subcommands: Application ID (0 == General?, 1 == MD Audio?, 2 == UMD Audio?)
Byte 03: subcommand
Byte 04: For some subcommands: Flag bits
Byte 05: For the switch interface command: Delay
Byte 06: unused, sent as zero
Byte 07: Set explicitly to zero for Get Leaf ID - Some Index?
Byte 08: Byte count of data transfer
Bytes 09-0B: unused

Subcommand 00: Erase HiMD

This command completely blanks the medium. This is not possible with Hi-MD 1GB media, as the Disc ID is read-only. Standard MD media completely blanked are usable in standard MD devices. This is the only way getting rid of Hi-MD format on a standard MD medium.

Subcommand 01: Format HiMD

This command just reinitializes the Hi-MD data structures on the Medium, but it doesn't remove the Hi-MD layout from it. It generally keeps the Disc ID, as this data is stored *outside* of the area accessible using normal read/write instructions, and only this area is reinitialized.

Subcommand 0E: Begin ICV Transaction

If the command is correctly understood, it starts a transaction that updates FAT, directory and the master ICV all at the same time, or none at all. See HiMDDownload, at timestampe 84.6. The transaction is committed by the new ICV at timestamp 93.2

Subcommand 0F: Recommend Synchronize Cache

Subcommand 10: Switch Interface

Subcommand 11: Get Leaf ID

Subcommand 20: Load Audio TOC

Subcommand 21: Pause Audio

Subcommand 22: Play Audio

Subcommand 23: Scan Audio

Subcommand 24: Search Audio

Subcommand 25: Seek Audio

Subcommand 26: Stop Audio

Subcommand 40: Read Defect List

Subcommand 41: Read Zone List

Subcommand 50: Get Time

Reads a 7-byte data packet from the Hi-MD unit with the following layout:

Byte 00: Flags. Bit 7 = Ex; Bit 6 = Ef; Bit 5 = WP (write protect?)
Byte 01: second
Byte 02: minute
Byte 03: hour
Byte 04: day
Byte 05: month
Byte 06: year

Subcommand 60: Read Audio Status

Subcommand 90: Set Time

Subcommand A0: Play audio parts