home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / pao / etc / sno.c < prev    next >
Text File  |  1990-06-14  |  2KB  |  103 lines

  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. void main()
  5. {
  6.     unsigned char srom[32], work ;
  7.     unsigned char name[7], sno[5] ;
  8.     unsigned short mid ;
  9.     int        c, cc ;
  10.  
  11.     outp( 0x0032,0x40 ) ;            /*  シリアルROMアドレスリセット    */
  12.     outp( 0x0032,0xc0 ) ;
  13.     outp( 0x0032,0x40 ) ;
  14.  
  15.     for ( cc=0; cc<32; cc++ ) {
  16.         work = 0 ;
  17.         srom[cc] = 0 ;
  18.         for ( c=0; c<8; c++ ) {
  19.             work = ( inp( 0x0032 ) & 0x01 ) ;
  20.             if ( c )
  21.                 work <<= c ;
  22.             srom[cc] |= work ;
  23.             outp( 0x0032,0 ) ;
  24.             outp( 0x0032,0x40 ) ;
  25.         }
  26.     }
  27.     printf("...... 00 01 02 03 04 05 06 07 - 08 09 0A 0B 0C 0D 0E 0F\n") ;
  28.     for ( c=0; c<32; c++ ) {
  29.         if ( c % 16 == 0 )
  30.             printf("%06d ",c/16) ;
  31.         printf("%02x ",srom[c]) ;
  32.         if ( (c+9) % 16 == 0 )
  33.             printf("- ") ;
  34.         if ( (c+1) % 16 == 0 )
  35.             printf("\n") ;
  36.     }
  37.     printf("\n") ;
  38. /*
  39. **    19 - 0
  40. */
  41.     printf("アドレス : 19 - 0\n") ;
  42.     printf("      : ") ;
  43.     printf("%02x",(srom[2] & 0x0f)) ;
  44.     printf("%02x",srom[1]) ;
  45.     printf("%02x",srom[0]) ;
  46.     printf("\n") ;
  47. /*
  48. **    55 - 20 / シリアルNo.
  49. */
  50.     printf("アドレス : 55 - 20\n") ;
  51.     printf("      : ") ;
  52.     printf("%02x",srom[6]) ;
  53.     sno[0] = srom[6] ;
  54.     printf("%02x",srom[5]) ;
  55.     sno[1] = srom[5] ;
  56.     printf("%02x",srom[4]) ;
  57.     sno[2] = srom[4] ;
  58.     printf("%02x",srom[3]) ;
  59.     sno[3] = srom[3] ;
  60.     printf("%02x",(srom[2] & 0xf0)) ;
  61.     sno[4] = ( srom[2] & 0xf0 ) ;
  62.     printf("\n") ;
  63.     printf("\x1b[1;36m") ; 
  64.     printf("シリアルNo. : ") ;
  65.     for ( c=0; c<4; c++ )
  66.         printf("%02x",sno[c]) ;
  67.     printf("%01x",(sno[c] & 0xf0)) ;
  68.     printf("\x1b[m") ; 
  69.     printf("\n") ;
  70. /*
  71. **    71 - 56 / 機種番号
  72. */
  73.     printf("アドレス : 71 - 56\n") ;
  74.     printf("      : ") ;
  75.     printf("%02x",srom[8]) ;
  76.     printf("%02x",srom[7]) ;
  77.     printf("\n") ;
  78.     mid = srom[8] ;
  79.     mid <<= 8 ;
  80.     mid |= srom[7] ;
  81.     printf("\x1b[1;36m") ; 
  82.     printf("機種番号 : %04x\x1b[m\n",mid) ;
  83. /*
  84. **    255 - 72 / name
  85. */
  86.     printf("アドレス : 255 - 72\n") ;
  87.     printf("      : ") ;
  88.     for ( c=31; c>=9; c-- )
  89.         printf("%02x",srom[c]) ;
  90.     printf("\n") ;
  91.     work = srom[31] ;
  92.     for ( c=0; c<7; c++ ) {
  93.         name[c] = ( ( work & 0x0f ) << 4 ) ;
  94.         work = srom[30-c] ;
  95.         name[c] |= ( ( work & 0xf0 ) >> 4 ) ;
  96.     }
  97.     name[7] = NULL ;
  98.     printf("\x1b[1;36m") ; 
  99.     printf("name : %s",name) ;
  100.     printf("\x1b[m\n") ; 
  101. }
  102.  
  103.