uae-dap
Version:
Debug Adapter Protocol for Amiga development with FS-UAE or WinUAE
109 lines • 3.16 kB
JavaScript
;
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