Please apply these patches in the src/ directory, then define -DANSIESC in src-16/ then make clean, make. Let me know if they work or not. The footprint goes over 8kB in most cases BTW. Have a happy Easter. Cheers, Ken
*** ansiesc.c.orig Mon Mar 9 23:22:29 1998
--- ansiesc.c Thu Apr 9 10:56:05 1998
***************
*** 76,81 ****
--- 76,82 ----
#define MAXSTRARGS 1
#define MAXSTRARGLEN 40
+ #ifdef ETHERBOOT32
extern union {
struct {
unsigned char al,ah,bl,bh,cl,ch,dl,dh;
***************
*** 84,93 ****
unsigned short ax,bx,cx,dx;
} __attribute__ ((packed)) x;
} __attribute__ ((packed)) int10ret;
-
#define int10(a,b,c,d) _int10((unsigned long)(a)+((unsigned long)(b)<<16), \
(unsigned long)(c)+((unsigned long)(d)<<16))
! extern void _int10(unsigned long axbx,unsigned long cxdx);
static enum { esc_init, esc_std, esc_esc, esc_bracket, esc_digit,
esc_semicolon, esc_str, esc_quote
--- 85,105 ----
unsigned short ax,bx,cx,dx;
} __attribute__ ((packed)) x;
} __attribute__ ((packed)) int10ret;
#define int10(a,b,c,d) _int10((unsigned long)(a)+((unsigned long)(b)<<16), \
(unsigned long)(c)+((unsigned long)(d)<<16))
! extern void _int10(unsigned long axbx,unsigned long cxdx);
! #endif
!
! #ifdef ETHERBOOT16
! extern union {
! struct {
! unsigned char al, ah, bl, bh, cl, ch, dl, dh;
! } lh;
! struct {
! unsigned short ax, bx, cx, dx;
! } x;
! } int10ret;
! #endif
static enum { esc_init, esc_std, esc_esc, esc_bracket, esc_digit,
esc_semicolon, esc_str, esc_quote
***************
*** 100,106 ****
static int argi[MAXARGS];
static char args[MAXSTRARGS][MAXSTRARGLEN];
static int in_tftp = 0;
! static const char coltable[8] = "\000\004\002\006\001\005\003\007";
#ifdef GFX
static unsigned short gfx_rows,gfx_columns,char_width,char_height,gfx_x,gfx_y;
static int in_gfx = 0, gfx_packed,gfx_data,gfx_nbits;
--- 112,118 ----
static int argi[MAXARGS];
static char args[MAXSTRARGS][MAXSTRARGLEN];
static int in_tftp = 0;
! static const char coltable[9] = "\000\004\002\006\001\005\003\007";
#ifdef GFX
static unsigned short gfx_rows,gfx_columns,char_width,char_height,gfx_x,gfx_y;
static int in_gfx = 0, gfx_packed,gfx_data,gfx_nbits;
*** start16.S.orig Tue Jun 17 00:56:20 1997
--- start16.S Thu Apr 9 11:00:50 1998
***************
*** 46,59 ****
--- 46,97 ----
push cx
push bx
movb cl,4[bp]
+ #ifdef ANSIESC
+ push cx
+ call _handleansi
+ pop cx ; not to recover cx but to adjust stack
+ #else
mov bx,*1
movb ah,*0x0e
movb al,cl
int *0x10
+ #endif
pop bx
pop cx
pop bp
ret
+
+ #ifdef ANSIESC
+ /**************************************************************************
+ INT10 - Call Interrupt 0x10
+ **************************************************************************/
+ .globl _int10
+ .globl _int10ret
+ _int10:
+ push bp
+ mov bp,sp
+ push bx
+ push cx
+ push dx
+ mov ax,4[bp]
+ mov bx,6[bp]
+ mov cx,8[bp]
+ mov dx,10[bp]
+ int *0x10
+ mov _int10ret,ax
+ mov _int10ret+2,bx
+ mov _int10ret+4,cx
+ mov _int10ret+6,dx
+ pop dx
+ pop cx
+ pop bx
+ pop bp
+ ret
+ .data
+ _int10ret:
+ .word 0,0,0,0
+ .text
+ #endif
/**************************************************************************
GETCHAR - Get a character
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.