diff options
| -rw-r--r-- | asm.myr | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -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:])) ;; |