工作

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

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

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

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

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

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

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

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

  • 本当に失われた

Z8613を動かす (その4:とりあえず動きました)

2018-07-09 22:48 — asano

テーマ

いろいろやっているうちに何とか動き始めました。

まずはシリアルポートです。

Z8のシリアルはちょっと変わっていてシリアルのステータスレジスタがありません。それでは受信完了などをどうやって知るのかというと、割り込み要因レジスタを読むのです。ここまではマニュアルを読んでわかっていたのですが...

マニュアルを読み直していると、たとえ割り込みを使わないでポーリング処理をする場合でも一度EI命令を実行しないと割り込み要因レジスタが有効にならないのだそうです。

ポーリングでやるつもりでマニュアルの割り込みの部分をちゃんと読んでいなかったので気付かなかったのでした。

指示通りに初期化するとあっさり動くようになりました。

パラレルの方はアセンブラが原因でした。

前回書いたようにタイマT0の設定は出来ていました。パラレルポートも試しにプルアップ・プルダウンしながら電圧を測ると出力に設定されているようです。それなのに出力すべきデータが設定できていませんでした。

何が違っているのでしょう?

Z8613を動かす (その3:苦戦中...)

2018-07-07 21:21 — asano

テーマ

カテゴリー

ボードも出来たし、アセンブラも用意できたので、いざ動かそうとしているのですが...

予想外に苦戦中です。

まず簡単に動作すると思っていたシリアルが動かない。

ならばとパラレルポートに出力させようとしたのですが、これも出てこない。

こんな基本的なものが動かないとなるとプログラムが走っていないのではという疑いがでてきます。使っているZ8613はパッケージの隅が欠けているくらいなので生きていない可能性すらあります。

小さなことでも良いのでプログラムが走っている証が欲しいところです。

ROMから命令フェッチしているのがわかればCPUが生きていることがわかります。オシロスコープでもあれば良いのですが、持っているのは古いアナログのものだけ、それもすぐには出てきません。

Z8613を動かす (その2:クロスアセンブラ)

2018-07-05 22:41 — asano

テーマ

ハードウェアが出来たら次はソフトウェアです。

Z8はハンドアセンブルできないほど複雑ではありませんが、アセンブラくらいは欲しいところです。今回のZ8だけでなくSBC6303ボードのHD63C03やMC6803、さらには手持ちのいろいろなプロセッサにも使いたいので出来れば多くのプロセッサに対応しているとありがたい。

ということで候補に挙がったのが「The Macroassembler AS」です。

開発ペースは遅い(というか止まっている?)ようですが、現時点でかなりの数のプロセッサに対応しています。8ビットが中心ですが、16ビット以上にも一部対応といったところでしょうか。マクロは使えますが、リロケータブルオブジェクトの出力は出来ません。

GNU binutils(の中の「as」)にも期待していたのですが、こちらは上とは逆で32ビットが中心で残念ながらZ8には非対応でした。

Z8613を動かす (その1:ハードウェア)

2018-07-04 22:41 — asano

テーマ

カテゴリー

Z8613でパッケージの一部が欠けていると書きました。ただ心配していてもしょうがないので実際に動かしてみることにします。

Z8613 テストボード
とりあえず簡単なテストが出来るボードを作ってみました。

クロックは8MHzの発振器、それにリセット回路を付けています。

何かするたびにROMを書き直すのは面倒なのでシリアルポートも用意しました。パラレルポートにキーとLEDを付ける手もありますが、動かすまでが大変なので...

シリアルなら次のように順を追って試すことが出来ます。

  1. 固定文字の出力(いわゆるHello, worldのようなもの)
  2. エコーバック
  3. モニタプログラム

1なら数十バイトのプログラムで出来るはずです。モニタまで動けばROMを書き直すことなくポートを弄ったりできるようになります。

HD63A03RP と SBC6303ルーズキット

2018-06-27 23:00 — asano

テーマ

カテゴリー

MC6803との比較用に国内のショップからHD63A03RPを入手しました。

HD63A03RP
日立がMC6803をCMOS化したもので、これは1.5MHz版です。

日立のデートコード(3桁)は年が1桁しかないので製造年が特定できません。1985年か1995年か、日立ロゴがあるので2005年や2015年ではないのでしょう。

自分で回路作って確認したいところですが、ちょうど良さそうなキットがありました。「電脳伝説」のvintagechipsさんのSBC6303ルーズキット、スイッチサイエンスで購入できます。

これは基板のみなので部品は全て別途調達する必要があります。

水晶発振子周波数測定キット

2018-06-25 23:19 — asano

テーマ

カテゴリー

以前「不明なパーツ」で取り上げたもの、ある方より水晶振動子であるとの情報をいただきました。

そうとわかると動かしてみたくなります。74HCU04あたりで発振回路を組もうかとも考えたのですが、秋月にこの用途にピッタリのキットが売られていたのを思い出して買ってきました。

水晶発振子周波数測定キット
これがその「水晶発振子周波数測定キット」です。専用基板があるので組み立てはすぐに終わります。

LEDの電流制限抵抗にまで1%の金属皮膜抵抗を使っているのにちょっと違和感を感じますね。

さっそく問題のパーツを測定してみることにします。

INS8073ボードを作る (その2)

2018-05-27 21:09 — asano

テーマ

カテゴリー

前回シリアル出力の論理が逆であるのがわかったので、インバータも基板上に搭載しました。

INS8073ボード 表側
左上の2×4コネクタは電源とシリアルポート、前回も書いたようにピン配置はMAA-1にあわせてあります。

その右はリセット回路です。

8ピンDIPサイズ(ピンは4本)はSG-8002DCという発振器です。これは発振器とPLLを内蔵していて周波数がプログラマブルというもので、標準的な周波数をプログラム済みのもののほか専用のライタで好きな周波数をプログラムできる未書込み品もあります。ここで使っているのは16MHzの標準品です。

INS8073ボードを作る (その1)

2018-05-26 20:32 — asano

テーマ

カテゴリー

INS8073/NのNIBLの資料が無いと書きましたが、ネット上で資料見つけました。その中に参考回路等も含まれていたのでそれを参考にボードを作ってみます。

INS8073ボード
最小構成で作ってみますが、INS8073以外は新しいデバイスを使いますので当時は積めなかったような大容量のシステムが簡単に実現できます。

クロックは手持ちの16MHzの発振器を4分周して使うことにします。

RAMは256kbitのSRAMを使います。A15をSRAMのCSとして使うのでアドレスは0x0000~0x7FFFとなります。INS8073はROM内蔵しているので0x0000~0x0FFFが無駄になりますが、回路を簡単にするために目を瞑ります。

H8/330用アダプタ

2018-05-17 20:48 — asano

テーマ

前にH8/536のところで専用ROMライタの入手が困難と書きましたが、データシートをよく読むと27C256あるいは27C101の振りをするモードがありソケット変換のみで汎用ROMライタが使えるようです。そこでもっとも数を持っているH8/330用の変換アダプタを作ってみました。

H8/330用アダプタ
これがそのアダプタです。

左側をROMライタにセットし、右のソケットにH8/330を取り付けます。

ROMライタはHN27C256Hを選択します。ID機能は使えないと思われる(少なくともマニュアルに言及は無い)ので自動設定は出来ず手動で設定しなくてはなりません。