home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / manboetc / lr50c.c < prev    next >
Text File  |  1990-06-14  |  3KB  |  124 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3.  
  4. #define ga3_addr 0x0440
  5. #define ga3_data 0x0442
  6. #define ga4_addr 0x0448
  7. #define ga4_data 0x044a
  8. #define ga6_addr 0x0458
  9. #define ga6_data 0x045a
  10.  
  11. #define PALETTE_ADDR 0x0fd90
  12. #define PALETTE_B_DATA 0x0fd92
  13. #define PALETTE_R_DATA 0x0fd94
  14. #define PALETTE_G_DATA 0x0fd96
  15.  
  16.  
  17. int ga3[]= {    0x0040,0x0320,0x0000,0x0000,0x035F,0x0000,0x0010,0x0000,
  18.                 0x036F,0x009C,0x031C,0x009C,0x031C,0x0040,0x0360,0x0040,
  19.                 0x0360,0x0000,0x009C,0x0000,0x0050,0x0000,0x009C,0x0000,
  20.                 0x0080,0x004A,0x0001,0x0000,0x001F,0x0003,0x0000,0x0150    } ;
  21.  
  22. char ga4[]= {      0x15,0x08 } ;
  23.  
  24. unsigned char palette[16][3]= {
  25.                                   0,  0,  0,
  26.                                 176,  0,  0,
  27.                                   0,176,  0,
  28.                                 176,176,  0,
  29.                                   0,  0,176,
  30.                                 176,  0,176,
  31.                                   0,176,176,
  32.                                 176,176,176,
  33.                                  64, 64, 64,
  34.                                 255,  0,  0,
  35.                                   0,255,  0,
  36.                                 255,255,  0,
  37.                                   0,  0,255,
  38.                                 255,  0,255,
  39.                                   0,255,255,
  40.                                 255,255,255
  41.                          } ;
  42.  
  43. void main()
  44. {
  45.     extern void FM_write(int, int) ;
  46.  
  47.     int        i ;
  48.     long    j ;
  49.     char    far *addr ;
  50.  
  51.     FP_SEG(addr) = 0xc000 ;
  52.     FP_OFF(addr) = 0xff81 ;
  53.     *addr = 0xf ;
  54.     outp(0xfda0,0xf) ;
  55.  
  56.     FP_OFF(addr) = 0x0000 ;
  57.     *addr = 0 ;
  58.  
  59.     movedata(0xc000, 0, 0xc000, 1, 0x7fff) ;
  60.  
  61.     FP_OFF(addr) = 0xff82 ;
  62.     *addr = 0x27 ;
  63.  
  64. /*    マスク解除    */
  65.     outp(ga6_addr,0) ;
  66.     outp(ga6_data,0xff) ;
  67.     outp(ga6_data+1,0xff) ;
  68.     outp(ga6_addr,1) ;
  69.     outp(ga6_data,0xff) ;
  70.     outp(ga6_data+1,0xff) ;
  71.  
  72. /*    ga/4設定    */
  73.     outp(ga4_addr,0) ;
  74.     outp(ga4_data,ga4[0]) ;
  75.     outp(ga4_addr,1) ;
  76.     outp(ga4_data,ga4[1] | 0x20) ;
  77.  
  78. /*    ga/3設定    */
  79.     outp(ga3_addr,0x1c) ;
  80.     outp(ga3_data+1,0) ;
  81.     while (inp(ga3_data+1) & 0x80) ;
  82.  
  83.     for (i = 0 ; i < 32 ; i++)
  84.     {
  85.         outp(ga3_addr,i) ;
  86.         outp(ga3_data  ,(ga3[i] & 0xff)) ;
  87.         outp(ga3_data+1,(ga3[i] >> 8)) ;
  88.     }
  89.     outp(ga3_addr,0x1c) ;
  90.     outp(ga3_data+1,((ga3[0x1c] >> 8) | 0x80)) ;
  91.  
  92. /*    パレット設定    */
  93.     for (i =0 ; i < 16 ; i++)
  94.     {
  95.         outp(PALETTE_ADDR,i) ;
  96.         outp(PALETTE_B_DATA,palette[i][0]) ;
  97.         outp(PALETTE_R_DATA,palette[i][1]) ;
  98.         outp(PALETTE_G_DATA,palette[i][2]) ;
  99.     }
  100.  
  101.     outp(ga4_addr,1) ;
  102.     outp(ga4_data,ga4[1]) ;
  103.  
  104. /*    FM音源のタイマBを始動    */
  105.     FM_write(0x21, 0x00) ;
  106.     FM_write(0x2c, 0x80) ;
  107.     FM_write(0x2b, 0x00) ;
  108.     FM_write(0x27, 0x30) ;
  109.     FM_write(0x26, 0xdd) ;
  110.     FM_write(0x27, 0x2a) ;
  111. }
  112.  
  113. void FM_write(addr, data)
  114. int        addr,data ;
  115. {
  116.     int        i ;
  117.  
  118.     while (inp(0x04d8) & 0x80) ;
  119.     outp(0x04d8, addr) ;
  120.     for (i = 0 ; i < 4 ; i += 1) ;
  121.     while (inp(0x04d8) & 0x80) ;
  122.     outp(0x04da, data) ;
  123. }
  124.