diff --git a/AppleWin/docs/History.txt b/AppleWin/docs/History.txt index 6a9cf285..19902c2f 100644 --- a/AppleWin/docs/History.txt +++ b/AppleWin/docs/History.txt @@ -16,7 +16,13 @@ tomch at users.berlios.de Restrictions/bugs: - SSI263 emulation is very basic: there is no attempt to emulate rate, inflection or filters. - During Mockingboard playback, Speaker emulation isn't precise. -- For an original Apple //e, 80-column (PR#3) and INVERSE, it still appears to be mousetext character, but it should be inverted upper-case from $40 to $5F. + +Next release: +------------- +Fixes: +. [Feature #004346] Don't show mousetext for original Apple //e. +Changes: +. [Feature #005557] Support DOSMaster image created by Apple Oasis. 1.21.1 - 12 Aug 2012 diff --git a/AppleWin/source/Applewin.cpp b/AppleWin/source/Applewin.cpp index c77987d0..d9d29c2b 100644 --- a/AppleWin/source/Applewin.cpp +++ b/AppleWin/source/Applewin.cpp @@ -43,7 +43,7 @@ char VERSIONSTRING[16] = "xx.yy.zz.ww"; TCHAR *g_pAppTitle = TITLE_APPLE_2E_ENHANCED; -eApple2Type g_Apple2Type = A2TYPE_APPLE2EEHANCED; +eApple2Type g_Apple2Type = A2TYPE_APPLE2EENHANCED; BOOL behind = 0; // Redundant DWORD cumulativecycles = 0; // Wraps after ~1hr 9mins @@ -430,7 +430,7 @@ void LoadConfiguration() if (REGLOAD(TEXT(REGVALUE_APPLE2_TYPE), &dwComputerType)) { if ((dwComputerType >= A2TYPE_MAX) || (dwComputerType >= A2TYPE_UNDEFINED && dwComputerType < A2TYPE_CLONE)) - dwComputerType = A2TYPE_APPLE2EEHANCED; + dwComputerType = A2TYPE_APPLE2EENHANCED; g_Apple2Type = (eApple2Type) dwComputerType; } @@ -442,8 +442,8 @@ void LoadConfiguration() // NB. No A2TYPE_APPLE2E (this is correct) case 0: g_Apple2Type = A2TYPE_APPLE2; case 1: g_Apple2Type = A2TYPE_APPLE2PLUS; - case 2: g_Apple2Type = A2TYPE_APPLE2EEHANCED; - default: g_Apple2Type = A2TYPE_APPLE2EEHANCED; + case 2: g_Apple2Type = A2TYPE_APPLE2EENHANCED; + default: g_Apple2Type = A2TYPE_APPLE2EENHANCED; } } @@ -452,7 +452,7 @@ void LoadConfiguration() case A2TYPE_APPLE2: g_nCharsetType = 0; break; case A2TYPE_APPLE2PLUS: g_nCharsetType = 0; break; case A2TYPE_APPLE2E: g_nCharsetType = 0; break; - case A2TYPE_APPLE2EEHANCED: g_nCharsetType = 0; break; + case A2TYPE_APPLE2EENHANCED:g_nCharsetType = 0; break; case A2TYPE_PRAVETS82: g_nCharsetType = 1; break; case A2TYPE_PRAVETS8A: g_nCharsetType = 2; break; case A2TYPE_PRAVETS8M: g_nCharsetType = 3; break; //This charset has a very small difference with the PRAVETS82 one an probably has some misplaced characters. Still the Pravets82 charset is used, because settiong charset to 3 results in some problems. diff --git a/AppleWin/source/Common.h b/AppleWin/source/Common.h index c867d99b..e2264353 100644 --- a/AppleWin/source/Common.h +++ b/AppleWin/source/Common.h @@ -160,7 +160,7 @@ enum eApple2Type { A2TYPE_APPLE2=0, A2TYPE_APPLE2PLUS, A2TYPE_APPLE2E=APPLE2E_MASK, - A2TYPE_APPLE2EEHANCED, + A2TYPE_APPLE2EENHANCED, A2TYPE_UNDEFINED, A2TYPE_APPLE2C=APPLE2C_MASK, A2TYPE_APPLE2D=APPLE2D_MASK, @@ -184,6 +184,12 @@ inline bool IsClone(eApple2Type type) return (type & APPLECLONE_MASK) != 0; } +extern eApple2Type g_Apple2Type; +inline bool IsOriginal2E(void) +{ + return (g_Apple2Type == A2TYPE_APPLE2E); +} + enum eBUTTON {BUTTON0=0, BUTTON1}; enum eBUTTONSTATE {BUTTON_UP=0, BUTTON_DOWN}; diff --git a/AppleWin/source/Configuration/PageConfig.cpp b/AppleWin/source/Configuration/PageConfig.cpp index 78fcee2f..0c4f0767 100644 --- a/AppleWin/source/Configuration/PageConfig.cpp +++ b/AppleWin/source/Configuration/PageConfig.cpp @@ -131,7 +131,7 @@ BOOL CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPARAM case A2TYPE_APPLE2: nCurrentChoice = MENUITEM_IIORIGINAL; break; case A2TYPE_APPLE2PLUS: nCurrentChoice = MENUITEM_IIPLUS; break; case A2TYPE_APPLE2E: nCurrentChoice = MENUITEM_IIE; break; - case A2TYPE_APPLE2EEHANCED: nCurrentChoice = MENUITEM_ENHANCEDIIE; break; + case A2TYPE_APPLE2EENHANCED:nCurrentChoice = MENUITEM_ENHANCEDIIE; break; case A2TYPE_PRAVETS82: nCurrentChoice = MENUITEM_CLONE; break; case A2TYPE_PRAVETS8M: nCurrentChoice = MENUITEM_CLONE; break; case A2TYPE_PRAVETS8A: nCurrentChoice = MENUITEM_CLONE; break; @@ -243,9 +243,9 @@ eApple2Type CPageConfig::GetApple2Type(DWORD NewMenuItem) case MENUITEM_IIORIGINAL: return A2TYPE_APPLE2; case MENUITEM_IIPLUS: return A2TYPE_APPLE2PLUS; case MENUITEM_IIE: return A2TYPE_APPLE2E; - case MENUITEM_ENHANCEDIIE: return A2TYPE_APPLE2EEHANCED; + case MENUITEM_ENHANCEDIIE: return A2TYPE_APPLE2EENHANCED; case MENUITEM_CLONE: return A2TYPE_CLONE; - default: return A2TYPE_APPLE2EEHANCED; + default: return A2TYPE_APPLE2EENHANCED; } } diff --git a/AppleWin/source/Frame.cpp b/AppleWin/source/Frame.cpp index 9c37b670..f1100641 100644 --- a/AppleWin/source/Frame.cpp +++ b/AppleWin/source/Frame.cpp @@ -150,7 +150,7 @@ void GetAppleWindowTitle() case A2TYPE_APPLE2: _tcscpy(g_pAppleWindowTitle, TITLE_APPLE_2 ); break; case A2TYPE_APPLE2PLUS: _tcscpy(g_pAppleWindowTitle, TITLE_APPLE_2_PLUS ); break; case A2TYPE_APPLE2E: _tcscpy(g_pAppleWindowTitle, TITLE_APPLE_2E ); break; - case A2TYPE_APPLE2EEHANCED: _tcscpy(g_pAppleWindowTitle, TITLE_APPLE_2E_ENHANCED); break; + case A2TYPE_APPLE2EENHANCED:_tcscpy(g_pAppleWindowTitle, TITLE_APPLE_2E_ENHANCED); break; case A2TYPE_PRAVETS82: _tcscpy(g_pAppleWindowTitle, TITLE_PRAVETS_82 ); break; case A2TYPE_PRAVETS8M: _tcscpy(g_pAppleWindowTitle, TITLE_PRAVETS_8M ); break; case A2TYPE_PRAVETS8A: _tcscpy(g_pAppleWindowTitle, TITLE_PRAVETS_8A ); break; @@ -250,7 +250,7 @@ switch (g_Apple2Type) case A2TYPE_APPLE2: buttonbitmap[BTN_RUN ] =(HBITMAP)LOADBUTTONBITMAP(TEXT("RUN_BUTTON")); break; case A2TYPE_APPLE2PLUS: buttonbitmap[BTN_RUN ] =(HBITMAP)LOADBUTTONBITMAP(TEXT("RUN_BUTTON")); break; case A2TYPE_APPLE2E: buttonbitmap[BTN_RUN ] =(HBITMAP)LOADBUTTONBITMAP(TEXT("RUN_BUTTON")); break; - case A2TYPE_APPLE2EEHANCED: buttonbitmap[BTN_RUN ] =(HBITMAP)LOADBUTTONBITMAP(TEXT("RUN_BUTTON")); break; + case A2TYPE_APPLE2EENHANCED:buttonbitmap[BTN_RUN ] =(HBITMAP)LOADBUTTONBITMAP(TEXT("RUN_BUTTON")); break; case A2TYPE_PRAVETS82: buttonbitmap[BTN_RUN ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("RUNP_BUTTON")); break; case A2TYPE_PRAVETS8M: buttonbitmap[BTN_RUN ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("RUNP_BUTTON")); break; case A2TYPE_PRAVETS8A: buttonbitmap[BTN_RUN ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("RUNP_BUTTON")); break; @@ -622,7 +622,7 @@ static void DrawStatusArea (HDC passdc, int drawflags) case A2TYPE_APPLE2 : case A2TYPE_APPLE2PLUS : case A2TYPE_APPLE2E : - case A2TYPE_APPLE2EEHANCED: + case A2TYPE_APPLE2EENHANCED: default : DrawBitmapRect(dc,x+31,y+17,&rCapsLed,g_hCapsLockBitmap[bCaps != 0]); break; case A2TYPE_PRAVETS82 : case A2TYPE_PRAVETS8M : DrawBitmapRect(dc,x+31,y+17,&rCapsLed,g_hCapsBitmapP8 [bCaps != 0]); break; // TODO: FIXME: Shouldn't one of these use g_hCapsBitmapLat ?? diff --git a/AppleWin/source/Memory.cpp b/AppleWin/source/Memory.cpp index ad06203a..d4d1ecfb 100644 --- a/AppleWin/source/Memory.cpp +++ b/AppleWin/source/Memory.cpp @@ -1058,7 +1058,7 @@ void MemInitialize() case A2TYPE_APPLE2: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2_ROM), "ROM"); ROM_SIZE = Apple2RomSize; break; case A2TYPE_APPLE2PLUS: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2_PLUS_ROM), "ROM"); ROM_SIZE = Apple2RomSize; break; case A2TYPE_APPLE2E: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2E_ROM), "ROM"); ROM_SIZE = Apple2eRomSize; break; - case A2TYPE_APPLE2EEHANCED: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2E_ENHANCED_ROM), "ROM"); ROM_SIZE = Apple2eRomSize; break; + case A2TYPE_APPLE2EENHANCED:hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2E_ENHANCED_ROM), "ROM"); ROM_SIZE = Apple2eRomSize; break; case A2TYPE_PRAVETS82: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_PRAVETS_82_ROM), "ROM"); ROM_SIZE = Apple2RomSize; break; case A2TYPE_PRAVETS8M: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_PRAVETS_8M_ROM), "ROM"); ROM_SIZE = Apple2RomSize; break; case A2TYPE_PRAVETS8A: hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_PRAVETS_8C_ROM), "ROM"); ROM_SIZE = Apple2eRomSize; break; @@ -1072,14 +1072,14 @@ void MemInitialize() case A2TYPE_APPLE2: _tcscpy(sRomFileName, TEXT("APPLE2.ROM")); break; case A2TYPE_APPLE2PLUS: _tcscpy(sRomFileName, TEXT("APPLE2_PLUS.ROM")); break; case A2TYPE_APPLE2E: _tcscpy(sRomFileName, TEXT("APPLE2E.ROM")); break; - case A2TYPE_APPLE2EEHANCED: _tcscpy(sRomFileName, TEXT("APPLE2E_ENHANCED.ROM")); break; + case A2TYPE_APPLE2EENHANCED:_tcscpy(sRomFileName, TEXT("APPLE2E_ENHANCED.ROM")); break; case A2TYPE_PRAVETS82: _tcscpy(sRomFileName, TEXT("PRAVETS82.ROM")); break; case A2TYPE_PRAVETS8M: _tcscpy(sRomFileName, TEXT("PRAVETS8M.ROM")); break; case A2TYPE_PRAVETS8A: _tcscpy(sRomFileName, TEXT("PRAVETS8C.ROM")); break; default: { _tcscpy(sRomFileName, TEXT("Unknown type!")); - REGSAVE(TEXT(REGVALUE_APPLE2_TYPE), A2TYPE_APPLE2EEHANCED); + REGSAVE(TEXT(REGVALUE_APPLE2_TYPE), A2TYPE_APPLE2EENHANCED); } } diff --git a/AppleWin/source/Video.cpp b/AppleWin/source/Video.cpp index 34fe7292..3d606e33 100644 --- a/AppleWin/source/Video.cpp +++ b/AppleWin/source/Video.cpp @@ -59,7 +59,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA LR: Lo-Res HR: Hi-Res DHR: Double Hi-Res */ -#define FLASH_80_COL 1 +#define FLASH_80_COL 1 // Bug #7238 #define HALF_SHIFT_DITHER 0 @@ -2437,11 +2437,12 @@ bool Update40ColCell (int x, int y, int xpixel, int ypixel, int offset) if(bCharChanged || (bCharFlashing && g_bTextFlashFlag)) { bool bInvert = bCharFlashing ? g_bTextFlashState : false; + int nOriginal2EOffset = !IsOriginal2E() || !g_nAltCharSetOffset || (ch<0x40) || (ch>0x5F) ? 0 : -g_nAltCharSetOffset; // No mousetext for original IIe CopySource(xpixel,ypixel, APPLE_FONT_WIDTH, APPLE_FONT_HEIGHT, (IS_APPLE2 ? SRCOFFS_IIPLUS : SRCOFFS_40COL) + ((ch & 0x0F) << 4), - (ch & 0xF0) + g_nAltCharSetOffset + (bInvert ? 0x40 : 0x00)); + (ch & 0xF0) + g_nAltCharSetOffset + nOriginal2EOffset + (bInvert ? 0x40 : 0x00)); return true; } @@ -2452,12 +2453,13 @@ bool Update40ColCell (int x, int y, int xpixel, int ypixel, int offset) inline bool _Update80ColumnCell( BYTE c, const int xPixel, const int yPixel, bool bCharFlashing ) { bool bInvert = bCharFlashing ? g_bTextFlashState : false; + int nOriginal2EOffset = !IsOriginal2E() || !g_nAltCharSetOffset || (c<0x40) || (c>0x5F) ? 0 : -g_nAltCharSetOffset; // No mousetext for original IIe CopySource( xPixel, yPixel, (APPLE_FONT_WIDTH / 2), APPLE_FONT_HEIGHT, SRCOFFS_80COL + ((c & 15)<<3), - ((c >>4) <<4) + g_nAltCharSetOffset + (bInvert ? 0x40 : 0x00)); + ((c >>4) <<4) + g_nAltCharSetOffset + nOriginal2EOffset + (bInvert ? 0x40 : 0x00)); return true; }