/var/log/hdk.log

2022 年 10 月上旬

prev, this, next


01 (土)

%1 どようび

晴れ。 のんびり。

坂本冬美オフィシャルサイト / 冬美便り

27 日のところ、「川口信用金庫様の貸切り」ってあった! 火曜日の午前中というのがそれだったんだ。 30 日、休演日の更新のところにはもちろん農業協同組合の名前も...w そしてそれが 6 公演って書いてあるなぁ。 なるほど。

舞台の公演っていうのはこうして毎日のように同じ公演を繰り返していくことなんだな。 まぁ、同じといってもライブだから、毎日見ていればちょっとずつ違うところもあるのかも知れないけど。 歌まであって、体調管理などとてつもなく大変だろうなぁ。 39 公演ある、明日の午前が終わったらやっと 1/3 が完了だ、みたいなことを言っていたし。

%2 例のプログラム

MS-DOS のビルドに使っている自作プリプロセッサの改良。 MASM がメモリー不足で落ちてしまう問題への対処だが、やっていることは以下だ:

  1. 1 回目のソースコード読み込みで、STRUCEQU (=) の定義シンボル名をかき集める
  2. 2 回目の読み込みで、1 回目で見つけたシンボル名が出てきたら必要マークを付ける
  3. 3 回目は、必要マークが付いていないシンボルの定義行をコメントアウトしながら、入力をすべて (INCLUDE の先のファイルを含め) 標準出力にコピーする

で。 STRUC は構造体の一部でも使われていたら全部が必要になる。 EQU は行単位で良い。 いずれも右辺が別の定義を参照している場合がある。 これを管理するのに、ひとつの配列に、開始フラグ、シンボル名定義、関係する単語の記録 (0 個以上複数)、終了フラグの順で繰り返し並べて、それぞれ長さを持っていて、開始・終了を構造体の定義の開始と終了に結びつけていた。 開始フラグとシンボル名定義は一応まとめていたけど、おおざっぱにそういう構造であった。 んでどうなったかというと、上の手順にあるように 2 回目も 3 回目もシンボル名による探索があるため、この配列を先頭からずーっとたどってシンボル名定義をピックアップし名前を比較する、というのを繰り返しており、特にこのプログラムは普通の MASM が認識するようなキーワード、命令等を一切持っていないために、命令もシンボル名かも知れないとして常に探索していたから、それはもうとんでもない回数の比較が行われていたものと思われる。 それでも Linux KVM を使ってハードウェア仮想化のもと CPU の機能をゴリゴリ使って動かすとほんの 2, 3 秒で終わるため、まぁいいか、ってところだったが、ちょっとでもエミュレーションが挟まるととてつもなく遅くなっていた。

対策としてはデータ構造を見直すしかないな、ってことで見直した。 この配列構造はもともと、定義行をとっておいて使うところがあったら出すというプログラムをこしらえていた時の名残である。 定義行をまるまるとっておけるようにしていたが、最終的に 3 pass 方式にしたためその機能そのものが消滅した形になっていた。 で、やっぱりハッシュテーブルかなと。 DOS プログラムなのでハッシュ値は 8 ビットと小さめにしたが、同じハッシュ値を持つ名前の単方向リストにつなぐようにして、すべての名前はそのリスト要素へのポインターとして扱う。 その要素からシンボル定義の情報へのポインターを持ち、その情報の中に必要フラグと関係する単語の記録の単方向リストにつなぐ。 あと、構造体対応について少し悩んだが、circular linked list っていうのかな、末尾と先頭が結びついている単方向リストを使うことにした。 というのは、構造体の要素が出てきたときに構造体全体に必要フラグを立てたいわけで、どの要素であっても同じ方法で全体をたどれるのは circular linked list かなと。 関係する単語の記録は名前に対応するハッシュへのポインターをつなぐだけのリストだ。

