?? genprof.c
字號:
/* Copyright 1996, ESS Technology, Inc. *//* SCCSID @(#)genprof.c 1.36 11/29/97 *//* * $Log$ *//* * This is modified from version 2.4 of genprof.c *//* * This program generate the necessary profile for making a ROM * * Usage: genprof bank-number vcx_setup rom_size * bank-number: bank number (0, 1, 2, 3). 0 is used for download * simulation * vcx_setup: ESS is 1 * TXC is 100 * rom_size: newer boards use 128k ROM * older boards use 256k ROM */#include <stdio.h>#include <time.h>#include <sys/time.h>int romsize; /* ROM size may be different */int organization = 1;long lastaddr[] = { /* Index by bank. 0 is for simulation. */ 0x00040000, /* Simulated 256K (0x40000 to 0x80000) */ 0x04000000, /* 256K */ 0x08000000, /* 256K */ 0x1c080000, /* 128K/256K */ 0x0c100000 /* For browser board only */};long romdatastart[] = { /* Index by bank. 0 is for simulation. */ 0x00040010, /* Simulated ROM */ 0x04000010, 0x08000010, 0x1c060010, 0x1c0e0010 /* For browser board only */};long getVersion(){ long result = 0; char *ptr, version[20]; time_t tmp; /* Get today's time */ time(&tmp); strftime(version, 20, "%D", localtime(&tmp)); ptr = version; while (*ptr) { if ((*ptr >= '0') && (*ptr <= '9')) result = (result << 4) | (*ptr - '0'); ptr++; } return(result);}int main(argc, argv)int argc;char **argv;{ int bank; if ((argc != 3) || (sscanf(argv[1], "%d", &bank) != 1) || (sscanf(argv[2], "%d", &romsize) != 1)) { fprintf(stderr, "Usage: %s bank-number rom_size\n", argv[0]); exit(1); } /* * Starting code for 128K ROM is 0X020000 and for 256K ROM is 0X040000 * * ROM emulator is using bit 17/18 (for 128K vs. 256K ROM) to decide * whether we are accessing ROM or debug port (if bit 17/18 is high * then we are accessing ROM). Since 128K ROM ignores bit 17, this * mechanism is safe. */ romdatastart[bank] -= ((romsize - 128) * 1024 ); fprintf(stdout, "; GENERATED AUTOMATICALLY!! DON'T MODIFY\n;\n"); fprintf(stdout, ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"); fprintf(stdout, ";;; Profile for making Bank %1d ROM ;;;\n", bank); fprintf(stdout, ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"); fprintf(stdout, "[romversion]\n%08lx\n;\n", getVersion());#ifdef JUMPGAME fprintf(stdout, "[romsize]\n256k\n;\n");#else#ifdef JUMPVCD fprintf(stdout, "[romsize]\n256k\n;\n");#else fprintf(stdout, "[romsize]\n%dk\n;\n", romsize);#endif#endif fprintf(stdout, ";[divisor]\n;\n"); fprintf(stdout, "[stat]\n;\n"); /* Number of EPROMS needed: 1/2/4 */ fprintf(stdout, "[organization]\n%d\n;\n", organization); fprintf(stdout, "[bootcode]\n");#ifdef JUMPGAME#ifndef JUMP_512K fprintf(stdout, "gameboot\n");#endif#endif fprintf(stdout, "boot\n;\n"); fprintf(stdout, "[codeloc]\n");#ifdef DATA_IN_DRAM fprintf(stdout, "DATA DRAM\n");#else fprintf(stdout, "DATA SRAM\n");#endif#ifdef CODE_IN_ROM#ifdef SLAVE_JUMP /* for vcd run on dvd slave */ fprintf(stdout, "TEXT demux.rom DRAM CACHE\n");#else#ifdef COMBINED fprintf(stdout, "TEXT demux30.rom ROM CACHE\n");#else fprintf(stdout, "TEXT demux.rom ROM CACHE\n");#endif#endif#ifdef COMBINED fprintf(stdout, "TEXT rdsa30.rom ROM NONCACHE\n;\n");#else fprintf(stdout, "TEXT rdsa.rom ROM NONCACHE\n;\n");#endif#else#ifdef COMBINED fprintf(stdout, "TEXT demux.rom SRAM NONCACHE\n"); fprintf(stdout, "TEXT rdsa.rom SRAM NONCACHE\n;\n");#else fprintf(stdout, "TEXT demux.rom SRAM NONCACHE\n"); fprintf(stdout, "TEXT rdsa.rom SRAM NONCACHE\n;\n");#endif#endif#ifdef COMBINED fprintf(stdout, "TEXT drive.rom ROM CACHE\n");#endif fprintf(stdout, "[register]\n");#ifdef COMBINED fprintf(stdout, "R23 drive.rom\n"); fprintf(stdout, "R23 demux30.rom\n"); fprintf(stdout, "R24 rdsa30.rom\n;\n");#else fprintf(stdout, "R23 demux.rom\n"); fprintf(stdout, "R24 rdsa.rom\n;\n");#endif fprintf(stdout, "[cmdblock]\n");#ifdef SLAVE_JUMP fprintf(stdout, "copy uncomp.dat 206003c\n"); fprintf(stdout, "set4 demux.rom text\n"); fprintf(stdout, "set5 20e0000\n"); fprintf(stdout, "set25 2060040\n"); fprintf(stdout, "set24 uncomp.txt\n"); fprintf(stdout, "jsr uncomp.txt\n");#endif /*SLAVE jump insert decompress stub */#ifdef COMBINED fprintf(stdout, "copy demux30.rom data\n"); fprintf(stdout, "copy rdsa30.rom data\n"); fprintf(stdout, "clear demux30.rom bss\n"); fprintf(stdout, "clear rdsa30.rom bss\n");#else fprintf(stdout, "copy demux.rom data\n"); fprintf(stdout, "copy rdsa.rom data\n"); fprintf(stdout, "clear demux.rom bss\n"); fprintf(stdout, "clear rdsa.rom bss\n");#endif#ifdef CODE_IN_ROM#ifdef SLAVE_JUMP#else#ifdef COMBINED fprintf(stdout, "set23 drive.rom\n");#else fprintf(stdout, "set23 demux.rom\n");#endif#endif /* SALVE_JUMP */#ifdef COMBINED fprintf(stdout, "set24 rdsa30.rom\n");#else fprintf(stdout, "set24 rdsa.rom\n");#endif#else fprintf(stdout, "copy demux.rom text 2000\n"); fprintf(stdout, "copy rdsa.rom text 12400\n"); fprintf(stdout, "set23 2000\n"); fprintf(stdout, "set24 12400\n");#endif#ifdef COMBINED fprintf(stdout, "jump rdsa30.rom START\n;\n");#else fprintf(stdout, "jump rdsa.rom START\n;\n");#endif fprintf(stdout, "[lastaddr]\n%lx\n;\n", lastaddr[bank]); fprintf(stdout, "[romfile]\n");#ifndef COMBINED#ifdef VCDROM fprintf(stdout, "tmp.dat\n");#endif#endif#ifdef JUMPGAME#ifndef JUMP_512K fprintf(stdout, "game.dat\n");#endif#else#if defined(JUMPVCD) || defined(SLAVE_JUMP) fprintf(stdout, "tmp.dat\n");#endif#endif fprintf(stdout, "const.dat\n");#ifdef SLAVE_JUMP fprintf(stdout, "uncomp.dat\n"); fprintf(stdout, "uncomp.txt\n"); fprintf(stdout, "rdsa.rom program\n"); fprintf(stdout, "demux.rom program compress\n");#else#ifdef COMBINED fprintf(stdout, "drive.rom program\n"); fprintf(stdout, "demux30.rom program\n"); fprintf(stdout, "rdsa30.rom program\n;\n");#else fprintf(stdout, "demux.rom program\n"); fprintf(stdout, "rdsa.rom program\n;\n");#endif#endif#ifdef COMBINED fprintf(stdout, "__reload.dat\n"); fprintf(stdout, "[reload]\n"); fprintf(stdout, "drive.rom\n");#endif fprintf(stdout, "[output]\nbank%d%%d.rom\n;\n", (bank > 3) ? 3 : bank); fprintf(stdout, "[variables]\n"); fprintf(stdout, "_vcx_romdatastart const.dat\n" );#ifdef COMBINED fprintf(stdout, "_data_loc_30 __reload.dat\n");#endif#ifdef JUMP_512K fprintf(stdout, "_Jump_addr boot\n");#endif return(0);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -