米Microsoftは、「Microsoft GW-BASIC」を歴史的資料および教育目的で、5月21日(現地時間)にオープンソース化した。
GW-BASICは、米IBMのAdvanced BASIC(BASICA)から派生したBASICインタープリタであり、そもそもBASICA自体がMicrosoft BASICからの移植版となっている。
MicrosoftによるBASICの実装は、同社の創業者であるビル・ゲイツ氏とポール・アレン氏による最初の製品、Altair 8800用のBASICインタプリタまで遡り、同社のBASICはさまざまなプラットフォームに移植され、8088、6502、6809、Z80をはじめとする当時人気の高かったCPUで動作してきた。
今回、オープンソース化されたのは、1983年2月10日時点でのGW-BASICの808xプロセッサ向けのアセンブリ言語によるソースコードで、当時はMS-DOSと同様に開発はすべてアセンブリ言語で行われていたため、Cによって書かれたソースコードは存在しない。
これは、当時は高級言語のコンパイラが非常に高価であり、かつ当時の一般家庭向けPCではスペースとパフォーマンスの都合で高級言語が使用できなかったことに起因する。初期のPC向けソフトウェア開発では、1つひとつのバイトとコマンドが重要であり、多くの開発者はメモリを物理的に確保し、PCのリソースおよび内部動作にアクセスできるよう、すべてアセンブリ言語で開発を行ってきた。
また、当時の一般家庭向けPCで使用されていた、初期のプロセッサの命令セットアーキテクチャ(ISA)は、それぞれ目立った差異がなかったことから、Microsoftはマスター実装のソースコードから、移植用のコードを大量に生成できた。なお、ISAトランスレータはオープンソース化されていない。
この記事は参考になりましたか?
- この記事の著者
- 
                    CodeZine編集部(コードジンヘンシュウブ) CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。 ※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です 

 
              
               
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                              
                               
                              
                               
                              
                               
                              
                               
                              
                               
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
															
														 
															
														 
															
														.png) 
     
     
     
     
     
													 
													 
													 
													 
													 
										
									
 
                    