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