src/emu/machine/i8255a.c
| r7295 | r7296 | |
| 155 | 155 | { |
| 156 | 156 | mask |= 0xf0; |
| 157 | 157 | } |
| 158 | else |
| 159 | { |
| 160 | /* TTL inputs float high */ |
| 161 | data |= 0xf0; |
| 162 | } |
| 158 | 163 | break; |
| 159 | 164 | |
| 160 | 165 | case MODE_1: |
| r7295 | r7296 | |
| 187 | 192 | { |
| 188 | 193 | mask |= 0x0f; |
| 189 | 194 | } |
| 195 | else |
| 196 | { |
| 197 | /* TTL inputs float high */ |
| 198 | data |= 0x0f; |
| 199 | } |
| 190 | 200 | break; |
| 191 | 201 | |
| 192 | 202 | case MODE_1: |
| r7295 | r7296 | |
| 578 | 588 | i8255a->inte[PORT_A] = 0; |
| 579 | 589 | i8255a->inte1 = 0; |
| 580 | 590 | i8255a->inte2 = 0; |
| 591 | |
| 592 | if (port_mode(i8255a, PORT_A) == MODE_OUTPUT) |
| 593 | { |
| 594 | devcb_call_write8(&i8255a->out_port_func[PORT_A], 0, i8255a->output[PORT_A]); |
| 595 | } |
| 596 | else |
| 597 | { |
| 598 | /* TTL inputs float high */ |
| 599 | devcb_call_write8(&i8255a->out_port_func[PORT_A], 0, 0xff); |
| 600 | } |
| 581 | 601 | |
| 582 | 602 | if (LOG) logerror("8255A '%s' Group A Mode: %u\n", device->tag.cstr(), group_mode(i8255a, GROUP_A)); |
| 583 | 603 | if (LOG) logerror("8255A '%s' Port A Mode: %s\n", device->tag.cstr(), (port_mode(i8255a, PORT_A) == MODE_OUTPUT) ? "output" : "input"); |
| r7295 | r7296 | |
| 592 | 612 | i8255a->ibf[PORT_B] = 0; |
| 593 | 613 | i8255a->obf[PORT_B] = 1; |
| 594 | 614 | i8255a->inte[PORT_B] = 0; |
| 615 | |
| 616 | if (port_mode(i8255a, PORT_B) == MODE_OUTPUT) |
| 617 | { |
| 618 | devcb_call_write8(&i8255a->out_port_func[PORT_B], 0, i8255a->output[PORT_B]); |
| 619 | } |
| 620 | else |
| 621 | { |
| 622 | /* TTL inputs float high */ |
| 623 | devcb_call_write8(&i8255a->out_port_func[PORT_B], 0, 0xff); |
| 624 | } |
| 595 | 625 | |
| 596 | 626 | i8255a->output[PORT_C] = 0; |
| 597 | 627 | i8255a->input[PORT_C] = 0; |
| r7295 | r7296 | |
| 717 | 747 | { |
| 718 | 748 | i8255a_t *i8255a = get_safe_token(device); |
| 719 | 749 | |
| 720 | | return i8255a->output[PORT_A]; |
| 750 | UINT8 data = 0xff; |
| 751 | |
| 752 | if (port_mode(i8255a, PORT_A) == MODE_OUTPUT) |
| 753 | { |
| 754 | data = i8255a->output[PORT_A]; |
| 755 | } |
| 756 | |
| 757 | return data; |
| 721 | 758 | } |
| 722 | 759 | |
| 723 | 760 | READ8_DEVICE_HANDLER( i8255a_pb_r ) |
| 724 | 761 | { |
| 725 | 762 | i8255a_t *i8255a = get_safe_token(device); |
| 726 | 763 | |
| 727 | | return i8255a->output[PORT_B]; |
| 764 | UINT8 data = 0xff; |
| 765 | |
| 766 | if (port_mode(i8255a, PORT_B) == MODE_OUTPUT) |
| 767 | { |
| 768 | data = i8255a->output[PORT_B]; |
| 769 | } |
| 770 | |
| 771 | return data; |
| 728 | 772 | } |
| 729 | 773 | |
| 730 | 774 | WRITE_LINE_DEVICE_HANDLER( i8255a_pc2_w ) |