忍者ブログ

yoshikiyo Lab

自称makerのブログ。電子工作とかテスラコイルとか 「とりあえず動けばいい」そんな適当すぎるものづくりをしています。

   

Z80モニタインターフェース2

Z80ワンボードマイコンに接続する入出力インターフェースを製作しました。
このモニタインターフェースとモニタソフトを利用することで
RAM領域の読み書きや任意のROMアドレスからのソフトウェアの実行が可能になりました。


〇Z80モニタインターフェースのブロック図です。

ワンチップマイコンで構成してしまえば簡単にインターフェース回路を構築できますが
できるだけ当時(80年から90年前半)存在していた部品で回路を構成します。
参考にしたオリジナル回路には現在では廃止となっている部品が使用されていたため
廃止部品を現存するロジックICで置き換えて回路を構成しました。

〇ディスプレイ・スイッチコントローラ

ディスプレイ・スイッチコントローラ「UPD8279」を採用し回路を簡略化しています。
7セグのダイナミック点灯やスイッチ入力の処理を内部のハードウェアで行います。
今でも若松通商青丹通商で入手可能です。

ディスプレイ・スイッチコントローラ「UPD8279」の内部ブロックです。


〇駆動電流
Z80ワンボードマイコン+Z80モニタインターフェース接続時の電流
Z80、UPD8279どちらもTTL ICなのでしょうがないですね...


〇保護パネル
ディスプレイと部品の保護のために保護プレートを製作


CNCでアクリルパネルを切削


Z80ワンボードマイコンとモニタインターフェースへの取付


余っていたアクリル板を使用したら片方はピンクエッジタイプでした。


モニタソフトのソースコード
某工業高校で使用されていた教育用ボードのソフトウェアを参考にしています。
MONITOR.asm

拍手[0回]

PR

Z80モニタインターフェース

Z80ワンボードマイコンに接続できるインターフェースボードを製作しました。
これでRAM領域の読み書きや任意のROMアドレスからのソフトウェアの実行が可能になりました。


動作している様子
ROM2(アドレス0x4000~)からLEDをカウントアップするソフトを起動


RAM(ドレス0x8000)へ機械語「0x76」を書き込み→実行
機械語「0x76」はHalt命令にあたるのでHalt信号が出力され赤色LEDが点灯する。


詳細は資料が完成してからまとめたいと思います。

拍手[0回]

ロボトレーサのサーボモータ変更とちょっとした改良

このロボトレマシンには2つのサーボ機構が搭載されています。
ステアリング駆動サーボ、カメラ駆動サーボはそれぞれ
確度センサとコアレスモータによって構成されています。


駆動用のモーターのスピードが上がるとステアリングサーボモータのトルクが不足して
ステアリング動作に問題が発生することが分かりました。

まあ、初めから「ギア比も不足しているしトルクが不足するだろうなぁ」とは思っていましたが
やっぱりだめでした.....

サーボモータのトルク不足を改善するために
ステアリング駆動サーボモータとカメラ駆動サーボモータを変更しました。
このコアレスモータと同サイズでより駆動トルクの大きなものを選定しました。

マクソンモータ製の「DCX08M EB SL 4.2V」を採用しました。


「DCX08M EB SL 4.2V」


ステアリングサーボ用のモータはさらに高トルクとなるように
ギアヘッドを合わせて注文しました。
「GXP 8 1段」


今は簡単なテストコースしか用意していないので
ベンチーマークコースを作成して調整に入りたいと思います。




あと、マシンにフルカラーLEDモニタを追加した。
マシン状態を表すインターフェースとしてブザーしかないのは不便でした。

いつものように基板加工機で基板を削りだして適当に作りました。
回路はフルカラーLED「OSTA5131A」とドライブ用のトランジスタ「2SA1586」の構成です。


直接コネクタで実装します。

拍手[0回]

ROMライター

Z80ワンボードマイコンを作ってみました。
このワンボードマイコンはROMからプログラムをロードして動作します。
単体のUV-EPROMやEEPROMが必要です。

UV-EPROMは書き込み回数が20回程度と少ないためEEPROMも用意しました。
EEPROMであれば書き込み回数を気にすることなくプログラムの書き換えを行えます。

UV-EPROM「MBM27C64」


