From veswiki
Jump to: navigation, search

The VES has four usable 8-bit data ports in the console, port 0 and 1 that are in the 3850 CPU and port 4 and 5 on one of the 3851 Program Storage Units. These I/O:s are hooked to specific functions as shown in the table below.
When looking at the opcodes we'll see that using the two ports on the CPU requires half the CPU time compared to using Port 4 and 5 on the PSU, this means that you can fetch right hand controller data two cycles faster than from left one which is worth noting if you need to maximize speed.

CPU port 0

0 TIME console button
1 MODE console button
2 HOLD console button
3 START console button
4 - not connected -
5 RAM WRT - A pulse here executes a write to Video RAM.
6 Enable data from controllers, set to 1 while write to Video RAM.
7 - not connected -

CPU port 1

0 Right controller right
1 Right controller left
2 Right controller back
3 Right controller forward
4 Right controller counter clockwise
5 Right controller clockwise
6 Right controller pull
7 Right controller push

Two bits have a second function, they decide the color of a plotted pixel:

6 Write Data0, Indicates that valid data is present for both VRAM ODD0 and EVEN0
7 Write Data1, Indicates that valid data is present for both VRAM ODD1 and EVEN1

PSU port 4

Port 4 has double duties and serve left controller
as well as horizontal video position (X-coordinate).

0 Left controller right
1 Left controller left
2 Left controller back
3 Left controller forward
4 Left controller counter clockwise
5 Left controller clockwise
6 Left controller pull
7 Left controller push


0 Video Select
1 Video Horizontal A
2 Video Horizontal B
3 Video Horizontal C
4 Video Horizontal D
5 Video Horizontal E
6 Video Horizontal F

PSU port 5

Port 5 serves the vertical video position (Y-coordinate) and also sound.

0 Video Vertical A
1 Video Vertical B
2 Video Vertical C
3 Video Vertical D
4 Video Vertical E
5 Video Vertical F
6 Tone AN (beep sound)
7 Tone BN (beep sound)