そんな感じでデータ構造が決まったら後は書くだけだ。 リストといっても malloc を使うわけではなく、同じような配列を先頭から割り当てていくだけの malloc もどきみたいなことをするだけ。 解放はしないし。 使う側から書いて、ささっと書けて、あとは作る側、ってなって少し使う側の見直しが入ったが、できた。 最初まったく動かないバグをつぶしたら中途半端に動くようになって、なんだなんだと思ったらハッシュ値計算の際に大文字小文字を区別するミスをしていた。 それをなおしたら動いて、なんかめっちゃくちゃ速い。 なんだこれ。 いろいろ細かいチューニングをしてもずっと 10 秒前後でうろうろしていたのが、一気に 0.3 秒になった。 そんなに変わるか? まぁ、リストの探索が 1/256 になったなら指数関数的に速くなって... ってのはあるだろうけど、ハッシュ関数もいい加減な実装だからそんな理想通りにはいかないはず。

しかも、関係する単語の記録もハッシュに名前だけは入れるようにしたのがきいて、必要フラグを立てる処理がめっちゃシンプルになった。 今までその必要フラグを立てる処理でもまた全探索をしていたんだ... それも、絶対にシンボル名定義に出てこない DB DW みたいなのも探索していたんだからとてもアレだ。 それが、ハッシュにポインターで直接つながっているからもうその処理での探索そのものが不要になった。 DB DW みたいなのも、ポインターをたどればシンボル定義無しって一瞬でわかるからとても効率がいい。

GitHub - hdk1983/HIDOS

一応コードは GitHub に反映した。 速くなったのは本当にすごくて、最近書いていたうさんくさい機械語解釈実行プログラム (doscomm という名前で入れてある) を使っているのに、なぜか Linux KVM の MS-DOS 環境より速く全ビルドが完了するのである。 しかも make -j の並列実行もできる。 つよい。 MS-DOS 環境より速いのは、メモリー制約が厳しい MS-DOS 側のファイルシステムの効率が悪いとか、Linux 側のチューニングがすごくてシステムコールが鬼速いとか、勝手な想像をしているけど、それにしたって機械語直接実行より速いもんかね?

メモリー消費量もポインターで増えるかと思ったが文字列を何度も入れないのがきいて減っている。 よほど小さなプログラムだと多い場合もあるが、今まで 10k バイトを超えるような消費があったものでは確実に小さくなるようだ。

DOSBox でも結構速くなっていい感じ。 libx86emu の環境についてもまぁ前よりは速いかも知れないが、やっぱりこれはあまり実用的なスピードでは動いてくれない。

Windows についてはちょっと試してみたら Windows Subsystem for Linux (WSL) では 32 ビットバイナリが動かないらしい。 MinGW でビルドする Win32 バイナリについてはいいんだが、バイナリファイル絡みでいろいろと引っ掛かったので手直ししておいた。 オブジェクトファイルがテキストモードで開かれて化けるはわかるんだが、標準出力のリダイレクトがテキストモードだと改行コードの CR が消されて LF だけになるのは納得がいかないw WSL のシェルからリダイレクトしたせいなのかも知れない。 本当は Windows でよくある MinGW とシェルなんかのセット、なんだっけ、あれを入れたら WSL なしで動かせそうな気がするけど、面倒でそこまで試していない。 Linux ほど高速に動いてはくれなかったし...

2022/10/01 のコメントを読む・書く


02 (日)

%1 レンタルカート

スポーツカート耐久レース。 御殿場。 2 時間耐久レース 2 回。 最初がテクニカルコースで次がハイスピードコース。 4 人チームから参加。 完全にドライコンディション。

2 時間 2 回は 5 月にもあったパターン。 今回も同じようにテクニカルコースで自分のタイムが悪かった。 18 位、だったかな? いや、上位勢の失格があって 16 位だったか。 前回の表彰台でハンデがついており、ドライブスルーがついていてピット回数も多くてまぁ、難しかったのは確か。 2 時間レースでピット回数が多いと、終盤近くにピットが大混雑な傾向... ちょっと見直して 2 回目はピット消化を少し早めにすませてそこはうまくいったんだけど、結果は 19 位だったか。 これでハンデが消えて最終戦を楽しくたたかえるという狙い。

