Add VCS links
[debian-dgen.git] / dz80 / dissz80p.h
blob1546871d1bf570422b853e539bee0e6d4135f1ad
1 /*
2 dZ80 Disassembler Private Header
3 */
5 #ifndef _MIDISSZ80P_
6 #define _MIDISSZ80P_
8 #include "types.h"
9 #include "dissz80.h"
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
26 #define TABSIZE 8
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 */
35 #define REG_B 0
36 #define REG_C 1
37 #define REG_D 2
38 #define REG_E 3
39 #define REG_H 4
40 #define REG_L 5
41 #define REG_HL 6
42 #define REG_A 7
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);
92 /* Added in 1.50 */
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);
115 #endif
117 /* Misc tables */
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_ */