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

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

[第20回]

●CP/Mソースプログラムの修正作業(2)

前回はcpm22.z80の一部を変更して、アセンブラを通すことができました。
今回はND80ZVに移植するために必要な修正作業を行ないます。
前回cpm22.z80を修正して、保存したcpm22b.txtをTeraPadで開いてください。

修正が必要なところはかなりたくさんあります。
下にその部分のみを抜き出して示しました。

14 CPMTOP EQU 0BC00H   ;MEM     EQU     62              ;for a 62k system (TS802 TEST - WORKS OK).
15 ;
16 IOBYTE       EQU     8003H;  3               ;i/o definition byte.
17 TDRIVE       EQU     8004H;  4               ;current drive name and user number.
18 ;ENTRY       EQU     5               ;entry point for the cp/m bdos.
19 TFCB         EQU     805CH;  5CH             ;default file control block.
20 TBUFF        EQU     8080H;  80H             ;i/o buffer and command line storage.
21 TBASE        EQU     8100H;  100H            ;transiant program storage area.
22 NFUNCTS EQU  41              ;number of functions in followin table.
23 REENT  EQU     1033H;

26 CNTRLC       EQU     04H;    3               ;control-c

43      ORG CPMTOP      ;       ORG     (MEM-7)*1024
44 REBOOT:;

1251 ENTRY:;

1298    JP Z,REBOOT;    JP      Z,0             ;yes.

1310    JP REBOOT;JP    0               ;always reboot on these errors.

1338    NOP;    RET     NZ              ;yes, use it.

1383    JP Z,REENT;     JP      Z,0             ;yes, reboot now.

1523    JP RDBUF10;     LD      A,(CURPOS)      ;if we backspace to the start of the line,

1616    JP Z,REENT;     JP      Z,0

行の先頭にある数字はTeraPadでcpm22b.txtを開いたときに表示される行番号です。
#14 でCPMTOPのアドレスを指定します。しばらくの間、BC00にしておきます。
#16〜#21は、本来のアドレス00××を80××に変更します。
#18 のENTRYはプログラム中でラベル指定しますから ; をつけてコメント行にします。
#22 は前回貼り付けた行です。
#23 は ; だけの行ですがここにREENTの定義を書きます。
行を追加挿入すると、それ以後の行番号が変わってしまって説明とのズレが出て来てしまいますから、ちょっと窮屈ですが、行を追加しないように変更作業をしていきます。

#26 はCTRL+Cのブレイクの定義ですが、ND80ZVシステムの設定とダブってちょっと都合が悪いことがありますので、しばらくはCTRL+Dで代用することにします。そのため03を04に変更しておきます。

#43 ORG文をこのように変更します。とりあえずはCP/MのロードアドレスはBC00にしておきます。
その次の#44 は ; だけの行ですが、上に書きましたように、行を挿入したくありませんから、ここにラベルREBOOTを起きます。

同じ理由から、#1251 の ; の行に、ラベルENTRYを置きます。

#1298,#1310は本来は0番地へのリブートですが、しばらくはラベルREBOOTへのジャンプにしておきます。

#1338 は将来変更になるかもしれません。ここがRETだと都合が悪いことがおきているため、とりあえずNOPに変更しておきます。

#1383,#1616 は本来は0番地へのリブートですが、しばらくはND80ZVモニタへのジャンプ(アドレス1033H)にしておきます。

#1523 は将来変更になるかもしれません。ここで都合が悪いことがおきているため、とりあえずJP命令に変更しておきます。

CP/M本体の変更箇所は今のところは以上です。
名前をcpm22c.txtに変更して保存してください。
次回はBIOSパラメータの設定を書き入れることにします。

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

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