X-Git-Url: https://git.distorted.org.uk/~mdw/bascat/blobdiff_plain/b98146e07a2712ae70936b4973e93d76f671ef0a..85dd468c12f531710f50baff9fc9d5daad3813bb:/bascat.c diff --git a/bascat.c b/bascat.c index 139d58d..218b749 100644 --- a/bascat.c +++ b/bascat.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: bascat.c,v 1.3 1999/10/28 10:18:17 mdw Exp $ + * $Id$ * * Display BBC BASIC programs more or less anywhere * @@ -26,23 +26,6 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: bascat.c,v $ - * Revision 1.3 1999/10/28 10:18:17 mdw - * Minor name changes for new coding standards. - * - * Revision 1.2 1998/06/26 11:29:28 mdw - * Added support for line-numbers. - * - * Revision 1.1 1998/03/16 15:21:37 mdw - * Files placed under CVS control. - * - * Revision 1.1 1997/07/23 01:19:33 mdw - * Initial revision - * - */ - /*----- Header files ------------------------------------------------------*/ /* --- ANSI library headers --- */ @@ -67,7 +50,7 @@ /*----- Version information -----------------------------------------------*/ -#ifndef NDEBUG +#ifdef DEBUG # define D(x) x #else # define D(x) @@ -79,7 +62,7 @@ * carried out on an A440 with RISC OS 3.1 */ -static const char *bcTok__base[] = { +static const char *tok_base[] = { "OTHERWISE", "AND", "DIV", "EOR", "MOD", "OR", "ERROR", "LINE", "OFF", "STEP", "SPC", "TAB(", "ELSE", "THEN", "*", "OPENIN", "PTR", @@ -99,18 +82,18 @@ static const char *bcTok__base[] = { "RETURN", "RUN", "STOP", "COLOUR", "TRACE", "UNTIL", "WIDTH", "OSCLI" }; -static const char *bcTok__c6[] = { +static const char *tok_c6[] = { "SUM", "BEAT" }; -static const char *bcTok__c7[] = { +static const char *tok_c7[] = { "APPEND", "AUTO", "CRUNCH", "DELETE", "EDIT", "HELP", "LIST", "LOAD", "LVAR", "NEW", "OLD", "RENUMBER", "SAVE", "TEXTLOAD", "TEXTSAVE", "TWIN", "TWINO", "INSTALL" }; -static const char *bcTok__c8[] = { +static const char *tok_c8[] = { "CASE", "CIRCLE", "FILL", "ORIGIN", "POINT", "RECTANGLE", "SWAP", "WHILE", "WAIT", "MOUSE", "QUIT", "SYS", "INSTALL", "LIBRARY", "TINT", "ELLIPSE", "BEATS", "TEMPO", @@ -223,7 +206,7 @@ static void keyword(const char *s, FILE *fp) * Use: Decodes multibyte tokens. */ -static int mbtok(int byte, const char *t[], int n, FILE * fp) +static int mbtok(int byte, const char *t[], int n, FILE *fp) { byte -= 0x8E; if (byte >= n) @@ -243,7 +226,7 @@ static int mbtok(int byte, const char *t[], int n, FILE * fp) * Use: Decodes a byte, changing states as necessary. */ -static int decode(int byte, FILE * fp) +static int decode(int byte, FILE *fp) { switch (state) { @@ -283,7 +266,7 @@ static int decode(int byte, FILE * fp) /* Fall through here */ default: keyword: - keyword(bcTok__base[byte - 0x7F], fp); + keyword(tok_base[byte - 0x7F], fp); break; } } else { @@ -307,31 +290,34 @@ static int decode(int byte, FILE * fp) /* --- Double-byte token states --- */ case s_c6: - return (mbtok(byte, bcTok__c6, ITEMS(bcTok__c6), fp)); + return (mbtok(byte, tok_c6, ITEMS(tok_c6), fp)); break; case s_c7: - return (mbtok(byte, bcTok__c7, ITEMS(bcTok__c7), fp)); + return (mbtok(byte, tok_c7, ITEMS(tok_c7), fp)); break; case s_c8: - return (mbtok(byte, bcTok__c8, ITEMS(bcTok__c8), fp)); + return (mbtok(byte, tok_c8, ITEMS(tok_c8), fp)); break; /* --- Encoded line number states --- */ case s_linex: - lineno = ((((byte << 2) | (byte << 12)) & 0xc0c0u) ^ 0x4040u); + byte ^= 0x54; + lineno = (((byte & 0x30) << 2) | + ((byte & 0x0c) << 12) | + ((byte & 0x03) << 16)); state++; break; case s_liney: - lineno |= byte & 0x3fu; + lineno |= byte & 0x3f; state++; break; case s_linez: - lineno |= (byte << 8) & 0x3fu; + lineno |= (byte & 0x3f) << 8; fprintf(fp, "%u", lineno); state = s_normal; break; @@ -383,7 +369,7 @@ static int line(FILE *in, FILE *out) goto eof; len -= 4; - state = s_normal; + state = s_keyword; while (len) { byte = getc(in); D( fprintf(stderr, "state == %i, byte == %i\n", @@ -440,7 +426,7 @@ static void file(FILE *in, FILE *out) die("Found data after end of program"); } -/* --- @sigPipe@ --- * +/* --- @sig_pipe@ --- * * * Arguments: @int s@ = signal number * @@ -449,7 +435,7 @@ static void file(FILE *in, FILE *out) * Use: Handles SIGPIPE signals, and gracefully kills the program. */ -static void sigPipe(int s) +static void sig_pipe(int s) { (void) s; exit(0); /* Gracefully, oh yes */ @@ -586,7 +572,7 @@ int main(int argc, char *argv[]) out = stdout; else { flags |= f_tty; - signal(SIGPIPE, sigPipe); + signal(SIGPIPE, sig_pipe); } } else out = stdout;