第五章 計算機中的精靈 最早的操作系統

CP/M是個佔用5K內存的操作系統,它為你提供的操作系統功能恰到好處,不多也不少。

——個人計算機軟體的開拓者艾倫·庫珀

在微機產業的形成過程中,可以稱得上一種技術標準的最早的操作系統,實際上在Altair計算機問世之前就已經出現了。

CP/M操作系統並不是幾十名軟體專業人員經過多年有計畫的嘔心瀝血研究而得出的成果。與早期開發的大多數重要軟體一樣,CP/M操作系統是根據一個人的思路開發而成的。

1972年中期,加利福尼亞州蒙特里的美國海軍研究生院計算機學教授加里·基爾多爾在告示牌上看到一則廣告,上面寫著「出售微機,價格25美元」。廣告中所說的產品是英特爾4004晶元,它實際上是個微處理器,它是世界上最早的微處理器,不過基爾多爾認為它的價格真便宜,於是決定買一個。

雖然許多微機公司的創始人並不具備業界領導者的典型形象,而加里·基爾多爾則根本不想成為這些人當中的一員。基爾多爾從華盛頓州立大學獲得博士學位後,便移居加州的帕西菲克格羅夫市。他喜歡這個海濱城市的旖旎風光,那籠罩在薄霧蒙蒙之中的恬靜環境使他感到非常舒適。基爾多爾說話溫和,充滿著令人敬佩的智慧,平時總是穿著隨意的運動衫和牛仔褲。他是個嗜圖如命的人。當他講話時,如果想要解釋某個觀點,他常常會找出一支粉筆或鉛筆,用畫圖來說明問題。70年代初,基爾多爾非常喜歡海軍研究生院的工作。他喜歡從事教育工作,因為這項工作使他有時間從事編程工作。他沒有特殊的經營技巧,也不想離開學校,比較完全安於現狀。

加里·基爾多爾還喜歡擺弄計算機,他對計算機懂得很多,無論在理論上還是在實踐上,都稱得上是內行。在華盛頓州立大學時,他與另外一個人一直負責伯勞斯(Burroughs)公司的B5500計算機的運行和維護。後來,當該學校購買了新的CDC6400計算機時,由於基爾多爾具備豐富的計算機知識,受到了大家的尊重,因此由他擔任採購該計算機的技術顧問。

另一位負責B5500計算機維護的人是迪克·哈姆雷特。他與另外3個人在西雅圖創辦了一家計算機分時服務公司,公司使用數字設備公司的PDP-10計算機和數字設備公司開發的新軟體。開辦這個公司的目的是讓人們可以遠程登錄到PDP-10計算機,以便充分利用該計算機的功能。哈姆雷特創辦的公司名叫計算機中心公司,即C立方公司(CCubed)。有一段時期,兩位10幾歲的孩子比爾·蓋茨和保羅·艾倫在公司員工下班後就在那裡工作,查找數字設備公司的軟體中存在的錯誤。

英特爾4004晶元的25美元價格原來是批量購買價,而且微處理器本身並沒有什麼用處,它必須裝入計算機後才能發揮其作用。基爾多爾買了一份英特爾4004微處理器的說明書,在學校里的大型計算機上編寫了一個程序,來模擬4004的功能,然後開始編寫和測試4004的代碼,以便確定廉價買來的4004晶元究竟能夠幹什麼。

基爾多爾回憶說,他的父親在西雅圖開辦了一所導航學校,他總想有一台計算機能夠計算導航三角課題。基爾多爾編寫了一些在4004晶元上運行的算術運算程序,並且主觀地認為他能提供一些父親可以使用的程序。他擺弄了一下4004晶元,試圖了解它究竟具備何種能力,可以達到什麼樣的運行速度和精度。他發現這種處理器的功能非常有限,但是他仍然喜歡使用它。此後不久他用一些4004程序向英特爾公司換回一個開發系統,也就是一台用4004晶元組裝的小型計算機,它實際上是最早的真正微機之一,儘管它不是個商用產品。

1972年基爾多爾參觀英特爾公司的微機業務部時,他驚奇地發現這家領先的半導體公司給整個微機業務部划出的一塊地方還不到普通人家的廚房那麼大。他在那裡見到了一位非常聰明的編程員,名叫湯姆·皮特曼,他不是英特爾公司的僱員,與基爾多爾一樣,他對4004晶元也很感興趣,並且已經為它編寫了軟體。基爾多爾和皮特曼與英特爾公司的員工相處得很好,基爾多爾每周用一個休息日以顧問身份開始為英特爾公司工作。藉助這個新職務,他對4004晶元軟體又作了幾個月的調整,直到他「對該晶元著迷到幾乎不能自拔為止。」這時他意識到他將永遠不會回去給大型計算機公司工作了。

