Have you checked your displaying on seven segments only ?
For displaying, I expected printf() or IOWR... or user function.
your# define hex_base_address 0x00021000 may be wrong : it depends of your generated SOPC (I think you are using Altera example for DE2 board). In
system.h (generated by sopc builder for quartus version <= 9.1) (or equivalent) you should look at, there are already# DEFINE for hardware.
You should use IO_WR... functions : I think it takes care of wait time, delay, time hold... (I am not sure at 100%)
Printf() your "list1" so as to see its value.
The same
"list1" doesn't change within you superloop (while(1))
++