48 lines
702 B
Go
48 lines
702 B
Go
package script
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type InlineVal interface {
|
|
HexString() string
|
|
Bytes() []byte
|
|
Int() int
|
|
}
|
|
|
|
type ByteVal byte
|
|
|
|
func (bv ByteVal) HexString() string {
|
|
return fmt.Sprintf("$%02X", bv)
|
|
}
|
|
|
|
func (bv ByteVal) Bytes() []byte {
|
|
return []byte{byte(bv)}
|
|
}
|
|
|
|
func (bv ByteVal) Int() int {
|
|
return int(bv)
|
|
}
|
|
|
|
type WordVal [2]byte
|
|
|
|
func NewWordVal(v []byte) WordVal {
|
|
if len(v) != 2 {
|
|
panic("WordVal must be two bytes")
|
|
}
|
|
|
|
return WordVal([2]byte{v[0], v[1]})
|
|
}
|
|
|
|
func (wv WordVal) HexString() string {
|
|
return fmt.Sprintf("$%02X%02X", wv[1], wv[0])
|
|
}
|
|
|
|
func (wv WordVal) Bytes() []byte {
|
|
return []byte{wv[0], wv[1]}
|
|
}
|
|
|
|
func (wv WordVal) Int() int {
|
|
return (int(wv[1]) << 8) | int(wv[0])
|
|
}
|