;****************************************************************************
;                                                                           *
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY     *
; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE       *
; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR     *
; PURPOSE.                                                                  *
;                                                                           *
; Copyright (C) 1993-95  Microsoft Corporation.  All Rights Reserved.       *
;                                                                           *
;****************************************************************************

option expr32

IFNDEF	scsi_inc
scsi_inc	EQU		1

; Begin of file ..\ioh\scsi.h
_SCSI_H_		EQU		1t
	INCLUDE	basedef.inc

	INCLUDE	srb.inc

_SUBCHAN_REC		RECORD	LogicalUnitNumber@_SUBCHAN_REC:3,
			Reserved1@_SUBCHAN_REC:3,
			Msf@_SUBCHAN_REC:1,
			Reserved0@_SUBCHAN_REC:1

SUBCHAN_REC		TYPEDEF		_SUBCHAN_REC

_SUBCHAN_SUBQ_REC		RECORD	Reserved3@_SUBCHAN_SUBQ_REC:1,
			SubQ@_SUBCHAN_SUBQ_REC:1,
			Reserved2@_SUBCHAN_SUBQ_REC:6

SUBCHAN_SUBQ_REC		TYPEDEF		_SUBCHAN_SUBQ_REC

_MODE_SNS_DBD_REC		RECORD	LogicalUnitNumber@_MODE_SNS_DBD_REC:3,
			Reserved2@_MODE_SNS_DBD_REC:1,
			Dbd@_MODE_SNS_DBD_REC:1,
			Reserved1@_MODE_SNS_DBD_REC:3

MODE_SNS_DDB_REC		TYPEDEF		_MODE_SNS_DBD_REC

_MODE_SNS_PC_REC		RECORD	Pc@_MODE_SNS_PC_REC:2,
			PageCode@_MODE_SNS_PC_REC:6

MODE_SNS_PC_REC		TYPEDEF		_MODE_SNS_PC_REC

_MODE_SEL_PF_REC		RECORD	MSEL_LogicalUnitNumber@_MODE_SEL_PF_REC:3,
			MS_PF@_MODE_SEL_PF_REC:1,
			Reserved1@_MODE_SEL_PF_REC:4

MODE_SEL_PF_REC		TYPEDEF		_MODE_SEL_PF_REC

_CDB6GENERIC		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6GENERIC_0		RECORD	LogicalUnitNumber@_CDB6GENERIC:3,
			CommandUniqueBits@_CDB6GENERIC:4,
			Immediate@_CDB6GENERIC:1
@bit_0		rec@_CDB6GENERIC_0	<>
CommandUniqueBytes		UCHAR		3t DUP (?)
rec@_CDB6GENERIC_1		RECORD	VendorUnique@_CDB6GENERIC:2,
			Reserved@_CDB6GENERIC:4,
			Flag@_CDB6GENERIC:1,
			Link@_CDB6GENERIC:1
@bit_1		rec@_CDB6GENERIC_1	<>
_CDB6GENERIC		ENDS

@t_scsi2		TYPEDEF		PTR _CDB6GENERIC
_CDB6READWRITE		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6READWRITE_0		RECORD	LogicalUnitNumber@_CDB6READWRITE:3,
			LogicalBlockMsb1@_CDB6READWRITE:5
@bit_0		rec@_CDB6READWRITE_0	<>
LogicalBlockMsb0		UCHAR		?
LogicalBlockLsb		UCHAR		?
TransferBlocks		UCHAR		?
Control		UCHAR		?
_CDB6READWRITE		ENDS

@t_scsi3		TYPEDEF		PTR _CDB6READWRITE
_CDB6INQUIRY		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6INQUIRY_0		RECORD	LogicalUnitNumber@_CDB6INQUIRY:3,
			Reserved1@_CDB6INQUIRY:5
@bit_0		rec@_CDB6INQUIRY_0	<>
PageCode		UCHAR		?
IReserved		UCHAR		?
AllocationLength		UCHAR		?
Control		UCHAR		?
_CDB6INQUIRY		ENDS

@t_scsi4		TYPEDEF		PTR _CDB6INQUIRY
_CDB6FORMAT		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6FORMAT_0		RECORD	LogicalUnitNumber@_CDB6FORMAT:3,
			FormatControl@_CDB6FORMAT:5
@bit_0		rec@_CDB6FORMAT_0	<>
FReserved1		UCHAR		?
InterleaveMsb		UCHAR		?
InterleaveLsb		UCHAR		?
FReserved2		UCHAR		?
_CDB6FORMAT		ENDS

@t_scsi5		TYPEDEF		PTR _CDB6FORMAT
_CDB6SENDDIAG		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6SENDDIAG_0		RECORD	LogicalUnitNumber@_CDB6SENDDIAG:3,
			PF@_CDB6SENDDIAG:1,
			Reserved1@_CDB6SENDDIAG:1,
			SelfTest@_CDB6SENDDIAG:1,
			DevOfl@_CDB6SENDDIAG:1,
			UnitOfl@_CDB6SENDDIAG:1
@bit_0		rec@_CDB6SENDDIAG_0	<>
Reserved2		UCHAR		?
ParamListLenMsb		UCHAR		?
ParamListLenLsb		UCHAR		?
Control		UCHAR		?
_CDB6SENDDIAG		ENDS

@t_scsi6		TYPEDEF		PTR _CDB6SENDDIAG
_CDB6RECDIAG		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6RECDIAG_0		RECORD	LogicalUnitNumber@_CDB6RECDIAG:3,
			Reserved1@_CDB6RECDIAG:5
@bit_0		rec@_CDB6RECDIAG_0	<>
Reserved		UCHAR		?
AllocationLenMsb		UCHAR		?
AllocationLenLsb		UCHAR		?
Control		UCHAR		?
_CDB6RECDIAG		ENDS

@t_scsi7		TYPEDEF		PTR _CDB6RECDIAG
_CDB10		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB10_0		RECORD	LogicalUnitNumber@_CDB10:3,
			Reserved1@_CDB10:5
@bit_0		rec@_CDB10_0	<>
LogicalBlockByte0		UCHAR		?
LogicalBlockByte1		UCHAR		?
LogicalBlockByte2		UCHAR		?
LogicalBlockByte3		UCHAR		?
Reserved2		UCHAR		?
TransferBlocksMsb		UCHAR		?
TransferBlocksLsb		UCHAR		?
Control		UCHAR		?
_CDB10		ENDS

@t_scsi8		TYPEDEF		PTR _CDB10
_READ_CAPACITY		STRUCT 1t
OperationCode		UCHAR		?
rec@_READ_CAPACITY_0		RECORD	LogicalUnitNumber@_READ_CAPACITY:3,
			Reserved1@_READ_CAPACITY:4,
			RelAdr@_READ_CAPACITY:1
@bit_0		rec@_READ_CAPACITY_0	<>
LogicalBlockByte0		UCHAR		?
LogicalBlockByte1		UCHAR		?
LogicalBlockByte2		UCHAR		?
LogicalBlockByte3		UCHAR		?
Reserved2		UCHAR		?
Reserved3		UCHAR		?
rec@_READ_CAPACITY_1		RECORD	Reserved4@_READ_CAPACITY:7,
			PMI@_READ_CAPACITY:1
@bit_1		rec@_READ_CAPACITY_1	<>
Control		UCHAR		?
_READ_CAPACITY		ENDS

@t_scsi9		TYPEDEF		PTR _READ_CAPACITY
_CDB10READWRITE		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB10READWRITE_0		RECORD	LogicalUnitNumber@_CDB10READWRITE:3,
			DPO@_CDB10READWRITE:1,
			FUA@_CDB10READWRITE:1,
			Reserved1@_CDB10READWRITE:2,
			RelAdr@_CDB10READWRITE:1
@bit_0		rec@_CDB10READWRITE_0	<>
LogicalBlockByte0		UCHAR		?
LogicalBlockByte1		UCHAR		?
LogicalBlockByte2		UCHAR		?
LogicalBlockByte3		UCHAR		?
Reserved2		UCHAR		?
TransferBlocksMSB		UCHAR		?
TransferBlocksLSB		UCHAR		?
Control		UCHAR		?
_CDB10READWRITE		ENDS

@t_scsi10		TYPEDEF		PTR _CDB10READWRITE
_REQ_SENSE		STRUCT 1t
OperationCode		UCHAR		?
rec@_REQ_SENSE_0		RECORD	LogicalUnitNumber@_REQ_SENSE:3,
			Reserved1@_REQ_SENSE:5
@bit_0		rec@_REQ_SENSE_0	<>
Reserved2		UCHAR		?
Reserved3		UCHAR		?
TransferLength		UCHAR		?
Control		UCHAR		?
_REQ_SENSE		ENDS

@t_scsi11		TYPEDEF		PTR _REQ_SENSE
_PAUSE_RESUME		STRUCT 1t
OperationCode		UCHAR		?
rec@_PAUSE_RESUME_0		RECORD	LogicalUnitNumber@_PAUSE_RESUME:3,
			Reserved1@_PAUSE_RESUME:5
@bit_0		rec@_PAUSE_RESUME_0	<>
Reserved2		UCHAR		6t DUP (?)
Action		UCHAR		?
Control		UCHAR		?
_PAUSE_RESUME		ENDS

@t_scsi12		TYPEDEF		PTR _PAUSE_RESUME
_READ_TOC		STRUCT 1t
OperationCode		UCHAR		?
TOC_rec0		SUBCHAN_REC		<>
Reserved2		UCHAR		4t DUP (?)
StartingTrack		UCHAR		?
AllocationLength		UCHAR		2t DUP (?)
Control		UCHAR		?
_READ_TOC		ENDS

@t_scsi13		TYPEDEF		PTR _READ_TOC
_READ_CD_DA		STRUCT 1t
OperationCode		UCHAR		?
CD_DA_Lun		UCHAR		?
LogicalStartAddress		UCHAR		4t DUP (?)
CD_DA_TransferLength		UCHAR		4t DUP (?)
CD_DA_SubCode		UCHAR		?
CD_DA_Control		UCHAR		?
_READ_CD_DA		ENDS

