#include #include #include #include #include "config.h" #include "simulator.h" #include "alu.h" #include "terminal.h" #include "exceptions.h" typedef void (*sighandler_t) (int); void invite(void) { fprintf(stderr, _("Simul v1.0\n\n")); } void usage(void) { fprintf(stderr, _("Usage: linker [-s] [-d] binary\n")); exit(0); } void init_all(void) { fprintf(stderr, _(" o Initialising the simulator... ")); Initialisation(); fprintf(stderr, _(" Done!\n")); } void flush_all(void) { Flush(); } void segfaulthand(int i) { exception(1, _("Signal received: segfault")); } void ctrlbreakhand(int i) { debug = 1; } char *readargs(int argc, char **argv) { char *r = NULL; argc--; argv++; Rapide = 1; while (argc) { if (**argv == '-') { switch ((*argv)[1]) { case 's': Rapide = 0; break; case 'd': debug = 1; break; default: usage(); } } else { if (r) { usage(); } r = *argv; } argv++; argc--; } if (!r) { usage(); } return r; } int main(int argc, char **argv) { int i; char *nom; invite(); nom = readargs(argc, argv); signal(SIGSEGV, segfaulthand); signal(SIGINT, ctrlbreakhand); fprintf(stderr, _("\nPerforming initialisation...\n\n")); init_all(); pushcontext(_("Beginning simulation")); openterm(); initterm(); clearterm(); ChargeBinaire(nom); clearterm(); popcontext(); fprintf(stderr, _("\nPerforming shutdown...\n\n")); flush_all(); signal(SIGSEGV, NULL); signal(SIGINT, NULL); fprintf(stderr, _("Exitting, bye!\n")); return 0; }