1 /*
2 BattleOS : Engage battling programs.
3
4 Copyright (C) 1993 Erich P Gatejen ALL RIGHTS RESERVED
5
6
7 File : ALLOPS.H
8 Purpose : Program code for the BattleOS Assembler
9
10 !! Program code for the allowable operations table !!
11
12 */
13
14
15 // --------------------------------------------------------------------------
16 // ---- INCLUDE files -------------------------------------------------------
17
18 // --------------------------------------------------------------------------
19 // ---- Local Classes -------------------------------------------------------
20
21
22 // --------------------------------------------------------------------------
23 // ---- Global Variables ----------------------------------------------------
24
25 // - Allowable operands table
26 BOOLEAN AllowableMoves[4][4] = {
27
28 // LEFT OPERAND
29 // REGISTER - REFERENCE - MEMORY - IMMEDIATE
30 // RIGHT OPERAND
31 { TRUE, TRUE, FALSE, FALSE }, // REGISTER
32 { TRUE, FALSE, FALSE, FALSE }, // REFERENCE
33 { TRUE, FALSE, FALSE, FALSE }, // MEMORY
34 { TRUE, TRUE, FALSE, FALSE }, // IMMEDIATE
35
36 };
37
38
39 // - Allowable operands table
40 BOOLEAN AllowRightOps[20][4] = {
41
42 // REGISTER - REFERENCE - MEMORY - IMMEDIATE
43
44 { FALSE, FALSE, FALSE, FALSE }, // DAT
45 { TRUE, TRUE, TRUE, TRUE }, // MOV
46 { TRUE, FALSE, TRUE, TRUE }, // CMP
47 { FALSE, FALSE, FALSE, FALSE }, // JE
48 { FALSE, FALSE, FALSE, FALSE }, // JB
49 { FALSE, FALSE, FALSE, FALSE }, // JA
50 { FALSE, FALSE, FALSE, FALSE }, // JMP
51 { FALSE, FALSE, FALSE, FALSE }, // INC
52 { FALSE, FALSE, FALSE, FALSE }, // DEC
53 { TRUE, FALSE, TRUE, TRUE }, // ADD
54 { TRUE, FALSE, TRUE, TRUE }, // SUB
55 { FALSE, FALSE, FALSE, FALSE }, // CALL
56 { FALSE, FALSE, FALSE, FALSE }, // RET
57 { FALSE, FALSE, FALSE, FALSE }, // PUSH
58 { FALSE, FALSE, FALSE, FALSE }, // POP
59 { FALSE, FALSE, FALSE, FALSE }, // RND
60 { TRUE, FALSE, TRUE, FALSE }, // WT
61 { TRUE, FALSE, FALSE, TRUE }, // TMR
62 { FALSE, FALSE, FALSE, FALSE }, // HLT
63 { FALSE, FALSE, FALSE, FALSE }, // INT - Not used
64
65 };
66
67 // - Allowable operands table
68 BOOLEAN AllowLeftOps[20][4] = {
69
70 // REGISTER - REFERENCE - MEMORY - IMMEDIATE
71
72 { FALSE, FALSE, FALSE, TRUE }, // DAT
73 { TRUE, TRUE, FALSE, FALSE }, // MOV
74 { TRUE, FALSE, FALSE, FALSE }, // CMP
75 { TRUE, FALSE, TRUE, FALSE }, // JE
76 { TRUE, FALSE, TRUE, FALSE }, // JB
77 { TRUE, FALSE, TRUE, FALSE }, // JA
78 { TRUE, FALSE, TRUE, FALSE }, // JMP
79 { TRUE, FALSE, FALSE, FALSE }, // INC
80 { TRUE, FALSE, FALSE, FALSE }, // DEC
81 { TRUE, FALSE, FALSE, FALSE }, // ADD
82 { TRUE, FALSE, FALSE, FALSE }, // SUB
83 { TRUE, FALSE, TRUE, FALSE }, // CALL
84 { FALSE, FALSE, FALSE, FALSE }, // RET
85 { TRUE, FALSE, FALSE, TRUE, }, // PUSH
86 { TRUE, FALSE, FALSE, FALSE }, // POP
87 { TRUE, FALSE, FALSE, FALSE }, // RND
88 { TRUE, FALSE, TRUE, FALSE }, // WT
89 { TRUE, FALSE, TRUE, FALSE }, // TMR
90 { FALSE, FALSE, FALSE, FALSE }, // HLT
91 { FALSE, FALSE, FALSE, FALSE }, // INT - Not used
92
93 };
94
95 // - Has operand left
96 BOOLEAN HasOperandLeft[] = {
97
98 TRUE, // DAT
99 TRUE, // MOV
100 TRUE, // CMP
101 TRUE, // JE
102 TRUE, // JB
103 TRUE, // JA
104 TRUE, // JMP
105 TRUE, // INC
106 TRUE, // DEC
107 TRUE, // ADD
108 TRUE, // SUB
109 TRUE, // CALL
110 FALSE, // RET
111 TRUE, // PUSH
112 TRUE, // POP
113 TRUE, // RND
114 TRUE, // WT
115 TRUE, // TMR
116 FALSE, // HLT
117 FALSE // INT
118
119 };
120
121 // - Has operand right
122 BOOLEAN HasOperandRight[] = {
123
124 FALSE, // DAT
125 TRUE, // MOV
126 TRUE, // CMP
127 FALSE, // JE
128 FALSE, // JB
129 FALSE, // JA
130 FALSE, // JMP
131 FALSE, // INC
132 FALSE, // DEC
133 TRUE, // ADD
134 TRUE, // SUB
135 FALSE, // CALL
136 FALSE, // RET
137 FALSE, // PUSH
138 FALSE, // POP
139 FALSE, // RND
140 TRUE, // WT
141 TRUE, // TMR
142 FALSE, // HLT
143 FALSE // INT
144
145 };
|