From 42a28d800ef7959e5dedc58ef8cbf1614f48da4a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 28 May 2017 15:17:02 +0200 Subject: package --- cmd/dump/main.go | 18 ++++++++++++++++++ cmd/eval/main.go | 13 +++++++++++++ eval.go | 5 ++++- main.go | 24 ------------------------ parse.go | 2 +- 5 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 cmd/dump/main.go create mode 100644 cmd/eval/main.go delete mode 100644 main.go diff --git a/cmd/dump/main.go b/cmd/dump/main.go new file mode 100644 index 0000000..451b934 --- /dev/null +++ b/cmd/dump/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" + + "dim13.org/j1" +) + +func main() { + body, err := j1.ReadBin("testdata/j1.bin") + if err != nil { + panic(err) + } + for i, v := range body { + inst := j1.Decode(v) + fmt.Printf("%0.4X %0.4X\t%s\n", 2*i, v, inst) + } +} diff --git a/cmd/eval/main.go b/cmd/eval/main.go new file mode 100644 index 0000000..14e2d53 --- /dev/null +++ b/cmd/eval/main.go @@ -0,0 +1,13 @@ +package main + +import "dim13.org/j1" + +func main() { + vm := new(j1.J1) + if err := vm.LoadFile("testdata/j1.bin"); err != nil { + panic(err) + } + for i := 0; i < 100; i++ { + vm.Eval() + } +} diff --git a/eval.go b/eval.go index 739cc1e..d0f88c5 100644 --- a/eval.go +++ b/eval.go @@ -1,4 +1,4 @@ -package main +package j1 import ( "encoding/binary" @@ -52,15 +52,18 @@ func (vm *J1) Eval() { vm.dsp += 1 fmt.Println(v) case Jump: + vm.st0 = vm.T() next = uint16(v) fmt.Println(v) case Cond: if vm.st0 == 0 { next = uint16(v) } + vm.st0 = vm.N() vm.dsp -= 1 fmt.Println(v) case Call: + vm.st0 = vm.T() vm.rstack[vm.rsp] = next vm.rsp += 1 next = uint16(v) diff --git a/main.go b/main.go deleted file mode 100644 index be6d1d8..0000000 --- a/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import "fmt" - -func main() { - vm := new(J1) - if err := vm.LoadFile("testdata/j1.bin"); err != nil { - panic(err) - } - for i := 0; i < 100; i++ { - vm.Eval() - } -} - -func dump() { - body, err := ReadBin("testdata/j1.bin") - if err != nil { - panic(err) - } - for i, v := range body { - inst := Decode(v) - fmt.Printf("%0.4X %0.4X\t%s\n", 2*i, v, inst) - } -} diff --git a/parse.go b/parse.go index 5e8301f..da363f0 100644 --- a/parse.go +++ b/parse.go @@ -1,4 +1,4 @@ -package main +package j1 import ( "encoding/binary" -- cgit v1.2.3