亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? memory.c

?? 樹大根深三棱盡所標(biāo)桿ssfsfsa fdsafs
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
      if ((char *)offset != resetv) {	/* It may not always be page aligned... */	pageoffset = ((offset-1) & ~(getpagesize() - 1)) + getpagesize();	if ((st.st_size + offset) > rom_size)          rom_size <<= 1;fprintf(stderr, "%s,%d remap\n", __FILE__, __LINE__);	rommemory = (UWORD *)mmap((void*)(rommemory + pageoffset),                                  rom_size - pageoffset,				  PROT_READ | PROT_WRITE,				  MAP_FILE | MAP_PRIVATE | MAP_FIXED, f, 0);	if (rommemory == (UWORD *)-1) {fprintf(stderr, "%s,%d\n", __FILE__, __LINE__);	  return PILOTCPU_ERROR_LOADING_ROM;	}	memcpy(((char *)rommemory) - offset, rommemory, 256);	((char *)rommemory) -= offset;      }    }  }#ifndef WORDS_BIGENDIAN#if 1  for (i = 0; i < rom_size/2; i++) {    UWORD *p;    UBYTE *bp;    p = rommemory + i;    bp = (UBYTE *)p;    *p = (*bp << 8) | *(bp + 1);  }#else  for (i = 0; i < rom_size; i += 2) {  	char *p = rommemory + i, tmp;	tmp = p[0];	p[0] = p[1];	p[1] = tmp;  }#endif#endif  close(f);  return 0;}/* Scratch area */UBYTE *scratchmemory = NULL;static ULONG scratch_lget(CPTR);static UWORD scratch_wget(CPTR);static UBYTE scratch_bget(CPTR);static void  scratch_lput(CPTR, ULONG);static void  scratch_wput(CPTR, UWORD);static void  scratch_bput(CPTR, UBYTE);static int   scratch_check(CPTR addr, ULONG size);static UWORD *scratch_xlate(CPTR addr);ULONG scratch_lget(CPTR addr){    if (scratchmemory == NULL) return dummy_lget(addr);    addr -= scratch_start;    return ((ULONG)scratchmemory[addr] << 24)         | ((ULONG)scratchmemory[addr+1] << 16)         | ((ULONG)scratchmemory[addr+2] << 8)         | scratchmemory[addr+3];}UWORD scratch_wget(CPTR addr){    if (scratchmemory == NULL) return dummy_wget(addr);    addr -= scratch_start;    return ((UWORD)scratchmemory[addr] << 8) | scratchmemory[addr+1];}UBYTE scratch_bget(CPTR addr){    if (scratchmemory == NULL) return dummy_lget(addr);    addr -= scratch_start;    return scratchmemory[addr];}void scratch_lput(CPTR addr, ULONG l){    if (scratchmemory == NULL) return;    addr -= scratch_start;    scratchmemory[addr] = l >> 24;    scratchmemory[addr+1] = l >> 16;    scratchmemory[addr+2] = l >> 8;    scratchmemory[addr+3] = l;}void scratch_wput(CPTR addr, UWORD w){    if (scratchmemory == NULL) return;    addr -= scratch_start;    scratchmemory[addr] = w >> 8;    scratchmemory[addr+1] = w;}void scratch_bput(CPTR addr, UBYTE b){    if (scratchmemory == NULL) return;    addr -= scratch_start;    scratchmemory[addr] = b;}int scratch_check(CPTR addr, ULONG size){    if (scratchmemory == NULL) return 0;    return 1;}UWORD *scratch_xlate(CPTR addr){    return NULL; /* anything that calls this will assume swapped byte order! */}/* Address banks */addrbank dummy_bank = {    dummy_lget, dummy_wget, dummy_bget,    dummy_lput, dummy_wput, dummy_bput,    dummy_xlate, dummy_check};addrbank ram_bank = {    ram_lget, ram_wget, ram_bget,    ram_lput, ram_wput, ram_bput,    ram_xlate, ram_check};addrbank sram_bank = {    ram_lget, ram_wget, ram_bget,    sram_lput, sram_wput, sram_bput,    ram_xlate, ram_check};addrbank rom_bank = {    rom_lget, rom_wget, rom_bget,    rom_lput, rom_wput, rom_bput,    rom_xlate, rom_check};addrbank scratch_bank = {    scratch_lget, scratch_wget, scratch_bget,    scratch_lput, scratch_wput, scratch_bput,    scratch_xlate, scratch_check};void map_banks(addrbank bank, int start, int size){    int bnr;    for (bnr = start; bnr < start+size; bnr++)        membanks[bnr] = bank;}#ifdef NEED_FTRUNCATE/* -*-Mode: C;-*- * * MODULE:      ftruncate.c * * AUTHORS:     HO      Harry Ohlsen            harryo@ise.com.au *              RF      Rick Flower             rick.flower@trw.com * * PURPOSE:     Supplementary library function for ftruncate(); * * USAGE: * *      This routine is used to augment systems which don't have access *      to the ftruncate() system library function (such as SunOS). *      This routine tries to mimic as closely as possible the regular *      behavior that the standard library function performs, including *      the same return error codes where applicable. * *      This routine will return zero on success and non-zero (-1) on *      failure.  If it fails, it will also set errno appropriately. * * HISTORY: * *      This routine was snitched from some code originally written by *      Harry Ohlsen (see Authors above) and adapted by Rick Flower *      for this specific purpose. */#include <sys/types.h>#include <unistd.h>#include <errno.h>int ftruncate(int fd, off_t createSize){   int bytesToGo = createSize;   char        *crap;    /* We will get problems when we try to write stuff     * to the memory segment (it won't end up on disk,     * since mmap()-ed things don't extend).     */   crap  = (char *)malloc(createSize);   errno = 0;                           /* Reset errno value                 */   (void)memset(crap, 0x00, createSize);    while (bytesToGo > 0)   {      int bytesToWrite;      if (bytesToGo < createSize)         bytesToWrite = bytesToGo;      else         bytesToWrite = createSize;      if (write(fd, crap, bytesToWrite) != bytesToWrite)      {         free(crap);                    /* Free buffer space used up..       */         errno = EIO;                   /* Set error to indicate I/O error   */         return(-1);                    /* Return bad status to caller       */      }      bytesToGo -= bytesToWrite;   }   free(crap);                          /* Free buffer space used up..       */   return(0);                           /* Return valid status to caller     */}#endif/* * This routine replaces the original memory_init * It was taken from copilot-linux sources with minor changes */int memory_init(int ramsize, const char *dir, const char *romfile,                const char *ramfile, const char *scratchfile, int reset,		int check_entrypoint){  int i;  int f;  int res;  char *rambuf, *scratchbuf;  buserr = 0;  if (ramsize & (ramsize-1)) {    return PILOTCPU_ERROR_LOADING_RAM;  }  ram_size = ramsize * 1024;  ram_size_mask = ram_size - 1;  if (ramfile[0] != '/' && dir) {    rambuf = alloca(strlen(dir)+strlen(ramfile)+2);    if (!rambuf) {	return PILOTCPU_ERROR_LOADING_RAM;    }    sprintf(rambuf, "%s/%s", dir, ramfile);    ramfile = rambuf;  }  if (reset)    f = open(ramfile, O_RDWR|O_CREAT|O_TRUNC, 0666);  else    f = open(ramfile, O_RDWR|O_CREAT, 0666);  if (f == -1) {    return PILOTCPU_ERROR_LOADING_RAM;  }  ftruncate(f, ram_size);  rammemory = (UWORD*)mmap(0, ram_size, PROT_READ|PROT_WRITE,			   MAP_FILE|MAP_SHARED, f, 0);  if (rammemory == (UWORD*)-1) {    return PILOTCPU_ERROR_LOADING_RAM;  }  close(f);  if (scratchfile[0] != '/' && dir) {    scratchbuf = alloca(strlen(dir)+strlen(scratchfile)+2);    if (!scratchbuf) {	return PILOTCPU_ERROR_LOADING_RAM;    }    sprintf(scratchbuf, "%s/%s", dir, scratchfile);    scratchfile = scratchbuf;  }  f = open(scratchfile, O_RDWR|O_CREAT|O_TRUNC,0666);  if (f == -1) {    return PILOTCPU_ERROR_LOADING_RAM;  }  ftruncate(f, SCRATCH_SIZE);  scratchmemory = (unsigned char*)mmap(0, SCRATCH_SIZE, PROT_READ|PROT_WRITE,				       MAP_FILE|MAP_SHARED, f, 0);  close(f);	/*  f = open("cpustate", O_RDWR|O_CREAT|O_TRUNC,0666); *//*  if (f == -1) { *//*    return PILOTCPU_ERROR_LOADING_RAM; *//*  } *//*  ftruncate(f, state_size); */    /*  statememory = (char*)mmap(0, state_size, PROT_READ|PROT_WRITE, *//*			    MAP_FILE|MAP_SHARED, f, 0); *//*  close(f); */    /*  sharedstate = (struct state*)statememory; */    /*  CpuState = (int*)(sharedstate+1); *//*  ExceptionFlags = (int*)(CpuState+1); */  membanks = (addrbank *)malloc(65536 * sizeof(addrbank));  if (membanks == NULL) {    perror("memory_init");    exit(1);  }  for(i = 0; i < 65536; i++) {    membanks[i] = dummy_bank;  }#define NUM_BANKS(s) ((s)>>16 + (((s)&0xFFFF) ? 1 : 0))  map_banks(ram_bank, ram_start>>16, NUM_BANKS(ram_size) /*16*/);  map_banks(sram_bank, sram_start>>16, NUM_BANKS(ram_size));  map_banks(scratch_bank, scratch_start>>16, NUM_BANKS(SCRATCH_SIZE));  map_banks(custom_bank, custom_start>>16, 1);  res = load_rom(dir, romfile, check_entrypoint);  map_banks(rom_bank, rom_start>>16, NUM_BANKS(rom_size));  return res;}void mem_setscratchaddr(UBYTE *addr){  scratchmemory = addr;}unsigned int bankindex(CPTR a){    return a>>16;}ULONG longget(CPTR addr){    return membanks[bankindex(addr)].lget(addr);}UWORD wordget(CPTR addr){    return membanks[bankindex(addr)].wget(addr);}UBYTE byteget(CPTR addr) {    return membanks[bankindex(addr)].bget(addr);}void longput(CPTR addr, ULONG l){    membanks[bankindex(addr)].lput(addr, l);}void wordput(CPTR addr, UWORD w){    membanks[bankindex(addr)].wput(addr, w);}void byteput(CPTR addr, UBYTE b){    membanks[bankindex(addr)].bput(addr, b);}int check_addr(CPTR a){#ifdef NO_EXCEPTION_3    return 1;#else    return (a & 1) == 0;#endif}ULONG get_long(CPTR addr) {    if (check_addr(addr))	return longget(addr);    fprintf(stderr,	"Bus error: read a long from odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());    buserr = 1;    return 0;}UWORD get_word(CPTR addr) {    if (check_addr(addr))	return wordget(addr);    fprintf(stderr,	"Bus error: read a word from odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());    buserr = 1;    return 0;}UBYTE get_byte(CPTR addr) {    return byteget(addr); }void put_long(CPTR addr, ULONG l) {	CHECK_WATCH(addr, 4, l);    if ((addr & 0xfffffff0) == 0xdeadbee0) {      switch (addr & 0xf) {      case 0:	    fprintf(stderr, "PTR value is 0x%x\n\r", l);        return;      default:        puts("Barf!");        exit(0);      }    }    if (!check_addr(addr)) {	fprintf(stderr,	    "Bus error: wrote a long to odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());	buserr = 1;    }    longput(addr, l);}void put_word(CPTR addr, UWORD w) {	CHECK_WATCH(addr, 2, w);    if ((addr & 0xfffffff0) == 0xdeadbee0) {      switch (addr & 0xf) {      case 0:	    fprintf(stderr, "At line %d\n\r", w);        return;      default:        puts("Barf!");        exit(0);      }    }    if (!check_addr(addr)) {	fprintf(stderr,	    "Bus error: wrote a word to odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());	buserr = 1;    }    wordput(addr, w);}void put_byte(CPTR addr, UBYTE b) {	CHECK_WATCH(addr, 1, b);    if ((addr & 0xfffffff0) == 0xdeadbee0) {      switch (addr & 0xf) {      case 0:        text_offset = (Shptr->regs).d[0];        data_offset = (Shptr->regs).d[1];        bss_offset = (Shptr->regs).d[2];{int i; for (i=0;i<8;i++) fprintf(stderr,"A%d[%.8x]",i,(Shptr->regs).a[i]);fprintf(stderr,"\n\r");for (i=0;i<8;i++) fprintf(stderr,"D%d[%.8x]",i,(Shptr->regs).d[i]);fprintf(stderr,"\n\r");fflush(stderr);}        exectrace = 1;        return;      default:        puts("Barf!");        exit(0);      }    }    byteput(addr, b);}UWORD *get_real_address(CPTR addr){    if (!check_addr(addr)) {	fprintf(stderr,	    "Bus error: attempted translation of odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());	buserr = 1;    }    return membanks[bankindex(addr)].xlateaddr(addr);}int valid_address(CPTR addr, ULONG size){    if (!check_addr(addr)) {	fprintf(stderr,	    "Bus error: attempted validation of odd address 0x%08lx\n", addr);	fprintf(stderr, "PC=0x%08lx\n", MC68000_getpc());	buserr = 1;    }    return membanks[bankindex(addr)].check(addr, size);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文精品| 一区二区视频在线| 欧美一二三区精品| 欧美一卡2卡3卡4卡| 久久久精品国产免大香伊| 欧美精品一区二区不卡| 欧美一区二区精品久久911| 欧美一区二区三区小说| 精品国产一区二区精华| 久久综合成人精品亚洲另类欧美| 久久婷婷色综合| 中文av一区二区| 一区二区中文视频| 亚洲一区二区三区美女| 视频在线观看一区| 狠狠色丁香婷婷综合久久片| 国产一区高清在线| 成人午夜视频在线观看| 91免费视频大全| 欧美影院一区二区| 在线播放视频一区| xnxx国产精品| 国产精品国产成人国产三级| 亚洲午夜一二三区视频| 麻豆极品一区二区三区| 国产ts人妖一区二区| 91丨九色丨黑人外教| 欧美日韩激情在线| 精品日韩在线一区| 综合欧美亚洲日本| 免费在线观看精品| 成人h版在线观看| 欧美三区在线观看| www国产精品av| 一区二区视频免费在线观看| 蜜臂av日日欢夜夜爽一区| 国产成人一区在线| 欧美三级电影一区| 久久精品视频免费观看| 一区二区三区中文免费| 精品一区二区三区影院在线午夜| 成人黄色大片在线观看| 在线91免费看| 国产精品欧美经典| 日本不卡视频在线| 成人h动漫精品一区二| 制服丝袜在线91| 国产精品久久久久久久午夜片| 午夜精品影院在线观看| 国产精品99久久久久久似苏梦涵| 在线视频欧美区| 久久久久综合网| 午夜电影久久久| 丁香一区二区三区| 在线成人av影院| 国产精品久久777777| 免费成人在线观看视频| 91在线观看美女| 精品久久久久久久久久久久包黑料 | 福利91精品一区二区三区| 欧美主播一区二区三区| 欧美国产精品劲爆| 麻豆精品一区二区av白丝在线| 色综合婷婷久久| 国产欧美综合在线| 激情六月婷婷综合| 69久久99精品久久久久婷婷| 18涩涩午夜精品.www| 经典三级一区二区| 51午夜精品国产| 亚洲综合999| av亚洲精华国产精华精| 国产日韩av一区| 国产综合色精品一区二区三区| 欧美男人的天堂一二区| 一区二区三区欧美激情| 99久久久久久| 国产午夜精品久久| 韩国精品主播一区二区在线观看 | 国产福利91精品一区| 欧美裸体bbwbbwbbw| 亚洲欧美偷拍卡通变态| 国产精品亚洲午夜一区二区三区| 欧美大尺度电影在线| 日韩精品一卡二卡三卡四卡无卡| 日本高清成人免费播放| 亚洲少妇屁股交4| av一区二区三区| 中文一区二区完整视频在线观看| 国产综合久久久久久鬼色| 欧美一级搡bbbb搡bbbb| 五月综合激情网| 欧美日韩不卡在线| 日韩精品每日更新| 宅男噜噜噜66一区二区66| 五月天欧美精品| 91精品国模一区二区三区| 肉肉av福利一精品导航| 在线成人午夜影院| 久久精品噜噜噜成人av农村| 91精品国产手机| 另类小说色综合网站| 精品入口麻豆88视频| 国产精品综合二区| 欧美国产成人在线| 92精品国产成人观看免费| 日韩毛片视频在线看| 在线国产电影不卡| 五月天婷婷综合| 3d成人h动漫网站入口| 麻豆精品久久久| 国产亚洲精品中文字幕| 成人亚洲一区二区一| 一区二区中文字幕在线| 在线免费观看日本欧美| 视频一区国产视频| www国产成人免费观看视频 深夜成人网| 国产一区二区三区免费在线观看| 久久精品水蜜桃av综合天堂| av一区二区不卡| 亚洲丶国产丶欧美一区二区三区| 69精品人人人人| 国产在线精品一区二区不卡了| 国产农村妇女毛片精品久久麻豆| 91影院在线免费观看| 亚洲成人资源网| 久久综合资源网| 99精品一区二区| 天天av天天翘天天综合网 | 亚洲国产欧美一区二区三区丁香婷| 欧美久久久久免费| 国产成人三级在线观看| 一区二区三区在线免费观看| 在线综合+亚洲+欧美中文字幕| 国产资源精品在线观看| 亚洲色图19p| 日韩一级片在线播放| 粉嫩绯色av一区二区在线观看| 亚洲一区二区三区中文字幕在线| 91精品国产色综合久久不卡电影| 国产成人精品亚洲午夜麻豆| 亚洲午夜久久久久| 久久久久久久久久久久久久久99| 色噜噜夜夜夜综合网| 美女任你摸久久| 中文字幕在线一区二区三区| 8v天堂国产在线一区二区| 国产999精品久久久久久| 午夜精品视频在线观看| 国产午夜精品理论片a级大结局| 欧美亚日韩国产aⅴ精品中极品| 精品无人码麻豆乱码1区2区 | 日韩精品在线一区| av不卡免费在线观看| 日韩av电影天堂| 亚洲人成在线观看一区二区| 日韩午夜在线观看视频| 色妹子一区二区| 国产美女在线精品| 午夜精品视频在线观看| 国产精品久久免费看| 日韩一区二区三区在线视频| 色妞www精品视频| 国产suv一区二区三区88区| 热久久免费视频| 亚洲黄色小视频| 国产精品另类一区| 精品国产sm最大网站| 欧美日韩黄色一区二区| 91免费国产在线观看| 国产精品自在在线| 久久99国产乱子伦精品免费| 亚洲一级片在线观看| 亚洲欧洲日韩综合一区二区| 精品国产乱子伦一区| 91精品国产欧美日韩| 欧美综合亚洲图片综合区| 成人av午夜电影| 国产成人精品亚洲日本在线桃色 | 国产精品一卡二| 美女视频黄免费的久久| 亚洲aaa精品| 亚洲综合免费观看高清在线观看| 国产精品区一区二区三区| 久久久午夜精品理论片中文字幕| 91精品国产色综合久久不卡蜜臀| 欧美三级电影精品| 欧美在线影院一区二区| 色播五月激情综合网| jiyouzz国产精品久久| 国产凹凸在线观看一区二区| 激情国产一区二区| 精品一区二区av| 久久国产剧场电影| 蓝色福利精品导航| 九九**精品视频免费播放| 久久激情综合网| 久久99久久99小草精品免视看| 日韩精彩视频在线观看| 天堂成人国产精品一区|