Compare commits
123 Commits
v1.30.19.0
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
7499adafdd | ||
|
72cc98d72a | ||
|
79499fba0e | ||
|
5386891222 | ||
|
d18f0a58a2 | ||
|
d35bb2bcde | ||
|
c245494859 | ||
|
b7452e00ba | ||
|
0b12427f27 | ||
|
75cc573d0e | ||
|
cdba020ca7 | ||
|
552d830045 | ||
|
001ffe8dee | ||
|
aa90c9e8e0 | ||
|
0b5ce77e41 | ||
|
04a6c6ec6c | ||
|
ba3b371ed6 | ||
|
ddb3755389 | ||
|
00ab15ddaf | ||
|
e10eb0b42f | ||
|
7e40218be7 | ||
|
8182d99563 | ||
|
515cbc3e00 | ||
|
3d0ef63537 | ||
|
403ae5d044 | ||
|
d963ab5e7e | ||
|
fb059c7bc5 | ||
|
810642c00d | ||
|
23074f2020 | ||
|
2902ca0024 | ||
|
fede2c103a | ||
|
92a35ae481 | ||
|
217a31d095 | ||
|
265f1ddbf1 | ||
|
32749dbcad | ||
|
19cef509f7 | ||
|
5bdbbb2a87 | ||
|
d052327fb4 | ||
|
a4fa3b5cb5 | ||
|
c3fb55d376 | ||
|
839c493b67 | ||
|
629e1344a2 | ||
|
9d312230e5 | ||
|
9006430f0c | ||
|
e262595e30 | ||
|
c1592b90f4 | ||
|
07914230a7 | ||
|
fa6d2f7c12 | ||
|
245773795f | ||
|
acbef19489 | ||
|
b35a4d17d2 | ||
|
fa181922f0 | ||
|
287a0f892e | ||
|
693812319a | ||
|
0ef6ead4a6 | ||
|
67896db65e | ||
|
bd87cae92c | ||
|
5bc7e495bf | ||
|
648e5cca25 | ||
|
168e868677 | ||
|
1f3e253c4b | ||
|
f44d058a09 | ||
|
977cc01d85 | ||
|
fa608c1f89 | ||
|
3659beb776 | ||
|
cb0da8538d | ||
|
9bd5f838b3 | ||
|
7cde8d40c9 | ||
|
7aa6fb5757 | ||
|
ef088e49ae | ||
|
02b6bbdbb5 | ||
|
d6c1654e97 | ||
|
143f6679b6 | ||
|
6c6d821051 | ||
|
c336a0ce40 | ||
|
c4e81fc71d | ||
|
b1a03a1a81 | ||
|
3a3663d9d6 | ||
|
d7918d9ac9 | ||
|
80af06db77 | ||
|
16b2cf329e | ||
|
a2b03483ee | ||
|
cb1366f485 | ||
|
35f176e4d8 | ||
|
44babe9814 | ||
|
9b15559949 | ||
|
3fb6839458 | ||
|
000b546613 | ||
|
d1d026f7ab | ||
|
a6416acb87 | ||
|
b5544142e0 | ||
|
d896e1cec2 | ||
|
7f9563b8ea | ||
|
a0e79d449e | ||
|
ae4b34decf | ||
|
7c6ec3dbf0 | ||
|
964a5d5198 | ||
|
5ddb2357aa | ||
|
f6d0c0088c | ||
|
910313f176 | ||
|
9f508d1b7e | ||
|
617e2b5d16 | ||
|
cf42f77b70 | ||
|
3033f3445b | ||
|
e8641555e8 | ||
|
5f40ac8e70 | ||
|
b764c00d50 | ||
|
8739b6ba08 | ||
|
ec90ebf156 | ||
|
8a3de5592a | ||
|
29c02d6bf2 | ||
|
f035a53374 | ||
|
b3aef776c2 | ||
|
57ba330072 | ||
|
91743eeebc | ||
|
ad6482a89c | ||
|
25820cc145 | ||
|
fd93396162 | ||
|
4786de0cc7 | ||
|
1127447a10 | ||
|
2e65426a11 | ||
|
6e8d79ddde | ||
|
f516423772 |
@@ -11,7 +11,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppleWin", "AppleWin-VS2022
|
||||
{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E} = {9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip_lib", "zip_lib\zip_VS2022.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip\zip_VS2022.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib-VS2022.vcxproj", "{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}"
|
||||
EndProject
|
||||
|
@@ -59,7 +59,6 @@
|
||||
<ClInclude Include="source\CPU\cpu6502.h" />
|
||||
<ClInclude Include="source\CPU\cpu65C02.h" />
|
||||
<ClInclude Include="source\Debugger\Debug.h" />
|
||||
<ClInclude Include="source\Debugger\DebugDefs.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Assembler.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Color.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Console.h" />
|
||||
@@ -100,6 +99,8 @@
|
||||
<ClInclude Include="source\NTSC_CharSet.h" />
|
||||
<ClInclude Include="source\ParallelPrinter.h" />
|
||||
<ClInclude Include="source\Pravets.h" />
|
||||
<ClInclude Include="source\ProDOS_Utils.h" />
|
||||
<ClInclude Include="source\ProDOS_FileSystem.h" />
|
||||
<ClInclude Include="source\Registry.h" />
|
||||
<ClInclude Include="source\RGBMonitor.h" />
|
||||
<ClInclude Include="source\Riff.h" />
|
||||
@@ -107,6 +108,7 @@
|
||||
<ClInclude Include="source\SaveState.h" />
|
||||
<ClInclude Include="source\SerialComms.h" />
|
||||
<ClInclude Include="source\SNESMAX.h" />
|
||||
<ClInclude Include="source\SoundBuffer.h" />
|
||||
<ClInclude Include="source\SoundCore.h" />
|
||||
<ClInclude Include="source\Speaker.h" />
|
||||
<ClInclude Include="source\Speech.h" />
|
||||
@@ -134,6 +136,7 @@
|
||||
<ClInclude Include="source\W5100.h" />
|
||||
<ClInclude Include="source\Windows\AppleWin.h" />
|
||||
<ClInclude Include="source\Windows\DirectInput.h" />
|
||||
<ClInclude Include="source\Windows\DXSoundBuffer.h" />
|
||||
<ClInclude Include="source\Windows\HookFilter.h" />
|
||||
<ClInclude Include="source\Windows\Win32Frame.h" />
|
||||
<ClInclude Include="source\YamlHelper.h" />
|
||||
@@ -209,6 +212,7 @@
|
||||
<ClCompile Include="source\NTSC_CharSet.cpp" />
|
||||
<ClCompile Include="source\ParallelPrinter.cpp" />
|
||||
<ClCompile Include="source\Pravets.cpp" />
|
||||
<ClCompile Include="source\ProDOS_Utils.cpp" />
|
||||
<ClCompile Include="source\Registry.cpp" />
|
||||
<ClCompile Include="source\Riff.cpp" />
|
||||
<ClCompile Include="source\SaveState.cpp" />
|
||||
@@ -264,6 +268,7 @@
|
||||
<ClCompile Include="Source\VidHD.cpp" />
|
||||
<ClCompile Include="source\Windows\AppleWin.cpp" />
|
||||
<ClCompile Include="source\Windows\DirectInput.cpp" />
|
||||
<ClCompile Include="source\Windows\DXSoundBuffer.cpp" />
|
||||
<ClCompile Include="source\Windows\HookFilter.cpp" />
|
||||
<ClCompile Include="source\Windows\Win32Frame.cpp" />
|
||||
<ClCompile Include="source\Windows\WinFrame.cpp" />
|
||||
@@ -321,7 +326,7 @@
|
||||
<None Include="source\CPU\cpu_instructions.inl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="zip_lib\zip_VS2022.vcxproj">
|
||||
<ProjectReference Include="minizip\zip_VS2022.vcxproj">
|
||||
<Project>{509739e7-0af3-4c09-a1a9-f0b1bc31b39d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="zlib\zlib-VS2022.vcxproj">
|
||||
@@ -467,7 +472,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
@@ -494,7 +499,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
@@ -523,7 +528,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
@@ -551,7 +556,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -583,7 +588,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -617,7 +622,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
|
@@ -106,6 +106,9 @@
|
||||
<ClCompile Include="source\Configuration\PageSound.cpp">
|
||||
<Filter>Source Files\Configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\ProDOS_Utils.cpp">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\ParallelPrinter.cpp">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClCompile>
|
||||
@@ -274,6 +277,9 @@
|
||||
<ClCompile Include="source\MockingboardCardManager.cpp">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Windows\DXSoundBuffer.cpp">
|
||||
<Filter>Source Files\Windows</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="source\CommonVICE\6510core.h">
|
||||
@@ -423,6 +429,12 @@
|
||||
<ClInclude Include="source\ParallelPrinter.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\ProDOS_Utils.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\ProDOS_FileSystem.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Pcap.h">
|
||||
<Filter>Source Files\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
@@ -495,9 +507,6 @@
|
||||
<ClInclude Include="source\z80emu.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\DebugDefs.h">
|
||||
<Filter>Source Files\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h">
|
||||
<Filter>Source Files\Debugger</Filter>
|
||||
</ClInclude>
|
||||
@@ -621,6 +630,12 @@
|
||||
<ClInclude Include="source\MemoryDefs.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SoundBuffer.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Windows\DXSoundBuffer.h">
|
||||
<Filter>Source Files\Windows</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resource\Applewin.bmp">
|
||||
|
@@ -11,7 +11,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppleWin", "AppleWinExpress
|
||||
{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E} = {9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip_lib", "zip_lib\zip_lib2019.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip\zip_lib2019.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib-Express2019.vcxproj", "{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}"
|
||||
EndProject
|
||||
|
@@ -59,7 +59,6 @@
|
||||
<ClInclude Include="source\CPU\cpu6502.h" />
|
||||
<ClInclude Include="source\CPU\cpu65C02.h" />
|
||||
<ClInclude Include="source\Debugger\Debug.h" />
|
||||
<ClInclude Include="source\Debugger\DebugDefs.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Assembler.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Color.h" />
|
||||
<ClInclude Include="source\Debugger\Debugger_Console.h" />
|
||||
@@ -90,6 +89,7 @@
|
||||
<ClInclude Include="source\LanguageCard.h" />
|
||||
<ClInclude Include="source\Log.h" />
|
||||
<ClInclude Include="source\Memory.h" />
|
||||
<ClInclude Include="source\MemoryDefs.h" />
|
||||
<ClInclude Include="source\Mockingboard.h" />
|
||||
<ClInclude Include="source\MockingboardCardManager.h" />
|
||||
<ClInclude Include="source\MockingboardDefs.h" />
|
||||
@@ -99,6 +99,8 @@
|
||||
<ClInclude Include="source\NTSC_CharSet.h" />
|
||||
<ClInclude Include="source\ParallelPrinter.h" />
|
||||
<ClInclude Include="source\Pravets.h" />
|
||||
<ClInclude Include="source\ProDOS_FileSystem.h" />
|
||||
<ClInclude Include="source\ProDOS_Utils.h" />
|
||||
<ClInclude Include="source\Registry.h" />
|
||||
<ClInclude Include="source\RGBMonitor.h" />
|
||||
<ClInclude Include="source\Riff.h" />
|
||||
@@ -106,6 +108,7 @@
|
||||
<ClInclude Include="source\SaveState.h" />
|
||||
<ClInclude Include="source\SerialComms.h" />
|
||||
<ClInclude Include="source\SNESMAX.h" />
|
||||
<ClInclude Include="source\SoundBuffer.h" />
|
||||
<ClInclude Include="source\SoundCore.h" />
|
||||
<ClInclude Include="source\Speaker.h" />
|
||||
<ClInclude Include="source\Speech.h" />
|
||||
@@ -133,6 +136,7 @@
|
||||
<ClInclude Include="source\W5100.h" />
|
||||
<ClInclude Include="source\Windows\AppleWin.h" />
|
||||
<ClInclude Include="source\Windows\DirectInput.h" />
|
||||
<ClInclude Include="source\Windows\DXSoundBuffer.h" />
|
||||
<ClInclude Include="source\Windows\HookFilter.h" />
|
||||
<ClInclude Include="source\Windows\Win32Frame.h" />
|
||||
<ClInclude Include="source\YamlHelper.h" />
|
||||
@@ -177,6 +181,7 @@
|
||||
<ClCompile Include="source\FourPlay.cpp" />
|
||||
<ClCompile Include="source\FrameBase.cpp" />
|
||||
<ClCompile Include="source\MockingboardCardManager.cpp" />
|
||||
<ClCompile Include="source\ProDOS_Utils.cpp" />
|
||||
<ClCompile Include="source\RGBMonitor.cpp" />
|
||||
<ClCompile Include="source\SAM.cpp" />
|
||||
<ClCompile Include="source\Debugger\Debug.cpp" />
|
||||
@@ -263,6 +268,7 @@
|
||||
<ClCompile Include="Source\VidHD.cpp" />
|
||||
<ClCompile Include="source\Windows\AppleWin.cpp" />
|
||||
<ClCompile Include="source\Windows\DirectInput.cpp" />
|
||||
<ClCompile Include="source\Windows\DXSoundBuffer.cpp" />
|
||||
<ClCompile Include="source\Windows\HookFilter.cpp" />
|
||||
<ClCompile Include="source\Windows\Win32Frame.cpp" />
|
||||
<ClCompile Include="source\Windows\WinFrame.cpp" />
|
||||
@@ -297,14 +303,18 @@
|
||||
<None Include="resource\Apple2.rom" />
|
||||
<None Include="resource\Apple2e.rom" />
|
||||
<None Include="resource\Apple2e_Enhanced.rom" />
|
||||
<None Include="resource\Apple2e_Enhanced_Video.rom" />
|
||||
<None Include="resource\Apple2_JPlus.rom" />
|
||||
<None Include="resource\Apple2_JPlus_Video.rom" />
|
||||
<None Include="resource\Apple2_Plus.rom" />
|
||||
<None Include="resource\Apple2_Video.rom" />
|
||||
<None Include="resource\Base64A.rom" />
|
||||
<None Include="resource\Base64A_German_Video.rom" />
|
||||
<None Include="resource\Disk2-13sector.rom" />
|
||||
<None Include="resource\DISK2.rom" />
|
||||
<None Include="resource\Freezes_Non-autostart_F8_Rom.rom" />
|
||||
<None Include="resource\HDC-SmartPort.bin" />
|
||||
<None Include="resource\Hddrvr-v2.bin" />
|
||||
<None Include="resource\Hddrvr.bin" />
|
||||
<None Include="resource\Mockingboard-D.rom" />
|
||||
<None Include="resource\MouseInterface.rom" />
|
||||
@@ -320,7 +330,7 @@
|
||||
<None Include="source\CPU\cpu_instructions.inl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="zip_lib\zip_lib2019.vcxproj">
|
||||
<ProjectReference Include="minizip\zip_lib2019.vcxproj">
|
||||
<Project>{509739e7-0af3-4c09-a1a9-f0b1bc31b39d}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="zlib\zlib-Express2019.vcxproj">
|
||||
@@ -466,7 +476,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
@@ -493,7 +503,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
@@ -509,7 +519,7 @@
|
||||
</Link>
|
||||
<PreBuildEvent>
|
||||
<Command>echo Performing unit-test: TestCPU6502
|
||||
.\Debug\TestCPU6502.exe</Command>
|
||||
".\Debug v141_xp\TestCPU6502.exe"</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Performing unit-test: TestCPU6502</Message>
|
||||
@@ -522,7 +532,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
@@ -550,7 +560,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -582,7 +592,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -601,7 +611,7 @@
|
||||
</Link>
|
||||
<PreBuildEvent>
|
||||
<Command>echo Performing unit-test: TestCPU6502
|
||||
.\Release\TestCPU6502.exe</Command>
|
||||
".\Release v141_xp\TestCPU6502.exe"</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Performing unit-test: TestCPU6502</Message>
|
||||
@@ -616,7 +626,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
|
@@ -274,6 +274,12 @@
|
||||
<ClCompile Include="source\MockingboardCardManager.cpp">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\Windows\DXSoundBuffer.cpp">
|
||||
<Filter>Source Files\Windows</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\ProDOS_Utils.cpp">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="source\CommonVICE\6510core.h">
|
||||
@@ -423,6 +429,9 @@
|
||||
<ClInclude Include="source\ParallelPrinter.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\ProDOS_FileSystem.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Tfe\Pcap.h">
|
||||
<Filter>Source Files\Uthernet</Filter>
|
||||
</ClInclude>
|
||||
@@ -495,9 +504,6 @@
|
||||
<ClInclude Include="source\z80emu.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\DebugDefs.h">
|
||||
<Filter>Source Files\Debugger</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h">
|
||||
<Filter>Source Files\Debugger</Filter>
|
||||
</ClInclude>
|
||||
@@ -618,6 +624,18 @@
|
||||
<ClInclude Include="source\MockingboardDefs.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\MemoryDefs.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\SoundBuffer.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\Windows\DXSoundBuffer.h">
|
||||
<Filter>Source Files\Windows</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\ProDOS_Utils.h">
|
||||
<Filter>Source Files\Emulator</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resource\Applewin.bmp">
|
||||
@@ -805,6 +823,18 @@
|
||||
<None Include="resource\Disk2-13sector.rom">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2_Video.rom">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="resource\Apple2e_Enhanced_Video.rom">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="resource\HDC-SmartPort.bin">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="resource\Hddrvr-v2.bin">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="docs\CodingConventions.txt">
|
||||
|
29
README.md
@@ -5,7 +5,18 @@ AppleWin
|
||||
|
||||
AppleWin is a fully-featured emulator supporting different Apple II models and clones. A variety of peripheral cards and video display modes are supported (eg. NTSC, RGB); and there's an extensive built-in symbolic debugger.
|
||||
|
||||
Apple 2 models supported include:
|
||||
|
||||
* ][
|
||||
* ][+
|
||||
* //e
|
||||
* //e Enhanced
|
||||
* Various clones (Pravets, TK3000, Base 64)
|
||||
|
||||
There is currently no support for the //c, //c+, Laser 128, Laser 128EX, Laser 128EX2, or Apple IIgs.
|
||||
|
||||
Peripheral cards and add-on hardware supported:
|
||||
|
||||
- Mockingboard, Phasor and SAM sound cards
|
||||
- Disk II interface for floppy disk drives
|
||||
- Hard disk controller
|
||||
@@ -22,22 +33,32 @@ Peripheral cards and add-on hardware supported:
|
||||
- No Slot Clock (NSC)
|
||||
- Game I/O Connector copy protection dongles
|
||||
|
||||
Running
|
||||
=======
|
||||
|
||||
Download latest (stable) release: [AppleWin v1.30.17.0](https://github.com/AppleWin/AppleWin/releases/download/v1.30.17.0/AppleWin1.30.17.0.zip)
|
||||
Download latest (stable) release: [AppleWin v1.30.20.0](https://github.com/AppleWin/AppleWin/releases/download/v1.30.20.0/AppleWin1.30.20.0.zip)
|
||||
|
||||
Release Notes: [v1.30.17.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.30.17.0)
|
||||
Release Notes: [v1.30.20.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.30.20.0)
|
||||
|
||||
|
||||
Building
|
||||
========
|
||||
To compile from source see:
|
||||
To compile for Windows from source see:
|
||||
|
||||
* [docs/compiling.txt](https://github.com/AppleWin/AppleWin/blob/master/docs/compiling.txt)
|
||||
|
||||
|
||||
Unofficial Ports
|
||||
================
|
||||
|
||||
These ports will allow you to build and run AppleWin on other platforms:
|
||||
|
||||
* [Linux](https://github.com/audetto/AppleWin)
|
||||
* [macOS](https://github.com/sh95014/AppleWin)
|
||||
|
||||
Contributing
|
||||
============
|
||||
Please see the [CONTRIBUTING](https://github.com/AppleWin/AppleWin/blob/master/CONTRIBUTING.md) doc before raising new bugs, features and _especially_ PRs.
|
||||
Please see the [CONTRIBUTING](https://github.com/AppleWin/AppleWin/blob/master/CONTRIBUTING.md) document before raising new bugs, features and _especially_ PRs (Pull Requests).
|
||||
|
||||
|
||||
Next Version
|
||||
|
93
bin/A2_DOS33.SYM2
Normal file
@@ -0,0 +1,93 @@
|
||||
// DOS 3.3 Symbols for AppleWin
|
||||
// Min debugger version 2.9.2.4
|
||||
|
||||
// = Functions =
|
||||
symdos33 DOS.COS0 = 9EEB
|
||||
symdos33 DOS.COS1 = 9F12
|
||||
symdos33 DOS.SCANCMD = 9FCD
|
||||
symdos33 DOS.ORTN = 9FB3
|
||||
symdos33 DOS.MVCSW = A851
|
||||
symdos33 DOS.EBLD = A35D
|
||||
symdos33 DOS.EBLD1 = A382
|
||||
symdos33 DOS.EBLD2 = A360
|
||||
symdos33 DOS.EBLD3 = A36C
|
||||
symdos33 DOS.EBSV = A331
|
||||
symdos33 DOS.EBRUN = A38E
|
||||
symdos33 DOS.LD3 = A471
|
||||
symdos33 DOS.GNBC = A1A4
|
||||
|
||||
// = Data =
|
||||
dw DOS.CFTABA = AA4F
|
||||
db DOS.ISTATE = AA51
|
||||
db DOS.OSTATE = AA52
|
||||
dw DOS.SVOUTS = AA53
|
||||
dw DOS.SVINS = AA55
|
||||
db DOS.CNFTBS = AA57
|
||||
db DOS.DFNFB = AA58
|
||||
db DOS.SVSTK = AA59
|
||||
db DOS.SVX = AA5A
|
||||
db DOS.SVY = AA5B
|
||||
db DOS.SVA = AA5C
|
||||
db DOS.LBUFD = AA5D
|
||||
db DOS.MONMOD = AA5E
|
||||
db DOS.CMDNO = AA5F
|
||||
dw DOS.SVBL = AA60
|
||||
db DOS.SVCMD = AA62
|
||||
db DOS.TEMP1A = AA63
|
||||
db DOS.TEMP2A = AA64
|
||||
db DOS.INOPTS = AA65
|
||||
dw DOS.CV = AA66
|
||||
dw DOS.CD = AA68
|
||||
dw DOS.CS = AA6A
|
||||
dw DOS.CL = AA6C
|
||||
dw DOS.CR = AA6E
|
||||
dw DOS.CB = AA70
|
||||
dw DOS.CA = AA72
|
||||
|
||||
db DOS.PAD_B7DF = B7DF
|
||||
db DOS.NDPGS = B7E0
|
||||
db DOS.BRWCNT = B7E1
|
||||
db DOS.PAD_B7E2 = B7E2
|
||||
db DOS.PAD_B7E3 = B7E3
|
||||
da DOS.BAOB = B7E4
|
||||
da DOS.ADOSLD = B7E6
|
||||
db DOS.IBTYPE = B7E8
|
||||
db DOS.IBSLOT = B7E9
|
||||
db DOS.IBDRVN = B7EA
|
||||
db DOS.IBVOL = B7EB
|
||||
db DOS.IBTRK = B7EC
|
||||
db DOS.IBSECT = B7ED
|
||||
da DOS.IBDCTP = B7EE
|
||||
da DOS.IBBUFP = B7F0
|
||||
dw DOS.IBDLEN = B7F2
|
||||
db DOS.IBCMD = B7F4
|
||||
|
||||
// = Strings =
|
||||
asc T_INIT A884:A887
|
||||
asc T_LOAD A888:A88B
|
||||
asc T_SAVE A88C:A88F
|
||||
asc T_RUN A890:A892
|
||||
asc T_CHAIN A893:A897
|
||||
asc T_DELETE A898:A89D
|
||||
asc T_LOCK A89E:A8A1
|
||||
asc T_UNLOCK A8A2:A8A7
|
||||
asc T_CLOSE A8A8:A8AC
|
||||
asc T_READ A8AD:A8B0
|
||||
asc T_EXEC A8B1:A8B4
|
||||
asc T_WRITE A8B5:A8B9
|
||||
asc T_POSITION A8BA:A8C1
|
||||
asc T_OPEN A8C2:A8C5
|
||||
asc T_APPEND A8C6:A8CB
|
||||
asc T_RENAME A8CC:A8D1
|
||||
asc T_CATALOG A8D2:A8D8
|
||||
asc T_MON A8D9:A8DB
|
||||
asc T_NOMON A8DC:A8E0
|
||||
asc T_PR_NUM A8E1:A8E3
|
||||
asc T_IN_NUM A8E4:A8E6
|
||||
asc T_MAXFILES A8E7:A8EE
|
||||
asc T_FP A8EF:A8F0
|
||||
asc T_INT A8F1:A8F3
|
||||
asc T_BSAVE A8F4:A8F8
|
||||
asc T_BLOAD A8F9:A8FD
|
||||
asc T_BRUN A8FE:A901
|
||||
asc T_VERIFY A902:A907
|
BIN
bin/DOS 3.3 System Master - 680-0210-A.dsk
Normal file
@@ -9,15 +9,83 @@ https://github.com/AppleWin/AppleWin/issues/new
|
||||
Tom Charlesworth
|
||||
|
||||
|
||||
1.30.19.0 - 28 Jul 2023
|
||||
1.30.22.0 - ?
|
||||
-----------------------
|
||||
- [Change #1207] Support for SmartPort hard disk controller for Enhanced //e. [@burniouf, @alupin65, @inexorabletash, @univta0001]
|
||||
- [Change #1416] Mockingboard and Phasor cards now support SSI263AP (instead of older SSI263P).
|
||||
- mb-audit 1.57 (and earlier) will now fail the Phasor/SSI263 reset test: "43:F1:00, Expected:02 Actual:00".
|
||||
- Restore the old AppleWin behaviour with, eg. '-s4 socket1=ssi263p' for the SSI263 at $C440.
|
||||
- NB. mb-audit 1.58 supports both the SSI263P & SSI263AP for this Phasor/SSI263 reset test.
|
||||
- Add command line to add/remove SC01: -sN <no-sc01|sc01>.
|
||||
|
||||
|
||||
1.30.21.0 - 31 May 2025
|
||||
-----------------------
|
||||
Note: This is the last planned version to support Windows XP.
|
||||
|
||||
- [Change #1363] Right-click Disk Drive buttons QoL features to manage new disk images.
|
||||
- Support creation of new DOS/ProDOS blank or formatted disk (including default ProDOS apps).
|
||||
- [PR #1364] Document the new UI workflows.
|
||||
- [PR #1375] Document the disk image size magic numbers.
|
||||
- [Change #1365] Update disk images included with AppleWin distro.
|
||||
- [Change #438] Remove MASTER.DSK and add BLANK.DSK (created using the newly added DOS 3.3 System Master disk).
|
||||
- Add 'DOS 3.3 System Master - 680-0210-A.dsk'.
|
||||
- Add 'ProDOS_2_4_3.po'.
|
||||
- [Change #478] Support up to 16MiB in RamWorks III card (-r 256), and default to 1MiB (eg. `-aux rw3`, without -r switch)
|
||||
- [Change #1397] Debugger: Monitor's memcpy: Warn and abort when the source's end address is below the source's start address.
|
||||
- [Change #1384] Debugger: Support viewing pseudo-HGR pages at all multiple-of-8K physical start addresses within the 64K main memory.
|
||||
- [Change #1341] Support Apple //e with empty aux slot, or with a 1KiB 80-column card.
|
||||
- Includes accurately supporting the video modes, eg. aux=empty and enabling 80COL, then floating bus is fetched for aux memory.
|
||||
- Currently only available via the command line: -aux <empty|std80|ext80|rw3>.
|
||||
- NB. For `-aux empty`, `-aux std80` and -alt-cpu-emu this uses a different CPU emulation code path, where full-speed runs 25% slower.
|
||||
- [Change #1403] Help window now owned by the desktop (instead of AppleWin window).
|
||||
- Change: Improve logging: for -fs-width/height=x: for each display resolution, after the WxH also output the aspect ratio.
|
||||
- [Bug #1402] Improve robustness of WOZ chunk processing, and reject image if it's malformed.
|
||||
- [Bug #1383] Fix initial volume of Mockingboard card (and SSI263/SC01 devices) after loading a saved state. [@audetto]
|
||||
- [Bug #1372] Fix restoring SSI263 and SC01 continuous phoneme playback from save-state.
|
||||
- [Bug #1367] Fix for KeybReset() not called after a configuration reset.
|
||||
- [Bug #1360] Fix NMOS 6502 illegal opcode 0x0C (aka SKW).
|
||||
- [Bug #1359] DebugFont: use an ID which is a valid macro. [@audetto]
|
||||
- [Bug #1319] Fix SmartPort reading Status into aux memory (if aux banked in).
|
||||
- [Bug #1340] Fix AppleWin not able to switch to full-speed disk mode after playing a speech phoneme (regression at 1.30.19).
|
||||
- [Bug #290] Fix for very slow Pascal builds on a 128K machine - using new command line: -alt-cpu-emu.
|
||||
- [PR #1352] Add SoundBuffer interface. [@Jamiras]
|
||||
- [PR #1345, #1350, #1355, #1357, #1373, #1379, #1389, #1395, #1400] Much refactoring to the code by Andrea Odetti / @audetto.
|
||||
|
||||
|
||||
1.30.20.0 - 16 Nov 2024
|
||||
-----------------------
|
||||
- [Change #1312] Support Hayden's Applesoft compiler protection key.
|
||||
- For use with Hayden's 1981 AppleSoft compiler (DOS 3.2 and DOS 3.3 pre-release versions).
|
||||
- [Change #1337] HDC controller: support Format command (both SmartPort and ProDOS block device):
|
||||
- [Bug #88] Fix for Oz-DOS (uses ProDOS block device command).
|
||||
- SP Status command: 'General Status': set format-allowed & write-protected flags
|
||||
- For read-only HDD images: support them as write-protected.
|
||||
- [Change #1319] For II/II+/Unenhanced //e use the new SmartPort firmware, but with $Cs07 = 0x3C:
|
||||
- This now defaults to supporting 4 block mode devices (instead of the previous 2).
|
||||
- [Change #1295] Help doc: add troubleshooting note about "High DPI scaling override", eg. for 2K or 4K monitors.
|
||||
- [Change #1290] Save-state: add absolute path to disk & hard disk image. [@audetto]
|
||||
- [Bug #1333] Mockingboard: fix edge-case for 6522 Timer1/2 read/write (cycle accuracy). Test added to (future) mb-audit v1.56.
|
||||
- [Bug #1321] Uthernet/Uthernet II cards: fix $Csxx space not reading as floating-bus.
|
||||
- [Bug #1227] Fix issue with not being able to insert a 3.5" 800K image (after failing to insert it into a 5.25" drive).
|
||||
- [PR #1335] Help doc: add some 'quick-start' info to the Keyboard page.
|
||||
|
||||
|
||||
1.30.19.0 - 28 Jul 2024
|
||||
-----------------------
|
||||
- [Change #1207] Support for SmartPort hard disk controller for Enhanced //e. [Thanks to @burniouf, with additional testing and input from: @alupin65, @inexorabletash, @univta0001]
|
||||
- New HDC SmartPort firmware written by @burniouf.
|
||||
- Enhanced //e defaults to using SmartPort firmware, and older Apple II's still use the older v2 firmware.
|
||||
- Supports up to 8 SmartPort units per HDC (currently limited to 4GiB capacity for each unit).
|
||||
- Supports up to 4 ProDOS block devices per HDC (previously was 2).
|
||||
- Command line support only for slot 5 HDC (-s5 hdc) and hard disks after unit-2 (eg. -s5h3 <pathname>, -s7h3 <pathname>, etc).
|
||||
- [Bug #563] Fixes "UniDOS 3.3 v2.0.1".
|
||||
- [Change #175] Improvements to the SSI263 emulation (mostly edge cases). Use in conjunction with mb-audit v1.53.
|
||||
- [Bug #926, #1315] DiskII Interface: 'DRIVES OFF' forces the control flipflops to clear. Fixes Infocom's Shogun & Zork0. [@sicklittlemonkey]
|
||||
- [Bug #1308] Fix for corrupt 't' glyph. [@xotmatrix]
|
||||
- [Bug #1308] Fix for corrupt 't' glyph. [@xotmatrix] and use actual II+ and Enhanced //e video character ROMs.
|
||||
- [Bug #1285] Fix crash in 6502 emulation at 0xFFFF boundary.
|
||||
|
||||
|
||||
1.30.18.0 - 23 Mar 2023
|
||||
1.30.18.0 - 23 Mar 2024
|
||||
-----------------------
|
||||
- [Change #1272] New HDC firmware v2 to support returning HDD size in Y:X for status call. [@peteri]
|
||||
- [Change #1277] Add (debug) cmd line switch to revert to HDC firmware v1: -hdc-firmware-v1.
|
||||
|
BIN
bin/ProDOS_2_4_3.po
Normal file
@@ -8,7 +8,10 @@
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\DebuggerAutoRun.txt" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\GNU General Public License.txt" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\History.txt" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\MASTER.DSK" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\DOS 3.3 System Master - 680-0210-A.dsk" "%~1"
|
||||
@ATTRIB +r "%~1\DOS 3.3 System Master - 680-0210-A.dsk"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\BLANK.DSK" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\bin\ProDOS_2_4_3.po" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\docs\Debugger_Changelog.txt" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\help\AppleWin.chm" "%~1"
|
||||
@COPY /Y "%APPLEWIN_ROOT%\Release v141_xp\AppleWin.exe" "%~1"
|
||||
|
@@ -1,4 +1,29 @@
|
||||
/*
|
||||
2.9.2.8 Fixed: Debugger mem copy when source end address is less than the source start address copies too many bytes.
|
||||
Example:
|
||||
2000<6000.6ffm
|
||||
2.9.2.7 Added: QoL for Debugger's view output screen.
|
||||
When using the debugger to view the ouput screen such as `HGR`, `HGR2`, etc. allow the
|
||||
keys 0-5 to display the specificed video # page, or 9 to see the current video mode.
|
||||
0 Pseudo Page 0 ($0000 for graphics, else text page 1)
|
||||
1 Hardware Page 1 ($2000 for graphics, else text $0400)
|
||||
2 Hardware Page 2 ($4000 for graphics, else text $0800)
|
||||
3 Pseudo Page 3 ($6000 for graphics, else text page 1)
|
||||
4 Pseudo Page 4 ($8000 for graphics, else text page 1)
|
||||
5 Pseudo Page 5 ($A000 for graphics, else text page 1)
|
||||
9 Current mode and page
|
||||
2.9.2.6 Added: QoL: Turning a symbol table on/off now shows the current status.
|
||||
2.9.2.5 Added: Symbol table for DOS 3.3 using file A2_DOS33.SYM2
|
||||
Add symbols via: SYMDOS33 <symbol> = <addr>
|
||||
To disable: SYMDOS33 OFF
|
||||
To renable: SYMDOS33 ON
|
||||
2.9.2.4 Fixed: DA RESET = 3F2 was displaying help instead of being parsed.
|
||||
2.9.2.3 Fixed: DB HGR = 2000:3FFF and DB FOO = 300 wasn't parsing correctly from 2.9.1.3. Fix for commit 48e0fe3a.
|
||||
2.9.2.2 Fixed: DB HGR = 2000:3FFF was displaying help instead of being parsed.
|
||||
2.9.2.1 Added: Error message when trying to add a symbol > 51 characters.
|
||||
|
||||
2.9.2.0 Released with AppleWin 1.30.20.0
|
||||
|
||||
2.9.2.0 Fixed: Debugger: Step-over WAIT can fail #1194
|
||||
2.9.1.26 Fixed: When adding symbols list the address first then the name for readability
|
||||
2.9.1.25 Fixed: R P ## wasn't setting P flag status register.
|
||||
|
5
firmware/BootSector/Build.bat
Normal file
@@ -0,0 +1,5 @@
|
||||
@REM Toolchain
|
||||
@REM * Acme (acme.exe)
|
||||
|
||||
del bootsector.bin
|
||||
acme.exe bootsector.a
|
5
firmware/BootSector/Build_Merlin.bat
Normal file
@@ -0,0 +1,5 @@
|
||||
@REM Toolchain
|
||||
@REM * Merlin32 (merlin32.exe)
|
||||
|
||||
del bootsector
|
||||
merlin32.exe -V . bootsector.s
|
3
firmware/BootSector/Compare.bat
Normal file
@@ -0,0 +1,3 @@
|
||||
bin_to_c.exe bootsector.bin > acme.txt
|
||||
bin_to_c.exe bootsector > merlin.txt
|
||||
git diff --no-index merlin.txt acme.txt
|
BIN
firmware/BootSector/apple2.bin
Normal file
90
firmware/BootSector/bootsector.a
Normal file
@@ -0,0 +1,90 @@
|
||||
;ACME 0.97
|
||||
!cpu 6502
|
||||
!ct "apple2.bin" ; Stupid filename must be < 11 chars. May be called convtab.bin
|
||||
!to "bootsector.bin", plain
|
||||
; Disk P5 PROM
|
||||
SlotX16 = $2B ; i.e. $60 = Slot 6. NB. Booting a hard disk sets this to zero.
|
||||
|
||||
; IO Switches
|
||||
IO_STORE40 = $C000 ; W
|
||||
IO_KEYBOARD = $C000 ;R
|
||||
IO_KEYSTROBE = $C010
|
||||
IO_ALTZPOFF = $C008
|
||||
IO_CLR80VID = $C00C
|
||||
IO_CLRALTCHAR = $C00E ; Turn off Mouse Text
|
||||
IO_DHIRESOFF = $C05F
|
||||
IO_ROMIN = $C081
|
||||
|
||||
; F800 ROM Entry Points
|
||||
E0_BASICWARM = $E003
|
||||
F8_RESET = $FA69 ; CTRL-RESET
|
||||
F8_MONITOR = $FF69 ; CALL-151
|
||||
F8_INIT = $FB2F ;
|
||||
F8_HOME = $FC58 ; Clear 40x24 text screen
|
||||
F8_SETNORM = $FE84 ;
|
||||
F8_SETVID = $FE93 ; PR#0
|
||||
F8_SETKBD = $FE89 ; IN#0
|
||||
COUT = $FDED
|
||||
|
||||
* = $800
|
||||
Boot !byte $01 ; Only read 1 sector
|
||||
ldx SlotX16 ;
|
||||
txa ;
|
||||
jsr InitSlot ;
|
||||
Init sta IO_STORE40 ;
|
||||
sta IO_CLR80VID ;
|
||||
sta IO_CLRALTCHAR ;
|
||||
sta IO_DHIRESOFF ;
|
||||
sta IO_ROMIN ;
|
||||
jsr F8_SETKBD ;
|
||||
jsr F8_SETVID ;
|
||||
jsr F8_INIT ;
|
||||
jsr F8_SETNORM ;
|
||||
jsr F8_HOME ;
|
||||
ldx #0 ;
|
||||
Print lda Message,X ;
|
||||
beq WaitKey ;
|
||||
jsr COUT ;
|
||||
inx ;
|
||||
bne Print ;
|
||||
WaitKey lda IO_KEYBOARD ;
|
||||
bpl WaitKey ;
|
||||
sta IO_KEYSTROBE ;
|
||||
cmp #'0' ; '0' ... '9'
|
||||
bcc BootSlot ;
|
||||
cmp #('9'+1) ;
|
||||
bcs BootSlot ;
|
||||
and #$0F ;
|
||||
bne TestMonitor ; '0' BASIC
|
||||
jmp E0_BASICWARM ;
|
||||
TestMonitor cmp #$08 ; '8' MONITOR
|
||||
bne TestReset ;
|
||||
jmp F8_MONITOR ;
|
||||
TestReset cmp #$09 ; '9' RESET
|
||||
bne HaveSlot ;
|
||||
jmp F8_RESET ;
|
||||
HaveSlot jsr SetBootSlot ;
|
||||
BootSlot jmp $C700 ; *** SELF-MODIFIED ***
|
||||
|
||||
InitSlot bne BootSlotX16 ;
|
||||
lda #$70 ;
|
||||
BootSlotX16 lsr ;
|
||||
lsr ;
|
||||
lsr ;
|
||||
lsr ;
|
||||
SetBootSlot ora #$C0 ; Firmware $Cx00
|
||||
sta BootSlot+2 ; *** SELF-MODIFIES! ***
|
||||
rts
|
||||
; 0 1 2 3 4
|
||||
; 1234567890123456789012345678901234567890
|
||||
Message !text " THIS IS AN EMPTY "
|
||||
Type !text "DATA DISK.",$8D
|
||||
!text $8D
|
||||
!text ' ',' ',$30," BASIC ($E003)",$8D
|
||||
!text $31,"-",$37," BOOT SLOT ($CX00)",$8D
|
||||
!text " "," ",$38," MONITOR ($FF69)",$8D
|
||||
!text " "," ",$39," RESET ($FA62)",$8D
|
||||
!text $41,$4E,$59," REBOOT LAST SLOT" ,$00
|
||||
!align $FFF, $900 - 3, 0
|
||||
!text "V2"
|
||||
!byte <Type
|
BIN
firmware/BootSector/bootsector.bin
Normal file
86
firmware/BootSector/bootsector.s
Normal file
@@ -0,0 +1,86 @@
|
||||
; Disk P5 PROM
|
||||
SlotX16 = $2B ; i.e. $60 = Slot 6. NB. Booting a hard disk sets this to zero.
|
||||
|
||||
; IO Switches
|
||||
IO_STORE40 = $C000 ; W
|
||||
IO_KEYBOARD = $C000 ;R
|
||||
IO_KEYSTROBE = $C010
|
||||
IO_ALTZPOFF = $C008
|
||||
IO_CLR80VID = $C00C
|
||||
IO_CLRALTCHAR = $C00E ; Turn off Mouse Text
|
||||
IO_DHIRESOFF = $C05F
|
||||
IO_ROMIN = $C081
|
||||
|
||||
; F800 ROM Entry Points
|
||||
E0_BASICWARM = $E003
|
||||
F8_RESET = $FA69 ; CTRL-RESET
|
||||
F8_MONITOR = $FF69 ; CALL-151
|
||||
F8_INIT = $FB2F ;
|
||||
F8_HOME = $FC58 ; Clear 40x24 text screen
|
||||
F8_SETNORM = $FE84 ;
|
||||
F8_SETVID = $FE93 ; PR#0
|
||||
F8_SETKBD = $FE89 ; IN#0
|
||||
COUT = $FDED
|
||||
|
||||
ORG $800
|
||||
Boot DB $01 ;
|
||||
LDX SlotX16 ;
|
||||
TXA ;
|
||||
JSR InitSlot ;
|
||||
Init STA IO_STORE40 ;
|
||||
STA IO_CLR80VID ;
|
||||
STA IO_CLRALTCHAR ;
|
||||
STA IO_DHIRESOFF ;
|
||||
STA IO_ROMIN ;
|
||||
JSR F8_SETKBD ;
|
||||
JSR F8_SETVID ;
|
||||
JSR F8_INIT ;
|
||||
JSR F8_SETNORM ;
|
||||
JSR F8_HOME ;
|
||||
LDX #0 ;
|
||||
Print LDA Message,X ;
|
||||
BEQ WaitKey ;
|
||||
JSR COUT ;
|
||||
INX ;
|
||||
BNE Print ;
|
||||
WaitKey LDA IO_KEYBOARD ;
|
||||
BPL WaitKey ;
|
||||
STA IO_KEYSTROBE ;
|
||||
CMP #"0" ; '0' ... '9'
|
||||
BCC BootSlot ;
|
||||
CMP #"9"+1 ;
|
||||
BCS BootSlot ;
|
||||
AND #$0F ;
|
||||
BNE TestMonitor ; '0' BASIC
|
||||
JMP E0_BASICWARM ;
|
||||
TestMonitor CMP #$08 ; '8' MONITOR
|
||||
BNE TestReset ;
|
||||
JMP F8_MONITOR ;
|
||||
TestReset CMP #$09 ; '9' RESET
|
||||
BNE HaveSlot ;
|
||||
JMP F8_RESET ;
|
||||
HaveSlot JSR SetBootSlot ;
|
||||
BootSlot JMP $C700 ; *** SELF-MODIFIED ***
|
||||
InitSlot BNE BootSlotX16 ;
|
||||
|
||||
LDA #$70 ;
|
||||
BootSlotX16 LSR ;
|
||||
LSR ;
|
||||
LSR ;
|
||||
LSR ;
|
||||
SetBootSlot ORA #$C0 ; Firmware $Cx00
|
||||
STA BootSlot+2 ; *** SELF-MODIFIES! ***
|
||||
RTS
|
||||
; 0 1 2 3 4
|
||||
; 1234567890123456789012345678901234567890
|
||||
Message ASC " THIS IS AN EMPTY "
|
||||
Type ASC "DATA DISK.",$8D
|
||||
ASC $8D
|
||||
ASC " "," ",'0'," BASIC ($E003)",$8D
|
||||
ASC '1',"-",'7'," BOOT SLOT ($CX00)",$8D
|
||||
ASC " "," ",'8'," MONITOR ($FF69)",$8D
|
||||
ASC " "," ",'9'," RESET ($FA62)",$8D
|
||||
ASC 'A','N','Y'," REBOOT LAST SLOT" ,$00
|
||||
DS $900 - 3 - *,0 ; reserve 3 bytes: 1 byte offset of "DATA" and 2 byte version string
|
||||
ASC "V2"
|
||||
DB <Type ; byte offset of "DATA"
|
@@ -243,7 +243,7 @@ Cn_BLK php
|
||||
ldy #0
|
||||
|
||||
- lda BLK_Cmd,y
|
||||
sta IO_BlkCmdFifo,x ; BLK_Cmd's are $0x
|
||||
sta IO_BlkCmdFifo,x ; BLK_Cmd's are $0x (NB. not range-checked unlike SP cmds)
|
||||
iny ; BLK_UnitNum's are DSSS0000 : if SSS does NOT match physical slot...
|
||||
; ...hardware should handle the remap by adding +2 to the REAL dev_ID
|
||||
cpy #6 ; that way, a BLK controller can support 4 devices (see $CnFE byte below)
|
||||
@@ -276,7 +276,9 @@ Cn_BLK_Done lsr ; Post: C=0 or 1
|
||||
Cn_SP lda (Ptr1),y ; CMD byte
|
||||
|
||||
cmp #SP_Cmd_format
|
||||
bcs Cn_SP_E_BADCALL ; only STATUS, READBLOCK & WRITEBLOCK supported
|
||||
beq +
|
||||
bcs Cn_SP_E_BADCALL ; only STATUS, READBLOCK, WRITEBLOCK & FORMAT supported
|
||||
+ ; C=1 if FORMAT cmd [*1]
|
||||
|
||||
ldx Slot_n0
|
||||
|
||||
@@ -290,18 +292,28 @@ Cn_SP lda (Ptr1),y ; CMD byte
|
||||
lda (Ptr1),y
|
||||
|
||||
sta Ptr1+1
|
||||
pla
|
||||
pla
|
||||
sta Ptr1 ; Now Ptr1 = Param list
|
||||
|
||||
ldy #0 ; Param Cnt
|
||||
ldy #0 ; Param Idx (in bytes)
|
||||
|
||||
lda (Ptr1),y
|
||||
cmp #3 ; STATUS, READBLOCK & WRITEBLOCK = all 3 parameters
|
||||
sec
|
||||
!if 1 { ; (This parameter-checking code could be removed to free up some space)
|
||||
bcs @format ; NB. C-flag untouched from above [*1]
|
||||
cmp #3 ; STATUS, READBLOCK & WRITEBLOCK: all have 3 parameters
|
||||
beq +
|
||||
bne Cn_SP_E_BADCNT
|
||||
@format cmp #1 ; FORMAT: has 1 parameter
|
||||
bne Cn_SP_E_BADCNT
|
||||
+
|
||||
}
|
||||
|
||||
- iny ; UnitNum (B), MemPtr (L/H), DiskBlock (L/M/H) -> IO (R,W)
|
||||
lda (Ptr1),y ; UnitNum (B), MemPtr (L/H), StatusCode (B) -> IO (S)
|
||||
; Parameter-1: Parameter-2: Parameter-3:
|
||||
; UnitNum (B), MemPtr (L/H), StatusCode (B) -> IO (STATUS)
|
||||
; UnitNum (B), MemPtr (L/H), DiskBlock (L/M/H) -> IO (READ,WRITE)
|
||||
; UnitNum (B) -> IO (FORMAT)
|
||||
- iny ; Always copy 6 more bytes to the FIFO regardless of the command
|
||||
lda (Ptr1),y
|
||||
sta IO_SPCmdFifo,x ; UnitNum Range is 0 (smartport controller itself), 1,2,3.....
|
||||
cpy #6 ; blockNums are 24-bit for SP calls
|
||||
bcc -
|
||||
@@ -364,7 +376,8 @@ Cn_SP_E_BADCNT ldx #E_BADCNT
|
||||
; $C7 = Removable, Interruptable, #Volumes=1, Supports write/read/status
|
||||
; $D7 = Removable, Interruptable, #Volumes=2, Supports write/read/status
|
||||
; $F7 = Removable, Interruptable, #Volumes=4, Supports write/read/status
|
||||
; $BF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status (KEGS / IIGS)
|
||||
; $FF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status
|
||||
; $BF = Removable, , #Volumes=4, Supports format/write/read/status (KEGS / IIGS)
|
||||
;
|
||||
; $CnFF = offset to BLK entry point
|
||||
;--------------------------------------
|
||||
@@ -372,8 +385,8 @@ Cn_SP_E_BADCNT ldx #E_BADCNT
|
||||
*= $00FB ; org $00FB
|
||||
!warn "CsFB padding = ", * - @checkCsFB
|
||||
;--------------------------------------
|
||||
!byte $00 ; Smart port ID Type byte
|
||||
!byte $00 ; SmartPort ID Type byte
|
||||
!word $0000 ; how many blocks are on the device. Zero means use status call
|
||||
!byte $F7 ; specifics about the device (number of drives, read/write/format capability, etc)
|
||||
!byte $FF ; specifics about the device (number of drives, read/write/format capability, etc)
|
||||
!byte <Cn_Entry_BLK ; entry point offset for ProDOS (must be $0a)
|
||||
;--------------------------------------
|
||||
|
BIN
firmware/OS/basic17.system.bin
Normal file
BIN
firmware/OS/bitsy.boot.bin
Normal file
BIN
firmware/OS/bootsector_prodos243.bin
Normal file
BIN
firmware/OS/dos33c.bin
Normal file
BIN
firmware/OS/prodos243.bin
Normal file
BIN
firmware/OS/quit.system.bin
Normal file
@@ -28,14 +28,24 @@
|
||||
-s5d2 <pathname><br>
|
||||
Start with a floppy disk in slot 5 drive-2 (must be used with '-s5 diskii' or '-s5 diskii13').<br><br>
|
||||
-h1 <pathname><br>
|
||||
Start with hard disk 1 plugged-in (and auto power-on the Apple II). NB. Hard disk controller card gets enabled.<br><br>
|
||||
Start with hard disk 1 plugged in (and auto power-on the Apple II). NB. Hard disk controller card in slot 7 gets enabled.<br><br>
|
||||
-h2 <pathname><br>
|
||||
Start with hard disk 2 plugged-in. NB. Hard disk controller card gets enabled.<br><br>
|
||||
Start with hard disk 2 plugged in. NB. Hard disk controller card in slot 7 gets enabled.<br><br>
|
||||
-s5h1 <pathname><br>
|
||||
Start with hard disk 1 plugged-in slot 5 (must be used with '-s5 hdc').<br><br>
|
||||
Start with hard disk 1 plugged into HDC in slot 5 (must be used with '-s5 hdc').<br><br>
|
||||
-s5h2 <pathname><br>
|
||||
Start with hard disk 2 plugged-in slot 5 (must be used with '-s5 hdc').<br><br>
|
||||
NB. For -d1,-d2,-s5d1,-s5d2,-h1,-h2,-s5h1,-s5h2, if pathname is "", then the disk is ejected or the hard disk is unplugged.<br><br>
|
||||
Start with hard disk 2 plugged into HDC in slot 5 (must be used with '-s5 hdc').<br><br>
|
||||
-s5h<1|2|3|4|5|6|7|8> <pathname><br>
|
||||
Start with hard disk n plugged into HDC in slot 5 (must be used with '-s5 hdc').<br>
|
||||
NB. Only SmartPort firmware for enhanced //e supports hard disks 5-8.<br><br>
|
||||
-s7h1 <pathname><br>
|
||||
Start with hard disk 1 plugged into HDC in slot 7 (must be used with '-s7 hdc').<br><br>
|
||||
-s7h2 <pathname><br>
|
||||
Start with hard disk 2 plugged into HDC in slot 7 (must be used with '-s7 hdc').<br><br>
|
||||
-s7h<1|2|3|4|5|6|7|8> <pathname><br>
|
||||
Start with hard disk n plugged into HDC in slot 7 (must be used with '-s7 hdc').<br>
|
||||
NB. Only SmartPort firmware for enhanced //e supports hard disks 5-8.<br><br>
|
||||
NB. For -d1,-d2,-s5d1,-s5d2,-h1,-h2,-s5h*,-s7h*, if pathname is "", then the disk is ejected or the hard disk is unplugged.<br><br>
|
||||
-model <apple2|apple2p|apple2jp|apple2e|apple2ee><br>
|
||||
Select the machine model: Apple II, Apple II+, Apple II J-Plus, Apple //e, Enhanced Apple //e.<br><br>
|
||||
-clock-multiplier <value><br>
|
||||
@@ -69,18 +79,29 @@
|
||||
Remove the hard disk controller card from slot 7 on AppleWin exit.<br><br>
|
||||
-s5 hdc<br>
|
||||
-s7 hdc<br>
|
||||
Insert a hard disk controller card into slot 5 or 7.<br><br>
|
||||
Insert a hard disk controller card into slot 5 or 7.<br>
|
||||
NB. For enhanced //e, the firmware will support SmartPort commands (and up to 8 hard disk devices).<br><br>
|
||||
-d1-disconnected, -d2-disconnected<br>
|
||||
Disconnect drive-1 and/or drive-2 from the Disk II controller card in slot 6.<br><br>
|
||||
-s<N> socket1=<empty|ssi263p|ssi263ap><br>
|
||||
Configure the SSI263 speech chip socket at $Cn40 (main location) for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
|
||||
-s<N> socket0=<empty|ssi263p|ssi263ap><br>
|
||||
Configure the SSI263 speech chip socket at $Cn20 (secondary location) for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
|
||||
-s<N> <no-sc01|sc01><br>
|
||||
Configure an SC01 speech chip for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
|
||||
-harddisknumblocks <number of ProDOS blocks><br>
|
||||
Set the number of blocks returned by a ProDOS status call. Use -harddisknumblocks 32767 to have the same autoexpanding behavior as older AppleWin versions.<br><br>
|
||||
-no-nsc<br>
|
||||
Remove the No-Slot clock (NSC).<br><br>
|
||||
-r <number of pages><br>
|
||||
Emulate a RamWorks III card with 1 to 127 pages (each page is 64K, giving a max of 8MB) in the auxiliary slot in an Apple //e machine.<br><br>
|
||||
-aux <empty|std80|ext80|rw3><br>
|
||||
Remove ('empty') or insert 80-Column('std80'), Extended 80-Column('ext80') or RamWorks III('rw3') card into auxiliary slot in Apple //e.<br>
|
||||
NB. 'rw3' will default to 1MiB (16 banks of 64K) unless overriden by -r switch.<br><br>
|
||||
-r <number of banks><br>
|
||||
Emulate a RamWorks III card with 1 to 256 banks (each bank is 64K, giving a max of 16MiB) in the auxiliary slot in an Apple //e machine.<br>
|
||||
(Implicitly inserts a RamWorks III card into the aux slot.)<br><br>
|
||||
-load-state <savestate><br>
|
||||
Load a save-state file (and auto power-on the Apple II).<br>
|
||||
NB. This takes precedent over the -d1, -d2, -s#d#, -h1, -h2, s0-7, -model and -r switches.<br><br>
|
||||
NB. This takes precedent over the -d1, -d2, -s#d#, -h1, -h2, -s#h#, -s0-7, -model and -r switches.<br><br>
|
||||
-f or -full-screen<br>
|
||||
Start in full-screen mode.<br><br>
|
||||
-no-full-screen<br>
|
||||
@@ -88,7 +109,7 @@
|
||||
-fs-height=<best|nnnn><br>
|
||||
Use to select a better resolution for full-screen mode.<br>
|
||||
<ul>
|
||||
<li>best: picks the highest resolution where the height is an integer multiple of (192*2)</li>
|
||||
<li>best: picks the highest resolution where the height is an integer multiple of (192*2); or (200*2) when using '-s3 vidhd'</li>
|
||||
<li>nnnn: select a specific resolution with height=nnnn pixels</li>
|
||||
</ul>
|
||||
-fs-width=<nnnn><br>
|
||||
@@ -158,7 +179,7 @@
|
||||
</ul>
|
||||
-modem<br>
|
||||
Shorthand for passing -dcd<br>
|
||||
Use with GBBS Pro (or any other BBS package). See the <a href="http://www.callapple.org/documentation/books/gbbs-pro-2-2/">GBBS Pro 2.2</a> book from Call-A.P.P.L.E.
|
||||
Use with GBBS Pro (or any other BBS package). See the <a target="_blank" href="http://www.callapple.org/documentation/books/gbbs-pro-2-2/">GBBS Pro 2.2</a> book from Call-A.P.P.L.E.
|
||||
<br><br>
|
||||
-dcd<br>
|
||||
For the SSC's 6551's Status register's DCD bit, use this switch to force AppleWin to use the state of the MS_RLSD_ON bit from GetCommModemStatus().<br><br>
|
||||
@@ -211,8 +232,8 @@
|
||||
Save the speaker audio to a .wav file.<br>
|
||||
Warning: there's no file size limit, so it just keeps saving until AppleWin exits (~10MB per minute).<br>
|
||||
<br>
|
||||
Save the Mockingboard audio (but not speech) to a .wav file.<br>
|
||||
-wav-mockingboard <file.wav><br>
|
||||
Save the Mockingboard audio (but not speech) to a .wav file.<br>
|
||||
Warning: there's no file size limit, so it just keeps saving until AppleWin exits (~10MB per minute).<br>
|
||||
<br>
|
||||
|
||||
@@ -229,11 +250,19 @@
|
||||
<br><br>
|
||||
-screenshot-and-exit<br>
|
||||
For testing. Use in combination with -load-state.<br><br>
|
||||
-load-state-ignore-hdc-fw<br>
|
||||
For testing. Use in combination with -load-state.<br><br>
|
||||
-hdc-firmware-v1<br>
|
||||
Force all attached hard disk controllers to use the old v1 firmware (as per pre-AppleWin 1.30.17).
|
||||
<ul>
|
||||
<li>NB. Switch likely to be removed after a few releases.</li>
|
||||
</ul>
|
||||
-s<n> hdc-[sp|bm2|bm4]
|
||||
<ul>
|
||||
<li>hdc-sp: Force HDC SmartPort firmware for II/II+/Unenhanced //e machines (now won't autoboot from HDD-1).</li>
|
||||
<li>hdc-bm2: Modify HDC firmware: $Cn07=$3C (block mode, not SmartPort), and $CnFE to report supporting 2 block mode devices.</li>
|
||||
<li>hdc-bm4: Modify HDC firmware: $Cn07=$3C (block mode, not SmartPort), and $CnFE to report supporting 4 block mode devices.</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -49,6 +49,10 @@
|
||||
<param name="Name" value="Creating Disk Images">
|
||||
<param name="Local" value="ddi-create.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Advanced Formatting Options">
|
||||
<param name="Local" value="ddi-advanced.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Transferring Disk Images">
|
||||
<param name="Local" value="ddi-transfer.html">
|
||||
@@ -65,6 +69,10 @@
|
||||
<param name="Name" value="Hard Disk Images">
|
||||
<param name="Local" value="ddi-harddisk.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Disk Sizes">
|
||||
<param name="Local" value="ddi-sizes.html">
|
||||
</OBJECT>
|
||||
</UL>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Using The Toolbar">
|
||||
@@ -179,6 +187,10 @@
|
||||
<param name="Name" value="Memory">
|
||||
<param name="Local" value="dbg-memory.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="View Output">
|
||||
<param name="Local" value="dbg-view-output.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Symbols">
|
||||
<param name="Local" value="dbg-symbols.html">
|
||||
|
@@ -87,7 +87,7 @@
|
||||
|
||||
<br>
|
||||
Can't set bookmark 0 in the debugger / CTRL+SHIFT+0 not working:
|
||||
<img style="FLOAT: right;" src="img/Change Key Sequence.png" alt="Configuration settings" hspace="5" vspace="5">
|
||||
<img style="FLOAT: right;" src="img/Change Key Sequence.png" alt="Change Key Sequence" hspace="5" vspace="5">
|
||||
<ul>
|
||||
<li>Windows 7: From "Control Panel...":</li>
|
||||
<ul>
|
||||
@@ -124,5 +124,16 @@
|
||||
<li>These non-booting .po images are with DOS-order sectors.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
AppleWin's window is blurry when running on a 2K, 4K (or higher) monitor when display scaling (eg. 150%) is enabled.
|
||||
<img style="FLOAT: right;" src="img/Override high DPI scaling behaviour.png" alt="Override high DPI scaling behaviour" hspace="5" vspace="5">
|
||||
<ul>
|
||||
<li>From AppleWin.exe's Properties (from Explorer, press right-mouse button on the AppleWin.exe file) and select:</li>
|
||||
<ul>
|
||||
<li>Compatibility -> Change high DPI settings: Check the "Override high DPI scaling behaviour".</li>
|
||||
<li>Set the drop-down menu to "Application".</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -13,14 +13,14 @@
|
||||
<p style="MARGIN-LEFT: 40px">Thomas Stahl: Vertical blend in the 'Color (Composite Idealized)' video mode</p>
|
||||
<p style="MARGIN-LEFT: 40px">Greg Hedger: SSI263 phoneme samples</p>
|
||||
<p style="MARGIN-LEFT: 40px">Robert Hoem: Hard disk card (source module & f/w)</p>
|
||||
<p style="MARGIN-LEFT: 40px">VICE team: TFE, Z80, MC6821 PIA emulation modules (<a href="http://vice-emu.sourceforge.net/index.html#developers">http://vice-emu.sourceforge.net/index.html#developers</a>)<br>
|
||||
<p style="MARGIN-LEFT: 40px">VICE team: TFE, Z80, MC6821 PIA emulation modules (<a target="_blank" href="http://vice-emu.sourceforge.net/index.html#developers">http://vice-emu.sourceforge.net/index.html#developers</a>)<br>
|
||||
- In particular, Spiro Trikaliotis for TFE, whose code Glenn Jones adapted for Uthernet support</p>
|
||||
<p style="MARGIN-LEFT: 40px">FUSE team: AY-3-8910 module (<a href="http://fuse-emulator.sourceforge.net">http://fuse-emulator.sourceforge.net</a>)</p>
|
||||
<p style="MARGIN-LEFT: 40px">FUSE team: AY-3-8910 module (<a target="_blank" href="http://fuse-emulator.sourceforge.net">http://fuse-emulator.sourceforge.net</a>)</p>
|
||||
<p style="MARGIN-LEFT: 40px">Kyle Kim: Mouse card support based on code from Apple in PC</p>
|
||||
<p style="MARGIN-LEFT: 40px">F<EFBFBD>bio Belavenuto: TK3000 Brazilian //e clone (originally responsible for integrating Z80Em)</p>
|
||||
<p style="MARGIN-LEFT: 40px">Bob Sander-Cederlof: Applesoft Symbols (<a href="http://www.txbobsc.com/scsc/scdocumentor/index.html">http://www.txbobsc.com/scsc/scdocumentor/</a> S-C DocuMentor: Applesoft)</p>
|
||||
<p style="MARGIN-LEFT: 40px">Bob Sander-Cederlof: Applesoft Symbols (<a target="_blank" href="http://www.txbobsc.com/scsc/scdocumentor/index.html">http://www.txbobsc.com/scsc/scdocumentor/</a> S-C DocuMentor: Applesoft)</p>
|
||||
<p style="MARGIN-LEFT: 40px">David Schmidt: Updates to this help file</p>
|
||||
<p style="MARGIN-LEFT: 40px">Mike Harvey, Founder & Editor of Nibble Magazine: For providing us Apple fans the pleasure of eagerly awaiting each next month's issue to learn about the Apple! (<a href="http://www.nibblemagazine.com/">http://www.nibblemagazine.com/</a>)</p>
|
||||
<p style="MARGIN-LEFT: 40px">Mike Harvey, Founder & Editor of Nibble Magazine: For providing us Apple fans the pleasure of eagerly awaiting each next month's issue to learn about the Apple! (<a target="_blank" href="http://www.nibblemagazine.com/">http://www.nibblemagazine.com/</a>)</p>
|
||||
<p style="MARGIN-LEFT: 40px">Andrea Odetti: working on making the source code more portable & Uthernet II card support</p>
|
||||
<p style="MARGIN-LEFT: 40px">Iv<EFBFBD>n Izaguirre: Taiwanese Copam Base64A Apple II clone</p>
|
||||
<p style="MARGIN-LEFT: 40px">Arnaud C: debugger suggestions and help with 6502/6522/video timing issues</p>
|
||||
|
@@ -88,10 +88,11 @@ Supported devices are:
|
||||
<li> Southwestern Data Systems' datakey - SpeedStar (copy protection dongle)
|
||||
<li> Dynatech Microsoftware / Cortechs Corp's protection key - CodeWriter (copy protection dongle)
|
||||
<li> Robocom Ltd's interface module - Robo 500/1000/1500 & RoboCAD 1/2 (copy protection dongle)
|
||||
<li> Hayden Book Company, Inc's protection key - Applesoft Compiler (copy protection dongle)
|
||||
</ul>
|
||||
NB. Copy protection dongles can interfere with joysticks (eg. buttons may be hardwired to a fixed state), so only use dongles with the intended software.<br>
|
||||
NB. Copy protection dongles can interfere with RGB cards (eg. unexpected video modes may get selected).<br>
|
||||
NB. For Apple II/II+ models, when a joystick is selected (from the <a href="cfg-input.html">Input</a> tab), then there is also an implicit joystick connected at the same time as the device selected here.
|
||||
NB. For Apple II/II+ models, when a joystick is selected (from the <a href="cfg-input.html">Input</a> tab), then there is also an implicit joystick connected at the same time as the device selected here (and some dongles even allowed 16-pin game connectors to be plugged in on top, eg. SDS and Robocom devices).
|
||||
</p>
|
||||
|
||||
</body></html>
|
||||
|
@@ -66,7 +66,7 @@
|
||||
|
||||
<strong>VidHD in slot 3</strong><br>
|
||||
Insert a VidHD card into slot 3 (which can co-exist with an 80-column card in the Apple //e's AUX slot).<br>
|
||||
Allows all Apple II models to support the IIgs' Super Hi-Res (SHR) video modes and is supported by eg. <a href="https://archive.org/details/TotalReplay">Total Replay</a>.<br>
|
||||
Allows all Apple II models to support the IIgs' Super Hi-Res (SHR) video modes and is supported by eg. <a target="_blank" href="https://archive.org/details/TotalReplay">Total Replay</a>.<br>
|
||||
<br>
|
||||
|
||||
<hr>
|
||||
@@ -104,6 +104,7 @@
|
||||
<li> Pure CPU MHz (full-speed)
|
||||
<li> Expected average video game performance (in FPS)
|
||||
</ul>
|
||||
Use Ctrl+C to copy the results to the clipboard.
|
||||
</li>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -43,7 +43,7 @@ On real hardware this card allows up to 4 Atari 9-pin joysticks to be connected.
|
||||
Under emulation, the first 2 Windows-detected controllers will be used, and then for joysticks 3 and 4, use keys: ESDF+ZX and IJKL+NM. Note these keys will also be readable from the keyboard.<br>
|
||||
<li>The card can be configured in slots 3, 4 or 5.
|
||||
<li>Since it only uses the slot's DEVICE SELECT space ($C0Bx for slot 3) then it can co-exist with an 80-column card in the Apple //e's AUX slot. NB. For a real PAL Apple //e, then a slot riser card is required for it to fit.<br>
|
||||
See Lukazi's <a href="https://lukazi.blogspot.com/2016/04/apple-ii-4play-joystick-card.html">4Play card</a> and <a href="https://lukazi.blogspot.com/2017/08/apple-ii-4play-joystick-card-software.html">4Play card software</a> blogs for more information.<br>
|
||||
See Lukazi's <a target="_blank" href="https://lukazi.blogspot.com/2016/04/apple-ii-4play-joystick-card.html">4Play card</a> and <a target="_blank" href="https://lukazi.blogspot.com/2017/08/apple-ii-4play-joystick-card-software.html">4Play card software</a> blogs for more information.<br>
|
||||
<br>
|
||||
|
||||
<strong>SNES MAX card:</strong><br>
|
||||
@@ -51,7 +51,7 @@ On real hardware this card allows up to 2 SNES controllers to be connected and a
|
||||
Under emulation, the first 2 Windows-detected controllers will be used, ideally with 12 (or more) buttons eg. Logitech F310, PlayStation Dualshock 4, DualSense. Note that for some controllers (eg. 8BitDo NES30 Pro) the buttons need remapping, so use the command line switches -snes-max-alt-joy1 or -snes-max-alt-joy2 to remap.<br>
|
||||
<li>The card can be configured in slots 3, 4 or 5.
|
||||
<li>Since it only uses the slot's DEVICE SELECT space ($C0Bx for slot 3) then it can co-exist with an 80-column card in the Apple //e's AUX slot. NB. This card is small, so no slot riser card is required.<br>
|
||||
See Lukazi's <a href="https://lukazi.blogspot.com/2021/06/game-controller-snes-max-snes.html">SNES MAX</a> blog for more information.<br>
|
||||
See Lukazi's <a target="_blank" href="https://lukazi.blogspot.com/2021/06/game-controller-snes-max-snes.html">SNES MAX</a> blog for more information.<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
To contact the project administrators, post a question to the GitHub link below.<br>
|
||||
<br>
|
||||
<P>Bug reports / feature requests should be submitted here:<br>
|
||||
<A href="https://github.com/AppleWin/AppleWin/issues/new">https://github.com/AppleWin/AppleWin/issues/new</A>
|
||||
<A target="_blank" href="https://github.com/AppleWin/AppleWin/issues/new">https://github.com/AppleWin/AppleWin/issues/new</A>
|
||||
</P>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -6,9 +6,6 @@
|
||||
</head>
|
||||
<body style="DIRECTION: ltr" lang="en-US">
|
||||
<h2><a name="Configuration"></a>Configuration</h2>
|
||||
<p><br>
|
||||
<br>
|
||||
</p>
|
||||
<h3><a name="Colors"></a>Colors</h3>
|
||||
<p>The commands to change color schemes, and colors are:</p>
|
||||
<p><br>
|
||||
|
@@ -496,14 +496,10 @@ FF0A</span></b></font></font></p>
|
||||
<p><font color="#00b8ff"><font face="Courier"><b>300:60</b></font></font></p>
|
||||
</td>
|
||||
<td width="75%">
|
||||
<p><i><span style="COLOR: white">Same
|
||||
as Applesoft Poke 768,96</span></i></p>
|
||||
<p><i><span style="COLOR: white">Same as Applesoft Poke 768,96</span></i></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2>
|
||||
<br>
|
||||
</h2>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<body style="DIRECTION: ltr" lang="en-US">
|
||||
<H1>AppleWin Debugger Tutorial</H1>
|
||||
<P><FONT size="4"><i>By Michael Pohoreski.</i></FONT></P>
|
||||
<P><FONT size="3">Revision 3. Mar 12, 2006.</FONT></P>
|
||||
<P><FONT size="3">Revision 4. Feb. 21, 2025.</FONT></P>
|
||||
<H2>Table of Contents</H2>
|
||||
<UL>
|
||||
<LI><A href="#Introduction">Introduction</A>
|
||||
@@ -23,6 +23,11 @@
|
||||
<LI><A href="dbg-memory.html#Memory_Search">Searching Memory</A>
|
||||
<LI><A href="dbg-memory.html#Memory_Change">Changing Memory</A>
|
||||
</UL>
|
||||
<LI><A href="dbg-view-output.html">View Output</a>
|
||||
<UL>
|
||||
<LI><A href="dbg-view-output.html#View_Video_Modes">Video Modes</A>
|
||||
<LI><A href="dbg-view-output.html#View_Output_Keys">Output Keys</A>
|
||||
</UL>
|
||||
<LI><A href="dbg-symbols.html">Symbols</A>
|
||||
<LI><A href="dbg-calculator.html">Calculator</A>
|
||||
<LI><A href="dbg-windows.html">Windows</A>
|
||||
|
198
help/dbg-view-output.html
Normal file
@@ -0,0 +1,198 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>AppleWin Debugger Tutorial</title>
|
||||
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
|
||||
</head>
|
||||
<body style="DIRECTION: ltr" lang="en-US">
|
||||
<h1><a name="View_Output">View Output</a></h1>
|
||||
<h3><a name="View_Video_Modes">Video Modes</a></h3>
|
||||
<p>You can view the output of the Apple by using the following commands.</p>
|
||||
<table border="0" cellpadding="2" cellspacing="0" width="80%">
|
||||
<COLGROUP>
|
||||
<col width="64">
|
||||
<col width="192">
|
||||
<tbody>
|
||||
<tr bgcolor="#000000">
|
||||
<td bgcolor="#000000" width="25%"><p><font color="#ffffff"><b>Command</b></font></p></td>
|
||||
<td bgcolor="#000000" width="75%"><p style="FONT-STYLE: normal"><font color="#ffffff"><b>Effect</b></font></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">\</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Display Apple output until a key pressed.</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res (current page).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR1</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res Page 1.</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR2</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res Page 2.<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res (current page).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR1</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res Page 1.<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR2</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res Page 2.</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen (current page).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR1</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen Page 1.</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR2</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen Page 2.<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res (current page).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR0</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 0 ($0000).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR1</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res Page 1 ($2000).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR2</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res Page 2 ($4000).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR3</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 3 ($6000).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR4</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 4 ($8000).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR5</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 5 ($A000).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR6</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 6 LC Banks 1/2 ($C000-$DFFF).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR7</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 7 LC Banks 2/RAM ($D000-$EFFF).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR8</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 8 LC Banks RAM ($D000-$EFFF).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SHR</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Super Hi-res.<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen (current page).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT1</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen Page 1 ($0400).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT2</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen Page 2 ($0800).</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT80</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen (current page).<br></span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#999999">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT81</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen Page 1.</span></i></p></td>
|
||||
</tr>
|
||||
<tr bgcolor="#cccccc">
|
||||
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT82</span></b></font></font></p></td>
|
||||
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen Page 2.<br></span></i></p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2><font size="4">Notes:</font></h2>
|
||||
<ul>
|
||||
<li><p>If you change to a specific video mode/page <i>different</i> from the current video settings and then exit the debugger (<font face="Courier, monospace">F7</font>) the screen will NOT change to the current video settings.
|
||||
This lets you inspect other video modes/pages until code (re)sets the video mode or page -- handy if reverse engineering games.</p></li>
|
||||
<li>If the Apple's output is in a mixed mode then viewing a specific mode MAY view them in full screen mode.</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<h3><a name="View_Output_Keys">Output Keys</a></h3>
|
||||
<p>While viewing the Apple's output you can use the following keys to switch video pages. Pressing any other key will return to the debugger's output.</p>
|
||||
<table border="1" cellpadding="2" cellspacing="0" width="75%">
|
||||
<COLGROUP>
|
||||
<col width="26">
|
||||
<col width="64">
|
||||
<col width="166">
|
||||
<tbody>
|
||||
<tr bgcolor="#000000">
|
||||
<td width="10%">
|
||||
<p><font color="#ffffff"><b>Key</b></font></p>
|
||||
</td>
|
||||
<td width="25%">
|
||||
<p><font color="#ffffff"><b>Name</b></font></p>
|
||||
</td>
|
||||
<td width="65%">
|
||||
<p><font color="#ffffff"><b>Effect</b></font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">0</font></b></p></td>
|
||||
<td width="25%"><p>Zero</p></td><td width="65%"><p><i>View pseudo page 0<br> ($0000-$1FFF) if graphics,<br> page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">1</font></b></p></td>
|
||||
<td width="25%"><p>One</p></td><td width="65%"><p><i>View page 1<br> ($2000-$3FFF) if graphics,<br>($0400-$07FF) if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">2</font></b></p></td>
|
||||
<td width="25%"><p>Two</p></td><td width="65%"><p><i>View page 2<br> ($4000-$5FFF) if graphics,<br>($0800-$0BFF) if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">3</font></b></p></td>
|
||||
<td width="25%"><p>Three</p></td><td width="65%"><p><i>View pseudo page 3<br> ($6000-$7FFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">4</font></b></p></td>
|
||||
<td width="25%"><p>Four</p></td><td width="65%"><p><i>View pseudo page 4<br> ($8000-$9FFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">5</font></b></p></td>
|
||||
<td width="25%"><p>Five</p></td><td width="65%"><p><i>View pseudo page 5<br> ($A000-$BFFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">6</font></b></p></td>
|
||||
<td width="25%"><p>Six</p></td><td width="65%"><p><i>View pseudo page 6<br> LC Banks 1/2 ($C000-$DFFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">7</font></b></p></td>
|
||||
<td width="25%"><p>Seven</p></td><td width="65%"><p><i>View pseudo page 7<br> LC Banks 2/RAM ($D000-$EFFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">8</font></b></p></td>
|
||||
<td width="25%"><p>Eight</p></td><td width="65%"><p><i>View pseudo page 8<br> LC Bank RAM ($E000-$FFFF) if graphics,<br>page 1 if text.</i></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="10%"><p><b><font face="Courier">9</font></b></p></td>
|
||||
<td width="25%"><p>Nine</p></td><td width="65%"><p><i>View current video mode and page.</i></p></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
193
help/ddi-advanced.html
Normal file
@@ -0,0 +1,193 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<title>Advanced Formatting Options</title>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
|
||||
|
||||
<h2><font color="#008000">Advanced Formatting Options</font></h2>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<h3>Advanced Formatting Options</h3>
|
||||
|
||||
For finer control when formatting disks hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button.
|
||||
<br>
|
||||
<br>Alternatively, press <span style="border: 1px solid black; border-radius: 3px; padding: 2px">SHIFT</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">CTRL</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">F3</span> for drive one, or <span style="border: 1px solid black; border-radius: 3px; padding: 2px">SHIFT</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">CTRL</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">F4</span> for drive two for the drive pop-up menu.<br>
|
||||
<br><img src="img/drive_popup_menu_advanced.png" style="width: 33%; height: auto;" border="1"/>
|
||||
|
||||
<h3>Terminology</h3>
|
||||
|
||||
Some quick terminology to help explain the difference between Bootable Disks, Data Disks, File Systems, and Disk Operating Systems:
|
||||
<ul>
|
||||
<li>An <i>Operating System</i> is a program (or collection of programs) that manages resources of the computer.</li>
|
||||
<li>A <i>File System</i> is the organized structure of data on a disk. It lets you name and store files on the disk.</li>
|
||||
<li>A <i>Disk Operating System</i> (ProDOS, DOS 3.3, etc.) is a bootable disk that loads an Operating System into memory and lets you access storage media such as a floppy or hard drive. It lets you choose which application(s) to run, or files to load, save, or even view.</li>
|
||||
<li>An <i>unformatted</i> disk is a disk image with a file size of zero and/or random bytes.</li>
|
||||
<li>A disk formatted <b>without</b> a File Sysystem (or Operating System (ProDOS, DOS 3.3, Pascal, etc.) on it may be called a <i>blank</i> or <i>empty</i> disk. (It <i>may</i> or <i>may not</i> be bootable.)</li>
|
||||
<li>A disk formatted <b>with</b> a File System <b>but no</b> Operating System is called a <i>data</i> disk. Confusingly, it may also be called <i>blank</i>.</li>
|
||||
<li>A disk formatted <b>with</b> a File System <b>and an</b> Operating System is called a <i>system</i> disk.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p>This table may help:</p>
|
||||
|
||||
<table style="border:1px solid black;" cellpadding="4px">
|
||||
<tr><th style="border-bottom:1px solid black;">Formatted?</th><th style="border-bottom:1px solid black;">Bootable?</th><th style="border-bottom:1px solid black;">File System?</th><th style="border-bottom:1px solid black;">Has an OS?</th><th style="border-bottom:1px solid black;">Name </th></tr>
|
||||
<tr><td>no </td><td> n/a</td><td> n/a</td><td> n/a</td><td>Unformatted</td></tr>
|
||||
<tr><td>yes </td><td> maybe</td><td> no</td><td> no</td><td>Blank </td></tr>
|
||||
<tr><td>yes </td><td> maybe</td><td> yes</td><td> no</td><td>Data </td></tr>
|
||||
<tr><td>yes </td><td> yes</td><td> yes</td><td> yes</td><td>System </td></tr>
|
||||
</table>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<h3>New blank image...</h3>
|
||||
|
||||
<p>When you use AppleWin's <strong>New blank disk image...</strong> to create a new blank disk it will be <i>bootable</i> since AppleWin provides a custom 256 byte boot sector.</p>
|
||||
<br><img src="img/disk_boot_data_disk.png" style="width: 50%; height: auto;" border="1" />
|
||||
|
||||
<p>To make a disk usable under AppleWin you will need to format it -- either with AppleWin or some other third party utility (see below for a list and their respective manual) -- which puts a File System on it, and optionally an Operating System on it.</p>
|
||||
|
||||
<h4>HOWTO: (Re-)Format an Existing Disk Image as a Data Disk</h4>
|
||||
|
||||
<ol>
|
||||
<li>Make sure your disk image is <i>not</i> mounted in the disk drive. If it is then right-click on the drive button and select <strong>Eject.</strong>
|
||||
<br>
|
||||
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" /></li>
|
||||
|
||||
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then select either:
|
||||
<ul>
|
||||
<li><strong>Format ProDOS disk image...</strong>
|
||||
<br><img src="img/disk_format_prodos_data.png" style="width: 33%; height: auto;" border="1" />
|
||||
<br><br>or<br><br></li>
|
||||
<li><strong>Format DOS 3.3 disk image...</strong>
|
||||
<br><img src="img/disk_format_dos33_data.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>You will see a warning depending on which OS you picked that ALL data will be lost:<br>
|
||||
<ul>
|
||||
<li>DOS 3.3<br>
|
||||
<img src="img/disk_format_dos33_warning.png" style="width: 33%; height: auto;" border="1" />
|
||||
<br><br>or<br><br></li>
|
||||
<li>ProDOS</br>
|
||||
<img src="img/disk_format_prodos_warning.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Select an existing disk image to over-write then click <b>Open</b>.<br>
|
||||
<br><img src="img/disk_format_select_existing_disk.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
<li>You can then mount this disk and save/copy files to it.</li>
|
||||
</ol>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<h3>HOWTO: Put an Operating System on new disk:</h3>
|
||||
|
||||
<p>When you make a <strong>New disk image</strong> AppleWin puts a boot sector on it. You can customize the boot sector -- this can actually be any binary file, even an a bootable disk image!</p>
|
||||
|
||||
<p>Normally to put an Disk Operating System on it you would either need to a disk utility such as Copy ][+, CiderPress -- but we can take advantage of the custom boot sector and AppleWin's <strong>Select boot sector file...</strong> option to <i>simultaneously</i> place both a File System and Operating System on it.</p>
|
||||
|
||||
<h4>To put DOS 3.3 on a blank disk:</h4>
|
||||
|
||||
<ol>
|
||||
<li>Make sure your disk it <i>not</i> mounted in the disk drive. If it is, right-click on the drive button and select <strong>Eject.</strong>
|
||||
<br>
|
||||
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
|
||||
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then click on <strong>Select boot sector file...</strong></li>
|
||||
<br><img src="img/disk_select_boot_sector.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
|
||||
<li>AppleWin will show the currect boot sector. By default it will use one built into AppleWin.
|
||||
<br>
|
||||
<img src="img/disk_default_boot_sector.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
|
||||
<li>Select <strong>Yes</strong> then select a bootable DOS 3.3 disk such as <strong>DOS 3.3 System Master - 680-0210-A (1982).DSK</strong>
|
||||
<br>
|
||||
<img src="img/disk_select_bootsector_dos.png" style="width: 33%; height: auto;" border="1"/>
|
||||
</li>
|
||||
|
||||
<li>Right-click on the drive button and select <strong>New blank 5.25" disk image...</strong>
|
||||
<br>
|
||||
<img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1" />
|
||||
<p><b>NOTE:</b> For DOS 3.3 you MUST select a 5.25" disk since Apple DOS 3.3 does NOT suppport 3.5" or hard drives.</p>
|
||||
</li>
|
||||
|
||||
<li>Type in a name for your disk. It MUST end in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> or <span style="font-family: Courier New,Courier,monospace;">.DO</span>.</li>
|
||||
|
||||
<li>You can now mount and boot your new disk image.</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<h4>To put ProDOS on a blank disk:</h4>
|
||||
|
||||
<ol>
|
||||
<li>Make sure your disk it <i>not</i> mounted in the disk drive. If it is, right-click on the drive button and select <strong>Eject.</strong>
|
||||
<br>
|
||||
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" /></li>
|
||||
|
||||
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then click on <strong>Select boot sector file...</strong>
|
||||
<br>
|
||||
<img src="img/disk_select_boot_sector.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
|
||||
<li>AppleWin will show the currect boot sector. By default it will use one built into AppleWin.
|
||||
<br>
|
||||
<img src="img/disk_default_boot_sector.png" style="width: 33%; height: auto;" border="1" />
|
||||
</li>
|
||||
|
||||
<li>Select a bootable ProDOS disk such as <strong>ProDOS_2_4_3.po</strong>
|
||||
<br>
|
||||
<img src="img/disk_select_bootsector_prodos.png" style="width: 33%; height: auto;" border="1" /></li>
|
||||
|
||||
<li>Right-click on the drive button and select <strong>New blank disk image...</strong>.
|
||||
<br>
|
||||
<img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1" />
|
||||
<br>
|
||||
<p><b>NOTE:</b> For ProDOS you can select <i>any</i> of the New blank disk sizes (140 KB, 800 KB, 32 MB) since they are all supported by ProDOS.</p></li>
|
||||
|
||||
<li>Type in a name for your disk. It MUST end in <span style="font-family: Courier New,Courier,monospace;">.PO</span> or <span style="font-family: Courier New,Courier,monospace;">.HDV</span>.</li>
|
||||
|
||||
<li>You can now mount and boot your new disk image.</li>
|
||||
</ol>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<h3>Sizes of new blank disk images</h3>
|
||||
|
||||
Here is table showing the disk sizes of the various <strong>New blank disk image...</strong>
|
||||
<br>
|
||||
<br><table style="border:1px solid black;" cellpadding="4px">
|
||||
<tr><th style="border-bottom:1px solid black;">Option</th><th style="border-bottom:1px solid black;">Disk Size (KB)</th><th style="border-bottom:1px solid black;">Disk Size (Bytes)</th><th style="border-bottom:1px solid black;">Tracks</th></tr>
|
||||
<tr><td>New blank 5.25" (140 KB) disk image... (Standard 35 Track)</td><td style="text-align:right;">140 KB</td><td style="text-align:right;"> 143,360 bytes</td><td style="text-align:right;"> 35</td></tr>
|
||||
<tr><td>New blank 5.25" (160 KB) disk image... (Extended 40 Track)</td><td style="text-align:right;">160 KB</td><td style="text-align:right;"> 163,840 bytes</td><td style="text-align:right;"> 40</td></tr>
|
||||
<tr><td>New blank 3.5" (800 KB) disk image... </td><td style="text-align:right;">800 KB</td><td style="text-align:right;"> 819,200 bytes</td><td style="text-align:right;">200</td></tr>
|
||||
<tr><td>New blank hard (32 MB) disk image... </td><td style="text-align:right;"> 32 MB</td><td style="text-align:right;">33,554,432 bytes</td><td style="text-align:right;">8,192</td></tr>
|
||||
</table>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<h3>More Disk Utilities</h3>
|
||||
|
||||
There are various third-party utilities to create and modify disk images. Three popular ones are:
|
||||
|
||||
<ul>
|
||||
<li><a href="https://ciderpress2.com/">CiderPress 2</a> (newer)</li>
|
||||
|
||||
<li><a href="https://a2ciderpress.com/">CiderPress</a> (older)</li>
|
||||
|
||||
<li>Copy ][+. <b>NOTE:</b> Version 5.0 introduced ProDOS support but if you are modifying ProDOS disks you will want to use one of the latter versions (such as 8.x or later) since earlier verions have various ProDOS bugs in them dealing with the amount of files in a directory.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -49,7 +49,7 @@ prevalent on
|
||||
the Apple, some software publishers developed tricky new ways of
|
||||
creating disks that even nibble copiers could not copy. Such a
|
||||
disk can only be transferred onto a WOZ disk image using the
|
||||
AppleSauce hardware & software. </p>
|
||||
Applesauce hardware & software. </p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -11,47 +11,115 @@
|
||||
|
||||
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
|
||||
|
||||
<h2><font color="#008000">Creating
|
||||
Disk Images</font></h2>
|
||||
<h2><font color="#008000">Creating Disk Images</font></h2>
|
||||
|
||||
<hr size="4">
|
||||
<p>To create a new disk image,
|
||||
all you have to do is tell AppleWin to use an image file which doesn't
|
||||
already exist and the emulator will automatically create a new image
|
||||
file. Specifying a new disk image is like inserting a blank,
|
||||
unformatted floppy disk into a real drive. This means that
|
||||
the image must be formatted by emulator before it can be used.
|
||||
Specifically, this is what you'd do using DOS 3.3:</p>
|
||||
|
||||
<h3>Basic Disk Images</h3>
|
||||
|
||||
<p>There are two ways in AppleWin to create a blank floppy disk image:</p>
|
||||
|
||||
<h4>A) Native Disk Menu</h4>
|
||||
|
||||
The easiest way to to create a blank disk image is to:
|
||||
|
||||
<ol>
|
||||
<li><strong>Right-Click</strong> on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">Ctrl-F3</span>) to open the drive pop-up menu.<br>
|
||||
|
||||
<li>Load a master DOS 3.3 disk
|
||||
image in drive 1 and boot the emulated Apple. </li>
|
||||
<br><img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1"/></li>
|
||||
|
||||
<li>Click on the Drive 1
|
||||
toolbar button. </li>
|
||||
<li>Depending on the <i>File System</i> desired select:
|
||||
|
||||
<li>Instead of selecting a disk
|
||||
image from the list, type in a name for a new disk image and press
|
||||
enter. </li>
|
||||
<p><ul>
|
||||
<li>For a blank ProDOS disk select: <strong>New ProDOS 5.25" (140KB) disk image (Standard 35 Track)</strong>, or</li>
|
||||
<li>For a blank DOS 3.3 disk select: <strong>New DOS 3.3 5.25" (140 KB) disk image (Standard 35 Track)</strong>.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<li>Type in a program that you
|
||||
want DOS to run whenever this new disk is booted. A simple but useful
|
||||
program is:<br>
|
||||
<p>Newer programs tend to use ProDOS while older programs tend to use DOS 3.3.</p></li>
|
||||
|
||||
<p><strong>NOTE:</strong> By default a new ProDOS disk image will have four files copied onto it:
|
||||
|
||||
<ul>
|
||||
<li><span style="font-family: Courier New,Courier,monospace;">BITSY.BOOT</span></li>
|
||||
<li><span style="font-family: Courier New,Courier,monospace;">QUIT.SYSTEM</span></li>
|
||||
<li><span style="font-family: Courier New,Courier,monospace;">BASIC.SYSTEM</span></li>
|
||||
<li><span style="font-family: Courier New,Courier,monospace;">PRODOS</span></li>
|
||||
</ul>
|
||||
|
||||
<p>If you want to free up more room on a ProDOS disk you can toggle these individually on/off for which file(s) should be copied. (Your preferences persist for the next time you use AppleWin in the registry.)</p>
|
||||
|
||||
<li>You will then be asked to optionally name the disk image.<br>
|
||||
|
||||
<p>The name will default to:</p>
|
||||
<ul>
|
||||
<li><i>blank_floppy_###.po</i> for ProDOS, or </li>
|
||||
<li><i>blank_floppy_###.do</i> for DOS 3.3.</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>NOTE:</strong> The ### is the current date-time-stamp in YEAR-MON-DAY-HHh-MMm-SSs format.</p></li>
|
||||
|
||||
<li>Click <span style="font-family: Courier New,Courier,monospace;">SAVE</span> when ready.</li>
|
||||
</ol>
|
||||
|
||||
<p>You are now ready to use your new disk image.
|
||||
|
||||
<h4>B) Classic Disk Creation</h4>
|
||||
|
||||
<p>In older versions of AppleWin there was only one way to natively create an empty disk image.
|
||||
To create an empty disk image:</p>
|
||||
|
||||
<ol>
|
||||
<li>Clicking on the drive icon, and</li>
|
||||
<li>Type an image file name ending in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> (or <span style="font-family: Courier New,Courier,monospace;">.DO</span>) which <i>doesn't</i> already exist.
|
||||
</ol>
|
||||
|
||||
<p>AppleWin will automatically create a new 5.25" image
|
||||
(standard 140 KB, 16 sectors/track, 35 tracks) file which is empty and <strong>non-bootable.</strong> (See <a href="ddi-sizes.html">Disk Sizes</a> or <a href="ddi-advanced.html">Advanced Formatting Options</a> for more information.)</p>
|
||||
|
||||
<h5>Manually putting DOS 3.3 on a blank disk so it is bootable</h5>
|
||||
|
||||
<i>Formatting</i> a disk will put a File System on it and (optionally) copy a Disk Operating System (DOS 3.3, ProDOS, etc.) onto it. This will also make the disk <i>bootable</i> (copies a small assembly language program called the boot sector to Track 0, Sector 0) such that you can use <span style="font-family: Courier New,Courier,monospace;">PR#6</span> too boot it.</p>
|
||||
|
||||
Specifying a new disk image is like inserting a blank,
|
||||
unformatted floppy disk into a real drive. This means that
|
||||
the image must be formatted (either by the emulator or some other utility) before it can be used.
|
||||
Specifically, this is what you would do using DOS 3.3:</p>
|
||||
|
||||
<ol>
|
||||
<li>Click on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">F3</span>)</li>
|
||||
|
||||
<li>Load a master DOS 3.3 disk image (eg. <i>DOS 3.3 System Master - 680-0210-A.dsk</i>) in drive 1 and boot the emulated Apple. </li>
|
||||
|
||||
<li>Boot the emulated Apple by clicking on the <img src="img/tb-run.png" /> button (or press <span style="font-family: Courier New,Courier,monospace;">F2</span>). </li>
|
||||
|
||||
<li>Click on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">F3</span>) again.</li>
|
||||
|
||||
<li>Instead of selecting a disk image from the list, type in a name for a new disk image and press enter.<br>
|
||||
<p><b>NOTE:</b> The filename SHOULD end in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> or <span style="font-family: Courier New,Courier,monospace;">.DO</span>.</p>
|
||||
</li>
|
||||
|
||||
<li>Type in a program that you want DOS to run whenever this new disk is booted. A simple but useful
|
||||
program is this Applesoft BASIC program:<br>
|
||||
|
||||
<br>
|
||||
|
||||
<span style="font-family: Courier New,Courier,monospace;">10
|
||||
PRINT
|
||||
CHR$(4);"CATALOG"</span><font face="Courier New"><br>
|
||||
<span style="font-family: Courier New,Courier,monospace;">10 PRINT CHR$(4);"CATALOG"</span><font face="Courier New"><br>
|
||||
|
||||
</font><br>
|
||||
|
||||
</li>
|
||||
|
||||
<li>Type <span style="font-family: Courier New,Courier,monospace;">"INIT
|
||||
HELLO"</span> to initialize (format) the disk image. </li>
|
||||
HELLO"</span> to initialize (format) the disk image.
|
||||
|
||||
<p>This will:</p>
|
||||
<ul>
|
||||
<li>Put the DOS 3.3 File System on the disk,</li>
|
||||
<li>Write DOS 3.3 to the first 3 tracks and make the disk bootable,</li>
|
||||
<li>Write your program to disk.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>You now have a working disk
|
||||
@@ -63,10 +131,26 @@ Disk Images</a> topic for more information. </p>
|
||||
<p>Please note that not all disk image types supported by
|
||||
AppleWin can be created in this manner. Since there is no way
|
||||
to detect the image type from the image itself, it is determined by the
|
||||
given file extension only. Four extensions are allowed: (.DSK, .DO,
|
||||
.NIB, .WOZ). The first two create a "DOS Order Image", .NIB creates
|
||||
a "Nibble Image" and .WOZ creates an empty .WOZ image. If the extension is completely omitted,
|
||||
".DSK" will be chosen by default. For more information, see <a href="ddi-formats.html">Disk Image Formats</a>.</p>
|
||||
given file extension only. Six extensions are allowed:</p>
|
||||
|
||||
<ul>
|
||||
<li>.DSK -- DOS 3.3 sector order,</li>
|
||||
<li>.DO -- DOS 3.3 sector order,</li>
|
||||
<li>.PO -- ProDOS sector order,</li>
|
||||
<li>.HDV -- ProDOS (hard drive) volume in ProDOS sector order,</li>
|
||||
<li>.NIB -- older raw nibble image that supports up to 6656 (0x1A00) nibbles/tracks, and</li>
|
||||
<li>.WOZ -- the newest format that supports all copy protection formats.</li>
|
||||
</ul>
|
||||
<p>If the extension is completely omitted, <span style="font-family: Courier New,Courier,monospace;">.DSK</span> will be chosen by default.</p>
|
||||
|
||||
<p>For more information, see <a href="ddi-formats.html">Disk Image Formats</a>.</p>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
|
||||
<h3>Advanced Disk Creation</h3>
|
||||
|
||||
For finer control over disk formatting see <a href="ddi-advanced.html">Advanced Formatting Options</a>.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -27,16 +27,24 @@ sectors. If you run a DOS program on the Apple which reads in
|
||||
sectors one by one and then transfers them over a serial line to
|
||||
the PC, you will get a DOS order disk image. </p>
|
||||
|
||||
<p>Apple floppy disks contained 35 tracks with
|
||||
<p>Apple floppy disks (normally) contain 35 tracks with
|
||||
16 sectors per track, for a total of 560 sectors. Each of these
|
||||
sectors contained 256 bytes of information, for a total of
|
||||
143,360 bytes per disk. Therefore, DOS order disk images are
|
||||
always at least 143,360 bytes long. Sometimes on the Internet you
|
||||
will see a disk image that is 143,488 or 143,616 bytes long; this
|
||||
will see a disk image that is not 143,360 bytes long; this
|
||||
is probably a DOS order image with extra header information
|
||||
before or after the image. In most cases, AppleWin can
|
||||
automatically detect this and handle it. </p>
|
||||
|
||||
<p>Due to some games being incorrectly converted to a disk image AppleWin also accepts disk images of sizes:
|
||||
<ul>
|
||||
<li>143,403 bytes (<i>Castle Wolfenstein</i>)</li>
|
||||
<li>143,488 bytes (<i>Rescue Raiders</i>)</li>
|
||||
</ul>
|
||||
|
||||
<p>Some disk drives were able to handle 40+ tracks. AppleWin accept disk images up to 40 tracks -- 163,840 bytes -- as long as the disk image is a multiple of 4,096 bytes / track.</p>
|
||||
|
||||
<p style="font-weight: bold;">ProDOS Order
|
||||
Images: </p>
|
||||
|
||||
@@ -64,7 +72,7 @@ disk; not just the data in sectors but also the sector headers
|
||||
and synchronization areas, all stored in the same encoded format
|
||||
that would be recorded on a real disk's surface. At 232,960
|
||||
bytes, nibble images are bigger than other images, but they can
|
||||
be useful for making images of copy protected software. </p>
|
||||
be useful for making images of SOME copy protected software. </p>
|
||||
|
||||
<p style="font-weight: bold;">2mg Images:</p>
|
||||
|
||||
@@ -75,7 +83,7 @@ write-protection.
|
||||
|
||||
<p style="font-weight: bold;">WOZ Images:</p>
|
||||
|
||||
<p>The WOZ Disk Image format is an offshoot of the <A href="https://applesaucefdc.com/woz">Applesauce project</A>. Capturing highly accurate bit data is of no use if you don't have a container to hold the data. The WOZ format was designed to be able to contain every possible Apple ][ disk structure and layout. It can be so accurate that even copy protected software can't tell that it isn't an original disk.
|
||||
<p>The WOZ Disk Image format is an offshoot of the <a target="_blank" href="https://applesaucefdc.com/woz">Applesauce project</a>. Capturing highly accurate bit data is of no use if you don't have a container to hold the data. The WOZ format was designed to be able to contain every possible Apple ][ disk structure and layout. It can be so accurate that even copy protected software can't tell that it isn't an original disk.
|
||||
</p>
|
||||
|
||||
<p style="font-weight: bold;">Compressed Images :</p>
|
||||
|
@@ -5,7 +5,6 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<title>Hard Disk Images</title>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
@@ -16,39 +15,38 @@
|
||||
<hr size="4">
|
||||
<p style="font-weight: bold;">Overview:</p>
|
||||
|
||||
<p>A hard disk controller (or interface) card can be plugged in to slot 7 via the AppleWin Configuration tab labelled Disk.
|
||||
Just check <span style="font-style: italic;">Enable hard disk controller in slot 7</span>.</p>
|
||||
<p>A hard disk controller (or interface) card can be plugged in to slot 7 via the
|
||||
AppleWin Configuration tab labelled Disk. Just check <span style="font-style: italic;">
|
||||
Enable hard disk controller in slot 7</span>.</p>
|
||||
|
||||
<p>There is provision to connect two hard disks to this card from the UI (more can be added via the command line).
|
||||
This is done by using .hdv or 800KB .2mg files on your PC. Each hard disk can have a maximum capacity of 32MB.</p>
|
||||
|
||||
<p>There is provision to connect two hard disks to this card.
|
||||
This is done by using .hdv or 800KB .2mg files on your PC.
|
||||
Each hard disk can have a maximum capacity of 32MB.</p>
|
||||
NB. The hard disk controller supports both fixed-disk types (up to 32MB) and 3.5" floppy types (800KB).
|
||||
|
||||
<p>On booting, the Apple will <span style="text-decoration: underline;">always</span>
|
||||
attempt to
|
||||
autoboot from slot 7 first. If the hard disk card is unplugged (not
|
||||
enabled) then
|
||||
the Apple will then attempt to boot from slot 6 (with the Disk][
|
||||
attempt to autoboot from slot 7 first. If the hard disk card is unplugged (not
|
||||
enabled) then the Apple will then attempt to boot from slot 6 (with the Disk][
|
||||
interface card in it).</p>
|
||||
|
||||
<p>To boot a floppy disk with the hard disk card enabled, either hold down the Open-Apple key during an Apple II restart or
|
||||
issue PR#6 from an AppleSoft prompt.</p>
|
||||
<p>To boot a floppy disk with the hard disk card enabled, either hold down the
|
||||
Open-Apple key during an Apple II restart or issue PR#6 from an AppleSoft prompt.</p>
|
||||
|
||||
<p>Use command line options to insert a hard disk controller card into slot 5, and attach HDDs.</p>
|
||||
|
||||
<p>The firmware in the hard disk controller card defaults to:
|
||||
<li>II/II+/Unenhanced //e: ProDOS block mode, supporting up to 4 HDDs.</li>
|
||||
<li>Enhanced //e: SmartPort, supporting up to 8 HDDs.</li>
|
||||
</p>
|
||||
|
||||
<p style="font-weight: bold;">Warnings:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>Unchecking <span style="font-style: italic;">Enable hard disk controller in slot 7</span> whilst the Apple is running will
|
||||
physically unplugging the hard disk card. This can lead to a corrupt
|
||||
.hdv image if the Apple is writing to the hard disk when it is unplugged!</li>
|
||||
|
||||
<li>Equally, exiting AppleWin
|
||||
can have the same affect.</li>
|
||||
|
||||
<li>Copy][+ v7.1 locks up when
|
||||
trying to calculate how many free blocks are available when running a
|
||||
catalog. This is a bug in Copy][+ which is fixed in later versions.</li>
|
||||
|
||||
<li>Unchecking <span style="font-style: italic;">Enable hard disk controller in slot 7</span>
|
||||
whilst the Apple is running will physically unplugging the hard disk card. This
|
||||
can lead to a corrupt .hdv image if the Apple is writing to the hard disk when it is unplugged!</li>
|
||||
<li>Equally, exiting AppleWin can have the same affect.</li>
|
||||
<li>Copy][+ v7.1 locks up when trying to calculate how many free blocks are
|
||||
available when running a catalog. This is a bug in Copy][+ which is fixed in later versions.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
|
@@ -22,7 +22,7 @@ Images</h2>
|
||||
<hr size="4">
|
||||
<p>Everyone who once used an
|
||||
Apple II and now
|
||||
uses an IBM-compatible PC has the same problem: How can you
|
||||
uses a PC has the same problem: How can you
|
||||
make
|
||||
the PC read Apple floppy disks? Unfortunately, without special
|
||||
hardware, you can't. </p>
|
||||
@@ -33,21 +33,26 @@ devices, much like
|
||||
cassette tapes. For a computer to store digital data on a floppy
|
||||
disk, it must "encode" the data into an analog format.
|
||||
The Apple II used a method of encoding called Group Code
|
||||
Recording (GCR), while IBM-compatible PC's use the much more
|
||||
Recording (GCR), while IBM-compatible PC's used the much more
|
||||
standard Modified Frequency Modulation (MFM) encoding. Since this
|
||||
is all done in hardware and cannot be bypassed, it is not
|
||||
possible for a PC program to "reprogram" the floppy
|
||||
possible for a PC program to "reprogram" the 5.25" floppy
|
||||
drive in such a way that it could read Apple-formatted floppy diskettes. </p>
|
||||
|
||||
|
||||
<p>Therefore, instead of reading
|
||||
and writing
|
||||
disks directly, AppleWin uses disk images. A disk image is a
|
||||
single file, which you can store on your hard drive or on a PC
|
||||
floppy diskette, which contains all of the data from an entire Apple
|
||||
single file, which you can store on your PC,
|
||||
which contains all of the data from an entire Apple
|
||||
diskette. AppleWin treats an image exactly as if it were a real
|
||||
floppy disk. </p>
|
||||
|
||||
<p>Included in the AppleWin distribution is the DOS 3.3 System Master disk dated "January 1, 1983" (<i>DOS 3.3 System Master - 680-0210-A.dsk</i>), a blank DOS 3.3 disk (<i>BLANK.DSK</i>) created using the same System Master disk and a modern ProDOS disk (<i>ProDOS_2_4_3.po</i>).
|
||||
<br>
|
||||
<br>
|
||||
NB. ProDOS 2.4 is an updated version by John Brooks, including support for all Apple II's. More details can be found here <a target="_blank" href="https://prodos8.com/">ProDOS8.com</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -60,7 +60,7 @@ tool-tip with the full name.</p>
|
||||
NB. There is no support for this feature for non-WOZ images.
|
||||
</p>
|
||||
|
||||
<p><sub style="FONT-WEIGHT: bold">1</sub> To register the file types in Windows Vista, Windows 7 and Windows 10,
|
||||
<p><sub style="FONT-WEIGHT: bold">1</sub> To register the file types in Windows Vista, Windows 7, Windows 10 and Windows 11,
|
||||
you will need to run AppleWin with elevated privileges. This only needs to be done once.
|
||||
Right click the AppleWin.exe icon and select 'Run as Administrator'.</p>
|
||||
|
||||
|
31
help/ddi-sizes.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<title>Disk Sizes</title>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
|
||||
|
||||
<h2 style="color: rgb(0, 128, 0);">Disks Sizes</h2>
|
||||
|
||||
<hr size="4">
|
||||
|
||||
<p>You may be wondering why there are various disk sizes. AppleWin supports floppy disk and hard drive images.</p>
|
||||
|
||||
<br>
|
||||
<ul>
|
||||
<li>A standard 5.25" floppy disk normally has 35 tracks. This disk can hold 140 KB.</li>
|
||||
|
||||
<li>An extended 5.25" floppy disk may have up to 40 tracks. This disk can hold 160 KB.</li>
|
||||
|
||||
<li>When the Apple //c+ came out it came with a 3.5" floppy disk drive. This disk can hold 800 KB. Vanilla Apple DOS 3.3 does NOT support this larger disk size; you must use another Operating System such as ProDOS.</li>
|
||||
|
||||
<li>Hard drives can hold even more data; the maximum size under ProDOS is 32 MB. Vanilla Apple DOS 3.3 does NOT support this larger disk size; you must use another Operating System such as ProDOS.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -30,7 +30,7 @@ Common programs for doing this work are ADT and ADTPro:</p>
|
||||
<ul>
|
||||
<li>Apple Disk Transfer (ADT) - <a target="_blank" href="https://github.com/david-schmidt/adt">https://github.com/david-schmidt/adt</a>
|
||||
- runs natively on Windows, but is limited to transferring 5-1/4" disks.</li>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/connectionsserial.html">http://adtpro.sourceforge.net/connectionsserial.html</a>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/connectionsserial.html">https://adtpro.com/connectionsserial.html</a>
|
||||
- requires Java, but is capable of transferring all disk types and sizes.</li>
|
||||
</ul>
|
||||
|
||||
@@ -42,16 +42,16 @@ but may be used if
|
||||
the Apple in question lacks a serial port, for example.
|
||||
Common programs for doing this work are ADTPro and Arme Leute Apple Disk Transfer:</p>
|
||||
<ul>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/connectionsaudio.html">http://adtpro.sourceforge.net/connectionsaudio.html</a>
|
||||
<li>Arme Leute Apple Disk Transfer (Poor Man's ADT) - <a target="_blank" href="http://seb.riot.org/appleII/aladt.sml">http://seb.riot.org/appleII/aladt.sml</a>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/connectionsaudio.html">https://adtpro.com/connectionsaudio.html</a>
|
||||
<li>Arme Leute Apple Disk Transfer (Poor Man's ADT) - <a target="_blank" href="https://knzl.at/poor-mans-adt/">https://knzl.at/poor-mans-adt/</a>
|
||||
</ul>
|
||||
|
||||
|
||||
<p style="font-weight: bold;">Ethernet Transfers:</p>
|
||||
Apples with an <a href="http://a2retrosystems.com/">A2RetroSystems</a>' Uthernet
|
||||
Apples with an <a target="_blank" href="http://a2retrosystems.com/">A2RetroSystems</a>' Uthernet
|
||||
card can transfer disk images via ADTPro:
|
||||
<ul>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/configethernet.html">http://adtpro.sourceforge.net/configethernet.html</a>
|
||||
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/configethernet.html">https://adtpro.com/configethernet.html</a>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ uncompress the archive file. Nulib is available from
|
||||
Through 3.5"
|
||||
Disks:</p>
|
||||
|
||||
<p>One final way to transfer disk
|
||||
<p>Another way to transfer disk
|
||||
images is to
|
||||
copy the data onto a 3.5" disk, and then use a Macintosh to
|
||||
transfer the data from the 3.5" disk into a PC readable
|
||||
@@ -109,5 +109,8 @@ PC Exchange.</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<p style="font-weight: bold;">Transferring via Applesauce hardware:</p>
|
||||
The <a target="_blank" href="https://applesaucefdc.com">Applesauce project</a> comprises of hardware and software which can be used to transfer both unprotected and copy-protected disk images.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -20,26 +20,24 @@ topics: </p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="ddi-intro.html">Introduction
|
||||
to Disk Images</a></li>
|
||||
<li><a href="ddi-intro.html">Introduction to Disk Images</a></li>
|
||||
|
||||
<li><a href="ddi-load.html">Loading
|
||||
Disk Images</a></li>
|
||||
<li><a href="ddi-load.html">Loading Disk Images</a></li>
|
||||
|
||||
<li><a href="ddi-create.html">Creating
|
||||
Disk Images</a></li>
|
||||
<li><a href="ddi-create.html">Creating Disk Images</a></li>
|
||||
|
||||
<li><a href="ddi-transfer.html">Transferring Disk
|
||||
Images</a></li>
|
||||
<li><a href="ddi-advanced.html">Advanced Formatting Options</a></li>
|
||||
|
||||
<li><a href="ddi-copy.html">Copy
|
||||
Protected Disks</a></li>
|
||||
<li><a href="ddi-transfer.html">Transferring Disk Images</a></li>
|
||||
|
||||
<li><a href="ddi-formats.html">Disk
|
||||
Image Formats</a></li>
|
||||
<li><a href="ddi-copy.html">Copy Protected Disks</a></li>
|
||||
|
||||
<li><a href="ddi-formats.html">Disk Image Formats</a></li>
|
||||
|
||||
<li><a href="ddi-harddisk.html">Hard Disk Images</a></li>
|
||||
|
||||
<li><a href="ddi-sizes.html">Disk Sizes</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
|
BIN
help/img/Override high DPI scaling behaviour.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
help/img/disk_boot_data_disk.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
help/img/disk_default_boot_sector.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
help/img/disk_eject.png
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
help/img/disk_format_dos33_data.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
help/img/disk_format_dos33_warning.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
help/img/disk_format_prodos_data.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
help/img/disk_format_prodos_warning.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
help/img/disk_format_select_existing_disk.png
Normal file
After Width: | Height: | Size: 123 KiB |
BIN
help/img/disk_format_warning.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
help/img/disk_new_140kb_disk.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
help/img/disk_select_boot_sector.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
help/img/disk_select_bootsector_dos.png
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
help/img/disk_select_bootsector_prodos.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
help/img/drive_popup_menu_advanced.png
Normal file
After Width: | Height: | Size: 180 KiB |
@@ -5,11 +5,23 @@
|
||||
<body style="font-family: verdana; background-color: rgb(255, 255, 255);" alink="#008000" link="#008000" vlink="#008000">
|
||||
<h2 style="color: rgb(0, 128, 0);">Using the Keyboard</h2>
|
||||
<hr size="4">
|
||||
|
||||
<p>Normally to start an Apple II computer you would insert a floppy into
|
||||
the floppy disk drive and power it on. If you don't have a disk inserted
|
||||
the drive motor will stay on indefinitely. To enter Applesoft BASIC instead (and stop the disk
|
||||
drive from spinning) you should press Ctrl+Reset. In AppleWin this sequence is
|
||||
<span style="font-style: italic;">analogous</span> to pressing the following keys:</p>
|
||||
<ul>
|
||||
<li><span style="font-weight: bold;">F2</span> (Power On), and
|
||||
<li><span style="font-weight: bold;">Ctrl+F2</span> or <span style="font-weight: bold;">Ctrl+Break</span> (Ctrl+Reset)
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<p>The Apple //e keyboard was very similar to the PC keyboard, and most keys
|
||||
correspond directly between the two keyboards. However, there were a few keys
|
||||
on the Apple //e that are not on the PC; these are described below:</p>
|
||||
<p><span style="font-weight: bold;">Reset</span>:<br>
|
||||
On the Apple //e, you could usually press Control+Reset to interrupt a running
|
||||
On the Apple //e, you could usually press Ctrl+Reset to interrupt a running
|
||||
program. With the Apple //e Emulator, you may emulate this key sequence with
|
||||
<span style="font-style: italic;">Ctrl+F2</span> or
|
||||
<span style="font-style: italic;">Ctrl+Break</span>.
|
||||
@@ -81,6 +93,10 @@
|
||||
Copy the text screen (auto detect 40/80 columns) to the clipboard.</p>
|
||||
<p><span style="font-weight: bold;">Alt+Enter:</span><br>
|
||||
Default: Toggle between windowed and full screen video modes. (NB. Will conflict with emulation and prevent Open Apple + Enter from being readable. Use the <a href="CommandLine.html">Command Line</a> switch to allow Open Apple + Enter to be readable.)</p>
|
||||
<p><span style="font-weight: bold;">Alt+Tab:</span><br>
|
||||
Default: Switch between application-level windows. (NB. Will conflict with emulation and prevent Open Apple + Tab from being readable. Use the <a href="CommandLine.html">Command Line</a> switch to allow Open Apple + Tab to be readable.)</p>
|
||||
<p><span style="font-weight: bold;">Alt+Esc, Alt+Space and Ctrl+Esc:</span><br>
|
||||
Default: AppleWin hooks these keyboard shortcuts preventing Windows from detecting them. (NB. Use the <a href="CommandLine.html">Command Line</a> switch to allow Windows to detect them.)</p>
|
||||
<p><span style="font-weight: bold;">Ctrl+Left Mouse Button:</span><br>
|
||||
This will show the Windows mouse cursor when emulating an Apple joystick with the PC's mouse or using a Mouse card.<br>
|
||||
<p><span style="font-weight: bold;">Function Keys F1-F8:</span><br>
|
||||
|
@@ -45,10 +45,12 @@
|
||||
<li>Alternate ROM</li>
|
||||
<li>Alternate video ROM</li>
|
||||
</ul>
|
||||
<p>Note: Only the file names of the disk images are stored in the .yaml file (not the
|
||||
full path). This allows you to move your disk image around or distribute them.
|
||||
If AppleWin can't locate the disk image(s), then it will prompt for the new
|
||||
location.</p>
|
||||
<p>
|
||||
Note: Both the file name and absolute path are stored in the .yaml file.
|
||||
This allows you to move your disk image around or distribute them.
|
||||
If AppleWin still can't locate the disk image(s), then it will prompt for the new
|
||||
location.
|
||||
</p>
|
||||
<p>NB. Loading of the old v1 file format (.aws file) is no longer supported. Use AppleWin 1.27.13 to load it at the AppleWin start-up/logo screen,
|
||||
then immediately save it (and it'll be saved in the v2 format).</p>
|
||||
</body>
|
||||
|
@@ -49,9 +49,10 @@
|
||||
<li>Broadsides</li>
|
||||
<li>Crimewave (Votrax speech)</li>
|
||||
<li>Crypt of Medea (Votrax speech)</li>
|
||||
<li>Cybernoid Music Disk</li>
|
||||
<li><a target="_blank" href="https://github.com/tomcw/Cybernoid">Cybernoid Music Disk</a></li>
|
||||
<li>French Touch demos, eg. (NOT SO) Cheap Tunes, Plasmagoria, Raster Bars + many others</li>
|
||||
<li>Lady Tut (Mockingboard version)</li>
|
||||
<li><a target="_blank" href="https://github.com/tomcw/mb-audit">mb-audit: diagnostics & tests</a></li>
|
||||
<li>Mockingboard software (Sweet Micro Systems)</li>
|
||||
<li>Mockingboard Classic Adventure (Sweet Micro Systems) (SSI263 speech only)</li>
|
||||
<li>Music Construction Set</li>
|
||||
|
@@ -12,7 +12,7 @@
|
||||
Copyright <20> 1994-1996, Michael O'Brien<br>
|
||||
Copyright <20> 2001, Oliver Schmidt<br>
|
||||
Copyright <20> 2002-2005, Tom Charlesworth<br>
|
||||
Copyright <20> 2006-2024, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
|
||||
Copyright <20> 2006-2025, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
|
||||
<br>
|
||||
<a href="applewin-team.html">AppleWin team</a>
|
||||
<br>
|
||||
|
@@ -15,9 +15,9 @@
|
||||
<P style="FONT-WEIGHT: bold">Acknowledgment:
|
||||
</P>
|
||||
<P>Uthernet (TFE) support in AppleWin was made possible by implementing the GPL
|
||||
source written by Spiro Trikaliotis for the Vice emulator - <A href="http://vice-emu.sourceforge.net/index.html#developers">
|
||||
http://vice-emu.sourceforge.net/index.html#developers</A></P>
|
||||
<P><A href="https://a2retrosystems.com/">Uthernet II</A> support in AppleWin has been contributed by Andrea (audetto) Odetti.</P>
|
||||
source written by Spiro Trikaliotis for the Vice emulator - <a target="_blank" href="http://vice-emu.sourceforge.net/index.html#developers">
|
||||
http://vice-emu.sourceforge.net/index.html#developers</a></P>
|
||||
<P><a target="_blank" href="https://a2retrosystems.com/">Uthernet II</a> support in AppleWin has been contributed by Andrea (audetto) Odetti.</P>
|
||||
<P style="FONT-WEIGHT: bold">Details:
|
||||
</P>
|
||||
<P>To enable ethernet support in AppleWin you must first download and install
|
||||
@@ -29,9 +29,9 @@
|
||||
a switch. If you plan on doing any network programming Wireshark is a definite
|
||||
must have.
|
||||
</P>
|
||||
<P>Npcap: <A href="https://nmap.org/npcap/#download">https://nmap.org/npcap/#download</A>
|
||||
or Wireshark: <A href="https://www.wireshark.org">https://www.wireshark.org</A>
|
||||
(or WinPcap: <A href="https://www.winpcap.org/install/default.htm">https://www.winpcap.org/install/default.htm</A>)
|
||||
<P>Npcap: <A target="_blank" href="https://nmap.org/npcap/#download">https://nmap.org/npcap/#download</A>
|
||||
or Wireshark: <A target="_blank" href="https://www.wireshark.org">https://www.wireshark.org</A>
|
||||
(or WinPcap: <A target="_blank" href="https://www.winpcap.org/install/default.htm">https://www.winpcap.org/install/default.htm</A>)
|
||||
</P>
|
||||
<P>After AppleWin starts, select the settings icon and then select the ethernet
|
||||
settings button.
|
||||
@@ -50,11 +50,11 @@
|
||||
with WinPcap (but see <A href="uthernet-wifi-workaround.html">WiFi Workaround</A>).
|
||||
</P>
|
||||
<P>In order to test the ethernet emulation out you should grab a copy of Contiki
|
||||
for the Apple II here - <A href="http://www.a2retrosystems.com/downloads.htm">http://www.a2retrosystems.com/downloads.htm</A>
|
||||
for the Apple II here - <A target="_blank" href="http://www.a2retrosystems.com/downloads.htm">http://www.a2retrosystems.com/downloads.htm</A>
|
||||
</P>
|
||||
<P>Grab the 80 Col. Primary Disk and Supplementary Disk images if using Apple //e
|
||||
emulation or the 40 Col versions if running Apple II+ emulation. You should
|
||||
also grab a copy of the Uthernet/Contiki getting started guide <A href="http://www.a2retrosystems.com/a2UtherManual.pdf">
|
||||
also grab a copy of the Uthernet/Contiki getting started guide <A target="_blank" href="http://www.a2retrosystems.com/a2UtherManual.pdf">
|
||||
http://www.a2retrosystems.com/a2UtherManual.pdf</A>
|
||||
</P>
|
||||
<P>Select the contiki80pri.dsk image. Boot AppleWin.
|
||||
@@ -85,9 +85,9 @@
|
||||
<P style="FONT-WEIGHT: bold">Troubleshooting:
|
||||
</P>
|
||||
<P>If you have ZoneAlarm running then try disabling it inorder to access the web.
|
||||
if you are still having difficulty then you should refer to the VICE network
|
||||
support page for additional information - <A href="http://vicekb.trikaliotis.net/13-005.shtml">
|
||||
http://vicekb.trikaliotis.net/13-005.shtml</A></P>
|
||||
(If you are still having difficulty then you could try referring to the VICE network
|
||||
support page for additional information, now archived <A target="_blank" href="https://github.com/AppleWin/AppleWin/blob/master/docs/VICE%20Knowledge%20Base%20-%20Article%2013-005.htm">
|
||||
here</A>.)</P>
|
||||
<P style="FONT-WEIGHT: bold">Uthernet II:
|
||||
</P>
|
||||
<P>Most features of the Uthernet II are emulated, with the following caveats:
|
||||
@@ -97,10 +97,10 @@
|
||||
<li>after loading a save-state file, TCP and UDP sockets are closed</li>
|
||||
</ul>
|
||||
</P>
|
||||
<P>The card implements a <A href="https://github.com/a2retrosystems/uthernet2/wiki/Virtual-W5100-with-DNS">Virtual DNS</A>
|
||||
<P>The card implements a <A target="_blank" href="https://github.com/a2retrosystems/uthernet2/wiki/Virtual-W5100-with-DNS">Virtual DNS</A>
|
||||
interface (not found on real hardware) for Apple II software to run without raw sockets: this allows operation on any type of network.
|
||||
</P>
|
||||
<P>Note that the Apple II application must be virtual W5100-aware (currently as of early 2024 the only application that supports this is <A href="https://github.com/oliverschmidt/A2Stream">A2Stream</A>). AppleWin will utilise DNS offloading when both AppleWin is configured to use "Virtual DNS" and the Apple II application enables the W5100 for the "Virtual DNS" mode.
|
||||
<P>Note that the Apple II application must be virtual W5100-aware (currently as of early 2024 the only application that supports this is <A target="_blank" href="https://github.com/oliverschmidt/A2Stream">A2Stream</A>). AppleWin will utilise DNS offloading when both AppleWin is configured to use "Virtual DNS" and the Apple II application enables the W5100 for the "Virtual DNS" mode.
|
||||
</P>
|
||||
<P>Enabling AppleWin for "Virtual DNS" and using with Apple II applications that don't support this is harmless (but you won't get any benefit).
|
||||
</P>
|
||||
|
@@ -36,8 +36,8 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>zip_lib</RootNamespace>
|
||||
<ProjectName>zip_lib</ProjectName>
|
||||
<RootNamespace>minizip</RootNamespace>
|
||||
<ProjectName>minizip</ProjectName>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
@@ -36,8 +36,8 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>zip_lib</RootNamespace>
|
||||
<ProjectName>zip_lib</ProjectName>
|
||||
<RootNamespace>minizip</RootNamespace>
|
||||
<ProjectName>minizip</ProjectName>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
@@ -70,13 +70,13 @@ LED_CAPSOFF_P8_BITMAP BITMAP "LED_CAPS_OFF_P8.BMP"
|
||||
LED_CAPSON_P8_BITMAP BITMAP "LED_CAPS_ON_P8.BMP"
|
||||
LED_LATOFF_BITMAP BITMAP "LED_CAPS_OFF_LAT.BMP"
|
||||
LED_LATON_BITMAP BITMAP "LED_CAPS_ON_LAT.BMP"
|
||||
CHARSET82 BITMAP "CHARSET82.BMP"
|
||||
CHARSET8M BITMAP "CHARSET8M.BMP"
|
||||
CHARSET8C BITMAP "CHARSET8C.BMP"
|
||||
IDB_CHARSET82 BITMAP "CHARSET82.bmp"
|
||||
IDB_CHARSET8M BITMAP "CHARSET8M.bmp"
|
||||
IDB_CHARSET8C BITMAP "CHARSET8C.bmp"
|
||||
HELP_BUTTON BITMAP "HELP.BMP"
|
||||
DRIVESWAP_BUTTON BITMAP "DRIVESWAP.BMP"
|
||||
IDB_APPLEWIN BITMAP "ApplewinLogo.bmp"
|
||||
IDB_DEBUG_FONT_7X8 BITMAP "Debug_Font.bmp"
|
||||
IDB_DEBUG_FONT_7_by_8 BITMAP "Debug_Font.bmp"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -297,7 +297,7 @@ BEGIN
|
||||
VALUE "FileDescription", "Apple //e Emulator for Windows"
|
||||
VALUE "FileVersion", APPLEWIN_VERSION_STR
|
||||
VALUE "InternalName", "APPLEWIN"
|
||||
VALUE "LegalCopyright", " 1994-2024 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
|
||||
VALUE "LegalCopyright", " 1994-2025 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
|
||||
VALUE "OriginalFilename", "APPLEWIN.EXE"
|
||||
VALUE "ProductName", "Apple //e Emulator"
|
||||
VALUE "ProductVersion", APPLEWIN_VERSION_STR
|
||||
@@ -327,8 +327,8 @@ END
|
||||
// FIRMWARE
|
||||
//
|
||||
|
||||
IDR_DISK2_13SECTOR_FW FIRMWARE "Disk2-13sector.rom"
|
||||
IDR_DISK2_16SECTOR_FW FIRMWARE "Disk2.rom"
|
||||
IDR_DISK2_13SECTOR_FW FIRMWARE "DISK2-13sector.rom"
|
||||
IDR_DISK2_16SECTOR_FW FIRMWARE "DISK2.rom"
|
||||
IDR_SSC_FW FIRMWARE "SSC.rom"
|
||||
IDR_HDDRVR_FW FIRMWARE "Hddrvr.bin"
|
||||
IDR_HDDRVR_V2_FW FIRMWARE "Hddrvr-v2.bin"
|
||||
@@ -338,6 +338,18 @@ IDR_MOCKINGBOARD_D_FW FIRMWARE "Mockingboard-D.rom"
|
||||
IDR_MOUSEINTERFACE_FW FIRMWARE "MouseInterface.rom"
|
||||
IDR_THUNDERCLOCKPLUS_FW FIRMWARE "ThunderClockPlus.rom"
|
||||
IDR_TKCLOCK_FW FIRMWARE "TKClock.rom"
|
||||
/// <summary>
|
||||
/// When a user uses the right-click disk pop-up menu to format a new disk image
|
||||
/// We write our own custom boot sector so the user doesn't crash to the monitor when booting it.
|
||||
/// Technically not firmware but since it never changes we put this resource here.
|
||||
/// </summary>
|
||||
IDR_BOOT_SECTOR FIRMWARE "firmware\\BootSector\\bootsector.bin"
|
||||
IDR_OS_DOS33 FIRMWARE "firmware\\OS\\dos33c.bin"
|
||||
IDR_OS_PRODOS243 FIRMWARE "firmware\\OS\\prodos243.bin"
|
||||
IDR_BOOT_SECTOR_PRODOS243 FIRMWARE "firmware\\OS\\bootsector_prodos243.bin"
|
||||
IDR_FILE_BASIC17 FIRMWARE "firmware\\OS\basic17.system.bin"
|
||||
IDR_FILE_BITSY_BOOT FIRMWARE "firmware\\OS\\bitsy.boot.bin"
|
||||
IDR_FILE_BITSY_BYE FIRMWARE "firmware\\OS\\quit.system.bin"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -349,12 +361,12 @@ IDR_APPLE2_PLUS_ROM ROM "Apple2_Plus.rom"
|
||||
IDR_APPLE2_JPLUS_ROM ROM "Apple2_JPlus.rom"
|
||||
IDR_APPLE2E_ROM ROM "Apple2e.rom"
|
||||
IDR_APPLE2E_ENHANCED_ROM ROM "Apple2e_Enhanced.rom"
|
||||
IDR_PRAVETS_82_ROM ROM "Pravets82.rom"
|
||||
IDR_PRAVETS_8M_ROM ROM "Pravets8M.rom"
|
||||
IDR_PRAVETS_8C_ROM ROM "Pravets8C.rom"
|
||||
IDR_PRAVETS_82_ROM ROM "PRAVETS82.ROM"
|
||||
IDR_PRAVETS_8M_ROM ROM "PRAVETS8M.ROM"
|
||||
IDR_PRAVETS_8C_ROM ROM "PRAVETS8C.ROM"
|
||||
IDR_TK3000_2E_ROM ROM "TK3000e.rom"
|
||||
IDR_BASE_64A_ROM ROM "Base64A.rom"
|
||||
IDR_FREEZES_F8_ROM ROM "FREEZES_NON-AUTOSTART_F8_ROM.rom"
|
||||
IDR_FREEZES_F8_ROM ROM "Freezes_Non-Autostart_F8_Rom.rom"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -384,14 +396,37 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
// The Resource Compiler doesn't like strings with parenthesis in them so markup
|
||||
// literal ", (, and ) with hex literals.
|
||||
// Also See: https://www.ryanliptak.com/blog/every-rc-exe-bug-quirk-probably/
|
||||
IDR_MENU_DISK_POPUP MENU
|
||||
BEGIN
|
||||
POPUP "Disk Menu"
|
||||
BEGIN
|
||||
MENUITEM "&Eject", ID_DISKMENU_EJECT
|
||||
MENUITEM "Read / &Write", ID_DISKMENU_WRITEPROTECTION_OFF
|
||||
MENUITEM "&Read only", ID_DISKMENU_WRITEPROTECTION_ON
|
||||
MENUITEM "Send to &CiderPress", ID_DISKMENU_SENDTO_CIDERPRESS
|
||||
MENUITEM "&Eject", ID_DISKMENU_EJECT
|
||||
MENUITEM "Read / &Write", ID_DISKMENU_WRITEPROTECTION_OFF
|
||||
MENUITEM "&Read only", ID_DISKMENU_WRITEPROTECTION_ON
|
||||
MENUITEM "Send to &CiderPress", ID_DISKMENU_SENDTO_CIDERPRESS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "New &ProDOS 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29", ID_DISKMENU_NEW_PRODOS_140K_DISK
|
||||
MENUITEM "New ProDOS 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_PRODOS_160K_DISK
|
||||
MENUITEM "New ProDOS 3.5\x22 \x28800 KB\x29 disk image...", ID_DISKMENU_NEW_PRODOS_800K_DISK
|
||||
MENUITEM "New ProDOS hard \x2832 MB\x29 disk image...", ID_DISKMENU_NEW_PRODOS_32MB_DISK
|
||||
MENUITEM "On format copy PRODOS", ID_DISKMENU_NEW_DISK_COPY_PRODOS
|
||||
MENUITEM "On format copy Bitsy Boot", ID_DISKMENU_NEW_DISK_COPY_BITSY_BOOT
|
||||
MENUITEM "On format copy Bitsy Bye", ID_DISKMENU_NEW_DISK_COPY_BITSY_BYE
|
||||
MENUITEM "On format copy BASIC.SYSTEM", ID_DISKMENU_NEW_DISK_COPY_BASIC
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "New &DOS 3.3 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29",ID_DISKMENU_NEW_DOS33_140K_DISK
|
||||
MENUITEM "New DOS 3.3 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_DOS33_160K_DISK
|
||||
MENUITEM "-", ID_DISKMENU_ADVANCED_SEPARATOR
|
||||
MENUITEM "Select boot sector file...", ID_DISKMENU_SELECT_BOOT_SECTOR
|
||||
MENUITEM "New blank 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29", ID_DISKMENU_NEW_BLANK_140K_DISK
|
||||
MENUITEM "New blank 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_BLANK_160K_DISK
|
||||
MENUITEM "New blank 3.5\x22 \x28800 KB\x29 disk image...", ID_DISKMENU_NEW_BLANK_800K_DISK
|
||||
MENUITEM "New blank hard \x2832 MB\x29 disk image...", ID_DISKMENU_NEW_BLANK_32MB_DISK
|
||||
MENUITEM "Format ProDOS disk image...", ID_DISKMENU_FORMAT_PRODOS_DISK
|
||||
MENUITEM "Format DOS 3.3 disk image...", ID_DISKMENU_FORMAT_DOS33_DISK
|
||||
END
|
||||
END
|
||||
|
||||
|
@@ -39,9 +39,10 @@
|
||||
#define IDR_MOCKINGBOARD_D_FW 135
|
||||
#define IDR_MOUSEINTERFACE_FW 136
|
||||
#define IDR_THUNDERCLOCKPLUS_FW 137
|
||||
#define IDR_FREEZES_F8_ROM 138
|
||||
#define IDR_PRAVETS_82_ROM 139
|
||||
#define IDR_PRAVETS_8M_ROM 140
|
||||
#define IDR_BOOT_SECTOR 138
|
||||
#define IDR_FREEZES_F8_ROM 139
|
||||
#define IDR_PRAVETS_82_ROM 140
|
||||
#define IDR_PRAVETS_8M_ROM 141
|
||||
#define IDR_PRAVETS_8C_ROM 142
|
||||
#define IDR_MENU_DISK_POPUP 143
|
||||
#define IDD_ABOUT 145
|
||||
@@ -56,6 +57,16 @@
|
||||
#define IDR_BASE64A_VIDEO_ROM 154
|
||||
#define IDR_HDDRVR_V2_FW 155
|
||||
#define IDR_HDC_SMARTPORT_FW 156
|
||||
#define IDB_CHARSET8M 157
|
||||
#define IDB_CHARSET82 158
|
||||
#define IDB_CHARSET8C 159
|
||||
#define IDB_DEBUG_FONT_7_by_8 160
|
||||
#define IDR_OS_DOS33 161
|
||||
#define IDR_OS_PRODOS243 162
|
||||
#define IDR_BOOT_SECTOR_PRODOS243 163
|
||||
#define IDR_FILE_BITSY_BOOT 164
|
||||
#define IDR_FILE_BITSY_BYE 165
|
||||
#define IDR_FILE_BASIC17 166
|
||||
#define IDC_KEYB_BUFFER_ENABLE 1005
|
||||
#define IDC_SAVESTATE 1006
|
||||
#define IDC_SAVESTATE_ON_EXIT 1007
|
||||
@@ -128,19 +139,37 @@
|
||||
#define IDM_EXIT 40001
|
||||
#define IDM_HELP 40002
|
||||
#define IDM_ABOUT 40003
|
||||
#define ID_DISKMENU_EJECT 40004
|
||||
#define ID_DISKMENU_WRITEPROTECTION_ON 40005
|
||||
#define ID_DISKMENU_WRITEPROTECTION_OFF 40006
|
||||
#define ID_DISKMENU_SENDTO_CIDERPRESS 40007
|
||||
#define ID_DISKMENU_EJECT 40004
|
||||
#define ID_DISKMENU_WRITEPROTECTION_ON 40005
|
||||
#define ID_DISKMENU_WRITEPROTECTION_OFF 40006
|
||||
#define ID_DISKMENU_SENDTO_CIDERPRESS 40007
|
||||
#define ID_DISKMENU_NEW_PRODOS_140K_DISK 40008
|
||||
#define ID_DISKMENU_NEW_PRODOS_160K_DISK 40009
|
||||
#define ID_DISKMENU_NEW_PRODOS_800K_DISK 40010
|
||||
#define ID_DISKMENU_NEW_PRODOS_32MB_DISK 40011
|
||||
#define ID_DISKMENU_NEW_DISK_COPY_PRODOS 40012
|
||||
#define ID_DISKMENU_NEW_DISK_COPY_BITSY_BOOT 40013
|
||||
#define ID_DISKMENU_NEW_DISK_COPY_BITSY_BYE 40014
|
||||
#define ID_DISKMENU_NEW_DISK_COPY_BASIC 40015
|
||||
#define ID_DISKMENU_NEW_DOS33_140K_DISK 40016
|
||||
#define ID_DISKMENU_NEW_DOS33_160K_DISK 40017
|
||||
#define ID_DISKMENU_ADVANCED_SEPARATOR 40019
|
||||
#define ID_DISKMENU_SELECT_BOOT_SECTOR 40019
|
||||
#define ID_DISKMENU_NEW_BLANK_140K_DISK 40020
|
||||
#define ID_DISKMENU_NEW_BLANK_160K_DISK 40021
|
||||
#define ID_DISKMENU_NEW_BLANK_800K_DISK 40022
|
||||
#define ID_DISKMENU_NEW_BLANK_32MB_DISK 40023
|
||||
#define ID_DISKMENU_FORMAT_PRODOS_DISK 40024
|
||||
#define ID_DISKMENU_FORMAT_DOS33_DISK 40025
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 149
|
||||
#define _APS_NEXT_COMMAND_VALUE 40012
|
||||
#define _APS_NEXT_CONTROL_VALUE 1083
|
||||
#define _APS_NEXT_RESOURCE_VALUE 167
|
||||
#define _APS_NEXT_COMMAND_VALUE 40026
|
||||
#define _APS_NEXT_CONTROL_VALUE 1093
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -1,4 +1,4 @@
|
||||
#define APPLEWIN_VERSION 1,30,19,0
|
||||
#define APPLEWIN_VERSION 1,30,21,0
|
||||
|
||||
#define xstr(a) str(a)
|
||||
#define str(a) #a
|
||||
|
247
source/6522.cpp
@@ -87,7 +87,6 @@ void SY6522::StopTimer1(void)
|
||||
void SY6522::StartTimer2(void)
|
||||
{
|
||||
m_timer2Active = true;
|
||||
|
||||
}
|
||||
|
||||
void SY6522::StopTimer2(void)
|
||||
@@ -353,6 +352,8 @@ BYTE SY6522::Read(BYTE nReg)
|
||||
break;
|
||||
case 0x02: // DDRB
|
||||
nValue = m_regs.DDRB;
|
||||
if (m_bad6522)
|
||||
nValue &= ~1; // DDRB.b0 = 0 (for testing mb-audit)
|
||||
break;
|
||||
case 0x03: // DDRA
|
||||
nValue = m_regs.DDRA;
|
||||
@@ -410,188 +411,200 @@ BYTE SY6522::Read(BYTE nReg)
|
||||
// TODO: RMW opcodes: dec,inc,asl,lsr,rol,ror (abs16 & abs16,x) + 65C02 trb,tsb (abs16)
|
||||
UINT SY6522::GetOpcodeCyclesForRead(BYTE reg)
|
||||
{
|
||||
UINT opcodeCycles = 0;
|
||||
BYTE opcode = 0;
|
||||
bool abs16 = false;
|
||||
UINT zpOpcodeCycles = 0, opcodeCycles = 0;
|
||||
BYTE zpOpcode = 0, opcode = 0; // these double-up as flags to indicate validity
|
||||
bool abs16x = false;
|
||||
bool abs16y = false;
|
||||
bool indx = false;
|
||||
bool indy = false;
|
||||
|
||||
const BYTE opcodeMinus3 = mem[(::regs.pc - 3) & 0xffff];
|
||||
const BYTE opcodeMinus2 = mem[(::regs.pc - 2) & 0xffff];
|
||||
const BYTE opcodeMinus3 = ReadByteFromMemory(::regs.pc - 3);
|
||||
const BYTE opcodeMinus2 = ReadByteFromMemory(::regs.pc - 2);
|
||||
|
||||
// Check 2-byte opcodes
|
||||
if (((opcodeMinus2 & 0x0f) == 0x01) && ((opcodeMinus2 & 0x10) == 0x00)) // ora (zp,x), and (zp,x), ..., sbc (zp,x)
|
||||
{
|
||||
// NB. this is for read, so don't need to exclude 0x81 / sta (zp,x)
|
||||
opcodeCycles = 6;
|
||||
opcode = opcodeMinus2;
|
||||
zpOpcodeCycles = 6;
|
||||
zpOpcode = opcodeMinus2;
|
||||
indx = true;
|
||||
}
|
||||
else if (((opcodeMinus2 & 0x0f) == 0x01) && ((opcodeMinus2 & 0x10) == 0x10)) // ora (zp),y, and (zp),y, ..., sbc (zp),y
|
||||
{
|
||||
// NB. this is for read, so don't need to exclude 0x91 / sta (zp),y
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus2;
|
||||
zpOpcodeCycles = 5;
|
||||
zpOpcode = opcodeMinus2;
|
||||
indy = true;
|
||||
}
|
||||
else if (((opcodeMinus2 & 0x0f) == 0x02) && ((opcodeMinus2 & 0x10) == 0x10) && GetMainCpu() == CPU_65C02) // ora (zp), and (zp), ..., sbc (zp) : 65C02-only
|
||||
{
|
||||
// NB. this is for read, so don't need to exclude 0x92 / sta (zp)
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus2;
|
||||
zpOpcodeCycles = 5;
|
||||
zpOpcode = opcodeMinus2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((((opcodeMinus3 & 0x0f) == 0x0D) && ((opcodeMinus3 & 0x10) == 0x00)) || // ora abs16, and abs16, ..., sbc abs16
|
||||
(opcodeMinus3 == 0x2C) || // bit abs16
|
||||
(opcodeMinus3 == 0xAC) || // ldy abs16
|
||||
(opcodeMinus3 == 0xAE) || // ldx abs16
|
||||
(opcodeMinus3 == 0xCC) || // cpy abs16
|
||||
(opcodeMinus3 == 0xEC)) // cpx abs16
|
||||
{
|
||||
}
|
||||
else if ((opcodeMinus3 == 0xBC) || // ldy abs16,x
|
||||
((opcodeMinus3 == 0x3C) && GetMainCpu() == CPU_65C02)) // bit abs16,x : 65C02-only
|
||||
{
|
||||
abs16x = true;
|
||||
}
|
||||
else if ((opcodeMinus3 == 0xBE)) // ldx abs16,y
|
||||
{
|
||||
abs16y = true;
|
||||
}
|
||||
else if ((opcodeMinus3 & 0x10) == 0x10)
|
||||
{
|
||||
if ((opcodeMinus3 & 0x0f) == 0x0D) // ora abs16,x, and abs16,x, ..., sbc abs16,x
|
||||
abs16x = true;
|
||||
else if ((opcodeMinus3 & 0x0f) == 0x09) // ora abs16,y, and abs16,y, ..., sbc abs16,y
|
||||
abs16y = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_ASSERT(0);
|
||||
opcodeCycles = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Check 3-byte opcodes
|
||||
if ((((opcodeMinus3 & 0x0f) == 0x0D) && ((opcodeMinus3 & 0x10) == 0x00)) || // ora abs16, and abs16, ..., sbc abs16
|
||||
(opcodeMinus3 == 0x2C) || // bit abs16
|
||||
(opcodeMinus3 == 0xAC) || // ldy abs16
|
||||
(opcodeMinus3 == 0xAE) || // ldx abs16
|
||||
(opcodeMinus3 == 0xCC) || // cpy abs16
|
||||
(opcodeMinus3 == 0xEC)) // cpx abs16
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16 = true;
|
||||
}
|
||||
else if ((opcodeMinus3 == 0xBC) || // ldy abs16,x
|
||||
((opcodeMinus3 == 0x3C) && GetMainCpu() == CPU_65C02)) // bit abs16,x : 65C02-only
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16x = true;
|
||||
}
|
||||
else if ((opcodeMinus3 == 0xBE)) // ldx abs16,y
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16y = true;
|
||||
}
|
||||
else if ((opcodeMinus3 & 0x10) == 0x10)
|
||||
{
|
||||
if ((opcodeMinus3 & 0x0f) == 0x0D) // ora abs16,x, and abs16,x, ..., sbc abs16,x
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16x = true;
|
||||
}
|
||||
else if ((opcodeMinus3 & 0x0f) == 0x09) // ora abs16,y, and abs16,y, ..., sbc abs16,y
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16y = true;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
WORD addr16 = 0;
|
||||
|
||||
if (!abs16)
|
||||
{
|
||||
BYTE zp = mem[(::regs.pc - 1) & 0xffff];
|
||||
if (indx) zp += ::regs.x;
|
||||
addr16 = (mem[zp] | (mem[(zp + 1) & 0xff] << 8));
|
||||
if (indy) addr16 += ::regs.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
addr16 = mem[(::regs.pc - 2) & 0xffff] | (mem[(::regs.pc - 1) & 0xffff] << 8);
|
||||
if (abs16y) addr16 += ::regs.y;
|
||||
if (abs16x) addr16 += ::regs.x;
|
||||
}
|
||||
|
||||
// Check we've reverse looked-up the 6502 opcode correctly
|
||||
if ((addr16 & 0xF80F) != (0xC000 + reg))
|
||||
if (!opcode && !zpOpcode) // Unsupported opcode
|
||||
{
|
||||
_ASSERT(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return opcodeCycles;
|
||||
return GetOpcodeCycles(reg, zpOpcodeCycles, opcodeCycles, zpOpcode, opcode, abs16x, abs16y, indx, indy);
|
||||
}
|
||||
|
||||
// TODO: RMW opcodes: dec,inc,asl,lsr,rol,ror (abs16 & abs16,x) + 65C02 trb,tsb (abs16)
|
||||
UINT SY6522::GetOpcodeCyclesForWrite(BYTE reg)
|
||||
{
|
||||
UINT opcodeCycles = 0;
|
||||
BYTE opcode = 0;
|
||||
bool abs16 = false;
|
||||
UINT zpOpcodeCycles = 0, opcodeCycles = 0;
|
||||
BYTE zpOpcode = 0, opcode = 0; // these double-up as flags to indicate validity
|
||||
bool abs16x = false;
|
||||
bool abs16y = false;
|
||||
bool indx = false;
|
||||
bool indy = false;
|
||||
|
||||
const BYTE opcodeMinus3 = mem[(::regs.pc - 3) & 0xffff];
|
||||
const BYTE opcodeMinus2 = mem[(::regs.pc - 2) & 0xffff];
|
||||
const BYTE opcodeMinus3 = ReadByteFromMemory(::regs.pc - 3);
|
||||
const BYTE opcodeMinus2 = ReadByteFromMemory(::regs.pc - 2);
|
||||
|
||||
if ((opcodeMinus3 == 0x8C) || // sty abs16
|
||||
(opcodeMinus3 == 0x8D) || // sta abs16
|
||||
(opcodeMinus3 == 0x8E)) // stx abs16
|
||||
{ // Eg. FT demos: CHIP, MADEF, MAD2
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16 = true;
|
||||
}
|
||||
else if ((opcodeMinus3 == 0x99) || // sta abs16,y
|
||||
(opcodeMinus3 == 0x9D)) // sta abs16,x
|
||||
{ // Eg. Paleotronic microTracker demo
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus3;
|
||||
abs16 = true;
|
||||
}
|
||||
else if (opcodeMinus2 == 0x81) // sta (zp,x)
|
||||
// Check 2-byte opcodes
|
||||
if (opcodeMinus2 == 0x81) // sta (zp,x)
|
||||
{
|
||||
opcodeCycles = 6;
|
||||
opcode = opcodeMinus2;
|
||||
zpOpcodeCycles = 6;
|
||||
zpOpcode = opcodeMinus2;
|
||||
indx = true;
|
||||
}
|
||||
else if (opcodeMinus2 == 0x91) // sta (zp),y
|
||||
{ // Eg. FT demos: OMT, PLS
|
||||
opcodeCycles = 6;
|
||||
opcode = opcodeMinus2;
|
||||
zpOpcodeCycles = 6;
|
||||
zpOpcode = opcodeMinus2;
|
||||
indy = true;
|
||||
}
|
||||
else if (opcodeMinus2 == 0x92 && GetMainCpu() == CPU_65C02) // sta (zp) : 65C02-only
|
||||
{
|
||||
zpOpcodeCycles = 5;
|
||||
zpOpcode = opcodeMinus2;
|
||||
}
|
||||
|
||||
// Check 3-byte opcodes
|
||||
if ((opcodeMinus3 == 0x8C) || // sty abs16
|
||||
(opcodeMinus3 == 0x8D) || // sta abs16
|
||||
(opcodeMinus3 == 0x8E)) // stx abs16
|
||||
{ // Eg. FT demos: CHIP, MADEF, MAD2
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
}
|
||||
else if (opcodeMinus3 == 0x99) // sta abs16,y
|
||||
{
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus2;
|
||||
opcode = opcodeMinus3;
|
||||
abs16y = true;
|
||||
}
|
||||
else if (opcodeMinus3 == 0x9D) // sta abs16,x
|
||||
{ // Eg. Paleotronic microTracker demo
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus3;
|
||||
abs16x = true;
|
||||
}
|
||||
else if (opcodeMinus3 == 0x9C && GetMainCpu() == CPU_65C02) // stz abs16 : 65C02-only
|
||||
{
|
||||
opcodeCycles = 4;
|
||||
opcode = opcodeMinus3;
|
||||
abs16 = true;
|
||||
}
|
||||
else if (opcodeMinus3 == 0x9E && GetMainCpu() == CPU_65C02) // stz abs16,x : 65C02-only
|
||||
{
|
||||
opcodeCycles = 5;
|
||||
opcode = opcodeMinus3;
|
||||
abs16 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_ASSERT(0);
|
||||
opcodeCycles = 0;
|
||||
return 0;
|
||||
abs16x = true;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
WORD addr16 = 0;
|
||||
|
||||
if (!abs16)
|
||||
{
|
||||
BYTE zp = mem[(::regs.pc - 1) & 0xffff];
|
||||
if (opcode == 0x81) zp += ::regs.x;
|
||||
addr16 = (mem[zp] | (mem[(zp + 1) & 0xff] << 8));
|
||||
if (opcode == 0x91) addr16 += ::regs.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
addr16 = mem[(::regs.pc - 2) & 0xffff] | (mem[(::regs.pc - 1) & 0xffff] << 8);
|
||||
if (opcode == 0x99) addr16 += ::regs.y;
|
||||
if (opcode == 0x9D || opcode == 0x9E) addr16 += ::regs.x;
|
||||
}
|
||||
|
||||
// Check we've reverse looked-up the 6502 opcode correctly
|
||||
if ((addr16 & 0xF80F) != (0xC000 + reg))
|
||||
if (!opcode && !zpOpcode) // Unsupported opcode
|
||||
{
|
||||
_ASSERT(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return opcodeCycles;
|
||||
return GetOpcodeCycles(reg, zpOpcodeCycles, opcodeCycles, zpOpcode, opcode, abs16x, abs16y, indx, indy);
|
||||
}
|
||||
|
||||
UINT SY6522::GetOpcodeCycles(BYTE reg, UINT zpOpcodeCycles, UINT opcodeCycles,
|
||||
BYTE zpOpcode, BYTE opcode,
|
||||
bool abs16x, bool abs16y, bool indx, bool indy)
|
||||
{
|
||||
WORD zpAddr16 = 0, addr16 = 0;
|
||||
|
||||
if (zpOpcode)
|
||||
{
|
||||
if (IsZeroPageFloatingBus())
|
||||
return 0;
|
||||
|
||||
BYTE zp = ReadByteFromMemory(::regs.pc - 1);
|
||||
if (indx) zp += ::regs.x;
|
||||
zpAddr16 = (ReadByteFromMemory(zp) | (ReadByteFromMemory((zp + 1) & 0xff) << 8));
|
||||
if (indy) zpAddr16 += ::regs.y;
|
||||
}
|
||||
|
||||
if (opcode)
|
||||
{
|
||||
addr16 = ReadByteFromMemory(::regs.pc - 2) | (ReadByteFromMemory(::regs.pc - 1) << 8);
|
||||
if (abs16y) addr16 += ::regs.y;
|
||||
if (abs16x) addr16 += ::regs.x;
|
||||
}
|
||||
|
||||
// Check we've reverse looked-up the 6502 opcode correctly
|
||||
const bool isZpAddrValid = (zpAddr16 & 0xF80F) == (0xC000 + reg);
|
||||
const bool isAbs16AddrValid = (addr16 & 0xF80F) == (0xC000 + reg);
|
||||
|
||||
if ( (isZpAddrValid && isAbs16AddrValid)
|
||||
|| (!isZpAddrValid && !isAbs16AddrValid) )
|
||||
{
|
||||
_ASSERT(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return isZpAddrValid ? zpOpcodeCycles : opcodeCycles;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@@ -3,7 +3,7 @@
|
||||
class SY6522
|
||||
{
|
||||
public:
|
||||
SY6522(UINT slot, bool isMegaAudio) : m_slot(slot), m_isMegaAudio(isMegaAudio), m_isBusDriven(false)
|
||||
SY6522(UINT slot, bool isMegaAudio) : m_slot(slot), m_isMegaAudio(isMegaAudio), m_isBusDriven(false), m_bad6522(false)
|
||||
{
|
||||
for (UINT i = 0; i < kNumTimersPer6522; i++)
|
||||
m_syncEvent[i] = NULL;
|
||||
@@ -20,6 +20,11 @@ public:
|
||||
m_syncEvent[1] = event1;
|
||||
}
|
||||
|
||||
void InitBadState(bool bad6522)
|
||||
{
|
||||
m_bad6522 = bad6522;
|
||||
}
|
||||
|
||||
void Reset(const bool powerCycle);
|
||||
|
||||
void StartTimer1(void);
|
||||
@@ -55,6 +60,7 @@ public:
|
||||
void SetRegIRA(BYTE reg) { m_regs.ORA = reg; }
|
||||
bool IsTimer1IrqDelay(void) { return m_timer1IrqDelay ? true : false; }
|
||||
void SetBusBeingDriven(bool state) { m_isBusDriven = state; }
|
||||
bool IsBad(void) { return m_bad6522; }
|
||||
|
||||
BYTE Read(BYTE nReg);
|
||||
void Write(BYTE nReg, BYTE nValue);
|
||||
@@ -91,6 +97,7 @@ private:
|
||||
|
||||
UINT GetOpcodeCyclesForRead(BYTE reg);
|
||||
UINT GetOpcodeCyclesForWrite(BYTE reg);
|
||||
UINT GetOpcodeCycles(BYTE reg, UINT zpOpcodeCycles, UINT opcodeCycles, BYTE zpOpcode, BYTE opcode, bool abs16x, bool abs16y, bool indx, bool indy);
|
||||
|
||||
void StartTimer2(void);
|
||||
void StartTimer1_LoadStateV1(void);
|
||||
@@ -148,4 +155,7 @@ private:
|
||||
bool m_isBusDriven;
|
||||
|
||||
static const UINT kExtraMegaAudioTimerCycles = kExtraTimerCycles + 1;
|
||||
|
||||
// For mb-audit
|
||||
bool m_bad6522;
|
||||
};
|
||||
|
@@ -782,6 +782,10 @@ void AY8913::sound_ay_write( int reg, int val, libspectrum_dword now )
|
||||
ay_change[ ay_change_count ].val = val;
|
||||
ay_change_count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LogOutput("AY reg write discarded: %02X = %02X\n", reg, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
204
source/CPU.cpp
@@ -235,7 +235,7 @@ static UINT g_nMin = 0xFFFFFFFF;
|
||||
static UINT g_nMax = 0;
|
||||
#endif
|
||||
|
||||
static __forceinline void DoIrqProfiling(DWORD uCycles)
|
||||
static __forceinline void DoIrqProfiling(uint32_t uCycles)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
if(regs.ps & AF_INTERRUPT)
|
||||
@@ -379,6 +379,24 @@ static __forceinline void Fetch(BYTE& iOpcode, ULONG uExecutedCycles)
|
||||
regs.pc++;
|
||||
}
|
||||
|
||||
static __forceinline void Fetch_alt(BYTE& iOpcode, ULONG uExecutedCycles)
|
||||
{
|
||||
const USHORT PC = regs.pc;
|
||||
|
||||
#if defined(_DEBUG) && defined(DBG_HDD_ENTRYPOINT)
|
||||
DebugHddEntrypoint(PC);
|
||||
#endif
|
||||
|
||||
iOpcode = _READ_ALT(regs.pc);
|
||||
|
||||
#ifdef USE_SPEECH_API
|
||||
if ((PC == COUT1 || PC == BASICOUT) && g_Speech.IsEnabled() && !g_bFullSpeed)
|
||||
CaptureCOUT();
|
||||
#endif
|
||||
|
||||
regs.pc++;
|
||||
}
|
||||
|
||||
//#define ENABLE_NMI_SUPPORT // Not used - so don't enable
|
||||
static __forceinline bool NMI(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn, BOOL& flagv, BOOL& flagz)
|
||||
{
|
||||
@@ -391,14 +409,28 @@ static __forceinline bool NMI(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
|
||||
#ifdef _DEBUG
|
||||
g_nCycleIrqStart = g_nCumulativeCycles + uExecutedCycles;
|
||||
#endif
|
||||
PUSH(regs.pc >> 8)
|
||||
PUSH(regs.pc & 0xFF)
|
||||
EF_TO_AF
|
||||
PUSH(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = * (WORD*) (mem+0xFFFA);
|
||||
if (GetIsMemCacheValid())
|
||||
{
|
||||
_PUSH(regs.pc >> 8)
|
||||
_PUSH(regs.pc & 0xFF)
|
||||
EF_TO_AF
|
||||
_PUSH(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = *(WORD*)(mem + _6502_NMI_VECTOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
_PUSH_ALT(regs.pc >> 8)
|
||||
_PUSH_ALT(regs.pc & 0xFF)
|
||||
EF_TO_AF
|
||||
_PUSH_ALT(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = READ_WORD_ALT(_6502_NMI_VECTOR);
|
||||
}
|
||||
UINT uExtraCycles = 0; // Needed for CYC(a) macro
|
||||
CYC(7);
|
||||
g_interruptInLastExecutionBatch = true;
|
||||
@@ -433,14 +465,28 @@ static __forceinline bool IRQ(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
|
||||
#ifdef _DEBUG
|
||||
g_nCycleIrqStart = g_nCumulativeCycles + uExecutedCycles;
|
||||
#endif
|
||||
PUSH(regs.pc >> 8)
|
||||
PUSH(regs.pc & 0xFF)
|
||||
EF_TO_AF
|
||||
PUSH(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = * (WORD*) (mem+0xFFFE);
|
||||
if (GetIsMemCacheValid())
|
||||
{
|
||||
_PUSH(regs.pc >> 8)
|
||||
_PUSH(regs.pc & 0xFF)
|
||||
EF_TO_AF;
|
||||
_PUSH(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = *(WORD*)(mem + _6502_INTERRUPT_VECTOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
_PUSH_ALT(regs.pc >> 8)
|
||||
_PUSH_ALT(regs.pc & 0xFF)
|
||||
EF_TO_AF;
|
||||
_PUSH_ALT(regs.ps & ~AF_BREAK)
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = READ_WORD_ALT(_6502_INTERRUPT_VECTOR);
|
||||
}
|
||||
UINT uExtraCycles = 0; // Needed for CYC(a) macro
|
||||
CYC(7);
|
||||
#if defined(_DEBUG) && LOG_IRQ_TAKEN_AND_RTI
|
||||
@@ -462,61 +508,116 @@ static __forceinline bool IRQ(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
|
||||
|
||||
//===========================================================================
|
||||
|
||||
#define READ _READ_WITH_IO_F8xx
|
||||
#define WRITE(value) _WRITE_WITH_IO_F8xx(value)
|
||||
#define HEATMAP_X(address)
|
||||
|
||||
// 6502 & no debugger
|
||||
#define READ(addr) _READ_WITH_IO_F8xx(addr)
|
||||
#define WRITE(value) _WRITE_WITH_IO_F8xx(value)
|
||||
|
||||
#include "CPU/cpu6502.h" // MOS 6502
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
//-------
|
||||
|
||||
// 6502 & no debugger & alt read/write support
|
||||
#define CPU_ALT
|
||||
#define READ(addr) _READ_ALT(addr)
|
||||
#define WRITE(value) _WRITE_ALT(value)
|
||||
|
||||
#define Cpu6502 Cpu6502_altRW
|
||||
#define Fetch Fetch_alt
|
||||
#include "CPU/cpu6502.h" // MOS 6502
|
||||
#undef Cpu6502
|
||||
#undef Fetch
|
||||
|
||||
//-------
|
||||
|
||||
#define READ _READ
|
||||
// 65C02 & no debugger
|
||||
#define READ(addr) _READ(addr)
|
||||
#define WRITE(value) _WRITE(value)
|
||||
|
||||
#include "CPU/cpu65C02.h" // WDC 65C02
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
//-------
|
||||
|
||||
// 65C02 & no debugger & alt read/write support
|
||||
#define CPU_ALT
|
||||
#define READ(addr) _READ_ALT(addr)
|
||||
#define WRITE(value) _WRITE_ALT(value)
|
||||
|
||||
#define Cpu65C02 Cpu65C02_altRW
|
||||
#define Fetch Fetch_alt
|
||||
#include "CPU/cpu65C02.h" // WDC 65C02
|
||||
#undef Cpu65C02
|
||||
#undef Fetch
|
||||
|
||||
#undef HEATMAP_X
|
||||
|
||||
//-----------------
|
||||
|
||||
#define READ Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles)
|
||||
#define WRITE(value) Heatmap_WriteByte_With_IO_F8xx(addr, value, uExecutedCycles);
|
||||
|
||||
#define HEATMAP_X(address) Heatmap_X(address)
|
||||
|
||||
#include "CPU/cpu_heatmap.inl"
|
||||
|
||||
// 6502 & debugger
|
||||
#define READ(addr) Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles)
|
||||
#define WRITE(value) Heatmap_WriteByte_With_IO_F8xx(addr, value, uExecutedCycles);
|
||||
|
||||
#define Cpu6502 Cpu6502_debug
|
||||
#include "CPU/cpu6502.h" // MOS 6502
|
||||
#undef Cpu6502
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
//-------
|
||||
|
||||
// 6502 & debugger & alt read/write support
|
||||
#define CPU_ALT
|
||||
#define READ(addr) _READ_ALT(addr)
|
||||
#define WRITE(value) _WRITE_ALT(value)
|
||||
|
||||
#define Cpu6502 Cpu6502_debug_altRW
|
||||
#define Fetch Fetch_alt
|
||||
#include "CPU/cpu6502.h" // MOS 6502
|
||||
#undef Cpu6502
|
||||
#undef Fetch
|
||||
|
||||
//-------
|
||||
|
||||
#define READ Heatmap_ReadByte(addr, uExecutedCycles)
|
||||
// 65C02 & debugger
|
||||
#define READ(addr) Heatmap_ReadByte(addr, uExecutedCycles)
|
||||
#define WRITE(value) Heatmap_WriteByte(addr, value, uExecutedCycles);
|
||||
|
||||
#define Cpu65C02 Cpu65C02_debug
|
||||
#include "CPU/cpu65C02.h" // WDC 65C02
|
||||
#undef Cpu65C02
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
//-------
|
||||
|
||||
// 65C02 & debugger & alt read/write support
|
||||
#define CPU_ALT
|
||||
#define READ(addr) _READ_ALT(addr)
|
||||
#define WRITE(value) _WRITE_ALT(value)
|
||||
|
||||
#define Cpu65C02 Cpu65C02_debug_altRW
|
||||
#define Fetch Fetch_alt
|
||||
#include "CPU/cpu65C02.h" // WDC 65C02
|
||||
#undef Cpu65C02
|
||||
#undef Fetch
|
||||
|
||||
#undef HEATMAP_X
|
||||
|
||||
//===========================================================================
|
||||
|
||||
static DWORD InternalCpuExecute(const DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
static uint32_t InternalCpuExecute(const uint32_t uTotalCycles, const bool bVideoUpdate)
|
||||
{
|
||||
if (g_nAppMode == MODE_RUNNING || g_nAppMode == MODE_BENCHMARK)
|
||||
{
|
||||
if (!GetIsMemCacheValid())
|
||||
{
|
||||
_ASSERT(memshadow[0]);
|
||||
if (GetMainCpu() == CPU_6502)
|
||||
return Cpu6502_altRW(uTotalCycles, bVideoUpdate); // Apple //e
|
||||
else
|
||||
return Cpu65C02_altRW(uTotalCycles, bVideoUpdate); // Enhanced Apple //e
|
||||
}
|
||||
|
||||
if (GetMainCpu() == CPU_6502)
|
||||
return Cpu6502(uTotalCycles, bVideoUpdate); // Apple ][, ][+, //e, Clones
|
||||
else
|
||||
@@ -525,6 +626,16 @@ static DWORD InternalCpuExecute(const DWORD uTotalCycles, const bool bVideoUpdat
|
||||
else
|
||||
{
|
||||
_ASSERT(g_nAppMode == MODE_STEPPING || g_nAppMode == MODE_DEBUG);
|
||||
|
||||
if (!GetIsMemCacheValid())
|
||||
{
|
||||
_ASSERT(memshadow[0]);
|
||||
if (GetMainCpu() == CPU_6502)
|
||||
return Cpu6502_debug_altRW(uTotalCycles, bVideoUpdate); // Apple //e
|
||||
else
|
||||
return Cpu65C02_debug_altRW(uTotalCycles, bVideoUpdate); // Enhanced Apple //e
|
||||
}
|
||||
|
||||
if (GetMainCpu() == CPU_6502)
|
||||
return Cpu6502_debug(uTotalCycles, bVideoUpdate); // Apple ][, ][+, //e, Clones
|
||||
else
|
||||
@@ -543,7 +654,7 @@ BYTE CpuRead(USHORT addr, ULONG uExecutedCycles)
|
||||
{
|
||||
if (g_nAppMode == MODE_RUNNING)
|
||||
{
|
||||
return _READ_WITH_IO_F8xx; // Superset of _READ
|
||||
return _READ_WITH_IO_F8xx(addr); // Superset of _READ
|
||||
}
|
||||
|
||||
return Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles);
|
||||
@@ -607,7 +718,7 @@ ULONG CpuGetCyclesThisVideoFrame(const ULONG nExecutedCycles)
|
||||
|
||||
//===========================================================================
|
||||
|
||||
DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate)
|
||||
uint32_t CpuExecute(const uint32_t uCycles, const bool bVideoUpdate)
|
||||
{
|
||||
#ifdef LOG_PERF_TIMINGS
|
||||
extern UINT64 g_timeCpu;
|
||||
@@ -624,7 +735,7 @@ DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate)
|
||||
// uCycles:
|
||||
// =0 : Do single step
|
||||
// >0 : Do multi-opcode emulation
|
||||
const DWORD uExecutedCycles = InternalCpuExecute(uCycles, bVideoUpdate);
|
||||
const uint32_t uExecutedCycles = InternalCpuExecute(uCycles, bVideoUpdate);
|
||||
|
||||
// Update 6522s (NB. Do this before updating g_nCumulativeCycles below)
|
||||
// . Ensures that 6522 regs are up-to-date for any potential save-state
|
||||
@@ -692,7 +803,10 @@ void CpuReset()
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = *(WORD*)(mem + 0xFFFC);
|
||||
|
||||
_ASSERT(memshadow[_6502_RESET_VECTOR >> 8] != NULL);
|
||||
regs.pc = ReadWordFromMemory(_6502_RESET_VECTOR);
|
||||
|
||||
regs.sp = 0x0100 | ((regs.sp - 3) & 0xFF);
|
||||
|
||||
regs.bJammed = 0;
|
||||
@@ -705,7 +819,7 @@ void CpuReset()
|
||||
|
||||
//===========================================================================
|
||||
|
||||
void CpuSetupBenchmark ()
|
||||
void CpuSetupBenchmark()
|
||||
{
|
||||
regs.a = 0;
|
||||
regs.x = 0;
|
||||
@@ -719,19 +833,19 @@ void CpuSetupBenchmark ()
|
||||
int opcode = 0;
|
||||
do
|
||||
{
|
||||
*(mem+addr++) = benchopcode[opcode];
|
||||
*(mem+addr++) = benchopcode[opcode];
|
||||
WriteByteToMemory(addr++, benchopcode[opcode]);
|
||||
WriteByteToMemory(addr++, benchopcode[opcode]);
|
||||
|
||||
if (opcode >= SHORTOPCODES)
|
||||
*(mem+addr++) = 0;
|
||||
WriteByteToMemory(addr++, 0);
|
||||
|
||||
if ((++opcode >= BENCHOPCODES) || ((addr & 0x0F) >= 0x0B))
|
||||
{
|
||||
*(mem+addr++) = 0x4C;
|
||||
WriteByteToMemory(addr++, 0x4C);
|
||||
// split into 2 lines to avoid -Wunsequenced and undefined behaviour
|
||||
const BYTE value = (opcode >= BENCHOPCODES) ? 0x00 : ((addr >> 4)+1) << 4;
|
||||
*(mem+addr++) = value;
|
||||
*(mem+addr++) = 0x03;
|
||||
WriteByteToMemory(addr++, value);
|
||||
WriteByteToMemory(addr++, 0x03);
|
||||
while (addr & 0x0F)
|
||||
++addr;
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@ extern unsigned __int64 g_nCumulativeCycles;
|
||||
|
||||
void CpuDestroy ();
|
||||
void CpuCalcCycles(ULONG nExecutedCycles);
|
||||
DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate);
|
||||
uint32_t CpuExecute(const uint32_t uCycles, const bool bVideoUpdate);
|
||||
ULONG CpuGetCyclesThisVideoFrame(ULONG nExecutedCycles);
|
||||
void CpuCreateCriticalSection(void);
|
||||
void CpuInitialize(void);
|
||||
|
@@ -21,9 +21,64 @@ along with AppleWin; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
// For regular or alternate (slow-path) CPU emulation
|
||||
#ifndef CPU_ALT
|
||||
// NB READ(x) and WRITE(x) are defined in the parent CPU.cpp.
|
||||
// . but keep here to retain symmetry with the undef's at the end of this file.
|
||||
//#define READ(addr) _READ(addr)
|
||||
//#define WRITE(value) _WRITE(value)
|
||||
#define BRK_NMOS _BRK_NMOS
|
||||
#define BRK_CMOS _BRK_CMOS
|
||||
#define JSR _JSR
|
||||
#define POP _POP
|
||||
#define PUSH(value) _PUSH(value)
|
||||
#define ABS _ABS
|
||||
#define IABSX _IABSX
|
||||
#define ABSX_CONST _ABSX_CONST
|
||||
#define ABSX_OPT _ABSX_OPT
|
||||
#define ABSY_CONST _ABSY_CONST
|
||||
#define ABSY_OPT _ABSY_OPT
|
||||
#define IABS_CMOS _IABS_CMOS
|
||||
#define IABS_NMOS _IABS_NMOS
|
||||
#define INDX _INDX
|
||||
#define INDX _INDX
|
||||
#define INDY_CONST _INDY_CONST
|
||||
#define INDY_OPT _INDY_OPT
|
||||
#define IZPG _IZPG
|
||||
#define REL _REL
|
||||
#define ZPG _ZPG
|
||||
#define ZPGX _ZPGX
|
||||
#define ZPGY _ZPGY
|
||||
#else
|
||||
//#define READ(addr) _READ_ALT(addr)
|
||||
//#define WRITE(value) _WRITE_ALT(value)
|
||||
#define BRK_NMOS _BRK_NMOS_ALT
|
||||
#define BRK_CMOS _BRK_CMOS_ALT
|
||||
#define JSR _JSR_ALT
|
||||
#define POP _POP_ALT
|
||||
#define PUSH(value) _PUSH_ALT(value)
|
||||
#define ABS _ABS_ALT
|
||||
#define IABSX _IABSX_ALT
|
||||
#define ABSX_CONST _ABSX_CONST_ALT
|
||||
#define ABSX_OPT _ABSX_OPT_ALT
|
||||
#define ABSY_CONST _ABSY_CONST_ALT
|
||||
#define ABSY_OPT _ABSY_OPT_ALT
|
||||
#define IABS_CMOS _IABS_CMOS_ALT
|
||||
#define IABS_NMOS _IABS_NMOS_ALT
|
||||
#define INDX _INDX_ALT
|
||||
#define INDX _INDX_ALT
|
||||
#define INDY_CONST _INDY_CONST_ALT
|
||||
#define INDY_OPT _INDY_OPT_ALT
|
||||
#define IZPG _IZPG_ALT
|
||||
#define REL _REL_ALT
|
||||
#define ZPG _ZPG_ALT
|
||||
#define ZPGX _ZPGX_ALT
|
||||
#define ZPGY _ZPGY_ALT
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
|
||||
static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
static uint32_t Cpu6502(uint32_t uTotalCycles, const bool bVideoUpdate)
|
||||
{
|
||||
WORD addr;
|
||||
BOOL flagc; // must always be 0 or 1, no other values allowed
|
||||
@@ -74,7 +129,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
case 0x09: IMM ORA CYC(2) break;
|
||||
case 0x0A: asl CYC(2) break;
|
||||
case 0x0B: IMM ANC CYC(2) break; // invalid
|
||||
case 0x0C: ABSX_OPT NOP CYC(4) break; // invalid
|
||||
case 0x0C: ABS NOP CYC(4) break; // invalid (GH#1360: ABS, not ABS,X)
|
||||
case 0x0D: ABS ORA CYC(4) break;
|
||||
case 0x0E: ABS ASLn CYC(6) break;
|
||||
case 0x0F: ABS ASO CYC(6) break; // invalid
|
||||
@@ -339,3 +394,30 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
||||
#undef CPU_ALT
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
#undef BRK_NMOS
|
||||
#undef BRK_CMOS
|
||||
#undef JSR
|
||||
#undef POP
|
||||
#undef PUSH
|
||||
#undef ABS
|
||||
#undef IABSX
|
||||
#undef ABSX_CONST
|
||||
#undef ABSX_OPT
|
||||
#undef ABSY_CONST
|
||||
#undef ABSY_OPT
|
||||
#undef IABS_CMOS
|
||||
#undef IABS_NMOS
|
||||
#undef INDX
|
||||
#undef INDX
|
||||
#undef INDY_CONST
|
||||
#undef INDY_OPT
|
||||
#undef IZPG
|
||||
#undef REL
|
||||
#undef ZPG
|
||||
#undef ZPGX
|
||||
#undef ZPGY
|
||||
|
@@ -21,9 +21,64 @@ along with AppleWin; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
// For regular or alternate (slow-path) CPU emulation
|
||||
#ifndef CPU_ALT
|
||||
// NB READ(x) and WRITE(x) are defined in the parent CPU.cpp.
|
||||
// . but keep here to retain symmetry with the undef's at the end of this file.
|
||||
//#define READ(addr) _READ(addr)
|
||||
//#define WRITE(value) _WRITE(value)
|
||||
#define BRK_NMOS _BRK_NMOS
|
||||
#define BRK_CMOS _BRK_CMOS
|
||||
#define JSR _JSR
|
||||
#define POP _POP
|
||||
#define PUSH(value) _PUSH(value)
|
||||
#define ABS _ABS
|
||||
#define IABSX _IABSX
|
||||
#define ABSX_CONST _ABSX_CONST
|
||||
#define ABSX_OPT _ABSX_OPT
|
||||
#define ABSY_CONST _ABSY_CONST
|
||||
#define ABSY_OPT _ABSY_OPT
|
||||
#define IABS_CMOS _IABS_CMOS
|
||||
#define IABS_NMOS _IABS_NMOS
|
||||
#define INDX _INDX
|
||||
#define INDX _INDX
|
||||
#define INDY_CONST _INDY_CONST
|
||||
#define INDY_OPT _INDY_OPT
|
||||
#define IZPG _IZPG
|
||||
#define REL _REL
|
||||
#define ZPG _ZPG
|
||||
#define ZPGX _ZPGX
|
||||
#define ZPGY _ZPGY
|
||||
#else
|
||||
//#define READ(addr) _READ_ALT(addr)
|
||||
//#define WRITE(value) _WRITE_ALT(value)
|
||||
#define BRK_NMOS _BRK_NMOS_ALT
|
||||
#define BRK_CMOS _BRK_CMOS_ALT
|
||||
#define JSR _JSR_ALT
|
||||
#define POP _POP_ALT
|
||||
#define PUSH(value) _PUSH_ALT(value)
|
||||
#define ABS _ABS_ALT
|
||||
#define IABSX _IABSX_ALT
|
||||
#define ABSX_CONST _ABSX_CONST_ALT
|
||||
#define ABSX_OPT _ABSX_OPT_ALT
|
||||
#define ABSY_CONST _ABSY_CONST_ALT
|
||||
#define ABSY_OPT _ABSY_OPT_ALT
|
||||
#define IABS_CMOS _IABS_CMOS_ALT
|
||||
#define IABS_NMOS _IABS_NMOS_ALT
|
||||
#define INDX _INDX_ALT
|
||||
#define INDX _INDX_ALT
|
||||
#define INDY_CONST _INDY_CONST_ALT
|
||||
#define INDY_OPT _INDY_OPT_ALT
|
||||
#define IZPG _IZPG_ALT
|
||||
#define REL _REL_ALT
|
||||
#define ZPG _ZPG_ALT
|
||||
#define ZPGX _ZPGX_ALT
|
||||
#define ZPGY _ZPGY_ALT
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
|
||||
static DWORD Cpu65C02(DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
static uint32_t Cpu65C02(uint32_t uTotalCycles, const bool bVideoUpdate)
|
||||
{
|
||||
WORD addr;
|
||||
BOOL flagc; // must always be 0 or 1, no other values allowed
|
||||
@@ -339,3 +394,30 @@ static DWORD Cpu65C02(DWORD uTotalCycles, const bool bVideoUpdate)
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
||||
#undef CPU_ALT
|
||||
|
||||
#undef READ
|
||||
#undef WRITE
|
||||
#undef BRK_NMOS
|
||||
#undef BRK_CMOS
|
||||
#undef JSR
|
||||
#undef POP
|
||||
#undef PUSH
|
||||
#undef ABS
|
||||
#undef IABSX
|
||||
#undef ABSX_CONST
|
||||
#undef ABSX_OPT
|
||||
#undef ABSY_CONST
|
||||
#undef ABSY_OPT
|
||||
#undef IABS_CMOS
|
||||
#undef IABS_NMOS
|
||||
#undef INDX
|
||||
#undef INDX
|
||||
#undef INDY_CONST
|
||||
#undef INDY_OPT
|
||||
#undef IZPG
|
||||
#undef REL
|
||||
#undef ZPG
|
||||
#undef ZPGX
|
||||
#undef ZPGY
|
||||
|