Index: trunk/src_plugins/import_gcode/gcode_exec.c =================================================================== --- trunk/src_plugins/import_gcode/gcode_exec.c (revision 821) +++ trunk/src_plugins/import_gcode/gcode_exec.c (revision 822) @@ -192,14 +192,17 @@ return ctx->state.stop; } -#define CN(code,num) (unsigned)((((unsigned)code << 16) | (unsigned)((double)num*10.0))) +#define CN(code,num) (unsigned)((((unsigned)code << 16) | (unsigned)(num*10))) +#define CNF(code,num,f) (unsigned)((((unsigned)code << 16) | ((unsigned)(num*10) + (unsigned)f))) +#define CND(code,num) (unsigned)((((unsigned)code << 16) | (unsigned)((double)num*10.0))) + static int gcode_execute_code_(gcode_prg_t *prg, int code, double param) { gcode_exec_t *ctx = prg->exec_data; if ((code == 'G') || (code == 'M')) { - switch(CN(code, param)) { + switch(CND(code, param)) { case CN('G', 0): ctx->state.move = MOVE_TRAVEL; ctx->cmd.move = 1; break; case CN('G', 1): ctx->state.move = (!prg->cfg.laser || prg->laser_on) ? MOVE_LINEAR : MOVE_TRAVEL; ctx->cmd.move = 1; break; case CN('G', 2): ctx->state.move = MOVE_CW; ctx->cmd.move = 1; break; @@ -226,9 +229,9 @@ case CN('G', 57): ctx->cmd.pcs = 4; break; case CN('G', 58): ctx->cmd.pcs = 5; break; case CN('G', 59): ctx->cmd.pcs = 6; break; - case CN('G', 59.1): ctx->cmd.pcs = 7; break; - case CN('G', 59.2): ctx->cmd.pcs = 8; break; - case CN('G', 59.3): ctx->cmd.pcs = 9; break; + case CNF('G', 59,1): ctx->cmd.pcs = 7; break; /* 59.1 */ + case CNF('G', 59,2): ctx->cmd.pcs = 8; break; /* 59.2 */ + case CNF('G', 59,3): ctx->cmd.pcs = 9; break; /* 59.3 */ case CN('G', 61): case CN('G', 64): break; /* corner physics */ @@ -236,8 +239,8 @@ case CN('G', 91): ctx->state.relative = 1; break; case CN('G', 92): ctx->cmd.setcrd92 = 1; break; - case CN('G', 92.1): case CN('G', 92.2): - case CN('G', 92.3): case CN('G', 92.4): prg->error(prg, 1, "G92.* not supported"); return -1; + case CNF('G', 92,1): case CNF('G', 92,2): + case CNF('G', 92,3): case CNF('G', 92,4): prg->error(prg, 1, "G92.* not supported"); return -1; case CN('G', 95): case CN('G', 96): case CN('G', 97): break; /* ignore spindle/feed speed */