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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb.pas

?? USB for DOS in pascal
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
        begin
          { Redirect IRQD = Register 63h  to ISA-BUS IRQ }
          command:=IntNo+ord(not active)*128; { Set interrupt Number to MSB }
          command2:=1 shl intno;
          if command2>255 then
              begin
                dummy:=port[$4d1] and (not (command2 shr 8));
                port[$4d1]:=port[$4d1] and (not (command2 shr 8));
              end else
              begin
                dummy:=port[$4d0] and (not (command2 shr 8));
                port[$4d0]:=port[$4d0] and (not (command2));
              end;
          dummy:=port[$21];
          if writePCIRegisterByte($63,ISABusNumber,ISAFunctionNumber,command) then
            begin
              dummy:=port[$21];
              { Set Interrupt Sensitive Mode }
                okay:=true;
            end;
          if intno>7 then
             begin
               asm
                 in al,0a1h
                 mov cl,byte ptr intno
                 sub cl,8
                 mov dl,1
                 shl dl,cl
                 not dl
                 and al,dl
                 out 0a1h,al
                 in al,021h
                 mov dl,2
                 not dl
                 and al,dl
                 out 021h,al
               end;
             end else
             begin
               asm
                 in al,021h
                 mov cl,byte ptr intno
                 mov dl,1
                 shl dl,cl
                 not dl
                 and al,dl
                 out 021h,al
               end;
             end;

          end;
   asm
     sti
   end;
   USBSetInterruptNumber:=okay;
  end;

function USBDisable:boolean;
var okay:boolean;
begin
  okay:=false;
  if usbdetected and (USBIOspace<>0) then
    if WritePCIRegisterWord($4,USBBusNumber,USBFunctionNumber,0) then
      begin
        okay:=true;
      end;
  USBDisable:=okay;
end;

procedure usbclearframelist;
var i:word;
begin
      for i:=0 to 1023 do
        FrameListPtr^[i]:= 1; { Set Terminate }
end;

function USBAllocateFrameList(Var FList:FrameList;VAR FLBase:FrameListPointer):boolean;
var okay:boolean;
    i:word;
begin
  if memavail>8192 then
    begin
      getmem(FrameListHandle,8192);
      FrameListBase:=longint(seg(FrameListHandle^)) shl 4+longint(ofs(FrameListHandle^));
      { 4K alignment }
      FrameListBase:=longint(FrameListbase + 4096) and $fffff000;
      FrameListPtr:=getbaseptr(FrameListBase);
      FList:=FrameListPtr;
      FLBase:=FrameListBase;
      USBWriteFrameNumberReg(0);
      for i:=0 to 1023 do
        FrameListPtr^[i]:= 1; { Set Terminate }
      asm
        mov dx,USBIOSpace
        add dx,08h
        db 66h; mov ax, word ptr FrameListBase  { mov eax, ... }
        db 66h; out dx,ax                       { out dx,eax  }
      end;
      USBWriteFrameNumberReg(0);
      okay:=true;
    end;
  USBAllocateFrameList:=okay;
end;

procedure InsertTransferDescriptorInFrameList(Number:word;p:pointer);
begin
  FrameListPtr^[Number]:= getPtrBase(p) and $fffffffc;
end;

function GetLinkPointerFromFrameList(number:word):LinkPointer;
begin
  GetLinkPointerFromFrameList:=FrameListPtr^[Number] and $fffffffc;
end;

procedure InsertQueueDescriptorInFrameList(Number:word;p:pointer);
begin
  FrameListPtr^[Number]:= getPtrBase(p) and $fffffffc +2;
end;



procedure USBCommandRun;
var value:word;
begin
  value:=USBReadCommandReg;
  value:=value or 1;
  USBWriteCommandReg(value);
end;

procedure USBCommandStop;
var value:word;
begin
  value:=USBReadCommandReg;
  value:=value and $fe;
  USBWriteCommandReg(value);
end;


function DetectVirtualRealMode:boolean;assembler;
asm
  smsw ax
  and ax,1
end;

function GetPtrBase(p:pointer):longint;
begin
  GetPtrBase:=longint(seg(p^)) shl 4 + longint(ofs(p^));
end;

function GetBasePtr(b:longint):pointer;
var h1,h2:longint;
begin
  h1:=b shr 4;
  h2:=b and $f;
  GetbasePtr:=Ptr(h1,h2);
end;

function AllocateTransferDescriptor:pointer;
var i,j,k:word;
    p1:^transferdescriptor;
    PA:array[1..1000] of pointer;
