📄 unit1.pas
字号:
writeln(Log, ' Returned record TCdRomSubQinfo :');
writeln(Log, ' AudioStatus = ',TAudioStatusName[AudioStatus]);
writeln(Log, ' ADR = ',TsubchannelADRname[ADR]);
writeln(Log, ' PreEmphasis = ', PreEmphasis);
writeln(Log, ' CopyPermit = ', CopyPermit);
writeln(Log, ' DataTrack = ', DataTrack);
writeln(Log, ' QuadAudio = ', QuadAudio);
writeln(Log, ' TrackNumber = ', TrackNumber);
writeln(Log, ' IndexNumber = ', IndexNumber);
writeln(Log, ' UPC = "', UPC, '"');
writeln(Log, ' ISRC = "', ISRC, '"');
if MSFform.Checked then begin
writeln(Log, ' AbsAddress = ',AbsAddressM:2,' : ',
AbsAddressS:2,' : ',AbsAddressF:2,' // in MSF');
writeln(Log, ' RelAddress = ',RelAddressM:2,' : ',
RelAddressS:2,' : ',RelAddressF:2,' // form');
end else begin
writeln(Log, ' AbsAddress = ',AbsAddress,' // in LBA');
writeln(Log, ' RelAddress = ',RelAddress,' // form');
end;
flush(Log);
end; end;
end; end;
procedure TForm1.ReadToc1Click(Sender: TObject);
var
Toc : TCdRomToc;
i : integer;
begin with ReadTocDlg do begin
if ShowModal = mrOk then begin
Report('Trying: SCSIreadToc('+BVal(MSFform)+DVal(Start)+
'var Toc : TCdRomToc);',
CdRom1.SCSIreadToc(MSFform.Checked, BYTE(Start.Value), Toc));
with Toc do begin
writeln(Log, ' Returned record TCdRomToc :');
writeln(Log, ' FirstTrack = ', FirstTrack);
writeln(Log, ' LastTrack = ', LastTrack);
writeln(Log, ' TrackCount = ', TrackCount,
' // Real tracks + lead-off area (TrackNumber=170)');
writeln(Log, ' InMSF = ', InMSF);
end;
for i := 0 to Toc.TrackCount-1 do
with Toc.Track[i] do begin
writeln(Log, ' TrackNumber = ', TrackNumber);
writeln(Log, ' ADR = ',TsubchannelADRname[ADR]);
writeln(Log, ' PreEmphasis = ', PreEmphasis);
writeln(Log, ' CopyPermit = ', CopyPermit);
writeln(Log, ' DataTrack = ', DataTrack);
writeln(Log, ' QuadAudio = ', QuadAudio);
if MSFform.Checked then
writeln(Log, ' Address = ',AddressM:2,' : ',
AddressS:2,' : ',AddressF:2,' // in MSF form')
else
writeln(Log, ' Address = ',Address,' // in LBA form');
end;
flush(Log);
end;
end; end;
procedure TForm1.PreFetch1Click(Sender: TObject);
begin with PreFetchDlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIpreFetch('
+ BVal(IMM) + DVal(GLBA) + DVal(Sectors),
CdRom1.SCSIpreFetch(IMM.Checked,
GLBA.Value, WORD(Sectors.Value)));
end; end;
procedure TForm1.LockUnlockCache1Click(Sender: TObject);
begin with LockCacheDlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIlockUnlockCache('
+ BVal(LOK) + DVal(GLBA) + DVal(Sectors),
CdRom1.SCSIlockUnlockCache(LOK.Checked,
GLBA.Value, WORD(Sectors.Value)));
end; end;
procedure TForm1.PlayAudio101Click(Sender: TObject);
begin with PlayAudio10Dlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIplayAydio10(' + DVal(GLBA) + DVal(Sectors),
CdRom1.SCSIplayAudio10(GLBA.Value, WORD(Sectors.Value)));
end; end;
procedure TForm1.PlayAudio121Click(Sender: TObject);
begin with PlayAudio12Dlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIplayAydio12(' + DVal(GLBA) + DVal(Sectors),
CdRom1.SCSIplayAudio12(GLBA.Value, Sectors.Value));
end; end;
procedure TForm1.PlayAudioTI1Click(Sender: TObject);
begin with PlayAudioTIDlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIplayAydioTI('
+ DVal(StartTrack) + DVal(StartIndex)
+ DVal(StopTrack) + DVal(StopIndex),
CdRom1.SCSIplayAudioTI(
BYTE(StartTrack.Value), BYTE(StartIndex.Value),
BYTE(StopTrack.Value), BYTE(StopIndex.Value)));
end; end;
procedure TForm1.PlayAudioMSF1Click(Sender: TObject);
begin with PlayAudioMSFDlg do begin
if ShowModal = mrOk then
Report('Trying: SCSIplayAydioMSF('
+ DVal(StartM) + DVal(StartS) + DVal(StartF)
+ DVal(StopM) + DVal(StopS) + DVal(StopF),
CdRom1.SCSIplayAudioMSF(
BYTE(StartM.Value), BYTE(StartS.Value), BYTE(StartF.Value),
BYTE(StopM.Value), BYTE(StopS.Value), BYTE(StopF.Value)));
end; end;
procedure TForm1.ReadLong1Click(Sender: TObject);
var Leng : DWORD;
begin with ReadLongDlg do begin
if ShowModal = mrOk then begin
Leng := BufLen.Value;
Report('Trying: SCSIreadLong(' + BVal(CORR) + DVal(GLBA)
+ 'Buf : Pointer, ' + DVal(BufLen),
CdRom1.SCSIreadLong(CORR.Checked, GLBA.Value, @IObuf, Leng));
if (CdRom1.LastError = Err_None) AND (Leng > 0) then begin
writeln(Log, ' Returned Data Buffer :');
LogHex(@IObuf, Leng);
end;
end;
end; end;
procedure TForm1.Read101Click(Sender: TObject);
var Leng : DWORD;
begin with Read10Dlg do begin
if ShowModal = mrOk then begin
Leng := BufLen.Value;
Report('Trying: SCSIread10(' + BVal(DPO) + BVal(FUA) + DVal(GLBA)
+ DVal(Sectors) + 'Buf : Pointer, ' + DVal(BufLen),
CdRom1.SCSIread10(DPO.Checked, FUA.Checked, GLBA.Value,
Sectors.Value, @IObuf, Leng));
if (CdRom1.LastError = Err_None) AND (Leng > 0) then begin
writeln(Log, ' Returned Data Buffer :');
LogHex(@IObuf, Leng);
end;
end;
end; end;
procedure TForm1.ModeSenseRecoverEX1Click(Sender: TObject);
var
PSAV : boolean;
RLEV, RETR : byte;
begin with ModeSenseRecoverEXDlg do begin
if ShowModal = mrOk then begin
Report('Trying: SCSIModeSenseRecoverEX(PCTL='
+ TCdRomModePageTypeName[TCdRomModePageType(PCTL.ItemIndex)]
+ '; var PSAV : boolean; var RLEV, RETR : byte);',
CdRom1.SCSIModeSenseRecoverEX(
TCdRomModePageType(PCTL.ItemIndex), PSAV, RLEV, RETR));
writeln(Log, ' Returned PSAV = ', PSAV);
writeln(Log, ' Returned RLEV = ', RLEV, ' decimal');
writeln(Log, ' Returned RETR = ', RETR, ' decimal');
flush(Log);
end;
end; end;
procedure TForm1.ModeSenseMediumEX1Click(Sender: TObject);
var
PSAV : boolean;
Med1,Med2,Med3,Med4 : TCdRomMediumType;
begin with ModeSenseMediumEXDlg do begin
if ShowModal = mrOk then begin
Report('Trying: SCSIModeSenseMediumEX(PCTL='
+ TCdRomModePageTypeName[TCdRomModePageType(PCTL.ItemIndex)]
+ '; var PSAV : boolean; var Med1,Med2,Med3,Med4 : TCdRomMediumType);',
CdRom1.SCSIModeSenseMediumEX(
TCdRomModePageType(PCTL.ItemIndex), PSAV, Med1,Med2,Med3,Med4));
writeln(Log, ' Returned PSAV = ', PSAV);
writeln(Log, ' Returned Med1 = ', TCdRomMediumName[Med1]);
writeln(Log, ' Returned Med2 = ', TCdRomMediumName[Med2]);
writeln(Log, ' Returned Med3 = ', TCdRomMediumName[Med3]);
writeln(Log, ' Returned Med4 = ', TCdRomMediumName[Med4]);
flush(Log);
end;
end; end;
procedure TForm1.ModeSenseDeviceEX1Click(Sender: TObject);
var
PSAV : boolean;
ITimer : byte;
SperMunits, FperSunits : word;
begin with ModeSenseDeviceEXDlg do begin
if ShowModal = mrOk then begin
Report('Trying: SCSIModeSenseDeviceEX(PCTL='
+ TCdRomModePageTypeName[TCdRomModePageType(PCTL.ItemIndex)]
+ '; var ITimer : byte; var SperMunits, FperSunits : word);',
CdRom1.SCSIModeSenseDeviceEX(
TCdRomModePageType(PCTL.ItemIndex),
PSAV, ITimer, SperMunits, FperSunits));
writeln(Log, ' Returned PSAV = ', PSAV);
writeln(Log, ' Returned ITimer = ', ITimer, ' decimal');
writeln(Log, ' Returned SperMunits = ', SperMunits, ' decimal');
writeln(Log, ' Returned FperSunits = ', FperSunits, ' decimal');
flush(Log);
end;
end; end;
procedure TForm1.ModeSenseAudioEX1Click(Sender: TObject);
var APage : TCdRomModePageAudio;
begin with ModeSenseAudioEXDlg do begin
if ShowModal = mrOk then begin
Report('Trying: SCSImodeSenseAudioEX(PCTL='
+ TCdRomModePageTypeName[TCdRomModePageType(PCTL.ItemIndex)]
+ '; var sh: TCdRomModePageAudio);',
CdRom1.SCSImodeSenseAudioEX(
TCdRomModePageType(PCTL.ItemIndex), APage));
with APage do begin
writeln(Log, ' Returned record TCdRomModePageAudio :');
writeln(Log, ' PSAV = ', PSAV);
writeln(Log, ' IMM = ', IMM);
writeln(Log, ' SOTC = ', SOTC);
writeln(Log, ' APRV = ', APRV);
writeln(Log, ' LBAformat = ', LBAformat);
writeln(Log, ' LBSaudio = ', LBSaudio);
writeln(Log, Format(' Volume = [%2x, %2x, %2x, %2x] hex',
[Volume[0], Volume[1], Volume[2], Volume[3]]));
writeln(Log, Format(' Channel = [%2x, %2x, %2x, %2x] hex',
[Channel[0], Channel[1], Channel[2], Channel[3]]));
flush(Log);
end; end;
end; end;
procedure TForm1.TASPI1Click(Sender: TObject);
begin
writeln(Log, 'TASPIdevice fields :');
with CdRom1 do begin
writeln(Log, ' HAcount = ', HAcount);
writeln(Log, ' Sense[0..', sizeof(Sense)-1, '] in table form:');
LogHex(@Sense, sizeof(Sense));
writeln(Log, ' LastError = ', SCSIerrorName[LastError]);
writeln(Log, ' ShortTimeout = ', ShortTimeout, ' mSec');
writeln(Log, ' MediumTimeout = ', MediumTimeout, ' mSec');
writeln(Log, ' LongTimeout = ', LongTimeout, ' mSec');
writeln(Log, ' AudioTimeout = ', AudioTimeout, ' mSec');
writeln(Log, ' DeviceID = ',
DeviceID.Adapter, ',', DeviceID.Target, ',', DeviceID.Lun);
writeln(Log, ' DeviceType = ', TScsiDeviceTypeName[DeviceType]);
end;
LogDeviceInfo;
flush(Log);
end;
procedure TForm1.EnumDevices1Click(Sender: TObject);
var
i : integer;
DT : TScsiDeviceType;
begin with EnumDevicesDlg do begin
if ShowModal = mrOk then begin
DT := TScsiDeviceType(DType.ItemIndex);
if DT = TSDInvalid then DT := TSDAny;
Report('Trying: EnumDevices(DType=' + TScsiDeviceTypeName[DT]
+ '; CBack: TCallBackProc);', TRUE);
i := CdRom1.EnumDevices(DT, LogNewDevice);
write(Log, '**** ');
if i < 2 then begin
if i = 0 then write(Log, 'No') else write(Log, 'Only');
writeln(Log, ' one device found.');
end else writeln(Log, '**** Total ', i, ' devices found.');
flush(Log);
end;
end; end;
procedure TForm1.RequestSense1Click(Sender: TObject);
var Leng : integer;
begin
Leng := SizeOf(TscsiSenseInfo);
Report(Format('Trying: SCSIrequestSense(Buf : Pointer, BufLen=%d);',
[Leng]), CdRom1.SCSIrequestSense(@IObuf, Leng));
if (CdRom1.LastError = Err_None) AND (Leng > 0) then begin
writeln(Log, ' Returned Data Buffer :');
LogHex(@IObuf, Leng);
end; end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -