1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-01 10:05:55 +00:00
CLK/OSBindings/Mac/Clock SignalTests/Bridges/TestMachineZ80.h
2020-02-24 23:31:42 -05:00

79 lines
2.7 KiB
Objective-C

//
// TestMachineZ80.h
// Clock Signal
//
// Created by Thomas Harte on 16/05/2017.
// Copyright 2017 Thomas Harte. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <stdint.h>
#import "TestMachine.h"
@class CSTestMachineZ80;
typedef NS_ENUM(NSInteger, CSTestMachineZ80BusOperationCaptureOperation) {
CSTestMachineZ80BusOperationCaptureOperationReadOpcode,
CSTestMachineZ80BusOperationCaptureOperationRead,
CSTestMachineZ80BusOperationCaptureOperationWrite,
CSTestMachineZ80BusOperationCaptureOperationPortRead,
CSTestMachineZ80BusOperationCaptureOperationPortWrite,
CSTestMachineZ80BusOperationCaptureOperationInternalOperation,
};
@interface CSTestMachineZ80BusOperationCapture: NSObject
@property(nonatomic, readonly) CSTestMachineZ80BusOperationCaptureOperation operation;
@property(nonatomic, readonly) uint16_t address;
@property(nonatomic, readonly) uint8_t value;
@property(nonatomic, readonly) int timeStamp;
@end
typedef NS_ENUM(NSInteger, CSTestMachineZ80Register) {
CSTestMachineZ80RegisterProgramCounter,
CSTestMachineZ80RegisterStackPointer,
CSTestMachineZ80RegisterA, CSTestMachineZ80RegisterF, CSTestMachineZ80RegisterAF,
CSTestMachineZ80RegisterB, CSTestMachineZ80RegisterC, CSTestMachineZ80RegisterBC,
CSTestMachineZ80RegisterD, CSTestMachineZ80RegisterE, CSTestMachineZ80RegisterDE,
CSTestMachineZ80RegisterH, CSTestMachineZ80RegisterL, CSTestMachineZ80RegisterHL,
CSTestMachineZ80RegisterAFDash,
CSTestMachineZ80RegisterBCDash,
CSTestMachineZ80RegisterDEDash,
CSTestMachineZ80RegisterHLDash,
CSTestMachineZ80RegisterIX, CSTestMachineZ80RegisterIY,
CSTestMachineZ80RegisterI, CSTestMachineZ80RegisterR,
CSTestMachineZ80RegisterIFF1, CSTestMachineZ80RegisterIFF2, CSTestMachineZ80RegisterIM,
CSTestMachineZ80RegisterMemPtr
};
typedef NS_ENUM(NSInteger, CSTestMachinePortLogic) {
CSTestMachinePortLogicReturnUpperByte,
CSTestMachinePortLogicReturn191
};
@interface CSTestMachineZ80 : CSTestMachine
- (void)setData:(nonnull NSData *)data atAddress:(uint16_t)startAddress;
- (void)setValue:(uint8_t)value atAddress:(uint16_t)address;
- (uint8_t)valueAtAddress:(uint16_t)address;
- (void)runForNumberOfCycles:(int)cycles;
- (void)runForInstruction;
- (void)setValue:(uint16_t)value forRegister:(CSTestMachineZ80Register)reg;
- (uint16_t)valueForRegister:(CSTestMachineZ80Register)reg;
@property(nonatomic, assign) BOOL captureBusActivity;
@property(nonatomic, readonly, nonnull) NSArray<CSTestMachineZ80BusOperationCapture *> *busOperationCaptures;
@property(nonatomic, readonly) BOOL isHalted;
@property(nonatomic, readonly) int completedHalfCycles;
@property(nonatomic) BOOL nmiLine;
@property(nonatomic) BOOL irqLine;
@property(nonatomic) BOOL waitLine;
@property(nonatomic) CSTestMachinePortLogic portLogic;
@end