ux improvements
This commit is contained in:
parent
d2970d42f4
commit
eb04e071c3
332
index.html
332
index.html
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -485,7 +486,7 @@
|
|||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
box-shadow: 0 4px 8px rgba(0,0,0,0.3);
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
||||||
font-family: 'Consolas', monospace;
|
font-family: 'Consolas', monospace;
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
@ -596,6 +597,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<header class="header">
|
<header class="header">
|
||||||
<div class="header-content">
|
<div class="header-content">
|
||||||
@ -623,11 +625,13 @@
|
|||||||
<h2>Konstanten</h2>
|
<h2>Konstanten</h2>
|
||||||
<div class="input-grid">
|
<div class="input-grid">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="baseOffset1216">Base Offset <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="baseOffset1216">Base Offset <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="baseOffset1216" value="0x0" placeholder="0x0">
|
<input type="text" id="baseOffset1216" value="0x0" placeholder="0x0">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="sectorSize1216">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="sectorSize1216">Größe eines Sektors <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="sectorSize1216" value="0x200" placeholder="0x200">
|
<input type="text" id="sectorSize1216" value="0x200" placeholder="0x200">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -713,7 +717,8 @@
|
|||||||
<h2>Eingabeparameter</h2>
|
<h2>Eingabeparameter</h2>
|
||||||
<div class="input-grid">
|
<div class="input-grid">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="reservedSectors1216">Anzahl reservierter Sektoren <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="reservedSectors1216">Anzahl reservierter Sektoren <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="reservedSectors1216" placeholder="0x1">
|
<input type="text" id="reservedSectors1216" placeholder="0x1">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
@ -721,23 +726,28 @@
|
|||||||
<input type="text" id="numFATs1216" placeholder="0x2">
|
<input type="text" id="numFATs1216" placeholder="0x2">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="fatSizeBytes1216">Größe einer FAT <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="fatSizeBytes1216">Größe einer FAT <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="fatSizeBytes1216" placeholder="0x1000">
|
<input type="text" id="fatSizeBytes1216" placeholder="0x1000">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="maxRootEntries1216">Max. Wurzelverzeichnis-Einträge <span class="unit-indicator">(Anzahl)</span>:</label>
|
<label for="maxRootEntries1216">Max. Wurzelverzeichnis-Einträge <span
|
||||||
|
class="unit-indicator">(Anzahl)</span>:</label>
|
||||||
<input type="text" id="maxRootEntries1216" placeholder="0x200">
|
<input type="text" id="maxRootEntries1216" placeholder="0x200">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="partitionSizeInSectors1216">Größe Partition <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="partitionSizeInSectors1216">Größe Partition <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="partitionSizeInSectors1216" placeholder="0x4015">
|
<input type="text" id="partitionSizeInSectors1216" placeholder="0x4015">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="clusterSizeSectors1216">Größe eines Clusters <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="clusterSizeSectors1216">Größe eines Clusters <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="clusterSizeSectors1216" placeholder="0x1">
|
<input type="text" id="clusterSizeSectors1216" placeholder="0x1">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="clusterNumber1216">Cluster Nummer für Position <span class="unit-indicator">(Nummer)</span>:</label>
|
<label for="clusterNumber1216">Cluster Nummer für Position <span
|
||||||
|
class="unit-indicator">(Nummer)</span>:</label>
|
||||||
<input type="text" id="clusterNumber1216" placeholder="0x2">
|
<input type="text" id="clusterNumber1216" placeholder="0x2">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -747,66 +757,89 @@
|
|||||||
<h2>Berechnete Werte</h2>
|
<h2>Berechnete Werte</h2>
|
||||||
<div id="results1216">
|
<div id="results1216">
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="reservedSectors × sectorSize + baseOffset">Beginn FAT-Bereich:</span>
|
<span class="result-label" data-formula="reservedSectors × sectorSize + baseOffset">Beginn
|
||||||
|
FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatStart1216" data-result-formula="">-</span>
|
<span class="result-value" id="fatStart1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatStart1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatStart1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="numFATs × fatSizeBytes">Größe FAT-Bereich:</span>
|
<span class="result-label" data-formula="numFATs × fatSizeBytes">Größe FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatSize1216" data-result-formula="">-</span>
|
<span class="result-value" id="fatSize1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatSize1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatSize1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="fatStart + fatSize">Ende FAT-Bereich:</span>
|
<span class="result-label" data-formula="fatStart + fatSize">Ende FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatEnd1216" data-result-formula="">-</span>
|
<span class="result-value" id="fatEnd1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatEnd1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatEnd1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="maxRootEntries × 0x20">Größe Wurzelverzeichnis:</span>
|
<span class="result-label" data-formula="fatEnd">Beginn Wurzelverzeichnis:</span>
|
||||||
|
<div class="result-value-container">
|
||||||
|
<span class="result-value" id="rootDirStart1216" data-result-formula="">-</span>
|
||||||
|
<button class="copy-btn" onclick="copyToClipboard('rootDirStart1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="result-item">
|
||||||
|
<span class="result-label" data-formula="maxRootEntries × 0x20">Größe
|
||||||
|
Wurzelverzeichnis:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="rootDirSize1216" data-result-formula="">-</span>
|
<span class="result-value" id="rootDirSize1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('rootDirSize1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('rootDirSize1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="fatEnd + rootDirSize">Beginn Daten-Bereich:</span>
|
<span class="result-label" data-formula="fatEnd + rootDirSize">Beginn Daten-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="dataStart1216" data-result-formula="">-</span>
|
<span class="result-value" id="dataStart1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('dataStart1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('dataStart1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="(partitionSizeInSectors × sectorSize) - (dataStart - baseOffset)">Größe Daten-Bereich:</span>
|
<span class="result-label"
|
||||||
|
data-formula="(partitionSizeInSectors × sectorSize) - (dataStart - baseOffset)">Größe
|
||||||
|
Daten-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="dataSize1216" data-result-formula="">-</span>
|
<span class="result-value" id="dataSize1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('dataSize1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('dataSize1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="sectorSize × clusterSizeSectors">Größe eines Clusters:</span>
|
<span class="result-label" data-formula="sectorSize × clusterSizeSectors">Größe eines
|
||||||
|
Clusters:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="clusterSize1216" data-result-formula="">-</span>
|
<span class="result-value" id="clusterSize1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('clusterSize1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('clusterSize1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="dataSize ÷ clusterSize">Anzahl Cluster:</span>
|
<span class="result-label" data-formula="dataSize ÷ clusterSize">Anzahl Cluster:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="numClusters1216" data-result-formula="">-</span>
|
<span class="result-value" id="numClusters1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('numClusters1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('numClusters1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="dataStart + (clusterNumber - 0x2) × clusterSize">Beginn Cluster:</span>
|
<span class="result-label"
|
||||||
|
data-formula="dataStart + (clusterNumber - 0x2) × clusterSize">Beginn Cluster:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="clusterStart1216" data-result-formula="">-</span>
|
<span class="result-value" id="clusterStart1216" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('clusterStart1216')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('clusterStart1216')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -815,15 +848,24 @@
|
|||||||
<div class="section formulas">
|
<div class="section formulas">
|
||||||
<h2>Berechnungsformeln FAT12/16</h2>
|
<h2>Berechnungsformeln FAT12/16</h2>
|
||||||
<div class="formula-box">
|
<div class="formula-box">
|
||||||
<div class="formula"><span class="calculated">Beginn FAT-Bereich</span> = Anzahl reservierter Sektoren × Größe eines Sektors + Base Offset</div>
|
<div class="formula"><span class="calculated">Beginn FAT-Bereich</span> = Anzahl reservierter
|
||||||
<div class="formula"><span class="calculated">Größe FAT-Bereich</span> = Anzahl FATs × Größe einer FAT</div>
|
Sektoren × Größe eines Sektors + Base Offset</div>
|
||||||
<div class="formula"><span class="calculated">Ende FAT-Bereich</span> = Beginn FAT-Bereich + Größe FAT-Bereich</div>
|
<div class="formula"><span class="calculated">Größe FAT-Bereich</span> = Anzahl FATs × Größe
|
||||||
<div class="formula"><span class="calculated">Größe Wurzelverzeichnis</span> = Anzahl max. Wurzelverzeichnis-Einträge × 0x20</div>
|
einer FAT</div>
|
||||||
<div class="formula"><span class="calculated">Beginn Daten-Bereich</span> = Ende FAT-Bereich + Größe Wurzelverzeichnis</div>
|
<div class="formula"><span class="calculated">Ende FAT-Bereich</span> = Beginn FAT-Bereich +
|
||||||
<div class="formula"><span class="calculated">Größe Daten-Bereich</span> = (Größe Partition in Sektoren × Größe eines Sektors) - (Beginn Daten-Bereich - Base Offset)</div>
|
Größe FAT-Bereich</div>
|
||||||
<div class="formula"><span class="calculated">Größe eines Clusters</span> = Größe eines Sektors × Größe eines Clusters in Sektoren</div>
|
<div class="formula"><span class="calculated">Größe Wurzelverzeichnis</span> = Anzahl max.
|
||||||
<div class="formula"><span class="calculated">Anzahl Cluster</span> = Größe Daten-Bereich ÷ Größe eines Clusters</div>
|
Wurzelverzeichnis-Einträge × 0x20</div>
|
||||||
<div class="formula"><span class="calculated">Beginn Cluster</span> = Beginn Daten-Bereich + (Cluster - 0x2) × Größe eines Clusters</div>
|
<div class="formula"><span class="calculated">Beginn Daten-Bereich</span> = Ende FAT-Bereich +
|
||||||
|
Größe Wurzelverzeichnis</div>
|
||||||
|
<div class="formula"><span class="calculated">Größe Daten-Bereich</span> = (Größe Partition in
|
||||||
|
Sektoren × Größe eines Sektors) - (Beginn Daten-Bereich - Base Offset)</div>
|
||||||
|
<div class="formula"><span class="calculated">Größe eines Clusters</span> = Größe eines Sektors
|
||||||
|
× Größe eines Clusters in Sektoren</div>
|
||||||
|
<div class="formula"><span class="calculated">Anzahl Cluster</span> = Größe Daten-Bereich ÷
|
||||||
|
Größe eines Clusters</div>
|
||||||
|
<div class="formula"><span class="calculated">Beginn Cluster</span> = Beginn Daten-Bereich +
|
||||||
|
(Cluster - 0x2) × Größe eines Clusters</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -835,11 +877,13 @@
|
|||||||
<h2>Konstanten</h2>
|
<h2>Konstanten</h2>
|
||||||
<div class="input-grid">
|
<div class="input-grid">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="baseOffset32">Base Offset <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="baseOffset32">Base Offset <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="baseOffset32" value="0x0" placeholder="0x0">
|
<input type="text" id="baseOffset32" value="0x0" placeholder="0x0">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="sectorSize32">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="sectorSize32">Größe eines Sektors <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="sectorSize32" value="0x200" placeholder="0x200">
|
<input type="text" id="sectorSize32" value="0x200" placeholder="0x200">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -880,25 +924,32 @@
|
|||||||
<button class="calc-btn number" onclick="calcInput('B', 'fat32')">B</button>
|
<button class="calc-btn number" onclick="calcInput('B', 'fat32')">B</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('C', 'fat32')">C</button>
|
<button class="calc-btn number" onclick="calcInput('C', 'fat32')">C</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('D', 'fat32')">D</button>
|
<button class="calc-btn number" onclick="calcInput('D', 'fat32')">D</button>
|
||||||
<button class="calc-btn operation" onclick="calcOperation('<<', 'fat32')"><<</button>
|
<button class="calc-btn operation"
|
||||||
|
onclick="calcOperation('<<', 'fat32')"><<</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="calc-row">
|
<div class="calc-row">
|
||||||
<button class="calc-btn number" onclick="calcInput('E', 'fat32')">E</button>
|
<button class="calc-btn number" onclick="calcInput('E', 'fat32')">E</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('F', 'fat32')">F</button>
|
<button class="calc-btn number" onclick="calcInput('F', 'fat32')">F</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('7', 'fat32')">7</button>
|
<button class="calc-btn number" onclick="calcInput('7', 'fat32')">7</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('8', 'fat32')">8</button>
|
<button class="calc-btn number" onclick="calcInput('8', 'fat32')">8</button>
|
||||||
<button class="calc-btn operation" onclick="calcOperation('>>', 'fat32')">>></button>
|
<button class="calc-btn operation"
|
||||||
|
onclick="calcOperation('>>', 'fat32')">>></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="calc-row">
|
<div class="calc-row">
|
||||||
<button class="calc-btn operation" onclick="calcOperation('AND', 'fat32')">AND</button>
|
<button class="calc-btn operation"
|
||||||
<button class="calc-btn operation" onclick="calcOperation('OR', 'fat32')">OR</button>
|
onclick="calcOperation('AND', 'fat32')">AND</button>
|
||||||
|
<button class="calc-btn operation"
|
||||||
|
onclick="calcOperation('OR', 'fat32')">OR</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('9', 'fat32')">9</button>
|
<button class="calc-btn number" onclick="calcInput('9', 'fat32')">9</button>
|
||||||
<button class="calc-btn operation" onclick="calcOperation('/', 'fat32')">/</button>
|
<button class="calc-btn operation" onclick="calcOperation('/', 'fat32')">/</button>
|
||||||
<button class="calc-btn operation" onclick="calcOperation('MOD', 'fat32')">MOD</button>
|
<button class="calc-btn operation"
|
||||||
|
onclick="calcOperation('MOD', 'fat32')">MOD</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="calc-row">
|
<div class="calc-row">
|
||||||
<button class="calc-btn operation" onclick="calcOperation('XOR', 'fat32')">XOR</button>
|
<button class="calc-btn operation"
|
||||||
<button class="calc-btn operation" onclick="calcOperation('NOT', 'fat32')">NOT</button>
|
onclick="calcOperation('XOR', 'fat32')">XOR</button>
|
||||||
|
<button class="calc-btn operation"
|
||||||
|
onclick="calcOperation('NOT', 'fat32')">NOT</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('4', 'fat32')">4</button>
|
<button class="calc-btn number" onclick="calcInput('4', 'fat32')">4</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('5', 'fat32')">5</button>
|
<button class="calc-btn number" onclick="calcInput('5', 'fat32')">5</button>
|
||||||
<button class="calc-btn number" onclick="calcInput('6', 'fat32')">6</button>
|
<button class="calc-btn number" onclick="calcInput('6', 'fat32')">6</button>
|
||||||
@ -925,7 +976,8 @@
|
|||||||
<h2>Eingabeparameter</h2>
|
<h2>Eingabeparameter</h2>
|
||||||
<div class="input-grid">
|
<div class="input-grid">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="reservedSectors32">Anzahl reservierter Sektoren <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="reservedSectors32">Anzahl reservierter Sektoren <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="reservedSectors32" placeholder="0x20">
|
<input type="text" id="reservedSectors32" placeholder="0x20">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
@ -933,23 +985,28 @@
|
|||||||
<input type="text" id="numFATs32" placeholder="0x2">
|
<input type="text" id="numFATs32" placeholder="0x2">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="fatSizeBytes32">Größe einer FAT <span class="unit-indicator">(Bytes)</span>:</label>
|
<label for="fatSizeBytes32">Größe einer FAT <span
|
||||||
|
class="unit-indicator">(Bytes)</span>:</label>
|
||||||
<input type="text" id="fatSizeBytes32" placeholder="0x10000">
|
<input type="text" id="fatSizeBytes32" placeholder="0x10000">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="rootDirCluster32">Root Directory Cluster <span class="unit-indicator">(Nummer)</span>:</label>
|
<label for="rootDirCluster32">Root Directory Cluster <span
|
||||||
|
class="unit-indicator">(Nummer)</span>:</label>
|
||||||
<input type="text" id="rootDirCluster32" placeholder="0x2">
|
<input type="text" id="rootDirCluster32" placeholder="0x2">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="partitionSizeInSectors32">Größe Partition <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="partitionSizeInSectors32">Größe Partition <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="partitionSizeInSectors32" placeholder="0x20000">
|
<input type="text" id="partitionSizeInSectors32" placeholder="0x20000">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="clusterSizeSectors32">Größe eines Clusters <span class="unit-indicator">(Sektoren)</span>:</label>
|
<label for="clusterSizeSectors32">Größe eines Clusters <span
|
||||||
|
class="unit-indicator">(Sektoren)</span>:</label>
|
||||||
<input type="text" id="clusterSizeSectors32" placeholder="0x8">
|
<input type="text" id="clusterSizeSectors32" placeholder="0x8">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="clusterNumber32">Cluster Nummer für Position <span class="unit-indicator">(Nummer)</span>:</label>
|
<label for="clusterNumber32">Cluster Nummer für Position <span
|
||||||
|
class="unit-indicator">(Nummer)</span>:</label>
|
||||||
<input type="text" id="clusterNumber32" placeholder="0x2">
|
<input type="text" id="clusterNumber32" placeholder="0x2">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -959,66 +1016,82 @@
|
|||||||
<h2>Berechnete Werte</h2>
|
<h2>Berechnete Werte</h2>
|
||||||
<div id="results32">
|
<div id="results32">
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="reservedSectors × sectorSize + baseOffset">Beginn FAT-Bereich:</span>
|
<span class="result-label" data-formula="reservedSectors × sectorSize + baseOffset">Beginn
|
||||||
|
FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatStart32" data-result-formula="">-</span>
|
<span class="result-value" id="fatStart32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatStart32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatStart32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="numFATs × fatSizeBytes">Größe FAT-Bereich:</span>
|
<span class="result-label" data-formula="numFATs × fatSizeBytes">Größe FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatSize32" data-result-formula="">-</span>
|
<span class="result-value" id="fatSize32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatSize32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatSize32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="fatStart + fatSize">Ende FAT-Bereich:</span>
|
<span class="result-label" data-formula="fatStart + fatSize">Ende FAT-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="fatEnd32" data-result-formula="">-</span>
|
<span class="result-value" id="fatEnd32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('fatEnd32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('fatEnd32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="fatEnd">Beginn Daten-Bereich:</span>
|
<span class="result-label" data-formula="fatEnd">Beginn Daten-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="dataStart32" data-result-formula="">-</span>
|
<span class="result-value" id="dataStart32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('dataStart32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('dataStart32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="(partitionSizeInSectors × sectorSize) - (dataStart - baseOffset)">Größe Daten-Bereich:</span>
|
<span class="result-label"
|
||||||
|
data-formula="(partitionSizeInSectors × sectorSize) - (dataStart - baseOffset)">Größe
|
||||||
|
Daten-Bereich:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="dataSize32" data-result-formula="">-</span>
|
<span class="result-value" id="dataSize32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('dataSize32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('dataSize32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="sectorSize × clusterSizeSectors">Größe eines Clusters:</span>
|
<span class="result-label" data-formula="sectorSize × clusterSizeSectors">Größe eines
|
||||||
|
Clusters:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="clusterSize32" data-result-formula="">-</span>
|
<span class="result-value" id="clusterSize32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('clusterSize32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('clusterSize32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="dataSize ÷ clusterSize">Anzahl Cluster:</span>
|
<span class="result-label" data-formula="dataSize ÷ clusterSize">Anzahl Cluster:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="numClusters32" data-result-formula="">-</span>
|
<span class="result-value" id="numClusters32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('numClusters32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('numClusters32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="dataStart + (clusterNumber - 0x2) × clusterSize">Beginn Cluster:</span>
|
<span class="result-label"
|
||||||
|
data-formula="dataStart + (clusterNumber - 0x2) × clusterSize">Beginn Cluster:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="clusterStart32" data-result-formula="">-</span>
|
<span class="result-value" id="clusterStart32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('clusterStart32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('clusterStart32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-item">
|
<div class="result-item">
|
||||||
<span class="result-label" data-formula="dataStart + (rootDirCluster - 0x2) × clusterSize">Root Directory Position:</span>
|
<span class="result-label"
|
||||||
|
data-formula="dataStart + (rootDirCluster - 0x2) × clusterSize">Root Directory
|
||||||
|
Position:</span>
|
||||||
<div class="result-value-container">
|
<div class="result-value-container">
|
||||||
<span class="result-value" id="rootDirPos32" data-result-formula="">-</span>
|
<span class="result-value" id="rootDirPos32" data-result-formula="">-</span>
|
||||||
<button class="copy-btn" onclick="copyToClipboard('rootDirPos32')" title="Copy to clipboard">📋</button>
|
<button class="copy-btn" onclick="copyToClipboard('rootDirPos32')"
|
||||||
|
title="Copy to clipboard">📋</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1027,15 +1100,24 @@
|
|||||||
<div class="section formulas">
|
<div class="section formulas">
|
||||||
<h2>Berechnungsformeln FAT32</h2>
|
<h2>Berechnungsformeln FAT32</h2>
|
||||||
<div class="formula-box">
|
<div class="formula-box">
|
||||||
<div class="formula"><span class="calculated">Beginn FAT-Bereich</span> = Anzahl reservierter Sektoren × Größe eines Sektors + Base Offset</div>
|
<div class="formula"><span class="calculated">Beginn FAT-Bereich</span> = Anzahl reservierter
|
||||||
<div class="formula"><span class="calculated">Größe FAT-Bereich</span> = Anzahl FATs × Größe einer FAT</div>
|
Sektoren × Größe eines Sektors + Base Offset</div>
|
||||||
<div class="formula"><span class="calculated">Ende FAT-Bereich</span> = Beginn FAT-Bereich + Größe FAT-Bereich</div>
|
<div class="formula"><span class="calculated">Größe FAT-Bereich</span> = Anzahl FATs × Größe
|
||||||
<div class="formula"><span class="calculated">Beginn Daten-Bereich</span> = Ende FAT-Bereich (kein festes Root Directory)</div>
|
einer FAT</div>
|
||||||
<div class="formula"><span class="calculated">Größe Daten-Bereich</span> = (Größe Partition in Sektoren × Größe eines Sektors) - (Beginn Daten-Bereich - Base Offset)</div>
|
<div class="formula"><span class="calculated">Ende FAT-Bereich</span> = Beginn FAT-Bereich +
|
||||||
<div class="formula"><span class="calculated">Größe eines Clusters</span> = Größe eines Sektors × Größe eines Clusters in Sektoren</div>
|
Größe FAT-Bereich</div>
|
||||||
<div class="formula"><span class="calculated">Anzahl Cluster</span> = Größe Daten-Bereich ÷ Größe eines Clusters</div>
|
<div class="formula"><span class="calculated">Beginn Daten-Bereich</span> = Ende FAT-Bereich
|
||||||
<div class="formula"><span class="calculated">Beginn Cluster</span> = Beginn Daten-Bereich + (Cluster - 0x2) × Größe eines Clusters</div>
|
(kein festes Root Directory)</div>
|
||||||
<div class="formula"><span class="calculated">Root Directory Position</span> = Beginn Daten-Bereich + (Root Directory Cluster - 0x2) × Größe eines Clusters</div>
|
<div class="formula"><span class="calculated">Größe Daten-Bereich</span> = (Größe Partition in
|
||||||
|
Sektoren × Größe eines Sektors) - (Beginn Daten-Bereich - Base Offset)</div>
|
||||||
|
<div class="formula"><span class="calculated">Größe eines Clusters</span> = Größe eines Sektors
|
||||||
|
× Größe eines Clusters in Sektoren</div>
|
||||||
|
<div class="formula"><span class="calculated">Anzahl Cluster</span> = Größe Daten-Bereich ÷
|
||||||
|
Größe eines Clusters</div>
|
||||||
|
<div class="formula"><span class="calculated">Beginn Cluster</span> = Beginn Daten-Bereich +
|
||||||
|
(Cluster - 0x2) × Größe eines Clusters</div>
|
||||||
|
<div class="formula"><span class="calculated">Root Directory Position</span> = Beginn
|
||||||
|
Daten-Bereich + (Root Directory Cluster - 0x2) × Größe eines Clusters</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1325,7 +1407,7 @@
|
|||||||
const filesystems = {
|
const filesystems = {
|
||||||
fat1216: {
|
fat1216: {
|
||||||
requiredFields: ['reservedSectors1216', 'numFATs1216', 'fatSizeBytes1216', 'maxRootEntries1216', 'partitionSizeInSectors1216', 'clusterSizeSectors1216'],
|
requiredFields: ['reservedSectors1216', 'numFATs1216', 'fatSizeBytes1216', 'maxRootEntries1216', 'partitionSizeInSectors1216', 'clusterSizeSectors1216'],
|
||||||
calculate: function() {
|
calculate: function () {
|
||||||
const baseOffset = parseHex(document.getElementById('baseOffset1216').value);
|
const baseOffset = parseHex(document.getElementById('baseOffset1216').value);
|
||||||
const sectorSize = parseHex(document.getElementById('sectorSize1216').value);
|
const sectorSize = parseHex(document.getElementById('sectorSize1216').value);
|
||||||
const reservedSectors = parseHex(document.getElementById('reservedSectors1216').value);
|
const reservedSectors = parseHex(document.getElementById('reservedSectors1216').value);
|
||||||
@ -1339,6 +1421,7 @@
|
|||||||
const fatStart = reservedSectors * sectorSize + baseOffset;
|
const fatStart = reservedSectors * sectorSize + baseOffset;
|
||||||
const fatSize = numFATs * fatSizeBytes;
|
const fatSize = numFATs * fatSizeBytes;
|
||||||
const fatEnd = fatStart + fatSize;
|
const fatEnd = fatStart + fatSize;
|
||||||
|
const rootDirStart = fatEnd;
|
||||||
const rootDirSize = maxRootEntries * 0x20;
|
const rootDirSize = maxRootEntries * 0x20;
|
||||||
const dataStart = fatEnd + rootDirSize;
|
const dataStart = fatEnd + rootDirSize;
|
||||||
const dataSize = partitionSizeInSectors * sectorSize - (dataStart - baseOffset);
|
const dataSize = partitionSizeInSectors * sectorSize - (dataStart - baseOffset);
|
||||||
@ -1346,11 +1429,11 @@
|
|||||||
const numClusters = clusterSize > 0 ? Math.floor(dataSize / clusterSize) : 0;
|
const numClusters = clusterSize > 0 ? Math.floor(dataSize / clusterSize) : 0;
|
||||||
const clusterStart = dataStart + (clusterNumber - 0x2) * clusterSize;
|
const clusterStart = dataStart + (clusterNumber - 0x2) * clusterSize;
|
||||||
|
|
||||||
// Store calculation formulas with actual values
|
|
||||||
const calculations = {
|
const calculations = {
|
||||||
fatStart: `${reservedSectors.toString(16)} × ${sectorSize.toString(16)} + ${baseOffset.toString(16)} = ${fatStart.toString(16)}`,
|
fatStart: `${reservedSectors.toString(16)} × ${sectorSize.toString(16)} + ${baseOffset.toString(16)} = ${fatStart.toString(16)}`,
|
||||||
fatSize: `${numFATs.toString(16)} × ${fatSizeBytes.toString(16)} = ${fatSize.toString(16)}`,
|
fatSize: `${numFATs.toString(16)} × ${fatSizeBytes.toString(16)} = ${fatSize.toString(16)}`,
|
||||||
fatEnd: `${fatStart.toString(16)} + ${fatSize.toString(16)} = ${fatEnd.toString(16)}`,
|
fatEnd: `${fatStart.toString(16)} + ${fatSize.toString(16)} = ${fatEnd.toString(16)}`,
|
||||||
|
rootDirStart: `${fatEnd.toString(16)}`,
|
||||||
rootDirSize: `${maxRootEntries.toString(16)} × 0x20 = ${rootDirSize.toString(16)}`,
|
rootDirSize: `${maxRootEntries.toString(16)} × 0x20 = ${rootDirSize.toString(16)}`,
|
||||||
dataStart: `${fatEnd.toString(16)} + ${rootDirSize.toString(16)} = ${dataStart.toString(16)}`,
|
dataStart: `${fatEnd.toString(16)} + ${rootDirSize.toString(16)} = ${dataStart.toString(16)}`,
|
||||||
dataSize: `(${partitionSizeInSectors.toString(16)} × ${sectorSize.toString(16)}) - (${dataStart.toString(16)} - ${baseOffset.toString(16)}) = ${dataSize.toString(16)}`,
|
dataSize: `(${partitionSizeInSectors.toString(16)} × ${sectorSize.toString(16)}) - (${dataStart.toString(16)} - ${baseOffset.toString(16)}) = ${dataSize.toString(16)}`,
|
||||||
@ -1360,14 +1443,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fatStart, fatSize, fatEnd, rootDirSize, dataStart, dataSize,
|
fatStart, fatSize, fatEnd, rootDirStart, rootDirSize, dataStart, dataSize,
|
||||||
clusterSize, numClusters, clusterStart, calculations
|
clusterSize, numClusters, clusterStart, calculations
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fat32: {
|
fat32: {
|
||||||
requiredFields: ['reservedSectors32', 'numFATs32', 'fatSizeBytes32', 'rootDirCluster32', 'partitionSizeInSectors32', 'clusterSizeSectors32'],
|
requiredFields: ['reservedSectors32', 'numFATs32', 'fatSizeBytes32', 'rootDirCluster32', 'partitionSizeInSectors32', 'clusterSizeSectors32'],
|
||||||
calculate: function() {
|
calculate: function () {
|
||||||
const baseOffset = parseHex(document.getElementById('baseOffset32').value);
|
const baseOffset = parseHex(document.getElementById('baseOffset32').value);
|
||||||
const sectorSize = parseHex(document.getElementById('sectorSize32').value);
|
const sectorSize = parseHex(document.getElementById('sectorSize32').value);
|
||||||
const reservedSectors = parseHex(document.getElementById('reservedSectors32').value);
|
const reservedSectors = parseHex(document.getElementById('reservedSectors32').value);
|
||||||
@ -1478,6 +1561,7 @@
|
|||||||
'fatStart1216': ['fatStart', 'fatStart'],
|
'fatStart1216': ['fatStart', 'fatStart'],
|
||||||
'fatSize1216': ['fatSize', 'fatSize'],
|
'fatSize1216': ['fatSize', 'fatSize'],
|
||||||
'fatEnd1216': ['fatEnd', 'fatEnd'],
|
'fatEnd1216': ['fatEnd', 'fatEnd'],
|
||||||
|
'rootDirStart1216': ['rootDirStart', 'rootDirStart'],
|
||||||
'rootDirSize1216': ['rootDirSize', 'rootDirSize'],
|
'rootDirSize1216': ['rootDirSize', 'rootDirSize'],
|
||||||
'dataStart1216': ['dataStart', 'dataStart'],
|
'dataStart1216': ['dataStart', 'dataStart'],
|
||||||
'dataSize1216': ['dataSize', 'dataSize'],
|
'dataSize1216': ['dataSize', 'dataSize'],
|
||||||
@ -1485,7 +1569,6 @@
|
|||||||
'numClusters1216': ['numClusters', 'numClusters'],
|
'numClusters1216': ['numClusters', 'numClusters'],
|
||||||
'clusterStart1216': ['clusterStart', 'clusterStart']
|
'clusterStart1216': ['clusterStart', 'clusterStart']
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.entries(mapping).forEach(([elementId, [resultKey, calcKey]]) => {
|
Object.entries(mapping).forEach(([elementId, [resultKey, calcKey]]) => {
|
||||||
const element = document.getElementById(elementId);
|
const element = document.getElementById(elementId);
|
||||||
element.innerHTML = formatHex(results[resultKey]);
|
element.innerHTML = formatHex(results[resultKey]);
|
||||||
@ -1518,18 +1601,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add event listeners
|
// Add event listeners
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
// Initialize calculator displays
|
// Initialize calculator displays
|
||||||
updateCalculatorDisplay('fat1216');
|
updateCalculatorDisplay('fat1216');
|
||||||
updateCalculatorDisplay('fat32');
|
updateCalculatorDisplay('fat32');
|
||||||
|
|
||||||
// Real-time calculation
|
// Real-time calculation for required fields
|
||||||
Object.keys(filesystems).forEach(fsType => {
|
Object.keys(filesystems).forEach(fsType => {
|
||||||
const fs = filesystems[fsType];
|
const fs = filesystems[fsType];
|
||||||
fs.requiredFields.forEach(fieldId => {
|
fs.requiredFields.forEach(fieldId => {
|
||||||
const input = document.getElementById(fieldId);
|
const input = document.getElementById(fieldId);
|
||||||
if (input) {
|
if (input) {
|
||||||
input.addEventListener('input', function() {
|
input.addEventListener('input', function () {
|
||||||
const allFilled = fs.requiredFields.every(id =>
|
const allFilled = fs.requiredFields.every(id =>
|
||||||
document.getElementById(id).value.trim() !== ''
|
document.getElementById(id).value.trim() !== ''
|
||||||
);
|
);
|
||||||
@ -1541,11 +1624,42 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add separate listeners for cluster number fields (optional but affect results)
|
// Real-time calculation for constants fields
|
||||||
|
['baseOffset1216', 'sectorSize1216'].forEach(fieldId => {
|
||||||
|
const input = document.getElementById(fieldId);
|
||||||
|
if (input) {
|
||||||
|
input.addEventListener('input', function () {
|
||||||
|
const fs = filesystems.fat1216;
|
||||||
|
const allFilled = fs.requiredFields.every(id =>
|
||||||
|
document.getElementById(id).value.trim() !== ''
|
||||||
|
);
|
||||||
|
if (allFilled) {
|
||||||
|
calculate('fat1216');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
['baseOffset32', 'sectorSize32'].forEach(fieldId => {
|
||||||
|
const input = document.getElementById(fieldId);
|
||||||
|
if (input) {
|
||||||
|
input.addEventListener('input', function () {
|
||||||
|
const fs = filesystems.fat32;
|
||||||
|
const allFilled = fs.requiredFields.every(id =>
|
||||||
|
document.getElementById(id).value.trim() !== ''
|
||||||
|
);
|
||||||
|
if (allFilled) {
|
||||||
|
calculate('fat32');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add separate listeners for cluster number fields
|
||||||
['clusterNumber1216', 'clusterNumber32'].forEach(fieldId => {
|
['clusterNumber1216', 'clusterNumber32'].forEach(fieldId => {
|
||||||
const input = document.getElementById(fieldId);
|
const input = document.getElementById(fieldId);
|
||||||
if (input) {
|
if (input) {
|
||||||
input.addEventListener('input', function() {
|
input.addEventListener('input', function () {
|
||||||
const fsType = fieldId.includes('32') ? 'fat32' : 'fat1216';
|
const fsType = fieldId.includes('32') ? 'fat32' : 'fat1216';
|
||||||
const fs = filesystems[fsType];
|
const fs = filesystems[fsType];
|
||||||
const allFilled = fs.requiredFields.every(id =>
|
const allFilled = fs.requiredFields.every(id =>
|
||||||
@ -1558,8 +1672,61 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Keyboard input support for calculator
|
||||||
|
document.addEventListener('keydown', function (e) {
|
||||||
|
// Only handle keyboard input when not in an input field
|
||||||
|
if (e.target.tagName === 'INPUT') return;
|
||||||
|
|
||||||
|
const currentTab = getCurrentTab();
|
||||||
|
const key = e.key.toUpperCase();
|
||||||
|
|
||||||
|
// Handle hex digits
|
||||||
|
if (/^[0-9A-F]$/.test(key)) {
|
||||||
|
e.preventDefault();
|
||||||
|
calcInput(key, currentTab);
|
||||||
|
}
|
||||||
|
// Handle operations
|
||||||
|
else if (key === '+') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('+', currentTab);
|
||||||
|
}
|
||||||
|
else if (key === '-') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('-', currentTab);
|
||||||
|
}
|
||||||
|
else if (key === '*') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('*', currentTab);
|
||||||
|
}
|
||||||
|
else if (key === '/') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('/', currentTab);
|
||||||
|
}
|
||||||
|
else if (key === 'ENTER' || key === '=') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcEquals(currentTab);
|
||||||
|
}
|
||||||
|
else if (key === 'ESCAPE' || key === 'C') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcClear(currentTab);
|
||||||
|
}
|
||||||
|
else if (key === 'BACKSPACE') {
|
||||||
|
e.preventDefault();
|
||||||
|
calcBackspace(currentTab);
|
||||||
|
}
|
||||||
|
// Handle shift operations
|
||||||
|
else if (e.shiftKey && key === ',') { // < key
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('<<', currentTab);
|
||||||
|
}
|
||||||
|
else if (e.shiftKey && key === '.') { // > key
|
||||||
|
e.preventDefault();
|
||||||
|
calcOperation('>>', currentTab);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Tooltip event listeners
|
// Tooltip event listeners
|
||||||
document.addEventListener('mouseover', function(e) {
|
document.addEventListener('mouseover', function (e) {
|
||||||
if (e.target.classList.contains('result-label')) {
|
if (e.target.classList.contains('result-label')) {
|
||||||
const formula = e.target.getAttribute('data-formula');
|
const formula = e.target.getAttribute('data-formula');
|
||||||
if (formula) {
|
if (formula) {
|
||||||
@ -1573,7 +1740,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('mouseout', function(e) {
|
document.addEventListener('mouseout', function (e) {
|
||||||
if (e.target.classList.contains('result-label') || e.target.classList.contains('result-value')) {
|
if (e.target.classList.contains('result-label') || e.target.classList.contains('result-value')) {
|
||||||
hideTooltip();
|
hideTooltip();
|
||||||
}
|
}
|
||||||
@ -1584,4 +1751,5 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user