64180
ビルドしたISERVERがちゃんと動作しない原因を調べてます。指定したブータブルファイルがT805まで転送されているのは間違いなさそうですが、ボード上で起動してない感があります。考えられるのは ①展開されるメモリアドレスが違う ②使用しているリンクポート…
Cで書いたソースを見直してみると、ほとんどが周辺のレジスタアクセスでありバッファも100H境界に置いてレジスタペアをインデックスとして下位バイトのみインクリメントすればモジュロ演算をするまでもなく自動的にリングになる訳でアセンブラでの記述も容易…
ホストPCと64180ボードとの仮想COMポートを通じた接続がうまくいったので次はリンクアダプタIMSC011のドライバを組み合わせてトランスピュータT805側と接続させます。データの流れを模式的に書くとこういう感じです ホストPCのアプリケーションISERVERはWrit…
仮想COMポートをさらにエミュレートした環境で、実在しないレジスタを直叩きなんていうことが果たしてできるのかとかなり懐疑的だったのですが、なんとこれがちゃんとできるのです。モードの初期化、1文字入出力関数ともにDosBox内で正常動作しました そう…
ホストPCと64180ボードを接続する手段は仮想COMポートを介したシリアル通信しかないのでホスト側アプリはこのCOMポートをアクセスするプログラムを書かなければなりません。しかも16bitアプリで、ということになります そもそもDOSエミュレータのDosBoxから…
ISERVERのオリジナルコードをビルドできることが確認出来たところでI/F部分の差し替えを考えることになります。現状のコードは実行しているCPUのバスに直接接続したリンクアダプタをアクセスしているので、これを64180ボードを介したものにしなければなりま…
ISERVERのソースファイルは入手出来ていてこんなファイル構成になっています。ファイルの数は多いですが1つ1つは比較的小さいようです MAKEFILEはいろいろな環境向けに対応できるようになっていて、ここではホストマシンがIBM-PC、ターゲットボードがINMOSの…
64180ボードのハードができたのでこれに載せるISERVERの構成を検討しています まずINMOSが想定している開発環境の例ですが、ホストPC(IBM-PC)の拡張スロットにトランスピュータボードが挿入され、ISERVERがボード上のリンクアダプタをアクセスする形になりま…
パタン修正はあったものの比較的順調な64180ボードですが、ここにきて新たな問題が出てきました。Cで書いたプログラムが結構メモリを圧迫してきてるのです たとえはSDカードにデータを読み書きするテストプログラムだとコード領域だけでだいたい28kBくらいの…
これもアセンブラでは実証済ですがリンク接続されたボード上でアプリケーションを起動させるというのも容易にできます 追加で次の2個の関数を定義しています LNK_write():トランスピュータの任意のアドレスからデータブロックを書き込む (LNK_poke()は32bi…
HD64180からリンクアダプタのアクセスが大丈夫そうなのでリンクポートからの1byte入出力関数を記述しました 1バイトの入出力ができればリンク先のトランスピュータボード上のメモリ空間をアクセスできるようになります。既にトランスピュータボード同士のア…
ということで痛恨のパタンカット。前回は切るだけで済みましたが今回はジャンパも必要です。 まずGALに入るアドレスA2ラインは以下の矢印部分でここをルータビットで切削します うゎ隣接する神経も切っちゃった・・・ なんて医療事故的なものではなく、下側…
リンクアダプタIMSC011のチップセレクト/LNKCSを生成するロジックにEクロックを加えたい、ということになるのでこの信号を作っているGAL22V10周りの現状を見てみるとこうです もうすべてのI/Oピンを使い切っているので不要な信号と差替えるしかありません。…
つまりIMSC011のバス制御は8080系ではなく6800系であるということです。すでにこの時点で制御がおかしかったわけですが最後の最後で大ポカ発覚です。 /CS(アドレス)確定時に既にR/Wが確定していなければならない、ということは/CSの位置をずらすしかありま…
RTC、SDカードの動作も確認でき残りはこのボードの主目的であるリンクアダプタだけとなりました。 以下はリンクアダプタIMSC011の周辺です。6ピン付近に見えるパタンカットはCSI/Oに供給していたクロックを切り離した痕です リンクを成立させるためにはトラ…
いままでUSBからのバスパワーでCPUボード全体の電源を賄っていたのですがちょっと電圧は低め(4.9V)、だまって貰ってるものなので容量もそんなにない。そんな状態でSDカードのアクセス時には過渡的に結構電流が流れるようで電圧ドロップしてしまうようです…
セクタ単位のSDカードアクセスができたのでファイルシステムFatFSを導入して高水準のファイルアクセス関数を動かしてみました。 ファイルのオープンf_open()/ファイルのクローズf_close()、ファイルから読出しf_read()/ファイルに書込みf_write()を組み合…
SDカードを読むハード、ソフトの準備ができたので、ではメディアを用意して・・と 手持ちで出てきたのがこれ。 いや128MByteというのは当時は驚異的だったんですが今やこんな小容量のカードは売ってすらいません。 ともあれdisk_read()関数でセクタ単位で読…
MMC(SDカード)の使い方を調べると6byteのコマンド・パラメータでカードに指示を与えるとあり、レスポンスに続いてデータパケット転送があるか無いか、あればそれが入力か出力か、パケットは1個か複数か、で転送タイプを5タイプに分けてみました それぞれの…
同期シリアルCSI/OでRTCへのアクセスがうまくいったので次はSDカードの読み書きをやってみます。処理が何層ものレイヤーに分かれていてまず最も下層のSDカードとのシリアル入出力部分:spi_tx()/spi_rx()をSDCCで記述していますが、アセンブラのステートメン…
RTCの年、月、日、時、分、秒のレジスタを読み出しHEX-ASCII文字変換。書式を整えて文字列出力するプログラムをつくってみました 読出しはちゃんとできました。(リアルタイムがセットされているので書込みもOK)ハード設計でよく失敗するバックアップ系統も…
CSI/OによるSPI送信ルーチンspi_tx、SPI受信ルーチンspi_rxを組合せ、さらに汎用パラレルポートでCS信号を発生させるRTC読取り処理を作成しました。入力と出力にビットリバースbrev処理を呼んでいます このルーチンでRTCの秒レジスタをアクセスすると応答が…
ビットの並びをMSB~LSBでひっくり返すというのは基本的かつ汎用的な処理でテーブル引きでもいいですがシフトやローテンションを組み合わせれば容易に実現可能です。ただこの手の命令は左/右、算術/論理、シフト/ローテーション、キャリ含む/含めないで…
RTC:PCF2129のSPI通信とHD64180のCSI/O通信がはたしてタイミング的に整合するものなのか。双方のタイミングチャートを伸縮して伝送クロックの位相が合うように無理くり合成貼り付けしてみました まずはCSI/Oから出力してRTCに書き込む場合: これはトランザ…
今回、Z80はなじみもあるのでソフト的には大丈夫だろうというのもあり原始モニタはすっ飛ばして一気に高機能モニタを移植しました。なんとか動き始めてプログラムのダウンロード、実行が簡単にできるようになったのでまず懸案が残るSPI周りのデバッグにはい…
GALに修正したロジックを焼き込んで無事モニタが起動しました メモリダンプ、ファイルロード、編集、実行といくつかのコマンドを試してみましたが大丈夫そうです。これでプログラムのロード・実行が簡単にできるようになったので残る周辺:リアルタイムクロ…
アドレス84Hが何かというと、そこにリンクアダプタIMSC011のI/Oアドレスを割り付けていました チップセレクトにIORQは入ってないのでメモリ、I/Oによらずアドレス84H~87Hで/LNKCSがアクティブになってしまいます。R/W端子には/IORQを加えた/IOWRを入れてま…
シリアル転送のクロックソースを内部分周に切り替え、ターミナルとの入出力ができるようになりました。ただし外付け水晶は最初の設計のまま12MHz、内部クロックΦは6MHzのままです。ここから算出されるボーレートは正確には6MHz/10/16=37500なのですが、これ…
シリアル転送の外部クロック入力には制限があるのでこれはもう内部クロックをつかうしかありません。マニュアルを見るとΦ=6.144MHz(外付け水晶12.288MHz)で38400baudの設定ができるとあります。 ただし内部クロックを選択するといままで外部クロック入力だっ…
現状、転送クロックは外部発振器4.9152MHzを8分周した614.4kHzを外部クロック端子CKA0/CKA1に与えていて、観測された33333baudの16倍に当たる533.3kHzというのはどこにもありません。一体どこ由来なんでしょう ・・とマニュアルを読み返していたらシリアル転…