diff --git a/AppleWin/Applewin.vcproj b/AppleWin/Applewin.vcproj index 1d911f10..c0de75da 100644 --- a/AppleWin/Applewin.vcproj +++ b/AppleWin/Applewin.vcproj @@ -331,6 +331,12 @@ + + + + diff --git a/AppleWin/ApplewinExpress.vcproj b/AppleWin/ApplewinExpress.vcproj index 2b777baf..70cd36be 100644 --- a/AppleWin/ApplewinExpress.vcproj +++ b/AppleWin/ApplewinExpress.vcproj @@ -456,6 +456,14 @@ Name="Resources" Filter=".txt,.ico,.bmp,.rc" > + + + + diff --git a/AppleWin/resource/Applewin.rc b/AppleWin/resource/Applewin.rc index 1f194b22..5231ab83 100644 --- a/AppleWin/resource/Applewin.rc +++ b/AppleWin/resource/Applewin.rc @@ -263,11 +263,18 @@ END ///////////////////////////////////////////////////////////////////////////// // -// Data +// FIRMWARE // -IDR_HDDRVR RCDATA "Hddrvr.bin" +IDR_HDDRVR FIRMWARE "Hddrvr.bin" +///////////////////////////////////////////////////////////////////////////// +// +// ROM +// + +IDR_APPLE2_ROM ROM "Apple2.rom" +IDR_APPLE2E_ROM ROM "Apple2e.rom" ///////////////////////////////////////////////////////////////////////////// // diff --git a/AppleWin/resource/resource.h b/AppleWin/resource/resource.h index 39e1d5fe..7b2cc29d 100644 --- a/AppleWin/resource/resource.h +++ b/AppleWin/resource/resource.h @@ -28,6 +28,8 @@ #define IDC_2_0_MHz 123 #define IDC_MAX_MHz 124 #define IDR_MENU 125 +#define IDR_APPLE2_ROM 126 +#define IDR_APPLE2E_ROM 127 #define IDC_MB_ENABLE 130 #define IDC_KEYB_BUFFER_ENABLE 1005 #define IDC_SAVESTATE 1006 @@ -66,6 +68,6 @@ #define _APS_NEXT_RESOURCE_VALUE 131 #define _APS_NEXT_COMMAND_VALUE 40007 #define _APS_NEXT_CONTROL_VALUE 1031 -#define _APS_NEXT_SYMED_VALUE 101 +#define _APS_NEXT_SYMED_VALUE 105 #endif #endif diff --git a/AppleWin/source/Harddisk.cpp b/AppleWin/source/Harddisk.cpp index 2b96347c..218a7167 100644 --- a/AppleWin/source/Harddisk.cpp +++ b/AppleWin/source/Harddisk.cpp @@ -248,7 +248,7 @@ VOID HD_Load_Rom(LPBYTE lpMemRom) if(!g_bHD_Enabled) return; - HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_HDDRVR), RT_RCDATA); + HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_HDDRVR), "FIRMWARE"); if(hResInfo == NULL) return; diff --git a/AppleWin/source/Memory.cpp b/AppleWin/source/Memory.cpp index 066874a2..3cc9aee8 100644 --- a/AppleWin/source/Memory.cpp +++ b/AppleWin/source/Memory.cpp @@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "StdAfx.h" #pragma hdrstop +#include "..\resource\resource.h" #define MF_80STORE 0x00000001 #define MF_ALTZP 0x00000002 @@ -894,21 +895,15 @@ void MemInitialize () { #endif // READ THE APPLE FIRMWARE ROMS INTO THE ROM IMAGE - TCHAR sRomFileName[ 128 ]; - _tcscpy( sRomFileName, apple2e ? TEXT("APPLE2E.ROM") : TEXT("APPLE2.ROM") ); + const UINT ROM_SIZE = 0x5000; // HACK: Magic # - TCHAR filename[MAX_PATH]; - _tcscpy(filename,progdir); - _tcscat(filename,sRomFileName ); - HANDLE file = CreateFile(filename, - GENERIC_READ, - FILE_SHARE_READ, - (LPSECURITY_ATTRIBUTES)NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, - NULL); - if (file == INVALID_HANDLE_VALUE) + HRSRC hResInfo = apple2e ? FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2E_ROM), "ROM") + : FindResource(NULL, MAKEINTRESOURCE(IDR_APPLE2_ROM), "ROM"); + if(hResInfo == NULL) { + TCHAR sRomFileName[ 128 ]; + _tcscpy( sRomFileName, apple2e ? TEXT("APPLE2E.ROM") : TEXT("APPLE2.ROM") ); + TCHAR sText[ 256 ]; wsprintf( sText, TEXT("Unable to open the required firmware ROM data file.\n\nFile: %s."), sRomFileName ); @@ -919,9 +914,19 @@ void MemInitialize () { ExitProcess(1); } - DWORD bytesread; - ReadFile(file,memrom,0x5000,&bytesread,NULL); // HACK: Magic # - CloseHandle(file); + DWORD dwResSize = SizeofResource(NULL, hResInfo); + if(dwResSize != ROM_SIZE) + return; + + HGLOBAL hResData = LoadResource(NULL, hResInfo); + if(hResData == NULL) + return; + + BYTE* pData = (BYTE*) LockResource(hResData); // NB. Don't need to unlock resource + if(pData == NULL) + return; + + memcpy(memrom, pData, ROM_SIZE); // TODO/FIXME: HACK! REMOVE A WAIT ROUTINE FROM THE DISK CONTROLLER'S FIRMWARE {