aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-05-28 15:17:02 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-05-28 15:17:02 +0200
commit42a28d800ef7959e5dedc58ef8cbf1614f48da4a (patch)
tree096b686a70a00632733d5e0c9f103146c57244d7
parent72103d06b5f2ef5670c029ed50a99525375dd62f (diff)
package
-rw-r--r--cmd/dump/main.go18
-rw-r--r--cmd/eval/main.go13
-rw-r--r--eval.go5
-rw-r--r--main.go24
-rw-r--r--parse.go2
5 files changed, 36 insertions, 26 deletions
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"