正文 第三章 軟件分析 文 / 行者樂山
研究一台電腦最方便的辦法當然是從隨機軟件和資料開始,張樂行首先把目標放到了隨機軟件之上。
張樂行從軟盤盒內把隨機軟件一張張抽出來仔細看,這時候的軟盤還是5英吋的大盤,根據軟盤上的標籤來看,這對軟盤中包括兩張appledos盤、一張visicalc電子錶格軟件、一張看起來像是字處理軟件的盤,讓他沒想到的是居然還有幾張遊戲盤,真不知道這電腦怎麼買回來的。
按照習慣張樂行先試了一下遊戲盤,畢竟現在還只是80年,遊戲畫面還非常簡陋,習慣了後世絢麗畫面遊戲的他,乍一看apple-ii上簡陋綠色柵格構成的遊戲畫面還真不習慣,好在這裡面居然還有一個貌似有些熟悉的遊戲《headon》,雖然畫面已經比較簡單,但玩起來卻有一種吃豆子的感覺。
簡單看了一下遊戲盤後,張樂行又把appledos拿出來研究。這系統相當古老,靠著隨機手冊,張樂行才搞明白這時候列目錄的命令不是dir,而是catalog,而且appledos操作系統還比較簡陋,能實現的功能不多,就連目錄也不支持,文件管理功能也基本等於沒有,實質上只能算是個磁盤操作的接口而已。張樂行記得似乎還要過幾年才會出現一個功能比較強的prodos,那時候蘋果ii上才算有了真正的磁盤操作系統。
簡陋的appledos,陌生的命令行,讓張樂行終於受不了了,他想起自己曾設計過的那個操作系統來,依靠前人的經驗教訓和眾多網友的熱心支持,這套歷經多次優化的操作系統可以說是蘋果ii上功能和性能最強大的。雖然經過這麼久,但長達三十六次的優化讓張樂行對操作系統的源代碼記憶猶新,既然眼下有時間,手頭的appledos又不好用,張樂行決定馬上動手寫出來。
完整的源代碼比較長,經過最終優化後的核心代碼有大約1500行,張樂行認真回想了一下,熟悉的代碼很快從腦海中浮現出來,他呼了一口氣,開始按照記憶錄入代碼。兩個多小時過去,代碼的輸入完成了,張樂行認真核對一遍並修改了幾處打錯的地方,感覺應該沒什麼問題了於是馬上存盤,然後將軟盤的引導區作了修改,以便軟盤啟動後能順利引導新系統。
重新啟動電腦,張樂行趁著系統啟動的空隙,揉了揉有些酸脹的胳膊,動了動有些僵硬的手腕。身體活動開了,新系統也讀完盤開始啟動,很快屏幕上出現了一個「login:」的提示符,張樂行輸入默認的用戶名和密碼後,一個嶄新的命令行出現了。
這個新的操作系統是根據後世常見的一些磁盤操作系統來設計的,可以支持磁盤、支持層次型目錄,提供文件管理功能,有內存調度功能,還能實現多任務(例如在運行文字處理軟件時需要某些數據,可以通過駐留的管理程序調出需要的其他軟件,查出來後又可以切換回文字處理軟件)。不過現在系統功能還不完整,暫時只完成了內核部分的代碼,還需要增加一些輔助程序,而且試運行過程中發現了一些小bug,看起來也許是模擬器和實機有差距的緣故,系統還需要做進一步的調試和優化。不過這款操作系統名字張樂行倒是已經想好了,打算用好事者們起的那個名稱kylin。
凝聚著眾人心血的kylin系統穿越了厚重的時空,出現在這個蘋果ii還是如日中天的時代,張樂行的人生也開始有了細微的變化。
接下來的日子裡每天的行程都安排的很緊密,張樂行天天泡在電腦室,上午的時間用來優化調試操作系統和為操作系統增加一些輔助程序,下午的時間則用來指點趙叔使用蘋果ii和翻譯《basic使用指南》。一個星期過去,張樂行的操作系統kylin基本完工,趙叔也學會了蘋果ii的初步操作,還能利用蘋果ii上的rom-basic編點簡單程序,當然寫代碼的時候常常還需要看看張樂行寫的手抄簡化版basic使用手冊。
「樂行,不錯嘛,這才個把星期就弄出一本手冊來,趙叔會用這新機器可全靠你呀。」趙叔邊翻basic手冊邊感謝我。
張樂行對趙叔擺擺手,謙虛道:「沒什麼的,我其實也是看了隨機資料才寫出來的,那上面其實挺詳細的,我只是撿重要的地方翻譯了一下而已。」。
「我覺得你挺不錯的,起碼比廠裡那兩個大學生有本事多了,他們就啥也弄不明白。」趙叔笑著說道:「我看你挺喜歡計算機的,有沒有興趣過來幫趙叔的忙。」
「趙叔,這能行嗎?我才多大,廠裡能讓我進?」張樂行心裡很高興,嘴上卻故意表現出一些懷疑。
「沒事,你本來就是廠裡的家屬,廠長是我以前的戰友,趙叔幫你去說說,準沒問題,包在趙叔身上了。」趙叔拍拍胸口,算是把這事擔下來了。
「趙叔,那這事可真麻煩您啦。」張樂行感謝道。
……
過了兩天,張樂行感覺用彙編寫的程序可移植性不太好,而basic寫的程序運行速度又太慢,不由的開始懷念起自己比較擅長的c語言來,可惜蘋果ii上沒有,好在張樂行對標準c很熟悉,他決定自己動手來解決這個問題,於是張樂行有了新的開發任務——為操作系統增加一個c語言編譯器。因為c語言擁有良好的可移植性,這樣張樂行編寫的很多代碼換到新電腦上可以很容易就可以利用起來,修改量一般不會太大,畢竟明年ibm-pc就會發佈,雖然國內好像要到85年左右才開始引進,要知道這可是未來幾十年的平台,可不是蘋果機能比的。
快到中午時,沉浸在c語言世界的張樂行還在努力地堆著代碼,趙叔突然滿臉興奮的衝進電腦室來,拉著張樂行的手就往外走,邊走還邊樂呵呵的說道:「樂行,走,趙叔帶你吃午飯去。」。
到了廠裡的食堂,心情相當不錯的趙叔比平常多打兩個菜,油汪汪的紅燒肉燉豆角干,看著就讓人眼饞,張樂行的食慾也比往常好了很多。打完飯菜,趙叔拉著張樂行來到一個靠牆的餐桌,放好飯盆和菜盆,趙叔開始邊吃邊聊。
「這兩天我去找廠領導了,把你寫的這個basic手冊拿出來一擺,當時就把人鎮住了。再加上我把你這段時間的一些情況往好了說,蘑菇了兩天,總算把這事辦下來了。樂行,以後你就算是廠裡的職工了,工資每月八塊五,另外考慮到你的情況,廠裡再每月補助四塊。今後你就跟趙叔一個地方上班了,下午我帶你去辦手續去。」趙叔解釋道。
聽到這,張樂行心中十分高興,自己最緊迫的問題終於得到解決,當然他沒忘記感謝趙叔這幾天的努力。
吃完午飯,趙叔帶著張樂行到廠裡辦手續,一下午轉下來,人事科、檔案室、財務室……,差不多把所有辦公室都轉完,手續才基本辦完,只等廠裡上報人事局批准即可正式上班。以後張樂行終於可以光明正大的到電腦室去用電腦,再也不用擔心別人說閒話了。
第二天,張樂行正式開始c語言編譯器的設計。c語言編譯器主要由六個部分組成,詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成,這裡面最影響代碼運行效率的是最後兩步,如果能針對某種cpu優化設計,將能大幅提高最終代碼的運行效果。幾天下來,c編譯器正式完工。為了檢查編譯器,張樂行寫了一些測試程序,都正常編譯通過,看來編譯器已經可以正常工作。為了進一步測試編譯器的性能,張樂行以記憶中的《挖金子》為藍本,寫了一個c語言版本的,經過編譯,發現運行相當正常,和用彙編語言編寫的作對比,感覺運行速度差別不大,看來這款編譯器性能不錯,唯一有點缺憾的是蘋果ii處理器性能很一般,結果程序的編譯速度比較慢,不過好在不影響最終的運行效果。
沉迷於紙上basic世界的趙叔偶然一抬頭,發現張樂行在玩的《挖金子》(其實張樂行只是在對比不同語言編寫出來程序的運行效率),立刻跑過來觀看。
「樂行,這是什麼玩意,看起來好像很有趣的。」趙叔好奇的問道。
「嗯,這是遊戲,我才寫的。」正在思考問題的張樂行隨口回答道。
「來,給趙叔拷一份。」一張軟盤伸到張樂行的面前。
張樂行回過神來,苦笑了一下,利用自己編寫的磁盤對考工具把遊戲盤給趙叔複製了一份,趙叔興高采烈的拿著軟盤收到自己的軟盤盒裡,估計是打算下午的時候去玩。
看到c編譯器效果還不錯,張樂行開始對操作系統做進一步優化。首先對內存管理做了一些調整,減少了操作系統內存的佔用;其次是增加了簡單的磁盤壓縮功能,變相將軟盤容量從,這樣一張軟盤可以塞下更多的東西。
操作系統和c編譯器完工後,趁著星期日好好休息了一天,張樂行又開始新的目標對準了隨機軟件中的visicalc電子錶格軟件。
;