VDP Command Registers
This page was last modified 03:13, 10 December 2016 by Mars2000you.

WIP

Contents

Control Registers 32 and 33

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 33 and 34.

The Control Register 32 is associated as low table with Control Register 33 as high table. Value of bits 7 to 1 of register 33 is always 0.

Bit 0 of register 33 and all the bits of register 32 can specify the x coordinate of a source for an internal VDP command. This coordinate can vary between 0 and 255 on screens 5, 8, 10 to 12, between 0 and 511 on screens 6 and 7.

Note that on screens 5 and 7, the lower one bit, and on screen 6, the two lower bits are lost with the High Speed Move commands.

These registers are used when executing one of these commands:

  • HMMM (High Speed Move VRAM to VRAM)
  • LMCM (Logical Move VRAM to CPU)
  • LMMM (Logical Move VRAM to VRAM)
  • SRCH
  • POINT

Control Registers 34 and 35

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 35 and 36.

The Control Register 34 is associated as low table with Control Register 35 as high table. Value of bits 7 to 2 of register 35 is always 0.

Bits 1 to 0 of register 35 and all the bits of register 34 can specify the y coordinate of a source for an internal VDP command. This coordinate can vary between 0 and 1023 on screens 5 and 6, between 0 and 511 on screens 7, 8, 10 to 12.

These registers are used when executing one of these commands:

  • YMMM (High Speed Move VRAM to VRAM, Y coordinate only)
  • HMMM (High Speed Move VRAM to VRAM)
  • LMCM (Logical Move VRAM to CPU)
  • LMMM (Logical Move VRAM to VRAM)
  • SRCH
  • POINT

Control Registers 36 and 37

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 37 and 38.

The Control Register 36 is associated as low table with Control Register 37 as high table. Value of bits 7 to 1 of register 37 is always 0.

Bit 0 of register 37 and all the bits of register 36 can specify the x coordinate of a destination for an internal VDP command. This coordinate can vary between 0 and 255 on screens 5, 8, 10 to 12, between 0 and 511 on screens 6 and 7.

These registers are used when executing one of these commands:

  • HMMC (High Speed Move CPU to VRAM)
  • YMMM (High Speed Move VRAM to VRAM, Y coordinate only)
  • HMMM (High Speed Move VRAM to VRAM)
  • HMMV (High Speed Move VDP to VRAM)
  • LMMC (Logical Move CPU to VRAM)
  • LMMM (Logical Move VRAM to VRAM)
  • LMMV (Logical Move VDP to VRAM)
  • LINE
  • PSET

Control Registers 38 and 39

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 39 and 40.

The Control Register 38 is associated as low table with Control Register 39 as high table. Value of bits 7 to 2 of register 39 is always 0.

Bits 1 to 0 of register 39 and all the bits of register 38 can specify the y coordinate of a destination for an internal VDP command. This coordinate can vary between 0 and 1023 on screens 5 and 6, between 0 and 511 on screens 7, 8, 10 to 12.

These registers are used when executing one of these commands:

  • HMMC (High Speed Move CPU to VRAM)
  • YMMM (High Speed Move VRAM to VRAM, Y coordinate only)
  • HMMM (High Speed Move VRAM to VRAM)
  • HMMV (High Speed Move VDP to VRAM)
  • LMMC (Logical Move CPU to VRAM)
  • LMMM (Logical Move VRAM to VRAM)
  • LMMV (Logical Move VDP to VRAM)
  • LINE
  • PSET

Control Registers 40 and 41

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 41 and 42.

The Control Register 40 is associated as low table with Control Register 41 as high table. Value of bits 7 to 1 of register 41 is always 0.

Bit 0 of register 41 and all the bits of register 40 can specify the number of dots on the x-axis for an internal VDP command. In the case of the LINE command, it specifies the long side of a triangle as this command will draw the hypotenuse of this triangle.

Note that on screens 5 and 7, the lower one bit, and on screen 6, the two lower bits are lost with the High Speed Move commands.

These registers are used when executing one of these commands:

  • HMMC (High Speed Move CPU to VRAM)
  • HMMM (High Speed Move VRAM to VRAM)
  • HMMV (High Speed Move VDP to VRAM)
  • LMMC (Logical Move CPU to VRAM)
  • LMCM (Logical Move VRAM to CPU)
  • LMMM (Logical Move VRAM to VRAM)
  • LMMV (Logical Move VDP to VRAM)
  • LINE

Control Registers 42 and 43

These control registers are available on the MSX2/2+ VDP, they can't be read, but only written with the MSX-BASIC instruction VDP(), using the values 43 and 44.

The Control Register 42 is associated as low table with Control Register 43 as high table. Value of bits 7 to 2 of register 43 is always 0.

Bits 1 to 0 of register 43 and all the bits of register 42 can specify the number of dots on the y-axis for an internal VDP command. In the case of the LINE command, it specifies the short side of a triangle as this command will draw the hypotenuse of this triangle.

These registers are used when executing one of these commands:

  • HMMC (High Speed Move CPU to VRAM)
  • YMMM (High Speed Move VRAM to VRAM, Y coordinate only)
  • HMMM (High Speed Move VRAM to VRAM)
  • HMMV (High Speed Move VDP to VRAM)
  • LMMC (Logical Move CPU to VRAM)
  • LMCM (Logical Move VRAM to CPU)
  • LMMM (Logical Move VRAM to VRAM)
  • LMMV (Logical Move VDP to VRAM)
  • LINE