// uif_iocheck.cpp : IOCheck // #include "stdafx.h" #include "univiflib.h" #include #include #include #include int _tmain(int argc, _TCHAR* argv[]) { int bsn=-1,i,j,f,debug=0; int base; debug=0; char *endptr; // オプションチェック if((argc>1)&&(strncmp(argv[1],"-d",2)==0)) { debug=1; uiflib_debug=1; argc--; argv++; } if(argc<2) { fprintf(stderr,"\nuif_iocheck \n\n"); DumpDeviceList(); return 2; } bsn=strtol(argv[1],&endptr,16); if((bsn<0) || (bsn>31)) { fprintf(stderr,"Illegal BSN: %d\n",bsn); return 3; } fprintf(stderr,"Loading configuration for IOCheck access\n"); char *ttfname="uif_apci54.ttf"; if(ConfigureUNIVIF(bsn,ttfname)) { fprintf(stderr,"\nCannot load TTF file\n"); DumpDeviceList(); return 1; } // ====================================================================== base=GetUNIVIFBaseAddress(bsn); unsigned char b; b=inb(base+7); fprintf(stderr,"Device magic: %02X(%d)\n",b,b); // 全入力 outb(0xff,base+6); outb(b,base+7); f=0; for(i=0;i<6;i++) { b=inb(base+i); if(b!=0xff) { fprintf(stderr,"port %d is not opened? : %02X\n",i,b); f=1; } } if(f==1) { fprintf(stderr,"Port output check is disabled\n"); return 4; } outb(0x0,base+6); for(j=0;j<256;j++) { fprintf(stderr,"data %02X ",j); for(i=0;i<6;i++) { outb(j,base+i); if(inb(i+base)==j) { fprintf(stderr,"%d:OK ",i); } else { fprintf(stderr,"port %d:NG\n",i); } } fprintf(stderr,"\r"); fflush(stderr); fflush(stdout); usleep(50000); } fprintf(stderr,"\n\n"); outb(0xff,base+6); b=inb(base+7); outb(~b,base+7); // disabled return 0; }