MUSTECR( ps_neednoargs(ps) );
- if (!ci->xarg)
+ if (!(ci->xarg & CIXF_FORCE))
MUSTECRPREDICT( safety_check_movposchange(move,CMDPPC) );
MUSTECR( movpos_change(move,poscomb,ms,0) );
}
const CmdInfo toplevel_cmds[]= {
- { "!pic", cmd_pic },
- { "!nmra", cmd_nmra, },
- { "noop", cmd_noop },
- { "movpos", cmd_movpos },
- { "!movpos", cmd_movpos, 1 },
- { "speed", cmd_speed },
+ { "!pic", cmd_pic, CIXF_ANYSTA|CIXF_FORCE },
+ { "!nmra", cmd_nmra, },
+ { "noop", cmd_noop, CIXF_ANYSTA },
+ { "movpos", cmd_movpos },
+ { "!movpos", cmd_movpos, CIXF_ANYSTA|CIXF_FORCE },
+ { "speed", cmd_speed },
{ 0 }
};
ci= some_needword_lookup(ps, toplevel_cmds, "command");
if (!ci) return;
oprintf(UPO, "executing %s\n",ci->name);
+ if (sta_state < Sta_Run && !(ci->xarg & CIXF_ANYSTA)) {
+ oprintf(UPO,"ack %s InvalidState : layout not ready\n",ci->name);
+ return;
+ }
r= ci->fn(ps,ci);
switch (r) {
case 0: oprintf(UPO, "ack %s ok\n", ci->name); break;