ASに新CPU対応を(その4)
モニタも動いてこれまでに実装済みのMN1610命令に問題無いことがわかり、時間にも余裕が出てきたので、残りのMN1613拡張命令も一気に実装してしまいました。
MN1613で追加された命令にはパースの面倒なアドレッシングなどは無く、命令の数が多いだけの単純作業に近かったですね。
一段落したので現時点のファイル(asl-patch-20191120.tar_.gz)を添付しておきます。
ビルド方法
モニタも動いてこれまでに実装済みのMN1610命令に問題無いことがわかり、時間にも余裕が出てきたので、残りのMN1613拡張命令も一気に実装してしまいました。
MN1613で追加された命令にはパースの面倒なアドレッシングなどは無く、命令の数が多いだけの単純作業に近かったですね。
一段落したので現時点のファイル(asl-patch-20191120.tar_.gz)を添付しておきます。
ビルド方法
前回は簡単なテストプログラムを動かしましたが、その後アセンブラもある程度動作するようになったのでいつものUniversal Monitorを移植することにします。
しばらくボードを動かしていなかったので念のためにもう一度小さなプログラムを試してみましたが、何故か動作が変というかいきなり暴走している感じです。
原因はいくつか考えられます。
ハンドアセンブルと比較したり、以前と同じコードを試したりで3.で無いことはすぐに判明しました。
ELSAのEX-VISION 400TV、またまたTVチューナボードです。撮影したのはしばらく前ですが他に紛れて埋もれていました。
TVチューナボードはこれまでに何枚も取り上げてきましたがどれも構成は似たようなものですね。
左上のチューナモジュール、アンテナコネクタの近くに配置する必要から配置はおのずと決まってきます。
右下のSAA7130HL PCI video broadcast decoderがメインのチップ、というか名称からほとんどの機能をまかなっているはずです。データシートによると外部にI2C EEPROMが必要のようで、右上のコネクタの下の8ピンがそれと思われます。
右上のコネクタはサウンドボードへのオーディオケーブルです。SAA7130HLにはオーディオの入力が2系統・出力が1系統あるのでその出力でしょう。
あれから作者の方と連絡とって質問したり、ID番号もらったり...
軽い気持ちで始めたのですが、ここまできたら本家への追加を目指そうかな。
code***.c
を参考に推測・試行錯誤した結果です。全体を理解して書いているわけではないので、間違っていたり作者の意図しない使い方をしたりしているかもしれません。ご了承ください。
前回厄介と書いたメモリに関係する L
, ST
, B
, BAL
, IMS
, DMS
の各命令も使えるようになりました。これらをデコードする DecodeAdr
は長いのでゼロページ間接インデックス(MN1610で一番複雑)を例にみてみます。
先日ちょっと訳あって手持ちの汎用ロジックの捜索をしたところ、大昔に買ったまま埋もれさせていたものが大量に出てきました。
日本メーカのものを各社1つずつ選んでみました。
左上はNECのμPD74HC244C Octal Buffer with 3-State Outputです。1991年の日本製です。まだ旧ロゴですね。
244はピン配置がわかりづらいので新たに使うなら541を選ぶでしょう。
その下は日立のHD74HC574P Octal D-Type Flip-Flop with 3-State Outputです。「5L46」では製造年はちょっとわかりません。
次は沖のMSM74HC157 Quadruple 2-Line to 1-Line Data Selector/Multiplexerです。これは1987年の日本製です。沖は型番先頭の「MS」を省略してマーキングしていますね。
昨日に引き続きASのMN1610対応についてです。
code***.c
を参考に推測・試行錯誤した結果です。全体を理解して書いているわけではないので、間違っていたり作者の意図しない使い方をしたりしているかもしれません。ご了承ください。
前回の SwitchTo_MN1610()
の最後で呼び出していた InitFields()
です。
いろいろあって何冊も持っているこれ、最近はあまり読むこともないですね。
奥付を確認したところ上から次のようになっていました。
この後出た訂正版も買ったはずなのだけど、どこへやったのかな。
最初に買ったのは2.、「第2版」に切り替わった直後だったようであまり気にせずに買ったのですが...
当時使っていたCコンパイラはCP/M-68Kに付属のものでした。これはANSI非対応のコンパイラでして、わざわざANSI対応前の古い1.を探し出して追加で買ったのでした。
ハードウェア編に引き続き動作確認をしていきます。
ソケットにデバイスを搭載する前に電源などの確認は済ませてあります。電源逆接などで貴重なデバイスを失うわけにはいきません。
データシートによるとRSTを解除後にSTRTが必要に読めたので、STRTをGNDに接続していました(後にSTRTはプルアップしていても動くことがわかりました)。
クロックは38ピンX2に入れているので、念のためX1を確認してみると同じ12MHzが出ています。