工作

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

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

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

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

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

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

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

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

  • 本当に失われた

P8052AH-BASICを動かす(動作編)

2018-08-19 16:41 — asano

テーマ

カテゴリー

ハード編に引き続き今回は動作編です。

P8052AH-BASICはリセットしてもシリアルに何も出力してこないのでちょっと不安になりますが、スペースを送ってあげるとオープニングのメッセージが返ってきます。このスペースでターミナル側のボーレートを検出して自動的に合わせるようになっています。

クロック周波数をテキトーに決められるのはありがたいです。

間違ってスペース以外を送るとボーレート検出に失敗して正常に表示されないことがあります。その場合はリセットし直すしか無いと思います。

画面
無事に立ち上がったところで簡単なプログラムを動かしてみました。

これを選んだのは昔 N-BASIC で 213 を計算させると 8192.01 となった記憶があるから。浮動小数点対応のBASICということでちょっと試してみました。

P8052AH-BASICを動かす(ハード編)

2018-08-17 23:52 — asano

テーマ

カテゴリー

P8052AH-BASICでボード製作中と書いてから一月近く経ってしまいましたが、やっと出来上がりました。

P8052AH-BASIC搭載ボード
動作確認ができる最小限の構成といったところです。

データ用メモリ空間の0000H~7FFFHに32kBのRAMを配置しています。プログラム用メモリ空間には何も接続していない(内蔵ROMのみ)のでBASICを使用する分には問題ありませんがネイティブコードを書いて実行することはできません。簡単な改造で対応可能なのでそのうち追加するかもしれません。

こんなに時間がかかったのは動作しなくて苦労したわけではありません。配線が終わって一発で動作しました。
ソケットを配置して電源ラインの配線を済ませた段階で「あとは機械的に配線するだけ」と安心して放置してしまったのが原因です。

AVRプログラマ

2018-07-30 23:51 — asano

テーマ

カテゴリー

昔使っていたAVRプログラマたちです。

AKI-AVR
これは秋月電子通商で扱っていたAKI-AVRキットです。

今はPIC用のAKI-PICでAVRの書き込みも可能になっていますが、以前はAVR専用のものがありました。

AVRの書き込みには12Vをかけてパラレルで書き込む方法とISPと呼ばれる通常電源のみでシリアルで書き込む方法があります。前者は主にライタのソケットに挿して書き込み、後者はターゲットボード上で書き換えることが可能です。
このキットはその形態からは前者のように思えますが、実は後者の方式で書き込みを行ないます。右端の6ピンコネクタを利用すればターゲット上での書換えも可能です。

これは私の2番目のAVRプログラマでした。AVRをはじめて使ったのはMP3プレーヤキットですが、この時はキット付属の簡易ライタを使用しています。

続・SBC6303がM5L2764Kで動かなかった件

2018-07-22 20:43 — asano

テーマ

カテゴリー

以前、SBC6303 が M5L2764K の個体差によって動いたり動かなかったりと書きました。

念のために n を増やしてみると、起動メッセージの途中で止まってしまう M5L2764K も見つかりました。リセットを繰り返すと止まる場所も一定していません。

動いたと思ったものも心配になってきます。試しにメモリダンプを実行してみると、案の定ダンプ中にハングアップしてしまいました。

ところで私の持っている 2764 は三菱の M5L2764K ばかりです。ふと他社のものでも同じだろうかと思って Intel の D2764 を調達して試してみました。するとどれも正常に動作するではないですか。64kB のメモリ空間全部をダンプさせてみても最後までいきます。

Intel のものと三菱のもので何かが違うようです。

MC6803を動かす

2018-07-11 23:56 — asano

テーマ

カテゴリー

手配していたロジックICが到着したのでSBC6303ルーズキットMC6803を載せて試してみることにします。

SBC6303ルーズキット
そのままではMC6803を動かすのに支障があるので一部変更しています。

まずNMOSのMC6803と組み合わせるのに74HCシリーズはマズいので74HCTシリーズに換えます。キット資料によればLS/ALS/ASとありますが、VIHの問題なら74HCTでもいけるはずです。

次にMC6803はクロック上限が1MHzなのでクロックを下げなくてはなりません。シリアルのボーレートも変わってしまうので半分の0.6144MHzにすることにします。これならボーレートも半分の4800bpsになるのでROMのソフトウェアを変更する必要がありません。

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を書き直すことなくポートを弄ったりできるようになります。