_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

AF

FILE INFORMATION

FILENAME(S): AF <p><strong>FILE TYPE(S):</strong> PRG</p> <p><strong>FILE SIZE:</strong> 2.1K</p> <p><strong>FIRST SEEN:</strong> 2025-11-30 15:51:26</p> <p><strong>APPEARS ON:</strong> 11 disk(s)</p> </div> <div class="info-group"> <h3>FILE HASH</h3> <p style="font-size: 10px; word-break: break-all; font-family: monospace;"> 0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc </p> </div> </div> </div> <div class="file-list"> <h2>FOUND ON DISKS (11 DISKS)</h2> <table class="file-table"> <thead> <tr> <th>DISK TITLE</th> <th>FILENAME</th> <th>FILE TYPE</th> <th>COLLECTION</th> <th>TRACK</th> <th>SECTOR</th> <th>ACTIONS</th> </tr> </thead> <tbody> <tr> <td> <a href="disk.php?hash=833285ac16d369a40829a8c691e840782457d712804e1453899d202e62e4d53b" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> GAME </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Belgium </td> <td>13</td> <td>7</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=19277" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=c746866c61520fce711c5a87cebd9ec15f27dc2547d85d1185593e8da8626422" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> SSD OF COSMOS </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> BrainSkull, Sammlung </td> <td>7</td> <td>5</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=19904" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=61478ed320da36b138b14e65eb8645ee3c55e2cc70e4f0882cb9415a6361e804" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> RED STORM S 1 </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> BrainSkull, Sammlung </td> <td>13</td> <td>16</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=20136" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=bacf69e413b19a65a566283188b2ac57eca3970c92085dbdd586b8d56618cb2e" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> HOTLINE </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> High Voltage Complete C64 Collection, Markus Merz </td> <td>13</td> <td>7</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=27468" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=c2704936b4dc83cae041a2e008e7665d3e51688234c2976fd7df1872f56d9a0f" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> RED STORM S 1 </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Jonathan </td> <td>13</td> <td>16</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=31119" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=587d849b2b9447a3a8aeddb1183d9712c4aa63338484eb645dcd6daa1b251af7" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> 1988 FFP </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Jonathan </td> <td>13</td> <td>7</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=31120" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=e0004307815c44c424a05d0df702708ea368bef87ba12a78534b285070333a70" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> ARIOLA SOFTY S </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Jonathan </td> <td>13</td> <td>7</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=31121" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=5f0e8a1039e4312d0d2888220e53ce41becad08625140460b2dbd01cd795cb85" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> THE SOFT DUO </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Sailor, Pbv </td> <td>13</td> <td>7</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=35341" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=bf503323574965731da4bd77450e74ea309ed2c3d0d8312a7d7039bdd5fc5d69" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> ORION WE DON T </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Curtcool, CRL </td> <td>21</td> <td>2</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=39561" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=6182834a776c16595b17a5de8d6f992b2afa8dc1a32ce4b0471ae7e7e78c0bb7" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> DOWNLOADSTUFF </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Curtcool, Hans Curt </td> <td>9</td> <td>19</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=40648" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> <tr> <td> <a href="disk.php?hash=a9ef3493d4218075b428e85d667db5611da8a69d8eb1bbcce666e0ed00bae7e5" style="color: #88aaff; text-decoration: none;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';"> DOWNLOADSTUFF </a> </td> <td>AF<TITLE</td> <td>PRG</td> <td> Curtcool, Hans Curt </td> <td>9</td> <td>19</td> <td> <a href="download_file.php?hash=0fe8994a5c211497989d5a6a00142ee6ed9a48f11dc20827206f8f914c43f9bc&disk=40678" style="color: #88aaff; text-decoration: none; font-size: 12px;" onmouseover="this.style.color='#ffffff'; this.style.textDecoration='underline';" onmouseout="this.style.color='#88aaff'; this.style.textDecoration='none';">DOWNLOAD FILE</a> </td> </tr> </tbody> </table> </div> <div class="welcome-message"> <h2>FILE CONTENT & ANALYSIS</h2> <!-- Tab Navigation --> <div class="tab-navigation" style="margin: 15px 0 5px 0;"> <button class="tab-btn active" onclick="switchTab(event, 'analysis-tab')" data-tab="analysis">ANALYSIS</button> <button class="tab-btn" onclick="switchTab(event, 'hex-tab')" data-tab="hex">HEX DUMP</button> <button class="tab-btn" onclick="switchTab(event, 'petscii-tab')" data-tab="petscii">PETSCII DUMP</button> <button class="tab-btn" onclick="switchTab(event, 'image-tab')" data-tab="image">IMAGE</button> </div> <!-- Analysis Tab --> <div id="analysis-tab" class="tab-content active dump-box" style="font-family: monospace; font-size:12px; white-space:normal; line-height:1.4;"> <p></p> </div> <!-- Hex Dump Tab --> <div id="hex-tab" class="tab-content dump-box"> <pre>00000000: 00 80 06 F4 0F 96 08 02 25 10 1D 20 03 02 02 02 |........%.. ....| 00000010: 0C 0B 06 22 01 06 FF 04 06 E0 04 06 60 20 61 06 |..."........` a.| 00000020: 60 20 61 06 60 20 61 06 60 20 61 06 60 20 61 06 |` a.` a.` a.` a.| 00000030: 60 20 61 06 60 20 61 06 60 20 61 06 60 20 61 06 |` a.` a.` a.` a.| 00000040: 60 20 61 06 60 20 61 06 60 20 61 06 60 20 61 06 |` a.` a.` a.` a.| 00000050: 60 20 61 06 60 20 61 06 60 20 61 06 02 FF FF 4E |` a.` a.` a....N| 00000060: 00 00 07 00 11 00 1D 00 23 06 00 68 20 00 00 20 |........#..h .. | 00000070: 00 00 20 00 00 20 00 00 20 00 00 22 00 00 22 00 |.. .. .. .."..".| 00000080: 00 22 00 05 55 40 1D DD D0 3F FF F0 35 55 F0 37 |."..U@...?..5U.7| 00000090: FF F0 3A AA F0 3E AA B0 3F AA A0 3F FF F0 3F FF |..:..>..?..?..?.| 000000A0: F0 3F FF F0 06 00 02 10 00 20 00 00 20 00 00 20 |.?....... .. .. | 000000B0: 00 00 20 00 00 20 00 00 22 00 00 22 00 00 22 00 |.. .. ..".."..".| 000000C0: 01 55 00 0D DD C0 0F FF C0 0D 55 C0 0D FF C0 0E |.U........U.....| 000000D0: AA C0 0F AA 80 0F EA 80 0F FF C0 0F FF C0 0F FF |................| 000000E0: C0 06 00 02 10 00 20 00 00 20 00 00 20 00 00 20 |...... .. .. .. | 000000F0: 00 00 20 00 00 20 00 00 20 00 00 20 00 00 54 00 |.. .. .. .. ..T.| 00000100: 01 DD 00 03 FF 00 07 55 50 0F FF F0 03 AA 00 03 |.......UP.......| 00000110: EA 00 03 FA 00 03 FF 00 03 FF 00 03 FF 06 00 03 |................| 00000120: 10 00 20 00 00 20 00 00 20 00 00 20 00 00 20 00 |.. .. .. .. .. .| 00000130: 00 20 00 00 20 00 00 20 00 00 10 00 00 74 00 00 |. .. .. .....t..| 00000140: FC 00 15 FD 50 3F FF F0 00 B8 00 00 FC 00 00 FC |....P?..........| 00000150: 00 00 FC 00 00 FC 00 00 FC 06 00 03 10 06 00 12 |................| 00000160: 20 00 00 20 00 02 20 00 02 20 00 05 54 00 3F FD | .. .. .. ..T.?.| 00000170: 00 FF FF 40 EB FF D0 FF FF F0 FF FF F4 FF FF FD |...@............| 00000180: FF FF FF 06 00 02 10 06 00 00 55 40 01 DD D4 03 |..........U@....| 00000190: FF FF 02 BB A8 00 AA 80 00 2A 80 00 3A 80 40 FE |.........*..:.@.| 000001A0: 80 5D 7F C0 F7 D7 C4 7F 7F C8 FF F5 6C FB FA 88 |.]..........l...| 000001B0: BF BE 8C EA EF 80 AA BF C0 80 0F C0 00 0F C0 06 |................| 000001C0: 00 02 10 06 00 15 08 00 00 08 06 00 1E 11 06 00 |................| 000001D0: 17 05 55 5C 3F FF F8 0A AA AC 06 00 17 10 06 00 |..U\?...........| 000001E0: 0F 05 55 01 55 55 05 D5 D5 1D 5D 5D 37 F7 F7 7F |..U.UU....]]7...| 000001F0: 7F 7F FF FF FF FB FB FB BF BF BF AA EA EA 2A AA |..............*.| 00000200: AA 2A AA AA 0A AA AA 02 AA AA 00 0A AA 10 06 00 |.*..............| 00000210: 13 01 00 00 05 00 00 1D 00 00 37 00 00 7F 00 00 |..........7.....| 00000220: FF 00 00 FB 00 00 BF 00 00 AA 00 00 2A 00 00 2A |............*..*| 00000230: 00 00 0A 00 00 02 00 00 00 10 00 00 2A 00 02 AA |............*...| 00000240: 00 0A AA 00 2A AA 00 AA AA 02 AA AA 02 AA AA 0A |....*...........| 00000250: AA AA 0A AA AA 2A AA AA 2A AA AA 2A 06 AA 19 11 |.....*..*..*....| 00000260: 06 AA 17 2A AA AA 2A AA AA 2A AA AA 0A AA AA 0A |...*..*..*......| 00000270: AA AA 02 AA AA 02 AA AA 00 AA AA 00 2A AA 00 0A |............*...| 00000280: AA 00 02 AA 00 00 2A 11 06 00 0E 06 55 02 D5 D5 |......*.....U...| 00000290: D5 5D 5D 5D F7 F7 F7 7F 7F 7F FF FF FF FB FB FB |.]]]............| 000002A0: BF BF BF EA EA EA 06 AA 0B 10 06 00 0E 05 06 55 |...............U| 000002B0: 01 D5 D5 D5 5D 5D 5D F7 F7 F7 7F 7F 7F FF FF FF |....]]].........| 000002C0: FB FB FB BF BF BF EA EA EA 06 AA 08 0A AA AA 10 |................| 000002D0: 06 00 13 01 00 00 05 00 00 1D 00 00 37 00 00 7F |............7...| 000002E0: 00 00 FF 00 00 FB 00 00 BF 00 00 AA 00 00 2A 00 |..............*.| 000002F0: 00 2A 00 00 0A 00 00 02 00 00 00 10 06 00 0E 06 |.*..............| 00000300: 55 02 D5 D5 D5 5D 5D 5D F7 F7 F7 7F 7F 7F FF FF |U....]]]........| 00000310: FF FB FB FB BF BF BF EA EA EA 06 AA 0B 10 06 00 |................| 00000320: 0E 55 54 00 55 55 55 D5 D5 D5 5D 5D 5D F7 F7 F7 |.UT.UUU...]]]...| 00000330: 7F 7F 7F FF FF FF FB FB FB BF BF BF EA EA EA 06 |................| 00000340: AA 09 A8 00 10 06 00 0E 05 55 54 55 55 55 D5 D5 |.........UTUUU..| 00000350: D5 5D 5D 5D F7 F7 F7 7F 7F 7F FF FF FF FB FB FB |.]]]............| 00000360: BF BF BF EA EA EA 06 AA 08 0A A8 00 10 06 00 09 |................| 00000370: 15 00 00 55 40 01 75 70 07 57 54 0D FD FC 1F DF |...U@.up.WT.....| 00000380: DF 3F FF FF 3E FE FE 2F EF EF 2A BA BA 0A AA A8 |.?..>../..*.....| 00000390: 0A AA A8 02 AA A0 00 AA 80 00 2A 06 00 03 10 06 |..........*.....| 000003A0: 00 0E 06 55 02 D5 D5 D5 5D 5D 5D F7 F7 F7 7F 7F |...U....]]].....| 000003B0: 7F FF FF FF FB FB FB BF BF BF EA EA EA 06 AA 09 |................| 000003C0: 80 00 10 06 00 11 55 54 00 D5 D5 D5 5D 5D 5D F7 |......UT....]]].| 000003D0: F7 F7 7F 7F 7F FF FF FF FB FB FB BF BF BF EA EA |................| 000003E0: EA 06 AA 04 A0 AA 06 00 01 10 06 00 11 55 00 00 |.............U..| 000003F0: D5 D0 00 5D 5D 5C F7 F7 F7 7F 7F 6E FF FE FF FB |...]]\.....n....| 00000400: FB BB BF BA AA EA 06 AA 00 A8 AA AA 80 AA 00 00 |................| 00000410: 80 06 00 01 10 06 00 0E 55 40 00 55 55 40 D5 D5 |........U@.UU@..| 00000420: D5 5D 5D 5D F7 F7 F7 7F 7F 7F FF FF FF FB FB FB |.]]]............| 00000430: BF BF BF EA EA EA 06 AA 04 80 AA 80 06 00 00 10 |................| 00000440: 06 00 13 01 D0 00 01 5D 5C 01 F7 F7 F5 7F 7F 7B |.......]\......{| 00000450: FF FF F9 FB FB FE BF BF BE EA EA EB AA AA 83 AA |................| 00000460: 80 03 06 00 05 10 06 00 14 01 00 00 01 40 00 FF |.............@..| 00000470: C0 00 7B F0 00 FB 50 00 BE A0 00 AA 80 00 83 80 |..{...P.........| 00000480: 00 03 06 00 0A 10 06 00 0F 01 50 00 01 50 40 01 |..........P..P@.| 00000490: 50 5D 41 50 F7 F5 51 7F 7B FF FF F9 59 FB FE AA |P]AP..Q.{...Y...| 000004A0: BF BE A2 EA EB A0 AA 83 A0 80 03 E0 00 03 F0 06 |................| 000004B0: 00 02 10 06 00 14 40 00 00 40 00 00 50 00 00 FC |......@..@..P...| 000004C0: 00 00 58 00 00 A8 00 00 A0 00 00 80 00 00 80 06 |..X.............| 000004D0: 00 0A 10 A8 00 00 AA 80 00 AA A0 00 AA A8 00 AA |................| 000004E0: AA 00 AA AA 80 AA AA 80 AA AA A0 AA AA A0 AA AA |................| 000004F0: A8 AA AA A8 AA AA A8 06 AA 17 11 06 AA 19 A8 AA |................| 00000500: AA A8 AA AA A8 AA AA A0 AA AA A0 AA AA 80 AA AA |................| 00000510: 80 AA AA 00 AA A8 00 AA A0 00 AA 80 00 A8 00 00 |................| 00000520: 11 43 01 27 00 FF 00 04 06 00 01 5B 01 27 00 FF |.C.'.......[.'..| 00000530: 00 04 00 00 00 77 00 8B 01 27 00 FF 00 04 00 00 |.....w...'......| 00000540: 00 EF 00 A3 01 27 00 FF 00 04 00 00 00 69 01 43 |.....'.......i.C| 00000550: 01 1A 00 FF 00 04 00 00 00 E3 01 45 01 02 00 FF |...........E....| 00000560: 00 04 00 00 00 34 02 73 01 27 00 FF 00 04 00 00 |.....4.s.'......| 00000570: 00 6E 02 BB 01 27 00 FF 00 04 00 00 00 C0 02 32 |.n...'.........2| 00000580: 34 30 28 49 3C 29 35 35 28 49 5F 29 31 33 30 28 |40(I<)55(I_)130(| 00000590: 49 3C 3C 29 5B 37 35 2C 32 30 30 5D 31 31 30 28 |I<<)[75,200]110(| 000005A0: 49 5E 29 31 35 49 31 30 30 28 49 3C 5F 3C 29 5B |I^)15I100(I<_<)[| 000005B0: 33 32 33 2C 31 31 35 5D 31 32 30 28 49 3C 3C 29 |323,115]120(I<<)| 000005C0: 4A 5B 2D 32 30 30 2C 30 5D 35 4A 5B 2B 32 33 33 |J[-200,0]5J[+233| 000005D0: 2C 2D 31 31 5D 32 4B 5B 2D 32 33 33 2C 2B 31 31 |,-11]2K[-233,+11| 000005E0: 5D 31 35 4B 5B 2B 32 30 30 2C 30 5D 4A 31 35 30 |]15K[+200,0]J150| 000005F0: 28 49 3C 3C 29 00 32 34 30 28 4D 3C 29 35 35 28 |(I<<).240(M<)55(| 00000600: 4D 5F 29 31 33 30 28 4D 3C 3C 29 5B 39 39 2C 32 |M_)130(M<<)[99,2| 00000610: 30 30 5D 31 31 30 28 4D 5E 29 31 35 4D 31 30 30 |00]110(M^)15M100| 00000620: 28 4D 5F 3C 3C 29 5B 33 34 37 2C 31 31 35 5D 31 |(M_<<)[347,115]1| 00000630: 32 30 28 4D 3C 3C 29 4E 4F 5B 2D 32 30 30 2C 30 |20(M<<)NO[-200,0| 00000640: 5D 34 4E 5B 2B 32 30 39 2C 2B 31 30 5D 32 4C 5B |]4N[+209,+10]2L[| 00000650: 2D 32 30 39 2C 2D 31 30 5D 31 35 4E 5B 2B 32 30 |-209,-10]15N[+20| 00000660: 30 2C 30 5D 4E 31 35 30 28 4D 3C 3C 29 00 32 34 |0,0]N150(M<<).24| 00000670: 30 28 54 3C 29 35 35 28 54 5F 29 31 33 30 28 54 |0(T<)55(T_)130(T| 00000680: 3C 3C 29 5B 31 34 37 2C 32 30 30 5D 31 31 30 28 |<<)[147,200]110(| 00000690: 54 5E 29 31 35 54 31 30 30 28 54 3C 5F 3C 29 5B |T^)15T100(T<_<)[| 000006A0: 33 39 35 2C 31 31 35 5D 31 32 30 28 54 3C 3C 29 |395,115]120(T<<)| 000006B0: 55 56 5B 2D 32 30 30 2C 30 5D 34 56 5B 2B 31 38 |UV[-200,0]4V[+18| 000006C0: 35 2C 2D 31 31 5D 32 62 5B 2D 31 38 35 2C 2B 31 |5,-11]2b[-185,+1| 000006D0: 31 5D 31 34 56 5B 2B 32 30 30 2C 30 5D 56 55 31 |1]14V[+200,0]VU1| 000006E0: 35 30 28 54 3C 3C 29 00 32 34 30 28 57 3C 29 35 |50(T<<).240(W<)5| 000006F0: 35 28 57 5F 29 31 33 30 28 57 3C 3C 29 5B 31 37 |5(W_)130(W<<)[17| 00000700: 31 2C 32 30 30 5D 31 31 30 28 57 5E 29 31 35 57 |1,200]110(W^)15W| 00000710: 31 30 30 28 57 3C 5F 3C 29 5B 34 31 39 2C 31 31 |100(W<_<)[419,11| 00000720: 35 5D 31 32 30 28 57 3C 3C 29 58 59 5B 2D 32 30 |5]120(W<<)XY[-20| 00000730: 30 2C 30 5D 34 59 5B 2B 31 36 31 2C 2B 31 30 5D |0,0]4Y[+161,+10]| 00000740: 32 63 5B 2D 31 36 31 2C 2D 31 30 5D 31 34 59 5B |2c[-161,-10]14Y[| 00000750: 2B 32 30 30 2C 30 5D 59 58 31 35 30 28 57 3C 3C |+200,0]YX150(W<<| 00000760: 29 00 32 34 30 28 45 3C 29 35 35 28 45 5F 29 31 |).240(E<)55(E_)1| 00000770: 33 30 28 45 3C 3C 29 5B 39 35 2C 31 38 37 5D 31 |30(E<<)[95,187]1| 00000780: 31 30 28 41 5E 29 31 35 41 31 30 30 28 41 3C 5F |10(A^)15A100(A<_| 00000790: 3C 29 5B 33 34 33 2C 31 30 32 5D 31 32 30 28 41 |<)[343,102]120(A| 000007A0: 3C 3C 29 42 43 32 30 44 43 42 31 35 30 28 41 3C |<<)BC20DCB150(A<| 000007B0: 3C 29 00 31 32 30 48 32 32 30 48 32 30 30 48 5B |<).120H220H200H[| 000007C0: 35 37 2C 39 34 5D 34 35 28 48 06 3C 06 29 31 39 |57,94]45(H.<.)19| 000007D0: 30 48 5B 31 32 35 2C 31 31 35 5D 32 47 5B 2D 32 |0H[125,115]2G[-2| 000007E0: 30 30 2C 30 5D 00 32 34 30 28 50 3C 29 35 35 28 |00,0].240(P<)55(| 000007F0: 50 5F 29 31 33 30 28 50 3C 3C 29 5B 31 32 33 2C |P_)130(P<<)[123,| 00000800: 32 30 30 5D 31 31 30 28 50 5E 29 31 35 50 31 30 |200]110(P^)15P10| 00000810: 30 28 50 3C 5F 3C 29 5B 33 37 31 2C 31 31 35 5D |0(P<_<)[371,115]| 00000820: 31 32 30 28 50 3C 3C 29 51 52 32 30 53 52 51 31 |120(P<<)QR20SRQ1| 00000830: 35 30 28 50 3C 3C 29 00 32 34 30 28 46 3C 29 35 |50(P<<).240(F<)5| 00000840: 35 28 46 5F 29 31 33 30 28 46 3C 3C 29 5B 31 39 |5(F_)130(F<<)[19| 00000850: 35 2C 32 30 30 5D 31 31 30 28 5A 5E 29 31 35 5A |5,200]110(Z^)15Z| 00000860: 31 30 30 28 5A 5F 3C 3C 29 5B 34 34 33 2C 31 31 |100(Z_<<)[443,11| 00000870: 35 5D 31 32 30 28 5A 3C 3C 29 61 5B 2D 32 35 30 |5]120(Z<<)a[-250| 00000880: 2C 30 5D 32 32 61 5B 2B 32 35 30 2C 30 5D 61 31 |,0]22a[+250,0]a1| 00000890: 35 30 28 5A 3C 3C 29 00 |50(Z<<). | </pre> </div> <!-- PETSCII Dump Tab --> <div id="petscii-tab" class="tab-content dump-box"> <pre>........%.. ......."........` A.` A.` A. ` A.` A.` A.` A.` A.` A.` A.` A.` A.` A. ` A.` A.` A....N........#..H .. .. .. .. .."..".."..U@..P?..5U.7..:..>..?. ?..?. .?....... .. .. .. .. .."..".."..U...... ..U........................... .. .. .. .. .. .. .. ..T........UP............... .......... .. .. .. .. .. .. .. .....T.. ....P?.......................... .. .. . . ..T.?....@..P...................U@..T. .........*..:.@..]..WDH..L........... ..........................U\?........... ..U.UU.UU.]]7..............*..*...... ..................7................*..* ............*.......*................*.. *..*.......*..*..*..................*... ......*.....U.UUU]]]................. .......U.UUU]]]...................... ............7................*..*...... ........U.UUU]]]..................... .UT.UUUUUU]]]........................ .UTUUUUUU]]]......................... ...U@.UP.WT......?..>../..*.......... .. ..*........U.UUU]]].................. ......UT.UUU]]].................. ... .....U..UP.]]\...N.................... ........U@.UU@UUU]]]................. ............P..]\....{................ .............@....{...P.. .............. ..P..P@.P]AP..Q{...Y........ .. ....... ......@..@..P.....X..... ............... .. ............... .. .................. ....... .. ............. ........C.'.... ...[.'.......W...'...........'.......I.C ...........E.........4.S.'.......N...'.. .......240(I<)55(I_)130(I<<)[75,200]110( I^)15I100(I<_<)[323,115]120(I<<)J[-200,0 ]5J[+233,-11]2K[-233,+11]15K[+200,0]J150 (I<<).240(M<)55(M_)130(M<<)[99,200]110(M ^)15M100(M_<<)[347,115]120(M<<)NO[-200,0 ]4N[+209,+10]2L[-209,-10]15N[+200,0]N150 (M<<).240(T<)55(T_)130(T<<)[147,200]110( T^)15T100(T<_<)[395,115]120(T<<)UV[-200, 0]4V[+185,-11]2B[-185,+11]14V[+200,0]VU1 50(T<<).240(W<)55(W_)130(W<<)[171,200]11 0(W^)15W100(W<_<)[419,115]120(W<<)XY[-20 0,0]4Y[+161,+10]2C[-161,-10]14Y[+200,0]Y X150(W<<).240(E<)55(E_)130(E<<)[95,187]1 10(A^)15A100(A<_<)[343,102]120(A<<)BC20D CB150(A<<).120H220H200H[57,94]45(H.<.)19 0H[125,115]2G[-200,0].240(P<)55(P_)130(P <<)[123,200]110(P^)15P100(P<_<)[371,115] 120(P<<)QR20SRQ150(P<<).240(F<)55(F_)130 (F<<)[195,200]110(Z^)15Z100(Z_<<)[443,11 5]120(Z<<)A[-250,0]22A[+250,0]A150(Z<<). </pre> </div> <!-- IMAGE Tab --> <div id="image-tab" class="tab-content dump-box" style="text-align:center;"> <div class="c64-preview-controls" style="margin:10px 0; display:flex; align-items:center; gap:10px;"> <label for="c64-vis-type">Visualization:</label> <select id="c64-vis-type" onchange="c64OnVisChange()"> <option value="koala" >Koala</option> <option value="raw_bitplane" >Raw (Bitplane)</option> <option value="raw_cellular" selected>Raw (Cellular)</option> <option value="doodle" >Doodle</option> </select> <div id="c64-raw-controls" style="display: inline-block; margin-left:10px;"> <label for="c64-raw-width">Width:</label> <input type="number" id="c64-raw-width" value="320" min="8" step="8" style="width:70px;" onchange="c64OnWidthChange()" /> <label style="margin-left:10px;"> <input type="checkbox" id="c64-raw-skip-load" onchange="c64OnSkipLoadChange()" checked /> Skip load address (+2) </label> <label style="margin-left:10px;"> <input type="checkbox" id="c64-raw-invert" onchange="c64OnInvertChange()" /> Invert </label> </div> </div> <div style="text-align:center; padding:10px;"> <img id="c64-preview-img" src="data:image/png;base64,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" alt="C64 Preview" style="border:1px solid #666; image-rendering:pixelated; max-width:100%; cursor:pointer;" onclick="c64OpenModal()" /> </div> <div id="c64-modal" class="modal" style="display:none; position:fixed; inset:0; background:rgba(0,0,0,0.9); z-index:1000;"> <span id="c64-modal-close" class="modal-close" style="position:absolute; top:15px; right:25px; color:#ff6600; font-size:40px; cursor:pointer;">×</span> <img id="c64-modal-img" class="modal-content" style="display:block; margin:2% auto; max-width:95%; max-height:95%; border:2px solid #ff6600;"> <div id="c64-modal-caption" class="modal-info" style="text-align:center; color:#ffaa66; font-family:monospace; margin-top:10px;"> C64 Image </div> </div> <script> function c64OnVisChange() { var type = document.getElementById('c64-vis-type').value; var url = new URL(window.location.href); if (type === 'raw_bitplane' || type === 'raw_cellular') { url.searchParams.set('preview', 'raw'); url.searchParams.set('raw_type', type === 'raw_bitplane' ? 'bitplane' : 'cellular'); var widthVal = document.getElementById('c64-raw-width').value || '320'; url.searchParams.set('raw_width', widthVal); var skip = document.getElementById('c64-raw-skip-load').checked ? '1' : '0'; url.searchParams.set('raw_skip_load', skip); var inv = document.getElementById('c64-raw-invert').checked ? '1' : '0'; url.searchParams.set('raw_invert', inv); } else if (type === 'doodle') { url.searchParams.set('preview', 'doodle'); url.searchParams.delete('raw_type'); url.searchParams.delete('raw_width'); url.searchParams.delete('raw_invert'); url.searchParams.delete('raw_skip_load'); } else { url.searchParams.set('preview', 'c64'); url.searchParams.delete('raw_type'); url.searchParams.delete('raw_width'); url.searchParams.delete('raw_invert'); url.searchParams.delete('raw_skip_load'); } window.location.href = url.toString(); } function c64OnWidthChange() { var widthVal = parseInt(document.getElementById('c64-raw-width').value, 10); if (isNaN(widthVal) || widthVal < 8) widthVal = 320; widthVal = Math.round(widthVal / 8) * 8; document.getElementById('c64-raw-width').value = widthVal; var url = new URL(window.location.href); url.searchParams.set('preview', 'raw'); var type = document.getElementById('c64-vis-type').value; var rawType = (type === 'raw_cellular') ? 'cellular' : 'bitplane'; url.searchParams.set('raw_type', rawType); url.searchParams.set('raw_width', String(widthVal)); var skip = document.getElementById('c64-raw-skip-load').checked ? '1' : '0'; url.searchParams.set('raw_skip_load', skip); var inv = document.getElementById('c64-raw-invert').checked ? '1' : '0'; url.searchParams.set('raw_invert', inv); window.location.href = url.toString(); } function c64OnInvertChange() { var url = new URL(window.location.href); url.searchParams.set('preview', 'raw'); var type = document.getElementById('c64-vis-type').value; var rawType = (type === 'raw_cellular') ? 'cellular' : 'bitplane'; url.searchParams.set('raw_type', rawType); var widthVal = document.getElementById('c64-raw-width').value || '320'; url.searchParams.set('raw_width', widthVal); var inv = document.getElementById('c64-raw-invert').checked ? '1' : '0'; url.searchParams.set('raw_invert', inv); var skip = document.getElementById('c64-raw-skip-load').checked ? '1' : '0'; url.searchParams.set('raw_skip_load', skip); window.location.href = url.toString(); } function c64OnSkipLoadChange() { var url = new URL(window.location.href); url.searchParams.set('preview', 'raw'); var type = document.getElementById('c64-vis-type').value; var rawType = (type === 'raw_cellular') ? 'cellular' : 'bitplane'; url.searchParams.set('raw_type', rawType); var widthVal = document.getElementById('c64-raw-width').value || '320'; url.searchParams.set('raw_width', widthVal); var skip = document.getElementById('c64-raw-skip-load').checked ? '1' : '0'; url.searchParams.set('raw_skip_load', skip); window.location.href = url.toString(); } function c64OpenModal() { var modal = document.getElementById('c64-modal'); var img = document.getElementById('c64-preview-img'); var modalImg = document.getElementById('c64-modal-img'); modalImg.src = img.src; modal.style.display = 'block'; document.body.style.overflow = 'hidden'; } function c64CloseModal(){ var modal = document.getElementById('c64-modal'); modal.style.display = 'none'; document.body.style.overflow = 'auto'; } document.getElementById('c64-modal-close').onclick = function(){ c64CloseModal(); }; document.getElementById('c64-modal').onclick = function(e){ if(e.target && e.target.id==='c64-modal'){ c64CloseModal(); } }; document.addEventListener('keydown', function(e){ if(e.key==='Escape'){ c64CloseModal(); }}); </script> <p style="font-size:11px;color:#6699ff;margin-top:8px;">> CLICK IMAGE PREVIEW FOR FULL MODAL</p> </div> </div> </main> <footer class="footer"> <p>> <a href="javascript:history.back()" style="color: #6699ff;">BACK</a> | FILE INFORMATION</p> </footer> </div> <script> function switchTab(event, tabId) { // Hide all tab contents const tabContents = document.querySelectorAll('.tab-content'); tabContents.forEach(tab => { tab.classList.remove('active'); }); // Remove active class from all tab buttons const tabButtons = document.querySelectorAll('.tab-btn'); tabButtons.forEach(btn => { btn.classList.remove('active'); }); // Show the selected tab content document.getElementById(tabId).classList.add('active'); // Mark the clicked button as active event.target.classList.add('active'); // Update format description const formatDesc = document.getElementById('format-desc'); if (formatDesc) { if (tabId === 'petscii-tab') { formatDesc.textContent = 'PETSCII'; } else { formatDesc.textContent = 'ASCII'; } } } function extractFileContent(fileHash) { const btn = document.getElementById('extractContentBtn'); const status = document.getElementById('extractStatus'); btn.disabled = true; btn.textContent = 'EXTRACTING...'; status.innerHTML = '<span style="color: #ffaa44;">> SEARCHING D64 FILES FOR CONTENT...</span>'; fetch('extract_file_content.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'file_hash=' + encodeURIComponent(fileHash) }) .then(response => response.json()) .then(data => { if (data.success) { status.innerHTML = '<span style="color: #00ff00;">> SUCCESS: Content extracted (' + data.bytes + ' bytes)</span>'; setTimeout(() => { location.reload(); // Reload page to show hex dump }, 2000); } else { let errorMsg = '<span style="color: #ff6666;">> ERROR: ' + data.error + '</span>'; // Add debug information if available if (data.debug) { errorMsg += '<br><span style="color: #ffaa44; font-size: 10px;">'; errorMsg += '> DEBUG: Target: ' + data.debug.target_filename + '<br>'; errorMsg += '> Files found in D64: ' + data.debug.files_found + '<br>'; errorMsg += '> Target hash: ' + data.debug.target_hash.substring(0, 16) + '...<br>'; if (data.matches_found && data.matches_found.length > 0) { errorMsg += '> Filename matches found: ' + data.matches_found.length + '<br>'; data.matches_found.forEach(match => { errorMsg += '> - Has content: ' + match.has_content + ', Length: ' + match.content_length; if (match.content_hash) { errorMsg += ', Hash: ' + match.content_hash.substring(0, 16) + '...'; errorMsg += ', Matches: ' + match.hash_matches; } errorMsg += '<br>'; }); } else { errorMsg += '> No filename matches found<br>'; } errorMsg += '</span>'; } status.innerHTML = errorMsg; btn.disabled = false; btn.textContent = 'EXTRACT CONTENT FROM D64'; } }) .catch(error => { status.innerHTML = '<span style="color: #ff6666;">> ERROR: Network error</span>'; btn.disabled = false; btn.textContent = 'EXTRACT CONTENT FROM D64'; }); } // C64 Image Modal Functions function openC64Modal(fileHash, formatName) { const modal = document.getElementById('c64ImageModal'); const modalImage = document.getElementById('modalImage'); const modalInfo = document.getElementById('modalInfo'); modalImage.src = 'render_c64_image.php?hash=' + fileHash ; modal.classList.add('show'); // Prevent body scrolling when modal is open document.body.style.overflow = 'hidden'; } function closeC64Modal(event) { const modal = document.getElementById('c64ImageModal'); const modalImage = document.getElementById('modalImage'); // Only close if clicking on modal background or close button, NOT on the image itself if (!event || event.target === modal || event.target.classList.contains('modal-close')) { modal.classList.remove('show'); // Re-enable body scrolling document.body.style.overflow = 'auto'; // Clear the image source to stop loading modalImage.src = ''; } } // Close modal with Escape key document.addEventListener('keydown', function(event) { if (event.key === 'Escape') { closeC64Modal(); } }); </script> <script> function openMusPlayer(hash, name) { const w = 700, h = 500; const y = window.top.outerHeight / 2 + window.top.screenY - ( h / 2); const x = window.top.outerWidth / 2 + window.top.screenX - ( w / 2); window.open('jssid/player.html?hash=' + encodeURIComponent(hash) + '&name=' + name, 'sidPlayer', 'width=' + w + ',height=' + h + ',left=' + x + ',top=' + y + ',resizable=yes,scrollbars=no'); return false; } </script> </body> </html>