41 lines
847 B
Plaintext
41 lines
847 B
Plaintext
MODULE Subleq;
|
|
FROM Terminal IMPORT Write,WriteString,WriteLn,ReadChar;
|
|
|
|
TYPE MEMORY = ARRAY[0..31] OF INTEGER;
|
|
VAR
|
|
mem : MEMORY;
|
|
ip,a,b : INTEGER;
|
|
ch : CHAR;
|
|
BEGIN
|
|
mem := MEMORY{
|
|
15, 17, -1, 17, -1, -1, 16, 1,
|
|
-1, 16, 3, -1, 15, 15, 0, 0,
|
|
-1, 72, 101, 108, 108, 111, 44, 32,
|
|
119, 111, 114, 108, 100, 33, 10, 0
|
|
};
|
|
|
|
ip := 0;
|
|
REPEAT
|
|
a := mem[ip];
|
|
b := mem[ip+1];
|
|
|
|
IF a = -1 THEN
|
|
ch := ReadChar();
|
|
mem[b] := ORD(ch);
|
|
ELSIF b = -1 THEN
|
|
Write(CHR(mem[a]));
|
|
ELSE
|
|
DEC(mem[b],mem[a]);
|
|
IF mem[b] < 1 THEN
|
|
ip := mem[ip+2];
|
|
CONTINUE
|
|
END
|
|
END;
|
|
|
|
INC(ip,3)
|
|
UNTIL ip < 0;
|
|
WriteLn;
|
|
|
|
ReadChar
|
|
END Subleq.
|