diff options
Diffstat (limited to 'main.cpp')
| -rw-r--r-- | main.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
| @@ -30,10 +30,8 @@ int load_program(checker &checker, const std::uint8_t *program) { | |||
| 30 | address = ((b1 & 0077) << 6) | *program++; | 30 | address = ((b1 & 0077) << 6) | *program++; |
| 31 | } else if ((b1 & 0300) == 0000) { | 31 | } else if ((b1 & 0300) == 0000) { |
| 32 | seen_non_leader = true; | 32 | seen_non_leader = true; |
| 33 | if (data.has_value()) { | 33 | if (data.has_value()) |
| 34 | //std::cout << fmt::format("mem[{:06o}] = {:04o}\n", data->first, data->second); | ||
| 35 | checker.mem.store(data->first, data->second); | 34 | checker.mem.store(data->first, data->second); |
| 36 | } | ||
| 37 | auto a = field | address++; | 35 | auto a = field | address++; |
| 38 | auto d = ((b1 & 0077) << 6) | *program++; | 36 | auto d = ((b1 & 0077) << 6) | *program++; |
| 39 | data = std::make_pair(a, d); | 37 | data = std::make_pair(a, d); |
| @@ -58,7 +56,8 @@ int main(int argc, const char *argv[]) { | |||
| 58 | return 1; | 56 | return 1; |
| 59 | } | 57 | } |
| 60 | 58 | ||
| 61 | checker checker; | 59 | iomodel system; |
| 60 | checker checker(system); | ||
| 62 | 61 | ||
| 63 | for (--argc, ++argv; argc; --argc, ++argv) { | 62 | for (--argc, ++argv; argc; --argc, ++argv) { |
| 64 | auto program = programs.at(argv[0]); | 63 | auto program = programs.at(argv[0]); |
| @@ -66,10 +65,9 @@ int main(int argc, const char *argv[]) { | |||
| 66 | return err; | 65 | return err; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| 69 | while (!checker.halted) { | 68 | while (true) { |
| 70 | std::cout << fmt::format("{:04o}: ", checker.pc); | 69 | std::cout << fmt::format("{:9} @{:04o} {:01o}:{:04o}:{:04o}\n", system.time, checker.pc, checker.link, checker.acc, checker.mq); |
| 71 | checker.execute(); | 70 | checker.execute(); |
| 72 | std::cout << fmt::format("link={:01o} acc={:04o} mq={:04o}\n", checker.link, checker.acc, checker.mq); | ||
| 73 | } | 71 | } |
| 74 | 72 | ||
| 75 | return 0; | 73 | return 0; |