EEPROM「UPD28C64」



UV-EPROM or EEPROMにマシン言を書き込める装置が必要になります。
ROMライターとして市販されています。

要は、ROMの書き込みシーケンスに従ってデータを書き込めれば良いわけなので
ワンチップマイコンを使用してROMライターを作ってみました。

ハードウェア構成は以下のようになりました。


H8の外部バスにROMを接続しただけです。
あとは、UV-EPROM用に12Vと21Vの書き込み電源を用意してあります。


外部バス経由で簡単に着込めばよいと考えていましたが.....
UV-EPROMは書き込み速度が遅く高速なバスでは制御ができないことが分かりました。
外部バスにつなげてはありますが、結局ピン設定をIOにしてソフトウェア制御しています。

UV-EPROMの消去は殺菌灯を組み込んだポータブル蛍光灯を使っています。
15~20分程度でROM内容を消去することができます。


ちなみにカバーの透明板を外さないと全く消去ができません。
消去に有効な波長400nm以下の紫外線が吸収されてしまうようです。

拍手[0回]

Z80開発環境構築

80の開発環境の構築について

Z80のソフトウェア開発はアセンブリ言語を用いて行います。
アセンブリ言語(単純にアセンブラと呼ばれることのほうが多い)は、
コンピュータが理解できるマシン語を人間がわかりやすいように記述したものです。
したがってアセンブリ言語からマシン語への変換作業が必要になります。

手作業でマシン語に変換する「ハンド・アセンブル」という手法もありますが
非常にめんどくさいので「Z80アセンブラ」を使用してこの作業を自動化します。

書き込みまでの流れ
------------------------------------------------------------------
アセンブリ言語記述

アセンブラ(ハンド・アセンブルでもOK)

マシン語

HEXファイル(ROMライターによる。なくてもOK)

ROMライター

ROM化
------------------------------------------------------------------

アセンブラにはASxxxx Cross Assemblersを使用します。
HPトップ下のほうの「Get the "ASxxxx Cross Assemblers"」


実行ファイルだけあればよいので「Executables Only Distributions」から
「VS 2015 executables as a zipped file (7353K)」をダウンロード
windows10環境なので、できるだけ新しいVSでコンパイルされたものを選択


ダウンロードしたファイルは解凍して適当な場所に保存しておきます。
様々なCPUに対応したアセンブラがまとめて圧縮されています。
この中で必要なのは「asez80.exe」と「aslink.exe」だけです。
「asez80.exe」がアセンブラ本体で「aslink.exe」はHEXファイルを作るときに必要です。


ASxxxxアセンブラはコンソールアプリケーションなのでコマンドプロンプトから
引数をセットして使用します。


これだと何度もアセンブルする場合に大変なのでバッチファイルを作成して
「TeraPad」に組み込んで開いたファイルを直接アセンブルできるようにしています。


「asez80.exe」を起動するバッチファイルを作成して
そのバッチファイルを「TeraPad」から起動するという流れです。
バッチファイル


「TeraPad」へツール登録


アセンブラを実行するといくつかのファイルが生成されます。
.lstファイルの中身を見てみます。赤枠部分にアドレスとマシン語が記載されています。
正常にアセンブルできていることがわかります。


ソースコードにエラーがある場合はエラー行のメッセージが出力されます。
この出力ファイルを「aslink.exe」に与えることでHEXファイルを生成することもできます。
とりあえずアドレスとマシン語がわかれば何とかなるのでこれで終了です。
ROMライター側がまだ HEXファイル形式に対応していないので.......

今回は「TeraPad」と組み合わせましたが
「TeraPad」だとアセンブリ言語にシンタックスハイライトがつかないので
ほかのエディタに統合して使ったほうがよさそうです。

結局ソースファイルの編集は「Visual Studio Code」使っていますし....
こっちはアドオンを入れることで色分けしてくれます。

拍手[0回]

最新コメント

[08/21 coiler]
[08/21 yoshikiyo]
[08/21 coiler]
[08/20 yoshikiyo]
[08/20 coiler]

カレンダー

04 2019/05 06
S M T W T F S
1 2 3
5 6 7 8 9 10 11
13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ブログ内検索

カウンター

Copyright ©  -- yoshikiyo Lab --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]