📄 makez80.c
字号:
/* search for [kayamon] for the fixed part *//* Multi-Z80 32 Bit emulator *//* Copyright 1996, 1997, 1998, 1999 Neil Bradley, All rights reserved * * License agreement: * * (MZ80 Refers to both the assembly code emitted by makeZ80.c and makeZ80.c * itself) * * MZ80 May be distributed in unmodified form to any medium. * * MZ80 May not be sold, or sold as a part of a commercial package without * the express written permission of Neil Bradley (neil@synthcom.com). This * includes shareware. * * Modified versions of MZ80 may not be publicly redistributed without author * approval (neil@synthcom.com). This includes distributing via a publicly * accessible LAN. You may make your own source modifications and distribute * MZ80 in source or object form, but if you make modifications to MZ80 * then it should be noted in the top as a comment in makeZ80.c. * * MZ80 Licensing for commercial applications is available. Please email * neil@synthcom.com for details. * * Synthcom Systems, Inc, and Neil Bradley will not be held responsible for * any 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 or * in the documentation. * * Legal stuff aside: * * If you find problems with MZ80, please email the author so they can get * resolved. If you find a bug and fix it, please also email the author so * that those bug fixes can be propogated to the installed base of MZ80 * users. If you find performance improvements or problems with MZ80, please * email the author with your changes/suggestions and they will be rolled in * with subsequent releases of MZ80. * * The whole idea of this emulator is to have the fastest available 32 bit * Multi-Z80 emulator for the PC, giving maximum performance. */ #include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>// Use word access for push/pop words (not working for some reason)//#define WORD_ACCESS// Use newer read/write byte code (not working for tnzs)//#define NEW_WRITE//#define NEW_READ// Use old MZ80 int code (new one doesn't work for some reason)#define OLD_INT// Clear which has always been edx:#define CLEAR_EDX() fprintf(fp, " xor edx, edx\n")// Clear which was dh in 2.4 and edx in 2.6:#define CLEAR_DH() fprintf(fp, " xor edx, edx\n")// Clear which has always been dh:#define CLEAR_DH_FORCED() fprintf(fp, " xor dh, dh\n")// Clear which was dh in 2.4 and removed in 2.6:#define CLEAR_DH_OLD() //fprintf(fp, " xor dh, dh\n")#define VERSION "2.7raine"#define TRUE 0xff#define FALSE 0x0#define INVALID 0xff#define UINT32 unsigned long int#define UINT8 unsigned char#define TIMING_REGULAR 0x00#define TIMING_XXCB 0x01#define TIMING_CB 0xcb#define TIMING_DDFD 0xdd#define TIMING_ED 0xed#define TIMING_EXCEPT 0x02FILE *fp = NULL;char string[150];char cpubasename[150];char mz80Index[50];char majorOp[50];char procname[150];UINT32 dwGlobalLabel = 0;UINT8 bPlain = FALSE;UINT8 bNoTiming = FALSE;UINT8 bUseStack = FALSE;UINT8 bSingleStep = FALSE;UINT8 bCurrentMode = TIMING_REGULAR; // Current timing modeUINT8 b16BitIo = FALSE;UINT8 bThroughCallHandler = FALSE;void ProcBegin(UINT32 dwOpcode);UINT8 *pbLocalReg[8] ={ "ch", "cl", "dh", "dl", "bh", "bl", "dl", "al"};UINT8 *pbPushReg[8] = { "cl", "ch", "byte [_z80de]", "byte [_z80de + 1]", "bl", "bh", "ah", "al"};UINT8 *pbFlags[8] ={ "nz", "z", "nc", "c", "po", "pe", "ns", "s"};UINT8 *pbMathReg[8] ={ "ch", "cl", "byte [_z80de + 1]", "byte [_z80de]", "bh", "bl", "INVALID", "al"};UINT8 *pbRegPairs[4] = { "cx", // BC "word [_z80de]", // DE "bx", // HL "word [_z80sp]" // SP};UINT8 *pbPopRegPairs[4] = { "cx", // BC "word [_z80de]", // DE "bx", // HL "ax" // SP};UINT8 *pbIndexedRegPairs[4] = { "cx", // BC "word [_z80de]", // DE "di", // IX/IY "word [_z80sp]" // SP};// Timing tablesUINT8 bTimingRegular[0x100] ={ 0x04, 0x0a, 0x07, 0x06, 0x04, 0x04, 0x07, 0x04, 0x04, 0x0b, 0x07, 0x06, 0x04, 0x04, 0x07, 0x04, 0x08, 0x0a, 0x07, 0x06, 0x04, 0x04, 0x07, 0x04, 0x07, 0x0b, 0x07, 0x06, 0x04, 0x04, 0x07, 0x04, 0x07, 0x0a, 0x10, 0x06, 0x04, 0x04, 0x07, 0x04, 0x07, 0x0b, 0x10, 0x06, 0x04, 0x04, 0x07, 0x04, 0x07, 0x0a, 0x0d, 0x06, 0x0b, 0x0b, 0x0a, 0x04, 0x07, 0x0b, 0x0d, 0x06, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x07, 0x0b, 0x05, 0x0a, 0x0a, 0x00, 0x0a, 0x0a, 0x07, 0x0b, 0x05, 0x0a, 0x0a, 0x0b, 0x0a, 0x0b, 0x07, 0x0b, 0x05, 0x04, 0x0a, 0x0b, 0x0a, 0x00, 0x07, 0x0b, 0x05, 0x0a, 0x0a, 0x13, 0x0a, 0x0b, 0x07, 0x0b, 0x05, 0x04, 0x0a, 0x04, 0x0a, 0x00, 0x07, 0x0b, 0x05, 0x0a, 0x0a, 0x04, 0x0a, 0x0b, 0x07, 0x0b, 0x05, 0x06, 0x0a, 0x04, 0x0a, 0x00, 0x07, 0x0b};UINT8 bTimingCB[0x100] ={ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08};UINT8 bTimingXXCB[0x100] ={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00};UINT8 bTimingDDFD[0x100] ={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x0a, 0x09, 0x09, 0x09, 0x00, 0x00, 0x0f, 0x14, 0x0a, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x13, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x13, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x13, 0x09, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x17, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};UINT8 bTimingED[0x100] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x0e, 0x08, 0x09, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x0e, 0x08, 0x09, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x09, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x09, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x12, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x12, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x00, 0x0c, 0x0c, 0x0f, 0x14, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };void EDHandler(UINT32 dwOpcode);void DDHandler(UINT32 dwOpcode);void FDHandler(UINT32 dwOpcode);void CBHandler(UINT32 dwOpcode);void PushPopOperations(UINT32 dwOpcode);void AddRegpairOperations(UINT32 dwOpcode);void CallHandler(UINT32 dwOpcode);void MiscHandler(UINT32 dwOpcode);void IMHandler(UINT32 dwOpcode);void IRHandler(UINT32 dwOpcode);void LdRegPairImmediate(UINT32 dwOpcode);void LoadImmediate(UINT32 dwOpcode);void LdRegpairPtrByte(UINT32 dwOpcode);void MathOperation(UINT32 dwOpcode);void RegIntoMemory(UINT32 dwOpcode);void JpHandler(UINT32 dwOpcode);void LdRegImmediate(UINT32 dwOpcode);void IncRegister(UINT32 dwOpcode);void DecRegister(UINT32 dwOpcode);void IncDecRegpair(UINT32 dwOpcode);void LdRegReg(UINT32 dwOpcode);void MathOperationDirect(UINT32 dwOpcode);void JrHandler(UINT32 dwOpcode);void RetHandler(UINT32 dwOpcode);void RestartHandler(UINT32 dwOpcode);void ToRegFromHl(UINT32);void RraRlaHandler(UINT32);void LdByteRegpair(UINT32);void IncDecHLPtr(UINT32 dwOpcode);void InOutHandler(UINT32 dwOpcode);void RLCRRCRLRRSLASRASRLHandler(UINT32 dwOpcode);void BITHandler(UINT32 dwOpcode);void RESSETHandler(UINT32 dwOpcode);void PushPopOperationsIndexed(UINT32 dwOpcode);void LDILDRLDIRLDDRHandler(UINT32);void LdRegpair(UINT32 dwOpcode);void ExtendedRegIntoMemory(UINT32 dwOpcode);void NegHandler(UINT32 dwOpcode);void ExtendedInHandler(UINT32 dwOpcode);void ExtendedOutHandler(UINT32 dwOpcode);void RetIRetNHandler(UINT32 dwOcode);void AdcSbcRegpair(UINT32 dwOpcode);void CPICPDCPIRCPDRHandler(UINT32 dwOpcode);void RRDRLDHandler(UINT32 dwOpcode);void UndocRegToIndex(UINT32 dwOpcode);void UndocIndexToReg(UINT32 dwOpcode);void MathOperationIndexed(UINT32 dwOpcode);void IncDecIndexed(UINT32 dwOpcode);void DDFDCBHandler(UINT32 dwOpcode);void JPIXIYHandler(UINT32 dwOpcode);void AddIndexHandler(UINT32 dwOpcode);void SPToIndex(UINT32 dwOpcode);void LdByteToIndex(UINT32 dwOpcode);void LdRegIndexOffset(UINT32 dwOpcode);void IncDecIndexReg(UINT32 dwOpcode);void ExIndexed(UINT32 dwOpcode);void UndocIncDecIndexReg(UINT32 dwOpcode);void UndocLoadHalfIndexReg(UINT32 dwOpcode);void UndocMathIndex(UINT32 dwOpcode);void ddcbBitWise(UINT32 dwOpcode);void LdIndexPtrReg(UINT32 dwOpcode);void StoreIndexReg(UINT32 dwOpcode);void LoadIndexReg(UINT32 dwOpcode);void OTIROTDROUTIOUTDHandler(UINT32 dwOpcode);void INIRINDRINIINDHandler(UINT32 dwOpcode);struct sOp{ UINT32 bOpCode; void (*Emitter)(UINT32);};struct sOp StandardOps[] ={ {0xd3, InOutHandler}, // V {0xdb, InOutHandler}, // V {0x0a, LdByteRegpair}, // V {0x1a, LdByteRegpair}, // V {0x17, RraRlaHandler}, // V {0x1f, RraRlaHandler}, // V {0x05, DecRegister}, // V {0x0d, DecRegister}, // V {0x15, DecRegister}, // V {0x1d, DecRegister}, // V {0x25, DecRegister}, // V {0x2d, DecRegister}, // V {0x3d, DecRegister}, // V {0x04, IncRegister}, // V {0x0c, IncRegister}, // V {0x14, IncRegister}, // V {0x1c, IncRegister}, // V {0x24, IncRegister}, // V {0x2c, IncRegister}, // V {0x3c, IncRegister}, // V {0x32, RegIntoMemory}, // V {0x22, RegIntoMemory}, // V {0xc3, JpHandler}, // V {0xc2, JpHandler}, // V {0xca, JpHandler}, // V {0xd2, JpHandler}, // V {0xda, JpHandler}, // V {0xe2, JpHandler}, // V {0xea, JpHandler}, // V {0xf2, JpHandler}, // V {0xfa, JpHandler}, // V {0x06, LdRegImmediate}, // V {0x0e, LdRegImmediate}, // V {0x16, LdRegImmediate}, // V {0x1e, LdRegImmediate}, // V {0x26, LdRegImmediate}, // V {0x2e, LdRegImmediate}, // V {0x3e, LdRegImmediate}, // V {0x0b, IncDecRegpair}, // V {0x1b, IncDecRegpair}, // V {0x2b, IncDecRegpair}, // V {0x3b, IncDecRegpair}, // V {0x03, IncDecRegpair}, // V {0x13, IncDecRegpair}, // V {0x23, IncDecRegpair}, // V {0x33, IncDecRegpair}, // V {0x34, IncDecHLPtr}, // V {0x35, IncDecHLPtr}, // V {0xcb, CBHandler}, {0xdd, DDHandler}, {0xed, EDHandler}, {0xfd, FDHandler}, {0x01, LdRegPairImmediate}, // V {0x11, LdRegPairImmediate}, // V {0x21, LdRegPairImmediate}, // V {0x31, LdRegPairImmediate}, // V {0xe3, MiscHandler}, // V {0x2a, MiscHandler}, // V {0xfb, MiscHandler}, // V {0xf9, MiscHandler}, // V {0xd9, MiscHandler}, // V {0x76, MiscHandler}, // V
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -