基本代码

2020-10-01 05:57:42

跳转到导航跳转到搜索BASICODE是一个旨在为BASIC编程语言创建统一标准的计算机项目。BASIC在许多流行的家用计算机上都可以使用,但也有无数的变体,它们大多是互不兼容的。该项目于1980年由荷兰广播组织荷兰Omroep Stichting(NOS)的一个广播节目Hobby《独家新闻》发起。

基本实现是特定于体系结构的实用程序,其根据所讨论的计算机的能力执行对BASICODE语言标准中定义的文本、音频和声音的子例程的调用。这些称为Bascoders的应用程序还通过定义20世纪80年代经常用作存储介质的盒式磁带的数据格式,实现了跨不同计算机平台的数据和程序共享。存储在盒式磁带上的BASICODE程序可以在任何支持该语言的计算机上加载和运行。正因为如此,BASICODE经常因计算机而被称为世界语。

从20世纪70年代末到80年代末,基于8位处理器的家用计算机非常流行。其中最著名的型号有Tandy的TRS-80、PET 2001、VIC-20、C64、C128和Commodore的Plus/4、Atari 400/800(XL/XE)、辛克莱研究计算机(ZX80、ZX81、ZX Spectrum)和流行于德意志民主共和国的KC85系列。所有这些计算机都有一个MOS Technology 6502或Zilog Z80型CPU,16到64KB的RAM,用于盒式磁带驱动器或用于存储数据的内置驱动器的连接器,最后是一个通常存储在ROM中的BASIC解释器。BASIC的学习曲线平坦,它是为编程新手而设计的,而且所有这些计算机上的语言都可以立即使用,这导致许多用户编写和分享他们自己的程序。

一个问题是,不同制造商在计算机之间共享程序和数据很困难,因为各种基本方言在某些领域完全不兼容。他们使用不同的基本命令来执行相同的操作(如清除屏幕、绘制像素或播放声音),因此为C64编写的BASIC程序不经修改就无法在Atari XL上运行,反之亦然。另一个困难是,虽然这些电脑很相似,但它们在屏幕分辨率、可用的调色板或音频能力等关键硬件方面仍然不同。最后,用于在盒式磁带上存储数据的数据格式也不兼容。

1980年左右,荷兰广播公司NOS开始通过无线电传输计算机程序。因为程序和数据以音频形式存储在小型盒式磁带上,所以可以将这样的广播录制到磁带上,然后将其加载到计算机中。然而,由于前面提到的问题,该节目不得不改编成适用于几乎所有流行类型的计算机,并进行多次播放。由于与当今的存储介质相比,小型盒式磁带的数据密度非常低,节目的录制花费了相当长的时间,每个节目只能播放有限数量的节目。因此,同一节目的不同版本的加播是非常不方便的。

1982年,NOS的高管们决定开发一种统一的数据格式。一种特定于每种计算机型号的应用程序(称为Bascode)管理从磁带中以这种统一格式重新调用和存储程序和数据。Bascoders也由NOS播放,但也可以从NOS购买盒式磁带,并在朋友和熟人之间分享。这种格式受到很好的保护,不受干扰,可以被所有流行的家用计算机硬件读取和写入。这种格式的健壮性也使得通过中波无线电进行广播成为可能,这增加了范围,进而增加了潜在用户的数量。例如,荷兰希尔弗苏姆电台广播的数据可以在德意志民主共和国的大部分地区接收到。

该标准解决了上述问题之一,即数据格式不兼容。然而,程序仍然必须适应每台计算机的基本方言和硬件能力。将程序限制为只使用所有方言通用的指令意味着功能上的很大限制,例如,完全避免使用图形和声音,只使用令人不舒服的方法使用键盘输入数据和控制屏幕上的字符输出。为此,1984年创建了增强型标准BASICODE 2。使用该标准的基编码器不仅包含将数据输入和输出到磁带的例程。除了一组在所有基本方言中通用的大约50个基本命令、函数和操作符之外,BASICODE 2的语言标准还定义了一个模拟相同功能的子例程库

这样,基编码器就像普通程序一样加载到各种计算机上,并在以后为通用标准和盒式磁带I/O提供额外的例程。用BASICODE编写的程序只有在加载并启动Bascode之后才可用。但是,在某些计算机上,BASICODE程序可以与Bascoder的例程合并,并以本地数据格式保存。生成的程序不再是独立于平台的,但由于大多数本机格式的数据密度更高,因此它的加载速度比BASICODE格式的相同程序快得多。此外,因为不需要加载完整的Bascoder来运行程序,所以在运行时仍有更多的RAM可用。

有Exidy Magcerer,Colour Genie,Commodore PET,VIC-20,C64,Amiga,Sclair ZX81,ZX Spectrum,QL,橡子原子,BBC Micro,Electron,Tandy TRS-80,MSX,Oric Atmos,P2000T,Grundy NewBrain,Amstrad CPC,IBM PC,Apple II,德州仪器TI-99/4A,美泰宝瓶座和其他公司的BASICODE 2基码器。此外,高级用户能够为他们选择的系统编写他们自己的Bascode,因为语言标准和数据格式是开放的,并且有很好的文档记录。BASICODE 2标准使开发具有(当时)高级功能的独立于平台的程序成为可能。此外,BASICODE还被用来通过广播以所谓期刊的形式传输和共享信息,如计算机现场新闻。BASICODE编码教程和其他文档也是以这种方式传输的。

