diff options
| -rw-r--r-- | digital/atk16_mem.dig | 4 | ||||
| -rwxr-xr-x | src/assembler.py | 4 | ||||
| -rw-r--r-- | src/test.atk16 | 6 |
3 files changed, 6 insertions, 8 deletions
diff --git a/digital/atk16_mem.dig b/digital/atk16_mem.dig index c5ce679..e3f3bc2 100644 --- a/digital/atk16_mem.dig +++ b/digital/atk16_mem.dig @@ -67,8 +67,8 @@ </entry> <entry> <string>Data</string> - <data>4203,5040,8000,420a,4414,650,4802,2900,38c0,12c0,441e,4810,651 -,7500,4202,f000,4201,f000</data> + <data>6001,8000,420a,4414,650,4801,2900,38c0,12c0,441e,651,8402,4202 +,f000,4201,f000</data> </entry> </elementAttributes> <pos x="740" y="100"/> diff --git a/src/assembler.py b/src/assembler.py index 7deb0f0..7420a04 100755 --- a/src/assembler.py +++ b/src/assembler.py @@ -174,7 +174,7 @@ def make_jpr(addr_reg: str) -> list[int]: def make_jpi(address: int, imm: str) -> list[int]: """JPI 0110 XXXI IIII IIII""" imm_e = eval_expr(imm) - imm_e -= address + imm_e = imm_e - address - 1 word = (0b0110 << 12) + \ imm_e return [word] @@ -192,7 +192,7 @@ def make_bri(address: int, flag_s: str, imm: str) -> list[int]: """BRI 1000 XFFI IIII IIII""" flag_s_e = eval_expr(flag_s) imm_e = eval_expr(imm) - imm_e -= address + imm_e = imm_e - address - 1 word = (0b1000 << 12) + \ (flag_s_e << 9) + \ imm_e diff --git a/src/test.atk16 b/src/test.atk16 index da7c7c8..1a7c773 100644 --- a/src/test.atk16 +++ b/src/test.atk16 @@ -2,8 +2,7 @@ ; ROM (and program execution) starts at offset 0x0 @address 0x0 - ldi RA program - jpr RA + jpi program @label ram_offset 0x8000 ; store ram offset for later memory access @@ -20,9 +19,8 @@ ; Check that 10 + 20 = 30 mov RC RA ; RA := result of sum ldi RB 30 ; RB := 30 - ldi RD success sub RA RB RC ; RC := RA - RB - br f_zero RD ; if result is zero, jump to success + bri f_zero success ; if result is zero, jump to success ldi RA 2 ; RA := 2 to signal failure hlt |
