I haven't expect that somebody on this forum doesn't understand "seges lea
di,A" instruction. So explanation:
LEA DI,a - load address of A into DS:DI
SEGES LEA DI,a load address of A into ES:DI
---------- Původní zpráva ----------
Od: Tom Ehlert <t...@drivesnapshot.de>
Datum: 30. 11. 2012
Předmět: Re: [Freedos-devel] undocumented behaviour in INT21h/AX=6501h
"Hi,
> 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".
it's simply a bug in your program.
ES:DI -> country information buffer (see #01750)
but your code does not load ES. so ES most likely points 'somewhere'
where you don't expect it.
push ss
pop es
should work (otherwise use a debugger)
> If A is assigned to constant value (for i:=0 to 255 do a[i]:=2) it works.
because your smart compiler turns this into something like
push ss
pop es
mov cx,256
mov al,2
rep stosb
and now es points to right segment.
Tom
> --------------------------------------------------------------------------
----
> Keep yourself connected to Go Parallel:
> TUNE You got it built. Now make it sing. Tune shows you how.
> http://goparallel.sourceforge.net(http://goparallel.sourceforge.net)
> _______________________________________________
> Freedos-devel mailing list
> Freedos-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freedos-devel
(https://lists.sourceforge.net/lists/listinfo/freedos-devel)
Mit freundlichen Grüßen/Kind regards
Tom Ehlert
+49-241-79886
----------------------------------------------------------------------------
--
Keep yourself connected to Go Parallel:
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net(http://goparallel.sourceforge.net)
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel
(https://lists.sourceforge.net/lists/listinfo/freedos-devel)"
------------------------------------------------------------------------------
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