A simple VHDL circuit won't display initial value
You are initializing "counter : integer range 0 to 7 := 0;" 

So initially the value of counter = 0000000. So at the start of this loop 

begin
HEX0 &lt;= SEVENSEG(counter);
wait until SW = '0';
counter &lt;= counter + 1;
end process;


counter is all zeros. So obviously it will display 8 on 7-seg. Try using

counter : integer range 0 to 7 := "0001000"


This will set your counter value to A initially.