T805
前段に入るバッファ74HC245はフットプリントも合っているしちゃんと付いていそうなのでUART:SCN2681のデータバスD1(18ピン)に注目してみます。 バッファからのパタン引き回しはこんな感じ。 PLCCソケットの裏のハンダ状態ですが・・スルーホールにちゃん…
電源ONで起動するモニタですがそのオープニングメッセージが微妙に文字化けしています。 本来 *** Transputer IMST805 micro monitor Ver00.05 *** となる文字列が ((( Tpalqputep IMQT805 miapm mmlitmp Tep00,05 ((( になってるわけで例えば先頭の”*”が”…
ここまで来ればあとは速いです。手持ちの部品をさくさく挿していきました CPLDのロジックやROMのファームも1枚目で動作実績があるのでそのままプログラムしてあります。ただ久々にやってみるとROMに焼き込むコードのロケーションに迷ったりするので自分用の…
2枚目トランスピュータボードへのICソケットやコネクタなどスルーホール部品の取り付けも完了しました。Q3とU9はCOM2ポートから外部リセットをかけるための回路ですが今回使わないので未実装としておきます 左側が今回作成のボードですが右側の完成済ボード…
並行して進めていたプロジェクトのうち2枚目のトランスピュータボード作成のほうはやっと表面実装部品の取り付けが終わりました 表面は何も付いてないのと見た目変わらないので裏面を見るとこんな感じです このうち左端にあるRS232CレベルコンバータMAX202…
仕掛かり中の案件はいろいろあるのですがしばらく放置していたトランスピュータT805ボードの2枚目にやっと着手しました パスコン0.1uFを10個ほど付けたところで集中力途切れ今日はここまで。 前回と全く同じ実装をする予定ですが、トランスピュータ自体は外…
マンデルブロ集合の実行テストはCPUボードにプログラムをロード実行させ、生成された画像データを吸い上げ、表示する自作の汎用ツールを使っています。結構前にやっつけの作りっぱなしだったので今回少しメンテしました ・ボードとのセッションが垂れ流しだ…
公式ルールでマンデルブロ集合描画を実行しました。開始座標SX,SY、描画幅WIDTHと打切り回数NMAX=8192はソースに埋め込んであります 256×256メッシュで実行時間は約40分でした さて他のCPUボードとの比較ですが・・・ 20MHz80386+80387と倍速386+387の間くら…
このボードもNS32032と同じステップを踏んで高精細モードでやってみます。ボードに実行を指令、計算されたピクセルデータを吸い上げて表示する自作汎用ツールが使えるようにボード側プログラムのI/Fも変更しました 256×256メッシュで計算時間は53秒。 打切り…
実数演算を含むプログラムも動きそうなのでいつものマンデルブロ集合描画をやってみます。 先ずオペランドに即値が置けないので使いそうな1,2,3,4・・・といった定数をデータ定義しておきます。また変数も領域確保のため初期値0で同様に定義します 複素数c=a…
ソースファイル中に含まれる浮動小数点数値を変換するプリプロセッサを作りました。入力テキストファイルを行単位で出力ファイルにコピーしますが行の中に新たに定義した「DOUBLE」(またはREAL8)か「FLOAT」(またはREAL4)の文字列が含まれていたら後続す…
現状のボードで確認できることとして内蔵のFPUの動作を見ておきます。やることはNS320C32ボードでやった例題と全く同じ、実数同士の足し算です。まずマニュアルを読んでトランスピュータでの浮動小数点数値の扱いで判ったことですが ・機能は単精度倍精度の…
最後に残っていた外付けSRAM:HM62256(256kbit)×4個を装着。ボードのハードウェアはこれでほぼ完成です。リンク接続用のコネクタの実装がまだですがこれは自己折返しかもう一枚ボードを作って実験するときでよいでしょう ROMからブートするモニタも原始モニタ…
モニタプログラムの修正をやっていますが機能追加でだんだんサイズが大きくなっていく過程で全く動作しないプログラムができることがあります。アセンブル、飛び先修正が正常に終了しているのに何故なんだろうと。改造の時に変な処理を入れ込んだのかとソー…
飛び先ラベルとの間に無駄コードの詰め物をして語長を増やす対策ですが数行追加でOKになる場合もありますが数十行挿入しても全く語長が変わらないこともあります。相対アドレスの算出ミスの規則性が全くわかりません。 以下の例では正しい相対アドレスは 0x7…
正しい相対アドレスが既存の語長に収まらない時はどうするか・・ですが対策として無駄なコードを挿入して境界を跨がないようにするしかありません。以下は文字列入力ルーチンSTRINで発生したエラー対策の具体例です 左列は元のソースをそのままアセンブルし…
アセンブル後のバイナリファイルを拙作ツール:Transputer Convergence Correctorで修正しモニタ上で動作させるという一連の開発手順が確立してきました。ところがデバッグを繰り返しているうちどうも変換に失敗し正常に動作しない場合があることに気付きま…
モニタ上でプログラムのロード、実行が簡単にできるようになりましたが、アセンブラが出力するコードは相対アドレスの飛び先に誤りがあるという問題は解決していません。使い方が間違っているのか、アセンブラ自体のバグなのかよくわかりません。 アセンブラ…
ワークスペースの確保ができCALL/RETによるサブルーチンが使えるはずなので、原始モニタ環境でもう少し実用性のあるモニタを作ってみました。 修正したいのは 1.汎用ルーチンをサブルーチン化 2.「L」ロードコマンドでバイナリ転送終了したらコマンドプ…
ボードのハードはあと外付けSRAMの実装が残っていますがここで改めてメモリ配置をまとめておきました。 ROM256KB、RAM128kB、トランスピュータ内蔵RAM領域4kBで計388kB。4GBのリニアな全メモリ空間の実に0.009%しか使っていません スカスカですが未使用部分…
ROM上で動作する原始モニタが動作し始めました。シリアルから入力したプログラムコードをオンチップRAMの0x8000200番地からセットするロード「L」と0x8000200番地に制御を移す実行「G」だけしかありませんが、いままでプログラムを変更するたびにROM4個を焼…
トランスピュータが動きそうとだいたい分かった時点で実はもう1個発注していました。せっかくリンク機構があるのでそれを確かめたいし、1人では寂しかろうと・・こうしてCPU多頭飼育崩壊が始まってます 前回と同じ業者で同価格、2週間くらいで到着しました…
条件付き分岐CJの飛び先相対アドレスが何か間違っているんじゃ・・となると無条件分岐Jもヤバいのではないかと原始モニタのソースコードから相対ジャンプする行を抜き出してみました。 next Iptrはジャンプ命令の次の命令のインストラクションポインタ、dest…
1文字入出力、メモリ書込み、ジャンプができればそれらの組合せでモニタを作るのは簡単なはずなんですがいろいろつまづいてます。 たとえば以下は原始モニタでターミナルホストから入力された1文字コマンド(「L」:ロード、「G」:実行)でそれぞれの処理…
トランスピュータのマニュアルを見てみるとアクセス時にウェイトを挿入するにはMemWaitピンをHにするとマシンサイクルT2の終わりでサンプリングされてT4の後にウェイトサイクルTwが挿入されるとあります 然るべき位置でサンプリング、挿入をしてくれるのでハ…
ホストPCからコードを受け取るために1文字入力も作っておきます。これも今までのシリアルコントローラと同じでキャラクタが受信バッファに入ったかRxRDYフラグをチェック、これが立つまで永久ループ(用途によってはタイムアウトも必要ですが)し、フラグが…
トランスピュータボードで1文字出力ができるように(おそらく1文字入力もできるはず)なったので、いつものボード開発手順通り原始モニタを載せることを考えてみます。 まずは1文字入力で取得したデータをメモリ上に並べていく処理です。改めてマニュアルで…
表面実装部品のうち、最後まで残っていたRS232CレベルコンバータのMAX202を取り付けました。これは基板発注してから気づいたのですがフットプリントの選択が間違っていてパッド間がちょっと広すぎでした。足はギリギリ届きましたがハンダ多めに盛っています…
転送終了、TxEMT=1になるのを待つループが回っているときのSCN2681につながる信号線をプローブしてみました ch1: /SIOCS, ch2: /RD, ch3: D3(=TxEMT) 読取りパルス/RDはトランスピュータが生成していてT4-T5の2マシンステート;約50nsということになります…
送信は済んでいるのに送信完了のループから抜けられないということは脱出条件を満たさないということで考えられるのはこんなところです 1.フラグの論理を間違っている これは前にUSART:8251のステータスTxEMPTYのチェックで間違ったことがありましたが今…