tunozemichanの日記 / tunozemichan's diary

SORD社のコンピューターM68やM68MXの解析についての備忘録です。This blog is a memorandum about the analysis of SORD's computers M68 and M68MX.

z88dkで任意のI/Oポートに接続したAm9511を動かす方法

z88dkについて

z88dkは知る人ぞ知る超有能Cコンパイラアセンブラツールキットです。対象PC(時代的にはマイコン)はなんと100以上です。当然ながらAM9511もサポートされているのですが、まだDEVELOPMENTのようです。

 

SORD M23用にファイルをいくつか修正する

 

どうやら、RC2014のAPUオプションをターゲットにしているようで、Am9511が接続されているI/Oポートがほぼ固定(コマンド/ステータスポートが43h、データポートが42h)になっているようで、他の搭載機で利用するには修正が必要です。

 

SORD M23のAm9511は、コマンド/ステータスポートがDDh、データポートがDChですので、以下のファイルを修正します(0x43->0xDD、0x42->0xDC)。修正箇所は複数にわたります。ファイルの先頭から末尾までチェックしてください。

 

./z88dk/src/ticks/am9511.c

./z88dk/libsrc/_DEVELOPMENT/target/am9511/config_am9511.h

./z88dk/libsrc/_DEVELOPMENT/target/am9511/config_am9511_private.inc

./z88dk/libsrc/_DEVELOPMENT/target/am9511/config_am9511_public.inc

 

configはm4で書かれているので、ライブラリのビルド時にオプションでポート番号を指定できそうでしたが、調べるのが面倒、かつ、直に書き換えた方が楽そうだったのでそうしました。あとはz88dkのディレクトリで、build.shを実行するだけです。

SORD M23(CP/M)のみの使用なら、

 

./build.sh -p cpm

 

とすると、ビルド時間が短くて済みます。

 

ソースツリーの入手やコンパイル方法は以下のサイトを参考にしました。良サイトです。

maple4estry.netlify.app

 

WSL2上で構築しましたが問題なく使用できます。

 

使用方法

Cのソースコード浮動小数点演算を書きます。

#include <stdio.h>
#include <math.h>


int main(void){

    float x,y;
    x = 3.141592;
    y = cos(x);
    printf("cos(pi) = %f",y);
   
}

 

z88dkの使用できる環境で、

 

zcc +cpm --am9511 test02.c -o TEST02.COM

 

とかすると、CP/M実行型バイナリが作成されます。これをディスクイメージに焼いて、実行するとこんな感じになります。

 

 

無事計算されています。