free-pdk/fppa-pdk-documentation

Some instructions missing in the 15-bit instruction set

Closed this issue · 7 comments

spth commented

The following instructions in teh 15-bit instruction set do not have their opcodes documented in the wiki yet:

NMOV A, M
NMOV M, A
SWAP M
XOR A, IO

These are available e.g. on the PMC133.

Philipp

The 15 bit opcodes for those instructions are not listed anywhere till now.

Please assist.

I tried to use official IDE 0.84 to assemble the other commands (tried PMS133 and PMS134) but they produce an error.

However the instruction set does show 4 holes which would fit perfectly.

Should I try to create a test program and manually insert guessed instruction opcodes, write it to a real PMS133 and check how it works?

Guesses:

0x0300 : maybe XOR A,IO
0x0400 : maybe XOR A,IO

0x0800 : something with M (NMOV A,M / NMOV M,A / SWAP A,M / CEQSN M,A / CNEQSN M,A)
0x0900 : something with M (NMOV A,M / NMOV M,A / SWAP A,M / CEQSN M,A / CNEQSN M,A)
0x0A00 : something with M (NMOV A,M / NMOV M,A / SWAP A,M / CEQSN M,A / CNEQSN M,A)
0x0B00 : something with M (NMOV A,M / NMOV M,A / SWAP A,M / CEQSN M,A / CNEQSN M,A)

0x5800 : ???

spth commented

Well,

NMOV A, M,
NMOV M, A
SWAP M

are the only ones mentioned in datasheets, but missing in the list. There may even still be space reserved for future additions.

Philipp

With fuzzing I found the 3 missing opcode. Also available on PFS173:

0x0800 : NMOV A, M (ZF)
0x0900 : NMOV M, A
0x0A00 : SWAP M

I will add them to the opcode list.

spth commented

Thanks. I still wonder why these were omitted from PFS173 documentation.
Maybe mark them as 'u' instead of '-' in the table.

Philipp

This issue can be closed. The missing instructions have been added to the instruction set tables some time ago: https://free-pdk.github.io/instruction-sets/PDK15