summaryrefslogtreecommitdiff
path: root/asm.myr
diff options
context:
space:
mode:
Diffstat (limited to 'asm.myr')
-rw-r--r--asm.myr24
1 files changed, 12 insertions, 12 deletions
diff --git a/asm.myr b/asm.myr
index be8c0ca..b634e9c 100644
--- a/asm.myr
+++ b/asm.myr
@@ -149,7 +149,7 @@ const emitinstr = {p
| (`Register(m), `Number(n)):
b = `std.Some([0x30 | (m & 0x0f), (n & 0xff)])
| (`Register(m), `Register(n)):
- b = `std.Some([0x50 | (m & 0x0f), (n & 0x0f) << 1])
+ b = `std.Some([0x50 | (m & 0x0f), (n & 0x0f) << 4])
| _:
-> `std.Err(std.fmt("invalid arguments to SE: {}", p[1:]))
;;
@@ -161,7 +161,7 @@ const emitinstr = {p
| (`Register(m), `Number(n)):
b = `std.Some([0x40 | (m & 0x0f), (n & 0xff)])
| (`Register(m), `Register(n)):
- b = `std.Some([0x90 | (m & 0x0f), (n & 0x0f) << 1])
+ b = `std.Some([0x90 | (m & 0x0f), (n & 0x0f) << 4])
| _:
-> `std.Err(std.fmt("invalid arguments to SNE: {}", p[1:]))
;;
@@ -190,7 +190,7 @@ const emitinstr = {p
match (parselit(p[1]), parselit(p[2]))
| (`Register(n), `Keypress): b = `std.Some([0xf0 | (n & 0x0f), 0x0a])
| (`Register(m), `Number(n)): b = `std.Some([0x60 | (m & 0x0f), (n & 0xff)])
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (n & 0x0f), (m & 0x0f) << 1])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (n & 0x0f), (m & 0x0f) << 4])
| (`Register(n), `DelayTimer): b = `std.Some([0xf0 | (n & 0x0f), 0x07])
| (`DelayTimer, `Register(n)): b = `std.Some([0xf0 | (n & 0x0f), 0x15])
| (`SoundTimer, `Register(n)): b = `std.Some([0xf0 | (n & 0x0f), 0x18])
@@ -209,7 +209,7 @@ const emitinstr = {p
match (parselit(p[1]), parselit(p[2]))
| (`AddressRegister, `Register(n)): b = `std.Some([0xf0 | (n & 0x0f), 0x1e])
| (`Register(m), `Number(n)): b = `std.Some([0x70 | (m & 0x0f), n & 0xff])
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x04])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x04])
| _:
-> `std.Err(std.fmt("invalid arguments to ADD: {}", p[1:]))
;;
@@ -218,7 +218,7 @@ const emitinstr = {p
-> `std.Err("SUB missing arguments")
;;
match (parselit(p[1]), parselit(p[2]))
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x05])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x05])
| _:
-> `std.Err(std.fmt("invalid arguments to SUB: {}", p[1:]))
;;
@@ -227,7 +227,7 @@ const emitinstr = {p
-> `std.Err("SUBN missing arguments")
;;
match (parselit(p[1]), parselit(p[2]))
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x07])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x07])
| _:
-> `std.Err(std.fmt("invalid arguments to SUBN: {}", p[1:]))
;;
@@ -236,7 +236,7 @@ const emitinstr = {p
-> `std.Err("OR missing arguments")
;;
match (parselit(p[1]), parselit(p[2]))
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x01])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x01])
| _:
-> `std.Err(std.fmt("invalid arguments to OR: {}", p[1:]))
;;
@@ -245,7 +245,7 @@ const emitinstr = {p
-> `std.Err("AND missing arguments")
;;
match (parselit(p[1]), parselit(p[2]))
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x02])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x02])
| _:
-> `std.Err(std.fmt("invalid arguments to AND: {}", p[1:]))
;;
@@ -254,7 +254,7 @@ const emitinstr = {p
-> `std.Err("XOR missing arguments")
;;
match (parselit(p[1]), parselit(p[2]))
- | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x03])
+ | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 4) | 0x03])
| _:
-> `std.Err(std.fmt("invalid arguments to XOR: {}", p[1:]))
;;
@@ -263,7 +263,7 @@ const emitinstr = {p
-> `std.Err("SHR missing arguments")
;;
match parselit(p[1])
- | `Register(n): `std.Some([0x80 | (n & 0x0f), 0x06])
+ | `Register(n): b = `std.Some([0x80 | (n & 0x0f), 0x06])
| _:
-> `std.Err(std.fmt("invalid arguments to SHR: {}", p[1:]))
;;
@@ -272,7 +272,7 @@ const emitinstr = {p
-> `std.Err("SHL missing arguments")
;;
match parselit(p[1])
- | `Register(n): `std.Some([0x80 | (n & 0x0f), 0x0e])
+ | `Register(n): b = `std.Some([0x80 | (n & 0x0f), 0x0e])
| _:
-> `std.Err(std.fmt("invalid arguments to SHL: {}", p[1:]))
;;
@@ -299,7 +299,7 @@ const emitinstr = {p
-> `std.Err("DRW missing arguments")
;;
match (parselit(p[1]), parselit(p[2]), parselit(p[3]))
- | (`Register(m), `Register(n), `Number(q)): b = `std.Some([0xc0 | (m & 0x0f), (n & 0x0f) << 1 | (q & 0x0f)])
+ | (`Register(m), `Register(n), `Number(q)): b = `std.Some([0xd0 | (m & 0x0f), (n & 0x0f) << 4 | (q & 0x0f)])
| _:
-> `std.Err(std.fmt("invalid arguments to DRW: {}", p[1:]))
;;