Имена буферов ввода и вывода в makefile могут быть разными, а могут и совпадать.
В случае, когда они совпадают, выделяется один буфер, который работает одновременно и на ввод, и на вывод. В C-коде буфер ввода-вывода может быть объявлен так:
extern BYTE iodata[];
При этом в параметрах CFG_INPUT_BUFFER_NAME и CFG_OUTPUT_BUFFER_NAME указывается значение iodata.
Если же используются раздельные буферы, то каждый из них объявляется в C-коде отдельно, и имеет собственное имя и размер.
При объявлении буферов допустимо использование любых типов данных, однако в случае структур рекомендуется добавлять в определение макрос ALIGNED, например:
extern struct
{
double x;
…
} iodata ALIGNED;
Это указывает компилятору, что структура выровнена в памяти, и позволяет генерировать более эффективный код для доступа к полям структуры.
По умолчанию размер буфера ввода-вывода установлен равным 1024 байта. Для ввода-вывода в примерах используется единый буфер. Перед запуском загружаемого приложения данные в него помещаются, а после окончания работы возвращаются обратно в PC.
Максимальный суммарный размер буферов для ввода-вывода составляет 0x3F00 байт (16128 байт). Так же в объявлении переменной желательно указание макроса ALIGNED, который говорит компилятору, что буфер выровнен в памяти, и, в некоторых случаях, оптимизировать доступ к данной переменной.