Skip to content

Commit c5e3ee2

Browse files
committed
Trying to use a definision whose value is uknown (i.e., it cannot be found) in a substitution now gives an error. Should help fixing Github issue #459.
1 parent 01f65ae commit c5e3ee2

File tree

11 files changed

+84
-43
lines changed

11 files changed

+84
-43
lines changed

FILE_FORMATS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ pending calculations:
123123
4 bank number (int)
124124
4 base (int)
125125
...
126-
1 type (0 = value, 1 = operator, 2 = string, 3 = deleted, 4 = stack)
126+
1 type (0 = value, 1 = operator, 2 = label, 3 = deleted, 4 = stack, 5 = string)
127127
1 sign (0 = positive, 1 = negative)
128128
8 value (double) OR
129129
n string (0 terminated)
@@ -261,7 +261,7 @@ pending calculations:
261261
4 relative address (int)
262262
4 line number (int)
263263
...
264-
1 type (0 = value, 1 = operator, 2 = string, 3 = deleted, 4 = stack)
264+
1 type (0 = value, 1 = operator, 2 = label, 3 = deleted, 4 = stack, 5 = string)
265265
1 sign (0 = positive, 1 = negative)
266266
8 value (double) OR
267267
n string (0 terminated)

defines.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
/* the number of times stack_calculate() can exist in call stack any given point in time */
2626
#define MAX_STACK_CALCULATE_CALL_DEPTH 16
2727

28-
#define STACK_CALCULATE_DELAY 2
29-
#define STACK_RETURN_LABEL 1024
28+
#define STACK_CALCULATE_DELAY 2
29+
#define STACK_RETURN_LABEL 1024
30+
#define STACK_RETURN_STRING 2048
3031

3132
#define STACK_NONE 0
3233
#define STACK_INSIDE 1

