--- xmil/io/pcg.c 2004/08/01 05:31:30 1.1 +++ xmil/io/pcg.c 2004/08/11 12:08:16 1.5 @@ -2,9 +2,7 @@ #include "z80core.h" #include "pccore.h" #include "iocore.h" -#include "x1_io.h" -#include "x1_crtc.h" -#include "x1_vram.h" +#include "vram.h" #include "font.h" @@ -16,16 +14,16 @@ static void pcgsync(void) { static UINT pcg_offset(void) { - if (TXT_RAM[TEXT_ATR + 0x07ff] & 0x20) { + if (tram[TRAM_ATR + 0x07ff] & 0x20) { return(0x7ff); } - if (TXT_RAM[TEXT_ATR + 0x03ff] & 0x20) { + if (tram[TRAM_ATR + 0x03ff] & 0x20) { return(0x3ff); } - if (TXT_RAM[TEXT_ATR + 0x05ff] & 0x20) { + if (tram[TRAM_ATR + 0x05ff] & 0x20) { return(0x5ff); } - if (TXT_RAM[TEXT_ATR + 0x01ff] & 0x20) { + if (tram[TRAM_ATR + 0x01ff] & 0x20) { return(0x1ff); } return(0x7ff); @@ -33,16 +31,16 @@ static UINT pcg_offset(void) { static UINT knj_offset(void) { - if (!(TXT_RAM[TEXT_ATR + 0x07ff] & 0x20)) { + if (!(tram[TRAM_ATR + 0x07ff] & 0x20)) { return(0x7ff); } - if (!(TXT_RAM[TEXT_ATR + 0x03ff] & 0x20)) { + if (!(tram[TRAM_ATR + 0x03ff] & 0x20)) { return(0x3ff); } - if (!(TXT_RAM[TEXT_ATR + 0x05ff] & 0x20)) { + if (!(tram[TRAM_ATR + 0x05ff] & 0x20)) { return(0x5ff); } - if (!(TXT_RAM[TEXT_ATR + 0x01ff] & 0x20)) { + if (!(tram[TRAM_ATR + 0x01ff] & 0x20)) { return(0x1ff); } return(0x7ff); @@ -51,12 +49,13 @@ static UINT knj_offset(void) { static UINT nowsyncoffset(void) { UINT ret; + UINT h; + UINT v; - ret = (((v_cnt - crtc.CRT_YL) / crtc.fnty) + crtc.TXT_YL) * crtc.TXT_XL - + crtc.TXT_TOP; - if (pccore.HSYNC_CLK) { - ret += (h_cnt * crtc.TXT_XL) / pccore.HSYNC_CLK; - } + v = pccore_getraster(&h); + + ret = ((v / crtc.s.fnty) * crtc.s.TXT_XL) + crtc.s.TXT_TOP; + ret += (h * crtc.s.TXT_XL) / 250; if (ret >= 0x0800) { ret = 0x07ff; // オーバーフロー @@ -71,10 +70,10 @@ void IOOUTCALL pcg_o(UINT port, REG8 val UINT off; UINT l; - if (crtc.SCRN_BITS & SCRN_PCGMODE) { + if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { off = pcg_offset(); - chr = TXT_RAM[TEXT_ANK + off]; - if (TXT_RAM[TEXT_KNJ + off] & 0x90) { + chr = tram[TRAM_ANK + off]; + if (tram[TRAM_KNJ + off] & 0x90) { chr &= 0xfe; l = port & 15; } @@ -97,7 +96,7 @@ void IOOUTCALL pcg_o(UINT port, REG8 val } else { off = nowsyncoffset(); // 990622 puni - chr = TXT_RAM[TEXT_ANK + off]; + chr = tram[TRAM_ANK + off]; if (pcg.r.vsync) { pcgsync(); } @@ -122,17 +121,17 @@ void IOOUTCALL pcg_o(UINT port, REG8 val REG8 IOINPCALL pcg_i(UINT port) { - WORD off; + UINT off; int l; BYTE chr,knj,val; val = 0xff; - if (crtc.SCRN_BITS & SCRN_PCGMODE) { + if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { l = port & 0x0f; if ((port & 0xff00) == 0x1400) { off = knj_offset(); - chr = TXT_RAM[off + TEXT_ANK]; - knj = TXT_RAM[off + TEXT_KNJ]; + chr = tram[TRAM_ANK + off]; + knj = tram[TRAM_KNJ + off]; if (knj & 0x80) { DWORD p; p = ((((DWORD)knj << 8) | chr) & 0x1fff) << 4; @@ -143,7 +142,7 @@ REG8 IOINPCALL pcg_i(UINT port) { 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]; } else { @@ -152,8 +151,8 @@ REG8 IOINPCALL pcg_i(UINT port) { } else { off = pcg_offset(); - chr = TXT_RAM[TEXT_ANK + off]; - if (TXT_RAM[TEXT_KNJ + off] & 0x90) { + chr = tram[TRAM_ANK + off]; + if (tram[TRAM_KNJ + off] & 0x90) { chr &= 0xfe; } else { @@ -176,7 +175,7 @@ REG8 IOINPCALL pcg_i(UINT port) { } else { off = nowsyncoffset(); // 990622 puni - chr = TXT_RAM[TEXT_ANK + off]; + chr = tram[TRAM_ANK + off]; if (pcg.r.vsync) { pcgsync(); }