Fixed ASRB and RORB instructions, added a new dump command ("ds"), and fixed timer function initialization
This commit is contained in:
parent
9fe3ba6e09
commit
eb6bf8a5a5
9 changed files with 434 additions and 408 deletions
|
|
@ -2946,8 +2946,13 @@ if (DEBUGGER) {
|
|||
if (!dbgAddr) return;
|
||||
|
||||
var len = 0; // 0 is not a default; it triggers the appropriate default below
|
||||
var fRange = false;
|
||||
var fJSON = (sCmd == "ds");
|
||||
|
||||
if (sLen) {
|
||||
fRange = true;
|
||||
if (sLen.charAt(0) == 'l') {
|
||||
fRange = false;
|
||||
sLen = sLen.substr(1) || sBytes;
|
||||
}
|
||||
len = this.parseValue(sLen) >>> 0; // negative lengths not allowed
|
||||
|
|
@ -2959,8 +2964,9 @@ if (DEBUGGER) {
|
|||
* since this is primarily a word-oriented machine.
|
||||
*/
|
||||
var size = (sCmd == "dd"? 4 : (sCmd == "db"? 1 : 2));
|
||||
var nBytes = (size * len) || 128;
|
||||
var nLines = ((nBytes + 15) >> 4) || 1;
|
||||
var nBytes = (fRange? (len - dbgAddr.addr) : (size * len)) || 128;
|
||||
var nBytesPerLine = fJSON? 16 : this.nBase;
|
||||
var nLines = (((nBytes + nBytesPerLine - 1) / nBytesPerLine)|0) || 1;
|
||||
|
||||
var sDump = "";
|
||||
while (nLines-- && nBytes > 0) {
|
||||
|
|
@ -2977,20 +2983,29 @@ if (DEBUGGER) {
|
|||
*/
|
||||
var i, n;
|
||||
var data = 0, shift = 0;
|
||||
for (i = this.nBase; i > 0 && nBytes > 0; i -= n, nBytes -= n) {
|
||||
for (i = nBytesPerLine; i > 0 && nBytes > 0; i -= n, nBytes -= n) {
|
||||
n = 1;
|
||||
var v = size == 1? this.getByte(dbgAddr, n) : this.getWord(dbgAddr, (n = 2));
|
||||
data |= (v << (shift << 3));
|
||||
shift += n;
|
||||
if (shift == size) {
|
||||
sData += this.toStrBase(data, size);
|
||||
sData += (size == 1? (i == 9? '-' : ' ') : " ");
|
||||
if (fJSON) {
|
||||
if (sData) sData += ",";
|
||||
sData += "0x"+ str.toHex(data, size * 2);
|
||||
} else {
|
||||
sData += this.toStrBase(data, size);
|
||||
sData += (size == 1? (i == 9? '-' : ' ') : " ");
|
||||
}
|
||||
data = shift = 0;
|
||||
}
|
||||
sChars += (v >= 32 && v < 128? String.fromCharCode(v) : '.');
|
||||
}
|
||||
if (sDump) sDump += '\n';
|
||||
sDump += sAddr + " " + sData + ((i == 0)? (' ' + sChars) : "");
|
||||
if (sDump) sDump += "\n";
|
||||
if (fJSON) {
|
||||
sDump += sData + ",";
|
||||
} else {
|
||||
sDump += sAddr + " " + sData + ((i == 0)? (' ' + sChars) : "");
|
||||
}
|
||||
}
|
||||
|
||||
if (sDump) this.println(sDump);
|
||||
|
|
|
|||
Loading…
Reference in a new issue