亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hubdisco.pas

?? delphi下控制USB的代碼,非常不錯
?? PAS
字號:
{ Sample Program uses USB.PAS                                                }
{ -------------------------------------------------------------------------- }
{ Configures an USB 4-port-HUB-Device and enables its downstream ports       }
{ (c) 1998 by Dieter Pawelczak, <dieterp@bigfoot.de>                         }
{ This is public domain Software - selling this software is prohibeted!      }
{ -------------------------------------------------------------------------- }
{ For more info seek www.usb.org                                             }


uses dutils,pci,usb,dos,crt;

Var DeviceID,VendorID:word;         { PCI-BUS USB Device }
    BusNumber,FunctionNumber:Byte;  { PCI-BUS Address    }
    Description:string;             { PCI-BUS Ddevice Description }

    { Helpers }

    result:longint;
    IOSpace:word;
    hwint:word;
    dummytimer:word;
    hwactive:boolean;
    flbase:framelistpointer;
    flptr:framelist;

    var testbuffer:array[0..1279] of byte;
        const deviceaddress=1;

const preferredHWInterrupt=3;       { if not configured then use this HW-interrupt }
      preferredIOSpace=$120;        { if not configured then use this IO Addressspace }

{Requests to enable HUB}

const SetAddressDescriptor : USBRequest =
       (bmRequestType:$00;bRequest:$5;wValue:$0001;
        { Address for USB device at port 1 }
        wIndex:$000;wLength:$0000);

const GetHubDescriptor : USBRequest =
       (bmRequestType:$A0;bRequest:$06;wValue:$0001;wIndex:$0000;wLength:$0012);

const SetConfiguration : USBRequest =
       (bmRequestType:$00;bRequest:$9;wValue:$0001;wIndex:$0000;wLength:$000);

const GetConfiguration : USBRequest =
       (bmRequestType:$00;bRequest:$8;wValue:$0001;wIndex:$0000;wLength:$000);

const GetHubStatus : USBRequest =
       (bmRequestType:$A0;bRequest:$0;wValue:$000;wIndex:$0000;wLength:$004);

const GetDeviceDescriptor : USBRequest =
       (bmRequestType:$80;bRequest:$06;wValue:$0001;wIndex:$0000;wLength:$008);

const SetHubPortPowerFeature : USBRequest =
       (bmRequestType:$23;bRequest:$3;wValue:$0008;wIndex:$0001;wLength:$000);


var oldUsbInt:pointer;              { store original Interrupt service routine }
    serviceInt:word;                { HW-INT VEC != SW-INT VEC }


procedure slaveInterrupt;interrupt;
begin
  cprint(1,24,' XXX ',48);          { display IRQ call }
  inc(dummytimer);
  port[$20]:=$20;
  port[$A0]:=$20;
end;

procedure masterinterrupt;interrupt;
begin
  inc(dummytimer);
  cprint(1,24,' XXX ',48);          { display IRQ call }
  port[$20]:=$20;
end;

procedure USBStatus;
var status,comm:word;


begin
  status:=UsbReadStatusReg;
  comm:=UsbReadCommandReg;
  writeln('S:',bins8(status),'=',hexs8(status),'  C:',bins8(Comm),'=',hexs8(comm),
  '  FN:',hexs16(USBReadFrameNumberReg),'  FB:',hexs(USBreadFrameBaseReg)+
  '  PS:',bins16(USBreadPort0Reg),'=',hexs8(USBreadPort0Reg));
  USBWriteStatusReg($ffff);
end;

var i:word;
    sampleTD:^transferDescriptor;
    sampleTD1:^transferDescriptor;
    sampleTD2:^transferDescriptor;
    sampleTD3:^transferDescriptor;
    sampleTD4:^transferDescriptor;
    sampleTD5:^transferDescriptor;
Label DoItAgain;

