Skip to content

Commit

Permalink
Merge branch 'audetto'
Browse files Browse the repository at this point in the history
  • Loading branch information
sh95014 committed Mar 23, 2024
2 parents b6760db + 5f13e33 commit f30f353
Show file tree
Hide file tree
Showing 51 changed files with 690 additions and 227 deletions.
12 changes: 12 additions & 0 deletions bin/History.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@ https://github.com/AppleWin/AppleWin/issues/new
Tom Charlesworth


1.30.18.0 - 23 Mar 2023
-----------------------
- [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.
- [Change #1279] Support Saturn RAM card in slot 3 for any Apple II model (for Robo Systems' RoboCAD 2).
- [Change #1159] Speaker: change from mono to stereo sound buffer.
- [Change #1247] Robocom's Interface Module dongle: use actual values for 1000 & 1500 series dongles.
- [Bug #1261] Fix for $C010 which should not read the keyboard latch on Apple II and Apple II+.
- [Bug #1257] 6502/65C02: Fix JSR for edge-case where JSR ABS16 is on stack and SP points to ABS16!
- [Bug #1276] Phasor in Echo+ mode: fix the chip-select polarity.


1.30.17.0 - 31 Dec 2023
-----------------------
- [Bug #1262] Fix loading save-state for RAMWorks III card with 2 or more aux 64K banks.
Expand Down
9 changes: 9 additions & 0 deletions help/CommandLine.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ <h2 style="COLOR: rgb(0,128,0)">Command line</h2>
-s0 &lt;saturn|saturn64|saturn128&gt;<br>
Insert a Saturn 64K or Saturn 128K card into slot 0 in the Apple II or II+ machines (or similar clone).<br>
Where -s0 saturn is an alias for -s0 saturn128.<br><br>
-s3 &lt;saturn|saturn128&gt;<br>
Insert a Saturn 128K card into slot 3 in any Apple II machine.<br>
Use this configuration for Robocom Ltd's (Robo Systems') CAD software in combination with the Interface Module protection dongle in the Game I/O Connector.<br><br>
-s0 &lt;languagecard|lc&gt;<br>
Insert an Apple 16K Language Card into slot 0 in the original Apple II and use the F8 auto-start ROM.<br>
NB. The Apple II+ already defaults to having a Language Card, so this switch is not required.<br><br>
Expand Down Expand Up @@ -226,5 +229,11 @@ <h2 style="COLOR: rgb(0,128,0)">Command line</h2>
<br><br>
-screenshot-and-exit<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>
<br><br>
</body>
</html>
45 changes: 40 additions & 5 deletions help/Troubleshooting.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ <h2 style="COLOR: rgb(0,128,0)">Troubleshooting</h2>
<hr size="4">
<p style="FONT-WEIGHT: bold">Here is a list of issues and possible solutions:</p>

How to reset AppleWin back to the default settings:
<ul>
<li>Within the AppleWin install folder there is the file: DELREG.INF.</li>
<ul>
<li>Windows 10/11: From Explorer, right click on this file, then select: Install</li>
</ul>
<li>This will remove all AppleWin configuration from the Registry.</li>
</ul>

<br>
Uthernet network card not working.
<ul>
<li>There are problems when running with certain firewalls (eg. ZoneAlarm).
Expand All @@ -19,6 +29,7 @@ <h2 style="COLOR: rgb(0,128,0)">Troubleshooting</h2>
</li>
</ul>

<br>
AppleWin doesn't startup.
<ul>
<li>It could be being blocked by your anti-virus software. There is a known problem with Constant Guard Protection Suite.
Expand All @@ -28,6 +39,7 @@ <h2 style="COLOR: rgb(0,128,0)">Troubleshooting</h2>
</li>
</ul>

<br>
When using a non-US (or UK) keyboard, certain keys can't be typed.
<ul>
<li>AltGr (or right Alt) needs to be used to type certain keys, eg:
Expand All @@ -46,19 +58,22 @@ <h2 style="COLOR: rgb(0,128,0)">Troubleshooting</h2>
<li>The workaround is to use the `-no-hook-alt` command line switch and configure Joystick 1 = "Keyboard (numpad)"; and then use the '0' and '.' keys for Open/Solid Apple.</li>
</ul>

<br>
No Apple II speaker sound, but Mockingboard sound is working!
<ul>
<li>Check the Volume Control for the Speaker, under the <a href="cfg-sound.html">Configuration->Sound tab</a>.</li>
<li>Try installing the Realtek-specific audio driver supplied by ASUS (as opposed to the default Win10 driver).</li>
</ul>

<br>
Color (RGB Card/Monitor) and title compatibility issues:
<ul>
<li>Dragon Wars: double hi-res bit7 needs inverting, so use the -rgb-card-invert-bit7 command line switch.</li>
<li>Renegade: switches to 160x192 mode at the title screen and then B&W (at the title screen) after game play.</li>
<li>Apple's AppleColor card or Video7's RGB-SL7 card: corruption for titles/demos that accidentally switch to foreground/background hi-res mode, eg. French Touch DIGIDREAM demo.</li>
</ul>

<br>
Can't switch to 2x windowed mode:
<ul>
<li>If the resolution isn't high enough to support 2x windowed mode, then AppleWin will refuse to switch.</li>
Expand All @@ -70,24 +85,44 @@ <h2 style="COLOR: rgb(0,128,0)">Troubleshooting</h2>
</ul>
</ul>

<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">
<ul>
<li>From Control Panel...".</li>
<li>Windows 7: From "Control Panel...":</li>
<ul>
<li>Windows 7: Change keyboards or other input methods -> 'Keyboards and Languages' tab -> Change Keyboards -> 'Advanced Key Settings' -> Change Key Sequence...</li>
</ul>
</ul>

<ul>
<li>Windows 10: From "Control Panel...":</li>
<ul>
<li>Windows 10: Typing -> Advanced Keyboard Settings -> Input language hot keys -> Change Key Sequence...</li>
</ul>
</ul>

<ul>
<li>Windows 11: From "Settings":</li>
<ul>
<li>Time & Language -> Typing -> Advanced Keyboard Settings -> Input language hot keys -> Change Key Sequence...</li>
</ul>
</ul>

<ul>
<li>Finally set "Switch Keyboard Layout" to "Not Assigned".</li>
</ul>

How to reset AppleWin back to the default settings:
<br>
.po floppy image doesn't boot and may crash to the monitor.
<ul>
<li>Within the AppleWin install folder there is the file: DELREG.INF.</li>
<li>Try renaming with a ".do" or ".dsk" extension.</li>
<li>Or you can use a utility like CiderPress to convert them to proper .po disks and then they will work correctly in emulators and with ProDOS block devices.</li>
<li> Details:</li>
<ul>
<li>Windows 10/11: From Explorer, right click on this file, then select: Install</li>
<li>".do" and ".po" specify a specific order.</li>
<li>These non-booting .po images are with DOS-order sectors.</li>
</ul>
<li>This will remove all AppleWin configuration from the Registry.</li>
</ul>
</body>
</html>
1 change: 1 addition & 0 deletions help/acknowledgements.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@ <h2 style="COLOR: rgb(0,128,0)">Acknowledgements</h2>
<p style="MARGIN-LEFT: 40px">Matthew D'Asaro: Game I/O Controller copy-protection dongle support</p>
<p style="MARGIN-LEFT: 40px">Erik Struiksma: SNES MAX controller mapping files</p>
<p style="MARGIN-LEFT: 40px">John Leffingwell: LFSR logic for the CodeWriter copy-protection dongle</p>
<p style="MARGIN-LEFT: 40px">Hugh Hood: loan of his Robocom Interface Module dongles</p>
</body>
</html>
2 changes: 1 addition & 1 deletion help/dbg-screen-layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ <h3><a name="Soft-switches"></a>Soft-switches</h3>
<li>If 'W' is inverse: RAM is write enabled.
<li>If 'W' is not inverse: RAM is write protected.
<li>'rNN' will appear if a RamWorks 64K bank is active.
<li>'sNN' will appear if a Saturn 16K bank is active.
<li>'sNN' will appear if a Saturn 16K bank is active (slot 0 only).
</ul>
</ul>
</p>
Expand Down
2 changes: 2 additions & 0 deletions help/savestate.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ <h2 style="COLOR: rgb(0,128,0)">Save-state Files</h2>
<li>Apple model: ][, ][+, //e, Enhanced //e or clone (eg. Pravets)</li>
<li>Apple ]['s slot-0 language card: 16K Language Card, Saturn 64K or Saturn 128K</li>
<li>Apple //e's auxiliary card: 80 Column, Extended 80 Column or RamWorks III</li>
<li>Any Apple II: Saturn 128K cards in slots other than slot 0</li>
<li>Disk][ (even during r/w operation)</li>
<li>Hard disk (even during r/w operation)</li>
<li>Mockingboard & Phasor cards</li>
Expand All @@ -35,6 +36,7 @@ <h2 style="COLOR: rgb(0,128,0)">Save-state Files</h2>
<li>Uthernet & Uthernet II cards</li>
<li>4Play & SNES MAX joystick cards</li>
<li>VidHD card</li>
<li>Game I/O Connector copy protection dongle</li>
</ul>
The following are not yet persisted to the file:
<ul>
Expand Down
2 changes: 1 addition & 1 deletion help/toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
Copyright © 1994-1996, Michael O'Brien<br>
Copyright © 2001, Oliver Schmidt<br>
Copyright © 2002-2005, Tom Charlesworth<br>
Copyright © 2006-2023, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
Copyright © 2006-2024, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
<br>
<a href="applewin-team.html">AppleWin team</a>
<br>
Expand Down
12 changes: 10 additions & 2 deletions help/uthernet.html
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,15 @@ <h2 style="COLOR: rgb(0,128,0)">Uthernet network cards</h2>
</ul>
</P>
<P>The card implements a <A 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>
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>
<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>
<P>AppleWin's W5100 emulation returns the following depending on whether AppleWin's "Virtual DNS" is checked or not:
<li>Checked (default): W5100 register 0x28 returns 0x00 (so Apple II applications can use this to detect the virtual W5100 has virtual DNS support).</li>
<li>Unchecked: W5100 register 0x28 returns 0x28 (ie. the emulated W5100 behaves like a real W5100).</li>
</P>
</body>
</html>
4 changes: 2 additions & 2 deletions resource/Applewin.rc
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ BEGIN
CONTROL "The Free&ze's non-autostart F8 rom (Apple ][ or ][+ only)",IDC_THE_FREEZES_F8_ROM_FW,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,201,194,10
LTEXT "&Game I/O Connector:",IDC_STATIC,5,220,82,8
COMBOBOX IDC_COMBO_GAME_IO_CONNECTOR,89,218,114,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBO_GAME_IO_CONNECTOR,80,218,128,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END


Expand Down Expand Up @@ -298,7 +298,7 @@ BEGIN
VALUE "FileDescription", "Apple //e Emulator for Windows"
VALUE "FileVersion", APPLEWIN_VERSION_STR
VALUE "InternalName", "APPLEWIN"
VALUE "LegalCopyright", " 1994-2023 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
VALUE "LegalCopyright", " 1994-2024 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
Expand Down
2 changes: 1 addition & 1 deletion resource/version.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#define APPLEWIN_VERSION 1,30,17,0
#define APPLEWIN_VERSION 1,30,18,0

#define xstr(a) str(a)
#define str(a) #a
Expand Down
2 changes: 1 addition & 1 deletion source/CPU/cpu6502.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
case 0x1D: ABSX_OPT ORA CYC(4) break;
case 0x1E: ABSX_CONST ASLn CYC(7) break;
case 0x1F: ABSX_CONST ASO CYC(7) break; // invalid
case 0x20: ABS JSR CYC(6) break;
case 0x20: JSR CYC(6) break; // GH#1257: not ABS
case 0x21: idx AND CYC(6) break;
case 0x22: HLT CYC(2) break; // invalid
case 0x23: idx RLA CYC(8) break; // invalid
Expand Down
2 changes: 1 addition & 1 deletion source/CPU/cpu65C02.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static DWORD Cpu65C02(DWORD uTotalCycles, const bool bVideoUpdate)
case 0x1D: ABSX_OPT ORA CYC(4) break;
case 0x1E: ABSX_OPT ASLc CYC(6) break;
case 0x1F: NOP CYC(1) break; // invalid
case 0x20: ABS JSR CYC(6) break;
case 0x20: JSR CYC(6) break; // GH#1257: not ABS
case 0x21: idx AND CYC(6) break;
case 0x22: IMM NOP CYC(2) break; // invalid
case 0x23: NOP CYC(1) break; // invalid
Expand Down
4 changes: 2 additions & 2 deletions source/CPU/cpu_instructions.inl
Original file line number Diff line number Diff line change
Expand Up @@ -400,10 +400,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#define INY ++regs.y; \
SETNZ(regs.y)
#define JMP regs.pc = addr;
#define JSR --regs.pc; \
#define JSR addr = *(LPBYTE)(mem+regs.pc); regs.pc++; \
PUSH(regs.pc >> 8) \
PUSH(regs.pc & 0xFF) \
regs.pc = addr;
regs.pc = addr | (*(LPBYTE)(mem+regs.pc)) << 8; /* GH#1257 */
#define LAS /*bSlowerOnPagecross = 1*/; \
val = (BYTE)(READ & regs.sp); \
regs.a = regs.x = (BYTE) val; \
Expand Down
33 changes: 19 additions & 14 deletions source/CardManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,21 +115,22 @@ void CardManager::InsertInternal(UINT slot, SS_CARDTYPE type)
case CT_Uthernet2:
m_slot[slot] = new Uthernet2(slot);
break;

case CT_LanguageCard:
_ASSERT(m_pLanguageCard == NULL);
if (m_pLanguageCard) break; // Only support one language card
m_slot[slot] = m_pLanguageCard = LanguageCardSlot0::create(slot);
case CT_LanguageCardIIe:
_ASSERT(slot == SLOT0);
if (GetLanguageCardMgr().SetLanguageCard(type))
m_slot[SLOT0] = GetLanguageCardMgr().GetLanguageCard();
break;
case CT_Saturn128K:
_ASSERT(m_pLanguageCard == NULL);
if (m_pLanguageCard) break; // Only support one language card
m_slot[slot] = m_pLanguageCard = new Saturn128K(slot, Saturn128K::GetSaturnMemorySize());
break;
case CT_LanguageCardIIe:
_ASSERT(m_pLanguageCard == NULL);
if (m_pLanguageCard) break; // Only support one language card
m_slot[slot] = m_pLanguageCard = LanguageCardUnit::create(slot);
if (slot == SLOT0)
{
if (GetLanguageCardMgr().SetLanguageCard(type))
m_slot[SLOT0] = GetLanguageCardMgr().GetLanguageCard();
}
else
{
m_slot[slot] = new Saturn128K(slot, Saturn128K::kMaxSaturnBanks);
}
break;

default:
Expand Down Expand Up @@ -165,9 +166,13 @@ void CardManager::RemoveInternal(UINT slot)
m_pParallelPrinterCard = NULL;
break;
case CT_LanguageCard:
case CT_Saturn128K:
case CT_LanguageCardIIe:
m_pLanguageCard = NULL;
_ASSERT(slot == SLOT0);
GetLanguageCardMgr().SetLanguageCard(CT_Empty);
break;
case CT_Saturn128K:
if (slot == SLOT0)
GetLanguageCardMgr().SetLanguageCard(CT_Empty);
break;
case CT_Z80:
m_pZ80Card = NULL;
Expand Down
7 changes: 3 additions & 4 deletions source/CardManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "Card.h"
#include "Disk2CardManager.h"
#include "LanguageCard.h"
#include "MockingboardCardManager.h"
#include "Common.h"

Expand All @@ -11,7 +12,6 @@ class CardManager
CardManager(void) :
m_pMouseCard(NULL),
m_pSSC(NULL),
m_pLanguageCard(NULL),
m_pParallelPrinterCard(NULL),
m_pZ80Card(NULL)
{
Expand Down Expand Up @@ -53,6 +53,7 @@ class CardManager
//

Disk2CardManager& GetDisk2CardMgr(void) { return m_disk2CardMgr; }
LanguageCardManager& GetLanguageCardMgr(void) { return m_languageCardMgr; }
MockingboardCardManager& GetMockingboardCardMgr(void) { return m_mockingboardCardMgr; }
class CMouseInterface* GetMouseCard(void) { return m_pMouseCard; }
bool IsMouseCardInstalled(void) { return m_pMouseCard != NULL; }
Expand All @@ -61,8 +62,6 @@ class CardManager
class ParallelPrinterCard* GetParallelPrinterCard(void) { return m_pParallelPrinterCard; }
bool IsParallelPrinterCardInstalled(void) { return m_pParallelPrinterCard != NULL; }

class LanguageCardUnit* GetLanguageCard(void) { return m_pLanguageCard; }

void InitializeIO(LPBYTE pCxRomPeripheral);
void Destroy(void);
void Reset(const bool powerCycle);
Expand All @@ -78,10 +77,10 @@ class CardManager
Card* m_slot[NUM_SLOTS];
Card* m_aux;
Disk2CardManager m_disk2CardMgr;
LanguageCardManager m_languageCardMgr;
MockingboardCardManager m_mockingboardCardMgr;
class CMouseInterface* m_pMouseCard;
class CSuperSerialCard* m_pSSC;
class LanguageCardUnit* m_pLanguageCard;
class ParallelPrinterCard* m_pParallelPrinterCard;
class Z80Card* m_pZ80Card;
};
Loading

0 comments on commit f30f353

Please sign in to comment.