RL02: MPR has fifo of 3 words
This commit is contained in:
parent
1aa6c47f8e
commit
fd8bb6a60b
2 changed files with 13 additions and 3 deletions
15
rl02.cpp
15
rl02.cpp
|
@ -38,8 +38,9 @@ rl02::~rl02()
|
||||||
|
|
||||||
void rl02::reset()
|
void rl02::reset()
|
||||||
{
|
{
|
||||||
memset(registers, 0x00, sizeof registers);
|
memset(registers, 0x00, sizeof registers );
|
||||||
memset(xfer_buffer, 0x00, sizeof xfer_buffer);
|
memset(xfer_buffer, 0x00, sizeof xfer_buffer);
|
||||||
|
memset(mpr, 0x00, sizeof mpr );
|
||||||
|
|
||||||
track = 0;
|
track = 0;
|
||||||
head = 0;
|
head = 0;
|
||||||
|
@ -65,9 +66,15 @@ uint16_t rl02::readWord(const uint16_t addr)
|
||||||
setBit(registers[reg], 7, true); // controller ready (CRDY)
|
setBit(registers[reg], 7, true); // controller ready (CRDY)
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t value = registers[reg];
|
uint16_t value = 0;
|
||||||
|
|
||||||
// TODO
|
if (addr == RL02_MPR) { // multi purpose register
|
||||||
|
value = mpr[0];
|
||||||
|
memcpy(&mpr[0], &mpr[1], sizeof(mpr[0]) * 2);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
value = registers[reg];
|
||||||
|
}
|
||||||
|
|
||||||
DOLOG(debug, false, "RL02 read %s/%o: %06o", regnames[reg], addr, value);
|
DOLOG(debug, false, "RL02 read %s/%o: %06o", regnames[reg], addr, value);
|
||||||
|
|
||||||
|
@ -153,6 +160,8 @@ void rl02::writeWord(const uint16_t addr, uint16_t v)
|
||||||
|
|
||||||
do_int = true;
|
do_int = true;
|
||||||
}
|
}
|
||||||
|
else if (command == 4) { // read header
|
||||||
|
}
|
||||||
else if (command == 6 || command == 7) { // read data / read data without header check
|
else if (command == 6 || command == 7) { // read data / read data without header check
|
||||||
uint16_t temp = registers[(RL02_DAR - RL02_BASE) / 2];
|
uint16_t temp = registers[(RL02_DAR - RL02_BASE) / 2];
|
||||||
sector = temp & 63;
|
sector = temp & 63;
|
||||||
|
|
1
rl02.h
1
rl02.h
|
@ -34,6 +34,7 @@ private:
|
||||||
int16_t track { 0 };
|
int16_t track { 0 };
|
||||||
uint8_t head { 0 };
|
uint8_t head { 0 };
|
||||||
uint8_t sector { 0 };
|
uint8_t sector { 0 };
|
||||||
|
uint16_t mpr[3];
|
||||||
std::vector<disk_backend *> fhs;
|
std::vector<disk_backend *> fhs;
|
||||||
|
|
||||||
std::atomic_bool *const disk_read_acitivity { nullptr };
|
std::atomic_bool *const disk_read_acitivity { nullptr };
|
||||||
|
|
Loading…
Add table
Reference in a new issue