mirror of https://github.com/stella-emu/stella.git
Well, that was fast. Fixed bug in parsing constants from the DASM lst file.
I wasn't completely sure how the file was structured, but it's starting to make a lot more sense now. I think in the end, it will be better to use this file as much as possible. Bumped version #, and starting all over again. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2815 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
c1398bc331
commit
587959c273
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
#define STELLA_VERSION "3.9.1"
|
#define STELLA_VERSION "3.9.2_pre"
|
||||||
#define STELLA_BUILD atoi("$Rev$" + 6)
|
#define STELLA_BUILD atoi("$Rev$" + 6)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -755,8 +755,8 @@ string CartDebug::loadListFile()
|
||||||
|
|
||||||
while(!in.eof())
|
while(!in.eof())
|
||||||
{
|
{
|
||||||
string line, addr1;
|
string line, addr_s;
|
||||||
int value = -1;
|
int addr = -1;
|
||||||
|
|
||||||
getline(in, line);
|
getline(in, line);
|
||||||
|
|
||||||
|
@ -766,18 +766,24 @@ string CartDebug::loadListFile()
|
||||||
{
|
{
|
||||||
stringstream buf(line);
|
stringstream buf(line);
|
||||||
|
|
||||||
// Swallow first value
|
// Swallow first value, then get actual numerical value for address
|
||||||
buf >> value >> addr1;
|
// We need to read the address as a string, since it may contain 'U'
|
||||||
|
buf >> addr >> addr_s;
|
||||||
|
if(addr_s.length() == 0)
|
||||||
|
continue;
|
||||||
|
const char* p = addr_s[0] == 'U' ? addr_s.c_str() + 1 : addr_s.c_str();
|
||||||
|
addr = strtoul(p, NULL, 16);
|
||||||
|
|
||||||
// Search for lines containing Uxxxx
|
// For now, completely ignore ROM addresses
|
||||||
if(addr1.length() > 0 && toupper(addr1[0]) == 'U')
|
if(!(addr & 0x1000))
|
||||||
{
|
{
|
||||||
// Search for pattern 'xx yy CONSTANT ='
|
// Search for pattern 'xx yy CONSTANT ='
|
||||||
|
buf.seekg(20); // skip potential '????'
|
||||||
int xx = -1, yy = -1;
|
int xx = -1, yy = -1;
|
||||||
char eq = '\0';
|
char eq = '\0';
|
||||||
buf >> hex >> xx >> hex >> yy >> line >> eq;
|
buf >> hex >> xx >> hex >> yy >> line >> eq;
|
||||||
if(xx == 0 && yy >= 0 && eq == '=')
|
if(xx >= 0 && yy >= 0 && eq == '=')
|
||||||
myUserCLabels.insert(make_pair(yy, line));
|
myUserCLabels.insert(make_pair(xx*256+yy, line));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue