- the big mergecheit

This commit is contained in:
2025-07-21 19:21:18 +02:00
parent 300f95803e
commit 13354b855d
17 changed files with 273 additions and 19 deletions

27
z80.cpp
View File

@@ -1,7 +1,7 @@
#include "z80.h"
#include "z80debug.h"
#include "z80mem.h"
#include "zx_tape.h"
//#include "zx_tape.h"
#include <stdio.h>
namespace z80
@@ -15,8 +15,8 @@ namespace z80
bool options[Z80_NUM_OPTIONS] = { true, false };
int calls_stacked = 0;
int (*in_ports[65536])(int);
void (*out_ports[65536])(int, int);
int (*in_ports[256])(int);
void (*out_ports[256])(int, int);
//#define _rM16(a) (uint16_t*)&memory[a]
//#define rM16(a) *_rM16(a)
@@ -186,10 +186,10 @@ namespace z80
{
t+=1;
reading_m1 = true;
if (rPC==0x056c) {
/*if (rPC==0x056c) {
zx_tape::rewind();
zx_tape::play();
}
}*/
return READ_MEM_8();
}
@@ -1008,6 +1008,7 @@ namespace z80
t+=4;
if (port == 0x10000) {
port = rBC;
if (rC==0xfe) port = 0xfe;
}
if (out_ports[port&0xff]) out_ports[port&0xff](port, val);
}
@@ -2265,7 +2266,7 @@ namespace z80
switch (opcode)
{
case 0x40: rB = IN(); break;
case 0x41: OUT(rB, rC); break;
case 0x41: OUT(rB); break;
case 0x42: SBC16(_rHL, rBC); break;
case 0x43: WRITE_MEM_16(READ_MEM_16(), rBC);break;
case 0x44: NEG(); break;
@@ -2273,42 +2274,42 @@ namespace z80
case 0x46: IM(0); break;
case 0x47: rI = rA; t++; break;
case 0x48: rC = IN(); break;
case 0x49: OUT(rC, rC); break;
case 0x49: OUT(rC); break;
case 0x4A: ADC16(_rHL, rBC); break;
case 0x4B: rBC = READ_MEM_16(READ_MEM_16());break;
case 0x4D: RETI(); break;
case 0x4F: rR = rA; t++; break;
case 0x50: rD = IN(); break;
case 0x51: OUT(rD, rC); break;
case 0x51: OUT(rD); break;
case 0x52: SBC16(_rHL, rDE); break;
case 0x53: WRITE_MEM_16(READ_MEM_16(), rDE);break;
case 0x56: IM(1); break;
case 0x57: LD_A_I(); break;
case 0x58: rE = IN(); break;
case 0x59: OUT(rE, rC); break;
case 0x59: OUT(rE); break;
case 0x5A: ADC16(_rHL, rDE); break;
case 0x5B: rDE = READ_MEM_16(READ_MEM_16());break;
case 0x5E: IM(2); break;
case 0x5F: LD_A_R(); break;
case 0x60: rH = IN(); break;
case 0x61: OUT(rH, rC); break;
case 0x61: OUT(rH); break;
case 0x62: SBC16(_rHL, rHL); break;
case 0x63: WRITE_MEM_16(READ_MEM_16(), rHL);break;
case 0x67: RRD(); break;
case 0x68: rL = IN(); break;
case 0x69: OUT(rL, rC); break;
case 0x69: OUT(rL); break;
case 0x6A: ADC16(_rHL, rHL); break;
case 0x6B: rHL = READ_MEM_16(READ_MEM_16());break;
case 0x6F: RLD(); break;
case 0x70: IN(); break;
case 0x71: OUT(0, rC); break;
case 0x71: OUT(0); break;
case 0x72: SBC16(_rHL, rSP); break;
case 0x73: WRITE_MEM_16(READ_MEM_16(), rSP);break;
case 0x78: rA = IN(); break;
case 0x79: OUT(rA, rC); break;
case 0x79: OUT(rA); break;
case 0x7A: ADC16(_rHL, rSP); break;
case 0x7B: rSP = READ_MEM_16(READ_MEM_16());break;