@t_scsi14		TYPEDEF		PTR _READ_CD_DA
_PLAY_AUDIO_MSF		STRUCT 1t
OperationCode		UCHAR		?
rec@_PLAY_AUDIO_MSF_0		RECORD	LogicalUnitNumber@_PLAY_AUDIO_MSF:3,
			Reserved1@_PLAY_AUDIO_MSF:5
@bit_0		rec@_PLAY_AUDIO_MSF_0	<>
Reserved2		UCHAR		?
StartingM		UCHAR		?
StartingS		UCHAR		?
StartingF		UCHAR		?
EndingM		UCHAR		?
EndingS		UCHAR		?
EndingF		UCHAR		?
Control		UCHAR		?
_PLAY_AUDIO_MSF		ENDS

@t_scsi15		TYPEDEF		PTR _PLAY_AUDIO_MSF
_PLAY_AUDIO_LBA		STRUCT 1t
OperationCode		UCHAR		?
rec@_PLAY_AUDIO_LBA_0		RECORD	LogicalUnitNumber@_PLAY_AUDIO_LBA:3,
			Reserved1@_PLAY_AUDIO_LBA:5
@bit_0		rec@_PLAY_AUDIO_LBA_0	<>
LbaStart		UCHAR		4t DUP (?)
Extent		UCHAR		4t DUP (?)
LBA_Reserved2		UCHAR		?
Control		UCHAR		?
_PLAY_AUDIO_LBA		ENDS

@t_scsi16		TYPEDEF		PTR _PLAY_AUDIO_LBA
_PLAY_LBA10		STRUCT 1t
OperationCode		UCHAR		?
rec@_PLAY_LBA10_0		RECORD	LogicalUnitNumber@_PLAY_LBA10:3,
			Reserved1@_PLAY_LBA10:5
@bit_0		rec@_PLAY_LBA10_0	<>
Lba10_Start		UCHAR		4t DUP (?)
Lba10_Reserved2		UCHAR		?
Lba10_Extent		UCHAR		2t DUP (?)
Control		UCHAR		?
_PLAY_LBA10		ENDS

@t_scsi17		TYPEDEF		PTR _PLAY_LBA10
_SUBCHANNEL		STRUCT 1t
OperationCode		UCHAR		?
subq_rec0		SUBCHAN_REC		<>
subq_rec1		SUBCHAN_SUBQ_REC		<>
Format		UCHAR		?
SUB_Reserved4		UCHAR		2t DUP (?)
SUB_TrackNumber		UCHAR		?
AllocationLength		UCHAR		2t DUP (?)
Control		UCHAR		?
_SUBCHANNEL		ENDS

@t_scsi18		TYPEDEF		PTR _SUBCHANNEL
_MODE_SENSE		STRUCT 1t
OperationCode		UCHAR		?
md_sns_rec0		MODE_SNS_DDB_REC		<>
md_sns_rec1		MODE_SNS_PC_REC		<>
MS_Reserved3		UCHAR		?
MS_AllocationLength		UCHAR		?
Control		UCHAR		?
_MODE_SENSE		ENDS

@t_scsi19		TYPEDEF		PTR _MODE_SENSE
_MODE_SELECT		STRUCT 1t
OperationCode		UCHAR		?
md_sel_rec0		MODE_SEL_PF_REC		<>
MSEL_Reserved2		UCHAR		2t DUP (?)
ParameterListLength		UCHAR		?
Control		UCHAR		?
_MODE_SELECT		ENDS

@t_scsi20		TYPEDEF		PTR _MODE_SELECT
_LOCATE		STRUCT 1t
OperationCode		UCHAR		?
rec@_LOCATE_0		RECORD	Reserved2@_LOCATE:6,
			CPBit@_LOCATE:1,
			Reserved1@_LOCATE:1
@bit_0		rec@_LOCATE_0	<>
Reserved3		UCHAR		?
LogicalBlockAddress		UCHAR		4t DUP (?)
Reserved4		UCHAR		?
Partition		UCHAR		?
Control		UCHAR		?
_LOCATE		ENDS

@t_scsi21		TYPEDEF		PTR _LOCATE
_LOGSENSE		STRUCT 1t
OperationCode		UCHAR		?
Unknown1		UCHAR		?
rec@_LOGSENSE_0		RECORD	PCBit@_LOGSENSE:2,
			PageCode@_LOGSENSE:6
@bit_0		rec@_LOGSENSE_0	<>
Unknown2		UCHAR		?
Unknown3		UCHAR		?
ParameterPointer		UCHAR		2t DUP (?)
AllocationLength		UCHAR		2t DUP (?)
Control		UCHAR		?
_LOGSENSE		ENDS

@t_scsi22		TYPEDEF		PTR _LOGSENSE
_PRINT		STRUCT 1t
OperationCode		UCHAR		?
rec@_PRINT_0		RECORD	LogicalUnitNumber@_PRINT:3,
			Reserved@_PRINT:5
@bit_0		rec@_PRINT_0	<>
TransferLength		UCHAR		3t DUP (?)
Control		UCHAR		?
_PRINT		ENDS

@t_scsi23		TYPEDEF		PTR _PRINT
_SEEK		STRUCT 1t
OperationCode		UCHAR		?
rec@_SEEK_0		RECORD	LogicalUnitNumber@_SEEK:3,
			Reserved1@_SEEK:5
@bit_0		rec@_SEEK_0	<>
SeekLBA		UCHAR		4t DUP (?)
Reserved2		UCHAR		3t DUP (?)
Control		UCHAR		?
_SEEK		ENDS

@t_scsi24		TYPEDEF		PTR _SEEK
_START_STOP		STRUCT 1t
OperationCode		UCHAR		?
rec@_START_STOP_0		RECORD	LogicalUnitNumber@_START_STOP:3,
			Reserved1@_START_STOP:4,
			Immediate@_START_STOP:1
@bit_0		rec@_START_STOP_0	<>
Reserved2		UCHAR		2t DUP (?)
rec@_START_STOP_1		RECORD	Reserved3@_START_STOP:6,
			LoadEject@_START_STOP:1,
			Start@_START_STOP:1
@bit_1		rec@_START_STOP_1	<>
Control		UCHAR		?
_START_STOP		ENDS

@t_scsi25		TYPEDEF		PTR _START_STOP
_MEDIA_REMOVAL		STRUCT 1t
OperationCode		UCHAR		?
rec@_MEDIA_REMOVAL_0		RECORD	LogicalUnitNumber@_MEDIA_REMOVAL:3,
			Reserved1@_MEDIA_REMOVAL:5
@bit_0		rec@_MEDIA_REMOVAL_0	<>
Reserved2		UCHAR		2t DUP (?)
Prevent		UCHAR		?
Control		UCHAR		?
_MEDIA_REMOVAL		ENDS

@t_scsi26		TYPEDEF		PTR _MEDIA_REMOVAL
_PARTITION		STRUCT 1t
OperationCode		UCHAR		?
rec@_PARTITION_0		RECORD	PartitionSelect@_PARTITION:6,
			Sel@_PARTITION:1,
			Immediate@_PARTITION:1
@bit_0		rec@_PARTITION_0	<>
Reserved1		UCHAR		3t DUP (?)
Control		UCHAR		?
_PARTITION		ENDS

@t_scsi27		TYPEDEF		PTR _PARTITION
_WRITE_TAPE_MARKS		STRUCT 1t
OperationCode		UCHAR		?
rec@_WRITE_TAPE_MARKS_0		RECORD	LogicalUnitNumber@_WRITE_TAPE_MARKS:3,
			Reserved@_WRITE_TAPE_MARKS:3,
			WriteSetMarks@_WRITE_TAPE_MARKS:1,
			Immediate@_WRITE_TAPE_MARKS:1
@bit_0		rec@_WRITE_TAPE_MARKS_0	<>
TransferLength		UCHAR		3t DUP (?)
Control		UCHAR		?
_WRITE_TAPE_MARKS		ENDS

@t_scsi28		TYPEDEF		PTR _WRITE_TAPE_MARKS
@tag_scsi6		RECORD	VendorUnique@@tag_scsi6:2,
			Reserved@@tag_scsi6:4,
			Flag@@tag_scsi6:1,
			Link@@tag_scsi6:1

@tag_scsi5		UNION
value		UCHAR		?
Fields		@tag_scsi6		<>
@tag_scsi5		ENDS

_SPACE_TAPE_MARKS		STRUCT 1t
OperationCode		UCHAR		?
rec@_SPACE_TAPE_MARKS_0		RECORD	Reserved@_SPACE_TAPE_MARKS:5,
			Control@_SPACE_TAPE_MARKS:3
@bit_0		rec@_SPACE_TAPE_MARKS_0	<>
NumMarksMSB		UCHAR		?
NumMarks		UCHAR		?
NumMarksLSB		UCHAR		?
Byte6		@tag_scsi5		<>
_SPACE_TAPE_MARKS		ENDS

@t_scsi29		TYPEDEF		PTR _SPACE_TAPE_MARKS
_READ_POSITION		STRUCT 1t
Operation		UCHAR		?
rec@_READ_POSITION_0		RECORD	Lun@_READ_POSITION:3,
			Reserved1@_READ_POSITION:4,
			BlockType@_READ_POSITION:1
@bit_0		rec@_READ_POSITION_0	<>
Reserved2		UCHAR		7t DUP (?)
Control		UCHAR		?
_READ_POSITION		ENDS

@t_scsi30		TYPEDEF		PTR _READ_POSITION
_CDB6READWRITETAPE		STRUCT 1t
OperationCode		UCHAR		?
rec@_CDB6READWRITETAPE_0		RECORD	Reserved@_CDB6READWRITETAPE:3,
			VendorSpecific@_CDB6READWRITETAPE:5
