~ ChatGPT で英会話を学ぶ ~
「デスクトップ版 ChatGPT」と「Google 翻訳」を使って、誰でも英会話を学べるのでやってみましょう。
私も今までこんなにいっぱい英語をしゃべったことはなく、まったく初めての体験となりました。
ChatGPTってすごいですね。
英会話をやってみるためには以下の手順を行ってください。
※ ChatGPT のアカウント(サインアップ)は必要なので、事前に行う必要があります。
「Download for macOS」か「Download for Windows」のボタンを押します。
ここでは Windows の場合で手順を進めます。
アプリのダウンロードとインストールが開始されます。
After you say something in English, could you please translate it into Japanese?
I want to learn English conversation, so please do that.
(英語で話した後、続けて日本語の訳を言っていただけますか? 英会話を学びたいのでお願いします)あなたはどこから来ましたか? | Where are you from? |
もっとゆっくり話してください。 | Please speak more slowly. |
何か話題を考えてくださいよ。 | Please think of a topic. |
それより、私の話を聞いてほしいのですが? | Instead, I want you to listen to what I have to say. |
できれば、Google 翻訳を介さずに日本語をしゃべって英語にしてくれて、それを読み上げることができれば便利でしょう。
また ChatGPT の英語も、音声だけではなく、文字も表示してくれたらより勉強になると思います。
その辺はまた将来実現されると思います。
※ ChatGPT の回答は英語→日本語という順番ではなく、日本語→英語の順で話してもらったほうが、意味を知りながら英語を聞くことができ、より良いかなと思います。
上記の手順を「日本語→英語の順」に直して、ショートカット、メソッドとしてすぐに使えるように下記にまとめました。いつでも英会話してみましょう。
このページ、記事を書くとどんどん たまっていくんです。
うまく分割する方法を考えないといけないんだけど、いい方法が見つからないので保留中です。
今年の5月から書くままに書きためている…
HTML の任意の部分にびっくり吹き出しを入れられるようにしました。
店長おすすめ!
いまだけ!
レジで50%OFF!
売れてます
このプログラムは JavaScript と HTML の CANVAS タグを使っており、アルゴリズムとしては「楕円を等間隔に分割する」ことで実現しています。
最初、楕円を分割するとき、単純に角度を等角度で分割していましたが、それだと綺麗なびっくり吹き出しになりませんでした。(下図)
▼単純に角度を等角度で分割
上下方向は適度なギザギザですが、左右方向は「小刻みすぎ」なギザギザになって、つり合いが取れていません。
(ここで言う「等角度」とは、正円における等角度であり、正円は計算によって上下方向、左右方向の比率が変更され、楕円となります)
これを綺麗にするためには、等角度ではなく、「円周上の等間隔」で分割しなければなりません。
しかし頑張って考えても分からなかったので、ChatGPT に聞いてみました。
あんまり面白くない会話かもしれませんが、興味のある方はどうぞ。
会話の最後の方で、ただのプログラムである会話 AI にわざわざ自己解決の内容を話し、その「自己解決の内容を会話 AI に話す」ことの意味の無さについて話している部分があります。そこはちょっとドラマチックに感じました。
でもこの会話で提示されたプログラムは「円周上の等間隔」の分割にはなっていなくて、役に立ちませんでした。
また、WEB 検索してその数学的な計算方法を突き止めましたが、「普通ではない」と言えるほど難しい内容でした。
楕円の円周を等間隔で分割するというのは、数学としてはとても難しいことのようです
しかたなく、下記のような原始的な方法を使うことにしました。
そうやって楕円の円周を等間隔に分割することができます。
その HTML ファイル。
楕円の中に小さな楕円を置き、角度の位相を少しずらして、ポイントを直線で上手に結ぶと、
なんと!
びっくり吹き出しになります。
上下方向、左右方向ともに適度なギザギザになっています。
その HTML ファイル。
▼「原始的な方法」の手順1の「楕円の円周の長さを近似的に得る(2種類)」です。
// https://stat3d.com/archives/33267
function getDaenLengthA( a, b, n ) {
// n は精度
let result = 0;
for( let i = 0; i < n; i ++ ) {
let t = ( Math.PI * i ) / ( 2 * n );
result += Math.pow( a * a * Math.cos( t ) * Math.cos( t ) + b * b * Math.sin( t ) * Math.sin( t ), 0.5 );
}
result *= ( Math.PI * 0.5 / n );
result *= 4;
return result;
}
// 自作版
function getDaenLengthB( a, b, seido ) {
let stepTheta = Math.PI * 2 / seido; // 等角度
let sum = 0;
for( let i = 0; i < seido; i ++ ) {
let theta = stepTheta * i;
let x = a * Math.cos( theta );
let y = b * Math.sin( theta );
if( i != 0 ) {
// 三平方の定理でポイント間の距離を求める。
let lenX = x - bx;
let lenY = y - by;
let len = Math.sqrt( lenX * lenX + lenY * lenY );
sum += len;
}
bx = x;
by = y;
}
return sum;
}
HTML であればどこにでも配置可能です。
画像に取り付けたらスーパーサイヤ人みたいになっちゃった。
PC-9801 の「CG ツクール 3D」でいろいろやってみようということで、キャラクターを作ってみようと思いました。
▼カクカクの目元を、
▼丸くしました。
きゅーとだねぇ。きゅっきゅっきゅっ(疲れたから)
▼そのフルカラー。
▼髪の毛をちょっと付けて、、
▼そのフルカラー。やはり、けっこうしんどい。
気が付いたら、下の記事で作っていたスライムのファイルをこの顔のデータで上書きしていて、スライムのデータは消えてました。しんどいRの2乗。身の上に心配Rの2乗。3乗だっけ?
そういや、PC-9801(DOS などコマンドラインが主体のコンピューター)ってそういうことがよく起こっていた気がする…。
自分が今どのディレクトリにいてどのファイルで作業しているのか、よく誤認するって感じかなぁ。。
それにしても、楕円と球と円柱だけでここまで可愛いのができるなら、やはり絵というのは人々が考えているのとはちょっと違うところにポイントがあるんじゃないかな、と思います。
また、「制限がある中で何かを作る」というのは、面白さがあふれることにつながる、、というのもそうかもしれない。
MAYA とか Shade3D は、できることが多すぎて間違ったペン(ツール、やり方)を手に取って、つい、つまらないものを描き出してしまうのかもしれません。
できることが限られていれば、単純な世界で集中して「面白さはこれしかない」と描き出せるのかもしれません。
高度なツールにしろ、低レベルなツールにしろ、どちらにしてもその面白さを出せないで指をくわえて見ている人達がいます。でもその人たちも日常で、絵を描くのと同じことをやっています。
これは誰でもやっていることです。そして、
同じことを、絵の中でもやっています。
それが慣れていて早めに「できた」になる人は絵が描ける人。
それが不慣れでなかなかできない人は絵が描けないと言っている人。
その道に入ろうとしても、勝手が分からずに「慣れる」に至らず、投げ出すなんてこともよくあります。
その勝手の部分を丁寧に教える(教わる)必要があります。
「時間をかけて」、「わかるように」、「やさしく」、「実践的に」、教える以外に道はないです。
最近になってそういう(当たり前の)答えが出てきたところです。
PC-9801 の「CG ツクール 3D」でモンスターを描こう!ということで…
▼スライムを描いた。
▼でも少し横から見ると…アイーン
▼どっちが良いかって話だけど…
まぁ、”いくら画像が良くてもゲームが面白くないなら意味は無い” っていう見方があって…
ゲームで遊ぶ人ってゲームで遊んでいるのであって、CG を見に来ているわけではありませんからね。
だから画像はどっちでもいいっていうのが私の答えです。
3D は作っていて思ったけど、時間がかかって、体力を大きく奪われる。
その上、CG ツクール 3D だと表現力も低いから…いくらなんでも苦労しそうだなぁ…。
▼フルカラー。
PC-9801 の時代にこの色のクオリティを見たら、新しい世界を感じただろうなぁ。
RPG の試作品2です。画面をクリックしてから、↑↓←→。
スマートホンなどで地図が邪魔なときはクリックすると消えます。
2024年8月23日に行ってきた「税金の講習」は、正式には、「会計ソフトを利用した記帳指導」と呼ばれています。
今日はその2回目の指導を受けてきました。
青色申告などに詳しい税理士の人なのかな、個別指導をしてくれます。
しかし、私はプログラミングをいっぱいやっているわりには、こういう講習は歳のせいかついていくのが大変になっています。
こういう「事業を進める」ためには人との会話は重要で、それについて四苦八苦しているようじゃ先が思いやられるなと思いました。
PC-98 の「CG ツクール 3D」でもう少し遊んでみます。
▼ただの球。16色
▼そのフルカラー
▼赤色。16色。
▼そのフルカラー
▼グラス、属性無し。(同ソフトウェア付属データです)
▼クリア属性。
▼そのフルカラー。
エミュレーターの設定で、このように、CPU を 1.2GHz 動作にしても、
レンダリングのスピードは、あまり上がりません。
最後のフルカラーのグラスは、エミュレーターの設定をどのようにしても 3 分くらいかかります。
もしかしたらレンダリングのアルゴリズム(計算)が物理的に多くの無駄があって?、仮に Windows11 で直接動かしてもそのくらいのスピードがかかってしまう、、のかな?
▼キャラの頭を描きました。
▼白目と、目の輝きと、口を付けました。
▼上図のフルカラー。
使える形状がこれしかありません。
上段の右から2番目にポリゴンらしきものがありますが、一定の厚みのある多角形の「板」を作ることができ、作った後の再加工はできません。まぶたの黒いフチはこれで作りました。
この他、形状同士の論理演算ができます。上図のピンク色の「口」は、円柱で「引き算」して作りました。
上で示すツール群だけでは、人間らしい「りんかく」は作ることができず、球で作るしかありませんでした。
LOGiN DISK&BOOK シリーズ「CG ツクール3D ログイン版ミラージュ」
ヤフオクで買いました。
1,000円 + 送料 1,210円 = 2,210円。
▼35 年くらい前、私が当時高校生だったころに買って持っていたもので、当時 4,800 円でした。
▼その裏表紙
ヤフオクで買ったものは、付属ディスクのうち 3.5 インチフロッピーディスクは欠品していて、5 インチフロッピーディスクだけが入っていました。
このツクールのディスクコピーのために、手元にある PC-9801 本体(UV11)を 1 年ぶりくらいに電源オンしたら、いろいろ動かなくなっていて、動かすまでに少し苦労しました。
なんとか無事に 5 インチフロッピーから 3.5 インチフロッピーへディスクコピーし、それを Windows 11 に読ませて 98 エミュレーターで起動できました。
そして、本の入門部分を読みながら作図を始めました。
▼三面図
▼パース図画面
▼そして、レイトレーシング結果
PC-9801 は 4,096色中 16 色の同時発色ができます。
当時の各コンピューターの色数は、
ファミリーコンピューター | 50 色中 25 色 |
MSX2 | 512 色中 16 色 |
PC-8801mkIISR | 512 色中 8 色 |
MZ-2500 | 256 色 同時発色 |
FM77AV | 4,096 色中 16 色 |
X68000 | 65,536 色 同時発色 |
そういう感じだったので、上図の色味で「良いほう」だったのかもしれません。
当時私が使っていた PC-9801 本体(RX21)と、それに対して Windows 11 上で動く PC-9801 エミュレーターの「Neko Project 21/w」の性能を比較すると、
PC-9801 本体 | 》倍率 》 | 「Neko Project 21/w」 | |
---|---|---|---|
CPU | Intel 286 CPU | Neko Processor II (Intel Pentium 4 あたり) | |
CPU 動作周波数 | 12MHz | 》18.4倍 》 | 221MHz(設定次第) |
メモリ | 640KB | 》1,600倍 》 | 640KB~1,024MB(設定次第) |
ディスク容量 | 1.2MB | 》3,412倍 》 | 4,095MB |
当時の本体だと、上図の景観をレンダリング開始して、終了するまでに 6 時間以上かかっていましたが(夜寝て朝起きてもまだレンダリングしていた)、Neko Project だと「Screen」メニューから「No wait」にチェックを入れたりしてさらに高速化して 10 分くらいで終わります。(とは言っても、現在はレイトレーシングで 10 分はかかりすぎ中のかかりすぎです。PlayStation5 とかは通常の動作画面がレイトレーシングですよね)
また、当時はこのソフトを使っていて、だいぶ やりづらくてモデリングに時間がかかっていた覚えがありますが、Neko Project だと処理速度が速いおかげで操作性が格段に良くて作業もサクサクと進みます。
この本を読んでいたら、
>CGツクール3D では、画像を計算する際に、1677万色でピクセルの色を計算しています。
>フルカラー画像データは、RGB ベタ形式という、標準的なファイル形式で記録されています。
と書かれていて、その画像を表示できないかといろいろ調べたら、Windows 11 の susie という画像ビューワーで表示できました。(ツクールで、.IPR ファイルと .RGB ファイルが作成されるので、その2つを Windows 11 へコピーして .RGB ファイルの拡張子を .q0 に名前を変えて、その .q0 を susie で開く)
当時はまさかこんな画像を出力しているとは知りませんでした。
1 作品作るのに 6 時間以上かかるということで、このソフトウェアを購入して当時作れた作品は 2 個だけでした。
なつかしいなぁ。
…と言うために今回ヤフオクで買ったのではなく、最初は、『なつかしいだけだとお金も時間ももったいない』と思って買わないことにしていたんです。
でもこの画質、
で、RPG のモンスター画像を作ったら味があって面白いんじゃないか、と思いついて買うことにしたんです。
『1,000 円くらいなら』、と思って即決で落札しましたが、販売者が札幌の中の人で、送料が思いがけず 1,210 円で、『合計 2,210 円だと分かってたら買わなかったのに~』って思いました。
でも 1,677万色で表示できるのは面白いし、減色なモデリングの色味も面白いので、まぁいいかなと思います。
開発中 RPG のスクリーンショットです。
「RPG自作プログラミング手順書」が開発のメインであり、個々の RPG 作品はその書類の副産物となっています。
もう 4 作も 5 作もその手順書により作っています。
上図のスクリーンショットの RPG も手順書の終わりまで来たら、プログラムをボツにして、手順書をもっとよくするために次の RPG をゼロから作ることになります。
手順書を作りながら、たくさん RPG を作る中で、当初の「RPGを作りたい!」とか「RPGはどんなプログラムなのか」というところがだんだん見えてきた気がします。
RPG は複数のシステムを組み合わせたものであることは確かであり、1つ1つのシステムにノウハウがあり、一朝一夕ではできないもの、ひとつひとつのシステムに感動がある、という感じがしています。
以前から「RPGはどんなプログラムなのか」と、そのシルエットが見えないでいた、見当がつかないでいたのは、当然のことだったと思います。とにかく複雑なんです。
スクリーンショットの中で、お店の売り物のメニューに「商品」と無骨に書くところや、「ここはどうぐやだ」とは言わずに「いらっしゃいませ」とだけ言わせているところに、ちょっと考えがあります。
商品、と一言添えられているだけで、メニューの品物の名前の文字が、"商品" に見えてきます。
見ている側は客となり、そのつもりで商品を見ることになると思います。
そんな思いでどこまでできるかが少し問題になっています。
夢なかばで終わる恐れがあるんだわさ。
RPG の試作品です。画面をクリックしてから、↑↓←→。
マップ上を移動することしかできません。
この木のイラスト(写真を私がトレースしたもの)を使って…
RPG の「森」の描写の試作を作ってみました。(ただの画像で、動きません)
緑に満ちた森の中を歩いている様子を目指しました。
しかし、綺麗かもしれないけど、「どこが歩けるのか」が分かりにくいです。
(青の点線が木の根もとで、歩けないという意味です)
「綺麗であること」と「遊びやすいこと」は、トレードオフの関係にあるからなぁ…
多くのゲーム開発者は、この辺で惑わされていると思うんです。
無闇に綺麗を取れば良いというわけではありません。
最近知恵袋で私が回答して喜んでもらえた(喜びの返信付きでベストアンサーをもらえた)知恵袋5つです。
私の知恵袋のアカウント名は「平行四辺形」です。
以前、頑張って書いたのに返信も何もないというのが立て続けに続いていたときがありましたが、最近はメッセージが付いています。
ベストアンサーをもらえれば正直嬉しいけど、ベストアンサーよりもメッセージ(反応)のほうが大切だと思います。
知恵袋で活動を始めるとグレードは1からスタートして、今現在私のグレードは19です。
今までグレードを上げるには、ベストアンサーの数は「あと20件、あと30件」とかそういう感じだったのに、グレード20に上がるために「あと392件」ってどういうこと??
グラフを見ると、今まで2年くらいかけて何とかしてもらってきたベストアンサー数を半分だとすれば、それをもう半分、また繰り返してくださいって言っている…
グレード19から20への壁が厚すぎる…
ここでベストアンサーを稼ごうとして、安易に回答を連射してしまうと、ベストアンサー率が下降するのではないかと思います。
回答者でカテゴリマスターになっている人のベストアンサー率が、61.15%、56.28%、50.90% とやや低めになっているのは、このグレード20の壁や、グレード30?も同じ調子?の壁、グレード40の壁で、急いだことが原因、、、なのかなぁ、という気がします。
他に「TOP10000」というタイトルを持っている人の率が 30%台の人を見かけたので、そういう人は連射をしたんじゃないかと思います。
とはいえ、やはり、質問に対する回答は、人助けのつもりで行うのが本当のところのはずなので、こういう率というのは側面でしかないはずです。
今までと同じ調子で、人助けに徹したいと思います。
グレード20になるのは、たぶん半年か1年後くらいでしょう。
昨日、金曜日は会社を休んで、税金の講習へ行ってきました。
つまり私はお店を開く(もう開いている)ので、お客さんから受け取った消費税を国に納めなければならないんです。
講習会で、会計ソフトの説明を受けていたときに会計ソフトの画面で「屋号」(やごう)の入力欄が出てきました。
屋号、屋号、、
「<私の苗字>・インターネットサービス」
これはネット検索したところ、ヒットしなかったので使えそう。
イラストは I。
(現在のトータルの売り上げは、2018 年からの 6 年間で 29,181 円税込)
ゲームは G。
(現在のトータルの売り上げは、0円、でも期待している)
知恵袋やプログラミングの方法など「ノウハウのドキュメント」は D。
(現在のトータルの売り上げは、0円、でも人々は自身の知識や才能を必要としている)
頭文字を取って、「<私の苗字> DIG」、「<私の苗字>ディグ」。
いまいちだなぁ。
あと他に売るもの、売るもの…、商材、商材…
上記の3つがどれもいまいちの場合に、堅実に売れるものが必要で、それは日用品。食料品。
…取らぬタヌキの皮算用だな。
とりあえず、「<私の苗字>・インターネットサービス」でいいでしょ。
とにかく個人事業主である私は、老衰で体力が無さ過ぎて、心の弱さやボケもあって、あまり動けないから、
1 カ月あたり 600 円売り上げ、1 年 12 カ月 × 600 円 = 年間 7,200 円売り上げってことで、とりあえずそこを基点としていればいいでしょ。
私が高専にいたときに、いろいろ目をかけてくれて助けてくれた友達がいました。
どうもありがとう。
高専という場所は、そういう友達との出会いの場であると言って間違いなく、高専に入れて良かったです。
なんでこんなことを書くのかと言うと、誕生日のメッセージを今回は送らなくて、心配しているかなと思ったからです。
「はじめて読む486」という本の17個のサンプルプログラムをすべて動かせる動作環境の作成方法のページがおおむね完成しました。
左上の画像リンクをクリックすると表示します。
今年の4月のはじめごろから4カ月半ほどのあいだ、ずっと調査し続けていましたが、やっとまとまりました。
「はじめて読む486」(1994年出版)は、Intel 486 CPU と OS とのあいだのしくみを、C 言語と少しのアセンブリ言語で説明した人気の本です。
会話 AI の Google Gemini が言うには、こんな感じ。
「486を学ぶことは、コンピューターの基礎的な仕組みを理解する上で非常に有益です。CPUの動作原理、命令セット、メモリとの関係など、コンピューターの根幹を支える部分を学ぶことができます。これらの知識は、より高度なCPUであるCoreシリーズを理解する上でも役立ちます」
明日辺り、このページの説明のとおりに進めている動画を作ろうと思っていますが、まぁだいたいひと段落終わったので、良かったです。
いつもの趣味の作業に戻れるかな。。
Microsoft Store にて、ドラクエ11(Windows 体験版)にレビューしました。
こんなに良いものになったんだなって。
「舵を取らなければならない」その夢の RPG は左上図のような感じです。
こっちだったら疲れないのかもしれませんね。
お盆なので、お供え物です。
左: 流行りの「ちゅ~る」と「カルカン」
中央奥: お供え物の各種野菜
中央手前: 線香
右: 猫皿に乗った2匹の猫+うさぎ
著作権に問題のある「GUI Turbo Assembler」の代わりが見つかりました。
一時はどうなることかと思いましたが、
「Microsoft Macro Assembler Ver 5.10」(MASM)が代わりに動いてくれます。
MASM 5.1 は、この前オープンソース化された MS-DOS v4.0 の中に同梱されています。
これなら、Microsoft が直々にオープンソース化したものなので、著作権の問題がありません。
ただし、書籍「はじめて読む486」で説明されている通り、MASM では一部のサンプルプログラムは動きません。
その動かないサンプルプログラムは OpenWatcom の wasm を使います。
つまり、たとえばサンプルプログラムが A, B, C の3種類に分かれているとして、
すべて wasm.exe で対応しようとすると、A, B は正常動作しますが、C は正常に動きません。
すべて masm.exe で対応しようとすると、A, C は正常動作しますが、B は正常に動きません。
つまり、wasm と masm とでそれぞれ正常に動かないものがありますが、それは他方では正常動作してします。
なので、A, C は masm.exe、B だけを wasm.exe で対応します。といったことを行います。
それですべてのサンプルプログラムが動作できます。
書籍「はじめて読む486」のサンプルプログラムを動かす際の問題と対策:
問題 | 原因 | 対策 | |
---|---|---|---|
1. | 一部のサンプルプログラムが動作しない。 | FreeDOSは MS-DOS の互換品です。 その再現度がおそらく低いことが原因で、OS の動作を試すような深いことを行う一部のサンプルプログラムは正しく動作できないようです。 詳しい原因はわかりません。 |
FreeDOS のシステムファイルを公的な 0xFD 版から、私的だけど互換性の高い 0xDC 版へ差し替える。 |
2. | 上行 1. の対策を行っても、まだ一部動作しない。 | よくわかりませんが、int_a.asm というアセンブリプログラムは wasm でアセンブルすると、割り込み処理のなかでシステムを停止させるような結果になってしまうようです。調べたところ、割り込みハンドラに渡される引数の渡され方に問題があるみたいでした。引数の中に期待する値が入っていなかったんです。でもその直し方は結局分かりませんでした。 | .asm ファイルは、masm を使用してアセンブルする。 ただし、sieve_a.asm のみ、wasm を使用してアセンブルする。 または逆で、 .asm ファイルは、wasm を使用してアセンブルする。 ただし、int_a.asm のみ、masm を使用してアセンブルする。 |
3. | 一部のサンプルプログラムは実行した後に、別のプロテクトモードに移行するタイプのアプリ(wasm.exe など)を起動すると、そのアプリが停止する。 | タスクスイッチを行うと、CPU の状態がスタックへ保存されます。 このとき FPU(浮動小数点演算プロセッサ)も一緒に状態を保存するなり手動で対応しなくてはなりません。 その対応が行われていないのでシステムが停止します。 |
タスクスイッチが行われたあとに、CLTS 命令を入れる。(CLearTaskSwitch) |
ああ、これで本当に問題はすべて解決したのだろうか??
今まで何度も、「これでOK」と思って くつがえされてきたので~~~
今年の 4 月のはじめ頃からずっと付きっ切りで続けてきたので、まるまる 4 カ月これに費やしてきたことになります。
でもまだこれから、この正式なドキュメントを作る仕事が残っています…
30年前の書籍「はじめて読む486」のサンプルプログラムを現代の環境で動作させようとすると不具合が出てしまいます。
CPU と OS のしくみがよくわかって大変ありがたい本なだけに残念なところです。
最近その不具合をどうにかして直そうといろいろ調査していましたが、不具合の原因を突き止めることができ、ほぼ解決できたと思って喜んでいました。
このページの 2024年6月25日 の記事(その記事へジャンプ)では、
>編集したら、Windows 用の「GUI Turbo Assembler」という「Borland Turbo Assembler」(TASM)由来のアセンブラを使って、編集したソースコードをアセンブルします。
と書いていて、「GUI Turbo Assembler」というアセンブラを使いさえすれば、不具合の一部が直ると説明していました。
ところが、「GUI Turbo Assembler」が内部で使用している TASM.EXE、TASM32.EXE をコマンドラインで直接実行すると、「Turbo Assembler」の開発元である Borland の著作権表示が表示されました。
▼「GUI Turbo Assembler」のインストールフォルダにそれらファイルがありますが…
▼TASM.EXE を DOS へ移動して実行すると、著作権表示が…出る。
「あっ」とか、「えっ」とか思い…オロオロ
つまり、「GUI Turbo Assembler」は「Turbo Assembler」由来とか互換とかそういうものではなく、著作物をその著作者に無断で使用しているソフトウェアなんですね。
「GUI Turbo Assembler」の開発者の個人サイトを見ると、くったくのない笑顔で笑っている…。
たぶん ご自分が何をやっているのか、あまり分かっていないんだと思います。
活動の内容を客観的に見ると、「GUI Turbo Assembler」の開発者は、Borland/エンバカデロの著作権を尊重しているように思えます。しかし、Borland の製品の一部である TASM.EXE を無断で自身のソフトウェアに組み込んで使用しているのは良いことではありません。。
まぁ、それはそれで、私はいいんですけど、それとは別の話で、私の作業としては良くないんです。
『「はじめて読む486」をサンプルプログラムを動かしながら読み進めたい!』という人々のために、その解決方法を違法なソフトウェアを使って案内することはできないのです。
たとえ解決できると言ったって、違法なソフトを使っていてはみんなその解決方法を使うことはできませんからね。
そんなわけで、「GUI TurboAssembler」がダメになってしまったので、OpenWatcom の wasm.exe というアセンブラを使ってサンプルプログラムを正常に動作させる方法を、これから調査しなくてはならなくなりました。
終わったと思ったのに、まだ続くのか… orz
まぁ、アセンブラ関係の知識をためこむこともできるので、ポジティブに進めることにしましょう。
この前 Yahooオークションで購入した Windows 3.1 の PC/AT互換機 バージョン(英語版)が届きました。
フロッピーは 30 年前のもののはずですが、状態が良く、中の磁性体もカビていなかったです。
USB フロッピードライブを使って7枚のフロッピーを Windows 11 に読み込み(ドライブとしてマウントし)、フリーウェアを使ってディスクイメージファイルにして、仮想マシンにインストールしました。(下図左)
▼Windows 3.1 の PC/AT互換機 バージョン(英語版) | ▼ NEC PC-9801 版(日本語版) |
以前購入した PC-9801 版と比べると、英語か日本語かの違いの他はほとんど同じですね。
PC-9801 のグラフィックは独自仕様なので、画面の高さは 400 pixel しかありません。
DOS のほうは VGA 対応(?)なので 480 pixel あります。
80 pixel の差は大きい。
先月 6/8 に購入した「IBM PC-DOS J6.1/V」の上から Windows 3.1 をインストールしましたが、ちゃんと起動できました。(購入した PC-DOS は「プリロード版」で残念だったけど買っておいて良かった)
フリーウェアの DOS である、FreeDOS の上にインストールできれば面白いと思いましたが、ダメでした。
インストールはできるけど、起動しようとすると途中でハングアップします。
上図のハングアップの仕方はたぶん ごくまれな例で、よくあるのは「386 エンハンスドモードが…」というエラーメッセージです。
※ Windows 3.1 や Windows 95 は、DOS 上で動く1つのアプリです。
ヤフオクにて、「Windows 3.1」の PC/AT互換機 バージョン(英語版)落札できましたねぇ。
いつものように誰とも競っていません。
誰かが入札したら私は手を引くというやり方でやっています。
楽しいお一人様オークション。
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
ところで、PC/AT互換機とは何かというと、いわゆる皆さんが今お使いのパソコンが PC/AT互換機です。
IBM が最初に発売したパソコンである「IBM PC」(1981年)から始まって、
IBM PC | → | IBM PC XT | → | IBM PC AT | → | PC/AT互換機 |
…と機種が移り変わったそうです。
IBM PC の改良版が「IBM PC XT」であり、その XT は「eXtended Technology」(拡張技術)を意味するそうです。
その後継機種が「IBM PC AT」であり、その AT は「Advanced Technology」(先進技術)を意味するそうです。
そして IBM 以外の各社が製造したその互換機を「PC/AT互換機」と言うそうです。
世界的には「IBM PC互換機」と呼ばれる場合が多いそうで、"IBM" を外して "/AT" を加え、「PC/AT互換機」と呼ぶのは日本だけらしいです。
最初は OS(基本ソフト)として、PC-DOS や MS-DOS がインストールされていましたが、途中から Windows 3.1 になり、Windows 95、いろいろ経て Windows 11 となった、ということです。
最近はパソコンを指して「PC/AT互換機」とは呼ばなくなり、単に "パソコン"、mac を意識して "PC" と呼び分けたりしています。
みなさんの目の前のパソコンのおおもとは IBM だということですね。
ヤフオクで「Windows 3.1」の PC/AT互換機 バージョン(英語版)に入札中です。
理由は、「はじめて読む486」のサンプルプログラムの中で、Windows 3.1 を使うものが2点あるからです。
前に PC-9801 版の Windows 3.1 を買いましたが、同じサンプルプログラムが、98 と PC/AT互換機の両方で提供されていて、その両方で完璧に動作確認したいんです。
この前(6月2日)グレードが上がりましたが、また上がりましたねぇ…
今度はグレード18です。
カテゴリーマスターのトップスリーの人たちはトップから順に、グレード74、グレード49、グレード47 という感じです。
「はじめて読む486」という本のサンプルプログラムのソースコードをコンパイル/アセンブルして、実行ファイルを作り、その実行ファイルを実行し、その後 wasm.exe などのプロテクトモードに移行するタイプのアプリを実行すると、そのアプリがフリーズする…という問題ですが、調査して原因が(やっと)分かりました。
CPU 内の特殊なメモリの cr0 という部分(cr0 レジスタ)の、とあるビットがサンプルプログラム実行後に設定したまま?になっていて、これを 0x00000018 から 0x00000010 に直したら、フリーズしないで正常に動くようになりました。
この cr0 にセットされた 0x00000018 の 8 というのは第3ビットが立っている(1である)ということですが、調べてみると、、
(2024年6月29日 追記 いけね、間違えていた…0x8 は第7ビットだと書いていましたが間違いでした…正しくは第3ビットです。…そしてこの記事の内容を直しました)以下 Wikipedia から図で引用…
Bit の 3 は Task switched となっています。その隣の英文、
>Allows saving x87 task context upon a task switch only aftger x87 instruction usedこれを訳すと、
>x87 命令が使用された後にのみタスク切り替え時に x87 タスク コンテキストを保存できるようにします。…意味が分からない…
調べてみると、『CPU がタスク切り替えを行うと、FPU(浮動小数点演算プロセッサ)の状態は切り替え前のままとなる』らしいです。FPU が CPU に対して遅れを取るということです。
『自作OSにおけるFPUの制御』サイト様FPU が CPU についていけていない状態のまま FPU に関する命令を行ってしまうと、CPU と FPU とで食い違いがあるので、「例外INT 0x07が発生する」のだそうです。
「例外INT」とは『予期しない事態が起こったので、プログラム中断=割り込み(interrupt)を行って、対応処理を行う』という意味です。
調べたところによると、その処理のひとつとして、「CLTS*1命令でTSフラグ(第3ビット、TaskSwitched)をクリアする」のだそうです。
そうだ、サンプルプログラムではこの処理を設定していません。
だからタスクスイッチ(切り替え)を行った際に、第3ビットが立ったままとなるわけですね。
はぁ、そういうわけですね。
*1 CLTS は、CLear Task-Switched Flag in CR0 の略です
でも、第3ビット(Task switched)が立ったままだと、他のプロテクトモードに移行するアプリ(wasm.exe 等)にとって、どうして問題となるんでしょうか。 …とりあえず、わからない…
調査に使ってきたシステムの構成は、
ハードウェア: | VirtualBox(エミュレーター) |
OS: | PC-DOS |
コンパイラ: | Open Watcom C コンパイラ |
アセンブラ: | GUI Turbo Assembler |
『この構成のうちどれがおかしいのか、それともサンプルプログラムがおかしいのか…』と思っていましたが、サンプルプログラムの不備だった、と言えそうです。
サンプルプログラムのアセンブリ・ソースコードの SwitchTask という関数で、タスクスイッチが行われる次の行に CLTS 命令を入れて、問題は解決されました。
以上で、「はじめて読む486」という本のサンプルプログラムについての問題は、以下のようにすべて解決されたと思います。
問題 | 対策 | |
---|---|---|
1. | 無料の DOS である FreeDOS はそのままだと一部のサンプルプログラムが動作しない。 | FreeDOS のシステムファイルを FDOS のシステムファイルに差し替える。 |
2. | 上行 1. の対策を行っても、まだ一部動作しない。 | .asm ファイルは、GUI Turbo Assembler を使用してアセンブルする。 |
3. | 上行 2. を行った後、wasm.exe などプロテクトモードに移行するタイプのアプリを起動すると、そのアプリが停止する。 | task_a.asm の TaskSwitch 関数内の jmp の行の次に CLTS 命令を入れる。 |
調査の途中で PC-DOS を購入しましたが、FreeDOS で問題ないと思います。
できれば、Windows 上で動く GUI Turbo Assembler ではなく、DOS 上で動く Turbo Assembler のほうが、DOS 上で完結できるので良いのですが、DOS 版の Turbo Assembler はオークションなどで有料で手に入れるしかないので、現実的には Windows の GUI Turbo Assembler を使うしかないでしょう。
後日、サンプルプログラムを試すための手順を示した新しい記事を書く予定です。
調査が終わって本当に良かった。
最近は、「はじめて読む486」という 30 年前の書籍のサンプルプログラムを正常動作させるための調査に、自由な時間の8割を使っています。
「はじめて読む486」のサポートサイト(リンク)で提供されているサンプルプログラムの、バイナリファイル(.exe)の動作についてはほぼ解決しました(すべてのサンプルが動くようになりました)が、ソースコードのほうをコンパイル/アセンブルして自分でバイナリファイル(.exe)を作った場合の動作についてはまだ解決していません。
自分で作ったバイナリファイルを実行すると問題なく実行されますが、その後に「特定のソフトウェア」を実行するとその特定のソフトウェアがフリーズします。
具体的には、サンプルプログラムの内、OS の機能としてタスクスイッチ(OS上で複数動いているアプリケーションを切り替える動作)を行うサンプルプログラムは実行後、上記の症状が出るようです。
そして「フリーズする特定のソフトウェア」とは、たぶんですが、DOS上で「リアルモード」から「プロテクトモード」へ移行して処理を行うタイプのソフトウェアだと思います。
たとえば、OpenWatcom の wasm.exe です。
左上図の通りプロテクトモードで動作すると書かれていて、サンプルプログラム実行後にこれを起動しようとすると、フリーズします。
サンプルプログラムを編集して、アセンブルして、、という利用の仕方は十分にありえるので、直したいんです。
ところで、「リアルモード」とは古いタイプの CPU 動作モードで、「プロテクトモード」は現代の core シリーズに通じるような新しいタイプの CPU 動作モードです。(新しいとはいえ、登場してから 30 年以上経っていますが…)
新しいタイプの CPU が登場したときに、それまでの古いタイプの CPU との互換性を維持するために用意されたのが「リアルモード」です。
たぶん、サンプルプログラムが OS の機能を試そうとしていろいろ設定を行って、その設定が不正に残っていることが原因で、後に続いて起動するプロテクトモードを利用するソフトウェアでつまづく結果になっている…、と思うんです。
以下は「こんなことを最近やってますよ」という意味での画像掲載です。
左上図は「Oracle VirtualBox」の仮想コンピューター上にこの前オークションで買った「PC-DOS」をインストールし、「OS 機能を試すサンプルプログラム」の一部「TASK.C」を見ているところです。
画面はテキストエディタですが、FreeDOS という PC-DOS の互換 OS に付属していたものをコピーして使用しています。
同書では主に C 言語を使用して OS 機能を実現しようとしていますが、一部の機能はどうしてもアセンブリ言語を使用する必要があるとのことで、アセンブリ言語のソースコードもあります。(左上図)
同書(のサポートサイト)では C 言語もアセンブリ言語も OpenWatcom の使用を勧めていますが、それだとアセンブリ言語のプログラムがまともに動きません。
だから、Windows 上でアセンブリ言語のソースコードを編集し、、、
編集したら、Windows 用の「GUI Turbo Assembler」という「Borland Turbo Assembler」(TASM)由来のアセンブラを使って、編集したソースコードをアセンブルします。
Watcom のアセンブラだとダメですが、TASM だとサンプルプログラムはちゃんと動作するようになるんです。(長い調査のすえにやっとで突き止めた事実です)
しかし、動作した後に、最初に書いた通り、特定の「プロテクトモードで動作するソフトウェア」を起動するとフリーズします。(現在進行中の新たな調査です)
こんなふうに Excel で図を描いて、サンプルプログラムの動きを把握しようとしています。
問題はどこにあるのかなぁと思って。
そうやって原因を探っていると、「はじめて読む486」が教えようとしている OS のしくみを理解したり、アセンブリ言語に慣れてきたり、いろいろ経験出来てプラスになっているのを実感したりはします。
でも解決できないと意味がない気もします。
早く問題が解決してくれると助かるんですけどねぇ…。
RPG の開発をもう半年くらいやっていない気がするんです。いや、3か月かなぁ…。
今日は会社を休んで、「税金の帳簿作成とその記帳方法」の説明会に出席してきました。
私が描いたイラストが少し売れており、売れているということは、人々から消費税を受け取っている、ということになります。
国に代わって受け取った消費税は、ちゃんと国に納めなければなりません。
↓私が描いたこういう感じのイラスト群が、、
↓こんな感じで売れています。
↑このグラフから、「1カ月かかって600円くらい売り上げた」という結果が読み取れます。
…1カ月600円でどうやって生活するのか??
売り上げが 1,000 万円以下ならその消費税の納税義務はありません。
私のイラストの売り上げが年間 1,000 万円を超えることはまずないので、永遠に消費税の納税義務はないでしょう。
それなのに、どうして「税金の帳簿作成とその記帳方法」を学ぶ必要があるのか。
何か物を売る人を「事業者」と言います。
事業者には2種類あって、それは「適格請求書発行事業者」(課税事業者)と、「免税事業者」です。
この「免税事業者」というのが、売り上げが年間 1,000 万円以下で消費税の納税の義務がない人のことです。
私がその「免税事業者」だったんですが、「免税事業者」は、
”将来、売り上げが衰退する恐れがある”
と現在説明されています。
「それは良くないな」と思って、私は「適格請求書発行事業者」の登録手続きを取ることにしました。
「免税事業者」から「適格請求書発行事業者」になると、消費税の納税義務が発生します。
それで私にも「税金の帳簿作成とその記帳方法」を学ぶ必要が出てきたわけです。
ところで、適格請求書の発行とは、具体的にこういうことです。
ニューデイズでお茶を買いましたが、そのレシートに T00000… という番号が明記されています。(赤下線部)
これがまぁ、「適格請求書」です。
何が「適格」なのかというと、レシート(領収書、請求書)に、”国に届け出をしてあることを示す登録番号” があることと、消費税を細かく適正に書いていることが、(国税庁にとって)「適格」だということ。。。だと思います。
この登録番号を、国税庁の「適格請求書発行事業者公表サイト」で検索すると、
このようにその業者の登録が出てきます。
ニューデイズは JR がやってるコンビニなので、JR の情報が出てきます。
そして、私も「適格請求書発行事業者」の手続きを取ったということで、私の登録番号を入力すると、、、
私の名前が出てきます。ニューデイズと並びましたね。並んでないか。
私もイラストを売って、買い手に領収書(レシート)を発行するときに、登録番号と消費税額をその領収書に書いて「適格請求書」として渡すことができます。
以下は少し難しいことを言っています。
商品を売るとき(たとえば私のイラストを買った事業者がそのイラストを元にして何か商品を売るとき)、売るために購入した素材(イラスト)の価格(原価)の消費税(納税)をそのままにしてしまうと、その商品の価格には原価がもちろん含まれていて、その価格に対して 10 %の消費税をかけて売り、売上金の中からその消費税を納税するので、消費税を二重に納税していることになってしまいます。
それを避けるために、素材を買うのにかかった消費税の分を、売り上げの消費税の納税から差し引いて良いとしたものが「仕入税額控除」というもので、その控除を受けるために「適格請求書」(素材購入時に受け取る)が必要になるんですね。
私が免税事業者のままだとその適格請求書を発行できません。
(免税事業者は適格請求書を発行できないことになっています)
すると買い手の「事業者」は、適格請求書を発行できない私からだんだん離れていきます。
免税事業者から素材を買うと、二重に税金を払うことになりますからね。
繰り返しになりますが、免税事業者は、
”将来、売り上げが衰退する恐れがある”
私のイラストを買ってくれる人が減る。ということで、それで説明会に出席してきました。
描いたイラストでお小遣いをもらい続けたいので~
…あと、10年前から事業者になることを、おぼろげながら、夢見てきたところもあり、
私が想定するきちんとした事業の最初の一歩みたいなところが見えた気がして、この手続きを行うことはちょっと嬉しいところがありました。
(エミュレーター用に IBM PC-DOS をオークションで購入した、という話のつづき)
そして、未開封の PC-DOS パッケージを開封して、「1枚のディスク」をエミュレーターに入れました。
同梱のディスクやマニュアル類をご確認ください、という書類にはこう書かれています。
▼インストーラーが起動しました。
軽快にインストールは進みましたね。でも、
▼「DISK 2 を入れてください」だって?? ディスクは1枚しかないんだけど…??
なんだよ、DISK 2って…嫌な予感…。もしかしてあれか?
▼これか?「プリロード用」。
なんだ? "OS パッケージにおけるプリロード" って?
「プリロード」を直訳すると、「事前にロード」。
OS を事前にロードしてある場合のパッケージ。
つまり、パソコンに OS を「プリインストール」して出荷しているパソコンのための、別途用意してあるパッケージ。
だからディスク1枚です?インストールは途中までで進めません?
意味がわかんないんだけど…
いろいろ調べてマニュアルを見ると、、
▼インストーラーコマンド(setup.exe)のオプション。
そうか…、つまりプリインストールされている OS に問題が起こったときに救済するためのツールとしてのパッケージ、、かな?
そのためのツールはディスク1に入っているので、ディスク1しかありません。
そういう意味のプリロード(プリインストール)用です。
ってこと?…ガッカリ…5,000 円だったんだけど… orz
『立派な OS がディスク1枚だなんて、シンプルだな。でも MS-DOS 3.3B とかもディスク3枚で主に使うのは1枚目だけだったから、同じようなものか…』と何となく思っていましたが、そこが落とし穴だったんですね。
”ちょっとでもおかしいと思ったら手を挙げるように” と仕事でも言われていますが、見過ごしましたね。
でも、、
▼インストールを中断して、インストール先のハードディスク(ハードディスクイメージファイル)を起動すると、起動できました。
目的はこれ↑だったので、なんとか OK かな…。
(せっかくの「IBM PC-DOS J6.1/V」だと思ったのに、機能限定か。。景気悪いなぁ)
上記の黒い画面に、International Bussiness Machines と書いてあって、どこの会社だ?と思ったら、頭文字を取って IBM なんですね。IBM が Microsoft に DOS の開発を頼んだ、というのは有名な話で、ちゃんと Microsoft の表示も入っていますね。
オークションにて、エミュレータ用に「IBM PC-DOS J6.1/V」という OS を買いました。(5,000 円でした)
写真はパッケージの表裏です。未開封なんですよね。
正しくは「競り落としました」と言うべきかもしれませんが、入札は私だけで、誰とも競っていませんので。。
「買いました」という感覚です。
なぜ PC-DOS を購入したのかというと…
「はじめて読む486」(30年前に刊行され、現在でも人気がある)という本のサンプルプログラム(17本)が、FreeDOS という互換 OS のもとではその一部しか動作しません。
一部しか動作しないという状況では、本を読んで学ぶ意欲も薄れてしまいます。
そこで、『互換ではない本家の IBM PC-DOS ではどう動くのか』と思って、今回買うに至りました。
もし、本家 IBM PC-DOS で同書の想定の通りに問題なくすべてのサンプルプログラムが動くのなら、互換である FreeDOS に何か問題があるということになりますよね。
現在、無料で使える DOS は FreeDOS しかないので、ここはしっかり結論しておきたいところです。
ところで、「MS-DOS 4.0」もこの前、オープンソース(無料)化されましたが、「MS-DOS 起動ディスク」が無いので本当の MS-DOS の環境が作れません。
起動ディスク。ありません。
MS-DOS や PC-DOS、FreeDOS などの「DOS」は、
『すでにある環境で sys.com というコマンドを使って DOS のシステムを新しい環境(ディスク)にコピーする』
という方法で環境を作るので、MS-DOS 起動ディスクは絶対に必要になります。無いと環境は作れません。
オープンソース化されて、出来ることは、FreeDOS の環境下で MS-DOS 4.0 の command.com を実行するくらいです。
起動ディスクさえあれば、MS-DOS も本家の一つなので、オークションで PC-DOS を買うこともなかった、、と言えます。
でも、PC-DOS がどう動き、サンプルプログラムがどう実行されるのかは楽しみです。
Yahoo 知恵袋のグレードが上がりました。グイーン。
グレード16
↓ ↓ ↓
グレード17
となりました。
… 今の私のコンピューター関係のスキルを活かした一種の仕事みたいなものが、コレ↑しかないとすれば、私が今までコンピューター関係で頑張ってきたのは、このためだったのか?? なんて思います。
49歳ですからね。このためだったんでしょう。?
最近私の回答がベストアンサーになった知恵袋:
ベストアンサーをもらえるかどうかはあまり気にしないように心がけていて、『役に立ったかどうか』というそれだけを考えるようにしています。
なので、言葉で返事があるかどうか、「いいね」的なボタンをどれだけ押されたか、というその辺を注目するようにしています。
とはいえ、ベストアンサーもらえると正直嬉しいんですよね。
新しいシステムです。
機能を追加したり、削除したりが、行いやすくなったと思います。
システム自体もいつでも新しいシステムに切り替えたり、前のシステムに切り替えたりできます。
以前の各ページはアップロードさえすれば、復活できます。
486のページはすぐに復活させる予定です。(ただちょっと486のページは難航気味なんです)