|
|
| version 1.18, 2005/02/04 06:42:11 | version 1.19, 2008/06/02 20:07:31 |
|---|---|
| Line 4 | Line 4 |
| #include "iocore.h" | #include "iocore.h" |
| // ---- 8255 PPI〜 | /* 8255 PPI〜 */ |
| static REG8 getportb(void) { | static REG8 getportb(void) { |
| Line 14 static REG8 getportb(void) { | Line 14 static REG8 getportb(void) { |
| SINT32 clock; | SINT32 clock; |
| #endif | #endif |
| // if (subcpu.IBF) { | #if 0 |
| // subcpu.IBF = 0; | if (subcpu.IBF) { |
| // ret |= 0x40; // 1:SUB-CPU BUSY | subcpu.IBF = 0; |
| // } | ret |= 0x40; /* 1:SUB-CPU BUSY */ |
| // if (subcpu.OBF) { | } |
| // ret |= 0x20; // 1:SUB-CPU Data empty | if (subcpu.OBF) { |
| // } | ret |= 0x20; /* 1:SUB-CPU Data empty */ |
| } | |
| #endif /* 0 */ | |
| ppib = iocore.s.ppib; | ppib = iocore.s.ppib; |
| ret = ppib; | ret = ppib; |
| // ret |= cmt_test(); // THUNDER BALL | /* ret |= cmt_test(); */ /* THUNDER BALL */ |
| // /* -> */ ppib |= 0x01; | |
| iocore.s.ppib = (UINT8)((ppib & (~0x40)) | 0x01); | iocore.s.ppib = (UINT8)((ppib & (~0x40)) | 0x01); |
| // ret |= cmt_read(); | /* ret |= cmt_read(); */ |
| #if defined(MAINFRAMES_OLD) | #if defined(MAINFRAMES_OLD) |
| clock = CPU_CLOCKCOUNT - iocore.e.framestartclock; | clock = CPU_CLOCKCOUNT - iocore.e.framestartclock; |
| if (clock < iocore.e.dispclock) { | if (clock < iocore.e.dispclock) { |
| ret |= 0x80; // 1:DISP | ret |= 0x80; /* 1:DISP */ |
| } | } |
| // 実機の動きを見ると どうも 読み込んだらリセットされるようだ? | /* 実機の動きを見ると どうも 読み込んだらリセットされるようだ? */ |
| // 有効範囲が絞れるならそうすべき(VSYNCを取りこぼすソフトがある | /* 有効範囲が絞れるならそうすべき(VSYNCを取りこぼすソフトがある) */ |
| clock -= iocore.e.vsyncstart; | clock -= iocore.e.vsyncstart; |
| if ((clock >= 0) && (clock < iocore.e.vpulseclock)) { | if ((clock >= 0) && (clock < iocore.e.vpulseclock)) { |
| ret |= 0x04; // 1:V-SYNC | ret |= 0x04; /* 1:V-SYNC */ |
| } | } |
| #endif | #endif |
| return(ret); | return(ret); |
| Line 54 static void setportc(REG8 dat) { | Line 55 static void setportc(REG8 dat) { |
| modify = ppi.portc ^ dat; | modify = ppi.portc ^ dat; |
| ppi.portc = dat; | ppi.portc = dat; |
| // cmt_write((REG8)(dat & 1)); | /* cmt_write((REG8)(dat & 1)); */ |
| if ((modify & 0x20) && (!(dat & 0x20))) { | if ((modify & 0x20) && (!(dat & 0x20))) { |
| iocore.s.mode = 1; | iocore.s.mode = 1; |
| // TRACEOUT(("iocore.s.mode = 1")); | /* TRACEOUT(("iocore.s.mode = 1")); */ |
| } | } |
| if (modify & 0x40) { | if (modify & 0x40) { |
| crtc_setwidth((REG8)(dat & 0x40)); | crtc_setwidth((REG8)(dat & 0x40)); |
| Line 65 static void setportc(REG8 dat) { | Line 66 static void setportc(REG8 dat) { |
| } | } |
| // ---- | /* ---- */ |
| void IOOUTCALL ppi_o(UINT port, REG8 value) { | void IOOUTCALL ppi_o(UINT port, REG8 value) { |
| Line 106 REG8 IOINPCALL ppi_i(UINT port) { | Line 107 REG8 IOINPCALL ppi_i(UINT port) { |
| switch(port & 0x0f) { | switch(port & 0x0f) { |
| case 0: | case 0: |
| // if (!(ppi.mode & 0x10)) { | #if 0 |
| // return(ppi.porta); | if (!(ppi.mode & 0x10)) { |
| // } | return(ppi.porta); |
| } | |
| #endif /* 0 */ | |
| return(ppi.porta); | return(ppi.porta); |
| case 1: | case 1: |
| Line 118 REG8 IOINPCALL ppi_i(UINT port) { | Line 121 REG8 IOINPCALL ppi_i(UINT port) { |
| return(getportb()); | return(getportb()); |
| case 2: | case 2: |
| // mode? | /* mode? */ |
| return(ppi.portc); | return(ppi.portc); |
| case 3: | case 3: |
| Line 128 REG8 IOINPCALL ppi_i(UINT port) { | Line 131 REG8 IOINPCALL ppi_i(UINT port) { |
| } | } |
| // ---- | /* initialize & reset */ |
| void ppi_initialize(void) { | void ppi_initialize(void) { |