1986年,新的BASICODE 3标准问世。最重要的新增功能是用于简单单色图形的例程、从程序内读写数据和声音输出的例程。BASICODE 3使BASICODE在德意志民主共和国的计算机领域流行起来,从1989年开始,BASICODE程序通过无线电在整个德意志民主共和国传输。此外,还出版了一本书,其中包括一张带有BASCODER的黑胶唱片,适用于民主德国所有常见的计算机。BASICODE的最后一个修订版以彩色图形为特色,于1991年作为BASICODE 3C发布。

大约从1990年开始,由于16位和32位计算机的兴起,特别是IBM-PC变种和兼容系统的兴起,BASICODE的受欢迎程度迅速下降。尽管有这些机器的基编码器,但BASICODE太有限了,无法利用那一代计算机提供的资源。此外,由于16位和32位时代的通用体系结构要少得多,开发和使用BASICODE的主要原因变得毫无意义。随着新系统的硬件和软件变得越来越复杂,大多数用户变得不能或不愿意编写程序。图形用户界面的兴起导致了8位计算机受欢迎程度的下降,因此BASICODE也是如此。

民主德国国家广播公司的继任者,德国发送者库尔图尔(后来成为新的德国广播电台的一部分),继续广播BASICODE节目,直到大约1992年。计划中的标准BASICODE 4从未成为现实,因为NOS在BASICODE 3C发布后不久就停止了对该项目的支持。BASICODE仍然被发烧友,特别是8位计算机爱好者用来表达怀旧的价值,但没有任何实际意义。

BASICODE是创建跨互不兼容的家用计算机体系结构交换程序和数据的标准的早期尝试。它与微软开发的MSX标准大致相同,微软开发的MSX标准除了指定通用的基本方言外,还指定了一个共享的硬件平台。这些电脑由多家公司销售,并与其他流行的家用电脑直接竞争。MSX主要在制造商的国内市场取得了成功,例如日本、韩国、荷兰和巴西。与MSX不同的是,BASICODE没有定义硬件,而是定义了编程语言BASIC的语言标准(BASIC在家用计算机中几乎无处不在),以及一种可在所有可使用BASICODE的计算机上读写的紧凑型盒式磁带的数据格式。因此,BASICODE的实施完全依赖于额外的软件,因此并不局限于特定制造商的计算机。BASICODE的安装基数很难估计,因为Basicoder和用BASICODE编写的程序都是免费提供的。在这个时代,几乎每一台家用电脑都有一个基编码器。在商业上,BASICODE并不重要,因为它总是免费共享的。

必须指出的是,BASICODE在设计上无法充分利用主机的功能。BASICODE定义的语言标准是所有相关计算机系统的最低公分母。只有在BASICODE3/3C中才部分放弃了这一概念,因为一些计算机或计算机变体,如ZX80/ZX81和KC87

在BASICODE格式中,录制节目类似于录制数据。因此,在录制节目时,命令不是以单字节单位(令牌)的形式读取和写入,而是逐个字符地读取和写入。

数据块以字符02(STX,文本开始)开始,以字符03(ETX,文本结束)结束。在ETX之后,通过二进制加法(XOR)发送由包括STX和ETX的前几个字节组成的校验字节。0D字符(十进制13)标记传输过程中的行尾。由程序创建的数据文件能够使用所有字符作为数据,并且不能包含任何控制字符。它们以1024字节的块进行读取和写入。

每个字节按序列";1个起始位-8个数据位-2个停止位";进行传输。数据位是小端排序的。由此产生的冗余旨在最大化与不同计算机的兼容性。位7始终为0,这在传输ASCII字符时特别有用,因为这些字符始终将位7设置为0。

对于音频信号,对于一个比特使用1200 Hz波形式的方波,对于一个比特使用两个2400 Hz波,导致每个比特的时间为1/1200秒。波之间超过1/1800秒的暂停标志着一个字节的开始,使下一个波成为起始位。在起始位之后和8个数据位之前是至少1/1800秒的另一个暂停。长度为5秒的2400 Hz信号标志着传输的开始,并用于读取程序的同步。在传输结束时,发送长度为1秒的2400 Hz信号。

该格式的理论数据速率为每秒1200比特。考虑到每个数据字节传输3个附加位以及开始位之前和之后的暂停,这导致可用的数据速率为每秒102字节,约为每分钟6千字节。

在现代计算机上,可以使用免费提供的软件调制解调器Minimodem来解码Basicode盒式音频带。如果磁带已转换为名为basicode.wav的wav文件,则以下命令会将其解码为相应的数据字节。

请记住,在使用数据之前,应剥离位7,根据基本代码标准,该位始终设置为1。

(德语)Michael Wiegand,Manfred Fillinger:BASICODE。麻省理工学院编程盒。拉文斯堡布赫弗拉格,拉文斯堡,1986年,isbn电话:3-473-44010-8

荷兰语:Hermine Bakker,Jaques Haubrich(作者),Stichting BASICODE(出版商):HET BASICODE-3 Boek。3.奥夫拉奇(Auflage)。Kluwer Technische Boeken B.V.,德文特/安特卫本1988,ISBN电话:90-201-2111-1。

(德语)Horst Völz:BASICODE MIT程序员auf Schallplatte für Heimcomputer。Verlag Technik,柏林,1990年,ISBN,电话:3-341-00895-0