Previous 15994 Revisions Next

r887 Wednesday 29th August, 2007 at 13:30:35 UTC by Dirk Verwiebe
[Mephisto] Some code cleanup.
[src/mess/drivers]mephisto.c

src/mess/drivers/mephisto.c
r886r887
5454
5555*/
5656
57
58
59
6057#include "driver.h"
61
62
6358#include "cpu/m6502/m6502.h"
6459#include "sound/dac.h"
6560#include "mephisto.lh"
6661
67static UINT8 irq;
68static UINT8 lcd_shift_reg[3];
6962static UINT8 lcd_shift_counter;
70static UINT8 lcd_eor_val;
7163static UINT8 led_status;
72static UINT8 led7;
73static UINT8 beep;
74// static UINT8 key_array[15];
64static UINT8 *mephisto_ram;
7565
66
7667static WRITE8_HANDLER ( write_lcd )
77{
78  // lcd_shift_reg[lcd_shift_counter]=data;
79  lcd_shift_reg[lcd_shift_counter]=data ^ lcd_eor_val;
80  if (lcd_shift_counter==0)
81    {
82      lcd_shift_counter=4;
83      lcd_eor_val=lcd_eor_val ^ 0xff;
84      logerror("LCD Shift:  data %d\n ",data);
85    }
86  --lcd_shift_counter;
87 
68{
69  output_set_digit_value(lcd_shift_counter,data ^ mephisto_ram[0x109]);    // 0x109 MM IV // 0x040 MM V
70  lcd_shift_counter--;
71  lcd_shift_counter&=3;
8872}
8973
9074static READ8_HANDLER(read_keys)
9175{
9276  UINT8 data;
9377  data=0xff;
94  if (!led7)data=readinputport(offset+1); else data=readinputport(offset+8+1); 
95  logerror("Keyboard Offset = %d Data = %d  led7 = %d\n",offset,data,led7);
96  return (data ^0x80) | 0x7f;
78  if (((led_status & 0x80)==0x00))data=readinputport(offset); else data=readinputport(offset+8);
79  logerror("Keyboard Offset = %d Data = %d\n  ",offset,data);
80  return data| 0x7f;
9781}
9882
9983static READ8_HANDLER(read_board)
r886r887
10488static WRITE8_HANDLER ( write_led )
10589{
10690
107
108// if (data==0){ led_status=led_status & (255-pow(2,offset)); else  led_status=led_status|pow(2,offset);}
109
110  if (offset==0){ if (data==0) led_status=led_status & 254; else  led_status=led_status|1;}
111  if (offset==1){ if (data==0) led_status=led_status & 253; else  led_status=led_status|2;}
112  if (offset==2){ if (data==0) led_status=led_status & 251; else  led_status=led_status|4;}
113  if (offset==3){ if (data==0) led_status=led_status & 247; else  led_status=led_status|8;}
114  if (offset==4){ if (data==0) led_status=led_status & 239; else  led_status=led_status|16;}
115  if (offset==5){ if (data==0) led_status=led_status & 223; else  led_status=led_status|32;}
116  if (offset==6){ beep=data;}
117  if (offset==7){ led7=data;}
91  data &= 0x80;
92  if (data==0)led_status &= 255-(1<<offset) ; else led_status|=1<<offset;
93  if (offset<6)output_set_led_value(offset, led_status&1<<offset?1:0);
11894  logerror("LEDs  Offset = %d Data = %d\n",offset,data);
11995}
12096
12197
12298
12399static ADDRESS_MAP_START(mephisto_mem , ADDRESS_SPACE_PROGRAM, 8)
124   AM_RANGE( 0x0000, 0x1fff) AM_RAM //
100   AM_RANGE( 0x0000, 0x1fff) AM_RAM AM_BASE(&mephisto_ram)//
125101   AM_RANGE( 0x2000, 0x2000) AM_WRITE( write_lcd)
126102   AM_RANGE( 0x2c00, 0x2c07) AM_READ( read_keys)
127103   // AM_RANGE( 0x2c00, 0x2c07) AM_RAM
r886r887
138114
139115
140116INPUT_PORTS_START( mephisto )
141  PORT_START_TAG("keyboard_1")
117  // PORT_START_TAG("keyboard_1")
142118  PORT_START  //Port $2c00
143  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_1)
119  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_1)
144120  PORT_START //Port $2c01
145  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("POS") PORT_CODE(KEYCODE_2)
121  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("POS") PORT_CODE(KEYCODE_2)
146122  PORT_START //Port $2c02
147  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MEM") PORT_CODE(KEYCODE_3) 
123  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MEM") PORT_CODE(KEYCODE_3) 
148124  PORT_START //Port $2c03
149  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("INFO") PORT_CODE(KEYCODE_4)
125  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("INFO") PORT_CODE(KEYCODE_4)
150126  PORT_START  //Port $2c04
151  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LEV") PORT_CODE(KEYCODE_5)
127  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LEV") PORT_CODE(KEYCODE_5)
152128  PORT_START //Port $2c05
153  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
129  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
154130  PORT_START //Port $2c06
155  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) 
131  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) 
156132  PORT_START //Port $2c07
157  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
158  PORT_START_TAG("keyboard_2")
133  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
134  // PORT_START_TAG("keyboard_2")
159135  PORT_START  //Port $2c08
160  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E)
136  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E)
161137  PORT_START //Port $2c09
162  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F)
138  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F)
163139  PORT_START //Port $2c0a
164  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) 
140  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) 
165141  PORT_START //Port $2c0b
166  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
142  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
167143  PORT_START  //Port $2c0c
168  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H)
144  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H)
169145  PORT_START //Port $2c0d
170  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
146  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
171147  PORT_START //Port $2c0e
172  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) 
148  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) 
173149  PORT_START //Port $2c0f
174  PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D)
150  PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D)
175151INPUT_PORTS_END
176152
177153
178
179
180static TIMER_CALLBACK( update_leds )
181{
182   int i;
183   output_set_led_value(0, led_status&1?1:0);
184   output_set_led_value(1, led_status&2?1:0);
185   output_set_led_value(2, led_status&4?1:0);
186   output_set_led_value(3, led_status&8?1:0);
187   output_set_led_value(4, led_status&16?1:0);
188   output_set_led_value(5, led_status&32?1:0);
189   for (i=0; i<4; i++) output_set_digit_value(i, lcd_shift_reg[i]);
190   //for (i=0;i<16;i++) key_array[i]=readinputport(i);
191   
192}
193
194
195
196
197154static TIMER_CALLBACK( update_nmi )
198155{
199   irq=irq ^1;
200156   //cpunum_set_input_line(0, INPUT_LINE_NMI,irq ? ASSERT_LINE: CLEAR_LINE );
201157   cpunum_set_input_line(0, INPUT_LINE_NMI,PULSE_LINE);
202   DAC_data_w(0,beep&1?128:0);
158   DAC_data_w(0,led_status&64?128:0);
203159}
204160
205161static MACHINE_START( mephisto )
206162{
207163  lcd_shift_counter=3;
208  lcd_eor_val=0;
209  irq=0;
210  mame_timer_pulse(MAME_TIME_IN_HZ(60), 0, update_leds);
164  // mame_timer_pulse(MAME_TIME_IN_HZ(60), 0, update_leds);
211165   mame_timer_pulse(MAME_TIME_IN_HZ(600), 0, update_nmi);
212  cpunum_set_input_line(0, M65C02_IRQ_LINE,CLEAR_LINE);
166  // cpunum_set_input_line(0, M65C02_IRQ_LINE,CLEAR_LINE);
213167}
214168
215169
216170static MACHINE_RESET( mephisto )
217171{
218   lcd_eor_val=0;
219172   lcd_shift_counter=3;
220173}
221174
r886r887
227180   MDRV_SCREEN_REFRESH_RATE(60)
228181   MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION)
229182   MDRV_INTERLEAVE(1)
230
231183   MDRV_MACHINE_START( mephisto )
232184   MDRV_MACHINE_RESET( mephisto )
233
234185    /* video hardware */
235186    MDRV_DEFAULT_LAYOUT(layout_mephisto)
236
237187   /* sound hardware */
238188    MDRV_SPEAKER_STANDARD_MONO("mono")
239189

Previous 15994 Revisions Next


© 1998-2018 The MESS Team