FreeCalypso > hg > freecalypso-hwlab
diff lunalcd/common.c @ 65:cdf2c99e5025
lunalcd project started
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 19 Mar 2020 01:31:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lunalcd/common.c Thu Mar 19 01:31:05 2020 +0000 @@ -0,0 +1,98 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> + +static enum { + MODE_L8, + MODE_U8, + MODE_16, + MODE_USB +} mode; + +set_output_mode(kw) + char *kw; +{ + if (!strcmp(kw, "l8")) + mode = MODE_L8; + else if (!strcmp(kw, "u8")) + mode = MODE_U8; + else if (!strcmp(kw, "16")) + mode = MODE_16; + else if (!strcmp(kw, "usb")) + mode = MODE_USB; + else { + fprintf(stderr, "error: mode \"%s\" not understood\n", kw); + exit(1); + } +} + +write_ir(val16) + unsigned val16; +{ + if (mode != MODE_USB) + printf("w16 fffe4802 200\n"); + switch (mode) { + case MODE_L8: + printf("w16 02000000 %02x\n", val16 >> 8); + printf("w16 02000000 %02x\n", val16 & 0xFF); + break; + case MODE_U8: + printf("w16 02000000 %02x00\n", val16 >> 8); + printf("w16 02000000 %02x00\n", val16 & 0xFF); + break; + case MODE_16: + printf("w16 02000000 %04x\n", val16); + break; + case MODE_USB: + printf("wi %04x\n", val16); + } +} + +write_dr(val16) + unsigned val16; +{ + if (mode != MODE_USB) + printf("w16 fffe4802 600\n"); + switch (mode) { + case MODE_L8: + printf("w16 02000002 %02x\n", val16 >> 8); + printf("w16 02000002 %02x\n", val16 & 0xFF); + break; + case MODE_U8: + printf("w16 02000002 %02x00\n", val16 >> 8); + printf("w16 02000002 %02x00\n", val16 & 0xFF); + break; + case MODE_16: + printf("w16 02000002 %04x\n", val16); + break; + case MODE_USB: + printf("wd %04x\n", val16); + } +} + +bulk_wd_prep() +{ + if (mode != MODE_USB) + printf("w16 fffe4802 600\n"); +} + +bulk_wd(val16) + unsigned val16; +{ + switch (mode) { + case MODE_L8: + printf("w16 02000002 %02x\n", val16 >> 8); + printf("w16 02000002 %02x\n", val16 & 0xFF); + break; + case MODE_U8: + printf("w16 02000002 %02x00\n", val16 >> 8); + printf("w16 02000002 %02x00\n", val16 & 0xFF); + break; + case MODE_16: + printf("w16 02000002 %04x\n", val16); + break; + case MODE_USB: + printf("wd %04x\n", val16); + } +}