DC11: set bit 7 of RCSR when byte was received
This commit is contained in:
parent
22b43f25b3
commit
b4a3ce363c
1 changed files with 9 additions and 3 deletions
12
dc11.cpp
12
dc11.cpp
|
@ -129,10 +129,12 @@ void dc11::operator()()
|
|||
for(int k=0; k<rc; k++)
|
||||
recv_buffers[line_nr].push_back(buffer[k]);
|
||||
|
||||
have_data[line_nr].notify_all();
|
||||
registers[line_nr * 4 + 0] |= 128; // DONE: bit 7
|
||||
|
||||
if (registers[line_nr * 4] & 64) // interrupts enabled?
|
||||
if (registers[line_nr * 4 + 0] & 64) // interrupts enabled?
|
||||
trigger_interrupt(line_nr);
|
||||
|
||||
have_data[line_nr].notify_all();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -185,14 +187,18 @@ uint16_t dc11::read_word(const uint16_t addr)
|
|||
// get oldest byte in buffer
|
||||
if (recv_buffers[line_nr].empty() == false) {
|
||||
vtemp = *recv_buffers[line_nr].begin();
|
||||
printf("return: %d\n", vtemp);
|
||||
|
||||
recv_buffers[line_nr].erase(recv_buffers[line_nr].begin());
|
||||
|
||||
// still data in buffer? generate interrupt
|
||||
if (recv_buffers[line_nr].empty() == false && (registers[line_nr * 4] & 64))
|
||||
if (recv_buffers[line_nr].empty() == false && (registers[line_nr * 4] & 64)) {
|
||||
registers[line_nr * 4 + 0] |= 128; // DONE: bit 7
|
||||
|
||||
trigger_interrupt(line_nr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DOLOG(debug, true, "DC11: read register %06o (%d): %06o", addr, reg, vtemp);
|
||||
printf("DC11: read register %06o (%d): %06o\r\n", addr, reg, vtemp);
|
||||
|
|
Loading…
Add table
Reference in a new issue