begin
  p1:=nil;
  getmem(p1,32);
  if ofs(p1^) and $f<>0 then
     begin
        j:=0;
        repeat
          inc(j);
          freemem(p1,32);p1:=NIL;
          getmem(pa[j],1);
          getmem(p1,32);
        until (j=1000) or (ofs(p1^)=0);
        if j=1000 then
          begin
            writeln('Fatal: Allocating TD memory error...');
            halt(3);
          end;
        for k:=1 to j do Freemem(pa[k],1);
    end;
  if p1<>NIL then
  with p1^ do
        begin
          next:=0;
          ActLen:=0;
          Status:=0;
          Flags:=0;
          token:=0;
          BufferPtr:=0;
         end;
  AllocateTransferDescriptor:=p1;
end;

procedure FreeTransferDescriptor(p:pointer);
var td:^TransferDescriptor;
begin
  freemem(p,32);
end;

function GetLinkPointerFromTransferDescriptor(p:pointer):LinkPointer;
begin
  GetLinkPointerFromTransferDescriptor:=getptrbase(p);
end;

function GetTransferDescriptorFromLinkPointer(l:linkpointer):pointer;
begin
  GetTransferDescriptorFromLinkPointer:=getbaseptr(l and $fffffffc) ;
end;

function GetTransferDescriptorFromFrameList(number:word):pointer;
begin
  GetTransferDescriptorFromFrameList:=getbaseptr(FrameListPtr^[Number] and $fffffffc);
end;

procedure AlterTransferDescriptor(p:pointer;Actln:word;State:word;IOC,IOS,LS:Boolean;C_error:byte;SPD:boolean);
var td:^TransferDescriptor;
begin
  td:=p;
  if td<>nil then with td^ do
    begin
      Actlen:=Actln;
      flags:=ord(IOC)+ord(IOS) shl 1 +ord(ls) shl 2+(c_error and 3) shl 3+ord(spd) shl 5;
      Status:=state;
    end;
end;

function CreateTransferDescriptor(Terminate,Queue,Depth:boolean;Link:linkpointer;
                                  Actln:word;State:word;IOC,IOS,LS:Boolean;C_error:byte;SPD:boolean;
                                  PID,DeviceAddress,EndPt:Byte;DataToggle:boolean;MaxLen:word;
                                  BPtr:BufferPointer):pointer; { Allocates and configures TD - Returns pointer to TD or nil }
var td:^TransferDescriptor;
begin
  td:=AllocateTransferDescriptor;
  if td<>nil then with td^ do
    begin
      next:=link and $fffffff0+ord(Terminate)+ord(Queue) shl 1+ord(Depth) shl 2;
      Actlen:=Actln;
      Status:=state;
      flags:=ord(IOC)+ord(IOS) shl 1 +ord(ls) shl 2+(c_error and 3) shl 3+ord(spd) shl 5;
      token:=pid+longint(DeviceAddress) shl 8+longint(EndPt) shl 15+longint(ord(DataToggle)) shl 19+longint(maxlen) shl 21;
      bufferPtr:=Bptr;

    end;
  CreateTransferDescriptor:=td;
end;

{$IFDEF DEBUG}
procedure USBprintLinkPtr(L:LinkPointer);
var h:longint;
    i:word;
begin
      h:=l and $fffffff0;
      write('LinkPtr:  ');
      if h=0 then write('-EMPTY- [');
      write('- [',hexs(h));
      if l and 4=4 then write('] Vf ') else write('] -- ');
      if l and 2=2 then write(' Q ') else write(' - ');
      if l and 1=1 then write(' T ') else write(' - ');
      writeln;
end;

procedure USBprintFrameList;
var i,j:word;
    l:longint;
begin
  write('FrameList---------------[',hexs(FrameListBase),']---------------------------------------');
  for i:=0 to 1023 do
    begin
      if i mod 6=0 then writeln;
      l:=FrameListPtr^[i];
      write('[',hexs(l),']');
      if l and 2=2 then write('Q') else write('-');
      if l and 1=1 then write('T') else write('-');
      write(' ');
    end;
  writeln;
  writeLn('-------------------------------------------------------------------------');
end;

procedure USBprintTD(P:pointer);
var td:^TransferDescriptor;
    i:word;
    h:longint;
    hp:^byte;
