Instructions for creation of a dual format CDrom
(ODS-2/ISO-9660)


Detailed here are instuctions for the creation of a dual format CDrom which can be mounted on VMS systems as a native ODS-2 file system and on machines which recognize and mount ISO-9660 CDs -- This includes VMS!

These instructions assume the use of the following software components:

This also assumes that a VAX or an Alpha machine will be used. The machine *must* have enough free disk space to accomodate a container file of the capacity needed to house your proposed CD's contents.

All math on this page is assumed integer only. For example: 4/3 = 1
The calculations shown can be performed at the DCL ($) prompt which always performs integer division.

Using the software and hardware assumptions listed above, the CD containter file which is created can be checked prior to writing the final CD. Therefore, the integrity can be checked prior to creating a "coaster".

  1. Initialize the 'free disk' (heretofore known as FREE$DISK:) using the command:

    
        $ INITIALIZE/INDEX=BEGIN FREE$DISK:
    
  2. This will insure that the disk is initialized such that the maximum amount of contiguous free space is available.


  3. Start LD V6.2 if it has not already been started.

    
        $ @SYS$STARTUP:LD$STARTUP
    

  4. Create the CD container file. The 'size' in the following command can be used to create the maximum 650MB CDrom. A smaller size can be used but it is not recommended by the author of this procedure.

    
        $ LD CREATE /SIZE=1269528 FREE$DISK:[000000]STAGING.DSK

    Where: 1,269,528 {blocks} is ( 650,000,000 {650MB} / 2,048 {byte CD sectors} ) *4 {blocks/CD sector}

  5. Create a directory to house the ISO-9660 directory tree and files.

    
        $ CREATE/DIRECTORY  FREE$DISK:[ISO9660]
    

  6. Populate FREE$DISK:[ISO9660] with sub-directories and files.

  7. Place .MKISOFSRC file in FREE$DISK:[000000] and edit its content to reflect the information you wish to have known about this ISO-9600 file system.

  8. Create the ISO-9660 file system container file.

    
        $ SET DEFAULT FREE$DISK:[000000]
        $ MKISOFS -O ISO9660.DSK FREE$DISK:[ISO9660]
    

  9. Obtain the size of the ISO9660.DSK file.

    
        $ DIRECTORY/SIZE=ALL FREE$DISK:[000000]ISO9660.DSK
    

  10. Compute ISO9660.DSK file size in 2048 byte sectors.

    
        $ ISO9660_SIZE = ({allocation size of ISO9660.DSK}/4+1)*4
        $ SHOW SYMBOL ISO9660_SIZE
    

  11. Modify the attributes of ISO9660.DSK to have 512 byte records so that it may be copied.
    (See step #11)

    
        $ SET FILE/ATTRIBUTES=(LRL:512) FREE$DISK:[000000]ISO9660.DSK
    

  12. Copy the ISO9660.DSK file to the STAGING.DSK file, overlaying its contents!

    
        $ COPY/OVERLAY FREE$DISK:[000000]ISO9660.DSK -
                       FREE$DISK:[000000]STAGING.DSK
        $ SET FILE/END FREE$DISK:[000000]STAGING.DSK
    

  13. Connect an LD device to the staging disk container file.

    
        $ LD CONNECT FREE$DISK:[000000]STAGING.DSK LDA1:
    

  14. Initialize the LD device. Initialization qualifiers are used to keep the INDEXF.SYS and associated volume files from over-writing the overlayed ISO-9660 file system.

    
        $ INITIALIZE /INDEX=END [/HOMEBLOCKS=CONTIGUOUS] LDA1 "{ODS-2 label}" -
                    /BADBLOCKS=(64:{ISO9660-size}+64) /MAXIMUM_FILES=128000
    
        Note: /HOMEBLOCKS=CONTIGUOUS is only available on recent versions.    
    

    
          ISO9660-size= (({allocation size of ISO9660.DSK}/4+1)*4)
    


The device is now setup for dual format mounting. Check the ISO-9660 file system with the following commands:


You may now populate the volume with the files such that the device can be mounted as an ODS-2 file system.

Copy or backup your files to LDA1:


When you have completed the population of the staging device, dismount it.

The STAGING.DSK file can now be written to the CD/R or CD/RW.

The author of this page uses CDRECORD[3]. This is a fine package and is known to work with a wide variety of CD-R and CD-RW burners from many manufacturers. The best list of known-to-work burners can be found by following the link in footnote [3] below. CDRECORD [3] is now shipping with OpenVMS Alpha V7.3-1

An already built VAX executable of CDRECORD (built against V6.0 of OpenVMS and should work with all later versions) is available here.

NOTE: You must use the OpenVMS GKDRIVER on MicroVAX/VAXstation 3100 series machines. The DKDRIVER/PKNDRIVER combination on MicroVAX/VAXstation 3100 series machines will not properly handle the SCSI commands sent via IO$_DIAGNOSE $QIOs in CDRECORD. MicroVAX/VAXstation 4000 series machines do not have this limitation and CDRECORD can be used there with the device configured with the DKDRIVER.


An already built Alpha executable of CDRECORD (built against V7.2 of OpenVMS and should work with all later versions) is available here.



Footnotes:
[1] While these instructions use the LD062 virtual disk package available on the OpenVMS Freeware V4.0 CD, there is nothing to restrict you to this virtual disk package. Glenn Everhart has written several virtual device driver packages which can also be used. Glenn's efforts have appeared on the OpenVMS Freeware CDs and can also be found in the DECUS library and in freeware repositories around the internet.

[2] MKISOFS is also available here.

[3] Joerg Shilling is the author of CDRECORD.



 This page has been accessed 43 times.

     Copyright © 1998-2026 TMESIS SOFTWARE     
     TMESIS SOFTWARE 14 Rutgers Road     
     All Rights Reserved Jackson,  New Jersey     
page design, graphics and layout by  
TMESIS Software
 Last updated on Wednesday, January 22, 2003 at 05:07:15 PM