@data = read_data($infile); # @data is global $data[0x6FFE] = 0; # zero CRC $data[0x6FFF = 0; # locations $crc = crc16(0x0000, 0x6FFF, 0); # works $crc = 0; for ($a = 0x0000; $a < 0x6fff; $a += 32) { # final value next if (unusedBlock($a, 32); # off by one $crc = crc16($a, $a + 32, $crc); } $data[0x6FFE] = $crc >> 8; # save $data[0x6FFF] = $crc & 0xFF; # CRC write_data($outfile); # or write_data_blocks($outfile);