summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/at45dbxx.c
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2014-04-26 10:31:13 +0000
committer Olivier Galibert <galibert@pobox.com>2014-04-26 10:31:13 +0000
commitbb221d260a2531cdbc0125071bc73583cee39e1a (patch)
tree4c6c6b622fa813d037b0b0fdc29459269cdc5053 /src/emu/machine/at45dbxx.c
parent862d0e262d91d20f736b3be0d2285f1f71b2b5f2 (diff)
h8_sci: Implement sync-start [O. Galibert]
h8: Fix problem in the sleep instruction [O. Galibert] at45dbxx: Fix communications [O. Galibert]
Diffstat (limited to 'src/emu/machine/at45dbxx.c')
-rw-r--r--src/emu/machine/at45dbxx.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/emu/machine/at45dbxx.c b/src/emu/machine/at45dbxx.c
index 869c9fec50d..657ce88f008 100644
--- a/src/emu/machine/at45dbxx.c
+++ b/src/emu/machine/at45dbxx.c
@@ -82,6 +82,14 @@ void at45db041_device::device_start()
m_buffer1.resize(page_size());
//m_buffer2.resize(page_size());
+ // pins
+ m_pin.cs = 0;
+ m_pin.sck = 0;
+ m_pin.si = 0;
+ m_pin.wp = 0;
+ m_pin.reset = 0;
+ m_pin.busy = 0;
+
// data
save_item(NAME(m_data));
// pins
@@ -115,13 +123,7 @@ void at45db041_device::device_reset()
m_io.size = 0;
m_io.pos = 0;
// pins
- m_pin.cs = 0;
- m_pin.sck = 0;
- m_pin.si = 0;
- m_pin.so = 0;
- m_pin.wp = 0;
- m_pin.reset = 0;
- m_pin.busy = 0;
+ m_pin.so = 0;
// output
m_so_byte = 0;
m_so_bits = 0;
@@ -362,6 +364,13 @@ WRITE_LINE_MEMBER(at45db041_device::sck_w)
m_so_bits = 0;
m_so_byte = read_byte();
}
+ // output (part 2)
+ m_pin.so = (m_so_byte >> m_so_bits) & 1;
+ write_so(m_pin.so);
+ m_so_bits++;
+ }
+ else
+ {
// input
if (m_pin.si) m_si_byte = m_si_byte | (1 << m_si_bits);
m_si_bits++;
@@ -371,10 +380,6 @@ WRITE_LINE_MEMBER(at45db041_device::sck_w)
write_byte(m_si_byte);
m_si_byte = 0;
}
- // output (part 2)
- m_pin.so = (m_so_byte >> m_so_bits) & 1;
- write_so(m_pin.so);
- m_so_bits++;
}
// save sck
m_pin.sck = state;