Skip to content

Commit

Permalink
Implement LOADSUB operation. (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
craigthomas authored Jul 9, 2024
1 parent fab65dd commit a2c4f8a
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,12 +187,13 @@ specifications, as well as pseudo operations.

### XO Chip Mnemonics

| Mnemonic | Opcode | Operands | Description |
|------------|--------|:--------:|------------------------------------------------------|
| `SAVESUB` | `5st2` | 2 | Saves subset of registers from `s` to `t` in memory |
| `AUDIO` | `F002` | 0 | Load 16-byte audio pattern buffer from `index` |
| `PLANE` | `Fn03` | 1 | Sets the drawing bitplane to `n` |
| `PITCH` | `Fs3A` | 1 | Sets the internal pitch to the value in register `s` |
| Mnemonic | Opcode | Operands | Description |
|------------|--------|:--------:|-------------------------------------------------------|
| `SAVESUB` | `5st2` | 2 | Saves subset of registers from `s` to `t` in memory |
| `LOADSUB` | `5st3` | 2 | Loads subset of registers from `s` to `t` from memory |
| `AUDIO` | `F002` | 0 | Load 16-byte audio pattern buffer from `index` |
| `PLANE` | `Fn03` | 1 | Sets the drawing bitplane to `n` |
| `PITCH` | `Fs3A` | 1 | Sets the internal pitch to the value in register `s` |


### Pseudo Operations
Expand Down
1 change: 1 addition & 0 deletions chip8asm/statement.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
Operation(op="Fs85", operands=1, source=1, target=0, numeric=0, mnemonic="LRPL"),
# XO Chip Instructions
Operation(op="5st2", operands=2, source=1, target=1, numeric=0, mnemonic="SAVESUB"),
Operation(op="5st3", operands=2, source=1, target=1, numeric=0, mnemonic="LOADSUB"),
Operation(op="F002", operands=0, source=0, target=0, numeric=0, mnemonic="AUDIO"),
Operation(op="Fn03", operands=1, source=0, target=0, numeric=1, mnemonic="PLANE"),
Operation(op="Fs3A", operands=1, source=1, target=0, numeric=0, mnemonic="PITCH"),
Expand Down
9 changes: 9 additions & 0 deletions test/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,13 @@ def test_savesub_mnemonic_translate_correct(self):
machine_code = program.generate_machine_code()
self.assertEqual([0x51, 0x62], machine_code)

def test_loadsub_mnemonic_translate_correct(self):
program = Program()
statement = Statement()
statement.parse_line(" LOADSUB r1,r6 ; load subset statement")
program.statements.append(statement)
program = self.translate_statements(program)
machine_code = program.generate_machine_code()
self.assertEqual([0x51, 0x63], machine_code)

# E N D O F F I L E #######################################################

0 comments on commit a2c4f8a

Please sign in to comment.