@bit_0		rec@_CDB6READWRITETAPE_0	<>
TransferLenMSB		UCHAR		?
TransferLen		UCHAR		?
TransferLenLSB		UCHAR		?
rec@_CDB6READWRITETAPE_1		RECORD	VendorUnique@_CDB6READWRITETAPE:2,
			Reserved1@_CDB6READWRITETAPE:4,
			Flag@_CDB6READWRITETAPE:1,
			Link@_CDB6READWRITETAPE:1
@bit_1		rec@_CDB6READWRITETAPE_1	<>
_CDB6READWRITETAPE		ENDS

@t_scsi31		TYPEDEF		PTR _CDB6READWRITETAPE
_CDB		UNION
CDB6GENERIC		_CDB6GENERIC		<>
PCDB6GENERIC		@t_scsi2		?
CDB6READWRITE		_CDB6READWRITE		<>
PCDB6READWRITE		@t_scsi3		?
CDB6INQUIRY		_CDB6INQUIRY		<>
PCDB6INQUIRY		@t_scsi4		?
CDB6FORMAT		_CDB6FORMAT		<>
PCDB6FORMAT		@t_scsi5		?
CDB6SENDDIAG		_CDB6SENDDIAG		<>
PCDB6SENDDIAG		@t_scsi6		?
CDB6RECDIAG		_CDB6RECDIAG		<>
PCDB6RECDIAG		@t_scsi7		?
CDB10		_CDB10		<>
PCDB10		@t_scsi8		?
CDB10READ_CAPACITY		_READ_CAPACITY		<>
PCDB10READ_CAPACITY		@t_scsi9		?
CDB10READWRITE		_CDB10READWRITE		<>
PCDB10READWRITE		@t_scsi10		?
REQ_SENSE		_REQ_SENSE		<>
PREQ_SENSE		@t_scsi11		?
PAUSE_RESUME		_PAUSE_RESUME		<>
PPAUSE_RESUME		@t_scsi12		?
READ_TOC		_READ_TOC		<>
PREAD_TOC		@t_scsi13		?
READ_CD_DA		_READ_CD_DA		<>
PREAD_CD_DA		@t_scsi14		?
PLAY_AUDIO_MSF		_PLAY_AUDIO_MSF		<>
PPLAY_AUDIO_MSF		@t_scsi15		?
PLAY_AUDIO_LBA		_PLAY_AUDIO_LBA		<>
PPLAY_AUDIO_LBA		@t_scsi16		?
PLAY_LBA10		_PLAY_LBA10		<>
PPLAY_LBA10		@t_scsi17		?
SUBCHANNEL		_SUBCHANNEL		<>
PSUBCHANNEL		@t_scsi18		?
MODE_SENSE		_MODE_SENSE		<>
PMODE_SENSE		@t_scsi19		?
MODE_SELECT		_MODE_SELECT		<>
PMODE_SELECT		@t_scsi20		?
LOCATE		_LOCATE		<>
PLOCATE		@t_scsi21		?
LOGSENSE		_LOGSENSE		<>
PLOGSENSE		@t_scsi22		?
PRINT		_PRINT		<>
PPRINT		@t_scsi23		?
SEEK		_SEEK		<>
PSEEK		@t_scsi24		?
START_STOP		_START_STOP		<>
PSTART_STOP		@t_scsi25		?
MEDIA_REMOVAL		_MEDIA_REMOVAL		<>
PMEDIA_REMOVAL		@t_scsi26		?
PARTITION		_PARTITION		<>
PPARTITION		@t_scsi27		?
WRITE_TAPE_MARKS		_WRITE_TAPE_MARKS		<>
PWRITE_TAPE_MARKS		@t_scsi28		?
SPACE_TAPE_MARKS		_SPACE_TAPE_MARKS		<>
PSPACE_TAPE_MARKS		@t_scsi29		?
READ_POSITION		_READ_POSITION		<>
PREAD_POSITION		@t_scsi30		?
CDB6READWRITETAPE		_CDB6READWRITETAPE		<>
PCDB6READWRITETAPE		@t_scsi31		?
_CDB		ENDS

CDB_6		TYPEDEF		_CDB

PCDB		TYPEDEF		PTR _CDB

CDB6GENERIC_LENGTH		EQU		6t
CDB10GENERIC_LENGTH		EQU		10t
CDB_6_byte		EQU		6t
CDB_10_byte		EQU		10t
SETBITON		EQU		1t
SETBITOFF		EQU		0t
MODE_PAGE_ERROR_RECOVERY		EQU		000000001h
MODE_PAGE_DISCONNECT		EQU		000000002h
MODE_PAGE_FORMAT_DEVICE		EQU		000000003h
MODE_PAGE_RIGID_GEOMETRY		EQU		000000004h
MODE_PAGE_FLEXIBILE		EQU		000000005h
MODE_PAGE_VERIFY_ERROR		EQU		000000007h
MODE_PAGE_CACHING		EQU		000000008h
MODE_PAGE_PERIPHERAL		EQU		000000009h
MODE_PAGE_CONTROL		EQU		00000000ah
MODE_PAGE_MEDIUM_TYPES		EQU		00000000bh
MODE_PAGE_NOTCH_PARTITION		EQU		00000000ch
MODE_SENSE_RETURN_ALL		EQU		00000003fh
MODE_SENSE_CURRENT_VALUES		EQU		000000000h
MODE_SENSE_CHANGEABLE_VALUES		EQU		000000040h
MODE_SENSE_DEFAULT_VAULES		EQU		000000080h
MODE_SENSE_SAVED_VALUES		EQU		0000000c0h
MODE_PAGE_DEVICE_CONFIG		EQU		000000010h
MODE_PAGE_MEDIUM_PARTITION		EQU		000000011h
SCSIOP_TEST_UNIT_READY		EQU		000000000h
SCSIOP_REZERO_UNIT		EQU		000000001h
SCSIOP_REWIND		EQU		000000001h
SCSIOP_REQUEST_BLOCK_ADDR		EQU		000000002h
SCSIOP_REQUEST_SENSE		EQU		000000003h
SCSIOP_FORMAT_UNIT		EQU		000000004h
SCSIOP_READ_BLOCK_LIMITS		EQU		000000005h
SCSIOP_REASSIGN_BLOCKS		EQU		000000007h
SCSIOP_READ6		EQU		000000008h
SCSIOP_RECEIVE		EQU		000000008h
SCSIOP_WRITE6		EQU		00000000ah
SCSIOP_PRINT		EQU		00000000ah
SCSIOP_SEND		EQU		00000000ah
SCSIOP_SEEK6		EQU		00000000bh
SCSIOP_TRACK_SELECT		EQU		00000000bh
SCSIOP_SLEW_PRINT		EQU		00000000bh
SCSIOP_SEEK_BLOCK		EQU		00000000ch
SCSIOP_PARTITION		EQU		00000000dh
SCSIOP_READ_REVERSE		EQU		00000000fh
SCSIOP_WRITE_FILEMARKS		EQU		000000010h
SCSIOP_FLUSH_BUFFER		EQU		000000010h
SCSIOP_SPACE		EQU		000000011h
SCSIOP_INQUIRY		EQU		000000012h
SCSIOP_VERIFY6		EQU		000000013h
SCSIOP_RECOVER_BUF_DATA		EQU		000000014h
SCSIOP_MODE_SELECT		EQU		000000015h
SCSIOP_RESERVE_UNIT		EQU		000000016h
SCSIOP_RELEASE_UNIT		EQU		000000017h
SCSIOP_COPY		EQU		000000018h
SCSIOP_ERASE		EQU		000000019h
SCSIOP_MODE_SENSE		EQU		00000001ah
SCSIOP_START_STOP_UNIT		EQU		00000001bh
SCSIOP_STOP_PRINT		EQU		00000001bh
SCSIOP_LOAD_UNLOAD		EQU		00000001bh
SCSIOP_RECEIVE_DIAGNOSTIC		EQU		00000001ch
SCSIOP_SEND_DIAGNOSTIC		EQU		00000001dh
SCSIOP_MEDIUM_REMOVAL		EQU		00000001eh
SCSIOP_READ_CAPACITY		EQU		000000025h
SCSIOP_READ		EQU		000000028h
SCSIOP_WRITE		EQU		00000002ah
SCSIOP_SEEK		EQU		00000002bh
SCSIOP_LOCATE		EQU		00000002bh
SCSIOP_WRITE_VERIFY		EQU		00000002eh
SCSIOP_VERIFY		EQU		00000002fh
SCSIOP_SEARCH_DATA_HIGH		EQU		000000030h
SCSIOP_SEARCH_DATA_EQUAL		EQU		000000031h
SCSIOP_SEARCH_DATA_LOW		EQU		000000032h
SCSIOP_SET_LIMITS		EQU		000000033h
SCSIOP_READ_POSITION		EQU		000000034h
SCSIOP_COMPARE		EQU		000000039h
SCSIOP_COPY_COMPARE		EQU		00000003ah
SCSIOP_WRITE_DATA_BUFF		EQU		00000003bh
SCSIOP_READ_DATA_BUFF		EQU		00000003ch
SCSIOP_READ_LONG		EQU		00000003eh
SCSIOP_CHANGE_DEFINITION		EQU		000000040h
SCSIOP_READ_SUB_CHANNEL		EQU		000000042h
SCSIOP_READ_TOC		EQU		000000043h
SCSIOP_READ_HEADER		EQU		000000044h
SCSIOP_PLAY_AUDIO_10		EQU		000000045h
SCSIOP_PLAY_AUDIO_MSF		EQU		000000047h
SCSIOP_PLAY_TRACK_INDEX		EQU		000000048h
SCSIOP_PLAY_TRACK_RELATIVE		EQU		000000049h
SCSIOP_PAUSE_RESUME		EQU		00000004bh
SCSIOP_LOG_SELECT		EQU		00000004ch
SCSIOP_LOG_SENSE		EQU		00000004dh
SCSIOP_PLAY_AUDIO		EQU		0000000a5h
SCSIOP_READ_CDDA		EQU		0000000d8h
CDB_RETURN_ON_COMPLETION		EQU		0t
CDB_RETURN_IMMEDIATE		EQU		1t
CDB_FORCE_MEDIA_ACCESS		EQU		000000008h
SCSIOP_DENON_EJECT_DISC		EQU		0000000e6h
SCSIOP_DENON_STOP_AUDIO		EQU		0000000e7h
SCSIOP_DENON_PLAY_AUDIO		EQU		0000000e8h
SCSIOP_DENON_READ_TOC		EQU		0000000e9h
SCSIOP_DENON_READ_SUBCODE		EQU		0000000ebh
SCSIMESS_ABORT		EQU		000000006h
SCSIMESS_ABORT_WITH_TAG		EQU		00000000dh
SCSIMESS_BUS_DEVICE_RESET		EQU		00000000ch
SCSIMESS_CLEAR_QUEUE		EQU		00000000eh
SCSIMESS_COMMAND_COMPLETE		EQU		000000000h
SCSIMESS_DISCONNECT		EQU		000000004h
SCSIMESS_EXTENDED_MESSAGE		EQU		000000001h
SCSIMESS_IDENTIFY		EQU		000000080h
SCSIMESS_IDENTIFY_WITH_DISCON		EQU		0000000c0h
SCSIMESS_IGNORE_WIDE_RESIDUE		EQU		000000023h
SCSIMESS_INITIATE_RECOVERY		EQU		00000000fh
SCSIMESS_INIT_DETECTED_ERROR		EQU		000000005h
SCSIMESS_LINK_CMD_COMP		EQU		00000000ah
SCSIMESS_LINK_CMD_COMP_W_FLAG		EQU		00000000bh
SCSIMESS_MESS_PARITY_ERROR		EQU		000000009h
SCSIMESS_MESSAGE_REJECT		EQU		000000007h
SCSIMESS_NO_OPERATION		EQU		000000008h
SCSIMESS_HEAD_OF_QUEUE_TAG		EQU		000000021h
SCSIMESS_ORDERED_QUEUE_TAG		EQU		000000022h
SCSIMESS_SIMPLE_QUEUE_TAG		EQU		000000020h
SCSIMESS_RELEASE_RECOVERY		EQU		000000010h
SCSIMESS_RESTORE_POINTERS		EQU		000000003h
SCSIMESS_SAVE_DATA_POINTER		EQU		000000002h
SCSIMESS_TERMINATE_IO_PROCESS		EQU		000000011h
SCSIMESS_MODIFY_DATA_POINTER		EQU		000000000h
SCSIMESS_SYNCHRONOUS_DATA_REQ		EQU		000000001h
SCSIMESS_WIDE_DATA_REQUEST		EQU		000000003h
SCSIMESS_MODIFY_DATA_LENGTH		EQU		5t
SCSIMESS_SYNCH_DATA_LENGTH		EQU		3t
SCSIMESS_WIDE_DATA_LENGTH		EQU		2t
@tag_scsi7		STRUCT 1t
Modifier		UCHAR		4t DUP (?)
@tag_scsi7		ENDS

