From 961bac0ffe07470eff3745085aa1cb9e37789d4d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 6 Jun 2017 23:01:28 +0200 Subject: Move ReadBin into cmd --- cmd/dump/main.go | 23 ++++++++++++++++++++++- eval.go | 7 ++----- parse.go | 25 +------------------------ 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/cmd/dump/main.go b/cmd/dump/main.go index afc5aca..f579c37 100644 --- a/cmd/dump/main.go +++ b/cmd/dump/main.go @@ -1,13 +1,15 @@ package main import ( + "encoding/binary" "fmt" + "os" "dim13.org/j1" ) func main() { - body, err := j1.ReadBin("testdata/j1.bin") + body, err := ReadBin("testdata/j1.bin") if err != nil { panic(err) } @@ -15,3 +17,22 @@ func main() { fmt.Printf("%0.4X %0.4X\t%s\n", 2*i, v, j1.Decode(v)) } } + +// ReadBin file +func ReadBin(fname string) ([]uint16, error) { + fd, err := os.Open(fname) + if err != nil { + return nil, err + } + defer fd.Close() + stat, err := fd.Stat() + if err != nil { + return nil, err + } + size := stat.Size() + body := make([]uint16, int(size)/2) + if err := binary.Read(fd, binary.BigEndian, &body); err != nil { + return nil, err + } + return body, nil +} diff --git a/eval.go b/eval.go index e51a3dd..4ca7319 100644 --- a/eval.go +++ b/eval.go @@ -19,11 +19,8 @@ type J1 struct { } func (vm *J1) String() string { - s := fmt.Sprintf("\tPC %0.4X\n", vm.pc) - s += fmt.Sprintf("\tST %0.4X\n", vm.st0) - s += fmt.Sprintf("\tD %0.4X\n", vm.dstack[:vm.dsp]) - s += fmt.Sprintf("\tR %0.4X\n", vm.rstack[:vm.rsp]) - return s + return fmt.Sprintf("PC=%0.4X ST=%0.4X D=%0.4X R=%0.4X\n", + vm.pc, vm.st0, vm.dstack[:vm.dsp], vm.rstack[:vm.rsp]) } // LoadBytes into memory diff --git a/parse.go b/parse.go index 1a768c6..97d1c24 100644 --- a/parse.go +++ b/parse.go @@ -1,29 +1,6 @@ package j1 -import ( - "encoding/binary" - "fmt" - "os" -) - -// ReadBin file -func ReadBin(fname string) ([]uint16, error) { - fd, err := os.Open(fname) - if err != nil { - return nil, err - } - defer fd.Close() - stat, err := fd.Stat() - if err != nil { - return nil, err - } - size := stat.Size() - body := make([]uint16, int(size)/2) - if err := binary.Read(fd, binary.BigEndian, &body); err != nil { - return nil, err - } - return body, nil -} +import "fmt" // Decode instruction func Decode(v uint16) Instruction { -- cgit v1.2.3