何度か危うく接触しそうな時もあったが何とかよけられた。 慣れていなさそうな人が目の前でスピン、まぁそれは仕方ないかなと思うけど、1 台のスピンをきっかけにさらに 2 台ぐらいがくるくるっといった時はええーって思ったw 数メートル離れていたので何とかなった。 少なくともそのうちの 1 台はその前に自分を追い抜いていった速い車で、その後にもう一度追い抜かれたw

%2 行き帰り

バイクの割引のやつを使ってバイクで高速で! 行きはよかった。 朝の山中湖はちょっと寒かったがある程度防寒着も着ていったので何とかなった。

帰りは... 渋滞情報が出ていたのでとりあえず谷村 PA までいって夕食をとり、のんびりしながら渋滞情報をチェック。 やたらこんでいるらしく Google Maps は一般道をいけと。 まぁバイクの割引のやつもあるし、混雑も解消方向だろ? と思ってそのまま高速をいってみた。 ら、談合坂近辺大渋滞。 あまりにとろとろでつらい。 上野原を過ぎると少しスムーズになり、表示上の 11km 45 分よりは速そうな気配。 藤野・相模湖を過ぎるとさらにスムーズになり、小仏トンネルのいつもの渋滞で、トンネルを抜けたらまぁまぁ回復、と。 谷村 PA から自宅まで 2 時間以上かかったか。 疲れた。

2022/10/02 のコメントを読む・書く


03 (月)

%1 げつようび

晴れ。 筋肉痛!

きのうの渋滞がきつかったなw Google Maps が言う都留から山道ルートは車で一度通っただけであり、決断できなかった。 勾配のきついところで転倒でもしたら、面倒なことになるし。 後から考えれば大月で降りて国道 20 号を通っても中央道よりは早かったかも知れない。 そっちなら前にバイクで通ったことがあるし、険しい山道ではないし、そうしてもよかったなと思えるぐらいには渋滞がひどかった。 談合坂のスマート IC から降りる手もなくはなかったが、SA の入口は長い待ち行列であり、もし使うならバイクだからとこそこそ隙間を通らせてもらうしかなかったな。 (バイク用の駐車スペースが用意されている場所では、四輪との駐車場の競合がないのでけんかにはならないだろう。)

%2 きのうの

きのうの F1 シンガポール GP。 予選も決勝も濡れた路面で始まりだんだん乾いていくパターン。 もともと荒れ気味な市街地コースなのに、濡れているとさらに荒れそうだなと思ったが、予選については案外スムーズな進行だった。 フェルスタッペンが最後アタックをやめたのは燃料残量の関係かなと思ったら正解だった。

決勝はというと、予選とはうってかわって荒れまくり。 周がラティフィに巻き込まれてリタイア、はまぁラティフィだから... (こんなことばっかやっているとラティフィ本当に来年はないぞ) アルボンが壁にささり、復帰はできたが大きなウィングを現場に残し... フェルスタッペンはドライタイヤにかえて間もない頃にめちゃくちゃオーバーテイクしそうな感じになっていたが、この路面だとやばいぞと思っていたら派手にタイヤスモークをあげてコースアウトし、タイヤを壊してしまいピットイン。 それから、タイヤをかえていなかったハミルトンが壁にささり、復帰はできたがウィングを破損し順位を落とした。 そして角田が壁にささりリタイア。 という一連の間にアルピーヌの 2 台は PU トラブルっぽい感じでリタイア。

W シリーズもあったとのことで今日見てみたが、こちらは野田が初っぱなリタイア。 審議の表示が出たのでインシデントだったみたいだな。 それから、圧倒的な差をつけてポイントリーダーのチャドウィックがここでチャンピオンを確定できるかどうかというところ、なんとオーバーテイクに失敗して壁にささり、初の (!?) リタイア。

やっぱり、市街地コースの中でもシンガポールは特に荒れるなぁ。 ネルソンピケ Jr のクラッシュゲートの際も、本人の暴露があるまで特に疑われなかったのはそういうコースだからだよな。