@tag_scsi8		STRUCT 1t
TransferPeriod		UCHAR		?
ReqAckOffset		UCHAR		?
@tag_scsi8		ENDS

@tag_scsi9		STRUCT 1t
_Width		UCHAR		?
@tag_scsi9		ENDS

_EXTENDED_ARGUMENTS		UNION
Modify		@tag_scsi7		<>
Synchronous		@tag_scsi8		<>
Wide		@tag_scsi9		<>
_EXTENDED_ARGUMENTS		ENDS

_SCSI_EXTENDED_MESSAGE		STRUCT 1t
InitialMessageCode		UCHAR		?
MessageLength		UCHAR		?
MessageType		UCHAR		?
ExtendedArguments		_EXTENDED_ARGUMENTS		<>
_SCSI_EXTENDED_MESSAGE		ENDS

SCSI_EXTENDED_MESSAGE		TYPEDEF		_SCSI_EXTENDED_MESSAGE

PSCSI_EXTENDED_MESSAGE		TYPEDEF		PTR _SCSI_EXTENDED_MESSAGE

SCSISTAT_GOOD		EQU		000000000h
SCSISTAT_CHECK_CONDITION		EQU		000000002h
SCSISTAT_CONDITION_MET		EQU		000000004h
SCSISTAT_BUSY		EQU		000000008h
SCSISTAT_INTERMEDIATE		EQU		000000010h
SCSISTAT_INTERMEDIATE_COND_MET		EQU		000000014h
SCSISTAT_RESERVATION_CONFLICT		EQU		000000018h
SCSISTAT_COMMAND_TERMINATED		EQU		000000022h
SCSISTAT_QUEUE_FULL		EQU		000000028h
CDB_INQUIRY_EVPD		EQU		000000001h
LUN0_FORMAT_SAVING_DEFECT_LIST		EQU		0t
USE_DEFAULTMSB		EQU		0t
USE_DEFAULTLSB		EQU		0t
START_UNIT_CODE		EQU		000000001h
STOP_UNIT_CODE		EQU		000000000h
INQUIRYDATABUFFERSIZE		EQU		36t
_INQUIRYDATA		STRUCT 1t
DeviceType		UCHAR		?
DeviceTypeModifier		UCHAR		?
Versions		UCHAR		?
ResponseDataFormat		UCHAR		?
AdditionalLength		UCHAR		?
Reserved		UCHAR		2t DUP (?)
rec@_INQUIRYDATA_0		RECORD	RelativeAddressing@_INQUIRYDATA:1,
			Wide32Bit@_INQUIRYDATA:1,
			Wide16Bit@_INQUIRYDATA:1,
			Synchronous@_INQUIRYDATA:1,
			LinkedCommands@_INQUIRYDATA:1,
			Reserved2@_INQUIRYDATA:1,
			CommandQueue@_INQUIRYDATA:1,
			SoftReset@_INQUIRYDATA:1
@bit_0		rec@_INQUIRYDATA_0	<>
VendorId		UCHAR		8t DUP (?)
ProductId		UCHAR		16t DUP (?)
ProductRevisionLevel		UCHAR		4t DUP (?)
VendorSpecific		UCHAR		20t DUP (?)
Reserved3		UCHAR		40t DUP (?)
_INQUIRYDATA		ENDS

INQUIRYDATA		TYPEDEF		_INQUIRYDATA

PINQUIRYDATA		TYPEDEF		PTR _INQUIRYDATA

_READCAPACITYDATA		STRUCT 1t
BlockCountByte0		UCHAR		?
BlockCountByte1		UCHAR		?
BlockCountByte2		UCHAR		?
BlockCountByte3		UCHAR		?
BlockLengthByte0		UCHAR		?
BlockLengthByte1		UCHAR		?
BlockLengthByte2		UCHAR		?
BlockLengthByte3		UCHAR		?
_READCAPACITYDATA		ENDS

READCAPACITYDATA		TYPEDEF		_READCAPACITYDATA

PREADCAPACITYDATA		TYPEDEF		PTR _READCAPACITYDATA

_DIAGPAGE4		STRUCT 1t
rec@_DIAGPAGE4_0		RECORD	PS@_DIAGPAGE4:1,
			Reserved1@_DIAGPAGE4:1,
			PageCode@_DIAGPAGE4:6
@bit_0		rec@_DIAGPAGE4_0	<>
NumCylindersMSB		UCHAR		?
NumCylindersLSB		UCHAR		?
NumHeads		UCHAR		?
StartingPreCompMSB		UCHAR		?
StartingPreCompLSB		UCHAR		?
StartingCylRedWrCurrentMSB		UCHAR		?
StartingCylRedWrCurrentLSB		UCHAR		?
StepRateMSB		UCHAR		?
StepRateLSB		UCHAR		?
LandingZoneMSB		UCHAR		?
LandingZoneLSB		UCHAR		?
rec@_DIAGPAGE4_1		RECORD	Reserved2@_DIAGPAGE4:6,
			RPL@_DIAGPAGE4:2
@bit_1		rec@_DIAGPAGE4_1	<>
RotationalOffset		UCHAR		?
Reserved		UCHAR		?
RotationRateMSB		UCHAR		?
RotationRateLSB		UCHAR		?
Reserved3		UCHAR		?
Reserved4		UCHAR		?
_DIAGPAGE4		ENDS

DIAGPAGE4		TYPEDEF		_DIAGPAGE4

PDIAGPAGE4		TYPEDEF		PTR _DIAGPAGE4

MAXIMUM_NUMBER_LUNS		EQU		8t
DIRECT_ACCESS_DEVICE		EQU		000000000h
SEQUENTIAL_ACCESS_DEVICE		EQU		000000001h
PRINTER_DEVICE		EQU		000000002h
PROCESSOR_DEVICE		EQU		000000003h
WRITE_ONCE_READ_MULTIPLE_DEVICE		EQU		000000004h
READ_ONLY_DIRECT_ACCESS_DEVICE		EQU		000000005h
SCANNER_DEVICE		EQU		000000006h
LOGICAL_UNIT_NOT_PRESENT_DEVICE		EQU		00000007fh
REMOVABLE_MASK		EQU		000000080h
NOT_REMOVABLE		EQU		000000000h
REMOVABLE		EQU		000000080h
_SENSE_DATA		STRUCT 1t
ErrorCode		UCHAR		?
SegmentNumber		UCHAR		?
rec@_SENSE_DATA_0		RECORD	FileMark@_SENSE_DATA:1,
			EndOfMedia@_SENSE_DATA:1,
			IncorrectLength@_SENSE_DATA:1,
			Reserved@_SENSE_DATA:1,
			SenseKey@_SENSE_DATA:4
@bit_0		rec@_SENSE_DATA_0	<>
Information		UCHAR		4t DUP (?)
AdditionalSenseLength		UCHAR		?
CommandSpecificInformation		UCHAR		4t DUP (?)
AdditionalSenseCode		UCHAR		?
AdditionalSenseCodeQualifier		UCHAR		?
FieldReplaceableUnitCode		UCHAR		?
SenseKeySpecific		UCHAR		3t DUP (?)
_SENSE_DATA		ENDS

SENSE_DATA		TYPEDEF		_SENSE_DATA

PSENSE_DATA		TYPEDEF		PTR _SENSE_DATA

SENSE_BUFFER_SIZE		EQU		18t
SCSI_SENSE_NO_SENSE		EQU		000000000h
SCSI_SENSE_RECOVERED_ERROR		EQU		000000001h
SCSI_SENSE_NOT_READY		EQU		000000002h
SCSI_SENSE_MEDIUM_ERROR		EQU		000000003h
SCSI_SENSE_HARDWARE_ERROR		EQU		000000004h
SCSI_SENSE_ILLEGAL_REQUEST		EQU		000000005h
SCSI_SENSE_UNIT_ATTENTION		EQU		000000006h
SCSI_SENSE_DATA_PROTECT		EQU		000000007h
SCSI_SENSE_BLANK_CHECK		EQU		000000008h
SCSI_SENSE_UNIQUE		EQU		000000009h
SCSI_SENSE_COPY_ABORTED		EQU		00000000ah
SCSI_SENSE_ABORTED_COMMAND		EQU		00000000bh
SCSI_SENSE_EQUAL		EQU		00000000ch
SCSI_SENSE_VOL_OVERFLOW		EQU		00000000dh
SCSI_SENSE_MISCOMPARE		EQU		00000000eh
SCSI_SENSE_RESERVED		EQU		00000000fh
SCSI_ILLEGAL_LENGTH		EQU		000000020h
SCSI_EOM		EQU		000000040h
SCSI_FILE_MARK		EQU		000000080h
SCSI_ADSENSE_NO_SENSE		EQU		000000000h
SCSI_ADSENSE_MAN_INTERV		EQU		000000003h
SCSI_ADSENSE_LUN_NOT_READY		EQU		000000004h
SCSI_ADSENSE_ILLEGAL_COMMAND		EQU		000000020h
SCSI_ADSENSE_ILLEGAL_BLOCK		EQU		000000021h
SCSI_ADSENSE_INVALID_LUN		EQU		000000025h
SCSI_ADSENSE_SELECT_TIMEOUT		EQU		000000045h
SCSI_ADSENSE_MUSIC_AREA		EQU		0000000a0h
SCSI_ADSENSE_DATA_AREA		EQU		0000000a1h
SCSI_ADSENSE_VOLUME_OVERFLOW		EQU		0000000a7h
SCSI_ADSENSE_NO_MEDIA_IN_DEVICE		EQU		00000003ah
SCSI_ADWRITE_PROTECT		EQU		000000027h
SCSI_ADSENSE_MEDIUM_CHANGED		EQU		000000028h
SCSI_ADSENSE_BUS_RESET		EQU		000000029h
SCSI_ADSENSE_TRACK_ERROR		EQU		000000014h
SCSI_ADSENSE_SEEK_ERROR		EQU		000000015h
SCSI_ADSENSE_REC_DATA_NOECC		EQU		000000017h
SCSI_ADSENSE_REC_DATA_ECC		EQU		000000018h
SCSI_ADSENSE_ILLEGAL_MODE		EQU		000000064h
SCSI_ADSENSE_BAD_CDB		EQU		000000024h
SCSI_ADSENSE_BAD_PARM_LIST		EQU		000000026h
SCSI_ADSENSE_CANNOT_READ_MEDIUM		EQU		000000030h
SCSI_SENSEQ_FORMAT_IN_PROGRESS		EQU		000000004h
SCSI_SENSEQ_INIT_COMMAND_REQUIR		EQU		000000002h
SCSI_SENSEQ_MANUAL_INTERVENTION		EQU		000000003h
SCSI_SENSEQ_BECOMING_READY		EQU		000000001h
SCSI_SENSEQ_INCOMP_FORMAT		EQU		000000002h
FILE_DEVICE_SCSI		EQU		00000001bh
IOCTL_SCSI_EXECUTE_IN		EQU		0001b0011h
IOCTL_SCSI_EXECUTE_OUT		EQU		0001b0012h
IOCTL_SCSI_EXECUTE_NONE		EQU		0001b0013h
_READ_CAPACITY_DATA		STRUCT 1t
LogicalBlockAddress		ULONG		?
BytesPerBlock		ULONG		?
_READ_CAPACITY_DATA		ENDS

READ_CAPACITY_DATA		TYPEDEF		_READ_CAPACITY_DATA

PREAD_CAPACITY_DATA		TYPEDEF		PTR _READ_CAPACITY_DATA

_READ_BLOCK_LIMITS		STRUCT 1t
Reserved		UCHAR		?
BlockMaximumSize		UCHAR		3t DUP (?)
BlockMinimumSize		UCHAR		2t DUP (?)
_READ_BLOCK_LIMITS		ENDS

READ_BLOCK_LIMITS_DATA		TYPEDEF		_READ_BLOCK_LIMITS

PREAD_BLOCK_LIMITS_DATA		TYPEDEF		PTR _READ_BLOCK_LIMITS

_MODE_PARAMETER_HEADER		STRUCT 1t
ModeDataLength		UCHAR		?
MediumType		UCHAR		?
DeviceSpecificParameter		UCHAR		?
BlockDescriptorLength		UCHAR		?
_MODE_PARAMETER_HEADER		ENDS

MODE_PARAMETER_HEADER		TYPEDEF		_MODE_PARAMETER_HEADER

PMODE_PARAMETER_HEADER		TYPEDEF		PTR _MODE_PARAMETER_HEADER

MODE_FD_SINGLE_SIDE		EQU		000000001h
MODE_FD_DOUBLE_SIDE		EQU		000000002h
MODE_FD_MAXIMUM_TYPE		EQU		00000001eh
_MODE_PARAMETER_BLOCK		STRUCT 1t
DensityCode		UCHAR		?
NumberOfBlocks		UCHAR		3t DUP (?)
Reserved		UCHAR		?
BlockLength		UCHAR		3t DUP (?)
_MODE_PARAMETER_BLOCK		ENDS

MODE_PARAMETER_BLOCK		TYPEDEF		_MODE_PARAMETER_BLOCK

PMODE_PARAMETER_BLOCK		TYPEDEF		PTR _MODE_PARAMETER_BLOCK

_MODE_ERROR_RECOVERY_PAGE		STRUCT 1t
rec@_MODE_ERROR_RECOVERY_PAGE_0		RECORD	PageSavable@_MODE_ERROR_RECOVERY_PAGE:1,
			Reserved@_MODE_ERROR_RECOVERY_PAGE:1,
			PageCode@_MODE_ERROR_RECOVERY_PAGE:6
@bit_0		rec@_MODE_ERROR_RECOVERY_PAGE_0	<>
PageLength		UCHAR		?
ErrorRecoveryParam		UCHAR		?
ReadRetry		UCHAR		?
MERP_Reserved		UCHAR		4t DUP (?)
_MODE_ERROR_RECOVERY_PAGE		ENDS

MODE_ERROR_RECOVERY_PAGE		TYPEDEF		_MODE_ERROR_RECOVERY_PAGE

PMODE_ERROR_RECOVERY_PAGE		TYPEDEF		PTR _MODE_ERROR_RECOVERY_PAGE

_MODE_DISCONNECT_PAGE		STRUCT 1t
rec@_MODE_DISCONNECT_PAGE_0		RECORD	PageSavable@_MODE_DISCONNECT_PAGE:1,
			Reserved@_MODE_DISCONNECT_PAGE:1,
			PageCode@_MODE_DISCONNECT_PAGE:6
@bit_0		rec@_MODE_DISCONNECT_PAGE_0	<>
PageLength		UCHAR		?
BufferFullRatio		UCHAR		?
BufferEmptyRatio		UCHAR		?
BusInactivityLimit		UCHAR		2t DUP (?)
BusDisconnectTime		UCHAR		2t DUP (?)
BusConnectTime		UCHAR		2t DUP (?)
MaximumBurstSize		UCHAR		2t DUP (?)
rec@_MODE_DISCONNECT_PAGE_1		RECORD	@scsi0@_MODE_DISCONNECT_PAGE:6,
			DataTransferDisconnect@_MODE_DISCONNECT_PAGE:2
@bit_1		rec@_MODE_DISCONNECT_PAGE_1	<>
Reserved2		UCHAR		3t DUP (?)
_MODE_DISCONNECT_PAGE		ENDS

MODE_DISCONNECT_PAGE		TYPEDEF		_MODE_DISCONNECT_PAGE

PMODE_DISCONNECT_PAGE		TYPEDEF		PTR _MODE_DISCONNECT_PAGE

_MODE_CACHING_PAGE		STRUCT 1t
rec@_MODE_CACHING_PAGE_0		RECORD	PageSavable@_MODE_CACHING_PAGE:1,
			Reserved@_MODE_CACHING_PAGE:1,
			PageCode@_MODE_CACHING_PAGE:6
@bit_0		rec@_MODE_CACHING_PAGE_0	<>
PageLength		UCHAR		?
rec@_MODE_CACHING_PAGE_1		RECORD	Reserved2@_MODE_CACHING_PAGE:5,
			WriteCacheEnable@_MODE_CACHING_PAGE:1,
			MultiplicationFactor@_MODE_CACHING_PAGE:1,
			ReadDisableCache@_MODE_CACHING_PAGE:1
@bit_1		rec@_MODE_CACHING_PAGE_1	<>
rec@_MODE_CACHING_PAGE_2		RECORD	ReadRetensionPriority@_MODE_CACHING_PAGE:4,
			WriteRetensionPriority@_MODE_CACHING_PAGE:4
@bit_2		rec@_MODE_CACHING_PAGE_2	<>
DisablePrefetchTransfer		UCHAR		2t DUP (?)
MinimumPrefectch		UCHAR		2t DUP (?)
MaximumPrefectch		UCHAR		2t DUP (?)
MaximumPrefectchCeil		UCHAR		2t DUP (?)
_MODE_CACHING_PAGE		ENDS

MODE_CACHING_PAGE		TYPEDEF		_MODE_CACHING_PAGE

