2013.1.31
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第306回]


●データをロード中の写真

前回は、ND80ZV(ND80Z3.5)用の電子オルゴールプログラム(MUSICプログラム)をE−80(仮称)マイコン用に一部を変更したものを、Program Loaderを使ってロードしました。
今回はそのMUSICルプログラム用のデータをロードします。
IPL(Initial Program Loader)の説明をする前段階としてお話をすすめております関係でProgram Loaderと称しておりますが、厳密に言えばただのLoaderですから、プログラムでなければロードできないということではありません。
データもプログラムと同じようにロードすることができます。

MUSICプログラムのデータはメモリの8100H番地からロードします。
前回と同様にロードしているところを写真に撮りました。

今回はデータをLOADするために、ロードアドレスを変更します。
パネルスイッチを7F80Hにセットして、READスイッチを押しました。

アドレスLEDに7F80Hが表示され、データバスLEDには、メモリの7F80H番地の値(21H)が表示されました。

READ NEXTを押しました。

次のアドレス7F81HがアドレスLEDに表示され、データバスLEDにはメモリの7F81H番地の値(00H)が表示されました。
ここにはロード開始アドレスの下位8ビットが書かれています。
上位アドレスは次の7F82Hに入っていて、そこは現在は80Hになっています。

MUSICプログラム用データは8100H番地からロードしますが、実は今回ロードするデータファイルはND80ZV(ND80Z3.5)用のファイルをそのまま使います。
ND80ZV(ND80Z3.5)用のファイルは普通のバイナリファイルの先頭に4バイトのアドレス情報が入っています。
その情報はここで使うLoaderには不要なものですが、それを外して読み込むことはできません。
8100Hからロードしたいデータはファイルの5バイト目からですから、先頭の余分な4バイトを読んだときに、次のデータが8100Hにロードされるように、ロード開始アドレスをセットします。
ということは?

Loadを開始するアドレスを80FCHにすれば、5バイト目がちょうど8100Hになります。
そこでロード開始アドレスの下位8ビットだけをFCHに書き換えます。
パネルスイッチ右側8個のデータ設定スイッチをFCHにして、WRITEスイッチを押しました。

データバスLEDにFCHが表示されました。
これで準備は完了です。

STOPスイッチを押しながらREADスイッチを押してアドレスを1つ前に戻しました。

Loaderプログラムの先頭アドレス7F80Hになりました。
こういうときにREAD DECの機能はとても便利です。
READ DECは[第296回]で説明をしました。
READ DECが使えないと、アドレス設定スイッチをもう一度7F80Hに設定し直してから、READスイッチを押さなければなりません。

RUNスイッチを押しました。

Loaderが実行され、USB経由でWindowsパソコンから送られてくるデータをPIC18F14K50から受け取る態勢でループしています。
プログラムは7F85Hから7F9FHの間でループしていますから、アドレスLEDには7F9FHが明るく表示され、A5、A6のビットも薄く点灯しています。
ここで、パソコン側からHIDWRを実行します。


ロードするデータファイルはKOKYO.btkです。
HIDWRは瞬時に実行を終了します。
今回はファイルの先頭にアドレス情報が入っていますから、ロード開始アドレスと終了アドレスが表示されました。
しかしこの情報はE−80(仮称)マイコンのLoaderでは使われません。
ただそれを使わなくてもよいように、ロード開始アドレスを設定しましたから、データは正しく8100Hからロードされます。

STOPスイッチを押してLoaderを停止させました。

このあとデータが正しくロードされたことは確認しましたので、MUSICプログラムを実行することにしました。

パネルスイッチに8000HをセットしてREADスイッチを押しました。

アドレスLEDに8000Hが表示され、データバスLEDには31Hが表示されました。

RUNスイッチを押しました。

MUSICプログラムが実行され、E−80(仮称)ミニコンのメインボードにつないだ小型スピーカーからメロディーが流れました。
「故郷の廃家」です。
下がロードした曲データです。

8100  0D 06 0F 02 0D 04 0A 04 12 06 14 02 12 04 0F 04  
8110  0D 04 0A 04 12 04 0A 04 08 0C 00 04 0D 06 0F 02  
8120  0D 04 0A 04 12 06 14 02 12 04 0F 04 12 04 0A 04  
8130  0A 06 08 02 06 0C 00 04 08 06 07 02 08 04 0B 04  
8140  0A 06 09 02 0A 04 0D 04 0F 04 0D 04 0B 04 0A 04 
8150  08 0C 00 04 0D 06 0F 02 0D 04 0A 04 12 06 14 02  
8160  12 04 0F 04 0D 04 0A 04 0A 02 08 06 06 0C 00 04  
8170  0D 06 09 02 0A 04 0D 0C 00 08 0D 04 08 04 11 06  
8180  0F 02 0D 08 00 08 0D 06 09 02 0A 04 0D 0C 00 08  
8190  12 04 0A 04 0A 02 08 06 06 0C FF   
 


MUSICプログラムはエンドレスですから、適当なところでSTOPスイッチを押して演奏を停止させました。


ワンボードマイコンでCP/Mを![第306回]
2013.1.31upload

前へ
次へ
ホームページトップへ戻る