*このパートはH8/300/TinyにMidiを導入するためのノウハウを蓄積するための場所です*
|
||||||||||||||||||||||||||||||||||
関連項目: H8/3664 AKI-H8 PallarellPort増設 VHDL coding 次の頁 |
||||||||||||||||||||||||||||||||||
さて、どこから順を追って説明するか、真面目に考えると頭が痛くなってしまうが、ここはプログラムを部分的に分析することで、理解をしていこうと思う。また、煩雑になることを避けるため、MIDIに直接関係のないポイントは重要だけれども理解不能な呪文として取り扱うことにする。 まず、基本的な事柄から。 コードをタイプするスタイルは各人色々な作法を持っているが、まず一見して解る違いとして、大文字、小文字の使い分けがある。例えば、次のような式を書く場合、、 control_number_set: push.w r2 mov.b @pdatA,r3l ;loading port data and.b #b'01111111,r3l ;msb reset to zero sub.w r2,r2 ;clear mov.b r3l,r2l and.b #h'0F,r3l ;clear msb 4bit, r3l contains BCD lower 4bits and.b #h'F0,r2l ;clear lsb 4bit, r2l contains BCD upper 4bits shlr.b r2l ;shift data from msb 4bit to the lsb 4 bit shlr.b r2l shlr.b r2l shlr.b r2l MOV.B #10,R1L ;LOADING VALUE #10 MULXU.B R2L,R1 ;MULTIPLEX BY 10 ADD.B R1L,R3L CMP.B #0, R3L ;DETECTING ZERO BNE CCSTATUS_OUT MOV.B #69,R3L ;PRESET #69 BRA CCSTATUS_OUT 後半は大文字でタイプしてみたが、小文字で書くか大文字で書くかだけの違いで、えらく印象が変わってしまう。これは、個人の感性なのでどちらが正しいと言うことにはならないが、僕は大文字を読みにくく感じることが多いので、コードを書く場合は主に小文字を使うことにしている。ただし、このスタイルには弱点があって、例えば、 r3l と間違えて r31 とキーを打ってしまう可能性があるのだ。しかも、見てくれが似ているのでコレが原因で不具合が起こっても、見つけ出すことが意外と難しかったりする。ちなみに、これを大文字で書くと、、、、 R3L と R31 このように、間違いは一目瞭然となる。僕のような過去に「タイプライター」を使っていたロートルは小文字のエルを「壱」の代わりに打つことを身体で覚えているので、この手の間違いを起こし易い。心配な人は最初から大文字を使った方がよいかも知れない。 さて、次に紹介するルールは、コメント文についてである。プログラムは暗号に近いものがあって、しかも、一連の作業ルーティンは単純な作業の集積となる。従って、自分で書いたモノであっても、時間が経ってしまうと何を意図して書いたモノなのか、解らなくなってしまうことが多い。その手のトラブルを未然に防ぐための工夫が「コメント」だ。プログラム上のセミコロンは、「コレより右は改行するまでプログラムとして認識しない」という決まりなのだ。 したがって上の例では、1行目後半の ;loading port data という部分をコメントとして扱うことになる。 僕のようなシロートがコンピューターのプログラミングを行う上で最初に感じる違和感は、日頃何の気ナシにやっている事をプログラムに書くとやたらと細かいステップで記述する必要があることだ。例として、上のコードを解説してみよう。
注1) デジタルスイッチ: 0〜9の数字を入力するためのロータリースイッチの一種。スイッチはモジュール化されていて、桁数に合わせて増設することが出来る。このモデルは10進法に対応したデバイスなので、4ビットあたり0〜9の表現を行う。8ビット入力ではデータを受ける側で、2進法にエンコードする必要がある。上記のプログラムはそのプロセスを表している。また、このデータ幅では表現出来る数が0〜99となってしまう事に注意。256を表現するためには、12ビット幅が必要となる。 ![]() つづく→ |
||||||||||||||||||||||||||||||||||