英文:JGC,編譯:伯樂(lè)在線 - 奇風(fēng)余谷
回到 1985 年,我還在給一個(gè)設(shè)計(jì)成給瓶子貼標(biāo)簽的機(jī)器計(jì)算機(jī)化。制造這個(gè)機(jī)器的公司用機(jī)電控制,將標(biāo)簽從卷軸上撕下帖到傳送帶傳來(lái)的產(chǎn)品(例如洗發(fā)液瓶子)上。整個(gè)過(guò)程需要工作在毫米級(jí)精度上,因?yàn)橄M(fèi)者不喜歡沒(méi)有完全對(duì)齊的標(biāo)簽。
不幸的是,機(jī)電控制不像電腦控制那樣靈活,因此該公司與當(dāng)?shù)匾凰W(xué)院(我正在該校學(xué)習(xí)電子學(xué))簽訂了合同,用 KIM-1 來(lái)設(shè)計(jì)電腦控制原型。另一個(gè)學(xué)生整合機(jī)器,他把傳送帶,標(biāo)簽發(fā)放機(jī)制,步進(jìn)電機(jī)控制,還有探測(cè)標(biāo)簽和產(chǎn)品的紅外感應(yīng)器進(jìn)行組裝。
我的工作是用 6502 匯編語(yǔ)言寫(xiě)軟件。不幸的是,沒(méi)有編譯器,而且 KIM-1 只有一個(gè)十六進(jìn)制的小鍵盤和一個(gè)小的顯示屏。因此這意味著要手工寫(xiě)代碼,手動(dòng)編譯和打字。代碼是這樣子的:
很快電腦控制需要變得更加靈活。程序首先自動(dòng)校驗(yàn):測(cè)量卷軸上的標(biāo)簽自身的長(zhǎng)度,測(cè)量標(biāo)簽之間的距離,并且它啟用了一個(gè)運(yùn)算器快速設(shè)立”懸掛”距離(標(biāo)簽要伸出去多少才能讓產(chǎn)品抓到)。
在運(yùn)行中,它要能自動(dòng)檢測(cè)傳送帶移動(dòng)的速度,還有當(dāng)供應(yīng)卷軸上的標(biāo)簽缺失時(shí)(當(dāng)一個(gè)卷軸意外掉落時(shí)就會(huì)發(fā)生)進(jìn)行補(bǔ)償和標(biāo)記。
當(dāng)然像這樣寫(xiě)代碼是一種痛苦。你首先必須寫(xiě)完代碼(藍(lán)色),然后轉(zhuǎn)化成機(jī)器碼(紅色),并計(jì)算每個(gè)指令的內(nèi)存地址和相對(duì)跳轉(zhuǎn)地址。那時(shí)候我沒(méi)有能夠計(jì)算十六進(jìn)制的計(jì)算器,所以我自己完成大部分所需的計(jì)算(如在大腦里計(jì)算相對(duì)跳轉(zhuǎn)地址)。
然而它教會(huì)了我兩件事:在第一時(shí)間寫(xiě)對(duì)代碼和 學(xué)會(huì)在大腦中運(yùn)行代碼。后者至今仍然重要。我調(diào)試時(shí)還是會(huì)先在大腦里跑一遍。通常情況下我會(huì)先于 gdb 或類似的工具,使用我的大腦調(diào)試器。KIM-1 里只有最基本的調(diào)試功能,我在程序里也寫(xiě)了點(diǎn),但是大部分調(diào)試都是盯著輸出(十六進(jìn)制顯示屏上),(步進(jìn)器的)行為看,還有在腦子里運(yùn)行代碼。
PS:一些讀者指出在 1985 年 KIM-1 離先進(jìn)水平還很遠(yuǎn),而且我們有很多好東西例如編譯器等等。是的。事實(shí)上比這還早的時(shí)候我用 BASIC 和 ZASM(Z80 編譯器)在 CP/M 下編程,但是你是用你已有的條件來(lái)干活的,工學(xué)院有空閑的 KIM-1,它有不錯(cuò)的 I/O,因此它是制作嵌入式控制器的很好的原型系統(tǒng)。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。