不久前微软在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解释器(附下载连接)相关推荐

  1. layui的tree如何实现动态加载_layui tree动态加载 利用CAReplicatorLayer实现的加载动画 - 电脑常识 - 服务器之家...

    layui tree动态加载 利用CAReplicatorLayer实现的加载动画 发布时间:2017-04-12 来源:服务器之家 在上一篇中,笔者简要介绍了CAReplicatorLayer,在本 ...

  2. iOS开发:利用SDWebImage实现图片加载与缓存

    iOS开发:利用SDWebImage实现图片加载与缓存 SDWebImage是一套开源框架,这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL ...

  3. android progressdialog 背景色,怎么在android中利用ProgressDialog实现一个加载效果

    怎么在android中利用ProgressDialog实现一个加载效果 发布时间:2020-12-07 17:00:07 来源:亿速云 阅读:77 作者:Leah 怎么在android中利用Progr ...

  4. 利用SPRING管理热加载的GROOVY对象!

    作者:paleXu的技术博客 来源:https://palexu.github.io/posts/spring-dynamic-load-groovy-bean?hmsr=toutiao.io& ...

  5. python类加载器_利用Python反序列化运行加载器实现免杀

    前言 前几天在看Python的shellcode加载器,在网上找了一个,结果加载器自身就过不了火绒,测试发现是火绒对关键语句进行了识别. 所以我们要想办法去掉加载器中明显的特征. 原理及实现 在绕过静 ...

  6. 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据

    前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又 ...

  7. C#利用反射实现动态加载程序集简单案例

    反射可以不但用来读取元数据,还可以使用反射从编译时还不清楚的类型中动态创建程序集,此案例摘自C#高级编程. 首先先创建一个控制台应用程序,然后添加一个类库,类库名称为CalculatorLib,如下图 ...

  8. python实时数据存储与显示_利用python进行数据加载和存储

    1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...

  9. 如何利用高德地图URI加载区域边界

    高德URI 以下是高德地图API官网中URI API以及行政区查询的相关页面展示.在行政区域查询中对相应的参数也有详细的描述. 利用URI API进行调用的实例:在返回的数据中districts中包含 ...

最新文章

  1. appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...
  2. 调用DM FLDR JNI导出数据库文件
  3. Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)
  4. emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权
  5. 网络采集软件核心技术剖析系列(1)---如何使用C#语言获取博客园某个博主的全部随笔链接及标题...
  6. 嵌入式商业智能BI有什么功能
  7. C++ Primer Plus 第二章编程练习
  8. Pytorch中的 AdaptivePooling
  9. 一个java程序员看待互联网行业与物联网行业的区别
  10. 大学生亲历谷歌实习:福利丰…
  11. aps自动排程助企业缩短制造周期
  12. html超酷图片墙特效代码,超酷超绚精美图片展示效果代码(一)
  13. C++ 算法篇 位运算
  14. python学习 day5 (3月6日)
  15. java 判断ftp文件是否存在_java如何检验ftp服务器中指定文件是否存在
  16. 解决iPhone部分机型下面有小黑条遮挡问题
  17. 开篇之作之——阅读与思考
  18. 《用户体验设计 本质、策略与经验》一2 设计师
  19. 【C++】1064:奥运奖牌计数(信息学奥赛)
  20. vue使用百度统计埋点

热门文章

  1. Win10无法彻底删除蓝牙设备,无线蓝牙鼠标连接后不能删除
  2. 使用 IDEA 整合 SSH 发生 Mapping (RESOURCE) not found 错误
  3. 不用找,你想要的行业icon图标素材都在这里
  4. 批训练、注意力模型及其声纹分割应用,谷歌三篇论文揭示其声纹识别技术原理
  5. 计算机控制电机启动接线图,用PC机并口控制一个简单电路
  6. 《液晶显示器和液晶电视维修核心教程》——2.2 电容类
  7. 使用“不用写代码的IDE”是一种怎样的体验?
  8. vue中关闭浏览器清除localStorage,并且刷新时保持状态不受影响
  9. 云网融合相关研究现状
  10. 一元线性回归python示例——房价预测