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

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

?? hubdisco.pas

?? USB for DOS in pascal
?? 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一区二区三区免费野_久草精品视频
亚洲人成小说网站色在线| 亚洲精品在线三区| 奇米影视一区二区三区小说| 夜夜亚洲天天久久| 一区二区成人在线| 亚洲自拍都市欧美小说| 亚洲一区二区视频在线观看| 亚洲国产视频a| 三级不卡在线观看| 久热成人在线视频| 国产麻豆视频一区二区| 国产suv精品一区二区6| av高清久久久| 欧美性受xxxx| 日韩一区二区在线免费观看| 精品国产免费久久| 国产精品毛片a∨一区二区三区| 欧美国产精品v| 亚洲男同性视频| 日本视频一区二区| 国产成人免费视频| 色婷婷久久综合| 欧美大胆一级视频| 国产精品免费丝袜| 亚洲成人中文在线| 国产乱码精品1区2区3区| 不卡电影一区二区三区| 欧美在线观看视频在线| 日韩精品中文字幕一区| 国产精品久久久久aaaa樱花| 亚洲国产va精品久久久不卡综合| 久久99国产精品免费网站| 成人午夜精品在线| 欧美福利电影网| 国产日韩欧美激情| 亚洲电影一区二区三区| 国产大片一区二区| 欧美在线影院一区二区| 国产亚洲视频系列| 偷拍日韩校园综合在线| av一二三不卡影片| 欧美不卡一区二区三区| 一区二区三区在线视频免费观看| 精品一区二区影视| 日本二三区不卡| 久久久久亚洲综合| 肉丝袜脚交视频一区二区| 成人免费观看男女羞羞视频| 欧美成人激情免费网| 亚洲精品成人悠悠色影视| 国产91高潮流白浆在线麻豆| 欧美日韩午夜在线| 亚洲日本乱码在线观看| 国产曰批免费观看久久久| 欧美视频自拍偷拍| 中文字幕在线不卡| 国产一区二区三区在线观看免费| 欧美日韩高清一区| 亚洲女同一区二区| 91视频.com| 国产精品每日更新在线播放网址| 国产一区二区影院| 欧美一二三区精品| 日韩精品乱码免费| 欧美视频一区在线观看| 亚洲麻豆国产自偷在线| 成人黄色小视频在线观看| 久久久一区二区三区| 捆绑变态av一区二区三区| 日韩一区二区在线播放| 日本欧美一区二区在线观看| 色婷婷综合久久久久中文一区二区 | 欧美大胆人体bbbb| 日韩二区三区四区| 正在播放一区二区| 日韩精彩视频在线观看| 欧美色综合久久| 亚洲成人av在线电影| 欧美日韩另类一区| 蜜臂av日日欢夜夜爽一区| 538prom精品视频线放| 日韩av电影一区| 日韩欧美的一区| 国产毛片一区二区| 国产精品三级电影| 9l国产精品久久久久麻豆| 亚洲天堂av老司机| 一本久道中文字幕精品亚洲嫩| 中文字幕亚洲电影| 91日韩在线专区| 午夜精品久久久久久久99水蜜桃| 欧美日韩一区 二区 三区 久久精品| 午夜久久久久久久久久一区二区| 欧美一区二区三区系列电影| 国产综合成人久久大片91| 欧美激情综合五月色丁香小说| 99麻豆久久久国产精品免费优播| 亚洲一区在线观看网站| 91精品国产综合久久蜜臀| 精品中文av资源站在线观看| 国产日韩一级二级三级| 在线欧美日韩精品| 日本亚洲三级在线| 中文字幕欧美日韩一区| 欧美性受xxxx| 国产高清一区日本| 亚洲综合丝袜美腿| 欧美va亚洲va香蕉在线| 91在线观看美女| 日本亚洲天堂网| 亚洲视频在线观看三级| 欧美日韩国产电影| 国产精品911| 亚洲成a人片综合在线| 欧美精品一区二区三区在线播放| av欧美精品.com| 蜜桃视频免费观看一区| 亚洲视频在线一区| 久久精品人人做| 欧美日韩国产天堂| av亚洲精华国产精华精华| 青青草国产精品亚洲专区无| 亚洲天堂久久久久久久| 精品国产1区二区| 欧美视频一区二区三区四区| 国产成人亚洲综合色影视| 亚洲午夜在线观看视频在线| 欧美激情艳妇裸体舞| 欧美一二三在线| 欧美日韩视频在线一区二区| 成人午夜又粗又硬又大| 久久se精品一区精品二区| 亚洲午夜激情网站| 亚洲欧洲国产专区| 国产喂奶挤奶一区二区三区| 日韩免费成人网| 欧美日韩视频第一区| 91福利视频网站| 色婷婷激情综合| 成a人片亚洲日本久久| 国产一区二区三区美女| 理论电影国产精品| 日本亚洲最大的色成网站www| 亚洲国产毛片aaaaa无费看| 中文字幕中文字幕在线一区| 久久久久国色av免费看影院| 精品噜噜噜噜久久久久久久久试看 | 一本大道久久a久久精二百| 国产iv一区二区三区| 国产精品中文字幕日韩精品| 热久久国产精品| 久久国产生活片100| 久久99精品久久只有精品| 琪琪久久久久日韩精品| 日韩不卡一区二区三区| 日韩av成人高清| 麻豆中文一区二区| 国产一区二区三区精品欧美日韩一区二区三区| 午夜精品久久久久久久蜜桃app | 欧美一区二区黄| 国产日韩欧美精品一区| 久久久影视传媒| 国产精品久久久久久久久久久免费看 | 欧美一区二区三区在线观看视频| 欧美日韩精品二区第二页| 欧美精品自拍偷拍| 91精品国产高清一区二区三区蜜臀 | 午夜影院久久久| 蜜臀久久99精品久久久画质超高清| 日本不卡视频在线| 国产麻豆91精品| 91视频www| 日韩视频一区在线观看| 精品成人a区在线观看| 久久精品欧美一区二区三区麻豆| 国产精品天干天干在观线| 一区在线观看免费| 亚洲午夜免费福利视频| 免费看黄色91| 岛国精品在线观看| 欧洲人成人精品| 日韩精品一区二区三区蜜臀| 国产日本欧美一区二区| 亚洲精品v日韩精品| 免费视频最近日韩| 国产一区二区三区美女| 欧美在线播放高清精品| 日韩欧美激情四射| 中文字幕欧美一| 日韩电影在线观看电影| 成人h精品动漫一区二区三区| 在线精品视频一区二区| 日韩欧美精品三级| 夜夜嗨av一区二区三区| 精品一区二区三区影院在线午夜| www.色综合.com| 欧美变态tickle挠乳网站| 亚洲欧美综合另类在线卡通| 首页亚洲欧美制服丝腿| av成人老司机|