pgm_read_byte doesn't work

The way your array is defined appears to give strange results. This modified version works, and note that only the progmem access works, not the direct access.

byte PROGMEM BitMap  [8] = {  22, 33, 44, 55, 66, 77, 88, 99 };
 
void setup() 
  {
  Serial.begin(115200);
  }

void loop()
  {
  for (int i = 0; i < 8; i++)
    {
    Serial.print(BitMap[i]);
    Serial.print("    ");
    Serial.print(pgm_read_byte (&BitMap[i]));
    Serial.println ();
    }
  while (true);  // loop forever
  }

Output:

0    22
0    33
184    44
0    55
0    66
0    77
1    88
0    99