Skip to content
This repository was archived by the owner on Nov 11, 2021. It is now read-only.

Commit 877f7e9

Browse files
committed
Add putd to std.porth
1 parent 3678ee3 commit 877f7e9

3 files changed

Lines changed: 80 additions & 0 deletions

File tree

std/std.porth

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,3 +396,64 @@ end
396396
macro eputs
397397
stderr fputs
398398
end
399+
400+
macro _put_digit
401+
"0123456789" swap drop + 1 swap puts
402+
end
403+
404+
macro _putd_before
405+
dup 10 %
406+
over 10 /
407+
end
408+
macro _putd_after
409+
drop
410+
_put_digit
411+
end
412+
413+
macro putd
414+
dup 0 = if
415+
"0" puts
416+
else
417+
dup 0 > if _putd_before
418+
dup 0 > if _putd_before
419+
dup 0 > if _putd_before
420+
dup 0 > if _putd_before
421+
dup 0 > if _putd_before
422+
dup 0 > if _putd_before
423+
dup 0 > if _putd_before
424+
dup 0 > if _putd_before
425+
dup 0 > if _putd_before
426+
dup 0 > if _putd_before
427+
dup 0 > if _putd_before
428+
dup 0 > if _putd_before
429+
dup 0 > if _putd_before
430+
dup 0 > if _putd_before
431+
dup 0 > if _putd_before
432+
dup 0 > if _putd_before
433+
dup 0 > if _putd_before
434+
dup 0 > if _putd_before
435+
dup 0 > if _putd_before
436+
dup 0 > if _putd_before
437+
_putd_after end
438+
_putd_after end
439+
_putd_after end
440+
_putd_after end
441+
_putd_after end
442+
_putd_after end
443+
_putd_after end
444+
_putd_after end
445+
_putd_after end
446+
_putd_after end
447+
_putd_after end
448+
_putd_after end
449+
_putd_after end
450+
_putd_after end
451+
_putd_after end
452+
_putd_after end
453+
_putd_after end
454+
_putd_after end
455+
_putd_after end
456+
_putd_after end
457+
end drop
458+
end
459+

tests/putd.porth

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
include "std.porth"
2+
3+
//Zero
4+
0 putd
5+
"\n" puts
6+
7+
//max i64
8+
9223372036854775807 putd
9+
"\n" puts

tests/putd.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
:i argc 0
2+
:b stdin 0
3+
4+
:i returncode 0
5+
:b stdout 22
6+
0
7+
9223372036854775807
8+
9+
:b stderr 0
10+

0 commit comments

Comments
 (0)