parse.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,13 +400,17 @@ int expand_variables_inside_string(char *label, int max_size, int *length) {
400400
else
401401
snprintf(substitution, sizeof(substitution), "%d", parsed_int);
402402
}
403-
else if (p == STACK_RETURN_LABEL) {
403+
else if (p == STACK_RETURN_STRING) {
404404
if (use_formatting == YES) {
405405
print_error(ERROR_NUM, "Cannot use formatting with strings.\n");
406406
return FAILED;
407407
}
408408
strcpy(substitution, g_label);
409409
}
410+
else if (p == STACK_RETURN_LABEL) {
411+
print_error(ERROR_NUM, "Label \"%s\" cannot be used in a substitution here as its value is unknown.\n", g_label);
412+
return FAILED;
413+
}
410414
else if (p == FAILED)
411415
return FAILED;
412416
else {
@@ -563,6 +567,8 @@ int input_number(void) {
563567
break;
564568
else if (p == STACK_RETURN_LABEL)
565569
return INPUT_NUMBER_ADDRESS_LABEL;
570+
else if (p == STACK_RETURN_STRING)
571+
return INPUT_NUMBER_STRING;
566572
else
567573
return p;
568574
}

pass_4.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ static int _mangle_stack_references(struct stack *stack) {
172172
int ind, n, j;
173173

174174
for (ind = 0; ind < stack->stacksize; ind++) {
175-
if (stack->stack[ind].type == STACK_ITEM_TYPE_STRING) {
175+
if (stack->stack[ind].type == STACK_ITEM_TYPE_LABEL) {
176176
n = 0;
177177
j = 0;
178178

@@ -237,7 +237,7 @@ static int _add_namespace_to_stack_references(struct stack *st, char *name_space
237237
int j;
238238

239239
for (j = 0; j < st->stacksize; j++) {
240-
if (st->stack[j].type == STACK_ITEM_TYPE_STRING) {
240+
if (st->stack[j].type == STACK_ITEM_TYPE_LABEL) {
241241
if (is_label_anonymous(st->stack[j].string) == YES)
242242
continue;
243243

@@ -2034,7 +2034,7 @@ int write_object_file(void) {
20342034

20352035
for (ind = 0; ind < g_stacks_tmp->stacksize; ind++) {
20362036
fprintf(final_ptr, "%c%c", g_stacks_tmp->stack[ind].type, g_stacks_tmp->stack[ind].sign);
2037-
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_STRING)
2037+
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_LABEL)
20382038
fprintf(final_ptr, "%s%c", g_stacks_tmp->stack[ind].string, 0);
20392039
else {
20402040
dou = g_stacks_tmp->stack[ind].value;
@@ -2079,7 +2079,7 @@ int write_object_file(void) {
20792079

20802080
for (ind = 0; ind < g_stacks_tmp->stacksize; ind++) {
20812081
fprintf(final_ptr, "%c%c", g_stacks_tmp->stack[ind].type, g_stacks_tmp->stack[ind].sign);
2082-
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_STRING)
2082+
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_LABEL)
20832083
fprintf(final_ptr, "%s%c", g_stacks_tmp->stack[ind].string, 0);
20842084
else {
20852085
dou = g_stacks_tmp->stack[ind].value;
@@ -2361,7 +2361,7 @@ int write_library_file(void) {
23612361

23622362
for (ind = 0; ind < g_stacks_tmp->stacksize; ind++) {
23632363
fprintf(final_ptr, "%c%c", g_stacks_tmp->stack[ind].type, g_stacks_tmp->stack[ind].sign);
2364-
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_STRING)
2364+
if (g_stacks_tmp->stack[ind].type == STACK_ITEM_TYPE_LABEL)
23652365
fprintf(final_ptr, "%s%c", g_stacks_tmp->stack[ind].string, 0);
23662366
else {
23672367
dou = g_stacks_tmp->stack[ind].value;

shared.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939

4040
#define STACK_ITEM_TYPE_VALUE 0
4141
#define STACK_ITEM_TYPE_OPERATOR 1
42-
#define STACK_ITEM_TYPE_STRING 2
42+
#define STACK_ITEM_TYPE_LABEL 2
4343
#define STACK_ITEM_TYPE_DELETED 3
4444
#define STACK_ITEM_TYPE_STACK 4
45+
#define STACK_ITEM_TYPE_STRING 5
4546

4647
#define SI_OP_ADD 0
4748
#define SI_OP_SUB 1

stack.c

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ static int _break_before_value_or_string(int i, struct stack_item *si) {
103103
return SUCCEEDED;
104104
if (si->type == STACK_ITEM_TYPE_STRING)
105105
return SUCCEEDED;
106+
if (si->type == STACK_ITEM_TYPE_LABEL)
107+
return SUCCEEDED;
106108
if (si->type == STACK_ITEM_TYPE_OPERATOR && si->value == SI_OP_RIGHT)
107109
return SUCCEEDED;
108110

@@ -265,7 +267,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
265267
}
266268
else if (*in == '-') {
267269
if (*(in + 1) == '-') {
268-
si[q].type = STACK_ITEM_TYPE_STRING;
270+
si[q].type = STACK_ITEM_TYPE_LABEL;
269271
si[q].sign = SI_SIGN_POSITIVE;
270272
for (k = 0; *in == '-' && k < 32; k++, in++) {
271273
si[q].string[k] = '-';
@@ -281,7 +283,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
281283
}
282284
else if (*in == '+') {
283285
if (*(in + 1) == '+') {
284-
si[q].type = STACK_ITEM_TYPE_STRING;
286+
si[q].type = STACK_ITEM_TYPE_LABEL;
285287
si[q].sign = SI_SIGN_POSITIVE;
286288
for (k = 0; *in == '+' && k < 32; k++, in++)
287289
si[q].string[k] = '+';
@@ -382,7 +384,8 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
382384
/* should we end parsing here? */
383385
if (b == 0 && q > 0) {
384386
if ((si[q-1].type == STACK_ITEM_TYPE_OPERATOR && si[q-1].value == SI_OP_RIGHT) ||
385-
si[q-1].type == STACK_ITEM_TYPE_VALUE || si[q-1].type == STACK_ITEM_TYPE_STRING)
387+
si[q-1].type == STACK_ITEM_TYPE_VALUE || si[q-1].type == STACK_ITEM_TYPE_STRING ||
388+
si[q-1].type == STACK_ITEM_TYPE_LABEL)
386389
break;
387390
}
388391

@@ -419,7 +422,8 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
419422
/* should we end parsing here? */
420423
if (b == 0 && q > 0) {
421424
if ((si[q-1].type == STACK_ITEM_TYPE_OPERATOR && si[q-1].value == SI_OP_RIGHT) ||
422-
si[q-1].type == STACK_ITEM_TYPE_VALUE || si[q-1].type == STACK_ITEM_TYPE_STRING)
425+
si[q-1].type == STACK_ITEM_TYPE_VALUE || si[q-1].type == STACK_ITEM_TYPE_STRING ||
426+
si[q-1].type == STACK_ITEM_TYPE_LABEL)
423427
break;
424428
}
425429

@@ -921,7 +925,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
921925
else if (is_string == YES) {
922926
process_special_labels(si[q].string);
923927
si[q].string[k] = 0;
924-
si[q].type = STACK_ITEM_TYPE_STRING;
928+
si[q].type = STACK_ITEM_TYPE_LABEL;
925929
got_label = YES;
926930

927931
if (from_substitutor == NO && expand_variables_inside_string(si[q].string, sizeof(((struct stack_item *)0)->string), NULL) == FAILED)
@@ -953,8 +957,8 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
953957
return STACK_CALCULATE_DELAY;
954958

955959
/* check if there was data before the computation */
956-
if (q > 1 && (si[0].type == STACK_ITEM_TYPE_STRING || si[0].type == STACK_ITEM_TYPE_VALUE)) {
957-
if (si[1].type == STACK_ITEM_TYPE_STRING || si[1].type == STACK_ITEM_TYPE_VALUE)
960+
if (q > 1 && (si[0].type == STACK_ITEM_TYPE_LABEL || si[0].type == STACK_ITEM_TYPE_VALUE)) {
961+
if (si[1].type == STACK_ITEM_TYPE_LABEL || si[1].type == STACK_ITEM_TYPE_VALUE)
958962
return STACK_CALCULATE_DELAY;
959963
if (si[1].type == STACK_ITEM_TYPE_OPERATOR) {
960964
if (si[1].value == SI_OP_LEFT)
@@ -965,7 +969,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
965969
#ifdef SPC700
966970
/* check if the computation is of the form "y+X" or "y+Y" and remove that "+X" or "+Y" */
967971
if (q > 2 && si[q - 2].type == STACK_ITEM_TYPE_OPERATOR && si[q - 2].value == SI_OP_ADD) {
968-
if (si[q - 1].type == STACK_ITEM_TYPE_STRING && si[q - 1].string[1] == 0) {
972+
if (si[q - 1].type == STACK_ITEM_TYPE_LABEL && si[q - 1].string[1] == 0) {
969973
char w = si[q - 1].string[0];
970974

971975
if (w == 'x' || w == 'X' || w == 'y' || w == 'Y') {
@@ -999,7 +1003,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
9991003
}
10001004
}
10011005
if (si[k].type == STACK_ITEM_TYPE_OPERATOR && si[k].value == SI_OP_SUB && b == 1) {
1002-
if (si[k + 1].type == STACK_ITEM_TYPE_VALUE || si[k + 1].type == STACK_ITEM_TYPE_STRING) {
1006+
if (si[k + 1].type == STACK_ITEM_TYPE_VALUE || si[k + 1].type == STACK_ITEM_TYPE_LABEL) {
10031007
if (si[k + 1].sign == SI_SIGN_POSITIVE)
10041008
si[k + 1].sign = SI_SIGN_NEGATIVE;
10051009
else
@@ -1011,7 +1015,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
10111015
o = 1;
10121016
l = k + 2;
10131017
while (o > 0 && l < q) {
1014-
if (si[l].type == STACK_ITEM_TYPE_VALUE || si[l].type == STACK_ITEM_TYPE_STRING) {
1018+
if (si[l].type == STACK_ITEM_TYPE_VALUE || si[l].type == STACK_ITEM_TYPE_LABEL) {
10151019
if (si[l].sign == SI_SIGN_POSITIVE)
10161020
si[l].sign = SI_SIGN_NEGATIVE;
10171021
else
@@ -1036,12 +1040,12 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
10361040
}
10371041
/* remove unnecessary + */
10381042
if (si[k].type == STACK_ITEM_TYPE_OPERATOR && si[k].value == SI_OP_ADD && b == 1) {
1039-
if (si[k + 1].type == STACK_ITEM_TYPE_VALUE || si[k + 1].type == STACK_ITEM_TYPE_STRING)
1043+
if (si[k + 1].type == STACK_ITEM_TYPE_VALUE || si[k + 1].type == STACK_ITEM_TYPE_LABEL)
10401044
si[k].type = STACK_ITEM_TYPE_DELETED;
10411045
else if (si[k + 1].type == STACK_ITEM_TYPE_OPERATOR && si[k + 1].value == SI_OP_LEFT)
10421046
si[k].type = STACK_ITEM_TYPE_DELETED;
10431047
}
1044-
else if (si[k].type == STACK_ITEM_TYPE_VALUE || si[k].type == STACK_ITEM_TYPE_STRING)
1048+
else if (si[k].type == STACK_ITEM_TYPE_VALUE || si[k].type == STACK_ITEM_TYPE_LABEL)
10451049
b = 0;
10461050
else if (si[k].type == STACK_ITEM_TYPE_OPERATOR && si[k].value == SI_OP_LEFT)
10471051
b = 1;
@@ -1058,7 +1062,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
10581062
for (b = 1, k = 0; k < q; k++) {
10591063
if (si[k].type == STACK_ITEM_TYPE_OPERATOR && si[k].value == SI_OP_XOR && b == 1)
10601064
si[k].value = SI_OP_NOT;
1061-
else if (si[k].type == STACK_ITEM_TYPE_VALUE || si[k].type == STACK_ITEM_TYPE_STRING)
1065+
else if (si[k].type == STACK_ITEM_TYPE_VALUE || si[k].type == STACK_ITEM_TYPE_LABEL)
10621066
b = 0;
10631067
else if (si[k].type == STACK_ITEM_TYPE_OPERATOR && si[k].value == SI_OP_LEFT)
10641068
b = 1;
@@ -1069,8 +1073,8 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
10691073
g_delta_counter = 0;
10701074

10711075
for (k = 0; k < q; k++) {
1072-
if (si[k].type == STACK_ITEM_TYPE_STRING) {
1073-
if (k+2 < q && si[k+1].type == STACK_ITEM_TYPE_OPERATOR && si[k+1].value == SI_OP_SUB && si[k+2].type == STACK_ITEM_TYPE_STRING) {
1076+
if (si[k].type == STACK_ITEM_TYPE_LABEL) {
1077+
if (k+2 < q && si[k+1].type == STACK_ITEM_TYPE_OPERATOR && si[k+1].value == SI_OP_SUB && si[k+2].type == STACK_ITEM_TYPE_LABEL) {
10741078
k += 2;
10751079
g_is_calculating_deltas = YES;
10761080
}
@@ -1090,7 +1094,7 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
10901094
ta[d].sign = si[k].sign;
10911095
d++;
10921096
}
1093-
else if (si[k].type == STACK_ITEM_TYPE_STRING) {
1097+
else if (si[k].type == STACK_ITEM_TYPE_STRING || si[k].type == STACK_ITEM_TYPE_LABEL) {
10941098
ta[d].type = si[k].type;
10951099
strcpy(ta[d].string, si[k].string);
10961100
ta[d].sign = si[k].sign;
@@ -1165,6 +1169,12 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
11651169

11661170
/* only one string? */
11671171
if (d == 1 && ta[0].type == STACK_ITEM_TYPE_STRING && ta[0].sign == SI_SIGN_POSITIVE) {
1172+
strcpy(g_label, ta[0].string);
1173+
process_special_labels(g_label);
1174+
return STACK_RETURN_STRING;
1175+
}
1176+
/* only one label? */
1177+
if (d == 1 && ta[0].type == STACK_ITEM_TYPE_LABEL && ta[0].sign == SI_SIGN_POSITIVE) {
11681178
strcpy(g_label, ta[0].string);
11691179
process_special_labels(g_label);
11701180
return STACK_RETURN_LABEL;
@@ -1217,11 +1227,20 @@ static int _stack_calculate(char *in, int *value, int *bytes_parsed, unsigned ch
12171227
g_stacks_tmp->stack[q].value = ta[q].value;
12181228
g_stacks_tmp->stack[q].sign = ta[q].sign;
12191229
}
1220-
else {
1221-
g_stacks_tmp->stack[q].type = STACK_ITEM_TYPE_STRING;
1230+
else if (ta[q].type == STACK_ITEM_TYPE_STRING) {
1231+
/* fail if we have a string inside a pending calculation! */
1232+
print_error(ERROR_STC, "A string (\"%s\") inside a calculation doesn't make any sense...\n", ta[q].string);
1233+
return FAILED;
1234+
}
1235+
else if (ta[q].type == STACK_ITEM_TYPE_LABEL) {
1236+
g_stacks_tmp->stack[q].type = STACK_ITEM_TYPE_LABEL;
12221237
g_stacks_tmp->stack[q].sign = ta[q].sign;
12231238
strcpy(g_stacks_tmp->stack[q].string, ta[q].string);
12241239
}
1240+
else {
1241+
print_error(ERROR_STC, "Unhandled stack item type '%d' in _stack_calculate()! Please submit a bug report!\n", ta[q].type);
1242+
return FAILED;
1243+
}
12251244
}
12261245

12271246
#if WLA_DEBUG
@@ -1311,6 +1330,7 @@ static int _resolve_string(struct stack_item *s, int *cannot_resolve) {
13111330
if (g_tmp_def->type == DEFINITION_TYPE_STRING) {
13121331
if (g_input_parse_if == NO) {
13131332
/* change the contents */
1333+
s->type = STACK_ITEM_TYPE_STRING;
13141334
strcpy(s->string, g_tmp_def->string);
13151335
/*
13161336
print_error(ERROR_STC, "Definition \"%s\" is a string definition.\n", g_tmp_def->alias);
@@ -1539,7 +1559,7 @@ int resolve_stack(struct stack_item s[], int stack_item_count) {
15391559
s -= 2;
15401560
stack_item_count += 2;
15411561

1542-
if (s->type == STACK_ITEM_TYPE_STRING) {
1562+
if (s->type == STACK_ITEM_TYPE_LABEL) {
15431563
int cannot;
15441564

15451565
if (_process_string(s, &cannot) == FAILED)
@@ -1549,7 +1569,7 @@ int resolve_stack(struct stack_item s[], int stack_item_count) {
15491569
s++;
15501570
stack_item_count--;
15511571

1552-
if (s->type == STACK_ITEM_TYPE_STRING) {
1572+
if (s->type == STACK_ITEM_TYPE_LABEL) {
15531573
int cannot;
15541574

15551575
if (_process_string(s, &cannot) == FAILED)
@@ -1568,7 +1588,7 @@ int resolve_stack(struct stack_item s[], int stack_item_count) {
15681588
}
15691589

15701590
if (process_single == YES) {
1571-
if (s->type == STACK_ITEM_TYPE_STRING) {
1591+
if (s->type == STACK_ITEM_TYPE_LABEL) {
15721592
if (_process_string(s, &cannot_resolve) == FAILED)
15731593
return FAILED;
15741594
}
@@ -1616,7 +1636,7 @@ int resolve_stack(struct stack_item s[], int stack_item_count) {
16161636
}
16171637

16181638
if (process_single == YES) {
1619-
if (st->type == STACK_ITEM_TYPE_STRING || st->type == STACK_ITEM_TYPE_STACK || (st->type == STACK_ITEM_TYPE_OPERATOR && st->value == SI_OP_BANK))
1639+
if (st->type == STACK_ITEM_TYPE_STRING || st->type == STACK_ITEM_TYPE_LABEL || st->type == STACK_ITEM_TYPE_STACK || (st->type == STACK_ITEM_TYPE_OPERATOR && st->value == SI_OP_BANK))
16201640
return FAILED;
16211641
if (g_input_parse_if == NO && st->type == STACK_ITEM_TYPE_OPERATOR && st->value == SI_OP_NOT)
16221642
return FAILED;
@@ -1662,7 +1682,7 @@ int compute_stack(struct stack *sta, int stack_item_count, double *result) {
16621682
sp[t] = NULL;
16631683
t++;
16641684
}
1665-
else if (s->type == STACK_ITEM_TYPE_STRING) {
1685+
else if (s->type == STACK_ITEM_TYPE_LABEL || s->type == STACK_ITEM_TYPE_STRING) {
16661686
sp[t] = s->string;
16671687
v[t] = 0;
16681688
t++;
@@ -2007,7 +2027,7 @@ int stack_create_label_stack(char *label) {
20072027
those that are referenced to be STACK_POSITION_CODE stacks */
20082028
g_stacks_tmp->position = STACK_POSITION_DEFINITION;
20092029

2010-
g_stacks_tmp->stack[0].type = STACK_ITEM_TYPE_STRING;
2030+
g_stacks_tmp->stack[0].type = STACK_ITEM_TYPE_LABEL;
20112031
g_stacks_tmp->stack[0].sign = SI_SIGN_POSITIVE;
20122032
strcpy(g_stacks_tmp->stack[0].string, label);
20132033

tests/z80/substitution_test/main.s

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ label2: dsb 2
4747
.DEFINE DEF_A = "A"
4848
.DEFINE DEF_B = "B"
4949
.DEFINE DEF_C = "C"
50+
.DEFINE DEF_I = "I"
5051
.PRINT "1ST SUBSTITUTION - START\n"
5152
.DEFINE ABC = { "{DEF_A}{DEF_B}{DEF_C}" }
5253
.PRINT "1ST SUBSTITUTION - END\n"
@@ -106,7 +107,9 @@ InTheMiddleOneTwoThree_{\@ - 1}{\@}{\@+1}_IsThere
106107
.endif
107108
.if 0 + \@ + 1 == 2 + 1
108109
.db "08>" ; @BT TEST-08 08 START
110+
.print "-----------------------------------------------------------------\n"
109111
.db MyValueIs_{ %11 } + 1 ; @BT 04
112+
.print "-----------------------------------------------------------------\n"
110113
.db "<08" ; @BT END
111114
.endif
112115
Hack_{\@+1000}:
@@ -227,9 +230,9 @@ Data{ %.4X{ 0xBEEF } }{ I3 }{ %.4X{ $DEAD }}
227230

228231
.DB "13>" ; @BT TEST-13 13 START
229232
.DB I{1+3-1}-I{%.1d{1+1}}+I{1} ; @BT 02
230-
.DB I{3}, I{1+1}+1, I{1} ; @BT 03 03 01
231-
.DB I{$3}, I{$1+$1}+$1, I{$1} ; @BT 03 03 01
233+
.DB {DEF_I}{3}, I{1+1}+1, I{1} ; @BT 03 03 01
234+
.DB I{$3}, {DEF_I}{$1+$1}+$1, {DEF_I}{$1} ; @BT 03 03 01
232235
.DB I{%11}, I{%1+%1}+%1, I{%1} ; @BT 03 03 01
233236
.DB "<13" ; @BT END
234-
237+
235238
.ENDS

0 commit comments

Comments
 (0)