aboutsummaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-05-28 10:34:53 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-05-28 10:34:53 +0200
commit6ec387bc871d1d1e274ee2b2c2fd11abb26bef0a (patch)
treea9ef37a2cf2698f5a904e49ca517765e316e9e79 /parse.go
parent659bf1b7963aab64b4d667104ecb6c33521cb72a (diff)
Eval draft
Diffstat (limited to 'parse.go')
-rw-r--r--parse.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/parse.go b/parse.go
index c6ab09e..5e8301f 100644
--- a/parse.go
+++ b/parse.go
@@ -52,20 +52,20 @@ func (v Lit) isInstruction() {}
type Jump uint16
-func newJump(v uint16) Jump { return Jump(v << 1) }
-func (v Jump) String() string { return fmt.Sprintf("UBRANCH %0.4X", uint16(v)) }
+func newJump(v uint16) Jump { return Jump(v &^ uint16(7<<13)) }
+func (v Jump) String() string { return fmt.Sprintf("UBRANCH %0.4X", uint16(v<<1)) }
func (v Jump) isInstruction() {}
type Cond uint16
-func newCond(v uint16) Cond { return Cond(v << 1) }
-func (v Cond) String() string { return fmt.Sprintf("0BRANCH %0.4X", uint16(v)) }
+func newCond(v uint16) Cond { return Cond(v &^ uint16(7<<13)) }
+func (v Cond) String() string { return fmt.Sprintf("0BRANCH %0.4X", uint16(v<<1)) }
func (v Cond) isInstruction() {}
type Call uint16
-func newCall(v uint16) Call { return Call(v << 1) }
-func (v Call) String() string { return fmt.Sprintf("CALL %0.4X", uint16(v)) }
+func newCall(v uint16) Call { return Call(v &^ uint16(7<<13)) }
+func (v Call) String() string { return fmt.Sprintf("CALL %0.4X", uint16(v<<1)) }
func (v Call) isInstruction() {}
type ALU struct {