43 lines
755 B
Go
43 lines
755 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")
|
|
os.Exit(1)
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|