VPOKE means "store in VERA video RAM." This can not be accomplished by a simple STA/STX instruction, as VRAM isn't mapped into the 65C02's address space.
Instead, VRAM is accessed indirectly using the memory-mapped registers at $9F20-$9F25. (Which is exactly what the VPOKE command does behind the scenes, it just hides all the complexity.)
The exact procedure looks something like this:
- Decide whether you are using data port 0 or data port 1, and set the ADDRSEL bit (bit 0) of $9F25 accordingly
- Write bits 0-7 of the VRAM address to $9F20
- Write bits 8-15 of the VRAM address to $9F21
- Write the MSB of the VRAM address to bit 0 of $9F22 [Edit: Original post said $9F21] (optionally: set the increment/decrement bits)
- Write the desired value to $9F23 (data port 0) or $9F24 (data port 1), depending on your choice in step 1
By the way, you say "poke to the VERA registers," but the addresses you VPOKE in the example (1 and 2) are not the locations of any VERA registers.