希望将旧的6502源代码HEX行转换为.byte $ 00行

问题描述 投票:1回答:1

我需要您的帮助,如标题所述,我正在尝试转换源代码的负载,并且我的许多旧源代码都有很多汇编程序代码行(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-script甚至是批处理脚本,但是其中大部分都涉及将代码复制到文件中,然后使用该语言解析文件(通过互联网进行弗兰肯斯坦的代码),得到一个结果并将其加载回去,我当时想必须有一种方法(可能是使用vbscript,因为我过去曾经玩过VBA和VB6,但是我太老了,生锈了,甚至现在都无法考虑)弹出两个方框,左边的方框,十六进制的原始副本,右边的方框.byte输出?甚至是文本输入框,我都将其复制并粘贴到其中,并得到以下结果,然后我就可以将其复制并粘贴回我的源代码中。

python batch-file vbscript converters 6502
1个回答
0
投票

您可以将原始字符串的相关部分切成2个字符的块,并使用列表推导将其转换为所需的格式:

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的交叉编译器。

© www.soinside.com 2019 - 2024. All rights reserved.