Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
03844 Debugger Minor Always May 10, 2010, 19:04 May 22, 2011, 15:16
Tester Luigi30 View Status Public Platform MAME (Self-compiled)
Assigned To couriersud Resolution Fixed OS Windows Vista/7 (32-bit)
Status [?] Resolved Driver
Version 0.137u4 Fixed in Version 0.138u1 Build Debug
Fixed in Git Commit Github Pull Request #
Summary 03844: All sets in harddriv.c: TMS34010 memory window jumps to weird addresses when trying to view memory
Description When using the memory display window to view the contents of memory, the addresses that it displays don't match the one you put in.

If you put in address 0000000F, it goes to 00000078.

If you put in address 00D04385, it goes to 06821BA8.

If you put in address FFF95CD0, it goes to FFFFFFFF.
Steps To Reproduce
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems All sets in harddriv.c
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
10
User avatar
No.06077
Tafoid
Administrator
May 10, 2010, 21:04
There is a shifting of your input (by x8). This might or might not be by design - I'll leave this open to have Aaron or someone else familiar to the CPU to comment.
User avatar
No.06078
Haze
Senior Tester
May 10, 2010, 22:54
I seem to remember the TMS can address in bits, rather than bytes... (correct me if I'm wrong, but that would explain ths shifting)
User avatar
No.06105
Luigi30
Tester
May 13, 2010, 01:35
edited on: May 13, 2010, 01:48
Memory searches don't work either. Even if I search for a word that's showing in the debugger at the location in the program it always reports no results.

Memory dumps are 1/8 the size you specify, too. There's a stray 8 somewhere in the 34010 debugger code.
User avatar
No.06106
Haze
Senior Tester
May 13, 2010, 03:03
As I said, I think it's somewhat intentional, the addresses are in *bits*, not *bytes*
User avatar
No.06107
Luigi30
Tester
May 13, 2010, 03:43
edited on: May 13, 2010, 03:44
It's inconsistent, though. The "save" command works at the address specified (if you give it FF800000, you get memory starting at FF800000), but it saves 1/8 the memory you want. The memory window multiplies your address by 8 before jumping to it. I don't think you're supposed to have to guess whether it wants a number, a number multiplied by 8, or a number divided by 8 when entering a debugger command.
User avatar
No.06120
couriersud
Developer
May 16, 2010, 00:22
edited on: May 16, 2010, 00:25
Within the tms34010 core, an "address" is not identical to a "byte-position". Memory at byte offset 2 is at "address" 0x10 and memory at offset 0x80 is at "adress" 0x400. I have fixed the memory window issue now. This was indeed a bug. Entering "curpc" would not work. The save is just intended functionality. Saving "addresses" from 0x0000 to 0x0400 will save a range of 0x80 bytes.
The whole behaviour is governed by:

case DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 3; break;
 in tms34010.c

I left the status on "direction needed" since it is a somewhat philosophical question whether the debugger should work on byte offsets or on "addresses" as implied by the cpu model. Both approaches have pros and cons, no free lunch.
User avatar
No.06121
Luigi30
Tester
May 16, 2010, 17:17
Either way if you want to save a memory region of length 400000 at FF800000, MAME doesn't know the difference and won't let you save it if you put in 2000000 (400000 * 8). It just saves a 0-byte file since it thinks the length is invalid.
User avatar
No.06123
couriersud
Developer
May 16, 2010, 18:03
edited on: May 16, 2010, 18:03
Hmm, "dump t.dmp,FF800000,800000" will dump from FF800000 to FFFFFFFF
and "dump t.dmp,FF800000,400000" will dump from FF800000 to FFBFFFFF
Since the lower three bits *may* be used to address individuals bits, 16 bytes of memory translate into address increments of 0x80 (0x10<<3) in the dump file.
Whats wrong here?
User avatar
No.06124
Luigi30
Tester
May 16, 2010, 18:14
edited on: May 16, 2010, 18:14
I was getting confused. The dump file increments each line by 80 while my hex editor counts each line of the sav file by 10.
User avatar
No.06180
couriersud
Developer
May 25, 2010, 22:07
The issue is now fixed. Any discussion on general address handling should be taken to the list.