投稿

8月, 2022の投稿を表示しています

d88ファイルの変換 (2回目)

2022/8/28(日) d88ファイルの変換 (2回目)   d88ファイルの紹介と動かし方     N.Matsukawa 様のページ http://www.cad-red.com/basic_magazine/ ディスクイメージのダウンロードで bm88_2ds.lzhをダウンロードする   ahirudanna 様のページ http://ahirudanna.html.xdomain.jp/haifu_pc-88.html PC-8801用プログラム集(2012年09月09日更新)から pc-88_02.lzhをダウンロードする     https://ulprojectmail.blogspot.com/2022/08/d88-1.html d88ファイル変換 (1回目) の手順でアスキーファイルに変換   出来たファイル ~ .bas を XL-BASICでLOADしてRUNする   SCREEN 0を実行しておく必要がある場合があります   動作が速すぎる場合は Alt+4 , Alt+7 , Alt+8 のどれかで遅くなります   動作が遅すぎる場合は Alt+5 , Alt+6 , Alt+9 , Alt+0 , Alt+- , Alt+^ などで速くなります   Alt+F2で初期状態になります   Beepの音量は初期状態では0で Alt+eで大きく、Alt+rで小さくなります Alt+Eで最大、Alt+Rで0になります   テンキーがない PCで テンキーを使用するときは 外付けのテンキーが必要です   動作しないプログラムや 実機と異なる動作をする場合が有ります     VL,NL,XL-BASICは 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

d88ファイルの変換 (1回目)

2022/8/27(土) d88ファイルの変換 (1回目)   d88をbas(ascii)ファイル(PC-88)に変換する方法   ファイル変換は ~.d88 → ~.bas         … ① ~.bas(binary) → ~.bas(ascii) … ② の手順で解説します (Windows前提)     ① N88-BASICディスクイメージファイル~.d88ファイル から個別の~.basファイルを取り出す方法   Sasaji様のページ http://s-sasaji.ddo.jp/bml3mk5/#l3diskex から L3ディスクエクスプローラ(L3 Disk Explorer) を探して ダウンロード(Downloads) - (V0.6.0) [2022-05-05更新] をクリックしたページから   Windows 32ビット 実行ファイル (32bit Binary) l3diskex_win32_060.zip (2.2MB, 2022-05-05) をクリックしてダウンロードし 展開します   l3diskex.exe を走らせて、~.d88ファイルを読み込ませると 中身を見ることが出来、エクスポートで 個別のファイル(~.basなど)を取り出す事が 出来ます     ② バイナリーファイル~.bas(binary)を アスキーファイル~.bas(ascii)に変換する方法   TSAPPS開発室 様 のページ https://letsplay-retropc.tsapps.net/pc8801/n88basic-source-editor から ダウンロードとインストールをクリックした ページから   ダウンロードはここをクリック! をクリックして n88srced_v103.zip をダウンロードして展開し n88basic_srceditor.exe をクリックし アスキーファイルでは無いを選んで 読み込み SAVEするとアスキーセーブされます   グラフィックキャラクターを含まない ファイルはメモ帳で編集可能ですが   グラフィックキャラクターを含む 場合は n88basic_srceditor.exe で編集できます   また XL-BASIC に読み込ませ 編集や実行できるかもしれません   VL,NL,XL-BASIC

N88-BASICでサンクトペテルブルクのパラドックス (4回目)

