]> git.sur5r.net Git - cc65/commitdiff
Default is now automatic execution of program after loading
authorStephan Mühlstrasser <stephan.muehlstrasser@web.de>
Sun, 23 Nov 2014 19:05:38 +0000 (20:05 +0100)
committerStephan Mühlstrasser <stephan.muehlstrasser@web.de>
Sun, 23 Nov 2014 19:05:38 +0000 (20:05 +0100)
src/c1p65/main.c

index 50edcde88b63d1b5532b20e7ddc1b84a3924832c..5edc525eb717bdd2ce97604b53c3dbcc11503005 100644 (file)
@@ -27,6 +27,7 @@ static void Usage (void)
         "Short options:\n"\r
         "  -V\t\t\tPrint the version number\n"\r
         "  -h\t\t\tHelp (this text)\n"\r
+               "  -n\t\tNo automatic start after loading program\n"\r
                "  -o name\t\tName the C1P output file (default: <input>.c1p)\n"\r
                "  -S addr\t\tLoad address (default 0x300)\n"\r
         "\n"\r
@@ -79,16 +80,17 @@ static unsigned long CvtNumber (const char* Arg, const char* Number)
 }\r
 \r
 /* Commands of C1P PROM monitor */\r
-#define ADDRESS_MODE_CMD     '.'\r
-#define DATA_MODE_CMD        '/'\r
-#define EXECUTE_CMD          'G'\r
+#define ADDRESS_MODE_CMD       '.'\r
+#define DATA_MODE_CMD          '/'\r
+#define EXECUTE_CMD                    'G'\r
 #define DATA_MODE_ADDRESS      0x00FB\r
 \r
 /* Transform the cc65 executable binary into a series of\r
    commands that make the C1P PROM monitor load the bytes\r
    into memory.\r
 */\r
-static void Transform (unsigned long StartAddress, FILE *In, FILE *Out)\r
+static void Transform (unsigned long StartAddress, FILE *In, FILE *Out,\r
+       unsigned AutoStart)\r
 {\r
        int c;\r
 \r
@@ -101,15 +103,17 @@ static void Transform (unsigned long StartAddress, FILE *In, FILE *Out)
                fprintf(Out, "%02.2X\n", (unsigned int) c & 0xFF);\r
        }\r
 \r
-       /* Store 00 to 0x00FB to enable keyboard input at the end */\r
-       fprintf(Out, "%c%04.4X%c%02.2X\n", ADDRESS_MODE_CMD,\r
-               0x00FB, DATA_MODE_CMD, 0x00);\r
-\r
-       /* And execute\r
-       fprintf (Out, "%c%04.4x%c",\r
+       if (AutoStart) {\r
+               /* Execute */\r
+               fprintf (Out, "%c%04.4x%c",\r
                        ADDRESS_MODE_CMD, (unsigned int) StartAddress & 0xFFFF,\r
                        EXECUTE_CMD);\r
-                        */\r
+       }\r
+       else {\r
+               /* Store 00 to 0x00FB to enable keyboard input at the end */\r
+               fprintf(Out, "%c%04.4X%c%02.2X\n", ADDRESS_MODE_CMD,\r
+                       0x00FB, DATA_MODE_CMD, 0x00);\r
+       }\r
 } \r
 \r
 /* Default suffix for C1P object file */\r
@@ -135,6 +139,9 @@ int main (int argc, char *argv[])
        /* Initialize with default start address defined in c1p.cfg */\r
        unsigned long StartAddr = 0x300;\r
 \r
+       /* Start program automatically after loading */\r
+       unsigned AutoStart = 1;\r
+\r
     unsigned int I;\r
 \r
     /* Initialize the cmdline module */\r
@@ -155,11 +162,15 @@ int main (int argc, char *argv[])
                     LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0]));\r
                     break;\r
 \r
-                case 'o':\r
-                    OutputFile = GetArg (&I, 2);\r
-                    break;\r
+                               case 'n':\r
+                                       AutoStart = 0;\r
+                                       break;\r
+\r
+                               case 'o':\r
+                                       OutputFile = GetArg(&I, 2);\r
+                                       break;\r
 \r
-                case 'S':\r
+                               case 'S':\r
                     StartAddr = CvtNumber (Arg, GetArg (&I, 2));\r
                     break;\r
 \r
@@ -206,7 +217,7 @@ int main (int argc, char *argv[])
        if (!OutputFileFp) AbEnd ("Unable to open output file");\r
 \r
        /* Generate object file */\r
-       Transform (StartAddr, InputFileFp, OutputFileFp);\r
+       Transform (StartAddr, InputFileFp, OutputFileFp, AutoStart);\r
 \r
        /* Cleanup */\r
        if (fclose(InputFileFp) == EOF) AbEnd ("Error closing input file");\r