trunk/src/mame/machine/archimds.c
| r29540 | r29541 | |
| 685 | 685 | { |
| 686 | 686 | case 0: return ioc_ctrl_r(space,offset,mem_mask); |
| 687 | 687 | case 1: |
| 688 | | if (m_fdc) { |
| 689 | | logerror("17XX: R @ addr %x mask %08x\n", offset*4, mem_mask); |
| 690 | | return m_fdc->data_r(space, offset&0xf); |
| 688 | if (m_fdc) |
| 689 | { |
| 690 | //printf("17XX: R @ addr %x mask %08x\n", offset*4, mem_mask); |
| 691 | |
| 692 | switch(ioc_addr & 0xc) |
| 693 | { |
| 694 | case 0x00: return m_fdc->status_r(); |
| 695 | case 0x04: return m_fdc->track_r(); |
| 696 | case 0x08: return m_fdc->sector_r(); |
| 697 | case 0x0c: return m_fdc->data_r(); |
| 698 | } |
| 699 | |
| 700 | return 0; |
| 691 | 701 | } else { |
| 692 | 702 | logerror("Read from FDC device?\n"); |
| 693 | 703 | return 0; |
| r29540 | r29541 | |
| 702 | 712 | logerror("IOC: Internal Podule Read\n"); |
| 703 | 713 | return 0xffff; |
| 704 | 714 | case 5: |
| 705 | | if (m_fdc) { |
| 715 | if (m_fdc) |
| 716 | { |
| 706 | 717 | switch(ioc_addr & 0xfffc) |
| 707 | 718 | { |
| 719 | case 0x18: return 0xff; // FDC latch B |
| 720 | case 0x40: return 0xff; // FDC latch A |
| 708 | 721 | case 0x50: return 0; //fdc type, new model returns 5 here |
| 722 | case 0x70: return 0x0F; |
| 723 | case 0x74: return 0xFF; // unknown |
| 724 | // case 0x78: /* joystick */ |
| 725 | // case 0x7c: |
| 709 | 726 | } |
| 710 | 727 | } |
| 711 | 728 | |
| 712 | | logerror("IOC: Internal Latches Read %08x\n",ioc_addr); |
| 729 | //printf("IOC: Internal Latches Read %08x\n",ioc_addr); |
| 713 | 730 | |
| 714 | 731 | return 0xffff; |
| 715 | 732 | } |
| r29540 | r29541 | |
| 740 | 757 | { |
| 741 | 758 | case 0: ioc_ctrl_w(space,offset,data,mem_mask); return; |
| 742 | 759 | case 1: |
| 743 | | if (m_fdc) { |
| 744 | | logerror("17XX: %x to addr %x mask %08x\n", data, offset*4, mem_mask); |
| 745 | | m_fdc->data_w(space, offset&0xf, data&0xff); |
| 746 | | } else { |
| 760 | if (m_fdc) |
| 761 | { |
| 762 | //printf("17XX: %x to addr %x mask %08x\n", data, offset*4, mem_mask); |
| 763 | switch(ioc_addr & 0xc) |
| 764 | { |
| 765 | case 0x00: |
| 766 | m_fdc->cmd_w(data); |
| 767 | return; |
| 768 | |
| 769 | case 0x04: |
| 770 | m_fdc->track_w(data); |
| 771 | return; |
| 772 | |
| 773 | case 0x08: |
| 774 | m_fdc->sector_w(data); |
| 775 | return; |
| 776 | |
| 777 | case 0x0c: |
| 778 | m_fdc->data_w(data); |
| 779 | return; |
| 780 | } |
| 781 | } |
| 782 | else |
| 783 | { |
| 747 | 784 | logerror("Write to FDC device?\n"); |
| 748 | 785 | } |
| 749 | 786 | return; |
| r29540 | r29541 | |
| 757 | 794 | logerror("IOC: Internal Podule Write\n"); |
| 758 | 795 | return; |
| 759 | 796 | case 5: |
| 760 | | if (m_fdc) { |
| 797 | if (m_fdc) |
| 798 | { |
| 761 | 799 | switch(ioc_addr & 0xfffc) |
| 762 | 800 | { |
| 763 | 801 | case 0x18: // latch B |
| 764 | | m_fdc->dden_w(BIT(data, 1)); |
| 802 | m_fdc->dden_w(!(BIT(data, 1))); |
| 765 | 803 | return; |
| 766 | 804 | |
| 767 | 805 | case 0x40: // latch A |
| r29540 | r29541 | |
| 769 | 807 | |
| 770 | 808 | if (data & 1) { floppy = m_floppy0->get_device(); } |
| 771 | 809 | if (data & 2) { floppy = m_floppy1->get_device(); } |
| 772 | | //if (data & 4) { m_fdc->set_drive(2); } |
| 773 | | //if (data & 8) { m_fdc->set_drive(3); } |
| 810 | if (data & 4) { floppy = NULL; } // floppy 2 |
| 811 | if (data & 8) { floppy = NULL; } // floppy 3 |
| 774 | 812 | |
| 775 | 813 | m_fdc->set_floppy(floppy); |
| 776 | 814 | |
| 777 | 815 | if(floppy) |
| 778 | 816 | { |
| 779 | 817 | floppy->mon_w(BIT(data, 5)); |
| 780 | | m_fdc->dden_w(BIT(data, 4)); |
| 818 | floppy->ss_w(BIT(data, 4)); |
| 781 | 819 | } |
| 782 | 820 | //bit 5 is motor on |
| 783 | 821 | return; |
| 784 | 822 | } |
| 823 | |
| 824 | //printf("%08x\n",ioc_addr); |
| 785 | 825 | } |
| 786 | 826 | break; |
| 787 | 827 | } |
trunk/src/mess/drivers/a310.c
| r29540 | r29541 | |
| 360 | 360 | MCFG_RAM_EXTRA_OPTIONS("512K, 1M, 4M, 8M, 16M") |
| 361 | 361 | |
| 362 | 362 | MCFG_WD1772x_ADD("fdc", 8000000 / 2) |
| 363 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE( a310_state, a310_wd177x_intrq_w)) |
| 364 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(a310_state, a310_wd177x_drq_w)) |
| 363 | 365 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", a310_floppies, "35dd", a310_state::floppy_formats) |
| 364 | 366 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", a310_floppies, "35dd", a310_state::floppy_formats) |
| 365 | 367 | |