DLL iopcisb.dll95/98/me iopcisbnt.dllnt/2000/xp WindowsSystem iopcisb.lib(95/98/me) iopcisbnt.lib(nt/2000/xp) VisualC/C++ IOPCIapi.h
HANDLEhVxD // hvxd=iopciopen(1); // (1) ID // // intret; ret=iopciclose( hvxd ); IOpciMODE( hvxd,qmode0 );// IOpciMODE0DIR( hvxd,dir1,dir2,dir3,dir4 ); // dir14 // QDIRIN // QDIROUT DWORDdata; data=iopcitportread( hvxd ); //TTL data=iopcidportread( hvxd ); // 16 ) TTL) IOpciTPortWrite( hvxd,out_data,acs,posi ); //TTL IOpciDPortWrite( hvxd,out_data,acs,posi ); // 16 ) acs QBACS QWACS: QDWACS posi / QBYTE0QBYTE1QBYTE2QBYTE3 QWORD0QWORD1
TTL)
IOpciMODE( hvxd,qmode1 );// IOpciM1DMode( hvxd,dmode); // dmode=qdmod032 QDMOD1 QDMOD216 16 QDMOD3 0I/O QDMOD4 16 0I/O // wrp IOpciINTClear( hvxd, QIOBFCLR ); // OBF IOpciTportWrite( hvxd,*wrp,acs,posi ); wrp++;// for( ){ if( IOpciINTRead( hvxd ) & QIOBFSTS ){ // OBF IOpciINTClear( hvxd, QIOBFCLR ); // OBF } } IOpciTportWrite( hvxd,*wrp,acs,posi ); wrp++; if( ) break; // rdp IOpciINTClear( hvxd, QIIBFCLR ); // IBF for( ){ if( IOpciINTRead( hvxd ) & QIIBFSTS ){ // OBF IOpciINTClear( hvxd, QIIBFCLR ); // IBF } } rdp=iopcitportread( hvxd ); rdp++; if( ) break; STB
IOpciMODE( hvxd,qmodep );// IOpciPCLKDIV( hvxd,); // IOpciPMODE( hvxd,repeat,i/o); // repeat= QPREPT_ON( )QPREPT_OFF( ) // i/o= QPDIRIN( )QPDIROUT( ) IOpciPStartADR( hvxd,0x00000 ); // IOpciPStopADR( hvxd,0x10000 ); // IOpciPSTART( hvxd ); IOpciPSTOP(HANDLE ph); // if( IOpciPBRead( hvxd)==0 ) ; IOpciINTClear( hvxd, QPENDCLR ); // for( ;; ){ if( IOpciINTRead( hvxd ) & QPENDSTS ) break; }
BYTE *pmem; // BYTE/WORD/DWORD pmem=( BYTE *)memalloc( len ); // // 8BYTE16 WORD32 DWORD // IOpciMMBLKWR(hVxD,pmem,0,len,QBACS); //len //8 512k/1M 16 1M/2M 32 2M/4M // 512k/1M IOpciMMBLKRD(hVxD,pmem,0,len,QBACS);
IOpciINTEntry( hvxd,(dword)this->getsafehwnd() ); //this->m_hwnd LRESULT CiopcisampView::WindowProc (UINT message, WPARAM wparam, LPARAM lparam) { if(message==wm_user_int){ // if((dword)lparam==(dword)hvxd){ // // CString cs=" "; if((wparam & QINT1STS)!=0){// cs+="int1 "; } if((wparam & QINT2STS)!=0){// cs+=" INT2 "; } if((wparam & QIIBFSTS)!=0){//IBF cs+=" IBF "; } if((wparam & QIOBFSTS)!=0){// OBF cs+="obf "; } if((wparam & QPENDSTS)!=0){// cs+="pend "; } cs+=" n "; MessageBox(cs); } if(lparam==(dword)hvxd1){ // } } return CFormView::WindowProc(message, wparam, lparam); }
classwizard ID IopcisampView) WindowProc [ ] message WM_USER_INT wparam lparam WM_USER_INT) WM_USER+1
iopciapi.h struct IOPCI_CONFIG_DATA{ WORD DeviceID; WORD BenderID; WORD Status; WORD Command; DWORD ClassCode; BYTE RevisionID; BYTE Bist; BYTE HeaderType; BYTE LatencyTimer; BYTE CacheLineSize; DWORD BaseAddress1; DWORD BaseAddress2; BYTE MaxLatency; BYTE MinGrant; BYTE IntPin; BYTE IntLine; }; IOpciConfigRead #defineqttlio 0x00 // TTL #defineqdifio 0x04 // #defineqmode 0x08 // #defineqmod0cnt 0x0c // #defineqmod1cnt 0x10 // #defineqintset 0x14 // #defineqtrgcnt 0x18 // #defineqmodpcnt 0x1c // #defineqptstart 0x20 // #defineqptsadr 0x24 // #defineqpteadr 0x28 // #defineqdipsw 0x2c //
#defineqmode0 0 // #defineqmode1 1 // #defineqmodep 2 // #defineqdmod0 0 // #defineqdmod1 1 // #defineqdmod2 2 // #defineqdmod3 3 // #defineqdmod4 4 // #defineqdirin 0 // #defineqdirout 1 // #defineqint1msk 0x01 // #defineqint2msk 0x02 // #defineqiibfmsk 0x04 // #defineqiobfmsk 0x08 // #defineqpendmsk0x10 // #defineqint1clr 0x01 // #defineqint2clr 0x02 // #defineqiibfclr 0x04 // #defineqiobfclr 0x08 // #defineqpendclr0x10 // #defineqsibfclr 0x40 // #defineqsobfclr 0x80 // #defineqint1sts 0x01 // #defineqint2sts 0x02 // #defineqiibfsts0x04 // #defineqiobfsts0x08 // #defineqpendsts 0x10 // #defineqsibfsts0x40 // #defineqsobfsts 0x80 // #defineqbacs 0 // #defineqwacs1 // #defineqdwacs 2 //
#defineqbyte0 0 // #defineqbyte1 1 // #defineqbyte2 2 // #defineqbyte3 3 // #defineqword0 0 // #defineqword1 2 // #defineqtrgplus #defineqtrgminus 1 // + 0 // - #defineqprept_on 1 // #defineqprept_off0 // #defineqpdirin 0 // #defineqpdirout 1 // #defineqptbusy 1 //
No. 1 IopciOpen 2 IOpciClose 3 IopciMode I/O 4 IOpciMode0DIR I/O 5 IOpciTPortRead 6 IOpciTPortWrite 7 IOpciDPortRead 8 IOpciDPortWrite 9 IOpciM1DMode I/O 10 IOpciTRG1W 11 IOpciTRG1P 12 IOpciTRG1OUT 13 IOpciTRG2W 14 IOpciTRG2P 15 IOpciTRG2OUT 16 IOpciPCLKDIV 17 IOpciPMODE 18 IOpciPSTART 19 IOpciPSTOP 20 IOpciPBRead 21 IOpciPStartADR 22 IOpciPStopADR 23 IOpciDIPSWRead 24 IOpciINTMask 25 IOpciINTClear 26 IOpciINTRead 27 IOpciINTEntry 28 IopciConfigRead PCI 29 IOpciIORead PCII/O 30 IOpciIOWrite 31 IOpciMMRead PCI 32 IOpciMMWrite 33 IOpciMMBLKRD 34 IOpciMMBLKWR 35 IopciBoardNum
HANDLEIOpciOpen(BYTEp1) BYTEp1: Sw-No DIP-SW 1 ON 0 OFF HANDLE HANDLE INVALID_HANDLE_VALUE-1
intiopciclose(handleph) HANDLEph int
voidiopcimode(handleph,bytep1) HANDLEph BYTEp1 QMODE0 QMODE1 QMODEP
voidiopcimode0dir(handle ph,byte p1,byte p2,byte p3,byte p4) HANDLEph BYTE p1 BYTE p2 BYTE p3 BYTE p4 QDIRIN QDIROUT
DWORDIOpciTPortRead(HANDLEph) HANDLEph DWORD 32
voidiopcitportwrite(handle ph,dword p1,byte p2,byte p3) HANDLEph DWORD p1 BYTE p2: QBACS QWACS QDWACS BYTE p3 QBYTE0QBYTE1QBYTE2QBYTE3 QWORD0QWORD1 TTL
DWORDIOpciDPortRead(HANDLE ph) HANDLEph DWORD
voidiopcidportwrite(handle ph,dword p1,byte p2,byte p3) HANDLEph DWORD p1 BYTE p2 QBACS QWACS BYTE p3 QBYTE0 QBYTE2
voidiopcim1dmode(handle ph,byte p1) HANDLEph BYTEp1 QDMOD032 QDMOD1 QDMOD216 16 QDMOD3 0I/O QDMOD4 16 0I/O
voidiopcitrg1w(handle ph,byte p1) HANDLEph BYTEp1
voidiopcitrg1p(handle ph,byte p1) HANDLEph BYTE p1 QTRGPLUS QTRGMINUS
voidiopcitrg1out(handleph) HANDLEph
voidiopcitrg2w(handle ph,byte p1) HANDLEph BYTEp1
voidiopcitrg2p(handle ph,byte p1) HANDLEph BYTE p1 QTRGPLUS QTRGMINUS
voidiopcitrg2out(handle ph) HANDLEph
voidiopcipclkdiv(handle ph,byte p1) HANDLEph BYTE p1 p1 1/11/21/41/8
voidiopcipmode(handle ph,byte p1,byte p2) HANDLEph BYTE p1 QPREPT_ON QPREPT_OFF BYTE p2 QPDIRIN : QPDIROUT:
voidiopcipstart(handle ph) HANDLEph
voidiopcipstop(handle ph) HANDLEph
BYTEIOpciPBRead(HANDLE ph) HANDLEph BYTE: NULL QPTBUSY
voidiopcipstartadr(handle ph,dword p1) HANDLE ph DWORD p1 0x000000xfffff M
voidiopcipstopadr(handle ph,dword p1) HANDLEph BYTE p1 0x000000xfffff1M
BYTEIOpciDIPSWRead(HANDLE ph) HANDLEph BYTE : ON 1 OFF 0
voidiopciintmask(handle ph,byte p1) HANDLEph BYTEp1 QINT1MSK INT1 QINT2MSK INT2 QIIBFMSKIBF QIOBFMSKOBF QPENDMSK
voidiopciintclear(handle ph,byte p1) HANDLEph BYTEp1 QINT1CLR INT1 QINT2CLR INT2 QIIBFCLRIBF QIOBFCLROBF QPENDCLR QSIBFCLRIBF QSOBFCLROBF OBFIBF
BYTEIOpciINTRead(HANDLE ph) HANDLEph BYTE: QINT1STS INT1 QINT2STS INT2 QIIBFSTSIBF QIOBFSTSOBF QPENDSTS QSIBFSTSIBF QSOBFSTSOBF
voidiopciintentry(handle ph,dword p1) HANDLEph DWORDp1
void IOpciConfigRead(HANDLE ph,struct IOPCI_CONFIG_DATA *p1) HANDLEph IOPCI_CONFIG_DATA*p1PCI PCI IOPCI_CONFIG_DATA
DWORDIOpciIORead(HANDLE ph,dword p1,byte p2) HANDLEph DWORD p1i/o BYTE p2 QBACS QWACS QDWACS DWORD
voidiopciiowrite(handle ph,dword p1,byte p2,dword p3) HANDLEph DWORDp1I/O BYTE p2 QBACS QWACS QDWACS DWORDp3
DWORDIOpciMMRead(HANDLE ph,dword p1,byte p2) HANDLEph DWORDp1 BYTE p2 QBACS QWACS QDWACS DWORD
voidiopcimmwrite(handle ph,dword p1,byte p2,dword p3) HANDLEph DWORDp1 BYTE p2 QBACS QWACS QDWACS DWORDp3
voidiopcimmblkrd(handle ph,void *p1,dword p2, DWORD p3,byte p4) HANDLEph void*p1 DWORDp2 DWORDp3 BYTE p3 QBACS QWACS QDWACS
voidiopcimmblkwr(handle ph,void *p1,dword p2, DWORD p3,byte p4) HANDLEph void*p1 DWORDp2 DWORDp3 BYTE p3 QBACS QWACS QDWACS
DWORDIOpciBoardNum(HANDLEph) HANDLEph