summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--main.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/main.cpp b/main.cpp
index 5788c54..7d299ec 100644
--- a/main.cpp
+++ b/main.cpp
@@ -12,19 +12,7 @@ static const std::unordered_map<std::string, std::uint8_t *> programs = {
12 { "count", _binary_count_bin_start } 12 { "count", _binary_count_bin_start }
13}; 13};
14 14
15int main(int argc, const char *argv[]) { 15int load_program(checker &checker, const std::uint8_t *program) {
16 if (argc != 2) {
17 std::cerr << "Usage: " << argv[0] << " program\n";
18 std::cerr << "Programs:\n";
19 for (const auto &p : programs)
20 std::cerr << "\t" << p.first << "\n";
21 return 1;
22 }
23
24 auto program = programs.at(argv[1]);
25
26 checker checker;
27
28 bool seen_non_leader = false; 16 bool seen_non_leader = false;
29 bool comment = false; 17 bool comment = false;
30 unsigned int field = 0; 18 unsigned int field = 0;
@@ -58,6 +46,25 @@ int main(int argc, const char *argv[]) {
58 } 46 }
59 } 47 }
60 } 48 }
49 return 0;
50}
51
52int main(int argc, const char *argv[]) {
53 if (argc < 2) {
54 std::cerr << "Usage: " << argv[0] << " program [program ...]\n";
55 std::cerr << "Programs:\n";
56 for (const auto &p : programs)
57 std::cerr << "\t" << p.first << "\n";
58 return 1;
59 }
60
61 checker checker;
62
63 for (--argc, ++argv; argc; --argc, ++argv) {
64 auto program = programs.at(argv[0]);
65 if (auto err = load_program(checker, program))
66 return err;
67 }
61 68
62 while (!checker.halted) { 69 while (!checker.halted) {
63 std::cout << fmt::format("{:04o}: ", checker.pc); 70 std::cout << fmt::format("{:04o}: ", checker.pc);