思路定下来之后,吕辰开始动笔写方案。
他在稿纸上写下第一行字:《微程序辅助编程机——总体构想与实施方案》
他决定图文并茂,要把这个想法变成能让别人看懂、能让协作单位认可、能分给各组去实现的“总体方案”,光有文字描述不够直观,得配图。
画图不是他的长项。
他画个示意图、画个逻辑框图还凑合,但要画得像说明书一样一目了然,让人一看就懂,那得有点美术功底。
吕辰起身来到左附楼二层,这里是第八小组的办公区域。
第八组有几个美术功底好的研究员,算是画版图、画示意图的担当。
吕辰到第八组的时候,正好有三人正趴在桌上画图。
领头的是个戴眼镜的年轻人,叫周建国,去年从工业学院毕业招进来的,素描底子不错,人也踏实。
“建国。”吕辰站在门口敲了敲门框。
周建国抬起头,看见是他,赶紧站起来:“吕师兄?您怎么来了?”
吕辰走进去,在他旁边坐下:“有个活儿,得请你们帮个忙。”
他把自己的想法说了一遍。
三张图。
第一张,要画出现状的困境,“人海战术”编微程序,又慢又容易错。
第二张,要画出解决方案,编程机的系统架构,从输入到处理到输出,一层一层画清楚。
第三张,要画出技术路线,分三步走,什么时候做到什么程度。
周建国听完,眼睛亮了:“这个有意思。”
他招呼另外两个人过来,听吕辰描述。
“第一张图,我想做个对比。左边画一个人趴在桌上,对着一堆纸和0101,累得半死。右边画昆仑机的规模预估,上千块芯片、上万条微指令。让人一看就明白,用手工编微程序,是死路一条。”
周建国点点头,拿起铅笔在纸上勾了个轮廓。
“这个人,要画得憔悴一点,头发乱一点,桌上堆满稿纸。旁边标一行字:手工编写1000条微指令,平均出错率17%,查错耗时——无法估算。”
“右边画一个机柜,上面标着‘昆仑机规模预估’,旁边写:上千块芯片,上万条微指令。”
吕辰看了看,觉得差不多了,又说:“下面再加一行红字,我们需要一支‘笔’,而不是一把‘铲子’。”
周建国抬头看他:“笔?铲子?”
“对。”吕辰说,“用手挖土,累死也挖不了多少。用铲子,效率翻倍。但咱们要的不是铲子,是笔能写程序的笔。”
周建国若有所思地点点头,在图纸下方加了一行红字。
第二张图是重头戏。
吕辰把自己脑子里那套架构画成草图:从上到下,输入层、处理层、输出层,还有底层的支撑系统。
“输入层,一个键盘。”他指着草图,“操作员直接敲助记符,比如LdA、StA,不用记0101。”
“处理层,微程序编辑核心。这是整个系统的大脑,用hx-2的芯片扩展来做。它干三件事:一是把敲进去的助记符翻译成二进制;二是送到显示驱动,让工程师能看见自己敲的是什么;三是送到存储管理,存在可读写的存储芯片里。”
“输出层,二维卡编码接口,连到制卡机。工程师确认无误后,按一下键,制卡机自动把二进制数据打成二维卡上的孔。”
“最下面,系统监控程序,固化在Rom里。开机就加载,负责管理整个系统的运行。”
周建国一边听一边画,铅笔在纸上沙沙作响。
画完草图,他抬起头:“吕师兄,这个架构,有点像……有点像一台小计算机?”
吕辰笑了笑:“对,就是一台专用的计算机。”
周建国愣了愣,然后低下头继续画,没再问。
第三张图是技术路线图。
吕辰把时间节点标出来:第一步,1-2个月,做出原型机。只支持最基本的编辑,输入、修改、删除,能输出到二维卡就行。
第二步,3-4个月,完善编辑功能。增加语法检查、自动查错,让工程师编程序的时候能少犯错。
第三步,年底前,与昆仑-0验证机联调。用这台编程机,写出昆仑-0的第一个测试程序。
周建国把这三个步骤画成三个台阶,台阶上标着时间和目标,台阶下面画着昆仑-0的轮廓,寓意“一步一步走向昆仑”。
三张图,画了三天。
周建国三个人确实下了功夫。
第一张图左边那个“憔悴的程序员”,头发真是一根一根画的,眼睛里画着红血丝,桌上的稿纸堆得像小山。
右边那个“昆仑机规模预估”,芯片一块一块画出来,密密麻麻,看着就让人头皮发紧。
第二张图更细。键盘的按键都画出来了,虽然只是示意,但每个键的位置都标得清清楚楚。
处理层那个方块里,还画了几个小方块,代表“翻译模块”、“显示驱动模块”、“存储管理模块”,让人一看就知道里面分了几个部分。
第三张图简洁有力。三个台阶,一步一步往上走,每一步都有明确的目标。
最上面那个台阶旁边,画着昆仑-0的轮廓,寓意“终点”。
吕辰看着这三张图,心里踏实了不少。
有图,有文,这方案拿出去,协作单位拿到手,一眼就知道自己要做什么、做到什么程度、什么时候做完。
但还差一样东西,这台编程机,长什么样?
吕辰脑子里有画面,但他画不出来。
键盘多大?荧光管显示矩阵怎么排列?主机箱什么形状?二维卡制卡机放在左边还是右边?连起来的整体是个什么样子?
这些,得找人画。
吕辰想了想,拿着三张草图出了门。
来到惊雷项目组所在的车间。
卫兵正查看着他的红证,正好碰见谢凯从里出来,手里拿着一沓图纸。
“吕辰,你来这里干什么?”谢凯打招呼。
吕辰把三张草图递过去:“谢师兄,你来的正好,帮我画个东西。”
谢凯接过来,一张一张翻。
翻到第二张的时候,他停住了,抬起头看着吕辰:“这是……编程机,落到你手里了?”
“对。”吕辰说,“所里就要最闲,宋教授分配给了我,写了总体方案,画了系统架构图,但物理形态还没画出来。你帮我画一下键盘、主机箱、显示矩阵、制卡机,整体是个什么样子。”
谢凯没说话,继续往下翻。
翻完第三张,他把图纸还给吕辰,说:“走吧,去我那儿。”
来到谢凯办公室,谢凯在桌前坐下,拿起铅笔:“说吧,什么样?”
吕辰在他旁边坐下,开始描述。
“键盘,是一个长方型,要有字母键,至少26个,加上数字键、功能键,总共六七十个键。排列方式,可以参考英文打字机q、w、E、R、t、Y这样一排一排排下来。”
谢凯在纸上画了个草图,标出键位。
“显示部分,”吕辰继续说,“是一个矩形的荧光管阵列。一排能显示24个字符。每个字符,用七段数码管那种思路,但要有字符发生器,能显示字母和符号。”
谢凯在旁边画了一个长条方块,方块里画了24*8个小方块,代表每个字符的位置。
“主机箱单独做,”吕辰指着第二张图,“里面分几个模块,电源模块、主控板、存储板、接口板。模块化设计,方便维修和升级。”
谢凯在键盘后面加了一个方块,方块里画了几个小格子,代表模块。
“二维卡制卡机,”吕辰说,“放在主机箱旁边,能自动把数据打成二维卡。”
谢凯在主机箱右边画了一个小方块,方块下面画了一个出口,出口处画了一张卡片的一半,代表“正在出卡”。
谢凯画完草图,抬起头:“还有吗?”
吕辰道:“暂时就这些。”
谢凯换了一张纸,开始画。
他画得很快,铅笔在纸上刷刷刷地走,线条流畅,比例精准。
先是键盘,一个一个键位画出来,键帽上标着字母和数字。
然后是显示矩阵,一排24个字符位,每个字符位里画了一个“8”字轮廓,代表能显示任何字符。
再是主机箱,方方正正,前面板上画了几个指示灯,侧面画了散热孔。
最后是制卡机,放在主机箱右边,和主机箱连在一起,前面有一个出卡口,出卡口下面画了一个接卡的小托盘。
画完这些,谢凯开始画连接线。
键盘连着主机箱,显示矩阵也连着主机箱,制卡机同样连着主机箱。
线画得整整齐齐,该拐弯拐弯,该标注标注。
然后,他开始画使用场景。
一个人坐在桌子前面,双手放在键盘上,眼睛看着显示矩阵。
桌子上摆着这台编程机,旁边还放着一沓稿纸。
桌子对面,是一台昆仑-0验证机的轮廓,暗示着“用编程机编出来的程序,去驱动昆仑-0”。
最后,谢凯画了一个局部放大图,主控电路板。
板上画了几个方块,标着“电源”、“主控”、“存储”、“接口”。
方块之间用线条连着,线条旁边标着“数据总线”、“地址总线”、“控制总线”。
整张图,从整体到局部,从外观到内部,清清楚楚,一目了然。
吕辰看着那张图,半天没说话。
谢凯把铅笔放下,揉了揉手腕:“行吗?”
吕辰点点头:“行。太行了。”
他指着那张图:“你看,电源、主控、存储、接口,模块化设计。哪个模块坏了,换哪个。哪个模块要升级,换哪个。以后技术发展了,主控芯片可以换更好的,存储芯片可以换更大的,接口可以换更快的,但整体架构不用动。”
谢凯点点头:“这就是你常说的‘可扩展性’?”
“对。”吕辰说,“这套架构,不只是为了这台编程机。以后做别的专用设备,也可以用这个思路,模块化、标准化、可扩展。”
他把谢凯画的图收起来,和那三张草图放在一起。
四张图,一张现状困境,一张系统架构,一张技术路线,一张物理形态。
再加两万字的总体方案,这套东西,拿出去,应该能说服人了。
第二天一早,吕辰带着这四张图和厚厚一沓方案,骑着车去了中科院计算所。
吕辰一路躲着漫天的杨絮,到计算所门口的时候,头发上、肩膀上落了一层白毛毛。
他把车停好,掸了掸衣服,拎着文件袋往里走。
夏先生的办公室在二楼东头,门半掩着。
吕辰敲了敲门,里面传来一声:“进来。”
他推门进去,夏先生正坐在办公桌前看文件,眼镜后面的眼睛微微眯着。
“夏先生。”吕辰站在门口,微微鞠了一躬,“打扰您了,我来汇报编程机的初步构想。”
夏先生抬起头,放下手里的文件,摘下眼镜。
“小吕?坐。”
吕辰在他对面坐下,把文件袋打开,取出方案放在桌上,特别把那四张图,一张一张摊在桌上。
夏先生看了一眼:“你自己画的?”
吕辰道:“我做了方案,觉得不方便阅读,请谢凯画了这个外观图,其余三张是所里会画图的同事画的。”
夏先生点点头,拿起第一张图。
他看得很慢,从左边那个“憔悴的程序员”看到右边那行“上千块芯片,上万条微指令”,最后目光落在那行红字上。
“我们需要一支‘笔’,而不是一把‘铲子’。”他念了一遍,然后抬起头看着吕辰,“这个比喻,有意思。”
他放下第一张,拿起第二张。
这张他看得更仔细,从顶层的“键盘”看到底层的“系统监控程序”,每一个方块、每一个箭头都看了一遍。
看完,他问:“这个‘微程序编辑核心’,用hx-2的芯片扩展来做?”
“对。”吕辰说,“hx-2的架构有扩展余地,加一些指令,加一些外设接口,应该能跑起来。”
“存储呢?”
“用存储芯片。一片不够就多片拼,总能拼出需要的容量。”
夏先生点点头,继续往下看。
第三张图,技术路线图,三步走,每一步的时间节点、目标、成果,清清楚楚。
第四张图,物理形态图。
键盘、显示矩阵、主机箱、制卡机,还有使用场景、内部模块、电路板布局,一目了然。
夏先生把四张图都看完了,然后拿起那沓方案,翻了翻。
翻到第二页的时候,他停下,问:“你说‘键盘’是像打字机那样输入?”
吕辰点点头:“对。工程师不用记0101,直接敲助记符,如LdA、StA、Add、SUb等,机器自动翻译成二进制。”
“这个‘编辑器软件’,是固化在芯片里的翻译程序?”
“对。开机就加载,一直运行。工程师敲什么,它实时翻译成二进制,显示在屏幕上。敲错了可以删,可以改。”
“这个‘显示器’,是带字符发生器的荧光管?”
“对。24个字符一排,每个字符用七段数码管那种思路,但能显示字母和符号。”
……
夏先生仔细的阅读写方案,一连读一边问,吕辰也是尽可能用夏先生熟悉的语言进行着讲解。
读完后,夏先生然后放下方案,看着吕辰。
“小吕,你这个东西,本质上是一台专用的计算机啊。”
吕辰点点头:“是的,夏先生。它就是一台专用计算机。”
夏先生沉默了几秒,然后笑了。
“好。”他说,“好。”
他看着吕辰:“你刚才说,‘键盘’像打字机那样输入,‘显示器’能看见自己敲了什么,‘存储’能把程序存下来,‘翻译程序’能自动把助记符转成二进制,‘制卡机’能自动把数据打成二维卡。你知道这意味着什么吗?”
吕辰没说话。
夏先生拿起那张外观图。
“这意味着,以后搞计算机的人,可以坐在这台机器前面,像写文章一样写程序。写完了,不用手输二进制,不用手打纸带,按一下键,卡片就出来了。”
他顿了顿:“我搞计算机这么多年,最怕的就是‘手写代码’。几百条指令,手写,手输,手查错,出一点错就全废。你这一套,把这三个‘手’全省了。”
吕辰说:“夏先生,这套东西,不只是为了昆仑-0。以后做更大的机器,也可以用同样的思路,键盘输入,屏幕显示,存储保存,自动输出。”
夏先生点点头,没说话,又拿起那四张图,一张一张看了一遍。
看完,夏先生拿起笔,在方案的扉页上写了一行字:“同意按此方案启动编程机研制。夏,1966.5.13”
写完,他放下笔,看着吕辰。
“小吕,这个方案很好,我同意了,你先回去,我们把这份方案再研讨一下。把协作单位的任务分解出来。下周一开个会,把这个事定下来,任务分配出去。”
吕辰站起来,深深鞠了一躬:“谢谢夏先生。”
夏先生摆摆手:“去吧。”
吕辰走出计算所的大门,站在台阶上,看着外面漫天飞舞的杨絮。
他想起夏先生刚才那句话:“像写文章一样写程序。”
这个念头,在后世,是再普通不过的事。
随便一个程序员,坐在电脑前面,敲键盘,写代码,编译,运行,天经地义。
但在这个年代,在这个连计算机都是用电子管和晶体管堆出来的年代,在这个程序都是用二进制手写、用纸带手输的年代,这个念头,是革命性的。