第3章 軟件分析

第二章 軟件分析 [ 返回 ] 手機

既然打算研究,自然先從軟件開始。

我從軟盤盒內把隨機軟件一張張抽出來仔細看,這時候的軟盤還是5寸的大軟盤,根據軟盤上的標簽來看,這對軟盤中包括兩張AppleDOS盤、一張VisiCalc電子表格軟件、一張看起來像是字處理軟件的盤、還有幾張遊戲盤。

我先試了一下遊戲盤,都比較簡陋,習慣了後世絢麗畫麵的遊戲,乍一看Apple-II上簡陋綠色柵格構成的遊戲畫麵還真不習慣,好在這裏麵居然還有一個貌似有些熟悉的遊戲《HEADON》,雖然畫麵比較簡單,但玩起來頗有一種吃豆子的感覺。

簡單看了一下遊戲盤後,我又把AppleDOS拿出來研究。現在Apple-II的操作係統還比較簡陋,基本上做不了什麽,連目錄也不支持,文件管理功能也基本上沒有,其實隻是一個磁盤操作接口而已,我記得似乎還要過幾年才會出現一個功能比較強的ProDOS,那時候Apple-II上才算有了真正的磁盤操作係統。

簡陋的AppleDOS,陌生的命令行,讓我終於受不了了,反正現在大把空閑時間,閑著也是閑著,幹脆重寫一個操作係統算了。其實也不能完全算重新寫,這要感謝後世發達的網絡,雖然那時的Apple-II早已成為老古董,但是有那麽一些人卻對這些老電腦情有獨鍾,甚至還有專門研究Apple-II的技術研討會和利用Apple-II研發低成本的組織。

我就曾經在網上參加過這樣的組織,還一起分析過如何搭建性能更強的Apple-II操作係統,經過長達一年的反複研討,我們最終拿出一個經過認真取舍和優化的操作係統,在編寫過程中我們還參考了一些微內核Linux的設計思想。當時考慮到Apple-II的硬件配置不高,在編寫操作係統代碼時做了盡可能的優化,最終的核心程序大約隻有1500行。

我仔細回憶了一下,曾經熟悉的代碼很快從腦海中浮現出來,我深吸一口氣,開始按照記憶錄入代碼,兩個多小時過去了,完成了代碼的輸入和初步核對。

我馬上存盤,然後將軟盤的引導區作了修改,以便軟盤啟動後能順利引導新係統。重新啟動電腦,隨著一陣讀盤聲,新係統開始慢慢啟動,很快屏幕上出現了一個“LOGIN:”的提示符,輸入默認用戶名和密碼後,進入了命令行。

這個新係統是根據後世常見的一些磁盤操作係統來設計的,可以支持磁盤、支持層次型目錄,提供文件管理功能,有內存調度功能,還能實現多任務(例如在運行文字處理軟件時需要某些數據,可以通過駐留的管理程序調出需要的其他軟件,查出來後又可以切換回文字處理軟件)。不過現在係統功能還不完整,暫時隻完成了內核部分的代碼,還需要增加一些輔助程序,而且試運行過程中發現了一些小Bug,看起來代碼部分可能還有點問題,還需要做進一步的調試和優化。不過這款操作係統名字我倒是已經想好了,打算叫kylin。

接下來的幾天裏,我天天泡在電腦室,上午是優化調試我的操作係統和增加一些輔助程序,下午則是指點趙叔使用Apple-II和翻譯《BASIC使用指南》。一個星期過去,我的操作係統基本完工,趙叔也學會了Apple-II的基本操作和利用BASIC寫點簡單程序,隻是寫代碼的時候常常還需要看看我寫的手抄版BASIC使用手冊。

“樂行,不錯嘛,這才個把星期就弄出一本手冊來,趙叔會用這新機器可全靠你呀。”趙叔邊翻BASIC手冊邊感謝我。

“沒什麽的,我其實也是看了隨機資料才寫出來的,差不多就是翻譯一下而已。”我對趙叔擺了擺手。

