Category : Recently Uploaded Files
Archive   : INFOPACK.ZIP
Filename : MCTRL.RTF

 
Output of file : MCTRL.RTF contained in archive : INFOPACK.ZIP
{\rtf1\ansi \deff0{\fonttbl{\f0\froman Tms Rmn;}{\f1\fdecor Symbol;}{\f2\fswiss Helv;}{\f3\fmodern Courier;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;
\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s242\tqc\tx4320\tqr\tx8640 \fs20 \sbasedon0\snext242 footer;}{\s243\tqc\tx4320\tqr\tx8640 \fs20 \sbasedon0\snext243 header;}{\fs20 \snext0 Normal;}}{\info
{\title MSCDEX Function Requests Spec}{\subject Describes MSCDEX available through int 2Fh func 15h}{\author Dan Newell}{\operator Michael Edwards}{\creatim\yr1990\mo3\dy23\hr17\min21}{\revtim\yr1990\mo3\dy28\hr15\min40}
{\printim\yr1990\mo8\dy23\hr14\min1}{\version5}{\edmins9}{\nofpages11}{\nofwords3234}{\nofchars19406}{\vern8310}}\sectd \linex0\headery1080\footery1080\titlepg {\header \pard\plain \qr\sl240 \fs20 {\b\f2\fs16
MSCDEX - Microsoft MS-DOS CD-ROM Extensions Version 2.20
\par }\pard \sl240 {\f2
\par }}{\footer \pard\plain \qr\sl240 \fs20 {\b\f2\fs16 MSCDEX Function Requests - Copyright (C) Microsoft Corp. 1989. All rights reserved - page }{\field{\*\fldinst {\b\f2\fs16 page}}{\fldrslt {\b\f2\fs16 11}}}{\b\f2\fs16
\par }\pard \sl240 {\b\f2\fs16
\par }}{\footerf \pard\plain \qr\sl240 \fs20 {\b\f2\fs16 MSCDEX Function Requests - Copyright (C) Microsoft Corp. 1989. All rights reserved - page }{\field{\*\fldinst {\b\f2\fs16 page}}{\fldrslt {\b\f2\fs16 1}}}{\b\f2\fs16
\par }\pard \sl240 {\b\f2\fs16
\par }}\pard\plain \qc\sl240 \fs20 {\b\f2\fs28 Microsoft MS-DOS CD-ROM Extensions
\par Function Requests Specification
\par 29 March 1989
\par }\pard \qj\fi720\sl240 {\b\f3\ul
\par }\pard \qj\fi432\sl240 There is a need for access to features from the MSCDEX
redirector that transend DOS capabilities. This proposal documents a means the application can use to talk directly to MSCDEX to request information or set parameters that only MSCDEX can provide. This document outlines the services MSCDEX provides at pr
esent. Comments and suggestions are welcome.
\par
\par Access to these functions is provided through an INT 2Fh interface. AH contains 15h which is what MSCDEX will use to tell its requests from those of other INT 2Fh handlers. AL will contain the code of the function to be performed.
\par \pard \qj\sl240
\par {\b\ul Function Request Command Codes:
\par }{\ul
\par }\pard \sl240 \tab {\ul Contents of AL}\tab \tab {\ul Function
\par
\par }\pard \qj\sl240 \tab 00h\tab \tab \tab Get Number of CD-ROM drive letters
\par \tab 01h\tab \tab \tab Get CD-ROM drive device list
\par \tab 02h\tab \tab \tab Get copyright file name
\par \tab 03h\tab \tab \tab Get abstract file name
\par \tab 04h\tab \tab \tab Get bibliographic doc file name
\par \tab 05h\tab \tab \tab Read VTOC
\par \tab 06h\tab \tab \tab Turn debugging on
\par \tab 07h\tab \tab \tab Turn debugging off
\par \tab 08h\tab \tab \tab Absolute Disk Read
\par \tab 09h\tab \tab \tab Absolute Disk Write
\par \tab 0Ah\tab \tab \tab Reserved
\par \tab 0Bh*\tab \tab \tab CD-ROM Drive Check
\par \tab 0Ch*\tab \tab \tab MSCDEX Version
\par \tab 0Dh*\tab \tab \tab Get CD-ROM drive letters
\par \tab 0Eh*\tab \tab \tab Get/Set Volume Descriptor Preference
\par \tab 0Fh*\tab \tab \tab Get Directory Entry
\par \tab 10h**\tab \tab \tab Send Device Request
\par \tab 11h-0FFh\tab \tab Reserved
\par
\par * - New functions added in version 2.00
\par ** - New functions added in version 2.10
\par \page
\par \pard \sl240 {\b\i - Get Number of CD-ROM drive letters
\par }________________
\par
\par \tab AX\tab 1500h
\par \tab BX\tab Number of CD-ROM drive letters used
\par \tab CX\tab Starting drive letter of CD-ROM drive letters (A=0, B=1, ... Z=25)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 MSCDEX will return the numb
er of CD-ROM drive letters in BX and the starting drive letter in CX. The first CD-ROM device will be installed at the starting drive letter and subsequent drives will be assigned the next greater drive letter. A single device driver may be assigned to mo
re than one drive letter, such as the case of a device driver that supports multiple units. MSCDEX keeps track of which sub-unit a particular drive letter is assigned to.
\par
\par NOTE: This function can be used to determine if MSCDEX is installed by setting BX to zero before executing INT 2Fh. MSCDEX is not installed if BX is still zero on return.
\par Also, in a networking environment, one cannot assume that drive letters will always be assigned contiguously beginning with the starting drive letter. Use function Get CD-ROM drive letters instead.
\par \pard \sl240
\par {\b\i - Get CD-ROM drive device list
\par }________________
\par
\par \tab AX\tab 1501h
\par \tab ES:BX\tab Transfer address; pointer to buffer to copy drive letter device list
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 The buffer must be large enough to hold the device list. By calling function {\i Get Number of CD-ROM Drive Letters}
, one can find out the number of CD-ROM drive letters and the buffer size will be a multiple of that. This will be an absolute maximum of 26. Each drive letter device entry will consist of one byte for the sub-unit followed by 4 bytes for the address of t
he device header assigned to that drive letter. This byte for the sub-unit takes care of the problem of distinguishing which unit is assigned to which drive letter for device drivers that handle sub-units.
\par
\par For example: Suppose there are two installed CD-ROM device drivers, FOO, which supports 1 sub-unit, and BAR, which supports two sub-units, on a system with 2 floppy drives (A=0 and B=1) and a hard disk (C=2). Then asking for the number of CD-ROM drive let
ters will report that there are 3 drive letters used starting at drive letter D=3. ES:BX must point to a buffer that is at least 3*5 = 15 bytes long. The buffer will be filled as follows:
\par
\par ES:BX\tab = Buffer
\par
\par Buffer\tab DB\tab 0\tab \tab \tab \tab ; sub-unit of FOO on drive letter D:
\par \tab DD\tab
\par \tab DB\tab 0\tab \tab \tab \tab ; sub-unit of BAR on drive letter E:\tab \tab DD\tab
\par \tab DB\tab 1\tab \tab \tab \tab ; sub-unit of BAR on drive letter F:
\par \tab DD\tab
\par \page
\par \pard \sl240
\par {\b\i - Get copyright file name
\par }________________
\par
\par \tab AX\tab 1502h
\par \tab ES:BX\tab Transfer address; pointer to a 38 byte buffer
\par \tab CX\tab CD-ROM drive letter (A=0, B=1, ... Z=25)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 MSCDEX w
ill copy the name of the copyright file in the VTOC for that drive letter into the buffer space provided. The copyright filename is presently restricted in the High Sierra proposal to 8.3 but we require 38 bytes here for the possibility at a later date of
handling 31 character file names plus 6 bytes for a ';' and 5 digit version number and 1 byte for a NULL at the end. Carry will be set if the drive letter is not a CD-ROM drive and error_invalid_drive (15) will be returned in AX.
\par \pard \sl240
\par {\b\i - Get abstract file name
\par }________________
\par
\par \tab AX\tab 1503h
\par \tab ES:BX\tab Transfer address; pointer to a 38 byte buffer
\par \tab CX\tab CD-ROM drive letter (A=0, B=1, ... Z=25)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240
MSCDEX will copy the name of the abstract file in the VTOC for that drive letter into the buffer space provided. The abstract filename is presently restricted in the High Sierra proposal to 8.3 but we require 38 bytes here for the possibility at a later d
ate of handling 31 character file names plus 6 bytes for a ';' and 5 digit version number and 1 byte for a NULL at the end. Carry will be set if the drive letter is not a CD-ROM drive and error_invalid_drive (15) will be returned in AX.
\par
\par \pard \sl240
\par {\b\i - Get bibliographic documentation file name
\par }________________
\par
\par \tab AX\tab 1504h
\par \tab ES:BX\tab Transfer address; pointer to a 38 byte buffer
\par \tab CX\tab CD-ROM drive letter (A=0, B=1, ... Z=25)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 NOTE: This function is provided in advance of the ISO standard. For discs complying with the May 28th draft from the High Sierra Group, this function will return a null string as though the field is blank on the disc.
\par
\par MSCDEX will copy the name of the bibliographic documentation file in the VTOC for that drive letter into the buffer space provided. The
bibliographic documentation filename is presently restricted in the High Sierra proposal to 8.3 but we require 38 bytes here for the possibility at a later date of handling 31 character file names plus 6 bytes for a ';' and 5 digit version number and 1 b
yte for a NULL at the end. Carry will be set if the drive letter is not a CD-ROM drive and error_invalid_drive (15) will be returned in AX.
\par
\par \pard \sl240
\par {\b\i - Read VTOC
\par }________________
\par
\par \tab AX\tab 1505h
\par \tab ES:BX\tab Transfer address; pointer to a 2048 byte buffer
\par \tab CX\tab CD-ROM Drive letter
\par \tab DX\tab Sector index
\par ________________
\par
\par \pard \qj\li720\sl240
This function is provided to scan the Volume Descriptors on a disc. A sector index of 0 will read the first volume descriptor, 1 reads the second, etc. If there is no error, then AX will return 1 if the volume descriptor read was the standard volume descr
iptor, 0FFh if it was the volume descriptor terminator and there are no more volume descriptors to be read, and 0 for all other types.
\par
\par If there is an error in processing the request, the Carry Flag will be set and AL will contain the MS-DOS error code. These will be either error_invalid_drive (15) or error_not_ready (21).
\par \pard \sl240 {\i
\par }{\b\i - Turn debugging on
\par }________________
\par
\par \tab AX\tab 1506h
\par \tab BX\tab Debugging function to enable
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 This is used for development and is reserved. It will be non-functional in the production version of MSCDEX.
\par \pard \sl240
\par {\b\i - Turn debugging off
\par }________________
\par
\par \tab AX\tab 1507h
\par \tab BX\tab Debugging function to disable
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 This is used for development and is reserved. It will be non-functional in the production version of MSCDEX.
\par \pard \sl240 \page
\par {\b\i - Absolute Disk Read
\par }________________
\par
\par \tab AX\tab 1508h
\par \tab ES:BX\tab Disk Transfer Address; pointer to a buffer to copy data to
\par \tab CX\tab CD-ROM Drive letter (A=0, B=1, ... Z=25)
\par \tab DX\tab Number of sectors to read
\par \tab SI:DI\tab Starting sector
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 This function corresponds to INT 25h. It will be converted directly into a READ_LONG device driver request and sent to the correc
t device driver. There are no requirements for this call to pop flags as there are with INT 25h. SI holds the high word and DI the low word for the starting sector to begin reading from.
\par
\par If there is an error in processing the request, the Carry Flag will be set and AL will contain the MS-DOS error code. These will be either error_invalid_drive (15) or error_not_ready (21).
\par
\par \pard \sl240 {\b\i - Absolute Disk Write
\par }________________
\par
\par \tab AX\tab 1509h
\par \tab ES:BX\tab Disk Transfer Address; pointer to buffer to copy data from
\par \tab CX\tab CD-ROM Drive letter
\par \tab DX\tab Number of sectors to write
\par \tab SI:DI\tab Starting sector
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 This function corresponds to INT 26h. It is not supported at this time and is reserved. It is intended to be used by authoring systems.
\par
\par \pard \sl240 {\b\i - CD-ROM Drive Check
\par }________________
\par
\par \tab AX\tab 150Bh
\par \tab BX\tab Signature word
\par \tab CX\tab CD-ROM Drive letter (A=0, B=1,...Z=25)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240
This function returns whether or not a drive letter is a CD-ROM drive supported by MSCDEX. If the extensions are installed, BX will be set to ADADh. If the drive letter is supported by MSCDEX, then AX is set to a non-zero value. AX is set to zero if the d
rive is not supported. One must be sure to check the signature word to know that MSCDEX is installed and that AX has not been modified by another INT 2Fh handler.
\par \pard \sl240 \page
\par {\b\i - MSCDEX Version
\par }________________
\par
\par \tab AX\tab 150Ch
\par \tab BX\tab MSCDEX Version
\par ________________
\par {\i
\par }\pard \qj\li720\sl240
This function returns the version number of the CD-ROM Extensions installed on the system. BH contains the major version number and BL contains the minor version. Values returned are binary. For example, BX would contain 0x020a for version 2.10. This func
tion does not work on versions earlier than 2.00 so if BX is zero before and after this function is called, an earlier version of MSCDEX is installed.
\par \pard \sl240
\par {\b\i - Get CD-ROM Drive Letters
\par }________________
\par
\par \tab AX\tab 150Dh
\par \tab ES:BX\tab Transfer address; pointer to buffer to copy drive letter device list
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 The buffer must be large enough to hold a list of drive letters. The buffer size will be a multiple of the number of drives returned by the {\i Get Number of CD-ROM drive letters}
function. There are a maximum of 26 drive letters. Each drive letter entry is a single byte (0=A:, 1=B: .. 25=Z:) that exactly corresponds each respective entry returned by the command {\i Get CD-ROM drive device list.}
This command is included to allow applications to locate CD-ROM drives supported by MSCDEX. CD-ROM drive letters may sometimes be noncontiguous so this command is necessary.
\par
\par For example: Suppose there is an installed CD-ROM device driver FOO supporting 3 sub-units on a system with 2 floppy drives (A=0 and B=1), a hard disk (C=2) and a network drive (E=4). Note the network drive occupies one of the drive letters normally taken
by a CD-ROM drive. MSCDEX assigns that CD-ROM drive to the next available drive letter. Asking for the number of CD-ROM drive letters reports there
are 3 drive letters used starting at drive letter D=3. ES:BX must point to a buffer that is at least 3 bytes long and will be filled as follows:
\par
\par ES:BX\tab = Buffer
\par
\par Buffer\tab DB\tab 3\tab \tab \tab \tab ; drive letter for CD-ROM (D=3)
\par \tab DB\tab 5\tab \tab \tab \tab ; drive letter for CD-ROM (F=5)
\par \tab DB\tab 6\tab \tab \tab \tab ; drive letter for CD-ROM (G=6)
\par \page
\par \pard \sl240 {\b\i - Get/Set Volume Descriptor Preference
\par }________________
\par
\par \tab AX\tab 150Eh
\par \tab BX\tab 0 - Get Preference. 1 - Set Preference
\par \tab CX\tab CD-ROM Drive letter (A=0, B=1,...Z=25)
\par \tab DX\tab if BX = Get Preference
\par \tab \tab \tab DX = 0
\par \tab \tab \tab MSCDEX will return preference settings in DX
\par \tab \tab if BX = Set Preference
\par \tab \tab \tab DH = volume descriptor preference
\par \tab \tab \tab \tab 1 - PVD - Primary Volume Descriptor
\par \tab \tab \tab \tab 2 - SVD - Supplementary Volume Descriptor
\par \tab \tab \tab DL = Supplementary Volume Descriptor Preference
\par \tab \tab \tab \tab if DH = PVD
\par \tab \tab \tab \tab \tab DL = 0
\par \tab \tab \tab \tab if DH = SVD
\par \tab \tab \tab \tab \tab 1 - shift-Kanji (an unregistered ISO coded character set)
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 Normally, MSCDEX will scan for the PVD (Primary Volume Descriptor) when initializing a CD-ROM. This behavior can be altered for ea
ch individual drive to scan for a SVD (Supplementary Volume Descriptor) instead. A CD-ROM drive set to scan for an SVD will use the PVD if there is no SVD present. There can be more than one SVD on a CD-ROM but at present, MSCDEX will only recognize SVDs
for shift-Kanji CD-ROMs. Carry will be set, AX will be set to error_invalid_function (1) and DX will be set to 0 if the coded character set is not recognized.
\par
\par If BX contains Get_Preference, MSCDEX will report the present setting for that drive. If DX is still zero on return, that version of MSCDEX does not support this function or reading SVDs. Otherwise DX will contain the setting.
\par
\par If the drive letter is not a CD-ROM drive, carry will be set and error_invalid_drive (15) will be returned in AX. If BX is anything other than Get/Set_Preference, AX will be set to error_invalid_function (1) and carry will be set.
\par \page
\par \pard \sl240 {\b\i - Get Directory Entry
\par }________________
\par
\par \tab AX\tab 150Fh
\par \tab CL\tab CD-ROM Drive letter (A=0, B=1,...Z=25)
\par \tab CH\tab Copy flags (bit 0: 0 - direct copy, 1 - copied to structure)
\par \tab ES:BX\tab Pointer to buffer with null-terminated path name
\par \tab SI:DI\tab Pointer to buffer to copy directory record information
\par
\par \tab AX\tab 0 is returned if the disc is High Sierra, 1 is returned if the disc is ISO-9660
\par ________________
\par {\i
\par }\pard \qj\li720\sl240 The pathname expected is a null-terminated string e.g. char far *path = "\\\\a\\\\b\\\\c.txt"; (note: the "\\\\" characters map to a single '\\' character in C so this would be '\\a\\b\\
c.txt' if printed). The path must consist only of valid High Sierra or ISO-9660 filename characters and must not contain any wildcards nor may it include entries for '.' or '..'.
\par
\par The copy flags indicate how the data should be copied. If bit 0 (0x01) is 0, then the directory entry is copied as it appears on the disc. The directory record is a direct copy from the directory file and it is up to the application to choose what fields
to use. If bit 0 is 1, then the directory entry is copied into a structure that removes any differences between High Sierra and ISO-9660 directory entries and makes some fields more accessible or easily interpreted.
\par
\par If copying the directory entry as it appears on the disc, the buffer to copy the directory record should be at least 255 bytes long to include all system use information and if copying into the common structure at least 280 bytes long otherwise MSCDEX may
overrun the end of the buffer.
\par
\par Carry will be set and an error code returned if there were problems with the r
equest. The error codes will be error_invalid_drive (15) if the drive letter is incorrect, error_not_ready (21) if the disc didn't initialize correctly, error_file_not_found (2) if the file was not found and error_no_more_files (18) if the pattern fails t
o find a match or if mscdex failed to allocate buffers.
\par \page
\par The format of the directory record for High Sierra discs is:
\par
\par \pard \sl240 {\f2 \tab /* High Sierra directory entry structure */
\par typedef struct hsg_dir_entry
\par \{
\par uchar\tab \tab len_dr;\tab \tab /* length of this directory entry\tab \tab \tab */
\par uchar\tab \tab XAR_len;\tab /* XAR length in LBN's (logical blocks numbers)\tab */
\par ulong\tab \tab loc_extentI;\tab /* LBN of data Intel format\tab \tab \tab */
\par ulong\tab \tab loc_extentM;\tab /* LBN of data Molorola format\tab \tab \tab */
\par ulong\tab \tab data_lenI;\tab /* length of file Intel format\tab \tab \tab */
\par ulong\tab \tab data_lenM;\tab /* length of file Motorola format\tab \tab \tab */
\par uchar\tab \tab record_time[6];\tab /* date and time\tab \tab \tab \tab \tab */
\par uchar\tab \tab file_flags_hsg;\tab /* 8 flags\tab \tab \tab \tab \tab */
\par uchar\tab \tab reserved;\tab /* reserved field\tab \tab \tab \tab \tab */
\par uchar\tab \tab il_size;\tab \tab /* interleave size\tab \tab \tab \tab */
\par uchar\tab \tab il_skip;\tab \tab /* interleave skip factor\tab \tab \tab \tab */
\par ushort\tab \tab VSSNI;\tab \tab /* volume set sequence number Intel\tab \tab */
\par ushort\tab \tab VSSNM;\tab /* volume set sequence number Motorola\tab */
\par uchar\tab \tab len_fi;\tab \tab /* length of name\tab \tab \tab \tab */
\par uchar\tab \tab file_id[...];\tab /* variable length name upto 32 chars\tab \tab */
\par uchar\tab \tab padding;\tab /* optional padding if file_id is odd length\tab \tab */
\par uchar\tab \tab sys_data[...]\tab /* variable length system data\tab \tab \tab */
\par \} hsg_dir_entry;
\par
\par }\pard \qj\li720\sl240 The format of the directory record for ISO-9660 discs is:
\par
\par \pard \sl240 {\f2 \tab /* ISO-9660 directory entry structure */
\par typedef struct iso_dir_entry
\par \{
\par uchar\tab \tab len_dr;\tab \tab /* length of this directory entry\tab \tab \tab */
\par uchar\tab \tab XAR_len;\tab /* length of XAR in LBN's\tab \tab \tab */
\par ulong\tab \tab loc_extentI;\tab /* LBN of data Intel format\tab \tab \tab */
\par ulong\tab \tab loc_extentM;\tab /* LBN of data Molorola format\tab \tab \tab */
\par ulong\tab \tab data_lenI;\tab /* length of file Intel format\tab \tab \tab */
\par ulong\tab \tab data_lenM;\tab /* length of file Motorola format\tab \tab \tab */
\par uchar\tab \tab record_time[7];\tab /* date and time\tab \tab \tab \tab \tab */
\par uchar\tab \tab file_flags_iso;\tab /* 8 flags\tab \tab \tab \tab \tab */
\par uchar\tab \tab il_size;\tab \tab /* interleave size\tab \tab \tab \tab */
\par uchar\tab \tab il_skip;\tab \tab /* interleave skip factor\tab \tab \tab \tab */
\par ushort\tab \tab VSSNI;\tab \tab /* volume set sequence num Intel\tab \tab */
\par ushort\tab \tab VSSNM;\tab /* volume set sequence num Motorola\tab \tab */
\par uchar\tab \tab len_fi;\tab \tab /* length of name\tab \tab \tab \tab */
\par uchar\tab \tab file_id[...];\tab /* variable length name upto 32 chars\tab \tab */
\par uchar\tab \tab padding;\tab /* optional padding if file_id is odd length \tab */
\par uchar\tab \tab sys_data[...]\tab /* variable length system data\tab \tab \tab */
\par \} iso_dir_entry;
\par }\pard \li720\sl240 {\f2 \page }
\par \pard \qj\li720\sl240
Note that the difference between the two forms is the file flag byte moved to account for an additional byte of date and time used for a Greenwich mean time offset. Also, the C structs above are not syntactically correct as C does not allow variable lengt
h arrays as struct elements. They are meant to illustrate the differences between the directory entries. See the May 28th draft of the High Sierra proposal or ISO-9660 for a more complete explanation of the fields.
\par
\par If bit 0 is set to one in the Copy Flags, then the format of the directory entry structure that is returned is the following:
\par
\par \pard \sl240 {\f2 typedef struct dir_entry
\par \{
\par uchar\tab \tab XAR_len;\tab /* length of XAR in LBN's\tab \tab */
\par ulong\tab \tab loc_extent;\tab /* logical block number of file start\tab */
\par ushort\tab \tab lb_size;\tab \tab /* logical block size of disc\tab \tab */
\par ulong\tab \tab data_len;\tab /* length of file\tab \tab \tab \tab */
\par uchar\tab \tab record_time[7];\tab /* date and time\tab \tab \tab \tab */
\par uchar\tab \tab file_flags;\tab /* 8 flags\tab \tab \tab \tab */
\par uchar\tab \tab il_size;\tab \tab /* interleave size\tab \tab \tab */
\par uchar\tab \tab il_skip;\tab \tab /* interleave skip factor\tab \tab \tab */
\par ushort\tab \tab VSSN;\tab \tab /* volume set sequence number\tab \tab */
\par uchar\tab \tab len_fi;\tab \tab /* length of the filename\tab \tab \tab */
\par uchar\tab \tab file_id[38];\tab /* filename, null terminated\tab \tab */
\par ushort\tab \tab file_version;\tab /* version number of file\tab \tab \tab */
\par uchar\tab \tab len_su;\tab \tab /* length of valid system use bytes\tab */
\par uchar\tab \tab su_data[220]\tab /* up to 220 bytes of system use data\tab */
\par \} dir_entry;
\par }\pard \qj\li720\sl240
\par The location of the extent is reported in logical block numbers and the caller can use the logical block size on
the disc (logical block sizes of 512, 1024, and 2048 bytes per sector are valid for CD-ROM) to determine the exact sector and offset in that sector that the file extent begins in. If the logical block size is 2048 then logical block numbers are equivilen
t to logical sector numbers.
\par
\par The Greenwich mean time offset byte in this structure for May 28 High Sierra discs is always 0. The file_id field contains the file identifier less the semicolon and version number if present and is null terminated. The versi
on number is already parsed and is present in binary form in file_version. All bytes beyond what are indicated by len_fi and len_su in the file_id and su_data fields are undefined except the null byte immediately following the file identifier which is not
counted as part of the filename length.
\par \page
\par \pard \sl240 {\b\i - Send Device Driver Request
\par }________________
\par
\par \tab AX\tab 1510h
\par \tab CX\tab CD-ROM drive letter (A=0, B=1, ... Z=25)
\par \tab ES:BX\tab Address of CD-ROM device driver request header
\par ________________
\par {\i
\par }\pard \qj\li720\sl240
This function has been added to simplify communication with CD-ROM drivers and help prevent contention between applications that wish to communicate with the device driver. It is highly recommended that all applications communicate with device drivers thr
ough this function request. Applications using this function will not have to locate the device driver. The format of the request header is specified by the Microsoft MS-DOS CD-ROM Extensions Hardware-dependent Device Driver Specification. MSCDEX will sup
ply the sub-unit field.
\par }

  3 Responses to “Category : Recently Uploaded Files
Archive   : INFOPACK.ZIP
Filename : MCTRL.RTF

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/