MAME: Tube devices

discuss bbc micro and electron emulators (including mame) here!
User avatar
hoglet
Posts: 9240
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: MAME: Tube devices

Post by hoglet » Mon Nov 13, 2017 4:25 pm

Just noticed something a little strange....

Your Client ROM trace doesn't seem to match the disassembly on JGH's site for v1.00:
http://mdfs.net/Software/Tube/ARM/v100.zip

And the SHA-1 sum is different:

Code: Select all

dmb@greenhog:~$ wget http://mdfs.net/Software/Tube/ARM/Eval100.rom
dmb@greenhog:~$ sha1sum Eval100.rom
f0b184bb530615daa3fa2f557f1848be30ad3997  Eval100.rom
Where did it originate from?

It's not worth me trying to compare traces until we are running the same ROM!

Can you post it and I'll check it works in PiTubeDirect.

Dave

User avatar
hoglet
Posts: 9240
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: MAME: Tube devices

Post by hoglet » Mon Nov 13, 2017 4:34 pm

Ah, it's this one:
https://github.com/hoglet67/b-em/blob/m ... al_100.rom

Brazil version -.005 (8th August 1986)

I'm now slightly confused as to what this is exactly....

But it does seem to work OK in PiTubeDirect.

To make comparing traces easier, is there any chance you could make a new one:
- without any manual edits (yes, I know it will be big!)
- with a single *HELP and nothing else

Dave

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Mon Nov 13, 2017 5:47 pm

I didn't make any manual edits, this is what the MAME debugger produces by default. I see I can use noloop to disable loop detection.

The attached is using the same Brazil -.005 ROM, with a single *HELP. I now have 7 ROMs that all vary slightly, some more than others, and all have the same outcome.

It has to be something very subtle.
- If the ROM paging was incorrect it wouldn't start.
- If the RAM was incorrect it also wouldn't start and it even detects the correct amount.
- Maybe how the Tube is mapped from 8bit to 32bit? But wouldn't expect it to get as far as it does if this was the case.
Attachments
trace_arm005nl.zip
(963.16 KiB) Downloaded 28 times
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
hoglet
Posts: 9240
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: MAME: Tube devices

Post by hoglet » Mon Nov 13, 2017 6:08 pm

Thanks, I'll work with that trace for now.

It looks like it is actually from v100, as the reset vector jumps to 0x3001730

But that's fine, as we have a disassembly for this version.

Dave

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Mon Nov 13, 2017 7:25 pm

I tried changing how the device starts, by copying the ROM into RAM instead of paging it, and now it works. This isn't how the hardware works so I still need to find out why it failed before and fix it, but I now know where to look.

Thanks for the help, but no need to continue comparing traces.
0031.png
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
hoglet
Posts: 9240
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: MAME: Tube devices

Post by hoglet » Mon Nov 13, 2017 8:25 pm

Pernod wrote:I tried changing how the device starts, by copying the ROM into RAM instead of paging it, and now it works. This isn't how the hardware works so I still need to find out why it failed before and fix it, but I now know where to look.

Thanks for the help, but no need to continue comparing traces.
That's interesting.... because we do the same in PiTubeDirect:
https://github.com/hoglet67/PiTubeDirec ... rm2.c#L184

One thing you might like to try is setting rd/wr watch points on the tube data registers:
- 1000004
- 100000C
- 1000014
- 100001C

You should see a trace like this:

Code: Select all

Mem Wr watchpoint hit at cdf            : 1000004 = a       R1: Reset message
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = 41
Mem Wr watchpoint hit at cdf            : 1000004 = 63
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 6e
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 41
Mem Wr watchpoint hit at cdf            : 1000004 = 52
Mem Wr watchpoint hit at cdf            : 1000004 = 4d
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 53
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 63
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 6e
Mem Wr watchpoint hit at cdf            : 1000004 = 64
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 50
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 63
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 73
Mem Wr watchpoint hit at cdf            : 1000004 = 73
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at f3             : 1000004 = 34
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = 39
Mem Wr watchpoint hit at f3             : 1000004 = 36
Mem Wr watchpoint hit at cdf            : 1000004 = 4b
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 0

Mem Rd watchpoint hit at 28000bb6       : 100001c = 5       R4: Tube Release
Mem Rd watchpoint hit at 8000d86        : 100001c = 80

Mem Rd watchpoint hit at 3000d73        : 100000c = 80      R2: Reset Response - enter language ?

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       R2: OSBYTE A=&87
Mem Wr watchpoint hit at 20000d33       : 100000c = 90
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = 87

