To add new cpu opcodes we need only to change two files: simulate.h and simulate.c
So we have to proceed with these steps:
Go to the bottom of this file under the comment //New Opcodes and add your new opcode ABC as last and before the end_ops constant.
For example:
//New Opcodes
MDIV , // MDIV R, 10, M : (S>D) -- Calc Modulus and Division putting them into destination Registers
STX , // STX 0xFF , M : (S>D) -- Store immed. value into contents of [MemoryAddress] pointed by Register
+ ABC , // short description
Go at line 325 of this file under the comment //New Opcodes and add your macro that represent the opcode ABC
For example:
#define ABC_opcode _cpuREG( cpuIMM_ARG(1) ) = cpuIMM_ARG(2); \
currPC_add( x )
For example: (you need to study the other opcodes to understand how they work)
Go at line 482 of this file under the comment //New Opcodes and add your macro that represent the opcode ABC
__def_opcall( ABC );
For example:
Go at line 569 of this file under the comment //New Opcodes and add your initialisation group that represent the opcode ABC
+ { __Opcode_Struct( ABC , 3 , "#RR" ) },
Go at line 730 inside the simugoto() routine and add your address constant:
For example:
&&do_MDIV, &&do_STX, &&do_ABC, // new opcodes
Go at line 858 inside the simugoto() routine and add your address constant:
For example:
__def_goto_Label( ABC );
STOP.
You don't needs to do any other steps!!
In alternative to the simugoto() routine, there is another routine called simulate():
if you use this routine you don't need to do the steps 730/858 which are exclusive for simugoto() routine.
Anonymous