+/*******************************************************
+ *
+ * a56 - a DSP56001 assembler
+ *
+ * Written by Quinn C. Jensen
+ * July 1990
+ *
+ *******************************************************\
+
+/*
+ * Copyright (C) 1990-1994 Quinn C. Jensen
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. The author makes no representations
+ * about the suitability of this software for any purpose. It is
+ * provided "as is" without express or implied warranty.
+ *
+ */
+static char *Copyright = "Copyright (C) 1990-1994 Quinn C. Jensen";
+
+/*
+ * This program converts the a56.out assembler output file into
+ * raw binary, suitable for conversion to S-records for an EPROM burner.
+ *
+ */
+
+
+#define MAX 256
+
+main(argc,argv)
+int argc;
+char *argv[];
+{
+ char buf[MAX];
+ int curaddr = 0;
+ int line = 0;
+
+ while(gets(buf)) {
+ char seg;
+ int addr, data;
+ line++;
+ if(sscanf(buf, "%c%x%x", &seg, &addr, &data) == 3) {
+ if(seg == 'I') {
+ break;
+ } else {
+ if(addr < curaddr) {
+ fatal("%s: input line %d: can't go back\n", argv[0], line);
+ } else if(addr != curaddr) {
+ while(curaddr < addr) {
+ putword(0);
+ curaddr++;
+ }
+ }
+ putword(data);
+ curaddr++;
+ }
+ }
+ }
+}
+
+putword(data)
+int data;
+{
+ putchar(data >> 0 & 0xFF);
+ putchar(data >> 8 & 0xFF);
+ putchar(data >> 16 & 0xFF);
+}