trunk/src/mess/layout/ti95.lay
r0 | r31416 | |
| 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="<" align="1" state="0"> |
| 43 | <color red="0.515" green="0.537" blue="0.548" /> |
| 44 | </text> |
| 45 | <text string="<" 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> |
trunk/src/mess/drivers/ti74.c
r31415 | r31416 | |
5 | 5 | Texas Instruments TI-74 BASICALC |
6 | 6 | Texas Instruments TI-95 PROCALC |
7 | 7 | 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 | |
9 | 13 | DOCK-BUS |
10 | 14 | --||||||||--- |
11 | 15 | C == | |
r31415 | r31416 | |
36 | 40 | ------------------------------------- |
37 | 41 | |
38 | 42 | 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. |
41 | 45 | IC3 HM6264LP-15 - Hitachi 8KB SRAM (battery backed) |
42 | 46 | RC4193N - Micropower Switching Regulator |
43 | 47 | HD44100H - 60-pin QFP Hitachi HD44100 LCD Driver |
r31415 | r31416 | |
47 | 51 | |
48 | 52 | |
49 | 53 | 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. |
51 | 57 | |
52 | 58 | The machine is powered by 4 AAA batteries. These will also save internal RAM, |
53 | 59 | provided that the machine is turned off properly. |
r31415 | r31416 | |
56 | 62 | TODO: |
57 | 63 | - it runs too fast due to missing clock divider emulation in TMS70C46 |
58 | 64 | - 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 |
60 | 68 | * CI-7 cassette interface |
61 | 69 | * PC-324 thermal printer |
62 | 70 | (+ old Hexbus devices can be connected via a converter cable) |
r31415 | r31416 | |
70 | 78 | #include "imagedev/cartslot.h" |
71 | 79 | |
72 | 80 | #include "ti74.lh" |
| 81 | #include "ti95.lh" |
73 | 82 | |
74 | 83 | |
75 | 84 | class ti74_state : public driver_device |
r31415 | r31416 | |
83 | 92 | required_device<tms70c46_device> m_maincpu; |
84 | 93 | |
85 | 94 | ioport_port *m_key_matrix[8]; |
86 | | emu_timer *m_poweron_timer; |
87 | 95 | |
88 | 96 | UINT8 m_key_select; |
89 | 97 | UINT8 m_power; |
r31415 | r31416 | |
98 | 106 | virtual void machine_start(); |
99 | 107 | DECLARE_PALETTE_INIT(ti74); |
100 | 108 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ti74_cartridge); |
101 | | TIMER_CALLBACK_MEMBER(poweron_timer_cb); |
102 | 109 | }; |
103 | 110 | |
104 | 111 | |
r31415 | r31416 | |
150 | 157 | |
151 | 158 | PALETTE_INIT_MEMBER(ti74_state, ti74) |
152 | 159 | { |
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 |
155 | 163 | } |
156 | 164 | |
157 | 165 | void ti74_state::update_lcd_indicator(UINT8 y, UINT8 x, int state) |
158 | 166 | { |
159 | | // reference _________________... |
| 167 | // TI-74 ref._________________... |
160 | 168 | // output# |10 11 12 13 14 2 3 4 |
161 | 169 | // above | < SHIFT CTL FN I/O UCL _LOW > |
162 | 170 | // ---- raw lcd screen here ---- |
163 | 171 | // under | BASIC CALC DEG RAD GRAD STAT |
164 | 172 | // 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} |
165 | 179 | output_set_lamp_value(y * 10 + x, state); |
166 | 180 | } |
167 | 181 | |
168 | 182 | static HD44780_PIXEL_UPDATE(ti74_pixel_update) |
169 | 183 | { |
| 184 | // char size is 5x7 + cursor |
| 185 | if (x > 4 || y > 7) |
| 186 | return; |
| 187 | |
170 | 188 | if (line == 1 && pos == 15) |
171 | 189 | { |
172 | | // the last char is used to control lcd indicators |
| 190 | // the last char is used to control the 14 lcd indicators |
173 | 191 | ti74_state *driver_state = device.machine().driver_data<ti74_state>(); |
174 | 192 | driver_state->update_lcd_indicator(y, x, state); |
175 | 193 | } |
176 | 194 | else if (line < 2 && pos < 16) |
177 | 195 | { |
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; |
181 | 199 | } |
182 | 200 | } |
183 | 201 | |
| 202 | static HD44780_PIXEL_UPDATE(ti95_pixel_update) |
| 203 | { |
| 204 | // char size is 5x7 + cursor |
| 205 | if (x > 4 || y > 7) |
| 206 | return; |
184 | 207 | |
| 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 | } |
185 | 229 | |
| 230 | |
| 231 | |
186 | 232 | /*************************************************************************** |
187 | 233 | |
188 | 234 | I/O, Memory Maps |
r31415 | r31416 | |
239 | 285 | AM_RANGE(TMS7000_PORTE, TMS7000_PORTE) AM_WRITE(keyboard_w) AM_READNOP |
240 | 286 | ADDRESS_MAP_END |
241 | 287 | |
| 288 | static ADDRESS_MAP_START( e_map, AS_DATA, 8, ti74_state ) |
| 289 | ADDRESS_MAP_END |
242 | 290 | |
243 | 291 | |
| 292 | |
244 | 293 | /*************************************************************************** |
245 | 294 | |
246 | 295 | Inputs |
r31415 | r31416 | |
248 | 297 | ***************************************************************************/ |
249 | 298 | |
250 | 299 | static 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. |
253 | 303 | 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)") |
257 | 307 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("LEFT") |
258 | 308 | 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") |
262 | 312 | |
263 | 313 | PORT_START("IN1") |
264 | 314 | 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") |
268 | 318 | 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") |
272 | 322 | |
273 | 323 | 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") |
277 | 327 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CHAR('(') PORT_NAME("UP (") |
278 | 328 | 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") |
282 | 332 | |
283 | 333 | PORT_START("IN3") |
284 | 334 | 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 =") |
285 | 335 | 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") |
287 | 337 | 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") |
292 | 342 | |
293 | 343 | 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") |
302 | 352 | |
303 | 353 | 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") |
312 | 362 | |
313 | 363 | 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") |
321 | 371 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
322 | 372 | |
323 | 373 | 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") |
328 | 378 | 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") |
332 | 382 | INPUT_PORTS_END |
333 | 383 | |
| 384 | static 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") |
334 | 397 | |
| 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") |
335 | 407 | |
| 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") |
| 467 | INPUT_PORTS_END |
| 468 | |
| 469 | |
| 470 | |
336 | 471 | /*************************************************************************** |
337 | 472 | |
338 | 473 | Machine Config |
339 | 474 | |
340 | 475 | ***************************************************************************/ |
341 | 476 | |
342 | | TIMER_CALLBACK_MEMBER(ti74_state::poweron_timer_cb) |
| 477 | void ti74_state::machine_reset() |
343 | 478 | { |
344 | 479 | m_power = 1; |
345 | | |
346 | | // battery ok/low status is on int1 line! |
347 | | m_maincpu->set_input_line(TMS7000_INT1_LINE, ASSERT_LINE); |
348 | 480 | } |
349 | 481 | |
350 | | void 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 | | |
361 | 482 | void ti74_state::machine_start() |
362 | 483 | { |
363 | 484 | static const char *const tags[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" }; |
r31415 | r31416 | |
365 | 486 | m_key_matrix[i] = ioport(tags[i]); |
366 | 487 | |
367 | 488 | membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000); |
| 489 | membank("sysbank")->set_entry(0); |
368 | 490 | |
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 | | |
372 | 491 | // zerofill |
373 | 492 | m_key_select = 0; |
374 | 493 | m_power = 0; |
r31415 | r31416 | |
384 | 503 | MCFG_CPU_ADD("maincpu", TMS70C46, XTAL_4MHz) |
385 | 504 | MCFG_CPU_PROGRAM_MAP(main_map) |
386 | 505 | MCFG_CPU_IO_MAP(main_io_map) |
| 506 | MCFG_CPU_DATA_MAP(e_map) |
387 | 507 | |
388 | 508 | MCFG_NVRAM_ADD_0FILL("6264.ic3") |
389 | 509 | |
r31415 | r31416 | |
397 | 517 | MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update) |
398 | 518 | MCFG_SCREEN_PALETTE("palette") |
399 | 519 | |
400 | | MCFG_PALETTE_ADD("palette", 2) |
| 520 | MCFG_PALETTE_ADD("palette", 3) |
401 | 521 | MCFG_PALETTE_INIT_OWNER(ti74_state, ti74) |
402 | 522 | |
403 | 523 | 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 |
405 | 525 | MCFG_HD44780_PIXEL_UPDATE_CB(ti74_pixel_update) |
406 | 526 | |
407 | 527 | /* cartridge */ |
408 | 528 | MCFG_CARTSLOT_ADD("cart") |
409 | | MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") |
| 529 | MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256") |
410 | 530 | MCFG_CARTSLOT_NOT_MANDATORY |
411 | 531 | MCFG_CARTSLOT_LOAD(ti74_state, ti74_cartridge) |
412 | 532 | MCFG_CARTSLOT_INTERFACE("ti74_cart") |
413 | 533 | MCFG_SOFTWARE_LIST_ADD("cart_list", "ti74_cart") |
414 | 534 | MACHINE_CONFIG_END |
415 | 535 | |
| 536 | static MACHINE_CONFIG_START( ti95, ti74_state ) |
416 | 537 | |
| 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) |
417 | 543 | |
| 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") |
| 570 | MACHINE_CONFIG_END |
| 571 | |
| 572 | |
| 573 | |
418 | 574 | /*************************************************************************** |
419 | 575 | |
420 | 576 | ROM Definitions |
r31415 | r31416 | |
432 | 588 | ROM_END |
433 | 589 | |
434 | 590 | |
| 591 | ROM_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 |
| 599 | ROM_END |
| 600 | |
| 601 | |
435 | 602 | COMP( 1985, ti74, 0, 0, ti74, ti74, driver_device, 0, "Texas Instruments", "TI-74 BASICALC", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 603 | COMP( 1986, ti95, 0, 0, ti95, ti95, driver_device, 0, "Texas Instruments", "TI-95 PROCALC", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |