mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-20 14:29:11 +00:00
Stubs in the ADB GLU.
This commit is contained in:
parent
45f5896b76
commit
2da71acefd
41
Machines/Apple/AppleIIgs/ADB.cpp
Normal file
41
Machines/Apple/AppleIIgs/ADB.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
//
|
||||||
|
// ADB.cpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 31/10/2020.
|
||||||
|
// Copyright © 2020 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "ADB.hpp"
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
using namespace Apple::IIgs::ADB;
|
||||||
|
|
||||||
|
uint8_t GLU::get_keyboard_data() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GLU::get_mouse_data() {
|
||||||
|
return 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GLU::get_modifier_status() {
|
||||||
|
return 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GLU::get_data() {
|
||||||
|
return 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GLU::get_status() {
|
||||||
|
return 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLU::set_command(uint8_t) {
|
||||||
|
printf("TODO: set ADB command\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLU::set_status(uint8_t) {
|
||||||
|
printf("TODO: set ADB status\n");
|
||||||
|
}
|
35
Machines/Apple/AppleIIgs/ADB.hpp
Normal file
35
Machines/Apple/AppleIIgs/ADB.hpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
//
|
||||||
|
// ADB.hpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 31/10/2020.
|
||||||
|
// Copyright © 2020 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef Apple_IIgs_ADB_hpp
|
||||||
|
#define Apple_IIgs_ADB_hpp
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace Apple {
|
||||||
|
namespace IIgs {
|
||||||
|
namespace ADB {
|
||||||
|
|
||||||
|
class GLU {
|
||||||
|
public:
|
||||||
|
uint8_t get_keyboard_data();
|
||||||
|
uint8_t get_mouse_data();
|
||||||
|
uint8_t get_modifier_status();
|
||||||
|
|
||||||
|
uint8_t get_data();
|
||||||
|
uint8_t get_status();
|
||||||
|
|
||||||
|
void set_command(uint8_t);
|
||||||
|
void set_status(uint8_t);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* Apple_IIgs_ADB_hpp */
|
@ -12,6 +12,7 @@
|
|||||||
#include "../../../Processors/65816/65816.hpp"
|
#include "../../../Processors/65816/65816.hpp"
|
||||||
|
|
||||||
#include "../../../Analyser/Static/AppleIIgs/Target.hpp"
|
#include "../../../Analyser/Static/AppleIIgs/Target.hpp"
|
||||||
|
#include "ADB.hpp"
|
||||||
#include "MemoryMap.hpp"
|
#include "MemoryMap.hpp"
|
||||||
#include "Video.hpp"
|
#include "Video.hpp"
|
||||||
|
|
||||||
@ -208,10 +209,52 @@ class ConcreteMachine:
|
|||||||
case 0xc05e: case 0xc05f:
|
case 0xc05e: case 0xc05f:
|
||||||
video_.set_annunciator_3(!(address&1));
|
video_.set_annunciator_3(!(address&1));
|
||||||
break;
|
break;
|
||||||
|
case 0xc001: /* 0xc000 is dealt with in the ADB section. */
|
||||||
|
if(!is_read) video_.set_80_store(true);
|
||||||
|
break;
|
||||||
|
case 0xc00c: case 0xc00d:
|
||||||
|
if(!is_read) video_.set_80_columns(address & 1);
|
||||||
|
break;
|
||||||
|
case 0xc00e: case 0xc00f:
|
||||||
|
if(!is_read) video_.set_alternative_character_set(address & 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// ADB.
|
||||||
|
case 0xc000:
|
||||||
|
if(is_read) {
|
||||||
|
*value = adb_glu_.get_keyboard_data();
|
||||||
|
} else {
|
||||||
|
video_.set_80_store(false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xc024:
|
||||||
|
if(is_read) {
|
||||||
|
*value = adb_glu_.get_mouse_data();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xc025:
|
||||||
|
if(is_read) {
|
||||||
|
*value = adb_glu_.get_modifier_status();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xc026:
|
||||||
|
if(is_read) {
|
||||||
|
*value = adb_glu_.get_data();
|
||||||
|
} else {
|
||||||
|
adb_glu_.set_command(*value);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xc027:
|
||||||
|
if(is_read) {
|
||||||
|
*value = adb_glu_.get_status();
|
||||||
|
} else {
|
||||||
|
adb_glu_.set_status(*value);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// The SCC.
|
// The SCC.
|
||||||
case 0xc038: case 0xc039: case 0xc03a: case 0xc03b:
|
case 0xc038: case 0xc039: case 0xc03a: case 0xc03b:
|
||||||
if(isReadOperation(operation)) {
|
if(is_read) {
|
||||||
*value = scc_.read(int(address));
|
*value = scc_.read(int(address));
|
||||||
} else {
|
} else {
|
||||||
scc_.write(int(address), *value);
|
scc_.write(int(address), *value);
|
||||||
@ -220,14 +263,14 @@ class ConcreteMachine:
|
|||||||
|
|
||||||
// These were all dealt with by the call to memory_.access.
|
// These were all dealt with by the call to memory_.access.
|
||||||
// TODO: subject to read data? Does vapour lock apply?
|
// TODO: subject to read data? Does vapour lock apply?
|
||||||
case 0xc000: case 0xc001: case 0xc002: case 0xc003: case 0xc004: case 0xc005:
|
case 0xc002: case 0xc003: case 0xc004: case 0xc005:
|
||||||
case 0xc006: case 0xc007: case 0xc008: case 0xc009: case 0xc00a: case 0xc00b:
|
case 0xc006: case 0xc007: case 0xc008: case 0xc009: case 0xc00a: case 0xc00b:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Interrupt ROM addresses; Cf. P25 of the Hardware Reference.
|
// Interrupt ROM addresses; Cf. P25 of the Hardware Reference.
|
||||||
case 0xc071: case 0xc072: case 0xc073: case 0xc074: case 0xc075: case 0xc076: case 0xc077:
|
case 0xc071: case 0xc072: case 0xc073: case 0xc074: case 0xc075: case 0xc076: case 0xc077:
|
||||||
case 0xc078: case 0xc079: case 0xc07a: case 0xc07b: case 0xc07c: case 0xc07d: case 0xc07e: case 0xc07f:
|
case 0xc078: case 0xc079: case 0xc07a: case 0xc07b: case 0xc07c: case 0xc07d: case 0xc07e: case 0xc07f:
|
||||||
if(isReadOperation(operation)) {
|
if(is_read) {
|
||||||
*value = rom_[rom_.size() - 65536 + (address & 0xffff)];
|
*value = rom_[rom_.size() - 65536 + (address & 0xffff)];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -292,6 +335,7 @@ class ConcreteMachine:
|
|||||||
|
|
||||||
Apple::Clock::ParallelClock clock_;
|
Apple::Clock::ParallelClock clock_;
|
||||||
Apple::IIgs::Video::Video video_;
|
Apple::IIgs::Video::Video video_;
|
||||||
|
Apple::IIgs::ADB::GLU adb_glu_;
|
||||||
|
|
||||||
int fast_access_phase_ = 0;
|
int fast_access_phase_ = 0;
|
||||||
int slow_access_phase_ = 0;
|
int slow_access_phase_ = 0;
|
||||||
|
@ -456,6 +456,8 @@
|
|||||||
4B8DF4D825465B7500F3433C /* IIgsMemoryMapTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4D725465B7500F3433C /* IIgsMemoryMapTests.mm */; };
|
4B8DF4D825465B7500F3433C /* IIgsMemoryMapTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4D725465B7500F3433C /* IIgsMemoryMapTests.mm */; };
|
||||||
4B8DF4F9254E36AE00F3433C /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4F7254E36AD00F3433C /* Video.cpp */; };
|
4B8DF4F9254E36AE00F3433C /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4F7254E36AD00F3433C /* Video.cpp */; };
|
||||||
4B8DF4FA254E36AE00F3433C /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4F7254E36AD00F3433C /* Video.cpp */; };
|
4B8DF4FA254E36AE00F3433C /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF4F7254E36AD00F3433C /* Video.cpp */; };
|
||||||
|
4B8DF505254E3C9D00F3433C /* ADB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF503254E3C9D00F3433C /* ADB.cpp */; };
|
||||||
|
4B8DF506254E3C9D00F3433C /* ADB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DF503254E3C9D00F3433C /* ADB.cpp */; };
|
||||||
4B8FE21B1DA19D5F0090D3CE /* Atari2600Options.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2131DA19D5F0090D3CE /* Atari2600Options.xib */; };
|
4B8FE21B1DA19D5F0090D3CE /* Atari2600Options.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2131DA19D5F0090D3CE /* Atari2600Options.xib */; };
|
||||||
4B8FE21C1DA19D5F0090D3CE /* MachineDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2151DA19D5F0090D3CE /* MachineDocument.xib */; };
|
4B8FE21C1DA19D5F0090D3CE /* MachineDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2151DA19D5F0090D3CE /* MachineDocument.xib */; };
|
||||||
4B8FE21D1DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2171DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib */; };
|
4B8FE21D1DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2171DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib */; };
|
||||||
@ -1320,6 +1322,8 @@
|
|||||||
4B8DF4F2254E141700F3433C /* VideoSwitches.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VideoSwitches.hpp; sourceTree = "<group>"; };
|
4B8DF4F2254E141700F3433C /* VideoSwitches.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VideoSwitches.hpp; sourceTree = "<group>"; };
|
||||||
4B8DF4F7254E36AD00F3433C /* Video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Video.cpp; sourceTree = "<group>"; };
|
4B8DF4F7254E36AD00F3433C /* Video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Video.cpp; sourceTree = "<group>"; };
|
||||||
4B8DF4F8254E36AD00F3433C /* Video.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Video.hpp; sourceTree = "<group>"; };
|
4B8DF4F8254E36AD00F3433C /* Video.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Video.hpp; sourceTree = "<group>"; };
|
||||||
|
4B8DF503254E3C9D00F3433C /* ADB.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ADB.cpp; sourceTree = "<group>"; };
|
||||||
|
4B8DF504254E3C9D00F3433C /* ADB.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ADB.hpp; sourceTree = "<group>"; };
|
||||||
4B8E4ECD1DCE483D003716C3 /* KeyboardMachine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyboardMachine.hpp; sourceTree = "<group>"; };
|
4B8E4ECD1DCE483D003716C3 /* KeyboardMachine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyboardMachine.hpp; sourceTree = "<group>"; };
|
||||||
4B8EF6071FE5AF830076CCDD /* LowpassSpeaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LowpassSpeaker.hpp; sourceTree = "<group>"; };
|
4B8EF6071FE5AF830076CCDD /* LowpassSpeaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LowpassSpeaker.hpp; sourceTree = "<group>"; };
|
||||||
4B8FE2141DA19D5F0090D3CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Clock Signal/Base.lproj/Atari2600Options.xib"; sourceTree = SOURCE_ROOT; };
|
4B8FE2141DA19D5F0090D3CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Clock Signal/Base.lproj/Atari2600Options.xib"; sourceTree = SOURCE_ROOT; };
|
||||||
@ -3925,8 +3929,10 @@
|
|||||||
4BE2120D253FCE9C00435408 /* AppleIIgs */ = {
|
4BE2120D253FCE9C00435408 /* AppleIIgs */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4B8DF503254E3C9D00F3433C /* ADB.cpp */,
|
||||||
4BE21214253FCE9C00435408 /* AppleIIgs.cpp */,
|
4BE21214253FCE9C00435408 /* AppleIIgs.cpp */,
|
||||||
4B8DF4F7254E36AD00F3433C /* Video.cpp */,
|
4B8DF4F7254E36AD00F3433C /* Video.cpp */,
|
||||||
|
4B8DF504254E3C9D00F3433C /* ADB.hpp */,
|
||||||
4BE2120E253FCE9C00435408 /* AppleIIgs.hpp */,
|
4BE2120E253FCE9C00435408 /* AppleIIgs.hpp */,
|
||||||
4B8DF4D62546561300F3433C /* MemoryMap.hpp */,
|
4B8DF4D62546561300F3433C /* MemoryMap.hpp */,
|
||||||
4B8DF4F8254E36AD00F3433C /* Video.hpp */,
|
4B8DF4F8254E36AD00F3433C /* Video.hpp */,
|
||||||
@ -4652,6 +4658,7 @@
|
|||||||
4B055A8D1FAE85920060FFFF /* AsyncTaskQueue.cpp in Sources */,
|
4B055A8D1FAE85920060FFFF /* AsyncTaskQueue.cpp in Sources */,
|
||||||
4BAD13441FF709C700FD114A /* MSX.cpp in Sources */,
|
4BAD13441FF709C700FD114A /* MSX.cpp in Sources */,
|
||||||
4B055AC41FAE9AE80060FFFF /* Keyboard.cpp in Sources */,
|
4B055AC41FAE9AE80060FFFF /* Keyboard.cpp in Sources */,
|
||||||
|
4B8DF506254E3C9D00F3433C /* ADB.cpp in Sources */,
|
||||||
4B055A941FAE85B50060FFFF /* CommodoreROM.cpp in Sources */,
|
4B055A941FAE85B50060FFFF /* CommodoreROM.cpp in Sources */,
|
||||||
4BBB70A5202011C2002FE009 /* MultiMediaTarget.cpp in Sources */,
|
4BBB70A5202011C2002FE009 /* MultiMediaTarget.cpp in Sources */,
|
||||||
4B8318BC22D3E588006DB630 /* DisplayMetrics.cpp in Sources */,
|
4B8318BC22D3E588006DB630 /* DisplayMetrics.cpp in Sources */,
|
||||||
@ -4736,6 +4743,7 @@
|
|||||||
4B4518A01F75FD1C00926311 /* CPCDSK.cpp in Sources */,
|
4B4518A01F75FD1C00926311 /* CPCDSK.cpp in Sources */,
|
||||||
4B0CCC451C62D0B3001CAC5F /* CRT.cpp in Sources */,
|
4B0CCC451C62D0B3001CAC5F /* CRT.cpp in Sources */,
|
||||||
4BC23A2C2467600F001A6030 /* OPLL.cpp in Sources */,
|
4BC23A2C2467600F001A6030 /* OPLL.cpp in Sources */,
|
||||||
|
4B8DF505254E3C9D00F3433C /* ADB.cpp in Sources */,
|
||||||
4B322E041F5A2E3C004EB04C /* Z80Base.cpp in Sources */,
|
4B322E041F5A2E3C004EB04C /* Z80Base.cpp in Sources */,
|
||||||
4B0ACC2623775819008902D0 /* AtariST.cpp in Sources */,
|
4B0ACC2623775819008902D0 /* AtariST.cpp in Sources */,
|
||||||
4B894530201967B4007DE474 /* StaticAnalyser.cpp in Sources */,
|
4B894530201967B4007DE474 /* StaticAnalyser.cpp in Sources */,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user