X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fao_stdio.c;h=3dd457f7c63959d6da9b70363aca0d4db44960e4;hb=4e2c18249e16c98cf5f7dccdf8d3b84bc473863a;hp=7bc416e1cf2a35ccce874033f61bf583e2f93830;hpb=0b483233118673cbc2cda1be6acd379df82bc95a;p=fw%2Faltos diff --git a/src/ao_stdio.c b/src/ao_stdio.c index 7bc416e1..3dd457f7 100644 --- a/src/ao_stdio.c +++ b/src/ao_stdio.c @@ -21,11 +21,11 @@ * Basic I/O functions to support SDCC stdio package */ -#define AO_NUM_STDIOS 2 +#define AO_NUM_STDIOS (HAS_USB + PACKET_HAS_SLAVE + USE_SERIAL_STDIN) static __xdata struct ao_stdio stdios[AO_NUM_STDIOS]; -static __data int8_t ao_cur_stdio; -static __data int8_t ao_num_stdios; +__data int8_t ao_cur_stdio; +__data int8_t ao_num_stdios; void putchar(char c) @@ -38,13 +38,14 @@ putchar(char c) void flush(void) { - stdios[ao_cur_stdio].flush(); + if (stdios[ao_cur_stdio].flush) + stdios[ao_cur_stdio].flush(); } __xdata uint8_t ao_stdin_ready; char -getchar(void) __reentrant +getchar(void) __reentrant __critical { char c; int8_t stdio = ao_cur_stdio; @@ -65,7 +66,7 @@ getchar(void) __reentrant void ao_add_stdio(char (*pollchar)(void), void (*putchar)(char), - void (*flush)(void)) + void (*flush)(void)) __reentrant { if (ao_num_stdios == AO_NUM_STDIOS) ao_panic(AO_PANIC_STDIO);