不久基爾多爾又開始從事與英特爾公司開發的第一個8位微處理器8008相關的編程工作。他採取的仍然是二級軟體開發方法,也就是在小型計算機上為微機處理器開發軟體,這是蓋茨和艾倫使用的方法。與保羅·艾倫一樣,基爾多爾先在較大的計算機上編寫模擬運行微處理器的程序,然後使用模擬的微處理器和它的模擬指令集,編寫在微機上運行的程序。但是,與蓋茨和艾倫不同的是,基爾多爾可以利用開發系統提供的方便,一邊工作,一邊在開發系統上進行測試,以檢驗自己開發的軟體是否可行。

僅僅幾個月時間,基爾多爾便在大型機語言PL/I的啟發下,開發成功稱為PL/M的語言,這是比BASIC更為複雜和巧妙的語言。基爾多爾在他的教室後面安裝了軟體開發系統,實際上建立了海軍研究生院的第一個微機實驗室。好奇的學生下課後常常走到教室後面,在開發系統上操作幾個小時。當英特爾公司將Intellec-8系列晶元從8008升級為8080,並且為基爾多爾提供了一台監視器和高速紙帶閱讀機時,這位教授和他的學生便擁有了一台可以與早期Altair計算機相媲美的系統,而這時尚未有人提出Altair計算機的開發思路。

但是,基爾多爾意識到他仍然缺少成功的計算機系統所需的一個重要部件——有效的外部存儲設備。當時大型計算機上常用的外存設備有兩種,一是紙帶閱讀機,一是磁碟驅動器。鑒於微處理器的運行速度非常慢,因此紙帶存儲器就顯得太笨拙,而且價格昂貴。基爾多爾打算買一台磁碟驅動器,並且編寫一段小程序,以便從舒加特公司那裡換取一台磁碟驅動器。這裡有一個必須解決的問題,那就是為了使磁碟驅動器能夠工作,需要有一個特殊的專門控制器,即一個電路板來處理計算機與磁碟驅動器進行通信的複雜任務。

基爾多爾曾經多次試圖設計這樣一個控制器。他還試圖開發一個介面,使他的計算機系統能夠與盒式錄音機相連接。但是他發現他的編程能力已經不能解決兩台機器之間介面的複雜工程設計問題。控制器的設計項目失敗了,基爾多爾認為他完全不適合硬體的開發。儘管如此,在技術上仍然顯示了他的遠見卓識。直到許多年之後,磁碟驅動器方才普遍應用於微機。最後到了1973年底,基爾多爾找到了他在華盛頓州立大學的一位朋友約翰·托羅德(後來他成立了自己的微機公司),他對朋友說:「如果我們能夠使磁碟驅動器運轉起來,那麼它將成為一個非常有用的設備。」托羅德果然使磁碟驅動器能夠在微機上運行了。

與此同時,基爾多爾對軟體作了進一步的改進。1973年底,正當他在磁碟驅動器問題上不知所措的這幾個月中,基爾多爾花了幾周時間用他的PL/M語言編寫了一個簡單的操作系統。他將它命名為CP/M操作系統,這是英文微機控制程序(trramfor Miputers)的縮寫。雖然CP/M提供了將信息存儲在磁碟上時所需的軟體,但是它仍需作進一步的改進。

CP/M操作系統的某些改進是在好奇心的驅使下進行的。基爾多爾一方面繼續從事教學工作,一方面參與了本·庫珀從事的一個項目開發。庫珀是舊金山的一位硬體設計師,他曾與喬治·莫羅共同開發了磁碟存儲器系統,後來又創辦了他自己的公司,即微型化公司。庫珀想,他能夠開發一種用於星占圖的機器,並且一定可以賺大錢,於是他讓基爾多爾來幫助從事這個項目的開發。兩個人對星占學都沒有興趣,也不相信星占術,認為這都是無稽之談,不過庫珀對該產品已經形成了一定的思路,而基爾多爾則想做一些星宿位置的數學計算。他們也考慮這項產品的開發可能會在商業上取得成功。這樣,庫珀便開始進行硬體的設計,基爾多爾則負責編寫程序,最後他們終於推出了所謂的「星占術機器」,它安放在雜貨店裡,像電子遊戲機那樣吃進兩角五分錢硬幣,然後列印出星占圖。在基爾多爾看來,這種機器真是妙極了。

但是結果事與願違,星占術機器在經營上一敗塗地。製造商將這種機器放在舊金山的許多地方,基爾多爾與庫珀兩個人感到非常得意的機器上的漂亮旋鈕和撥號盤卻激怒了用戶,原因很簡單,用戶把兩角五分錢硬幣放進機器,而列印星占圖的紙卻出不來。基爾多爾與庫珀為了排除故障而疲於奔命。基爾多爾後來只能哀嘆說,這是一次徹底的失敗。

儘管星占術機器開發的結果令人失望,但是這使基爾

上一章目錄+書簽下一頁