2009年07月03日

GMC-4プログラム・BHクイズ

 さて、先日から夢中になっている4ビットマイコンだが、早速プログラムを作ってみた。
 これを作るのに使わせてもらったのが、本誌にも載っている、今回の4ビットマイコン専用のアセンブラ、Gakken GMC-4 Assembler
 ここで書くリストは、これでアセンブルしたもの。


プログラムについて

 これは「2進数当てプログラム」2進LEDのうち右4つがランダムに点灯するので、この2進数に対応したキーを押すというもの。
 例えば「○○○●○●○」は2進で10なので、16進の「A」を押せば正解の音、それ以外を押せばエラー音が鳴る。
 終わりはなく、問題が出てキーを押す動作だけが続く。

(追記)
 このプログラムをmixiコミュで紹介した所、タイトルを付けてなかったので、
「2進数→Binary、16進数→Hexadecimalの頭文字をとって『BHクイズ』というのは?」
と言っていただきました。
という事で、タイトルも「BHクイズ」と修正しました。

00:A   TIY
01:F   <F>
02:8   TIA
03:0   <0>
04:4   AM
05:A   TIY
06:E   <E>
07:2   CH
08:A   TIY
09:E   <E>
0A:4   AM
0B:E   CAL
0C:D   _DSPR
0D:2   CH
0E:9   AIA
0F:1   <1>
10:0   KA
11:F   JUMP
12:0   <0>
13:D   <D>
14:7   M-
15:C   CIA
16:0   <0>
17:F   JUMP
18:1   <1>
19:F   <F>
1A:E   CAL
1B:9   _SHTS
1C:F   JUMP
1D:0   <0>
1E:7   <7>
1F:E   CAL
20:8   _ERRS
21:F   JUMP
22:0   <0>
23:7   <7>

TIY F
TIA 0
AM      ;アドレス5Fに0を入れる
TIY E      ;YrにEを入れる
START:CH   ;メインループ。Brの乱数をArに入れる
TIY E      ;Yr,Zr両方にEを入れる処理
AM      ;アドレス5Eに乱数を入れる
CAL DSPR   ;数値を2進LEDに表示
KEY:CH
AIA 1      ;キーが押されるまでAr,Brに数字が加算
KA      ;キー入力
JUMP KEY   ;押された時点でArにキー入力値、Brに乱数
M-      ;アドレス5Eの値とArを引く
CIA 0      ;その値が0か?
JUMP NOT
CAL SHTS   ;正しければ、正解音
JUMP START   ;最初に戻る
NOT:CAL ERRS   ;違っていれば、エラー音
JUMP START   ;最初に戻る


プログラム解説

 乱数を出す方法が、「キー入力を待つ間、ひたすら数値を加算」。でもYrに入れたらキー入力の後で判定などに使えない、さあどうする、と考えたあげく思い付いたのが「ArとBr両方にひたすら加算する」という方法。
 メインループにYrにEの代入があるのは、YrとZr両方にEを入れるため。本当は最初に1回入れたらいいけど、CHを1個減らすため、ループに入れたという。

 これにより、キーを押した瞬間、次の数値が入っている。
Ar:キー入力値
Br:乱数
Yr:E
Zr:E

 何か、スゲー姑息な事やってるw


これから

 最初はゲームを作りたいと思って書き始めたプログラムだけど、このままではゲームではない。
「10回中何回正解したかカウントして点数として表示」にすれば、とりあえずゲームにはなるけど、そのためにはたぶん作り直し。
 まずはその辺の改良をやってみると思うけど、さあ私の頭でどこまでできるか。


(追記)
 実はこれ、朝にアップしてからバグが見つかって、すでに3〜4回ほど修正している。でもまだ納得してないし、またバグが見つかるかもしれないので、その都度修正する予定。




posted by 司隆 at 06:59 | Comment(0) | TrackBack(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。