パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第438回]
●Wine(13)ZB3.exeでの検証
備忘録として書いています。
前回までのところでWineでコマンドプロンプトを実行してそこで起動したZB3DOSはスクロールできないだけではなくて(ZB3DOS.exeで起動した)ZB3BASICでもスクロールできないことが確認できました。
ここでソフトウェアとしてのZB3BASICとZB3DOSについて念のために整理して書いておきます。
ZB3BASICは昔の8ビットマイコンに搭載されていたBASICに近い機能のBASICインタプリタです。
ZB3.exeまたはZB3DOS.exeで起動します。
ZB3DOSはCP/M互換DOS(Disk Operating System)です。
ZB3DOSはZB3DOS.exeを実行したときに起動するZB3BASICの/cpmコマンドで起動します。
/cpmコマンドはZB3.exeを実行したときに起動するZB3BASICでは使えません。
当初はZB3DOS.exeで起動したZB3BASICはZB3.exeで起動したZB3BASICと同じだと思い込んでいたのですがどうやらそれが違うらしいということがわかってきました。
当初は「スクロール問題」はZB3BASICでは発生しなくてZB3DOSのみの問題だと思っていたのですがその問題はZB3DOS.exeの問題だということが確認できました。
その点を誤認していたために問題はZB3BASICとZB3DOS(cp/m)の表示機能の違いではないかという方向での追及に向かっていました。
表示に関係することとスクロールのときの問題であることから改行コード(LF、コード0AH)の問題かと疑いました。
一般にMSDOS系のプログラムでは改行にはCRLF(0D0A)を使います。
文末にはCR(0D)のみを使う場合もあって(それがLFを必要とする場合には)MSDOSはLF(0A)を補完するとの情報があります。
ひょっとするとCP/Mでは文末にLF(0A)がなくてCR(0D)のみなのではないかという疑いが出てきたのでその確認をしたりしました。
確認をしてみた結果(全てではないかもしれませんが)CP/Mでも文末にはCRLF(0D0A)が使われていることがわかりました。
すると問題はそこではなかったことになります。
当初はZB3BASICはスクロールするがZB3DOS(CP/M)はスクロールしないという思い込みのため両者の表示処理の違いを追及しました。
すると。
ZB3BASICは一行の文字列を行として扱っているがZB3DOS(CP/M)では1文字出力(CONOUT)の集合として扱っていることがわかりました。
そこかと思ったのですがそれもZB3DOS.exeのもとではZB3BASICもZB3DOS(CP/M)もともにスクロールできないということがわかったことで振り出しに戻ってしまいました。
見当違いの追及をしていたわけですが全くの見当違いでもなさそうということがその後にわかってきました(それについては後の回で書くことになると思います)。
以上の検討、考察によって「スクロール問題」はZB3DOS.exeの問題であることが確認できました。
それではZB3.exeには問題はないのか。
それがはっきりすればZB3.exeとZB3DOS.exeの違いを比較検討することで問題の解決に至ることができると考えられます。
するとZB3.exeでは問題はないのかどうかを確認する必要があります。
ZB3.exeについては[第431回]で書いています。
そこでは「/EXITが表示されない」と書いています。
そしてそれは「些細な問題」であると書いているのですが。
本当に「些細な問題」なのかどうか、他にも問題はないのか、そこを確認しておくべきでしょう。
ということで。
今回はZB3.exeについてしっかりと確認することにしました。
ZB3.exeを実行しました。

USB接続したND80Z3.5で[I/O][8]を入力すると上の画像の表示になります。
ここで[z]を入力するとZB3BASICが起動します。
HELPコマンド(省略形H.)を入力しました。

この前にも動作確認のテストをしたのでそのときに作成したBASICプログラムが復元されました。
.はLISTの省略形です。
SID()はSIN関数(度)でCOD()はCOS関数(度)です。
0度から90度まで2度きざみで表示するプログラムです。
プログラムを実行しました。

スクロール表示されました。
続いてDMコマンドを実行してみます。

DM 0000,0080[Enter]でメモリアドレス0000から0080の内容が表示されます。
表示は正しく行なわれてスクロールされていますが…。

dm 0000,0080の行が表示されていません(消失?しています)。
続いてLISTコマンドを実行してみます。

やっぱり。

リスト表示は正しくスクロールして表示されたのですがLISTコマンド行のみ表示されません。
もう一度LISTコマンドを実行してみます。

