Detect-It-Easy/db/MSDOS/_init
DosX dda63b126f Database fix
TODO: "ACE" review
2024-11-06 07:19:20 +03:00

52 lines
No EOL
1.3 KiB
Text

var File = MSDOS;
var X = MSDOS;
/**
* Get the “base” offset, after the header.
* @param {Int} [nOffset=0] - The offset from the base offset.
* @returns {Int}
*/
MSDOS.getBaseOffset = function(nOffset) {
if (arguments.length == 0) {
nOffset = 0;
}
return (MSDOS.readWord(8) << 4) + nOffset;
}
/**
* Translate segment/offset address pair to file offset.
* @param {UShort} nSegment - Segment address.
* @param {UShort} [nOffset=0] - Offset address.
* @returns {Int}
*/
MSDOS.AddressToOffset = function(nSegment, nOffset) {
if (arguments.length == 1) {
nOffset = 0;
}
nOffset += nSegment << 4;
return MSDOS.getBaseOffset(nOffset & 0xFFFFF);
}
/**
* Get the entry point file offset.
* @param {Int} [nOffset=0] - The offset from the entry point.
* @returns {Int}
*/
MSDOS.getEntryPointOffset = function(nOffset) {
if (arguments.length == 0) {
nOffset = 0;
}
return MSDOS.AddressToOffset(MSDOS.readWord(0x16), MSDOS.readWord(0x14)) + nOffset;
}
/**
* Get the NewExe (or LE/LX) file offset (assuming it's valid).
* @param {Int} [nOffset=0] - The offset from the NewExe offset.
* @returns {Int}
*/
MSDOS.getNEOffset = function(nOffset) {
if (arguments.length == 0) {
nOffset = 0;
}
return MSDOS.readDword(0x3C) + nOffset;
}