summaryrefslogtreecommitdiff
path: root/programs/echo_int.pal
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--programs/echo_int.pal58
1 files changed, 58 insertions, 0 deletions
diff --git a/programs/echo_int.pal b/programs/echo_int.pal
new file mode 100644
index 0000000..62886ff
--- /dev/null
+++ b/programs/echo_int.pal
@@ -0,0 +1,58 @@
1/ vim: set sw=8 noexpandtab :
2
3*000
4
5INTRET, 0
6 JMP GOTINT
7
8*010
9
10HEAD, 7777 / because preincrement
11TAIL, 7777
12
13*200
14
15 CLA IAC
16 KIE
17 ION
18 CLA
19LOOP, TAD TAIL
20 CMA IAC
21 TAD HEAD
22 SNA
23 JMP LOOP
24 CLA
25 CDF 0010
26 TAD I TAIL
27 CDF 0000
28 IOF / critical section
29 TLS
30BUSY, TSF / FIXME: remove busy wait inside IOF (see echo_optimal.pal)
31 JMP BUSY
32 TCF
33 ION
34 CLA / end critical section
35 JMP LOOP
36
37*400
38
39SAVEA, 0
40SAVEF, 0
41
42GOTINT, DCA SAVEA
43 GTF
44 AND (7577)
45 DCA SAVEF
46 KSF
47 JMP RETINT
48 KRB
49 CDF 0010
50 DCA I HEAD
51 CDF 0000
52RETINT, CLA
53 TAD SAVEF
54 RTF
55 CLA
56 TAD SAVEA
57 ION
58 JMP I INTRET