TK80/BSの
シンセシステムを復活/拡張したい〜
その54
SBC8080ボードを使った
TK80BS互換機の拡張I/Fの作製
テレタイプの接続、動作確認
2020年
7月11日
互換機にテレタイプ(ASR−32)を接続します。前回2016年の整備の時にWD−40を使ったのですが、これが良くなかったようです。ここに消耗品のページがあり、”WD−40は使えません”と書いてあります。症状はどのキーを押しても印字せず、内部に小さいリンクやバーなどが多数あって、これが固着しているようです。ただ、この時期は気温も高いので、リピートキーを併用してキーを押していると、だんだん印字できるようになりました。
プレートにシリアル番号はありますが、残念ながら製造年は特定できません。モトローラのパワートランジスタのデートコードは73年のようです。
いろいろやって、キーから入力した文字が印字できるようになりました。テープパンチャ/リーダも正しく動作しています。
セレクタマグネット用の基板を点検していると、パターンが切れました。抵抗の発生する熱でパターンと基板が剥離しています。ここは補修しておきました。
カバーを戻して、テレタイプが復活しました。ASR−32の取説一式はここにあります。
互換機のパネルディスプレイ/電源ボードにテレタイプ用のドライブ回路を追加しました。本家TK80BSにもドライブ回路が載っているのですが、奥まった所にあり、分解して調べるのが大変なので、ここの回路を参考にしました。インターフェースは20mAカレントループで、参考の回路はRS−232からテレタイプへのインターフェースなので前段インバータが2個付いていますが、今回は1個にします。参考回路のままだと、ロジックが反転します。
パネルディスプレイボードにテレタイプの出力コネクタを追加しました。
7月12日
拡張I/FのリアパネルにPC0(テレタイプとテンポコントロールのシーケンサのクロック)の選択スイッチを追加しました。
1画面ハードコピーを使った逆アセンブラ出力プログラムがあり、実行すると正しく印字できました。テープパンチャも動作しています。先頭の”1000 00”がアルファベットに化けていますが、ASR−32はFIGS/LTRSのシフトイン/シフトアウト制御なので、こんなことが起こります。他に、BASIC(L−2)からのプログラムのリスト印字、ASCII1文字出力などのサブルーチンがあります。
テレタイプの動画を撮影してみました。約12Mバイトのmp4をダウンロードします。
ブロック図にテレタイプ出力を追加しました。これでTK80BS互換機のハードウェアは完成です。
7月16日
Am9511のライブラリ作成の予備調査です。8080のCコンパイラで作ったプログラムをeTK−80BSで走らせてみます。分かりやすいように結果をgcvt関数を使って文字に変換し、グローバル領域に書き込みます。動作はfloatの引数を戻り値に戻すsubを呼ぶだけです。
リンカで生成されるマップファイルはタブで区切られています。
cygwinで簡単なフィルタを作ってマップファイルからタブを削除し、カンマでアドレスとシンボルを区切ってシンボルファイルに変換します。
シンボルファイルは以下のようになります。因みに、最終アドレスは8000が先頭で8E8xです。0.25を引数にして、そのまま戻り、文字に変換するだけですが、clibをリンクしているので4Kバイト弱のサイズになりました。
eTK−80BSはMAMEをベースにした、PCで動作するTK−80BSのエミュレータです。ここからダウンロードできます。下は実ROMを実装してプロットプログラムを走らせたところです。TK80の8255のPC1のゲーム音もサポートしています。平安京エイリアンも音付きで実行できます。内蔵されたデバッガでシンボルデバッグができます。
eTK−80BSのデバッガを起動して、HEXファイルとシンボルファイルを読み込みます。main_から逆アセンブルしてみます。0.25がコード中にDB文で埋め込まれているので、プログラムとデータの区別はつきません。FDはZ80の命令でIXレジスタの示す番地にジャンプします。(*)が付いてZ80命令と分るようになっています。8080では未定義命令です。右はCソースを変換したアセンブラです。
続いて、sub_から逆アセンブルしてみます。シンボルが使われるので分りやすいです。
PCをmain_に、SPをCFFFに、ブレイクポイントをメイン関数の終わる8060に設定してgコマンドで実行します。dコマンドでフローバル領域buff_をダンプします。gcvt関数で.25が書き込まれています。リンカでDSEGをC000番地に設定しているので、buffの先頭はC000番地になっています。正しく動作しています。実機を使わなくても、PCで動作確認ができるのは良いです。
7月18日
ebayで予備のAm9511を購入しておきました。送り元は中国ですが、なぜか台湾からの送り状が重ねて貼られています。早速、動作確認をおこないましたが、演算結果が正しくありません。
ロゴに違和感があり、本物と比べると、明らかに違います。右が本物です。
デバイスを万力に挟んで、ポンチで叩くとすぐにセラミックが割れ、ダイを露出させることができます。実体顕微鏡でみると、インテルの8254(タイマ、カウンタ)でした(笑)。
Am9511と8254のピン配置です。Am9511は12V電源があるので、動作確認をしたもう一つの8254も壊れたかもしれません。
TK80BS互換機のフロッピ用にSDを購入しました。8Gもいらないのですが、8Gが一番安いようです。3枚購入しておきました。
先週のテレタイプに続いて、もう一つ忘れていたのがシンセ用のリズムのシンク信号です。本家で確認します。シンセ用8255のPB0にシンク信号が出力されます。ボルカビートを接続して動作確認します。
バッファ+シンセ用8255ボードにシンク信号のコネクタを追加して、リアパネルに3.5mmのジャックも追加しました。
ハードウェアが完成したので、各ボードの写真を撮っておきます。バッファ+シンセ用8255ボードです。
VDP+Am9511ボードです。
FDCボードです。8インチドライブ用の配線は未接続です。
電源+SC−01+LEDドライブボードです。
互換機のシンクにボルカビードを繋げて動作確認しました。
7月19日
VDPのビデオ出力がぼやけ気味です。右は4倍に拡大したところです。
ビデオのバッファ回路に330pFのコンデンサが付いているのですが、外すと改善しました。本家のVDPボードはデータシートの回路のままでコンデンサは付いています。
画質が改善したので、昔BASICで作った3Dグラフィックプログラムを実行してみました。プログラムの出所は不明で、雑誌か何かの記事を参考にVDP用に修正して作ったと思います。三角屋根の家のワイヤフレーム、パース付き陰線消去無し、拡大、回転、移動などができます。
Y軸周りに回転させてみます。計算して描画するのに約30秒かかります。ワイヤの数は17本でしょうか?Cで書き直して、Am9511を呼べれば100倍は早くなりそうです(笑)。
3Dグラフィックのプログラムリストをテレタイプで印刷してみます。クリックすると約9MバイトのMP4をダウンロードします。ASR−32には’*’、’$’などが無いので似た文字で代用しています。
印刷完了です。約8分30秒かかりました。
7月23日
4連休の初日ですが、2日目がオフ会なので、ガレージに帰らず、アパートでAm9511のライブラリ作成の予備調査をおこないます。IEEE754の
フォーマットをAm9511のフォーマットに変換するためにフォーマットをまとめます。初めにIEEE754です。指数部は127のゲタ付きの8ビットで
す。仮数部はケチ表現の23ビットです。フォーマットの詳細はウィキペディアのここを参照してください。またWEBでデータを変換できるここでπを変換してビット分解します。IEEEの方は8ビット境界に合わないので面倒です。
続いて、Am9511です。実機でPUPIコマンドで得られた値をビット分解します。AM951は仮数部が8ビット境界に合うので簡単です。