新しいHDMIコンポーネント変換器
「HDMIコンポーネント変換器」で新しい変換器を注文したと書きましたが、到着しました。
前のものはレコーダとの接続に苦労したので違う機種を選んでいます。
形状が縦長から横長に変わったものの雰囲気はよく似ています。
入力は5Vの電源とHDMIは前と一緒です。
「HDMIコンポーネント変換器」で新しい変換器を注文したと書きましたが、到着しました。
前のものはレコーダとの接続に苦労したので違う機種を選んでいます。
形状が縦長から横長に変わったものの雰囲気はよく似ています。
入力は5Vの電源とHDMIは前と一緒です。
以前、SBC6303 が M5L2764K の個体差によって動いたり動かなかったりと書きました。
念のために n を増やしてみると、起動メッセージの途中で止まってしまう M5L2764K も見つかりました。リセットを繰り返すと止まる場所も一定していません。
動いたと思ったものも心配になってきます。試しにメモリダンプを実行してみると、案の定ダンプ中にハングアップしてしまいました。
ところで私の持っている 2764 は三菱の M5L2764K ばかりです。ふと他社のものでも同じだろうかと思って Intel の D2764 を調達して試してみました。するとどれも正常に動作するではないですか。64kB のメモリ空間全部をダンプさせてみても最後までいきます。
Intel のものと三菱のもので何かが違うようです。
BASIC内蔵マイコンで取り上げたものをもう一つ入手できました。
IntelのP8052AH-BASIC、全体が梨地で表示部分だけツルツルなのは他社ではあまり見かけませんね。
8051のROM,RAM容量を増やした8052(これらからROMを取り除いたのが8031,8032です)のROMにBASICインタープリタを格納したものです。
録画でも見ようとBDレコーダとテレビの電源を入れたら何も映らなくなっていました。レコーダ本体の表示窓は正常に見えるしテレビも放送は普通に見られるので変換器が壊れたのかもしれません。
これがその変換器です。
注文履歴を探したら5年前に買ったようでした。長く使えたほうなんでしょうかね。
左側面は入力側です。HDMIと電源のコネクタが並んでいます。
SN74LS181Nと類似のデバイスが他にも買ってありました。
やはりTexas Instruments社製のSN74S381N、これも4ビットのALU(Arithmtic Logic Unit)です。これはピン数を20ピンに収めているので当初から通常の300mil幅のパッケージになっています。
181との機能的な大きな違いは181が32通りの演算に対応していたのに対し381では8通りになっていることです。これだけだと381の方が劣っているように聞こえますが、181では内部の都合で多数あった演算の内で意味のあるものだけを選べるようにしたのが381と理解した方が良いと思います。
手配していたロジックICが到着したのでSBC6303ルーズキットにMC6803を載せて試してみることにします。
そのままではMC6803を動かすのに支障があるので一部変更しています。
まずNMOSのMC6803と組み合わせるのに74HCシリーズはマズいので74HCTシリーズに換えます。キット資料によればLS/ALS/ASとありますが、VIHの問題なら74HCTでもいけるはずです。
次にMC6803はクロック上限が1MHzなのでクロックを下げなくてはなりません。シリアルのボーレートも変わってしまうので半分の0.6144MHzにすることにします。これならボーレートも半分の4800bpsになるのでROMのソフトウェアを変更する必要がありません。
前回私がハマったところの詳細を残しておきます。
Z8にはレジスタファイルと呼ばれる256バイトの空間があります。これは通常のメモリ空間とは別に存在し、内蔵ペリフェラルのレジスタや汎用レジスタなどが配置されています。Z8613ではアドレス0x80~0xEFまでは未実装になっていますが、デバイスによってはフル実装されていたりバンク切り替えによって拡張されているものもあります。
このレジスタファイルへのアクセスには2種類あり、命令によってどちらが使えるかあるいは両方かが決まっています。
一つは8ビットのアドレスを指定する方法で、どこにでもアクセス可能な代わりに命令長は最低でも2バイト必要です。アセンブリ言語での記述は単に8ビットのアドレスを書きます。
もう一つはアドレスを(下位)4ビットだけ命令の中で指定し、アドレスの上位は別途RP(Register Pointer)レジスタで指定しておく方法です。アセンブリ言語での記述はr0~r15と書きます。命令長が短くなるほか、RPレジスタを変更することで割り込みでの退避・復帰を高速に行なうことも可能です。
いろいろやっているうちに何とか動き始めました。
まずはシリアルポートです。
Z8のシリアルはちょっと変わっていてシリアルのステータスレジスタがありません。それでは受信完了などをどうやって知るのかというと、割り込み要因レジスタを読むのです。ここまではマニュアルを読んでわかっていたのですが...
マニュアルを読み直していると、たとえ割り込みを使わないでポーリング処理をする場合でも一度EI命令を実行しないと割り込み要因レジスタが有効にならないのだそうです。
ポーリングでやるつもりでマニュアルの割り込みの部分をちゃんと読んでいなかったので気付かなかったのでした。
指示通りに初期化するとあっさり動くようになりました。
パラレルの方はアセンブラが原因でした。
前回書いたようにタイマT0の設定は出来ていました。パラレルポートも試しにプルアップ・プルダウンしながら電圧を測ると出力に設定されているようです。それなのに出力すべきデータが設定できていませんでした。
何が違っているのでしょう?
ボードも出来たし、アセンブラも用意できたので、いざ動かそうとしているのですが...
予想外に苦戦中です。
まず簡単に動作すると思っていたシリアルが動かない。
ならばとパラレルポートに出力させようとしたのですが、これも出てこない。
こんな基本的なものが動かないとなるとプログラムが走っていないのではという疑いがでてきます。使っているZ8613はパッケージの隅が欠けているくらいなので生きていない可能性すらあります。
小さなことでも良いのでプログラムが走っている証が欲しいところです。
ROMから命令フェッチしているのがわかればCPUが生きていることがわかります。オシロスコープでもあれば良いのですが、持っているのは古いアナログのものだけ、それもすぐには出てきません。