this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

*: first commit

geesawra 91786a36

+94
+7
Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "chiapp-8" 7 + version = "0.1.0"
+6
Cargo.toml
··· 1 + [package] 2 + name = "chiapp-8" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies]
+81
src/main.rs
··· 1 + const FONT: [u8; 80] = [ 2 + 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 3 + 0x20, 0x60, 0x20, 0x20, 0x70, // 1 4 + 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 5 + 0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 6 + 0x90, 0x90, 0xF0, 0x10, 0x10, // 4 7 + 0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 8 + 0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 9 + 0xF0, 0x10, 0x20, 0x40, 0x40, // 7 10 + 0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 11 + 0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 12 + 0xF0, 0x90, 0xF0, 0x90, 0x90, // A 13 + 0xE0, 0x90, 0xE0, 0x90, 0xE0, // B 14 + 0xF0, 0x80, 0x80, 0x80, 0xF0, // C 15 + 0xE0, 0x90, 0x90, 0x90, 0xE0, // D 16 + 0xF0, 0x80, 0xF0, 0x80, 0xF0, // E 17 + 0xF0, 0x80, 0xF0, 0x80, 0x80, // F 18 + ]; 19 + 20 + struct StackEntry(u8, u8); 21 + 22 + #[derive(Debug)] 23 + enum StackError { 24 + Overflow, 25 + } 26 + 27 + struct Stack<T, const MAX_MEM: usize> { 28 + mem: Vec<T>, 29 + } 30 + 31 + impl<T, const MAX_MEM: usize> Stack<T, MAX_MEM> { 32 + fn new() -> Self { 33 + Stack { mem: Vec::new() } 34 + } 35 + 36 + fn push(&mut self, elem: T) -> Result<(), StackError> { 37 + if self.mem.len() + 1 > MAX_MEM { 38 + return Err(StackError::Overflow); 39 + } 40 + 41 + self.mem.push(elem); 42 + 43 + Ok(()) 44 + } 45 + 46 + fn pop(&mut self) -> Option<T> { 47 + self.mem.pop() 48 + } 49 + } 50 + 51 + enum Instruction {} 52 + 53 + struct State { 54 + memory: [u8; 4096], 55 + pc: u8, 56 + stack: Stack<StackEntry, 16>, 57 + display: [[u8; 32]; 64], // outer: X, inner: Y 58 + delay_timer: u8, 59 + sound_timer: u8, 60 + } 61 + 62 + impl State { 63 + fn mem_write_at(&mut self, data: &[u8], offset: usize) { 64 + self.memory[offset..data.len()].copy_from_slice(data); 65 + } 66 + } 67 + 68 + impl State { 69 + pub fn new() -> Self { 70 + Self{ memory: [0; 4096], pc: 0, stack: Stack::new(), display: todo!(), delay_timer: todo!(), sound_timer: todo!() } 71 + } 72 + pub fn load_program(mut self, program: Vec<u8>, offset: usize) -> Self { 73 + self.mem_write_at(&FONT, 0); 74 + self.mem_write_at(&program, offset); 75 + self 76 + } 77 + } 78 + 79 + fn main() { 80 + let s 81 + }