summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/ti74.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/ti74.c')
-rw-r--r--src/mess/drivers/ti74.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/mess/drivers/ti74.c b/src/mess/drivers/ti74.c
index d7cbfb08c8b..d06a75a2b76 100644
--- a/src/mess/drivers/ti74.c
+++ b/src/mess/drivers/ti74.c
@@ -5,11 +5,11 @@
Texas Instruments TI-74 BASICALC
Texas Instruments TI-95 PROCALC
hardware family: CC-40 -> TI-74 BASICALC -> TI-95 PROCALC
-
+
TI-74 PCB layout:
note: TI-95 PCB is nearly the same, just with a different size LCD screen,
its CPU is labeled C70011, and the system ROM is labeled HN61256PC95.
-
+
DOCK-BUS
--||||||||---
C == |
@@ -49,16 +49,16 @@
* - indicates that it's on the other side of the PCB
-
+
Overall, the hardware is very similar to TI CC-40. A lot has been shuffled around
to cut down on complexity (and probably for protection too). To reduce power usage
even more, the OS often idles while waiting for any keypress that triggers an interrupt
and wakes the processor up.
-
+
The machine is powered by 4 AAA batteries. These will also save internal RAM,
provided that the machine is turned off properly.
-
-
+
+
TODO:
- it runs too fast due to missing clock divider emulation in TMS70C46
- external ram cartridge
@@ -131,10 +131,10 @@ DEVICE_IMAGE_LOAD_MEMBER(ti74_state, ti74_cartridge)
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
return IMAGE_INIT_FAIL;
}
-
+
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
return IMAGE_INIT_PASS;
}
@@ -165,7 +165,7 @@ void ti74_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
// TI-95 ref._________________...
// output# | 40 43 41 44 42 12 11 10/13/14 0 1 2
// above | _LOW _ERROR 2nd INV ALPHA LC INS DEGRAD HEX OCT I/O
- // screen- | _P{70} <{71} RUN{3}
+ // screen- | _P{70} <{71} RUN{3}
// area . SYS{4}
output_set_lamp_value(y * 10 + x, state);
}
@@ -175,7 +175,7 @@ static HD44780_PIXEL_UPDATE(ti74_pixel_update)
// char size is 5x7 + cursor
if (x > 4 || y > 7)
return;
-
+
if (line == 1 && pos == 15)
{
// the last char is used to control the 14 lcd indicators
@@ -236,7 +236,7 @@ READ8_MEMBER(ti74_state::keyboard_r)
if (m_key_select >> i & 1)
ret |= m_key_matrix[i]->read();
}
-
+
return ret;
}
@@ -250,14 +250,14 @@ WRITE8_MEMBER(ti74_state::bankswitch_w)
{
// d0-d1: system rom bankswitch
membank("sysbank")->set_entry(data & 3);
-
+
// d2: power-on latch
if (~data & 4 && m_power)
{
m_power = 0;
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); // stop running
}
-
+
// d3: N/C
}
@@ -265,7 +265,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, ti74_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("sysram.ic3")
- //AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot
+ //AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot
AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("sysbank")
ADDRESS_MAP_END
@@ -486,7 +486,7 @@ void ti74_state::update_battery_status(int state)
void ti74_state::machine_reset()
{
m_power = 1;
-
+
update_battery_status(m_battery_inp->read());
}