home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
pascal
/
vdl020d.zip
/
VSALHALT.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
70KB
|
2,420 lines
(* ******************************
{────────────────────────────────────────────────────────────────────────────}
{────────────────────────────────────────────────────────────────────────────}
{--------------------------}
{ SCSI-2 Printer Functions }
{--------------------------}
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2PrinterFormat( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the PRINTER FORMAT command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2PrinterFormat( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$04,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2PrinterFormat:=HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2PrinterFormat }
{────────────────────────────────────────────────────────────────────────────}
{ This command issues the PRINTER PRINT command. }
(*-
[FUNCTION]
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2PrinterPrint( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$0A,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2PrinterPrint:= HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2PrinterPrint }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2PrinterRecoverData( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the PRINTER RECOVER BUFFERED DATA.
[SEE-ALSO]
[EXAMPLE]
-*)
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$14,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2PrinterRecoverData:=HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2PrinterRecoverData }
{────────────────────────────────────────────────────────────────────────────}
This command issues the PRINTER SLEW AND PRINT.
(*-
[FUNCTION]
Function SAL_S2PrinterSlewPrint( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
SlewVal : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
SlewVal ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the PRINTER SLEW AND PRINT.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2PrinterSlewPrint( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
SlewVal : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$0B,
Flags,
SlewVal,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2PrinterSlewPrint :=HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2PrinterSlewPrint }
{────────────────────────────────────────────────────────────────────────────}
This command issues the PRINTER STOP PRINT.
(*-
[FUNCTION]
Function SAL_S2PrinterStopPrint( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
VendorByte : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
VendorByte ?
[RETURNS]
[DESCRIPTION]
This command issues the PRINTER STOP PRINT.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2PrinterStopPrint( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
VendorByte : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$1B,
Flags,
VendorByte,
0,
0,
0 );
SAL_S2PrinterStopPrint:=HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2PrinterStopPrint }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2PrinterSyncBuffer( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
[RETURNS]
[DESCRIPTION]
This command issues the PRINTER SYNCHRONIZE BUFFER.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2PrinterSyncBuffer( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$10,
Flags,
0,
0,
0,
0 );
SAL_S2PrinterSyncBuffer :=HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2PrinterSyncBuffer }
{────────────────────────────────────────────────────────────────────────────}
{----------------------------}
{ SCSI-2 Processor Functions }
{----------------------------}
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2ProcSend( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the PROCESSOR SEND command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2ProcSend( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$08,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2ProcSend := HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2ProcSend }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2ProcReceive( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the PROCESSOR RECEIVE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2ProcReceive( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$0A,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2ProcReceive:= HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2ProcReceive }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqErase( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL ERASE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqErase( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$19,
Flags,
0,
0,
0,
0 );
SAL_S2SeqErase := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqErase }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqLoadUnload( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
Flags2 ?
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL LOAD/UNLOAD command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqLoadUnload( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$1B,
Flags,
0,
0,
Flags2,
0 );
SAL_S2SeqLoadUnload := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqLoadUnload }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqLocate( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
Partition : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
LBS Logical Block Size
Partition Partition Number
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL LOCATE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqLocate( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
Partition : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$2B,
Flags,
0,
T4Byte( LBA )[4],
T4Byte( LBA )[3],
T4Byte( LBA )[2],
T4Byte( LBA )[1],
0,
Partition,
0 );
SAL_S2SeqLocate := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqLocate }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqRead( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL READ command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqRead( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$08,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2SeqRead := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2SeqRead }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqReadBlockLimits( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL READ BLOCK LIMITS command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqReadBlockLimits( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$08,
Flags,
0,
0,
0,
0 );
SAL_S2SeqReadBlockLimits:=HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
6,
NIL,
0,
NIL );
END; { SAL_S2SeqReadBlockLimits }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqReadPosition( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL READ POSITION command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqReadPosition( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$34,
Flags,
0,
0,
0,
0,
0,
0,
0,
0 );
SAL_S2SeqReadPosition := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
20,
NIL,
0,
NIL );
END; { SAL_S2SeqReadPosition }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqReadReverse( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL READ REVERSE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$0F,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2SeqReadReverse:= HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2SeqReadReverse }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqRecoverData( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL RECOVER BUFFERED DATA command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqRecoverData( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$14,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2SeqRecoverData := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2SeqRecoverData }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqReleaseUnit( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL RELEASE UNIT command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqReleaseUnit( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$17,
Flags,
0,
0,
0,
0 );
SAL_S2SeqReleaseUnit := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqReleaseUnit }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqReserveUnit( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL RESERVE UNIT command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqReserveUnit( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$16,
Flags,
0,
0,
0,
0 );
SAL_S2SeqReserveUnit := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqReserveUnit }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqRewind( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL REWIND command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqRewind( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$01,
Flags,
0,
0,
0,
0 );
SAL_S2SeqRewind := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqRewind }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqSpace( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Count : LONGINT ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
Count Number of Spaces to Space
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL SPACE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqSpace( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Count : LONGINT ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$01,
Flags,
T4Byte( Count )[3],
T4Byte( Count )[2],
T4Byte( Count )[1],
0 );
SAL_S2SeqSpace := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqSpace }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqVerify( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL VERIFY command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqVerify( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$13,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2SeqVerify := HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2SeqVerify }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqWrite( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL WRITE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqWrite( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$0A,
Flags,
T4Byte( DataSize )[3],
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2SeqWrite := HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2SeqWrite }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2SeqWriteFilemarks( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
NumMarks : LONGINT ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
NumMarks Number of FileMarks to Write
[RETURNS]
[DESCRIPTION]
This command issues the SEQUENTIAL ERASE command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2SeqWriteFilemarks( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
NumMarks : LONGINT ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB6Load( @CDB,
$10,
Flags,
T4Byte( NumMarks )[3],
T4Byte( NumMarks )[2],
T4Byte( NumMarks )[1],
0 );
SAL_S2SeqWriteFilemarks:= HM_ExecSCSI( ES_Poll+ES_Write,
Target,
Lun,
Channel,
SubChannel,
@CDB,
6,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2SeqWriteFilemarks }
{────────────────────────────────────────────────────────────────────────────}
{-------------------------}
{ SCSI-2 CD-ROM Functions }
{-------------------------}
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPauseResume( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
Flags2 ?
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PAUSE/RESUME command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPauseResume( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$4B,
Flags,
0,
0,
0,
0,
0,
0,
Flags2,
0 );
SAL_S2CDPauseResume:= HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPauseResume }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPlayAudio10( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartLBA : LONGINT;
DataSize : LONGINT ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
StartLBA ?
DataSize ?
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PLAY AUDIO 10 command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPlayAudio10( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartLBA : LONGINT;
DataSize : LONGINT ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$45,
Flags,
T4Byte( StartLBA )[4],
T4Byte( StartLBA )[3],
T4Byte( StartLBA )[2],
T4Byte( StartLBA )[1],
0,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2CDPlayAudio10 := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPlayAudio10 }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPlayAudio12( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartLBA : LONGINT;
DataSize : LONGINT ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
StartLBA ?
DataSize ?
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PLAY AUDIO 12 command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPlayAudio12( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartLBA : LONGINT;
DataSize : LONGINT ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$45,
Flags,
T4Byte( StartLBA )[4],
T4Byte( StartLBA )[3],
T4Byte( StartLBA )[2],
T4Byte( StartLBA )[1],
0,
T4Byte( DataSize )[4],
T4Byte( DataSize )[3],
T4Byte( DataSize )[2] );
CDB[10] := T4Byte( DataSize )[1];
CDB[11] := 0;
SAL_S2CDPlayAudio12 := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
12,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPlayAudio12 }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPlayAudioMSF( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
SM,SS,SF : BYTE;
EM,ES,EF : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
SM,SS,SF Starting Min,Sec,Frame
EM,ES,EF Ending Min,Sec,Frame
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PLAY AUDIO MSF command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPlayAudioMSF( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
SM,SS,SF : BYTE;
EM,ES,EF : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$47,
Flags,
0,
SM,
SS,
SF,
EM,
ES,
EF,
0 );
SAL_S2CDPlayAudioMSF := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPlayAudioMSF }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPlayAudioTrackIdx( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
ST,SI : BYTE;
ET,EI : BYTE ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
ST,SI ?,?
ET,EI ?,?
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PLAY AUDIO TRACK INDEX.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPlayAudioTrackIdx( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
ST,SI : BYTE;
ET,EI : BYTE ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$48,
Flags,
0,
0,
ST,
SI,
0,
ET,
EI,
0 );
SAL_S2CDPlayAudioTrackIdx:=HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPlayAudioTrackIdx }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDPlayAudioTrackRel( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
TrackRelLBA : LONGINT;
DataSize : LONGINT ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
TrackRelLBA ?
DataSize ?
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PLAY AUDIO--TRACK RELATIVE ommand.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDPlayAudioTrackRel( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
TrackRelLBA : LONGINT;
DataSize : LONGINT ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$49,
Flags,
T4Byte( TrackRelLBA )[4],
T4Byte( TrackRelLBA )[3],
T4Byte( TrackRelLBA )[2],
T4Byte( TrackRelLBA )[1],
0,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2CDPlayAudioTrackRel := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
NIL,
0,
NIL,
0,
NIL );
END; { SAL_S2CDPlayAudioTrackRel }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDReadCapacity( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
LBA ?
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM READ CAPACITY command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDReadCapacity( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$49,
Flags,
T4Byte( LBA )[4],
T4Byte( LBA )[3],
T4Byte( LBA )[2],
T4Byte( LBA )[1],
0,
0,
0,
0 );
SAL_S2CDReadCapacity := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
DataBuff,
8,
NIL,
0,
NIL );
END; { SAL_S2CDReadCapacity }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDReadHeader( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
LBA ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
This command issues the CD-ROM PAUSE/RESUME command.
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDReadHeader( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
LBA : LONGINT;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$44,
Flags,
T4Byte( LBA )[4],
T4Byte( LBA )[3],
T4Byte( LBA )[2],
T4Byte( LBA )[1],
0,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2CDReadHeader := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2CDReadHeader }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDReadSubChannel( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE;
LBA : LONGINT;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
Flags2 ?
LBA ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
{ This command issues the CD-ROM READ SUB-CHANNEL command }
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDReadSubChannel( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
Flags2 : BYTE;
LBA : LONGINT;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$42,
Flags,
Flags2,
0,
0,
0,
0,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2CDReadSubChannel := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2CDReadSubChannel }
{────────────────────────────────────────────────────────────────────────────}
(*-
[FUNCTION]
Function SAL_S2CDReadTOC( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartTrack : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
[PARAMETERS]
Bus ?
SubChannel ?
Target Device Target ID
Lun Device Logical Unit Number
Flags ?
StartTrack ?
DataSize Size of Data Buffer
DataBuff Pointer to Data Buffer
[RETURNS]
[DESCRIPTION]
{ This command issues the CD-ROM READ TOC command }
[SEE-ALSO]
[EXAMPLE]
-*)
Function SAL_S2CDReadTOC( Bus : BYTE;
SubChannel : BYTE;
Target : BYTE;
Lun : BYTE;
Flags : BYTE;
StartTrack : BYTE;
DataSize : LONGINT;
DataBuff : Pointer ): TError;
Var
CDB : TCDB;
BEGIN
HM_CDB10Load( @CDB,
$43,
Flags,
0,
0,
0,
0,
StartTrack,
T4Byte( DataSize )[2],
T4Byte( DataSize )[1],
0 );
SAL_S2CDReadTOC := HM_ExecSCSI( ES_Poll+ES_Read,
Target,
Lun,
Channel,
SubChannel,
@CDB,
10,
DataBuff,
DataSize,
NIL,
0,
NIL );
END; { SAL_S2CDReadTOC }
{────────────────────────────────────────────────────────────────────────────}
{────────────────────────────────────────────────────────────────────────────}
{--------------------------}
{ SCSI-2 Scanner Functions }
{--------------------------}
************************ *)