Previous 15994 Revisions Next

r7296 Tuesday 9th February, 2010 at 10:08:28 UTC by Curt Coder
[I8255] Clear output lines to 0 on write to mode register, and float input lines to 1.
[src/emu/machine]i8255a.c

src/emu/machine/i8255a.c
r7295r7296
155155      {
156156         mask |= 0xf0;
157157      }
158      else
159      {
160         /* TTL inputs float high */
161         data |= 0xf0;
162      }
158163      break;
159164
160165   case MODE_1:
r7295r7296
187192      {
188193         mask |= 0x0f;
189194      }
195      else
196      {
197         /* TTL inputs float high */
198         data |= 0x0f;
199      }
190200      break;
191201
192202   case MODE_1:
r7295r7296
578588   i8255a->inte[PORT_A] = 0;
579589   i8255a->inte1 = 0;
580590   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   }
581601
582602   if (LOG) logerror("8255A '%s' Group A Mode: %u\n", device->tag.cstr(), group_mode(i8255a, GROUP_A));
583603   if (LOG) logerror("8255A '%s' Port A Mode: %s\n", device->tag.cstr(), (port_mode(i8255a, PORT_A) == MODE_OUTPUT) ? "output" : "input");
r7295r7296
592612   i8255a->ibf[PORT_B] = 0;
593613   i8255a->obf[PORT_B] = 1;
594614   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   }
595625
596626   i8255a->output[PORT_C] = 0;
597627   i8255a->input[PORT_C] = 0;
r7295r7296
717747{
718748   i8255a_t *i8255a = get_safe_token(device);
719749
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;
721758}
722759
723760READ8_DEVICE_HANDLER( i8255a_pb_r )
724761{
725762   i8255a_t *i8255a = get_safe_token(device);
726763
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;
728772}
729773
730774WRITE_LINE_DEVICE_HANDLER( i8255a_pc2_w )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team