DOSBox-X branch

Here you can discuss the development of patches.

Re: DOSBox-X branch

Postby pantercat » 2019-11-02 @ 10:45

Hi, still having same SM bug with 0.82.23 :( at least on my system: Debian x64 and dosbox-x compiled with ./build-debug

sm segment:offset af -> byte becomes 00
sm segment:offset bf -> byte becomes BF (OK)
sm segment:offset cf -> byte becomes 00
sm segment:offset df -> byte becomes 00
sm segment:offset ef -> byte becomes EF (OK)
sm segment:offset ff -> byte becomes FF (OK)

Same behaviour with "sm segment offset" syntax.

If you need more details or something you can ask, or if I can do something for fixing it.

Regards.
pantercat
Newbie
 
Posts: 46
Joined: 2018-9-06 @ 17:22

Re: DOSBox-X branch

Postby hail-to-the-ryzen » 2019-11-29 @ 06:45

It may not be reproducible, but where a large time delay occurs at startup (such as loading cd audio), then sometimes movement of the parent window before the shell loads will lead to a sudden exit.
hail-to-the-ryzen
Member
 
Posts: 347
Joined: 2017-3-09 @ 01:34

Re: DOSBox-X branch

Postby pantercat » 2019-12-04 @ 12:39

Well, I've manage to locate where the problem is.

For anyone interested the following patch will let you write bytes AC, AF, CF and DF in memory.

Code: Select all
--- debug.cpp.ORIG   2019-12-01 01:27:21.000000000 +0100
+++ debug.cpp   2019-12-04 13:19:02.243257342 +0100
@@ -1330,10 +1330,6 @@
     else if (strncmp(hex, "FS", 2) == 0) { hex += 2; regval = SegValue(fs); }
     else if (strncmp(hex, "GS", 2) == 0) { hex += 2; regval = SegValue(gs); }
     else if (strncmp(hex, "SS", 2) == 0) { hex += 2; regval = SegValue(ss); }
-    else if (strncmp(hex, "AC", 2) == 0) { hex += 2; regval = GETFLAG(AC); }
-    else if (strncmp(hex, "AF", 2) == 0) { hex += 2; regval = GETFLAG(AF); }
-    else if (strncmp(hex, "CF", 2) == 0) { hex += 2; regval = GETFLAG(CF); }
-    else if (strncmp(hex, "DF", 2) == 0) { hex += 2; regval = GETFLAG(DF); }
     else if (strncmp(hex, "ID", 2) == 0) { hex += 2; regval = GETFLAG(ID); }
     else if (strncmp(hex, "IF", 2) == 0) { hex += 2; regval = GETFLAG(IF); }
     else if (strncmp(hex, "NT", 2) == 0) { hex += 2; regval = GETFLAG(NT); }


When I type "SM some:addr XX" I want to write opcode XX in memory, not 0 or 1 based on some flag value for XX=AC, AF, CF or DF.

Patch tested with last dosbox-x release: 0.82.24

Happy debugging :)
pantercat
Newbie
 
Posts: 46
Joined: 2018-9-06 @ 17:22

Re: DOSBox-X branch

Postby ripsaw8080 » 2019-12-04 @ 21:30

I believe the register/flag name parsing was originally intended to be for SR only, not for SM.

Does it work to write register values into memory (e.g. SM 0000:0200 AX)? If so, it may have been intended as a feature, but the collision between flag names and hex values could have been overlooked.
User avatar
ripsaw8080
DOSBox Author
 
Posts: 4434
Joined: 2006-4-25 @ 23:24

Re: DOSBox-X branch

Postby pantercat » 2019-12-05 @ 23:05

Yes, you can write register values into memory.
pantercat
Newbie
 
Posts: 46
Joined: 2018-9-06 @ 17:22

Re: DOSBox-X branch

Postby TheGreatCodeholio » 2019-12-09 @ 07:22

Found a bug in INT 10h AX=101Ah that was fixed for a game.

The function in DOSBox behind it reads the Attribute Controller in a way that leaves the screen blank.

You'd never notice in DOSBox SVN because SVN does not correctly emulate the display blanking caused by attribute controller programming (bit 5).

Prior to the change the function INT10_GetDACPage() was exactly the same in DOSBox-X as it was for DOSBox SVN.

https://github.com/joncampbell123/dosbox-x/issues/1362
DOSBox-X project: more emulation better accuracy.
DOSLIB and DOSLIB2: Learn how to tinker and hack hardware and software from DOS.
User avatar
TheGreatCodeholio
Oldbie
 
Posts: 695
Joined: 2011-8-18 @ 20:15
Location: Seattle, WA

Previous

Return to DOSBox Patches

Who is online

Users browsing this forum: No registered users and 2 guests