パスワードを忘れた? アカウント作成
14193358 story
プログラミング

Microsoft、GW-BASICをオープンソース化 65

ストーリー by headless
公開 部門より
hylom 曰く、

Microsoftが1983年リリースのGW-BASICのソースコードをMIT Licenseで公開した(Windows Command Lineの記事 GitHubリポジトリ)。

公開されたソースコードは8088向けアセンブリー言語で書かれたもの。ソースコードのみの公開で、ビルドのための設定ファイルやバイナリなどは公開されていないため、このコードを動かすには別途ビルド環境や実行環境を用意する必要がある。

ソースコードは歴史的・教育的資料として公開するもので、プルリクエストは受け付けないとのこと。当時使われたアセンブラーは初期のMASMとみられるが、現在もビルド可能かどうかについては確認されていないようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ソースコードにはビル・ゲイツの名前が入ってますね
    https://github.com/microsoft/GW-BASIC/blob/master/GWMAIN.ASM [github.com]
    の17行目です

    COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN

    しかし不思議なことに一行目には

    [ This translation created 10-Feb-83 by Version 4.3 ]

    と書いてあります

    どうやらこのソースコードは,オリジナルのものではなくて
    何らかの変換ツールを使って,自動変換で出力したファイルのようです

    不思議に思って調べてみたら
    当時は色々なアーキテクチャ,様々な命令セット(ISA)のCPUが流通していたので
    プログラマはまず独自のアセンブラ言語で記述した共通のソースコードを用意して
    それを独自のISA translatorで 8088向けにアセンブラのソースコードに変換
    それをビルドしていたそうです

    https://devblogs.microsoft.com/commandline/microsoft-open-sources-gw-basic/ [microsoft.com]

    また,変換前のオリジナルのソースコード,及びISA translator はオープンソースとしては公開できない,ということのようです

    • by Anonymous Coward

      > 当時は色々なアーキテクチャ,様々な命令セット(ISA)のCPUが流通していたので

      1983年だと、まだIBM-PCとその完全互換機以外にもDOSレベルの互換機や、CPUも異なるPCが現役だったのでx86ネイティブだけで開発するわけにはいかなかったんでしょうかね。というか、もっと前の8bit PC時代には6502、6809、8080、Z80等のスタンドアロンBASICを出荷していたのでその時代からすでにそういう手法で開発していたということなんだと思いますが。

    • Re: (スコア:0, オフトピック)

      by Anonymous Coward

      新電子立国には、ビル・ゲイツとポール・アレンはAltair用BASICをPDP-10上で開発したと書かれています。
      完成したのが1975年3月だそうですので、「COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN」というのは
      Altair用BASICのCopyrightではないでしょうか?
      (今ならCOPYRIGHT1975-1983にするでしょう)

      • by Anonymous Coward

        GWMAIN.ASMに

        331 PUSH BX ;PUT H ON
        336 XCHG BX,DX ;MAKE SURE WE RETURN [D,E]
        362 ;RETURN WITH [H,L] POINTING THE BOTTOM

        とあるから8080から8086へのトランスレーションでしょう
        インテルがそういうツールを用意していたので、それを使ったのなら、公開できないのも納得いきます

        • by Anonymous Coward on 2020年05月24日 20時32分 (#3821053)

          958行から

          CRDONE:
                  MOV BX,OFFSET KBFLEN+2 ;GET OFFSET
                  MOV AL,BL ;GET COUNT TO SUBTRACT FROM
                  SUB AL,CL ;SUBTRACT
                  MOV CL,AL
                  MOV AL,BH
                  SBB AL,CH
                  MOV CH,AL ;BC:=# OF CHARS CRUNCHED

          8ビットずつごちゃごちゃ計算している部分は CX=BX-CX です
          8086では8ビットずつ計算する必要はないので、コメントとあわせて明らかに8080からのトランスレーションですね

          親コメント
            • by Anonymous Coward

              LINE 40-70に各社ごとの条件付アセンブル用っぽいフラグ定義がありますね。
              TRS,MELCO(Baffaloじゃないほう),NECやOKI、Olivettiなど。BUBLってSFC? FM8?

              • Olivettiはよくわからりませんが、それ以外は
                TRS: TRS-80: Z80
                MELCO: 三菱 MULTI8: Z80
                NEC: PC-8001とか: Z80(μPD780C-1)
                OKI: if800: Z80
                BUBCOM80: Z80(富士通ベンチャーが出したFM8とそっくりスペックなZ80機)
                と、全部 Z80機ですね。
                FM8のF-BASICもMicrosoftだけど、6809だからさすがにソースが共通ってことはないと思う。

                このあたり、MSはソースコード提供だけで移植は各メーカーだと思ってたんですが
                MS自身が移植も手がけてたんですかね。
                当時の8bitパソコンは大多数が MS BASIC で、起動時にMicrosoftのCopyright表示を見たものです。
                MSにあらずんばBASICにあらずってレベルだったよなぁ。日本の大手で独自なのはシャープぐらい?

                親コメント
    • by Anonymous Coward

      このころからマルチプラットホーム開発してたのか
      MSは効率的だな

      • by Anonymous Coward

        マルチプラットフォーム開発というよりは移植作業。
        新しい機種が出るたびに移植作業をしないといけないし
        ソフト移植の成否がその機種の人気につながったりもしたとかで
        PCメーカーからも相当なプレッシャーをかけられてたようだし、
        それを効率よくこなそうとするのは当然の流れだろう。

        • by Anonymous Coward

          プレッシャーかける側は効率と互換性とは対極ですけどね。

  • by Anonymous Coward on 2020年05月24日 16時39分 (#3821004)

    グレッグウィットゥン説で覚えてるが、他にも説があるらしい

  • by Anonymous Coward on 2020年05月24日 17時02分 (#3821008)

    この調子でXENIXも公開して欲しい!と思ったけど、権利をSCOに売ってしまったのでダメかな。。。

  • by Anonymous Coward on 2020年05月24日 17時04分 (#3821009)

    DOSなしで直接ハードウェアで動いたMicrosoft Basic(や派生各社BASIC)と、
    DOS上で動くGW-Basicの違い?

  • by Anonymous Coward on 2020年05月24日 19時41分 (#3821039)

    コミット日付が"38 years ago"になってるの芸が細かいというかなんというか、そもそもどうやったのか
    自PCの日付を変えてもサーバー日付になる気がするし…、管理画面とかで編集できちゃうのか?

    # githubを使ったことがないのでわからない

    • by Anonymous Coward on 2020年05月25日 8時00分 (#3821135)

      git commit --date=<date>

      親コメント
    • by Anonymous Coward

      subversionで管理してたプロジェクトで、githubに移行したのを見たことがあるけど、
      もとのcommitの日付が残ってましたね。

      githubはgitのcommitの日付をそのまま使ってますし、
      gitは好きなcommitをいくらでも作れたはず。

  • by Anonymous Coward on 2020年05月24日 19時51分 (#3821040)

    それより M-BASIC のソースが見たい。

  • by Anonymous Coward on 2020年05月24日 22時00分 (#3821074)

    昔はDOS5とかで動いてたけど最近はwindowsなんだろうか

    • by Anonymous Coward

      昔はDOS5とかで動いてたけど最近はwindowsなんだろうか

      DOS5の上でWin3.1が動いてるんじゃね?

    • by Anonymous Coward

      某統合型のはリブートした時にAndroidベースっぽい挙動見せてたような

  • by Anonymous Coward on 2020年05月25日 0時57分 (#3821109)

    歴史的価値はあるかも知れないけど、教育的価値はあるのか?
    そこらのC言語の入門書とかのがよっぽど教育向けだと思うんだが。
    ここから何を学べるか教えてエロい人!
    # 反面教師にするとか痛いのは要らないのでAC

    • by Anonymous Coward

      Scratchを卒業した子供を実用プログラミング言語に繋げるための橋渡しには良いんじゃない?

    • by Anonymous Coward

      c言語の入門書はc言語の仕様を学ぶためのもの。
      今回の発表されたものはBASICの仕様を学ぶためのもの、だけではない。

    • by Anonymous Coward

      「エロい人!」が充分に痛いからセーフ

    • by Anonymous Coward

      前にもこんな話無かったっけと思ったらSmall Basicだった。
      「Microsoft Small Basic」1.0リリース [developers.srad.jp]

      Microsoft Small Basic [azurewebsites.net]
      Web版もあって手軽だし、ドキュメントも充実している。機能は限定されるが教育用、Basic事始めなら悪くない。

      個人的にはQuickBasic/QBasicを弄りたいかな。より懐かしいのはN8

    • by Anonymous Coward

      > ここから何を学べるか教えてエロい人!

      教養が無い人は、何も学べないでしょうね

    • by Anonymous Coward

      歴史的価値があるなら教育的価値もあるだろ

  • by Anonymous Coward on 2020年05月25日 7時27分 (#3821128)

    オープンソースってアセンブラ公開するのは違和感ある。
    一応アセンブリ言語もソースコードと言うらしいが、機械語と大差ないからソースコードって呼ぶの違和感あるのよね。
    例えば逆アセンブルしたものってソースコードかと言われるとノーだし。

    • by Anonymous Coward

      人間がアセンブラで書いたものならソースコードと呼んで全然問題ないだろう。なんで「ソース」コードと呼んでるか分かってる?

      • by Anonymous Coward

        この手のは(今でも?)コメントやラベルが重要というの分かっていないんだろうね。

        • by Anonymous Coward

          アセンブリで書いたことがない世代だと、逆アセンブルしたものと、人間が書いたアセンブリコードが同等だと思っちゃうんでしょう。

          • by Anonymous Coward

            もしかすると直接OPコードを吐ける熟練のマシン語使いかもしれない。

            • by Anonymous Coward

              熟練じゃなくても、世代によっては当たり前なんだよな。
              アセンブラ使うほどにはメモリ余裕にある環境がなくて、オペコード直接モニタで打ち込んでたよ。
              逆にニモニックは覚えてない。

        • by Anonymous Coward

          MASMなんだから、別コメントにあるとおりマクロも使ってますよ。

          M80とかMASMとか使ってプログラムを書いてたものからすると、
          GNU Assemblerとか貧弱すぎて雑誌のおまけかよと思うくらい。

  • by Anonymous Coward on 2020年05月25日 7時39分 (#3821130)

    .gitignoreのタイムスタンプが1983年2月10日とは

    • by Anonymous Coward

      あんなの好きな日付に設定できるんじゃ無いの?
      裁判の証拠にすら採用できないってうw

    • by Anonymous Coward

      あの頃はメモリも少ないし回線も貧弱だし、大変だったよ

    • by Anonymous Coward

      正直gitって最近できたツールって感じがしない。
      TeXと同じくらい歴史が古くても違和感がない。
      まぁバージョン管理システム自体はそこそこ昔からあったみたいだが。

      • 超普及したバージョン管理システムの先駆け的な RCS が1982年なので、今回のBASICとほぼ同時期ですね。
        で、RCSをネットワーク対応にしたCVSが1990年、分散開発での欠点を解消したSubVersionが2000年。この3つは同系統の進化系列(互換性を考えてるというか使い方がほぼ一緒)

        で、CVSやSubVersionが中央サーバ管理型なのに対し、2000年代になって分散型バージョン管理システムが雨後の竹の子のようにわらわらと出てきて、その一つがGit。
        私の中では、Gitはそんな新参者の one of them から、頭一つ抜き出てきたもの、って印象。

        #手持ちのプロジェクトにはCVS管理のもいくつか残ってる。RCSはさすがに残ってないけど…

        親コメント
        • by Anonymous Coward

          正直、自分の使い方だと1990年台でも十分だなぁ。
          CVSやSubVersionは触れた事ないし、使ったら割と不満ありそうでけど。
          GitHubで開発してる人の大半って別に分散型でなくても構わない人じゃなかろうか。

          • by Anonymous Coward

            CVSは、いまからやるとかなり辛い。(当時はそれでもありがたかったが)
            ファイルやディレクトリの名前変更や削除も、それだけでテクニックとか、CVSでのディレクトリ削除ハックなんて呼ばれるになるぐらいには、初見では難易度が高い。
            覚えてしまえば一緒ではあるが、ファイル消すぐらいの作業でも手順を覚える必要があるぐらいには手間かかる。
            あとファイル一個ずつの管理なので、複数のファイルを一括でコミットしてるつもりでも、それは同一のコミットみたいな概念がない。
            それらが出来るようになったのが SVN。

            まぁ、SVNでも概ね困らないプロジェクトは多いかもしれないが、Gitに慣れてるとSVNのクソ遅さには驚くと思うぞ。
            (いまどきのPCではないが、履歴たまるとコミットに1時間かかるとか普通だった)

        • by Anonymous Coward

          sccs「・・・」

        • by Anonymous Coward

          RCS (やSCCS)はファイル単位管理かつロック必須だったでしょう。
          CVSはネットワーク対応というより、そこが大きいと思った。

          subversionはローカルで使う分には、タグやブランチがCVSより
          退化しただけな感じだったな。

      • by Anonymous Coward

        git はすごく現代的だと思っている。object に sha1 で生成した長い名前つけたり、そもそも sha1 の計算をするために CPU パワー使ったり(今時なら微々たるものだけど)、圧縮・展開したり。git の commit 連鎖を追いかける仕組みだって、メモリー空間が広大だからこそ(今時なら(略))。

  • by Anonymous Coward on 2020年05月25日 9時48分 (#3821170)

    の逆アセンブルはこちら。
    https://www.callapple.org/docs/ap2/special/integerbasic.pdf [callapple.org]

    ウォズの自伝(アップルを創った怪物)によると、BASICインタープリタの実装は、彼がAppleで、最も時間がかかったプロジェクトだったとのこと。

typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...