とまぁそれはともかくとして、DAZN が未だに視聴できているのが謎過ぎる。 povo のトッピング買ったの 8 月末だぞ...

2022/10/03 のコメントを読む・書く


04 (火)

%1 かようび

晴れ。 ちょっと暑い日。 昼からエアコン。

%2 HIDOS

読み方は Hi, DOS なのか、ヒドスなのか、... 一応前者ということにしておこう。

さて独自仮想マシンで動かしているやつに media check の実装を入れた。 実装をというかデバイス仕様も変わってしまうが他にこんな仮想マシン仕様を使っている人もいないだろうから変え放題だw んで fstat で更新日時を見て変わっていたら media changed の扱いにする。 これが強力で、普段はバッファーがきいてシステムコールがおさえられていても、外から mtools でファイルを書き込めば media changed でちゃんとそのファイルが見える。 便利!

という実験のためバッファーを増やして試していたが、バッファーを増やしてもビルドが顕著に速くなるわけではないんだな。 あの命令解釈方式が速いのは、なんなんだろうな...

で。 SORT.EXE が動かなかった謎を解いた。 EXE ファイルのヘッダーに maximum allocation というフィールドがあり、ここに入ったメモリー容量 (パラグラフ) 分は DOS がアロケートを試みた上で起動してくれるらしい。 最大とある通り、それより少なくてもとにかく限界まで確保と。 それでそこのデフォルトがなんと 65535。 COM プログラムと同じ、最大容量を割り当てて起動するんだな。

んでこれを 0 にしたらいいのかというと、0 にすると LINK の /HIGH オプション相当、メモリーの最上位に読み込まれるという意味。 それはそれで SORT.EXE は動かなかった。 最上位って、PCjr みたいに VRAM 共用メモリーがあるとこわいやつだなw

任意の数字にするにはリンカーにそういうオプションがあるはずだと思って探したら、DOS 3.x の頃のリンカーにはあったみたいなんだが、この MS-DOS 2.0 のソースコード付属の LINK.EXE V2.00 にはないみたいだ。 どうしようもないなと思って、そのフィールドに好きな値を設定する DOS 用のツールをアセンブリ言語で作った。 チェックサムも修正するまじめな仕様だ。 あっ、MZ をチェックしなかったな? まぁいいか。

これで 1 と設定したら SORT.EXE は無事に動くようになり、FreeDOS での変なエラーのトラブルも解消した。 いぇーい。

あとはちょっと PC 用 IO.SYS に細かな問題がありそうなので何とかしたい。 特にディスクまわり、PCjr のディスクなんか FAT ID FDH でヘッド数 2 って書いてある (実際には片面) ウザイ仕様だw JX で片面フォーマットだと F8H でヘッド数 1 でこれは MSX なんかでも使われた仕様のようだ。 そのへんどう扱うのが正解なのかさっぱりわからんが、なおしたいね。

あとリロケータブル IO.SYS というアホなことを思いついている。 JX に読ませるにはだいぶ上のアドレスにしないといけないが、他の PC 互換機ではかなり下のアドレスでいけるのが一般的。 アドレスが違うだけで BIOS レベルでは JX も変わらない互換性があり、リロケータブルにすれば共通化できそう。 そういえば J-3100 なんかの日本語仕様はメモリーの最低アドレスはどうなっていたんだろうな? AX ってのもあったんだっけ。

2022/10/04 のコメントを読む・書く


05 (水)

%1 すいようび

涼しい日。 雨。

そういえば 4 回目ワクチン接種の予約が始まっていたみたいだ。 今回の接種券は早々に (高齢者と同じタイミングで) 届いており、何か月も経っているから忘れかけていた。 近隣のクリニックにでもしようかと思ったが、自治体のサイトを見ると予約開始がもう少し先らしい。 都の大規模接種会場があるみたいなのでそっちで立川の会場で予約してみた。 大手町よりは近いな。

%2 PCjr