やっぱり同じです。

LISTコマンド行のみ表示されません。
/exitコマンドでZB3BASICを終了します。

最後の/exit入力行もスクロール表示では表示されませんでした。
その画像はキャプチャしなかったのですが同じ表示になる画像は[第431回]にあります。
下に再掲します。

下は以上の操作のログです。
logfile nd80zlog\04261416.txt open
ND80ZVに接続しました
0001 0000 - z
1000 00C3 -
*** nd80z3 basic ****
>h.
TEXT 8004-8051
ヘンスウ DFFB-DFFF
>.
10 FOR A=0 TO 90 STEP 2
20 PRINT A,SID(A),COD(A)
30 NEXT A
>r.
0 0 1
2 0.348995E-1 0.999391
4 0.697564E-1 0.997564
6 0.104528 0.994522
8 0.139173 0.990268
10 0.173648 0.984808
12 0.207912 0.978147
14 0.241922 0.970296
16 0.275637 0.961262
18 0.309017 0.951056
20 0.34202 0.939693
22 0.374607 0.927184
24 0.406737 0.913545
26 0.438371 0.898794
28 0.469471 0.882948
30 0.5 0.866025
32 0.529919 0.848048
34 0.559193 0.829038
36 0.587785 0.809017
38 0.615661 0.788011
40 0.642787 0.766044
42 0.66913 0.743145
44 0.694658 0.71934
46 0.71934 0.694658
48 0.743145 0.669131
50 0.766044 0.642788
52 0.788011 0.615662
54 0.809017 0.587785
56 0.829037 0.559193
58 0.848048 0.529919
60 0.866025 0.5
62 0.882947 0.469472
64 0.898794 0.438371
66 0.913545 0.406737
68 0.927184 0.374607
70 0.939692 0.34202
72 0.951056 0.309017
74 0.961262 0.275637
76 0.970296 0.241922
78 0.978147 0.207912
80 0.984808 0.173648
82 0.990268 0.139173
84 0.994522 0.104529
86 0.997564 0.697567E-1
88 0.999391 0.348997E-1
90 1 0
>dm 0000,0080
0000 C3 00 08 00 00 00 00 00-C3 BA FF 00 00 00 00 00 テ.......テコ......
0010 C3 BD FF 00 00 00 00 00-C3 C0 FF 00 00 00 00 00 テス......テタ......
0020 C3 C3 FF 00 00 00 00 00-C3 C6 FF 00 00 00 00 00 テテ......テニ......
0030 C3 C9 FF 00 00 00 00 00-C3 CC FF 3E FF D3 98 21 テノ......テフ.>.モ.!
0040 EC 83 06 0C AF 77 23 05-C2 45 00 21 C7 83 22 E2 ....ッw#.ツE.!ヌ.".
0050 83 3E FF D3 98 31 D1 83-CD C0 01 CD 16 02 47 E6 .>.モ.1ム.ヘタ.ヘ..G.
0060 10 CA 84 00 78 E6 0F 06-00 87 4F 21 74 00 09 7E .ハ..x.....O!t..~
0070 23 66 6F E9 CC 00 F9 01-94 00 B8 00 9D 00 C2 00 #fo.フ.....ク...ツ.
0080 D5 00 07 01 CD B5 01 3A-EC 83 B0 32 EC 83 CD A1 ユ...ヘオ.:..ー2..ヘ。
>list
10 FOR A=0 TO 90 STEP 2
20 PRINT A,SID(A),COD(A)
30 NEXT A
>list
10 FOR A=0 TO 90 STEP 2
20 PRINT A,SID(A),COD(A)
30 NEXT A
>/exit
0000 00C3 -
リモート接続を終了しました
logfile closed at Sun Apr 26 14:20:57 2026
|
今回のテストでZB3.exeにも問題があることがわかりました。
普通の表示は正しくスクロールが行なわれます。
しかし表示画面の最下行で入力したコマンド入力行のみスクロールすると表示されません。
ここまで書いてきてまた新たな疑問が出てきました。
スクロールすると消えてしまうのはコマンド入力行だけなのだろうか?
コマンド以外の入力、たとえばプログラム行の入力はどうだろうか?
本日は時間がありません。
そのことについては次回に確認してみることにします。
パソコンをつくろう![第438回]
2026.4.28upload
前へ
次へ
目次へ戻る
ホームページトップへ戻る