mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-23 20:29:42 +00:00
Hack in some MDA text logging. Boot seems to complete?
This commit is contained in:
parent
acdf32e820
commit
83ca9b3af5
@ -389,10 +389,19 @@ struct Memory {
|
||||
}
|
||||
|
||||
// Accesses an address based on physical location.
|
||||
int mda_delay = -1; // HACK.
|
||||
template <typename IntT, AccessType type>
|
||||
typename InstructionSet::x86::Accessor<IntT, type>::type access(uint32_t address) {
|
||||
|
||||
// TEMPORARY HACK.
|
||||
if(mda_delay > 0) {
|
||||
--mda_delay;
|
||||
if(!mda_delay) {
|
||||
print_mda();
|
||||
}
|
||||
}
|
||||
if(address >= 0xb'0000 && is_writeable(type)) {
|
||||
printf("MDA?\n");
|
||||
mda_delay = 100;
|
||||
}
|
||||
|
||||
// Dispense with the single-byte case trivially.
|
||||
@ -466,6 +475,19 @@ struct Memory {
|
||||
std::copy(data, data + length, memory.begin() + std::vector<uint8_t>::difference_type(address));
|
||||
}
|
||||
|
||||
|
||||
// TEMPORARY HACK.
|
||||
void print_mda() {
|
||||
uint32_t pointer = 0xb'0000;
|
||||
for(int y = 0; y < 25; y++) {
|
||||
for(int x = 0; x < 80; x++) {
|
||||
printf("%c", memory[pointer]);
|
||||
pointer += 2; // MDA goes [character, attributes]...; skip the attributes.
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::array<uint8_t, 1024*1024> memory{0xff};
|
||||
Registers ®isters_;
|
||||
@ -708,7 +730,7 @@ class ConcreteMachine:
|
||||
}
|
||||
|
||||
// TODO: signal interrupt.
|
||||
printf("TODO: should interrupt\n");
|
||||
// printf("TODO: should interrupt\n");
|
||||
}
|
||||
|
||||
// Get the next thing to execute.
|
||||
|
Loading…
Reference in New Issue
Block a user