【怀旧】利用Altair 8800模拟器加载4K Basic解释器(附下载连接)
不久前微软在Github上开源了早期MS-DOS的源代码,掀起了不少人的怀旧潮。趁着国庆假期的一点点空闲,折腾了一下Altair 8800模拟器,加载了4K Basic解释器,并且运行了最简单的“Hello Word”。这个4K Basic跟微软还是有渊源的。国内有这方面资料的也比较少,就当是怀旧吧,顺便记录一下加载的过程。这个对于当前已经没有实际的应用价值了,不过与MS-DOS一样,折腾一下对于接触计算机底层还是有学习上的意义的。
背景
Altair 8800是由美国计算机爱好者爱德华·罗伯茨发明的基于Intel 8080所设计的一款个人电脑。Altair是第一台在商业上取得成功的个人电脑。当时还在哈佛大学读书的比尔·盖茨与伙伴保罗·艾伦一起为Altair 8800电脑设计Altair BASIC编辑器。这两个人是现在微软公司的联合创始人。他们当时编写的BASIC解释器就是后来的Microsoft Basic,也是MS-DOS的基础,后来演变成了现今的Visual Basic。可以说是老祖宗了。Altair BASIC分为多个版本,有4k Basic和8k Basic。它们的主要区别是4k Basic缺少了字符串的处理能力以及一些数学函数。
部分资料摘抄自Wikipedia
加载步骤
环境
不推荐用Win10,会有各种奇怪的问题。建议使用XP/2000,win7没有测试过。
步骤
打开模拟器后,你将看到这样的一个界面
Step1 加载4k BasicHEX文件
这个HEX文件会告诉计算机内存地址的起始信息,如果没有这个HEX文件的话,用户就要手动拨动机器面板上的按钮来输入内存的起始地址。如果输入错误的话,就要清空内存重新输入,可见当时编程是一件非常费力的事情。
打开模拟器开关后,在file菜单下选择read image file
点击Browse,选择lodr_4k.hex
点击确定,第一步完成
Step2 状态4K Basic磁带文件
在Devices中选择Audio Cassette
单机播放按钮,选择4kbase32m.tap
点击打开,装载磁带完成!
Step3 加载4k Basic解释器到内存
将Sense Switch中的A15、A11对应的开关上拨
然后单击它下面的STOP/RUN开关
如果看到一下画面,说明加载成功了!
使用
正式进入Basic前,会有一些设置,刚开始的时候是内存大小,如果想使用默认,直接按回车就行,接下来的问题,可以参考如下回答
TERMINAL WIDTH? (80 for 80 column)
WANT SIN? (4K BASIC; Y/N)
WANT RND? (4K BASIC; Y/N)
WANT SQR? (4K BASIC; Y/N)
WANT SIN/TAN/COS/ATN? (8k/extd; Y/N depending on if you want trig functions)
LINEPRINTER? C (for Centronics C700 printer; O for MITS 88-LPR)
HIGHEST DISK DRIVE NUMBER? 0
NUMBER OF FILES? 5
NUMBER OF RANDOM FILES? 3
进入到以下画面,说明已经进入Basic解释器,可以使用了
下面就加载一个最简单的Hello Word吧
链接
这里提供Altair 8800模拟器的下载链接,里面包括了几个古老的操作系统镜像和帮助文档,当然都是英文的,感兴趣想折腾的可以参考下
下载地址
【怀旧】利用Altair 8800模拟器加载4K Basic解释器(附下载连接)相关推荐
- layui的tree如何实现动态加载_layui tree动态加载 利用CAReplicatorLayer实现的加载动画 - 电脑常识 - 服务器之家...
layui tree动态加载 利用CAReplicatorLayer实现的加载动画 发布时间:2017-04-12 来源:服务器之家 在上一篇中,笔者简要介绍了CAReplicatorLayer,在本 ...
- iOS开发:利用SDWebImage实现图片加载与缓存
iOS开发:利用SDWebImage实现图片加载与缓存 SDWebImage是一套开源框架,这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL ...
- android progressdialog 背景色,怎么在android中利用ProgressDialog实现一个加载效果
怎么在android中利用ProgressDialog实现一个加载效果 发布时间:2020-12-07 17:00:07 来源:亿速云 阅读:77 作者:Leah 怎么在android中利用Progr ...
- 利用SPRING管理热加载的GROOVY对象!
作者:paleXu的技术博客 来源:https://palexu.github.io/posts/spring-dynamic-load-groovy-bean?hmsr=toutiao.io& ...
- python类加载器_利用Python反序列化运行加载器实现免杀
前言 前几天在看Python的shellcode加载器,在网上找了一个,结果加载器自身就过不了火绒,测试发现是火绒对关键语句进行了识别. 所以我们要想办法去掉加载器中明显的特征. 原理及实现 在绕过静 ...
- 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据
前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又 ...
- C#利用反射实现动态加载程序集简单案例
反射可以不但用来读取元数据,还可以使用反射从编译时还不清楚的类型中动态创建程序集,此案例摘自C#高级编程. 首先先创建一个控制台应用程序,然后添加一个类库,类库名称为CalculatorLib,如下图 ...
- python实时数据存储与显示_利用python进行数据加载和存储
1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...
- 如何利用高德地图URI加载区域边界
高德URI 以下是高德地图API官网中URI API以及行政区查询的相关页面展示.在行政区域查询中对相应的参数也有详细的描述. 利用URI API进行调用的实例:在返回的数据中districts中包含 ...
最新文章
- appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...
- 调用DM FLDR JNI导出数据库文件
- Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)
- emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权
- 网络采集软件核心技术剖析系列(1)---如何使用C#语言获取博客园某个博主的全部随笔链接及标题...
- 嵌入式商业智能BI有什么功能
- C++ Primer Plus 第二章编程练习
- Pytorch中的 AdaptivePooling
- 一个java程序员看待互联网行业与物联网行业的区别
- 大学生亲历谷歌实习:福利丰…
- aps自动排程助企业缩短制造周期
- html超酷图片墙特效代码,超酷超绚精美图片展示效果代码(一)
- C++ 算法篇 位运算
- python学习 day5 (3月6日)
- java 判断ftp文件是否存在_java如何检验ftp服务器中指定文件是否存在
- 解决iPhone部分机型下面有小黑条遮挡问题
- 开篇之作之——阅读与思考
- 《用户体验设计 本质、策略与经验》一2 设计师
- 【C++】1064:奥运奖牌计数(信息学奥赛)
- vue使用百度统计埋点
热门文章
- Win10无法彻底删除蓝牙设备,无线蓝牙鼠标连接后不能删除
- 使用 IDEA 整合 SSH 发生 Mapping (RESOURCE) not found 错误
- 不用找,你想要的行业icon图标素材都在这里
- 批训练、注意力模型及其声纹分割应用,谷歌三篇论文揭示其声纹识别技术原理
- 计算机控制电机启动接线图,用PC机并口控制一个简单电路
- 《液晶显示器和液晶电视维修核心教程》——2.2 电容类
- 使用“不用写代码的IDE”是一种怎样的体验?
- vue中关闭浏览器清除localStorage,并且刷新时保持状态不受影响
- 云网融合相关研究现状
- 一元线性回归python示例——房价预测