~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/emu/machine/i8255.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
417
417
{
418
418
        UINT8 data = 0;
419
419
        UINT8 mask = 0;
 
420
        UINT8 b_mask = 0x0f;
420
421
 
421
422
        // PC upper
422
423
        switch (group_mode(GROUP_A))
452
453
                break;
453
454
 
454
455
        case MODE_2:
 
456
                b_mask = 0x07;
455
457
                data |= m_intr[PORT_A] ? 0x08 : 0x00;
456
458
                data |= m_inte2 ? 0x10 : 0x00;
457
459
                data |= m_ibf[PORT_A] ? 0x20 : 0x00;
467
469
                if (port_c_lower_mode() == MODE_OUTPUT)
468
470
                {
469
471
                        // read data from output latch
470
 
                        data |= m_output[PORT_C] & 0x0f;
 
472
                        data |= m_output[PORT_C] & b_mask;
471
473
                }
472
474
                else
473
475
                {
474
476
                        // read data from port
475
 
                        mask |= 0x0f;
 
477
                        mask |= b_mask;
476
478
                }
477
479
                break;
478
480
 
568
570
{
569
571
        int changed = 0;
570
572
 
571
 
        if (group_mode(GROUP_A) == MODE_0)
 
573
        // PC upper
 
574
        if (group_mode(GROUP_A) == MODE_0 && port_c_upper_mode() == MODE_OUTPUT)
572
575
        {
573
 
                // PC upper
574
 
                if (port_c_upper_mode() == MODE_OUTPUT)
575
 
                {
576
 
                        m_output[PORT_C] = (data & 0xf0) | (m_output[PORT_C] & 0x0f);
577
 
                        changed = 1;
578
 
                }
 
576
                m_output[PORT_C] = (data & 0xf0) | (m_output[PORT_C] & 0x0f);
 
577
                changed = 1;
 
578
        }
579
579
 
580
 
                // PC lower
581
 
                if (port_c_lower_mode() == MODE_OUTPUT)
582
 
                {
583
 
                        m_output[PORT_C] = (m_output[PORT_C] & 0xf0) | (data & 0x0f);
584
 
                        changed = 1;
585
 
                }
 
580
        // PC lower
 
581
        if (group_mode(GROUP_B) == MODE_0 && port_c_lower_mode() == MODE_OUTPUT)
 
582
        {
 
583
                m_output[PORT_C] = (m_output[PORT_C] & 0xf0) | (data & 0x0f);
 
584
                changed = 1;
586
585
        }
587
586
 
588
587
        if (changed)
600
599
{
601
600
        UINT8 data = 0;
602
601
        UINT8 mask = 0;
 
602
        UINT8 b_mask = 0x0f;
603
603
 
604
604
        // PC upper
605
605
        switch (group_mode(GROUP_A))
632
632
                break;
633
633
 
634
634
        case MODE_2:
 
635
                b_mask = 0x07;
635
636
                data |= m_intr[PORT_A] ? 0x08 : 0x00;
636
637
                data |= m_ibf[PORT_A] ? 0x20 : 0x00;
637
638
                data |= m_obf[PORT_A] ? 0x80 : 0x00;
644
645
        case MODE_0:
645
646
                if (port_c_lower_mode() == MODE_OUTPUT)
646
647
                {
647
 
                        mask |= 0x0f;
 
648
                        mask |= b_mask;
648
649
                }
649
650
                else
650
651
                {
651
652
                        // TTL inputs float high
652
 
                        data |= 0x0f;
 
653
                        data |= b_mask;
653
654
                }
654
655
                break;
655
656
 
753
754
                        case 3: set_intr(PORT_A, state); break;
754
755
                        case 6: set_inte(PORT_A, state); break;
755
756
                        case 7: set_obf(PORT_A, state); break;
 
757
                        default: break;
756
758
                        }
757
759
                }
758
760
                else
762
764
                        case 3: set_intr(PORT_A, state); break;
763
765
                        case 4: set_inte(PORT_A, state); break;
764
766
                        case 5: set_ibf(PORT_A, state); break;
 
767
                        default: break;
765
768
                        }
766
769
                }
767
770
                break;
774
777
                case 5: set_ibf(PORT_A, state); break;
775
778
                case 6: set_inte1(state); break;
776
779
                case 7: set_obf(PORT_A, state); break;
 
780
                default: break;
777
781
                }
778
782
                break;
779
783
        }
790
794
                                set_ibf(PORT_B, state);
791
795
                        break;
792
796
                case 2: set_inte(PORT_B, state); break;
 
797
                default: break;
793
798
                }
794
799
        }
795
800