Mercurial > hg > dmlib
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)