#include <span>
#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) {
char buf[32] = {};
auto ptr = buf + sizeof(buf);
auto v = forth.pop();
+ bool neg = v < 0;
+ if (neg) v = -v;
*--ptr = '\0';
do {
*--ptr = "0123456789abcdefghijklmnopqrstuvwxyz"[v % forth.base];
} while (v /= forth.base);
+ if (neg) *--ptr = '-';
std::cout << ptr << ' ';
}> dot;
constinit static sforth::native_word<"emit", [](auto) {
} else if (ch >= 'A' && ch <= 'Z') {
if (base > 10 && ch - 'A' < base - 10) {
res *= base;
- res += ch - 'A';
+ res += ch - 'A' + 10;
} else return {};
} else if (ch >= 'a' && ch <= 'z') {
if (base > 10 && ch - 'a' < base - 10) {
res *= base;
- res += ch - 'a';
+ res += ch - 'a' + 10;
} else return {};
} else if (ch == '-' && res == 0) {
neg = true;