UNPKG

uae-dap

Version:

Debug Adapter Protocol for Amiga development with FS-UAE or WinUAE

109 lines 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSRDetailedValues = exports.getRegisterIndex = exports.nameRegisters = exports.REGISTER_COPPER_ADDR_INDEX = exports.REGISTER_PC_INDEX = exports.REGISTER_SR_INDEX = exports.REGISTER_A0_INDEX = exports.REGISTER_D0_INDEX = void 0; exports.REGISTER_D0_INDEX = 0; // -> 0 to 7 exports.REGISTER_A0_INDEX = 8; // -> 8 to 15 exports.REGISTER_SR_INDEX = 16; exports.REGISTER_PC_INDEX = 17; exports.REGISTER_COPPER_ADDR_INDEX = 28; const SR_LABELS = [ "T1", "T0", "S", "M", null, "I", "I", "I", null, null, null, "X", "N", "Z", "V", "C", ]; function nameRegisters(registerValues) { const registers = []; registers.push({ name: "pc", value: registerValues[exports.REGISTER_PC_INDEX], }); for (let i = 0; i < 8; i++) { registers.push({ name: "d" + i, value: registerValues[i + exports.REGISTER_D0_INDEX], }); } for (let i = 0; i < 8; i++) { registers.push({ name: "a" + i, value: registerValues[i + exports.REGISTER_A0_INDEX], }); } registers.push({ name: "sr", value: registerValues[exports.REGISTER_SR_INDEX], }); return registers.concat(getSRDetailedValues(registerValues[exports.REGISTER_SR_INDEX])); } exports.nameRegisters = nameRegisters; function getRegisterIndex(name) { if (name.length > 1) { const type = name.charAt(0); const idx = parseInt(name.charAt(1)); if (type === "d") { return idx + exports.REGISTER_D0_INDEX; } else if (type === "a") { return idx + exports.REGISTER_A0_INDEX; } else if (name === "pc") { return exports.REGISTER_PC_INDEX; } else if (name === "sr") { return exports.REGISTER_SR_INDEX; } else if (name === "copper") { return exports.REGISTER_COPPER_ADDR_INDEX; } } throw new Error("Invalid register name: " + name); } exports.getRegisterIndex = getRegisterIndex; function getSRDetailedValues(srValue) { const registers = []; let intMask = 0; let intPos = 2; for (let i = 0; i < SR_LABELS.length; i++) { const label = SR_LABELS[i]; if (label !== null) { const mask = 1 << (15 - i); const b = srValue & mask; let vb = 0; if (b) { vb = 1; } if (label.startsWith("I")) { intMask = intMask | (vb << intPos); intPos--; if (intPos < 0) { registers.push({ name: "SR_intmask", value: intMask, }); } } else { registers.push({ name: `SR_${label}`, value: vb, }); } } } return registers; } exports.getSRDetailedValues = getSRDetailedValues; //# sourceMappingURL=registers.js.map