diff options
Diffstat (limited to '')
| -rw-r--r-- | programs/echo_optimal.pal | 67 |
1 files changed, 67 insertions, 0 deletions
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 | |||
| 5 | INTRET, 0 | ||
| 6 | JMP GOTINT | ||
| 7 | |||
| 8 | *010 | ||
| 9 | |||
| 10 | HEAD, 7777 / because preincrement | ||
| 11 | TAIL, 7777 | ||
| 12 | |||
| 13 | *100 | ||
| 14 | |||
| 15 | TTBUSY, 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 | ||
| 23 | LOOP, 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 | |||
| 44 | SAVEA, 0 | ||
| 45 | SAVEF, 0 | ||
| 46 | |||
| 47 | GOTINT, DCA SAVEA | ||
| 48 | GTF | ||
| 49 | AND (7577) | ||
| 50 | DCA SAVEF | ||
| 51 | TSF | ||
| 52 | JMP KBIN | ||
| 53 | DCA TTBUSY | ||
| 54 | TCF | ||
| 55 | KBIN, KSF | ||
| 56 | JMP RETINT | ||
| 57 | KRB | ||
| 58 | CDF 0010 | ||
| 59 | DCA I HEAD | ||
| 60 | CDF 0000 | ||
| 61 | RETINT, CLA | ||
| 62 | TAD SAVEF | ||
| 63 | RTF | ||
| 64 | CLA | ||
| 65 | TAD SAVEA | ||
| 66 | ION | ||
| 67 | JMP I INTRET | ||
