public void generaCodigoMaquina(baseNumerica contlocFile,CODOP codop,String contLocLabel) { baseNumerica contEtiqueta = new baseNumerica(contLocLabel); baseNumerica contLocNext = new baseNumerica(System.Convert.ToString(contlocFile.getNumberDecimal() + codop.getBytesTotales())); baseNumerica contLocNew = new baseNumerica("0"); fueraRango = false; int valor = contEtiqueta.getNumberDecimal() - contLocNext.getNumberDecimal(); if (valor < 0) { char[] caracteres = { '-' }; String tmp = System.Convert.ToString(valor); tmp = tmp.TrimStart(caracteres); contLocNew = new baseNumerica(tmp,1); tmp = contLocNew.getNumberHexadecimal(); xb = ""; for (int i = (tmp.Length) - (2*codop.getBytesPorCalcular()); i<tmp.Length;i++ ) { xb += tmp[i]; } } else { contLocNew = new baseNumerica(System.Convert.ToString(contEtiqueta.getNumberDecimal() - contLocNext.getNumberDecimal())); xb = contLocNew.getNumberHexadecimal(); xb = xb.PadLeft(2 * codop.getBytesPorCalcular(), '0'); } if(codop.getBytesPorCalcular() == 1) { if (!(contLocNew.getNumberDecimal() >= -128 && contLocNew.getNumberDecimal() <= 127)) { fueraRango = true; } } else { if (!(contLocNew.getNumberDecimal() >= -32768 && contLocNew.getNumberDecimal() <= 32767)) { fueraRango = true; } } }
public DIRECTIVA(String directive,OPERANDO operando,LABEL label) { baseNumerica base1 = new baseNumerica(operando.getOperando()); //base1.convert2Dec(); codigoMaquina = ""; valida = true; size = 0; valueHex = ""; if (!base1.getValido() && directive != "FCC" && directive != "END") { imprimirMensaje = "[Error]El operando contiene valores que no son validos en su base"; valida = false; } if (operando.getOperando() == "NULL" && directive != "END") { imprimirMensaje = "[Error]La Directiva necesita operando"; valida = false; } switch (directive) { case "ORG": existe = true; if (!(base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 65535)) { imprimirMensaje = "[Error]Valor invalido para " + directive + " los valores van de 0-65535"; valida = false; } break; case "END": existe = true; if(operando.getOperando()!="NULL") { imprimirMensaje = "[Error]END no debe llevar operando"; valida = false; } break; case "DB": case "DC.B": case "FCB": existe = true; if (base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 255) { size = 1; try { codigoMaquina = base1.getNumberHexadecimal().PadLeft(2, '0'); } catch(Exception ex) { imprimirMensaje = "[Error] Valores invalidos para la base"; valida = false; } } else { imprimirMensaje = "[Error]Valor invalido para " + directive + " los valores van de 0-255"; valida = false; } break; case "DW": case "DC.W": case "FDB": existe = true; if (base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 65535) { size = 2; try { codigoMaquina = base1.getNumberHexadecimal().PadLeft(4, '0'); } catch(Exception ex) { imprimirMensaje = "[Error] Valores invalidos para la base"; valida = false; } } else { imprimirMensaje = "[Error]Valor invalido para " + directive + " los valores van de 0-65535"; valida = false; } break; case "FCC": existe = true; if ((@operando.getOperando()[0] == '"' && @operando.getOperando()[operando.getOperando().Length - 1] == '"') && operando.getOperando().Length >= 2) { size = operando.getOperando().Length - 2; baseNumerica b2 = new baseNumerica("0"); for (int i = 1; i<operando.getOriginal().Length-1;i++ ) { int tmpIntFCC = 0; tmpIntFCC = System.Convert.ToInt16(operando.getOriginal()[i]); b2 = new baseNumerica(System.Convert.ToString(tmpIntFCC)); codigoMaquina += b2.getNumberHexadecimal(); } } else { imprimirMensaje = "[Error]El operando no tiene ambas comillas"; valida = false; } break; case "DS": case "DS.B": case "RMB": existe = true; if (base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 65535) { size = 1 * base1.getNumberDecimal(); } else { imprimirMensaje = "[Error]Valor invalido para " + directive + " los valores van de 0-65535"; valida = false; } break; case "DS.W": case "RMW": existe = true; if (base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 65535) { size = 2 * base1.getNumberDecimal(); } else { imprimirMensaje = "[Error]Valor invalido para " + directive + " los valores van de 0-65535"; valida = false; } break; case "EQU": existe = true; if(label.getLabel() == "NULL") { imprimirMensaje = "[Error]EQU debe tener etiqueta"; valida = false; } else if (!(base1.getNumberDecimal() >= 0 && base1.getNumberDecimal() <= 65535)) { imprimirMensaje += "[Error]Valor invalido para " + directive + " los valores van de 0-65535"; valida = false; } else { baseNumerica b1 = new baseNumerica(operando.getOperando()); valueHex = b1.getNumberHexadecimal(); } break; default: existe = valida = false; break; }//End switch }
public void generaXB(CODOP codop) { String xb1="", xb2="",s1="",s2=""; tam = operando.Length; int i; for (i = 0; i < tam && operando[i]!=',';i++ ) { s1 += operando[i]; } for (i+=1; i < tam; i++) { s2 += operando[i]; } xb1 = "%"; xb2 = "%"; Boolean band = false; baseNumerica b1 = new baseNumerica("0"); switch(codop.getModoDireccionamiento()) { case "IDX": baseNumerica b2 = new baseNumerica("0") ,b3 = new baseNumerica("0"); if(s2[0]=='+' || s2[0] == '-' || s2[s2.Length-1] == '+' || s2[s2.Length-1] == '-') { xb += ""; String tmpReg = ""; for (int j = 0; j<s2.Length;j++ ) { if(s2[j] != '+' && s2[j] != '-') { tmpReg += s2[j]; } } switch(tmpReg) { case "X": xb1 += "001"; break; case "Y": xb1 += "011"; break; case "SP": xb1 += "101"; break; case "PC": xb1 += "111"; break; } Boolean flagSigno = false; if(s2[0]=='+') { xb1 += "0"; } else if(s2[0]=='-') { xb1 += "0"; flagSigno = true; } else if(s2[s2.Length-1] == '+') { xb1 += "1"; } else if(s2[s2.Length-1]=='-') { xb1 += "1"; flagSigno = true; } if (flagSigno) { switch(s1) { case "1": xb2 += "1111"; break; case "2": xb2 += "1110"; break; case "3": xb2 += "1101"; break; case "4": xb2 += "1100"; break; case "5": xb2 += "1011"; break; case "6": xb2 += "1010"; break; case "7": xb2 += "1001"; break; case "8": xb2 += "1000"; break; }//Termina switch }//Termina parte cuando es negativo else { switch (s1) { case "1": xb2 += "0000"; break; case "2": xb2 += "0001"; break; case "3": xb2 += "0010"; break; case "4": xb2 += "0011"; break; case "5": xb2 += "0100"; break; case "6": xb2 += "0101"; break; case "7": xb2 += "0110"; break; case "8": xb2 += "0111"; break; } }//Termina cuando es positivo b2 = new baseNumerica(xb1); b3 = new baseNumerica(xb2); }//Termina Indizado pre/post else if(s1[0]=='A' || s1[0]=='B' || s1[0]=='D') { xb1 += "111"; switch(s2) { case "X": xb1 += "0"; xb2 += "01"; break; case "Y": xb1 += "0"; xb2 += "11"; break; case "SP": xb1 += "1"; xb2 += "01"; break; case "PC": xb1 += "1"; xb2 += "11"; break; } switch(s1) { case "A": xb2 += "00"; break; case "B": xb2 += "01"; break; case "D": xb2 += "10"; break; } b2 = new baseNumerica(xb1); b3 = new baseNumerica(xb2); } else//Indizado 5 Bits { switch(s2) { case "X": xb1 += "00"; break; case "Y": xb1 += "01"; break; case "SP": xb1 += "10"; break; case "PC": xb1 += "11"; break; } xb1 = xb1 + "0"; band = false; b1 = new baseNumerica("0"); if(s1=="") { s1 = "0"; } if(s1[0]=='-') { char[] caracteres = {'-'}; s1 = s1.TrimStart(caracteres); b1 = new baseNumerica(s1,1); band = true; } else { b1 = new baseNumerica(s1); } String tmp=""; if(band) { String tmp2 = b1.getNumberBinary(); int tamTMP = tmp2.Length; //for (int j = tamTMP - 1; j >= tamTMP - 4; j--) for (int j = tamTMP - 4; j < tamTMP; j++) { tmp += tmp2[j]; } xb1 += tmp2[tamTMP - 5]; for (int j = 0; j < tmp.Length; j++) { xb2 += tmp[j]; } } else { tmp = b1.getNumberBinary().PadLeft(5, '0'); xb1 += tmp[0]; for (int j = 1; j < tmp.Length; j++) { xb2 += tmp[j]; } } b2 = new baseNumerica(xb1); b3 = new baseNumerica(xb2); }//Termina Indizado 5 bits xb = b2.getNumberHexadecimal() + b3.getNumberHexadecimal(); break;//Termina IDX case "IDX1": band = false; if (s1[0] == '-') { char[] caracteres = { '-' }; s1 = s1.TrimStart(caracteres); b1 = new baseNumerica(s1, 1); band = true; } else { b1 = new baseNumerica(s1); } xb1 += "111"; switch(s2) { case "X": xb1 += "0"; xb2 += "000"; break; case "Y": xb1 += "0"; xb2 += "100"; break; case "SP": xb1 += "1"; xb2 += "000"; break; case "PC": xb1 += "1"; xb2 += "100"; break; } String xb3 = ""; if (band) { xb2 += "1"; int sizeTMP = b1.getNumberHexadecimal().Length; for (int j = sizeTMP - 2 ; j < sizeTMP;j++ ) { xb3 += b1.getNumberHexadecimal()[j]; } } else { xb2 += "0"; xb3 = b1.getNumberHexadecimal().PadLeft(2, '0'); } b2 = new baseNumerica(xb1); b3 = new baseNumerica(xb2); xb = b2.getNumberHexadecimal() + b3.getNumberHexadecimal() + xb3; break; case "IDX2": band = false; if (s1[0] == '-') { char[] caracteres = { '-' }; s1 = s1.TrimStart(caracteres); b1 = new baseNumerica(s1, 1); band = true; } else { b1 = new baseNumerica(s1); } xb1 += "111"; switch(s2) { case "X": xb1 += "0"; xb2 += "001"; break; case "Y": xb1 += "0"; xb2 += "101"; break; case "SP": xb1 += "1"; xb2 += "001"; break; case "PC": xb1 += "1"; xb2 += "101"; break; } xb3 = ""; if (band) { xb2 += "1"; int sizeTMP = b1.getNumberHexadecimal().Length; for (int j = sizeTMP - 4 ; j < sizeTMP;j++ ) { xb3 += b1.getNumberHexadecimal()[j]; } } else { xb2 += "0"; xb3 = b1.getNumberHexadecimal().PadLeft(4, '0'); } b2 = new baseNumerica(xb1); b3 = new baseNumerica(xb2); xb = b2.getNumberHexadecimal() + b3.getNumberHexadecimal() + xb3; break; } }
public void calculaCRC() { baseNumerica b1 = new baseNumerica("0000"); b1 = new baseNumerica("$"+_longitud); for (int i = 0; i<4;i+=2 ) { String tmp = System.Convert.ToString(_direccion[i]) + System.Convert.ToString(_direccion[i+1]); baseNumerica tmpNum = new baseNumerica("$"+tmp); b1 = new baseNumerica(System.Convert.ToString(b1.getNumberDecimal()+tmpNum.getNumberDecimal())); } for (int i = 0; i < _codMaquina.Length; i += 2) { String tmp = System.Convert.ToString(_codMaquina[i]) + System.Convert.ToString(_codMaquina[i + 1]); baseNumerica b2 = new baseNumerica("$"+tmp); b1 = new baseNumerica(System.Convert.ToString(b1.getNumberDecimal() + b2.getNumberDecimal())); } baseNumerica max = new baseNumerica("$FFFF"); b1 = new baseNumerica(System.Convert.ToString(max.getNumberDecimal()-b1.getNumberDecimal())); for (int i = b1.getNumberHexadecimal().Length - 1; i > b1.getNumberHexadecimal().Length - 3; i--) { _crc = b1.getNumberHexadecimal()[i] + _crc; } }
public void calculaLongitud() { baseNumerica b1 = new baseNumerica(System.Convert.ToString(3 + (_codMaquina.Length / 2))); _longitud = (b1.getNumberHexadecimal()).PadLeft(2,'0'); }
public void addCodigoMaquina(String codigo) { for (int i = 0; i<codigo.Length;i++) { int tmpCodMaq = 0; tmpCodMaq = System.Convert.ToInt16(codigo[i]); baseNumerica b1 = new baseNumerica(System.Convert.ToString(tmpCodMaq)); _codMaquina += b1.getNumberHexadecimal(); } _codMaquina += "0A"; }
public void calculaCRC() { baseNumerica b1 = new baseNumerica("0000"); baseNumerica b3 = new baseNumerica(_longitud); b1 = new baseNumerica(System.Convert.ToString(b1.getNumberDecimal()+b3.getNumberDecimal())); for (int i = 0; i<_codMaquina.Length; i+=2) { String tmp = System.Convert.ToString(_codMaquina[i])+System.Convert.ToString(_codMaquina[i+1]); baseNumerica b2 = new baseNumerica(tmp); b1 = new baseNumerica(System.Convert.ToString(b1.getNumberDecimal()+b2.getNumberDecimal())); } b3 = new baseNumerica("$FFFF"); b1 = new baseNumerica(System.Convert.ToString(b3.getNumberDecimal()-b1.getNumberDecimal())); for (int i = b1.getNumberHexadecimal().Length - 1; i>1; i--) { _crc = b1.getNumberHexadecimal()[i] + _crc; } }
private void separaCadena(String cadena) { if (cadena[0] == ';') { txtMensajes.Text += "Comentario"; printEnter(); return; } //############################################################################################## //Separo la cadena con un automata String[] separados = new String[3];//[0]Etiqueta [1]CODOP [2]OPERANDO bool[] validos = new bool[3]; int[,] estados = new int[5,2]{ {0,1}, {2,1}, {2,3}, {4,3}, {4,4}}; int state=0,input=0,sizeString=cadena.Length,sizeTotal=0,i=0; while(i<sizeString) { switch(cadena[i]) { case ' ': case '\t': input = 1; break; default: input = 0; break; } state = estados[state,input]; switch(state){ case 0: separados[sizeTotal] += cadena[i++]; break; case 1:case 3: i++; if (i < sizeString && cadena[i] != ' ' && cadena[i] != '\t') { sizeTotal++; } break; case 2: separados[sizeTotal] += cadena[i++]; break; case 4: separados[sizeTotal] += cadena[i++]; break; } } for (int j = 0; j < 3; j++) { if (separados[j] == null) separados[j] = "NULL"; } //############################################################################################## //Creo los objetos de las respectivas clases. label = new LABEL(separados[0]); label.validaEtiqueta(); codop = new CODOP(separados[1]); codop.validaCODOP(); operando = new OPERANDO(separados[2]); operando.validaOperando(); //Valido las combinaciones if (codop.getCodop() == "NULL") { txtMensajes.Text += "Linea: " + (lineasArchivo + 1); printEnter(); txtMensajes.Text += mensajesError[0];//Dice cuales son las combinaciones validas... printEnter(); printEnter(); return; } //Validaciones para la etiqueta if (label.getValida()) { txtMensajes.Text += "ETIQUETA = " + label.getLabel();//Etiqueta printEnter(); //Guardo en el tabsim la etiqueta if (label.getLabel() != "NULL" && codop.getCodop() != "EQU") { Boolean flagEncontrada = false; foreach(String labelTMP in listaEtiquetas) { if(label.getLabel() == labelTMP) { flagEncontrada = true; } } if (!flagEncontrada) { lfile.setLabel(label.getLabel()); lfile.setValue(contLoc.getNumberHexadecimal().PadLeft(4, '0'));//Modifica1 Contoloc lfile.save(fsTabsim, 2); listaEtiquetas.Add(label.getLabel()); dirEtiquetas.Add(contLoc.getNumberHexadecimal()); } else { txtMensajes.Text += mensajesError[7]; } } //Prepara para el archivo TMP lfile.setLabel1(label.getLabel()); } else { txtMensajes.Text += "Linea: " + (lineasArchivo + 1); printEnter(); txtMensajes.Text += mensajesError[1];//Etiqueta no valida printEnter(); } //Validaciones para el CODOP if (codop.getValido()) { txtMensajes.Text += "CODOP = " + codop.getCodop();//Codop printEnter(); binarySearch(0,200,codop.getCodop()); if (codop.getExiste()) { codop.revizaModoDireccionamiento(arrayCODOP,arrayTMPCODOP[codop.getIniciaCODOP()].start,arrayTMPCODOP[codop.getIniciaCODOP()].end,operando); //Preparo para guardar en el archivo TMP lfile.setCODOP(codop.getCodop()); } else { directive = new DIRECTIVA(codop.getCodop(),operando,label); if (directive.getExiste()) { if(directive.getValida()) { //Preparo para guardar en el archivo TMP if(codop.getCodop() == "ORG") { baseNumerica b1 = new baseNumerica(System.Convert.ToString(operando.getOperando())); contLoc = b1; dirInicial = b1; //contLoc.setNumberHexadecimal(b1.getNumberHexadecimal()); } else if(codop.getCodop() == "EQU") { baseNumerica b1 = new baseNumerica(System.Convert.ToString(operando.getOperando())); Boolean flagExist = false; foreach(String stmp in listaEtiquetas) { if(stmp == label.getLabel()) { flagExist = true; } } if (flagExist) { txtMensajes.Text += mensajesError[7]; printEnter(); } else { lfile.setLabel(label.getLabel()); //lfile.setValue(directive.getValueHexadecimal()); lfile.setValue(b1.getNumberHexadecimal().PadLeft(4, '0'));//Modifca2 Contloc lfile.save(fsTabsim, 2); listaEtiquetas.Add(label.getLabel()); dirEtiquetas.Add(b1.getNumberHexadecimal().PadLeft(4,'0')); lfile.setValue1(b1.getNumberHexadecimal().PadLeft(4, '0')); } } lfile.setCODOP(codop.getCodop()); } else { txtMensajes.Text += directive.getImprimirMensaje(); printEnter(); } } else { txtMensajes.Text += mensajesError[5];//El CODOP ingresado no existe printEnter(); } } } else { txtMensajes.Text += "Linea: " + (lineasArchivo + 1); printEnter(); txtMensajes.Text += mensajesError[2];//Codop no valido printEnter(); } //Validaciones para el OPERANDO txtMensajes.Text += "OPERANDO = " + operando.getOperando();//Operando printEnter(); //Preparo para guardar operando lfile.setOperando(operando.getOriginal()); txtMensajes.Text += codop.getMensajeResultado() + " "; if (codop.getBytesTotales() > 0) { txtMensajes.Text += Convert.ToString(codop.getBytesTotales()) + " bytes"; } printEnter(); //Verifico si el codop necesita un operando if (operando.getOperando() == "NULL" && codop.getNecesitaOperando() && codop.getExiste()) { txtMensajes.Text += mensajesError[3];//El codop necesita operando printEnter(); } else if(operando.getOperando() != "NULL" && !codop.getNecesitaOperando() && codop.getExiste()) { txtMensajes.Text += mensajesError[4];//El codop no necesita operando printEnter(); } printEnter(); //Verifico si hay un END de cierre if (codop.getCodop() == "END") { banderaEnd = true; } baseNumerica OV = new baseNumerica(System.Convert.ToString(0)); //Recalculo el ContLOc if (codop.getExiste()) { OV = new baseNumerica(System.Convert.ToString(codop.getBytesTotales())); } else if(directive.getValida()) { OV = new baseNumerica(System.Convert.ToString(directive.getSize())); } //int temporal = contLoc.getNumberDecimal() + OV.getNumberDecimal(); //baseNumerica TMP = new baseNumerica(System.Convert.ToString(temporal)); //contLoc = TMP; if (codop.getCodop() != "EQU") { lfile.setValue1(contLoc.getNumberHexadecimal().PadLeft(4, '0'));//Modifica3 Contloc } //Guardo el TMP lfile.save(fsTMP,1); int temporal = contLoc.getNumberDecimal() + OV.getNumberDecimal(); baseNumerica TMP = new baseNumerica(System.Convert.ToString(temporal)); contLoc = TMP; //Llamo al destructor codop = null; GC.Collect(); }
private void segundoPaso(String cadena) { String codigoMaquina = ""; int tam = cadena.Length; String[] arrayLine = new String[4]; int i = 0,j=0; while (i<tam) { if (cadena[i] != '\t') { arrayLine[j] += cadena[i++]; } else { j++; i++; } } //Cargo las 4 partes de la linea baseNumerica contLocFile = new baseNumerica("$"+arrayLine[0]); LABEL labelFile = new LABEL(arrayLine[1]); codop = new CODOP(arrayLine[2]); OPERANDO operandoFile = new OPERANDO(arrayLine[3]); labelFile.validaEtiqueta(); codop.validaCODOP(); operandoFile.validaOperando(); if(codop.getCodop()=="END") { return; } if (codop.getValido()) { binarySearch(0, 200, codop.getCodop()); codop.revizaModoDireccionamiento(arrayCODOP, arrayTMPCODOP[codop.getIniciaCODOP()].start, arrayTMPCODOP[codop.getIniciaCODOP()].end, operandoFile); } else { txtMensajes.Text += mensajesError[2];//El CODOP no es valido printEnter(); return; } if(!codop.getExiste()) { DIRECTIVA d1 = new DIRECTIVA(codop.getCodop(),operandoFile,labelFile); if (d1.getExiste() && d1.getValida()) { txtMensajes.Text += d1.getCodigoMaquina();//11111111111111111111111Imprimo codigo Maquina de la directiva codigoMaquina = d1.getCodigoMaquina(); if(codigoMaquina != "") { arrayCodMaqinaS1.Add(codigoMaquina); arrayDirS1.Add(contLocFile); } } else { txtMensajes.Text += mensajesError[6];//No se encontro } printEnter(); return; } //Verifico que tipo de direccionamiento tiene y hago creo el codigo maquina en base a eso String xb = ""; switch(codop.getModoDireccionamiento()) { case "INH": txtMensajes.Text += codop.getCodigoMaquina();//22222222222222222222Imprimo codigo Maquina de codop codigoMaquina = codop.getCodigoMaquina(); break; case "DIR": case "EXT": baseNumerica b1 = new baseNumerica("0"); if(operandoFile.getOperando()[0] >= 'A' && operandoFile.getOperando()[0] <= 'Z') { int ilabel = 0,indiceLabel = 0; Boolean labelFound = false; foreach(String lTMP in listaEtiquetas) { if(lTMP == operandoFile.getOriginal()) { indiceLabel = ilabel; labelFound = true; } ilabel++; } if(labelFound) { ilabel = 0; String labelExtendido = ""; foreach(String lTMP in dirEtiquetas) { if(ilabel == indiceLabel) { labelExtendido = lTMP; } ilabel++; }//Finaliza bucle foreach labelExtendido = "$" + labelExtendido; b1 = new baseNumerica(labelExtendido);//333333333333Imprimo codigo maquina de codop txtMensajes.Text += codop.getCodigoMaquina() + System.Convert.ToString(b1.getNumberHexadecimal()).PadLeft(2 * codop.getBytesPorCalcular(), '0'); codigoMaquina = codop.getCodigoMaquina() + System.Convert.ToString(b1.getNumberHexadecimal()).PadLeft(2 * codop.getBytesPorCalcular(), '0'); } else { txtMensajes.Text += mensajesError[8]; //Etiqueta no encontrada } }//Termina cuando es extendido con Etiqueta else { b1 = new baseNumerica(arrayLine[3]);//444444444444444444444444Imprimo codigo maquina de codop txtMensajes.Text += codop.getCodigoMaquina() + System.Convert.ToString(b1.getNumberHexadecimal()).PadLeft(2*codop.getBytesPorCalcular(),'0'); codigoMaquina = codop.getCodigoMaquina() + System.Convert.ToString(b1.getNumberHexadecimal()).PadLeft(2 * codop.getBytesPorCalcular(), '0'); } break; case "IMM": char[] car = {'#'}; arrayLine[3] = arrayLine[3].TrimStart(car); baseNumerica b2 = new baseNumerica(arrayLine[3]);//55555555555555555555Imprimo codigo maquina de codop txtMensajes.Text += codop.getCodigoMaquina() + System.Convert.ToString(b2.getNumberHexadecimal()).PadLeft(2 * codop.getBytesPorCalcular(), '0'); codigoMaquina = codop.getCodigoMaquina() + System.Convert.ToString(b2.getNumberHexadecimal()).PadLeft(2 * codop.getBytesPorCalcular(), '0'); break; case "[IDX2]": int sizeTMP = arrayLine[3].Length - 1; String registro = "", operandoTMP = ""; Boolean band1 = false; for (i=1; i < sizeTMP ;i++ ) { if (arrayLine[3][i]==',') { band1 = true; } else if(!band1) { operandoTMP += arrayLine[3][i]; } else { registro += arrayLine[3][i]; } }//Fin del for switch(registro) { case "X": xb = "E3"; break; case "Y": xb = "EB"; break; case "SP": xb = "F3"; break; case "PC": xb = "FB"; break; } baseNumerica bI16 = new baseNumerica(operandoTMP);//666666666666666Imprimo codigo maquina de codop txtMensajes.Text += codop.getCodigoMaquina() + xb + System.Convert.ToString(bI16.getNumberHexadecimal()).PadLeft(2 * (codop.getBytesPorCalcular()-1), '0'); codigoMaquina = codop.getCodigoMaquina() + xb + System.Convert.ToString(bI16.getNumberHexadecimal()).PadLeft(2 * (codop.getBytesPorCalcular() - 1), '0'); break; case "[D,IDX]": xb = ""; switch(arrayLine[3][3]) { case 'X': xb = "E7"; break; case 'Y': xb = "EF"; break; case 'S': xb = "F7"; break; case 'P': xb = "FF"; break; } txtMensajes.Text += codop.getCodigoMaquina() + xb;//77777777777777777777Imprimo codigo maquina de codop codigoMaquina = codop.getCodigoMaquina() + xb; break; case "IDX": operandoFile.generaXB(codop); txtMensajes.Text += codop.getCodigoMaquina() + operandoFile.getXb().PadLeft(2,'0');//88888888888Imprimo Codigo maquina de codop codigoMaquina = codop.getCodigoMaquina() + operandoFile.getXb().PadLeft(2, '0'); break; case "IDX1": operandoFile.generaXB(codop); txtMensajes.Text += codop.getCodigoMaquina() + operandoFile.getXb();//999999999999999999999Imprimo codigo maquina de codop codigoMaquina = codop.getCodigoMaquina() + operandoFile.getXb(); break; case "IDX2": operandoFile.generaXB(codop); txtMensajes.Text += codop.getCodigoMaquina() + operandoFile.getXb();//AAAAAAAAAAAAAAAImprimo codigo maquina de codop codigoMaquina = codop.getCodigoMaquina() + operandoFile.getXb(); break; case "REL": int indice = 0,tmp = 0; Boolean flagFound = false; foreach (String labelTMP in listaEtiquetas) { if (operandoFile.getOperando() == labelTMP) { indice = tmp; flagFound = true; } tmp++; } if(flagFound) { tmp = 0; String contLocLabel = "$"; foreach(String contlocTMP in dirEtiquetas) { if(tmp == indice) { contLocLabel += contlocTMP; } tmp++; } operandoFile.generaCodigoMaquina(contLocFile,codop,contLocLabel); if (operandoFile.getFueraRango()) { txtMensajes.Text += "FUERA DE RANGO "; if(codop.getBytesPorCalcular() == 1) { txtMensajes.Text += "los rangos permitidos son de -128 hasta 127"; } else { txtMensajes.Text += "los rangos permitidos son de -32768 hasta 32767"; } } else { txtMensajes.Text += codop.getCodigoMaquina().PadLeft(2, '0') + operandoFile.getXb();//BBBBBBBBBBBBBImprimo codigo maquina de codop codigoMaquina = codop.getCodigoMaquina().PadLeft(2, '0') + operandoFile.getXb(); } } else { txtMensajes.Text += mensajesError[8];//Etiqueta no encontrada } break; } //Agregando informacion para posteriormente construir el S1 arrayDirS1.Add(contLocFile); arrayCodMaqinaS1.Add(codigoMaquina); printEnter(); GC.Collect(); }
private void partesS1() { //int elementoActual = 0; S1 s1 = new S1(); baseNumerica temporalAct = new baseNumerica("0"); baseNumerica direccionActual = new baseNumerica("$" + ((baseNumerica)arrayDirS1[0]).getNumberHexadecimal()); s1.direccion = direccionActual.getNumberHexadecimal(); Boolean flagPase = false; for (int elementoActual = 0; elementoActual < arrayCodMaqinaS1.Count; elementoActual++) { temporalAct = new baseNumerica("$" + ((baseNumerica)arrayDirS1[elementoActual]).getNumberHexadecimal()); if (temporalAct.getNumberHexadecimal() != direccionActual.getNumberHexadecimal())//Recorro todos los elementos de los arreglos que cree { if (flagPase) { if (s1.direccion == "") s1.direccion = temporalAct.getNumberHexadecimal(); baseNumerica longitudA = new baseNumerica(System.Convert.ToString(s1.codMaquina.Length / 2)); direccionActual = new baseNumerica(System.Convert.ToString(direccionActual.getNumberDecimal() - longitudA.getNumberDecimal())); flagPase = false; } else { if (s1.direccion == "") { s1.direccion = temporalAct.getNumberHexadecimal(); //// baseNumerica tmpComp = new baseNumerica(System.Convert.ToString(direccionActual.getNumberDecimal() - (s1.codMaquina.Length / 2))); //// if (elementoActual - (s1.codMaquina.Length / 2) >= 0 && ((baseNumerica)arrayDirS1[elementoActual - (s1.codMaquina.Length / 2)]).getNumberHexadecimal() == tmpComp.getNumberHexadecimal()) //// { //// s1.direccion = tmpComp.getNumberHexadecimal(); //// } //// else //// { //// s1.direccion = direccionActual.getNumberHexadecimal(); //// } ////} } } s1.calculaLongitud(); s1.calculaCRC(); s1.saveFile(fsS19); s1 = new S1(); if (s1.direccion != "") { //s1.direccion = ((baseNumerica)arrayDirS1[elementoActual]).getNumberHexadecimal(); s1.direccion = temporalAct.getNumberHexadecimal(); } direccionActual = new baseNumerica("$" + s1.direccion); } for (int i = 0; i < ((String)arrayCodMaqinaS1[elementoActual]).Length; i += 2) { if ((s1.codMaquina.Length / 2) < 16) { String tmp = System.Convert.ToString(((String)arrayCodMaqinaS1[elementoActual])[i]) + System.Convert.ToString(((String)arrayCodMaqinaS1[elementoActual])[i + 1]); s1.addCodigoMaquina(tmp); direccionActual = new baseNumerica(System.Convert.ToString(direccionActual.getNumberDecimal() + 1)); } else { flagPase = true; i -= 2; s1.calculaLongitud(); s1.calculaCRC(); s1.saveFile(fsS19); s1 = new S1(); s1.direccion = direccionActual.getNumberHexadecimal(); } }//Fin del bucle for para recorrer el elemento actual }//Fin del bucle for que recorre todos los elementos if(s1.codMaquina!="")//Agrego el ultimo bloque { s1.calculaLongitud(); s1.calculaCRC(); s1.saveFile(fsS19); } }