use strict;
use warnings;
-use Test::More tests => 2;
+use Test::More tests => 3;
BEGIN { use_ok('App::Scheme79asm') };
sub run_test {
is $actual, $expected, $name
}
-run_test {addr_bits => 5}, '(quoted . (symbol . 5))', <<'', '(QUOTE 5)';
-mem[0] <= 0;
-mem[1] <= 0;
-mem[2] <= 8'b00100000;
-mem[3] <= 8'b00100000;
-mem[4] <= 8'd8;
-mem[5] <= 8'b11100111;
-mem[6] <= 0;
-mem[7] <= 8'b00100101;
+run_test {addr_bits => 5}, '(quoted (symbol 5))', <<'', '(QUOTE 5)';
+mem[0] <= 0; // (cdr part of NIL)
+mem[1] <= 0; // (car part of NIL)
+mem[2] <= 8'b00100000; // (cdr part of T)
+mem[3] <= 8'b00100000; // (car part of T)
+mem[4] <= 8'd8; // (free storage pointer)
+mem[5] <= 8'b11100111; // QUOTED 7
+mem[6] <= 0; // (result of computation)
+mem[7] <= 8'b00100101; // SYMBOL 5
+
+run_test {addr_bits => 13}, '(call (more (funcall nil) (proc (var -2))) (number 5))', <<'', '((LAMBDA ID (X) X) 5)';
+mem[ 0] <= 0; // (cdr part of NIL)
+mem[ 1] <= 0; // (car part of NIL)
+mem[ 2] <= 16'b0010000000000000; // (cdr part of T)
+mem[ 3] <= 16'b0010000000000000; // (car part of T)
+mem[ 4] <= 16'd12; // (free storage pointer)
+mem[ 5] <= 16'b1100000000000111; // CALL 7
+mem[ 6] <= 0; // (result of computation)
+mem[ 7] <= 16'b0000000000001001; // MORE 9
+mem[ 8] <= 16'b0010000000000101; // NUMBER 5
+mem[ 9] <= 16'b1110000000000000; // FUNCALL NIL
+mem[10] <= 16'b1000000000001011; // PROC 11
+mem[11] <= 16'b0011111111111110; // VAR -2