GithubHelp home page GithubHelp logo

z80mon's Introduction

KUNI-NET Z80 monitor

概要

  • Z80 CPUボード(KZ80-CPUB)128kB RAMボード(KZ80-1MSRAM)Z80 I/Oボード(KZ80-IOB)で動作する機械語モニタープログラムです。

    • Z80の固有命令を使用しているためSBC8080/8085では動作しません。

    • 8251シリアル入出力ルーチンは、SBC8080データパックのソースを参考にさせていただきました。

    • KZ80-CPUB+SBC8080サブボードの組み合わせで使用する場合は、RAMエリアを4000h→8000hへ移動する必要があります。

装備しているコマンド

  • 本モニターは進化中のため、使用できるコマンドは随時追加されていく予定です。

Table 1. コマンド一覧
コマンド書式 機能

D XXXX YYYY

XXXX番地からYYYY番地までのメモリーを16進ダンプ表示する

H or ?

コマンドヘルプを表示する

V

バージョンを表示する

L

IntelHEX形式ファイルをメモリーへロードする

I XX

I/O番地XXへI/O入力命令を発行する

O XX YY

I/O番地XXへデータYYを出力するI/O出力命令を発行する

M XXXX

XXXX番地からのメモリーを変更する

G XXXX

XXXX番地からのプログラムを実行する

Z XXXX PARAM1 PARAM2

XXXX番地からのプログラムをパラメーターつき(PARAM1、PARAM2)で実行する

ROM作成方法

  • アセンブル済みのIntelHEX形式ファイル(obj/Z80mon_KZ80.hex等)やバイナリファイル(obj/Z80mon_KZ80.bin)を使用して、TL866等のEPROMライタでROMを作成して使用してください。

    • インテルHEXはTL866標準ソフトで読み込みできます。バイナリ(bin)ファイルは minipro Linux用プログラムなどで使えます。

  • モニタープログラムは0000番地からスタートするかたちになっています。

ファイル名 用途

Z80mon_KZ80.hex
Z80mon_KZ80.bin

  • KZ80-CPUB+KZ80-1MSRAM/IOBv1用イメージ

  • シリアルチップはi8251前提です

  • RAM開始番地が$4000からとなっています

Z80mon_8080SUB.hex
Z80mon_8080SUB.bin

  • KZ80-CPUB+SBC8080SUBボード用イメージ

  • シリアルチップはi8251前提です

  • RAM開始番地が$8000からとなっています

Z80mon_6850.hex
Z80mon_6850.bin

  • KZ80-SB-MC6850ボード用イメージ

  • シリアルチップはMC6850前提です

  • RAM開始番地が$8000からとなっています

Z80mon_8259_8254.hex
Z80mon_8259_8254.bin

  • KZ80-IOB v2 ボード用イメージ

  • シリアルチップはi8251前提です

  • RAM開始番地が$4000からとなっています

  • KZ80-IOB v2 ボード(8259割り込みコントローラー、8254プログラマブルタイマー搭載)用となっています。

    ☆注意 : モニターが使用するワークエリアが多くなっています。またKZ80-IOB v2を使用するために、KZ80-CPUBに8259対応の改造が必要です。(X_X)

    8259対応版CPUボードは鋭意デザイン中です。

デバイス依存ソース (deviceディレクトリ)

  • デバイス依存ソースは deviceディレクトリに切り分けました。

  • 以下のルーチンを記述してください

ルーチン名

内容

SETINT

  • RST 38hから呼ばれるシリアル割り込みルーチン

  • RETの前にEI(割り込み許可)が必須

CIN

  • 1文字入力ルーチン

  • Aレジスタで入力文字コードを戻す

COUT

  • 1文字出力ルーチン

  • Aレジスタで渡された文字を出力する

CKINCHAR

  • 文字列バッファのカウントが0かどうかをチェックしてフラグを返す

INIT

  • スタックポインターや各種デバイスの初期化を実施

  • ルーチンの最後は EI(割り込み許可)した後 JP MAIN でモニターメイン処理へ飛ぶこと

  • 機械語モニターソースの末尾にデバイス依存ソースがappendされるかたちとなっています。

  • デバイス依存ルーチンで使用するRAMメモリー領域を確保する場合はソースの末尾で定義してください。また、RAM領域の最後に DEVICE_RAM_END EQU $ の定義を忘れずにお願いします。

  • Z80mon.asmではデバイス依存部分を条件コンパイル文で取り込むかたちをとっています。build.shと合わせて適宜修正してください。

