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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mz80.txt

?? 十七種模擬器源代碼 非常有用的作課程設計不可缺少的
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
Multi-Z80 32 Bit emulatorCopyright 1996, 1997, 1998, 1999, 2000 - Neil Bradley, All rights reserved			    MZ80 License agreement			    -----------------------(MZ80 Refers to both the assembly code emitted by makez80.c and makez80.citself)MZ80 May be distributed in unmodified form to any medium.MZ80 May not be sold, or sold as a part of a commercial package withoutthe express written permission of Neil Bradley (neil@synthcom.com). Thisincludes shareware.Modified versions of MZ80 may not be publicly redistributed without authorapproval (neil@synthcom.com). This includes distributing via a publiclyaccessible LAN. You may make your own source modifications and distributeMZ80 in source or object form, but if you make modifications to MZ80then it should be noted in the top as a comment in makez80.c.MZ80 Licensing for commercial applications is available. Please emailneil@synthcom.com for details.Synthcom Systems, Inc, and Neil Bradley will not be held responsible forany damage done by the use of MZ80. It is purely "as-is".If you use MZ80 in a freeware application, credit in the following text:"Multi-Z80 CPU emulator by Neil Bradley (neil@synthcom.com)"must accompany the freeware application within the application itself orin the documentation.Legal stuff aside:If you find problems with MZ80, please email the author so they can getresolved. If you find a bug and fix it, please also email the author sothat those bug fixes can be propogated to the installed base of MZ80users. If you find performance improvements or problems with MZ80, pleaseemail the author with your changes/suggestions and they will be rolled inwith subsequent releases of MZ80.The whole idea of this emulator is to have the fastest available 32 bitMulti-Z80 emulator for the x86, giving maximum performance.                          MZ80 Contact information			  -------------------------Author      : Neil Bradley (neil@synthcom.com)Distribution: ftp://ftp.synthcom.com/pub/emulators/cpu/makez80.zip (latest)You can join the cpuemu mailing list on Synthcom for discussion of NeilBradley's Z80 (and other) CPU emulators. Send a message to "cpuemu-request@synthcom.com" with "subscribe" in the message body. Thetraffic is fairly low, and is used as a general discussion and announcementfor aforementioned emulators.			     MZ80 Documentation			     -------------------MZ80 Is a full featured Z80 emulator coded in 32 bit assembly. It runs wellover a hundred games, in addition to it supporting many undocumented Z80instructions required to run some of the Midway MCR games, Galaga, andcountless other wonderful Z80 based arcade games.MZ80 Contains a makez80.c program that must be compiled. It is the programthat emits the assembly code that NASM will compile. This minimizes thepossibility of bugs creeping in to MZ80 for the different addressing modesfor each instruction. It requires NASM 0.97 or greater.The goal of MZ80 is to have a high performance Z80 emulator that is capableof running multiple emulations concurrently at full speed, even on lower-endmachines (486/33). MZ80 Harnesses the striking similarities of both the Z80and the x86 instruction sets to take advantage of flag handling which greatlyreduces the time required to emulate a processor, so no extra time is spentcomputing things that are already available in the native x86 processor,allowing it to perform leaps and bounds over comparable C based Z80 emulatorson the same platform.MZ80 Is designed exclusively for use with NASM, the Netwide Assembler. Thisgives the ultimate in flexibility, as NASM can emit object files that workwith Watcom, Microsoft Visual C++ (4.0-current), DJGPP, Borland C++, andgcc under FreeBSD or Linux. MZ80 Has been tested with each one of thesecompilers and is known to work properly on each.			    What's in the package			    ---------------------MZ80.TXT               - This text fileMAKEZ80.C              - Multi Z80 32 Bit emulator emitter programMZ80.H                 - C Header file for MZ80 functions			  What's new in this release			  --------------------------Revision 3.3:	* Undocumented opcodes added to the C emitter	* Bug fix to the C emission that properly handles shared RAM regions	  (I.E. with handlers that are NULL)	* Now using 32 bit registers to do register/memory access. Slight	  speed increase (assembly version only)Revision 3.2:		* R Register emulation now accurate with a real Z80	* mz80int() Called when interrupts are disabled causes the	  z80intPending flag to be set, and an interrupt will be caused after	  the execution of EI and the next instruction. See "IMPORTANT NOTE	  ABOUT INTERRUPTS" below	* The instruction after EI executes fully before interrupt status is	  checked. (as does a real Z80)Revision 3.1:	* Fixed bug in memory dereference when handler was set to NULL (keeps	  system from crashing or faulting)	* Removed the only stricmp() from the entire file and replaced it	  with strcmp() so that stdlibs without it will compile	* Changed cyclesRemaining > 0 to cyclesRemaining >= 0 to be compatible	  with the ASM core	* Removed additional sub [dwCyclesRemaining], 5 at the beginning of	  mz80exec() (ASM Core only). Increases timing accuracy.	* NMIs And INTs add additional time to dwElapsedTicks as it should	* mz80ReleaseTimeslice() Sets remaining clocks to 0 instead of 1Revision 3.0:	* All instructions validated against a real Z80. Used an ISA card	  with a Z80 on it to validate flag handling, instruction handling,	  timing, and other goodies. The only thing not implemented/emulated	  is flag bit 3 & 5 emulation. Believed to be 100% bug free!	* 80% Speed improvement over version 2.7 of mz80	* z80stb.c Removed. Use -c to emit a C version of mz80! API compatible!	  Note that this is mostly, but not fully, debugged, so consider the	  C version a beta! It's at least healthier than z80stb.c was. The C 	  version does not include the undocumented Z80 instructions.	* mz80nmi() No longer trashes registers it uses when using -cs	* IN/OUT Instructions work properly when using -16	* IN A, (xxh) uses A as high 8 bits of I/O fetch address when using -16	* IM 0/IM 1 Description in documentation fixed	* Sizes of all context registers increased to 32 bits - for speed!	* IFF1/IFF2 Now properly emulated	* JR Instruction offset can fetch from $ffff and properly wrap	* LDIR/LDDR Instruction now won't go to completion - instead it will	  run until BC=0 or the # of cycles to execute have expired. These	  instructions used to run to completion - even beyond the # of cycles	  left to execute	* INI/IND/INIR/INDR countdown bug fixed - it was decrementing B twice	  for each IN! Whoops!	* If you specify NULL as a handler address to a memory region, mz80 will	  use vpData as a pointer to where that block of data resides. Quite	  useful for multiprocessor emulations that share the same memory.	* EDI Now keeps track of cycle counting for faster execution	* Modified memory region scanning code to use 32 bit registers instead	  of their 16 bit counterparts	* Get/SetContext() uses rep movsd/movsb. Insignificant overall, but	  why waste the time?	* Debugging routines added. See the "DEBUGGING" section below for more	  information. NOTE: The debugging routines are not yet available in	  the C emission.	* Timing done slightly differently now. Mz80 now executes one 	  instruction past the timing given on input. For example, mz80exec(0)	  will cause a single instruction to be executed (thusly -ss was	  removed).Revision 2.7:	* Fixed OTIR/OTDR/INIR/INDR instructions so their 16 bit counterparts	  work properly	* Emulation core 30-70% faster overall than 2.6 due to optimization to	  the timing routines	* Replaced word reads/writes with a special word write routine rather	  than the standard calling to read/write byte functions	* z80stb.c (the C equivalent of mz80) compiles properly now	* Fixed OS/2 text/segment issue	* Fixed bug in set/getCPU context that ensures that ES=DS and avoids	  crashes. Caused crashes under OS/2 and other OS'sRevision 2.6:	* Emulator core 5-30% faster overall. Some 16 and 8 bit instructions	  sped up when using their 32 bit equivalents.	* Fix to -l so that proper labels without leading and trailing 	  underscores so Linux/FreeBSD compiles will work properly	* Single step now executes the # of instructions passed in to z80exec()	  instead of just 1 as it had in prior releases. This is only active	  when the -ss option is used.	* The -nt option was added. This will cause the timing information to	  not be added in, speeding up execution. Warning: Only do this if your	  emulated target does not require instruction timing!	* Updated documentation errors	* C Version of mz80 (mz80.c) that is API compliant is distributed with	  the archive (With kind permission of Edward Massey).Revision 2.5:	* Fixed an unconditional flag being cleared in the ddcbxx instructions.	  It caused Donkey Kong's barrels to not roll.Revision 2.4:	* Fixed improper HALT handling (didn't advance the PTR when it should)	* Fixed SRL (IX+$xx) instruction so that carry wasn't trashed	* Fixed single stepping problems with it giving too much time to 	  any given instruction	* Fixed half carry flag handling with 16 bit SBC and ADD instructions	* Fixed DAA emulation so that parity flags weren't getting trashedRevision 2.3:	* Fixed many stack handling bugs	* Timing problems fixed. The prior version was causing massive 	  overruns on maximum timeslices with some insutructions.Revision 2.2:	* Fixed a bug in CPI/CPD/CPIR/CPDR that mishandled flags	* All known bugs are out of mz80 now	* Added the -cs option to route all stack operations through the	  handlers (required for games like Galaga)Revision 2.1:	* Fixed a bug in CPI/CPD/CPIR/CPDR that caused intermittent lockups.	  Also fixed a bug that caused erratic behavior in several video games.	* Added INI/IND/INIR/INDR instruction group	* Added OUTI/OUTD/OTIR/OTDR instruction groupRevision 1.0:	* First release! The whole thing is new!ASSEMBLING FOR USE WITH WATCOM C/C++------------------------------------Watcom, by default, uses register calling conventions, as does MZ80. Tocreate a proper emulator for Watcom:	makez80 MZ80.asm -x86From here:	nasm -f win32 MZ80.asmLink the MZ80.obj with your Watcom linker.ASSEMBLING FOR USE WITH MICROSOFT VISUAL C++ AND BORLAND C++--------------------------------------------------------------------Visual C++ and Borland C++ use stack calling conventions by default. Tocreate a proper emulator for these compilers:	makez80 MZ80.asm -s -x86For Visual C++ or Borland C++:	nasm -f win32 MZ80.asmLink with your standard Visual C++ or Borland C++.ASSEMBLING FOR USE WITH DJGPP, GCC/FREEBSD, OR GCC/LINUX--------------------------------------------------------------------DJGPP Uses stack calling conventions:	makez80 MZ80.asm -s -x86To assemble:	nasm -f coff MZ80.asmLink with your standard DJGPP linker. The same holds true for GCC underFreeBSD or Linux. If you're using GCC, use the -l option to generate "plain"labels so that gcc's linker will properly link things.MAKEZ80 COMMAND LINE OPTIONS-----------------------------s	- Use stack calling conventions (DJGPP, MSVC, Borland, etc...)-cs	- Force all stack operations to go through the Read/Write memory handlers.	  This slows things down, but is useful when needed.-16	- Treat all I/O input and output as 16 bit (BC)-l	- Create 'plain' labels - ones without leading and trailing underscores-nt	- Do not generate timing code - this speeds the emulator up, but the	  downside is that no timing info is available.-c	- Emit a C mz80 emulator (API Compatible with the assembly version - 	  handy for porters!)-x86	- Emit an assembly (x86) mz80 emulator-os2	- Generate OS/2 compatible segmentationIMPORTANT NOTE ABOUT INTERRUPTS-------------------------------A minor change was made between the 3.1 and 3.2 versions of makez80 in theway that interrupts were handled.On a real Z80, the !INT line is a level triggered interrupt, meaning that ifthe interrupt line is held low, the Z80 will continue to take interrupts immediately after the instruction after the EI instruction is executed untilthe interrupt line is high again.In 3.1, if an interrupt came in and interrupts were disabled, the interruptwould never be "latched" for later execution. The Z80 does not have anyinternal latching capabilities, however external hardware often does holdthe interrupt line low until the interrupt is executed, in effect, a latch.I've only found one video game so far that requires the "raising/lowering"of the interrupt line (Ataxx). In the games that I've tried, it has improvedperformance, in some cases drastically, and in others not at all. This canbe accounted for by interrupts being taken now, where they were being droppedin prior mz80 releases.mz80 Emulates the most commonly used scenario. Now when mz80int() is executedand a nonzero value is returned (indicating interrupts were disabled), itwill set z80intPending, and the interrupt will be taken after execution ofone instruction beyond the EI instruction.So now, if mz80int() returns a nonzero value, that means an interrupt islatched. If clearing this latch is desired or the old behavior of 3.1 is desired, make a call to the mz80ClearPendingInterrupt() call. It's a 2 instruction call that has extremely small overhead and will not affect performance in any measurable way.In any case, MZ80 will now execute one instruction after EI regardless ofhow much time is available to avoid the possibility of an interrupt requestcoming in directly after the EI instruction. STEPS TO EMULATION------------------NOTE: -16 Is a command line option that will treat all I/O as 16 bit. Thatis, in an instruction like "IN AL, (C)", the addressed passed to the I/Ohandler will be BC instead of just C. Bear this in mind when considering youremulated platform.There are a few steps you want to go through to get proper emulation, and afew guidelines must be followed.1) Create a MZ80CONTEXT2) Create your virtual 64K memory space using whatever means of obtaining   memory you need to do.3) Set mz80Base in your context to be the base of your 64K memory space4) Load up your image to be emulated within that 64K address space.5) Set z80IoRead and z80IoWrite to their appropriate structure arrays. Here's   an example:struct z80PortRead ReadPorts[] ={	{0x10,	0x1f,	SoundChip1Read},	{0x20,	0x2f,	SoundChip2Read}	{(UINT32) -1,     (UINT32) -1, NULL}};When an IN instruction occurs, mz80 will probe this table looking for ahandler to the address of the "IN" instruction. If it is found in the list,it's up to the handler to return the proper value. Otherwise, a value of0ffh is returned internally if no handler for that I/O address is found. Inthe case above, SoundChip1Read is called when the I/O address is between 0x10-0x1f. A similar structure is used for I/O writes as well (OUT):struct z80PortWrite WritePorts[] ={	{0x20,	0x2f,	SoundChip2Write},	{0x30,	0x36,	VideoCtrlWrite},	{(UINT32) -1, 	(UINT32) -1, NULL}}Of course, this does the opposite that the z80PortRead struct, and insteadlooks for a handler to hand some data to. If it doesn't find an appropriatehandler, nothing happens.6) Set mz80MemoryRead & mz80MemoryWrite to their appropriate structure   arrays. Here is an example:struct MemoryWriteByte GameWrite[] ={

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品水蜜桃| 精品一区二区三区的国产在线播放| 国内外成人在线视频| 欧美一区二区在线免费观看| 亚洲成a人片综合在线| 91精品国产欧美一区二区18 | 免费在线成人网| 日韩一级黄色大片| 精品一区二区精品| 国产欧美日韩亚州综合| 欧美精品乱码久久久久久按摩| 一区2区3区在线看| 日韩一区二区在线看| 国产在线不卡视频| 亚洲美女淫视频| 欧美一区二区三区精品| 国产一区二区在线观看免费| 国产精品久久久久影院| 欧美日韩三级视频| 韩国精品在线观看| 亚洲欧美二区三区| 日韩欧美中文字幕精品| 高清不卡在线观看| 偷拍一区二区三区四区| 亚洲国产成人在线| 在线播放日韩导航| av在线播放一区二区三区| 一区二区国产盗摄色噜噜| 欧美va在线播放| 99riav久久精品riav| 久久成人综合网| 亚洲综合男人的天堂| 亚洲国产cao| 久久久影视传媒| 欧美一区二区不卡视频| 91在线观看一区二区| 麻豆精品一区二区综合av| 亚洲色图19p| 国产欧美日韩三区| 欧美成人午夜电影| 欧美男同性恋视频网站| 成人精品gif动图一区| 久久av中文字幕片| 婷婷久久综合九色综合绿巨人| 国产欧美一区在线| 欧美成人video| 欧美日韩精品一区二区三区 | 亚洲成人免费在线观看| 久久精品亚洲国产奇米99| 欧美日韩午夜精品| 一本一本久久a久久精品综合麻豆| 精品亚洲成av人在线观看| 日韩精品亚洲一区二区三区免费| 中文幕一区二区三区久久蜜桃| 日韩一卡二卡三卡国产欧美| 欧美在线观看视频一区二区| 99re8在线精品视频免费播放| 国内精品久久久久影院薰衣草| 天堂久久久久va久久久久| 亚洲综合无码一区二区| 亚洲久草在线视频| 亚洲欧美日韩电影| 亚洲精品乱码久久久久久黑人| 国产精品久久久久久亚洲伦 | 欧美精品国产精品| 日本乱人伦一区| 色综合久久久久久久久久久| 97se亚洲国产综合在线| 91免费看`日韩一区二区| 99精品国产视频| 99r国产精品| 欧美亚洲国产怡红院影院| 91久久免费观看| 欧美日韩在线播| 日韩天堂在线观看| 欧美精品一区二区三区蜜桃| 欧美激情一区不卡| 亚洲猫色日本管| 亚洲一区二区在线免费看| 亚洲在线视频免费观看| 免费视频最近日韩| 国产一区二区三区美女| 成人激情免费电影网址| 色哟哟欧美精品| 欧美日韩第一区日日骚| 欧美大黄免费观看| 中文字幕一区二区三区av| 亚洲美女屁股眼交| 青青草国产成人av片免费 | 日韩欧美一区二区久久婷婷| 久久免费国产精品| 国产精品国产三级国产专播品爱网| 中文字幕日本乱码精品影院| 一区二区三区.www| 国产自产高清不卡| 91社区在线播放| 日韩欧美久久一区| 国产精品视频yy9299一区| 亚洲一区二区av在线| 国内外精品视频| 欧美男生操女生| 中文一区在线播放| 日本美女一区二区三区视频| 国产91富婆露脸刺激对白| 欧美视频一区二区三区四区 | 波多野结衣91| 欧美大度的电影原声| 国产精品电影院| 黑人巨大精品欧美一区| 在线精品视频免费播放| 欧美国产日韩亚洲一区| 日本成人在线网站| 91亚洲大成网污www| 久久夜色精品一区| 日韩精品欧美精品| 在线免费观看日本欧美| 久久亚洲一级片| 日韩成人一级大片| 欧美日韩一级二级| 亚洲色图欧美偷拍| 北岛玲一区二区三区四区| 精品88久久久久88久久久| 亚洲国产美国国产综合一区二区| 成人动漫视频在线| 久久毛片高清国产| 玖玖九九国产精品| 日韩一区二区三区免费看| 亚洲成va人在线观看| 91网站最新网址| 国产精品日产欧美久久久久| 黄网站免费久久| 日韩一级二级三级精品视频| 亚洲一区二区三区精品在线| 91啪亚洲精品| 亚洲欧美日韩一区二区三区在线观看| 国产成人高清在线| 久久久精品影视| 国产乱色国产精品免费视频| 久久蜜臀中文字幕| 国产真实乱对白精彩久久| 精品国产3级a| 国产精品一区专区| 日本一区二区三区四区在线视频| 国产乱码字幕精品高清av| 久久久久九九视频| 国产酒店精品激情| 国产精品午夜久久| 色偷偷久久一区二区三区| 亚洲欧美另类小说视频| caoporm超碰国产精品| 中文字幕一区二区在线播放| 91一区二区在线| 日韩精品一区第一页| 精品美女一区二区| 国产不卡免费视频| 亚洲综合久久久| 91精品国产一区二区| 激情小说欧美图片| 国产精品美女一区二区在线观看| 91亚洲精品一区二区乱码| 亚洲自拍偷拍综合| 日韩免费性生活视频播放| 精品制服美女丁香| 亚洲欧美综合网| 欧美久久久久中文字幕| 精品一区二区三区在线视频| 国产精品盗摄一区二区三区| 91福利精品第一导航| 久久99精品国产.久久久久久 | 成人午夜在线免费| 亚洲最大成人综合| 欧美一区二区三区色| 成人免费毛片app| 日日摸夜夜添夜夜添精品视频| 日韩一区二区三区电影| 国产成人免费9x9x人网站视频| 亚洲欧美日韩综合aⅴ视频| 91精品国产综合久久久久久| 国产精品一线二线三线精华| 亚洲最大成人网4388xx| 久久精品一区二区三区不卡 | 欧美成人午夜电影| 在线中文字幕一区| 国产伦精品一区二区三区免费 | 美女视频黄免费的久久 | 久久久精品免费观看| 日本韩国欧美在线| 国产精品资源在线| 一区二区三区欧美日| 久久一夜天堂av一区二区三区| 色哟哟一区二区三区| 国产精品中文字幕日韩精品| 亚洲va韩国va欧美va精品| 国产精品视频线看| 久久久亚洲午夜电影| 正在播放一区二区| 欧美日韩精品一区视频| 一本一道久久a久久精品综合蜜臀| 国产精品99久久久久久久女警| 日韩国产欧美一区二区三区|