void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { ymx_debug_msg("Entering mexFunction\n"); mexAtExit(ymx_persistent_cleanup); if (nrhs == 0) { command_help(nlhs, plhs, 0, NULL); return; } if (!mxIsChar(prhs[0]) || mxGetM(prhs[0]) != 1) { mexErrMsgTxt("First input must be a string."); } char *command = mxArrayToString(prhs[0]); if (strcmp(command, "load") == 0) { command_load(nlhs, plhs, nrhs-1, prhs+1); } else if (strcmp(command, "dump") == 0) { command_dump(nlhs, plhs, nrhs-1, prhs+1); } else if (strcmp(command, "help") == 0) { command_help(nlhs, plhs, nrhs-1, prhs+1); } else { command_help(nlhs, plhs, 0, NULL); } ymx_debug_msg("plhs: %d\n", plhs); ymx_debug_msg("plhs[0]: %d\n", plhs[0]); mxFree(command); ymx_debug_msg("Exiting mexFunction\n"); }
int ALU(int command, int operand) { trace; if (command == 10) { return command_read(operand); } else if (command == 11) { return command_write(operand); } else if (command == 20) { return command_load(operand); } else if (command == 21) { return command_store(operand); } else if (command == 30) { return command_add(operand); } else if (command == 31) { return command_sub(operand); } else if (command == 32) { return command_divide(operand); } else if (command == 33) { return command_mul(operand); } else if (command == 40) { return command_jump(operand); } else if (command == 41) { return command_jneg(operand); } else if (command == 42) { return command_jz(operand); } else if (command == 43) { return command_halt(); } else if (command == 51) { return command_not(operand); } else if (command == 52) { return command_and(operand); } else if (command == 53) { return command_or(operand); } else if (command == 54) { return command_xor(operand); } else if (command == 55) { return command_jns(operand); } else if (command == 56) { return command_jc(operand); } else if (command == 57) { return command_jnc(operand); } else if (command == 58) { return command_jp(operand); } else if (command == 59) { return command_jnp(operand); } else if (command == 60) { return command_chl(operand); } else if (command == 61) { return command_shr(operand); } else if (command == 62) { return command_rcl(operand); } else if (command == 63) { return command_rcr(operand); } else if (command == 64) { return command_neg(operand); } else if (command == 65 || command == 75) { return command_addc(operand); } else if (command == 66 || command == 76) { return command_subc(operand); } else if (command == 67) { return command_loglc(operand); } else if (command == 68) { return command_logrc(operand); } else if (command == 69) { return command_rccl(operand); } else if (command == 70) { return command_rccr(operand); } else if (command == 71) { return command_mova(operand); } else if (command == 72) { return command_movr(operand); } else if (command == 73) { return command_movca(operand); } else if (command == 74) { return command_movcr(operand); } sc_regSet(COMMAND_ERROR, 1); return -1; }