PCjr は片面ドライブでなく、両面だけど 40 トラック/面、な仕様だったみたい。 それがよくわからなくて、JX は確かに INT 13H が拡張されていて、ドライブ指定にビット 6 をセットすると 80 トラック/面な仕様だよとある。 が、これがどうも、40 トラックだとシークの時にシリンダー番号を倍にする、というだけのものらしい。 それならそれで、じゃあ英文モードはシリンダー番号が倍になっているのねー、って思うところだけど、自分はエミュレーターを作ったので、シリンダー番号が倍なら image file のサイズが妙なことになっているはずなのだ... あっ、いや、そうか! わかったぞ!

記憶を掘り起こすと、DOS を起動する時、たいてい結構なシークが発生する。 それは、後から CONFIG.SYS や AUTOEXEC.BAT を作成するためだろうと思う。 一通りファイルを書き込んだ後で作成するから、どうしてもディスクの後ろのほうになってしまうんだ。 特に編集時に EDLIN を使えばバックアップファイルが作成されるから、せっかく前のほうにあっても、ちょっと編集しただけで後ろに移ってしまうだろう。 で、その音からして英文モードのほうが距離が近いってことはなさそうだ。 とするとやはり 40 トラック/面な仕様、つまりシリンダー番号を倍にしてシークしていたはずだ。

んで自分のエミュレーターがどうして動いているのかと言うと、シークを完全に無視しているから。 フロッピーディスクはフォーマットの際に各セクターにシリンダー、ヘッダー、セクター番号の情報が書き込まれているはずであり、そのために読み取りコマンドにもその値を指定して、ドライブはそれを見つけてそこから読み込むみたいなことをしているはず。 んで、そっちは倍にされない、というか倍にしたらシリンダー番号が食い違ってしまう。 つまり 40 トラックの例えばシリンダー 5 を読み込むという時は、シークはシリンダー 10 にして、読み取りコマンドはシリンダー 5 で出す。 80 トラックフォーマットのディスクに対してそういうアクセスをすると、いくら待ってもシリンダー 10 のセクターしか出てこないから、セクターが見つからないエラーになるんじゃないかな。 あえてシリンダー 10 をシリンダー 5 でフォーマットすれば読めるだろうけど。 (ほとんどコマンドが生で見えていた PC-98 の BIOS はともかく、IBM の BIOS でもフォーマットの際に渡すデータはチェックされない仕様なので、変なフォーマットもできたはず。) 自分のエミュレーターはシークを無視して、読み書きコマンドのほうのシリンダー番号をあてにしてシークもしている、まるで超高速回転のディスクの 1 シリンダーにすべてのセクターが埋まっているかのような挙動をするため、シークコマンドがどうなろうと正常に動いてしまうんだ...

それと、IBM PC 系では一般に 512 バイト/セクターとされていて、それ以外は扱えないかのように思われているが、実際に PCjr 用のゲームで 1024 バイト/セクターを使っているものが存在した。 どうやって扱うかと言えば、ディスク BIOS の仕様で INT 1EH の割り込みベクターにパラメーターを並べておくというのがあり、そのパラメーターにセクターサイズがあるので、おそらくそれを使っていたんだろうと思う。 JX/PCjr は DMA がないのでアレだが、DMA がある機種で DMA を使う場合は確か事前に DMA に転送サイズを設定する必要があり、その計算は 512 固定ではなく、そのセクターサイズベースで行われていたんだろう。 PC DOS を起動したらシーク音が高くなっていたのも、理由は知らないが IBMBIO.COM がそのパラメーターにあるシーク速度を変えていたんだろうな。 後の 3 モードドライブがその方法でセクターサイズを指定することで PC-98 の 360rpm のフロッピーディスクを扱えたのかは知らないが、実は 2DD も IBM は 300rpm で PC-98 は 360rpm だったらしいのに普通にアクセスできていたので、2HD でもできていたのかも知れない?

2022/10/05 のコメントを読む・書く


06 (木)

%1 もくようび

雨。 寒い日。 マジで寒い日。 気象庁アメダスの府中のデータで、最高気温が 01:2114.2 度なの、さすがにスポーツの日を前にしてそれはちょっと...

%2 JX

