[solved] low current from i/o pins. fried?

Hi folks,
Day 2 here with my first Arduino Uno board. I tried controlling 4 relays in an 8-relay module (this relay here: http://arduino-direct.com/sunshop/index.php?l=product_detail&p=156) using digital i/o pins 2-5 for the signal, and it worked fine for a bit. I didn't have a separate power supply for the relay, so I connected gnd on the relay to gnd on the Uno, and vcc on the relay to 5V on the Uno. I didn't realize that each relay drew 80mA for a total of 320mA and that the Uno can't handle that. I only had all 4 relays activated together for one second a few times in a row, but it seems to have done some damage: now pins 2-12 are only supplying very low current, barely enough to make an LED light up visibly, and not enough to activate a relay. Voltage through the faulty i/o pins is normal. Only pin 13 works normally.

Have I done permanent damage?

I'm sure this general question has been asked before but I havent been able to find where, so thanks for humoring me.

Did you forget pinMode(pin, OUTPUT)? If you do the digitalWrite(pin, HIGH) will just enable a pull-up resistor on the input pin. This will provide a weak current.

Yes! you nailed it. Wish I had caught that myself. Very helpful though to know about that pull-up resistor and the associated weak current. Thanks so much for the help!

kaleem:
I didn't realize that each relay drew 80mA for a total of 320mA and that the Uno can't handle that.

Just to be clear, that each I/O pin has an absolute max of 40mA. The ATmega328's absolute max is 200mA.

It is never recommended to operate all the way up to absolute max.