メインコンテンツへスキップ

【衝撃】MS-DOSの原点!?Microsoftの伝説的ソースコードが流出!禁断の歴史が今、明らかに!

·3 分
2025/04 Microsoft ソースコード MS-DOS 歴史 プログラミング

【衝撃】MS-DOSの原点!?Microsoftの伝説的ソースコードが流出!禁断の歴史が今、明らかに!

引用元:https://news.ycombinator.com/item?id=43575884

stkai 2025-04-03T22:45:48

ソースコード読むのめっちゃ楽しいんだよね(コメントが特に)。GW-BASICのソースコード見つけたんだけど、マジおもろいのがこれ。
>;WE COULD NOT FIT THE NUMBER INTO THE BUFFER DESPITE OUR VALIENT
>;EFFORTS WE MUST POP ALL THE CHARACTERS BACK OFF THE STACK AND
>;POP OFF THE BEGINNING BUFFER PRINT LOCATION AND INPUT A ”%” SIGN THERE

>;CONSTANTS FOR THE RANDOM NUMBER GENERATOR FOLLOW
>;DO NOT CHANGE THESE WITHOUT CONSULTING KNUTH VOL 2
>;CHAPTER 3 FIRST

編集:QBASICじゃなくてGW-BASICね。(https://github.com/microsoft/GW-BASIC)

ndiddy 2025-04-04T00:07:51

へー、GW-BASICって元祖Altair BASICの子孫なんだって。「Translation created 10-Feb-83」って各ソースファイルにあるヘッダーは、Microsoftが8080アセンブリを8086に自動翻訳するツール使ってた名残らしいよ(手動で修正されたからビルド日じゃないけどね)。GW-BASIC以外にも、Microsoft BASICの6502と6809版のソースコードは昔から公開されてたみたいだけど(https://www.pagetable.com/?p=774 と https://github.com/davidlinsley/DragonBasic 参照)、オリジナルの8080 BASICコードの公開は今回が初めてだと思う。

deathtrader666 2025-04-04T08:17:46

valiantじゃなくてvalientじゃないの?

roryirvine 2025-04-04T08:59:47

まあね。当時はスペルチェッカーって別アプリだったし。一番人気はMicroProのCorrectStarだったかな。プログラミングエディタに組み込まれてなかったし、コードにスペルチェッカーかけるなんて考えられなかった。

3836293648 2025-04-04T12:30:21

IntelliJ以外でコードにスペルチェッカー使ってる人見たことないわ。

eddythompson80 2025-04-04T18:26:04

cSpellだけで1300万インストールされてるよ。
https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker

mindcrime 2025-04-04T18:51:35

Eclipseにはスペルチェッカーが組み込まれてるよ。多分ほとんどのファイル形式でデフォルトでオンになってるはず。みんなオフにしてるかもしれないけど、気に入ってそのままにしてる人もいると思うよ。

StanAngeloff 2025-04-04T18:41:57

最近これ見つけた。
https://github.com/tekumara/typos-lsp
これ使ってる。
https://github.com/crate-ci/typos
GitHubのスターもたくさんついてるから、ユーザーも多いんじゃないかな。NeoVimで使ってるけどマジ便利。

griffzhowl 2025-04-05T04:20:21

"apellchecker"ってスペルチェッカーの名前としてマジ最高じゃん。

maleldil 2025-04-05T10:23:21

Codespellめっちゃ使えるよ。コマンドラインとCIで使ってる。
https://github.com/codespell-project/codespell

dhosek 2025-04-04T17:42:02

Emacsにはスペルチェック機能がついてて、バッファ全体をチェックする昔ながらのやり方も、入力しながらリアルタイムでチェックする機能もあるんだよね。でも、最近はJetBrains IDEでコーディングすることが多いかな。

freedomben 2025-04-04T19:23:07

Vim/Neovimユーザーなら、標準で結構使えるスペルチェック機能があるよ。カスタム単語を辞書に追加すればさらに便利になるし。:set spellでオン、:set nospellでオフにできるよ。カスタム単語を追加するには、対象の単語にカーソルを置いてzgを押せばOK。
僕のvimrcファイルには、特定のファイルタイプでデフォルトでオンになるように設定してるよ:
> ”特定のファイルタイプと単語補完のためにスペルチェックをオンにする。
> 単語はカーソルを単語に置いて’zg’を押すことで辞書に追加できます。”
カスタム単語は~/.vim/spell/en.utf-8.addみたいなテキストファイルに保存されるから、編集やバックアップも簡単だよ。

porridgeraisin 2025-04-06T17:14:17

> custom additions
スペルチェック中に直接追加することもできるよ。カーソルを単語に移動して(コマンド忘れちゃった…)レアな単語、良い単語、悪い単語として登録できる。

timcobb 2025-04-04T14:57:28

VSCodeの拡張機能を使ってる人もいるよね。

jimbob45 2025-04-04T16:50:28

最高のプログラマーってみんなスペルが苦手な気がするんだよね。なんでだろう?

ptspts 2025-04-05T13:28:17

俺が知ってる最高のプログラマーはそんなことないけどな。

themadturk 2025-04-04T21:52:56

人間なんてみんなスペルが苦手だよ。ライターだってそう。だからスペルチェッカーが必要なんだ。

psychoslave 2025-04-05T03:44:30

母国語のフランス語よりも、一度も見たことのないエスペラント語のスペルの方が自信あるわ。欠陥だらけのシステムを責めるのはやめようよ。

themadturk 2025-04-07T21:54:28

そりゃそうでしょ。エスペラントは規格に合わせて作られた言語だし。フランス語や英語は自然に進化してきたから、矛盾や例外が多いんだよ。

nilsbunger 2025-04-04T13:47:16

Steve Jobsがよく言ってたのは、Microsoftにはセンスがないってことらしいよ。スクロールした時のフォントがちらつくエフェクトを見て、まさにそれだと思った。マジで気が散る。しかもリーダーモードで無効にできないし。ちなみに、Bill Gatesが世界のためにやったことには感謝してる。

もっとコメントを表示(1)
toddmorey 2025-04-04T19:59:37

デザインは面白いし、懐かしい感じもするけど、やりすぎだと思うな。あんなに気が散らなくても、同じような雰囲気は出せたはず。あと、リーダーモードはマジで対応してほしい。難しくないはずだし、オプションにするべきじゃないよ。
追記:マジかよ、全部アニメーションしてるじゃん。読みにくい…あと…インラインのコードサンプルが一つもないってどういうこと?デザイナーがコンテンツよりもアワード狙ってるだけじゃん。まるで他の人のソロパートを全部食っちゃうギタープレイヤーみたい。

nerevarthelame 2025-04-04T15:38:03

読みにくい上に、2年物のノートPCだとページを移動するだけでCPUとGPUがフル回転して、ファンが爆音になるんだけど。ただのブログ記事なのに、こんなにパフォーマンスが悪いウェブサイトは初めてかも。

SpaceNoodled 2025-04-04T15:57:16

それって、最近のウェブサイトがJavaScriptまみれの広告再生マシーンになってて、神様が意図したような1kB未満のHTMLじゃないのが原因だよね。

hbn 2025-04-04T19:56:39

笑えるのが、今日HNのトップページに載ってたこれ。
https://animejs.com/
もっと凝ったアニメーションなのに、バターみたいに滑らか。

Arech 2025-04-05T07:02:17

それはGPUに処理をオフロードしてるからじゃないかな。低スペックPCだとカクカクするけど、CPUファンは静かだよね。GatesのノートはCPUに負荷がかかってるみたい。

ForOldHack 2025-04-06T01:40:29

マジでレベルが違う。うちの古いPCでも、前後ともスムーズに動く。うちのPCはThinkPad i7で、すぐに低速モードになるんだけど。

bostik 2025-04-04T17:24:16

Tim Berners-Leeは色々なものに祭り上げられてきたけど、神になったのは初めて聞いた。

lkramer 2025-04-04T18:09:56

いや、2012年のオリンピック開会式を見た?

SpaceNoodled 2025-04-04T21:58:29

Kernighan & Ritchieも仲間に入れてあげて。

zombot 2025-04-07T06:04:49

でもさ、あの自己陶酔しまくりの嫌なやつがクソみたいなこと垂れ流してるのを忘れさせてくれるよね。

zelon88 2025-04-04T14:51:02

マジかよ、Bill Gatesの個人ブログがWordPressのプラグイン500個入りみたいなノリなのにはビックリだわ。俺の昔のMySpaceのプロフみたいじゃん。

kevincox 2025-04-04T14:54:37

ちなみに、Appleの発表イベントのぐるぐるスクロール効果も大概ヒドイよね。

graton 2025-04-04T15:15:31

個人的には好きだけどなー。好みは人それぞれだし。

fsckboy 2025-04-04T19:48:00

DONKEY.BASをゲットしてみてよ!マジでハマるから!

mimischi 2025-04-04T19:44:46

ふと思ったんだけど、この文章全部Billが書いたのかな?このエフェクト、Billが決めて入れたのかな?そもそもBillはこのエフェクト知ってたのかな?

chubot 2025-04-05T03:23:14

だよねー。こんなに色々デザインされてると、裏にそれなりの規模のチームがいて、ゴーストライターとかもいるんじゃないかって想像しちゃう。

Timwi 2025-04-05T08:25:31

まあ、Bill Gatesはバリバリの企業家だもんね。プログラミングじゃなくて、そっちで金持ちになったんだし。

rvba 2025-04-06T13:22:49

BillGレビューはどうなったのさ?ほとんどの企業はやり方分かってないよね。

phatskat 2025-04-07T05:46:24

彼がどうやって今の地位を築いたのか、どんな人物なのかを忘れないことが大事だと思うなー。Behind the Bastardsは、みんなが賞賛するような人たちに対する現実を教えてくれる良いポッドキャストだよ。
https://podcasts.apple.com/us/podcast/part-one-the-ballad-of

spookie 2025-04-04T15:28:39

それ、マジでイケてると思うわ。

もっとコメントを表示(2)
microtherion 2025-04-06T10:34:37

あと、そのページのフォント、特に小文字の“f”がマジでイライラするんだけど。

zulu-inuoe 2025-04-05T20:45:25

めっちゃかわいくて、一瞬で好きになった。

piyuv 2025-04-04T22:20:19

“ヤツが世界のためにしてきたこと”って、Covidワクチンの著作権を取ったこと?

Timwi 2025-04-05T08:30:02

気持ちはわかる。ヤツのビジネス、倫理的に微妙だもんね。でも批判するなら、著作権と特許の違いくらい知っとけよ。

zabzonk 2025-04-04T00:17:02

Intel 8080のエミュレーター書いたことあるぜ。Dec10/VAX/IBM VM CMSで動くやつ。簡単だったよー。8080は256個の値のswitchでいけるし。FORTRAN77でやった。
BASICインタプリタをfloating pointで書くのはマジで難しい。GatesとAllenのBASICはマジですごかった。

TMWNN 2025-04-04T08:04:38

>BASICインタプリタをfloating pointで書くのはマジで難しい。GatesとAllenのBASICはマジですごかった。
floating pointルーチンはMonte Davidoffの功績。でもGatesとAllenがHarvard PDP-10でAltair BASICを、実機も見ずに書いて、AlbuquerqueのMITSでトグルスイッチで入力して一発で動いたのはマジですごい。

WalterBright 2025-04-04T17:09:05

Allenがやったのは、-10で動く8080エミュレータを書いたこと。8080は単純なCPUだから、エミュレータ書くのは難しくない。
https://pastraiser.com/cpu/i8080/i8080_opcodes.html
それで、BASICをエミュレータ上でデバッグした。
Wozniakは、Appleのコードをアセンブラで手書きして、手作業でバイナリに変換してた。めっちゃ面倒でエラーしやすい。
同時期にAphで6800とかのコード書いてたけど、PDP-11でマクロアセンブラ使ってバイナリにしてEPROMに焼いてた。めっちゃ楽だった。(Dan O’Dowdがアセンブラ書いた。)

dhosek 2025-04-04T17:47:09

Wozniakのやり方は、高校生の時に6502アセンブラプログラムを書く時にやってた。金がなくてちゃんとしたアセンブラ買えなかったから。グラフ用紙に3列で書いてた。アドレス、コード、アセンブラのopcodes。マジ集中できるし、ちょっと変更するだけでも大変。

mfuzzey 2025-04-04T19:44:48

俺もZX80でZ80アセンブラ始めた時そうだったわ。すぐopcode調べるのとか嫌になって、特に相対ジャンプ(特に後ろ向きのやつ)の計算ミスってクラッシュしまくってた。
だから自分でBASICでアセンブラ書いたわ。

dhosek 2025-04-06T03:22:58

高校時代にMSX Spectravideoのコンピューターを手に入れるためにデモプログラムを書いたんだけど、その時にZ80の逆アセンブラを書いてたんだ。でも2バイトのオペコードに対応してなかったから、一部しか完成しなかったんだよね。コンピューターのメモリ全体にpokeコマンドをしまくって、キャラクタのビットマップの場所を探し当てたのを覚えてるよ。

zabzonk 2025-04-04T08:55:16

AllenはAltairのコンソールでマシンコードでローダーを書かなきゃいけなかったんだよね。BASICインタプリタ自体は、ローダーとテープリーダーを使って紙テープからロードされたんだって。AllenがAltairで最初に実行したBASICプログラムは、どうやら“2 + 2”だったらしくて、ちゃんと“4”って表示されたらしいよ。I/Oとか、Dec10でエミュレートするのが難しかったはずなのに、自分のコードにそんな自信を持ちたいな。

WalterBright 2025-04-04T17:11:18

>which must have been tricky to emulate on the Dec10
なんで難しいのかわからないな。AllenのPDP-10上の8080エミュレータがどうやって動いてたのか知らないけど、8080のI/Oをエミュレートするのは簡単そうに見えるけど。

zabzonk 2025-04-04T17:38:15

いや、Dec10ベースのエミュレータではちょっと苦労したよ。メモリマップされたやつはちゃんと動かなかったんだよね。I/O命令をごまかしただけ。でも、学生にソートとか文字列検索とかをさせるための余暇プロジェクトだったから、あんまり罪悪感はなかったかな。アセンブラとかデバッガとかも入ってたし。しかも移植可能で、完全に標準的なFORTRAN77だったんだぜ!

zabzonk 2025-04-05T04:24:58

Dec10のエミュレータを最新のCPUで書いたらクールじゃないかってちょうど思ってたんだよね。 実は、プログラマーの同僚の一人が、Dec10を廃棄するときに周辺機器全部込みで買い取って、ガレージに設置しようとしたことがあったんだ。電源と奥さんが大きな障害だったみたいだけど。

teleforce 2025-04-04T10:02:37

面白いことに、Jobsによると、理由は不明だけどWozniakがApple Basicに浮動小数点サポートを追加することを拒否したから、Microsoftから浮動小数点数を扱うBASICのライセンスを取得する必要があったんだって[1]。 [1] Bill & Steve (Jobs!)が浮動小数点BASICについて回想:https://devblogs.microsoft.com/vbteam/bill-steve-jobs-remini…

WalterBright 2025-04-04T17:13:33

浮動小数点エミュレータを書くのは(やったことあるけど)そんなに難しくないよ。まず、高級言語で書いてアルゴリズムをデバッグする。それから手でアセンブルするのは難しくない。 大変なのは、高級言語のステップを飛ばして、いきなりアセンブラでやろうとすることだよ。

kalleboo 2025-04-05T00:43:39

Wozはすでに浮動小数点ルーチンを書いていて、それはApple IIのROM自体に含まれていて、PEEK/POKEで呼び出すことができたんだよ。ただ、BASIC言語自体には統合されなかったんだ! http://retro.hansotten.nl/uploads/mag6502/Apples%20Hidden%20

kragen 2025-04-04T19:31:41

Apple Integer BASICってどれくらいの大きさだったんだろう? EmpireのFortran版を書いたときには、PDP-10を丸ごと自由に使うことができたと理解しているんだけど。

WalterBright 2025-04-04T20:13:11

-10でプログラミングを学んだんだ。素晴らしい経験だったよ。 振り返ってみると、整数BASICを書くのは簡単なことだけど、70年代当時は、そんなものをどうやって書くのか見当もつかなかった。 1978年頃、Hal Finney(そう、あの人)がMattel Intellivision(その奇妙な10ビットマイクロプロセッサを搭載)のために2K EPROMに収まる整数BASICを書いたんだ。もちろん、Halは普通の熊より(ずっと)賢かった。

kragen 2025-04-04T23:09:45

へー、知らなかった!90年代に知って、CodeConのプレゼンで初めて会ったんだよね。言いたかったのは、Integer BASIC全体よりもfloating-pointのサポートの方が大変だったかもってこと。ちなみにApple Integer BASICにはまだバグが見つかってないらしいよ。すごいよね。

もっとコメントを表示(3)
djmips 2025-04-04T20:39:21

fixed pointは、整数部と小数部に使うbit数が決まってるやつ。例えば8.8なら、整数部は0~255で、小数部は1/256ずつ増えて255/256まで。
floating pointは、小数点(.)の位置を変数にするんだ。だから、小数点以下の桁数を増やしたり減らしたりできる。Microsoft Basicは、数値に23bit、符号に1bit、小数点の位置に8bit使ってた。現代のIEEE754ほどじゃないけど、十分だったんだね。IEEE754を読むと、modern floating pointがよく分かるよ。Bruce DawsonのRandom ASCII blogもおすすめ。

codedokode 2025-04-04T20:11:14

コンピューターのメモリーに数字を保存したいけど、小数点とか数字以外の文字は使えないとするじゃん。だから、実数を数字の列としてエンコード/デコードするシステムが必要になるんだ。
fixed pointだと、メモリーに数字を書き込んで、小数点以下の桁数を決めておく。例えば、小数点以下2桁にすると決めたら、000123は00・0123、123000は1230ってことになる。6桁だと、0~9999を0・01の精度で表せる。
floating pointだと、小数点の位置(exponent)と数字(mantissa)の両方を書き込む。最初の2桁をexponent、残りの4桁をmantissaにすると、
>020123
は01・23、つまり1・23になる(exponentが2だから、小数点以下2桁)。同じ6桁でも、0~9999×10⁹⁶を1/10000の精度で表せるんだ。あとは分かるっしょ。

WalterBright 2025-04-04T20:17:29

つまりfloating point数は、数字とexponentと符号bitの3つでできてるんだ。
>1・ the digits
>2・ the exponent
>3・ a sign bit
scientific notationと同じだよ。
>https://en・wikipedia・org/wiki/Scientific_notation
あとはそれの応用。

codedokode 2025-04-04T21:12:09

exponentよりdecimal point positionの方が分かりやすいよね。あと、mantissaはsignificandのことだった気がする(数字の部分)。engineering notation(exponentが3で割り切れるやつ)の方が便利じゃん?2・234×10¹¹とかを頭の中でbillionに変換するの嫌なんだよね。あと(floating pointと関係ないけど)数学者はもっと分かりやすい名前を付けるべき。「numerator」と「denominator」じゃなくて「upper」と「lower number」とかさ!

WalterBright 2025-04-04T23:15:20

significandとmantissa、いつもごっちゃになるんだよね。だから使わないことにした!

hh2222 2025-04-04T18:08:44

大学時代にassemblerでfloating pointルーチンを書いたな。理解できた時はマジで「aha」って感じだった。

WalterBright 2025-04-04T17:53:41

仕様を読むのはマジで大変。でも実装はそこまで悪くない。sticky bitとかguard bitとか、実は結構シンプル。でも、IEEE arithmeticを使って、その限界を回避するalgorithmを作るのは難しい。

whartung 2025-04-05T02:36:57

FP mathの仕組み(bitレベルでどうやってるか)をざっくり知りたいなら、Project Oberonのサイトに行って、FPGAでのRISCマシンの実装についてのPDFを見てみて。16章の8~10ページに、簡潔な説明があるよ。

zozbot234 2025-04-04T10:13:15

初期のマシンでは浮動小数点演算が重要だったんだよね。おかげで「高性能な電卓」としての使い道が開けたんだから。データ保存が今ほど簡単じゃなかった時代には、ゲームとかリモート端末としての利用と並んで貴重だったんだよね。BASICに入ってたfloatの実装が当時一番一般的だったし(今のIEEE規格とは微妙に違ったりもするんだよね)。

musicale 2025-04-04T02:56:07

わかるー。4KBとか8KBに収まるBASICで数学ができるってすごいよね。Bill Gatesが$150のAltair BASICを海賊版にされたって怒ったのがきっかけでTiny BASICが生まれたり、“copyleft”って言葉が作られたりもしたんだって。

phkahler 2025-04-04T00:57:50

InteractコンピューターのMicrosoft Basicのテープ、まだ持ってるよ。8080が入ってるんだ。

thijson 2025-04-04T14:51:54

昔のTandy Color Computerが起動するときにMicrosoft BASICを参照してたのを覚えてるよ。https://tinyurl.com/2jttvjzk
コンピューターには、BASICのサンプルプログラムが載った良い感じの本が付属してたんだ。

thesuitonym 2025-04-04T13:26:05

その音声をInternet Archiveにアップロードするべきだよ!

vile_wretch 2025-04-04T18:02:49

Sol-20用のMS Extended Basicカセットも持ってる。これも8080ベースなんだ。

Barrin92 2025-04-04T02:34:46

GatesとAllenのすごいところは、マジで技術力が高かったってことだよね。PDP-10のエミュレーター作って、インタープリター、ラインエディタ、I/Oシステムを全部4KBのメモリに収めるんだから。コードを読む価値あるし、それに加えてビジネスセンスもすごいし、20歳にしてはマジメに仕事してたよね。今の「fake it till you make it」みたいな、APIラッパーだけの製品ばっかりの業界とは大違いだよ。Microsoftみたいな会社がまた出てきてほしいな。

mindwok 2025-04-04T02:39:07

まあ、彼らも最初はハッタリかましてたけどね。まだ書いてないプログラムのソースコードがあるって言ってたんだから!でも、その後ちゃんと“making it”に本気だったんだよ。

cybrox 2025-04-04T09:08:18

確かに「fake it and then immediately proceed to make it」は、「fake it till you make it」みたいに嘘ついて取引をぶっ壊すよりは全然評価できるよね。

netsharc 2025-04-04T02:48:31

当時の複雑さなら、人間の脳でもまだ理解できたと思うんだよね。Wozの自伝を読むと、彼は最初のAppleコンピューターのすべての論理ゲートの役割を知ってたみたいだし。PDP-10もたぶん“人間の速度”で動いてたんだろうな…

mmooss 2025-04-04T22:07:45

>「できるまで、やったふり」っていうのと対照的だよね。Microsoftは「できるまで、やったふり」の史上最強の会社だよ。IBM PCのOSの契約を、OSがない状態で取って、それを誰かから買ったんだから(確か)。
>GatesとAllenで際立っているのは、マジで高い技術力だよね。PDP-10のエミュレータを作って、それからインタープリタ、ラインエディタ、I/Oシステムを全部4KBのメモリに詰め込んだんだから。
それってマジですごいの?当時はどのコーダーも全部4Kでやってたじゃん。

jwnin 2025-04-03T22:35:16

運と、リスクを取る覚悟が、予想もできない形で実を結んだんだね。PCの時代みたいなのを、俺の生きているうちに見られるかわからないな。もしかしたら、モバイルフォンか、インターネットかもね。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。