« 4ビットマイコンで「光のハート」を降らしてみる。 | メイン | 4ビットマイコン・プログラミングの注意点 »

詰めプログラミング(世界最小POVプログラム?)

Blogmag , 近代プログラマの夕4

Posted at 2009/06/16 01:01:25 by hortense

  昨日の日記で、学研『大人の科学マガジン』の4ビットマイコンで「光のハート」(POV)のプログラムが、「まじめに書き直そうとしたら半分くらいの長さになってしまいました」と書きました。余計な部分をどんどん取り去ってみたら、半分どころか5バイト半の長さになりました。漢字2文字と3/4の情報量。誰がやってもこれ以上の手はないという「詰めプログラミング」の世界がありそうです。気合いでまだ短くするともっと短くなるか? こういうもんですよねプログラムってのは。ちょっと楽しい。


00 AIY  B Yレジスタから3を引く(パターン上のポインタを進める)。
01 <D>  D 
02 MA  5 パターンのデータを取り出す。
03 AIY  B Yレジスタに2を加える(パターン上のポインタを戻す)。
04 <2>  2 (YレジスタがEとFのときだけ桁あふれでフラグが立つ)
05 CALL E 現在のE、Fの内容を表示する
06 _DSPR D (CALL文はフラグ1のときしか実行されないことを利用)
07 AM  4 パターンデータを書き込む。
08 JUMP F 先頭に戻る。
09 <0>  0
0A <0>  0

初期値
50 8 ※50h~5Dhにパターンデータ(1ライン8ビット)ここではハートを表している。
51 3 (LEDは7個しかないので最上位のビットは無視される)。
52 4 実行するたびに破壊されるので注意。
53 4    ○○ ○○
54 2   ○  ○  ○
55 4   ○     ○
56 1   ○     ○
57 2    ○   ○
58 2     ○ ○
59 4      ○
5A 4 4ビットマイコンをLED列と直角の方向に振ると
5B 4 上記のパターンが見える。
5C 8 CALL _DSPR文は5Eh、5Fhの中身をLEDに点灯する働きがある。
5D 3

6E 0 Yレジスタの初期値です。

 以前のバージョンでは、真正直にテーブルからパターンを取り出しては(LEDの右4ビットと左3ビット)表示エリアにセットして、表示。そこで残像を生かすためにウェイトを挿入。パターンを取り出すカウンタを進めて、また次のパターンに・・・という処理だった。ところが、よく見るとパターンのテーブルと表示エリア(5Eh、5Fh)は連続している。ウェイトしている間に何か処理もできそうだ。そこで、全体をリングバッファのようなものに見立てて、中身をズリズリと動かしてみるこにした。遊星歯車のように動かすポイントがバッファの中を移動するのだが、ちょうど5Fhと5Ehを通りかかったときだけ表示している。

 POVは、それを作る人の趣向がいろいろ出ますよね。たとえば、左右対称の像を出すならパターンは半分だけ持っていればよいという指摘もあるでしょう。作る人の几帳面さとか、セコさとかが出てくると思います。私も、もう1つほどアイデアがあるんですが、よく考えたら製品の発売がまだ(6月30日)なんですよね。自分だけ遊んでいるみたいで申し訳ない。

トラックバック

このページのトラックバックURL:

http://blogmag.ascii.jp/admin/mt-tb.cgi/2570

このページへのトラックバック一覧


ASCII.jp Blogmag
[ブログマグ]
東京カレー日記

カテゴリー

最近の投稿

アーカイブ


Blog profile