@@ -66,9 +66,37 @@ func TestSuite(t *testing.T) {
6666 ` ,
6767 },
6868 // AGAIN does not have test cases
69- // ALIGN
69+ {
70+ name : "ALIGN" ,
71+ setup : `
72+ ALIGN 1 ALLOT HERE ALIGN HERE 3 CELLS ALLOT
73+ CONSTANT A-ADDR CONSTANT UA-ADDR
74+ T{ UA-ADDR ALIGNED -> A-ADDR }T
75+ ` ,
76+ code : `
77+ T{ 1 A-ADDR C! A-ADDR C@ -> 1 }T
78+ T{ 1234 A-ADDR ! A-ADDR @ -> 1234 }T
79+ T{ 123 456 A-ADDR 2! A-ADDR 2@ -> 123 456 }T
80+ T{ 2 A-ADDR CHAR+ C! A-ADDR CHAR+ C@ -> 2 }T
81+ T{ 3 A-ADDR CELL+ C! A-ADDR CELL+ C@ -> 3 }T
82+ T{ 1234 A-ADDR CELL+ ! A-ADDR CELL+ @ -> 1234 }T
83+ T{ 123 456 A-ADDR CELL+ 2! A-ADDR CELL+ 2@ -> 123 456 }T
84+ ` ,
85+ },
7086 // ALIGNED does not have test cases
71- // ALLOT
87+ {
88+ name : "ALLOT" ,
89+ setup : `
90+ HERE 1 ALLOT
91+ HERE
92+ CONSTANT 2NDA
93+ CONSTANT 1STA
94+ ` ,
95+ code : `
96+ T{ 1STA 2NDA - 0< -> <TRUE> }T \ HERE MUST GROW WITH ALLOT
97+ T{ 1STA 1+ -> 2NDA }T \ ... BY ONE ADDRESS UNIT
98+ ` ,
99+ },
72100 {
73101 name : "AND" ,
74102 code : `
@@ -195,7 +223,25 @@ func TestSuite(t *testing.T) {
195223 T{ 0 2 cs2 -> 299 }T
196224 ` ,
197225 },
198- // C,
226+ {
227+ name : "C," ,
228+ setup : `
229+ HERE 1 C,
230+ HERE 2 C,
231+ CONSTANT 2NDC
232+ CONSTANT 1STC
233+ ` ,
234+ code : `
235+ T{ 1STC 2NDC - 0< -> <TRUE> }T \ HERE MUST GROW WITH ALLOT
236+ T{ 1STC CHAR+ -> 2NDC }T \ ... BY ONE CHAR
237+ // T{ 1STC 1 CHARS + -> 2NDC }T \ this test is incorrect
238+ T{ 1STC C@ 2NDC C@ -> 1 2 }T
239+ T{ 3 1STC C! -> }T
240+ T{ 1STC C@ 2NDC C@ -> 3 2 }T
241+ T{ 4 2NDC C! -> }T
242+ T{ 1STC C@ 2NDC C@ -> 3 4 }T
243+ ` ,
244+ },
199245 // CELL+ doesn't have regular tests
200246 {
201247 name : "CELLS" ,
@@ -281,7 +327,23 @@ func TestSuite(t *testing.T) {
281327 T{ nn2 @ EXECUTE -> 9876 }T
282328 ` ,
283329 },
284- // ,
330+ {
331+ name : "," ,
332+ code : `
333+ T{ 1ST 2ND - 0< -> <TRUE> }T \ HERE MUST GROW WITH ALLOT
334+ T{ 1ST CELL+ -> 2ND }T \ ... BY ONE CELL
335+ T{ 1ST 1 CELLS + -> 2ND }T
336+ T{ 1ST @ 2ND @ -> 1 2 }T
337+ T{ 5 1ST ! -> }T
338+ T{ 1ST @ 2ND @ -> 5 2 }T
339+ T{ 6 2ND ! -> }T
340+ T{ 1ST @ 2ND @ -> 5 6 }T
341+ T{ 1ST 2@ -> 6 5 }T
342+ T{ 2 1 1ST 2! -> }T
343+ T{ 1ST 2@ -> 2 1 }T
344+ T{ 1S 1ST ! 1ST @ -> 1S }T \ CAN STORE CELL-WIDE VALUE
345+ ` ,
346+ },
285347 // C"
286348 // DECIMAL does not have any tests
287349 {
@@ -419,7 +481,7 @@ func TestSuite(t *testing.T) {
419481 // FIND
420482 // FM/MOD
421483 // @ does not have any tests
422- // HERE
484+ // HERE does not have any tests
423485 // HEX does not have any tests
424486 // HOLD
425487 // HOLDS
@@ -452,6 +514,8 @@ func TestSuite(t *testing.T) {
452514 T{ VARIABLE iw3 IMMEDIATE 234 iw3 ! iw3 @ -> 234 }T
453515 T{ : iw4 iw3 [ @ ] LITERAL ; iw4 -> 234 }T
454516 T{ :NONAME [ 345 ] iw3 [ ! ] ; DROP iw3 @ -> 345 }T
517+ \ The rest of these tests fail because CREATE does not
518+ \ put the newly created definition on the data space.
455519 \ T{ CREATE iw5 456 , IMMEDIATE -> }T
456520 \ T{ :NONAME iw5 [ @ iw3 ! ] ; DROP iw3 @ -> 456 }T
457521 \ T{ : iw6 CREATE , IMMEDIATE DOES> @ 1+ ; -> }T
@@ -1515,15 +1579,15 @@ func TestSuite(t *testing.T) {
15151579 setup : `
15161580 T{ 50 CELLS ALLOCATE SWAP addr ! -> 0 }T
15171581 T{ addr @ ALIGNED -> addr @ }T \ Test address is aligned
1518- // T{ HERE -> datsp @ }T \ Check data space pointer is unaffected
1582+ T{ HERE -> datsp @ }T \ Check data space pointer is unaffected
15191583 addr @ 50 write-cell-mem
15201584 addr @ 50 check-cell-mem \ Check we can access the heap
15211585 T{ addr @ FREE -> 0 }T
15221586
15231587 T{ 99 ALLOCATE SWAP addr ! -> 0 }T
15241588 T{ addr @ ALIGNED -> addr @ }T \ Test address is aligned
15251589 T{ addr @ FREE -> 0 }T
1526- // T{ HERE -> datsp @ }T \ Data space pointer unaffected by FREE
1590+ T{ HERE -> datsp @ }T \ Data space pointer unaffected by FREE
15271591 T{ -1 ALLOCATE SWAP DROP 0= -> <TRUE> }T \ Memory allocation works with max size
15281592 ` ,
15291593 },
@@ -1544,7 +1608,7 @@ func TestSuite(t *testing.T) {
15441608 T{ addr @ -1 RESIZE 0= -> addr @ <TRUE> }T
15451609
15461610 T{ addr @ FREE -> 0 }T
1547- // T{ HERE -> datsp @ }T \ Data space pointer is unaffected
1611+ T{ HERE -> datsp @ }T \ Data space pointer is unaffected
15481612 ` ,
15491613 code : `` ,
15501614 },
0 commit comments