# HG changeset patch # User Matti Hamalainen # Date 1353165475 -7200 # Node ID b0ee847a14d3c62321223d79bcf58f524ca25c02 # Parent f9be2bc8f8ed5ee3288a004effd7939a4da302cc Oops, actually fix the load address setting functionality to work. And make it print some informational messages about what is being done. diff -r f9be2bc8f8ed -r b0ee847a14d3 objlink.c --- 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)