イメージ
2022/8/26(金) N88-BASICでサンクトペテルブルクのパラドックス (4回目)   サンクトペテルブルクのパラドックス (The sankt petersburg paradox) とは   確率1/2のコインを表がでるまで投げるゲームで 1回目で表が出れば1円 … 確率1/2 2回目で表が出れば2円 … 確率1/4 3回目で表が出れば4円 … 確率1/8 i回目で表が出れば2 i-1 円… 確率1/2 i   がもらえるとすると このゲームの期待値Eは E = 1×1/2 + 2×1/4 + … + 2 i-1 ×1/2 i  …  = 1/2 + 1/2 + … + 1/2 + …  = ∞ 円 となり、1回1万円でもやった方が得? しかし、実際には損する確率が高い? という矛盾が生じるというパラドックスです     結果   kを入力 q = 10 -k  … (これより低い確率を無視する) n = [k(log10 / log2)] … (コインは最大n回まで) p(n) = (1/2) n  = 10 -h  … (上記の確率) E = n(1/2) … (その時の期待値)   (2回目)のプログラムに q = 10 -k  を0~kまで等分に変化させた k-Eグラフの表示を追加しました   グラフが階段状になるのはp(n)のnが自然数だからです   Eは10 -k  のkに比例しているようです   ほぼあり得ない確率で高配当になっている事が 期待値が大きいのに損をする確率が大きい 原因となっていると思います   永遠にゲームをやり続ける事ができれば いつかは得をする時が来るかもしれませんが 所持金や寿命には限界があります     NL-BASICとblg~.zip(sank004.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICでサンクトペテルブルクのパラドックス (3回目)

イメージ
2022/8/24(水) N88-BASICでサンクトペテルブルクのパラドックス (3回目)   サンクトペテルブルクのパラドックス (The sankt petersburg paradox) とは   確率1/2のコインを表がでるまで投げるゲームで 1回目で表が出れば1円 … 確率1/2 2回目で表が出れば2円 … 確率1/4 3回目で表が出れば4円 … 確率1/8 i回目で表が出れば2 i-1 円… 確率1/2 i   がもらえるとすると このゲームの期待値Eは E = 1×1/2 + 2×1/4 + … + 2 i-1 ×1/2 i  …  = 1/2 + 1/2 + … + 1/2 + …  = ∞ 円 となり、1回1万円でもやった方が得? しかし、実際には損する確率が高い? という矛盾が生じるというパラドックスです     結果   q = これより低い確率を無視する n = [log(q)/log(1/2)] … (コインは最大n回まで投げる) p(n) = (1/2) n  … (上記の確率) E = n(1/2) … (その時の期待値)   (1回目)のプログラムに qを1-q~qまで等分に変化させた q-Eグラフの表示を追加しました   グラフが階段状になるのはp(n)のnが自然数だからです   qが0 (1/∞)に近づくと急に期待値が上がるので   ほぼあり得ない確率で高配当になっている事が 期待値が大きいのに損をする確率が大きい 原因となっていると思います   永遠にゲームをやり続ける事ができれば いつかは得をする時が来るかもしれませんが 所持金や寿命には限界があります     NL-BASICとblg~.zip(sank003.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASICでサンクトペテルブルクのパラドックス (2回目)

イメージ
2022/8/22(月) N88-BASICでサンクトペテルブルクのパラドックス (2回目)   サンクトペテルブルクのパラドックス (The sankt petersburg paradox) とは   確率1/2のコインを表がでるまで投げるゲームで 1回目で表が出れば1円 … 確率1/2 2回目で表が出れば2円 … 確率1/4 3回目で表が出れば4円 … 確率1/8 i回目で表が出れば2 i-1 円… 確率1/2 i   がもらえるとすると このゲームの期待値Eは E = 1×1/2 + 2×1/4 + … + 2 i-1 ×1/2 i  …  = 1/2 + 1/2 + … + 1/2 + …  = ∞ 円 となり、1回1万円でもやった方が得? しかし、実際には損する確率が高い? という矛盾が生じるというパラドックスです     前回の計算を工夫して q = 1/∞により近付けるよう工夫して見ます   q = これより低い確率を無視する n = [log(q)/log(1/2)] … (コインは最大n回まで投げる) p(n) = (1/2) n  … (上記の確率) E = n(1/2) … (その時の期待値)   E = Σ(2 i-1 ×1/2 i ) = Σ1/2 (i = 1~n, n = ∞)  = n(1/2)     考察 [log(1/2) = log(2 -1 ) = -log(2)]   q = 10 -k  と置くと n = [log(q)/log(1/2)] = [log(10 -k )/log(1/2)]  = [k(log10 / log2)]     p(n) = (1/2) n  = 10 -h  と置くと nlog(1/2) = -hlog10 nlog2 = hlog10 h = n(log2 / log10)     まとめ kを入力 q = 10 -k  … (これより低い確率を無視する) n = [k(log10 / log2)] … (コインは最大n回まで) p(n) = (1/2) n  = 10 -h  … (上記の確率) E = n(1/2) … (その時の期待値)   前回の計算で q = 10 -293  で計算するとE = 486.5円でしたが これでもほぼ起こらない確率まで入れています これ以上はファン

N88-BASICでサンクトペテルブルクのパラドックス (1回目)

イメージ
2022/8/15(月) N88-BASICでサンクトペテルブルクのパラドックス (1回目)   サンクトペテルブルクのパラドックス (The sankt petersburg paradox) とは   確率1/2のコインを表がでるまで投げるゲームで 1回目で表が出れば1円 … 確率1/2 2回目で表が出れば2円 … 確率1/4 3回目で表が出れば4円 … 確率1/8 i回目で表が出れば2 i-1 円… 確率1/2 i   がもらえるとすると このゲームの期待値Eは E = 1×1/2 + 2×1/4 + … + 2 i-1 ×1/2 i  …  = 1/2 + 1/2 + … + 1/2 + …  = ∞ 円 となり、1回1万円でもやった方が得? しかし、実際には損する確率が高い? という矛盾が生じるというパラドックスです     はじめに   このゲームには、いろいろな考察があると思いますが   期待値Eは1回のゲームの期待値なので ここでは、1回だけ行ったときを考えたいと思います   科学では極端な実験値を除いで平均を出す事があります ここでは極端な場合を除いて感覚と合う期待値Eの 計算を試みます     例(極端な場合を除くと)   平均年収1億円の100人の村があるとします 99人が100万円で1人が99億100万円です   この場合極端な1人を除いた、平均100万の 方が感覚に合います   つまり極端な例が入ると感覚からズレるという事です     考察   このゲームの期待値Eを、起こる確率がq未満 の場合を除いで計算してみます   期待値Eは E = 1×1/2 + 2×1/4 + … + (2 i-1 ×1/2 i ) + … (各回数の確率1/2 i  < q になれば足さない)   1/2 i  < q となる直前のiをnとしてnを求める   E = Σ(2 i-1 ×1/2 i ) = Σ1/2 (i = 1~n, n = ∞)  = n(1/2) ここでnは、(1/2) n  ≧ q となる最大の自然数なので log(1/2) n  ≧ log(q) nlog(1/2) ≧ log(q) n ≦ log(q)/log(1/2) … log(1/2) < 0より ガウス記号[a]=aを超えない最大の整数を使用して n = [

N88-BASICでゲーム (3回目)

イメージ
2022/8/12(金) N88-BASICでゲーム (3回目) N88-BASIC de game (3)   Textのscrollを利用してprintした壁を よけるゲームです   PC-98シリーズとNL-BASIC以下98 PC-88(V2mode)とXL-BASIC以下88 VL-BASIC以下VLとします     FNPK(X, Y) x,y座標のText-VRAMを読みキャラクターコードを 得ることが出来、&H20(空白)以下なら障害物なしと 判断しています   98 Text-VRAMはA0000(h)番地から1行に80文字 (各2バイト)あり、それが25行分あります DEF FNPK(X, Y) = PEEK((X + Y * 80) * 2) DEF SEG = &HA000   88 Text-VRAMはF3C8(h)番地から1行に80文字+ アトリビュート40バイトの120バイトあり、 それが25行分あります DEF FNPK(X, Y) = PEEK(&HF3C8 + X + Y * 120)   VL Text-VRAMは00000(h)番地から1行に80文字 (各1バイト)あり、それが25行分あります DEF FNPK(X, Y) = PEEK(X + Y * 80)     キー入力 98 … IN = &HE0 88 … IN = &HE0 VL … IN = &HE0 or &HE00   INP(IN+&H8)のbit2が0なら→(右)キーが押されており INP(IN+&HA)のbit2が0なら←(左)キーが押されているので IF NOT INP(IN+&H8) AND &H04 THEN →キー処理 IF NOT INP(IN+&HA) AND &H04 THEN ←キー処理 としています   キーマトリクスは付属のマニュアルなどを参照して下さい   v-sync待ち 98 … VS = &HA0 88 … VS = &H40 VL … VS = &HA0 or &H40 WAIT VS, &H20, &H20: WAIT VS, &H20 '--- v-sy

N88-BASICでドップラー効果

イメージ
2022/8/2(火) N88-BASICでドップラー効果   Doppler effectを1次元で考えます   (音源から観測者へ向かう方向を正とする) V :音速 v :音源の速度 f :音源の振動数 v':観測者の速度 f':観測者が聞く振動数 とする   止まっている音源の音を止まっている観測者が聞く場合 1秒間にf回の振動を聞くことになる (この時、音波が通り過ぎる速度はVとなる) (この時の波長はλ=V/fとなる)   止まっている音源の音を音源から離れる観測者(速度v')は、 1秒間に、f回の(V-v')/V倍の振動を聞く事になる (観測者を音波が通り過ぎる速度はV-v'なのでf回の振動が、 止まっているときの(V-v')/V倍の速度で通り過ぎるため)   音波V→|     |観測者v'→ … 観測者はV-v'の速度の音を聞く   (V-v')がVの半分の速度ならf回の振動を、1秒の2倍の 2秒で聞くことになり、振動数(Hz=回/s)は半分になる   f'= f(V-v')/V … ①     観測者に近づく音源(速度v)の音を止まっている観測者は、 1秒間に、f回のV/(V-v)倍の振動を聞く事になる   (音速Vは一定なので、波長が(V-v)/V倍に縮まる 振動数が同じなら波長が半分の時、振動数は倍になるので 振動数は逆数のV/(V-v)倍になる)   1秒間で考えると |----- V -----| … 止まっているときV(m)にf回の振動 |-v-|- (V-v) -| … 動いているとき(V-v)(m)にf回の振動  音源→     音波→(Vで一定)   f'= fV/(V-v) … ② このf'を①式のfに代入して   f'= f(V-v')/(V-v) を得る   VL,NL,XL-BASICとblg~.zip(dopp001.bas)は 以下のリンク)からダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい