1use uxn_tal::{Assembler, AssemblerError};
2
3fn main() -> Result<(), AssemblerError> {
4 println!("Testing character literals...");
6 let source1 = r#"
7 |0100
8 'A 'B 'C
9 "#;
10
11 let mut assembler = Assembler::new();
12 match assembler.assemble(source1, Some("debug_test.rs:char_lit".to_owned())) {
13 Ok(rom) => {
14 println!("Character test OK, ROM length: {}", rom.len());
15 println!(
16 "Bytes: {:02x} {:02x} {:02x}",
17 rom[0x100], rom[0x101], rom[0x102]
18 );
19 }
20 Err(e) => {
21 println!("Character test failed: {}", e);
22 }
23 }
24
25 println!("\nTesting simple label reference...");
27 let source2 = r#"
28 |0100
29 ;data
30 @data #42
31 "#;
32
33 let mut assembler2 = Assembler::new();
34 match assembler2.assemble(source2, Some("debug_test.rs:simple_label".to_owned())) {
35 Ok(rom) => {
36 println!("Simple label test OK, ROM length: {}", rom.len());
37 println!("First 6 bytes:");
38 for (i, byte) in rom.iter().take(6).enumerate() {
39 println!(" [{:04x}] = {:02x}", 0x100 + i, byte);
40 }
41 }
43 Err(e) => {
44 println!("Simple label test failed: {}", e);
45 }
46 }
47
48 println!("\nTesting label reference with instruction...");
50 let source3 = r#"
51 |0100 @start
52 ;data LDA2
53 BRK
54 @data #1234
55 "#;
56
57 let mut assembler3 = Assembler::new();
58 match assembler3.assemble(source3, Some("debug_test.rs:label_instr".to_owned())) {
59 Ok(rom) => {
60 println!("Label with instruction test OK, ROM length: {}", rom.len());
61 println!("First 8 bytes:");
62 for (i, byte) in rom.iter().take(8).enumerate() {
63 println!(" [{:04x}] = {:02x}", 0x100 + i, byte);
64 }
65 }
67 Err(e) => {
68 println!("Label with instruction test failed: {}", e);
69 }
70 }
71
72 Ok(())
73}