/* demo 2 : DI/O demo of CON1, CON2 & CON3 */ /* step 1 : connect DB-24P to CON3 of PIO-D56/PIO-D24 */ /* : connect CON1 t0 CON2 of PIO-D56 */ /* step 2 : run DEMO2.EXE */ /* step 3 : check the information on screen D/I will same as D/O */ /* : check the result on screen will same as CON3 input */ /* -------------------------------------------------------------- */ #include "PIO.H" WORD wBase,wIrq; int main() { int i1,i2,i3,j1,j2,j3; WORD wBoards,wRetVal,t1,t2,t3,t4,t5,t6; WORD wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice; char c; long i; clrscr(); /* step1 : find address-mapping of PIO/PISO cards */ wRetVal=PIO_DriverInit(&wBoards,0x80,0x01,0x40);/* for PIO-D56/D24*/ printf("\n(1) Threr are %d PIO-D56/D24 Cards in this PC",wBoards); if ( wBoards==0 ) exit(0); printf("\n\n-------------- The Configuration Space --------------"); for(i=0;i "); ShowPioPiso(wSubVendor,wSubDevice,wSubAux); } /* select card_0 */ PIO_GetConfigAddressSpace(0,&wBase,&wIrq,&t1,&t2,&t3,&t4,&t5); /* step2 : enable all D/I/O port */ outportb(wBase,1); /* /RESET -> 1 */ /* step3 : configure I/O direction */ outportb(wBase+0xcc,0x00); /* set CON3 as D/I ports */ i=1; for (;;) { gotoxy(1,7); i1=i&0xff; i2=(i>>8)&0xff; outportb(wBase+0xd0,i1); outportb(wBase+0xd4,i2); j1=inportb(wBase+0xd0); j2=inportb(wBase+0xd4); printf("\nDO = [%2x,%2x], DI = [%2x,%2x]",i2,i1,j2,j1); if ((j1!=i1)||(j2!=i2)) { printf("\n\nError ......"); } else printf("\nO.K. ......"); j1=inportb(wBase+0xc0); j2=inportb(wBase+0xc4); j3=inportb(wBase+0xc8); printf("\n\nD/I of CON3 [PA, PB, PC] = [%2x,%2x,%2x] ",j1,j2,j3); i=i<<1; i=i&0x0ffff; if (i==0) i=1; if (kbhit()!=0) return; } PIO_DriverClose(); }