MicrosoftがMS-DOSとWordのソースコードを一般公開、サイズはなんと300KB未満 ~ GIGAZINE
Microsoftが、コンピュータ歴史博物館の協力の元、歴史上で初めて初期のMS-DOSとWordのソースコードを公開することを明かしました。
2014年3月と少々古い記事ですが、マイクロソフトが初期のMS-DOSとWordのソースコードを
公開すると発表していました。
私はMS-DOSはVer 2.11から触り始め、Windowsに移行するまで3.xで過ごしていました。
Windowsは3.1から入り、NT3.1→NT3.5と触っている内にWindows 95が発売されたので、
95へと移行、その後しばらく95系を触りつつも、NT3.51やNT4.0をメインで使っていました。
話はそれましたが、今回はMS-DOSの話。
当時はパッケージソフトに関わっていた時期で、HDDの普及前で5インチFDや3.5インチFDで
ブートアップするソフト販売するにあたって、OS無しで販売してユーザー側でMS-DOSを
書き込んでもらうというという作業が必要となっていました。PC-9801の時代です。
一部ではブート用のMS-DOS互換の自社DOSを作っている所も有ったので、私もその方向で
動きました。
私と部下一人の二人で土日も休みなしで毎日最終電車に走り込む生活を一カ月、既存の
開発は止められないので、二人でこっそり。休日出勤&残業時間で時間外労働が余裕で
200時間/月を超えるという、当時のジャパニーズ技術者の平均的な社畜労働の上で
MS-DOS互換OSの完成にこぎつけました。
OSとしては本当に最低限の機能だけの代物です。
ブートしてメモリ環境の構築してconfig.sysとautoexec.batを解析して実行するだけです。
といってもHIMEM.SYS位しかロードするものは有りませんでしたが。
コマンドライン等のシェルはなく、自社ソフトに実行を移行後、後は呼び出されるファンクション
コール(INT 21h等)を処理するだけという流れです。ディスクアクセスよりも、メモリブロックの処理
の方が意外と大変だったような印象が残っています。デバッガも使えないし、ICEも無かったので。
このMS-DOS互換OSを私と部下君の二人で作りました。
何の言語で作ったかというとフルアセンブラです。
多分当時Turbo Assembler(TASM)を使っていたと思います。
エディタはVzエディタを使用、環境が色々と一番尖がっていた次期だったと思います。
ファイラーはFDを使いつつ、時々ECだったかな?
始めの頃はフロッピーディスクのブートセクタをアセンブラで書くのが面倒で、ECのセクタ編集機能で、
ハンドアセンブルしながら16進数で書き込んでいたのを覚えています。ブートセクターのライターを
作るのが面倒という理由だけで、FATとDIRを読み出してしかるべきファイルをブートさせるというコードを
ハンドアセンブルするという、今考えたらかなりキチガイな発想を持っていました。
当時そのぐらい86コードが頭に入っていたんです。
会社側からすると、私が突然「互換OS作るよ」の一言を言って勝手に作り始め、しかも一カ月で
仕上げてくれたのですから大喜びです。その後幾つのソフトに使われていたのか分からない位、
使われていた記憶が有ります。
あれだけ苦労を掛けてくれたMS-DOSも、今はもうソースコードが歴史博物館入りで公開される
ような代物となって、それだけ時と技術が進んだんだね~と、ちょっと遠い目になります。
今でもZ80や86/386コードは多分書けますし、下手をすると最近の新しい言語よりも得意かも?(;´∀`)
とは言え、今更もうフルアセンブラでソフトを書きたいとは思いませんが・・・。
昔のハードは単純でしたからね。
特にストレージがFDだけだった頃は、INT 1BhやINT 21hで簡単に直にアクセス出来ていましたし、
VRAMは自分で直接読み書きするのが当たり前という時代でした。
一番ハードを操っていると実感が有った時代かもしれません。
テストでコマンドラインでポートへ直接コマンドをOUTしてみて、ヘッドが「ういーん」とシークすると
嬉しいもんですよ。当時フォーマット解析してメディア丸ごと完全ミラーコピーするツールとか
自作していたものです。
再帰のプログラムを組んでいて、スタックがオーバーしてとんでもない事になったとかも懐かしい思い出です。
MS-DOSのソースコードの記事を見つけ、こんな良き時代の事を思い返させられました。
- 関連記事
-
- 2016/06/18(土) 00:27:36|
- 携帯
-
| トラックバック:0
-
| コメント:6
ICEとは懐かしい。
頭の片隅に追いやられてた単語でしたが当時はそんなものもありましたね。
巨大な8インチFDやカセットテープとかに記録してた時代もありましたが。
- URL |
- 2016/06/18(土) 16:29:55 |
- 通りすがり #SFo5/nok
- [ 編集]
MSX-DOSの思い出...
組み込み向けには互換DOSを採用することが多かったですよね。
HIMEMが使えるのならメモリは640kB超えてからですね。
再起...再帰かな?デバドラやら無茶していた時代ですね。
Configへのメモリの組み込み順でメモリの空きが違ったり、起動しなかったり...
Win3.1時代はネットワークがDOSドライバなのでConfigチマチマ弄ってました。
MEMMAKER使えるようになって楽になりましたが。
元記事のWORDはDOS時代の物ですよね。日本語版てあったのかなぁ。
- URL |
- 2016/06/19(日) 21:39:26 |
- Beep #-
- [ 編集]
>通りすがりさん
私はICEを使えるような所ではなかったので、基本的にはデバッガ一辺倒でした。
ブレークポインタを置いたり、画面に通過マークを表示したり、考えられる限り原始的なデバッグ方法をしていました。
元々カセット時代からの人ですけど、その頃は記憶装置にはプログラムからのアクセスはやってませんでしたね。
>Beepさん
え?MSX-DOS?
MS-DOSじゃなくて??
もう一つややこしいアスキーなアレじゃないですか・・・いや、それもZ80触って組んでたことは有りますけど。
初代の頃は手を出していなくて、MSX2になってからですけどね。
御察しの通り640KBを超えてからですね。
それまではIOデータ等の独自仕様での512-640KB領域を勝手に切り替えての
拡張だったので、手を出せなかったという事も有ります。
あの時代にはHIMEMだけではなくUMBとか怪しげなメモリ領域も駆使して頑張ってましたね。
9801だとサウンドボードのROMとぶつかるとか、色々懐かしい思い出です。
後にDOS-Extenderを使わずに、DCPIで直に32bit空間で動くプログラムを
開発し始めた頃は感動したものです。
今となっては32bitって下位レベルのものという扱いですけど・・・。
- URL |
- 2016/06/20(月) 03:04:58 |
- 鈴 #GpEwlVdw
- [ 編集]
>鈴さん
>御察しの通り640MBを超えてからですね。
>それまではIOデータ等の独自仕様での512-640MB領域を勝手に切り替えての
細かいようですが「MB」ではなく「KB」ですね。
IOバンク方式を使うには512(もしくは640)KBまでメモリを増設した上で、
Dipスイッチで512KB以降の空間を切り離せるように設定しておく必要がありましたね。
IOバンク切り替えの4MBボードを使ったことがありますが、起動が遅いこと遅いこと…
起動時にアクセス可能なすべてのメモリをチェックするのでPC-9801VM2だと数分かかりました。
懐かしい思い出ですね。
- URL |
- 2016/06/20(月) 08:36:12 |
- ATARIman #Y2n9T2rA
- [ 編集]
>ATARImanさん
MB→KB修正しましたw
ご指摘ありがとうございます。
そう言えばIOバンクのメモリ拡張って、9801F2とか辺りの384KB位の時代に始まった事も有り、
640KB時代にはメインメモリとアサインがぶつかるようになってしまいましたね。
それにしても、VM2の時代と言えば2MBの拡張ボードで標準だったように思いますので、
あの当時に4MBを増設されていたとは、なかなか豪勢な仕様でしたね。
使用用途は主にRAM Diskだと思いますが、色々捗って快適だったのではないかなと思います。
- URL |
- 2016/06/20(月) 16:13:36 |
- 鈴 #GpEwlVdw
- [ 編集]
MSX-DOSはROMから起動するのでシステムディスク要らず(というか2ドライブ構成が少なかった)
BASICからも行き来できて便利でした。
I・OデータがI・Oバンクを進めていたのに対してメルコはEMSを進めていましたね。
Lotus1-2-3がEMSに対応していた程度ですが、ジャストシステムの一太郎が自社製のEMSメモリボードだしたりで
EMSに流れていきましたね。
(最近ではEMSというと国際郵便とかダイエットとか)
RAMディスクより当時はHDDもまだ低速だったため、ディスクキャッシュに使うと日本語変換が捗りました。
- URL |
- 2016/06/20(月) 23:53:29 |
- Beep #-
- [ 編集]