A screenshot (the code for generating screenshots like this is integrated):

The original version uses DMA transfer for writing the general GS registers and lots of assembler for VSync counting, DMA handling and graphics initialization. This might be fast, but it is not good for learning the PS2.
My version uses only one assembler function for writing to a general GS register, which could be written in C, too, but the compiler doesn't generate nice code for the 128 bit operations, so I've implemented it in assember. All the rest is C and easy to understand. No DMA transfer and no interrupt handler are used. You can use this program for learning and quick testing how to use the GS registers, without the need to think about how to setup the GIF tag etc. When you know how to program the GS, you can optimize it later with DMA memory transfer.
Another change is the resolution. For PAL for example I've read that the number of visible lines is 576, which the program now uses and now the stars fills my whole TV screen :-)