パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第445回]
●Wine(20)ZB3.exeまだ駄目でした
ZB3.exeに続いてZB3DOS.exeもクリアできて乾杯!したのでしたが。
以前この問題をご指摘いただいたND80Z3.5のユーザーS様に修正版のZB3VT9.exeをお使いいただいたところ「まだ駄目です」というメールをいただきました。
リモートプログラムのメモリダンプ/dと同じくリモートプログラムのステップ動作では最下行でスクロール表示ができませんというご指摘です。
リモートプログラムまでは確認していませんでした。
てっきり全て同じ表示ルーチンを使っているとばかり思っていたのですが。
やっぱり早合点だったようです。
ND80Z3.5をUSB接続してZB3.exeを実行すると「ND80Z3に接続しました」と表示されます。
そこでND80Z3.5で[I/O][8]を入力するとLED表示と同じ表示がコマンドプロンプト画面に表示されます。
実はそのとき「リモートモード」になっています。

そこで[z]を入力するとZB3BASICが起動するのですが、それ以外にいろいろなリモートコマンドを入力することができます。
コマンドプロンプト画面でパソコンのフルキーボードを操作することでND80Z3.5のモニタプログラムの機能をリモートで操作することができます。

[8][0][0][0][ADRSSET]と操作しました。
[ADRSSET]は[.]を入力します。
簡単なマシン語のテストプログラムを8000〜8005に入力作成しました。
8000 3E
8001 00
8002 3C
8003 C3
8004 02
8005 80
です。
[WR+]は[Enter]を入力します。
ここでメモリダンプ/dを使ってみます。
8000[ADRSSET]8056[/][d](memory dump)を入力しました。
Windowsではここでメモリダンプがスクロール表示で行なわれるのですが最下行で表示が固定したままでメモリダンプが進行しました。
このときのログです。
logfile nd80zlog\05062119.txt open ND80Z3に接続しました 0001 0000 - 8000A[WR+] 0002 0A08 - 8000[ADRSSET] 8000 001A - 3e[WR+] 8001 3E20 - 00[WR+] 8002 00CF - 3c[WR+] 8003 3C20 - c3[WR+] 8004 C343 - 02[WR+] 8005 0231 - 80[WR+] 8006 80F0 - 8000[ADRSSET] 8000 003E - 8056/d[MEMORY DUMP] 8000 3E 00 3C C3 02 80 F0 12 00 22 80 AC 12 8B 20 43 >.<テ.....".ャ.. C 8010 FC DF 41 00 45 50 32 00 0A 00 04 00 0A 00 11 84 .゚A.EP2......... 8020 F0 0C 00 9A FA 00 00 98 FA 5A 00 99 FA 02 00 0D .........Z...... 8030 14 14 00 13 81 F0 0C 00 2C D7 28 F0 0C 00 29 2C ........,ラ(...), 8040 D6 28 F0 0C 00 29 0D 16 1E 00 05 85 F0 0C 00 0D ヨ(...).......... 8050 08 49 52 21 27 22 00 61 80 C0 12 89 20 0E C6 07 .IR!'".a.タ.. .ニ. 8000[WR+] |
ログではこの先のキー操作も記録されているのですが画面には全く表示されなくなってしまいました。
ログについては冗長になるのでカットしました。
ステップ動作も試しましたがやっぱりスクロール表示は行なわれませんでした。

当初この問題に直面したときには原因がどこにあるのかよくわからなくて面食らいましたが今は大体はわかってきたつもりです。
これはまだ推測しているだけなのですが多分こういうことなのではないかと考えています。
文末を示すコードは0d(CR,¥r)と0a(LF,¥n)です。
昔はCRはCarriage Return(復帰)でタイプライタやプリンタの印字ヘッドを左端に戻すことを示し、LFはLine Feed(改行)で1行分の紙送りを意味しました。
Windowsでは復帰と改行を指示するコードとしてCRLF(0d0a、復改)を使いますが入力文字列の終わりとしては0dコードのみを使うことが一般的です。
キーボードの[Enter]のコードは0dです。
しかしこれはWindowsのルールであってほかのOS(Unix系、Linuxなど)ではまた別のルールになっているようです。
WineはLinux上でWindowsのアプリケーションを実行するために開発されたツールですから当然Windowsのルールに従っているはずなのですが今までのところどうも表示最下行での改行コードの扱いがWindowsのルールから外れているようです。
それ以外の位置では正しく改行されるのですが表示最下行ではスクロールされないという現象がおきています。
前回までの対応ではそれを回避するためにprintf(”¥n”);を追加することで正しくスクロールが行なわれるようになりました。
ということからすると今回もその対策で問題をクリアできるのではと考えています。
本日は時間がありません。
その結果については次回にて。
パソコンをつくろう![第445回]
2026.5.7upload
前へ
次へ
目次へ戻る
ホームページトップへ戻る