自作エミュレーターのおかげで今更ながらいろいろわかった。 ディスケットの 40 トラック仕様だが、どうやら JX の英文モードでも、ドライブ指定のビット 6 が 80 トラック用に使えるみたいなんだけど、PCjr は 40 トラック仕様なので、ビット 6 はクリアされた状態で起動している。 んで、PC DOS 3.20 であってもビット 6 をセットすることはないようなので、英文モードで 720KiB フォーマットは使えない。 おそらく、ルートディレクトリエントリの一部ぐらいは見えるが、ファイルにアクセスすればセクターが見つからないエラーになっていたのではないか。 (実機の挙動はそこまで記憶にない。)

コピーツールっていうのがあって、プログラムは PC 用と PCjr 用と JX 用にわかれていたみたいだが、よく見ると JX 用はたぶん公式でなく、PCjr 用の改造版だ。 何が違うかって、メッセージを書き換えてある他は、セクター数が違うだけみたいだ。 なるほどね! PCjr では 40 トラック仕様のドライブで、シーク時にシリンダー番号を倍にすることもなかったんだな。 それ用のコピーツールの 40 (実際は 41) って書いてあるところを 80 に書き換えたら JX で動くって狙いだ。 コピーツールだしおそらくディスク BIOS は使っていないだろうから、単に増やしたら動くってわけだ。 はー! やったことないけど、PCjr 版を使ったらディスクの半分しかコピーされないということになっていたに違いない。 PC 版は DMA を使うのだろうか、QEMU では残念ながらエラーが出てしまった。

JX は一部輸出モデルがあったそうで、PCjr 互換機 (改良版) みたいな感じで売られていたようだが、それは 40 トラック仕様だったみたい。 だけどドライブをわざわざハードウェア的に 40 トラック仕様に置き換えていたとは思えないから、ディスク BIOS に日本語版 JX 仕様を持ち込んであったのではないだろうか? つまり、80 トラック使えないのかよだめだなー、って感じで売られていたのを、実はデバイスドライバーを書けば 80 トラック使える、って状態になっていたんだろうと思う。 今みたいに自作 IO.SYS ってわけにはいかないけど、自分でいちからデバイスドライバーを書くのは当時も合法であるw

自分のエミュレーターのフロッピーディスクコントローラーのエミュレーションはかなりいい加減なんだが、なぜかセクターが見つかりませんエラーがちゃんと BIOS に認識されなくて、なんでかなと思ったら、セクターが見つかりません→即座にタイムアウト割り込み、としていたのがまずかったようだ。 タイムアウト割り込みは longjmp 的な別ルートをたどるらしく、エラーコードが使われずにタイムアウトとして返されていたみたいだ。 タイムアウトはタイムアウトなんだからタイムアウトの時だけ使うべきか? ただ ready でないステータスにしてひたすらタイムアウトを待つ、みたいな実装がないからおかしいのか。 いやまぁ、何から何までおかしいんだけどw

2022/10/06 のコメントを読む・書く


07 (金)

%1 きんようび

雨。 マジで寒い日。

テレビでやってた映画『アダムス・ファミリー 2』(原題: Addams Family Values)。 1993 年のアメリカ映画。 前作から続いて不思議な家族の物語、そこにベビーシッターがやってくる。 アマンダという子供がフルハウスのステファニーっぽく見えるけど、役者はもう少し年上の別人である。 あとホームアローンの母親役の人が出ているように見えたけど... キャストにないな。 これも別人か。 あと夏休みの子供達のキャンプの描写、これ作者か脚本か監督かわからないけど絶対いい印象もっていなさそうw

%2 エミュレーター

自作 JX エミュレーターを改造して seek コマンドを解釈してズレをチェックする実装を追加して、セクターが見つからないエラーもちゃんと処理して、タイムアウト (watchdog) もそれっぽくして、書き込み禁止の動作確認をしたらうまくいかなくなっていて、ウーン。 書き込み禁止はタイムアウトなのか。

