Am29030ボードの方は冷却期間おいたのでそろそろキンキンに冷えてそうなので戻ってきました。というかNS32032ボードのC言語化が浮動小数点処理で行き詰ったというのもあります。
こちらはどこまでやっていたか思い出すと外部デバイスとのI/OでバイトアクセスするときCNTLフィールドをどう設定すればよいか?ということでした。説明されている部分をAm29000マニュアルで見てみると
この中で関係ありそうなのが以下です
BIT22:Address Space:I/O空間をアクセスするため1をセット
BIT20:Set Byte Pointer:これがよくわかりません。とりあえず0.をセット
BIT18-16:Option: バイトアクセスのため’001’をセット
これでCNTLフィールドは0x41となります
これで8255を介したLEDチカチカプログラムは以下のようになりました
プログラムはまず8255を全ポート出力に設定、その後PAには固定値0x55、PBには固定値0xAA、PCにはインクリメントデータを出力します。Am29kは汎用レジスタが192本と潤沢にありますがユーザに開放されている64番以降を使っています
さて出来上がったバイナリをROMに焼きつけて実行させました。
うまくいったようです。
PAは治具の左側バーLED、PBは右側バーLEDでモニタされますが0x55と0xAAを示し、PCはボード上の青LEDをドライブしていますが最下位ビットが122kHzでチカチカしていることがわかります。
つまり連続したアドレスに配置した8255のPA,PB,PC,CWRに対してCPUがバイトアクセスできているということでハード的なバス接続は間違ってなかったということになりほっと胸を撫で下ろしました。