diff options
Diffstat (limited to 'examples/rot13.tf')
-rw-r--r-- | examples/rot13.tf | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/examples/rot13.tf b/examples/rot13.tf new file mode 100644 index 0000000..f7c24df --- /dev/null +++ b/examples/rot13.tf | |||
@@ -0,0 +1,215 @@ | |||
1 | ROT13 in Brainfuck | ||
2 | from https://en.wikipedia.org/wiki/Brainfuck#ROT13 | ||
3 | |||
4 | |||
5 | |||
6 | |||
7 | ALL ABOARD | ||
8 | chugga clack chug tickets please | ||
9 | END OF THE LINE | ||
10 | Read first character and start outer character reading loop | ||
11 | |||
12 | ALL ABOARD | ||
13 | chugga tickets please | ||
14 | END OF THE LINE | ||
15 | Skip forward if character is 0 | ||
16 | |||
17 | ALL ABOARD | ||
18 | choo | ||
19 | choo | ||
20 | chug chug chug chug tickets please choo | ||
21 | chug chug chug chug chug chug chug chug | ||
22 | choo choo | ||
23 | chugga your ticket please | ||
24 | END OF THE LINE | ||
25 | Set up divisor (32) for division loop | ||
26 | (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero) | ||
27 | |||
28 | ALL ABOARD | ||
29 | choo choo | ||
30 | chug choo choo | ||
31 | chugga tickets please | ||
32 | END OF THE LINE | ||
33 | Set up dividend (x minus 1) and enter division loop | ||
34 | |||
35 | ALL ABOARD | ||
36 | choo | ||
37 | chug choo | ||
38 | chug choo | ||
39 | chugga tickets please choo | ||
40 | choo | ||
41 | choo | ||
42 | your ticket please | ||
43 | END OF THE LINE | ||
44 | Increase copy and remainder / reduce divisor / Normal case: skip forward | ||
45 | |||
46 | ALL ABOARD | ||
47 | choo choo | ||
48 | tickets please tickets please choo | ||
49 | chug choo choo | ||
50 | chugga your ticket please choo | ||
51 | choo | ||
52 | chug choo | ||
53 | your ticket please | ||
54 | |||
55 | END OF THE LINE | ||
56 | Special case: move remainder back to divisor and increase quotient | ||
57 | |||
58 | ALL ABOARD | ||
59 | choo choo | ||
60 | choo choo | ||
61 | choo choo | ||
62 | choo choo | ||
63 | choo choo | ||
64 | chugga | ||
65 | END OF THE LINE | ||
66 | Decrement dividend | ||
67 | |||
68 | ALL ABOARD | ||
69 | your ticket please | ||
70 | END OF THE LINE | ||
71 | End division loop | ||
72 | |||
73 | ALL ABOARD | ||
74 | your ticket please choo | ||
75 | choo | ||
76 | choo | ||
77 | tickets please chugga your ticket please chug | ||
78 | END OF THE LINE | ||
79 | End skip loop; zero former divisor and reuse space for a flag | ||
80 | |||
81 | ALL ABOARD | ||
82 | choo | ||
83 | chugga chugga tickets please chugga tickets please choo choo | ||
84 | chugga choo | ||
85 | chug chug chug | ||
86 | tickets please chugga your ticket please your ticket please your ticket please | ||
87 | choo choo | ||
88 | tickets please | ||
89 | END OF THE LINE | ||
90 | Zero that flag unless quotient was 2 or 3; zero quotient; check flag | ||
91 | |||
92 | ALL ABOARD | ||
93 | chug chug chug chug chug chug chug chug chug chug chug chug choo choo | ||
94 | tickets please | ||
95 | |||
96 | END OF THE LINE | ||
97 | If flag then set up divisor (13) for second division loop | ||
98 | (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero) | ||
99 | |||
100 | ALL ABOARD | ||
101 | choo | ||
102 | chugga tickets please choo | ||
103 | chug choo | ||
104 | choo | ||
105 | your ticket please | ||
106 | END OF THE LINE | ||
107 | Reduce divisor; Normal case: increase remainder | ||
108 | |||
109 | ALL ABOARD | ||
110 | choo | ||
111 | tickets please chug tickets please choo choo | ||
112 | chug choo | ||
113 | chugga your ticket please choo | ||
114 | chug | ||
115 | choo | ||
116 | choo | ||
117 | your ticket please | ||
118 | END OF THE LINE | ||
119 | Special case: increase remainder / move it back to divisor / increase quotient | ||
120 | |||
121 | ALL ABOARD | ||
122 | choo choo | ||
123 | choo choo | ||
124 | choo choo | ||
125 | choo choo | ||
126 | choo choo | ||
127 | chugga | ||
128 | END OF THE LINE | ||
129 | Decrease dividend | ||
130 | |||
131 | ALL ABOARD | ||
132 | your ticket please | ||
133 | END OF THE LINE | ||
134 | End division loop | ||
135 | |||
136 | ALL ABOARD | ||
137 | choo | ||
138 | choo | ||
139 | tickets please choo choo | ||
140 | chug choo | ||
141 | chugga your ticket please | ||
142 | END OF THE LINE | ||
143 | Add remainder back to divisor to get a useful 13 | ||
144 | |||
145 | ALL ABOARD | ||
146 | choo | ||
147 | tickets please | ||
148 | END OF THE LINE | ||
149 | Skip forward if quotient was 0 | ||
150 | |||
151 | ALL ABOARD | ||
152 | chugga tickets please | ||
153 | END OF THE LINE | ||
154 | Decrement quotient and skip forward if quotient was 1 | ||
155 | |||
156 | ALL ABOARD | ||
157 | chugga choo choo | ||
158 | choo choo | ||
159 | tickets please chugga your ticket please choo | ||
160 | choo | ||
161 | |||
162 | END OF THE LINE | ||
163 | Zero quotient and divisor if quotient was 2 | ||
164 | |||
165 | ALL ABOARD | ||
166 | your ticket please choo choo | ||
167 | choo choo | ||
168 | tickets please choo choo | ||
169 | choo choo | ||
170 | chugga choo | ||
171 | choo | ||
172 | chugga your ticket please choo | ||
173 | choo | ||
174 | |||
175 | END OF THE LINE | ||
176 | Zero divisor and subtract 13 from copy if quotient was 1 | ||
177 | |||
178 | ALL ABOARD | ||
179 | your ticket please choo choo | ||
180 | choo choo | ||
181 | tickets please choo choo | ||
182 | choo choo | ||
183 | chug choo | ||
184 | choo | ||
185 | chugga your ticket please | ||
186 | END OF THE LINE | ||
187 | Zero divisor and add 13 to copy if quotient was 0 | ||
188 | |||
189 | ALL ABOARD | ||
190 | your ticket please | ||
191 | END OF THE LINE | ||
192 | End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3) | ||
193 | |||
194 | ALL ABOARD | ||
195 | choo choo | ||
196 | tickets please chugga your ticket please | ||
197 | END OF THE LINE | ||
198 | Clear remainder from first division if second division was skipped | ||
199 | |||
200 | ALL ABOARD | ||
201 | choo choo | ||
202 | click tickets please chugga your ticket please | ||
203 | END OF THE LINE | ||
204 | Output ROT13ed character from copy and clear it | ||
205 | |||
206 | ALL ABOARD | ||
207 | choo choo | ||
208 | chugga clack chug | ||
209 | END OF THE LINE | ||
210 | Read next character | ||
211 | |||
212 | ALL ABOARD | ||
213 | your ticket please | ||
214 | END OF THE LINE | ||
215 | End character reading loop | ||