marcie/marcie/main.go

42 lines
742 B
Go

package main
import "os"
import "fmt"
import "git.tebibyte.media/sashakoshka/marcie"
func main () {
if len(os.Args) != 2 {
fmt.Println("specify file name")
}
file, err := os.Open(os.Args[1])
if err != nil {
fmt.Println(err)
os.Exit(1)
}
buffer := make([]byte, 4096 * 2)
file.Read(buffer)
program := make([]int16, 4096)
for index := 0; index < len(program); index ++ {
program[index] = int16 (
uint16(buffer[index * 2]) << 8 +
uint16(buffer[index * 2 + 1]))
}
offset := program[0]
program = program[1:]
machine := marcie.Machine { }
machine.SetInput(os.Stdin)
machine.SetOutput(os.Stdout)
machine.LoadProgram(program)
err = machine.Execute(offset)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}