trunk/src/emu/cpu/tms0980/tms0980.c
| r241829 | r241830 | |
| 12 | 12 | ---------+-----------+----------+--------+--------+--------|---------- |
| 13 | 13 | tms0970 | 1024 * 8 | 64 * 4 | | | | tms0972 |
| 14 | 14 | tms0920* | 511?* 9 | 40 * 5 | | | | tmc0921 |
| 15 | | tms0980 | 2048 * 9 | 64 * 9 | | | | tmc0981 |
| 15 | tms0980 | 2048 * 9 | 64 * 9?| | | | tmc0981 |
| 16 | 16 | tms1000 | 1024 * 8 | 64 * 4 | 11 | 8 | 4 | tms1001 |
| 17 | 17 | tms1040* | 1024 * 8 | 64 * 4 | | | | tms1043 |
| 18 | 18 | tms1070 | 1024 * 8 | 64 * 4 | 11 | 8 | 4 | tms1071 |
| r241829 | r241830 | |
| 203 | 203 | #define I_DAN ( MICRO_MASK | M_CKP | M_ATN | M_CIN | M_C8 | M_AUTA ) |
| 204 | 204 | #define I_DMAN ( MICRO_MASK | M_MTP | M_15TN | M_C8 | M_AUTA ) |
| 205 | 205 | #define I_DMEA ( MICRO_MASK | M_MTP | M_DMTP | M_SSS | M_AUTA ) |
| 206 | #define I_NDMEA ( MICRO_MASK | M_MTN | M_NDMTP | M_SSS | M_AUTA ) |
| 206 | 207 | #define I_DNAA ( MICRO_MASK | M_DMTP | M_NATN | M_SSS | M_AUTA ) |
| 207 | 208 | #define I_DYN ( MICRO_MASK | M_YTP | M_15TN | M_C8 | M_AUTY ) |
| 208 | 209 | #define I_IA ( MICRO_MASK | M_ATN | M_CIN | M_AUTA ) |
| r241829 | r241830 | |
| 211 | 212 | #define I_KNEZ ( MICRO_MASK | M_CKP | M_NE ) |
| 212 | 213 | #define I_MNEA ( MICRO_MASK | M_MTP | M_ATN | M_NE ) |
| 213 | 214 | #define I_MNEZ ( MICRO_MASK | M_MTP | M_NE ) |
| 214 | | #define I_M_NDMEA ( MICRO_MASK | M_MTN | M_NDTMP | M_SSS | M_AUTA ) |
| 215 | 215 | #define I_SAMAN ( MICRO_MASK | M_MTP | M_NATN | M_CIN | M_C8 | M_AUTA ) |
| 216 | 216 | #define I_SETR ( MICRO_MASK | M_YTP | M_15TN | M_AUTY | M_C8 ) |
| 217 | 217 | #define I_TAM ( MICRO_MASK | M_STO ) |
| r241829 | r241830 | |
| 248 | 248 | /* 0x000 */ |
| 249 | 249 | F_COMX, I_ALEM, I_YNEA, I_XMA, I_DYN, I_IYC, I_CLA, I_DMAN, |
| 250 | 250 | I_TKA, I_MNEA, I_TKM, F_ILL, F_ILL, F_SETR, I_KNEZ, F_ILL, |
| 251 | | I_DMEA, I_DNAA, I_CCLA, I_DMEA, F_ILL, I_AMAAC, F_ILL, F_ILL, |
| 251 | I_DMEA, I_DNAA, I_CCLA, I_NDMEA, F_ILL, I_AMAAC, F_ILL, F_ILL, |
| 252 | 252 | I_CTMDYN, I_XDA, F_ILL, F_ILL, F_ILL, F_ILL, F_ILL, F_ILL, |
| 253 | 253 | I_TBIT, I_TBIT, I_TBIT, I_TBIT, F_ILL, F_ILL, F_ILL, F_ILL, |
| 254 | 254 | I_TAY, I_TMA, I_TMY, I_TYA, I_TAMDYN, I_TAMIYC, I_TAMZA, I_TAM, |
| r241829 | r241830 | |
| 406 | 406 | }; |
| 407 | 407 | |
| 408 | 408 | |
| 409 | | static ADDRESS_MAP_START(tms0980_internal_rom, AS_PROGRAM, 16, tms1xxx_cpu_device) |
| 410 | | AM_RANGE( 0x0000, 0x0FFF ) AM_ROM |
| 409 | static ADDRESS_MAP_START(program_11bit_9, AS_PROGRAM, 16, tms1xxx_cpu_device) |
| 410 | AM_RANGE( 0x000, 0xfff ) AM_ROM |
| 411 | 411 | ADDRESS_MAP_END |
| 412 | 412 | |
| 413 | 413 | |
| 414 | | static ADDRESS_MAP_START(tms0980_internal_ram, AS_DATA, 8, tms1xxx_cpu_device) |
| 415 | | AM_RANGE( 0x0000, 0x0FFF ) AM_RAM |
| 416 | | ADDRESS_MAP_END |
| 417 | | |
| 418 | | |
| 419 | 414 | static ADDRESS_MAP_START(program_10bit_8, AS_PROGRAM, 8, tms1xxx_cpu_device) |
| 420 | 415 | AM_RANGE( 0x000, 0x3ff ) AM_ROM |
| 421 | 416 | ADDRESS_MAP_END |
| r241829 | r241830 | |
| 637 | 632 | nand322 means if pc = 0x3f, output MUST be true |
| 638 | 633 | hence, nand325 is if pc = 0x7f, false. if pc = 0x3f, true. if pc&0x60 is zero OR pc&0x60 is 0x60, true. otherwise, false. |
| 639 | 634 | |
| 640 | | tms0980_next_pc below implements an indentical function to this in a somewhat more elegant way. |
| 635 | tms0980_next_pc below implements an identical function to this in a somewhat more elegant way. |
| 641 | 636 | */ |
| 642 | 637 | void tms1xxx_cpu_device::next_pc() |
| 643 | 638 | { |
| r241829 | r241830 | |
| 1025 | 1020 | |
| 1026 | 1021 | tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 1027 | 1022 | : tms1xxx_cpu_device( mconfig, TMS0980, "TMS0980", tag, owner, clock, tms0980_decode, 0x00ff, 0x07ff, 7, 9, 4 |
| 1028 | | , 12, ADDRESS_MAP_NAME( tms0980_internal_rom ), 7, ADDRESS_MAP_NAME( tms0980_internal_ram ), "tms0980", __FILE__) |
| 1023 | , 12, ADDRESS_MAP_NAME( program_11bit_9 ), 6, ADDRESS_MAP_NAME( data_6bit ), "tms0980", __FILE__) |
| 1029 | 1024 | { |
| 1030 | 1025 | } |
| 1031 | 1026 | |
| r241829 | r241830 | |
| 1039 | 1034 | |
| 1040 | 1035 | tms1000_cpu_device::tms1000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 1041 | 1036 | : tms1xxx_cpu_device( mconfig, TMS1000, "TMS1000", tag, owner, clock, tms1000_default_decode, 0x00ff, 0x07ff, 6, 8, 2 |
| 1042 | | , 11, ADDRESS_MAP_NAME( program_11bit_8 ), 7, ADDRESS_MAP_NAME( data_7bit ), "tms1000", __FILE__) |
| 1037 | , 10, ADDRESS_MAP_NAME( program_10bit_8 ), 6, ADDRESS_MAP_NAME( data_6bit ), "tms1000", __FILE__) |
| 1043 | 1038 | { |
| 1044 | 1039 | } |
| 1045 | 1040 | |