📄 pgbcpu.java
字号:
case 0x8F: // ADC A,A
adc(AF.getH());
cv = 4;
break;
case 0x90: // SUB B
sub(BC.getH());
cv = 4;
break;
case 0x91: // SUB C
sub(BC.getL());
cv = 4;
break;
case 0x92: // SUB D
sub(DE.getH());
cv = 4;
break;
case 0x93: // SUB E
sub(DE.getL());
cv = 4;
break;
case 0x94: // SUB H
sub(HL.getH());
cv = 4;
break;
case 0x95: // SUB L
sub(HL.getL());
cv = 4;
break;
case 0x96: // SUB (HL)
sub(HL.getI(mem));
cv = 8;
break;
case 0x97: // SUB A
sub(AF.getH());
cv = 4;
break;
case 0x98: // SBC A,B
sbc(BC.getH());
cv = 4;
break;
case 0x99: // SBC A,C
sbc(BC.getL());
cv = 4;
break;
case 0x9A: // SBC A,D
sbc(DE.getH());
cv = 4;
break;
case 0x9B: // SBC A,E
sbc(DE.getL());
cv = 4;
break;
case 0x9C: // SBC A,H
sbc(HL.getH());
cv = 4;
break;
case 0x9D: // SBC A,L
sbc(HL.getL());
cv = 4;
break;
case 0x9E: // SBC A,(HL)
sbc(HL.getI(mem));
cv = 8;
break;
case 0x9F: // SBC A,A
sbc(AF.getH());
cv = 4;
break;
case 0xA0: // AND B
and(BC.getH());
cv = 4;
break;
case 0xA1: // AND C
and(BC.getL());
cv = 4;
break;
case 0xA2: // AND D
and(DE.getH());
cv = 4;
break;
case 0xA3: // AND E
and(DE.getL());
cv = 4;
break;
case 0xA4: // AND H
and(HL.getH());
cv = 4;
break;
case 0xA5: // AND L
and(HL.getL());
cv = 4;
break;
case 0xA6: // AND (HL)
and(HL.getI(mem));
cv = 8;
break;
case 0xA7: // AND A
and(AF.getH());
cv = 4;
break;
case 0xA8: // XOR B
xor(BC.getH());
cv = 4;
break;
case 0xA9: // XOR C
xor(BC.getL());
cv = 4;
break;
case 0xAA: // XOR D
xor(DE.getH());
cv = 4;
break;
case 0xAB: // XOR E
xor(DE.getL());
cv = 4;
break;
case 0xAC: // XOR H
xor(HL.getH());
cv = 4;
break;
case 0xAD: // XOR L
xor(HL.getL());
cv = 4;
break;
case 0xAE: // XOR (HL)
xor(HL.getI(mem));
cv = 8;
break;
case 0xAF: // XOR A
xor(AF.getH());
cv = 4;
break;
case 0xB0: // OR B
or(BC.getH());
cv = 4;
break;
case 0xB1: // OR C
or(BC.getL());
cv = 4;
break;
case 0xB2: // OR D
or(DE.getH());
cv = 4;
break;
case 0xB3: // OR E
or(DE.getL());
cv = 4;
break;
case 0xB4: // OR H
or(HL.getH());
cv = 4;
break;
case 0xB5: // OR L
or(HL.getL());
cv = 4;
break;
case 0xB6: // OR (HL)
or(HL.getI(mem));
cv = 8;
break;
case 0xB7: // OR A
or(AF.getH());
cv = 4;
break;
case 0xB8: // CP B
cp(BC.getH());
cv = 4;
break;
case 0xB9: // CP C
cp(BC.getL());
cv = 4;
break;
case 0xBA: // CP D
cp(DE.getH());
cv = 4;
break;
case 0xBB: // CP E
cp(DE.getL());
cv = 4;
break;
case 0xBC: // CP H
cp(HL.getH());
cv = 4;
break;
case 0xBD: // CP L
cp(HL.getL());
cv = 4;
break;
case 0xBE: // CP (HL)
cp(HL.getI(mem));
cv = 8;
break;
case 0xBF: // CP A
cp(AF.getH());
cv = 4;
break;
case 0xC0: // RET NZ
if(!getZ()) {
ret();
cv = 20;
} else {
cv = 8;
}
break;
case 0xC1: // POP BC
pop(BC);
cv = 12;
break;
case 0xC2: // JP NZ,nnnn
if(!getZ()) {
jp(readWord());
cv = 16;
} else {
readWord();
cv = 12;
}
break;
case 0xC3: // JP nnnn
jp(readWord());
cv = 16;
break;
case 0xC4: // CALL NZ,nnnn
if(!getZ()) {
call(readWord());
cv = 24;
} else {
readWord();
cv = 12;
}
break;
case 0xC5: // PUSH BC
push(BC);
cv = 16;
break;
case 0xC6: // ADD A,nn
add(readByte());
cv = 8;
break;
case 0xC7: // RST 0H
rst(0x0);
cv = 16;
break;
case 0xC8: // RET Z
if(getZ()) {
ret();
cv = 20;
} else {
cv = 8;
}
break;
case 0xC9: // RET
ret();
cv = 16;
break;
case 0xCA: // JP Z,nnnn
if(getZ()) {
jp(readWord());
cv = 16;
} else {
readWord();
cv = 12;
}
break;
case 0xCB: // -- special --
int b = readByte();
if (PgbSettings.DEBUG)
System.out.println("0xCB, executing SubOpCode 0x" + Integer.toHexString(b));
//cv = cbcodes[b].exec();
switch(b) {
case 0x00: // RLC B
rlcH(BC);
cv = 8;
break;
case 0x01: // RLC C
rlcL(BC);
cv = 8;
break;
case 0x02: // RLC D
rlcH(DE);
cv = 8;
break;
case 0x03: // RLC E
rlcL(DE);
cv = 8;
break;
case 0x04: // RLC H
rlcH(HL);
cv = 8;
break;
case 0x05: // RLC L
rlcL(HL);
cv = 8;
break;
case 0x06: // RLC (HL)
rlcI(HL.getR());
cv = 16;
break;
case 0x07: // RLC A
rlcH(AF);
cv = 8;
break;
case 0x08: // RRC B
rrcH(BC);
cv = 8;
break;
case 0x09: // RRC C
rrcL(BC);
cv = 8;
break;
case 0x0A: // RRC D
rrcH(DE);
cv = 8;
break;
case 0x0B: // RRC E
rrcL(DE);
cv = 8;
break;
case 0x0C: // RRC H
rrcH(HL);
cv = 8;
break;
case 0x0D: // RRC L
rrcL(HL);
cv = 8;
break;
case 0x0E: // RRC (HL)
rrcI(HL.getR());
cv = 16;
break;
case 0x0F: // RRC A
rrcH(AF);
cv = 8;
break;
case 0x10: // RL B
rlH(BC);
cv = 8;
break;
case 0x11: // RL C
rlL(BC);
cv = 8;
break;
case 0x12: // RL D
rlH(DE);
cv = 8;
break;
case 0x13: // RL E
rlL(DE);
cv = 8;
break;
case 0x14: // RL H
rlH(HL);
cv = 8;
break;
case 0x15: // RL L
rlL(HL);
cv = 8;
break;
case 0x16: // RL (HL)
rlI(HL.getR());
cv = 16;
break;
case 0x17: // RL A
rlH(AF);
cv = 8;
break;
case 0x18: // RR B
rrH(BC);
cv = 8;
break;
case 0x19: // RR C
rrL(BC);
cv = 8;
break;
case 0x1A: // RR D
rrH(DE);
cv = 8;
break;
case 0x1B: // RR E
rrL(DE);
cv = 8;
break;
case 0x1C: // RR H
rrH(HL);
cv = 8;
break;
case 0x1D: // RR L
rrL(HL);
cv = 8;
break;
case 0x1E: // RR (HL)
rrI(HL.getR());
cv = 16;
break;
case 0x1F: // RR A
rrH(AF);
cv = 8;
break;
case 0x20: // SLA B
slaH(BC);
cv = 8;
break;
case 0x21: // SLA C
slaL(BC);
cv = 8;
break;
case 0x22: // SLA D
slaH(DE);
cv = 8;
break;
case 0x23: // SLA E
slaL(DE);
cv = 8;
break;
case 0x24: // SLA H
slaH(HL);
cv = 8;
break;
case 0x25: // SLA L
slaL(HL);
cv = 8;
break;
case 0x26: // SLA (HL)
slaI(HL.getR());
cv = 16;
break;
case 0x27: // SLA A
slaH(AF);
cv = 8;
break;
case 0x28: // SRA B
sraH(BC);
cv = 8;
break;
case 0x29: // SRA C
sraL(BC);
cv = 8;
break;
case 0x2A: // SRA D
sraH(DE);
cv = 8;
break;
case 0x2B: // SRA E
sraL(DE);
cv = 8;
break;
case 0x2C: // SRA H
sraH(HL);
cv = 8;
break;
case 0x2D: // SRA L
sraL(HL);
cv = 8;
break;
case 0x2E: // SRA (HL)
sraI(HL.getR());
cv = 16;
break;
case 0x2F: // SRA A
sraH(AF);
cv = 8;
break;
case 0x30: // SWAP B
swapH(BC);
cv = 8;
break;
case 0x31: // SWAP C
swapL(BC);
cv = 8;
break;
case 0x32: // SWAP D
swapH(DE);
cv = 8;
break;
case 0x33: // SWAP E
swapL(DE);
cv = 8;
break;
case 0x34: // SWAP H
swapH(HL);
cv = 8;
break;
case 0x35: // SWAP L
swapL(HL);
cv = 8;
break;
case 0x36: // SWAP (HL)
swapI(HL.getR());
cv = 16;
break;
case 0x37: // SWAP A
swapH(AF);
cv = 8;
break;
case 0x38: // SRL B
srlH(BC);
cv = 8;
break;
case 0x39: // SRL C
srlL(BC);
cv = 8;
break;
case 0x3A: // SRL D
srlH(DE);
cv = 8;
break;
case 0x3B: // SRL E
srlL(DE);
cv = 8;
break;
case 0x3C: // SRL H
srlH(HL);
cv = 8;
break;
case 0x3D: // SRL L
srlL(HL);
cv = 8;
break;
case 0x3E: // SRL (HL)
srlI(HL.getR());
cv = 16;
break;
case 0x3F: // SRL A
srlH(AF);
cv = 8;
break;
case 0x40: // BIT 0,B
bit(0, BC.getH());
cv = 8;
break;
case 0x41: // BIT 0,C
bit(0, BC.getL());
cv = 8;
break;
case 0x42: // BIT 0,D
bit(0, DE.getH());
cv = 8;
break;
case 0x43: // BIT 0,E
bit(0, DE.getL());
cv = 8;
break;
case 0x44: // BIT 0,H
bit(0, HL.getH());
cv = 8;
break;
case 0x45: // BIT 0,L
bit(0, HL.getL());
cv = 8;
break;
case 0x46: // BIT 0,(HL)
bit(0, HL.getI(mem));
cv = 16;
break;
case 0x47: // BIT 0,A
bit(0, AF.getH());
cv = 8;
break;
case 0x48: // BIT 1,B
bit(1, BC.getH());
cv = 8;
break;
case 0x49: // BIT 1,C
bit(1, BC.getL());
cv = 8;
break;
case 0x4A: // BIT 1,D
bit(1, DE.getH());
cv = 8;
break;
case 0x4B: // BIT 1,E
bit(1, DE.getL());
cv = 8;
break;
case 0x4C: // BIT 1,H
bit(1, HL.getH());
cv = 8;
break;
case 0x4D: // BIT 1,L
bit(1, HL.getL());
cv = 8;
break;
case 0x4E: // BIT 1,(HL)
bit(1, HL.getI(mem));
cv = 16;
break;
case 0x4F: // BIT 1,A
bit(1, AF.getH());
cv = 8;
break;
case 0x50: // BIT 2,B
bit(2, BC.getH());
cv = 8;
break;
case 0x51: // BIT 2,C
bit(2, BC.getL());
cv = 8;
break;
case 0x52: // BIT 2,D
bit(2, DE.getH());
cv = 8;
break;
case 0x53: // BIT 2,E
bit(2, DE.getL());
cv = 8;
break;
case 0x54: // BIT 2,H
bit(2, HL.getH());
cv = 8;
break;
case 0x55: // BIT 2,L
bit(2, HL.getL());
cv = 8;
break;
case 0x56: // BIT 2,(HL)
bit(2, HL.getI(mem));
cv = 16;
break;
case 0x57: // BIT 2,A
bit(2, AF.getH());
cv = 8;
break;
case 0x58: // BIT 3,B
bit(3, BC.getH());
cv = 8;
break;
case 0x59: // BIT 3,C
bit(3, BC.getL());
cv = 8;
break;
case 0x5A: // BIT 3,D
bit(3, DE.getH());
cv = 8;
break;
case 0x5B: // BIT 3,E
bit(3, DE.getL());
cv = 8;
break;
case 0x5C: // BIT 3,H
bit(3, HL.getH());
cv = 8;
break;
case 0x5D: // BIT 3,L
bit(3, HL.getL());
cv = 8;
break;
case 0x5E: // BIT 3,(HL)
bit(3, HL.getI(mem));
cv = 16;
break;
case 0x5F: // BIT 3,A
bit(3, AF.getH());
cv = 8;
break;
case 0x60: // BIT 4,B
bit(4, BC.getH());
cv = 8;
break;
case 0x61: // BIT 4,C
bit(4, BC.getL());
cv = 8;
break;
case 0x62: // BIT 4,D
bit(4, DE.getH());
cv = 8;
break;
case 0x63: // BIT 4,E
bit(4, DE.getL());
cv = 8;
break;
case 0x64: // BIT 4,H
bit(4, HL.getH());
cv = 8;
break;
case 0x65: // BIT 4,L
bit(4, HL.getL());
cv = 8;
break;
case 0x66: // BIT 4,(HL)
bit(4, HL.getI(mem));
cv = 16;
break;
case 0x67: // BIT 4,A
bit(4, AF.getH());
cv = 8;
break;
case 0x68: // BIT 5,B
bit(5, BC.getH());
cv = 8;
break;
case 0x69: // BIT 5,C
bit(5, BC.getL());
cv = 8;
break;
case 0x6A: // BIT 5,D
bit(5, DE.getH());
cv = 8;
break;
case 0x6B: // BIT 5,E
bit(5, DE.getL());
cv = 8;
break;
case 0x6C: // BIT 5,H
bit(5, HL.getH());
cv = 8;
break;
case 0x6D: // BIT 5,L
bit(5, HL.getL());
cv = 8;
break;
case 0x6E: // BIT 5,(HL)
bit(5, HL.getI(mem));
cv = 16;
break;
case 0x6F: // BIT 5,A
bit(5, AF.getH());
cv = 8;
break;
case 0x70: // BIT 6,B
bit(6, BC.getH());
cv = 8;
break;
case 0x71: // BIT 6,C
bit(6, BC.getL());
cv = 8;
break;
case 0x72: // BIT 6,D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -