diff -urN dev86-0.16.9-vanila/ld/globvar.h dev86-0.16.9/ld/globvar.h --- dev86-0.16.9-vanila/ld/globvar.h Fri Nov 1 02:20:12 2002 +++ dev86-0.16.9/ld/globvar.h Fri Nov 1 02:23:53 2002 @@ -13,6 +13,7 @@ /* K&R _explicitly_ says extern followed by public is OK */ extern char hexdigit[]; /* constant */ extern int headerless; /* Don't output header on exe */ +extern int bigheader; extern int cpm86; /* Generate CP/M-86 CMD header */ extern bin_off_t text_base_value; /* Base address of text seg */ diff -urN dev86-0.16.9-vanila/ld/ld.c dev86-0.16.9/ld/ld.c --- dev86-0.16.9-vanila/ld/ld.c Fri Nov 1 02:20:11 2002 +++ dev86-0.16.9/ld/ld.c Fri Nov 1 02:24:46 2002 @@ -19,6 +19,7 @@ PUBLIC bin_off_t data_base_value = 0; /* XXX */ PUBLIC bin_off_t heap_top_value = 0; /* XXX */ PUBLIC int headerless = 0; +PUBLIC int bigheader = 0; PUBLIC int cpm86 = 0; PUBLIC char hexdigit[] = "0123456789abcdef"; @@ -176,6 +177,7 @@ data_base_value = strtoul(arg+2, (char **)0, 16); if (errno != 0) use_error("invalid data address"); + bigheader = 1; break; case 'H': /* heap top address */ if (arg[2] == 0 && ++argn >= argc) diff -urN dev86-0.16.9-vanila/ld/writex86.c dev86-0.16.9/ld/writex86.c --- dev86-0.16.9-vanila/ld/writex86.c Fri Nov 1 02:20:12 2002 +++ dev86-0.16.9/ld/writex86.c Fri Nov 1 02:27:50 2002 @@ -18,7 +18,7 @@ #define ELF_SYMS 0 #endif -# define FILEHEADERLENGTH (headerless?0:(cpm86?CPM86_HEADERLEN:A_MINHDR)) +# define FILEHEADERLENGTH (headerless?0:(bigheader?sizeof(struct exec):(cpm86?CPM86_HEADERLEN:A_MINHDR))) /* part of header not counted in offsets */ #define DPSEG 2 @@ -651,8 +651,10 @@ offtocn((char *) &header.a_total, (bin_off_t) heap_top_value, sizeof header.a_total); - if( FILEHEADERLENGTH ) - writeout((char *) &header, FILEHEADERLENGTH); + if(bigheader) + offtocn((char *) &header.a_dbase, data_base_value, sizeof header.a_dbase); + if( header.a_hdrlen ) + writeout((char *) &header, header.a_hdrlen); } PRIVATE void writenulls(count) diff -urN dev86-0.16.9-vanila/libc/bcc/heap.c dev86-0.16.9/libc/bcc/heap.c --- dev86-0.16.9-vanila/libc/bcc/heap.c Fri Nov 1 02:20:12 2002 +++ dev86-0.16.9/libc/bcc/heap.c Fri Nov 1 02:34:02 2002 @@ -44,9 +44,6 @@ js go_down add ax,[brk_addr] ! Goin up! jc Enomem - sub bx,#511 ! Safety space 512 bytes - cmp bx,ax ! Too close ? - jb Enomem sbrk_ok: #if !defined(__MSDOS__) && !defined(__STANDALONE__)