Skip to main content

riscv_emu_rust/
default_terminal.rs

1use terminal::Terminal;
2
3/// Standard `Terminal`.
4pub struct DefaultTerminal {
5	input_data: Vec<u8>,
6	output_data: Vec<u8>
7}
8
9impl DefaultTerminal {
10	pub fn new() -> Self {
11		DefaultTerminal {
12			input_data: vec![],
13			output_data: vec![]
14		}
15	}
16}
17
18impl Terminal for DefaultTerminal {
19	fn put_byte(&mut self, value: u8) {
20		self.output_data.push(value);
21	}
22	
23	fn get_input(&mut self) -> u8 {
24		match self.input_data.len() > 0 {
25			true => self.input_data.remove(0),
26			false => 0
27		}
28	}
29	
30	fn put_input(&mut self, value: u8) {
31		self.input_data.push(value);
32	}
33	
34	fn get_output(&mut self) -> u8 {
35		match self.output_data.len() > 0 {
36			true => self.output_data.remove(0),
37			false => 0
38		}
39	}
40}