Skip to main content

counter/
counter.rs

1// Example: Counter program that demonstrates various TAL features
2
3use uxn_tal::{Assembler, AssemblerError};
4
5fn main() -> Result<(), AssemblerError> {
6    let tal_source = r#"
7        ( Simple Counter Program )
8        
9        |0100 @reset
10            #30 #18 DEO ( print '0' )
11            #31 #18 DEO ( print '1' )
12            #32 #18 DEO ( print '2' )
13            #0a #18 DEO ( newline )
14        BRK
15    "#;
16
17    let mut assembler = Assembler::new();
18    match assembler.assemble(tal_source, Some("counter.rs".to_owned())) {
19        Ok(rom) => {
20            println!(
21                "Successfully assembled counter program: {} bytes",
22                rom.len()
23            );
24            std::fs::write("counter.rom", &rom)?;
25            println!("ROM saved to counter.rom");
26            Ok(())
27        }
28        Err(e) => {
29            eprintln!("Assembly failed: {}", e);
30            Err(e)
31        }
32    }
33}