// Called by: // . LoadConfiguration() - Done at each restart // . DiskDlg_OK() - When HD is enabled/disabled on UI void HD_SetEnabled(const bool bEnabled) { if(g_bHD_Enabled == false && bEnabled == false) return; if(g_bHD_Enabled == true && bEnabled == true) return; if(g_bHD_Enabled == true && bEnabled == false) { g_bHD_Enabled = false; return; } if(g_bHD_Enabled == false && bEnabled == true) { g_bHD_Enabled = bEnabled; SLOT7_SetType(SL7_HDD); // FIXME: For LoadConfiguration(), g_uSlot=7 (see definition at start of file) // . g_uSlot is only really setup by HD_Load_Rom(), later on RegisterIoHandler(g_uSlot, HD_IO_EMUL, HD_IO_EMUL, NULL, NULL, NULL, NULL); LPBYTE pCxRomPeripheral = MemGetCxRomPeripheral(); if(pCxRomPeripheral == NULL) // This will be NULL when called after loading value from Registry return; // if(g_bHD_Enabled) HD_Load_Rom(pCxRomPeripheral, g_uSlot); else memset(pCxRomPeripheral + g_uSlot*256, 0, HD_SLOT_FW_SIZE); } }
VOID PrintLoadRom(LPBYTE pCxRomPeripheral, const UINT uSlot) { // HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_PRINTDRVR_FW), "FIRMWARE"); // if(hResInfo == NULL) // return; // // DWORD dwResSize = SizeofResource(NULL, hResInfo); // if(dwResSize != PRINTDRVR_SIZE) // return; // // HGLOBAL hResData = LoadResource(NULL, hResInfo); // if(hResData == NULL) // return; // #define IDR_PRINTDRVR_FW "Parallel.rom" // char BUFFER[PRINTDRVR_SIZE]; // FILE * hdfile = NULL; // hdfile = fopen(IDR_PRINTDRVR_FW, "rb"); // if(hdfile == NULL) return; // no file? // UINT nbytes = fread(BUFFER, 1, PRINTDRVR_SIZE, hdfile); // fclose(hdfile); // if(nbytes != PRINTDRVR_SIZE) return; // have not read enough? // BYTE* pData = (BYTE*) Parallel_bin; // NB. Don't need to unlock resource // if(pData == NULL) // return; memcpy(pCxRomPeripheral + uSlot*256, pData, PRINTDRVR_SIZE); // RegisterIoHandler(uSlot, PrintStatus, PrintTransmit, NULL, NULL, NULL, NULL); }
void CMouseInterface::Initialize(LPBYTE pCxRomPeripheral, UINT uSlot) { const UINT FW_SIZE = 2*1024; // HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_MOUSEINTERFACE_FW), "FIRMWARE"); // if(hResInfo == NULL) // return; // // DWORD dwResSize = SizeofResource(NULL, hResInfo); // if(dwResSize != FW_SIZE) // return; // // HGLOBAL hResData = LoadResource(NULL, hResInfo); // if(hResData == NULL) // return; // instead of reading wndzooozes resources, just read it from a mere file on a disk!? bb // #define IDR_MOUSEINTERFACE_FW "MouseInterface.rom" // char BUFFER[FW_SIZE]; // FILE * hdfile = NULL; // hdfile = fopen(IDR_MOUSEINTERFACE_FW, "rb"); // if(hdfile == NULL) return; // no file? // UINT nbytes = fread(BUFFER, 1, FW_SIZE, hdfile); // fclose(hdfile); // if(nbytes != FW_SIZE) return; // have not read enough? // BYTE* pData = (BYTE*) MouseInterface_rom; // NB. Don't need to unlock resource m_uSlot = uSlot; if (m_pSlotRom == NULL) { m_pSlotRom = new BYTE [FW_SIZE]; if (m_pSlotRom) memcpy(m_pSlotRom, pData, FW_SIZE); } // SetSlotRom(); RegisterIoHandler(uSlot, &CMouseInterface::IORead, &CMouseInterface::IOWrite, NULL, NULL, this, NULL); m_bActive = true; printf("MouseInterface Rom loaded and registered\n"); }
void HD_SetEnabled(bool bEnabled) { if(g_bHD_Enabled == bEnabled) return; g_bHD_Enabled = bEnabled; LPBYTE pCxRomPeripheral = MemGetCxRomPeripheral(); if(pCxRomPeripheral == NULL) // This will be NULL when called after loading value from Registry return; if(g_bHD_Enabled) HD_Load_Rom(pCxRomPeripheral, g_uSlot); else memset(pCxRomPeripheral + g_uSlot*256, 0, HDDRVR_SIZE); RegisterIoHandler(g_uSlot, HD_IO_EMUL, HD_IO_EMUL, NULL, NULL, NULL, NULL); }
void CMouseInterface::Initialize(LPBYTE pCxRomPeripheral, UINT uSlot) { const UINT FW_SIZE = 2*1024; HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_MOUSEINTERFACE_FW), "FIRMWARE"); if(hResInfo == NULL) return; DWORD dwResSize = SizeofResource(NULL, hResInfo); if(dwResSize != FW_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; m_uSlot = uSlot; if (m_pSlotRom == NULL) { m_pSlotRom = new BYTE [FW_SIZE]; if (m_pSlotRom) memcpy(m_pSlotRom, pData, FW_SIZE); } // m_bActive = true; SetEnabled(true); SetSlotRom(); // Pre: m_bActive == true RegisterIoHandler(uSlot, &CMouseInterface::IORead, &CMouseInterface::IOWrite, NULL, NULL, this, NULL); }
VOID PrintLoadRom(LPBYTE pCxRomPeripheral, const UINT uSlot) { HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_PRINTDRVR_FW), "FIRMWARE"); if(hResInfo == NULL) return; DWORD dwResSize = SizeofResource(NULL, hResInfo); if(dwResSize != PRINTDRVR_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(pCxRomPeripheral + uSlot*256, pData, PRINTDRVR_SIZE); // RegisterIoHandler(uSlot, PrintStatus, PrintTransmit, NULL, NULL, NULL, NULL); }
VOID HD_Load_Rom(const LPBYTE pCxRomPeripheral, const UINT uSlot) { if(!g_bHD_Enabled) return; // Attempt to read the AppleHDD FIRMWARE ROM into memory TCHAR sRomFileName[ 128 ]; _tcscpy( sRomFileName, TEXT("AppleHDD_EX.ROM") ); TCHAR filename[MAX_PATH]; _tcscpy(filename,g_sProgramDir); _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 = FindResource(NULL, MAKEINTRESOURCE(IDR_HDDRVR_FW), "FIRMWARE"); if(hResInfo == NULL) return; DWORD dwResSize = SizeofResource(NULL, hResInfo); if(dwResSize != HD_FW_FILE_SIZE) return; HGLOBAL hResData = LoadResource(NULL, hResInfo); if(hResData == NULL) return; g_pRomData = (BYTE*) LockResource(hResData); // NB. Don't need to unlock resource if(g_pRomData == NULL) return; } else { filerom = (LPBYTE)VirtualAlloc(NULL,0x8000 ,MEM_COMMIT,PAGE_READWRITE); DWORD bytesread; ReadFile(file,filerom,0x8000,&bytesread,NULL); CloseHandle(file); g_pRomData = (BYTE*) filerom; } g_uSlot = uSlot; memcpy(pCxRomPeripheral + (uSlot*256), g_pRomData + HD_SLOT_FW_OFFSET, HD_SLOT_FW_SIZE); g_bHD_RomLoaded = true; // Expansion ROM if (m_pHDExpansionRom == NULL) { m_pHDExpansionRom = new BYTE [HD_FW_SIZE]; if (m_pHDExpansionRom) memcpy(m_pHDExpansionRom, (g_pRomData+rombankoffset), HD_FW_SIZE); } RegisterIoHandler(g_uSlot, HD_IO_EMUL, HD_IO_EMUL, NULL, NULL, NULL, m_pHDExpansionRom); }