2 dZ80 Disassembler Private Header
11 #define MARKBLANKLINE d->lineCmd |= LC_BLANKLINE
12 #define ISCODEBYTE(d, pc) (d->opMap[pc >> 3] & (1 << (pc & 7)))
14 #define Z80IX 0x01 /* We're on a IX prefix */
15 #define Z80IY 0x02 /* We're on a IY prefix */
16 #define Z80GOTIXIYDISP 0x04 /* Got IX/IY displacement */
17 #define Z80CB 0x08 /* Processing a CB op-code */
18 #define Z80ED 0x10 /* Processing a ED op-code */
19 #define Z80COMMENT 0x20 /* Have written a comment */
21 #define Z80IXIY (Z80IX | Z80IY)
23 /* The options are used to control what happens after each instruction disassembly */
24 #define LC_BLANKLINE 0x0001
27 #define COMMENTCOLUMN 40
29 /* Opcode trap map bits */
30 #define D_SCRIPT_PRE 0x01
31 #define D_SCRIPT_POST 0x02
33 #define PROGRESSUPDATEFREQ 100 /* Num. instructions to disassemble before updating progress */
44 void PrepareDisInstruction(DISZ80
*d
);
45 void DisassembleInstruction(DISZ80
*d
);
46 int LookOpcode(DISZ80
*d
, int offset
);
47 int GetNextOpCode(DISZ80
*d
);
49 void DisCB(DISZ80
*d
);
50 void DisDDCB(DISZ80
*d
);
51 void DisED(DISZ80
*d
);
52 void Dis40to7F(DISZ80
*d
);
53 void Dis80toBF(DISZ80
*d
);
54 void DisC0toFF(DISZ80
*d
);
55 void Dis00to3F(DISZ80
*d
);
56 int DisED00to3F(DISZ80
*d
);
57 int DisED40to7F(DISZ80
*d
);
58 int DisED80toBF(DISZ80
*d
);
60 void AddToDis(DISZ80
*d
, char *str
);
61 void AddToDisTab(DISZ80
*d
, char *str
);
62 void AddToDisTabDB(DISZ80
*d
);
63 void AddToDisTabLD(DISZ80
*d
, char *str
);
64 void AddToDisReg8(DISZ80
*d
, int op
, int op2
);
65 void AddToDisReg16(DISZ80
*d
, int op
);
66 void AddToDisReg16NoAnd(DISZ80
*d
, int op
);
67 void AddToDisHLIXIY(DISZ80
*d
);
68 void AddToDisUnknown(DISZ80
*d
, char *Comment
);
69 char GetIXIYDisplacement(DISZ80
*d
);
71 WORD
AddToDis16BitAbs(DISZ80
*d
, int CommaFlag
);
72 void AddToDis8BitAbs(DISZ80
*d
, int CommaFlag
);
73 WORD
AddToDisRel8(DISZ80
*d
, int CommaFlag
);
74 void AddToDisComment(DISZ80
*d
, char *str
);
75 void AddToDisCommentZ180(DISZ80
*d
);
76 void FlagFn(DISZ80
*d
, unsigned int Addr
);
77 int IsFnUsed(DISZ80
*d
, unsigned int Addr
);
78 void AddToDisUndoc(DISZ80
*d
);
79 void AddToDisUndocNop(DISZ80
*d
);
80 WORD
Get16BitParam(DISZ80
*d
);
81 void DisZ80CleanUp(DISZ80
*d
);
82 int CreateOutputASMFile(DISZ80
*d
);
83 int PrepareOpMap(DISZ80
*d
);
84 void AddRefEntry(DISZ80
*d
, int Addr
, int PC
, int RefType
);
85 void AddReferenceAddr(DISZ80
*d
, DISREF
*p
, int PC
);
86 void WriteReferenceFile(DISZ80
*d
);
87 int PrepareReferenceListing(DISZ80
*d
);
88 void DoProgress(DISZ80
*d
, int forceUpdate
);
89 void Add16BitAddress(DISZ80
*d
, WORD Addr
);
90 void UnderlineText(FILE *stream
, char *text
);
93 void Add8BitNum(DISZ80
*d
, int Num
);
94 void Make8BitNum(DISZ80
*d
, char *Dst
, int Num
);
95 void Add16BitNum(DISZ80
*d
, int Num
);
96 void Make16BitNum(DISZ80
*d
, char *Dst
, int Num
);
97 void MakeLJustified16BitNum(DISZ80
*d
, char *Dst
, int Num
);
98 BYTE
* AllocateMap(DISZ80
*d
, char *ErrorStr
, unsigned int BytesWanted
);
99 int WriteDisLine(DISZ80
*d
, unsigned int Addr
);
100 void StartPass(DISZ80
*d
);
101 int WithinDisRange(DISZ80
*d
);
103 /* Added in 2.0: Script functions */
104 int InitOpcodeTraps(DISZ80
*d
);
105 int ShutdownScripting(DISZ80
*d
);
106 int InitScripting(DISZ80
*d
);
107 int ExecPreTrap(DISZ80
*d
);
108 void ExecPostTrap(DISZ80
*d
);
110 #ifndef _DZ80_EXCLUDE_SCRIPT
111 /* Lua support extensions */
112 DISZ80
*GetD(lua_State
*ls
);
113 int d_FromHex(lua_State
*ls
);
114 int LuaErrorHandler(lua_State
*ls
);
118 extern char *VersionString
;
119 extern char *IMModes
[4];
120 extern char *Conditions
[8];
121 extern char *AccRotType
[8];
122 extern char *CBRotType
[8];
123 extern char *Reg8Idx
[8];
124 extern char *Reg8AFIdx
[8];
125 extern char *Reg16Idx
[5];
126 extern char *BasicOps
[8];
127 extern char *RepeatOps
[16];
128 extern char *Z180RepeatOps
[4];
129 extern char *dZ80ErrorMsgs
[DERR_TOTAL
];
133 #endif /* _MIDISSZ80P_ */