Changes with CD part. Especially explanation of TOC.

This commit is contained in:
Thomas Schmitt 2007-01-20 14:26:32 +00:00
parent fb98c0390e
commit 8e17806405
1 changed files with 67 additions and 28 deletions

View File

@ -1,6 +1,9 @@
libburnia.pykix.org Optical Media Rotisserie Recipes as of January 2007
Content: Content:
- TAO Multi-Session CD Cookbook - TAO Multi-Session CD Cookbook (CD-R, CD-RW)
- Overwriteable DVD Cookbook - Overwriteable DVD Cookbook (DVD-RAM, DVD+RW, DVD-RW)
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
TAO Multi-Session CD Cookbook TAO Multi-Session CD Cookbook
@ -9,6 +12,7 @@ Guided by reading mmc-r10a.pdf , O.8 "Write a Track"
from http://www.t10.org/ftp/t10/drafts/mmc/ from http://www.t10.org/ftp/t10/drafts/mmc/
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
by reading spc3r23.pdf from http://www.t10.org/ftp/t10/drafts/spc3/ by reading spc3r23.pdf from http://www.t10.org/ftp/t10/drafts/spc3/
by reading libburn/* from http://icculus.org/burn
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S
which used in part code from http://icculus.org/burn. which used in part code from http://icculus.org/burn.
@ -22,11 +26,11 @@ Media type can be recognized by Current Profile from 46h GET CONFIGURATION.
CD-R 0009h CD-R 0009h
CD-RW 000ah CD-RW 000ah
The following topics are covered: The following topics are covered in this text:
- About blank, appendable and finalized CD media - About blank, appendable and finalized CD media
- Writing a session to CD - Writing a session to CD in TAO mode
- Obtaining CD multi-session info for extending ISO-9660 filesystems - Obtaining CD multi-session info for extending ISO-9660 filesystems
- Obtaining a Table Of Content from CD >>> under construction - Obtaining a Table Of Content from CD
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -42,8 +46,8 @@ indicates:
11b others (unsuitable for this recipe) 11b others (unsuitable for this recipe)
(mmc5r03c.pdf 6.22.3.1.4) (mmc5r03c.pdf 6.22.3.1.4)
CDs which are finalized or appendable may be blanked by command A1h BLANK with CD-RW which are finalized or appendable may be blanked by command A1h BLANK
blanking types 000b "Blank the disc" or 001b "Minimally blank the disc". with blanking types 000b "Blank the disc" or 001b "Minimally blank the disc".
The Start Address/Track Number will be ignored so it may well be 0. The Start Address/Track Number will be ignored so it may well be 0.
Because the operation is long running it is advised to set the Immed bit and to Because the operation is long running it is advised to set the Immed bit and to
watch the progress by commands 00h TEST UNIT READY and 03h REQUEST SENSE watch the progress by commands 00h TEST UNIT READY and 03h REQUEST SENSE
@ -56,12 +60,14 @@ It is done when 00h succeeds and 03h reports 0 in PROGRESS INDICATION
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Writing a session to CD : Writing a session to CD in TAO mode :
The writing method for blank or appendable media is the same. If the media is The writing method for blank or appendable media is the same. A new session
blank then the new track will be the first and only one in the table of will get automatically by the first track ehen it is written. If the media is
content. If the media is appendable then a new session will be opened blank then the new session will be the first and only one in the table of
automatically and the new track will be the first and only one in this session. content. If the media is appendable then a new session will be appended to
the existing sessions. In any case the new track will be the first one in
the new session.
Speed may be set by BBh SET CD SPEED parameter Drive Write Speed. Note that Speed may be set by BBh SET CD SPEED parameter Drive Write Speed. Note that
kbytes/sec means 1000 bytes/sec and not 1024/sec. Rotational control should kbytes/sec means 1000 bytes/sec and not 1024/sec. Rotational control should
@ -76,14 +82,15 @@ parameters:
BUFE Buffer Underrun protection 0=off, 1=on BUFE Buffer Underrun protection 0=off, 1=on
Test Write -dummy mode for writing 0=off, 1=on Test Write -dummy mode for writing 0=off, 1=on
Write Type Packet/TAO/SAO/RAW 01h = TAO Write Type Packet/TAO/SAO/RAW 01h = TAO
Multi-session Wether to keep appendable 00b = close, 11b = appendable Multi-session Wether to keep appendable 00b = finalize
11b = keep appendable
Track Mode Describes frame type 4 for data , 0 for audio Track Mode Describes frame type 4 for data , 0 for audio
Data Block Type Layout of payload blocks 8 for 2048 byte data blocks Data Block Type Layout of payload blocks 8 for 2048 byte data blocks
0 for 2352 byte audio blocks 0 for 2352 byte audio blocks
Audio Pause Length 150 = 2 seconds Audio Pause Length 150 = 2 seconds
Any other parameters may be set to 0. Any other parameters may be set to 0.
Mode page data as of MMC-5 table 644 are preceded by a Mode Parameter Header Mode page data as of MMC-5 table 644 are preceded by a Mode Parameter Header
as of SPC-3 table 240. This 8-byte header may be filled with 0s ... obviously. as of SPC-3 table 240. This 8-byte header may be filled with zeros.
(mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode) (mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode)
(spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats) (spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats)
@ -94,8 +101,10 @@ Number set to FFh. The Next Writeable Address as of table 500 is the number
to start writing with. to start writing with.
(mmc5r03c.pdf 6.27 ) (mmc5r03c.pdf 6.27 )
Writing is done by 2Ah WRITE with the Logical Block Address counted up from Writing is performed by one or more 2Ah WRITE transactions with the Logical
the initial number in sync with the number of blocks written. Only full blocks Block Address counted up from the initial number in sync with the number of
blocks written. I.e the Transfer Length of the previous 2Ah WRITE has to be
added to the Logical Block Address for the next 2Ah WRITE. Only full blocks
can be written. can be written.
(mmc5r03c.pdf, 6.44) (mmc5r03c.pdf, 6.44)
When writing is done, it is mandatory to force the drive's buffer to media by When writing is done, it is mandatory to force the drive's buffer to media by
@ -105,10 +114,12 @@ When writing is done, it is mandatory to force the drive's buffer to media by
The track has to be closed by 5Bh CLOSE TRACK SESSION Close Function 001b. The track has to be closed by 5Bh CLOSE TRACK SESSION Close Function 001b.
Older MMC specifies a valid Logical Track Number FFh to depict the open track. Older MMC specifies a valid Logical Track Number FFh to depict the open track.
MMC-5 is quite silent about this. FFh works for my drives. MMC-5 is quite silent about this. FFh works for my drives.
After that, a new track can be written beginning with sending the mode page 05h
again (it is not tested wether this can be omitted).
(mmc5r03c.pdf 6.3.3.1.2) (mmc5r03c.pdf 6.3.3.1.2)
After that, a new track may be written beginning with sending the mode page 05h
again (it is not tested wether 05h can be omitted). The track will then be
added to the session which was opened by the first track.
After the last track of a session, 5Bh CLOSE TRACK SESSION Close Function 010b After the last track of a session, 5Bh CLOSE TRACK SESSION Close Function 010b
with Logical Track Number 0 closes the session. It depends on the Multi-Session with Logical Track Number 0 closes the session. It depends on the Multi-Session
value in mode page 05h wether the disc is finalized or stays appendable. value in mode page 05h wether the disc is finalized or stays appendable.
@ -127,18 +138,19 @@ existing ISO-9660 filesystem image. This number is needed for mkisofs option
-M to connect to the existing image. The new image will refer to files in -M to connect to the existing image. The new image will refer to files in
the previously existing image. mkisofs option -M needs read access to the the previously existing image. mkisofs option -M needs read access to the
CD or a blockwise copy of it on hard disk. CD or a blockwise copy of it on hard disk.
The number is gained by 43h READ TOC/PMA/ATIP.
(mmc5r03c.pdf 6.26)
Untested is Format 0001b which in table 478 promises quick access via Untested is Format 0001b which in table 478 promises quick access via
Start Address of First Track in Last Session. Start Address Of First Track In Last Session.
(mmc5r03c.pdf 6.26.3.3.1) (mmc5r03c.pdf 6.26.2.5 table 478, 6.26.3.3.1)
libburn gets the number from its Table Of Content model which is obtained libburn gets the number from its Table Of Content model which is obtained
by 43h READ TOC/PMA/ATIP, Format 0010b. See below. by 43h READ TOC/PMA/ATIP, Format 0010b. See below.
The second number is an exact prediction of the Logical Block Address of the The second number is an exact prediction of the Logical Block Address of the
new track which will contain the newly generated ISO-9660 image. new track which will contain the newly generated ISO-9660 image.
Even without option -M this second number is still needed to make the inner Even without mkisofs option -M this second number is still needed to make the
block address pointers of the image match the Logical Block Addresses on CD. inner block address pointers of the image match the Logical Block Addresses
on CD. For that one may inquire 52h READ TRACK INFORMATION with
This number is the address returned by 52h READ TRACK INFORMATION with
Address/Number Type set to 01b and Logical Block Address/Track/Session Address/Number Type set to 01b and Logical Block Address/Track/Session
Number set to FFh. The Next Writeable Address as of table 500 is the number Number set to FFh. The Next Writeable Address as of table 500 is the number
to use. to use.
@ -146,16 +158,43 @@ to use.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
>>> Obtaining a Table Of Content from CD : Obtaining a Table Of Content from CD :
The structure of a CD is comprised of sessions. Each session contains one or
more tracks and is followed by a lead-out. A track has an address and a length.
Table of content information is gained by 43h READ TOC/PMA/ATIP, Format 0010b. Table of content information is gained by 43h READ TOC/PMA/ATIP, Format 0010b.
(mmc5r03c.pdf 6.26.2.5 table 478)
The number of sessions is given by Last Complete Session Number. The number of sessions is given by Last Complete Session Number.
The number of TOC Track descriptors is: (TOC Data Length - 2)/11 . The number of TOC Track descriptors is: (TOC Data Length - 2)/11 .
>>> sift out the track entries Each TOC Track Descriptor contains a Session Number.
>>> track starts, leadout starts
(mmc5r03c.pdf 6.26.2.5 table 478, 6.26.3.4 ) If POINT is >= 1 and <= 99 (63h) then the descriptor is about the track of
which POINT tells the number.
The start address of this track can be read from PMIN, PSEC, PFRAME where
it is encoded in MSF format:
blocks = frames - 150, 75 frames = 1 sec , 60 sec = 1 min.
The length of the track is given by MIN,SEC,FRAME in the same format.
If POINT = A0h then the descriptor tells in PMIN the first track number of its
session.
POINT = A1h tells in PMIN the last track number of its session.
POINT = A2h describes in PMIN, PSEC, PFRAME the lead-out of a session, i.e the
first address after the session's end. (Next writeable address typically is
lead-out + 11400 after the first session, lead-out + 6900 after further
sessions.)
POINT = B0h tells in MIN,SEC,FRAME this next writeable address or FFh,FFh,FFh
for finalized disc.
(mmc5r03c.pdf 6.26.3.4 table 489, 4.2.3.7 Mode-1 Q, Mode-5 Q)
In libburn the address of the first track in the last session is obtained from
the last session's POINT = A0h and from the track descriptor with the POINT
value matching the PMIN value of the A0h descriptor.
Untested is wether POINT = B0h and 52h READ TRACK INFORMATION are always in
sync. libburn uses the info provided by 52h READ TRACK INFORMATION.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------