コード例 #1
0
// 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);
	}
}
コード例 #2
0
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);
}
コード例 #3
0
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");
}
コード例 #4
0
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);
}
コード例 #5
0
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);
}
コード例 #6
0
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);
}
コード例 #7
0
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);


}