OSDN Git Service

[VM][FM77AV][DISPLAY] Remove duplicated reset sequence.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 15 Aug 2015 03:53:17 +0000 (12:53 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 15 Aug 2015 03:53:17 +0000 (12:53 +0900)
source/src/vm/fm7/display.cpp
source/src/vm/fm7/fm7.cpp
source/src/vm/fm7/fm7_display.h
source/src/vm/fm7/fm7_mainio.cpp

index 604497e..c4cdadf 100644 (file)
@@ -27,10 +27,9 @@ void DISPLAY::reset_cpuonly()
        int i;
        uint32 subclock;
    
-       for(i = 0; i < 8; i++) set_dpalette(i, i);
-   
-       multimode_accessmask = 0;
-       multimode_dispmask = 0;
+       //for(i = 0; i < 8; i++) set_dpalette(i, i);
+       //multimode_accessmask = 0;
+       //multimode_dispmask = 0;
    
 #if defined(_FM77AV_VARIANTS)
        if(hblank_event_id >= 0) cancel_event(this, hblank_event_id);
@@ -99,34 +98,10 @@ void DISPLAY::reset_cpuonly()
        hblank = false;
        use_alu = false;
        alu->reset();
-#endif
-#if defined(_FM77AV40) || defined(_FM77AV40EX) || defined(_FM77AV40SX)
-       mode400line = false;
-       alu->write_signal(SIG_ALU_400LINE, 0x00, 0xff);
-       mode256k = false;
-       monitor_ram = false;
-       monitor_ram_using = false;
-       vram_bank = 0;
-       
-       window_low = 0;
-       window_high = 400;
-       window_xbegin = 0;
-       window_xend = 80;
-       window_opened = false;
-       
-       kanji2_addr.d = 0;
-#endif 
-#if defined(_FM77L4)
-       mode400line = false;
-#endif
-#if defined(_FM77AV_VARIANTS)
-       //for(i = 0; i < 8; i++) io_w_latch[i + 0x13] = 0x80;
        register_event(this, EVENT_FM7SUB_VSTART, 1.0, false, &vstart_event_id);   
 #endif 
-
        vram_wrote = true;
        clr_count = 0;
-       //mainio->write_signal(FM7_MAINIO_SUB_ATTENTION, 0x00, 0x01);
 }
 
 
@@ -136,11 +111,11 @@ void DISPLAY::reset()
        
        //subcpu->write_signal(SIG_CPU_BUSREQ, 1, 1);
 
+    memset(io_w_latch, 0xff, sizeof(io_w_latch));
        halt_flag = false;
        vram_accessflag = false;
-       kanji1_addr.d = false;
+       kanji1_addr.d = 0x00000000;
        display_mode = DISPLAY_MODE_8_200L;
-       keycode_7 = 0x00;
 #if defined(_FM77L4) || defined(_FM77AV_VARIANTS)
        kanjisub = false;
 #endif 
@@ -155,28 +130,17 @@ void DISPLAY::reset()
        }
 #endif
 #if defined(_FM77AV_VARIANTS)
-       //for(i = 0; i < 8; i++) io_w_latch[i + 0x13] = 0x80;
        subrom_bank = 0;
        subrom_bank_using = subrom_bank;
        cgrom_bank = 0;
 #endif 
-       //memset(gvram, 0x00, sizeof(gvram));
-       //memset(console_ram, 0x00, sizeof(console_ram));
-       //memset(work_ram, 0x00, sizeof(work_ram));
-       //memset(shared_ram, 0x00, sizeof(shared_ram));
-       
-       
        mainio->write_signal(FM7_MAINIO_KEYBOARDIRQ, 0x00 , 0xff);
-       keyboard->reset();
+       //keyboard->reset();
        keyboard->write_signal(SIG_FM7KEY_SET_INSLED, 0x00, 0x01);
-       
-       mainio->write_signal(SIG_FM7_SUB_HALT, 0x00, 0xff);
-
        mainio->write_signal(FM7_MAINIO_SUB_ATTENTION, 0x00, 0x01);
-   
-       firq_mask = (mainio->read_signal(FM7_MAINIO_KEYBOARDIRQ_MASK) != 0) ? false : true;
+       //firq_mask = (mainio->read_signal(FM7_MAINIO_KEYBOARDIRQ_MASK) != 0) ? false : true;
+       firq_mask = false;
        key_firq_req = false;   //firq_mask = true;
-       keyboard->reset();
        reset_cpuonly();
 
        if(nmi_event_id >= 0) cancel_event(this, nmi_event_id);
@@ -185,15 +149,34 @@ void DISPLAY::reset()
    
 #if defined(_FM77AV_VARIANTS)
        use_alu = false;
-       alu->reset();
-#endif
-#if defined(_FM77AV_VARIANTS)
        alu->write_signal(SIG_ALU_X_WIDTH, 80, 0xffff);
        alu->write_signal(SIG_ALU_Y_HEIGHT, 200, 0xffff);
        alu->write_signal(SIG_ALU_400LINE, 0, 0xffffffff);
 #endif   
+#if defined(_FM77AV40) || defined(_FM77AV40EX) || defined(_FM77AV40SX)
+       mode400line = false;
+       //alu->write_signal(SIG_ALU_400LINE, 0x00, 0xff);
+       mode256k = false;
+       monitor_ram = false;
+       monitor_ram_using = false;
+       vram_bank = 0;
+       
+       window_low = 0;
+       window_high = 400;
+       window_xbegin = 0;
+       window_xend = 80;
+       window_opened = false;
+       
+       kanji2_addr.d = 0;
+#endif 
+#if defined(_FM77L4)
+       mode400line = false;
+#endif
+       for(i = 0; i < 8; i++) set_dpalette(i, i);
+       multimode_accessmask = 0;
+       multimode_dispmask = 0;
+       subcpu->write_signal(SIG_CPU_FIRQ, 0, 1);       
        subcpu->write_signal(SIG_CPU_BUSREQ, 0, 1);
