diff -c -r inform6-base/states.c inform6-char/states.c *** inform6-base/states.c 2009-11-19 20:45:19.000000000 -0500 --- inform6-char/states.c 2009-12-08 16:41:31.000000000 -0500 *************** *** 473,478 **** --- 473,479 ---- get_next_token(); if ((token_type == SEP_TT) && (token_value == CLOSEB_SEP)) { assembly_operand AO1; + int ln, ln2; put_token_back(); put_token_back(); local_variables.enabled = FALSE; *************** *** 499,505 **** --- 500,518 ---- AO1 = code_generate( parse_expression(QUANTITY_CONTEXT), QUANTITY_CONTEXT, -1); + if ((AO1.type == LOCALVAR_OT) && (AO1.value == 0)) + { assembleg_2(stkpeek_gc, zero_operand, + stack_pointer); + } + AO2.type = HALFCONSTANT_OT; AO2.value = 0x100; AO2.marker = 0; + assembleg_2_branch(jgeu_gc, AO1, AO2, + ln = next_label++); + ln2 = next_label++; assembleg_1(streamchar_gc, AO1); + assembleg_jump(ln2); + assemble_label_no(ln); + assembleg_1(streamunichar_gc, AO1); + assemble_label_no(ln2); goto PrintTermDone; case ADDRESS_MK: if (runtime_error_checking_switch) diff -c -r inform6-base/veneer.c inform6-char/veneer.c *** inform6-base/veneer.c 2009-11-19 20:45:19.000000000 -0500 --- inform6-char/veneer.c 2009-12-08 16:32:49.000000000 -0500 *************** *** 1773,1781 **** */ "RT__ChPrintC", "c;\ ! if (c<10 || (c>10 && c<32) || (c>126 && c<160) || c>255)\ return RT__Err(33,c);\ ! @streamchar c;\ ]", "", "", "", "", "" }, { --- 1773,1784 ---- */ "RT__ChPrintC", "c;\ ! if (c<10 || (c>10 && c<32) || (c>126 && c<160))\ return RT__Err(33,c);\ ! if (c>=0 && c<256)\ ! @streamchar c;\ ! else\ ! @streamunichar c;\ ]", "", "", "", "", "" }, {