Z80 未定義命令が、正しく逆アセンブルされるようにした。

Z80.cの中の該当する配列を設定しなおしました。

static char *MnemonicsXCB[256] =
{
  "LD B,RLC (I%@h)","LD C,RLC (I%@h)","LD D,RLC (I%@h)","LD E,RLC (I%@h)","LD H,RLC (I%@h)","LD L,RLC (I%@h)","RLC (I%@h)","LD A,RLC (I%@h)",	// 00
  "LD B,RRC (I%@h)","LD C,RRC (I%@h)","LD D,RRC (I%@h)","LD E,RRC (I%@h)","LD H,RRC (I%@h)","LD L,RRC (I%@h)","RRC (I%@h)","LD A,RRC (I%@h)",
  "LD B,RL (I%@h) ","LD C,RL (I%@h) ","LD D,RL (I%@h) ","LD E,RL (I%@h) ","LD H,RL (I%@h) ","LD L,RL (I%@h) ","RL (I%@h)","LD A,RL (I%@h) ",	// 10
  "LD B,RR (I%@h) ","LD C,RR (I%@h) ","LD D,RR (I%@h) ","LD E,RR (I%@h) ","LD H,RR (I%@h) ","LD L,RR (I%@h) ","RR (I%@h)","LD A,RR (I%@h) ",
  "LD B,SLA (I%@h)","LD C,SLA (I%@h)","LD D,SLA (I%@h)","LD E,SLA (I%@h)","LD H,SLA (I%@h)","LD L,SLA (I%@h)","SLA (I%@h)","LD A,SLA (I%@h)",	// 20
  "LD B,SRA (I%@h)","LD C,SRA (I%@h)","LD D,SRA (I%@h)","LD E,SRA (I%@h)","LD H,SRA (I%@h)","LD L,SRA (I%@h)","SRA (I%@h)","LD A,SRA (I%@h)",
  "LD B,SLL (I%@h)","LD C,SLL (I%@h)","LD D,SLL (I%@h)","LD E,SLL (I%@h)","LD H,SLL (I%@h)","LD L,SLL (I%@h)","SLL (I%@h)","LD A,SLL (I%@h)",	// 30
  "LD B,SRL (I%@h)","LD C,SRL (I%@h)","LD D,SRL (I%@h)","LD E,SRL (I%@h)","LD H,SRL (I%@h)","LD L,SRL (I%@h)","SRL (I%@h)","LD A,SRL (I%@h)",
  
  "BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)","BIT 0,(I%@h)",		// 40
  "BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)","BIT 1,(I%@h)",
  "BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)","BIT 2,(I%@h)",		// 50
  "BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)","BIT 3,(I%@h)",
  "BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)","BIT 4,(I%@h)",		// 60
  "BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)","BIT 5,(I%@h)",
  "BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)","BIT 6,(I%@h)",		// 70
  "BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)","BIT 7,(I%@h)",

  "LD B,RES 0,(I%@h)","LD C,RES 0,(I%@h)","LD D,RES 0,(I%@h)","LD E,RES 0,(I%@h)","LD H,RES 0,(I%@h)","LD L,RES 0,(I%@h)","RES 0,(I%@h)","LD A,RES 0,(I%@h)",	// 80
  "LD B,RES 1,(I%@h)","LD C,RES 1,(I%@h)","LD D,RES 1,(I%@h)","LD E,RES 1,(I%@h)","LD H,RES 1,(I%@h)","LD L,RES 1,(I%@h)","RES 1,(I%@h)","LD A,RES 1,(I%@h)",
  "LD B,RES 2,(I%@h)","LD C,RES 2,(I%@h)","LD D,RES 2,(I%@h)","LD E,RES 2,(I%@h)","LD H,RES 2,(I%@h)","LD L,RES 2,(I%@h)","RES 2,(I%@h)","LD A,RES 2,(I%@h)",	// 90
  "LD B,RES 3,(I%@h)","LD C,RES 3,(I%@h)","LD D,RES 3,(I%@h)","LD E,RES 3,(I%@h)","LD H,RES 3,(I%@h)","LD L,RES 3,(I%@h)","RES 3,(I%@h)","LD A,RES 3,(I%@h)",
  "LD B,RES 4,(I%@h)","LD C,RES 4,(I%@h)","LD D,RES 4,(I%@h)","LD E,RES 4,(I%@h)","LD H,RES 4,(I%@h)","LD L,RES 4,(I%@h)","RES 4,(I%@h)","LD A,RES 4,(I%@h)",	// A0
  "LD B,RES 5,(I%@h)","LD C,RES 5,(I%@h)","LD D,RES 5,(I%@h)","LD E,RES 5,(I%@h)","LD H,RES 5,(I%@h)","LD L,RES 5,(I%@h)","RES 5,(I%@h)","LD A,RES 5,(I%@h)",
  "LD B,RES 6,(I%@h)","LD C,RES 6,(I%@h)","LD D,RES 6,(I%@h)","LD E,RES 6,(I%@h)","LD H,RES 6,(I%@h)","LD L,RES 6,(I%@h)","RES 6,(I%@h)","LD A,RES 6,(I%@h)",	// B0
  "LD B,RES 7,(I%@h)","LD C,RES 7,(I%@h)","LD D,RES 7,(I%@h)","LD E,RES 7,(I%@h)","LD H,RES 7,(I%@h)","LD L,RES 7,(I%@h)","RES 7,(I%@h)","LD A,RES 7,(I%@h)",

  "LD B,SET 0,(I%@h)","LD C,SET 0,(I%@h)","LD D,SET 0,(I%@h)","LD E,SET 0,(I%@h)","LD H,SET 0,(I%@h)","LD L,SET 0,(I%@h)","SET 0,(I%@h)","LD A,SET 0,(I%@h)",	// C0
  "LD B,SET 1,(I%@h)","LD C,SET 1,(I%@h)","LD D,SET 1,(I%@h)","LD E,SET 1,(I%@h)","LD H,SET 1,(I%@h)","LD L,SET 1,(I%@h)","SET 1,(I%@h)","LD A,SET 1,(I%@h)",
  "LD B,SET 2,(I%@h)","LD C,SET 2,(I%@h)","LD D,SET 2,(I%@h)","LD E,SET 2,(I%@h)","LD H,SET 2,(I%@h)","LD L,SET 2,(I%@h)","SET 2,(I%@h)","LD A,SET 2,(I%@h)",	// D0
  "LD B,SET 3,(I%@h)","LD C,SET 3,(I%@h)","LD D,SET 3,(I%@h)","LD E,SET 3,(I%@h)","LD H,SET 3,(I%@h)","LD L,SET 3,(I%@h)","SET 3,(I%@h)","LD A,SET 3,(I%@h)",
  "LD B,SET 4,(I%@h)","LD C,SET 4,(I%@h)","LD D,SET 4,(I%@h)","LD E,SET 4,(I%@h)","LD H,SET 4,(I%@h)","LD L,SET 4,(I%@h)","SET 4,(I%@h)","LD A,SET 4,(I%@h)", // E0
  "LD B,SET 5,(I%@h)","LD C,SET 5,(I%@h)","LD D,SET 5,(I%@h)","LD E,SET 5,(I%@h)","LD H,SET 5,(I%@h)","LD L,SET 5,(I%@h)","SET 5,(I%@h)","LD A,SET 5,(I%@h)",
  "LD B,SET 6,(I%@h)","LD C,SET 6,(I%@h)","LD D,SET 6,(I%@h)","LD E,SET 6,(I%@h)","LD H,SET 6,(I%@h)","LD L,SET 6,(I%@h)","SET 6,(I%@h)","LD A,SET 6,(I%@h)",	// F0
  "LD B,SET 7,(I%@h)","LD C,SET 7,(I%@h)","LD D,SET 7,(I%@h)","LD E,SET 7,(I%@h)","LD H,SET 7,(I%@h)","LD L,SET 7,(I%@h)","SET 7,(I%@h)","LD A,SET 7,(I%@h)",

};

だから、長いって。。(汗)



ちなみに、ビット演算したあとに、指定したレジスタにロードするという特殊な命令。。
なかなか、使わないと思うのですが。。(^^;;
どうなんでしょうか?


あと、BIT命令ですが、下1桁0−8 どれでも同じ命令なんですね。。



ところで、iP6 の場合、DDまたは、FDで始まる命令で、定義されてない命令の場合、頭のDDまたは、FDを無視するようですね。。
それとも、Z80なら、当然の動作?
まぁ、DD CBに関しては、未定義命令で、全部埋まっているけどね。。(^^;;