- fprintf(stdout,"%s\n",argv[i]);
-
- /* if this is an option */
- if (argv[i][0] == '-') {
-
- /* if directory then mark directory */
- if (strncmp(argv[i],"--directory=",12) == 0) {
- if (!ssdirl)
- ssdirl = &argv[i][12];
- else {
- char *p = malloc(strlen(ssdirl)+strlen(&argv[i][12])+2);
- strcat(strcat(strcpy(p,&argv[i][12]),":"),ssdirl);
- ssdirl = p;
- }
- continue;
- }
-
- if (strncmp(argv[i],"-fullname",9) == 0) {
- fullname = TRUE;
- continue;
- }
-
- if (strcmp(argv[i],"-cd") == 0) {
- i++;
- chdir(argv[i]);
- continue;
- }
-
- if (strncmp(argv[i],"-cd=",4) == 0) {
- chdir(argv[i][4]);
- continue;
- }
-
- /* the simulator arguments */
-
- /* cpu */
- if (strcmp(argv[i],"-t") == 0 ||
- strcmp(argv[i],"-cpu") == 0) {
-
- simArgs[nsimArgs++] = "-t";
- simArgs[nsimArgs++] = strdup(argv[++i]);
- continue ;
- }
-
- /* XTAL Frequency */
- if (strcmp(argv[i],"-X") == 0 ||
- strcmp(argv[i],"-frequency") == 0) {
- simArgs[nsimArgs++] = "-X";
- simArgs[nsimArgs++] = strdup(argv[++i]);
- continue ;
- }
-
- /* serial port */
- if (strcmp(argv[i],"-s") == 0) {
- simArgs[nsimArgs++] = "-s";
- simArgs[nsimArgs++] = strdup(argv[++i]);
- continue ;
- }
-
- if (strcmp(argv[i],"-S") == 0) {
- simArgs[nsimArgs++] = "-s";
- simArgs[nsimArgs++] = strdup(argv[++i]);
- continue ;
- }
-
- fprintf(stderr,"unknown option %s --- ignored\n",
- argv[i]);
- } else {
- /* must be file name */
- if (filename) {
- fprintf(stderr,"too many filenames .. parameter '%s' ignored\n",
- argv[i]);
- continue ;
- }
-
- filename = strtok(argv[i],".");
-
- }
+ //fprintf(stdout,"%s\n",argv[i]);
+
+ if (passon_args_flag) { /* if true, pass on args to simulator */
+ simArgs[nsimArgs++] = strdup(argv[i]);
+ continue;
+ }
+
+ /* if this is an option */
+ if (argv[i][0] == '-') {
+
+ /* if directory then mark directory */
+ if (strncmp(argv[i],"--directory=",12) == 0) {
+ if (!ssdirl)
+ ssdirl = &argv[i][12];
+ else {
+ char *p = Safe_malloc(strlen(ssdirl)+strlen(&argv[i][12])+2);
+ strcat(strcat(strcpy(p,&argv[i][12]),":"),ssdirl);
+ ssdirl = p;
+ }
+ continue;
+ }
+
+ if (strncmp(argv[i],"-fullname",9) == 0) {
+ fullname = TRUE;
+ continue;
+ }
+
+ if (strcmp(argv[i],"-cd") == 0) {
+ i++;
+ chdir(argv[i]);
+ continue;
+ }
+
+ if (strncmp(argv[i],"-cd=",4) == 0) {
+ chdir(argv[i][4]);
+ continue;
+ }
+
+#ifdef SDCDB_DEBUG
+ if (strncmp(argv[i],"-d=",3) == 0) {
+ sdcdbDebug = strtol(&argv[i][3],0,0);
+ continue;
+ }
+#endif
+ if (strncmp(argv[i],"-contsim",8) == 0) {
+ contsim=1;
+ continue;
+ }
+ if (strncmp(argv[i],"-q",2) == 0) {
+ continue;
+ }
+
+ /* model string */
+ if (strncmp(argv[i],"-m",2) == 0) {
+ strncpy(model_str, &argv[i][2], 15);
+ if (strcmp(model_str,"avr") == 0)
+ simArgs[0] = "savr";
+ else if (strcmp(model_str,"xa") == 0)
+ simArgs[0] = "sxa";
+ else if (strcmp(model_str,"z80") == 0)
+ simArgs[0] = "sz80";
+ continue ;
+ }
+
+ /* -z all remaining options are for simulator */
+ if (strcmp(argv[i],"-z") == 0) {
+ passon_args_flag = 1;
+ continue ;
+ }
+
+ /* the simulator arguments */
+
+ /* cpu */
+ if (strcmp(argv[i],"-t") == 0 ||
+ strcmp(argv[i],"-cpu") == 0) {
+
+ simArgs[nsimArgs++] = "-t";
+ simArgs[nsimArgs++] = strdup(argv[++i]);
+ continue ;
+ }
+
+ /* XTAL Frequency */
+ if (strcmp(argv[i],"-X") == 0 ||
+ strcmp(argv[i],"-frequency") == 0) {
+ simArgs[nsimArgs++] = "-X";
+ simArgs[nsimArgs++] = strdup(argv[++i]);
+ continue ;
+ }
+
+ /* serial port */
+ if ( (strcmp(argv[i],"-S") == 0) ||
+ (strcmp(argv[i],"-s") == 0)) {
+ simArgs[nsimArgs++] = strdup(argv[i]);
+ simArgs[nsimArgs++] = strdup(argv[++i]);
+ continue ;
+ }
+
+ /* network serial port */
+ if ( (strcmp(argv[i],"-k") == 0)) {
+ simArgs[nsimArgs++] = strdup(argv[i]);
+ simArgs[nsimArgs++] = strdup(argv[++i]);
+ continue ;
+ }
+
+ fprintf(stderr,"unknown option %s --- ignored\n",
+ argv[i]);
+
+ } else {
+ /* must be file name */
+ if (filename) {
+ fprintf(stderr,"too many filenames .. parameter '%s' ignored\n",
+ argv[i]);
+ continue ;
+ }
+
+ filename = strtok(argv[i],".");
+
+ }