| version 1.3, 2004/08/07 07:19:56 | version 1.7, 2005/02/04 06:42:11 | 
| Line 7 | Line 7 | 
 |  |  | 
 | // ---- 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; | 
|  | } | 
|  |  | 
|  | 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))); | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 64  void IOOUTCALL gram_o(UINT port, REG8 va | Line 83  void IOOUTCALL gram_o(UINT port, REG8 va | 
 |  |  | 
 | 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; | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 114  void IOOUTCALL gram2_o(UINT port, REG8 v | Line 133  void IOOUTCALL gram2_o(UINT port, REG8 v | 
 |  |  | 
 | 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; | 
|  | } | 
 | } | } | 
 |  |  |