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

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

[第191回]


●MACRO−80(3)

前回からの続きです。
CP/M2.2のテストプログラムをMACRO−80用に一部を書き換えて作成したMVFTST1.MACをMACRO−80でアセンブルしたところFatal Errorになってしまいました。
MACRO−80はデフォルトでは8080アセンブラとして機能するということがわかりました。
/ZをつけることでZ80アセンブラとして動作します。
そのようにしましたところ、エラーの数は減ったのですが、まだ 5 Fatal error(s) が表示されました。

*=mvftst1/z
N 0100'   1E 2D                 LOOP:LD E,3F;?
N 010C'   FE 14                         CP 1A;^z?
N 0139'   1E 0A                         LD E,0A
N 0143'   E6 0F                 HEX1:AND 0F
N 0147'   FE 28                         CP 3A

5 Fatal error(s)

*

行の先頭に表示された’N’はエラーの種類を示しています。
まあ、でも、これはマニュアルを参照するまでもなく、その理由はわかりました。

ND80ZVに附属しております、当社オリジナルのZ80アセンブラのルールは一般のアセンブラとはちょっと異なっています。
定数としては1バイトおよび2バイトの16進数しか扱えません。
2バイトの16進数は常に4桁で先頭に’$’をつけて表します。
1バイトの16進数はそのまま(つねに2桁で)示します。
MACRO−80の実行によってエラーとされたのは、この1バイトの16進数表記でした。

ここは3Fではなくて3FHにしなければなりません。

お話の途中ですが。
マニュアルについて、です。

●MACRO−80のマニュアル

参考までに。
MACRO−80のマニュアル(英文です)は2012年8月現在こちらからPDFファイルをダウンロードできます。

●FORTRAN−80のマニュアル

ついでですから、これも参考までに。
FORTRAN−80のマニュアル(英文です)は2012年8月現在こちらからPDFファイルをダウンロードできます。
これはすごいです。321ページもあります。

●BASIC−80のマニュアル

えっと。
こちらもついでですから。参考までに。
BASIC−80のマニュアル(英文です)は2012年8月現在こちらからPDFファイルをダウンロードできます。

●MACRO−80の続きです

本題に戻ります。
Fatal errorの原因が1バイトの16進数表記であることに気が付きましたから、それをMACRO−80での表記に直しました。
ファイル名をMVFTST1C.MACにしました。

; BDOS function 1 & 2 test for ZBDOS
;for MACRO-80
;12/8/4
;
     ORG 0100H
     FCALL EQU 0005H
;
LOOP:LD E,3FH;?
        LD C,02
        CALL FCALL          
        LD C,01
        CALL FCALL
        CP 1AH;^z?
        RET Z
        PUSH AF
        LD E,3DH;=
        LD C,02
        CALL FCALL
        POP AF
        LD D,A
        CALL HEX1
        LD E,A
        LD A,D
        RRCA
        RRCA
        RRCA
        RRCA
        CALL HEX1
        PUSH DE
        LD E,A
        LD C,02
        CALL FCALL
        POP DE
        LD C,02
        CALL FCALL
        LD E,0DH
        LD C,02
        CALL FCALL
        LD E,0AH
        LD C,02
        CALL FCALL
        JP LOOP
HEX1:AND 0FH
        ADD A,30H
        CP 3AH
        RET C;0-9
        ADD A,07;A-F
        RET     
;
        END

これをMACRO−80アセンブラでアセンブルしました。

A>copy z:mvftst1c.mac

A>m80

*=mvftst1c/Z/L

No Fatal error(s)

*

おお。
No Fatal error(s)
と表示されました。
うまくいったようです。

最後の仕上げです。
L80を起動して、マシン語オブジェクトファイルの作成です。

A>l80

Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft

*mvftst1c,mvftst1c/N/E

Data    0103    0250    <  333>

39405 Bytes Free
[0000   0250        2]

A>

特にエラーメッセージも表示されずに終了しました。
これでうまくいったと思ったのですが。

作成されたはずのMVFTST1C.COMを実行するべく
MVFTST1C[Enter]
と入力しましたところ、ハングアップしてしまいました。
なぜぇ?

苦闘はなおも続きます。

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

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