X-Git-Url: https://jxself.org/git/?p=a56.git;a=blobdiff_plain;f=subs.c;fp=subs.c;h=0000000000000000000000000000000000000000;hp=5166717c4067da5ccfeecbc36750eb2cccea0847;hb=34923afb4a618598083726717bf2f20d310f4f6e;hpb=c6db6f4c5cb82f5e09472163bf11be0c165965ee diff --git a/subs.c b/subs.c deleted file mode 100644 index 5166717..0000000 --- a/subs.c +++ /dev/null @@ -1,183 +0,0 @@ -/******************************************************* - * - * a56 - a DSP56001 assembler - * - * Written by Quinn C. Jensen - * July 1990 - * - *******************************************************\ - -/* - * Copyright (C) 2008 Robert Millan - * Copyright (C) 2012 Thorsten Alteholz - * - * This file is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, either version 3 of the License, - * or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see - * . - * - * This file incorporates work covered by the following copyright and - * permission notice: - * - * 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"; - -/* - * subs.c - Some subroutines for the assembler. - * - */ - -#include "a56.h" - -#define MAX 1024 - -FILE *open_read(file) -char *file; -{ - FILE *fp; - - if(strcmp(file, "-") == 0) - fp = stdin; - else if ((fp = fopen(file, "r")) == NULL) { - perror(file); - exit(1); - } - return fp; -} - -FILE *open_write(file) -char *file; -{ - FILE *fp; - if ((fp = fopen(file, "w")) == NULL) { - perror(file); - exit(1); - } - return fp; -} - -FILE *open_append(file) -char *file; -{ - FILE *fp; - if ((fp = fopen(file, "a")) == NULL) { - perror(file); - exit(1); - } - return fp; -} - -fatal(c, a1, a2, a3, a4, a5, a6, a7, a8) -char *c, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; -{ - fprintf(stderr, c, a1, a2, a3, a4, a5, a6, a7, a8); - exit(1); -} - -#define TABS 8 -#define MAX_BUF 256 - -char tabbuf[MAX_BUF], *untabn(); -char *untab(s) /* expand tabs in s */ -register char *s; -{ - return untabn(s, TABS); -} - -char *untabn(s, stops) /* expand tabs in s */ -register char *s; -register int stops; -{ - char *o = s; - - /* copy input string into buffer to scan while input string is modified */ - - register char *b = tabbuf; - - strncpy(b, s, MAX_BUF); - - /* iterate until the copy of the input string is depleted */ - - while(*b) { - if(*b == '\t') { - do - *s = ' '; - while ((++s - o) % stops); - } else { - *s = *b; s++; - } - b++; - } - - /* null terminate the resultant string */ - - *s = '\0'; - - return o; -} - -char *alloc(size) -int size; -{ - char *p = (char *)malloc(size); - if(NOT p) - fatal("alloc: insufficient virtual memory to allocate %d bytes\n", - size); - return p; -} - -#define ascii2n(c) \ - ((c) >= 'a' ? (c) - 'a' + 10 : ((c) >= 'A' ? (c) - 'A' + 10 : (c) - '0')) - -#define valid(c) ((c) >= '0' && (c) <= '9' || \ - (c) >= 'A' && (c) <= 'Z' || \ - (c) >= 'a' && (c) <= 'z') - -a56_strtol(s, p, base) -register char *s, **p; -register int base; -{ - register long result = 0; - register int sign = 0; - - while(*s == ' ' || *s == '\t') - s++; - - if(*s == '-') { - s++; - sign++; - } - - while(valid(*s)) { - register int dig = ascii2n(*s); - if(dig >= base) - break; - result *= base; - result += dig; - s++; - } - - if(p) - *p = s; - - return sign ? -result : result; -}