ビルド方法

  • Z80アセンブラで記述しています。クロスアセンブラ等でアセンブリしIntelHex形式のファイルやバイナリ形式ファイル(bin)を作成してください。

    • クロスアセンブラ The Macroassembler ASでアセンブリする際のコマンドは build.shとして作成してあります。参考にしてください。

build.shによるビルドディレクトリ

./ --+-- lst    リスト形式ファイル
     |
     +-- obj    HEX,bin形式ファイル
     |
     +-- p      ASコンパイル結果(pファイル)

ライセンス

  • 本プログラムのうち私が作成した部分はMITライセンスとします。

謝辞

  • 本モニタープログラムを作成するにあたり、様々な助言、アイデアをいただきました。ありがとうございます。

    • @vintagechips さま (SBCシリーズ原作)

    • @tendai22plus さま

    • @electrelic さま

z80mon's People

Contributors

kuninet avatar

Watchers

 avatar James Cloos avatar

z80mon's Issues

I/O出力(OUT)コマンド実装

概要

  • Z80 I/O出力命令(OUT)命令を発行して、出力ポートへデータ出力する

コマンド要件

  • 書式 : O I/Oaddr data
  • 表示例
>O C2 99
>

RTC-4543SA 日時書き込み、読み込みサンプルプログラム作成

概要

  • RTC-4543SA 日時書き込み、読み込みサンプルプログラムを作成する
  • 日時書き込みコマンドは 開始番地5000h(Zコマンドで初期設定文字列指定)、日時読み出しコマンドは開始番地6000h
書き込み例) 2019/05/01 水 18:59:59 を設定
>Z 5000 1905014185959
>
読み出し例)
>G 6000
1905014190001   → 2019/05/01 水 19:00:01
>
  • RTC基板はKZ80-IOB(I/Oボード)の8255経由で接続
    • DATAはAポート0番ピン
    • CE、WR、CLKはCポートを使用

スクリーンショット 2019-05-01 20 36 33

Zコマンド廃止、Gコマンド改良

内容

  • Zコマンドを廃止して、Gコマンドと統合

  • Gコマンドで実行プログラムへARGC/ARGVにあたるパラメーターを渡す

    • Bレジスタ : パラメーター数(ARGC相当)
    • DEレジスタ : パラメーターポインタ先頭アドレス(ARGV相当)
  • 参考: パラメータテーブル

ARGC	DS	1  ← Bレジスタ
ARGV_1	DS	2  ← DEレジスタ
ARGV_2	DS	2
ARGV_3	DS	2

メモリー変更コマンド(Mコマンド)実装

概要

  • メモリー変更コマンドを実装する。

コマンド要件

  • 書式 : M address
  • 表示例
>M 5000
5000 : 00-11
5001 : 01-
>
  • キー入力
    • 0-1/A-Fの2桁入力(2桁以上入力された場合はエラーを出して同一アドレス入力へ)
    • ESCキーで入力モードから脱出

環境依存部分とモニター本体を分離する

概要

  • 環境(マイコン)依存のソースとモニター本体部分のソースを分離し、ビルドの際に複数環境のアセンブリを可能とする

目標

  • KZ80-CPUB+KZ80-1MSRAM(RAMエリア 4000hスタート)と SBC8080SUBボード(RAMエリア8000hスタート)の2種類のビルドを可能とする

I/O入力(Iコマンド)実装

概要

  • Z80 I/O入力命令(IN)命令を発行して、入力ポートからデータを読み取り16進表示する

コマンド要件

  • 書式 : I I/Oaddr
  • 表示例
>I C3
88
>

入力パラメーターつき実行コマンド

概要

  • 入力パラメーターつき実行コマンドを実装する
  • ワークエリアの入力パラメーター域の最大が3つなのでユーザーパラメーターは2つまで

実行例

>Z 1234 PARAM1 PARAM2
  • 実行プログラムはモニターワークエリアの入力パラメーターリストから入力パラメーターを得る

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.