|
|
| version 1.1, 2004/08/01 05:31:30 | version 1.4, 2004/08/04 17:09:25 |
|---|---|
| Line 2 | Line 2 |
| #include "z80core.h" | #include "z80core.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "x1_io.h" | #include "vram.h" |
| #include "x1_crtc.h" | |
| #include "x1_vram.h" | |
| #include "font.h" | #include "font.h" |
| Line 16 static void pcgsync(void) { | Line 14 static void pcgsync(void) { |
| static UINT pcg_offset(void) { | static UINT pcg_offset(void) { |
| if (TXT_RAM[TEXT_ATR + 0x07ff] & 0x20) { | if (tram[TRAM_ATR + 0x07ff] & 0x20) { |
| return(0x7ff); | return(0x7ff); |
| } | } |
| if (TXT_RAM[TEXT_ATR + 0x03ff] & 0x20) { | if (tram[TRAM_ATR + 0x03ff] & 0x20) { |
| return(0x3ff); | return(0x3ff); |
| } | } |
| if (TXT_RAM[TEXT_ATR + 0x05ff] & 0x20) { | if (tram[TRAM_ATR + 0x05ff] & 0x20) { |
| return(0x5ff); | return(0x5ff); |
| } | } |
| if (TXT_RAM[TEXT_ATR + 0x01ff] & 0x20) { | if (tram[TRAM_ATR + 0x01ff] & 0x20) { |
| return(0x1ff); | return(0x1ff); |
| } | } |
| return(0x7ff); | return(0x7ff); |
| Line 33 static UINT pcg_offset(void) { | Line 31 static UINT pcg_offset(void) { |
| static UINT knj_offset(void) { | static UINT knj_offset(void) { |
| if (!(TXT_RAM[TEXT_ATR + 0x07ff] & 0x20)) { | if (!(tram[TRAM_ATR + 0x07ff] & 0x20)) { |
| return(0x7ff); | return(0x7ff); |
| } | } |
| if (!(TXT_RAM[TEXT_ATR + 0x03ff] & 0x20)) { | if (!(tram[TRAM_ATR + 0x03ff] & 0x20)) { |
| return(0x3ff); | return(0x3ff); |
| } | } |
| if (!(TXT_RAM[TEXT_ATR + 0x05ff] & 0x20)) { | if (!(tram[TRAM_ATR + 0x05ff] & 0x20)) { |
| return(0x5ff); | return(0x5ff); |
| } | } |
| if (!(TXT_RAM[TEXT_ATR + 0x01ff] & 0x20)) { | if (!(tram[TRAM_ATR + 0x01ff] & 0x20)) { |
| return(0x1ff); | return(0x1ff); |
| } | } |
| return(0x7ff); | return(0x7ff); |
| Line 52 static UINT nowsyncoffset(void) { | Line 50 static UINT nowsyncoffset(void) { |
| UINT ret; | UINT ret; |
| ret = (((v_cnt - crtc.CRT_YL) / crtc.fnty) + crtc.TXT_YL) * crtc.TXT_XL | ret = (((v_cnt - crtc.s.CRT_YL) / crtc.s.fnty) + crtc.s.TXT_YL) |
| + crtc.TXT_TOP; | * crtc.s.TXT_XL + crtc.s.TXT_TOP; |
| if (pccore.HSYNC_CLK) { | if (pccore.HSYNC_CLK) { |
| ret += (h_cnt * crtc.TXT_XL) / pccore.HSYNC_CLK; | ret += (h_cnt * crtc.s.TXT_XL) / pccore.HSYNC_CLK; |
| } | } |
| if (ret >= 0x0800) { | if (ret >= 0x0800) { |
| Line 71 void IOOUTCALL pcg_o(UINT port, REG8 val | Line 69 void IOOUTCALL pcg_o(UINT port, REG8 val |
| UINT off; | UINT off; |
| UINT l; | UINT l; |
| if (crtc.SCRN_BITS & SCRN_PCGMODE) { | if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { |
| off = pcg_offset(); | off = pcg_offset(); |
| chr = TXT_RAM[TEXT_ANK + off]; | chr = tram[TRAM_ANK + off]; |
| if (TXT_RAM[TEXT_KNJ + off] & 0x90) { | if (tram[TRAM_KNJ + off] & 0x90) { |
| chr &= 0xfe; | chr &= 0xfe; |
| l = port & 15; | l = port & 15; |
| } | } |
| Line 97 void IOOUTCALL pcg_o(UINT port, REG8 val | Line 95 void IOOUTCALL pcg_o(UINT port, REG8 val |
| } | } |
| else { | else { |
| off = nowsyncoffset(); // 990622 puni | off = nowsyncoffset(); // 990622 puni |
| chr = TXT_RAM[TEXT_ANK + off]; | chr = tram[TRAM_ANK + off]; |
| if (pcg.r.vsync) { | if (pcg.r.vsync) { |
| pcgsync(); | pcgsync(); |
| } | } |
| Line 122 void IOOUTCALL pcg_o(UINT port, REG8 val | Line 120 void IOOUTCALL pcg_o(UINT port, REG8 val |
| REG8 IOINPCALL pcg_i(UINT port) { | REG8 IOINPCALL pcg_i(UINT port) { |
| WORD off; | UINT off; |
| int l; | int l; |
| BYTE chr,knj,val; | BYTE chr,knj,val; |
| val = 0xff; | val = 0xff; |
| if (crtc.SCRN_BITS & SCRN_PCGMODE) { | if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { |
| l = port & 0x0f; | l = port & 0x0f; |
| if ((port & 0xff00) == 0x1400) { | if ((port & 0xff00) == 0x1400) { |
| off = knj_offset(); | off = knj_offset(); |
| chr = TXT_RAM[off + TEXT_ANK]; | chr = tram[TRAM_ANK + off]; |
| knj = TXT_RAM[off + TEXT_KNJ]; | knj = tram[TRAM_KNJ + off]; |
| if (knj & 0x80) { | if (knj & 0x80) { |
| DWORD p; | DWORD p; |
| p = ((((DWORD)knj << 8) | chr) & 0x1fff) << 4; | p = ((((DWORD)knj << 8) | chr) & 0x1fff) << 4; |
| Line 143 REG8 IOINPCALL pcg_i(UINT port) { | Line 141 REG8 IOINPCALL pcg_i(UINT port) { |
| val = font_knjx1t[p + l]; | val = font_knjx1t[p + l]; |
| } | } |
| } | } |
| else if (crtc.SCRN_BITS & SCRN_CPUFONT) { | else if (crtc.s.SCRN_BITS & SCRN_CPUFONT) { |
| val = font_txt[(chr << 4) + l]; | val = font_txt[(chr << 4) + l]; |
| } | } |
| else { | else { |
| Line 152 REG8 IOINPCALL pcg_i(UINT port) { | Line 150 REG8 IOINPCALL pcg_i(UINT port) { |
| } | } |
| else { | else { |
| off = pcg_offset(); | off = pcg_offset(); |
| chr = TXT_RAM[TEXT_ANK + off]; | chr = tram[TRAM_ANK + off]; |
| if (TXT_RAM[TEXT_KNJ + off] & 0x90) { | if (tram[TRAM_KNJ + off] & 0x90) { |
| chr &= 0xfe; | chr &= 0xfe; |
| } | } |
| else { | else { |
| Line 176 REG8 IOINPCALL pcg_i(UINT port) { | Line 174 REG8 IOINPCALL pcg_i(UINT port) { |
| } | } |
| else { | else { |
| off = nowsyncoffset(); // 990622 puni | off = nowsyncoffset(); // 990622 puni |
| chr = TXT_RAM[TEXT_ANK + off]; | chr = tram[TRAM_ANK + off]; |
| if (pcg.r.vsync) { | if (pcg.r.vsync) { |
| pcgsync(); | pcgsync(); |
| } | } |