|
SPIポート制御をCで書くと、あまりにも処理が遅い。今回 アセンブラでの記述をやってみる。 通常、FAT制御だけでは、特に必要がないが、このBASICマシーンで やってみたい事がある。 H8には、DACが付いている。サンプリング8KHz・8ビットのWAVデータを再生したいと思っている。 コマンド sound "AISATU" 『今日も元気に、がんばっているか?』なんて喋れば良いね・・ スピードアップするには、もっとも繰り返しの多い部分・・729行〜734行が重要 (1)H8命令語で、処理サイクル数の少ない強力な命令を使う。 (2)レジスタの使い方を工夫する。 → 730、731行 ポートの指定ビット、セット、クリアは 8サイクルの ワン命令 → 732行 ポートの指定ビットを反転して キャリーCに取り込む → 733行は、左シフトでキャリーCをビット0に取り込む、その時、はじき出された . 15ビット目のデータは、キャリーCにある。 → 734行 その時のキャリーCが、0ならば 繰り返す。 以上のため、727行目で、ビット8位置に 繰り返しをストップする”1”を埋め込んでいる。 以上の 緻密な処理はCコンパイラでは出来ない。 これにより、730〜733行のサイクル数は28サイクル 1.12μSECとなっている。 以上の様なやり方で、読み出し・書き込みCOMコマンド、レディ待ち・・の SD リード・ライト一連をアセンブラ化して、喋るBASIC・・としたいな〜。 ところで、MZ80のFDディスクBASICは 略40Kバイト弱だった。それだけのアセンブラは、今 体力の限界で書けないと思うが・・ しかも、他社のBASICより、早くするには、命令語とマシンサイクル・・BC,DE,HL・・シャドウBC,DE,HLをどのように使う・・が課題だった。 遅いクロック、少ないメモリ、しかし高速処理・・かなり、非常識?な使い方をしたような・・記憶がある。 C言語で、大量のメモリを使い、スピードはクロックを上げる・・も良いけど、 他社、他人との違い・・・特長付けには、やはり 効率の良いアセンブラ化も重要だね。 |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- パソコン




久しぶりに覗いたら、なんかMZ80レプリカから外れちゃってますね。
2009/3/20(金) 午後 4:22 [ オークスターのはるな愛 ]