trunk/src/emu/cpu/tms7000/tms7000.c
| r31426 | r31427 | |
| 23 | 23 | * - memory modes with IOCNT0, currently always running in full expansion mode |
| 24 | 24 | * - timer event counter mode (timer control register, bit 6) |
| 25 | 25 | * - TMS70x1/2 serial port and timer 3 |
| 26 | * - TMS70C46 DOCK-BUS comms with external pins |
| 26 | 27 | * - TMS70C46 external memory mode is via "E" bus instead of configuring IOCNT0 |
| 27 | 28 | * - TMS70C46 clock divider (don't know which part of the memorymap is slow) |
| 28 | 29 | * - TMS70C46 INT3 on keypress |
| r31426 | r31427 | |
| 121 | 122 | |
| 122 | 123 | static ADDRESS_MAP_START(tms70c46_mem, AS_PROGRAM, 8, tms70c46_device ) |
| 123 | 124 | AM_RANGE(0x010c, 0x010c) AM_READWRITE(e_bus_data_r, e_bus_data_w) |
| 124 | | // AM_RANGE(0x010d, 0x010d) --> to outside --> DOCK-BUS available |
| 125 | | // AM_RANGE(0x010e, 0x010e) --> to outside --> DOCK-BUS data (d0-d3) |
| 126 | | // AM_RANGE(0x010f, 0x010f) --> to outside --> DOCK-BUS handshake |
| 125 | AM_RANGE(0x010d, 0x010d) AM_NOP // ? always writes $FF before checking keyboard... maybe INT3 ack? |
| 126 | AM_RANGE(0x010e, 0x010e) AM_READWRITE(dockbus_data_r, dockbus_data_w) |
| 127 | AM_RANGE(0x010f, 0x010f) AM_READWRITE(dockbus_status_r, dockbus_status_w) |
| 127 | 128 | AM_RANGE(0x0118, 0x0118) AM_READWRITE(control_r, control_w) |
| 128 | 129 | AM_IMPORT_FROM( tms7040_mem ) |
| 129 | 130 | ADDRESS_MAP_END |
| r31426 | r31427 | |
| 928 | 929 | // d0-d3: clock divider |
| 929 | 930 | m_control = data; |
| 930 | 931 | } |
| 932 | |
| 933 | // DOCK-BUS: TODO.. |
| 934 | // right now pretend that nothing is connected |
| 935 | // external pins are HD0-HD3(data), HSK(handshake), BAV(bus available) |
| 936 | |
| 937 | READ8_MEMBER(tms70c46_device::dockbus_status_r) |
| 938 | { |
| 939 | // d0: slave HSK low |
| 940 | // d1: slave BAV low |
| 941 | // d3: IRQ active |
| 942 | return 0; |
| 943 | } |
| 944 | |
| 945 | WRITE8_MEMBER(tms70c46_device::dockbus_status_w) |
| 946 | { |
| 947 | // d0: master HSK low (setting it low(1) also clears IRQ) |
| 948 | // d1: master BAV low |
| 949 | } |
| 950 | |
| 951 | READ8_MEMBER(tms70c46_device::dockbus_data_r) |
| 952 | { |
| 953 | return 0xff; |
| 954 | } |
| 955 | |
| 956 | WRITE8_MEMBER(tms70c46_device::dockbus_data_w) |
| 957 | { |
| 958 | } |
trunk/src/emu/cpu/tms7000/tms7000.h
| r31426 | r31427 | |
| 313 | 313 | |
| 314 | 314 | DECLARE_READ8_MEMBER(control_r); |
| 315 | 315 | DECLARE_WRITE8_MEMBER(control_w); |
| 316 | |
| 317 | DECLARE_READ8_MEMBER(dockbus_status_r); |
| 318 | DECLARE_WRITE8_MEMBER(dockbus_status_w); |
| 319 | DECLARE_READ8_MEMBER(dockbus_data_r); |
| 320 | DECLARE_WRITE8_MEMBER(dockbus_data_w); |
| 316 | 321 | |
| 317 | 322 | // access I/O port E if databus is disabled |
| 318 | 323 | DECLARE_READ8_MEMBER(e_bus_data_r) { return (space.debugger_access()) ? 0xff : ((m_control & 0x20) ? 0xff : m_io->read_byte(TMS7000_PORTE)); } |
trunk/src/mess/drivers/ti74.c
| r31426 | r31427 | |
| 62 | 62 | TODO: |
| 63 | 63 | - it runs too fast due to missing clock divider emulation in TMS70C46 |
| 64 | 64 | - external ram cartridge |
| 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 |
| 65 | - battery low/ok status.. setting INT1 on reset seems to clear it |
| 67 | 66 | - DOCK-BUS interface and peripherals, compatible with both TI-74 and TI-95 |
| 68 | 67 | * CI-7 cassette interface |
| 69 | 68 | * PC-324 thermal printer |
| r31426 | r31427 | |
| 272 | 271 | |
| 273 | 272 | static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, ti74_state ) |
| 274 | 273 | ADDRESS_MAP_UNMAP_HIGH |
| 275 | | AM_RANGE(0x010d, 0x010f) AM_NOP // DOCK-BUS |
| 276 | 274 | AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) |
| 277 | 275 | AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("6264.ic3") |
| 278 | 276 | AM_RANGE(0x4000, 0xbfff) AM_ROM AM_REGION("user1", 0) |