Skip to content

Commit d6d4bbe

Browse files
committed
Fix ID of 7/b tape.
Add unit test for B compiler.
1 parent 1df8700 commit d6d4bbe

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

machine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class Machine {
127127
static const Word TAPE_LIBRAR_12 = 054'51'42'62'41'62'00'22;
128128
static const Word TAPE_LIBRAR_37 = 054'51'42'62'41'62'00'67;
129129
static const Word TAPE_BEMSH = 044'51'63'60'41'43'33'31; // DISPAC 739
130-
static const Word TAPE_B = 044'00'00'00'00'00'00'07;
130+
static const Word TAPE_B = 042'00'00'00'00'00'00'07;
131131

132132
// Disc names
133133
static const Word DISC_LOCAL = 054'57'43'41'54'00'00'00;

tests/expect_b.txt

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
04 ИЮЛ 24 23.45
2+
ЙOKCEЛ БЭCM-6/5 ШИФP-12
3+
MOHИTOPHAЯ CИCTEMA ′Д Y Б H A′ - 20/10/88
4+
5+
6+
7+
8+
9+
10+
11+
ЖЖЖЖ ЖЖЖЖ ЖЖЖ Ж Ж ЖЖЖЖ ЖЖЖ Ж ЖЖЖЖ ЖЖЖЖ
12+
Ж Ж Ж Ж Ж ЖЖ ЖЖ Ж Ж Ж Ж Ж Ж Ж
13+
ЖЖЖ Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж ЖЖЖ Ж Ж
14+
Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж ЖЖЖЖ
15+
Ж Ж Ж Ж Ж Ж Ж ЖЖЖЖ Ж Ж Ж Ж Ж
16+
Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж
17+
ЖЖЖЖ ЖЖЖЖ ЖЖЖ Ж Ж Ж ЖЖЖ ЖЖЖЖЖ ЖЖЖЖЖ Ж Ж
18+
19+
20+
21+
22+
23+
24+
25+
26+
*NAME B COMPILER
27+
*TAPE:7/*,40
28+
*LIBRARY:40
29+
*TRANS-MAIN:40020
30+
OVERLAY OT 20/04/25
31+
B COMPILER FOR BESM-6, VERSION 04/2025
32+
COMPILED 3 LINES OF CODE, FOUND 0 ERRORS
33+
34+
*NO LIST
35+
*CALL BLOCKERR
36+
*MADLEN
37+
MAIN CP 0.0, ST 0.0, RT 1.0*
38+
*READ OLD
39+
*EXECUTE
40+
*LIBRA:40 = B/DIV B/EQ B/GT B/LT B/MUL B/NE B/RET B/SAVE0 B/SAVE
41+
B/TOUT B/TRUE CHAR PRINTD PRINTO PRINTF WRITE WRITEB OUT*CNT OUT*SHFT
42+
OUT*BUFF FLUSH FOUT
43+
44+
MAIN 01000 PRINTD 01413 B/MUL 01757 ISOTCOSY 06002
45+
PROGRAM E 01000 PRINTO 01466 B/GT 01766 ISOTCOS1 E 06053
46+
B/SAVE0 01011 WRITE 01517 FOUT 01771 DRUMTAP* 06073
47+
B/RET 01016 B/TRUE 01622 WRCARD 01772 CHKWORD* C 06124
48+
PRINTF 01023 OUT*CNT 01623 WRWORD E 02014 PRINT8 06125
49+
B/SAVE 01256 OUT*SHFT 01624 WBEGIN E 02033 STOP* 06306
50+
CHAR 01263 OUT*BUFF 01625 WRIEND E 02042 EXIT E 06307
51+
B/NE 01301 FLUSH 01654 B/TOUT 02075 CBOБOДHO 06335
52+
B/EQ 01304 B/LT 01744 WRWORD/ C 04000
53+
WRITEB 01307 B/DIV 01747 XWRITE/ C 06000
54+
55+
HELLO, B!

tests/session_test.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -952,3 +952,22 @@ _).
952952
output = extract_after_execute(output);
953953
check_output(output, expect);
954954
}
955+
956+
//
957+
// Run B example and check output.
958+
//
959+
TEST_F(dubna_session, b_hello)
960+
{
961+
auto output = run_job_and_capture_output(R"(*name b compiler
962+
*tape:7/b,40
963+
*library:40
964+
*trans-main:40020
965+
main() {
966+
printf("Hello, B!*n");
967+
}
968+
*execute
969+
*end file
970+
)");
971+
auto expect = file_contents(TEST_DIR "/expect_b.txt");
972+
check_output(output, expect);
973+
}

0 commit comments

Comments
 (0)