First of all, if you have to do a lot of division, instead of dividing, multiply by the reciprocal. Multiplying is a lot faster than division.
reciprocal = 1.0f / value;
(x * reciprocal) == (x / value)
For texture mapping, you could precalculate the inverse Z1 and Z_delta, and linearly interpolate along there, and that way you wouldn't have to divide for each pixel, only multiply.
Also, for software perspective correct texture mapping, I recommend using the bilinear perspective correct method. This is where you recalculate the the correct coordinates every 8 or 16 pixels and then linearly interpolate between the coords. This is much faster and yields suprisingly decent results. This is what was done in the software rendering portions of Quake and Quake 2.
[This message has been edited by CodeDemon (edited November 22, 1999).]