iP6 Plus に、Z80の未定義命令(ビット・ローテーと関係)を追加した。

CodesXCB.h に、下記のコードを追加しただけですわっ


ちなみに、CodesXCB.hって、switch case のcase だけが書いてあるだけ。。(汗)


Z80.cのコードの途中のswitch の途中で、#include "CodesXCB.h"しているんですにょ。

hoge() 
{
switch(hoge)
  {
#include "CodesXCB.h"
  }
}

なんで、そんなところで、#include しているんだ。。不思議だったんだけど、
IXレジスタと、IYレジスタの両方で、同じコードを使い回ししたいからだったということに気づきました。

そうなのか。。


ちなみに、命令自体は、IX+dのメモリーの内容を読み込んで、ローテーと演算か、ビット演算して、それを、指定したレジスターに代入する。
という、かなり、変わった命令だったり。。(汗)


こんな命令って、なかなか使わないよねぇ。。(^^;;


でも、caseが増えてくると、だんだん、実行速度が遅くなってくるんだよねぇ。。(汗)
本当は、テーブルジャンプにしたほうがいいんだけど。。。(汗)

case RLC_B:   I=M_RDMEM(J.W);M_RLC(I);R.BC.B.h = I; break;	//Undefined op code
case RLC_C:   I=M_RDMEM(J.W);M_RLC(I);R.BC.B.l = I; break;	//Undefined op code
case RLC_D:   I=M_RDMEM(J.W);M_RLC(I);R.DE.B.h = I; break;	//Undefined op code
case RLC_E:   I=M_RDMEM(J.W);M_RLC(I);R.DE.B.l = I; break;	//Undefined op code
case RLC_H:   I=M_RDMEM(J.W);M_RLC(I);R.HL.B.h = I; break;	//Undefined op code
case RLC_L:   I=M_RDMEM(J.W);M_RLC(I);R.HL.B.l = I; break;	//Undefined op code
case RLC_A:   I=M_RDMEM(J.W);M_RLC(I);R.AF.B.h = I; break;	//Undefined op code

case RRC_B:   I=M_RDMEM(J.W);M_RRC(I);R.BC.B.h = I; break;	//Undefined op code
case RRC_C:   I=M_RDMEM(J.W);M_RRC(I);R.BC.B.l = I; break;	//Undefined op code
case RRC_D:   I=M_RDMEM(J.W);M_RRC(I);R.DE.B.h = I; break;	//Undefined op code
case RRC_E:   I=M_RDMEM(J.W);M_RRC(I);R.DE.B.l = I; break;	//Undefined op code
case RRC_H:   I=M_RDMEM(J.W);M_RRC(I);R.HL.B.h = I; break;	//Undefined op code
case RRC_L:   I=M_RDMEM(J.W);M_RRC(I);R.HL.B.l = I; break;	//Undefined op code
case RRC_A:   I=M_RDMEM(J.W);M_RRC(I);R.AF.B.h = I; break;	//Undefined op code

case RL_B:    I=M_RDMEM(J.W);M_RL(I); R.BC.B.h = I; break;	//Undefined op code
case RL_C:    I=M_RDMEM(J.W);M_RL(I); R.BC.B.l = I; break;	//Undefined op code
case RL_D:    I=M_RDMEM(J.W);M_RL(I); R.DE.B.h = I; break;	//Undefined op code
case RL_E:    I=M_RDMEM(J.W);M_RL(I); R.DE.B.l = I; break;	//Undefined op code
case RL_H:    I=M_RDMEM(J.W);M_RL(I); R.HL.B.h = I; break;	//Undefined op code
case RL_L:    I=M_RDMEM(J.W);M_RL(I); R.HL.B.l = I; break;	//Undefined op code
case RL_A:    I=M_RDMEM(J.W);M_RL(I); R.AF.B.h = I; break;	//Undefined op code

case RR_B:    I=M_RDMEM(J.W);M_RR(I); R.BC.B.h = I; break;	//Undefined op code
case RR_C:    I=M_RDMEM(J.W);M_RR(I); R.BC.B.l = I; break;	//Undefined op code
case RR_D:    I=M_RDMEM(J.W);M_RR(I); R.DE.B.h = I; break;	//Undefined op code
case RR_E:    I=M_RDMEM(J.W);M_RR(I); R.DE.B.l = I; break;	//Undefined op code
case RR_H:    I=M_RDMEM(J.W);M_RR(I); R.HL.B.h = I; break;	//Undefined op code
case RR_L:    I=M_RDMEM(J.W);M_RR(I); R.HL.B.l = I; break;	//Undefined op code
case RR_A:    I=M_RDMEM(J.W);M_RR(I); R.AF.B.h = I; break;	//Undefined op code

case SLA_B:   I=M_RDMEM(J.W);M_SLA(I);R.BC.B.h = I; break;	//Undefined op code
case SLA_C:   I=M_RDMEM(J.W);M_SLA(I);R.BC.B.l = I; break;	//Undefined op code
case SLA_D:   I=M_RDMEM(J.W);M_SLA(I);R.DE.B.h = I; break;	//Undefined op code
case SLA_E:   I=M_RDMEM(J.W);M_SLA(I);R.DE.B.l = I; break;	//Undefined op code
case SLA_H:   I=M_RDMEM(J.W);M_SLA(I);R.HL.B.h = I; break;	//Undefined op code
case SLA_L:   I=M_RDMEM(J.W);M_SLA(I);R.HL.B.l = I; break;	//Undefined op code
case SLA_A:   I=M_RDMEM(J.W);M_SLA(I);R.AF.B.h = I; break;	//Undefined op code

case SRA_B:   I=M_RDMEM(J.W);M_SRA(I);R.BC.B.h = I; break;	//Undefined op code
case SRA_C:   I=M_RDMEM(J.W);M_SRA(I);R.BC.B.l = I; break;	//Undefined op code
case SRA_D:   I=M_RDMEM(J.W);M_SRA(I);R.DE.B.h = I; break;	//Undefined op code
case SRA_E:   I=M_RDMEM(J.W);M_SRA(I);R.DE.B.l = I; break;	//Undefined op code
case SRA_H:   I=M_RDMEM(J.W);M_SRA(I);R.HL.B.h = I; break;	//Undefined op code
case SRA_L:   I=M_RDMEM(J.W);M_SRA(I);R.HL.B.l = I; break;	//Undefined op code
case SRA_A:   I=M_RDMEM(J.W);M_SRA(I);R.AF.B.h = I; break;	//Undefined op code

case SRL_B:   I=M_RDMEM(J.W);M_SRL(I);R.BC.B.h = I; break;	//Undefined op code
case SRL_C:   I=M_RDMEM(J.W);M_SRL(I);R.BC.B.l = I; break;	//Undefined op code
case SRL_D:   I=M_RDMEM(J.W);M_SRL(I);R.DE.B.h = I; break;	//Undefined op code
case SRL_E:   I=M_RDMEM(J.W);M_SRL(I);R.DE.B.l = I; break;	//Undefined op code
case SRL_H:   I=M_RDMEM(J.W);M_SRL(I);R.HL.B.h = I; break;	//Undefined op code
case SRL_L:   I=M_RDMEM(J.W);M_SRL(I);R.HL.B.l = I; break;	//Undefined op code
case SRL_A:   I=M_RDMEM(J.W);M_SRL(I);R.AF.B.h = I; break;	//Undefined op code

case RES0_B:   I=M_RDMEM(J.W);M_RES(0,I);R.BC.B.h =I; break;	// Undefined op code
case RES0_C:   I=M_RDMEM(J.W);M_RES(0,I);R.BC.B.l =I; break;	// Undefined op code
case RES0_D:   I=M_RDMEM(J.W);M_RES(0,I);R.DE.B.h =I; break;	// Undefined op code
case RES0_E:   I=M_RDMEM(J.W);M_RES(0,I);R.DE.B.l =I; break;	// Undefined op code
case RES0_H:   I=M_RDMEM(J.W);M_RES(0,I);R.HL.B.h =I; break;	// Undefined op code
case RES0_L:   I=M_RDMEM(J.W);M_RES(0,I);R.HL.B.l =I; break;	// Undefined op code
case RES0_A:   I=M_RDMEM(J.W);M_RES(0,I);R.AF.B.h =I; break;	// Undefined op code

case RES1_B:   I=M_RDMEM(J.W);M_RES(1,I);R.BC.B.h =I; break;	// Undefined op code
case RES1_C:   I=M_RDMEM(J.W);M_RES(1,I);R.BC.B.l =I; break;	// Undefined op code
case RES1_D:   I=M_RDMEM(J.W);M_RES(1,I);R.DE.B.h =I; break;	// Undefined op code
case RES1_E:   I=M_RDMEM(J.W);M_RES(1,I);R.DE.B.l =I; break;	// Undefined op code
case RES1_H:   I=M_RDMEM(J.W);M_RES(1,I);R.HL.B.h =I; break;	// Undefined op code
case RES1_L:   I=M_RDMEM(J.W);M_RES(1,I);R.HL.B.l =I; break;	// Undefined op code
case RES1_A:   I=M_RDMEM(J.W);M_RES(1,I);R.AF.B.h =I; break;	// Undefined op code

case RES2_B:   I=M_RDMEM(J.W);M_RES(2,I);R.BC.B.h =I; break;	// Undefined op code
case RES2_C:   I=M_RDMEM(J.W);M_RES(2,I);R.BC.B.l =I; break;	// Undefined op code
case RES2_D:   I=M_RDMEM(J.W);M_RES(2,I);R.DE.B.h =I; break;	// Undefined op code
case RES2_E:   I=M_RDMEM(J.W);M_RES(2,I);R.DE.B.l =I; break;	// Undefined op code
case RES2_H:   I=M_RDMEM(J.W);M_RES(2,I);R.HL.B.h =I; break;	// Undefined op code
case RES2_L:   I=M_RDMEM(J.W);M_RES(2,I);R.HL.B.l =I; break;	// Undefined op code
case RES2_A:   I=M_RDMEM(J.W);M_RES(2,I);R.AF.B.h =I; break;	// Undefined op code

case RES3_B:   I=M_RDMEM(J.W);M_RES(3,I);R.BC.B.h =I; break;	// Undefined op code
case RES3_C:   I=M_RDMEM(J.W);M_RES(3,I);R.BC.B.l =I; break;	// Undefined op code
case RES3_D:   I=M_RDMEM(J.W);M_RES(3,I);R.DE.B.h =I; break;	// Undefined op code
case RES3_E:   I=M_RDMEM(J.W);M_RES(3,I);R.DE.B.l =I; break;	// Undefined op code
case RES3_H:   I=M_RDMEM(J.W);M_RES(3,I);R.HL.B.h =I; break;	// Undefined op code
case RES3_L:   I=M_RDMEM(J.W);M_RES(3,I);R.HL.B.l =I; break;	// Undefined op code
case RES3_A:   I=M_RDMEM(J.W);M_RES(3,I);R.AF.B.h =I; break;	// Undefined op code

case RES4_B:   I=M_RDMEM(J.W);M_RES(4,I);R.BC.B.h =I; break;	// Undefined op code
case RES4_C:   I=M_RDMEM(J.W);M_RES(4,I);R.BC.B.l =I; break;	// Undefined op code
case RES4_D:   I=M_RDMEM(J.W);M_RES(4,I);R.DE.B.h =I; break;	// Undefined op code
case RES4_E:   I=M_RDMEM(J.W);M_RES(4,I);R.DE.B.l =I; break;	// Undefined op code
case RES4_H:   I=M_RDMEM(J.W);M_RES(4,I);R.HL.B.h =I; break;	// Undefined op code
case RES4_L:   I=M_RDMEM(J.W);M_RES(4,I);R.HL.B.l =I; break;	// Undefined op code
case RES4_A:   I=M_RDMEM(J.W);M_RES(4,I);R.AF.B.h =I; break;	// Undefined op code

case RES5_B:   I=M_RDMEM(J.W);M_RES(5,I);R.BC.B.h =I; break;	// Undefined op code
case RES5_C:   I=M_RDMEM(J.W);M_RES(5,I);R.BC.B.l =I; break;	// Undefined op code
case RES5_D:   I=M_RDMEM(J.W);M_RES(5,I);R.DE.B.h =I; break;	// Undefined op code
case RES5_E:   I=M_RDMEM(J.W);M_RES(5,I);R.DE.B.l =I; break;	// Undefined op code
case RES5_H:   I=M_RDMEM(J.W);M_RES(5,I);R.HL.B.h =I; break;	// Undefined op code
case RES5_L:   I=M_RDMEM(J.W);M_RES(5,I);R.HL.B.l =I; break;	// Undefined op code
case RES5_A:   I=M_RDMEM(J.W);M_RES(5,I);R.AF.B.h =I; break;	// Undefined op code

case RES6_B:   I=M_RDMEM(J.W);M_RES(6,I);R.BC.B.h =I; break;	// Undefined op code
case RES6_C:   I=M_RDMEM(J.W);M_RES(6,I);R.BC.B.l =I; break;	// Undefined op code
case RES6_D:   I=M_RDMEM(J.W);M_RES(6,I);R.DE.B.h =I; break;	// Undefined op code
case RES6_E:   I=M_RDMEM(J.W);M_RES(6,I);R.DE.B.l =I; break;	// Undefined op code
case RES6_H:   I=M_RDMEM(J.W);M_RES(6,I);R.HL.B.h =I; break;	// Undefined op code
case RES6_L:   I=M_RDMEM(J.W);M_RES(6,I);R.HL.B.l =I; break;	// Undefined op code
case RES6_A:   I=M_RDMEM(J.W);M_RES(6,I);R.AF.B.h =I; break;	// Undefined op code

case RES7_B:   I=M_RDMEM(J.W);M_RES(7,I);R.BC.B.h =I; break;	// Undefined op code
case RES7_C:   I=M_RDMEM(J.W);M_RES(7,I);R.BC.B.l =I; break;	// Undefined op code
case RES7_D:   I=M_RDMEM(J.W);M_RES(7,I);R.DE.B.h =I; break;	// Undefined op code
case RES7_E:   I=M_RDMEM(J.W);M_RES(7,I);R.DE.B.l =I; break;	// Undefined op code
case RES7_H:   I=M_RDMEM(J.W);M_RES(7,I);R.HL.B.h =I; break;	// Undefined op code
case RES7_L:   I=M_RDMEM(J.W);M_RES(7,I);R.HL.B.l =I; break;	// Undefined op code
case RES7_A:   I=M_RDMEM(J.W);M_RES(7,I);R.AF.B.h =I; break;	// Undefined op code


case SET0_B:   I=M_RDMEM(J.W);M_SET(0,I);R.BC.B.h =I; break;	// Undefined op code
case SET0_C:   I=M_RDMEM(J.W);M_SET(0,I);R.BC.B.l =I; break;	// Undefined op code
case SET0_D:   I=M_RDMEM(J.W);M_SET(0,I);R.DE.B.h =I; break;	// Undefined op code
case SET0_E:   I=M_RDMEM(J.W);M_SET(0,I);R.DE.B.l =I; break;	// Undefined op code
case SET0_H:   I=M_RDMEM(J.W);M_SET(0,I);R.HL.B.h =I; break;	// Undefined op code
case SET0_L:   I=M_RDMEM(J.W);M_SET(0,I);R.HL.B.l =I; break;	// Undefined op code
case SET0_A:   I=M_RDMEM(J.W);M_SET(0,I);R.AF.B.h =I; break;	// Undefined op code

case SET1_B:   I=M_RDMEM(J.W);M_SET(1,I);R.BC.B.h =I; break;	// Undefined op code
case SET1_C:   I=M_RDMEM(J.W);M_SET(1,I);R.BC.B.l =I; break;	// Undefined op code
case SET1_D:   I=M_RDMEM(J.W);M_SET(1,I);R.DE.B.h =I; break;	// Undefined op code
case SET1_E:   I=M_RDMEM(J.W);M_SET(1,I);R.DE.B.l =I; break;	// Undefined op code
case SET1_H:   I=M_RDMEM(J.W);M_SET(1,I);R.HL.B.h =I; break;	// Undefined op code
case SET1_L:   I=M_RDMEM(J.W);M_SET(1,I);R.HL.B.l =I; break;	// Undefined op code
case SET1_A:   I=M_RDMEM(J.W);M_SET(1,I);R.AF.B.h =I; break;	// Undefined op code

case SET2_B:   I=M_RDMEM(J.W);M_SET(2,I);R.BC.B.h =I; break;	// Undefined op code
case SET2_C:   I=M_RDMEM(J.W);M_SET(2,I);R.BC.B.l =I; break;	// Undefined op code
case SET2_D:   I=M_RDMEM(J.W);M_SET(2,I);R.DE.B.h =I; break;	// Undefined op code
case SET2_E:   I=M_RDMEM(J.W);M_SET(2,I);R.DE.B.l =I; break;	// Undefined op code
case SET2_H:   I=M_RDMEM(J.W);M_SET(2,I);R.HL.B.h =I; break;	// Undefined op code
case SET2_L:   I=M_RDMEM(J.W);M_SET(2,I);R.HL.B.l =I; break;	// Undefined op code
case SET2_A:   I=M_RDMEM(J.W);M_SET(2,I);R.AF.B.h =I; break;	// Undefined op code

case SET3_B:   I=M_RDMEM(J.W);M_SET(3,I);R.BC.B.h =I; break;	// Undefined op code
case SET3_C:   I=M_RDMEM(J.W);M_SET(3,I);R.BC.B.l =I; break;	// Undefined op code
case SET3_D:   I=M_RDMEM(J.W);M_SET(3,I);R.DE.B.h =I; break;	// Undefined op code
case SET3_E:   I=M_RDMEM(J.W);M_SET(3,I);R.DE.B.l =I; break;	// Undefined op code
case SET3_H:   I=M_RDMEM(J.W);M_SET(3,I);R.HL.B.h =I; break;	// Undefined op code
case SET3_L:   I=M_RDMEM(J.W);M_SET(3,I);R.HL.B.l =I; break;	// Undefined op code
case SET3_A:   I=M_RDMEM(J.W);M_SET(3,I);R.AF.B.h =I; break;	// Undefined op code

case SET4_B:   I=M_RDMEM(J.W);M_SET(4,I);R.BC.B.h =I; break;	// Undefined op code
case SET4_C:   I=M_RDMEM(J.W);M_SET(4,I);R.BC.B.l =I; break;	// Undefined op code
case SET4_D:   I=M_RDMEM(J.W);M_SET(4,I);R.DE.B.h =I; break;	// Undefined op code
case SET4_E:   I=M_RDMEM(J.W);M_SET(4,I);R.DE.B.l =I; break;	// Undefined op code
case SET4_H:   I=M_RDMEM(J.W);M_SET(4,I);R.HL.B.h =I; break;	// Undefined op code
case SET4_L:   I=M_RDMEM(J.W);M_SET(4,I);R.HL.B.l =I; break;	// Undefined op code
case SET4_A:   I=M_RDMEM(J.W);M_SET(4,I);R.AF.B.h =I; break;	// Undefined op code

case SET5_B:   I=M_RDMEM(J.W);M_SET(5,I);R.BC.B.h =I; break;	// Undefined op code
case SET5_C:   I=M_RDMEM(J.W);M_SET(5,I);R.BC.B.l =I; break;	// Undefined op code
case SET5_D:   I=M_RDMEM(J.W);M_SET(5,I);R.DE.B.h =I; break;	// Undefined op code
case SET5_E:   I=M_RDMEM(J.W);M_SET(5,I);R.DE.B.l =I; break;	// Undefined op code
case SET5_H:   I=M_RDMEM(J.W);M_SET(5,I);R.HL.B.h =I; break;	// Undefined op code
case SET5_L:   I=M_RDMEM(J.W);M_SET(5,I);R.HL.B.l =I; break;	// Undefined op code
case SET5_A:   I=M_RDMEM(J.W);M_SET(5,I);R.AF.B.h =I; break;	// Undefined op code

case SET6_B:   I=M_RDMEM(J.W);M_SET(6,I);R.BC.B.h =I; break;	// Undefined op code
case SET6_C:   I=M_RDMEM(J.W);M_SET(6,I);R.BC.B.l =I; break;	// Undefined op code
case SET6_D:   I=M_RDMEM(J.W);M_SET(6,I);R.DE.B.h =I; break;	// Undefined op code
case SET6_E:   I=M_RDMEM(J.W);M_SET(6,I);R.DE.B.l =I; break;	// Undefined op code
case SET6_H:   I=M_RDMEM(J.W);M_SET(6,I);R.HL.B.h =I; break;	// Undefined op code
case SET6_L:   I=M_RDMEM(J.W);M_SET(6,I);R.HL.B.l =I; break;	// Undefined op code
case SET6_A:   I=M_RDMEM(J.W);M_SET(6,I);R.AF.B.h =I; break;	// Undefined op code

case SET7_B:   I=M_RDMEM(J.W);M_SET(7,I);R.BC.B.h =I; break;	// Undefined op code
case SET7_C:   I=M_RDMEM(J.W);M_SET(7,I);R.BC.B.l =I; break;	// Undefined op code
case SET7_D:   I=M_RDMEM(J.W);M_SET(7,I);R.DE.B.h =I; break;	// Undefined op code
case SET7_E:   I=M_RDMEM(J.W);M_SET(7,I);R.DE.B.l =I; break;	// Undefined op code
case SET7_H:   I=M_RDMEM(J.W);M_SET(7,I);R.HL.B.h =I; break;	// Undefined op code
case SET7_L:   I=M_RDMEM(J.W);M_SET(7,I);R.HL.B.l =I; break;	// Undefined op code
case SET7_A:   I=M_RDMEM(J.W);M_SET(7,I);R.AF.B.h =I; break;	// Undefined op code

長いって。。(;´∀`)


ちなみに、未定義命令については、bernie さんの下記のページが詳しいです。

ttp://bernie.hp.infoseek.co.jp/develop/p6srdiary7.html

他にもいっぱいあるらしい。。ひぇー。




これも、入れました。。

OUT (C),(HL) ということなのでしょうか??

CodesED.h

case OUT_xC_F: DoOut(R.BC.B.l, M_RDMEM( R.HL.W )); break;	// undefined op code