OSDN Git Service

/ROMCS のタイミング修正
authorsato_tiff <sato_tiff@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Mon, 29 Dec 2008 12:02:54 +0000 (12:02 +0000)
committersato_tiff <sato_tiff@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Mon, 29 Dec 2008 12:02:54 +0000 (12:02 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@221 24ea1065-a21e-4ca1-99c9-f5125deb0858

client/trunk/reader_hongkongfc.c
client/trunk/reader_onajimi.c

index 9e3820f..8592212 100644 (file)
@@ -66,23 +66,17 @@ static inline void data_port_latch(int select, long data)
 }
 
 enum{ADDRESS_CPU_OPEN, ADDRESS_CPU_CLOSE};
-static inline void address_set(long address, int cpu_open)
+static inline void address_set(long address)
 {
        long address_h = address >> 8;
        long address_l = address & 0xff;
-       if(cpu_open == ADDRESS_CPU_OPEN){
-               //hongkong ¤Î¥Ç¡¼¥¿Ç˲õ¤Ç A7toA0 ¤òÀè¤ËÀßÄê¤Ç¤­¤Ê¤¤
-               data_port_latch(DATA_SELECT_A15toA8, address_h);
-               data_port_latch(DATA_SELECT_A7toA0, address_l);
-       }else{
-               data_port_latch(DATA_SELECT_A15toA8, address_h);
-               data_port_latch(DATA_SELECT_A7toA0, address_l);
-       }
+       data_port_latch(DATA_SELECT_A15toA8, address_h);
+       data_port_latch(DATA_SELECT_A7toA0, address_l);
 }
 
 static inline u8 data_port_get(long address, int bus)
 {
-       address_set(address, 0);
+       address_set(address);
        port_control_write(DATA_SELECT_BREAK_DATA << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_WRITE);
        int s = DATA_SELECT_READ << BITNUM_CONTROL_DATA_SELECT;
        s = bit_set(s, BITNUM_CONTROL_DATA_LATCH);
@@ -168,20 +162,24 @@ static void hk_ppu_read(long address, long length, u8 *data)
        }
 }
 
+static inline void cpu_romcs_set(long address)
+{
+       data_port_latch(DATA_SELECT_A15toA8, address >> 8);
+}
+
 static void hk_cpu_6502_write(long address, long data, long wait_msec)
 {
        int c = BUS_CONTROL_BUS_STANDBY;
        //Á´¤Æ¤Î¥Ð¥¹¤ò»ß¤á¤ë
        data_port_latch(DATA_SELECT_CONTROL, c);
        // /rom ¤ò H ¤Ë¤·¤Æ¥Ð¥¹¤ò»ß¤á¤ë
-       address_set(address | ADDRESS_MASK_A15, ADDRESS_CPU_CLOSE);
+       address_set(address | ADDRESS_MASK_A15);
        
        //¦Õ2 = L, R/W=L, address set, data set
        c = bit_clear(c, BITNUM_CPU_M2);
        data_port_set(c, data); //latch¤Ï¤³¤Î´Ø¿ôÆâÉô¤Ç¹Ô¤¦
        if(address & ADDRESS_MASK_A15){
-               //address_set(address & ADDRESS_MASK_A0toA14, ADDRESS_CPU_OPEN);
-               data_port_latch(DATA_SELECT_A15toA8, (address & ADDRESS_MASK_A0toA14) >> 8);
+               cpu_romcs_set(address & ADDRESS_MASK_A0toA14);
        }
        c = bit_clear(c, BITNUM_CPU_RW);
        data_port_latch(DATA_SELECT_CONTROL, c);
@@ -197,8 +195,8 @@ static void hk_cpu_6502_write(long address, long data, long wait_msec)
        wait(wait_msec);
        //¦Õ2 = H, R/W = H, address disable, data out disable
        if(address & ADDRESS_MASK_A15){
-               //address_set(address | ADDRESS_MASK_A15, ADDRESS_CPU_CLOSE);
-               data_port_latch(DATA_SELECT_A15toA8, (address & ADDRESS_MASK_A15) >> 8);
+               //address & ADDRESS_MASK_A15 ¤ÇÆ°¤¤¤Æ¤¿..?
+               cpu_romcs_set(address | ADDRESS_MASK_A15);
        }
        data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
 }
@@ -210,7 +208,7 @@ static void hk_ppu_write(long address, long data)
        c = bit_clear(c, BITNUM_CPU_M2); //¤¿¤Ö¤ó¤¤¤ë
        data_port_latch(DATA_SELECT_CONTROL, c);
        //cpu rom ¤ò»ß¤á¤¿¥¢¥É¥ì¥¹¤òÅϤ¹
-       address_set((address & ADDRESS_MASK_A0toA12) | ADDRESS_MASK_A15, ADDRESS_CPU_CLOSE);
+       address_set((address & ADDRESS_MASK_A0toA12) | ADDRESS_MASK_A15);
        data_port_set(c, data); 
        c = bit_clear(c, BITNUM_WRITEDATA_OUTPUT);
        //CS down
@@ -241,7 +239,7 @@ static void hk_cpu_flash_write(long address, long data)
        int c = FLASH_CPU_WRITE;
        //Á´¤Æ¤Î¥Ð¥¹¤ò»ß¤á¤ë
        data_port_latch(DATA_SELECT_CONTROL, c);
-       address_set(address | ADDRESS_MASK_A15, ADDRESS_CPU_CLOSE);
+       address_set(address | ADDRESS_MASK_A15);
        data_port_set(c, data);
 /*
 W29C020
@@ -257,7 +255,7 @@ hongkong 
 */
        c = bit_clear(c, BITNUM_WRITEDATA_OUTPUT);
        //CS down
-       data_port_latch(DATA_SELECT_A15toA8, (address & ADDRESS_MASK_A0toA14) >> 8);
+       cpu_romcs_set(address & ADDRESS_MASK_A0toA14);
        //WE down
        c = bit_clear(c, BITNUM_CPU_RW);
 //     c = bit_clear(c, BITNUM_CPU_M2);
@@ -265,7 +263,7 @@ hongkong 
        //WE up
        data_port_latch(DATA_SELECT_CONTROL, FLASH_CPU_WRITE);
        //CS up
-       address_set(address | ADDRESS_MASK_A15, ADDRESS_CPU_CLOSE);
+       cpu_romcs_set(address | ADDRESS_MASK_A15);
 }
 
 const struct reader_driver DRIVER_HONGKONGFC = {
@@ -333,7 +331,7 @@ int main(int c, char **v)
                break;
        case 'c':
                data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_CPU_READ);
-               address_set(d ^ ADDRESS_MASK_A15, ADDRESS_RESET);
+               address_set(d ^ ADDRESS_MASK_A15);
                port_control_write(DATA_SELECT_BREAK_DATA << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_WRITE);
                port_control_write(DATA_SELECT_READ << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_READ);
                printf("%02x\n", _inp(PORT_DATA));
index 4ee71ff..703b42b 100644 (file)
@@ -191,7 +191,7 @@ static void reader_init(void)
        address_reset();
        /*
        namcot bus °ÂÄê½èÃÖ
-       driver_onajimi »²¾È
+       reader_hongkong »²¾È
        */
        while(i != 0){
                c = bit_set(c, BITNUM_CPU_M2);