// standard library for i2 macro puts(2) { @1 = 0; // write @2 = /1/; // ptr @3 = /2/; // size system(); // interrupt } macro putchar(1) { @1 = 0; // write @2 = 10; // ptr @3 = 1; // size @10 = /1/; // value system(); // interrupt } // &str, out_dest macro strlen(2) { @20 = /1/; // get reference to var @21 = 0; // char count @22 = *@20; while(@22) { @20++; @22 = *@20; @21++; } /2/ = @21; } macro print(1) { strlen([/1/], [@3]); @1 = 0; // write @2 = /1/; // ptr system(); // interrupt }