python - 想要将旧的 6502 源代码 HEX 行转换为 .byte $00 行

标签 python converters 6502

我需要你的帮助,就像标题所说,我正在尝试转换大量源代码,而我的很多旧源代码都有很多汇编程序代码行(6502)我不再可以在 Windows 上使用。

我可以进行大量搜索并替换以更改所有操作码,例如!byte 更改为 .byte 或 DCB 更改为 .byte,DCW 更改为 .word 等,但是当我有一行又一行的十六进制时,我陷入困境代码,我需要将其转换为 .byte (例如),即假设我有

HEX 0000000000000000 
HEX 0000000002000000 

我想结束

.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$02,$00,$00,$00

现在,如果我只有 2 行代码,我可以手动完成此操作,但是当我打开具有 100 行代码的源代码时,这将是乏味的并且需要很长时间。

我考虑过Python,我考虑过vb脚本甚至批处理脚本,但大多数都涉及将代码复制到文件中,用语言解析文件(弗兰肯斯坦的代码来自互联网)并得到结果并将其加载回来,我想一定有一种方法(可能使用vbscript,因为我过去常常使用VBA和VB6,但我太老了,生锈了,甚至无法考虑这一点现在)弹出两个框,左框,十六进制的原始副本,右框.byte 输出?甚至是一个文本输入框,我复制并粘贴到其中,它会给出下面的结果,然后我可以复制并粘贴回我的源代码中。

最佳答案

您可以将原始字符串的相关部分分割为 2 个字符的 block ,并使用列表理解将其转换为所需的格式:

def convert(s):
  codes = s[4:]
  return ".byte {}".format(",".join("${}".format(codes[i*2:i*2+2]) for i in range(len(codes)//2)))

然后

print(convert("HEX 0123456789ABCDEF"))

将打印

.byte $01,$23,$45,$67,$89,$AB,$CD,$EF

然后您应该能够在客户端应用程序(例如 tkinter)或简单的 Web 应用程序(例如 flask)中使用此函数。

请注意,您还可以找到 MOS6502 的交叉编译器。

关于python - 想要将旧的 6502 源代码 HEX 行转换为 .byte $00 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59042989/

相关文章:

javascript - 与 Jquery.min.js 的函数冲突

6502 - 在 6502 上进行减法运算(sbc asm 指令)时借用?

python - 在 Python 扩展中定义类型时,我应该在 tp_name 字段中输入什么?

python - Django中多个数据库的路由和中间件

java - 将像素从图像复制到网络摄像头

assembly - 6502轻量级压缩算法

low-level - CPU 仿真和锁定到特定时钟速度

python - Python 2.5 是否包含一个包来本地转换 XML 文档?

python - 如何在 oh-my-posh 中用 python 显示当前虚拟环境?

python - 从 Python 调用 LibreOffice 时出错