FlagVM/flagpole/fvmstd.fp
2026-07-26 17:49:29 -04:00

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