工作

個人的に製作してきたものの紹介です。

電子的なものがほとんどですが、そうでないものも出来るだけ出していきたいと思っています。

回路図、ソースコードなどは出来ればすべて載せたいのですが、以下の理由で難しいものが多いです。

  • 回路図については無いものが多い
  • 残っていないのではなく、そもそも書かないことが多かったためです。

    • どうせ1台しか作らないのだから紙に線を引くのと、実際に配線する手間は大して違わない。
    • バス配線などは書かなくてもわかる(各デバイスのD0同士を接続するなど)。ずらすなど注意を要するところだけメモがあれば困らない。
    • 雑誌などの記事・データシート・アプリケーションノート等を参考にしたところはそれを見ながら配線すればよい。

    もちろん仕事ならば書きますが。

  • 著作権的に公開でない
  • 特に古いものでは雑誌など掲載のものをベースにしているものがあり、オリジナルと分離できないものは公開できません。

  • 古いメディアに入っている
  • 5インチや8インチのフロッピーだったり、PC-9801フォーマットだったりして読むのが難しいものがあります。

  • 本当に失われた

EMILY Board

2019-09-24 21:08 — asano

テーマ

メモリ基板、確かにメモリではあるのですがそれだけでもないので「EMILY Board」と名付けました。

Environment for Microprocessor Introduction ... の略というのはもちろん後からのこじつけで、二式大型飛行艇の連合国側コードネームからの命名です。

二式大型飛行艇
写真は鹿児島の鹿屋航空基地資料館に展示されている二式大型飛行艇、唯一の現存する機体のはずです。

これだけではなんなのでこれまで書かなかった資料編をお送りします。

コネクタ ピン配置

まずは基板上部のCPUボードへのコネクタです。

6502ボード(ソフトウェア編)

2019-09-22 23:00 — asano

テーマ

ハードウェア編に続いて今回はソフトウェア編です。

最初のテストはJMPでループを作ってみます。これは3バイト命令なのできりの良いアドレスに配置すればA0, A1が変化しA2以降のアドレスは変化しません。

これでメモリ基板から読んで実行できていることがわかります。メモリ基板のターゲット側ポートはこれまで未確認だったのですが、ここで確認が取れました。

この後はメモリへの書き込みなど一つずつ確認していくのが堅実だとは思いますが、一気にUniversal Monitorの移植に進むことにしました。

実はこの時点ではR65C51 ACIAは未搭載だったのでメモリ基板のコンソール機能を利用します。この機能も未確認なのでまずはオープニングメッセージを表示するところまで移植してみます。

6502のアセンブリ言語を書くのは初めてです。

6502ボード(ハードウェア編)

2019-09-20 23:54 — asano

テーマ

カテゴリー

メモリ基板: 現状と今後の予定で製作中と書いた6502ボードが動き出しました。今回はハードウェア編です。

6502ボード
メモリボードに接続することを前提にしているので6502以外には6551 ACIAを積んでいるだけです。

メモリボードの共有メモリ経由でコンソールが使えればACIAは無くても困らないのですが、6551を使ってみたいという気持ちもあって搭載してみました。

基板 表側
表側、上のコネクタはメモリボードへの接続用です。

メモリ基板: 現状と今後の予定

2019-09-12 21:42 — asano

テーマ

カテゴリー

今回はメモリ基板の現状と今後の予定を書いてみます。

まずは今動いているところです。

  1. 4k×8bitのRAMはホスト側から(シリアル経由で)アクセスできています。

    ターゲットCPU基板がまだ1枚も完成していないのでターゲット側からのアクセスは未確認ですが、ただ接続するだけなのであまり心配はしていません。

  2. シリアルからのコマンドでRESET信号を発生させることができます。ちょっとしたオマケ機能です。起動用のプログラムをRAMにロード後リセットできたら便利かなと。

    ROMエミュレータではアクセス中はターゲットからのアクセス不能になり暴走するのでアクセス中"L"になる信号を用意していましたが、せっかくDPSRAMを使っていることでもありRAMアクセスとは独立させています。

メモリ基板: DPSRAMを使った理由

2019-09-10 23:41 — asano

テーマ

カテゴリー

前回に引き続きメモリ基板についてです。今回はDPSRAM構成になった理由を書いてみたいと思います。

