/*
 *	occam I/O header file
 *	Copyright (C) 1996-1999 Jim Moores
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with this program; if not, write to the Free Software
 *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#ifndef OCCAM_IO_H
#define OCCAM_IO_H

#include <ukcthreads_types.h>

void hard_print();
void kbd_process();
void init_occam_io(void);
int addr_in_kbdproc (word);

extern word _kbd_workspace_bottom[13];
extern word _scr_workspace_bottom[128];
extern word _err_workspace_bottom[12];

/* pointers to the right offsets into each workspace for convenience */
/* this is slightly different to an assembler label. */
extern word *kbd_workspace;
extern word *scr_workspace;
extern word *err_workspace;

/* the actual locations holding the channel words.  Obviously if the */
/* channel address is needed then the address of (&) operator must be */
/* used */
extern word kbd_chan;
extern word scr_chan;
extern word err_chan;
#ifdef BLOCKING_SYSCALLS
	extern word kbd_termchan;
#endif

#endif
