|
|
@ -22,16 +22,19 @@
|
|
|
|
#include <span>
|
|
|
|
#include <span>
|
|
|
|
#include <string>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
|
|
constinit static sforth::forth<1024> forth {sforth::initialize<&forth>()};
|
|
|
|
constinit static sforth::forth<2048> forth {sforth::initialize<&forth>()};
|
|
|
|
|
|
|
|
|
|
|
|
constinit static sforth::native_word<".", [](auto) {
|
|
|
|
constinit static sforth::native_word<".", [](auto) {
|
|
|
|
char buf[32] = {};
|
|
|
|
char buf[32] = {};
|
|
|
|
auto ptr = buf + sizeof(buf);
|
|
|
|
auto ptr = buf + sizeof(buf);
|
|
|
|
auto v = forth.pop();
|
|
|
|
auto v = forth.pop();
|
|
|
|
|
|
|
|
bool neg = v < 0;
|
|
|
|
|
|
|
|
if (neg) v = -v;
|
|
|
|
*--ptr = '\0';
|
|
|
|
*--ptr = '\0';
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
*--ptr = "0123456789abcdefghijklmnopqrstuvwxyz"[v % forth.base];
|
|
|
|
*--ptr = "0123456789abcdefghijklmnopqrstuvwxyz"[v % forth.base];
|
|
|
|
} while (v /= forth.base);
|
|
|
|
} while (v /= forth.base);
|
|
|
|
|
|
|
|
if (neg) *--ptr = '-';
|
|
|
|
std::cout << ptr << ' ';
|
|
|
|
std::cout << ptr << ' ';
|
|
|
|
}> dot;
|
|
|
|
}> dot;
|
|
|
|
constinit static sforth::native_word<"emit", [](auto) {
|
|
|
|
constinit static sforth::native_word<"emit", [](auto) {
|
|
|
|