Mem Rd watchpoint hit at d73            : 100000c = d
Mem Rd watchpoint hit at d73            : 100000c = 3       Mode 3
Mem Rd watchpoint hit at d73            : 100000c = 20

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       R2: OSBYTE A=&EC
Mem Wr watchpoint hit at 20000d33       : 100000c = 14
Mem Wr watchpoint hit at 20000d33       : 100000c = eb
Mem Wr watchpoint hit at 20000d33       : 100000c = ec

Mem Rd watchpoint hit at 20000d73       : 100000c = b8
Mem Rd watchpoint hit at 20000d73       : 100000c = 0
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 2a
Mem Wr watchpoint hit at f3             : 1000004 = 7f
Mem Wr watchpoint hit at f3             : 1000004 = ab
Mem Wr watchpoint hit at f3             : 1000004 = e
Mem Wr watchpoint hit at f3             : 1000004 = 38
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 3
Mem Wr watchpoint hit at f3             : 1000004 = e
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = e0
Mem Wr watchpoint hit at f3             : 1000004 = b0
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 1
Mem Wr watchpoint hit at f3             : 1000004 = 80
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 1
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = b6
Mem Wr watchpoint hit at f3             : 1000004 = fc
Mem Wr watchpoint hit at f3             : 1000004 = 78
Mem Wr watchpoint hit at f3             : 1000004 = fc
Mem Wr watchpoint hit at f3             : 1000004 = b6
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = 17      VDU 23,255,...
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff

Mem Wr watchpoint hit at d33            : 100000c = 4       OSBYTE A=&03
Mem Wr watchpoint hit at d33            : 100000c = 0
Mem Wr watchpoint hit at d33            : 100000c = 3

Mem Rd watchpoint hit at d73            : 100000c = 14

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&D9
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = d9

Mem Rd watchpoint hit at 20000d73       : 100000c = a2
Mem Rd watchpoint hit at 20000d73       : 100000c = 0
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at d33            : 100000c = 0       OSRDCH

Mem Rd watchpoint hit at d73            : 100000c = 24
Mem Rd watchpoint hit at d73            : 100000c = 48      H

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&DA
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = ff
Mem Wr watchpoint hit at 20000d33       : 100000c = da

Mem Rd watchpoint hit at 20000d73       : 100000c = a3
Mem Rd watchpoint hit at 20000d73       : 100000c = 9
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at f3             : 1000004 = 48      OSWRCH H

Mem Wr watchpoint hit at d33            : 100000c = 0       OSRDCH

Mem Rd watchpoint hit at d73            : 100000c = 22
Mem Rd watchpoint hit at d73            : 100000c = 45      E

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&DA
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = ff
Mem Wr watchpoint hit at 20000d33       : 100000c = da

Mem Rd watchpoint hit at 20000d73       : 100000c = a3
Mem Rd watchpoint hit at 20000d73       : 100000c = 9
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at f3             : 1000004 = 45      OSWRCH E

Mem Wr watchpoint hit at d33            : 100000c = 0       OSRDCH

Mem Rd watchpoint hit at d73            : 100000c = 26
Mem Rd watchpoint hit at d73            : 100000c = 4c      L

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&DA
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = ff
Mem Wr watchpoint hit at 20000d33       : 100000c = da

Mem Rd watchpoint hit at 20000d73       : 100000c = a3
Mem Rd watchpoint hit at 20000d73       : 100000c = 9
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at f3             : 1000004 = 4c      OSWRCH L

Mem Wr watchpoint hit at d33            : 100000c = 0       OSRDCH

Mem Rd watchpoint hit at d73            : 100000c = 28
Mem Rd watchpoint hit at d73            : 100000c = 50      P

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&DA
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = ff
Mem Wr watchpoint hit at 20000d33       : 100000c = da

Mem Rd watchpoint hit at 20000d73       : 100000c = a3
Mem Rd watchpoint hit at 20000d73       : 100000c = 9
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at f3             : 1000004 = 50      OSWRCH P

Mem Wr watchpoint hit at d33            : 100000c = 0       OSRDCH

Mem Rd watchpoint hit at d73            : 100000c = 6
Mem Rd watchpoint hit at d73            : 100000c = d       <cr>

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&DA
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = ff
Mem Wr watchpoint hit at 20000d33       : 100000c = da

