So-net無料ブログ作成
English Version

3チップ構成Pic24CPMマイコン(その3)ZSIDで小文字のシンボルを使う方法 [Z80]

 「レトロマイコンZ80ボードの構想(その19)PCB化」の記事の最後の方に書いたようにHI-TECH CはANCI規格にも準拠していてプロトタイプ宣言や構造体も使えCP/M-80上で使用可能なC言語の中では最も使い易いのものの一つではないかと思います。

 また、添付されているREAD.MEを見ると

The HI-TECH Z80 CP/M C compiler V3.09 is provided free of charge for any
use, private or commercial, strictly as-is. No warranty or product
support is offered or implied.

You may use this software for whatever you like, providing you acknowledge
that the copyright to this software remains with HI-TECH Software.


と書かれており、営利的な使用も含めて特に使用制限は無いようです。
 HI-TECH C(V3.09)はマニュアルも含めて ここ からダウンロード可能です(z80v309.exeにコンパイラが入っている)。

 開発元のHI-TECHソフトウェア社は2009年3月にマイクロチップ社に買収され、現在、マイクロチップ社が提供しているPIC用Cコンパイラの開発元でもあります。
 CP/M版HI-TECH Cのマニュアル(Z80DOC.TXT)を見るとZAS(アセンブラ)での数字表現のテンポラリラベルの後にf(forward)またはb(back)を付けて参照できる辺りにもPIC用の開発環境に通じる片鱗を垣間見ることができます。

 HI-TECH Cでコンパイル時に -f オプションを付けることでシンボルファイルも作成できディバッグ時に活用できます。
 また、シンボルは大文字/小文字の区別もありC言語を使う上では助かります。
 しかし、ZSIDにシンボル情報を読込ませることはできましたが、コマンド内でシンボルを参照できませんでした・・・

ZSIDへHI-TECH Cのシンボルファイル読込み
b>type hello.c #include <stdio.h> void main( void ) { printf( "hello !" ); } b>c -fhello.sym hello.c HI-TECH C COMPILER (CP/M-80) V3.09 Copyright (C) 1984-87 HI-TECH SOFTWARE b>dir hello.* B: HELLO C : HELLO COM : HELLO SYM b>a:zsid hello.com hello.sym ZSID VERS 1.4 SYMBOLS NEXT PC END 1100 0100 C72E #l0125 0125 LD HL,0081 0128 PUSH HL 0129 CALL 06C7 .startup 012C POP BC 012D POP BC 012E PUSH HL 012F LD HL,(12F8 .__argc_) 0132 PUSH HL 0133 CALL 013D ._main 0136 PUSH HL 0137 CALL 06B4 ._exit #l._main ? #g0 b>


 上記のようなZSIDでシンボル参照できない問題の解決方法をネットで探しましたがすぐには見つかりませんでした・・・

 リスト表示ではシンボル表記になることからシンボル情報自体はZSIDに読込まれているようです。
 コマンドで入力したシンボル文字列がZSIDの内部処理で大文字変換されるため、内部のシンボル文字列とマッチせず入力したシンボルが参照できないようです。
 (因みにMBASICは小文字も入力可能なので小文字のファイル名も作成でき、逆に小文字のファイル名のファイル削除にも使えます)

 そこで、ZSIDの内部処理でコマンドラインを大文字変換している部分にパッチを当ててみました。
 CP/M-80のコマンドはサイズが小さいので該当の処理を探すのは楽です^^
 ZSIDへのパッチはDDTを使って当てていますw

ZSIDへパッチ適用し小文字のシンボルに対応
a>ddt zsid.com DDT VERS 2.2 NEXT PC 2900 0100 -s1a99 1A99 E6 1A9A 5F ff 1A9B C9 . -g0 a>save 40 zsidd.com a>b: b>a:zsidd hello.com hello.sym ZSID VERS 1.4 SYMBOLS NEXT PC END 1100 0100 C72E #L._main _main: 013D CALL 0EAA .ncsv 0140 NOP 0141 NOP 0142 LD HL,0EBF 0145 PUSH HL 0146 CALL 0151 ._printf 0149 LD HL,0002 014C ADD HL,SP 014D LD SP,HL 014E JP 0EA2 .cret _printf: 0151 CALL 0E96 .csv #G0 b>


 ZSID内でコマンドからもシンボルが使えるようになりました^^
 注意点としてはコマンド自体が小文字だとエラーになるのでコマンドを大文字で入力する必要があります(パッチ適用前は大文字変換されるのでエラーにならなかった)

 上記の制約は発生しますが、シンボルが使えるようになるメリットは私にとっては大きいです^^

[TOP] [ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(1) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 1

skyriver

 CP/M-80のZSIDに関して、コマンド中のシンボル部のみ大文字変換を無効にすることで小文字シンボル対応する方法と調査過程を下記のURLの記事に書きました。

http://piclabo.blog.so-net.ne.jp/2018-06-11

by skyriver (2018-06-11 23:45) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。