diff --git a/minijort.c b/minijort.c index 3241e15..a388370 100755 --- a/minijort.c +++ b/minijort.c @@ -791,6 +791,14 @@ void f_rand() { PUSHI(rand()); } +void f_segalloc() { + void far* ptr = farmalloc(0x10010UL); + unsigned long linearaddr = ((unsigned long)FP_SEG(ptr) << 4) + + ((unsigned long)FP_OFF(ptr)); + int segment = ((linearaddr & 0x000ffff0UL) >> 4); + PUSHI(segment); +} + void f_init() { CDEF("[", f_compileoff); f_immediate(); CDEF("]", f_compileon); @@ -900,6 +908,7 @@ void f_init() { CDEF("chdir", f_chdir); CDEF("memmove", f_memmove); CDEF("rand", f_rand); + CDEF("segalloc", f_segalloc); PCONST("$DOCREATE", f_docreate); PCONST("$DOVAR", f_dovar); PCONST("$DODEFERRED", f_dodeferred); diff --git a/minijort.exe b/minijort.exe index a23729f..d90fa06 100755 Binary files a/minijort.exe and b/minijort.exe differ diff --git a/minijort.prj b/minijort.prj index 9025491..fc596f5 100755 Binary files a/minijort.prj and b/minijort.prj differ