Mem Rd watchpoint hit at 20000d73       : 100000c = a3
Mem Rd watchpoint hit at 20000d73       : 100000c = 9
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at cdf            : 1000004 = a       Supervisor 1.00 ....
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = 53
Mem Wr watchpoint hit at cdf            : 1000004 = 75
Mem Wr watchpoint hit at cdf            : 1000004 = 70
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 76
Mem Wr watchpoint hit at cdf            : 1000004 = 69
Mem Wr watchpoint hit at cdf            : 1000004 = 73
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 31
Mem Wr watchpoint hit at cdf            : 1000004 = 2e
Mem Wr watchpoint hit at cdf            : 1000004 = 30
Mem Wr watchpoint hit at cdf            : 1000004 = 30
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 53
Mem Wr watchpoint hit at cdf            : 1000004 = 75
Mem Wr watchpoint hit at cdf            : 1000004 = 70
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 76
Mem Wr watchpoint hit at cdf            : 1000004 = 69
Mem Wr watchpoint hit at cdf            : 1000004 = 73
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d
Mem Wr watchpoint hit at cdf            : 1000004 = 45
Mem Wr watchpoint hit at cdf            : 1000004 = 78
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 63
Mem Wr watchpoint hit at cdf            : 1000004 = 75
Mem Wr watchpoint hit at cdf            : 1000004 = 74
Mem Wr watchpoint hit at cdf            : 1000004 = 69
Mem Wr watchpoint hit at cdf            : 1000004 = 76
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 76
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 72
Mem Wr watchpoint hit at cdf            : 1000004 = 73
Mem Wr watchpoint hit at cdf            : 1000004 = 69
Mem Wr watchpoint hit at cdf            : 1000004 = 6f
Mem Wr watchpoint hit at cdf            : 1000004 = 6e
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 31
Mem Wr watchpoint hit at cdf            : 1000004 = 2e
Mem Wr watchpoint hit at cdf            : 1000004 = 30
Mem Wr watchpoint hit at cdf            : 1000004 = 30
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 28
Mem Wr watchpoint hit at cdf            : 1000004 = 36
Mem Wr watchpoint hit at cdf            : 1000004 = 74
Mem Wr watchpoint hit at cdf            : 1000004 = 68
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 4a
Mem Wr watchpoint hit at cdf            : 1000004 = 75
Mem Wr watchpoint hit at cdf            : 1000004 = 6e
Mem Wr watchpoint hit at cdf            : 1000004 = 65
Mem Wr watchpoint hit at cdf            : 1000004 = 20
Mem Wr watchpoint hit at cdf            : 1000004 = 31
Mem Wr watchpoint hit at cdf            : 1000004 = 39
Mem Wr watchpoint hit at cdf            : 1000004 = 38
Mem Wr watchpoint hit at cdf            : 1000004 = 36
Mem Wr watchpoint hit at cdf            : 1000004 = 29
Mem Wr watchpoint hit at cdf            : 1000004 = a
Mem Wr watchpoint hit at cdf            : 1000004 = d

Mem Wr watchpoint hit at d33            : 100000c = 2       OSCLI
Mem Wr watchpoint hit at d5b            : 100000c = 48      H
Mem Wr watchpoint hit at d5b            : 100000c = 45      E
Mem Wr watchpoint hit at d5b            : 100000c = 4c      L
Mem Wr watchpoint hit at d5b            : 100000c = 50      P
Mem Wr watchpoint hit at 40000d5b       : 100000c = d       <cr>

Mem Rd watchpoint hit at d73            : 100000c = 7f      don't execute

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&87
Mem Wr watchpoint hit at 20000d33       : 100000c = 48
Mem Wr watchpoint hit at 20000d33       : 100000c = b4
Mem Wr watchpoint hit at 20000d33       : 100000c = 87

Mem Rd watchpoint hit at d73            : 100000c = d
Mem Rd watchpoint hit at d73            : 100000c = 3
Mem Rd watchpoint hit at d73            : 100000c = 20

Mem Wr watchpoint hit at 20000d33       : 100000c = 6       OSBYTE A=&EC
Mem Wr watchpoint hit at 20000d33       : 100000c = 14
Mem Wr watchpoint hit at 20000d33       : 100000c = eb
Mem Wr watchpoint hit at 20000d33       : 100000c = ec

