Skip to content

Commit 4bddbb8

Browse files
ChetSimpsonejaquay
authored andcommitted
relocate distortc into vcc::devices::rtc::oki_m6242b device and update fd502 cart to use it
1 parent d7ddef4 commit 4bddbb8

File tree

7 files changed

+129
-107
lines changed

7 files changed

+129
-107
lines changed

FD502/distortc.h

Lines changed: 0 additions & 23 deletions
This file was deleted.

FD502/fd502.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ This file is part of VCC (Virtual Color Computer).
2929
#include <iostream>
3030
#include "resource.h"
3131
#include "wd1793.h"
32-
#include "distortc.h"
3332
#include "fd502.h"
3433
#include "../CartridgeMenu.h"
35-
#include <vcc/core/limits.h>
34+
#include <vcc/devices/rtc/oki_m6242b.h>
3635
#include <vcc/common/FileOps.h>
3736
#include <vcc/common/DialogOps.h>
3837
#include <vcc/common/logger.h>
38+
#include <vcc/core/limits.h>
3939

4040
//include becker code if COMBINE_BECKER is defined in fd502.h
4141
#ifdef COMBINE_BECKER
@@ -84,6 +84,8 @@ int BeckerEnabled=0;
8484
char BeckerAddr[MAX_PATH]="";
8585
char BeckerPort[32]="";
8686

87+
static ::vcc::devices::rtc::oki_m6242b gDistoRtc;
88+
8789
//----------------------------------------------------------------------------
8890
BOOL WINAPI DllMain(
8991
HINSTANCE hinstDLL, // handle to DLL module
@@ -211,7 +213,7 @@ extern "C"
211213
} else //if ( ((Port == 0x50) | (Port==0x51)) & ClockEnabled) {
212214
#endif
213215
if ( ((Port == 0x50) | (Port==0x51)) & ClockEnabled) {
214-
write_time(Data,Port);
216+
gDistoRtc.write_port(Data, Port);
215217
} else {
216218
disk_io_write(Data,Port);
217219
}
@@ -227,8 +229,8 @@ extern "C"
227229
if (BeckerEnabled && ((Port == 0x41) | (Port== 0x42 )))
228230
return(becker_read(Port));
229231
#endif
230-
if ( ((Port == 0x50) | (Port== 0x51 )) & ClockEnabled)
231-
return(read_time(Port));
232+
if (((Port == 0x50) | (Port == 0x51)) & ClockEnabled)
233+
return gDistoRtc.read_port(Port);
232234
return(disk_io_read(Port));
233235
}
234236
}

FD502/fd502.vcxproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,12 @@
9696
</Link>
9797
</ItemDefinitionGroup>
9898
<ItemGroup>
99-
<ClCompile Include="distortc.cpp" />
10099
<ClCompile Include="fd502.cpp" />
101100
<ClCompile Include="wd1793.cpp" />
102101
<ClCompile Include="becker.cpp" />
103102
</ItemGroup>
104103
<ItemGroup>
105104
<ClInclude Include="defines.h" />
106-
<ClInclude Include="distortc.h" />
107105
<ClInclude Include="fd502.h" />
108106
<ClInclude Include="fdrawcmd.h" />
109107
<ClInclude Include="resource.h" />
@@ -121,4 +119,4 @@
121119
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
122120
<ImportGroup Label="ExtensionTargets">
123121
</ImportGroup>
124-
</Project>
122+
</Project>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
#include <vcc/core/detail/exports.h>
3+
4+
5+
namespace vcc::devices::rtc
6+
{
7+
8+
class LIBCOMMON_EXPORT oki_m6242b
9+
{
10+
public:
11+
12+
unsigned char read_port(unsigned short port_id);
13+
void write_port(unsigned char data, unsigned char port_id);
14+
15+
16+
private:
17+
18+
unsigned char time_register_ = 0;
19+
unsigned char hour12_ = 0;
20+
};
21+
22+
}

libcommon/libcommon.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
<ClCompile Include="src\core\utils\filesystem.cpp" />
108108
<ClCompile Include="src\core\utils\winapi.cpp" />
109109
<ClCompile Include="src\devices\rtc\cloud9.cpp" />
110+
<ClCompile Include="src\devices\rtc\oki_m6242b.cpp" />
110111
<ClCompile Include="src\DialogOps.cpp" />
111112
<ClCompile Include="src\Fileops.cpp" />
112113
<ClCompile Include="src\logger.cpp" />
@@ -135,6 +136,7 @@
135136
<ClInclude Include="include\vcc\core\utils\filesystem.h" />
136137
<ClInclude Include="include\vcc\core\utils\winapi.h" />
137138
<ClInclude Include="include\vcc\devices\rtc\cloud9.h" />
139+
<ClInclude Include="include\vcc\devices\rtc\oki_m6242b.h" />
138140
<ClInclude Include="resource\resource.h" />
139141
</ItemGroup>
140142
<ItemGroup>

libcommon/libcommon.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@
9393
<ClCompile Include="src\devices\rtc\cloud9.cpp">
9494
<Filter>Source Files\devices\rtc</Filter>
9595
</ClCompile>
96+
<ClCompile Include="src\devices\rtc\oki_m6242b.cpp">
97+
<Filter>Source Files\devices\rtc</Filter>
98+
</ClCompile>
9699
</ItemGroup>
97100
<ItemGroup>
98101
<ClInclude Include="resource\resource.h">
@@ -164,6 +167,9 @@
164167
<ClInclude Include="include\vcc\devices\rtc\cloud9.h">
165168
<Filter>Header Files\devices\rtc</Filter>
166169
</ClInclude>
170+
<ClInclude Include="include\vcc\devices\rtc\oki_m6242b.h">
171+
<Filter>Header Files\devices\rtc</Filter>
172+
</ClInclude>
167173
</ItemGroup>
168174
<ItemGroup>
169175
<ResourceCompile Include="resource\libcommon.rc">