まぁでもこういじっていると楽しくて、シーク音を追加してみたくなってくる。 JX のドライブのシーク音は、後ろのほうにシークすると低くなり、シリンダー 0 に向かってシークすると高くなる傾向があったと記憶している。 つまりヘッドが動く軸のヘッドからディスクの外側に向かう側が振動していた? まぁ、よくわからないw 回転スピードもあわせて待ち時間もシミュレーションできるはず...

INT 1EH のパラメーター情報を見ると、step rate が 2ms, 4ms, 6ms, などとなっているな。 これが 1 シリンダー分のシークに要する時間だろうか。 んでギャップのところは 2AH とフォーマット用が 50H ってなっているがどういう意味なんだ...

そうそう、PCjr の某ゲームは 1024 バイト/セクターで 5 セクター/トラックなフォーマットを一部トラックに使用している。 つまり通常フォーマットより容量が多い。 2DD は 512 バイト/セクターで 10 セクター/トラックは確かできなかったはずで、1024 バイト/セクターにしたらギャップが減って足りるんかな。 そういえば、2DD のディスケットは未フォーマット状態で 1MB って書いてあったよな。 たぶん 1MiB って意味なんだろうけど、あれが実際に書き込める容量? 80 セクターだとして 1 トラックあたり 6553.6 バイト? あるいは、1MB だとしたら 6250 バイト?

PC-98 の BIOS は seek と read を別々で発行できたんだったな。 なので 40 トラック/面のフォーマットにも対応できるんだ。 あと read ID ってコマンドもあったんだっけ。 コピーツールはこれを使っていたのかな。 IBM の BIOS だとそういうコマンドを発行する機能がないから直接コントローラーにアクセスしていたんだろうけど。

2022/10/07 のコメントを読む・書く


08 (土)

%1 どようび

晴れ。 朝はまだ寒かったが昼は少しは暖かくなった。

トイレにおいてある時計・温度計の電池を交換した。 すると先々週の土曜日の日付で 15 時前ぐらいから再開された。 まさか、電池が切れたのがこの時か? なんでわざわざ記憶しているんだろうw そのまま放置しておいたら、6 時間後ぐらいに見た時には電波を受信して同期されていた。

SARS-CoV-2 オミクロン株対応 2 価ワクチン (BA.1) のモデルナを接種してもらった。 東京都が設置している立川の大規模接種会場で。 おととい予約、今日接種。 公共交通機関で来てくださいとなっていて、調べると、最寄り駅が多摩モノレールの立川南駅。 そして、そこから 1 駅の柴崎体育館駅の高架下に無料の駐輪場があり、125cc 以下の二輪車も OK であることが判明。 そんなわけでその駅までスクーターで向かい、そこから 1 駅モノレール... には乗らず、徒歩で向かった。 大手町の自衛隊の会場とは少し勝手が違うが、小さめの規模でプレハブが建てられていた。 こぢんまりとしているため歩く距離も短いし、駐輪場は無料だし (?)、いい感じだ。 15 分間の待機終了時刻が 11:11。

後は帰って昼飯を食べてゴロゴロ昼寝をしていたら接種部位が痛くなっていた。 ふむふむ。 それで F1 日本 GP の予選の時間だなと思いながらもう 10 分ほど寝てしまい、5 分ぐらい過ぎたところから予選を DAZN で観戦。 今日は鈴鹿も晴れていたのだが、明日は雨予報が出ているみたいだ。

熱は出ているんだかどうだかよくわからない。 頭痛もあるようなないような。 腕の痛みははっきりしている。 まぁ、今までのワクチン接種からして、ここから 1 日ぐらいはいろんな症状が出ても不思議はない。

povo2.0 は通信障害の返金はなくてあれなんだけど、なぜか 1 か月以上 DAZN 視聴できているからまぁいいやw

%2 テレビ番組

今季はいろいろ見たい番組が多いことがわかってきた。 名探偵コナンは今季だけでなくなんとなくいつも見ているが、他に:

かな、とりあえず。 全部見逃し配信で見るんだけど、たくさんあると見損ねることもありそうだな。 特に異世界おじさんは途中まで進んでいたのが最初からやり直しだから、まぁいいやと思っているうちに見ていない話まで突入しそう。

