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

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <dos.h>
  4. #include <conio.h>
  5.  
  6. /*******************************  GET Machine ID  ****************************/
  7. /*
  8. **    < RETURN >
  9. **     機種識別 :
  10. **                Towns1,2      = 1
  11. **                Towns1,2(F,H) = 2
  12. **                R70           = 3
  13. **                R60/50        = 4
  14. **                R60/50(16dot) = 5
  15. **                R50S          = 6
  16. **                R50LT         = 7
  17. **                ???           = 0
  18. */
  19. int mid()
  20. {
  21.     union    REGS    regs ;
  22.     struct    SREGS    sregs ;
  23.     unsigned char    mdata[16] ;
  24.     unsigned char    id, cpu ;
  25.     
  26.     regs.h.ah = 0x05 ;
  27.     regs.x.di = (unsigned int)mdata ;
  28.  
  29.     segread( &sregs ) ;
  30.     int86x( 0xaf,®s,®s,&sregs ) ;
  31.  
  32.     if ( mdata[4] == 0 ) {
  33.         printf("JISキーボードを使用してますね!\n") ;
  34.     } else if ( mdata[4] == 1 ) {
  35.         printf("親指シフトキーボードを使用してますね!\n") ;
  36.     } else {
  37.         printf("キーボードは何?(%02xH)\n",mdata[4]) ;
  38.     }
  39.     id = mdata[0] ;
  40.     if ( (id & 0x07) == 0x01 ) {                /*  R60/50 系列    */
  41.         if ( (id & 0xf0) == 0x50 ) {            /*  FMTowns        */
  42.             cpu = inp( 0x31 ) ;
  43.             switch ( cpu ) {
  44.                 case 1 :
  45.                         return ( 1 ) ;            /*  モデル 1,2    */
  46.                         break ;
  47.                 case 2 :
  48.                         return ( 2 ) ;            /*  モデル 1,2(F,H)    */
  49.                         break ;
  50.                 default :
  51.                         return ( 0 ) ;            /*  ?????        */
  52.                         break ;
  53.             }
  54.         } else if ( (id & 0xf0) == 0x20 ) {        /*  R-70        */
  55.             return ( 3 ) ;
  56.         } else if ( (id & 0xf0) == 0x00 ) {        /*  R-60/50        */
  57.             if ( (mdata[3] & 0x80) == 0x80 ) {    /*  16dot        */
  58.                 return ( 5 ) ;
  59.             } else {
  60.                 return ( 4 ) ;
  61.             }
  62.         } else if ( (id & 0xf0) == 0x30) {        /*  R-50S        */
  63.             return ( 6 ) ;
  64.         } else if ( (id & 0xf0) == 0x40) {        /*  R-50LT        */
  65.             return ( 7 ) ;
  66.         } else {                                /*  ?????        */
  67.             return ( 0 ) ;
  68.         }
  69.     } else {                                    /*  ?????        */
  70.         return ( 0 ) ;
  71.     }
  72. }
  73.  
  74. void main()
  75. {
  76.     int        id ;
  77.  
  78.     id = mid() ;
  79.     switch ( id ) {
  80.         case 1 :
  81.                 printf("旧FMTOWNS(モデル 1/2)\n") ;
  82.                 break ;
  83.         case 2 :
  84.                 printf("新FMTOWNS(モデル 1/2-F/H)\n") ;
  85.                 break ;
  86.         case 3 :
  87.                 printf("FMR-70\n") ;
  88.                 break ;
  89.         case 4 :
  90.                 printf("FMR-60/50\n") ;
  91.                 break ;
  92.         case 5 :
  93.                 printf("FMR-60/50(16ドット有り)\n") ;
  94.                 break ;
  95.         case 6 :
  96.                 printf("FMR-50S\n") ;
  97.                 break ;
  98.         case 7 :
  99.                 printf("FMR-50LT\n") ;
  100.                 break ;
  101.         default :
  102.                 printf("?????\n") ;
  103.                 break ;
  104.     }
  105. }
  106.  
  107.