begin
  clrscr;
  assign(output, '');rewrite(output);

  writeln('Testprogramm to detect and initialize the USB controller');
  writeln('and switch through a 4 PORT Hub');
  writeln;

  { Create TD for HUB initialization }

  sampleTD:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0 { Link },
                                     $0 { Actlen },
                                     $80 { $80 = active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $2d  { e1 = OUT 2d { 2d PID = SETUP },
                                     0 , { Deviceaddress }
                                     0 { EndPt },
                                     false { DataToggle },
                                     $7 { MaxLen },
                                     getPtrBase(@SetAddress));
  sampleTD1:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0{ Link },
                                     $7ff { Actlen },
                                     $80 { $80=active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $69 { 69 = PID = IN },
                                     0 { DeviceAddress },
                                     0 { EndPt },
                                     true { DataToggle },
                                     $7ff { MaxLen },
                                     getPtrBase(@testbuffer) { BufferPtr });
  sampleTD2:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0 { Link },
                                     $0 { Actlen },
                                     $80 { $80 = active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $2d  { e1 = OUT 2d { 2d PID = SETUP },
                                     1 , { Deviceaddress }
                                     0 { EndPt },
                                     false { DataToggle },
                                     $7 { MaxLen },
                                     getPtrBase(@SetConfiguration));
  sampleTD3:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0{ Link },
                                     $7ff { Actlen },
                                     $80 { $80=active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $69 { 69 = PID = IN },
                                     1 { DeviceAddress },
                                     0 { EndPt },
                                     true { DataToggle },
                                     $7ff { MaxLen },
                                     getPtrBase(@testbuffer) { BufferPtr });

  sampleTD4:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0 { Link },
                                     $0 { Actlen },
                                     $80 { $80 = active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $2d  { e1 = OUT 2d { 2d PID = SETUP },
                                     1 , { Deviceaddress }
                                     0 { EndPt },
                                     false { DataToggle },
                                     $7 { MaxLen },
                                     getPtrBase(@SetHubPortPowerFeature));
  sampleTD5:=CreateTransferDescriptor(true{ Terminate } ,
                                     false { Queue },
                                     false { Depth },
                                     0{ Link },
                                     $7ff { Actlen },
                                     $80 { $80=active Status },
                                     true { IOC },
                                     false { IOS },
                                     false { LS } ,
                                     1 { C_error: },
                                     false { SPD },
                                     $69 { 69 = PID = IN },
                                     1 { DeviceAddress },
                                     0 { EndPt },
                                     true { DataToggle },
                                     $7ff { MaxLen },
                                     getPtrBase(@testbuffer) { BufferPtr });
  { IF VR-mode then abort }
  if detectvirtualrealmode then
    begin
      writeln('System is running under V-Real Mode - abort');
      halt(3);
    end;
  { if no PCI-Bios then abort }
  if not detectPCIBios then
    begin
      writeln('PCI-BIOS not supported - abort!');
      halt(3);
    end;
  { Get USB-Controller (PCI-Configuration) }
  if USBdetect(DeviceId,VendorId,BusNumber,FunctionNumber,description) then
    begin
      writeln(description);
      writeln('---------------------');
      writeln('DeviceID:',hexs(DeviceId));
      writeln('VendorID:',hexs(VendorId));
      writeln('BusNumber:',hexs(BusNumber));
      writeln('FunctionNumber:',hexs(FunctionNumber));
    end;
  { Detect configured IO-Space Address }
  if USBGetDeviceIOSpace(IOSpace) then
      writeln('Maped I/O-Space: ',hexs(iospace));
  { Install IO-Space Address }
  if iospace<$100 then
  if USBSetDeviceIOSpace(preferredIOSpace) then
    if USBGetDeviceIOSpace(IOSpace) then
      writeln('Maped I/O-Space: ',hexs(iospace));
  { Enable PCI-Master }
  USBStatus;
  writeln('USB enable:',USBEnable);
  USBStatus;
  { Set Software programmable bit to check if IO-Space settings work }
  USBStatus;
  { Allocate page aligned Framelist }
  USBAllocateFrameList(FlPtr,FLbase);

  { Detect configured HW-Interrupt }
  USBGetInterruptNumber(hwint,hwactive);
  writelN('HW-Interrupt:',hwint:2,'  - Active:',hwactive);
  { Install HW-interrupt and Interrupt service routine }

  hwint:=preferredHWInterrupt;
  if hwint>7 then
    begin
      serviceInt:=hwint+$70;
      getintvec(serviceInt,oldUsbInt);
      setintvec(serviceInt,@slaveInterrupt);
    end else
    begin
      serviceInt:=hwint+$8;
      getintvec(serviceInt,oldUsbInt);
      setintvec(serviceInt,@masterInterrupt);
    end;
  USBSetInterruptNumber(9,false);
  USBSetInterruptNumber(hwint,True);
  { Re-Check... }
  USBGetInterruptNumber(hwint,hwactive);
  USBWriteInterruptReg($0f);  { enable all interrupt occurences }

  writelN('HW-Interrupt:',hwint:2,'  - Active:',hwactive);

  usbstatus;

  InsertTransferDescriptorInFrameList(00, SampleTD);
  InsertTransferDescriptorInFrameList(20, SampleTD1);
  InsertTransferDescriptorInFrameList(40, SampleTD2);
  InsertTransferDescriptorInFrameList(60, SampleTD3);
  InsertTransferDescriptorInFrameList(80, SampleTD4);
  InsertTransferDescriptorInFrameList(100, SampleTD5);

  DoItAgain:
  { wait for attachement }
  repeat
  until (usbReadPort0Reg and 1=1) or keypressed;
  usbstatus;
  usbWritePort0Reg(512+8+2);   { Port Reset }
  usbstatus;
  delay(50);
  usbstatus;
  usbWritePort0Reg($95);
  usbWritePort0Reg($4+8+2);
  usbWriteFrameNumberReg(0);
  usbcommandrun; { start from FrameList 0 }
  usbWritePort0Reg($4+8+2);
  usbWritePort0Reg($4+8+2);

  repeat
  usbWritePort0Reg($4+8+2);
       { Port Enable }    begin delay(100);usbstatus; end;
  if (sampleTD5^.status<>$80) then
    begin
     sampleTD5^.status:=$80;
     sampleTD4^.status:=$80;
     inc(SetHubPortPowerFeature.windex);
     if SetHubPortPowerFeature.windex>5 then
       begin
         SetHubPortPowerFeature.windex:=0;
         usbCommandstop;
         sampleTD^.status:=$80;
         sampleTD1^.status:=$80;
         sampleTD2^.status:=$80;
         sampleTD3^.status:=$80;
          goto DoItAgain;
       end;
    end;
  until keypressed;
  delay(10);
  usbcommandstop;
  usbstatus;
  writeln('Calls to USB interrupt:',dummytimer);
  USBWriteInterruptReg($00);  { Disable all interrupt occurences }
  setintvec(serviceInt,oldUsbInt);
  writeln('USB disable:',USBDisable);
  USBdone; { Restore old IRQ values }
  USBprintTD(sampleTD);
  USBprintTD(sampleTD1);
  USBprintTD(sampleTD2);
  USBprintTD(sampleTD3);
  USBprintTD(sampleTD4);
  USBprintTD(sampleTD5);
  writeln;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美经典视频| 欧美精品一区二区三| 高清国产一区二区| 免费欧美高清视频| 亚洲综合在线观看视频| 亚洲欧美日韩中文字幕一区二区三区 | 欧美日韩卡一卡二| 91免费版在线看| 91麻豆精东视频| 91天堂素人约啪| 91蜜桃在线观看| 色狠狠综合天天综合综合| 99精品视频一区二区| 成人av动漫在线| 色呦呦网站一区| 欧美日韩精品二区第二页| 欧美性欧美巨大黑白大战| 欧美日韩在线播放三区| 69堂国产成人免费视频| 欧美精品一区二| 国产精品网站在线观看| 亚洲欧美怡红院| 又紧又大又爽精品一区二区| 亚洲午夜久久久久久久久久久| 亚洲123区在线观看| 久久av老司机精品网站导航| 国产九色精品成人porny| 99热精品国产| 欧美日韩1区2区| 精品黑人一区二区三区久久 | 国产成人免费在线| 成av人片一区二区| 欧美亚洲一区三区| 日韩欧美色综合网站| 国产亚洲短视频| 亚洲乱码国产乱码精品精可以看| 亚洲成av人综合在线观看| 麻豆精品精品国产自在97香蕉 | 99视频一区二区| 日韩一区二区三区免费看 | 亚洲欧美激情视频在线观看一区二区三区| 亚洲天堂av一区| 青青草国产精品亚洲专区无| www.亚洲色图.com| 欧美一级在线观看| 亚洲欧美日韩在线播放| 裸体歌舞表演一区二区| 91影院在线免费观看| 日韩你懂的在线观看| 亚洲美女屁股眼交| 国产久卡久卡久卡久卡视频精品| 欧美日韩在线播放三区| 欧美高清在线精品一区| 日韩成人dvd| 色婷婷精品大在线视频| 国产亚洲自拍一区| 奇米一区二区三区av| jizz一区二区| 2014亚洲片线观看视频免费| 亚洲第一福利一区| 91国内精品野花午夜精品| 国产无人区一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美最新大片在线看| 最新国产精品久久精品| 国产一区 二区 三区一级| 欧美高清视频一二三区 | 日韩精品中文字幕在线一区| 午夜精品影院在线观看| 91香蕉视频污| 中文字幕一区av| 国产乱码精品一区二区三区av | 欧美精品久久一区二区三区| 自拍偷拍亚洲激情| www.在线欧美| 国产精品第四页| fc2成人免费人成在线观看播放| 久久久久久一二三区| 久久成人av少妇免费| 91精品国产综合久久精品app| 亚洲成人精品一区二区| 欧美日韩在线播放一区| 日本最新不卡在线| 欧美大肚乱孕交hd孕妇| 麻豆中文一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日本精品裸体写真集在线观看| 欧美国产视频在线| eeuss影院一区二区三区| ...av二区三区久久精品| 色综合一个色综合亚洲| 亚洲精品国产品国语在线app| 色视频一区二区| 亚洲成人动漫在线免费观看| 在线成人午夜影院| 捆绑紧缚一区二区三区视频| 欧美精品一区二区三区蜜桃视频| 国产乱子伦一区二区三区国色天香| 欧美精品一区二区蜜臀亚洲| 国产98色在线|日韩| 中文字幕在线一区免费| 欧美唯美清纯偷拍| 免费不卡在线观看| 欧美激情一区在线| 欧美在线视频你懂得| 美女mm1313爽爽久久久蜜臀| 国产欧美va欧美不卡在线| 91在线精品一区二区| 亚洲成人免费看| 国产亚洲精品bt天堂精选| 在线一区二区三区| 韩国三级中文字幕hd久久精品| 中文欧美字幕免费| 6080yy午夜一二三区久久| 国产一区二区91| 亚洲妇女屁股眼交7| 精品国产91洋老外米糕| 91看片淫黄大片一级| 免费的国产精品| 亚洲色图欧美激情| 久久亚洲一区二区三区四区| 日本韩国欧美国产| 国产一区二区三区日韩| 亚洲国产成人tv| 国产丝袜在线精品| 欧美一区二区三区不卡| 91麻豆免费在线观看| 精品一区二区三区不卡| 亚洲综合另类小说| 国产精品久久久久婷婷二区次| 欧美丰满高潮xxxx喷水动漫| 91在线小视频| 成人中文字幕合集| 久久9热精品视频| 亚洲大型综合色站| 一区二区在线看| 欧美国产一区二区| 久久综合精品国产一区二区三区| 欧美天天综合网| 99精品一区二区| 国产精品99久久久久久久vr| 日韩av中文在线观看| 一区二区三区色| 中文字幕在线不卡视频| 26uuu亚洲婷婷狠狠天堂| 91精品国产aⅴ一区二区| 日本丰满少妇一区二区三区| 岛国av在线一区| 福利电影一区二区| 国产久卡久卡久卡久卡视频精品| 久久精品国产亚洲aⅴ | 精品人在线二区三区| 欧美片网站yy| 色哟哟精品一区| 91色视频在线| 一本色道久久综合狠狠躁的推荐| 成人午夜av在线| 大美女一区二区三区| www.66久久| 色8久久精品久久久久久蜜| 91麻豆精品在线观看| 91精品1区2区| 欧美日韩中文字幕一区二区| 在线视频国产一区| 欧美三区在线观看| 欧美日本不卡视频| 日韩你懂的在线播放| 久久久久久久精| 国产精品成人免费| 亚洲激情校园春色| 日韩综合一区二区| 久久精品国产亚洲a| 国产高清无密码一区二区三区| 国产成人综合在线| 一本到高清视频免费精品| 91豆麻精品91久久久久久| 欧美日韩一本到| 日韩欧美激情在线| 国产午夜亚洲精品羞羞网站| 中文字幕在线观看一区二区| 一区二区三区日韩在线观看| 日本亚洲天堂网| 国产一区二区三区久久悠悠色av| 国产激情一区二区三区| 色综合激情五月| 日韩视频免费观看高清完整版在线观看| 欧美成人一区二区| 自拍偷自拍亚洲精品播放| 亚洲高清在线视频| 国产精品亚洲第一区在线暖暖韩国| av在线综合网| 91精品国产aⅴ一区二区| 国产精品久久久久久久久动漫| 一区二区三区国产豹纹内裤在线| 日本在线不卡一区| 成人精品小蝌蚪| 欧美日韩高清在线播放| 欧美激情一区二区三区不卡| 午夜精品一区二区三区免费视频| 成人综合在线观看|