/****************************************************************************** Mephisto 4 + 5 Chess Computer 2007 Dirk V. ******************************************************************************/ /* CPU 65C02 P4 Clock 4.9152 MHz NMI CLK 600 Hz IRQ Line is set to VSS 8 KByte SRAM Sony CXK5864-15l 1-CD74HC4060E 14 Bit Counter 1-CD74HC166E 1-CD74HC251E 1-SN74HC138N TI 1-SN74HC139N TI 1-74HC14AP Toshiba 1-74HC02AP Toshiba 1-74HC00AP Toshiba 1-CD74HC259E $0000-$1fff S-RAM $2000 LCD 4 Byte Shift Register writeonly right to left every 2nd char xor'd by $FF 2c00-2c07 Keyboard (8to1 Multiplexer) 74HCT251 2*8 Matrix Adr. 0x3407 ==0 !=0 2c00 CL E5 2c01 POS F6 2c02 MEMO G7 2c03 INFO A1 2c04 LEV H8 2c05 ENT B2 2c06 >0 C3 2c07 <9 D4 $3400-$3407 LED 1-6, Buzzer, Keyboard select $2400 // Chess Board $2800 // Chess Board $3000 // Chess Board $4000-7FFF Opening Modul HG550 $8000-$FFF ROM */ #include "driver.h" #include "cpu/m6502/m6502.h" // #include "sound/dac.h" #include "sound/beep.h" #include "mephisto.lh" static UINT8 lcd_shift_counter; static UINT8 led_status; static UINT8 *mephisto_ram; static UINT8 led7; static WRITE8_HANDLER ( write_lcd ) { if (led7==0)output_set_digit_value(lcd_shift_counter,data); // 0x109 MM IV // 0x040 MM V //output_set_digit_value(lcd_shift_counter,data ^ mephisto_ram[0x165]); // 0x109 MM IV // 0x040 MM V lcd_shift_counter--; lcd_shift_counter&=3; } static READ8_HANDLER(read_keys) { UINT8 data; data=0xff; if (((led_status & 0x80)==0x00))data=readinputport(offset); else data=readinputport(offset+8); logerror("Keyboard Offset = %d Data = %d\n ",offset,data); return data| 0x7f; } static READ8_HANDLER(read_board) { return 0xff; // Mephisto needs it for working } static WRITE8_HANDLER ( write_led ) { data &= 0x80; if (data==0)led_status &= 255-(1<