void trs_load_compiled_rom(int size, unsigned char rom[]) { int i; trs_rom_size = size; for(i = 0; i < size; ++i) { mem_write_rom(i, rom[i]); } }
int trs_load_rom(char *filename) { FILE *program; int c; if((program = fopen(filename, "rb")) == NULL) { return(-1); } c = getc(program); if (c == ':') { /* Assume Intel hex format */ rewind(program); trs_rom_size = load_hex(program); fclose(program); if (trs_rom_size == -1) return(-1); else return(0); } else if (c == 1 || c == 5) { /* Assume MODELA/III file */ int res; extern Uchar *rom; /*!! fixme*/ Uchar loadmap[Z80_ADDRESS_LIMIT]; rewind(program); res = load_cmd(program, rom, loadmap, 0, NULL, -1, NULL, NULL, 1); if (res == LOAD_CMD_OK) { trs_rom_size = Z80_ADDRESS_LIMIT; while (trs_rom_size > 0) { if (loadmap[--trs_rom_size] != 0) { trs_rom_size++; break; } } fclose(program); return(0); } else { /* Guess it wasn't one */ rewind(program); c = getc(program); } } trs_rom_size = 0; while (c != EOF) { mem_write_rom(trs_rom_size++, c); c = getc(program); } return(0); }
/* Called by load_hex */ void hex_data(int address, int value) { mem_write_rom(address, value); }