Die Version D++ gab es scheinbar nur inoffiziell, und nur als Modul.
In einem ROM-Vergleich zwischen D+ und D++ zeigt sich, dass nur 7 bytes geändert sind (1 davon Checksum).
Im Netz wurde das mal genauer in Assembler untersucht, leider nicht mehr auffindbar, hab mir damals aber eine Notiz gemacht..:
Code:
Start Address: 1612h
D++
0000 A5 4D LDA $4D
0002 C5 CD CMP $CD
0004 90 07 BCC $000D
(If the C flag is 0, then A (unsigned) < NUM (unsigned) and BCC will branch)
D+
0000 A5 CD LDA $CD
0002 C5 4D CMP $4D
0004 B0 07 BCS $000D
(If the C flag is 1, then A (unsigned) >= NUM (unsigned) and BCS will branch)
CMP NUM Compare sets flags as if a subtraction had been carried out. If the value in the accumulator is equal or greater than the compared value, the Carry will be set.
is very similar to:
SEC set carry flag
SBC NUM Subtract memory from accumulator with borrow; A - M - C -> A
A surprisingly common sequence in 6502 code is:
LDA NUM1
CMP NUM2
BCC LABEL
BEQ LABEL
(or something similar) which branches to LABEL when NUM1 <= NUM2. (In this case NUM1 and NUM2 are unsigned numbers.) However, consider the following sequence:
LDA NUM2
CMP NUM1
BCS LABEL
which branches to LABEL when NUM2 >= NUM1, which is the same as NUM1 <= NUM2. Not only that, it's shorter and (in many cases) faster.
Ich habe nun die Änderungen in den Turbo King II und Corona II ROMs eingebaut, und sie funktionieren im CB-Emu.
Auch Micha's Stellungstest bestehen sie mit der Lösezeit für D++.
(Jedoch spielt Corona II noch einen anderen Zug zuerst, scheint eine ältere D+ als TKII zu sein.)
Bei Interesse könnte ich die geänderten ROMs hier publizieren und Franz/hap könnten sie in die Emu's einbauen
Gruss,
bataais