aboutsummaryrefslogtreecommitdiff
path: root/pu2/code/lib.i2
blob: e619fd8de4b7cffca5c8da8c118d8de1bd7201d6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 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
}