PMODE_CACHING_PAGE		TYPEDEF		PTR _MODE_CACHING_PAGE

_MODE_FLEXIBLE_DISK_PAGE		STRUCT 1t
rec@_MODE_FLEXIBLE_DISK_PAGE_0		RECORD	PageSavable@_MODE_FLEXIBLE_DISK_PAGE:1,
			Reserved@_MODE_FLEXIBLE_DISK_PAGE:1,
			PageCode@_MODE_FLEXIBLE_DISK_PAGE:6
@bit_0		rec@_MODE_FLEXIBLE_DISK_PAGE_0	<>
PageLength		UCHAR		?
TransferRate		UCHAR		2t DUP (?)
NumberOfHeads		UCHAR		?
SectorsPerTrack		UCHAR		?
BytesPerSector		UCHAR		2t DUP (?)
NumberOfCylinders		UCHAR		2t DUP (?)
StartWritePrecom		UCHAR		2t DUP (?)
StartReducedCurrent		UCHAR		2t DUP (?)
StepRate		UCHAR		2t DUP (?)
StepPluseWidth		UCHAR		?
HeadSettleDelay		UCHAR		2t DUP (?)
MotorOnDelay		UCHAR		?
MotorOffDelay		UCHAR		?
rec@_MODE_FLEXIBLE_DISK_PAGE_1		RECORD	TrueReadySignal@_MODE_FLEXIBLE_DISK_PAGE:1,
			StartSectorNumber@_MODE_FLEXIBLE_DISK_PAGE:1,
			MotorOnAsserted@_MODE_FLEXIBLE_DISK_PAGE:1,
			Reserved2@_MODE_FLEXIBLE_DISK_PAGE:5
@bit_1		rec@_MODE_FLEXIBLE_DISK_PAGE_1	<>
rec@_MODE_FLEXIBLE_DISK_PAGE_2		RECORD	Reserved3@_MODE_FLEXIBLE_DISK_PAGE:4,
			StepPlusePerCyclynder@_MODE_FLEXIBLE_DISK_PAGE:4
@bit_2		rec@_MODE_FLEXIBLE_DISK_PAGE_2	<>
WriteCompenstation		UCHAR		?
HeadLoadDelay		UCHAR		?
HeadUnloadDelay		UCHAR		?
rec@_MODE_FLEXIBLE_DISK_PAGE_3		RECORD	Pin34Usage@_MODE_FLEXIBLE_DISK_PAGE:4,
			Pin2Usage@_MODE_FLEXIBLE_DISK_PAGE:4
@bit_3		rec@_MODE_FLEXIBLE_DISK_PAGE_3	<>
rec@_MODE_FLEXIBLE_DISK_PAGE_4		RECORD	Pin4Usage@_MODE_FLEXIBLE_DISK_PAGE:4,
			Pin1Usage@_MODE_FLEXIBLE_DISK_PAGE:4
@bit_4		rec@_MODE_FLEXIBLE_DISK_PAGE_4	<>
MediumRotationRate		UCHAR		2t DUP (?)
Reserved4		UCHAR		2t DUP (?)
_MODE_FLEXIBLE_DISK_PAGE		ENDS

MODE_FLEXIBLE_DISK_PAGE		TYPEDEF		_MODE_FLEXIBLE_DISK_PAGE

PMODE_FLEXIBLE_DISK_PAGE		TYPEDEF		PTR _MODE_FLEXIBLE_DISK_PAGE

_MODE_FORMAT_PAGE		STRUCT 1t
rec@_MODE_FORMAT_PAGE_0		RECORD	PageSavable@_MODE_FORMAT_PAGE:1,
			Reserved@_MODE_FORMAT_PAGE:1,
			PageCode@_MODE_FORMAT_PAGE:6
@bit_0		rec@_MODE_FORMAT_PAGE_0	<>
PageLength		UCHAR		?
TracksPerZone		UCHAR		2t DUP (?)
AlternetSectorsPerZone		UCHAR		2t DUP (?)
AlternetTracksPerZone		UCHAR		2t DUP (?)
SectorsPerTrack		UCHAR		2t DUP (?)
BytesPerPhysicalSector		UCHAR		2t DUP (?)
Interleave		UCHAR		2t DUP (?)
TrackSkewFactor		UCHAR		2t DUP (?)
CylinderSkewFactor		UCHAR		2t DUP (?)
rec@_MODE_FORMAT_PAGE_1		RECORD	SoftSectorFormating@_MODE_FORMAT_PAGE:1,
			HardSectorFormating@_MODE_FORMAT_PAGE:1,
			RemovableMedia@_MODE_FORMAT_PAGE:1,
			SurfaceFirst@_MODE_FORMAT_PAGE:1,
			Reserved2@_MODE_FORMAT_PAGE:4
@bit_1		rec@_MODE_FORMAT_PAGE_1	<>
Reserved3		UCHAR		2t DUP (?)
_MODE_FORMAT_PAGE		ENDS

MODE_FORMAT_PAGE		TYPEDEF		_MODE_FORMAT_PAGE

PMODE_FORMAT_PAGE		TYPEDEF		PTR _MODE_FORMAT_PAGE

_MODE_RIGID_GEOMETRY_PAGE		STRUCT 1t
rec@_MODE_RIGID_GEOMETRY_PAGE_0		RECORD	PageSavable@_MODE_RIGID_GEOMETRY_PAGE:1,
			Reserved@_MODE_RIGID_GEOMETRY_PAGE:1,
			PageCode@_MODE_RIGID_GEOMETRY_PAGE:6
@bit_0		rec@_MODE_RIGID_GEOMETRY_PAGE_0	<>
PageLength		UCHAR		?
NumberOfCylinders		UCHAR		2t DUP (?)
NumberOfHeads		UCHAR		?
StartWritePrecom		UCHAR		2t DUP (?)
StartReducedCurrent		UCHAR		2t DUP (?)
DriveStepRate		UCHAR		2t DUP (?)
LandZoneCyclinder		UCHAR		2t DUP (?)
rec@_MODE_RIGID_GEOMETRY_PAGE_1		RECORD	Reserved2@_MODE_RIGID_GEOMETRY_PAGE:6,
			RotationalPositionLock@_MODE_RIGID_GEOMETRY_PAGE:2
@bit_1		rec@_MODE_RIGID_GEOMETRY_PAGE_1	<>
RotationOffset		UCHAR		?
Reserved3		UCHAR		?
RoataionRate		UCHAR		2t DUP (?)
Reserved4		UCHAR		2t DUP (?)
_MODE_RIGID_GEOMETRY_PAGE		ENDS

MODE_RIGID_GEOMETRY_PAGE		TYPEDEF		_MODE_RIGID_GEOMETRY_PAGE

PMODE_RIGID_GEOMETRY_PAGE		TYPEDEF		PTR _MODE_RIGID_GEOMETRY_PAGE

LOGSENSEPAGE0		EQU		000000000h
LOGSENSEPAGE2		EQU		000000002h
LOGSENSEPAGE3		EQU		000000003h
LOGSENSEPAGE30		EQU		000000030h
LOGSENSEPAGE31		EQU		000000031h
_LOG_SENSE_PAGE_HEADER		STRUCT 1t
rec@_LOG_SENSE_PAGE_HEADER_0		RECORD	Reserved1@_LOG_SENSE_PAGE_HEADER:2,
			PageCode@_LOG_SENSE_PAGE_HEADER:6
@bit_0		rec@_LOG_SENSE_PAGE_HEADER_0	<>
Reserved2		UCHAR		?
_Length		UCHAR		2t DUP (?)
_LOG_SENSE_PAGE_HEADER		ENDS

LOG_SENSE_PAGE_HEADER		TYPEDEF		_LOG_SENSE_PAGE_HEADER

PLOG_SENSE_PAGE_HEADER		TYPEDEF		PTR _LOG_SENSE_PAGE_HEADER

_LOG_SENSE_PARAMETER_HEADER		STRUCT 1t
ParameterCode		UCHAR		2t DUP (?)
rec@_LOG_SENSE_PARAMETER_HEADER_0		RECORD	DUBit@_LOG_SENSE_PARAMETER_HEADER:1,
			DSBit@_LOG_SENSE_PARAMETER_HEADER:1,
			TSDBit@_LOG_SENSE_PARAMETER_HEADER:1,
			ETCBit@_LOG_SENSE_PARAMETER_HEADER:1,
			TMCBit@_LOG_SENSE_PARAMETER_HEADER:2,
			Reserved1@_LOG_SENSE_PARAMETER_HEADER:1,
			LPBit@_LOG_SENSE_PARAMETER_HEADER:1
@bit_0		rec@_LOG_SENSE_PARAMETER_HEADER_0	<>
ParameterLength		UCHAR		?
_LOG_SENSE_PARAMETER_HEADER		ENDS

LOG_SENSE_PARAMETER_HEADER		TYPEDEF		_LOG_SENSE_PARAMETER_HEADER

PLOG_SENSE_PARAMETER_HEADER		TYPEDEF		PTR _LOG_SENSE_PARAMETER_HEADER

@tag_scsi11		STRUCT 1t
Page0		UCHAR		?
Page2		UCHAR		?
Page3		UCHAR		?
Page30		UCHAR		?
Page31		UCHAR		?
@tag_scsi11		ENDS

@tag_scsi12		STRUCT 1t
Parm1		LOG_SENSE_PARAMETER_HEADER		<>
TotalRewrites		UCHAR		2t DUP (?)
Parm2		LOG_SENSE_PARAMETER_HEADER		<>
TotalErrorCorrected		UCHAR		3t DUP (?)
Parm3		LOG_SENSE_PARAMETER_HEADER		<>
NotApplicable		UCHAR		2t DUP (?)
Parm4		LOG_SENSE_PARAMETER_HEADER		<>
TotalBytesProcessed		UCHAR		4t DUP (?)
Parm5		LOG_SENSE_PARAMETER_HEADER		<>
TotalUnrecoverableErrors		UCHAR		2t DUP (?)
Parm6		LOG_SENSE_PARAMETER_HEADER		<>
RewritesLastReadOp		UCHAR		2t DUP (?)
@tag_scsi12		ENDS