-       subcpu->reset();
        //reset_cpuonly();
 }
 
@@ -925,9 +908,9 @@ void DISPLAY::set_monitor_bank(uint8 var)
        if(!halt_flag) {
                subrom_bank_using = subrom_bank;
                subcpu->write_signal(SIG_CPU_BUSREQ, 0, 1);
+               reset_cpuonly();
                subcpu->reset();
                subcpu_resetreq = false;
-               reset_cpuonly();
        } else {
                subcpu_resetreq = true;
        }
@@ -1284,9 +1267,6 @@ void DISPLAY::write_signal(int id, uint32 data, uint32 mask)
                        do_firq(flag & !(firq_mask));
                        key_firq_req = flag;
                        break;
-               case SIG_FM7KEY_PUSH_DATA: //
-                       keycode_7 = data & 0x1ff;
-                       break;
                case SIG_FM7_SUB_USE_CLR:
                        if(flag) {
                                clr_count = data & 0x03;
@@ -1458,13 +1438,9 @@ uint8 DISPLAY::read_mmio(uint32 addr)
        switch(raddr) {
                case 0x00: // Read keyboard
                        retval = (keyboard->read_data8(0x00) != 0) ? 0xff : 0x7f;
-                       //retval = ((keycode_7 & 0x100) != 0) ? 0xff : 0x7f;
                        break;
                case 0x01: // Read keyboard
                        retval = keyboard->read_data8(0x01) & 0xff;
-                       //retval = keycode_7 & 0xff;
-                       //do_firq(false);
-                       //key_firq_req = false;
                        break;
                case 0x02: // Acknowledge
                        acknowledge_irq();
@@ -2294,7 +2270,6 @@ void DISPLAY::initialize()
        ram_protect = true;
 # endif
 #endif
-       memset(io_w_latch, 0x00, sizeof(io_w_latch));
        //register_frame_event(this);
        //register_vline_event(this);
 #if defined(_FM77AV_VARIANTS)
index 8afafb4..af2a5b2 100644 (file)
@@ -64,9 +64,6 @@ VM::VM(EMU* parent_emu): emu(parent_emu)
 #endif
        joystick  = new JOYSTICK(this, emu);
        
-       display = new DISPLAY(this, emu);
-       mainio  = new FM7_MAINIO(this, emu);
-       mainmem = new FM7_MAINMEM(this, emu);
        // I/Os
        drec = new DATAREC(this, emu);
        pcm1bit = new PCM1BIT(this, emu);
@@ -83,9 +80,9 @@ VM::VM(EMU* parent_emu): emu(parent_emu)
 #if defined(_FM77AV_VARIANTS)
        alu = new MB61VH010(this, emu);
 #endif 
-       //display = new DISPLAY(this, emu);
-       //mainmem = new FM7_MAINMEM(this, emu);
-       //mainio  = new FM7_MAINIO(this, emu);
+       display = new DISPLAY(this, emu);
+       mainio  = new FM7_MAINIO(this, emu);
+       mainmem = new FM7_MAINMEM(this, emu);
 
 #if defined(SUPPORT_DUMMY_DEVICE_LED)
        led_terminate = new DUMMYDEVICE(this, emu);
index 16a3f08..e1b4b3f 100644 (file)
@@ -220,7 +220,6 @@ class DISPLAY: public DEVICE
        DEVICE *subcpu;
        DEVICE *keyboard;
        bool vram_wrote;
-       uint16 keycode_7;
        inline void GETVRAM_8_200L(int yoff, scrntype *p, uint32 rgbmask);
        inline void GETVRAM_4096(int yoff, scrntype *p, uint32 rgbmask);
    
index 33fce15..94f741d 100644 (file)
@@ -245,10 +245,10 @@ void FM7_MAINIO::reset()
        reset_sound();
        
        // FD04
-       firq_sub_attention = false; // bit0, ON = '0'.
+       set_sub_attention(false);       
        firq_break_key = (keyboard->read_signal(SIG_FM7KEY_BREAK_KEY) != 0x00000000); // bit1, ON = '0'.
-       display->write_signal(SIG_FM7_SUB_KEY_MASK, 1, 1); 
-       display->write_signal(SIG_FM7_SUB_KEY_FIRQ, 0, 1);
+       //display->write_signal(SIG_FM7_SUB_KEY_MASK, 1, 1); 
+       //display->write_signal(SIG_FM7_SUB_KEY_FIRQ, 0, 1);
        maincpu->write_signal(SIG_CPU_FIRQ, 0, 1);
    
        register_event(this, EVENT_TIMERIRQ_ON, 10000.0 / 4.9152, true, &event_timerirq); // TIMER IRQ
@@ -500,7 +500,6 @@ void FM7_MAINIO::do_firq(void)
 {
        bool firq_stat;
        firq_stat = firq_break_key | firq_sub_attention; 
-       //printf("%08d : FIRQ: break=%d attn=%d stat = %d\n", SDL_GetTicks(), firq_break_key, firq_sub_attention, firq_stat);
        if(firq_stat) {
                maincpu->write_signal(SIG_CPU_FIRQ, 1, 1);
        } else {