Skip to content

Commit 61e5641

Browse files
authored
Merge pull request #88 from craigthomas/pshu-pulu-bugfix
Bug fixes for PSHU and PULU
2 parents 6f58550 + f1d6833 commit 61e5641

File tree

4 files changed

+45
-9
lines changed

4 files changed

+45
-9
lines changed

.github/workflows/python-app.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ name: Build Test Coverage
22
on: [push, pull_request]
33
jobs:
44
run:
5-
runs-on: ubuntu-latest
5+
runs-on: ubuntu-20.04
66
env:
7-
OS: ubuntu-latest
8-
PYTHON: '3.6.8'
7+
OS: ubuntu-20.04
8+
PYTHON: '3.8.10'
99
steps:
1010
- name: Checkout
11-
uses: actions/checkout@v2.3.4
11+
uses: actions/checkout@v3
1212
- name: Setup Python
13-
uses: actions/setup-python@v2.2.2
13+
uses: actions/setup-python@v4
1414
with:
15-
python-version: 3.6.8
15+
python-version: 3.8.10
1616
- name: Generate Report
1717
run: |
1818
pip install -r requirements.txt

cocoasm/instruction.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ class Instruction(NamedTuple):
147147
Instruction(mnemonic="ORB", mode=Mode(imm=0xCA, imm_sz=2, dir=0xDA, dir_sz=2, ind=0xEA, ind_sz=2, ext=0xFA, ext_sz=3)),
148148
Instruction(mnemonic="ORCC", mode=Mode(imm=0x1A, imm_sz=2)),
149149
Instruction(mnemonic="PSHS", mode=Mode(imm=0x34, imm_sz=2), is_special=True),
150-
Instruction(mnemonic="PSHU", mode=Mode(imm=0x36, imm_sz=2)),
150+
Instruction(mnemonic="PSHU", mode=Mode(imm=0x36, imm_sz=2), is_special=True),
151151
Instruction(mnemonic="PULS", mode=Mode(imm=0x35, imm_sz=2), is_special=True),
152-
Instruction(mnemonic="PULU", mode=Mode(imm=0x37, imm_sz=2)),
152+
Instruction(mnemonic="PULU", mode=Mode(imm=0x37, imm_sz=2), is_special=True),
153153
Instruction(mnemonic="ROLA", mode=Mode(inh=0x49, inh_sz=1)),
154154
Instruction(mnemonic="ROLB", mode=Mode(inh=0x59, inh_sz=1)),
155155
Instruction(mnemonic="ROL", mode=Mode(dir=0x09, dir_sz=2, ind=0x69, ind_sz=2, ext=0x79, ext_sz=3)),

cocoasm/operands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ def resolve_symbols(self, symbol_table):
258258
def translate(self):
259259
post_byte = 0x00
260260

261-
if self.instruction.mnemonic == "PSHS" or self.instruction.mnemonic == "PULS":
261+
if self.instruction.mnemonic in ["PSHS", "PSHU", "PULS", "PULU"]:
262262
if not self.operand_string:
263263
raise OperandTypeError("one or more registers must be specified")
264264

test/test_integration.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,42 @@ def test_multi_word_declaration(self):
864864
program.translate_statements()
865865
self.assertEqual([0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE], program.get_binary_array())
866866

867+
def test_pshu_regression(self):
868+
statements = [
869+
Statement(" PSHU A"),
870+
]
871+
program = Program()
872+
program.statements = statements
873+
program.translate_statements()
874+
self.assertEquals([0x36, 0x02], program.get_binary_array())
875+
876+
def test_pshu_multi_regression(self):
877+
statements = [
878+
Statement(" PSHU A,B"),
879+
]
880+
program = Program()
881+
program.statements = statements
882+
program.translate_statements()
883+
self.assertEquals([0x36, 0x06], program.get_binary_array())
884+
885+
def test_pulu_regression(self):
886+
statements = [
887+
Statement(" PULU A"),
888+
]
889+
program = Program()
890+
program.statements = statements
891+
program.translate_statements()
892+
self.assertEquals([0x37, 0x02], program.get_binary_array())
893+
894+
def test_pulu_multi_regression(self):
895+
statements = [
896+
Statement(" PULU A,B"),
897+
]
898+
program = Program()
899+
program.statements = statements
900+
program.translate_statements()
901+
self.assertEquals([0x37, 0x06], program.get_binary_array())
902+
867903
# M A I N #####################################################################
868904

869905

0 commit comments

Comments
 (0)