ANSI C conversion.
This commit is contained in:
		
							parent
							
								
									fa2859df79
								
							
						
					
					
						commit
						16f89747b1
					
				
					 3 changed files with 282 additions and 279 deletions
				
			
		|  | @ -1,8 +1,8 @@ | ||||||
| /*
 | /*
 | ||||||
| 	Defines and externs of general interest | 	Defines and externs of general interest | ||||||
| */ | */ | ||||||
| 
 | #ifndef GLOBAL_H_ | ||||||
| /* $Id$ */ | #define GLOBAL_H_ | ||||||
| 
 | 
 | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
|  | @ -157,3 +157,4 @@ extern ptr SL;			/* Stack Limit */ | ||||||
| #define	min(i,j)	(((i) < (j)) ? (i) : (j)) | #define	min(i,j)	(((i) < (j)) ? (i) : (j)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | #endif /* GLOBAL_H_ */ | ||||||
|  |  | ||||||
|  | @ -9,9 +9,11 @@ | ||||||
| 
 | 
 | ||||||
| /* $Id$ */ | /* $Id$ */ | ||||||
| 
 | 
 | ||||||
|  | #include <stdlib.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| extern FILE *popen(); |  | ||||||
| 
 | 
 | ||||||
| #include <ip_spec.h> | #include <ip_spec.h> | ||||||
| #include <em_spec.h> | #include <em_spec.h> | ||||||
|  | @ -26,7 +28,132 @@ FILE	*ifp;			/* Input File Pointer */ | ||||||
| FILE	*ofp;			/* Output File Pointer */ | FILE	*ofp;			/* Output File Pointer */ | ||||||
| char	*Prefix;		/* Prefix for function name */ | char	*Prefix;		/* Prefix for function name */ | ||||||
| 
 | 
 | ||||||
| main(argc, argv) | 
 | ||||||