FD502/distortc.cpp renamed to libcommon/src/devices/rtc/oki_m6242b.cpp

Lines changed: 91 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ This file is part of VCC (Virtual Color Computer).
1515
You should have received a copy of the GNU General Public License
1616
along with VCC (Virtual Color Computer). If not, see <http://www.gnu.org/licenses/>.
1717
*/
18+
#include <vcc/devices/rtc/oki_m6242b.h>
1819
#include <Windows.h>
1920
#include <stdio.h>
2021
#include <stdlib.h>
21-
#include "distortc.h"
2222

2323
/* Table description: Bit3 Bit2 Bit1 Bit0
2424
Write to $FF51 read from $FF50
@@ -51,99 +51,114 @@ Write to $FF51 read from $FF50
5151
5252
5353
*/
54-
static unsigned char time_register=0;
55-
static SYSTEMTIME now;
56-
static unsigned char Hour12=0;
5754

58-
unsigned char read_time(unsigned short port)
55+
namespace vcc::devices::rtc
5956
{
60-
unsigned char ret_val=0;
61-
if (port == 0x50)
57+
58+
unsigned char oki_m6242b::read_port(unsigned short port_id)
6259
{
63-
GetLocalTime(&now);
64-
switch (time_register)
60+
unsigned char ret_val=0;
61+
62+
if (port_id == 0x50)
6563
{
64+
SYSTEMTIME now;
65+
66+
GetLocalTime(&now);
67+
switch (time_register_)
68+
{
69+
70+
case 0:
71+
ret_val = now.wSecond % 10;
72+
break;
73+
74+
case 1:
75+
ret_val = now.wSecond / 10;
76+
break;
77+
78+
case 2:
79+
ret_val = now.wMinute % 10;
80+
break;
81+
82+
case 3:
83+
ret_val = now.wMinute / 10;
84+
break;
85+
86+
case 4:
87+
ret_val = now.wHour % 10;
88+
break;
6689

67-
case 0:
68-
ret_val= now.wSecond % 10;
69-
break;
70-
case 1:
71-
ret_val= now.wSecond / 10;
72-
break;
73-
case 2:
74-
ret_val = now.wMinute % 10;
75-
break;
76-
case 3:
77-
ret_val = now.wMinute / 10;
78-
break;
79-
case 4:
80-
ret_val = now.wHour % 10;
81-
break;
82-
case 5:
83-
ret_val = now.wHour / 10;
84-
85-
break;
86-
case 6:
87-
ret_val = now.wDay % 10;
88-
break;
89-
case 7:
90-
ret_val = now.wDay /10;
91-
break;
92-
case 8:
93-
ret_val = now.wMonth % 10;
94-
break;
95-
case 9:
96-
ret_val = now.wMonth /10 ;
97-
break;
98-
case 0xA:
99-
ret_val = now.wYear%10;
100-
break;
101-
case 0xB:
102-
ret_val = (now.wYear%100)/10;
103-
break;
104-
case 0xC:
105-
ret_val=(unsigned char)now.wDayOfWeek; //May not be right
106-
break;
107-
case 0xD:
108-
109-
break;
110-
case 0xE:
111-
112-
break;
113-
case 0xF:
114-
// Hour12
115-
break;
116-
default:
117-
ret_val=0;
118-
break;
90+
case 5:
91+
ret_val = now.wHour / 10;
92+
break;
93+
94+
case 6:
95+
ret_val = now.wDay % 10;
96+
break;
11997

98+
case 7:
99+
ret_val = now.wDay / 10;
100+
break;
101+
102+
case 8:
103+
ret_val = now.wMonth % 10;
104+
break;
105+
106+
case 9:
107+
ret_val = now.wMonth / 10;
108+
break;
109+
110+
case 0xA:
111+
ret_val = now.wYear % 10;
112+
break;
113+
114+
case 0xB:
115+
ret_val = (now.wYear % 100) / 10;
116+
break;
117+
118+
case 0xC:
119+
ret_val = (unsigned char)now.wDayOfWeek; //May not be right
120+
break;
121+
122+
case 0xD:
123+
break;
124+
125+
case 0xE:
126+
break;
127+
128+
case 0xF:
129+
break;
130+
131+
default:
132+
ret_val = 0;
133+
break;
134+
135+
}
120136
}
121-
}
122137

123-
return ret_val;
124-
}
138+
return ret_val;
139+
}
125140

126-
void write_time(unsigned char data,unsigned char port)
127-
{
128-
switch (port)
141+
void oki_m6242b::write_port(unsigned char data, unsigned char port_id)
129142
{
143+
switch (port_id)
144+
{
130145
case 0x50:
131-
switch (time_register)
146+
switch (time_register_)
132147
{
133-
case 0x0F:
134-
Hour12=!((data & 4)>>2);
148+
case 0x0F:
149+
hour12_ = !((data & 4) >> 2);
135150
break;
136151

137-
default:
152+
default:
138153
break;
139154
}
140155

141-
break;
156+
break;
142157

143158
case 0x51:
144-
time_register=(data & 0xF);
145-
break;
159+
time_register_ = (data & 0xF);
160+
break;
161+
}
146162
}
147-
return;
148-
}
149163

164+
}

0 commit comments

Comments
 (0)