Hello Eduardo,
> I've found what seems an odd bug in the kernel (version 2035) while
> testing a first alpha version of nlsfunc and it is driving me mad:
> In nls.c:muxLoadPkg(), the value of cp becomes 0 right after the first
> call to muxGo() (the one that does the installation check).
solved:
*********** nls.c, 98:
STATIC COUNT muxGo(int subfct, UWORD bp, UWORD cp, UWORD cntry, UWORD bufsize,
void FAR *buf, UWORD *id)
{
int ret;
iregs r;
log(("NLS: muxGo(): subfct=%x, cntry=%u, cp=%u, ES:DI=%p\n",
subfct, cntry, cp, buf));
/* ret = call_nls(subfct, &nlsInfo, bp, cp, cntry, bufsize, buf, id);
mov al, [bp + 4] ; subfct
mov ah, 0x14
mov si, [bp + 6] ; nlsinfo
mov bx, [bp + 10] ; cp
mov dx, [bp + 12] ; cntry
mov cx, [bp + 14] ; bufsize
les di, [bp + 16] ; buf
push bp
mov bp, [bp + 8] ; bp
int 0x2f
pop bp
mov bp, [bp + 20] ; store id (in
SS:) unless it's NULL
or bp, bp
jz nostore
mov [bp], bx
*/
r.a.b.h = 0x14;
r.a.b.l = subfct;
r.si = (short)&nlsInfo;
r.bp = bp;
r.b.x = cp;
r.d.x = cntry;
r.c.x = bufsize;
r.di = FP_OFF(bp);
r.es = FP_SEG(bp);
intr(0x2f,&r);
if (*id)
*id = r.b.x;
ret = r.a.x;
log(("NLS: muxGo(): return value = %d\n", ret));
return ret;
}
int2f,406
+%if 0
; moved into intr() style by tom
; extern UWORD ASMCFUNC call_nls(UWORD subfct, struct nlsInfoBlock *nlsinfo,
; UWORD bp, UWORD cp, UWORD cntry, UWORD bufsize, UWORD FAR *buf, UWORD *id);
global _call_nls
_call_nls:
int2f, 439:
ret
+%endif
additionally, you need my recent patch, that makes intr available again.
tom
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel