沃兹是如何编写苹果1的基本建设之前,计算机?
1984年史蒂夫·沃兹尼亚克在接受《字节》采访时说,他在实际制造苹果1号电脑之前,就为苹果1号电脑设计了BASIC计算机:I sat先写下基本的,比电脑设计花的时间多
解答动态
TL;DR: 正如Steven Weyhrich在其权威的appleii历史网站上所解释的那样,沃兹尼亚克只是坐下来在纸上写下他的Integer BASIC,同时手工组装。以他自己的方式文字:
I没有汇编器,那是另一回事。为了使用汇编程序,他们认为有人要买这个处理器为公司使用,他们的公司可以支付几千美元的分时费用来使用分时可用的汇编程序。我没有那样的钱,所以一个朋友教我,你只要看一下每一条指令,把指令写在页面的右边,把地址写在左边,然后查找每一条指令的十六进制数据——你可以自己组装。所以我就坐在那里自己组装。我们与第一代苹果II一起提供的BASIC从未组装过。有一份手写的,全是手写的,全是手工组装的。所以我们处在一个我们买不起工具的时代。
这句话摘自沃兹尼亚克1986年在苹果世界大会上的一次演讲。关于他的BASIC.
,问题 ,这仅仅是一个高级概念,6502的实际机器代码,还是在不同系统上的实际实现?
纸上6502的实际机器代码。(*1,*2)
的开发仅仅是纸面上的,还是涉及到主机(可能是他在惠普的工作)?纸上的
。用计算机测试了栈机求值表达式的实现。它是用阿尔戈语写的。此外,有人提到,他使用惠普计算器,以及得到习惯的堆栈-“思考”
他测试了其他地方之前,把它放在苹果1?
只在apple1上——正如他提到的,他们没有钱为交叉汇编程序购买计算时间。
这怎么可能? 虽然这不是一个长周末的工作,但写一个基础并不像一些人想象的那么难。首先,BASIC是一个非常简单的程序,它由一些固定的部分组成,如e
a行editorA cruncher(tokenizer)(*3)fetch and execute loopAn expression evaluatorMemory(variable)access(Garbage collection*4)error handling/output functionStartup(cold boot)and recovery(warm boot) 它们都是非常短的任务可以写下来。有些只是几行,有些可能需要多达一百条指令。
解释器的其余部分是is
a函数集合 每个基本命令、每个指令和每个函数一条。它们是fetch和execute循环对每个找到的令牌调用的内容,这会带来最后两个令牌零件:
A列表在所有要搜索的命令、指令和函数中,并指向其入口点错误代码/消息的列表1所有这些部分都可以在纸上和手工上进行管理。为了给出一些粗略的数字,Integer BASIC占用了大约2000条指令(加上一堆表)组成的6kib代码。有了50多个用户可见的命令和函数,每个函数的平均指令数就不到40条。实际上,大多数都要短得多,比如PEEK或POKE各有4条指令。即使是像GOSUB和GOTO这样的复杂指令也只有14和26条指令。
编程是关于任务的组织,BASIC不仅不能免除这一点,而且由于它的操作方式,它是一个完美的候选者。或者是他自己文字:是的一个非常有效的方法,以非常有序的方式分解了一个大任务。
*1-由于他是在6500组装中完成的,可以假设这是在1975年9月在Wescon获得第一个6502之后发生的。有趣的是,尽管有一个6502和写一个基本的6500汇编程序,他仍然使董事会接受一个6800以及。
*2-6502汇编程序是相当容易翻译的手,因为每个助记符加寻址模式等于一个单一的操作码和参数编码也可以直接根据寻址模式。没有复杂的编码管理,如8086或6800。
*3-可选,但沃兹添加它以节省内存。
*4-通常,但整数基本没有工作。
有一点是肯定的:史蒂夫沃兹尼亚克是非常善于手工组装6502。他不用写汇编助记符,只要输入必要的十六进制代码就行了。
我意识到这不是一个正确的答案,但这则轶事实在太好了,不值得评论。它来自比尔阿特金森评论史蒂夫做一些汇编工作:另一个当时发生的事情是,我必须插入磁盘例程,他们的系统相当大,而那个小13扇区软盘没有太多的容量。好吧,Woz刚刚提出了一种不同的方法来编码磁盘上的数据,这样我们就可以在相同的磁盘大小下获得更多的数据,我们需要16扇区磁盘例程。所以沃兹下来了,我在那里。。。我从来没有去过汽车旅馆,因为我不工作的时候睡在长凳上。这是在加州大学圣地亚哥分校的计算机科学实验室里。我很忙,没有时间睡觉。但是沃兹下来了,我和他交流,这真的很有趣,因为他正在安装这些16扇区磁盘驱动器例程,他会去“键入”--他没有键入汇编语言,也没有组装它。不,他会输入6502机器码。十六进制。--他输入十六进制,然后,你知道,看着他打字,他会说“打字”--停顿--“打字”,当他说完后,我问他停顿是什么?他说“前进支路,七条指令,我必须先计算抵消量,然后才能继续”;。所以,他没有回补偏移量,他实际上是在他要键入的内容,知道需要多少字节。。。他才华横溢。在一次采访中:https://youtu.be/6tUWoy1tJkE?t=45m
我是从以下网站借的:https://news.ycombinator.com/item?内径=14824949- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。