示例#1
0
文件: roms.c 项目: MEGA65/xemu
int sram_load_segment ( int seg )
{
	int a;
	char path[PATH_MAX + 1];
	FILE *f = sram_open(seg, "rb", path);
	DEBUGPRINT("MEM: SRAM: loading SRAM segment %02Xh from file %s" NL, seg, path);
	if (!f) {
		ERROR_WINDOW("Cannot open file for loading SRAM segment %02Xh because of file I/O error: %s\nFile name was: %s", seg, ERRSTR(), path);
		return 1;
	}
	a = fread(memory + (seg << 14), 0x4000, 1, f);
	if (a != 1)
		ERROR_WINDOW("Cannot load SRAM segment %02Xh because of file I/O error: %s\nFile name was: %s", seg, ERRSTR(), path);
	fclose(f);
	return a != 1;
}
示例#2
0
文件: roms.c 项目: MEGA65/xemu
int sram_save_segment ( int seg )
{
	int a;
	char path[PATH_MAX + 1];
	FILE *f = sram_open(seg, "wb", path);
	DEBUGPRINT("MEM: SRAM: saving SRAM segment %02Xh to file %s" NL, seg, path);
	if (!f) {
		ERROR_WINDOW("Cannot create file for saving SRAM segment %02Xh because of file I/O error: %s\nFile name was: %s", seg, ERRSTR(), path);
		return 1;
	}
	a = fwrite(memory + (seg << 14), 0x4000, 1, f);
	if (a != 1)
		ERROR_WINDOW("Cannot save SRAM segment %02Xh because of file I/O error: %s\nFile name was: %s", seg, ERRSTR(), path);
	fclose(f);
	return a != 1;
}
示例#3
0
int main(int argc, char *argv[])
{
	off_t offset;
	uint16_t ored;
	uint16_t val;
	int i;
	int n;
	int stepsz;
	int write;
	int error;

	if (argc < 4) {
		fprintf(stderr, "Usage: sram <r/w> <n> <stepsz> [orv]\n");
		exit(1);
	}

	if (argc == 5)
		ored = (int16_t)strtol(argv[4], NULL, 16);
	else
		ored = 0;

	n = atoi(argv[2]);
	stepsz = atoi(argv[3]);

	if (*argv[1] == 'w') {
		write = 1;
		printf("Write mode enabled \n");
	} else {
		write = 0;
		printf("Read mode enabled \n");
	}

	if ((error = sram_open())) {
		perror("sram_open");
		exit(1);
	}

	printf("SRAM opened!\n");
	sleep(1);

	for (i = 0; i < n; i++) {
		offset = i * (stepsz <<1);

		if (write) {
			val = (uint16_t)((i<<1) | ored);
			if ((error = sram_write(offset, &val, sizeof(val)))) {
				fprintf(stderr, "Error during sram_write\n");
				exit(1);
			}
		} else {
			if ((error = sram_read(offset, &val, sizeof(val)))) {
				fprintf(stderr, "Error during sram_read\n");
				exit(1);
			}
			printf("@%#lx: %hx\n", (unsigned long)offset, val);
		}
		sleep(1);
	}

	sleep(1);

	sram_close();

	return 0;
}