Skip to content

Instantly share code, notes, and snippets.

@neetsdkasu
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neetsdkasu/e17c3250a82d5ddeba84 to your computer and use it in GitHub Desktop.
Save neetsdkasu/e17c3250a82d5ddeba84 to your computer and use it in GitHub Desktop.
自作プログラミング言語で作った15パズルのソースコード
1 CLS ALL
2 FLUSH OFF
3 GOSUB r
4 GOSUB w
5 GOSUB q
6 GOSUB x
7 END
8 LABEL a
9 POSXY A, B
10 ADDME A, 16
11 LINE A, B
12 RETURN
13 LABEL b
14 POSXY A, B
15 SUBME A, 16
16 LINE A, B
17 RETURN
18 LABEL c
19 POSXY A, B
20 ADDME B, 16
21 LINE A, B
22 RETURN
23 LABEL d
24 POSXY A, B
25 SUBME B, 16
26 LINE A, B
27 RETURN
28 LABEL e
29 PUSH A
30 PUSH B
31 ADDME A, 18
32 ADDME B, 4
33 GOSUB c
34 GOSUB c
35 POP B
36 POP A
37 RETURN
38 LABEL f
39 PUSH A
40 PUSH B
41 ADDME A, 2
42 ADDME B, 4
43 GOSUB a
44 GOSUB c
45 GOSUB b
46 GOSUB c
47 GOSUB a
48 POP B
49 POP A
50 RETURN
51 LABEL g
52 PUSH A
53 PUSH B
54 ADDME A, 2
55 ADDME B, 4
56 GOSUB a
57 GOSUB c
58 SUBME A, 16
59 GOSUB a
60 GOSUB c
61 GOSUB b
62 POP B
63 POP A
64 RETURN
65 LABEL h
66 PUSH A
67 PUSH B
68 ADDME A, 2
69 ADDME B, 4
70 GOSUB c
71 GOSUB a
72 SUBME B, 16
73 GOSUB c
74 GOSUB c
75 POP B
76 POP A
77 RETURN
78 LABEL i
79 PUSH A
80 PUSH B
81 ADDME A, 18
82 ADDME B, 4
83 GOSUB b
84 GOSUB c
85 GOSUB a
86 GOSUB c
87 GOSUB b
88 POP B
89 POP A
90 RETURN
91 LABEL j
92 PUSH A
93 PUSH B
94 ADDME A, 18
95 ADDME B, 4
96 GOSUB b
97 GOSUB c
98 GOSUB c
99 GOSUB a
100 GOSUB d
101 GOSUB b
102 POP B
103 POP A
104 RETURN
105 LABEL k
106 PUSH A
107 PUSH B
108 ADDME A, 2
109 ADDME B, 20
110 GOSUB d
111 GOSUB a
112 GOSUB c
113 GOSUB c
114 POP B
115 POP A
116 RETURN
117 LABEL l
118 PUSH A
119 PUSH B
120 ADDME A, 2
121 ADDME B, 20
122 GOSUB d
123 GOSUB a
124 GOSUB c
125 GOSUB c
126 GOSUB b
127 GOSUB d
128 GOSUB a
129 POP B
130 POP A
131 RETURN
132 LABEL m
133 PUSH A
134 PUSH B
135 ADDME A, 18
136 ADDME B, 20
137 GOSUB b
138 GOSUB d
139 GOSUB a
140 GOSUB c
141 GOSUB c
142 GOSUB b
143 POP B
144 POP A
145 RETURN
146 LABEL n
147 PUSH A
148 PUSH B
149 ADDME A, 2
150 ADDME B, 4
151 GOSUB a
152 GOSUB c
153 GOSUB c
154 GOSUB b
155 GOSUB d
156 GOSUB d
157 POP B
158 POP A
159 RETURN
160 LABEL o
161 CMPLE C, 5, GOTO <+15>
162 CMPLE C, 3, GOTO <+9>
163 CMPNE C, 1, GOTO <+3>
164 GOSUB e
165 RETURN
166 CMPNE C, 2, GOTO <+3>
167 GOSUB f
168 RETURN
169 GOSUB n
170 RETURN
171 CMPNE C, 3, GOTO <+3>
172 GOSUB g
173 RETURN
174 GOSUB h
175 RETURN
176 CMPLE C, 7, GOTO <+6>
177 CMPNE C, 5, GOTO <+3>
178 GOSUB i
179 RETURN
180 GOSUB j
181 RETURN
182 CMPNE C, 7, GOTO <+3>
183 GOSUB k
184 RETURN
185 CMPNE C, 8, GOTO <+3>
186 GOSUB l
187 RETURN
188 GOSUB m
189 RETURN
190 LABEL p
191 PUSH A
192 PUSH B
193 PUSH C
194 ADDME A, 5
195 ADDME B, 5
196 CMPS D, 10, GOTO <+3>
197 DIV C, D, 10
198 GOSUB o
199 ADDME A, 20
200 REM C, D, 10
201 GOSUB o
202 POP C
203 POP B
204 POP A
205 RETURN
206 LABEL q
207 PUSH A
208 PUSH B
209 PUSH C
210 PUSH D
211 PUSH E
212 PUSH F
213 CLS GRAPHIC
214 LET A, 20
215 LET C, 0
216 POSXY A, 20
217 LINE A, 220
218 POSXY 20, A
219 LINE 220, A
220 ADDME A, 50
221 INC C
222 CMPS C, 5, GOTO <-6>
223 LET A, 20
224 LET B, 20
225 LET E, 0
226 GETARY D, E
227 CMPE D, 0, GOTO <+2>
228 GOSUB p
229 INC E
230 CMPLE E, 16, GOTO <+8>
231 REM F, E, 4
232 CMPE F, 0, GOTO <+3>
233 ADDME A, 50
234 GOTO <-8>
235 LET A, 20
236 ADDME B, 50
237 GOTO <-11>
238 FLUSH OFF
239 POP F
240 POP E
241 POP D
242 POP C
243 POP B
244 POP A
245 RETURN
246 LABEL r
247 PUSH E
248 PUSH F
249 LET E, 0
250 LET F, 1
251 LETARY E, F
252 INC E
253 INC F
254 CMPS E, 15, GOTO <-3>
255 LETARY 15, 0
256 LET N, 15
257 POP F
258 POP E
259 RETURN
260 LABEL s
261 PUSH G
262 PUSH H
263 REM G, N, 4
264 CMPE G, 3, GOTO <+6>
265 ADD G, N, 1
266 GETARY H, G
267 LETARY N, H
268 LETARY G, 0
269 INC N
270 POP H
271 POP G
272 RETURN
273 LABEL t
274 PUSH G
275 PUSH H
276 REM G, N, 4
277 CMPE G, 0, GOTO <+6>
278 SUB G, N, 1
279 GETARY H, G
280 LETARY N, H
281 LETARY G, 0
282 DEC N
283 POP H
284 POP G
285 RETURN
286 LABEL u
287 CMPLE N, 12, RETURN
288 PUSH G
289 PUSH H
290 ADD G, N, 4
291 GETARY H, G
292 LETARY N, H
293 LETARY G, 0
294 ADDME N, 4
295 POP H
296 POP G
297 RETURN
298 LABEL v
299 CMPS N, 4, RETURN
300 PUSH G
301 PUSH H
302 SUB G, N, 4
303 GETARY H, G
304 LETARY N, H
305 LETARY G, 0
306 SUBME N, 4
307 POP H
308 POP G
309 RETURN
310 LABEL w
311 PUSH E
312 PUSH F
313 PUSH G
314 PUSH I
315 PUSH J
316 LET E, 0
317 LET F, 0
318 DIV I, N, 4
319 REM J, N, 4
320 RAND G, 3
321 CMPE F, 0, GOTO <+11>
322 ADDME J, G
323 REMME J, 4
324 MULME I, 4
325 ADD G, I, J
326 CMPLE N, G, GOTO <+3>
327 GOSUB s
328 GOTO <-2>
329 CMPSE N, G, GOTO <+13>
330 GOSUB t
331 GOTO <-2>
332 ADDME I, G
333 REMME I, 4
334 MULME I, 4
335 ADD G, I, J
336 CMPLE N, G, GOTO <+3>
337 GOSUB u
338 GOTO <-2>
339 CMPSE N, G, GOTO <+3>
340 GOSUB v
341 GOTO <-2>
342 INC E
343 SUB F, 1, F
344 CMPS E, 100, GOTO <-26>
345 POP J
346 POP I
347 POP G
348 POP F
349 POP E
350 RETURN
351 LABEL x
352 PUSH E
353 PUSH F
354 PUSH G
355 PUSH K
356 WAIT 100
357 INKEY K
358 CMPNE K, 6, GOTO <+3>
359 GOSUB s
360 GOTO <+9>
361 CMPNE K, 4, GOTO <+3>
362 GOSUB t
363 GOTO <+6>
364 CMPNE K, 8, GOTO <+3>
365 GOSUB u
366 GOTO <+3>
367 CMPNE K, 2, GOTO <-11>
368 GOSUB v
369 GOSUB q
370 LET E, 0
371 LET F, 1
372 GETARY G, E
373 CMPNE G, F, GOTO <-17>
374 INC E
375 INC F
376 CMPS E, 15, GOTO <-4>
377 POP K
378 POP G
379 POP F
380 POP E
381 RETURN
auの携帯電話のオープンアプリ上で動くプログラミングアプリ
ヘルプを記したForm3.javaより抜粋
//// Form3.java 56行目より抜粋 ////
return "SimplePG Version "+ver+"\n\n"
+"当アプリは簡素な処理ができるプログラミングアプリです\n"
+"アセンブリ言語、行番号つきBASICをイメージして作りました\n"
+"当言語はインタープリタ型で、扱えるのは整数のみです\n"
+"当言語は私オリジナルですので慣れないと難しいと思います\n"
+"こういうソフトを作るのは初めてですのであまり良い出来ではないです\n"
+"編集も不便ですし、デバッグも不便なのです\n"
+"そして、残念ながらすごいプログラムは作れません\n"
+"さらに、このアプリ自体のデバッグも十分でないため\n"
+"私が予想もしなかったエラーが生じるかもしれません\n"
+"ですから、あまり期待せずにお使い下さい\n\n"
//// Form3.java 68行目より抜粋 ////
case 1:
return "各メニューの説明です\n\n"
+"メインメニュ\n"
+" Run : プログラムを実行します\n"
+" Edit : プログラムの編集をします\n"
+" File : プログラムのセーブやロードをします\n"
+" Other : どうでもいい機能が設置してあります\n"
+" Exit : 本アプリを終了します\n\n"
+"Editメニュー\n"
+" Back : メインメニューに戻ります\n"
+" AddNew : 最終行に新しいコマンドを追加します\n"
+" Revise : 指定行のコマンドを修正します\n"
+" Insert : 指定行に新しいコマンドを追加します\n"
+" Delete : 指定行のコマンドを削除します\n"
+" Test : 任意のコマンドを実行します\n"
+" ListAL : プログラム全行を表示します\n"
+" ListAp : 指定行からプログラムを表示します\n"
+" SetMsg : プログラムで使用するメッセージを設定します\n\n"
+"Fileメニュー\n"
+" Back : メインメニューに戻ります\n"
+" Save : プログラムをセーブします\n"
+" Load : プログラムをロードします\n"
+" New : 編集中のプログラムを破棄します\n\n"
+"Otherメニュー\n"
+" Back : メインメニューに戻ります\n"
+" Detail : コマンドの表示方法を変更します\n"
+" View : プログラムを表示します\n"
+" Help : ヘルプを開きます\n";
case 2:
return "コマンドの説明(1)\n\n"
+"大雑把に説明します\n"
+"END : プログラムを終了します\n"
+"LABEL : 行ラベルを設定します\n"
+"GOTO : 指定先にジャンプします\n"
+"GOSUB : 指定先のサブルーチンへジャンプします\n"
+"RETURN : サブルーチンから抜け出ます\n"
+"CMPE : 比較対象値が比較値と等しい場合にジャンプ等をします\n"
+"CMPL : 比較対象値が比較値より大きい場合にジャンプ等をします\n"
+"CMPLE : 比較対象値が比較値以上の場合にジャンプ等をします\n"
+"CMPS : 比較対象値が比較値より小さい場合にジャンプ等をします\n"
+"CMPSE : 比較対象値が比較値以下の場合にジャンプ等をします\n"
+"CMPNE : 比較対象値が比較値と異なる場合にジャンプ等をします\n"
+"INPUT : 数値入力を要求します\n"
+"PUSH : スタックへ値を追加します\n"
+"POP : スタックから値を取り出します\n"
+"WAIT : ミリ秒単位で指定した時間を待機します\n"
+"RESET : 変数の値と描写を初期状態に戻します\n"
+"KEYSTAT: 指定キーが押されていた場合にジャンプ等をします\n"
+"INKEY : 押されているキーの番号を取得します\n"
+"SWAP : 値を交換します\n"
+"LETARY : 配列変数Arrayに値を代入する\n"
+"GETARY : 配列変数Arrayから値を取得する\n";
case 3:
return "コマンドの説明(2)\n\n"
+"大雑把に説明します\n"
+"LET : 変数に値を代入します\n"
+"ADD : 2つの値の和を代入します\n"
+"SUB : 2つの値の差を代入します\n"
+"MUL : 2つの値の積を代入します\n"
+"DIV : 2つの値の商を代入します\n"
+"REM : 2つの値の余りを代入します\n"
+"RAISE : 累乗した値を代入します\n"
+"ABS : 絶対値を代入します\n"
+"SGN : 符号に対応する値を代入します\n"
+"RAND : 乱数を生成して代入します\n"
+"MAX : 2つの値のうち大きいほうを代入します\n"
+"MIN : 2つの値のうち小さいほうを代入します\n"
+"GCD : 2つの値の最大公約数を代入します\n"
+"LCM : 2つの値の最小公倍数を代入します\n";
case 4:
return "コマンドの説明(3)\n\n"
+"大雑把に説明します\n"
+"PRINT : 変数の値を表示します\n"
+"MESSAGE: メッセージを表示します\n"
+"CLS : 表示されてる文字や絵を消します\n"
+"FLUSH : 画面描写のタイミングを調整します\n"
+"COLOR : 描写の色を設定します\n"
+"POSXY : 描写の基準座標を設定します\n"
+"POSX : 描写の基準X座標を設定します\n"
+"POSY : 描写の基準Y座標を設定します\n"
+"DOT : 点を描写します\n"
+"LINE ; 直線を描写します\n"
+"RECT : 長方形を描写します\n"
+"ARCST : 弧の描写開始角度を設定します\n"
+"ARCAN : 弧の描写角度を設定します\n"
+"ARC : 弧を描写します\n"
+"RECTF : 中を塗り潰した長方形を描写します\n"
+"ARCF : 中を塗り潰した扇形を描写します\n";
case 5:
return "コマンドの説明(4)\n\n"
+"大雑把に説明します\n"
+"INC : インクリメントします\n"
+"DEC : デクリメントします\n"
+"ADDME : 加算代入します\n"
+"SUBME : 減算代入します\n"
+"MULME : 乗算代入します\n"
+"DIVME : 除算代入します\n"
+"REMME : 余り代入します\n"
+"SQRT : 平方根を代入します\n"
+"SQRTME : 平方根代入します\n"
+"RVS : 逆符号した値を代入します\n"
+"RVSME : 逆符号代入します\n"
+"ADDSF : 2倍代入します\n"
+"MULSF ; 2乗代入します\n"
+"SIN : 1万倍した正弦値を代入します\n"
+"COS : 1万倍した余弦値を代入します\n"
+"INMAX : 最大値代入します\n"
+"INMIN : 最小値代入します\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment