problems with pin 22-53 arduinomega - processing

Hi, i have a problem with digitalread() using arduinoMega. in pin 22-37 and pins 38-53 are outputs.
MY problem is digitalread() in pins 22-37 should return 1, but it always returns 0 working with processing. This problem working with the software of arduino, its not happen...
here my code in arduino:

void setup(){
  Serial.begin(9600);     
  for(int i = 22; i<=37 ;i++){
    pinMode( i , INPUT);
  }
  for(int i = 38; i<=53 ;i++){
    pinMode( i , OUTPUT);
  }
}
void loop(){  
  for(int i = 22; i<=37 ;i++){    
      if(digitalRead(i) == HIGH ){       
        Serial.println(i);       
      }     
    }
}

this example work fine but in processing not found the digitalread():

import cc.arduino.*;
import processing.serial.*;
Arduino arduino;

void setup() {
  // size(600,600);
  arduino = new Arduino(this, "COM4", 57600);  
  arduino.pinMode(2, Arduino.INPUT);
  for (int i = 22; i<=37 ;i++) {
    arduino.pinMode(i, Arduino.INPUT);
  }
  for (int i = 38; i<=53 ;i++) {
    arduino.pinMode( i, Arduino.OUTPUT);
  }
}
void draw() {
  for (int i = 22; i<=37 ; i++) {    
    if (arduino.digitalRead(i) == Arduino.HIGH) {       
      println("work");      
    }
    //println("pin: "+i+"  "+arduino.digitalRead(i));
  } 
}

the port its fine too...
it works fine if i use one of the pwm pins as input but i dont want to waste them.
so is there a way to get a HIGH with digitalread() on pins 22-37?
thanks!
sorry for mi poor english.

Firmata and the Mega do not play well together. Ditch Firmata and write your own protocol to get data from/to the Arduino.