打开您的网站(记得启动网络服务器,6502web运行时使用fetch加载二进制文件,我们需要一个为此运行的网络服务器:3)

还有... 那是什么?!

\\\"Web

如果你打开devtools,你可以看到,不知何故,一个

元素已出现并带有“HI!”作为其内容..但是如何?!让我们再看一下 6502 代码,现在有注释了!

LDA #0   ; 0 is the ID of a 

element in 6502web runtime, lets load itSTA $46 ; store it to $46, which is start of our RAM memorySTA $0; by storing to $0, we RUN a built-in function which is responsible for creating an HTML element, that uses $46 as its argument (what HTML element to create!)LDA #3 ; 3 will now be the length of the string we want to put in our

!STA $46 ; store it at $46LDA #72 ; \\'H\\' in ASCII!STA $47 ; store it at $47LDA #73 ; \\'I\\' in ASCII!STA $48 ; store it at $48LDA #33 ; \\'!\\' in ASCII!STA $49 ; store it at $49STA $1; storing to $1 runs another built-in function, that is responsible for setting up text content of a *recently* created HTML element. Its first argument is length of the string it has to read, and then it reads memory fields (ASCII characters) after that, corresponding to the length we stored at $46

所以.. 这基本上就是 6502web 运行时的工作原理。目前仅实现了少量功能:

通过少量的功能,我能够创建一个非常简单的计数器应用程序!

\\\"Web

\\\"Web

我相信现在已经足够了,如果你有兴趣,可以自己来看一下,只是要注意,这个运行时间主要是一个笑话(我花了很多功夫的一个笑话)

我仍在努力,所以许多操作码尚未实现。

GitHub

祝大家有美好的一天!

","image":"http://www.luping.net/uploads/20240918/172662264966ea2bb9b2959.png","datePublished":"2024-11-08T10:53:10+08:00","dateModified":"2024-11-08T10:53:10+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 组装中的 Web 应用程序!

组装中的 Web 应用程序!

发布于2024-11-08
浏览:551

MOS 6502 是经济实惠计算领域的一大进步。感谢这个小家伙,我们了解了 Commodore64、Apple II、
Atari2600 和 NES。直到今天,人们仍在使用 6502 Assembly,为这些被遗忘的平台创建软件和游戏。

现在,让我介绍一下自己 - 我是Cassiopeia(但是,我在正式场合使用 Oliwia),一位热爱旧技术和汇编编程的跨性别女性。我担任 JavaScript 开发人员已有六年多了。大部分时间我都使用典型的 Web 技术,例如 Vue、React 和 Angular。尽管我的大部分经验来自前端开发,但我从编程中获得的大部分乐趣都来自后端开发。大约一年前,我对旧技术感到惊讶,这就是 6502 的用武之地。

6502 只有(!)56 条指令,但即使指令数量如此有限,开发人员(一如既往)也可以创建令人印象深刻的程序。
您有没有想过使用 6502 编写 Web 应用程序会是什么样子?

不?

当然不是,你为什么会这么想?!

但是我...!我想过这个!我想过如何组装你的6502程序,上传它并让它生成一个网站!

6502网页

欢迎来到6502Web,这是一个用 JavaScript 编写的 6502 运行时,它使得使用 6502 程序集创建(简单)网站和 Web 应用程序成为可能!

我想让我的运行时尽可能简单并且尽可能少使用 javascript,特别是因为这是我第一次写这样的东西。

首先,组装你的6502程序,为了测试我主要使用masswerk汇编器,因为它对我来说是最快的。

让我们从简单的事情开始,尝试编写这样的程序:

LDA #0
STA $46
STA $0
LDA #3
STA $46
LDA #72
STA $47
LDA #73
STA $48
LDA #33
STA $49
STA $1

现在您已经下载了 .bin 文件,请将 6502web cdn 链接到您的网络应用程序。

然后,您可以加载二进制文件并运行它,如下所示:


打开您的网站(记得启动网络服务器,6502web运行时使用fetch加载二进制文件,我们需要一个为此运行的网络服务器:3)

还有... 那是什么?!

Web Applications in ssembly!

如果你打开devtools,你可以看到,不知何故,一个

元素已出现并带有“HI!”作为其内容..但是如何?!让我们再看一下 6502 代码,现在有注释了!

LDA #0   ; 0 is the ID of a 

element in 6502web runtime, lets load it STA $46 ; store it to $46, which is start of our RAM memory STA $0 ; by storing to $0, we RUN a built-in function which is responsible for creating an HTML element, that uses $46 as its argument (what HTML element to create!) LDA #3 ; 3 will now be the length of the string we want to put in our

! STA $46 ; store it at $46 LDA #72 ; 'H' in ASCII! STA $47 ; store it at $47 LDA #73 ; 'I' in ASCII! STA $48 ; store it at $48 LDA #33 ; '!' in ASCII! STA $49 ; store it at $49 STA $1 ; storing to $1 runs another built-in function, that is responsible for setting up text content of a *recently* created HTML element. Its first argument is length of the string it has to read, and then it reads memory fields (ASCII characters) after that, corresponding to the length we stored at $46

所以.. 这基本上就是 6502web 运行时的工作原理。目前仅实现了少量功能:

  • 创建 HTML 元素,
  • 设置HTML元素的文本内容
  • 添加事件监听器
  • 将 X 和 Y 寄存器绑定到 HTML 元素
  • 6502和JS共享内存

通过少量的功能,我能够创建一个非常简单的计数器应用程序!

Web Applications in ssembly!

Web Applications in ssembly!

我相信现在已经足够了,如果你有兴趣,可以自己来看一下,只是要注意,这个运行时间主要是一个笑话(我花了很多功夫的一个笑话)

我仍在努力,所以许多操作码尚未实现。

GitHub

祝大家有美好的一天!

版本声明 本文转载于:https://dev.to/cassiopeiaoli/web-applications-in-6502-assembly-3g0k?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。让我们考虑以下查询: select data d.data_ti...
    编程 发布于2025-05-07
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-05-07
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-05-07
  • 如何解决AppEngine中“无法猜测文件类型,使用application/octet-stream...”错误?
    如何解决AppEngine中“无法猜测文件类型,使用application/octet-stream...”错误?
    appEngine静态文件mime type override ,静态文件处理程序有时可以覆盖正确的mime类型,在错误消息中导致错误消息:“无法猜测mimeType for for file for file for [File]。 application/application/octet...
    编程 发布于2025-05-07
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-05-07
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-05-07
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-05-07
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-05-07
  • 解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    编程 发布于2025-05-07
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: 在Python中,可以直接使用“...
    编程 发布于2025-05-07
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-05-07
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    在Microsoft Visual C 中,Microsoft consions用户strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    编程 发布于2025-05-07
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-05-07
  • 在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8表中将latin1字符转换为utf8 ,您遇到了一个问题,其中含义的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致电。为了解决此问题,您正在尝试使用“ mb_convert_encoding”和“ iconv”转换受...
    编程 发布于2025-05-07
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-05-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3