@tag_scsi13		STRUCT 1t
Parm1		LOG_SENSE_PARAMETER_HEADER		<>
TotalRereads		UCHAR		2t DUP (?)
Parm2		LOG_SENSE_PARAMETER_HEADER		<>
TotalErrorCorrected		UCHAR		3t DUP (?)
Parm3		LOG_SENSE_PARAMETER_HEADER		<>
TotalCorrectableECCC3		UCHAR		2t DUP (?)
Parm4		LOG_SENSE_PARAMETER_HEADER		<>
TotalBytesProcessed		UCHAR		4t DUP (?)
Parm5		LOG_SENSE_PARAMETER_HEADER		<>
TotalUnrecoverableErrors		UCHAR		2t DUP (?)
Parm6		LOG_SENSE_PARAMETER_HEADER		<>
RereadsLastWriteOp		UCHAR		2t DUP (?)
@tag_scsi13		ENDS

@tag_scsi14		STRUCT 1t
Parm1		LOG_SENSE_PARAMETER_HEADER		<>
CurrentGroupsWritten		UCHAR		3t DUP (?)
Parm2		LOG_SENSE_PARAMETER_HEADER		<>
CurrentRewrittenFrames		UCHAR		2t DUP (?)
Parm3		LOG_SENSE_PARAMETER_HEADER		<>
CurrentGroupsRead		UCHAR		3t DUP (?)
Parm4		LOG_SENSE_PARAMETER_HEADER		<>
CurrentECCC3Corrections		UCHAR		2t DUP (?)
Parm5		LOG_SENSE_PARAMETER_HEADER		<>
PreviousGroupsWritten		UCHAR		3t DUP (?)
Parm6		LOG_SENSE_PARAMETER_HEADER		<>
PreviousRewrittenFrames		UCHAR		2t DUP (?)
Parm7		LOG_SENSE_PARAMETER_HEADER		<>
PreviousGroupsRead		UCHAR		3t DUP (?)
Parm8		LOG_SENSE_PARAMETER_HEADER		<>
PreviousECCC3Corrections		UCHAR		2t DUP (?)
Parm9		LOG_SENSE_PARAMETER_HEADER		<>
TotalGroupsWritten		UCHAR		4t DUP (?)
Parm10		LOG_SENSE_PARAMETER_HEADER		<>
TotalRewritteFrames		UCHAR		3t DUP (?)
Parm11		LOG_SENSE_PARAMETER_HEADER		<>
TotalGroupsRead		UCHAR		4t DUP (?)
Parm12		LOG_SENSE_PARAMETER_HEADER		<>
TotalECCC3Corrections		UCHAR		3t DUP (?)
Parm13		LOG_SENSE_PARAMETER_HEADER		<>
LoadCount		UCHAR		2t DUP (?)
@tag_scsi14		ENDS

@tag_scsi15		STRUCT 1t
Parm1		LOG_SENSE_PARAMETER_HEADER		<>
RemainingCapacityPart0		UCHAR		4t DUP (?)
Parm2		LOG_SENSE_PARAMETER_HEADER		<>
RemainingCapacityPart1		UCHAR		4t DUP (?)
Parm3		LOG_SENSE_PARAMETER_HEADER		<>
MaximumCapacityPart0		UCHAR		4t DUP (?)
Parm4		LOG_SENSE_PARAMETER_HEADER		<>
MaximumCapacityPart1		UCHAR		4t DUP (?)
@tag_scsi15		ENDS

@tag_scsi10		UNION
PageData		@tag_scsi11		<>
Page2		@tag_scsi12		<>
Page3		@tag_scsi13		<>
Page30		@tag_scsi14		<>
Page31		@tag_scsi15		<>
@tag_scsi10		ENDS

_LOG_SENSE_PAGE_INFORMATION		STRUCT 1t
LogSensePage		@tag_scsi10		<>
_LOG_SENSE_PAGE_INFORMATION		ENDS

LOG_SENSE_PAGE_INFORMATION		TYPEDEF		_LOG_SENSE_PAGE_INFORMATION

PLOG_SENSE_PAGE_INFORMATION		TYPEDEF		PTR _LOG_SENSE_PAGE_INFORMATION

_LOG_SENSE_PARAMETER_FORMAT		STRUCT 1t
LogSenseHeader		LOG_SENSE_PAGE_HEADER		<>
LogSensePageInfo		LOG_SENSE_PAGE_INFORMATION		<>
_LOG_SENSE_PARAMETER_FORMAT		ENDS

LOG_SENSE_PARAMETER_FORMAT		TYPEDEF		_LOG_SENSE_PARAMETER_FORMAT

PLOG_SENSE_PARAMETER_FORMAT		TYPEDEF		PTR _LOG_SENSE_PARAMETER_FORMAT

_MODE_READ_WRITE_RECOVERY_PAGE		STRUCT 1t
rec@_MODE_READ_WRITE_RECOVERY_PAGE_0		RECORD	Unknown1@_MODE_READ_WRITE_RECOVERY_PAGE:2,
			PageCode@_MODE_READ_WRITE_RECOVERY_PAGE:6
@bit_0		rec@_MODE_READ_WRITE_RECOVERY_PAGE_0	<>
PageLength		UCHAR		?
Unknown2		UCHAR		?
ReadRetryCount		UCHAR		?
Unknown3		UCHAR		?
Unknown4		UCHAR		?
Unknown5		UCHAR		?
Unknown6		UCHAR		?
WriteRetryCount		UCHAR		?
Unknown7		UCHAR		?
Unknown8		UCHAR		?
Unknown9		UCHAR		?
_MODE_READ_WRITE_RECOVERY_PAGE		ENDS

MODE_READ_WRITE_RECOVERY_PAGE		TYPEDEF		_MODE_READ_WRITE_RECOVERY_PAGE

PMODE_READ_WRITE_RECOVERY_PAGE		TYPEDEF		PTR _MODE_READ_WRITE_RECOVERY_PAGE

_MODE_DEVICE_CONFIGURATION_PAGE		STRUCT 1t
rec@_MODE_DEVICE_CONFIGURATION_PAGE_0		RECORD	PS@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			Reserved1@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			PageCode@_MODE_DEVICE_CONFIGURATION_PAGE:6
@bit_0		rec@_MODE_DEVICE_CONFIGURATION_PAGE_0	<>
PageLength		UCHAR		?
rec@_MODE_DEVICE_CONFIGURATION_PAGE_1		RECORD	Reserved2@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			CAPBit@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			CAFBit@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			ActiveFormat@_MODE_DEVICE_CONFIGURATION_PAGE:5
@bit_1		rec@_MODE_DEVICE_CONFIGURATION_PAGE_1	<>
ActivePartition		UCHAR		?
WriteBufferFullRatio		UCHAR		?
ReadBufferEmptyRatio		UCHAR		?
WriteDelayTime		UCHAR		2t DUP (?)
rec@_MODE_DEVICE_CONFIGURATION_PAGE_2		RECORD	DBR@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			BIS@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			RSmk@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			AVC@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			SOCF@_MODE_DEVICE_CONFIGURATION_PAGE:2,
			RBO@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			REW@_MODE_DEVICE_CONFIGURATION_PAGE:1
@bit_2		rec@_MODE_DEVICE_CONFIGURATION_PAGE_2	<>
GapSize		UCHAR		?
rec@_MODE_DEVICE_CONFIGURATION_PAGE_3		RECORD	EODdefined@_MODE_DEVICE_CONFIGURATION_PAGE:3,
			EEG@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			SEW@_MODE_DEVICE_CONFIGURATION_PAGE:1,
			Reserved3@_MODE_DEVICE_CONFIGURATION_PAGE:3
@bit_3		rec@_MODE_DEVICE_CONFIGURATION_PAGE_3	<>
BufferSize		UCHAR		3t DUP (?)
DCAlgorithm		UCHAR		?
Reserved4		UCHAR		?
_MODE_DEVICE_CONFIGURATION_PAGE		ENDS

MODE_DEVICE_CONFIGURATION_PAGE		TYPEDEF		_MODE_DEVICE_CONFIGURATION_PAGE

PMODE_DEVICE_CONFIGURATION_PAGE		TYPEDEF		PTR _MODE_DEVICE_CONFIGURATION_PAGE

_MODE_DEVICE_CONFIG_PAGE		STRUCT 1t
ParameterListHeader		MODE_PARAMETER_HEADER		<>
DeviceConfigPage		MODE_DEVICE_CONFIGURATION_PAGE		<>
_MODE_DEVICE_CONFIG_PAGE		ENDS

MODE_DEVICE_CONFIG_PAGE		TYPEDEF		_MODE_DEVICE_CONFIG_PAGE

PMODE_DEVICE_CONFIG_PAGE		TYPEDEF		PTR _MODE_DEVICE_CONFIG_PAGE

CDB_AUDIO_PAUSE		EQU		0t
CDB_AUDIO_RESUME		EQU		1t
CDB_DEVICE_START		EQU		000000011h
CDB_DEVICE_STOP		EQU		000000010h
CDB_EJECT_MEDIA		EQU		000000010h
CDB_LOAD_MEDIA		EQU		000000001h
CDB_SUBCHANNEL_HEADER		EQU		000000000h
CDB_SUBCHANNEL_BLOCK		EQU		000000001h
CDROM_AUDIO_CONTROL_PAGE		EQU		00000000eh
CDROM_AUDIO_CURRENT_VALUES		EQU		000000000h
MODE_SELECT_IMMEDIATE		EQU		000000004h
CDB_USE_MSF		EQU		000000001h
_PORT_OUTPUT		STRUCT 1t
ChannelSelection		UCHAR		?
Volume		UCHAR		?
_PORT_OUTPUT		ENDS

PORT_OUTPUT		TYPEDEF		_PORT_OUTPUT

PPORT_OUTPUT		TYPEDEF		PTR _PORT_OUTPUT

