Bitácora CH MAQUINA 10

Manejadores de eventos
function nuevoOver(){
ponerAnuncio(‘Empezar a editar un nuevo programa’);
}
function editarOver(){
ponerAnuncio(‘Activar edicion del codigo’);
}
function compilarOver(){
(miCH.miprograma.compilado==1)? ponerAnuncio(‘El programa ya esta compilado’): ponerAnuncio(‘Click para compilar el programa’);
}
function cargarOver(){
(miCH.miprograma.compilado==1)? ponerAnuncio(‘Cargar el programa En memoria’):ponerAnuncio(‘Compilar el programa y cargarlo en memoria’);
}
function ponerAnuncio(/*String*/msg){
document.getElementById(‘anuncios’).innerHTML=msg || ‘hi’;
}
function quitarAnuncio(){
document.getElementById(‘anuncios’).innerHTML=» »;
}
function texactive(){
if(document.form1.codigoPrograma.readOnly==true){
ponerAnuncio(‘Pare editar el programa haga click en editar’);
}
}
function editarClick(){
document.form1.editar.disabled=true;
document.form1.nombrePrograma.readOnly=false;
document.form1.codigoPrograma.readOnly=false;
document.form1.cargar.value=»Compilar y Cargar»;
document.getElementById(‘resultados’).innerHTML=»»;
miCH.actualizarPrograma(document.form1.nombrePrograma.value,document.form1.codigoPrograma.value);

}
function nuevoClick(){
document.form1.codigoPrograma.value=»»;
document.form1.nombrePrograma.value=»nuevo»+miCH.pid;
editarClick();
}
function compilarClick(){
if(miCH.miprograma.compilado==1){
alert(‘El programa ya esta compilado’)
}else{
var codigo=document.form1.codigoPrograma.value;
var nombre=document.form1.nombrePrograma.value
if(nombre ==»»)
nombre=»nuevo»+miCH.pid;
miCH.miprograma=new Programa(miCH.pid,nombre,codigo);
if(miCH.miCpu.compilar(miCH.miprograma)){
document.form1.editar.disabled=false;
document.form1.nombrePrograma.readOnly=true;
document.form1.codigoPrograma.readOnly=true;
document.form1.cargar.value=»Cargar»;
alert(miCH.miprograma.msgError);
}else{
alert(‘El codigo contiene Errores’);
}
document.form1.codigoPrograma.value=miCH.miprograma.codigoCh.join(«\n»);
document.getElementById(‘resultados’).innerHTML=miCH.miprograma.msgError;
}
}
function cargarClick(){
if(miCH.miprograma.compilado==0){
compilarClick();
}
if(miCH.miprograma.compilado==1){
if(miCH.memoria.cargarPrograma(miCH.miprograma)){
miCH.pid++;
document.getElementById(‘programas’).innerHTML=miCH.memoria.mostrarProgramas();
document.getElementById(‘contmemoria’).innerHTML=miCH.memoria.escribir(miCH.miCpu.contPrograma);
document.getElementById(‘etiquetas’).innerHTML=miCH.memoria.mostrarEtiquetas();
alert(‘El programa ha sido cargado en memoria’);
nuevoClick();
}
}
}
//document.getElementById(‘elementos’).disable=true
function botonesOnOff(act){
document.getElementById(‘cammodo’).disabled=(act ==0)?true:false;
document.getElementById(‘opcejecucion’).qejecutar.disabled=(act ==.0)?true:false;
document.getElementById(‘opcejecucion’).listaProgramas.disabled=(act ==0)?true:false;
document.getElementById(‘opcejecucion’).modoejec.disabled=(act ==0)?true:false;
}
function ejecutarClick(){
var indPrograma;
botonesOnOff(0);
if(document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex != 0){
if(document.getElementById(‘opcejecucion’).qejecutar.value==1){
ejecucionUnPrograma()

}else{
do{
ejecucionUnPrograma();
if(miCH.memoria.enEjecucion==-2){
break;
}else if(miCH.memoria.enEjecucion==-1){
if(document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex < miCH.memoria.programas.length){
indPrograma=document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex;
miCH.memoria.enEjecucion=indPrograma;
miCH.miCpu.contPrograma=miCH.memoria.programas[indPrograma].regBaseCodigo;
document.getElementById(‘resejec’).innerHTML+=’Inicio de ejecucion programa:’+miCH.memoria.programas[indPrograma].nombre+’…<br/>’;
document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex++;
}else{
document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex=1;
listaChange();
break;
}
}
}while( document.getElementById(‘opcejecucion’).modoejec.value==0);
if( document.getElementById(‘opcejecucion’).modoejec.value==0)
document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex=1;
}
}else
alert(‘No hay programas cargados en memoria!’);
if(miCH.memoria.enEjecucion==-2){
miCH.memoria.enEjecucion=-1 ;
}
if(miCH.memoria.enEjecucion==-1){
botonesOnOff(1);
}
}
/*if(document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex < miCH.memoria.programas.length) */
function ejecucionUnPrograma(){
if(miCH.memoria.enEjecucion==-1){
var indPrograma=document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex-1;
miCH.memoria.enEjecucion=indPrograma;
miCH.miCpu.contPrograma=miCH.memoria.programas[indPrograma].regBaseCodigo;
document.getElementById(‘resejec’).innerHTML+=’Inicio de ejecucion programa:’+miCH.memoria.programas[indPrograma].nombre+’…<br/>’;
}
miCH.miCpu.ejecutarPrograma(document.getElementById(‘opcejecucion’).modoejec.value)
}
function elementosChange(){
var ind=document.getElementById(‘opcejecucion’).qejecutar.selectedIndex
document.getElementById(‘opcejecucion’).listaProgramas.style.display=(ind==1)?’inline’:’none’;
var indE=document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex;
document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex=(indE > 1)? 1:indE;
listaChange(9);

}
function listaChange(){
miCH.miCpu.contPrograma=miCH.memoria.programas[document.getElementById(‘opcejecucion’).listaProgramas.selectedIndex-1].regBaseCodigo;
document.getElementById(‘contmemoria’).innerHTML=miCH.miCpu.memoria.escribir(miCH.miCpu.contPrograma);
document.getElementById(‘sigteinstruccion’).innerHTML=’SIGUIENTE INSTRUCCION:’+miCH.miCpu.memoria.datos[miCH.miCpu.contPrograma]+’, Pos:’+miCH.miCpu.contPrograma;
}

/********************Clases***************/
//Clase Enum
function Enum(/*…*/){
this.self = new Array();
for(var i=0; i<arguments.length; i++){
this.add(arguments[i]);
}
}
Enum.prototype.get=function( /*string*/ name) {
name=name.replace(/\s+$/,»)
return this.self[name] || null;
};
Enum.prototype.add=function ( /*string*/ name, /*Int*/ eunm ) {
eunm = eunm || null;
if( eunm!=null)
this.self[name] = eunm;
else{
this.self[name] = ++this.self.length;
}
};
Enum.prototype.escribir=function(){
var tablavar=»<table border=1><tr><td>Nombre</td><td>Posicion</td></tr>»;
for(var i in this.self)
tablavar+=»<tr><td>»+this.self[i]+»</td><td>»+i+»</td></tr>»;
tablavar+=»</table>»;
return tablavar;
};
Enum.prototype.tam=function(){
var cont=0;
for(var i in this.self)
cont++
return cont;
};
//Fin clase Enum

Deja un comentario