69 lines
1.6 KiB
Text
69 lines
1.6 KiB
Text
MEM = ARRAY('32')
|
|
MEM<1> = 15
|
|
MEM<2> = 17
|
|
MEM<3> = -1
|
|
MEM<4> = 17
|
|
MEM<5> = -1
|
|
MEM<6> = -1
|
|
MEM<7> = 16
|
|
MEM<8> = 1
|
|
MEM<9> = -1
|
|
MEM<10> = 16
|
|
MEM<11> = 3
|
|
MEM<12> = -1
|
|
MEM<13> = 15
|
|
MEM<14> = 15
|
|
MEM<15> = 0
|
|
MEM<16> = 0
|
|
MEM<17> = -1
|
|
MEM<18> = 72
|
|
MEM<19> = 101
|
|
MEM<20> = 108
|
|
MEM<21> = 108
|
|
MEM<22> = 111
|
|
MEM<23> = 44
|
|
MEM<24> = 32
|
|
MEM<25> = 119
|
|
MEM<26> = 111
|
|
MEM<27> = 114
|
|
MEM<28> = 108
|
|
MEM<29> = 100
|
|
MEM<30> = 33
|
|
MEM<31> = 10
|
|
MEM<32> = 0
|
|
|
|
INBUF =
|
|
OUTBUF =
|
|
BP = 0
|
|
IP = 0
|
|
|
|
LOOP GE(IP, 0) :F(DONE)
|
|
A = MEM<IP + 1>
|
|
B = MEM<IP + 2>
|
|
C = MEM<IP + 3>
|
|
IP = IP + 3
|
|
GE(A, 0) :S(NOIN)
|
|
|
|
LE(BP,SIZE(INBUF)) :S(GETCH)
|
|
INBUF = INPUT
|
|
BP = 1
|
|
|
|
GETCH &ALPHABET @N SUBSTR(INBUF,BP,1)
|
|
MEM<B + 1> = N
|
|
BP = BP + 1 :(LOOP)
|
|
|
|
NOIN GE(B, 0) :S(NOOUT)
|
|
|
|
EQ(MEM<A + 1>, 10) :F(PUTCH)
|
|
OUTPUT = OUTBUF
|
|
OUTBUF = :(LOOP)
|
|
|
|
PUTCH OUTBUF = OUTBUF CHAR(MEM<A + 1>) :(LOOP)
|
|
|
|
NOOUT MEM<B + 1> = MEM<B + 1> - MEM<A + 1>
|
|
LE(MEM<B + 1>, 0) :F(LOOP)
|
|
IP = C :(LOOP)
|
|
|
|
DONE EQ(SIZE(OUTBUF),0) :S(END)
|
|
OUTPUT = OUTBUF
|
|
END
|