Mem Rd watchpoint hit at 20000d73       : 100000c = b8
Mem Rd watchpoint hit at 20000d73       : 100000c = 0
Mem Rd watchpoint hit at 20000d73       : 100000c = 0

Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17      VDU 23,255,... as above
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 2a
Mem Wr watchpoint hit at f3             : 1000004 = 7f
Mem Wr watchpoint hit at f3             : 1000004 = ab
Mem Wr watchpoint hit at f3             : 1000004 = e
Mem Wr watchpoint hit at f3             : 1000004 = 38
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 3
Mem Wr watchpoint hit at f3             : 1000004 = e
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = e0
Mem Wr watchpoint hit at f3             : 1000004 = b0
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = ba
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = aa
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 1
Mem Wr watchpoint hit at f3             : 1000004 = 80
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 1
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at 20000cdf       : 1000004 = 17
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at f3             : 1000004 = 0
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at f3             : 1000004 = b6
Mem Wr watchpoint hit at f3             : 1000004 = fc
Mem Wr watchpoint hit at f3             : 1000004 = 78
Mem Wr watchpoint hit at f3             : 1000004 = fc
Mem Wr watchpoint hit at f3             : 1000004 = b6
Mem Wr watchpoint hit at f3             : 1000004 = 30
Mem Wr watchpoint hit at 20000cdf       : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = 17
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff
Mem Wr watchpoint hit at cdf            : 1000004 = ff

Mem Wr watchpoint hit at d33            : 100000c = 4
Mem Wr watchpoint hit at d33            : 100000c = 0
Mem Wr watchpoint hit at d33            : 100000c = 3
Mem Rd watchpoint hit at d73            : 100000c = 14
Mem Wr watchpoint hit at 20000d33       : 100000c = 6
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = 0
Mem Wr watchpoint hit at 20000d33       : 100000c = d9
Mem Rd watchpoint hit at 20000d73       : 100000c = a2
Mem Rd watchpoint hit at 20000d73       : 100000c = 0
Mem Rd watchpoint hit at 20000d73       : 100000c = 12
Mem Wr watchpoint hit at d33            : 100000c = 0
This might help you see where it's going wrong...

Dave

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Mon Nov 13, 2017 10:03 pm

It's now working with the ROM paging, yay! My problem was using 32bit handlers for the RAM, now using 8bit.

Now which ROMs are known to be good? I have 7 different versions.

Code: Select all

