# COM (MS-DOS COM Executable) Class Reference

The COM class provides analysis capabilities for MS-DOS COM (Command) executable files, which are simple binary executables that load at a fixed memory address.

## Inheritance
* **Inherits from Binary class** - All Binary class functions are available with COM prefix (e.g., `Binary.compareEP` → `COM.compareEP`)

## Overview

COM files are the simplest form of executable files in MS-DOS. They:
- Have no header structure
- Load at memory address 0x0100 
- Are limited to 64KB in size
- Execute directly from the first byte

## Detection

COM files are typically detected by:
1. File extension (.COM)
2. File size (≤ 65,280 bytes)
3. Executable code patterns at the beginning
4. Absence of other executable headers (PE, NE, etc.)

## Usage Examples

```javascript
// Basic COM file detection
if (Binary.getSize() <= 65280 && Binary.getSize() > 0) {
    // Check for common COM file patterns
    if (COM.compare("E9") ||           // JMP near
        COM.compare("EB") ||           // JMP short  
        COM.compare("B4") ||           // MOV AH, immediate
        COM.compare("CD21")) {         // INT 21h
        sName = "MS-DOS COM executable";
        bDetected = true;
    }
}

// Check for specific COM program signatures
if (COM.compare("E9....")) {
    // Jump instruction at start
    sOptions = "JMP start";
} else if (COM.compare("B409CD21")) {
    // Print string DOS call
    sOptions = "DOS text output";
}
```

Since COM files inherit all Binary class functionality, you can use advanced analysis methods:

```javascript
// Analyze entropy to detect packed COM files
var entropy = COM.calculateEntropy(0, COM.getSize());
if (entropy > 7.5) {
    sOptions = "possibly packed";
}

// Search for DOS API calls
if (COM.findSignature(0, COM.getSize(), "CD21") != -1) {
    sOptions = "uses DOS API";
}
```
