mirror of
https://github.com/open-simh/simtools.git
synced 2026-05-01 13:55:56 +00:00
Merge branch 'master' into mlb2
This commit is contained in:
19
assemble.c
19
assemble.c
@@ -938,6 +938,10 @@ static int assemble(
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case P_EVEN:
|
case P_EVEN:
|
||||||
|
cp = skipwhite(cp);
|
||||||
|
if (!EOL(*cp)) {
|
||||||
|
report(stack->top, ".EVEN must not have an argument\n");
|
||||||
|
}
|
||||||
if (DOT & 1) {
|
if (DOT & 1) {
|
||||||
list_word(stack->top, DOT, 0, 1, "");
|
list_word(stack->top, DOT, 0, 1, "");
|
||||||
DOT++;
|
DOT++;
|
||||||
@@ -946,6 +950,9 @@ static int assemble(
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case P_ODD:
|
case P_ODD:
|
||||||
|
if (!EOL(*cp)) {
|
||||||
|
report(stack->top, ".EVEN must not have an argument\n");
|
||||||
|
}
|
||||||
if (!(DOT & 1)) {
|
if (!(DOT & 1)) {
|
||||||
list_word(stack->top, DOT, 0, 1, "");
|
list_word(stack->top, DOT, 0, 1, "");
|
||||||
DOT++;
|
DOT++;
|
||||||
@@ -1133,9 +1140,19 @@ static int assemble(
|
|||||||
case P_BLKW:
|
case P_BLKW:
|
||||||
case P_BLKB:
|
case P_BLKB:
|
||||||
{
|
{
|
||||||
EX_TREE *value = parse_expr(cp, 0);
|
EX_TREE *value;
|
||||||
int ok = 1;
|
int ok = 1;
|
||||||
|
|
||||||
|
cp = skipwhite(cp);
|
||||||
|
if (EOL(*cp)) {
|
||||||
|
/* If no argument, assume 1. Documented but
|
||||||
|
* discouraged. Par 6.5.3, page 6-32. */
|
||||||
|
/* warning(stack->top, "Argument to .BLKB/.BLKW should be present; 1 assumed\n"); */
|
||||||
|
value = new_ex_lit(1);
|
||||||
|
} else {
|
||||||
|
value = parse_expr(cp, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (value->type != EX_LIT) {
|
if (value->type != EX_LIT) {
|
||||||
report(stack->top, "Argument to .BLKB/.BLKW " "must be constant\n");
|
report(stack->top, "Argument to .BLKB/.BLKW " "must be constant\n");
|
||||||
ok = 0;
|
ok = 0;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
TESTS="test-asciz \
|
TESTS="test-asciz \
|
||||||
test-backpatch \
|
test-backpatch \
|
||||||
|
test-blkb \
|
||||||
test-bsl-mac-arg \
|
test-bsl-mac-arg \
|
||||||
test-complex-reloc \
|
test-complex-reloc \
|
||||||
test-endm \
|
test-endm \
|
||||||
|
|||||||
41
tests/test-blkb.lst.ok
Normal file
41
tests/test-blkb.lst.ok
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
1 ;;;;;
|
||||||
|
2 ;
|
||||||
|
3 ; Test .BLKB and .BLKW
|
||||||
|
4 ;
|
||||||
|
5 000000 label: .blkb ; not recommended, but default argument is 1
|
||||||
|
6 000001 .blkb 1
|
||||||
|
7 000002 .blkb 2
|
||||||
|
8 000004 .blkb 100.
|
||||||
|
test-blkb.mac:9: ***ERROR Argument to .BLKB/.BLKW must be constant
|
||||||
|
9 .blkb label ; error: not an constant expression
|
||||||
|
10
|
||||||
|
11 000150 000 .odd
|
||||||
|
12
|
||||||
|
13 000151 .blkw 1 ; should maybe be an error: odd address
|
||||||
|
14
|
||||||
|
15 000153 000 .even
|
||||||
|
16
|
||||||
|
17 000154 label2: .blkb ; not recommended, but default argument is 1
|
||||||
|
18 000155 .blkb 1
|
||||||
|
19 000156 .blkb 2
|
||||||
|
20 000160 .blkb 100.
|
||||||
|
test-blkb.mac:21: ***ERROR Argument to .BLKB/.BLKW must be constant
|
||||||
|
21 .blkb label2 ; error: not an constant expression
|
||||||
|
22
|
||||||
|
23
|
||||||
|
test-blkb.mac:24: ***ERROR .EVEN must not have an argument
|
||||||
|
24 .even 1 ; error: no argument allowed
|
||||||
|
test-blkb.mac:25: ***ERROR .EVEN must not have an argument
|
||||||
|
25 000324 000 .odd 1 ; error: no argument allowed
|
||||||
|
25
|
||||||
|
|
||||||
|
|
||||||
|
Symbol table
|
||||||
|
|
||||||
|
. ******R 001 LABEL 000000R 001 LABEL2 000154R 001
|
||||||
|
|
||||||
|
|
||||||
|
Program sections:
|
||||||
|
|
||||||
|
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
|
||||||
|
000325 001 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
25
tests/test-blkb.mac
Normal file
25
tests/test-blkb.mac
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
;;;;;
|
||||||
|
;
|
||||||
|
; Test .BLKB and .BLKW
|
||||||
|
;
|
||||||
|
label: .blkb ; not recommended, but default argument is 1
|
||||||
|
.blkb 1
|
||||||
|
.blkb 2
|
||||||
|
.blkb 100.
|
||||||
|
.blkb label ; error: not an constant expression
|
||||||
|
|
||||||
|
.odd
|
||||||
|
|
||||||
|
.blkw 1 ; should maybe be an error: odd address
|
||||||
|
|
||||||
|
.even
|
||||||
|
|
||||||
|
label2: .blkb ; not recommended, but default argument is 1
|
||||||
|
.blkb 1
|
||||||
|
.blkb 2
|
||||||
|
.blkb 100.
|
||||||
|
.blkb label2 ; error: not an constant expression
|
||||||
|
|
||||||
|
|
||||||
|
.even 1 ; error: no argument allowed
|
||||||
|
.odd 1 ; error: no argument allowed
|
||||||
Reference in New Issue
Block a user