1985年我是如何写代码的

开发 项目管理
回到1985年,我还在给一个设计成给瓶子贴标签的机器计算机化。制造这个机器的公司用机电控制,将标签从卷轴上撕下帖到传送带传来的产品(例如洗发液瓶子)上。整个过程需要工作在毫米级精度上,因为消费者不喜欢没有完全对齐的标签。

回到1985年,我还在给一个设计成给瓶子贴标签的机器计算机化。制造这个机器的公司用机电控制,将标签从卷轴上撕下帖到传送带传来的产品(例如洗发液瓶子)上。整个过程需要工作在毫米级精度上,因为消费者不喜欢没有完全对齐的标签。

不幸的是,机电控制不像电脑控制那样灵活,因此该公司与当地一所工学院(我正在该校学习电子学)签订了合同,用KIM-1来设计电脑控制原型。另一个学生整合机器,他把传送带,标签发放机制,步进电机控制,还有探测标签和产品的红外感应器进行组装。

[[71849]]

我的工作是用6502汇编语言写软件。不幸的是,没有编译器,而且KIM-1只有一个十六进制的小键盘和一个小的显示屏。因此这意味着要手工写代码,手动编译和打字。代码是这样子的:(下面两张图片,点击均可查看原始尺寸)

很快电脑控制需要变得更加灵活。程序首先自动校验:测量卷轴上的标签自身的长度,测量标签之间的距离,并且它启用了一个运算器快速设立”悬挂”距离(标签要伸出去多少才能让产品抓到)。

在运行中,它要能自动检测传送带移动的速度,还有当供应卷轴上的标签缺失时(当一个卷轴意外掉落时就会发生)进行补偿和标记。

当然像这样写代码是一种痛苦。你首先必须写完代码(蓝色),然后转化成机器码(红色),并计算每个指令的内存地址和相对跳转地址。那时候我没有能够计算十六进制的计算器,所以我自己完成大部分所需的计算(如在大脑里计算相对跳转地址)。

然而它教会了我两件事:在***时间写对代码 和 学会在大脑中运行代码。后者至今仍然重要。我调试时还是会先在大脑里跑一遍。通常情况下我会先于gdb或类似的工具,使用我的大脑调试器。KIM-1里只有最基本的调试功能,我在程序里也写了点,但是大部分调试都是盯着输出(十六进制显示屏上),(步进器的)行为看,还有在脑子里运行代码。

如果你好奇,这里是整个程序

PS:一些读者指出在1985年KIM-1离先进水平还很远,而且我们有很多好东西例如编译器等等。是的。事实上比这还早的时候我用BASIC和 ZASM(Z80编译器)在CP/M下编程,但是你是用你已有的条件来干活的,工学院有空闲的KIM-1,它有不错的I/O,因此它是制作嵌入式控制器的很好的原型系统。

英文原文:JGC

译文连接:DEEPFISH

责任编辑:林师授 来源: DEEPFISH
相关推荐

2018-12-19 17:20:17

2015-05-21 10:43:36

工程师如何写代码

2020-12-14 08:17:50

代码

2011-05-26 09:39:53

程序

2010-01-04 10:07:03

程序员

2024-10-29 09:25:00

2018-02-25 11:00:34

代码开发程序员

2020-07-15 08:17:16

代码

2021-09-01 08:55:20

JavaScript代码开发

2013-06-07 14:00:23

代码维护

2020-05-11 15:23:58

CQRS代码命令

2021-11-30 10:20:24

JavaScript代码前端

2022-12-06 09:03:44

代码fork系统

2020-10-10 09:09:21

CTOCRUD设计

2021-01-04 07:57:07

C++工具代码

2022-02-08 19:33:13

技巧代码格式

2022-02-17 10:05:21

CSS代码前端

2021-10-13 08:16:14

SQL 代码系统

2020-12-19 10:45:08

Python代码开发

2019-09-20 15:47:24

代码JavaScript副作用
点赞
收藏

51CTO技术栈公众号