For those who like to program following the platform standard, probably met the doubt about where are the VDP ports instead hardcoding them in the code.
Well, here is the response:
1) We can get the base ports from BIOS http://map.grauw.nl/resources/msxsystemvars.php where, for the next point:
VDP.DR = n
VDP.DW = n'
2) From them, we can get all the others with http://www.konamiman.com/msx/msx2th/th-4a.txt look at section 1.3, table 4.3:
----------------------------------------------------------------------
| Port | Address | Function |
|-----------------+---------+----------------------------------------|
| port #0 (READ) | n | read data from VRAM |
| port #0 (WRITE) | n' | write data to VRAM |
| port #1 (READ) | n + 1 | read status register |
| port #1 (WRITE) | n'+ 1 | write to control register |
| port #2 (WRITE) | n'+ 2 | write to palette register |
| port #3 (WRITE) | n'+ 3 | write to indirectly specified register |
----------------------------------------------------------------------
Remember that we already have n and n' from before.
3) Use the indirect port access Z80 instruction: in/out (C), r instead the hardcoded one, putting in C the port number.