Previous 199869 Revisions Next

r31416 Friday 25th July, 2014 at 16:06:48 UTC by hap
(MESS)
New System Drivers Supported:
-----------------------------
TI-95 PROCALC [hap]
[src/emu/cpu/tms7000]tms7000.h
[src/mess]mess.lst mess.mak
[src/mess/drivers]cc40.c ti74.c
[src/mess/layout]cc40.lay ti74.lay ti95.lay*

trunk/src/emu/cpu/tms7000/tms7000.h
r31415r31416
102102
103103   address_space_config m_program_config;
104104   address_space_config m_io_config;
105   address_space_config m_data_config;
105   address_space_config m_data_config; // TMS70C46 only, the "E" bus
106106
107107   UINT32 m_info_flags;
108108
r31415r31416
319319   // extra 64KB external memory bus, or extra i/o port
320320   DECLARE_WRITE8_MEMBER(e_bus_address_lo_w) { m_e_bus_address = (m_e_bus_address & 0xff00) | data; }
321321   DECLARE_WRITE8_MEMBER(e_bus_address_hi_w) { m_e_bus_address = (m_e_bus_address & 0x00ff) | data << 8; }
322   DECLARE_READ8_MEMBER(e_bus_data_r) { return (m_control & 0x20) ? m_data->read_byte(m_e_bus_address) : m_io->read_byte(TMS7000_PORTE); }
322   DECLARE_READ8_MEMBER(e_bus_data_r) { return (space.debugger_access()) ? 0 : ((m_control & 0x20) ? m_data->read_byte(m_e_bus_address) : m_io->read_byte(TMS7000_PORTE)); }
323323   DECLARE_WRITE8_MEMBER(e_bus_data_w) { if (m_control & 0x20) m_data->write_byte(m_e_bus_address, data); else m_io->write_byte(TMS7000_PORTE, data); }
324324
325325protected:
trunk/src/mess/mess.lst
r31415r31416
10491049
10501050// Texas Instruments Calculators
10511051ti73      // 1990 TI-73
1052ti74      // 1986 TI-74
1052ti74      // 1985 TI-74
1053ti95      // 1986 TI-95
10531054ti81      // 1990 TI-81 (Z80 2 MHz)
10541055ti81v2  // 1990 TI-81 (Z80 2 MHz)
10551056ti85      // 1992 TI-85 (Z80 6 MHz)
trunk/src/mess/layout/ti74.lay
r31415r31416
1010   <element name="ind_left" defstate="0">
1111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
1212      <text string="&lt;" align="1" state="0">
13         <color red="0.494" green="0.501" blue="0.522" />
13         <color red="0.515" green="0.537" blue="0.548" />
1414      </text>
1515      <text string="&lt;" align="1" state="1">
16         <color red="0.361" green="0.325" blue="0.345" />
16         <color red="0.361" green="0.326" blue="0.346" />
1717      </text>
1818   </element>
1919
2020   <element name="ind_right" defstate="0">
2121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
2222      <text string="&gt;" align="2" state="0">
23         <color red="0.494" green="0.501" blue="0.522" />
23         <color red="0.515" green="0.537" blue="0.548" />
2424      </text>
2525      <text string="&gt;" align="2" state="1">
26         <color red="0.361" green="0.325" blue="0.345" />
26         <color red="0.361" green="0.326" blue="0.346" />
2727      </text>
2828   </element>
2929
3030   <element name="ind_shift" defstate="0">
3131      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
3232      <text string="SHIFT" state="0">
33         <color red="0.494" green="0.501" blue="0.522" />
33         <color red="0.515" green="0.537" blue="0.548" />
3434      </text>
3535      <text string="SHIFT" state="1">
36         <color red="0.361" green="0.325" blue="0.345" />
36         <color red="0.361" green="0.326" blue="0.346" />
3737      </text>
3838   </element>
3939
4040   <element name="ind_ctl" defstate="0">
4141      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
4242      <text string="CTL" state="0">
43         <color red="0.494" green="0.501" blue="0.522" />
43         <color red="0.515" green="0.537" blue="0.548" />
4444      </text>
4545      <text string="CTL" state="1">
46         <color red="0.361" green="0.325" blue="0.345" />
46         <color red="0.361" green="0.326" blue="0.346" />
4747      </text>
4848   </element>
4949
5050   <element name="ind_fn" defstate="0">
5151      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
5252      <text string="FN" state="0">
53         <color red="0.494" green="0.501" blue="0.522" />
53         <color red="0.515" green="0.537" blue="0.548" />
5454      </text>
5555      <text string="FN" state="1">
56         <color red="0.361" green="0.325" blue="0.345" />
56         <color red="0.361" green="0.326" blue="0.346" />
5757      </text>
5858   </element>
5959
6060   <element name="ind_io" defstate="0">
6161      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
6262      <text string="I/O" state="0">
63         <color red="0.494" green="0.501" blue="0.522" />
63         <color red="0.515" green="0.537" blue="0.548" />
6464      </text>
6565      <text string="I/O" state="1">
66         <color red="0.361" green="0.325" blue="0.345" />
66         <color red="0.361" green="0.326" blue="0.346" />
6767      </text>
6868   </element>
6969
7070   <element name="ind_ucl" defstate="0">
7171      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
7272      <text string="UCL" state="0">
73         <color red="0.494" green="0.501" blue="0.522" />
73         <color red="0.515" green="0.537" blue="0.548" />
7474      </text>
7575      <text string="UCL" state="1">
76         <color red="0.361" green="0.325" blue="0.345" />
76         <color red="0.361" green="0.326" blue="0.346" />
7777      </text>
7878   </element>
7979
8080   <element name="ind_basic" defstate="0">
8181      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
8282      <text string="BASIC" state="0">
83         <color red="0.494" green="0.501" blue="0.522" />
83         <color red="0.515" green="0.537" blue="0.548" />
8484      </text>
8585      <text string="BASIC" state="1">
86         <color red="0.361" green="0.325" blue="0.345" />
86         <color red="0.361" green="0.326" blue="0.346" />
8787      </text>
8888   </element>
8989
9090   <element name="ind_calc" defstate="0">
9191      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
9292      <text string="CALC" state="0">
93         <color red="0.494" green="0.501" blue="0.522" />
93         <color red="0.515" green="0.537" blue="0.548" />
9494      </text>
9595      <text string="CALC" state="1">
96         <color red="0.361" green="0.325" blue="0.345" />
96         <color red="0.361" green="0.326" blue="0.346" />
9797      </text>
9898   </element>
9999
100100   <element name="ind_deg" defstate="0">
101101      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
102102      <text string="DEG" state="0">
103         <color red="0.494" green="0.501" blue="0.522" />
103         <color red="0.515" green="0.537" blue="0.548" />
104104      </text>
105105      <text string="DEG" state="1">
106         <color red="0.361" green="0.325" blue="0.345" />
106         <color red="0.361" green="0.326" blue="0.346" />
107107      </text>
108108   </element>
109109
110110   <element name="ind_rad" defstate="0">
111111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
112112      <text string="RAD" state="0">
113         <color red="0.494" green="0.501" blue="0.522" />
113         <color red="0.515" green="0.537" blue="0.548" />
114114      </text>
115115      <text string="RAD" state="1">
116         <color red="0.361" green="0.325" blue="0.345" />
116         <color red="0.361" green="0.326" blue="0.346" />
117117      </text>
118118   </element>
119119
120120   <element name="ind_grad" defstate="0">
121121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
122122      <text string="GRAD" state="0">
123         <color red="0.494" green="0.501" blue="0.522" />
123         <color red="0.515" green="0.537" blue="0.548" />
124124      </text>
125125      <text string="GRAD" state="1">
126         <color red="0.361" green="0.325" blue="0.345" />
126         <color red="0.361" green="0.326" blue="0.346" />
127127      </text>
128128   </element>
129129
130130   <element name="ind_stat" defstate="0">
131131      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
132132      <text string="STAT" state="0">
133         <color red="0.494" green="0.501" blue="0.522" />
133         <color red="0.515" green="0.537" blue="0.548" />
134134      </text>
135135      <text string="STAT" state="1">
136         <color red="0.361" green="0.325" blue="0.345" />
136         <color red="0.361" green="0.326" blue="0.346" />
137137      </text>
138138   </element>
139139
140140   <element name="ind_low" defstate="0">
141      <rect state="0"><color red="0.494" green="0.501" blue="0.522" /></rect>
142      <rect state="1"><color red="0.361" green="0.325" blue="0.345" /></rect>
141      <rect state="0"><color red="0.515" green="0.537" blue="0.548" /></rect>
142      <rect state="1"><color red="0.361" green="0.326" blue="0.346" /></rect>
143143      <text string="LOW">
144144         <color red="0.5412" green="0.57255" blue="0.5804" />
145145      </text>
trunk/src/mess/layout/cc40.lay
r31415r31416
1010   <element name="ind_left" defstate="0">
1111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
1212      <text string="&lt;" align="1" state="0">
13         <color red="0.494" green="0.501" blue="0.522" />
13         <color red="0.515" green="0.537" blue="0.548" />
1414      </text>
1515      <text string="&lt;" align="1" state="1">
16         <color red="0.361" green="0.325" blue="0.345" />
16         <color red="0.361" green="0.326" blue="0.346" />
1717      </text>
1818   </element>
1919
2020   <element name="ind_right" defstate="0">
2121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
2222      <text string="&gt;" align="2" state="0">
23         <color red="0.494" green="0.501" blue="0.522" />
23         <color red="0.515" green="0.537" blue="0.548" />
2424      </text>
2525      <text string="&gt;" align="2" state="1">
26         <color red="0.361" green="0.325" blue="0.345" />
26         <color red="0.361" green="0.326" blue="0.346" />
2727      </text>
2828   </element>
2929
3030   <element name="ind_shift" defstate="0">
3131      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
3232      <text string="SHIFT" state="0">
33         <color red="0.494" green="0.501" blue="0.522" />
33         <color red="0.515" green="0.537" blue="0.548" />
3434      </text>
3535      <text string="SHIFT" state="1">
36         <color red="0.361" green="0.325" blue="0.345" />
36         <color red="0.361" green="0.326" blue="0.346" />
3737      </text>
3838   </element>
3939
4040   <element name="ind_ctl" defstate="0">
4141      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
4242      <text string="CTL" state="0">
43         <color red="0.494" green="0.501" blue="0.522" />
43         <color red="0.515" green="0.537" blue="0.548" />
4444      </text>
4545      <text string="CTL" state="1">
46         <color red="0.361" green="0.325" blue="0.345" />
46         <color red="0.361" green="0.326" blue="0.346" />
4747      </text>
4848   </element>
4949
5050   <element name="ind_fn" defstate="0">
5151      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
5252      <text string="FN" state="0">
53         <color red="0.494" green="0.501" blue="0.522" />
53         <color red="0.515" green="0.537" blue="0.548" />
5454      </text>
5555      <text string="FN" state="1">
56         <color red="0.361" green="0.325" blue="0.345" />
56         <color red="0.361" green="0.326" blue="0.346" />
5757      </text>
5858   </element>
5959
6060   <element name="ind_deg" defstate="0">
6161      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
6262      <text string="DEG" state="0">
63         <color red="0.494" green="0.501" blue="0.522" />
63         <color red="0.515" green="0.537" blue="0.548" />
6464      </text>
6565      <text string="DEG" state="1">
66         <color red="0.361" green="0.325" blue="0.345" />
66         <color red="0.361" green="0.326" blue="0.346" />
6767      </text>
6868   </element>
6969
7070   <element name="ind_rad" defstate="0">
7171      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
7272      <text string="RAD" state="0">
73         <color red="0.494" green="0.501" blue="0.522" />
73         <color red="0.515" green="0.537" blue="0.548" />
7474      </text>
7575      <text string="RAD" state="1">
76         <color red="0.361" green="0.325" blue="0.345" />
76         <color red="0.361" green="0.326" blue="0.346" />
7777      </text>
7878   </element>
7979
8080   <element name="ind_grad" defstate="0">
8181      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
8282      <text string="GRAD" state="0">
83         <color red="0.494" green="0.501" blue="0.522" />
83         <color red="0.515" green="0.537" blue="0.548" />
8484      </text>
8585      <text string="GRAD" state="1">
86         <color red="0.361" green="0.325" blue="0.345" />
86         <color red="0.361" green="0.326" blue="0.346" />
8787      </text>
8888   </element>
8989
9090   <element name="ind_io" defstate="0">
9191      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
9292      <text string="I/O" state="0">
93         <color red="0.494" green="0.501" blue="0.522" />
93         <color red="0.515" green="0.537" blue="0.548" />
9494      </text>
9595      <text string="I/O" state="1">
96         <color red="0.361" green="0.325" blue="0.345" />
96         <color red="0.361" green="0.326" blue="0.346" />
9797      </text>
9898   </element>
9999
100100   <element name="ind_ucl" defstate="0">
101101      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
102102      <text string="UCL" state="0">
103         <color red="0.494" green="0.501" blue="0.522" />
103         <color red="0.515" green="0.537" blue="0.548" />
104104      </text>
105105      <text string="UCL" state="1">
106         <color red="0.361" green="0.325" blue="0.345" />
106         <color red="0.361" green="0.326" blue="0.346" />
107107      </text>
108108   </element>
109109
110110   <element name="ind_error" defstate="0">
111111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
112112      <text string="ERROR" state="0">
113         <color red="0.494" green="0.501" blue="0.522" />
113         <color red="0.515" green="0.537" blue="0.548" />
114114      </text>
115115      <text string="ERROR" state="1">
116         <color red="0.361" green="0.325" blue="0.345" />
116         <color red="0.361" green="0.326" blue="0.346" />
117117      </text>
118118   </element>
119119
120120   <element name="ind_user" defstate="0">
121121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
122122      <text string="v" state="0">
123         <color red="0.494" green="0.501" blue="0.522" />
123         <color red="0.515" green="0.537" blue="0.548" />
124124      </text>
125125      <text string="v" state="1">
126         <color red="0.361" green="0.325" blue="0.345" />
126         <color red="0.361" green="0.326" blue="0.346" />
127127      </text>
128128   </element>
129129
130130   <element name="ind_low" defstate="0">
131      <rect state="0"><color red="0.494" green="0.501" blue="0.522" /></rect>
132      <rect state="1"><color red="0.361" green="0.325" blue="0.345" /></rect>
131      <rect state="0"><color red="0.515" green="0.537" blue="0.548" /></rect>
132      <rect state="1"><color red="0.361" green="0.326" blue="0.346" /></rect>
133133      <text string="LOW">
134134         <color red="0.5412" green="0.57255" blue="0.5804" />
135135      </text>
trunk/src/mess/layout/ti95.lay
r0r31416
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4   <element name="static_black">
5      <rect><color red="0" green="0" blue="0" /></rect>
6   </element>
7   <element name="static_bg">
8      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
9   </element>
10   <element name="static_bg2">
11      <rect><color red="0.41" green="0.37" blue="0.39" /></rect>
12   </element>
13
14<!-- define lcd indicators -->
15
16   <element name="ind_low" defstate="0">
17      <rect state="0"><color red="0.515" green="0.537" blue="0.548" /></rect>
18      <rect state="1"><color red="0.361" green="0.326" blue="0.346" /></rect>
19      <text string="LOW">
20         <color red="0.5412" green="0.57255" blue="0.5804" />
21      </text>
22   </element>
23
24   <element name="ind_error" defstate="0">
25      <rect state="0"><color red="0.515" green="0.537" blue="0.548" /></rect>
26      <rect state="1"><color red="0.361" green="0.326" blue="0.346" /></rect>
27      <text string="ERROR">
28         <color red="0.5412" green="0.57255" blue="0.5804" />
29      </text>
30   </element>
31
32   <element name="ind_p" defstate="0">
33      <rect state="0"><color red="0.515" green="0.537" blue="0.548" /></rect>
34      <rect state="1"><color red="0.361" green="0.326" blue="0.346" /></rect>
35      <text string="P">
36         <color red="0.5412" green="0.57255" blue="0.5804" />
37      </text>
38   </element>
39
40   <element name="ind_left" defstate="0">
41      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
42      <text string="&lt;" align="1" state="0">
43         <color red="0.515" green="0.537" blue="0.548" />
44      </text>
45      <text string="&lt;" align="1" state="1">
46         <color red="0.361" green="0.326" blue="0.346" />
47      </text>
48   </element>
49
50   <element name="ind_2nd" defstate="0">
51      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
52      <text string="2nd" align="1" state="0">
53         <color red="0.515" green="0.537" blue="0.548" />
54      </text>
55      <text string="2nd" align="1" state="1">
56         <color red="0.361" green="0.326" blue="0.346" />
57      </text>
58   </element>
59
60   <element name="ind_inv" defstate="0">
61      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
62      <text string="INV" align="1" state="0">
63         <color red="0.515" green="0.537" blue="0.548" />
64      </text>
65      <text string="INV" align="1" state="1">
66         <color red="0.361" green="0.326" blue="0.346" />
67      </text>
68   </element>
69
70   <element name="ind_alpha" defstate="0">
71      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
72      <text string="ALPHA" align="1" state="0">
73         <color red="0.515" green="0.537" blue="0.548" />
74      </text>
75      <text string="ALPHA" align="1" state="1">
76         <color red="0.361" green="0.326" blue="0.346" />
77      </text>
78   </element>
79
80   <element name="ind_lc" defstate="0">
81      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
82      <text string="LC" align="1" state="0">
83         <color red="0.515" green="0.537" blue="0.548" />
84      </text>
85      <text string="LC" align="1" state="1">
86         <color red="0.361" green="0.326" blue="0.346" />
87      </text>
88   </element>
89
90   <element name="ind_ins" defstate="0">
91      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
92      <text string="INS" align="1" state="0">
93         <color red="0.515" green="0.537" blue="0.548" />
94      </text>
95      <text string="INS" align="1" state="1">
96         <color red="0.361" green="0.326" blue="0.346" />
97      </text>
98   </element>
99
100   <element name="ind_de" defstate="0">
101      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
102      <text string="DE" align="1" state="0">
103         <color red="0.515" green="0.537" blue="0.548" />
104      </text>
105      <text string="DE" align="1" state="1">
106         <color red="0.361" green="0.326" blue="0.346" />
107      </text>
108   </element>
109
110   <element name="ind_g" defstate="0">
111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
112      <text string="G" align="1" state="0">
113         <color red="0.515" green="0.537" blue="0.548" />
114      </text>
115      <text string="G" align="1" state="1">
116         <color red="0.361" green="0.326" blue="0.346" />
117      </text>
118   </element>
119
120   <element name="ind_rad" defstate="0">
121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
122      <text string="RAD" align="1" state="0">
123         <color red="0.515" green="0.537" blue="0.548" />
124      </text>
125      <text string="RAD" align="1" state="1">
126         <color red="0.361" green="0.326" blue="0.346" />
127      </text>
128   </element>
129
130   <element name="ind_hex" defstate="0">
131      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
132      <text string="HEX" align="1" state="0">
133         <color red="0.515" green="0.537" blue="0.548" />
134      </text>
135      <text string="HEX" align="1" state="1">
136         <color red="0.361" green="0.326" blue="0.346" />
137      </text>
138   </element>
139
140   <element name="ind_oct" defstate="0">
141      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
142      <text string="OCT" align="1" state="0">
143         <color red="0.515" green="0.537" blue="0.548" />
144      </text>
145      <text string="OCT" align="1" state="1">
146         <color red="0.361" green="0.326" blue="0.346" />
147      </text>
148   </element>
149
150   <element name="ind_io" defstate="0">
151      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
152      <text string="I/O" align="1" state="0">
153         <color red="0.515" green="0.537" blue="0.548" />
154      </text>
155      <text string="I/O" align="1" state="1">
156         <color red="0.361" green="0.326" blue="0.346" />
157      </text>
158   </element>
159
160   <element name="ind_run" defstate="0">
161      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
162      <text string="RUN" align="1" state="0">
163         <color red="0.515" green="0.537" blue="0.548" />
164      </text>
165      <text string="RUN" align="1" state="1">
166         <color red="0.361" green="0.326" blue="0.346" />
167      </text>
168   </element>
169
170   <element name="ind_sys" defstate="0">
171      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
172      <text string="SYS" align="1" state="0">
173         <color red="0.515" green="0.537" blue="0.548" />
174      </text>
175      <text string="SYS" align="1" state="1">
176         <color red="0.361" green="0.326" blue="0.346" />
177      </text>
178   </element>
179
180
181
182   <view name="Internal Layout">
183      <bounds left="0" top="0" right="125" bottom="30" />
184
185      <screen index="0">
186         <bounds x="15" y="-2" width="200" height="20" />
187      </screen>
188
189<!-- 2nd line chars are about 0.83333 smaller -->
190
191      <screen index="0">
192         <bounds x="10" y="22" width="166.66" height="16.666" />
193      </screen>
194
195
196
197<!-- draw background around lcd screen matrix part -->
198
199      <bezel element="static_bg">
200         <bounds left="0" top="0" right="150" bottom="7" />
201      </bezel>
202      <bezel element="static_bg">
203         <bounds left="0" top="0" right="15.25" bottom="20" />
204      </bezel>
205      <bezel element="static_bg">
206         <bounds left="0" top="17.75" right="150" bottom="22.2" />
207      </bezel>
208      <bezel element="static_bg">
209         <bounds left="0" top="20" right="10.2" bottom="45" />
210      </bezel>
211      <bezel element="static_bg">
212         <bounds left="0" top="29.5" right="150" bottom="45" />
213      </bezel>
214
215<!-- draw bezel around 2nd line -->
216
217      <bezel element="static_bg2">
218         <bounds x="0" y="18.7" width="150" height="2.5" />
219      </bezel>
220
221      <bezel element="static_bg2">
222         <bounds x="0" y="20" width="7.9" height="15" />
223      </bezel>
224      <bezel element="static_bg2">
225         <bounds x="27.9" y="20" width="2.5" height="15" />
226      </bezel>
227      <bezel element="static_bg2">
228         <bounds x="50.4" y="20" width="2.5" height="15" />
229      </bezel>
230      <bezel element="static_bg2">
231         <bounds x="72.9" y="20" width="2.5" height="15" />
232      </bezel>
233      <bezel element="static_bg2">
234         <bounds x="95.4" y="20" width="2.5" height="15" />
235      </bezel>
236      <bezel element="static_bg2">
237         <bounds x="117.9" y="20" width="10" height="15" />
238      </bezel>
239
240<!-- crop -->
241
242      <bezel element="static_black">
243         <bounds left="0" top="-10" right="250" bottom="0" />
244      </bezel>
245      <bezel element="static_black">
246         <bounds left="125" top="-10" right="250" bottom="50" />
247      </bezel>
248      <bezel element="static_black">
249         <bounds left="0" top="30" right="250" bottom="50" />
250      </bezel>
251
252
253
254<!-- draw lcd indicators -->
255
256<!-- left: _p, left -->
257
258      <bezel name="lamp70" element="ind_p">
259         <bounds x="1" y="9" width="5" height="5" />
260      </bezel>
261      <bezel name="lamp71" element="ind_left">
262         <bounds x="8" y="9" width="5" height="5" />
263      </bezel>
264
265<!-- right: run, sys -->
266
267      <bezel name="lamp3" element="ind_run">
268         <bounds x="115.5" y="6.5" width="20" height="5" />
269      </bezel>
270      <bezel name="lamp4" element="ind_sys">
271         <bounds x="115.5" y="12" width="20" height="5" />
272      </bezel>
273
274<!-- top: _low, _error, 2nd, inv, alpha, lc, ins -->
275
276      <bezel name="lamp40" element="ind_low">
277         <bounds x="1" y="1" width="12" height="5" />
278      </bezel>
279      <bezel name="lamp43" element="ind_error">
280         <bounds x="16" y="1" width="15" height="5" />
281      </bezel>
282
283      <bezel name="lamp41" element="ind_2nd">
284         <bounds x="32" y="1" width="20" height="5" />
285      </bezel>
286      <bezel name="lamp44" element="ind_inv">
287         <bounds x="41" y="1" width="20" height="5" />
288      </bezel>
289      <bezel name="lamp42" element="ind_alpha">
290         <bounds x="50" y="1" width="20" height="5" />
291      </bezel>
292      <bezel name="lamp12" element="ind_lc">
293         <bounds x="64.3" y="1" width="20" height="5" />
294      </bezel>
295      <bezel name="lamp11" element="ind_ins">
296         <bounds x="71.3" y="1" width="20" height="5" />
297      </bezel>
298
299<!-- top: deg/rad/grad -->
300
301      <bezel name="lamp10" element="ind_de">
302         <bounds x="80" y="1" width="20" height="5" />
303      </bezel>
304      <bezel name="lamp13" element="ind_g">
305         <bounds x="85" y="1" width="20" height="5" />
306      </bezel>
307      <bezel name="lamp14" element="ind_rad">
308         <bounds x="87.8" y="1" width="20" height="5" />
309      </bezel>
310
311<!-- top: hex, oct, i/o -->
312
313      <bezel name="lamp0" element="ind_hex">
314         <bounds x="97.7" y="1" width="20" height="5" />
315      </bezel>
316      <bezel name="lamp1" element="ind_oct">
317         <bounds x="107" y="1" width="20" height="5" />
318      </bezel>
319      <bezel name="lamp2" element="ind_io">
320         <bounds x="117.5" y="1" width="20" height="5" />
321      </bezel>
322
323
324   </view>
325</mamelayout>
Property changes on: trunk/src/mess/layout/ti95.lay
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + native
trunk/src/mess/drivers/ti74.c
r31415r31416
55  Texas Instruments TI-74 BASICALC
66  Texas Instruments TI-95 PROCALC
77  hardware family: CC-40 -> TI-74 BASICALC -> TI-95 PROCALC
8
8 
9  TI-74 PCB layout:
10  note: TI-95 PCB is nearly the same, just with a different size LCD screen,
11  its CPU is labeled C70011, and the system ROM is labeled HN61256PC95.
12 
913          DOCK-BUS
1014        --||||||||---
1115    C  ==           |
r31415r31416
3640           -------------------------------------
3741
3842  IC1 HN61256PC93 - Hitachi DIP-28 32KB CMOS Mask PROM
39  IC2 C70009      - Texas Instruments TMS70C40 with some TI custom I/O mods, 54 pins (C70011 in case of TI-95)
40                    running at max 4MHz. 128 bytes internal RAM, 4KB internal ROM
43  IC2 C70009      - Texas Instruments TMS70C46, 54 pins. Basically a TMS70C40 with some TI custom I/O mods.
44                    128 bytes internal RAM, 4KB internal ROM, running at max 4MHz.
4145  IC3 HM6264LP-15 - Hitachi 8KB SRAM (battery backed)
4246  RC4193N         - Micropower Switching Regulator
4347  HD44100H        - 60-pin QFP Hitachi HD44100 LCD Driver
r31415r31416
4751
4852 
4953  Overall, the hardware is very similar to TI CC-40. A lot has been shuffled around
50  to cut down on complexity (and probably for protection too).
54  to cut down on complexity (and probably for protection too). To reduce power usage
55  even more, the OS often idles while waiting for any keypress that triggers an interrupt
56  and wakes the processor up.
5157 
5258  The machine is powered by 4 AAA batteries. These will also save internal RAM,
5359  provided that the machine is turned off properly.
r31415r31416
5662  TODO:
5763  - it runs too fast due to missing clock divider emulation in TMS70C46
5864  - external ram cartridge
59  - DOCK-BUS interface and peripherals
65  - TI-95 I/O indicator is always on (dockbus)
66  - is battery low/ok status also on dockbus? setting INT1 on reset seems to clear it
67  - DOCK-BUS interface and peripherals, compatible with both TI-74 and TI-95
6068    * CI-7 cassette interface
6169    * PC-324 thermal printer
6270    (+ old Hexbus devices can be connected via a converter cable)
r31415r31416
7078#include "imagedev/cartslot.h"
7179
7280#include "ti74.lh"
81#include "ti95.lh"
7382
7483
7584class ti74_state : public driver_device
r31415r31416
8392   required_device<tms70c46_device> m_maincpu;
8493
8594   ioport_port *m_key_matrix[8];
86   emu_timer *m_poweron_timer;
8795
8896   UINT8 m_key_select;
8997   UINT8 m_power;
r31415r31416
98106   virtual void machine_start();
99107   DECLARE_PALETTE_INIT(ti74);
100108   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ti74_cartridge);
101   TIMER_CALLBACK_MEMBER(poweron_timer_cb);
102109};
103110
104111
r31415r31416
150157
151158PALETTE_INIT_MEMBER(ti74_state, ti74)
152159{
153   palette.set_pen_color(0, rgb_t(138, 146, 148));
154   palette.set_pen_color(1, rgb_t(92, 83, 88));
160   palette.set_pen_color(0, rgb_t(138, 146, 148)); // background
161   palette.set_pen_color(1, rgb_t(92, 83, 88)); // lcd pixel on
162   palette.set_pen_color(2, rgb_t(131, 136, 139)); // lcd pixel off
155163}
156164
157165void ti74_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
158166{
159   // reference _________________...
167   // TI-74 ref._________________...
160168   // output#  |10     11     12     13     14      2      3      4
161169   // above    | <    SHIFT   CTL    FN     I/O    UCL    _LOW    >
162170   // ---- raw lcd screen here ----
163171   // under    |      BASIC   CALC   DEG    RAD    GRAD   STAT
164172   // output#  |       63     64      1     62     53     54
173   //
174   // TI-95 ref._________________...
175   // output#  |  40   43     41   44   42     12  11  10/13/14  0    1    2
176   // above    | _LOW _ERROR  2nd  INV  ALPHA  LC  INS  DEGRAD  HEX  OCT  I/O
177    // screen-  | _P{70} <{71}                                             RUN{3}
178   //   area   .                                                          SYS{4}
165179   output_set_lamp_value(y * 10 + x, state);
166180}
167181
168182static HD44780_PIXEL_UPDATE(ti74_pixel_update)
169183{
184   // char size is 5x7 + cursor
185   if (x > 4 || y > 7)
186      return;
187   
170188   if (line == 1 && pos == 15)
171189   {
172      // the last char is used to control lcd indicators
190      // the last char is used to control the 14 lcd indicators
173191      ti74_state *driver_state = device.machine().driver_data<ti74_state>();
174192      driver_state->update_lcd_indicator(y, x, state);
175193   }
176194   else if (line < 2 && pos < 16)
177195   {
178      // internal: 2*16, external: 1*31 + indicators
179      if (y == 7) y++; // the cursor is slightly below the 5x7 character
180      bitmap.pix16(1 + y, 1 + line*16*6 + pos*6 + x) = state;
196      // internal: 2*16, external: 1*31
197      if (y == 7) y++; // the cursor is slightly below the character
198      bitmap.pix16(1 + y, 1 + line*16*6 + pos*6 + x) = state ? 1 : 2;
181199   }
182200}
183201
202static HD44780_PIXEL_UPDATE(ti95_pixel_update)
203{
204   // char size is 5x7 + cursor
205   if (x > 4 || y > 7)
206      return;
184207
208   if (line == 1 && pos == 15)
209   {
210      // the last char is used to control the 17 lcd indicators
211      ti74_state *driver_state = device.machine().driver_data<ti74_state>();
212      driver_state->update_lcd_indicator(y, x, state);
213   }
214   else if (line == 0 && pos < 16)
215   {
216      // 1st line is simply 16 chars
217      if (y == 7) y++; // the cursor is slightly below the char
218      bitmap.pix16(10 + y, 1 + pos*6 + x) = state ? 1 : 2;
219   }
220   else if (line == 1 && pos < 15 && y < 7)
221   {
222      // 2nd line is segmented into 5 groups of 3 chars, there is no cursor
223      // note: the chars are smaller than on the 1st line (this is handled in .lay file)
224      const int gap = 9;
225      int group = pos / 3;
226      bitmap.pix16(1 + y, 1 + group*gap + pos*6 + x) = state ? 1 : 2;
227   }
228}
185229
230
231
186232/***************************************************************************
187233
188234  I/O, Memory Maps
r31415r31416
239285   AM_RANGE(TMS7000_PORTE, TMS7000_PORTE) AM_WRITE(keyboard_w) AM_READNOP
240286ADDRESS_MAP_END
241287
288static ADDRESS_MAP_START( e_map, AS_DATA, 8, ti74_state )
289ADDRESS_MAP_END
242290
243291
292
244293/***************************************************************************
245294
246295  Inputs
r31415r31416
248297***************************************************************************/
249298
250299static INPUT_PORTS_START( ti74 )
251   // 8x8 keyboard matrix, RESET and ON buttons are not on it
252   // Unused entries are not connected, but some might have a purpose for factory testing
300   // 8x8 keyboard matrix, RESET and ON buttons are not on it. Unused entries are not connected, but some have a purpose for factory testing.
301   // For convenience, number keys are mapped to number row too.
302   // PORT_NAME lists functions under [SHIFT] and [MODE] or [STAT] as secondaries.
253303   PORT_START("IN0")
254   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
255   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
256   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
304   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_NAME("m  M  Frac")
305   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') PORT_NAME("k  K  Frq")
306   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_NAME("i  I  SQR(x)")
257307   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("LEFT")
258308   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
259   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
260   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
261   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
309   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_NAME("u  U  x^2")
310   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_NAME("j  J  nCr")
311   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_NAME("n  N  Intg")
262312
263313   PORT_START("IN1")
264314   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('%')
265   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
266   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
267   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("RIGHT")
315   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_NAME("l  L  (x,y)")
316   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_NAME("o  O  1/x")
317   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("RIGHT     EE")
268318   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
269   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
270   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
271   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
319   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_NAME("y  Y  log")
320   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_NAME("h  H  nPr")
321   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_NAME("b  B  EXC")
272322
273323   PORT_START("IN2")
274   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_CHAR('\'') PORT_NAME("SPACE  '")
275   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
276   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
324   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_CHAR('\'') PORT_NAME("SPACE  '  DELTA%")
325   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') PORT_NAME(";  :  SIGMA+")
326   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_NAME("p  P  y^x")
277327   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CHAR('(') PORT_NAME("UP  (")
278328   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
279   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
280   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
281   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
329   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_NAME("t  T  ln(x)")
330   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_NAME("g  G  n!")
331   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_NAME("v  V  SUM")
282332
283333   PORT_START("IN3")
284334   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13) PORT_CHAR('=') PORT_NAME("ENTER  =")
285335   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
286   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("CLR  UCL")
336   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("CLR  UCL  CE/C")
287337   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(')') PORT_NAME("DOWN  )")
288   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("RUN")
289   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
290   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
291   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
338   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("RUN     x<->y")
339   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_NAME("r  R  pi")
340   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_NAME("f  F  P->R")
341   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') PORT_NAME("c  C  RCL")
292342
293343   PORT_START("IN4")
294   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('~') PORT_CHAR('?') PORT_NAME("+/-  ?")
295   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
296   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
297   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("7  DEL")
298   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("BREAK")
299   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
300   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
301   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
344   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('~') PORT_CHAR('?') PORT_NAME("+/-  ?  CSR")
345   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_NAME("1  !  r")
346   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') PORT_NAME("4  $  SIGMA(x)")
347   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("7  DEL  SIGMA(x^2)")
348   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) PORT_NAME("BREAK")
349   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_NAME("e  E  tan")
350   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') PORT_NAME("d  D  DRG->")
351   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_NAME("x  X  STO")
302352
303353   PORT_START("IN5")
304   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('<')
305   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
306   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('&')
307   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("8  INS")
308   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("MODE")
309   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
310   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
311   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
354   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('<') PORT_NAME("0  <  x'")
355   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') PORT_NAME("2  \"  a")
356   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('&') PORT_NAME("5  &  SIGMA(y)")
357   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("8  INS  SIGMA(y^2)")
358   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("MODE")
359   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_NAME("w  W  cos")
360   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') PORT_NAME("s  S  DRG")
361   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_NAME("z  Z  PRINT")
312362
313363   PORT_START("IN6")
314   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_CHAR('>')
315   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
316   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
317   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_NAME("9  PB")
318   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("OFF")
319   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
320   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
364   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_CHAR('>') PORT_NAME(".  >  y'") // 2 on the keyboard, same scancode
365   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') PORT_NAME("3  #  b")
366   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^') PORT_NAME("6  ^  n")
367   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_NAME("9  PB  SIGMA(xy)")
368   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("OFF")
369   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_NAME("q  Q  sin")
370   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_NAME("a  A  DMS->DD")
321371   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
322372
323373   PORT_START("IN7")
324   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+")
325   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
326   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*")
327   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("/")
374   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+     sy")
375   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("-     sx")
376   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*     _y")
377   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("/     _x")
328378   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
329   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("FN")
330   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL")
331   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT")
379   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("FN     hyp")
380   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL     STAT")
381   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT     INV")
332382INPUT_PORTS_END
333383
384static INPUT_PORTS_START( ti95 )
385   // 8x8 keyboard matrix, RESET and ON buttons are not on it.
386   // For convenience, number keys are mapped to number row too.
387   // PORT_NAME lists functions under [ALPHA] and [2nd] as secondaries.
388   PORT_START("IN0")
389   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF")
390   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("BREAK  Q")
391   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_NAME("SIN  A")
392   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_NAME("I/O  Z")
393   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("HELP  ASM")
394   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(')') PORT_NAME(")  ]  DRG")
395   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("/  \\  DFN")
396   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR('=') PORT_NAME("=  ~  TRACE")
334397
398   PORT_START("IN1")
399   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("EE  {  ENG")
400   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("HALT  W")
401   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_NAME("COS  S")
402   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("FILES  X")
403   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_NAME("ALPHA  PART")
404   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("3  ;  SBL")
405   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+  &  RTN")
406   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("2  :  GTL")
335407
408   PORT_START("IN2")
409   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_NAME("F1")
410   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("SIGMA+  E")
411   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_NAME("TAN  D")
412   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("STAT  C")
413   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("LEARN  PC")
414   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_NAME("6  @  CP")
415   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("-  _  13d")
416   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("5  %  CMS")
417
418   PORT_START("IN3")
419   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_NAME("F2")
420   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME("x~t  R  AH")
421   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_NAME("LN  F")
422   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_NAME("CONV  V")
423   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("OLD  NOP")
424   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_NAME("9  >  x!")
425   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*  ^  PI")
426   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_NAME("8  <  nCr")
427
428   PORT_START("IN4")
429   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_NAME("F3")
430   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("HYP  T  BH")
431   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("LOG  G")
432   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_NAME("NUM  B")
433   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("RUN  SPACE")
434   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_NAME("0  $  PAUSE")
435   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_NAME(".  ?  ADV")
436   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("+/-  !  PRINT")
437
438   PORT_START("IN5")
439   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_NAME("F4")
440   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INCR  Y  CH")
441   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("x^2  H")
442   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_NAME("FLAGS  N")
443   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("LEFT  DEL")
444   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_NAME("RCL  O  FH")
445   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME("INV  P")
446   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_NAME("7  }  nPr")
447
448   PORT_START("IN6")
449   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_NAME("F5")
450   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_NAME("EXC  U  DH")
451   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("SQR(x)  J")
452   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("TESTS  M")
453   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("RIGHT  INS")
454   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("y^x  L")
455   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
456   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_4) PORT_CHAR('4' )PORT_NAME("4     IND")
457
458   PORT_START("IN7")
459   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('(') PORT_NAME("(  [  FIX")
460   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_NAME("STO  I  EH")
461   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("1/x  K")
462   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("FUNC  ,  \"")
463   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("CE  F:CLR")
464   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("LIST  .  '")
465   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("CLEAR")
466   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_NAME("1  #  LBL")
467INPUT_PORTS_END
468
469
470
336471/***************************************************************************
337472
338473  Machine Config
339474
340475***************************************************************************/
341476
342TIMER_CALLBACK_MEMBER(ti74_state::poweron_timer_cb)
477void ti74_state::machine_reset()
343478{
344479   m_power = 1;
345   
346   // battery ok/low status is on int1 line!
347   m_maincpu->set_input_line(TMS7000_INT1_LINE, ASSERT_LINE);
348480}
349481
350void ti74_state::machine_reset()
351{
352   address_space &space = m_maincpu->space(AS_PROGRAM);
353   bankswitch_w(space, 0, 0);
354   
355   // give the system some time to boot before switching poweron latch
356   m_power = 0;
357   m_maincpu->set_input_line(TMS7000_INT1_LINE, CLEAR_LINE);
358   m_poweron_timer->adjust(attotime::from_msec(10));
359}
360
361482void ti74_state::machine_start()
362483{
363484   static const char *const tags[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" };
r31415r31416
365486      m_key_matrix[i] = ioport(tags[i]);
366487
367488   membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000);
489   membank("sysbank")->set_entry(0);
368490
369   m_poweron_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti74_state::poweron_timer_cb), this));
370   m_poweron_timer->adjust(attotime::never);
371
372491   // zerofill
373492   m_key_select = 0;
374493   m_power = 0;
r31415r31416
384503   MCFG_CPU_ADD("maincpu", TMS70C46, XTAL_4MHz)
385504   MCFG_CPU_PROGRAM_MAP(main_map)
386505   MCFG_CPU_IO_MAP(main_io_map)
506   MCFG_CPU_DATA_MAP(e_map)
387507
388508   MCFG_NVRAM_ADD_0FILL("6264.ic3")
389509
r31415r31416
397517   MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
398518   MCFG_SCREEN_PALETTE("palette")
399519
400   MCFG_PALETTE_ADD("palette", 2)
520   MCFG_PALETTE_ADD("palette", 3)
401521   MCFG_PALETTE_INIT_OWNER(ti74_state, ti74)
402522
403523   MCFG_HD44780_ADD("hd44780") // 270kHz
404   MCFG_HD44780_LCD_SIZE(2, 16) // internal: 2*16, external: 1*31 + indicators
524   MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
405525   MCFG_HD44780_PIXEL_UPDATE_CB(ti74_pixel_update)
406526
407527   /* cartridge */
408528   MCFG_CARTSLOT_ADD("cart")
409   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
529   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256")
410530   MCFG_CARTSLOT_NOT_MANDATORY
411531   MCFG_CARTSLOT_LOAD(ti74_state, ti74_cartridge)
412532   MCFG_CARTSLOT_INTERFACE("ti74_cart")
413533   MCFG_SOFTWARE_LIST_ADD("cart_list", "ti74_cart")
414534MACHINE_CONFIG_END
415535
536static MACHINE_CONFIG_START( ti95, ti74_state )
416537
538   /* basic machine hardware */
539   MCFG_CPU_ADD("maincpu", TMS70C46, XTAL_4MHz)
540   MCFG_CPU_PROGRAM_MAP(main_map)
541   MCFG_CPU_IO_MAP(main_io_map)
542   MCFG_CPU_DATA_MAP(e_map)
417543
544   MCFG_NVRAM_ADD_0FILL("6264.ic3")
545
546   /* video hardware */
547   MCFG_SCREEN_ADD("screen", LCD)
548   MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
549   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
550   MCFG_SCREEN_SIZE(200, 20)
551   MCFG_SCREEN_VISIBLE_AREA(0, 200-1, 0, 20-1)
552   MCFG_DEFAULT_LAYOUT(layout_ti95)
553   MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
554   MCFG_SCREEN_PALETTE("palette")
555
556   MCFG_PALETTE_ADD("palette", 3)
557   MCFG_PALETTE_INIT_OWNER(ti74_state, ti74)
558
559   MCFG_HD44780_ADD("hd44780")
560   MCFG_HD44780_LCD_SIZE(2, 16)
561   MCFG_HD44780_PIXEL_UPDATE_CB(ti95_pixel_update)
562
563   /* cartridge */
564   MCFG_CARTSLOT_ADD("cart")
565   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256")
566   MCFG_CARTSLOT_NOT_MANDATORY
567   MCFG_CARTSLOT_LOAD(ti74_state, ti74_cartridge)
568   MCFG_CARTSLOT_INTERFACE("ti95_cart")
569   MCFG_SOFTWARE_LIST_ADD("cart_list", "ti95_cart")
570MACHINE_CONFIG_END
571
572
573
418574/***************************************************************************
419575
420576  ROM Definitions
r31415r31416
432588ROM_END
433589
434590
591ROM_START( ti95 )
592   ROM_REGION( 0x10000, "maincpu", 0 )
593   ROM_LOAD( "c70011.ic2", 0xf000, 0x1000, CRC(b4d0a5c1) SHA1(3ff41946d014f72220a88803023b6a06d5086ce4) ) // internal cpu rom
594
595   ROM_REGION( 0x8000, "system", 0 )
596   ROM_LOAD( "hn61256pc95.ic1", 0x0000, 0x8000, CRC(c46d29ae) SHA1(c653f08590dbc28241a9f5a6c2541641bdb0208b) ) // system rom, banked
597
598   ROM_REGION( 0x8000, "user1", ROMREGION_ERASEFF ) // cartridge area
599ROM_END
600
601
435602COMP( 1985, ti74, 0, 0, ti74, ti74, driver_device, 0, "Texas Instruments", "TI-74 BASICALC", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
603COMP( 1986, ti95, 0, 0, ti95, ti95, driver_device, 0, "Texas Instruments", "TI-95 PROCALC", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
trunk/src/mess/drivers/cc40.c
r31415r31416
88  ---------------------------------------------
99  | ---------------------------------------   |
1010  | |                                     |   |
11  | | LCD 1 line, 31 chars + 18 indicators|   |
11  | |             LCD screen              |   |
1212  | |                                     |   ---------------
1313  | ---------------------------------------                 |
1414  |                                                         |
r31415r31416
166166
167167PALETTE_INIT_MEMBER(cc40_state, cc40)
168168{
169   palette.set_pen_color(0, rgb_t(138, 146, 148));
170   palette.set_pen_color(1, rgb_t(92, 83, 88));
169   palette.set_pen_color(0, rgb_t(138, 146, 148)); // background
170   palette.set_pen_color(1, rgb_t(92, 83, 88)); // lcd pixel on
171   palette.set_pen_color(2, rgb_t(131, 136, 139)); // lcd pixel off
171172}
172173
173174void cc40_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
r31415r31416
183184
184185static HD44780_PIXEL_UPDATE(cc40_pixel_update)
185186{
187   // char size is 5x7 + cursor
188   if (x > 4 || y > 7)
189      return;
190
186191   if (line == 1 && pos == 15)
187192   {
188      // the last char is used to control lcd indicators
193      // the last char is used to control the 18 lcd indicators
189194      cc40_state *driver_state = device.machine().driver_data<cc40_state>();
190195      driver_state->update_lcd_indicator(y, x, state);
191196   }
192197   else if (line < 2 && pos < 16)
193198   {
194      // internal: 2*16, external: 1*31 + indicators
195      if (y == 7) y++; // the cursor is slightly below the 5x7 character
196      bitmap.pix16(1 + y, 1 + line*16*6 + pos*6 + x) = state;
199      // internal: 2*16, external: 1*31
200      if (y == 7) y++; // the cursor is slightly below the character
201      bitmap.pix16(1 + y, 1 + line*16*6 + pos*6 + x) = state ? 1 : 2;
197202   }
198203}
199204
r31415r31416
339344***************************************************************************/
340345
341346static INPUT_PORTS_START( cc40 )
342   // 8x8 keyboard matrix, RESET and ON buttons are not on it
343   // The numpad number keys are shared with the ones on the main keyboard.
344   // Unused entries are not connected, but some might have a purpose for factory testing(?)
347   // 8x8 keyboard matrix, RESET and ON buttons are not on it. Unused entries are not connected, but some might have a purpose for factory testing(?)
348   // The numpad number keys are shared with the ones on the main keyboard, also on the real machine.
349   // PORT_NAME lists functions under [SHIFT] as secondaries.
345350   PORT_START("IN0")
346351   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
347352   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
r31415r31416
394399
395400   PORT_START("IN5")
396401   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') PORT_CHAR('\'')
397   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("CLR  UCL")
402   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("CLR  UCL")
398403   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("LEFT  DEL")
399404   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("RIGHT  INS")
400405   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_NAME("UP  PB")
r31415r31416
415420   PORT_START("IN7")
416421   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL")
417422   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT")
418   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("BREAK")
419   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("RUN")
423   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) PORT_NAME("BREAK")
424   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("RUN")
420425   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
421   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("FN")
422   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("OFF")
426   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("FN")
427   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("OFF")
423428   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
424429INPUT_PORTS_END
425430
r31415r31416
482487   MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
483488   MCFG_SCREEN_PALETTE("palette")
484489
485   MCFG_PALETTE_ADD("palette", 2)
490   MCFG_PALETTE_ADD("palette", 3)
486491   MCFG_PALETTE_INIT_OWNER(cc40_state, cc40)
487492
488493   MCFG_HD44780_ADD("hd44780")
489   MCFG_HD44780_LCD_SIZE(2, 16) // internal: 2*16, external: 1*31 + indicators
494   MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
490495   MCFG_HD44780_PIXEL_UPDATE_CB(cc40_pixel_update)
491496
492497   /* sound hardware */
r31415r31416
497502
498503   /* cartridge */
499504   MCFG_CARTSLOT_ADD("cart")
500   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
505   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256")
501506   MCFG_CARTSLOT_NOT_MANDATORY
502507   MCFG_CARTSLOT_LOAD(cc40_state, cc40_cartridge)
503508   MCFG_CARTSLOT_INTERFACE("cc40_cart")
r31415r31416
517522   ROM_LOAD( "tms70c20.bin", 0xf800, 0x0800, CRC(a21bf6ab) SHA1(3da8435ecbee143e7fa149ee8e1c92949bade1d8) ) // internal cpu rom
518523
519524   ROM_REGION( 0x8000, "system", 0 )
520   ROM_LOAD( "cc40.bin",    0x0000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) ) // system rom, banked
525   ROM_LOAD( "hn61256pc09.bin", 0x0000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) ) // system rom, banked
521526
522527   ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) // cartridge area, max 4*32KB
523528ROM_END
trunk/src/mess/mess.mak
r31415r31416
22982298$(MESS_DRIVERS)/mekd2.o:    $(MESS_LAYOUT)/mekd2.lh
22992299$(MESS_DRIVERS)/mephisto.o: $(MESS_LAYOUT)/mephisto.lh
23002300$(MESS_DRIVERS)/merlin.o:   $(MESS_LAYOUT)/merlin.lh
2301$(MESS_DRIVERS)/minicom.o:  $(MESS_LAYOUT)/minicom.lh
2301$(MESS_DRIVERS)/minicom.o:  $(MESS_LAYOUT)/minicom.lh
23022302$(MESS_DRIVERS)/mirage.o:   $(MESS_LAYOUT)/mirage.lh
23032303$(MESS_DRIVERS)/mk1.o:      $(MESS_LAYOUT)/mk1.lh
23042304$(MESS_DRIVERS)/mk14.o:     $(MESS_LAYOUT)/mk14.lh
r31415r31416
23412341$(MESS_DRIVERS)/tavernie.o: $(MESS_LAYOUT)/tavernie.lh
23422342$(MESS_DRIVERS)/tec1.o:     $(MESS_LAYOUT)/tec1.lh
23432343$(MESS_DRIVERS)/tecnbras.o: $(MESS_LAYOUT)/tecnbras.lh
2344$(MESS_DRIVERS)/ti74.o:     $(MESS_LAYOUT)/ti74.lh
2344$(MESS_DRIVERS)/ti74.o:     $(MESS_LAYOUT)/ti74.lh \
2345                     $(MESS_LAYOUT)/ti95.lh
23452346$(MESS_DRIVERS)/tk80.o:     $(MESS_LAYOUT)/tk80.lh
23462347$(MESS_DRIVERS)/tm990189.o: $(MESS_LAYOUT)/tm990189.lh \
23472348                     $(MESS_LAYOUT)/tm990189v.lh

Previous 199869 Revisions Next


© 1997-2024 The MAME Team