trunk/src/mess/drivers/victor9k.c
| r26892 | r26893 | |
| 299 | 299 | } |
| 300 | 300 | } |
| 301 | 301 | |
| 302 | WRITE_LINE_MEMBER(victor9k_state::vert_w) |
| 303 | { |
| 304 | m_via2->write_pa7(state); |
| 305 | m_pic->ir7_w(state); |
| 306 | } |
| 307 | |
| 302 | 308 | static MC6845_INTERFACE( hd46505s_intf ) |
| 303 | 309 | { |
| 304 | 310 | false, |
| r26892 | r26893 | |
| 309 | 315 | DEVCB_NULL, |
| 310 | 316 | DEVCB_NULL, |
| 311 | 317 | DEVCB_NULL, |
| 312 | | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), |
| 318 | DEVCB_DRIVER_LINE_MEMBER(victor9k_state, vert_w), |
| 313 | 319 | NULL |
| 314 | 320 | }; |
| 315 | 321 | |
| r26892 | r26893 | |
| 442 | 448 | m_ieee488->dio_w(data); |
| 443 | 449 | } |
| 444 | 450 | |
| 445 | | READ8_MEMBER( victor9k_state::via1_pb_r ) |
| 451 | DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_nfrd ) |
| 446 | 452 | { |
| 447 | | /* |
| 453 | m_via1->write_pb6(state); |
| 454 | m_via1->write_ca1(state); |
| 455 | } |
| 448 | 456 | |
| 449 | | bit description |
| 450 | | |
| 451 | | PB0 DAV |
| 452 | | PB1 EOI |
| 453 | | PB2 REN |
| 454 | | PB3 ATN |
| 455 | | PB4 IFC |
| 456 | | PB5 SRQ |
| 457 | | PB6 NRFD |
| 458 | | PB7 NDAC |
| 459 | | |
| 460 | | */ |
| 461 | | |
| 462 | | UINT8 data = 0; |
| 463 | | |
| 464 | | // IEEE-488 |
| 465 | | data |= m_ieee488->dav_r(); |
| 466 | | data |= m_ieee488->eoi_r() << 1; |
| 467 | | data |= m_ieee488->ren_r() << 2; |
| 468 | | data |= m_ieee488->atn_r() << 3; |
| 469 | | data |= m_ieee488->ifc_r() << 4; |
| 470 | | data |= m_ieee488->srq_r() << 5; |
| 471 | | data |= m_ieee488->nrfd_r() << 6; |
| 472 | | data |= m_ieee488->ndac_r() << 7; |
| 473 | | |
| 474 | | return data; |
| 457 | DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_ndac ) |
| 458 | { |
| 459 | m_via1->write_pb7(state); |
| 460 | m_via1->write_ca2(state); |
| 475 | 461 | } |
| 476 | 462 | |
| 477 | 463 | WRITE8_MEMBER( victor9k_state::via1_pb_w ) |
| r26892 | r26893 | |
| 513 | 499 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 514 | 500 | } |
| 515 | 501 | |
| 516 | | |
| 517 | | READ8_MEMBER( victor9k_state::via2_pa_r ) |
| 518 | | { |
| 519 | | /* |
| 520 | | |
| 521 | | bit description |
| 522 | | |
| 523 | | PA0 |
| 524 | | PA1 |
| 525 | | PA2 RIA |
| 526 | | PA3 DSRA |
| 527 | | PA4 RIB |
| 528 | | PA5 DSRB |
| 529 | | PA6 KBDATA |
| 530 | | PA7 VERT |
| 531 | | |
| 532 | | */ |
| 533 | | |
| 534 | | UINT8 data = 0; |
| 535 | | |
| 536 | | // serial |
| 537 | | data |= m_rs232a->ri_r() << 2; |
| 538 | | data |= m_rs232a->dsr_r() << 3; |
| 539 | | data |= m_rs232b->ri_r() << 4; |
| 540 | | data |= m_rs232b->dsr_r() << 5; |
| 541 | | |
| 542 | | // keyboard data |
| 543 | | data |= m_kb->kbdata_r() << 6; |
| 544 | | |
| 545 | | // vertical sync |
| 546 | | data |= m_crtc->vsync_r() << 7; |
| 547 | | |
| 548 | | return data; |
| 549 | | } |
| 550 | | |
| 551 | 502 | WRITE8_MEMBER( victor9k_state::via2_pa_w ) |
| 552 | 503 | { |
| 553 | 504 | /* |
| r26892 | r26893 | |
| 593 | 544 | m_cont = data >> 5; |
| 594 | 545 | } |
| 595 | 546 | |
| 596 | | WRITE_LINE_MEMBER( victor9k_state::via2_irq_w ) |
| 597 | | { |
| 598 | | m_via2_irq = state; |
| 599 | 547 | |
| 600 | | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 548 | WRITE_LINE_MEMBER( victor9k_state::write_ria ) |
| 549 | { |
| 550 | m_upd7201->ria_w(state); |
| 551 | m_via2->write_pa2(state); |
| 601 | 552 | } |
| 602 | 553 | |
| 603 | 554 | |
| 604 | | READ8_MEMBER( victor9k_state::via3_pa_r ) |
| 555 | WRITE_LINE_MEMBER( victor9k_state::write_rib ) |
| 605 | 556 | { |
| 606 | | /* |
| 607 | | |
| 608 | | bit description |
| 609 | | |
| 610 | | PA0 J5-16 |
| 611 | | PA1 J5-18 |
| 612 | | PA2 J5-20 |
| 613 | | PA3 J5-22 |
| 614 | | PA4 J5-24 |
| 615 | | PA5 J5-26 |
| 616 | | PA6 J5-28 |
| 617 | | PA7 J5-30 |
| 618 | | |
| 619 | | */ |
| 620 | | |
| 621 | | return 0; |
| 557 | m_upd7201->rib_w(state); |
| 558 | m_via2->write_pa4(state); |
| 622 | 559 | } |
| 623 | 560 | |
| 624 | | WRITE8_MEMBER( victor9k_state::via3_pa_w ) |
| 561 | |
| 562 | WRITE_LINE_MEMBER( victor9k_state::via2_irq_w ) |
| 625 | 563 | { |
| 626 | | /* |
| 564 | m_via2_irq = state; |
| 627 | 565 | |
| 628 | | bit description |
| 629 | | |
| 630 | | PA0 J5-16 |
| 631 | | PA1 J5-18 |
| 632 | | PA2 J5-20 |
| 633 | | PA3 J5-22 |
| 634 | | PA4 J5-24 |
| 635 | | PA5 J5-26 |
| 636 | | PA6 J5-28 |
| 637 | | PA7 J5-30 |
| 638 | | |
| 639 | | */ |
| 566 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 640 | 567 | } |
| 641 | 568 | |
| 642 | | READ8_MEMBER( victor9k_state::via3_pb_r ) |
| 643 | | { |
| 644 | | /* |
| 645 | 569 | |
| 646 | | bit description |
| 570 | /* |
| 571 | bit description |
| 647 | 572 | |
| 648 | | PB0 J5-32 |
| 649 | | PB1 J5-34 |
| 650 | | PB2 J5-36 |
| 651 | | PB3 J5-38 |
| 652 | | PB4 J5-40 |
| 653 | | PB5 J5-42 |
| 654 | | PB6 J5-44 |
| 655 | | PB7 J5-46 |
| 573 | PA0 J5-16 |
| 574 | PA1 J5-18 |
| 575 | PA2 J5-20 |
| 576 | PA3 J5-22 |
| 577 | PA4 J5-24 |
| 578 | PA5 J5-26 |
| 579 | PA6 J5-28 |
| 580 | PA7 J5-30 |
| 581 | PB0 J5-32 |
| 582 | PB1 J5-34 |
| 583 | PB2 J5-36 |
| 584 | PB3 J5-38 |
| 585 | PB4 J5-40 |
| 586 | PB5 J5-42 |
| 587 | PB6 J5-44 |
| 588 | PB7 J5-46 |
| 589 | CA1 J5-12 |
| 590 | CB1 J5-48 |
| 591 | CA2 J5-14 |
| 592 | CB2 J5-50 |
| 593 | */ |
| 656 | 594 | |
| 657 | | */ |
| 658 | | |
| 659 | | return 0; |
| 660 | | } |
| 661 | | |
| 662 | 595 | WRITE8_MEMBER( victor9k_state::via3_pb_w ) |
| 663 | 596 | { |
| 664 | | /* |
| 665 | | |
| 666 | | bit description |
| 667 | | |
| 668 | | PB0 J5-32 |
| 669 | | PB1 J5-34 |
| 670 | | PB2 J5-36 |
| 671 | | PB3 J5-38 |
| 672 | | PB4 J5-40 |
| 673 | | PB5 J5-42 |
| 674 | | PB6 J5-44 |
| 675 | | PB7 J5-46 |
| 676 | | |
| 677 | | */ |
| 678 | | |
| 679 | 597 | // codec clock output |
| 680 | 598 | m_ssda->rx_clk_w(BIT(data, 7)); |
| 681 | 599 | m_ssda->tx_clk_w(BIT(data, 7)); |
| r26892 | r26893 | |
| 743 | 661 | } |
| 744 | 662 | |
| 745 | 663 | |
| 746 | | READ8_MEMBER( victor9k_state::via5_pa_r ) |
| 747 | | { |
| 748 | | /* |
| 664 | /* |
| 749 | 665 | |
| 750 | | bit description |
| 666 | bit description |
| 751 | 667 | |
| 752 | | PA0 E0 |
| 753 | | PA1 E1 |
| 754 | | PA2 I1 |
| 755 | | PA3 E2 |
| 756 | | PA4 E4 |
| 757 | | PA5 E5 |
| 758 | | PA6 I7 |
| 759 | | PA7 E6 |
| 668 | PA0 E0 |
| 669 | PA1 E1 |
| 670 | PA2 I1 |
| 671 | PA3 E2 |
| 672 | PA4 E4 |
| 673 | PA5 E5 |
| 674 | PA6 I7 |
| 675 | PA7 E6 |
| 760 | 676 | |
| 761 | | */ |
| 677 | */ |
| 762 | 678 | |
| 763 | | return 0; |
| 764 | | } |
| 765 | | |
| 766 | 679 | WRITE8_MEMBER( victor9k_state::via5_pb_w ) |
| 767 | 680 | { |
| 768 | 681 | /* |
| r26892 | r26893 | |
| 945 | 858 | m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE); |
| 946 | 859 | } |
| 947 | 860 | |
| 861 | WRITE_LINE_MEMBER( victor9k_state::kbdata_w ) |
| 862 | { |
| 863 | m_via2->write_cb2(state); |
| 864 | m_via2->write_pa6(state); |
| 865 | } |
| 948 | 866 | |
| 949 | 867 | //------------------------------------------------- |
| 950 | 868 | // SLOT_INTERFACE( victor9k_floppies ) |
| r26892 | r26893 | |
| 1068 | 986 | |
| 1069 | 987 | // devices |
| 1070 | 988 | MCFG_IEEE488_BUS_ADD() |
| 1071 | | MCFG_IEEE488_NRFD_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca1)) |
| 1072 | | MCFG_IEEE488_NDAC_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca2)) |
| 989 | MCFG_IEEE488_DAV_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb0)) |
| 990 | MCFG_IEEE488_EOI_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb1)) |
| 991 | MCFG_IEEE488_REN_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb2)) |
| 992 | MCFG_IEEE488_ATN_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb3)) |
| 993 | MCFG_IEEE488_IFC_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb4)) |
| 994 | MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb5)) |
| 995 | MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(victor9k_state, write_nfrd)) |
| 996 | MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(victor9k_state, write_ndac)) |
| 997 | |
| 1073 | 998 | MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) |
| 1074 | 999 | MCFG_PIT8253_ADD(I8253_TAG, pit_intf) |
| 1075 | 1000 | MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, mpsc_intf) |
| r26892 | r26893 | |
| 1077 | 1002 | |
| 1078 | 1003 | MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_30MHz/30) |
| 1079 | 1004 | MCFG_VIA6522_READPA_HANDLER(DEVREAD8(IEEE488_TAG, ieee488_device, dio_r)) |
| 1080 | | MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via1_pb_r)) |
| 1081 | 1005 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via1_pa_w)) |
| 1082 | 1006 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via1_pb_w)) |
| 1083 | 1007 | MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor9k_state, codec_vol_w)) |
| 1084 | 1008 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via1_irq_w)) |
| 1085 | 1009 | |
| 1086 | 1010 | MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30) |
| 1087 | | MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via2_pa_r)) |
| 1088 | 1011 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w)) |
| 1089 | 1012 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w)) |
| 1090 | 1013 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w)) |
| 1091 | 1014 | |
| 1092 | 1015 | MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL_30MHz/30) |
| 1093 | | MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via3_pa_r)) |
| 1094 | | MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via3_pb_r)) |
| 1095 | | // CA1 J5-12 |
| 1096 | | // CB1 J5-48 |
| 1097 | | // CA2 J5-14 |
| 1098 | | // CB2 J5-50 |
| 1099 | | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via3_pa_w)) |
| 1100 | 1016 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w)) |
| 1101 | 1017 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w)) |
| 1102 | 1018 | |
| r26892 | r26893 | |
| 1107 | 1023 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via4_irq_w)) |
| 1108 | 1024 | |
| 1109 | 1025 | MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30) |
| 1110 | | MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via5_pa_r)) |
| 1111 | | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via5_pb_w)) |
| 1112 | 1026 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via5_irq_w)) |
| 1113 | 1027 | |
| 1114 | 1028 | MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30) |
| r26892 | r26893 | |
| 1126 | 1040 | MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) |
| 1127 | 1041 | MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) |
| 1128 | 1042 | MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w)) |
| 1129 | | MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ria_w)) |
| 1043 | MCFG_RS232_OUT_RI_HANDLER(WRITELINE(victor9k_state, write_ria)) |
| 1130 | 1044 | MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsa_w)) |
| 1045 | MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_pa3)) |
| 1131 | 1046 | |
| 1132 | 1047 | MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) |
| 1133 | 1048 | MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxb_w)) |
| 1134 | 1049 | MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcdb_w)) |
| 1135 | | MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w)) |
| 1050 | MCFG_RS232_OUT_RI_HANDLER(WRITELINE(victor9k_state, write_ria)) |
| 1136 | 1051 | MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) |
| 1052 | MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_pa5)) |
| 1137 | 1053 | |
| 1138 | 1054 | MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0) |
| 1139 | 1055 | MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w)) |
| 1140 | | MCFG_VICTOR9K_KBDATA_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_cb2)) |
| 1056 | MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w)) |
| 1141 | 1057 | |
| 1142 | 1058 | // internal ram |
| 1143 | 1059 | MCFG_RAM_ADD(RAM_TAG) |
trunk/src/mess/includes/victor9k.h
| r26892 | r26893 | |
| 62 | 62 | m_fdc_cpu(*this, I8048_TAG), |
| 63 | 63 | m_ieee488(*this, IEEE488_TAG), |
| 64 | 64 | m_pic(*this, I8259A_TAG), |
| 65 | m_upd7201(*this, UPD7201_TAG), |
| 65 | 66 | m_ssda(*this, MC6852_TAG), |
| 66 | 67 | m_via1(*this, M6522_1_TAG), |
| 67 | 68 | m_via2(*this, M6522_2_TAG), |
| r26892 | r26893 | |
| 99 | 100 | required_device<cpu_device> m_fdc_cpu; |
| 100 | 101 | required_device<ieee488_device> m_ieee488; |
| 101 | 102 | required_device<pic8259_device> m_pic; |
| 103 | required_device<upd7201_device> m_upd7201; |
| 102 | 104 | required_device<mc6852_device> m_ssda; |
| 103 | 105 | required_device<via6522_device> m_via1; |
| 104 | 106 | required_device<via6522_device> m_via2; |
| r26892 | r26893 | |
| 125 | 127 | DECLARE_WRITE8_MEMBER( da_w ); |
| 126 | 128 | |
| 127 | 129 | DECLARE_WRITE8_MEMBER( via1_pa_w ); |
| 128 | | DECLARE_READ8_MEMBER( via1_pb_r ); |
| 130 | DECLARE_WRITE_LINE_MEMBER( write_nfrd ); |
| 131 | DECLARE_WRITE_LINE_MEMBER( write_ndac ); |
| 129 | 132 | DECLARE_WRITE8_MEMBER( via1_pb_w ); |
| 130 | 133 | DECLARE_WRITE_LINE_MEMBER( via1_irq_w ); |
| 131 | 134 | DECLARE_WRITE_LINE_MEMBER( codec_vol_w ); |
| 132 | 135 | |
| 133 | | DECLARE_READ8_MEMBER( via2_pa_r ); |
| 134 | 136 | DECLARE_WRITE8_MEMBER( via2_pa_w ); |
| 135 | 137 | DECLARE_WRITE8_MEMBER( via2_pb_w ); |
| 138 | DECLARE_WRITE_LINE_MEMBER( write_ria ); |
| 139 | DECLARE_WRITE_LINE_MEMBER( write_rib ); |
| 136 | 140 | DECLARE_WRITE_LINE_MEMBER( via2_irq_w ); |
| 137 | 141 | |
| 138 | | DECLARE_READ8_MEMBER( via3_pa_r ); |
| 139 | | DECLARE_READ8_MEMBER( via3_pb_r ); |
| 140 | | DECLARE_WRITE8_MEMBER( via3_pa_w ); |
| 141 | 142 | DECLARE_WRITE8_MEMBER( via3_pb_w ); |
| 142 | 143 | DECLARE_WRITE_LINE_MEMBER( via3_irq_w ); |
| 143 | 144 | |
| r26892 | r26893 | |
| 146 | 147 | DECLARE_WRITE_LINE_MEMBER( mode_w ); |
| 147 | 148 | DECLARE_WRITE_LINE_MEMBER( via4_irq_w ); |
| 148 | 149 | |
| 149 | | DECLARE_READ8_MEMBER( via5_pa_r ); |
| 150 | 150 | DECLARE_WRITE8_MEMBER( via5_pb_w ); |
| 151 | 151 | DECLARE_WRITE_LINE_MEMBER( via5_irq_w ); |
| 152 | 152 | |
| r26892 | r26893 | |
| 157 | 157 | DECLARE_WRITE_LINE_MEMBER( drw_w ); |
| 158 | 158 | DECLARE_WRITE_LINE_MEMBER( erase_w ); |
| 159 | 159 | DECLARE_WRITE_LINE_MEMBER( kbrdy_w ); |
| 160 | DECLARE_WRITE_LINE_MEMBER( kbdata_w ); |
| 161 | DECLARE_WRITE_LINE_MEMBER( vert_w ); |
| 160 | 162 | DECLARE_WRITE_LINE_MEMBER( via6_irq_w ); |
| 161 | 163 | |
| 162 | 164 | DECLARE_WRITE_LINE_MEMBER( ssda_irq_w ); |