trunk/src/mess/drivers/kyocera.c
| r22076 | r22077 | |
| 31 | 31 | - un-Y2K-hack tandy200 |
| 32 | 32 | - keyboard is unresponsive for couple of seconds after boot |
| 33 | 33 | - soft power on/off |
| 34 | | - IM6042 UART |
| 35 | 34 | - pc8201 48K RAM option |
| 36 | 35 | - pc8201 NEC PC-8241A video interface (TMS9918, 16K videoRAM, 8K ROM) |
| 37 | 36 | - pc8201 NEC PC-8233 floppy controller |
| r22076 | r22077 | |
| 39 | 38 | - trsm100 Tandy Portable Disk Drive (TPDD: 100k 3?", TPDD2: 200k 3?") (undumped HD63A01V1 MCU + full custom uPD65002, serial comms via the missing IM6042, not going to happen anytime soon) |
| 40 | 39 | - trsm100 Chipmunk disk drive (384k 3?") (full custom logic, not going to happen) |
| 41 | 40 | - trsm100 RS232/modem select |
| 42 | | - tandy200 UART8251 |
| 43 | 41 | - tandy200 RTC alarm |
| 44 | 42 | - tandy200 TCM5089 DTMF sound |
| 45 | 43 | - international keyboard option ROMs |
| r22076 | r22077 | |
| 239 | 237 | |
| 240 | 238 | UINT8 data = 0x40; |
| 241 | 239 | |
| 242 | | // TODO carrier detect |
| 240 | // carrier detect |
| 241 | data |= m_rs232->dcd_r(); |
| 243 | 242 | |
| 244 | 243 | // overrun error |
| 245 | 244 | data |= m_uart->oe_r() << 1; |
| r22076 | r22077 | |
| 281 | 280 | |
| 282 | 281 | UINT8 data = 0x40; |
| 283 | 282 | |
| 284 | | // TODO data carrier detect / ring detect |
| 283 | // data carrier detect / ring detect |
| 284 | data |= m_rs232->dcd_r(); |
| 285 | 285 | |
| 286 | 286 | // overrun error |
| 287 | 287 | data |= m_uart->oe_r() << 1; |
| r22076 | r22077 | |
| 965 | 965 | m_bell = BIT(data, 5); |
| 966 | 966 | |
| 967 | 967 | if (m_buzzer) speaker_level_w(m_speaker, m_bell); |
| 968 | |
| 969 | // RS-232 |
| 970 | m_rs232->dtr_w(BIT(data, 6)); |
| 971 | m_rs232->rts_w(BIT(data, 7)); |
| 968 | 972 | } |
| 969 | 973 | |
| 970 | 974 | READ8_MEMBER( kc85_state::i8155_pc_r ) |
| r22076 | r22077 | |
| 991 | 995 | data |= m_centronics->not_busy_r() << 1; |
| 992 | 996 | data |= m_centronics->busy_r() << 2; |
| 993 | 997 | |
| 998 | // RS-232 |
| 999 | data |= m_rs232->cts_r() << 4; |
| 1000 | data |= m_rs232->dsr_r() << 5; |
| 1001 | |
| 994 | 1002 | return data; |
| 995 | 1003 | } |
| 996 | 1004 | |
| r22076 | r22077 | |
| 1082 | 1090 | |
| 1083 | 1091 | UINT8 data = 0x01; |
| 1084 | 1092 | |
| 1093 | // centronics |
| 1085 | 1094 | data |= m_centronics->not_busy_r() << 1; |
| 1086 | 1095 | data |= m_centronics->busy_r() << 2; |
| 1087 | 1096 | |
| 1097 | // RS-232 |
| 1098 | data |= m_rs232->dcd_r() << 4; |
| 1099 | |
| 1088 | 1100 | return data; |
| 1089 | 1101 | } |
| 1090 | 1102 | |
| r22076 | r22077 | |
| 1113 | 1125 | { |
| 1114 | 1126 | 0, |
| 1115 | 1127 | 0, |
| 1128 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 1129 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 1116 | 1130 | DEVCB_NULL, |
| 1117 | 1131 | DEVCB_NULL, |
| 1118 | | DEVCB_NULL, |
| 1119 | | DEVCB_NULL, |
| 1120 | 1132 | DEVCB_NULL |
| 1121 | 1133 | }; |
| 1122 | 1134 | |
| r22076 | r22077 | |
| 1124 | 1136 | |
| 1125 | 1137 | static const i8251_interface tandy200_uart_intf = |
| 1126 | 1138 | { |
| 1139 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 1140 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 1141 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 1142 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 1143 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 1127 | 1144 | DEVCB_NULL, |
| 1128 | 1145 | DEVCB_NULL, |
| 1129 | 1146 | DEVCB_NULL, |
| 1147 | DEVCB_NULL |
| 1148 | }; |
| 1149 | |
| 1150 | //------------------------------------------------- |
| 1151 | // rs232_port_interface rs232_intf |
| 1152 | //------------------------------------------------- |
| 1153 | |
| 1154 | static const rs232_port_interface rs232_intf = |
| 1155 | { |
| 1130 | 1156 | DEVCB_NULL, |
| 1131 | 1157 | DEVCB_NULL, |
| 1132 | 1158 | DEVCB_NULL, |
| 1133 | 1159 | DEVCB_NULL, |
| 1134 | | DEVCB_NULL, |
| 1135 | 1160 | DEVCB_NULL |
| 1136 | 1161 | }; |
| 1137 | 1162 | |
| r22076 | r22077 | |
| 1281 | 1306 | NULL |
| 1282 | 1307 | }; |
| 1283 | 1308 | |
| 1284 | | WRITE_LINE_MEMBER(kc85_state::kc85_sod_w) |
| 1309 | WRITE_LINE_MEMBER( kc85_state::kc85_sod_w ) |
| 1285 | 1310 | { |
| 1286 | | device_t *device = machine().device(CASSETTE_TAG); |
| 1287 | | dynamic_cast<cassette_image_device *>(device)->output(state ? +1.0 : -1.0); |
| 1311 | m_cassette->output(state ? +1.0 : -1.0); |
| 1288 | 1312 | } |
| 1289 | 1313 | |
| 1290 | | READ_LINE_MEMBER(kc85_state::kc85_sid_r) |
| 1314 | READ_LINE_MEMBER( kc85_state::kc85_sid_r ) |
| 1291 | 1315 | { |
| 1292 | | device_t *device = machine().device(CASSETTE_TAG); |
| 1293 | | return dynamic_cast<cassette_image_device *>(device)->input() > 0.0; |
| 1316 | return m_cassette->input() > 0.0; |
| 1294 | 1317 | } |
| 1295 | 1318 | |
| 1296 | 1319 | static I8085_CONFIG( kc85_i8085_config ) |
| r22076 | r22077 | |
| 1327 | 1350 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) |
| 1328 | 1351 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf) |
| 1329 | 1352 | MCFG_IM6402_ADD(IM6402_TAG, uart_intf) |
| 1353 | MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL, NULL) |
| 1330 | 1354 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 1331 | 1355 | MCFG_CASSETTE_ADD(CASSETTE_TAG, kc85_cassette_interface) |
| 1332 | 1356 | |
| r22076 | r22077 | |
| 1364 | 1388 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) |
| 1365 | 1389 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf) |
| 1366 | 1390 | MCFG_IM6402_ADD(IM6402_TAG, uart_intf) |
| 1391 | MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL, NULL) |
| 1367 | 1392 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 1368 | 1393 | MCFG_CASSETTE_ADD(CASSETTE_TAG, kc85_cassette_interface) |
| 1369 | 1394 | |
| r22076 | r22077 | |
| 1407 | 1432 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) |
| 1408 | 1433 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf) |
| 1409 | 1434 | MCFG_IM6402_ADD(IM6402_TAG, uart_intf) |
| 1435 | MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL, NULL) |
| 1410 | 1436 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 1411 | 1437 | MCFG_CASSETTE_ADD(CASSETTE_TAG, kc85_cassette_interface) |
| 1412 | 1438 | // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) |
| r22076 | r22077 | |
| 1455 | 1481 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, tandy200_8155_intf) |
| 1456 | 1482 | MCFG_RP5C01_ADD(RP5C01A_TAG, XTAL_32_768kHz, tandy200_rtc_intf) |
| 1457 | 1483 | MCFG_I8251_ADD(I8251_TAG, /*XTAL_4_9152MHz/2,*/ tandy200_uart_intf) |
| 1484 | MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL, NULL) |
| 1458 | 1485 | // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) |
| 1459 | 1486 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 1460 | 1487 | MCFG_CASSETTE_ADD(CASSETTE_TAG, kc85_cassette_interface) |
trunk/src/mess/includes/kyocera.h
| r22076 | r22077 | |
| 14 | 14 | #include "machine/im6402.h" |
| 15 | 15 | #include "machine/ram.h" |
| 16 | 16 | #include "machine/rp5c01.h" |
| 17 | #include "machine/serial.h" |
| 17 | 18 | #include "machine/upd1990a.h" |
| 18 | 19 | #include "video/hd44102.h" |
| 19 | 20 | #include "video/hd61830.h" |
| r22076 | r22077 | |
| 37 | 38 | #define HD44102_8_TAG "m9" |
| 38 | 39 | #define HD44102_9_TAG "m10" |
| 39 | 40 | #define CENTRONICS_TAG "centronics" |
| 41 | #define RS232_TAG "rs232" |
| 40 | 42 | |
| 41 | 43 | //#define I8085_TAG "m19" |
| 42 | 44 | //#define I8155_TAG "m12" |
| r22076 | r22077 | |
| 68 | 70 | m_speaker(*this, SPEAKER_TAG), |
| 69 | 71 | m_cassette(*this, CASSETTE_TAG), |
| 70 | 72 | m_ram(*this, RAM_TAG), |
| 73 | m_rs232(*this, RS232_TAG), |
| 71 | 74 | m_rom(*this, I8085_TAG), |
| 72 | 75 | m_option(*this, "option"), |
| 73 | 76 | m_y0(*this, "Y0"), |
| r22076 | r22077 | |
| 99 | 102 | required_device<speaker_sound_device> m_speaker; |
| 100 | 103 | required_device<cassette_image_device> m_cassette; |
| 101 | 104 | required_device<ram_device> m_ram; |
| 105 | required_device<rs232_port_device> m_rs232; |
| 102 | 106 | required_memory_region m_rom; |
| 103 | 107 | required_memory_region m_option; |
| 104 | 108 | required_ioport m_y0; |
| r22076 | r22077 | |
| 191 | 195 | m_speaker(*this, SPEAKER_TAG), |
| 192 | 196 | m_cassette(*this, CASSETTE_TAG), |
| 193 | 197 | m_ram(*this, RAM_TAG), |
| 198 | m_rs232(*this, RS232_TAG), |
| 194 | 199 | m_rom(*this, I8085_TAG), |
| 195 | 200 | m_option(*this, "option"), |
| 196 | 201 | m_y0(*this, "Y0"), |
| r22076 | r22077 | |
| 211 | 216 | required_device<speaker_sound_device> m_speaker; |
| 212 | 217 | required_device<cassette_image_device> m_cassette; |
| 213 | 218 | required_device<ram_device> m_ram; |
| 219 | required_device<rs232_port_device> m_rs232; |
| 214 | 220 | required_memory_region m_rom; |
| 215 | 221 | required_memory_region m_option; |
| 216 | 222 | required_ioport m_y0; |