summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--main.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/main.cpp b/main.cpp
index 64d1a04..b587ce4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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;