|  | int | ||||||
|  | in(flgs, c) | ||||||
|  | 	char *flgs; | ||||||
|  | 	char c; | ||||||
|  | { | ||||||
|  | 	while (*flgs) | ||||||
|  | 		if (c == *flgs++) | ||||||
|  | 			return 1; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void OutCase(mnem, base, first, i, argstr) | ||||||
|  | 	char *mnem; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	int i; | ||||||
|  | 	char *argstr; | ||||||
|  | { | ||||||
|  | 	/* Output a case in the switch statement */ | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s(%s); break;\n", | ||||||
|  | 		base, first+i, Prefix, mnem, argstr); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void ImplicitArg(argstr) | ||||||
|  | 	char *argstr; | ||||||
|  | { | ||||||
|  | 	sprintf(argstr, "uwpop()"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void NoArgs(argstr) | ||||||
|  | 	char *argstr; | ||||||
|  | { | ||||||
|  | 	sprintf(argstr, ""); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Mini(argstr, i, flgs) | ||||||
|  | 	char *argstr; | ||||||
|  | 	int i; | ||||||
|  | 	char *flgs; | ||||||
|  | { | ||||||
|  | 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; | ||||||
|  | 
 | ||||||
|  | 	switch (newi) { | ||||||
|  | 	case -1: | ||||||
|  | 		sprintf(argstr, "%s", | ||||||
|  | 			in(flgs, 'w') ? "-wsize" : "-1L"); | ||||||
|  | 		break; | ||||||
|  | 	case 0: | ||||||
|  | 		sprintf(argstr, "0L"); | ||||||
|  | 		break; | ||||||
|  | 	case 1: | ||||||
|  | 		sprintf(argstr, "%s", | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | 		break; | ||||||
|  | 	default: | ||||||
|  | 		sprintf(argstr, "%dL%s", | ||||||
|  | 			newi, in(flgs, 'w') ? "*wsize" : ""); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Shortie(argstr, i, flgs) | ||||||
|  | 	char *argstr; | ||||||
|  | 	int i; | ||||||
|  | 	char *flgs; | ||||||
|  | { | ||||||
|  | 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; | ||||||
|  | 
 | ||||||
|  | 	sprintf(argstr, "S_arg(%d)*%s", | ||||||
|  | 		newi, in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TwoSgn(argstr, flgs) | ||||||
|  | 	char *argstr; | ||||||
|  | 	char *flgs; | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | 	sprintf(argstr, "%s*%s", in(flgs, 'P') ? "P_arg_2()" : in(flgs, 'N') ? "N_arg_2()" : "L_arg_2()", | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TwoUns(argstr, flgs) | ||||||
|  | 	char *argstr; | ||||||
|  | 	char *flgs; | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | 	sprintf(argstr,	"%s*%s", "U_arg()", | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "((unsigned long) 1)"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void FourSgn(argstr, flgs) | ||||||
|  | 	char *argstr; | ||||||
|  | 	char *flgs; | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | 	sprintf(argstr,	"%s*%s", in(flgs, 'P') ? "P_arg_4()" : in(flgs, 'N') ? "N_arg_4()" : "L_arg_4()", | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void fatal(fmt, str) | ||||||
|  | 	char *fmt; | ||||||
|  | 	char *str; | ||||||
|  | { | ||||||
|  | 	fprintf(stderr, "%s, (fatal error): ", progname); | ||||||
|  | 	fprintf(stderr, fmt, str); | ||||||
|  | 	fprintf(stderr, "\n"); | ||||||
|  | 	exit(1); | ||||||
|  | } | ||||||
|  | int getmnem(str) char *str ; { | ||||||
|  | 	char (*ptr)[4] ; | ||||||
|  | 
 | ||||||
|  | 	for ( ptr = em_mnem ; *ptr<= &em_mnem[sp_lmnem][0] ; ptr++ ) { | ||||||
|  | 		if ( strcmp(*ptr,str)==0 ) return (ptr-em_mnem) ; | ||||||
|  | 	} | ||||||
|  | 	fatal("%s","Illegal mnemonic") ; | ||||||
|  | 	return 0 ; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int main(argc, argv) | ||||||
| 	int argc; | 	int argc; | ||||||
| 	char **argv; | 	char **argv; | ||||||
| { | { | ||||||
|  | @ -148,128 +275,5 @@ main(argc, argv) | ||||||
| 			fatal("no opcode flag in ip_spec %s\n", flgs); | 			fatal("no opcode flag in ip_spec %s\n", flgs); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	exit(0); | 	return EXIT_SUCCESS; | ||||||
| } | } | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| OutCase(mnem, base, first, i, argstr) |  | ||||||
| 	char *mnem; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	int i; |  | ||||||
| 	char *argstr; |  | ||||||
| { |  | ||||||
| 	/* Output a case in the switch statement */ |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s(%s); break;\n", |  | ||||||
| 		base, first+i, Prefix, mnem, argstr); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 		 |  | ||||||
| ImplicitArg(argstr) |  | ||||||
| 	char *argstr; |  | ||||||
| { |  | ||||||
| 	sprintf(argstr, "uwpop()"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| NoArgs(argstr) |  | ||||||
| 	char *argstr; |  | ||||||
| { |  | ||||||
| 	sprintf(argstr, ""); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Mini(argstr, i, flgs) |  | ||||||
| 	char *argstr; |  | ||||||
| 	int i; |  | ||||||
| 	char *flgs; |  | ||||||
| { |  | ||||||
| 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; |  | ||||||
| 
 |  | ||||||
| 	switch (newi) { |  | ||||||
| 	case -1: |  | ||||||
| 		sprintf(argstr, "%s", |  | ||||||
| 			in(flgs, 'w') ? "-wsize" : "-1L"); |  | ||||||
| 		break; |  | ||||||
| 	case 0: |  | ||||||
| 		sprintf(argstr, "0L"); |  | ||||||
| 		break; |  | ||||||
| 	case 1: |  | ||||||
| 		sprintf(argstr, "%s", |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| 		break; |  | ||||||
| 	default: |  | ||||||
| 		sprintf(argstr, "%dL%s", |  | ||||||
| 			newi, in(flgs, 'w') ? "*wsize" : ""); |  | ||||||
| 		break; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Shortie(argstr, i, flgs) |  | ||||||
| 	char *argstr; |  | ||||||
| 	int i; |  | ||||||
| 	char *flgs; |  | ||||||
| { |  | ||||||
| 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; |  | ||||||
| 
 |  | ||||||
| 	sprintf(argstr, "S_arg(%d)*%s", |  | ||||||
| 		newi, in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| TwoSgn(argstr, flgs) |  | ||||||
| 	char *argstr; |  | ||||||
| 	char *flgs; |  | ||||||
| { |  | ||||||
| 
 |  | ||||||
| 	sprintf(argstr, "%s*%s", in(flgs, 'P') ? "P_arg_2()" : in(flgs, 'N') ? "N_arg_2()" : "L_arg_2()",  |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| TwoUns(argstr, flgs) |  | ||||||
| 	char *argstr; |  | ||||||
| 	char *flgs; |  | ||||||
| { |  | ||||||
| 
 |  | ||||||
| 	sprintf(argstr,	"%s*%s", "U_arg()",  |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "((unsigned long) 1)"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| FourSgn(argstr, flgs) |  | ||||||
| 	char *argstr; |  | ||||||
| 	char *flgs; |  | ||||||
| { |  | ||||||
| 
 |  | ||||||
| 	sprintf(argstr,	"%s*%s", in(flgs, 'P') ? "P_arg_4()" : in(flgs, 'N') ? "N_arg_4()" : "L_arg_4()", |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int |  | ||||||
| in(flgs, c) |  | ||||||
| 	char *flgs; |  | ||||||
| 	char c; |  | ||||||
| { |  | ||||||
| 	while (*flgs) |  | ||||||
| 		if (c == *flgs++) |  | ||||||
| 			return 1; |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| fatal(fmt, str) |  | ||||||
| 	char *fmt; |  | ||||||
| 	char *str; |  | ||||||
| { |  | ||||||
| 	fprintf(stderr, "%s, (fatal error): ", progname); |  | ||||||
| 	fprintf(stderr, fmt, str); |  | ||||||
| 	fprintf(stderr, "\n"); |  | ||||||
| 	exit(1); |  | ||||||
| } |  | ||||||
| int getmnem(str) char *str ; { |  | ||||||
| 	char (*ptr)[4] ; |  | ||||||
| 
 |  | ||||||
| 	for ( ptr = em_mnem ; *ptr<= &em_mnem[sp_lmnem][0] ; ptr++ ) { |  | ||||||
| 		if ( strcmp(*ptr,str)==0 ) return (ptr-em_mnem) ; |  | ||||||
| 	} |  | ||||||
| 	fatal("Illegal mnemonic") ; |  | ||||||
| 	return 0 ; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| 
 | 
 | ||||||
| /* $Id$ */ | /* $Id$ */ | ||||||
| 
 | 
 | ||||||
|  | #include <stdlib.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| 
 | 
 | ||||||
| extern FILE *popen(); | extern FILE *popen(); | ||||||
|  | @ -22,7 +23,154 @@ FILE	*ofp;			/* Output File Pointer */ | ||||||
| FILE	*ffp = 0;		/* Function File Pointer */ | FILE	*ffp = 0;		/* Function File Pointer */ | ||||||
| char	*Prefix;		/* Prefix for function name */ | char	*Prefix;		/* Prefix for function name */ | ||||||
| 
 | 
 | ||||||
| main(argc, argv) | int in(char *flgs, char c) | ||||||
|  | { | ||||||
|  | 	while (*flgs) | ||||||
|  | 		if (c == *flgs++) | ||||||
|  | 			return 1; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void NoArgs(base, first, mnem) | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%sz(); break;\n", | ||||||
|  | 		base, first, Prefix, mnem); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%sz() {", Prefix, mnem); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%sz()\"));}\n", Prefix, mnem); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Mini(i, flgs, base, first, mnem) | ||||||
|  | 	int i; | ||||||
|  | 	char *flgs; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	char arg[16]; | ||||||
|  | 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; | ||||||
|  | 
 | ||||||
|  | 	switch (newi) { | ||||||
|  | 	case -1: | ||||||
|  | 		sprintf(arg, "%s", | ||||||
|  | 			in(flgs, 'w') ? "-wsize" : "-1L"); | ||||||
|  | 		break; | ||||||
|  | 	case 0: | ||||||
|  | 		sprintf(arg, "0L"); | ||||||
|  | 		break; | ||||||
|  | 	case 1: | ||||||
|  | 		sprintf(arg, "%s", | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | 		break; | ||||||
|  | 	default: | ||||||
|  | 		sprintf(arg, "%dL%s", | ||||||
|  | 			newi, in(flgs, 'w') ? "*wsize" : ""); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%sm(%s); break;\n", | ||||||
|  | 		base, first+i, Prefix, mnem, arg); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%sm(arg) long arg; {", | ||||||
|  | 				Prefix, mnem); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%sm(%%d)\", arg));}\n", | ||||||
|  | 				Prefix, mnem); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Shortie(i, flgs, base, first, mnem) | ||||||
|  | 	int i; | ||||||
|  | 	char *flgs; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	char arg[16]; | ||||||
|  | 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; | ||||||
|  | 
 | ||||||
|  | 	sprintf(arg, "%dL, %s", newi, (in(flgs, 'w') ? "wsize" : "1L")); | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%ss(%s); break;\n", | ||||||
|  | 		base, first+i, Prefix, mnem, arg); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%ss(hob, wfac) long hob; size wfac; {", | ||||||
|  | 				Prefix, mnem); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%ss(%%d)\", hob, wfac));", | ||||||
|  | 				Prefix, mnem); | ||||||
|  | 		fprintf(ffp, " newPC(PC+1);}\n"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TwoSgn(flgs, base, first, mnem) | ||||||
|  | 	char *flgs; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	char *xy = in(flgs, 'P') ? "p2" : in(flgs, 'N') ? "n2" : "l2"; | ||||||
|  | 
 | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", | ||||||
|  | 			base, first, Prefix, mnem, xy, | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", | ||||||
|  | 				Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, " newPC(PC+2);}\n"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TwoUns(flgs, base, first, mnem) | ||||||
|  | 	char *flgs; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	char *xy = "u"; | ||||||
|  | 
 | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", | ||||||
|  | 			base, first, Prefix, mnem, xy, | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", | ||||||
|  | 				Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, " newPC(PC+2);}\n"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void FourSgn(flgs, base, first, mnem) | ||||||
|  | 	char *flgs; | ||||||
|  | 	char *base; | ||||||
|  | 	int first; | ||||||
|  | 	char *mnem; | ||||||
|  | { | ||||||
|  | 	char *xy = in(flgs, 'P') ? "p4" : in(flgs, 'N') ? "n4" : "l4"; | ||||||
|  | 
 | ||||||
|  | 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", | ||||||
|  | 			base, first, Prefix, mnem, xy, | ||||||
|  | 			in(flgs, 'w') ? "wsize" : "1L"); | ||||||
|  | 	if (ffp) { | ||||||
|  | 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", | ||||||
|  | 				Prefix, mnem, xy); | ||||||
|  | 		fprintf(ffp, " newPC(PC+4);}\n"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void fatal(char *fmt, char *str) | ||||||
|  | { | ||||||
|  | 	fprintf(stderr, "%s, (fatal error): ", progname); | ||||||
|  | 	fprintf(stderr, fmt, str); | ||||||
|  | 	fprintf(stderr, "\n"); | ||||||
|  | 	exit(1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int main(argc, argv) | ||||||
| 	int argc; | 	int argc; | ||||||
| 	char **argv; | 	char **argv; | ||||||
| { | { | ||||||
|  | @ -136,153 +284,3 @@ main(argc, argv) | ||||||
| 	} | 	} | ||||||
| 	exit(0); | 	exit(0); | ||||||
| } | } | ||||||
| 
 |  | ||||||
| NoArgs(base, first, mnem) |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%sz(); break;\n", |  | ||||||
| 		base, first, Prefix, mnem); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%sz() {", Prefix, mnem); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%sz()\"));}\n", Prefix, mnem); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Mini(i, flgs, base, first, mnem) |  | ||||||
| 	int i; |  | ||||||
| 	char *flgs; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	char arg[16]; |  | ||||||
| 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; |  | ||||||
| 
 |  | ||||||
| 	switch (newi) { |  | ||||||
| 	case -1: |  | ||||||
| 		sprintf(arg, "%s", |  | ||||||
| 			in(flgs, 'w') ? "-wsize" : "-1L"); |  | ||||||
| 		break; |  | ||||||
| 	case 0: |  | ||||||
| 		sprintf(arg, "0L"); |  | ||||||
| 		break; |  | ||||||
| 	case 1: |  | ||||||
| 		sprintf(arg, "%s", |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| 		break; |  | ||||||
| 	default: |  | ||||||
| 		sprintf(arg, "%dL%s", |  | ||||||
| 			newi, in(flgs, 'w') ? "*wsize" : ""); |  | ||||||
| 		break; |  | ||||||
| 	} |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%sm(%s); break;\n", |  | ||||||
| 		base, first+i, Prefix, mnem, arg); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%sm(arg) long arg; {", |  | ||||||
| 				Prefix, mnem); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%sm(%%d)\", arg));}\n", |  | ||||||
| 				Prefix, mnem); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Shortie(i, flgs, base, first, mnem) |  | ||||||
| 	int i; |  | ||||||
| 	char *flgs; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	char arg[16]; |  | ||||||
| 	int newi = in(flgs, 'N') ? (-i-1) : in(flgs, 'o') ? (i+1) : i; |  | ||||||
| 
 |  | ||||||
| 	sprintf(arg, "%dL, %s", newi, (in(flgs, 'w') ? "wsize" : "1L")); |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%ss(%s); break;\n", |  | ||||||
| 		base, first+i, Prefix, mnem, arg); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%ss(hob, wfac) long hob; size wfac; {", |  | ||||||
| 				Prefix, mnem); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%ss(%%d)\", hob, wfac));", |  | ||||||
| 				Prefix, mnem); |  | ||||||
| 		fprintf(ffp, " newPC(PC+1);}\n"); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| TwoSgn(flgs, base, first, mnem) |  | ||||||
| 	char *flgs; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	char *xy = in(flgs, 'P') ? "p2" : in(flgs, 'N') ? "n2" : "l2"; |  | ||||||
| 
 |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", |  | ||||||
| 			base, first, Prefix, mnem, xy, |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", |  | ||||||
| 				Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, " newPC(PC+2);}\n"); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| TwoUns(flgs, base, first, mnem) |  | ||||||
| 	char *flgs; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	char *xy = "u"; |  | ||||||
| 
 |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", |  | ||||||
| 			base, first, Prefix, mnem, xy, |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", |  | ||||||
| 				Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, " newPC(PC+2);}\n"); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| FourSgn(flgs, base, first, mnem) |  | ||||||
| 	char *flgs; |  | ||||||
| 	char *base; |  | ||||||
| 	int first; |  | ||||||
| 	char *mnem; |  | ||||||
| { |  | ||||||
| 	char *xy = in(flgs, 'P') ? "p4" : in(flgs, 'N') ? "n4" : "l4"; |  | ||||||
| 
 |  | ||||||
| 	fprintf(ofp, "\t\tcase %s+%d:\t%s%s%s(%s); break;\n", |  | ||||||
| 			base, first, Prefix, mnem, xy, |  | ||||||
| 			in(flgs, 'w') ? "wsize" : "1L"); |  | ||||||
| 	if (ffp) { |  | ||||||
| 		fprintf(ffp, "%s%s%s(arg) long arg; {", Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, "LOG((\"@ %s%s%s(%%d)\", arg));", |  | ||||||
| 				Prefix, mnem, xy); |  | ||||||
| 		fprintf(ffp, " newPC(PC+4);}\n"); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int |  | ||||||
| in(flgs, c) |  | ||||||
| 	char *flgs; |  | ||||||
| 	char c; |  | ||||||
| { |  | ||||||
| 	while (*flgs) |  | ||||||
| 		if (c == *flgs++) |  | ||||||
| 			return 1; |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| fatal(fmt, str) |  | ||||||
| 	char *fmt; |  | ||||||
| 	char *str; |  | ||||||
| { |  | ||||||
| 	fprintf(stderr, "%s, (fatal error): ", progname); |  | ||||||
| 	fprintf(stderr, fmt, str); |  | ||||||
| 	fprintf(stderr, "\n"); |  | ||||||
| 	exit(1); |  | ||||||
| } |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue