I made a lot of assumptions since you don't mention the PIC type, osc speed, etc, but something like this should work.
Code:
    y    var byte
    x    var byte
    Loop VAR BYTE       ' used for delay loop
    Time CON 25         ' 60 x 25uS = 1500 uS for PAUSEUS loop
    
    Sensor1 VAR PORTB.7 ' sensor 1 input
    Sensor2 VAR PORTB.6 ' sensor 2 input

    PORTB.4 = 0       ' ununsed output
    PORTB.5 = 0       ' unused output
    TRISB = %11000000 ' RB6, RB7 sensor inputs, rest outputs
    
    OPTION_REG = 0  ' internal pull-ups off
    
    on Interrupt Goto IntService ' where to go on interrupt
    INTCON = %10001000       ' RB port change interrupt enabled
    
Start:
    for x= 0 to 20 
      for y=1 to 50
        PORTB = %00001010
          for Loop = 0 TO 59
           pauseus Time        ' pause 25uS per pass allowing faster interrupt
          next Loop            ' service time (assumes 4MHz osc)
        PORTB = %00001001 
          for Loop = 0 TO 59
           pauseus Time        
          next Loop
        PORTB = %00000101
          for Loop = 0 TO 59
           pauseus Time       
          next Loop
        PORTB = %00000110
          for Loop = 0 TO 59
           pauseus Time
          next Loop
      next y 
    next x
    GOTO Start ' Assumption on my part here?
    
IntService:   ' Object detected by sensors
   Disable
   while (Sensor1=1) AND (Sensor2=1) ' stay here until both return low
   
   ' do something useful here
   
   wend
   INTCON.0 = 0  ' clear RB port change interrupt flag bit
   resume
   Enable        ' return after processing object detection
 
   end
Using RB6 & RB7 as sensor inputs you could have the interrupt generated on change.

The Loop with pauseus cuts down on the time it takes for the polled BASIC interrupt to be serviced.