...
|
...
|
@@ -212,6 +212,7 @@ walktoken(char *w)
|
212
|
212
|
case ']': return 0;
|
213
|
213
|
case '.': return 2; /* zero-page: LIT addr-lb */
|
214
|
214
|
case ',': return 2; /* relative: LIT addr-rel */
|
|
215
|
+ case ':': return 2; /* absolute: addr-hb addr-lb */
|
215
|
216
|
case ';': return 3; /* absolute: LIT addr-hb addr-lb */
|
216
|
217
|
case '$': return shex(w + 1);
|
217
|
218
|
case '#': return slen(w + 1) == 4 ? 3 : 2;
|
...
|
...
|
@@ -239,6 +240,9 @@ parsetoken(char *w)
|
239
|
240
|
return error("Address is too far", w);
|
240
|
241
|
pushbyte((Sint8)off, 1);
|
241
|
242
|
return ++l->refs;
|
|
243
|
+ } else if(w[0] == ':' && (l = findlabel(w + 1))) { /* absolute */
|
|
244
|
+ pushshort(l->addr, 0);
|
|
245
|
+ return ++l->refs;
|
242
|
246
|
} else if(w[0] == ';' && (l = findlabel(w + 1))) { /* absolute */
|
243
|
247
|
pushshort(l->addr, 1);
|
244
|
248
|
return ++l->refs;
|