Python 希望将旧的6502源代码十六进制行转换为.byte$00行
我需要你的帮助,就像标题上说的,我正在尝试转换大量的源代码,我的很多旧源代码都有大量的汇编代码行(6502),我无法再在Windows上使用 例如,我可以进行大量搜索和替换以更改所有操作码!字节转换为.byte或DCB转换为.byte,DCW转换为.word等,但当我有一行又一行的十六进制代码需要转换为.byte(例如)时,我就卡住了,也就是说,我有Python 希望将旧的6502源代码十六进制行转换为.byte$00行,python,converters,6502,Python,Converters,6502,我需要你的帮助,就像标题上说的,我正在尝试转换大量的源代码,我的很多旧源代码都有大量的汇编代码行(6502),我无法再在Windows上使用 例如,我可以进行大量搜索和替换以更改所有操作码!字节转换为.byte或DCB转换为.byte,DCW转换为.word等,但当我有一行又一行的十六进制代码需要转换为.byte(例如)时,我就卡住了,也就是说,我有 HEX 0000000000000000 HEX 0000000002000000 我想和你在一起 .byte $00,$00,$00,$0
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一样,但我太老了,已经生锈了,现在连想都不敢想)要弹出两个框,左框,十六进制的原始副本,右框。字节输出?甚至一个文本输入框,我复制并粘贴到下面的结果,然后我可以复制并粘贴回我的源代码。您可以将原始字符串的相关部分切成两个字符的块,并使用列表理解将其转换为所需格式:
def convert(s):
codes = s[4:]
return ".byte {}".format(",".join("${}".format(codes[i*2:i*2+2]) for i in range(len(codes)//2)))
然后
将打印
.byte $01,$23,$45,$67,$89,$AB,$CD,$EF
然后,您应该能够在客户端应用程序(如tkinter
)或简单的web应用程序(如flask
)中使用此功能
请注意,您还可以找到MOS6502的交叉编译器。您可以使用惯用的python方法对数字进行分组
cin = [
"HEX 0000000000000000",
"HEX 0000000002000000",
]
cout = [
'.byte'+ ''.join(
" ${}".format(''.join(d))
for d in zip(*[iter(c[4:])]*2)
)
for c in cin
]
哪个产生了这个列表
[
'.byte $00 $00 $00 $00 $00 $00 $00 $00',
'.byte $00 $00 $00 $00 $02 $00 $00 $00'
]
[
'.byte $00 $00 $00 $00 $00 $00 $00 $00',
'.byte $00 $00 $00 $00 $02 $00 $00 $00'
]