From bca3648fd20b6411de93ec7d6655b79b8156510f Mon Sep 17 00:00:00 2001 From: Fabian Date: Thu, 21 Jul 2022 22:23:32 +0900 Subject: [PATCH] Move hex_dump, add NE2K_LOG_PACKETS --- src/ide.js | 32 -------------------------------- src/lib.js | 36 ++++++++++++++++++++++++++++++++++++ src/ne2k.js | 14 ++++++++++++++ 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/src/ide.js b/src/ide.js index 5d7cd783..fde307e1 100644 --- a/src/ide.js +++ b/src/ide.js @@ -1,37 +1,5 @@ "use strict"; -/** @param {number=} length */ -function hex_dump(buffer, length) -{ - var result = []; - length = length || buffer.byteLength; - var addr = 0; - var line, byt; - - for(var i = 0; i < length >> 4; i++) - { - line = h(addr + (i << 4), 5) + " "; - - for(var j = 0; j < 0x10; j++) - { - byt = buffer[addr + (i << 4) + j]; - line += h(byt, 2) + " "; - } - - line += " "; - - for(j = 0; j < 0x10; j++) - { - byt = buffer[addr + (i << 4) + j]; - line += (byt < 33 || byt > 126) ? "." : String.fromCharCode(byt); - } - - result.push(line); - } - - return "\n" + result.join("\n"); -} - /** @const */ var CDROM_SECTOR_SIZE = 2048; /** @const */ diff --git a/src/lib.js b/src/lib.js index ebeaf016..f8904f7e 100644 --- a/src/lib.js +++ b/src/lib.js @@ -77,6 +77,42 @@ function h(n, len) return "0x" + v86util.pad0(str.toUpperCase(), len || 1); } +/** @param {number=} length */ +function hex_dump(buffer, length) +{ + function hex(n, len) + { + return v86util.pad0(n.toString(16).toUpperCase(), len); + } + + var result = []; + length = length || buffer.byteLength; + var addr = 0; + var line, byt; + + for(var i = 0; i < length >> 4; i++) + { + line = hex(addr + (i << 4), 5) + " "; + + for(var j = 0; j < 0x10; j++) + { + byt = buffer[addr + (i << 4) + j]; + line += hex(byt, 2) + " "; + } + + line += " "; + + for(j = 0; j < 0x10; j++) + { + byt = buffer[addr + (i << 4) + j]; + line += (byt < 33 || byt > 126) ? "." : String.fromCharCode(byt); + } + + result.push(line); + } + + return "\n" + result.join("\n"); +} if(typeof crypto !== "undefined" && crypto.getRandomValues) { diff --git a/src/ne2k.js b/src/ne2k.js index fed3baec..1211baad 100644 --- a/src/ne2k.js +++ b/src/ne2k.js @@ -3,6 +3,7 @@ // http://www.ethernut.de/pdf/8019asds.pdf const NE2K_LOG_VERBOSE = false; +const NE2K_LOG_PACKETS = false; /** @const */ var E8390_CMD = 0x00; /* The command register (for all pages) */ @@ -178,6 +179,13 @@ function Ne2k(cpu, bus, preserve_mac_from_state_image) { var start = this.tpsr << 8; var data = this.memory.subarray(start, start + this.tcnt); + + if(NE2K_LOG_PACKETS) + { + dbg_log("send len=" + data.length + " ethertype=" + h(data[12] << 8 | data[13] << 0, 4) + " ipv4.len=" + (data[14 + 2] << 8 | data[14 + 3]) + " ipv4.protocol=" + h(data[14 + 9])); + dbg_log(hex_dump(data)); + } + this.bus.send("net0-send", data); this.bus.send("eth-transmit-end", [data.length]); this.cr &= ~4; @@ -927,6 +935,12 @@ Ne2k.prototype.receive = function(data) return; } + if(NE2K_LOG_PACKETS) + { + dbg_log("receive len=" + data.length + " ethertype=" + h(data[12] << 8 | data[13] << 0, 4) + " ipv4.len=" + (data[14 + 2] << 8 | data[14 + 3]) + " ipv4.protocol=" + h(data[14 + 9])); + dbg_log(hex_dump(data)); + } + this.bus.send("eth-receive-end", [data.length]); if(this.rxcr & 0x10)