+/* Simulator output:
+
+ Functions to report diagnostic information to the user. */
+
+#define printf_filtered sim_io_printf_filtered
+void sim_io_printf_filtered
+(const char *msg, ...) __attribute__ ((format (printf, 1, 2)));
+
+void NORETURN error
+(const char *msg, ...);
+
+
+/* External environment:
+
+ Some HOST OS's require regular polling so that external events such
+ as GUI io can be handled. */
+
+void sim_io_poll_quit
+(void);
+
+
+
+/* Model I/O:
+
+ These functions provide the interface between the modeled targets
+ standard input and output streams and the hosts external
+ environment.
+
+ The underlying model is responsible for co-ordinating I/O
+ interactions such as:
+
+ main()
+ {
+ const char mess[] = "Hello World\r\n";
+ int out;
+ out = dup(1);
+ close(1);
+ write(out, mess, sizeof(mess))
+ }
+
+ That is to say, the underlying model would, in implementing dup()
+ recorded the fact that any output directed at fid-OUT should be
+ displayed using sim_io_write_stdout(). While for the code stub:
+
+ main()
+ {
+ const char mess[] = "Hello World\r\n";
+ int out;
+ close(1);
+ out = open("output", 0x0001|0x0200, 0); // write+create
+ out = dup(1);
+ write(out, mess, sizeof(mess))
+ }
+
+ would result in output to fid-1 being directed towards the file
+ "output". */
+
+
+int
+sim_io_write_stdout
+(const char *buf,
+ int sizeof_buf);
+
+int
+sim_io_write_stderr
+(const char *buf,
+ int sizeof_buf);
+
+/* read results */
+enum { sim_io_eof = -1, sim_io_not_ready = -2, }; /* See: IEEE 1275 */
+
+int
+sim_io_read_stdin
+(char *buf,
+ int sizeof_buf);
+
+#define flush_stdoutput sim_io_flush_stdoutput
+void sim_io_flush_stdoutput
+(void);
+
+
+/* Simulator instance. */
+extern psim *simulator;
+
+
+/* Memory management with an allocator that clears memory before use. */