changeset 504:b0ee847a14d3

Oops, actually fix the load address setting functionality to work. And make it print some informational messages about what is being done.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 17 Nov 2012 17:17:55 +0200
parents f9be2bc8f8ed
children 4d6769bd8cfb
files objlink.c
diffstat 1 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/objlink.c	Sat Nov 17 17:13:12 2012 +0200
+++ b/objlink.c	Sat Nov 17 17:17:55 2012 +0200
@@ -137,7 +137,7 @@
 ssize_t    optCropStart, optCropEnd;
 BOOL       optCropOutput = FALSE;
 
-int        optLoadAddress = LA_AUTO;
+ssize_t    optLoadAddress = LA_AUTO;
 
 int        optMemModel = 0;
 const DMMemModel *memModel = NULL;
@@ -488,13 +488,18 @@
             optLoadAddress = LA_NONE;
         else
         {
-            optLoadAddress = atoi(optArg);
-            if (optLoadAddress < 0 || optLoadAddress >= 64*1024)
+            if (!dmGetIntVal(optArg, &tmpi))
+            {
+                dmError("Invalid loading address '%s'.\n", optArg);
+                return FALSE;
+            }
+            if (tmpi < 0 || tmpi >= 64*1024)
             {
                 dmError("Invalid or insane loading address %d/$%x!\n",
-                    optLoadAddress);
+                    tmpi);
                 return FALSE;
             }
+            optLoadAddress = tmpi;
         }
         break;
 
@@ -953,10 +958,20 @@
 
     // Save loading address
     if (optLoadAddress >= 0)
+    {
+        dmMsg(1, "Using specified loading address $%.4x\n", optLoadAddress);
         dm_fwrite_le16(dfile, optLoadAddress);
+    }
     else
     if (optLoadAddress == LA_AUTO)
+    {
+        dmMsg(1, "Using automatic loading address $%.4x\n", startAddr);
         dm_fwrite_le16(dfile, startAddr);
+    }
+    else
+    {
+        dmMsg(1, "Writing raw output, without loading address.\n");
+    }
 
     // Save the data
     if (fwrite(&memory[startAddr], dataSize, 1, dfile) < 1)