diff options
Diffstat (limited to 'core/atas.c')
| -rw-r--r-- | core/atas.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/core/atas.c b/core/atas.c new file mode 100644 index 0000000..9585a26 --- /dev/null +++ b/core/atas.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2026, Apollo Telephone Laboratories. + * Provided under the BSD-3 clause. + */ + +#include <stdio.h> +#include <unistd.h> +#include "atas/state.h" + +/* + * Display help options + */ +static void +help(void) +{ + printf("-- AT ISA assembler --\n"); + printf("usage: ./atas [flags] [input file]\n"); + printf("[-h] Display this help menu\n"); +} + +/* + * Begin assembling a specified input file + * + * @in_file: Path to input file to assemble + */ +static void +atas_assemble(const char *in_file) +{ + struct atas_state state; + int error; + + if (in_file == NULL) { + return; + } + + error = atas_state_init(in_file, &state); + if (error < 0) { + perror("atas_state_init"); + return; + } + + atas_state_destroy(&state); +} + +int +main(int argc, char **argv) +{ + const char *in_path; + int opt; + + if (argc < 2) { + printf("fatal: too few arguments\n"); + return -1; + } + + while ((opt = getopt(argc, argv, "hv")) != -1) { + switch (opt) { + case 'h': + help(); + return 0; + } + } + + if (optind == argc) { + printf("fatal: expected input file\n"); + return -1; + } + + in_path = argv[optind]; + atas_assemble(in_path); + return 0; +} |
