Error in XMS specification? - emu2 (Developers)
> The error is that forward moves (DF=UP, cld) work properly on overlapping
> destination and source when the *destination* is below the source. This is
> the other way around than what the specification lists. From what I can
> tell, drivers actually implement the forwards movement.
Just fixed this in my fork of emu2.
Quoting the long comment:
The overlap check was the wrong way around. It's likely because
it was incorrectly stated in the XMS specification.
Refer to https://www.bttr-software.de/forum/forum_entry.php?id=15907
Example:
src < dst C=8
SSSSOOOODDDD
12345678
^ copy 1234 to OOOO
^ copy 1234 to DDDD
src > dst C=8
DDDDOOOOSSSS
12345678
^ copy 1234 to DDDD
^ copy 5678 to OOOO
I did correct the check, but also disabled it and instead used memmove for every case. This simplifies the used code a lot. As it so happens, memcpy also worked on our Debian amd64 server, regardless of which way the overlap was, but I understand that this is not a well-behaved assumption.
---
l
Complete thread:
- Error in XMS specification? - ecm, 27.04.2019, 16:16 (Developers)
![Open in board view [Board]](img/board_d.gif)
![Open in mix view [Mix]](img/mix_d.gif)
- Error in XMS specification? - Oso2k, 27.04.2019, 20:20
- Error in XMS specification? - ecm, 27.04.2019, 21:40
- Error in XMS specification? - emu2 - ecm, 09.01.2026, 21:53
- Error in XMS specification? - movp - ecm, 09.01.2026, 22:07
- Error in XMS specification? - movp - bretjohn, 10.01.2026, 00:18
- Error in XMS specification? - movp - ecm, 09.01.2026, 22:07
- Error in XMS specification? - Oso2k, 27.04.2019, 20:20
Mix view