void MEMORY::initialize() { // load ipl memset(rdmy, 0xff, sizeof(rdmy)); load_ipl(); // init memory map SET_BANK(0x0000, 0x7fff, ram + 0x0000, rom + 0x0000); SET_BANK(0x8000, 0xffff, ram + 0x8000, ram + 0x8000); vram_ptr = 0; vram_data = memmap = 0; }
void cgibin_ipl(WEBBLK *webblk) { int i; char *value; DEVBLK *dev; U16 ipldev; int iplcpu; U32 doipl; html_header(webblk); hprintf(webblk->sock,"<h1>Perform Initial Program Load</h1>\n"); if(cgi_variable(webblk,"doipl")) doipl = 1; else doipl = 0; if((value = cgi_variable(webblk,"device"))) sscanf(value,"%hx",&ipldev); else ipldev = sysblk.ipldev; if((value = cgi_variable(webblk,"cpu"))) sscanf(value,"%x",&iplcpu); else iplcpu = sysblk.iplcpu; if((value = cgi_variable(webblk,"loadparm"))) set_loadparm(value); /* Validate CPU number */ if(iplcpu >= MAX_CPU) doipl = 0; if(!doipl) { /* Present IPL parameters */ hprintf(webblk->sock,"<form method=post>\n" "<select type=submit name=cpu>\n"); for(i = 0; i < MAX_CPU; i++) if(IS_CPU_ONLINE(i)) hprintf(webblk->sock,"<option value=%4.4X%s>CPU%4.4X</option>\n", i, ((sysblk.regs[i]->cpuad == iplcpu) ? " selected" : ""), i); hprintf(webblk->sock,"</select>\n" "<select type=submit name=device>\n"); for(dev = sysblk.firstdev; dev; dev = dev->nextdev) if(dev->pmcw.flag5 & PMCW5_V) hprintf(webblk->sock,"<option value=%4.4X%s>DEV%4.4X</option>\n", dev->devnum, ((dev->devnum == ipldev) ? " selected" : ""), dev->devnum); hprintf(webblk->sock,"</select>\n"); hprintf(webblk->sock,"Loadparm:<input type=text name=loadparm size=8 value=\"%s\">\n", str_loadparm()); hprintf(webblk->sock,"<input type=submit name=doipl value=\"IPL\">\n" "</form>\n"); } else { OBTAIN_INTLOCK(NULL); /* Perform IPL function */ if( load_ipl(0, ipldev, iplcpu,0) ) { hprintf(webblk->sock,"<h3>IPL failed, see the " "<a href=\"syslog#bottom\">system log</a> " "for details</h3>\n"); } else { hprintf(webblk->sock,"<h3>IPL completed</h3>\n"); } RELEASE_INTLOCK(NULL); } html_footer(webblk); }