Diff for /np2/lio/lio.c between versions 1.9 and 1.15

version 1.9, 2004/02/21 04:48:35 version 1.15, 2004/03/04 17:36:06
Line 9 Line 9
 #include        "lio.h"  #include        "lio.h"
   
   
 static  _LIOWORK        liowork;  
   
   
 void lio_initialize(void) {  void lio_initialize(void) {
   
         UINT    i;          UINT    i;
Line 28  void lio_initialize(void) { Line 25  void lio_initialize(void) {
   
 void bios_lio(REG8 cmd) {  void bios_lio(REG8 cmd) {
   
         LIOWORK lio;          _GLIO   lio;
         UINT8   ret;          UINT8   ret;
   
 //      TRACEOUT(("lio command %.2x", cmd));  //      TRACEOUT(("lio command %.2x", cmd));
           MEML_READSTR(CPU_DS, 0x0620, &lio.work, sizeof(lio.work));
         lio = &liowork;          lio.palmode = i286_membyte_read(CPU_DS, 0x0a08);
         lio->wait = 500;          lio.wait = 0;
         switch(cmd) {          switch(cmd) {
                 case 0x00:                      // a0: GINIT                  case 0x00:                      // a0: GINIT
                         ret = lio_ginit(lio);                          ret = lio_ginit(&lio);
                         break;                          break;
   
                 case 0x01:                      // a1: GSCREEN                  case 0x01:                      // a1: GSCREEN
                         ret = lio_gscreen(lio);                          ret = lio_gscreen(&lio);
                         break;                          break;
   
                 case 0x02:                      // a2: GVIEW                  case 0x02:                      // a2: GVIEW
                         ret = lio_gview(lio);                          ret = lio_gview(&lio);
                         break;                          break;
   
                 case 0x03:                      // a3: GCOLOR1                  case 0x03:                      // a3: GCOLOR1
                         ret = lio_gcolor1(lio);                          ret = lio_gcolor1(&lio);
                         break;                          break;
   
                 case 0x04:                      // a4: GCOLOR2                  case 0x04:                      // a4: GCOLOR2
                         ret = lio_gcolor2(lio);                          ret = lio_gcolor2(&lio);
                         break;                          break;
   
                 case 0x05:                      // a5: GCLS                  case 0x05:                      // a5: GCLS
                         ret = lio_gcls(lio);                          ret = lio_gcls(&lio);
                         break;                          break;
   
                 case 0x06:                      // a6: GPSET                  case 0x06:                      // a6: GPSET
                         ret = lio_gpset(lio);                          ret = lio_gpset(&lio);
                         break;                          break;
   
                 case 0x07:                      // a7: GLINE                  case 0x07:                      // a7: GLINE
                         ret = lio_gline(lio);                          ret = lio_gline(&lio);
                         break;                          break;
   
 //              case 0x08:                      // a8: GCIRCLE  //              case 0x08:                      // a8: GCIRCLE
Line 78  void bios_lio(REG8 cmd) { Line 75  void bios_lio(REG8 cmd) {
 //                      break;  //                      break;
   
                 case 0x0b:                      // ab: GGET                  case 0x0b:                      // ab: GGET
                         ret = lio_gget(lio);                          ret = lio_gget(&lio);
                         break;                          break;
   
                 case 0x0c:                      // ac: GPUT1                  case 0x0c:                      // ac: GPUT1
                         ret = lio_gput1(lio);                          ret = lio_gput1(&lio);
                         break;                          break;
   
                 case 0x0d:                      // ad: GPUT2                  case 0x0d:                      // ad: GPUT2
                         ret = lio_gput2(lio);                          ret = lio_gput2(&lio);
                         break;                          break;
   
 //              case 0x0e:                      // ae: GROLL  //              case 0x0e:                      // ae: GROLL
 //                      break;  //                      break;
   
                 case 0x0f:                      // af: GPOINT2                  case 0x0f:                      // af: GPOINT2
                         ret = lio_gpoint2(lio);                          ret = lio_gpoint2(&lio);
                         break;                          break;
   
 //              case 0x10:                      // ce: GCOPY  //              case 0x10:                      // ce: GCOPY
Line 104  void bios_lio(REG8 cmd) { Line 101  void bios_lio(REG8 cmd) {
                         break;                          break;
         }          }
         CPU_AH = ret;          CPU_AH = ret;
         gdcsub_setslavewait(lio->wait);          if (lio.wait) {
                   gdcsub_setslavewait(lio.wait);
           }
 }  }
   
   
Line 112  void bios_lio(REG8 cmd) { Line 111  void bios_lio(REG8 cmd) {
   
 const UINT32 lioplaneadrs[4] = {VRAM_B, VRAM_R, VRAM_G, VRAM_E};  const UINT32 lioplaneadrs[4] = {VRAM_B, VRAM_R, VRAM_G, VRAM_E};
   
 void lio_updatedraw(LIOWORK lio) {  void lio_updatedraw(GLIO lio) {
   
         UINT8   flag;          UINT8   flag;
         UINT8   colorbit;          UINT8   colorbit;
Line 126  void lio_updatedraw(LIOWORK lio) { Line 125  void lio_updatedraw(LIOWORK lio) {
                 flag |= LIODRAW_4BPP;                  flag |= LIODRAW_4BPP;
                 colorbit = 4;                  colorbit = 4;
         }          }
         switch(lio->mem.scrnmode) {          switch(lio->work.scrnmode) {
                 case 0:                  case 0:
                         if (lio->mem.pos & 1) {                          if (lio->work.pos & 1) {
                                 flag |= LIODRAW_UPPER;                                  flag |= LIODRAW_UPPER;
                         }                          }
                         maxline = 199;                          maxline = 199;
                         break;                          break;
   
                 case 1:                  case 1:
                         flag |= lio->mem.pos % colorbit;                          flag |= lio->work.pos % colorbit;
                         flag |= LIODRAW_MONO;                          flag |= LIODRAW_MONO;
                         if (lio->mem.pos >= colorbit) {                          if (lio->work.pos >= colorbit) {
                                 flag |= LIODRAW_UPPER;                                  flag |= LIODRAW_UPPER;
                         }                          }
                         maxline = 199;                          maxline = 199;
                         break;                          break;
   
                 case 2:                  case 2:
                         flag |= lio->mem.pos % colorbit;                          flag |= lio->work.pos % colorbit;
                         flag |= LIODRAW_MONO;                          flag |= LIODRAW_MONO;
                         break;                          break;
         }          }
         lio->draw.flag = flag;          lio->draw.flag = flag;
         lio->draw.palmax = 1 << colorbit;          lio->draw.palmax = 1 << colorbit;
   
         tmp = (SINT16)LOADINTELWORD(lio->mem.viewx1);          tmp = (SINT16)LOADINTELWORD(lio->work.viewx1);
         lio->draw.x1 = max(tmp, 0);          lio->draw.x1 = max(tmp, 0);
         tmp = (SINT16)LOADINTELWORD(lio->mem.viewy1);          tmp = (SINT16)LOADINTELWORD(lio->work.viewy1);
         lio->draw.y1 = max(tmp, 0);          lio->draw.y1 = max(tmp, 0);
         tmp = (SINT16)LOADINTELWORD(lio->mem.viewx2);          tmp = (SINT16)LOADINTELWORD(lio->work.viewx2);
         lio->draw.x2 = min(tmp, 639);          lio->draw.x2 = min(tmp, 639);
         tmp = (SINT16)LOADINTELWORD(lio->mem.viewy2);          tmp = (SINT16)LOADINTELWORD(lio->work.viewy2);
         lio->draw.y2 = min(tmp, maxline);          lio->draw.y2 = min(tmp, maxline);
         if (!gdcs.access) {          if (!gdcs.access) {
                 lio->draw.base = 0;                  lio->draw.base = 0;
Line 174  void lio_updatedraw(LIOWORK lio) { Line 173  void lio_updatedraw(LIOWORK lio) {
   
 // ----  // ----
   
 static void pixed8(const _LIOWORK *lio, UINT addr, REG8 bit, REG8 pal) {  static void pixed8(const _GLIO *lio, UINT addr, REG8 bit, REG8 pal) {
   
         BYTE    *ptr;          BYTE    *ptr;
   
Line 200  static void pixed8(const _LIOWORK *lio,  Line 199  static void pixed8(const _LIOWORK *lio, 
                 else {                  else {
                         ptr[VRAM_G] &= ~bit;                          ptr[VRAM_G] &= ~bit;
                 }                  }
                 if (lio->palmode == 2) {                  if (lio->draw.flag & LIODRAW_4BPP) {
                         if (pal & 8) {                          if (pal & 8) {
                                 ptr[VRAM_E] |= bit;                                  ptr[VRAM_E] |= bit;
                         }                          }
Line 220  static void pixed8(const _LIOWORK *lio,  Line 219  static void pixed8(const _LIOWORK *lio, 
         }          }
 }  }
   
 void lio_pset(const _LIOWORK *lio, SINT16 x, SINT16 y, REG8 pal) {  void lio_pset(const _GLIO *lio, SINT16 x, SINT16 y, REG8 pal) {
   
         UINT    addr;          UINT    addr;
         BYTE    bit;          BYTE    bit;
Line 238  void lio_pset(const _LIOWORK *lio, SINT1 Line 237  void lio_pset(const _LIOWORK *lio, SINT1
         pixed8(lio, addr, bit, pal);          pixed8(lio, addr, bit, pal);
 }  }
   
 void lio_line(const _LIOWORK *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal) {  #if 0
   void lio_line(const _GLIO *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal) {
   
         UINT    addr;          UINT    addr;
         BYTE    bit, dbit;          BYTE    bit, dbit;
Line 264  void lio_line(const _LIOWORK *lio, SINT1 Line 264  void lio_line(const _LIOWORK *lio, SINT1
         }          }
         gdcs.grphdisp |= lio->draw.sbit;          gdcs.grphdisp |= lio->draw.sbit;
         dbit = 0;          dbit = 0;
         while(bit && width--) {          while((bit) && (width)) {
                 dbit |= bit;                  dbit |= bit;
                 bit >>= 1;                  bit >>= 1;
                   width--;
         }          }
         pixed8(lio, addr, dbit, pal);          pixed8(lio, addr, dbit, pal);
         addr++;          addr++;
Line 277  void lio_line(const _LIOWORK *lio, SINT1 Line 278  void lio_line(const _LIOWORK *lio, SINT1
         }          }
         dbit = 0;          dbit = 0;
         bit = 0x80;          bit = 0x80;
         while(bit && width--) {          while((bit) && (width)) {
                 dbit |= bit;                  dbit |= bit;
                 bit >>= 1;                  bit >>= 1;
                   width--;
         }          }
         if (dbit) {          if (dbit) {
                 pixed8(lio, addr, dbit, pal);                  pixed8(lio, addr, dbit, pal);
         }          }
 }  }
   #endif
   
   
   #if 0
 void lio_look(UINT vect) {  void lio_look(UINT vect) {
   
         BYTE    work[16];          BYTE    work[16];
Line 310  void lio_look(UINT vect) { Line 314  void lio_look(UINT vect) {
                         work[6], work[7], work[8], work[9]));                          work[6], work[7], work[8], work[9]));
         }          }
 }  }
   #endif
   

Removed from v.1.9  
changed lines
  Added in v.1.15


RetroPC.NET-CVS <cvs@retropc.net>