
4.2  | DEMO1 | */  | 
/* demo 1  | : D/O demo of CN1  | |
/* step 1  | : connect a   | */  | 
/* step 2  | : run DEMO1.EXE  | */  | 
/* step 3 : check the LEDs of   | |
/*   | |
#include "PIO.H"  | |
WORD wBase,wIrq;  | |
main()  | |
{  | i1,i2,i3;  | 
int  | |
long  | i=1;  | 
WORD  | wBoards,wRetVal,t1,t2,t3,t4,t5,t6;  | 
WORD  | wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice;  | 
char  | c;  | 
clrscr();  | 
  | 
/* step1 : find   | */  | 
wRetVal=PIO_DriverInit(&wBoards,0x80,0x01,0x10);  | /* for   | 
*/
printf("\n(1) Threr are %d 
The Configuration Space  | ||
for(i=0;i<wBoards;i++)  | 
  | 
  | 
{
PIO_GetConfigAddressSpace(i,&wBase,&wIrq,&wSubVendor,&wSubDevice printf("\nCard_%d: wBase=%x,wIrq=%x,subID=[%x,%x,%x],
SlotID=[%x,%x]",i,wBase,wIrq,wSubVendor,wSubDevice,
wSubAux,wSlotBus,wSlotDevice); printf(" 
}
PIO_GetConfigAddressSpace(0,&wBase,&wIrq,&t1,&t2,&t3,&t4,&t5);
/* step2 : enable all D/I/O port  | /* select card_0 */  | 
*/  | |
outportb(wBase,1);  | /* /RESET   | 
/* step3 : configure I/O direction  | */  | 
outportb(wBase+0xcc,0x07);  | /* set CN1 as D/O ports */  | 
for (;;)  | 
  | 
{  | 
  | 
i1=i&0xff;  | 
  | 
i2=(i>>8)&0xff;  | 
  | 
i3=(i>>16)&0xff;  | 
  | 
outportb(wBase+0xc0,i1);  | 
  | 
outportb(wBase+0xc4,i2);  | 
  | 
outportb(wBase+0xc8,i3);  | 
  | 
delay(10000);  | 
  | 
i=i<<1;  | 
  | 
i=i&0x0ffffff;  | 
  | 
if (i==0) i=1;  | 
  | 
if (kbhit()!=0) return;  | 
  | 
}  | 
  | 
PIO_DriverClose();  | 
  | 
}  | 
  |