1985年 我是如何程式設計的
1985年,我曾經致力於實現一種機器的計算機化,這種機器用來給瓶底貼商標。有家公司製造了這種機電控制的機器,把商標卷在滾輪上,然後貼到傳送帶上的產品(比如洗髮露的瓶底)的表面。整個工作需要精確到毫米級,因為消費者不喜歡看到貼得歪歪扭扭商標。
不幸的是,機電控制不像計算機控制那樣靈活,因此這家公司跟一家本地的技術院校簽約,製造基於KIM-1的計算機控制的機器原型,而我正在此學校學習電子技術。另一名學生也被招進來搞這臺機器,包括傳送帶,商標分貼機制,步進電機控制機制,用於檢測標籤和產品的紅外感測器。
我的工作是用6502組合語言編寫軟體。不幸的是,當時沒有彙編器並且KIM-1只有一個十六進位制鍵盤和一個小小的螢幕。所以,這意味著只能手寫程式碼,手工彙編並把機器碼鍵入進去。程式碼看起來像這個樣子:
很明顯計算機控制將會非常靈活。這個程式首先進行自動測量:卷軸上商標的長度,商標之間的距離,以及確保操作員快速擺好伸出距離(保證商標伸出時剛好能被產品接住)。
它能夠在執行時自動檢測傳送帶的速度,實現運動補償,以及在商標不夠用時(卷軸剝離發生故障)停止傳送帶。
當然,像這樣編寫程式碼是一種痛苦。首先你不得不手寫程式碼(藍色部分),然後把它轉換成機器碼(紅色部分),並且計算每條指令和相對跳轉的記憶體位置。那時我還沒有能夠用於計算十六進位制的計算器,所以自己完成了大部分的計算(相對跳轉則用了心算)。
但是,這教給我兩件事情:第一次就把事情做對和在自己的大腦裡執行程式碼。後一件直到今天仍然重要。在除錯時,我不斷在大腦中執行程式碼,在使用gdb或者其他偵錯程式之前我就用人腦偵錯程式工作了。KIM-1只有最基本的除錯功能,我只把少數編程式序,大多數的除錯工作是檢視輸出(十六進位制螢幕),步進電機的行為,以及在大腦中執行程式碼。
如果感到好奇的話,這裡可以檢視完整的程式。
另外,有人指出就1985年當時來說,KIM-1已經相當落後,並且那時編譯器也已經出現了等等事實。沒錯。實際上,在該工作前我就已經在CP/M上使用BASIC和ZASM(Z80彙編程式),但是你必須受限於條件的限制:這家技術學院有一臺空閒的KIM-1,它有良好的I/O能力,作為一臺嵌入式控制器的原型系統還是相當不錯的。
英文原文:How I coded in 1985
相關文章
- 1985年程式設計師是如何寫程式碼的程式設計師
- 我是6年的程式設計師了程式設計師
- 我是如何閱讀程式設計書的程式設計
- 我是如何提高自己的「程式設計能力」的?程式設計
- 程式設計超過 30 年,我是如何避開倦怠期的?程式設計
- 我是如何學習計算機程式設計的計算機程式設計
- Vacanti:我是如何學習程式設計的程式設計
- 我是如何在 8 周內自學程式設計的程式設計
- 我是如何在8周內自學程式設計的程式設計
- 程式設計師口述:我是如何工作三年後跳槽到美團的?程式設計師
- 零程式設計經驗的我是如何找到工作的程式設計
- 我是程式設計師,我自豪程式設計師
- 我是如何學習一門程式設計技術的?程式設計
- 我是如何自學程式設計的——“3遍讀書法”程式設計
- 我是如何從礦工成為程式設計師的程式設計師
- 盲人程式設計師是如何程式設計的?程式設計師
- 你好,我是程式設計師程式設計師
- 我的丈夫是個程式設計師程式設計師
- 我是如何開始踏上 bash 指令碼程式設計之路的?指令碼程式設計
- 直播程式設計是如何幫我提高效率的程式設計
- 我是如何從煤礦工成為程式設計師的程式設計師
- 視障程式設計師是如何程式設計的?程式設計師
- 我是程式設計師 我為自己代言程式設計師
- 我是程式設計師,我為自己代言程式設計師
- 我的 10 年自學程式設計之路程式設計
- 我是怎樣走上程式設計之路的程式設計
- 我是一隻程式設計師程式設計師
- 相信我,我是程式設計師程式設計師
- 我是如何在自學程式設計9個月後找到工作的程式設計
- 我13歲那年是如何對程式設計師失去信任的程式設計師
- 首批程式設計師他們是如何程式設計的?程式設計師
- 我是印度程式設計師,我要為印度程式設計師辯護程式設計師
- [譯] 我是如何找到谷歌 UX 設計工作的谷歌UX
- 學習程式設計是如何幫我致富的(第一篇)程式設計
- 我的十年程式設計師之路程式設計師
- 我的十年程式設計路 序程式設計
- 【譯】我是一個平庸的程式設計師程式設計師
- 我是一個失聰的程式設計師程式設計師