Reference Section
c_code {
char rel_heap_buf[0x4010];
...
if(_ptr_to_seg(rel_heap_buf) != 0);
_rel_init(0x4010);/* initialize relative heap */
_rel_malloc(0x2000);/* allocate block on rel heap*/
...
}
#include <inline.h>
{
char rel_heap_buf[0x4010];
...
lea ax,rel_heap_buf
mov dx,ss /* DX:AX -> rel_heap_buf */
ptr_to_seg /* DX = 1st seg boundary */
/* in rel_heap_buf */
jc handle_error/* if error, go handle it
mov es,dx /* ES = starting segment */
/* of relative heap */
mov ax,0x4010
rel_init(); /* initialize a 0x4010 byte */
/* relative heap */
mov ax,0x2000
rel_malloc(); /* allocate a 0x2000 byte */
/* block from heap */
jc handle_error/* if error, go handle it */
... /* ES:DI -> mem block on */
/* relative heap */
handle_error:
... /* handle errors here */
}
Source file _UTPTOS.ASM ASM equiv PTR_TO_SEG