59 lines
765 B
GLSL
59 lines
765 B
GLSL
proc putchar
|
|
0xCFFFFFFFFFFFFFFD st8
|
|
endproc
|
|
|
|
proc getchar
|
|
0xCFFFFFFFFFFFFFFE ld8
|
|
endproc
|
|
|
|
proc getuint
|
|
0 @val
|
|
0 @char
|
|
while 1 do
|
|
:getchar @char
|
|
if &char 0x30 u< then
|
|
&val return
|
|
endif
|
|
if &char 0x39 u> then
|
|
&val return
|
|
endif
|
|
|
|
&val
|
|
10 u*
|
|
&char 0x30 u- u+
|
|
@val
|
|
endwhile
|
|
&val
|
|
endproc
|
|
|
|
proc putuint
|
|
@val
|
|
if &val 0 == then
|
|
48 :putchar return
|
|
endif
|
|
1 @divisor
|
|
|
|
while &val &divisor u/ 9 u> do
|
|
10 &divisor u* @divisor
|
|
endwhile
|
|
|
|
while &divisor 0 u> do
|
|
&val &divisor u/ 10 u%
|
|
48 u+ :putchar
|
|
|
|
&divisor 10 u/ @divisor
|
|
endwhile
|
|
endproc
|
|
|
|
proc puts
|
|
while dup ld8 0 == not do
|
|
dup ld8 :putchar
|
|
1 u+
|
|
endwhile
|
|
pop
|
|
endproc
|
|
|
|
proc newline
|
|
10 :putchar
|
|
endproc
|
|
|