4 * Copyright (C) 1993-2021 Alan R. Baldwin
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
28 char *cpu
= "Motorola 68HC(S)08 / 68(HC)05";
32 * Opcode Cycle Definitions
34 #define OPCY_SDP ((char) (0xFF))
35 #define OPCY_ERR ((char) (0xFE))
36 #define OPCY_CPU ((char) (0xFD))
39 /* OPCY_NONE ((char) (0x80)) */
40 /* OPCY_MASK ((char) (0x7F)) */
42 #define UN ((char) (OPCY_NONE | 0x00))
43 #define P2 ((char) (OPCY_NONE | 0x01))
50 static char m05cyc
[256] = {
51 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
52 /*--*--* - - - - - - - - - - - - - - - - */
53 /*00*/ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
54 /*10*/ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
55 /*20*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
56 /*30*/ 6,UN
,UN
, 6, 6,UN
, 6, 6, 6, 6, 6,UN
, 6, 6,UN
, 6,
57 /*40*/ 4,UN
,UN
, 4, 4,UN
, 4, 4, 4, 4, 4,UN
, 4, 4,UN
, 4,
58 /*50*/ 4,UN
,UN
, 4, 4,UN
, 4, 4, 4, 4, 4,UN
, 4, 4,UN
, 4,
59 /*60*/ 7,UN
,UN
, 7, 7,UN
, 7, 7, 7, 7, 7,UN
, 7, 7,UN
, 7,
60 /*70*/ 6,UN
,UN
, 6, 6,UN
, 6, 6, 6, 6, 6,UN
, 6, 6,UN
, 6,
61 /*80*/ 9, 6,UN
,11,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 2, 2,
62 /*90*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
, 2, 2, 2, 2, 2, 2, 2,UN
, 2,
63 /*A0*/ 2, 2, 2, 2, 2, 2, 2,UN
, 2, 2, 2, 2,UN
, 8, 2,UN
,
64 /*B0*/ 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 7, 4, 5,
65 /*C0*/ 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 4, 8, 5, 6,
66 /*D0*/ 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 5, 9, 6, 7,
67 /*E0*/ 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 4, 8, 5, 6,
68 /*F0*/ 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 7, 4, 5
76 static char mcmcyc
[256] = {
77 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
78 /*--*--* - - - - - - - - - - - - - - - - */
79 /*00*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
80 /*10*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
81 /*20*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
82 /*30*/ 5,UN
,UN
, 5, 5,UN
, 5, 5, 5, 5, 5,UN
, 5, 4,UN
, 5,
83 /*40*/ 3,UN
,UN
, 3, 3,UN
, 3, 3, 3, 3, 3,UN
, 3, 3,UN
, 3,
84 /*50*/ 3,UN
,UN
, 3, 3,UN
, 3, 3, 3, 3, 3,UN
, 3, 3,UN
, 3,
85 /*60*/ 6,UN
,UN
, 6, 6,UN
, 6, 6, 6, 6, 6,UN
, 6, 5,UN
, 6,
86 /*70*/ 5,UN
,UN
, 5, 5,UN
, 5, 5, 5, 5, 5,UN
, 5, 4,UN
, 5,
87 /*80*/ 9, 6,UN
,10,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 2, 2,
88 /*90*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
, 2, 2, 2, 2, 2, 2, 2,UN
, 2,
89 /*A0*/ 2, 2, 2, 2, 2, 2, 2,UN
, 2, 2, 2, 2,UN
, 6, 2,UN
,
90 /*B0*/ 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 2, 5, 3, 4,
91 /*C0*/ 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 6, 4, 5,
92 /*D0*/ 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 4, 7, 5, 6,
93 /*E0*/ 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 6, 4, 5,
94 /*F0*/ 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 2, 5, 3, 4
102 static char m08pg1
[256] = {
103 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
104 /*--*--* - - - - - - - - - - - - - - - - */
105 /*00*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
106 /*10*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
107 /*20*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108 /*30*/ 4, 5,UN
, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 3,UN
, 3,
109 /*40*/ 1, 4, 5, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 5, 1,
110 /*50*/ 1, 4, 7, 1, 1, 4, 1, 1, 1, 1, 1, 3, 1, 1, 4, 1,
111 /*60*/ 4, 5, 3, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 3, 4, 3,
112 /*70*/ 3, 4, 2, 3, 3, 4, 3, 3, 3, 3, 3, 4, 3, 2, 4, 2,
113 /*80*/ 7, 4,UN
, 9, 2, 1, 2, 2, 2, 2, 2, 2, 1,UN
, 1, 1,
114 /*90*/ 3, 3, 3, 3, 2, 2,UN
, 1, 1, 1, 2, 2, 1, 1,P2
, 1,
115 /*A0*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,UN
, 4, 2, 2,
116 /*B0*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 4, 3, 3,
117 /*C0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 5, 4, 4,
118 /*D0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4,
119 /*E0*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3,
120 /*F0*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2
123 static char m08pg2
[256] = {
124 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
125 /*--*--* - - - - - - - - - - - - - - - - */
126 /*00*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
127 /*10*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
128 /*20*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
129 /*30*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
130 /*40*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
131 /*50*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
132 /*60*/ 5, 6,UN
, 5, 5,UN
, 5, 5, 5, 5, 5, 6, 5, 4,UN
, 4,
133 /*70*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
134 /*80*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
135 /*90*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
136 /*A0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
137 /*B0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
138 /*C0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
139 /*D0*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,UN
,UN
, 5, 5,
140 /*E0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,UN
,UN
, 4, 4,
141 /*F0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
144 static char *m08Page
[2] = {
153 static char s08pg1
[256] = {
154 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
155 /*--*--* - - - - - - - - - - - - - - - - */
156 /*00*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
157 /*10*/ 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
158 /*20*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
159 /*30*/ 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 7, 5, 4, 6, 5,
160 /*40*/ 1, 4, 5, 1, 1, 3, 1, 1, 1, 1, 1, 4, 1, 1, 6, 1,
161 /*50*/ 1, 4, 6, 1, 1, 4, 1, 1, 1, 1, 1, 4, 1, 1, 5, 1,
162 /*60*/ 5, 5, 1, 5, 5, 3, 5, 5, 5, 5, 5, 7, 5, 4, 4, 5,
163 /*70*/ 4, 5, 1, 4, 4, 5, 4, 4, 4, 4, 4, 6, 4, 3, 5, 4,
164 /*80*/ 9, 6, 5,11, 1, 1, 3, 2, 3, 2, 3, 2, 1,UN
, 2, 2,
165 /*90*/ 3, 3, 3, 3, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1,P2
, 1,
166 /*A0*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,UN
, 5, 2, 2,
167 /*B0*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3,
168 /*C0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4,
169 /*D0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4,
170 /*E0*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3,
171 /*F0*/ 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 5, 3, 2
174 static char s08pg2
[256] = {
175 /*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
176 /*--*--* - - - - - - - - - - - - - - - - */
177 /*00*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
178 /*10*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
179 /*20*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
180 /*30*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
181 /*40*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
182 /*50*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
183 /*60*/ 6, 6,UN
, 6, 6,UN
, 6, 6, 6, 6, 6, 8, 6, 5,UN
, 6,
184 /*70*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
185 /*80*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
186 /*90*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,
187 /*A0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 5,UN
,
188 /*B0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 6,UN
,
189 /*C0*/ UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 5,UN
,
190 /*D0*/ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,UN
,UN
, 5, 5,
191 /*E0*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,UN
,UN
, 4, 4,
192 /*F0*/ UN
,UN
,UN
, 6,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
,UN
, 5, 5
195 static char *s08Page
[2] = {
204 * Process a machine op.
210 int op
, t1
, t2
, type
;
211 struct expr e1
, e2
, e3
;
219 op
= (int) mp
->m_valu
;
228 if (e1
.e_flag
== 0 && e1
.e_base
.e_ap
== NULL
) {
230 xerr('b', "Only Page 0 Allowed.");
233 if ((c
= getnb()) == ',') {
237 xerr('u', "Undefined Area.");
255 if (mchtyp
!= X_HCS08
) {
257 xerr('o', "A 68HCS08 Instruction.");
261 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
263 xerr('o', "A 68HC(S)08 Instruction.");
271 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
273 xerr('o', "A 68HC(S)08 Instruction.");
280 v1
= (int) (e1
.e_addr
- dot
.s_addr
- 1);
281 if ((v1
< -128) || (v1
> 127))
282 xerr('a', "Branching Range Exceeded.");
287 if (e1
.e_mode
!= S_USER
)
301 if (t1
== S_DIR
|| t1
== S_EXT
) {
310 if (t1
== S_IX1
|| t1
== S_IX2
) {
315 if (t1
== S_SP1
|| t1
== S_SP2
) {
316 if ((mchtyp
== X_HC08
) || (mchtyp
== X_HCS08
)) {
323 xerr('a', "Invalid Addressing Mode.");
329 if ((op
== 0xA7) || (op
== 0xAC) ||
330 (op
== 0xAD) || (op
== 0xAF))
361 if ((mchtyp
== X_HC08
) || (mchtyp
== X_HCS08
)) {
362 if (op
== 0xAC || op
== 0xAD)
363 xerr('a', "Invalid 68HC(S)08 JMP/JSR Addressing Mode.");
371 if ((mchtyp
== X_HC08
) || (mchtyp
== X_HCS08
)) {
372 if (op
== 0xAC || op
== 0xAD)
373 xerr('a', "Invalid 68HC(S)08 JMP/JSR Addressing Mode.");
380 xerr('a', "Invalid Addressing Mode.");
387 xerr('a', "Require Immediate(#) For First Argument.");
391 xerr('a', "Require Direct Mode For Second Argument.");
392 outab(op
+ 2*(espv
&0x07));
400 xerr('a', "Require Immediate(#) For First Argument.");
404 xerr('a', "Require Direct Mode For Second Argument.");
407 outab(op
+ 2*(espv
&0x07));
410 v1
= (int) (e3
.e_addr
- dot
.s_addr
- 1);
411 if ((v1
< -128) || (v1
> 127))
417 if (e3
.e_mode
!= S_USER
)
422 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
424 xerr('o', "A 68HC(S)08 Instruction.");
430 if (e1
.e_flag
== 0 && e1
.e_base
.e_ap
== NULL
) {
431 v1
= (int) e1
.e_addr
;
432 if ((v1
< -128) || (v1
> 127))
433 xerr('a', "Branching Range Exceeded.");
440 xerr('a', "Invalid Addressing Mode.");
444 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
446 xerr('o', "A 68HC(S)08 Instruction.");
457 if (mchtyp
== X_HCS08
) {
461 case 0x25: outab(0x96); break;
462 case 0x45: outab(0x32); break;
463 case 0x65: outab(0x3E); break;
468 if ((t1
== S_SP1
) || (t1
== S_SP2
)) {
472 case 0x25: outab(0xFF); break;
473 case 0x45: outab(0xFE); break;
474 case 0x65: outab(0xF3); break;
479 if ((t1
== S_IX
) && (op
== 0x45)) {
484 if ((t1
== S_IX1
) && (op
== 0x45)) {
490 if ((t1
== S_IX2
) && (op
== 0x45)) {
506 xerr('a', "Invalid Addressing Mode.");
510 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
512 xerr('o', "A 68HC(S)08 Instruction.");
522 if (t1
== S_DIR
|| t1
== S_EXT
) {
529 if (t1
== S_IX1P
|| t1
== S_IX2P
) {
533 if (t1
== S_SP1
|| t1
== S_SP2
) {
538 xerr('a', "Invalid Addressing Mode.");
542 v1
= (int) (e2
.e_addr
- dot
.s_addr
- 1);
543 if ((v1
< -128) || (v1
> 127))
544 xerr('a', "Branching Range Exceeded.");
549 if (e2
.e_mode
!= S_USER
)
554 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
556 xerr('o', "A 68HC(S)08 Instruction.");
561 xerr('a', "Immediate(#) First Argument Required.");
567 v1
= (int) (e2
.e_addr
- dot
.s_addr
- 1);
568 if ((v1
< -128) || (v1
> 127))
569 xerr('a', "Branching Range Exceeded.");
574 if (e2
.e_mode
!= S_USER
)
579 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
581 xerr('o', "A 68HC(S)08 Instruction.");
587 if (t1
== S_DIR
|| t1
== S_EXT
) {
594 if (t1
== S_IX1
|| t1
== S_IX2
) {
598 if (t1
== S_SP1
|| t1
== S_SP2
) {
603 xerr('a', "Invalid Addressing Mode.");
607 v1
= (int) (e2
.e_addr
- dot
.s_addr
- 1);
608 if ((v1
< -128) || (v1
> 127))
609 xerr('a', "Branching Range Exceeded.");
614 if (e2
.e_mode
!= S_USER
)
619 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
621 xerr('o', "A 68HC(S)08 Instruction.");
627 v1
= (int) (e1
.e_addr
- dot
.s_addr
- 1);
628 if ((v1
< -128) || (v1
> 127))
629 xerr('a', "Branching Range Exceeded.");
634 if (e1
.e_mode
!= S_USER
)
639 if ((mchtyp
!= X_HC08
) && (mchtyp
!= X_HCS08
)) {
641 xerr('o', "A 68HC(S)08 Instruction.");
645 if (t1
== S_IX1P
|| t1
== S_IX2P
) {
653 if (t2
== S_DIR
|| t2
== S_EXT
) {
660 if (t1
== S_DIR
|| t1
== S_EXT
) {
661 if (t2
== S_DIR
|| t2
== S_EXT
) {
669 if (t2
== S_DIR
|| t2
== S_EXT
) {
675 xerr('a', "Invalid Addressing Mode.");
681 xerr('o', "Internal Opcode Error.");
685 if (opcycles
== OPCY_NONE
) {
687 case X_HC08
: /* 68HC08 */
688 opcycles
= m08pg1
[cb
[0] & 0xFF];
689 if ((opcycles
& OPCY_NONE
) && (opcycles
& OPCY_MASK
)) {
690 opcycles
= m08Page
[opcycles
& OPCY_MASK
][cb
[1] & 0xFF];
693 case X_HCS08
: /* 68HCS08 */
694 opcycles
= s08pg1
[cb
[0] & 0xFF];
695 if ((opcycles
& OPCY_NONE
) && (opcycles
& OPCY_MASK
)) {
696 opcycles
= s08Page
[opcycles
& OPCY_MASK
][cb
[1] & 0xFF];
699 case X_6805
: /* 6805 */
700 opcycles
= m05cyc
[cb
[0] & 0xFF];
702 case X_HC05
: /* 146805 */
703 opcycles
= mcmcyc
[cb
[0] & 0xFF];
710 * Branch/Jump PCR Mode Check
716 if (esp
->e_base
.e_ap
== dot
.s_area
) {
719 if (esp
->e_flag
==0 && esp
->e_base
.e_ap
==NULL
) {
721 * Absolute Destination
723 * Use the global symbol '.__.ABS.'
724 * of value zero and force the assembler
725 * to use this absolute constant as the
726 * base value for the relocation.
729 esp
->e_base
.e_sp
= &sym
[1];
735 * Machine specific initialization.
751 sym
[2].s_addr
= X_HC08
;