UISP is a tool for AVR (and AT89S) microcontrollers which can interface to many hardware in-system programmers.
UISP was written to work in a GNU/Linux environment, but can also run inside Microsoft Windows systems, by using Cygwin.
UISP allows you to program your microcontroller through the parallel port of your computer. You can use any of the many wirings available.
First, download and install it. Once you're done, you have to find out which cable you are using. If you are using Stk200, you would do:
you@there:~$ uisp -dprog=stk200
This command will try to recognize which microcontroller you are using, and show that information on screen. This does not work with all the programmers. In that case, you need to specify the -dpart parameter.
To be able to use UISP, you'll need to have access to the parallel (or serial, for the serial cables) port. If you don't, you'll need to be root.
Once the chip recognition is successful, you can then download, upload or verify the data in the chip's memory. Please consult the manpage on the different options available.
UISP can program AT89S51, AT89S52, and AT89S8252, with any of the cables supported for AVR. But you have to include the special parameter -d89. If you are using, for example, the "Atmel-ISP Download Cable" you would issue:
you@there:~$ uisp -dprog=atdh -d89
And UISP will tell you if it could recognize your chip.