MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第80回]
●MOVE MEMORY
今回はMM(MOVE MEMORY)を組込みました。
このところご注文を沢山いただいて、毎日その作業に追われております。
有難いことです。
ですので、MYCPU80のプログラムの作業は少しずつしか進みません。
なんとか年内には供給を開始したいと思っていたのですが、ちょっと無理かもしれません。
ひょっとすると、来年もまた正月のお休みがなくなってしまうかも…。
MOVE MEMORYもND80ZV(ND80Z3.5)のリモートプログラムにある機能です。
それをそのままMYCPU80にも組込みました。
MMは指定した範囲のメモリの内容を別のアドレスにコピーします。
元のメモリの内容はそのまま残ります。
ですから本当はMOVE MEMORYではなくてCOPY MEMORYなのですが、マシン語の世界ではCOPYよりもMOVEのほうが一般的なようです。
リモートプログラムのコマンドとしては /m を使います。
最初に前回説明しました /d(MEMORY DUMP) でメモリの中身を確認しておきます。
8000〜8030の内容を8040からにコピーします。
/dもそうですが、もともとこれらの機能はLEDに表示されている(または表示させたあとに)その値をもとにして何かの操作をおこなうという機能になっています。
LEDに表示された値はそのままモニタディスプレイ画面に表示されます。
最初は
0001 0020 −
アドレス表示部に0001、データ表示部に0020が表示されて、入力要求として − が表示されていますので、その表示を
8000 8030
に変えるために
8000[.]を入力します。
[.]を入力すると[ADRSSET]に変換されます。
続いて
8030
と入力すると、画面では変化はありませんが、MYCPU80のLEDにはデータ表示部(右4桁)に8030が表示されます。
そこで/dを入力するとMEMORY DUMPが実行されます。
MEMORY DUMPの実行後もLED表示部は
8000 8030
が表示されたままになっていますから、それをそのまま利用して、
いきなり /m を入力しています。
すると転送先のアドレス要求として
for...
と表示されます。
ここで
8040[Enter]
と入力すると、8000〜8030までの値が8040からにコピーされます。
コピーを完了した先のアドレス範囲として、
8040 8070
と表示されますから、それをそのまま利用して、いきなり
/d
と入力してMEMORY DUMPを実行して、正しくコピーされたことを確認しています。
上の画面で、for...と表示されて8040まで入力したときのMYCPU80のLED表示です。
このようにパソコンのディスプレイ画面とMYCPU80のLED表示は連動しておこなわれます。
MOVE MEMORYが完了したあとのLEDの表示です。
上の例はコピー元とコピー先のメモリ範囲に重なりがない場合ですが、メモリ範囲に重なりがあっても正しくコピーされるように考えたプログラムになっています。
途中でちょっと入力を間違えてしまいました。
8000〜803Fの内容を8010にコピーしています。
コピー後に/dを実行して正しくコピーされたことを確認しています。
こちらは最初に8000〜806Fの内容を確認したあと、8020〜805Fの値を8010にコピーしました。
こちらは上の作業のログです。
logfile mycpu80log\12101143.txt open mzbdos2n2 2014.11.30 by Chunichidenko MYCPU80に接続しました(9600bps) 0001 0020 - 8000[ADRSSET] 8000 0012 - 00[WR+] 8001 0034 - 00[WR+] 8002 0056 - 00[WR+] 8003 001B - 8010[ADRSSET] 8010 10EF - 11[WR+] 8011 1100 - 11[WR+] 8012 1111 - 11[WR+] 8013 1122 - 8020[ADRSSET] 8020 2033 - 22[WR+] 8021 2244 - 22[WR+] 8022 2255 - 22[WR+] 8023 2266 - 8030[ADRSSET] 8030 30FC - 33[WR+] 8031 33DF - 33[WR+] 8032 3341 - 33[WR+] 8033 3300 - 8040[ADRSSET] 8040 40F0 - 44[WR+] 8041 4444 - 44[WR+] 8042 4455 - 44[WR+] 8043 4466 - 8050[ADRSSET] 8050 50FC - 55[WR+] 8051 55DF - 55[WR+] 8052 5541 - 55[WR+] 8053 5500 - 8060[ADRSSET] 8060 60F0 - 66[WR+] 8061 660C - 66[WR+] 8062 6600 - 66[WR+] 8063 669A - 8000[ADRSSET] 8000 0000 - 8060/d[MEMORY DUMP] 8000 00 00 00 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ....f.f.f.f.f.f. 8010 11 11 11 22 49 54 00 35 0A 00 04 00 0A 00 0D 84 ..."IT.5........ 8020 22 22 22 66 00 00 66 1B 66 1B 66 1B 66 1B 66 1B """f..f.f.f.f.f. 8030 33 33 33 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 333.IT.5........ 8040 44 44 44 66 00 00 66 1B 66 1B 66 1B 66 1B 66 1B DDDf..f.f.f.f.f. 8050 55 55 55 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 UUU.IT.5........ 8060 66 66 66 9A FA 00 00 98 FA 0A 00 0D 10 14 00 1B fff............. 8000 8060 - 8010/m[MOVE MEMORY] for... 8080[WR+] 8080 8090 - /d[MEMORY DUMP] 8080 00 00 00 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ....f.f.f.f.f.f. 8090 11 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ..f.f.f.f.f.f.f. 8080 8090 - 8000[ADRSSET] 8000 0000 - 803f/m[MOVE MEMORY] for... 8010[WR+] 8010 804F - 8000[ADRSSET] 8000 0000 - 8060/d[MEMORY DUMP] 8000 00 00 00 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ....f.f.f.f.f.f. 8010 00 00 00 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ....f.f.f.f.f.f. 8020 11 11 11 22 49 54 00 35 0A 00 04 00 0A 00 0D 84 ..."IT.5........ 8030 22 22 22 66 00 00 66 1B 66 1B 66 1B 66 1B 66 1B """f..f.f.f.f.f. 8040 33 33 33 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 333.IT.5........ 8050 55 55 55 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 UUU.IT.5........ 8060 66 66 66 9A FA 00 00 98 FA 0A 00 0D 10 14 00 1B fff............. 8000 8060 - 8020[ADRSSET] 8020 2011 - 805f/m[MOVE MEMORY] for... 8010[WR+] 8010 804F - 8000[ADRSSET] 8000 0000 - 8060/d[MEMORY DUMP] 8000 00 00 00 1B 66 1B 66 1B 66 1B 66 1B 66 1B 66 1B ....f.f.f.f.f.f. 8010 11 11 11 22 49 54 00 35 0A 00 04 00 0A 00 0D 84 ..."IT.5........ 8020 22 22 22 66 00 00 66 1B 66 1B 66 1B 66 1B 66 1B """f..f.f.f.f.f. 8030 33 33 33 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 333.IT.5........ 8040 55 55 55 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 UUU.IT.5........ 8050 55 55 55 00 49 54 00 35 0A 00 04 00 0A 00 0D 84 UUU.IT.5........ 8060 66 66 66 9A FA 00 00 98 FA 0A 00 0D 10 14 00 1B fff............. 8000 8060 - ^E 0000 00C3 - リモート接続を終了しました logfile closed at Wed Dec 10 11:57:24 2014 |