Exemplo n.º 1
0
Arquivo: rom.c Projeto: rchyla/9tcfg
/* copy rom over itself */
void
shadowrom_enable(void)
{
	
	UBYTE r1, r2;

	r1 = cfgreg_read(CFG_R1_OFFSET);
	r2 = cfgreg_read(CFG_R2_OFFSET);

	if (r2 & CFG_R2_68KMODE_STATUS) {
		printf("Cannot use SHADOWROM if running on 68000! Please reenable 68020 and reboot first.\n");
		return;
	}

	if ( (r1 & CFG_R1_MAPROM) || (r2 & CFG_R2_MAPROM_STATUS)) {
		printf("Cannot enable Shadow ROM if MAPROM enabled or currently active!\n");
		return;
	}

/*	cfgreg_set(CFG_R0_OFFSET, CFG_R0_WRITELOCKOFF);  */

	memcpy((void*) 0xE00000, (void*) 0xE00000, 512*1024);	
	memcpy((void*) 0xF80000, (void*) 0xF80000, 512*1024);	

/*	cfgreg_unset(CFG_R0_OFFSET, CFG_R0_WRITELOCKOFF);  */
	cfgreg_set(CFG_R1_OFFSET, CFG_R1_SHADOWROM); 
}
Exemplo n.º 2
0
/* read and display configuration registers */
void
status_display(void) 
{
	UBYTE r0, r1, r2;

	r0 = cfgreg_read(CFG_R0_OFFSET);
	r1 = cfgreg_read(CFG_R1_OFFSET);
	r2 = cfgreg_read(CFG_R2_OFFSET);

	printf("\tNinetails revision:\t\t\t%d\n", hwrev);
	printf(" ================== CPU / Memory options ================== \n");

	printf("\tEnable MC68000 mode (reset):\t\t");
	status_print_reg(r0, CFG_R0_68KMODE);

	printf("\tMC68000 mode status:\t\t\t");
	status_print_reg(r2, CFG_R2_68KMODE_STATUS);

	printf("\tPCMCIA friendly - 4MB Fast RAM (reset):\t");
	status_print_reg(r0, CFG_R0_PCMCIA);

	printf("\tMC68EC020 instruction cache:\t\t");
	status_print_reg_inv(r1, CFG_R1_INSTCACHEOFF);
	
	printf(" ======================= ROM options ====================== \n");

	printf("\tMAPROM at next reset:\t\t\t");
	status_print_reg(r1, CFG_R1_MAPROM);

	printf("\tMAPROM status:\t\t\t\t");
	status_print_reg(r2, CFG_R2_MAPROM_STATUS);

	printf("\tShadow ROM:\t\t\t\t");
	status_print_reg(r1, CFG_R1_SHADOWROM);
}
Exemplo n.º 3
0
Arquivo: rom.c Projeto: rchyla/9tcfg
void
maprom_enable(BYTE *path)
{
	BYTE *rombuf;
	ULONG romsize;
	UBYTE r1, r2;

	r1 = cfgreg_read(CFG_R1_OFFSET);
	r2 = cfgreg_read(CFG_R2_OFFSET);

	/* do some sanity checks first */	
	if (r1 & CFG_R1_SHADOWROM) {
		printf("Cannot use MAPROM if Shadow ROM enabled. Please disable Shadow ROM and reboot first!\n");
		return;
	}

	if (r2 & CFG_R2_MAPROM_STATUS) {
		printf("Cannot load new ROM if MAPROM currently active. Please disable MAPROM and reboot first!\n");
		return;
	}

	if (r2 & CFG_R2_68KMODE_STATUS) {
		printf("Cannot use MAPROM if running on 68000! Please reenable 68020 and reboot first.\n");
		return;
	}

#ifdef DEBUG
	printf("DEBUG: will load ROM from %s\n", path);
#endif /* DEBUG */

	romsize = file_size(path);

#ifdef DEBUG
	printf("DEBUG: m'kay so apparanetly loaded ROM has size: %lx\n", romsize);
#endif /* DEBUG */

	rombuf = (char*) malloc(romsize);

#ifdef DEBUG
	printf("DEBUG: allocated %x bytes at address %p, ready to load data\n", (unsigned int) romsize, (void*) rombuf);
#endif /* DEBUG */

	file_load(path, rombuf, romsize);

	rom_copy_self(rombuf, romsize);
	/*rom_copy_bank(rombuf, romsize);*/

	cfgreg_set(CFG_R1_OFFSET, CFG_R1_MAPROM); 

	free(rombuf);
	printf("Your Amiga should be restarted now...\n");
}