I found strange and undocumented behaviour in kernel function INT21h/AX=6501h
I wanted to report this as a bug but MS-DOS 7.1 has exactly the same 
behaviour.

We have this snippet of code:

var a:array[0..255] of byte;
begin
asm
 seges lea di,a
 mov bx,0ffffh
 mov dx,0ffffh
 mov cx,256
 mov ax,6501h
 int 21h
end;

It should return my country code and code page. But it sometimes works and 
sometimes not.
It depends  on values in A array.
If A is zeroed (for i:=0 to 255 do a[i]:=0) it works.
If A is assigned to constant value (for i:=0 to 255 do a[i]:=2) it works.
But if I make: "for i:=0 to 255 do a[i]:=i" it does not work.

This behaviour is not documented in RBIL.
However MS-DOS 7.1 acts in same way as FreeDOS so I don't know whether is this
 bug or "feature".

------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to