#c64 #commodore #cbm

bin+lib petscii

Commodore PETSCII 字符串库

3 个不稳定版本

0.2.1 2023年10月13日
0.2.0 2023年10月13日
0.1.0 2023年10月13日

#126 in 模拟器

自定义许可

33KB
603 代码行

petscii

Commodore PETSCII 字符串的支持库。

示例

从原始数据生成 Unicode 字符串

let data = [b'A', b'B', b'C'];
let petscii = petscii::PetsciiString::from(&data);
assert_eq!("ABC", petscii.to_string());

从字符串生成 C64 二进制正确序列

let petscii = petscii::PetsciiString::try_from("ANSWER IS 42").unwrap();

// truncate case:
let data_trunc: petscii::Result<[u8; 7]> = petscii.clone().try_into();
assert!(data_trunc.is_err());

// extended buffer case (beware of Commodore's NO_BREAK_SPACE filling):
let data_ext: [u8; 16] = petscii.clone().try_into().unwrap();
assert_eq!(
    format!("{}", petscii::PetsciiString::from(&data_ext)),
    "ANSWER IS 42\u{a0}\u{a0}\u{a0}\u{a0}"
);

请注意,From<[u8]> 实现 静默丢弃不可打印字符。如果您不希望这样,请使用 TryFrom

let petscii = petscii::encode("Answer is 42");
assert_eq!(*petscii, [b'A', b' ', b' ', b'4', b'2']);
let fpetscii = petscii::try_encode("Answer is 42");
assert!(fpetscii.is_err());

依赖项

~0.6–1.2MB
~25K SLoC