From f000d406809d8a7a0e71c388ebfb15d7564728e4 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Thu, 5 Oct 2017 12:17:37 +0200 Subject: Test units are now in their own folder 'z80_test', add programmer cli interface --- sw/programmer/linux/src/main.c | 58 ++++++++++++++++++++++++++++++++++++++-- sw/programmer/linux/src/z80prog | Bin 0 -> 49856 bytes 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100755 sw/programmer/linux/src/z80prog (limited to 'sw/programmer/linux/src') diff --git a/sw/programmer/linux/src/main.c b/sw/programmer/linux/src/main.c index 769992a..1bfd359 100644 --- a/sw/programmer/linux/src/main.c +++ b/sw/programmer/linux/src/main.c @@ -4,10 +4,64 @@ #include #include #include +#include +#include + +void out(const char *msg) +{ + printf("%s", msg); +} int main(int argc, char *argv[]) { - ui_init(&argc, &argv); + int opt; + int use_ui = 0; + + unsigned long baudrate; + char *file, *device, *baud; + + file = device = baud = NULL; + + while ((opt = getopt(argc, argv, "gf:d:b:")) != -1) { + switch (opt) { + case 'g': + use_ui = 1; + break; + case 'f': + file = optarg; + break; + case 'd': + device = optarg; + break; + case 'b': + baud = optarg; + break; + } + } + + if (use_ui) { + ui_init(&argc, &argv); + return 0; + } + + if (file == NULL || device == NULL || baud == NULL) { + perror("Missing argument\n"); + return -1; + } + + baudrate = strtoul(baud, NULL, 0); + if (errno == ERANGE) { + perror("Invalid baudrate\n"); + return -1; + } + + if (flash_open(device, baudrate) < 0) { + perror("Failed to open device\n"); + return -2; + } + + flash_write(file, out); + flash_close(); + return 0; } - diff --git a/sw/programmer/linux/src/z80prog b/sw/programmer/linux/src/z80prog new file mode 100755 index 0000000..9787e67 Binary files /dev/null and b/sw/programmer/linux/src/z80prog differ -- cgit v1.2.1