; Power function pow: link 1; pow (x, y) { ldc 1 stl 1; var z = 1 poww: ldl -2; while (y > 0) ldc 0 gt brf powe ; { ldl -3; z = x*z ldl 1 mul stl 1 ldl -2; y = y-1 ldc 1 sub stl -2 bra poww ; } powe: ldl 1; return z str RR unlink ret ; Equality of basic types eqInt: link 0 ldl -2 ldl -3 eq unlink ret eqChar: link 0 ldl -2 ldl -3 eq unlink ret eqBool: link 0 ldl -2 ldl -3 eq unlink ret ; Printing of basic types printInt: link 0 ldl -2 trap 0 unlink ret printChar: link 0 ldl -2 trap 1 unlink ret printBool: link 0 ldl -2 brf printBoolf ldc 84 trap 1 bra printBoole printBoolf: ldc 70 trap 1 printBoole: unlink ret ; Field selectors fst: link 0 ldl -2 ldh -1 str RR unlink ret snd: link 0 ldl -2 ldh 0 str RR unlink ret hd: link 0 ldl -2 ldh -1 str RR unlink ret tl: link 0 ldl -2 ldh 0 str RR unlink ret ; List empty check isEmpty: link 0 ldl -2 ldc 0 eq str RR unlink ret