summaryrefslogtreecommitdiff
path: root/programs
diff options
context:
space:
mode:
Diffstat (limited to 'programs')
-rw-r--r--programs/echo.pal6
-rw-r--r--programs/echo_int.pal58
-rw-r--r--programs/echo_optimal.pal67
-rw-r--r--programs/fib_mike.pal (renamed from programs/mike_fib.pal)2
4 files changed, 128 insertions, 5 deletions
diff --git a/programs/echo.pal b/programs/echo.pal
index 4e59623..83b46e8 100644
--- a/programs/echo.pal
+++ b/programs/echo.pal
@@ -1,13 +1,11 @@
1/ vim: set sw=8 noexpandtab : 1/ vim: set sw=8 noexpandtab :
2 2
3*200 3*200
4 TFL
4LOOP, TSF 5LOOP, TSF
5 JMS ECHO
6 JMP LOOP 6 JMP LOOP
7
8ECHO, 0
9WAIT, KSF 7WAIT, KSF
10 JMP WAIT 8 JMP WAIT
11 KRB 9 KRB
12 TLS 10 TLS
13 JMP I ECHO 11 JMP LOOP
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
diff --git a/programs/echo_optimal.pal b/programs/echo_optimal.pal
new file mode 100644
index 0000000..1281309
--- /dev/null
+++ b/programs/echo_optimal.pal
@@ -0,0 +1,67 @@
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*100
14
15TTBUSY, 0 / FIXME: sometimes we get wedged with TTBUSY=1, but TT flag is clear (no TT interrupt occurs)
16
17*200
18
19 CLA IAC
20 KIE
21 ION
22 CLA
23LOOP, TAD TTBUSY
24 SZA
25 JMP LOOP
26 TAD TAIL
27 CMA IAC
28 TAD HEAD
29 SNA
30 JMP LOOP
31 CLA
32 CDF 0010
33 TAD I TAIL
34 CDF 0000
35 IOF / critical section
36 TPC
37 CLA IAC
38 ION
39 DCA TTBUSY / end critical section
40 JMP LOOP
41
42*400
43
44SAVEA, 0
45SAVEF, 0
46
47GOTINT, DCA SAVEA
48 GTF
49 AND (7577)
50 DCA SAVEF
51 TSF
52 JMP KBIN
53 DCA TTBUSY
54 TCF
55KBIN, KSF
56 JMP RETINT
57 KRB
58 CDF 0010
59 DCA I HEAD
60 CDF 0000
61RETINT, CLA
62 TAD SAVEF
63 RTF
64 CLA
65 TAD SAVEA
66 ION
67 JMP I INTRET
diff --git a/programs/mike_fib.pal b/programs/fib_mike.pal
index 6f56109..a20a843 100644
--- a/programs/mike_fib.pal
+++ b/programs/fib_mike.pal
@@ -9,7 +9,7 @@ LOOP, CLA
9 TAD FIB0 9 TAD FIB0
10 JMS PUTN 10 JMS PUTN
11 CLA 11 CLA
12 TAD (054) 12 TAD (012)
13 JMS PUTC 13 JMS PUTC
14 CLA 14 CLA
15 TAD FIB0 15 TAD FIB0