aboutsummaryrefslogtreecommitdiff
path: root/eval.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-06-10 10:13:16 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-06-10 10:13:16 +0200
commit4ab0f8dcb8eb248139fe84ad9b736ab5bb24b331 (patch)
tree0a4fc3f0bce852c3f7389810b4df287aae1eb0be /eval.go
parenta61806a9721f7e79ccd2aca3dedecfe5408333fc (diff)
Slow down and prettyprint rstack
Diffstat (limited to 'eval.go')
-rw-r--r--eval.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/eval.go b/eval.go
index 97ec07f..ee83e4c 100644
--- a/eval.go
+++ b/eval.go
@@ -5,6 +5,7 @@ import (
"encoding/binary"
"fmt"
"io/ioutil"
+ "time"
)
// J1 Forth processor VM
@@ -27,8 +28,12 @@ func (vm *J1) Reset() {
}
func (vm *J1) String() string {
+ var rstack [32]uint16
+ for i, v := range vm.rstack {
+ rstack[i] = v << 1
+ }
return fmt.Sprintf("PC=%0.4X ST=%0.4X D=%0.4X R=%0.4X",
- vm.pc<<1, vm.st0, vm.dstack[:vm.dsp+1], vm.rstack[:vm.rsp+1])
+ vm.pc<<1, vm.st0, vm.dstack[:vm.dsp+1], rstack[:vm.rsp+1])
}
// LoadBytes into memory
@@ -51,7 +56,9 @@ func (vm *J1) LoadFile(fname string) error {
// Eval evaluates content of memory
func (vm *J1) Eval() {
- for {
+ ticker := time.NewTicker(time.Second)
+ defer ticker.Stop()
+ for range ticker.C {
ins := Decode(vm.memory[vm.pc])
if ins == Jump(0) {
break