忍者ブログ

yoshikiyo Lab

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

   
カテゴリー「マイコン」の記事一覧

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回]

PR

Z80ワンボードマイコンを作ってみた

有名なZ80CPUを使ってワンボードマイコンを作ってしまいました。


Z80ワンボードマイコンのブロック図です。

Z80を最低限動作させるために必要な回路とROMのほかに
RAM,PIO,CTCが1枚の基板上に構成されています。

Z80ワンボードマイコンのメモリマップ


〇CPU

CPUにはZ80を採用しています。ただしオリジナルのZ80は入手できなかったのでシャープが販売していたZ80セカンドソース品の「LH0080A」を使いました。

〇ROM,RAM

Z80の64kBあるメモリ空間をすべて利用できるように設計しました。
ROMはROM1とROM2に分けています。
各16kBとしてアドレスレコーダによりチップセレクト信号を生成しています。
これはROM1にモニタソフトを入れようと考えているためです。
インターフェースボードを作成してTK80のようにボード単体でソフトウェアを作成できるようにする予定があります。

RAMはZ80のRAM領域32kBすべてを使用しています。

〇パラレルI/O

8255を使って24bit分のパラレルIOポートを設けました。
オリジナルの8255はTTL出力ですが今回はCMOS出力の「D71055C」を使っています。
CMOS出力のほうが何かと接続しやすいので.....

〇CTC
タイマーとしてZ80CTCを使いました。
8bitタイマーが三つ入ったシャープ製「LH0082A」を使っています。

Lチカ成功しました。


回路図




Lチカのソースコード
TEST0.asm

LEDをカウントアップして
一定時間経過すると今度は入力のテストに移行します。

拍手[0回]

最新コメント

[11/04 NONAME]
[10/23 kaoaru]
[08/21 coiler]
[08/21 yoshikiyo]
[08/21 coiler]

カレンダー

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

ブログ内検索

カウンター

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