復活!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
前へ
次へ
ホームページトップへ戻る