Refactor basic conversion

This commit is contained in:
Terence Boldt 2021-06-29 20:20:36 -04:00
parent 65d90bfdb6
commit e828fcc99a

View File

@ -5,45 +5,7 @@ import (
"strings"
)
func ConvertBasicToText(basic []byte) string {
var builder strings.Builder
i := 0
for {
lo := basic[i]
i++
hi := basic[i]
i++
if lo == 0 && hi == 0 {
builder.WriteString("\n")
return builder.String()
}
line := int(basic[i]) + int(basic[i+1])*256
i += 2
fmt.Fprintf(&builder, "\n %d ", line)
for {
t := basic[i]
if t == 0 {
i++
break
}
if t > 127 {
builder.WriteString(getToken(t))
} else {
builder.WriteString(string(t))
}
i++
}
}
}
func getToken(token byte) string {
tokens := map[byte]string{
var tokens = map[byte]string{
0x80: "END",
0x81: "FOR",
0x82: "NEXT",
@ -153,5 +115,41 @@ func getToken(token byte) string {
0xEA: "MID$",
}
return tokens[token]
func ConvertBasicToText(basic []byte) string {
var builder strings.Builder
i := 0
for {
lo := basic[i]
i++
hi := basic[i]
i++
if lo == 0 && hi == 0 {
return builder.String()
}
line := int(basic[i]) + int(basic[i+1])*256
i += 2
fmt.Fprintf(&builder, "%d ", line)
for {
t := basic[i]
if t == 0 {
builder.WriteString("\n")
i++
break
}
if t > 127 {
builder.WriteString(" ")
builder.WriteString(tokens[t])
builder.WriteString(" ")
} else {
builder.WriteString(string(t))
}
i++
}
}
}