home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / dostv / dostv.c next >
C/C++ Source or Header  |  1990-06-14  |  4KB  |  106 lines

  1. #include <stdio.h>
  2. /* dostv - (C) Copyright ムンパッパ (MHB02550)     
  3.  *                         Ver. 1.0 1990/5/27
  4.  *                         Ver. 1.1 1990/5/31
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software and its
  7.  * documentation for any purpose and without fee is hereby granted,
  8.  * provided that the above copyright notice appear in all copies and that
  9.  * both that copyright notice and this permission notice appear in
  10.  * supporting documentation.
  11.  */
  12. #include <dos.h>
  13.  
  14. #define MAXBLK 32
  15.  
  16. main(argc, argv) 
  17.     int    argc;
  18.     char    *argv[];
  19. {
  20.     static short    on_tbl[MAXBLK] ={
  21.     0x86,  0x610,     0,     0,  0x71b,  0x6,   0xc,  0x12,
  22.     0x20c, 0x1a4, 0x6c9, 0x1a4,  0x6c9, 0x54, 0x20a,  0x54,
  23.     0x20a,     0, 0x1a4,  0x50,   0xa0,    0, 0x1a4,  0x80,
  24.     0x100,  0x64,   0x7, 0x101, 0x401f,  0xc,   0xb, 0x1ca};
  25.                                                /* ful=3 */
  26.  
  27.     static short    off_tbl[MAXBLK] ={
  28.     0x40,  0x320,    0,     0, 0x35f,    0,  0x10,     0,
  29.      0x36f,  0x9c, 0x31c, 0x9c, 0x31c, 0x40, 0x360,  0x40, 
  30.         0x360,     0,  0x9c,    0,  0x50,    0,  0x9c,     0,
  31.     0x80,   0x4a,   0x1,    0,  0x3f,  0x3,   0x0, 0x150};
  32.  
  33.     register int    i, argcnt;
  34.     int            bright;
  35.     static int        off_flg = 0;
  36.     static int        priority = 5;
  37.     static int        ctr = 0x15;
  38.     static short    *table = on_tbl;
  39.  
  40.     for (argcnt = 1; argc >= 2; --argc, ++argcnt) {
  41.     if ((!strcmp(argv[argcnt],"off"))||(!strcmp(argv[argcnt],"OFF"))) {
  42.         off_flg = 1;
  43.         table = off_tbl;
  44.     }
  45.     else if ((!strcmp(argv[argcnt],"ful"))||(!strcmp(argv[argcnt],"FUL"))) {
  46.             on_tbl[30] = 3;                          /* フルト-ン */
  47.     }
  48.     else if ((!strcmp(argv[argcnt],"high"))||(!strcmp(argv[argcnt],"HIGH"))) {
  49.             priority &= 0xfb;                        /* 高輝度 */
  50.     }
  51.     else if ((!strcmp(argv[argcnt],"dos"))||(!strcmp(argv[argcnt],"DOS"))) {
  52.             priority |= 0x8;                         /* ス-パ-インポ-ズOFF */
  53.             on_tbl[28] &= 0xbf;                      /* 内部同期 */
  54.     }
  55.     else if ((!strcmp(argv[argcnt],"video"))||(!strcmp(argv[argcnt],"VIDEO"))) {
  56.             ctr = 0x10;                              /* DISPLAY OFF */
  57.     }
  58.     else {
  59.             fprintf(stderr,"USAGE: %s [options]\n", argv[0]);
  60.             fprintf(stderr,"option\n");
  61.             fprintf(stderr,"    off   : TVを切る\n");
  62.             fprintf(stderr,"    ful   : フルト-ン(デフォルトはハ-フト-ン)\n");
  63.             fprintf(stderr,"    high  : 高輝度(デフォルトは低輝度)\n");
  64.             fprintf(stderr,"    dos   : MS-DOS出力のみ(デフォルトはス-パ-インポ-ズ)\n");
  65.             fprintf(stderr,"    video : ビデオ出力のみ(デフォルトはス-パ-インポ-ズ)\n");
  66.             exit(1);
  67.     }
  68.     }
  69.     outportb(0x440, (unsigned char)28);
  70.     outport(0x442, 0x3f);
  71.     while (inport(0x442) & 0x8000) ;               /* 表示終了まで待つ */
  72.  
  73.     for (i = 0; i < MAXBLK; ++i) {
  74.         outportb(0x440, (unsigned char)i);
  75.     outport(0x442, table[i]);
  76.     }
  77.     if (off_flg) {
  78.         outportb(0x448, (unsigned char)0);
  79.         outportb(0x44a, 0x15);
  80.         outportb(0x448, (unsigned char)1);
  81.         outportb(0x44a, 8);
  82.         outportb(0xfda0, 0xf);
  83.     outportb(0x440, (unsigned char)28);
  84.     outport(0x442, 0x803f);         /* ビデオ スタ-ト */
  85.         /* 電子ボリュ-ム */
  86.         outportb(0x04e1, 0x0);        /* LINE 左 OFF     */
  87.         outportb(0x04e1, 0x1);        /* LINE 右 OFF     */
  88.         outportb(0x04e0, 0x0);        /* ボリュ-ム MIN  */
  89.     }
  90.     else {
  91.         outportb(0x448, (unsigned char)0);
  92.         outportb(0x44a, ctr);
  93.         outportb(0x448, (unsigned char)1);
  94.         outportb(0x44a, priority);
  95.         outportb(0xfda0, 0xf);
  96.     outportb(0x440, (unsigned char)28);
  97.     outport(0x442, on_tbl[28] | 0x8000);         /* ビデオ スタ-ト */
  98.  
  99.         /* 電子ボリュ-ム */
  100.  
  101.         outportb(0x04e1, 0x04);        /* LINE 左 ON      */
  102.         outportb(0x04e1, 0x05);        /* LINE 右 ON      */
  103.         outportb(0x04e0, 0x3f);        /* ボリュ-ム MAX  */
  104.     }
  105. }
  106.