Adding more posix, hex $.
This commit is contained in:
@ -13,7 +13,9 @@ static struct {
|
|||||||
static cell_t convert(const char *pos, cell_t n, cell_t *ret) {
|
static cell_t convert(const char *pos, cell_t n, cell_t *ret) {
|
||||||
*ret = 0;
|
*ret = 0;
|
||||||
cell_t negate = 0;
|
cell_t negate = 0;
|
||||||
|
cell_t base = g_sys.base;
|
||||||
if (!n) { return 0; }
|
if (!n) { return 0; }
|
||||||
|
if (pos[0] == '$') { base = 16; ++pos; --n; }
|
||||||
if (pos[0] == '-') { negate = -1; ++pos; --n; }
|
if (pos[0] == '-') { negate = -1; ++pos; --n; }
|
||||||
for (; n; --n) {
|
for (; n; --n) {
|
||||||
uintptr_t d = pos[0] - '0';
|
uintptr_t d = pos[0] - '0';
|
||||||
@ -22,7 +24,7 @@ static cell_t convert(const char *pos, cell_t n, cell_t *ret) {
|
|||||||
if (d < 10) { return 0; }
|
if (d < 10) { return 0; }
|
||||||
}
|
}
|
||||||
if (d >= (uintptr_t) g_sys.base) { return 0; }
|
if (d >= (uintptr_t) g_sys.base) { return 0; }
|
||||||
*ret = *ret * g_sys.base + d;
|
*ret = *ret * base + d;
|
||||||
++pos;
|
++pos;
|
||||||
}
|
}
|
||||||
if (negate) { *ret = -*ret; }
|
if (negate) { *ret = -*ret; }
|
||||||
|
|||||||
@ -38,6 +38,14 @@ z" __errno_location" 0 sysfunc __errno_location
|
|||||||
1 constant SEEK_CUR
|
1 constant SEEK_CUR
|
||||||
2 constant SEEK_END
|
2 constant SEEK_END
|
||||||
|
|
||||||
|
( mmap )
|
||||||
|
0 constant PROT_NONE
|
||||||
|
1 constant PROT_READ
|
||||||
|
2 constant PROT_WRITE
|
||||||
|
4 constant PROT_EXEC
|
||||||
|
$10 constant MAP_FIXED
|
||||||
|
$20 constant MAP_ANONYMOUS
|
||||||
|
|
||||||
( Terminal handling )
|
( Terminal handling )
|
||||||
: n. ( n -- ) base @ swap decimal <# #s #> type base ! ;
|
: n. ( n -- ) base @ swap decimal <# #s #> type base ! ;
|
||||||
: esc 27 emit ;
|
: esc 27 emit ;
|
||||||
|
|||||||
Reference in New Issue
Block a user