/*--------------------------------------------------------------------*/ /* Veddor Device Sub-vendor Sub-device Sub-aux Tiger PIO_D144 E159 0002 80 01 00 100 PIO_D96 E159 0002 80 01 10 100 PIO_D64 E159 0002 80 01 20 100 PIO_D48 E159 0002 80 01 30 100 PIO_D24 E159 0002 80 01 40 100 PIO_D56 E159 0002 80 01 40 100 PIO-D168 E159 0001 d880 01 50 320 PIO_D144 E159 0001 5c80 01 00 320 PIO_D96 E159 0001 5880 01 10 320 PIO_D64 E159 0001 4080 01 20 320 PIO_D48 E159 0001 4080 01 30 320 PIO_D24 E159 0001 c080 01 40 320 PIO_D56 E159 0001 c080 01 40 320 PIO-DA4/8/16 E159 0002 80 04 00 100 PISO-C64 E159 0002 80 08 00 100 PISO-P64 E159 0002 80 08 10 100 PISO-A64 E159 0002 80 08 50 100 PISO-DA2 E159 0002 80 0B 00 100 PISO-813 E159 0002 80 0A 00 100 PISO-725 E159 0002 80 0C 00 100 PISO-P8R8 E159 0002 80 08 30 100 PIO-DA4/8/16 E159 0001 0x4180 0x00 0x00 320 PISO-DA2 E159 0001 0x4280 0x03 0x00 320 PISO-C64 E159 0001 0x0280 0x00 0x00 320 PISO-P64 E159 0001 0x0280 0x00 0x01 320 PISO-A64 E159 0001 0x8280 0x00 0x05 320 PISO-813 E159 0001 0x4280 0x02 0x00 320 PISO-725 E159 0001 0x0380 0x00 0x00 320 PISO-P8R8SSR8 E159 0001 0x4200 0x00 0x30 320 PISO-P32C32 E159 0002 80 08 20 100 PISO-P32A32 E159 0002 80 08 70 100 PISO-730 E159 0002 80 08 40 100 PISO-730A E159 0002 80 08 80 100 PISO-P32C32 E159 0001 0280 00 20 320 PISO-P32A32 E159 0001 8280 00 70 320 PISO-730 E159 0001 c2ff 00 40 320 PISO-730A E159 0001 62ff 00 80 320 VXC-142 E159 0001 61 00 00 320 VXC-142i E159 0001 161 02 00 320 VXC-182i E159 0001 161 01 00 320 --------------------------------------------------------------------*/ #include #include #include #include #include #define BYTE unsigned char #define UCHAR unsigned char #define WORD unsigned int #define DWORD unsigned long #define TIGER100 0xE1590002 #define TIGER320 0xE1590001 #define NoError 0 #define DriverHandleError 1 #define DriverCallError 2 #define FindBoardError 3 #define TimeOut 4 #define ExceedBoardNumber 5 #define NotFoundBoard 6 #define MAX_BOARD_NUMBER 16 typedef struct { DWORD SearchID; WORD SubVendorID_320; char name[20]; }CARD_ID; const CARD_ID piso[]={ { 0x800150 , 0x1880, "PIO_D168" }, // PIO-D168 tiger100 { 0x18800150 , 0x1880, "PIO_D168" }, // PIO-D168 tiger320 { 0x800100 , 0x1c80, "PIO_D144" }, // PIO-D144 tiger100 { 0x1C800100 , 0x1c80, "PIO_D144" }, // PIO-D144 tiger320 { 0x800110 , 0x1880, "PIO_D96" }, // PIO-D96 tiger100 { 0x18800110 , 0x1880, "PIO_D96" }, // PIO-D96 tiger320 { 0x800120 , 0x80, "PIO_D64" }, // PIO-D64 tiger100/320 { 0x800140 , 0x80, "PIO_D2456" }, // PIO-D24/56 tiger100/320 { 0x800130 , 0x80, "PIO_D48" }, // PIO-D48 tiger100/320 /**********************************************************************************/ { 0x800800 , 0x280, "PISO_C64" }, // PISO-C64 tiger100 { 0x02800000 , 0x280, "PISO_C64" }, // PISO-C64 tiger320 { 0x800810 , 0x280, "PISO_P64" }, // PISO-P64 tiger100 { 0x02800010 , 0x280, "PISO_P64" }, // PISO-P64 tiger320 { 0x800850 , 0x280, "PISO_A64" }, // PISO-A64 tiger100 { 0x02800050 , 0x280, "PISO_A64" }, // PISO-A64 tiger320 { 0x800820 , 0x280, "PISO_P32C32" }, // PISO-P32C32 tiger100 { 0x02800020 , 0x280, "PISO_P32C32" }, // PISO-P32C32 tiger320 { 0x800870 , 0x280, "PISO_P32A32" }, // PISO-P32A32 tiger100 { 0x82800070 , 0x280, "PISO_P32A32" }, // PISO-P32A32 tiger320 { 0x800830 , 0x200, "PISO_P8R8SSR" }, // PISO-P8R8/P8SSR8AC/P8SSR8DC tiger100 { 0x02000030 , 0x200, "PISO_P8R8SSR" }, // PISO-P8R8/P8SSR8AC/P8SSR8DC tiger320 { 0x800840 , 0x2ff, "PISO_730" }, // PISO-730 tiger100 { 0x02FF0040 , 0x2ff, "PISO_730" }, // PISO-730 tiger320 { 0x800880 , 0x2ff, "PISO_730A" }, // PISO-730A tiger100 { 0x02FF0080 , 0x2ff, "PISO_730A" }, // PISO-730A tiger320 /************************************************************************************/ { 0x800400 , 0x180, "PIO_DA4816" }, // PIO-DA4/DA8/DA16 tiger100 { 0x01800000 , 0x180, "PIO_DA4816" }, // PIO-DA4/DA8/DA16 tiger320 { 0x800B00 , 0x280, "PISO_DA2" }, // PISO-DA2 tiger100 { 0x02800300 , 0x280, "PISO_DA2" }, // PISO-DA2 tiger320 { 0x800C00 , 0x380, "PISO_725" }, // PISO-725 tiger100 { 0x03800000 , 0x380, "PISO_725" }, // PISO-725 tiger320 { 0x800A00 , 0x280, "PISO_813" }, // PISO-813 tiger100 { 0x02800200, 0x280, "PISO_813" }, // PISO-813 tiger320 /****************************************************************************************/ { 0x610000 , 0x61, "VXC-142" }, // VXC-142 { 0x01610200 , 0x161, "VXC-142i" }, // VXC-142i { 0x01610100 , 0x161, "VXC-182i" }, // VXC-182i }; WORD TotalRecords=sizeof(piso)/sizeof(CARD_ID); float PIO_FloatSub2(float fA, float fB); short PIO_ShortSub2(short nA, short nB); WORD PIO_DriverInit(WORD *wBoards, DWORD wSubVenderID, WORD wSubDeviceID ,BYTE wSubAuxID); WORD PIO_DriverClose(void); WORD PIO_GetDriverVersion(WORD *wDriverVersion); WORD PIO_GetConfigAddressSpace(WORD wBoardNo, WORD *wBaseAddr, WORD *wIrq, WORD *wSubVendor, WORD *wSubDevice, WORD *wSubAux, WORD *wSlotBus, WORD *wSlotDevice); WORD GetAddress(void); void WriteAddress(UCHAR bBus, UCHAR bDevice, UCHAR bFunction, UCHAR bWhichLong); WORD GetSubVendorID_320(void); void _outpd(WORD port,DWORD data); DWORD _inpd(WORD port); WORD wBaseAddr=0; WORD wTotalBoards=0; WORD wActiveBoardNo=0xffff; WORD wGetAddress=0; /* [0][1] --> system resource allocated wConfigSpace[][0]= wBase wConfigSpace[][1]= wIrq [2][3][4] --> subID to identify PIO/PISO cards wConfigSpace[][2]= wSubVendorID wConfigSpace[][3]= wSubDeviceID wConfigSpace[][4]= wSubAuxID [5][6] --> SlotID to identify the slot position of this PIO/PISO card wConfigSpace[][5]= wSlotBus wConfigSpace[][6]= wSlotDevice */ WORD wConfigSpace[MAX_BOARD_NUMBER][7]; WORD ShowPioPiso(DWORD wSubVendorID, WORD wSubDevice, WORD wSubAux);