OP, after adding setup() and loop() functions and defining the s[] array I got your code to compile using the Arduino IDE, however it threw a number of compiler warnings (do you have your compiler preference set for "verbose output"?:

Then, using a different IDE (
UECIDE, same code);I could not even get it to compile, throwing numerous errors:

However I found that by placing the "case 'p'"statements in braces it would compile without errors on
UECIDE.

I next defined an s[] array bsed on your "case" values and wrapped your switch statement in a "for (i=0; i<=7;i++)" loop to make it work--and added Serial.println() commands to each 'case". Here it that code
char s[] = {'d', 'D', 'P', 'p','B', 'b', 'f', 'F'};
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop()
{
// put your main code here, to run repeatedly:
Serial.println("begin 'for'");
for (int i = 0; i <= 7; i++)
{
Serial.print("i = ");
Serial.print(i);
Serial.print(" : s[i]");
Serial.print(" = ");
Serial.print(s[i]);
Serial.print(" ---> ");
switch (s[i]){
case 'D':
Serial.println("case 'D'");
case 'd':
Serial.println("case 'd'");
/* Irrelevant to this problem */
break;
case 'P':
Serial.println("case 'P'");
case 'p':{ // added brace
Serial.println("case 'p'");
byte dot_map[6] = {0, 2, 3, 4, 6, 7}; // <-- This line right here
/* Stuff */
break;} // added brace
case 'B':
Serial.println("case 'B'");
case 'b':
Serial.println("case 'b'");
/* Irrelevant to this problem */
break;
case 'F':
Serial.println("case 'F'");
case 'f':
Serial.println("case 'f'");
asm volatile("nop");
asm volatile("nop");
break;
default:
Serial.println("Incorrect command");
asm volatile("nop");
asm volatile("nop");
break;
}
}
while (true) {}
}
Here is the Serial output of that code:

Notice that the 'D' case just fell through to the 'd' case, the 'P' case passed right through to 'p', and 'B' to 'b', and 'F' to 'f' inside the "for" loop.
Cool says I, next I added braces to all the case statements:
char s[] = {'d', 'D', 'P', 'p','B', 'b', 'f', 'F'};
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop()
{
// put your main code here, to run repeatedly:
Serial.println("begin 'for'");
for (int i = 0; i <= 7; i++)
{
Serial.print("i = ");
Serial.print(i);
Serial.print(" : s[i]");
Serial.print(" = ");
Serial.print(s[i]);
Serial.print(" ---> ");
switch (s[i]){
case 'D':{
Serial.println("case 'D'");}
case 'd':{
Serial.println("case 'd'");
/* Irrelevant to this problem */
break;}
case 'P':{
Serial.println("case 'P'");}
case 'p':{ // added brace
Serial.println("case 'p'");
byte dot_map[6] = {0, 2, 3, 4, 6, 7}; // <-- This line right here
/* Stuff */
break;} // added brace
case 'B':{
Serial.println("case 'B'");}
case 'b':{
Serial.println("case 'b'");
/* Irrelevant to this problem */
break;}
case 'F':{
Serial.println("case 'F'");
}
case 'f':{
Serial.println("case 'f'");
asm volatile("nop");
asm volatile("nop");
break;}
default:{
Serial.println("Incorrect command");
asm volatile("nop");
asm volatile("nop");
break;}
}
}
while (true) {}
}
I knew that would not change anything, but thought it made a nice "next step":

OK, now let's fix it up; add "break;" statements to all "cases" :
char s[] = {'d', 'D', 'P', 'p','B', 'b', 'f', 'F'};
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop()
{
// put your main code here, to run repeatedly:
Serial.println("begin 'for'");
for (int i = 0; i <= 7; i++)
{
Serial.print("i = ");
Serial.print(i);
Serial.print(" : s[i]");
Serial.print(" = ");
Serial.print(s[i]);
Serial.print(" ---> ");
switch (s[i])
{
case 'D':
{
Serial.println("case 'D'");
break;
}
case 'd':
{
Serial.println("case' d'");
/* Irrelevant to this problem */
break;
}
case 'P':
{
Serial.println("case' 'P'");
break;
}
case 'p':
{
Serial.println("case 'p'");
byte dot_map[6] = {0, 2, 3, 4, 6, 7};
/* Stuff */
break;
}
case 'B':
{
Serial.println("case' 'B'");
break;
}
case 'b':
{
Serial.println("case' 'b'");
/* Irrelevant to this problem */
break;
}
case 'F':
{
Serial.println("case' 'F'");
break;
}
case 'f':
{
Serial.println("case''f'");
asm volatile("nop");
asm volatile("nop");
break;
}
default:
{
Serial.println("Incorrect command");
asm volatile("nop");
asm volatile("nop");
break;
}
}
delay(500);
}
while (true) {};
}
Now we're cooking with gas!:

Each "case", and just that "case" executed once in the for loop:
UECIDE has a nice "Autoformat with Artistic Style" plugin which I use all the time to make code more readable.
