CSI_ARG
#define CSI_ARG_IS_MISSING(a) (CSI_ARG(a) == CSI_ARG_MISSING)
#define CSI_ARG_OR(a,def) (CSI_ARG(a) == CSI_ARG_MISSING ? (def) : CSI_ARG(a))
#define CSI_ARG_COUNT(a) (CSI_ARG(a) == CSI_ARG_MISSING || CSI_ARG(a) == 0 ? 1 : CSI_ARG(a))
switch(arg = CSI_ARG(args[argi])) {
state->pen.font = CSI_ARG(args[argi]) - 10;
value = CSI_ARG(args[argi]) - 30;
argi += 1 + lookup_colour(state, CSI_ARG(args[argi+1]), args+argi+2, argcount-argi-2, &state->pen.fg, &state->fg_index);
value = CSI_ARG(args[argi]) - 40;
argi += 1 + lookup_colour(state, CSI_ARG(args[argi+1]), args+argi+2, argcount-argi-2, &state->pen.bg, &state->bg_index);
value = CSI_ARG(args[argi]) - 90 + 8;
value = CSI_ARG(args[argi]) - 100 + 8;
col->red = CSI_ARG(args[0]);
col->green = CSI_ARG(args[1]);
col->blue = CSI_ARG(args[2]);
col = argcount < 2 || CSI_ARG_IS_MISSING(args[1]) ? 1 : CSI_ARG(args[1]);
switch(CSI_ARG(args[0])) {
switch(CSI_ARG(args[0])) {
col = argcount < 2 || CSI_ARG_IS_MISSING(args[1]) ? 1 : CSI_ARG(args[1]);
set_mode(state, CSI_ARG(args[0]), 1);
set_dec_mode(state, CSI_ARG(args[0]), 1);
set_mode(state, CSI_ARG(args[0]), 0);
set_dec_mode(state, CSI_ARG(args[0]), 0);
request_dec_mode(state, CSI_ARG(args[0]));
state->scrollregion_bottom = argcount < 2 || CSI_ARG_IS_MISSING(args[1]) ? -1 : CSI_ARG(args[1]);
state->scrollregion_right = argcount < 2 || CSI_ARG_IS_MISSING(args[1]) ? -1 : CSI_ARG(args[1]);
CSI_ARG(args[argi]));