- {
- b++;
- switch (*(b++))
- {
- case 'd': // Rd .... ...d dddd .... 0<=d<=31
- if (!get_name(data= (code&0x01f0)>>4, sfr_tbl(), temp))
- sprintf(temp, "r%d", data);
- break;
- case 'D': // Rd .... .... dddd .... 16<=d<=31
- if (!get_name(data= 16+((code&0xf0)>>4), sfr_tbl(), temp))
- sprintf(temp, "r%d", data);
- break;
- case 'K': // K .... KKKK .... KKKK 0<=K<=255
- sprintf(temp, "%d", ((code&0xf00)>>4)|(code&0xf));
- break;
- case 'r': // Rr .... ..r. .... rrrr 0<=r<=31
- if (!get_name(data= ((code&0x0200)>>5)|(code&0x000f),
- sfr_tbl(), temp))
- sprintf(temp, "r%d", data);
- break;
- case '2': // Rdl .... .... ..dd .... dl= {24,26,28,30}
- if (!get_name(data= 24+(2*((code&0x0030)>>4)),
- sfr_tbl(), temp))
- sprintf(temp, "r%d", data);
- break;
- case '6': // K .... .... KK.. KKKK 0<=K<=63
- sprintf(temp, "%d", ((code&0xc0)>>2)|(code&0xf));
- break;
- case 's': // s .... .... .sss .... 0<=s<=7
- sprintf(temp, "%d", (code&0x70)>>4);
- break;
- case 'b': // b .... .... .... .bbb 0<=b<=7
- sprintf(temp, "%d", code&0x7);
- break;
- case 'k': // k .... ..kk kkkk k... -64<=k<=+63
- {
- int k= (code&0x3f8)>>3;
- if (code&0x200)
- k|= -128;
- sprintf(temp, "0x%06x", k+1+(signed int)addr);
- break;
- }
- case 'A': // k .... ...k kkkk ...k 0<=k<=64K
- // kkkk kkkk kkkk kkkk 0<=k<=4M
- sprintf(temp, "0x%06x",
- (((code&0x1f0)>>3)|(code&1))*0x10000+
- (uint)get_mem(MEM_ROM, addr+1));
- break;
- case 'P': // P .... .... pppp p... 0<=P<=31
- data= (code&0xf8)>>3;
- if (!get_name(data+0x20, sfr_tbl(), temp))
- sprintf(temp, "%d", data);
- break;
- case 'p': // P .... .PP. .... PPPP 0<=P<=63
- data= ((code&0x600)>>5)|(code&0xf);
- if (!get_name(data+0x20, sfr_tbl(), temp))
- sprintf(temp, "%d", data);
- break;
- case 'q': // q ..q. qq.. .... .qqq 0<=q<=63
- sprintf(temp, "%d",
- ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&7));
- break;
- case 'R': // k SRAM address on second word 0<=k<=65535
- sprintf(temp, "0x%06x", (uint)get_mem(MEM_ROM, addr+1));
- break;
- case 'a': // k .... kkkk kkkk kkkk -2k<=k<=2k
- {
- int k= code&0xfff;
- if (code&0x800)
- k|= -4096;
- sprintf(temp, "0x%06lx",
- (k+1+(signed int)addr) % rom->size);
- break;
- }
- default:
- strcpy(temp, "?");
- break;
- }
- t= temp;
- while (*t)
- *(p++)= *(t++);
- }
+ {
+ b++;
+ switch (*(b++))
+ {
+ case 'd': // Rd .... ...d dddd .... 0<=d<=31
+ if (!get_name(data= (code&0x01f0)>>4, sfr_tbl(), temp))
+ sprintf(temp, "r%d", data);
+ break;
+ case 'D': // Rd .... .... dddd .... 16<=d<=31
+ if (!get_name(data= 16+((code&0xf0)>>4), sfr_tbl(), temp))
+ sprintf(temp, "r%d", data);
+ break;
+ case 'K': // K .... KKKK .... KKKK 0<=K<=255
+ sprintf(temp, "%d", ((code&0xf00)>>4)|(code&0xf));
+ break;
+ case 'r': // Rr .... ..r. .... rrrr 0<=r<=31
+ if (!get_name(data= ((code&0x0200)>>5)|(code&0x000f),
+ sfr_tbl(), temp))
+ sprintf(temp, "r%d", data);
+ break;
+ case '2': // Rdl .... .... ..dd .... dl= {24,26,28,30}
+ if (!get_name(data= 24+(2*((code&0x0030)>>4)),
+ sfr_tbl(), temp))
+ sprintf(temp, "r%d", data);
+ break;
+ case '6': // K .... .... KK.. KKKK 0<=K<=63
+ sprintf(temp, "%d", ((code&0xc0)>>2)|(code&0xf));
+ break;
+ case 's': // s .... .... .sss .... 0<=s<=7
+ sprintf(temp, "%d", (code&0x70)>>4);
+ break;
+ case 'b': // b .... .... .... .bbb 0<=b<=7
+ sprintf(temp, "%d", code&0x7);
+ break;
+ case 'k': // k .... ..kk kkkk k... -64<=k<=+63
+ {
+ int k= (code&0x3f8)>>3;
+ if (code&0x200)
+ k|= -128;
+ sprintf(temp, "0x%06x", k+1+(signed int)addr);
+ break;
+ }
+ case 'A': // k .... ...k kkkk ...k 0<=k<=64K
+ // kkkk kkkk kkkk kkkk 0<=k<=4M
+ sprintf(temp, "0x%06x",
+ (((code&0x1f0)>>3)|(code&1))*0x10000+
+ (uint)get_mem(MEM_ROM_ID, addr+1));
+ break;
+ case 'P': // P .... .... pppp p... 0<=P<=31
+ data= (code&0xf8)>>3;
+ if (!get_name(data+0x20, sfr_tbl(), temp))
+ sprintf(temp, "%d", data);
+ break;
+ case 'p': // P .... .PP. .... PPPP 0<=P<=63
+ data= ((code&0x600)>>5)|(code&0xf);
+ if (!get_name(data+0x20, sfr_tbl(), temp))
+ sprintf(temp, "%d", data);
+ break;
+ case 'q': // q ..q. qq.. .... .qqq 0<=q<=63
+ sprintf(temp, "%d",
+ ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&7));
+ break;
+ case 'R': // k SRAM address on second word 0<=k<=65535
+ sprintf(temp, "0x%06x", (uint)get_mem(MEM_ROM_ID, addr+1));
+ break;
+ case 'a': // k .... kkkk kkkk kkkk -2k<=k<=2k
+ {
+ int k= code&0xfff;
+ if (code&0x800)
+ k|= -4096;
+ sprintf(temp, "0x%06"_A_"x",
+ rom->validate_address(k+1+(signed int)addr));
+ break;
+ }
+ default:
+ strcpy(temp, "?");
+ break;
+ }
+ t= temp;
+ while (*t)
+ *(p++)= *(t++);
+ }