ROM_SYSTEM_BIOS(0, "100jgh", "Executive v1.00 (6th June 1986)")
ROMX_LOAD("Eval100.rom", CRC(e59e469d) SHA1(f0b184bb530615daa3fa2f557f1848be30ad3997) // JGH

ROM_SYSTEM_BIOS(1, "101jgh", "Executive v1.00 (14th August 1986)")
ROMX_LOAD("Eval101.rom", CRC(d6ab1a06) SHA1(3b16cd35dd1d86932499728336547e37d5222ebc) // JGH

ROM_SYSTEM_BIOS(2, "005jgh", "Brazil v-.005 (8th August 1986)")
ROMX_LOAD("Brazil005.rom", CRC(d294f888) SHA1(5b051d0afad9b46a32801aa5ef262536adf2a921)// JGH

ROM_SYSTEM_BIOS(3, "100h", "Executive v1.00 (6th June 1986)")
ROMX_LOAD("ARM Evaluation System 1.00.rom", CRC(cb29a585) SHA1(15e15c78db34cfa22a83689be0de30704b7a4c67) // huininga

ROM_SYSTEM_BIOS(4, "101h", "Executive v1.00 (14th August 1986)")
ROMX_LOAD("ARM Evaluation System 1.01.rom", CRC(cab85473) SHA1(f86bbc4894e62725b8ef22d44e7f44d37c98ac14) // huininga

ROM_SYSTEM_BIOS(5, "100b", "Executive v1.00 (6th June 1986)")
ROMX_LOAD("ARMeval_100h.rom", CRC(ed80462a) SHA1(ba33eaf1a23cfef6fc1b88aa516ca2b3693e69d9) // BeebEm/huininga
	
ROM_SYSTEM_BIOS(6, "005", "Brazil v-.005 (8th August 1986)")
ROMX_LOAD("ARMeval_100.rom", CRC(7c27c098) SHA1(abcc71cbc43489e89a87aac64e67b17daef5895a) // b-em
I've tried most of the available software on the 6 ARM discs and looks good so far. Is there anything else I should be using to give it a thorough test?
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Fri Dec 08, 2017 1:51 pm

Something a little unusual ...
0010.png
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
jgharston
Posts: 4008
Joined: Thu Sep 24, 2009 12:22 pm
Location: Whitby/Sheffield
Contact:

Re: MAME: Tube devices

Post by jgharston » Fri Dec 08, 2017 10:01 pm

hoglet wrote:Just noticed something a little strange....
Your Client ROM trace doesn't seem to match the disassembly on JGH's site for v1.00:
http://mdfs.net/Software/Tube/ARM/v100.zip
There are several versions of various versions(!) of the ARM Client ROM. For instance, the A500 we were looking at at ABUG is also Brazil 005/Supervisor 1.00, but a different "version". It looks very much like people built their own ROM set by including whatever modules they wanted. I think I now have three 005/1.00s, a 0.99 and two 1.01s.

Code: Select all

$ bbcbasic
PDP11 BBC BASIC IV Version 0.32
(C) Copyright J.G.Harston 1989,2005-2020
>_

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Thu Sep 20, 2018 7:30 pm

I'm playing with the ROMs for the Torch Communicator that are for the Master (ABM) and BBC 1770 (ABW), but can't get them to read a floppy. Has anyone used these ROMs on real hardware? Probably an emulation issue, but wondered if I need to do something different for the 1770 controllers.
The CBL and ABL ROMs work fine with the 8271, just 1770 variants I'm having trouble with.
This is MAME running a Master with Torch Communicator and ROM MCP v1.22 (ABM).
0027.png
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
jgharston
Posts: 4008
Joined: Thu Sep 24, 2009 12:22 pm
Location: Whitby/Sheffield
Contact:

Re: MAME: Tube devices

Post by jgharston » Fri Sep 21, 2018 12:13 am

Pernod wrote:
Thu Sep 20, 2018 7:30 pm
I'm playing with the ROMs for the Torch Communicator that are for the Master (ABM) and BBC 1770 (ABW), but can't get them to read a floppy. Has anyone used these ROMs on real hardware? Probably an emulation issue, but wondered if I need to do something different for the 1770 controllers.
The CBL and ABL ROMs work fine with the 8271, just 1770 variants I'm having trouble with.
I had Torches working back at Uni in the late 1980s, but they all had 8271 floppy hardware.

Code: Select all

$ bbcbasic
PDP11 BBC BASIC IV Version 0.32
(C) Copyright J.G.Harston 1989,2005-2020
>_

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Tue Sep 25, 2018 2:32 am

Been looking at the ReCo6502 and now have it running with either a 65C02 or 65C816.
0064.png
0065.png
Configuring the clock with the soft options also works, but still to implement the configuration links and some testing.
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Fri Jun 19, 2020 11:04 pm

Seems to have been awhile since I added any new Tube devices, so taking a look at this...
0246.png
Not quite there with it yet, but is there any software that makes use of it, apart from running BASIC very fast?
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

User avatar
BigEd
Posts: 3102
Joined: Sun Jan 24, 2010 10:24 am
Location: West
Contact:

Re: MAME: Tube devices

Post by BigEd » Sat Jun 20, 2020 1:27 pm

There's a C compiler - but whether it will run on ARM7, I don't know.
viewtopic.php?t=13419

User avatar
Arcadian
Site Admin
Posts: 3340
Joined: Fri Nov 24, 2000 12:16 pm
Contact:

Re: MAME: Tube devices

Post by Arcadian » Sat Jun 20, 2020 1:44 pm

IIRC Greg Cook's rotating BBC Micro demo was written for the ARM7TDMI:

http://regregex.bbcmicro.net/
For a "Complete BBC Games Archive" visit www.bbcmicro.co.uk

User avatar
hjalfi
Posts: 133
Joined: Sat May 13, 2017 11:17 pm
Location: Zürich, Switzelrand
Contact:

Re: MAME: Tube devices

Post by hjalfi » Sat Jun 20, 2020 6:30 pm

What OS does the ARM coprocessor run? Is it a TubeOS-style stub which forwards system calls to the I/O processor?

If so, and if you can find me an emulator, I can probably do you a compiler, given a little work...
David Given
http://cowlark.com

User avatar
Pernod
Posts: 2027
Joined: Fri Jun 08, 2012 11:01 pm
Location: Croydon, UK
Contact:

Re: MAME: Tube devices

Post by Pernod » Tue Jun 23, 2020 12:43 pm

Arcadian wrote:
Sat Jun 20, 2020 1:44 pm
IIRC Greg Cook's rotating BBC Micro demo was written for the ARM7TDMI:

http://regregex.bbcmicro.net/
Thanks for the suggestions. I'm surprised that such a capable copro hasn't been utilised more. Could the Doom port be made to run on this?

A little more progress, but have been stuck with this for a few days now.
It boots, and was able to apply the patch to update the OS to 0.45:
0257.png
But fails to run the beeb35 demo. It's loaded into RAM on the copro but then hangs on an interrupt :?
0248.png
I see it's also supported in the latest BeebEm, but the option to select it is always disabled even though the ROM exists. Does it actually work in BeebEm?

Edit: Think it's time to contact Mr.Sprow.
- Nigel

BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.

Post Reply

Return to “8-bit acorn emulators”