I just now found a neat online one called CircuitLab and put it in there with an LM741 op-amp and it seemed to work:
https://www.circuitlab.com/circuit/smkudj/100ma-10v/
Load it up in CircuitLab and run a DC Sweep simulation. If it saved my sim parameters with the circuit (it looks like it did), a -100mA -> +100mA sweep with voltage output graph should be created.
Don't forget to consider resistor tolerances if you actually build it. V1+V2 is the power supply. The output will clip at V2 so give your op-amp at *least* 10V supply, I gave 12V to be on the safe side. V1 is the voltage offset. The closer to exactly 5V the better, since this will offset the output, so depending on the quality of your voltage source, you may have to trim the 5V line with some resistors.
Another online circuit simulator I like is
https://www.falstad.com/circuit/. That's the one I got the initial diagram I posted. It's really basic, but really easy to use with tons of example circuits and also lets you run and watch the simulation and visualize voltage, current, and scope outputs as it happens. CircuitLab lets you enter op-amp parameters though, the one at falstad does not.
Hope that helps,
J
- - - Updated - - -
Here is an improved version with a buffer on the input (to bring -100mA in closer to 0V out) and a 5V regulator supplying the offset voltage. I don't know enough about regulators to make any statements about the consistency of that 5V, though:
https://www.circuitlab.com/circuit/79ga9g/100ma-10v-2/
You may also want to put a fuse on the input to protect the op-amps if it's a risk. The 741 datasheet says max input voltage is either +/- supply voltage or +/- 15V, whatever is smaller, so that's +/- 12V here, which works out to +/- 240mA input current, so maybe either a 200mA fast blow fuse on one of the current input lines, or mount your op-amps in an IC socket so you can easily replace them if you blow them out.
J