use crate::*; pub fn format_inhx(words: &[Word]) -> String { let mut records = Vec::new(); for (i, chunk) in words.chunks(16).enumerate() { records.push(data_record(chunk, (i * 16) as u16)); } records.push(terminating_record()); let mut output = String::new(); for record in records { output.push_str(&record.to_string()); } return output; } fn data_record(words: &[Word], address: u16) -> InhxRecord { let mut record = InhxRecord::new(); record.byte((words.len()) as u8); record.be_double(address); record.byte(0x00); for word in words { match word.bits <= 8 { true => record.byte(word.value as u8), false => panic!("Word '{word}' has more than 8 bits."), }; } return record; } fn terminating_record() -> InhxRecord { let mut record = InhxRecord::new(); record.byte(0x00); record.be_double(0x0000); record.byte(0x01); return record; }