begin
  td:=p;
  with td^ do
    begin
      writeLn('Transfer Descriptor-----[',hexs(GetPtrBase(p)),']---------------------------------------');
      USBprintLinkPtr(next);
      write('Control:  ');
      if flags and 32=32 then write(' SP ') else write(' -- ');
      write('C_ERROR: ',chr(48+ord(flags and 16=16)),chr(48+ord(flags and 8=8)));
      if flags and 4=4 then write(' LS ') else write(' -- ');
      if flags and 2=2 then write(' ISO ') else write(' --- ');
      if flags and 1=1 then write(' ICO ') else write(' --- ');
      write(' Status: ',bins8(status));
      writeln(' Len: ',Actlen);
      write('Token:    MaxLen: ',Token shr 21 and $7ff);
      write('  Toggle: ',(Token shr 19) and 1);
      WRite('  EndPt:',hexs8((Token shr 15) and $f));
      WRite('  DevAddr:',hexs8((Token shr 8) and $7f));
      WRite('  PID:',hexs8((Token) and $ff));
      writeln;
      write('BufferPtr:',hexs(bufferptr));
      if bufferptr<>0 then
        begin
          write(' - ');
          hp:=getBasePtr(bufferptr);
          for i:=1 to 8 do
            begin
              write(hexs8(hp^),' ');
              inc(hp);
            end;
        end;
      writeln;


      writeLn('-------------------------------------------------------------------------');
    end;
  end;



{$ENDIF}


var oldmasterintmask:byte;
    oldslaveintmask:byte;
    old_port4d0:byte;
    old_port4d1:byte;
    old_pirqd:byte;

procedure USBDone;
begin
       port[$4d0]:=old_port4d0;
       port[$4d1]:=old_port4d1;
       WritePCIRegisterByte($63,ISABusNumber,ISAFunctionNumber,old_pirqd);
    asm
      mov al,oldslaveintmask
      out 0a1h,al
      mov al,oldmasterintmask
      out 021h,al
    end;
end;

begin
  USBdetected:=false;
  if detectPCIbios then
    begin
       USBdetected:=USBdetect(USBDeviceId,USBVendorId,USBBusNumber,USBFunctionNumber,USBdescription);
       ISAdetected:=ISAdetect(ISADeviceId,ISAVendorId,ISABusNumber,ISAFunctionNumber,ISAdescription);
       old_port4d0:=port[$4d0];
       old_port4d1:=port[$4d1];
       readPCIRegisterByte($63,ISABusNumber,ISAFunctionNumber,old_pirqd);
       asm
        in al,0a1h
        mov oldslaveIntMask,al
        in al,021h
        mov oldmasterIntMask,al
       end;
    end;