_AUDIO_OUTPUT		STRUCT 1t
MPHeader		MODE_PARAMETER_HEADER		<>
MPBlock		MODE_PARAMETER_BLOCK		<>
CodePage		UCHAR		?
ParameterLength		UCHAR		?
Immediate		UCHAR		?
Reserved		UCHAR		2t DUP (?)
LbaFormat		UCHAR		?
LogicalBlocksPerSecond		UCHAR		2t DUP (?)
PortOutput		PORT_OUTPUT		4t DUP (<>)
_AUDIO_OUTPUT		ENDS

AUDIO_OUTPUT		TYPEDEF		_AUDIO_OUTPUT

PAUDIO_OUTPUT		TYPEDEF		PTR _AUDIO_OUTPUT

CDAUDIO_LEAD_OUT_TRACK		EQU		0000000aah
_TOC_HEADER		STRUCT 1t
DataLength		UCHAR		2t DUP (?)
FirstTrack		UCHAR		?
LastTrack		UCHAR		?
_TOC_HEADER		ENDS

TOC_HEADER		TYPEDEF		_TOC_HEADER

SESSION_INFO_MAX_BUFFER_SIZE		EQU		000000800h
TOC_CONTROL_READ_SESSION_INFO		EQU		000000040h
TOC_CONTROL_READ_ALL_SUBCODE		EQU		000000080h
_TOC_TD_ADR_CTRL_REC		RECORD	ADR@_TOC_TD_ADR_CTRL_REC:4,
			Control@_TOC_TD_ADR_CTRL_REC:4

TOC_TD_ADR_CTRL_REC		TYPEDEF		_TOC_TD_ADR_CTRL_REC

CTRL_DATA_TRACK		EQU		000000004h
_TOC_TRACK_DESCRIPTOR		STRUCT 1t
Reserved1		UCHAR		?
toc_ctrl_rec		TOC_TD_ADR_CTRL_REC		<>
TrackID		UCHAR		?
ReservedForHell2		UCHAR		?
StartAddr		UCHAR		4t DUP (?)
_TOC_TRACK_DESCRIPTOR		ENDS

TOC_TRACK_DESCRIPTOR		TYPEDEF		_TOC_TRACK_DESCRIPTOR

_TOC_SESSION_DESCRIPTOR		STRUCT 1t
Session		UCHAR		?
toc_ses_ctrl_rec		TOC_TD_ADR_CTRL_REC		<>
TrackNo		UCHAR		?
Point		UCHAR		?
Min		UCHAR		?
Sec		UCHAR		?
Frame		UCHAR		?
Zero		UCHAR		?
PMin		UCHAR		?
PSec		UCHAR		?
PFrame		UCHAR		?
_TOC_SESSION_DESCRIPTOR		ENDS

TOC_SESSION_DESCRIPTOR		TYPEDEF		_TOC_SESSION_DESCRIPTOR

SESSION_ADR_TRACK_INFO		EQU		000000010h
SESSION_DESC_FIRST_TRACK		EQU		0000000a0h
SESSION_DESC_LAST_TRACK		EQU		0000000a1h
SESSION_DESC_LEAD_OUT_ADDR		EQU		0000000a2h
SESSION_DESC_END_OF_TRACKS		EQU		000000099h
GET_LAST_SESSION		EQU		000000001h
_TAPE_POSITION_DATA		STRUCT 1t
rec@_TAPE_POSITION_DATA_0		RECORD	BeginningOfPartition@_TAPE_POSITION_DATA:1,
			EndOfPartition@_TAPE_POSITION_DATA:1,
			Reserved2@_TAPE_POSITION_DATA:3,
			BlockPositionUnsupported@_TAPE_POSITION_DATA:1,
			Reserved1@_TAPE_POSITION_DATA:2
@bit_0		rec@_TAPE_POSITION_DATA_0	<>
PartitionNumber		UCHAR		?
Reserved3		USHORT		?
FirstBlock		UCHAR		4t DUP (?)
LastBlock		UCHAR		4t DUP (?)
Reserved4		UCHAR		?
NumberOfBlocks		UCHAR		3t DUP (?)
NumberOfBytes		UCHAR		4t DUP (?)
_TAPE_POSITION_DATA		ENDS

TAPE_POSITION_DATA		TYPEDEF		_TAPE_POSITION_DATA

PTAPE_POSITION_DATA		TYPEDEF		PTR _TAPE_POSITION_DATA

CD_READ_ALL_SUBQ		EQU		000000000h
CD_READ_POSITION_SUBQ		EQU		000000001h
CD_READ_UPC_CODE_SUBQ		EQU		000000002h
CD_READ_ISRC_SUBQ		EQU		000000003h
CDROM_STANDARD_XFER		EQU		000000096h
_UPC_REC		RECORD	UPCValid@_UPC_REC:1,
			Reserved2@_UPC_REC:7

UPC_REC		TYPEDEF		_UPC_REC

_ISRC_REC		RECORD	ISRCValid@_ISRC_REC:1,
			Reserved2@_ISRC_REC:7

ISRC_REC		TYPEDEF		_ISRC_REC

_CTRL_ADR_REC		RECORD	ADR@_CTRL_ADR_REC:4,
			Control@_CTRL_ADR_REC:4

CTRL_ADR_REC		TYPEDEF		_CTRL_ADR_REC

_SubQ_Data		STRUCT 1t
Reserved1		UCHAR		?
Audio_Status		UCHAR		?
Data_Len		UCHAR		2t DUP (?)
Data_Format		UCHAR		?
Subq_Ctrl_ADR_rec		CTRL_ADR_REC		<>
Track		UCHAR		?
Index		UCHAR		?
AbsAddr		UCHAR		4t DUP (?)
TrackRelAddr		UCHAR		4t DUP (?)
subq_upc_rec		UPC_REC		<>
UPCCode		UCHAR		14t DUP (?)
subq_isrc_rec		ISRC_REC		<>
ISRC		UCHAR		14t DUP (?)
_SubQ_Data		ENDS

SubQ_Data		TYPEDEF		_SubQ_Data

pSubQ_Data		TYPEDEF		PTR _SubQ_Data

_SubQ_pos		STRUCT 1t
Reserved1		UCHAR		?
pos_Audio_Status		UCHAR		?
pos_Data_Len		UCHAR		2t DUP (?)
pos_Data_Format		UCHAR		?
pos_Subq_Ctrl_ADR_rec		CTRL_ADR_REC		<>
pos_Track		UCHAR		?
pos_Index		UCHAR		?
pos_AbsAddr		UCHAR		4t DUP (?)
pos_TrackRelAddr		UCHAR		4t DUP (?)
_SubQ_pos		ENDS

SubQ_pos		TYPEDEF		_SubQ_pos

pSubQ_pos		TYPEDEF		PTR _SubQ_pos

_SubQ_UPC		STRUCT 1t
upc_Reserved1		UCHAR		?
upc_Audio_Status		UCHAR		?
upc_Data_Len		UCHAR		2t DUP (?)
upc_Data_Format		UCHAR		?
upc_Subq_Ctrl_ADR_rec		CTRL_ADR_REC		<>
upc_Track		UCHAR		?
upc_Index		UCHAR		?
upc_subq_upc_rec		UPC_REC		<>
upc_UPCCode		UCHAR		14t DUP (?)
_SubQ_UPC		ENDS

SubQ_UPC		TYPEDEF		_SubQ_UPC

pSubQ_UPC		TYPEDEF		PTR _SubQ_UPC

_SubQ_ISRC		STRUCT 1t
upc_Reserved1		UCHAR		?
upc_Audio_Status		UCHAR		?
upc_Data_Len		UCHAR		2t DUP (?)
upc_Data_Format		UCHAR		?
upc_Subq_Ctrl_ADR_rec		CTRL_ADR_REC		<>
upc_Track		UCHAR		?
upc_Index		UCHAR		?
upc_subq_isrc_rec		ISRC_REC		<>
upc_ISRC		UCHAR		14t DUP (?)
_SubQ_ISRC		ENDS

SubQ_ISRC		TYPEDEF		_SubQ_ISRC

pSubQ_ISRC		TYPEDEF		PTR _SubQ_ISRC

CDROM_AUDIO_SUB_CHAN_FORMAT_ALL		EQU		000000000h
CDROM_AUDIO_SUB_CHAN_CUR_POS		EQU		000000001h
CDROM_AUDIO_SUB_CHAN_UPC		EQU		000000002h
CDROM_AUDIO_SUB_CHAN_ISRC		EQU		000000003h
CDROM_Q_SUB_CHAN_DATA_LEN		EQU		12t
CDROM_UPC_ISRC_DATA_LEN		EQU		14t
CDROM_Q_INFO_LEN		EQU		9t
CDROM_AUDIO_STATUS_NOT_SUPPORTE		EQU		000000000h
CDROM_AUDIO_STATUS_PLAYING		EQU		000000011h
CDROM_AUDIO_STATUS_PAUSED		EQU		000000012h
CDROM_AUDIO_STATUS_DONE		EQU		000000013h
CDROM_AUDIO_STATUS_ERROR		EQU		000000014h
CDROM_AUDIO_STATUS_NO_STATUS		EQU		000000015h
CDROM_COOKED_SECTOR_SIZE		EQU		2048t
CDROM_RAW_SECTOR_SIZE		EQU		2340t
CD_DEFAULT_BLOCK_SIZE		EQU		000000800h
FRAMES_PER_SECOND		EQU		75t
CDROM_AUDIO_LBA_INVALID		EQU		000000000h
CDROM_AUDIO_IMED_RETURN		EQU		000000004h
CDROM_AUDIO_SOTC		EQU		000000002h
_FOUR_BYTE		STRUCT 1t
Byte0		UCHAR		?
Byte1		UCHAR		?
Byte2		UCHAR		?
Byte3		UCHAR		?
_FOUR_BYTE		ENDS

FOUR_BYTE		TYPEDEF		_FOUR_BYTE

PFOUR_BYTE		TYPEDEF		PTR _FOUR_BYTE

; End of file ..\ioh\scsi.h

ENDIF
