打开您的网站(记得启动网络服务器,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
浏览:778

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]删除
最新教程 更多>
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-04-18
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-04-18
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-04-18
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-04-18
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-04-18
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-04-18
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-04-18
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-04-18
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-18
  • 从C/C++调用Python函数并获取返回值方法
    从C/C++调用Python函数并获取返回值方法
    从c/c 中提取返回值的返回值,从c/c调用自定义python函数允许允许扩展功能,但提取返回值可能是具有挑战性的。这是使用Python c-api。 Python Module c/c code 导入c/c(test.cpp)中的python3 Inverteter:导入并调用functio...
    编程 发布于2025-04-18
  • 反射动态实现Go接口用于RPC方法探索
    反射动态实现Go接口用于RPC方法探索
    在GO 使用反射来实现定义RPC式方法的界面。例如,考虑一个接口,例如:键入myService接口{ 登录(用户名,密码字符串)(sessionId int,错误错误) helloworld(sessionid int)(hi String,错误错误) } 替代方案而不是依靠反射...
    编程 发布于2025-04-18
  • 将字符串时间转换为Go时间结构的技巧
    将字符串时间转换为Go时间结构的技巧
    将字符串时间转换为go go go go time struction 当处理特定格式的字符串时间值时,会出现一个常见问题,该格式无法识别默认时间。要解析此字符串,我们可以根据其特定格式定义自己的布局字符串。YYYY: Four-digit ye​​arMM: Two-digit monthDD:...
    编程 发布于2025-04-18
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-04-18
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-04-18
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-04-18

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

Copyright© 2022 湘ICP备2022001581号-3