“我覺得你挺不錯的,比廠裏那兩個大學生有本事多了。”趙叔說道:“我看你挺喜歡計算機的,有沒有興趣過來幫趙叔的忙。”

“趙叔,我行嗎?我才多大,廠裏能讓我進?”我有些懷疑。

“沒事,你本來就是廠裏的家屬,廠長是我以前的戰友,趙叔幫你去說說,準沒問題,包在趙叔身上了。”趙叔拍拍胸口,把這事擔下來了。

“趙叔,那這事可真麻煩您啦。”我心裏暗暗高興,嘴上不忘感謝趙叔。

―――――――――――――――――――――――――――――――――――――――――――――

過了兩天,我開始構思給操作係統增加一個C語言編譯器,因為C語言擁有良好的可移植性,這樣我編寫的代碼換到新電腦上很容易就可以利用起來,修改量會很小,畢竟明年IBM-PC就會發布,雖然國內好像要到85年左右才開始引進,這可是未來幾十年的平台,可不是蘋果機能比的。

快到中午時,我還在努力地堆著代碼時,趙叔突然滿臉興奮的衝進電腦室。

“樂行,走,趙叔帶你吃午飯去。”趙叔樂嗬嗬的拉著我就走。

到了廠裏的食堂,趙叔忍不住比平常多多打兩個菜,油汪汪的紅燒肉燉豆角幹,看著就讓人眼饞。

邊吃午飯趙叔邊向我解釋:“這兩天我去找廠領導了,把你寫的這個BASIC手冊拿出來一擺,當時就把人鎮住了。再加上我把你這段時間的一些情況往好了說,蘑菇了兩天,總算把這事辦下來了。樂行,以後你就算是廠裏的職工了,工資每月八塊五,另外考慮到你的情況,廠裏再每月補助四塊。今後你就跟趙叔一個地方上班了,下午我帶你去辦手續去。”

聽到這,我心中暗暗得意,嘴上也不忘記感謝趙叔這幾天的幫助。

吃完午飯,趙叔帶著我到廠裏辦手續,一下午轉下來,人事科、檔案室、財務室……,差不多把所有辦公室都轉完,手續才基本辦完,隻等廠裏上報人事局批準即可正式上班。以後我可以光明正大的到電腦室去用電腦,完全不用擔心別人的閑話了。

第二天,我正式開始C語言編譯器的設計。C語言編譯器主要由六個部分組成,詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成,這裏麵最影響代碼運行效率的是最後兩步,如果能針對某種CPU優化設計,將能大幅提高最終代碼的運行效果。幾天下來,C編譯器正式完工。為了檢查編譯器,我寫了一些測試程序,都正常編譯通過,看來編譯器已經可以正常工作。為了進一步測試編譯器的性能,我以後世記憶中的《挖金子》為藍本,寫了一個C語言版本的,經過編譯,發現可以正常運行,用匯編語言編寫的作對比,運行速度差別不大,看來這款編譯器性能不錯,唯一有點缺憾的是Apple-II處理器性能一般,導致程序編譯速度比較慢,不過還好不影響最終運行效果。

沉迷於紙上BASIC世界的趙叔偶然一抬頭,發現我在玩的《挖金子》,立刻好奇的跑過來觀看。

“樂行,這好像是新遊戲,以前沒看到過。”趙叔好奇的問道。

“嗯,是啊,我才寫的。”正在思考問題的我隨口回答道。

“來,給趙叔拷一份。”一張軟盤伸到我的麵前。

我苦笑了一下,把我的遊戲盤給趙叔複製了一份,趙叔興高采烈的拿著軟盤收到自己的軟盤盒裏,估計是打算下午的時候去玩。

看到C編譯器效果還不錯,我開始對操作係統做進一步優化。首先對內存管理做了一些調整,減少了操作係統內存的占用;其次是增加了磁盤壓縮功能,變相將軟盤容量從160K提升到220K,這樣一張軟盤可以裝下更多的東西。

操作係統和C編譯器完工後,趁著星期日好好休息了一天,我又開始編寫一個重要的軟件――Apple-II上的電子表格軟件。