Hello,
Someone in MSXVillage pointed to me a strange behaviour of the VRAM in SCREEN8 when using BASIC, in BlueMSX with a "MSX2 french" machine. If you do this program :
10 SCREEN8 20 FOR I=0TO255:VPOKEI,I:NEXTI 30 GOTO30
or this one :
10 SCREEN8 20 FOR I=0TO255:PSET(I,0),I:NEXTI 30 GOTO30
And if you pause BlueMSX and view the VRAM, you'll find that all even values are stored in page 0 (starting at $0000 : 0,2,4,6, ...), and all odd values are stored in page 1 (starting at $10000 : 1,3,5,7, ...). Which is absolutely not what the MSX2 hardware documentation says : every value should be stored in page 0, starting at $0000 (see below). Besides, it's completly illogical, too.
I've not checked, but the guy says that the SCREEN8 command in BASIC enable the bit 3 in R#8, which specifies a 64K VRAM. So it could be a mirroring effect of some kind, although I do not understand why ...
Am I missing Something ????
| Pattern name table | | MSB 7 6 5 4 3 2 1 0 LSB | ------------------------------------------------- +---> 0 | : : : (0,0) : : : | ------------------------------------------------- 1 | : : : (1,0) : : : | ------------------------------------------------- . | | . . | | ------------------------------------------------- | Green level | Red level | Blue level| ------------------------------------------------- . | | . . | | ------------------------------------------------- 255 | : : : (255,0) : : : | ------------------------------------------------- 256 | : : : (0,1) : : : | ------------------------------------------------- . | | . . | | ------------------------------------------------- 54270 | : : : (254,211) : : : | ------------------------------------------------- 54271 | : : : (255,211) : : : | ------------------------------------------------- Expression 4.4 The expression for accessing to the dot at (X,Y) coordinate -------------------------------------- | ADR = X + Y * 256 + base address | --------------------------------------