nextreg *r, *n:
It does test four NextRegister by writing/reading the value: LAYER2_XOFFSET_NR_16, VIDEO_INTERUPT_VALUE_NR_23, PALETTE_INDEX_NR_40, SPRITE_TRANSPARENCY_I_NR_4B
(it's enough just to store and then return the same value for the test, it's not testing if the next register actual functionality is implemented)
And your machine does also modify value written to I/O port 243B (value TRANSPARENCY_FALLBACK_COL_NR_4A is written there) - it should be not modified, "nextreg" instructions are independent from what is done directly to the $243B and $253B I/O ports.
So to simplify when the test did stop:
out ($243B),$4A
nextreg $16,$01
assert $4A == in ($243B) ; fails (is different)
assert $01 == nextreg_16 ; fails (is $00)
I guess the nextreg *r, A is the same issue.
-------------
OUTINB:
I/O port $243B is used for the test
out ($243B),$00
assert $00 == in ($243B) ; fails, reads $FF
-------------
JP (C):
Again depends on correct functionality of $243B / $253B, jumps to wrong address if port returns $FF instead of $00.





Ответить с цитированием