Diff for /xmil/io/vramio.c between versions 1.3 and 1.8

version 1.3, 2004/08/07 07:19:56 version 1.8, 2008/06/02 20:07:31
Line 5 Line 5
 #include        "makescrn.h"  #include        "makescrn.h"
   
   
 // ---- text  /* text */
   
 void IOOUTCALL tram_o(UINT port, REG8 value) {  void IOOUTCALL tram_atr_o(UINT port, REG8 value) {
   
         UINT    addr;          UINT    addr;
   
         addr = LOW11(port);          addr = LOW11(port);
         if (port < 0x3000) {          if (TRAM_ATR(addr) == value) {
                 if (tram[TRAM_ATR + addr] == value) {                  return;
                         return;          }
                 }          if ((TRAM_ATR(addr) ^ value) & (TRAMATR_Yx2 | TRAMATR_Xx2)) {
                 if ((tram[TRAM_ATR + addr] ^ value) & (X1ATR_Yx2 | X1ATR_Xx2)) {                  crtc.e.remakeattr = 1;
                         makescrn.remakeattr = 1;          }
                 }          if (value & TRAMATR_BLINK) {
                 if (value & X1ATR_BLINK) {                  crtc.e.existblink = 1;
                         makescrn.existblink = 1;          }
                 }          TRAM_ATR(addr) = value;
                 tram[TRAM_ATR + addr] = value;          crtc.e.scrnflash = 1;
         }          if (TRAM_ATR(addr) & TRAMATR_Xx2) {
         else if ((port >= 0x3800) && (pccore.ROM_TYPE >= 2)) {                  TRAMUPDATE(LOW11(addr + 1)) |= UPDATE_TRAM;
                 if (tram[TRAM_KNJ + addr] == value) {  
                         return;  
                 }  
                 tram[TRAM_KNJ + addr] = value;  
         }  
         else {  
                 if (tram[TRAM_ANK + addr] == value) {  
                         return;  
                 }  
                 tram[TRAM_ANK + addr] = value;  
         }  
         makescrn.scrnflash = 1;  
         if (tram[TRAM_ATR + addr] & X1ATR_Xx2) {  
                 updatetmp[addr + 1] |= UPDATE_TVRAM;  
         }          }
         updatetmp[addr] |= UPDATE_TVRAM;          TRAMUPDATE(addr) |= UPDATE_TRAM;
 }  }
   
 REG8 IOINPCALL tram_i(UINT port) {  void IOOUTCALL tram_ank_o(UINT port, REG8 value) {
   
         UINT    addr;          UINT    addr;
   
         addr = LOW11(port);          addr = LOW11(port);
         if (port < 0x3000) {          if (TRAM_ANK(addr) == value) {
                 return(tram[TRAM_ATR + addr]);                  return;
         }          }
         else if ((port >= 0x3800) && (pccore.ROM_TYPE >= 2)) {          TRAM_ANK(addr) = value;
                 return(tram[TRAM_KNJ + addr]);          crtc.e.scrnflash = 1;
           if (TRAM_ATR(addr) & TRAMATR_Xx2) {
                   TRAMUPDATE(LOW11(addr + 1)) |= UPDATE_TRAM;
         }          }
         return(tram[TRAM_ANK + addr]);          TRAMUPDATE(addr) |= UPDATE_TRAM;
 }  }
   
   void IOOUTCALL tram_knj_o(UINT port, REG8 value) {
   
           UINT    addr;
   
           addr = LOW11(port);
           if (TRAM_KNJ(addr) == value) {
                   return;
           }
           TRAM_KNJ(addr) = value;
           crtc.e.scrnflash = 1;
           if (TRAM_ATR(addr) & TRAMATR_Xx2) {
                   TRAMUPDATE(LOW11(addr + 1)) |= UPDATE_TRAM;
           }
           TRAMUPDATE(addr) |= UPDATE_TRAM;
   }
   
 // ---------------------------------------------------------------------- grph  REG8 IOINPCALL tram_atr_i(UINT port) {
   
           return(TRAM_ATR(LOW11(port)));
   }
   
   REG8 IOINPCALL tram_ank_i(UINT port) {
   
           return(TRAM_ANK(LOW11(port)));
   }
   
   REG8 IOINPCALL tram_knj_i(UINT port) {
   
           return(TRAM_KNJ(LOW11(port)));
   }
   
   
   /* grph */
   
 void IOOUTCALL gram_o(UINT port, REG8 value) {  void IOOUTCALL gram_o(UINT port, REG8 value) {
   
         UINT8   *p;          UINT8   *p;
   
         p = crtc.e.gram + (LOW11(port) << 5) + (port >> 11);          p = crtc.e.gramacc + PORT2GRAM(port);
         if (*p == value) {          if (*p == value) {
                 return;                  return;
         }          }
         *p = value;          *p = value;
         updatetmp[port & crtc.e.updatemask] |= crtc.e.updatebit;          TRAMUPDATE(port & crtc.e.updatemask) |= crtc.e.updatebit;
         makescrn.scrnflash = 1;          crtc.e.scrnflash = 1;
 }  }
   
 REG8 IOINPCALL gram_i(UINT port) {  REG8 IOINPCALL gram_i(UINT port) {
   
         return(crtc.e.gram[(LOW11(port) << 5) + (port >> 11)]);          return(crtc.e.gramacc[PORT2GRAM(port)]);
 }  }
   
 void IOOUTCALL gram2_o(UINT port, REG8 value) {  void IOOUTCALL gram2_o(UINT port, REG8 value) {
   
         UINT8   *p;          UINT8   *p;
   
         p = crtc.e.gram + (((port << 5) + (port >> 11)) & 0xffe7);          p = crtc.e.gramacc + PORT2GRAM2(port);
         switch(port & 0xc000) {          switch((port >> 14) & 3) {
                 case 0x0000:                  case 0:
                         p[PLANE_B] = value;                          p[GRAM_B] = value;
                         p[PLANE_R] = value;                          p[GRAM_R] = value;
                         p[PLANE_G] = value;                          p[GRAM_G] = value;
                         break;                          break;
   
                 case 0x4000:                  case 1:
                         p[PLANE_R] = value;                          p[GRAM_R] = value;
                         p[PLANE_G] = value;                          p[GRAM_G] = value;
                         break;                          break;
   
                 case 0x8000:                  case 2:
                         p[PLANE_B] = value;                          p[GRAM_B] = value;
                         p[PLANE_G] = value;                          p[GRAM_G] = value;
                         break;                          break;
   
                 case 0xc000:                  case 3:
                         p[PLANE_B] = value;                          p[GRAM_B] = value;
                         p[PLANE_R] = value;                          p[GRAM_R] = value;
                         break;                          break;
         }          }
         updatetmp[port & crtc.e.updatemask] |= crtc.e.updatebit;          TRAMUPDATE(port & crtc.e.updatemask) |= crtc.e.updatebit;
         makescrn.scrnflash = 1;          crtc.e.scrnflash = 1;
 }  }
   
   
 // ----  /* reset */
   
 void vramio_reset(void) {  void vramio_reset(void) {
   
         ZeroMemory(GRP_RAM, 0x20000);          UINT    i;
         ZeroMemory(tram, 0x01800);  
         memset(tram + TRAM_ATR, 0x07, 0x800);          ZeroMemory(gram, GRAM_SIZE);
         memset(tram + TRAM_ANK, 0x20, 0x800);          for (i=0; i<0x800; i++) {
         ZeroMemory(updatetmp, sizeof(updatetmp));                  TRAM_ATR(i) = 0x07;
                   TRAM_ANK(i) = 0x20;
                   TRAM_KNJ(i) = 0x00;
                   TRAMUPDATE(i) = 0;
           }
 }  }
   

Removed from v.1.3  
changed lines
  Added in v.1.8


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