2022/10/08 のコメントを読む・書く


09 (日)

%1 にちようび

午後? 夕方? ぐらいから雨。

今回の SARS-CoV-2 ワクチン 4 回目の副反応はかなり控えめだ。 解熱剤も飲んでいないのに、体温を測る気にもならないぐらい熱っぽさはなかったし (微熱ぐらいはあったかも)、少しだるいかな、とか、微妙に頭痛っぽいかな、ぐらいの感覚も、今日の 22 時ぐらいにはすっきりしている感覚に変わっていた。 接種部位はまだちょっと痛いけどね。 モデルナを続けて 4 回だったからなのか、2 価ワクチンのおかげなのかはわからないけど、きっと従来株の分はこれまでの 3 回でよく学習できていて、新たな BA.1 の分はそこまで強烈な症状にならなかったんじゃないか、ということにしておこう。 ファイザーのほうはわからないが、モデルナは確か 3 回目から量も少ないはずだし、副反応の観点ではいろいろとありがたいものになっているのかも知れない。 知らんけど。

F1 日本 GP。 DAZN の実況解説陣も今回は現地入りのよう。 懸念されていた通り雨になり、スタートはしたが数周で赤旗中断になり、そこから長かった。 2 時間ぐらい? の中断の後に再開し、深溝の雨用タイヤから、わずか数周で浅溝への履き替え... これはあと 10 分ぐらいは早く再開できていたのでは? って言いたくもなるね。 混乱の中フェルスタッペンの圧勝でチャンピオンも決まった。 周回数足りないからポイントが半分で足りないんじゃないかという話を実況でしていたけど、実は赤旗中断のまま終了した時の話だったらしくて、ちゃんと完走したので普通にポイントがついたらしい。 去年のスパで赤旗が長く続いてほんの数周だったのにポイント半分ついたっていうのが問題になり、ルール改訂がされたんだけど、その時にそうなってしまったらしい。 実況のサッシャ、よく放送時間内に気づいたな。 ずーっと、違うんじゃないか、と言っていたんだけど、言いながらレギュレーションをいろいろ見直していたようで、急に、からくりがわかったかも知れない、と言い出して、レギュレーションの該当部分の英文を読み上げ、実際その通りだった。 中断の間にベッテルか誰かが話していたドイツ語も翻訳するし (同じドイツ人だし)、英語の同時通訳もなかなか上手だし、本当にパワフルな実況である。

%2 MS-DOS

ふと思いついた。 MS-DOS on MS-DOS が実現できるのではないか? IO.SYS 部分を EXE ファイルとして再配置して読み込ませ、プロセスに割り当てられたメモリーをそのまま上の MS-DOS の全体のメモリーとして使い、様々なデバイスは下にいる MS-DOS を呼び出す、っていう。

思い立ったが吉日、さっそく実装を始めた。 MSDOS.SYS は面倒だから直接ファイルをオープンして読み込む形に。 ディスクは下のドライブをそのまま使うかイメージファイルを使うか、引数で選べるように。 イメージファイルの機能があれば、新しいバージョンの DOS や Windows (32 ビット) 上で、FAT12 のドライブなんてねーよ! って環境でも使えて便利 (?) だろう。

例によってデバッグに苦労したが何とかプロンプトは拝めるようになった。 まだ適当に作ったのでいろいろ不足しており、割り込み 0 (0 除算エラー) のベクターの待避をしていないとか、割り込み 30H の割り込みベクターに位置にある CP/M 互換のためのジャンプ命令 (!) の待避をしていないとかね。 あと CLOCK は下の MS-DOS の CLOCK を開いてそのまま返すように作ったつもりが、なんか読めていない。 ウーン???

っていうか普通に CLOCK を開いて読むプログラムを動かしても挙動がおかしいぞ? まだまだ調べることがありそうだ...

2022/10/09 のコメントを読む・書く


prev, this, next

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2022 年 10 月上旬)

Hideki EIRAKU