mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 23:52:26 +00:00
First tentative steps towards adding a Z80 implementation.
This commit is contained in:
parent
abeaedf16f
commit
b81a2cc273
@ -68,6 +68,7 @@
|
|||||||
4B69FB441C4D941400B5F0AA /* TapeUEF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B69FB421C4D941400B5F0AA /* TapeUEF.cpp */; };
|
4B69FB441C4D941400B5F0AA /* TapeUEF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B69FB421C4D941400B5F0AA /* TapeUEF.cpp */; };
|
||||||
4B69FB461C4D950F00B5F0AA /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B69FB451C4D950F00B5F0AA /* libz.tbd */; };
|
4B69FB461C4D950F00B5F0AA /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B69FB451C4D950F00B5F0AA /* libz.tbd */; };
|
||||||
4B6C73BD1D387AE500AFCFCA /* DiskController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6C73BB1D387AE500AFCFCA /* DiskController.cpp */; };
|
4B6C73BD1D387AE500AFCFCA /* DiskController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6C73BB1D387AE500AFCFCA /* DiskController.cpp */; };
|
||||||
|
4B77069D1EC904570053B588 /* Z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B77069B1EC904570053B588 /* Z80.cpp */; };
|
||||||
4B7913CC1DFCD80E00175A82 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B7913CA1DFCD80E00175A82 /* Video.cpp */; };
|
4B7913CC1DFCD80E00175A82 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B7913CA1DFCD80E00175A82 /* Video.cpp */; };
|
||||||
4B79E4441E3AF38600141F11 /* cassette.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4411E3AF38600141F11 /* cassette.png */; };
|
4B79E4441E3AF38600141F11 /* cassette.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4411E3AF38600141F11 /* cassette.png */; };
|
||||||
4B79E4451E3AF38600141F11 /* floppy35.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4421E3AF38600141F11 /* floppy35.png */; };
|
4B79E4451E3AF38600141F11 /* floppy35.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4421E3AF38600141F11 /* floppy35.png */; };
|
||||||
@ -544,6 +545,8 @@
|
|||||||
4B69FB451C4D950F00B5F0AA /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
4B69FB451C4D950F00B5F0AA /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||||
4B6C73BB1D387AE500AFCFCA /* DiskController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskController.cpp; sourceTree = "<group>"; };
|
4B6C73BB1D387AE500AFCFCA /* DiskController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskController.cpp; sourceTree = "<group>"; };
|
||||||
4B6C73BC1D387AE500AFCFCA /* DiskController.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = DiskController.hpp; sourceTree = "<group>"; };
|
4B6C73BC1D387AE500AFCFCA /* DiskController.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = DiskController.hpp; sourceTree = "<group>"; };
|
||||||
|
4B77069B1EC904570053B588 /* Z80.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Z80.cpp; path = Z80/Z80.cpp; sourceTree = "<group>"; };
|
||||||
|
4B77069C1EC904570053B588 /* Z80.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Z80.hpp; path = Z80/Z80.hpp; sourceTree = "<group>"; };
|
||||||
4B7913CA1DFCD80E00175A82 /* Video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Video.cpp; path = Electron/Video.cpp; sourceTree = "<group>"; };
|
4B7913CA1DFCD80E00175A82 /* Video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Video.cpp; path = Electron/Video.cpp; sourceTree = "<group>"; };
|
||||||
4B7913CB1DFCD80E00175A82 /* Video.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Video.hpp; path = Electron/Video.hpp; sourceTree = "<group>"; };
|
4B7913CB1DFCD80E00175A82 /* Video.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Video.hpp; path = Electron/Video.hpp; sourceTree = "<group>"; };
|
||||||
4B79E4411E3AF38600141F11 /* cassette.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cassette.png; sourceTree = "<group>"; };
|
4B79E4411E3AF38600141F11 /* cassette.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cassette.png; sourceTree = "<group>"; };
|
||||||
@ -1315,6 +1318,15 @@
|
|||||||
path = Formats;
|
path = Formats;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
4B77069E1EC9045B0053B588 /* Z80 */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4B77069B1EC904570053B588 /* Z80.cpp */,
|
||||||
|
4B77069C1EC904570053B588 /* Z80.hpp */,
|
||||||
|
);
|
||||||
|
name = Z80;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4B8805F11DCFC9A2003085B1 /* Parsers */ = {
|
4B8805F11DCFC9A2003085B1 /* Parsers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -1791,6 +1803,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
4B1414561B58879D00E04248 /* 6502 */,
|
4B1414561B58879D00E04248 /* 6502 */,
|
||||||
|
4B77069E1EC9045B0053B588 /* Z80 */,
|
||||||
);
|
);
|
||||||
name = Processors;
|
name = Processors;
|
||||||
path = ../../Processors;
|
path = ../../Processors;
|
||||||
@ -2464,6 +2477,7 @@
|
|||||||
4BF8295D1D8F048B001BAE39 /* MFM.cpp in Sources */,
|
4BF8295D1D8F048B001BAE39 /* MFM.cpp in Sources */,
|
||||||
4BE77A2E1D84ADFB00BC3827 /* File.cpp in Sources */,
|
4BE77A2E1D84ADFB00BC3827 /* File.cpp in Sources */,
|
||||||
4B5FADBD1DE31D1500AEC565 /* OricMFMDSK.cpp in Sources */,
|
4B5FADBD1DE31D1500AEC565 /* OricMFMDSK.cpp in Sources */,
|
||||||
|
4B77069D1EC904570053B588 /* Z80.cpp in Sources */,
|
||||||
4BAB62B51D327F7E00DF5BA0 /* G64.cpp in Sources */,
|
4BAB62B51D327F7E00DF5BA0 /* G64.cpp in Sources */,
|
||||||
4BD468F71D8DF41D0084958B /* 1770.cpp in Sources */,
|
4BD468F71D8DF41D0084958B /* 1770.cpp in Sources */,
|
||||||
4BBF99141C8FBA6F0075DAFB /* TextureBuilder.cpp in Sources */,
|
4BBF99141C8FBA6F0075DAFB /* TextureBuilder.cpp in Sources */,
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
#ifndef CPU6502_cpp
|
#ifndef CPU6502_cpp
|
||||||
#define CPU6502_cpp
|
#define CPU6502_cpp
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <cstdio>
|
||||||
#include <stdint.h>
|
#include <cstdint>
|
||||||
|
|
||||||
namespace CPU6502 {
|
namespace CPU6502 {
|
||||||
|
|
||||||
|
9
Processors/Z80/Z80.cpp
Normal file
9
Processors/Z80/Z80.cpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
//
|
||||||
|
// Z80.cpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 14/05/2017.
|
||||||
|
// Copyright © 2017 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "Z80.hpp"
|
66
Processors/Z80/Z80.hpp
Normal file
66
Processors/Z80/Z80.hpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
//
|
||||||
|
// Z80.hpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 14/05/2017.
|
||||||
|
// Copyright © 2017 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef Z80_hpp
|
||||||
|
#define Z80_hpp
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace Z80 {
|
||||||
|
|
||||||
|
/*
|
||||||
|
The list of registers that can be accessed via @c set_value_of_register and @c set_value_of_register.
|
||||||
|
*/
|
||||||
|
enum Register {
|
||||||
|
ProgramCounter,
|
||||||
|
StackPointer,
|
||||||
|
|
||||||
|
A, Flags, AF,
|
||||||
|
B, C, BC,
|
||||||
|
D, E, DE,
|
||||||
|
H, L, HL,
|
||||||
|
|
||||||
|
ADash, FlagsDash, AFDash,
|
||||||
|
BDash, CDash, BCDash,
|
||||||
|
DDash, EDash, DEDash,
|
||||||
|
HDash, LDash, HLDash,
|
||||||
|
|
||||||
|
IXh, IXl, IX,
|
||||||
|
IYh, IYl, IY,
|
||||||
|
R, I,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Flags as defined on the Z80; can be used to decode the result of @c get_flags or to form a value for @c set_flags.
|
||||||
|
*/
|
||||||
|
enum Flag: uint8_t {
|
||||||
|
Sign = 0x80,
|
||||||
|
Zero = 0x40,
|
||||||
|
Bit5 = 0x20,
|
||||||
|
HalfCarry = 0x10,
|
||||||
|
Bit3 = 0x08,
|
||||||
|
Parity = 0x04,
|
||||||
|
Overflow = 0x04,
|
||||||
|
Subtract = 0x02,
|
||||||
|
Carry = 0x01
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Subclasses will be given the task of performing bus operations, allowing them to provide whatever interface they like
|
||||||
|
between a Z80 and the rest of the system. @c BusOperation lists the types of bus operation that may be requested.
|
||||||
|
|
||||||
|
@c None is reserved for internal use. It will never be requested from a subclass. It is safe always to use the
|
||||||
|
isReadOperation macro to make a binary choice between reading and writing.
|
||||||
|
*/
|
||||||
|
enum BusOperation {
|
||||||
|
Read, ReadOpcode, Write, Input, Output, Interrupt, BusRequest, None
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* Z80_hpp */
|
Loading…
Reference in New Issue
Block a user