Kickit!

Kickstart Converter

Byteswap
16-bit 32-bit (two eproms)
27C200 27C400 27C800
0) { // Script for converting a 32-bit Amiga Kickstart file to two .bin files ini_set('display_errors', 'On'); error_reporting(E_ALL); // Config $filepath = $_FILES['kickstart']['tmp_name']; $filename = preg_replace('/.[^.]*$/', '', $_FILES['kickstart']['name']); $type = $_POST['type']; $byteswap = ($_POST['byteswap'] == 'on') ? TRUE : FALSE; $multiply = $_POST['multiply']; $folder = 'kickstarts/'; $delete_old = TRUE; if ($delete_old) { $old_files = glob($folder . '*'); foreach($old_files as $old_file) { if (is_file($old_file) && time()-filemtime($old_file) > 15 * 60) { unlink($old_file); } } } // AB CD EF GH -> BA FE (HI) + DC HG (LO) $kick = fopen($filepath, "rb"); $contents = fread($kick, filesize($filepath)); $kick_wordsplit = str_split($contents, 2); fclose($kick); $even = FALSE; $single = ''; $hi = ''; $lo = ''; $i = 0; foreach ($kick_wordsplit as $word) { $word = ($byteswap) ? strrev($word) : $word; if ($type == '32') { if ($even) { $lo .= $word; } else { $hi .= $word; } } else { $single .= $word; } $even = !$even; $i++; } // 27c400: 2^2, 27c800: 2^3 for ($x = 1; $x < $multiply; $x++) { $hi .= $hi; $lo .= $lo; $single .= $single; } $swapped = ($byteswap) ? '-bsw' : ''; echo $i*2 . ' bytes processed
'; // 32-bit eproms if ($type == '32') { echo strlen($hi) . ' bytes written (x2)

'; $hi_filename = $filename . $swapped . '-HI' . '.bin'; $hi_file = fopen($folder . $hi_filename, 'w'); fwrite($hi_file, $hi); fclose($hi_file); $lo_filename = $filename . $swapped . '-LO' . '.bin'; $lo_file = fopen($folder . $lo_filename, 'w'); fwrite($lo_file, $lo); fclose($lo_file); echo 'HI → ' . $hi_filename . '
'; echo 'LO → ' . $lo_filename . '

'; // 16-bit eprom } else { echo strlen($single) . ' bytes written

'; $single_filename = $filename . $swapped . '.bin'; $single_file = fopen($folder . $single_filename, 'w'); fwrite($single_file, $single); fclose($single_file); echo 'FILE → ' . $single_filename . '

'; } echo '
✔ DONE!
'; } ?>