[Coco] Apparent discrepancy between MAME and XRoar re: SBCB instruction
Barry Nelson
barry.nelson at amobiledevice.com
Tue Oct 17 20:28:46 EDT 2017
> Pierre Sarrazin
> Tue Oct 17 19:22:57 EDT 2017
>
> Hi folks,
>
> I seem to have found a difference in the way the SBCB instruction
> executes on MAME (0.158) and XRoar (0.34.7), unless I'm doing something
> wrong without realizing it.
>
> I would like to know which emulator is right. I don't have easy access
> to my real CoCo, so I wondered if anyone here could run the following
> program and tell me which number appears on the line before the final
> OK prompt (on the 32x16 screen).
>
> 10 DATA5F,1C,00,1A,01,C2,FF
> 20 DATA34,01,35,02,B7,04,00,39
> 30 FORI=0TO14:READH$
> 40 POKE&H3800+I,VAL("&H"+H$)
> 50 NEXT
> 60 CLS:PRINT
> 70 EXEC&H3800
> 80 PRINTPEEK(1024)AND15
>
> On MAME 0.158, it's 7 while on XRoar, it's 5. This value shows the N, Z,
> V and C flags that result from the SBCB instruction. The two values mean
> that MAME's SBCB set the V (overflow) flag to 1, while XRoar set it to 0.
>
> I also tested on MAME 0.140, and it gave 5, interestingly.
>
> A test on the latest MAME would also be useful.
>
> The assembly source is the following:
>
> org $3800
>
> start
> clrb
> andcc #$00 ; clear all flags
> orcc #$01 ; set carry
> sbcb #$FF ; $00 - $ff - 1 = $00
> pshs cc
> puls a
> sta $400 ; store resulting CC on 32x16 screen
> rts
>
> end start
>
> It can be assembled with LWTOOLS like this:
> lwasm -fdecb -o sbc.bin sbc.asm
>
> I also prepared a disk image with the Basic program on it:
> http://sarrazip.com/dev/sbc.dsk <http://sarrazip.com/dev/sbc.dsk>
>
> Thanks.
On my CoCo 1 I get an inverse E and below that, a result of 5, but on MAME 0.187 I get an inverse G and below that, a result of 7, so yes, MAME has another bug.
More information about the Coco
mailing list