これまでに検討した方式には次のようなものがあります。

  1. SRAM only
    一番最初に考えたのはSRAMのみを使うものです。256kbit(32k×8bit)SRAMを2つ使えば多くの8ビットCPUのメモリ空間を満たすことが可能です。これをROMエミュレータと同様に切り替えて使います。ターゲットと同時にアクセスすることはできませんので、アクセスするときはターゲットCPUをリセットしておきます。
    ターゲットとして特定のCPUを想定しないのでZ80のBUSRQWAITのような信号を使ってアービタを実装するわけにはいきません。

    起動させるだけならこれでも構いませんが、何らかのモニタを動作させようとすると最低限コンソールが必要です。

メモリ基板

2019-09-09 23:48 — asano

テーマ

カテゴリー

作りかけで何度も中断し放置してきたメモリ基板がやっと動き出しました。

メモリ基板
これ構想しはじめたのは何年も前、製作に着手してからでも半年近く経過しています。一気にやれば大して配線量はないんですけどね。

ここでも紹介しているように歴史的なプロセッサを多数持っていますし、珍しいのを見かけて買ってしまうことも多くどんどん増えています。できれば単なるコレクションではなく動かしたいと思っているのですが...

今時のマイコンは高速なので、周辺回路(最低限メモリとUARTなど)をエミュレーションさせる方法もあります。AVRマイコンなどのGPIOをターゲットのバスに直結してあとはソフトウェアで処理するわけです。これはこれで面白いとは思いますが、個人的にはちょっと違う気がします。

続続・TTLをディスクリートで作ってみた

2019-08-19 23:19 — asano
カテゴリー

TTLをディスクリートで作ってみた続・TTLをディスクリートで作ってみたではとりあえず電圧を測っておけばと思っていましたが...

NANDゲート 改良版
結局、電流を測れるようにジャンパをに追加しました。必要に応じてジャンパを抜いて電流計を挿入します。

これでいくつかの場合について動作を追ってみました。

以下の回路図で青地で書かれているのは実測値、赤字で書かれているのは計算値です。数字が単独で書かれているのは電圧(V)、矢印とともに書かれているのは電流(mA)です。入出力の「1k」はもちろん抵抗値1kΩです。

電流の和が0にならない点が多々ありますが、電圧・電流は同時に測ったものではなく使用したテスタの内部抵抗で動作点が若干動いているようです。

続・TTLをディスクリートで作ってみた

2019-08-13 14:52 — asano

テーマ

カテゴリー

前回「あとは1A, 1Bをともにプルダウンしたときの影響と、負荷を変化させたときの変化を見たいですね。」と書いた件、早速試してみました。

まずはANDの入力からです。

1Aをギリギリ"1"となる3.3kΩのプルダウンに固定し、1Bをプルアップ / プルダウンに切り替えてみます。

最初は本物のSN7450Jの場合、1C, 1DGNDです。

TTLをディスクリートで作ってみた

2019-08-11 23:48 — asano

テーマ

カテゴリー

前回、Expander対応端子からTTLの動作を追ってみようとしたわけですが、電圧を見てみたい箇所はまだあります。ならディスクリートで同じものを作れば好きな箇所の電圧を測ることもできるだろう、ということで作ってみました。

ディスクリート版 NANDゲート
SN7450のうち1側のみ、それも1C, 1Dを省略しましたので、2入力NANDゲート(Expandable)というシロモノになりました。X, Xのところで分割できるので、入力側を使ってSN7450にANDを追加したり、出力側を使ってSN7460 ExpanderをNANDとして使うこともできるはずです。

AKI-ROMがもう1枚...

2019-07-11 23:15 — asano

テーマ

AKI-ROMがなぜかもう1枚出てきちゃいました。

AKI-ROM
こちらにはDC-DCが搭載されていない他、左下のスイッチやZIFソケットからも別の個体であることがわかります。

2枚作った理由は...、例によって使いたいときに行方不明だったからでしょうね。

秋月のキットとしては高価な部類に入るのでよほど急いで必要だったのでしょう。となると、Flash EEPROMを飛ばしてしまったP/I-P55TP4Nの復活の時かもしれません。数万円のマザーボードの修復のためとなればそう高いとは感じないでしょうから。

せっかく発見したのですが2つもいらないし、今はTL866Aを使っています。