mirror of
https://github.com/open-simh/simtools.git
synced 2026-05-02 14:20:01 +00:00
Fix .REPT 0 to not repeat the code block at all.
Also, now list the calculated repeat count for reference. This occurred a few times in the regression tests to fix the expected outcome.
This commit is contained in:
@@ -38,13 +38,14 @@ char *rept_stream_gets(
|
|||||||
char *cp;
|
char *cp;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
if (rstr->count <= 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if ((cp = buffer_stream_gets(str)) != NULL)
|
if ((cp = buffer_stream_gets(str)) != NULL)
|
||||||
return cp;
|
return cp;
|
||||||
|
|
||||||
if (--rstr->count <= 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
buffer_stream_rewind(str);
|
buffer_stream_rewind(str);
|
||||||
|
rstr->count--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,6 +85,8 @@ STREAM *expand_rept(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list_value(stack->top, value->data.lit);
|
||||||
|
|
||||||
gb = new_buffer();
|
gb = new_buffer();
|
||||||
|
|
||||||
levelmod = 0;
|
levelmod = 0;
|
||||||
|
|||||||
@@ -996,7 +996,7 @@
|
|||||||
301 001252 110422 movb r4,(r2)+
|
301 001252 110422 movb r4,(r2)+
|
||||||
302 001254 032704 000020 bit #cc.nam,r4
|
302 001254 032704 000020 bit #cc.nam,r4
|
||||||
303 001260 001405 beq 3$
|
303 001260 001405 beq 3$
|
||||||
304 .rept 4
|
304 000004 .rept 4
|
||||||
305 movb (r1)+,(r2)+
|
305 movb (r1)+,(r2)+
|
||||||
306 .endm
|
306 .endm
|
||||||
1 001262 112122 movb (r1)+,(r2)+
|
1 001262 112122 movb (r1)+,(r2)+
|
||||||
|
|||||||
@@ -906,7 +906,7 @@
|
|||||||
154 000600 126167 000005 000000G cmpb 5(r1),objsec
|
154 000600 126167 000005 000000G cmpb 5(r1),objsec
|
||||||
155 000606 001407 beq 2$
|
155 000606 001407 beq 2$
|
||||||
156 000610 052716 000020 1$: bis #cc.nam,(sp)
|
156 000610 052716 000020 1$: bis #cc.nam,(sp)
|
||||||
157 .rept 4
|
157 000004 .rept 4
|
||||||
158 movb (r1)+,(r2)+
|
158 movb (r1)+,(r2)+
|
||||||
159 .endm
|
159 .endm
|
||||||
1 000614 112122 movb (r1)+,(r2)+
|
1 000614 112122 movb (r1)+,(r2)+
|
||||||
@@ -1644,7 +1644,7 @@
|
|||||||
527 003006 call crfref ;cref into proper roll
|
527 003006 call crfref ;cref into proper roll
|
||||||
1 003006 004767 000000G jsr pc,crfref
|
1 003006 004767 000000G jsr pc,crfref
|
||||||
528 003012 012701 000000G mov #symbol,r1
|
528 003012 012701 000000G mov #symbol,r1
|
||||||
529 .rept 4 ;move into code buffer
|
529 000004 .rept 4 ;move into code buffer
|
||||||
530 movb (r1)+,(r2)+
|
530 movb (r1)+,(r2)+
|
||||||
531 .endm
|
531 .endm
|
||||||
1 003016 112122 movb (r1)+,(r2)+
|
1 003016 112122 movb (r1)+,(r2)+
|
||||||
|
|||||||
@@ -1121,19 +1121,18 @@
|
|||||||
114 000005 sector: .blkb 1 ;symbol/expression type
|
114 000005 sector: .blkb 1 ;symbol/expression type
|
||||||
115 000006 value: .blkw 1 ;expression value
|
115 000006 value: .blkw 1 ;expression value
|
||||||
116 000010 rellvl: .blkw 1
|
116 000010 rellvl: .blkw 1
|
||||||
117 .rept maxxmt-<<.-symbol>/2> ;end of grouped data
|
117 000000 .rept maxxmt-<<.-symbol>/2> ;end of grouped data
|
||||||
118 .blkw
|
118 .blkw
|
||||||
119 .endm
|
119 .endm
|
||||||
1 000012 .blkw
|
|
||||||
120
|
120
|
||||||
121 000014 clcnam: .blkw 2 ;current location counter symbol
|
121 000012 clcnam: .blkw 2 ;current location counter symbol
|
||||||
122 000020 clcfgs: .blkb 1
|
122 000016 clcfgs: .blkb 1
|
||||||
123 000021 clcsec: .blkb 1
|
123 000017 clcsec: .blkb 1
|
||||||
124 000022 clcloc: .blkw 1
|
124 000020 clcloc: .blkw 1
|
||||||
125 000024 clcmax: .blkw 1
|
125 000022 clcmax: .blkw 1
|
||||||
126
|
126
|
||||||
127 000026 xitsec ;return to normal
|
127 000024 xitsec ;return to normal
|
||||||
1 000026 entsec .text
|
1 000024 entsec .text
|
||||||
1 000000 .psect .text con
|
1 000000 .psect .text con
|
||||||
127
|
127
|
||||||
128 prop1: ;process pass 1
|
128 prop1: ;process pass 1
|
||||||
@@ -1288,11 +1287,11 @@ $TIMDF=000007 CH.MUL=000052 ENDFLG=****** G LET.R =0
|
|||||||
9$3 000260R L 002 CH.SUB=000055 ERRBTS=****** G MDFFLG=000004 SECROL=000012 G
|
9$3 000260R L 002 CH.SUB=000055 ERRBTS=****** G MDFFLG=000004 SECROL=000012 G
|
||||||
AATTRS=000130 CH.UAR=000136 EXMFLG 000000RG 010 MK.SYM=000001 SECTOR 000005RG 009
|
AATTRS=000130 CH.UAR=000136 EXMFLG 000000RG 010 MK.SYM=000001 SECTOR 000005RG 009
|
||||||
B.IDF =000001 CH.XCL=000047 FF =000014 MODE 000004RG 009 SETMAX=****** G
|
B.IDF =000001 CH.XCL=000047 FF =000014 MODE 000004RG 009 SETMAX=****** G
|
||||||
BKSIZ 000002RG 008 CLCFGS 000020RG 009 FLAGS 000004RG 009 NEXT =****** G SETNB =****** G
|
BKSIZ 000002RG 008 CLCFGS 000016RG 009 FLAGS 000004RG 009 NEXT =****** G SETNB =****** G
|
||||||
BPMB =000020 CLCLOC 000022RG 009 FT.ID =000001 OBJCHN=****** G SETXPR=****** G
|
BPMB =000020 CLCLOC 000020RG 009 FT.ID =000001 OBJCHN=****** G SETXPR=****** G
|
||||||
BSSFLG=000004 CLCMAX 000024RG 009 FT.UNX=000001 OPENO =****** G SHRFLG=000001
|
BSSFLG=000004 CLCMAX 000022RG 009 FT.UNX=000001 OPENO =****** G SHRFLG=000001
|
||||||
CATTRS=000170 CLCNAM 000014RG 009 GETLIN=****** G OVRFLG=000020 SPACE =000040
|
CATTRS=000170 CLCNAM 000012RG 009 GETLIN=****** G OVRFLG=000020 SPACE =000040
|
||||||
CH.ADD=000053 CLCSEC 000021RG 009 GLBFLG=000100 PASS 000000RG 008 STMNT =****** G
|
CH.ADD=000053 CLCSEC 000017RG 009 GLBFLG=000100 PASS 000000RG 008 STMNT =****** G
|
||||||
CH.AND=000046 CNDROL=000020 G INSERT=****** G PATTRS=000050 SWTROL=000022 G
|
CH.AND=000046 CNDROL=000020 G INSERT=****** G PATTRS=000050 SWTROL=000022 G
|
||||||
CH.BSL=000134 CODROL=000014 G INSFLG=000002 PDPV45=000000 SYMBOL 000000RG 009
|
CH.BSL=000134 CODROL=000014 G INSFLG=000002 PDPV45=000000 SYMBOL 000000RG 009
|
||||||
CH.COL=000072 CPOPJ =****** G LBLFLG=000002 PROP1 000000RG 002 SYMROL=000002 G
|
CH.COL=000072 CPOPJ =****** G LBLFLG=000002 PROP1 000000RG 002 SYMROL=000002 G
|
||||||
@@ -1319,7 +1318,7 @@ DPURE 000020 005 (RW,I,LCL,REL,CON,NOSAV)
|
|||||||
MIXED 000000 006 (RW,I,LCL,REL,CON,NOSAV)
|
MIXED 000000 006 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
ERRMES 000000 007 (RW,I,LCL,REL,CON,NOSAV)
|
ERRMES 000000 007 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
IMPURE 000006 008 (RW,I,LCL,REL,CON,NOSAV)
|
IMPURE 000006 008 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
IMPPAS 000026 009 (RW,I,LCL,REL,CON,NOSAV)
|
IMPPAS 000024 009 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
IMPLIN 000002 010 (RW,I,LCL,REL,CON,NOSAV)
|
IMPLIN 000002 010 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
SWTSEC 000000 011 (RW,I,LCL,REL,CON,NOSAV)
|
SWTSEC 000000 011 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
CNDSEC 000000 012 (RW,I,LCL,REL,CON,NOSAV)
|
CNDSEC 000000 012 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
|
|||||||
@@ -1152,7 +1152,7 @@
|
|||||||
1 001006 000207 rts pc
|
1 001006 000207 rts pc
|
||||||
291
|
291
|
||||||
292
|
292
|
||||||
293 .rept 20 ;generate xmit sequence
|
293 000020 .rept 20 ;generate xmit sequence
|
||||||
294 mov (r1)+,(r2)+
|
294 mov (r1)+,(r2)+
|
||||||
295 .endm
|
295 .endm
|
||||||
1 001010 012122 mov (r1)+,(r2)+
|
1 001010 012122 mov (r1)+,(r2)+
|
||||||
|
|||||||
@@ -2086,7 +2086,7 @@
|
|||||||
694 004202 116767 000000' 000000G movb silly,mode
|
694 004202 116767 000000' 000000G movb silly,mode
|
||||||
695 004210 116767 000000C 000000G movb <^pl rolsiz>+1+secrol,sector
|
695 004210 116767 000000C 000000G movb <^pl rolsiz>+1+secrol,sector
|
||||||
696 004216 012703 000000G 1$: mov #clcnam,r3
|
696 004216 012703 000000G 1$: mov #clcnam,r3
|
||||||
697 .rept 5
|
697 000005 .rept 5
|
||||||
698 mov -(r3),-(sp)
|
698 mov -(r3),-(sp)
|
||||||
699 .endr
|
699 .endr
|
||||||
1 004222 014346 mov -(r3),-(sp)
|
1 004222 014346 mov -(r3),-(sp)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ TESTS="test-asciz \
|
|||||||
test-prec \
|
test-prec \
|
||||||
test-psect \
|
test-psect \
|
||||||
test-rad50 \
|
test-rad50 \
|
||||||
|
test-rept \
|
||||||
test-ua-pl \
|
test-ua-pl \
|
||||||
test-undef \
|
test-undef \
|
||||||
test-word-comma"
|
test-word-comma"
|
||||||
|
|||||||
38
tests/test-rept.lst.ok
Normal file
38
tests/test-rept.lst.ok
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
1 000000 .REPT 0
|
||||||
|
2 THIS IS A BIG BLOCK OF COMMENTS
|
||||||
|
3 WE DON'T EXPECT THAT IT WILL EVER BE ASSEMBLED
|
||||||
|
4 MORE STUFF TO SAY HERE
|
||||||
|
5
|
||||||
|
6 .ENDR
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9 000000 005001 clr r1
|
||||||
|
10 000001 .rept 1
|
||||||
|
11 inc r1
|
||||||
|
12 .endr
|
||||||
|
1 000002 005201 inc r1
|
||||||
|
13
|
||||||
|
14 000004 005002 clr r2
|
||||||
|
15 000002 .rept 2
|
||||||
|
16 inc r2
|
||||||
|
17 .endr
|
||||||
|
1 000006 005202 inc r2
|
||||||
|
1 000010 005202 inc r2
|
||||||
|
18
|
||||||
|
19 000012 005000 clr r0
|
||||||
|
test-rept.mac:20: ***ERROR .REPT value must be constant
|
||||||
|
20 .rept undefd
|
||||||
|
21 000014 005200 inc r0
|
||||||
|
22 .endr
|
||||||
|
22
|
||||||
|
|
||||||
|
|
||||||
|
Symbol table
|
||||||
|
|
||||||
|
. ******R 001
|
||||||
|
|
||||||
|
|
||||||
|
Program sections:
|
||||||
|
|
||||||
|
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
|
||||||
|
000016 001 (RW,I,LCL,REL,CON,NOSAV)
|
||||||
22
tests/test-rept.mac
Normal file
22
tests/test-rept.mac
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
.REPT 0
|
||||||
|
THIS IS A BIG BLOCK OF COMMENTS
|
||||||
|
WE DON'T EXPECT THAT IT WILL EVER BE ASSEMBLED
|
||||||
|
MORE STUFF TO SAY HERE
|
||||||
|
|
||||||
|
.ENDR
|
||||||
|
|
||||||
|
|
||||||
|
clr r1
|
||||||
|
.rept 1
|
||||||
|
inc r1
|
||||||
|
.endr
|
||||||
|
|
||||||
|
clr r2
|
||||||
|
.rept 2
|
||||||
|
inc r2
|
||||||
|
.endr
|
||||||
|
|
||||||
|
clr r0
|
||||||
|
.rept undefd
|
||||||
|
inc r0
|
||||||
|
.endr
|
||||||
Reference in New Issue
Block a user