相關閱讀 |
>>> 技術話題—商業文明的嶄新時代 >>> | 簡體 傳統 |
回到 1985 年,我還在給一個設計成給瓶子貼標簽的機器計算機化。制造這個機器的公司用機電控制,將標簽從卷軸上撕下帖到傳送帶傳來的產品(例如洗發液瓶子)上。整個過程需要工作在毫米級精度上,因為消費者不喜歡沒有完全對齊的標簽。
不幸的是,機電控制不像電腦控制那樣靈活,因此該公司與當地一所工學院(我正在該校學習電子學)簽訂了合同,用 KIM-1來設計電腦控制原型。另一個學生整合機器,他把傳送帶,標簽發放機制,步進電機控制,還有探測標簽和產品的紅外感應器進行組裝。
我的工作是用 6502 匯編語言寫軟件。不幸的是,沒有編譯器,而且 KIM-1 只有一個十六進制的小鍵盤和一個小的顯示屏。因此這意味著要手工寫代碼,手動編譯和打字。代碼是這樣子的:
很快電腦控制需要變得更加靈活。程序首先自動校驗:測量卷軸上的標簽自身的長度,測量標簽之間的距離,并且它啟用了一個運算器快速設立”懸掛”距離(標簽要伸出去多少才能讓產品抓到)。
在運行中,它要能自動檢測傳送帶移動的速度,還有當供應卷軸上的標簽缺失時(當一個卷軸意外掉落時就會發生)進行補償和標記。
當然像這樣寫代碼是一種痛苦。你首先必須寫完代碼(藍色),然后轉化成機器碼(紅色),并計算每個指令的內存地址和相對跳轉地址。那時候我沒有能夠計算十六進制的計算器,所以我自己完成大部分所需的計算(如在大腦里計算相對跳轉地址)。
然而它教會了我兩件事:在第一時間寫對代碼 和 學會在大腦中運行代碼。后者至今仍然重要。我調試時還是會先在大腦里跑一遍。通常情況下我會先于 gdb 或類似的工具,使用我的大腦調試器。KIM-1 里只有最基本的調試功能,我在程序里也寫了點,但是大部分調試都是盯著輸出(十六進制顯示屏上),(步進器的)行為看,還有在腦子里運行代碼。
如果你好奇,這里是整個程序。
PS:一些讀者指出在 1985 年 KIM-1 離先進水平還很遠,而且我們有很多好東西例如編譯器等等。是的。事實上比這還早的時候我用 BASIC 和 ZASM(Z80 編譯器)在 CP/M下編程,但是你是用你已有的條件來干活的,工學院有空閑的 KIM-1,它有不錯的I/O,因此它是制作嵌入式控制器的很好的原型系統。http://news.cnblogs.com/n/176778/
引用那時候人們能用幾十Kb內存的計算機發射航天灰機衛星上天,現在我們拿著動輒1G內存的手機,發射小鳥去撞豬。
網載 2013-05-07 09:18:38
稱謂:
内容:
對于現在的程序員來說,這兩件事都很牛逼。