1985年程式設計師是如何寫程式碼的

奇風餘谷發表於2013-05-01

回到 1985 年,我還在給一個設計成給瓶子貼標籤的機器計算機化。製造這個機器的公司用機電控制,將標籤從卷軸上撕下帖到傳送帶傳來的產品(例如洗髮液瓶子)上。整個過程需要工作在毫米級精度上,因為消費者不喜歡沒有完全對齊的標籤。

不幸的是,機電控制不像電腦控制那樣靈活,因此該公司與當地一所工學院(我正在該校學習電子學)簽訂了合同,用 KIM-1 來設計電腦控制原型。另一個學生整合機器,他把傳送帶,標籤發放機制,步進電機控制,還有探測標籤和產品的紅外感應器進行組裝。

我的工作是用 6502 組合語言寫軟體。不幸的是,沒有編譯器,而且 KIM-1 只有一個十六進位制的小鍵盤和一個小的螢幕。因此這意味著要手工寫程式碼,手動編譯和打字。程式碼是這樣子的:(下面兩張圖片,點選均可檢視原始尺寸)

很快電腦控制需要變得更加靈活。程式首先自動校驗:測量卷軸上的標籤自身的長度,測量標籤之間的距離,並且它啟用了一個運算器快速設立”懸掛”距離(標籤要伸出去多少才能讓產品抓到)。

在執行中,它要能自動檢測傳送帶移動的速度,還有當供應卷軸上的標籤缺失時(當一個卷軸意外掉落時就會發生)進行補償和標記。

當然像這樣寫程式碼是一種痛苦。你首先必須寫完程式碼(藍色),然後轉化成機器碼(紅色),並計算每個指令的記憶體地址和相對跳轉地址。那時候我沒有能夠計算十六進位制的計算器,所以我自己完成大部分所需的計算(如在大腦裡計算相對跳轉地址)。

然而它教會了我兩件事:在第一時間寫對程式碼 和 學會在大腦中執行程式碼。後者至今仍然重要。我除錯時還是會先在大腦裡跑一遍。通常情況下我會先於 gdb 或類似的工具,使用我的大腦偵錯程式。KIM-1 裡只有最基本的除錯功能,我在程式裡也寫了點,但是大部分除錯都是盯著輸出(十六進位制螢幕上),(步進器的)行為看,還有在腦子裡執行程式碼。

如果你好奇,這裡是整個程式

PS:一些讀者指出在 1985 年 KIM-1 離先進水平還很遠,而且我們有很多好東西例如編譯器等等。是的。事實上比這還早的時候我用 BASIC 和 ZASM(Z80 編譯器)在 CP/M 下程式設計,但是你是用你已有的條件來幹活的,工學院有空閒的 KIM-1,它有不錯的 I/O,因此它是製作嵌入式控制器的很好的原型系統。

相關文章