• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

Common Source Code Project for Qt (a.k.a for FM-7).


Commit MetaInfo

Revision2e57531e86c58e1f8ad90f8e44dff29609610649 (tree)
Zeit2017-06-27 18:51:02
AutorK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Log Message

[EMU] Add EMU::get_extra_leds() to get led status.
[VM][FM7] Stop using DUMMYDEVICE:: . Use VM::get_extra_leds() to get led status.
[VM][FM7][KEYBOARD] Update state version.

Ändern Zusammenfassung

Diff

--- a/source/src/emu.cpp
+++ b/source/src/emu.cpp
@@ -426,6 +426,12 @@ bool EMU::get_kana_locked()
426426 return vm->get_kana_locked();
427427 }
428428 #endif
429+#ifdef USE_EXTRA_LEDS
430+uint32_t EMU::get_extra_leds()
431+{
432+ return vm->get_extra_leds();
433+}
434+#endif
429435
430436 void EMU::key_lost_focus()
431437 {
@@ -2606,12 +2612,6 @@ uint32_t EMU::is_hard_disk_accessed()
26062612 }
26072613 #endif
26082614
2609-#ifdef USE_LED_DEVICE
2610-uint32_t EMU::get_led_status()
2611-{
2612- return vm->get_led_status();
2613-}
2614-#endif
26152615
26162616 #ifdef USE_SOUND_VOLUME
26172617 void EMU::set_sound_device_volume(int ch, int decibel_l, int decibel_r)
--- a/source/src/emu.h
+++ b/source/src/emu.h
@@ -235,6 +235,9 @@ public:
235235 bool get_caps_locked();
236236 bool get_kana_locked();
237237 #endif
238+#ifdef USE_EXTRA_LEDS
239+ uint32_t get_extra_leds();
240+#endif
238241 void key_lost_focus();
239242 #ifdef ONE_BOARD_MICRO_COMPUTER
240243 void press_button(int num);
@@ -484,9 +487,6 @@ public:
484487 #ifdef USE_HARD_DISK
485488 uint32_t is_hard_disk_accessed();
486489 #endif
487-#ifdef USE_LED_DEVICE
488- uint32_t get_led_status(void);
489-#endif
490490 #ifdef USE_SOUND_VOLUME
491491 void set_sound_device_volume(int ch, int decibel_l, int decibel_r);
492492 #endif
--- a/source/src/vm/fm7/fm7.cpp
+++ b/source/src/vm/fm7/fm7.cpp
@@ -40,13 +40,6 @@
4040 #include "./bubblecasette.h"
4141 #endif
4242
43-#if defined(USE_LED_DEVICE)
44-#include "./dummydevice.h"
45-#else
46-#define SIG_DUMMYDEVICE_BIT0 0
47-#define SIG_DUMMYDEVICE_BIT1 1
48-#define SIG_DUMMYDEVICE_BIT2 2
49-#endif
5043 #include "./fm7_mainio.h"
5144 #include "./fm7_mainmem.h"
5245 #include "./fm7_display.h"
@@ -164,11 +157,6 @@ VM::VM(EMU* parent_emu): emu(parent_emu)
164157 #ifdef CAPABLE_KANJI_CLASS2
165158 kanjiclass2 = new KANJIROM(this, emu, true);
166159 #endif
167-#if defined(USE_LED_DEVICE)
168- led_terminate = new DUMMYDEVICE(this, emu);
169-#else
170- led_terminate = new DEVICE(this, emu);
171-#endif
172160 #if defined(_USE_QT)
173161 event->set_device_name(_T("EVENT"));
174162 dummy->set_device_name(_T("1st Dummy"));
@@ -179,7 +167,6 @@ VM::VM(EMU* parent_emu): emu(parent_emu)
179167 # ifdef WITH_Z80
180168 z80cpu->set_device_name(_T("Z80 CPU"));
181169 # endif
182- led_terminate->set_device_name(_T("LEDs"));
183170 if(fdc != NULL) fdc->set_device_name(_T("MB8877 FDC(320KB)"));
184171
185172 // basic devices
@@ -347,9 +334,6 @@ void VM::connect_bus(void)
347334 #endif
348335 keyboard->set_context_rxrdy(display, SIG_FM7KEY_RXRDY, 0x01);
349336 keyboard->set_context_key_ack(display, SIG_FM7KEY_ACK, 0x01);
350- keyboard->set_context_ins_led( led_terminate, SIG_DUMMYDEVICE_BIT0, 0xffffffff);
351- keyboard->set_context_caps_led(led_terminate, SIG_DUMMYDEVICE_BIT1, 0xffffffff);
352- keyboard->set_context_kana_led(led_terminate, SIG_DUMMYDEVICE_BIT2, 0xffffffff);
353337
354338 if(drec != NULL) {
355339 drec->set_context_ear(mainio, FM7_MAINIO_CMT_RECV, 0xffffffff);
@@ -537,12 +521,6 @@ double VM::get_frame_rate()
537521 return event->get_frame_rate();
538522 }
539523
540-#if defined(USE_LED_DEVICE)
541-uint32_t VM::get_led_status()
542-{
543- return led_terminate->read_signal(SIG_DUMMYDEVICE_READWRITE);
544-}
545-#endif // USE_LED_DEVICE
546524
547525
548526 // ----------------------------------------------------------------------------
@@ -685,6 +663,13 @@ bool VM::get_kana_locked()
685663 return keyboard->get_kana_locked();
686664 }
687665
666+// Get INS status.Important with FM-7 series (^_^;
667+uint32_t VM::get_extra_leds()
668+{
669+ return keyboard->read_signal(SIG_FM7KEY_LED_STATUS);
670+}
671+
672+
688673 // ----------------------------------------------------------------------------
689674 // user interface
690675 // ----------------------------------------------------------------------------
@@ -899,7 +884,7 @@ void VM::is_bubble_casette_protected(int drv, bool flag)
899884 #endif
900885
901886
902-#define STATE_VERSION 5
887+#define STATE_VERSION 6
903888 void VM::save_state(FILEIO* state_fio)
904889 {
905890 state_fio->FputUint32_BE(STATE_VERSION);
--- a/source/src/vm/fm7/fm7.h
+++ b/source/src/vm/fm7/fm7.h
@@ -17,7 +17,7 @@
1717 #define USE_DIPSWITCH
1818 #define USE_CPU_TYPE 2
1919 #define USE_SPECIAL_RESET
20-#define USE_LED_DEVICE 3
20+#define USE_EXTRA_LEDS 3
2121 #define USE_MINIMUM_RENDERING 1
2222 #define USE_MOUSE
2323 #define USE_JOYSTICK
@@ -26,6 +26,7 @@
2626 #define USE_PRINTER_TYPE 4
2727 #define USE_AY_3_8910_AS_PSG
2828
29+#define INDEPENDENT_CAPS_KANA_LED
2930 #define NOTIFY_KEY_DOWN
3031 //#define NOTIFY_KEY_UP
3132 #define NOTIFY_KEY_DOWN_LR_SHIFT
@@ -375,10 +376,6 @@ class AY_3_891X;
375376 #if defined(_FM8)
376377 class BUBBLECASETTE;
377378 #endif
378-#if defined(USE_LED_DEVICE)
379-class DUMMYDEVICE;
380-#endif
381-
382379 class DISPLAY;
383380 #if defined(_FM77AV_VARIANTS)
384381 class MB61VH010;
@@ -406,11 +403,6 @@ protected:
406403 MC6809* maincpu;
407404 FM7_MAINMEM* mainmem;
408405 FM7_MAINIO* mainio;
409-#if defined(USE_LED_DEVICE)
410- DUMMYDEVICE* led_terminate;
411-#else
412- DEVICE* led_terminate;
413-#endif
414406 MB8877* fdc;
415407 #if defined(_FM8)
416408 // FM8
@@ -479,9 +471,6 @@ public:
479471 void special_reset();
480472 void run();
481473 double get_frame_rate();
482-#if defined(USE_LED_DEVICE)
483- uint32_t get_led_status();
484-#endif
485474
486475 #ifdef USE_DEBUGGER
487476 // debugger
@@ -507,6 +496,7 @@ public:
507496 void key_up(int code);
508497 bool get_caps_locked();
509498 bool get_kana_locked();
499+ uint32_t get_extra_leds();
510500
511501 // user interface
512502 void open_floppy_disk(int drv, const _TCHAR* file_path, int bank);
--- a/source/src/vm/fm7/fm7_common.h
+++ b/source/src/vm/fm7/fm7_common.h
@@ -272,6 +272,7 @@ enum {
272272 SIG_FM7KEY_ACK, // D431
273273 SIG_FM7KEY_BREAK_KEY,
274274 SIG_FM7KEY_PUSH_TO_ENCODER,
275+ SIG_FM7KEY_LED_STATUS,
275276 };
276277
277278 enum {
--- a/source/src/vm/fm7/fm7_keyboard.h
+++ b/source/src/vm/fm7/fm7_keyboard.h
@@ -29,9 +29,6 @@ class KEYBOARD : public DEVICE {
2929 void turn_on_ins_led(void);
3030 void turn_off_ins_led(void);
3131
32- outputs_t caps_led;
33- outputs_t kana_led;
34- outputs_t ins_led;
3532 #if defined(_FM77AV_VARIANTS)
3633 outputs_t rxrdy;
3734 outputs_t key_ack;
@@ -50,6 +47,10 @@ private:
5047 bool caps_pressed;
5148 bool kana_pressed;
5249 bool break_pressed;
50+
51+ bool ins_led_status;
52+ bool kana_led_status;
53+ bool caps_led_status;
5354 uint8_t read_data_reg(void);
5455 uint8_t read_stat_reg(void);
5556
@@ -154,15 +155,6 @@ private:
154155 register_output_signal(&key_ack, p, id, mask);
155156 #endif
156157 }
157- void set_context_caps_led(DEVICE *p, int id, uint32_t mask) {
158- register_output_signal(&caps_led, p, id, mask);
159- }
160- void set_context_kana_led(DEVICE *p, int id, uint32_t mask) {
161- register_output_signal(&kana_led, p, id, mask);
162- }
163- void set_context_ins_led(DEVICE *p, int id, uint32_t mask) {
164- register_output_signal(&ins_led, p, id, mask);
165- }
166158 void set_context_break_line(DEVICE *p, int id, uint32_t mask) {
167159 register_output_signal(&break_line, p, id, mask);
168160 }
--- a/source/src/vm/fm7/keyboard.cpp
+++ b/source/src/vm/fm7/keyboard.cpp
@@ -58,13 +58,13 @@ uint8_t KEYBOARD::get_keycode_low(void)
5858 // 0xd40d : R
5959 void KEYBOARD::turn_on_ins_led(void)
6060 {
61- this->write_signals(&ins_led, 0xff);
61+ ins_led_status = true;
6262 }
6363
6464 // 0xd40d : W
6565 void KEYBOARD::turn_off_ins_led(void)
6666 {
67- this->write_signals(&ins_led, 0x00);
67+ ins_led_status = false;
6868 }
6969
7070 // UI Handler.
@@ -111,7 +111,7 @@ void KEYBOARD::set_modifiers(uint8_t sc, bool flag)
111111 } else {
112112 caps_pressed = true;
113113 }
114- if(keymode == KEYMODE_STANDARD) this->write_signals(&caps_led, caps_pressed ? 0xff : 0x00);
114+ if(keymode == KEYMODE_STANDARD) caps_led_status = caps_pressed;
115115 }
116116 } else if(sc == 0x5a) { // KANA
117117 // Toggle on press.
@@ -121,7 +121,7 @@ void KEYBOARD::set_modifiers(uint8_t sc, bool flag)
121121 } else {
122122 kana_pressed = true;
123123 }
124- if(keymode == KEYMODE_STANDARD) this->write_signals(&kana_led, kana_pressed ? 0xff : 0x00);
124+ if(keymode == KEYMODE_STANDARD) kana_led_status = kana_pressed;
125125 }
126126 } else if(sc == 0x5c) { // Break
127127 break_pressed = flag;
@@ -607,7 +607,9 @@ void KEYBOARD::reset_unchange_mode(void)
607607 graph_pressed = false;
608608 kana_pressed = false;
609609 caps_pressed = false;
610- // ins_pressed = false;
610+ ins_led_status = false;
611+ kana_led_status = false;
612+ caps_led_status = false;
611613 datareg = 0x00;
612614 repeat_keycode = 0x00;
613615 autokey_backup = 0x00;
@@ -636,9 +638,6 @@ void KEYBOARD::reset_unchange_mode(void)
636638 this->write_signals(&rxrdy, 0x00);
637639 this->write_signals(&key_ack, 0xff);
638640 #endif
639- this->write_signals(&kana_led, 0x00);
640- this->write_signals(&caps_led, 0x00);
641- this->write_signals(&ins_led, 0x00);
642641 }
643642
644643
@@ -743,11 +742,11 @@ void KEYBOARD::set_leds(void)
743742 if((ledvar & 0x02) != 0) {
744743 // Kana
745744 kana_pressed = ((ledvar & 0x01) == 0);
746- write_signals(&kana_led, kana_pressed);
745+ kana_led_status = kana_pressed;
747746 } else {
748747 // Caps
749748 caps_pressed = ((ledvar & 0x01) == 0);
750- write_signals(&caps_led, caps_pressed);
749+ caps_led_status = caps_pressed;
751750 }
752751 }
753752 cmd_fifo->clear();
@@ -960,6 +959,12 @@ uint32_t KEYBOARD::read_signal(int id)
960959 {
961960 if(id == SIG_FM7KEY_BREAK_KEY) {
962961 return break_pressed ? 0xfffffff : 0x00000000;
962+ } else if(id == SIG_FM7KEY_LED_STATUS) {
963+ uint32_t _l;
964+ _l = (ins_led_status) ? 0x00000001 : 0;
965+ _l |= (kana_led_status) ? 0x00000002 : 0;
966+ _l |= (caps_led_status) ? 0x00000004 : 0;
967+ return _l;
963968 }
964969 return 0;
965970 }
@@ -968,7 +973,7 @@ uint32_t KEYBOARD::read_signal(int id)
968973 void KEYBOARD::write_signal(int id, uint32_t data, uint32_t mask)
969974 {
970975 if(id == SIG_FM7KEY_SET_INSLED) {
971- write_signals(&ins_led, data & mask);
976+ ins_led_status = ((data & mask) != 0);
972977 }
973978 #if defined(_FM77AV_VARIANTS)
974979 else if(id == SIG_FM7KEY_PUSH_TO_ENCODER) {
@@ -1188,9 +1193,9 @@ KEYBOARD::KEYBOARD(VM *parent_vm, EMU *parent_emu) : DEVICE(parent_vm, parent_em
11881193 initialize_output_signals(&break_line);
11891194 initialize_output_signals(&int_line);
11901195
1191- initialize_output_signals(&kana_led);
1192- initialize_output_signals(&caps_led);
1193- initialize_output_signals(&ins_led);
1196+ ins_led_status = false;
1197+ kana_led_status = false;
1198+ caps_led_status = false;
11941199 set_device_name(_T("KEYBOARD SUBSYSTEM"));
11951200 }
11961201
@@ -1212,7 +1217,7 @@ KEYBOARD::~KEYBOARD()
12121217 {
12131218 }
12141219
1215-#define STATE_VERSION 4
1220+#define STATE_VERSION 5
12161221 #if defined(Q_OS_WIN)
12171222 DLL_PREFIX_I struct cur_time_s cur_time;
12181223 #endif
@@ -1291,6 +1296,10 @@ void KEYBOARD::save_state(FILEIO *state_fio)
12911296 }
12921297 // Version 4
12931298 state_fio->FputUint8(autokey_backup);
1299+ // Version 5
1300+ state_fio->FputBool(ins_led_status);
1301+ state_fio->FputBool(kana_led_status);
1302+ state_fio->FputBool(caps_led_status);
12941303 }
12951304
12961305 bool KEYBOARD::load_state(FILEIO *state_fio)
@@ -1369,6 +1378,12 @@ bool KEYBOARD::load_state(FILEIO *state_fio)
13691378 }
13701379 // Version 4
13711380 autokey_backup = state_fio->FgetUint8();
1381+ // Version 5
1382+ ins_led_status = state_fio->FgetBool();
1383+ kana_led_status = state_fio->FgetBool();
1384+ caps_led_status = state_fio->FgetBool();
1385+
1386+
13721387 if(version == STATE_VERSION) {
13731388 return true;
13741389 }
Show on old repository browser