Annotation of ADD_ver_10/Crear Ficheros.c, revision 1.1
1.1 ! rico 1: /********************************************************************/
! 2: /* Crear Ficheros.c */
! 3: /* */
! 4: /* Copyright (c) 1997-2006 Rafael Rico (rafael.rico@uah.es) */
! 5: /* */
! 6: /* This file is part of ADD version 5.10. */
! 7: /* */
! 8: /* ADD is free software; you can redistribute it and/or modify */
! 9: /* it under the terms of the GNU General Public License as */
! 10: /* published by the Free Software Foundation; either version 2 of */
! 11: /* the License, or (at your option) any later version. */
! 12: /* */
! 13: /* ADD is distributed in the hope that it will be useful, */
! 14: /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
! 15: /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
! 16: /* GNU General Public License for more details. */
! 17: /* */
! 18: /* You should have received a copy of the GNU General Public */
! 19: /* License along with ADD; if not, write to the Free Software */
! 20: /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
! 21: /* 02111-1307 USA */
! 22: /* */
! 23: /* --------------------------- History --------------------------- */
! 24: /* */
! 25: /* Revision 1.2. 01/2006 */
! 26: /* Added GPL License and JavaDoc style documentation */
! 27: /* */
! 28: /* Revision 1.1. 09/2005 */
! 29: /* Initial Revision */
! 30: /* */
! 31: /********************************************************************/
! 32:
! 33:
! 34: /******************************************************************************/
! 35: /* MÓDULO: Auxiliares.c */
! 36: /* */
! 37: /* Este módulo contiene funciones auxiliares: */
! 38: /* - notificación de mensajes en fichero de log */
! 39: /* - presentación de tarjeta de instrucción */
! 40: /* - creación de ficheros de base de datos */
! 41: /******************************************************************************/
! 42: /* Fecha: 21 de junio de 2005 */
! 43: /******************************************************************************/
! 44:
! 45: #include <stdio.h>
! 46: #include <string.h>
! 47: #include "tipos.h"
! 48: #include "defines.h"
! 49:
! 50: extern int num_nemonicos;
! 51: extern operacion *nemonicos;
! 52: extern int num_simbolos;
! 53: extern operando *simbolos;
! 54: extern int num_tiempos;
! 55: extern tiempo *ciclos;
! 56:
! 57:
! 58: void Notificar(char *mensaje, unsigned char accion, unsigned char eco)
! 59: {
! 60: FILE *handle;
! 61: char *fichero;
! 62:
! 63: /* nombre del fichero de notificaciones */
! 64: strcpy(fichero, "notificaciones.log");
! 65:
! 66: /* escribo la notificación en el fichero y si no es posible aborto el programa */
! 67: if((handle = fopen(fichero, "a")) != NULL)
! 68: {
! 69: fprintf(handle, "%s\n", mensaje);
! 70: if(fclose(handle))
! 71: {
! 72: fprintf(handle, "El fichero %s no se ha podido cerrar\n", fichero);
! 73: printf("El fichero %s no se ha podido cerrar\n", fichero);
! 74: }
! 75: }
! 76: else
! 77: {
! 78: printf("El fichero %s no se ha podido abrir\n", fichero);
! 79: printf("Pulse cualquier tecla para salir\n");
! 80: _getch();
! 81: exit(1);
! 82: }
! 83:
! 84: /* escribo el error en la pantalla */
! 85: if(eco == SI) printf("%s\n", mensaje);
! 86:
! 87: /* acción en función del parámetro */
! 88: switch(accion))
! 89: {
! 90: case SALIR:
! 91: printf("Pulse cualquier tecla para salir\n");
! 92: _getch();
! 93: exit(1);
! 94: break;
! 95:
! 96: case SEGUIR:
! 97: printf("Pulse cualquier tecla para continuar\n");
! 98: _getch();
! 99: break;
! 100: }
! 101: }
! 102:
! 103:
! 104: void MostrarTarjeta(fichainstruccion *tarjetaoperandos)
! 105: {
! 106: /* imprimo la tarjeta de la instrucción para ver si funciona bien */
! 107:
! 108: int i;
! 109:
! 110: /* todo esto no funciona aquí */
! 111: /* printf("\x01B[2J"); */ /* código de escape ANSI para borrar la pantalla */
! 112: /* printf("\027[2J"); */ /* código de escape ANSI para borrar la pantalla */
! 113: /* printf("%c[2J", 27);*/ /* código de escape ANSI para borrar la pantalla */
! 114: /* printf("\033[2J"); */
! 115:
! 116: printf("\n");
! 117: for(i=0; i<80; i++) printf("-");
! 118:
! 119: printf("%-14s ", tarjetaoperandos->hexadecimal);
! 120:
! 121: /* formato de instrucción (notación de INTEL) */
! 122: printf("%s%s", tarjetaoperandos->prefijo, tarjetaoperandos->prefijo[0]!='\0' ? " ":"");
! 123:
! 124: printf("%s", tarjetaoperandos->nemonico);
! 125: printf("%s%s", tarjetaoperandos->op1[0]!='\0' ? " ":"", tarjetaoperandos->op1);
! 126: printf("%s%s%s", (tarjetaoperandos->op1[0]!='\0' && tarjetaoperandos->op2[0]!='\0') ? ",":"", tarjetaoperandos->op2[0]!='\0' ? " ":"", tarjetaoperandos->op2);
! 127:
! 128: printf(" ");
! 129:
! 130: printf("(long:%d", tarjetaoperandos->longitud);
! 131: switch(tarjetaoperandos->salto)
! 132: {
! 133: case INCONDICIONAL:
! 134: printf(" salto:INCONDICIONAL");
! 135: break;
! 136:
! 137: case NO_SALTO:
! 138: printf(" salto:NO SALTO");
! 139: break;
! 140:
! 141: case TOMADO:
! 142: printf(" salto:TOMADO");
! 143: break;
! 144:
! 145: case NOTOMADO:
! 146: printf(" salto:NO TOMADO");
! 147: break;
! 148: }
! 149:
! 150: printf(" ALU=%d", tarjetaoperandos->ciclosALU);
! 151: printf(" BIU=%d)\n", tarjetaoperandos->ciclosBIU);
! 152:
! 153: printf("\nExpl leido datos: %s", tarjetaoperandos->leidoexpldatos);
! 154: printf("\nExpl leido dir: %s", tarjetaoperandos->leidoexpldir);
! 155: printf("\nExpl leido pila: %s", tarjetaoperandos->leidoexplpila);
! 156: printf("\nExpl leido estado: %s", tarjetaoperandos->leidoexplestado);
! 157: printf("\nExpl escrito datos: %s", tarjetaoperandos->escritoexpldatos);
! 158: printf("\nExpl escrito dir: %s", tarjetaoperandos->escritoexpldir);
! 159: printf("\nExpl escrito pila: %s", tarjetaoperandos->escritoexplpila);
! 160: printf("\nExpl escrito estado: %s", tarjetaoperandos->escritoexplestado);
! 161: printf("\nImpl leido datos: %s", tarjetaoperandos->leidoimpldatos);
! 162: printf("\nImpl leido dir: %s", tarjetaoperandos->leidoimpldir);
! 163: printf("\nImpl leido pila: %s", tarjetaoperandos->leidoimplpila);
! 164: printf("\nImpl leido estado: %s", tarjetaoperandos->leidoimplestado);
! 165: printf("\nImpl escrito datos: %s", tarjetaoperandos->escritoimpldatos);
! 166: printf("\nImpl escrito dir: %s", tarjetaoperandos->escritoimpldir);
! 167: printf("\nImpl escrito pila: %s", tarjetaoperandos->escritoimplpila);
! 168: printf("\nImpl escrito estado: %s", tarjetaoperandos->escritoimplestado);
! 169:
! 170: printf("\n");
! 171:
! 172: _getch();
! 173: }
! 174:
! 175: /* no se han programado las notificaciones ya que esta función */
! 176: /* solamente tiene sentido mientras se depura la aplicación */
! 177: void CrearFicheroDB (char *fichero, int idtabla)
! 178: {
! 179: FILE *handle;
! 180: int i;
! 181:
! 182: /* los ficheros van a tener el formato de texto EXCEL */
! 183: /* al nombre del fichero le asigno la extensión .XLS */
! 184:
! 185: strcat(fichero, ".xls");
! 186:
! 187: switch(idtabla)
! 188: {
! 189: case TABLA_NEMONICOS:
! 190: /* abro el fichero */
! 191: if((handle = fopen(fichero, "w")) != NULL)
! 192: {
! 193: printf("El fichero %s se ha abierto con éxito\n", fichero);
! 194:
! 195: /* escribo una pequeña cabecera */
! 196: fprintf(handle, "BASE DE DATOS DE NEMÓNICOS\n\n");
! 197: fprintf(handle, "%s\t", "índice");
! 198: fprintf(handle, "%s\t", "nemónico");
! 199: fprintf(handle, "%s\t", "tipo");
! 200: fprintf(handle, "%s\t", "implicitos_escritos");
! 201: fprintf(handle, "%s\t", "implicitos_leidos");
! 202: fprintf(handle, "%s\t", "modo_op1");
! 203: fprintf(handle, "%s\t", "modo_op2");
! 204: fprintf(handle, "%s\n", "cuenta");
! 205:
! 206: /* copio la base de datos al fichero con formato EXCEL */
! 207: for(i=0; i<num_nemonicos; i++)
! 208: {
! 209: fprintf(handle, "%d\t%s\t", i+1, nemonicos[i].nemonico);
! 210: fprintf(handle, "%d\t", nemonicos[i].tipo);
! 211: fprintf(handle, "%s\t", nemonicos[i].implicitos_escritos);
! 212: fprintf(handle, "%s\t", nemonicos[i].implicitos_leidos);
! 213: fprintf(handle, "%d\t", nemonicos[i].modo_op1);
! 214: fprintf(handle, "%d\t", nemonicos[i].modo_op2);
! 215: fprintf(handle, "%u\n", nemonicos[i].cuenta);
! 216: }
! 217:
! 218: /* cierro el fichero */
! 219: if(fclose(handle)) printf("El fichero %s no se ha podido cerrar\n", fichero);
! 220: }
! 221: else printf("El fichero %s no se ha podido abrir\n", fichero);
! 222: break;
! 223:
! 224: case TABLA_SIMBOLOS:
! 225: /* abro el fichero */
! 226: if((handle = fopen(fichero, "w")) != NULL)
! 227: {
! 228: printf("El fichero %s se ha abierto con éxito\n", fichero);
! 229:
! 230: /* escribo una pequeña cabecera */
! 231: fprintf(handle, "BASE DE DATOS DE UBICACIONES\n\n");
! 232: fprintf(handle, "%s\t", "índice");
! 233: fprintf(handle, "%s\t", "símbolo");
! 234: fprintf(handle, "%s\t", "tipo");
! 235: fprintf(handle, "%s\t", "dependencias");
! 236: fprintf(handle, "%s\t", "segmento");
! 237: fprintf(handle, "%s\t", "lecturas");
! 238: fprintf(handle, "%s\n", "escrituras");
! 239:
! 240: /* copio la base de datos al fichero con formato EXCEL */
! 241: for(i=0; i<num_simbolos; i++)
! 242: {
! 243: fprintf(handle, "%d\t%s\t", i+1, simbolos[i].simbolo);
! 244: fprintf(handle, "%d\t", simbolos[i].tipo);
! 245: fprintf(handle, "%s\t", simbolos[i].dependencias);
! 246: fprintf(handle, "%d\t", simbolos[i].segmento);
! 247: fprintf(handle, "%u\t", simbolos[i].lecturas);
! 248: fprintf(handle, "%u\n", simbolos[i].escrituras);
! 249: }
! 250:
! 251: /* cierro el fichero */
! 252: if(fclose(handle)) printf("El fichero %s no se ha podido cerrar\n", fichero);
! 253: }
! 254: else printf("El fichero %s no se ha podido abrir\n", fichero);
! 255: break;
! 256:
! 257: case TABLA_CICLOS:
! 258: /* abro el fichero */
! 259: if((handle = fopen(fichero, "w")) != NULL)
! 260: {
! 261: printf("El fichero %s se ha abierto con éxito\n", fichero);
! 262:
! 263: /* escribo una pequeña cabecera */
! 264: fprintf(handle, "BASE DE DATOS DE TIEMPOS DE EJECUCIÓN\n\n");
! 265: fprintf(handle, "%s\t", "índice");
! 266: fprintf(handle, "%s\t", "identificador");
! 267: fprintf(handle, "%s\n", "ciclos");
! 268:
! 269: /* copio la base de datos al fichero con formato EXCEL */
! 270: for(i=0; i<num_tiempos; i++)
! 271: {
! 272: fprintf(handle, "%d\t%s\t", i+1, ciclos[i].identificador);
! 273: fprintf(handle, "%d\n", ciclos[i].ciclos);
! 274: }
! 275:
! 276: /* cierro el fichero */
! 277: if(fclose(handle)) printf("El fichero %s no se ha podido cerrar\n", fichero);
! 278: }
! 279: else printf("El fichero %s no se ha podido abrir\n", fichero);
! 280: break;
! 281: }
! 282: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>