end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a4yy欧美一区二区三区| 欧美亚洲综合在线| 欧美优质美女网站| 久久久久九九视频| 天天综合日日夜夜精品| 不卡一区中文字幕| 欧美tk丨vk视频| 亚洲国产精品一区二区www在线| 国产一区二区影院| 7777精品伊人久久久大香线蕉 | 欧美高清视频在线高清观看mv色露露十八 | 色哟哟日韩精品| 久久久综合网站| 毛片av一区二区三区| 欧美日本一区二区三区四区| 国产精品夫妻自拍| 国产福利一区二区三区在线视频| 欧美亚洲精品一区| 亚洲欧美区自拍先锋| 国产精品一区二区三区四区| 日韩一级黄色片| 婷婷综合另类小说色区| 91精品福利视频| 欧美国产日韩一二三区| 国产在线不卡一区| 精品国产一区二区亚洲人成毛片| 婷婷中文字幕一区三区| 欧美午夜不卡在线观看免费| 亚洲欧洲美洲综合色网| 国产成人8x视频一区二区| 久久午夜免费电影| 狠狠色丁香婷综合久久| 欧美一级免费大片| 五月天亚洲精品| 欧美日韩国产精品成人| 午夜精品福利视频网站| 8x8x8国产精品| 日本网站在线观看一区二区三区 | 欧美电影免费观看高清完整版在| 亚洲国产色一区| 欧美午夜影院一区| 亚洲va天堂va国产va久| 欧美日韩免费电影| 丝袜美腿亚洲色图| 日韩一二在线观看| 麻豆成人久久精品二区三区红| 欧美一级在线免费| 激情偷乱视频一区二区三区| 日韩精品一区二区三区在线播放| 蜜臀久久99精品久久久久宅男 | 久久国产精品色婷婷| 日韩欧美国产电影| 国产麻豆精品视频| 亚洲日本乱码在线观看| 精品视频资源站| 久久精品国产精品亚洲精品| 国产亚洲欧美日韩在线一区| 99精品热视频| 亚洲18女电影在线观看| 日韩欧美电影一区| 成人免费毛片a| 亚洲一区二区三区在线看| 日韩亚洲国产中文字幕欧美| 国产乱子轮精品视频| 亚洲人快播电影网| 亚洲欧美中日韩| 欧美亚洲日本国产| 国产最新精品免费| 亚洲人成人一区二区在线观看| 欧美日韩国产三级| 国产电影一区二区三区| 亚洲人成网站色在线观看| 欧美一区二区三区思思人| 国产精品一区二区无线| 亚洲与欧洲av电影| 久久品道一品道久久精品| 99精品视频在线观看免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品入口麻豆原神| 欧美另类久久久品| 成人黄色免费短视频| 蜜臀av在线播放一区二区三区| 18涩涩午夜精品.www| 日韩欧美第一区| 91黄视频在线观看| 成人综合婷婷国产精品久久免费| 五月激情综合色| 亚洲视频在线一区| 国产亚洲综合色| 欧美疯狂做受xxxx富婆| 91视视频在线直接观看在线看网页在线看| 日韩精品午夜视频| 一区二区视频免费在线观看| 国产女主播在线一区二区| 日韩一区二区三区精品视频| 91久久精品日日躁夜夜躁欧美| 国产盗摄精品一区二区三区在线| 日韩av一区二区三区四区| 亚洲欧美日韩一区二区 | 欧美另类z0zxhd电影| 99精品一区二区| 成人综合婷婷国产精品久久| 久久99深爱久久99精品| 天天av天天翘天天综合网| 亚洲同性gay激情无套| 久久精品视频免费| 欧美大白屁股肥臀xxxxxx| 欧美日本在线播放| 欧美又粗又大又爽| 在线观看av一区二区| 色偷偷久久人人79超碰人人澡 | 欧美色手机在线观看| 91麻豆国产精品久久| 岛国精品在线观看| 高潮精品一区videoshd| 国产乱码精品一区二区三区忘忧草| 美女久久久精品| 麻豆精品国产91久久久久久| 日韩国产精品久久久久久亚洲| 亚洲永久免费av| 成人黄色小视频在线观看| 成人精品高清在线| 成人av网址在线| 91色九色蝌蚪| 在线观看精品一区| 欧美色网站导航| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区不卡视频在线观看| 欧美性大战久久久久久久| 欧美影院一区二区| 欧美精品久久99| 日韩亚洲欧美中文三级| 精品日韩一区二区三区| 久久久久久黄色| 亚洲视频一二三区| 亚洲成人动漫av| 久久精品国产免费看久久精品| 精品一区二区三区不卡| 国产一区不卡视频| 成人精品国产一区二区4080| 日本韩国精品在线| 日韩一区二区精品在线观看| 亚洲精品一区二区在线观看| 国产欧美日本一区视频| 亚洲乱码中文字幕综合| 五月天激情综合| 国产成人在线影院| 欧美在线观看视频在线| 精品久久久久久久一区二区蜜臀| 国产欧美综合在线观看第十页| 国产精品国产三级国产aⅴ中文| 亚洲精品国产一区二区三区四区在线| 亚洲高清免费视频| 国产伦精品一区二区三区视频青涩 | 国产一区二区在线看| 99久免费精品视频在线观看| 欧美美女网站色| 日本一区二区三区高清不卡| 亚洲尤物在线视频观看| 国产精品主播直播| 欧美视频在线观看一区| 欧美国产日产图区| 石原莉奈在线亚洲三区| www.99精品| 精品国产人成亚洲区| 中文字幕一区二区三区在线观看 | 国产成人aaa| 欧美一级免费观看| 一区二区三区在线免费视频| 日本欧美在线观看| 色噜噜久久综合| 国产日韩欧美综合一区| 丝袜美腿亚洲色图| 色综合 综合色| 国产欧美日韩一区二区三区在线观看| 亚洲国产成人tv| 成人av在线一区二区| 日韩精品在线一区| 天堂av在线一区| 在线视频观看一区| 中文字幕一区二区三区在线播放 | 亚洲欧美激情插| 成人三级在线视频| 久久综合久久综合久久综合| 视频一区视频二区中文字幕| 色噜噜狠狠成人网p站| 欧美国产国产综合| 韩国理伦片一区二区三区在线播放| 欧美日韩亚洲综合一区二区三区 | 日本va欧美va欧美va精品| 91官网在线免费观看| 国产精品久久久久一区二区三区| 久久激情五月婷婷| 日韩视频在线一区二区| 青草av.久久免费一区| 91.xcao| 久久精工是国产品牌吗| 精品日韩欧美一区二区| 国内精品写真在线观看| 精品国产乱码久久久久久牛牛|