2012.7.11
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第169回]


●F80フォルダ

前回はND80ZVのCP/M互換DOSシステムの上でFORTRAN80コンパイラが動きました、というご報告をいたしました。

もっともすんなりと動いたわけではありません。
前回書きましたように3日間も泥沼にはまって苦闘いたしました。

そのように書きますと、何かものすごい難しいセッティングか何かが必要だったかのように思われるかもしれません。
ええ。
そのほうが格好がついていいですよね。

「今回はほんと、難しかったですね。何とか経験とカンを頼りに辛うじてクリアできました」

いやあ。
泥沼でもがいている最中は、ほんと、そう思いましたよ。
むむ。
あかん。
どこから攻めたらクリアできるのか見当もつかん。
難攻不落じゃあ。

そんな感じだったのですけれど。
クリアできてみますと、どこが難攻不落やねん。
あほらし。

つうような、お粗末なミスであったり、当然気がつくべきところに気がつかなかっただけ、というようなことが重なって、一見難攻不落のように見えていただけでありました。
まあ。
世の中というものは大体におきましてそういったものであります。

そういったあたりの顛末につきましても少しずつお話をしてまいります。
まずは。
ダウンロードしましたF80.ZIPを解凍いたしますと、F80フォルダが作成され、その中には下のように複数のファイルが見えます。



MSDOSアプリケーション(.COM)がいくつもあります。
この中でFORTRANコンパイラ本体はF80.COMです。
これを仮想FDDにセーブすれば、FORTRANのソースプログラムをコンパイルできるようになります。

しかし前回書きましたように、F80.COMを実行して得られるのは拡張子RELがついた相対ファイルで、そのままでは実行することができません。
リンカ(L80.COM)を実行すると、相対ファイルから実行ファイル(.COM)が作成されます。

F80.COMの実行によって作成された相対ファイルからL80.COMによって実行ファイルを作成するときには、FORTRANライブラリファイル(FORLIB.REL)が必要になります。

つまり上記F80フォルダ中、FORTRANソースプログラムから実行ファイルを作成するのに必要なファイルは、
F80.COM
L80.COM
FORLIB.REL
の3ファイルです。

なおM80.COMはマクロアセンブラ、LIB80.COMはライブラリマネージャのようです。
これはまだ試していませんが、使う必要があるかどうかは、ちょいと疑問です。

●各ファイルのLOADとSAVE

まずはF80.COM、L80.COM、FORLIB.RELを仮想FDDにSAVEします。
Windows側のフォルダにあるファイルを仮想FDDにセーブする手続きはちょっと面倒な作業が必要です。

実は現在ではそれを簡単に行なうことのできる機能を作ってしまったのですが、この時点ではまだデバッグ中でしたので、以下の手順で行なっていました。

まず、ZB3BASICを起動して、そこで/LDコマンドでトランジェントエリアの0100番地にファイルをロードします。
次に JP D233 でCP/M互換DOSを起動します。
そこでSAVEコマンドでファイルセーブをします。

別のファイルをセーブするには、ここで一旦Ctrl+Dを入力して、ZB3BASICに戻り、そこで/LDコマンドでファイルをロードします。
これを必要なだけ繰り返します。
その作業を行なったときのログファイルです。

logfile nd80zlog\07101741.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
can't open D.vfd
>/ld f80.com,0100
loading F80.COM ...7000(28672)bytes loaded,from 0100 to 70FF
>jp d233

A>save 112 f80.com

A>end of ZBDOS
>/ld l80.com,0100
loading L80.COM ...2a00(10752)bytes loaded,from 0100 to 2AFF
>jp d233

A>save 42 l80.com

A>end of ZBDOS
>/ld forlib.rel,0100
loading FORLIB.REL ...6600(26112)bytes loaded,from 0100 to 66FF
>jp d233

A>save 102 forlib.rel

SAVEコマンドで入力する数値パラメータは、/LDコマンドを実行時に表示される16進数のロードバイト数の上位2桁を10進数に直した値に一致します(下位2桁に端数があるときは10進数+2にします)。
F80.COMのロードバイト数は7000Hです。
70Hを10進数に直すと112になります。
L80.COMのロードバイト数は2A00Hです。
2AHを10進数に直すと42になります。
FORLIB.RELのロードバイト数は6600Hです。
66Hを10進数に直すと102になります。

●HELLO.FORのLOADとSAVE

FORTRAN80のソースプログラムファイルの拡張子はFORです。
サンプルプログラムHELLO.FORを上と同じ作業をして仮想FDDにセーブします。

A>end of ZBDOS
>/ld hello.for,0100
loading HELLO.FOR ...00dd(221)bytes loaded,from 0100 to 01DC
>jp d233

A>save 2 hello.for

A>dir
A: VFTST1   COM : MBASIC   COM : F80      COM : L80      COM
A: FORLIB   REL : HELLO    FOR

●F80.COMの実行

CP/M互換DOSを起動して、
f80[Enter]
と入力すると、FORTRAN80コンパイラが起動して、

が表示されます。
ファイルHELLO.FORをコンパイルするための最も簡単な入力は、
=HELLO[Enter]
です。
このように=(イコール)に続けてファイル名を入力すると、コンパイルが開始されます。

そのように入力しましたら。
こんなエラーメッセージが表示されてしまいました。

A>f80

*=HELLO
HELLO

%Line:10 Zero Format Valu・FORMAT(3X,7A+

?Line:10 Illegal Character for Synta・FORMAT(3X,7A+

%1 Warning(s) Issued
・
?1 Fatal Error(s) Detected
・

なんだ、こりゃあ?
かくて。 泥沼での格闘の開始です。

ワンボードマイコンでCP/Mを![第169回]
2012.7.11upload

前へ
次へ
ホームページトップへ戻る