%
% IO-DATA.RED - Data structures used by input and output
% 
% Author:      Eric Benson
%              Computer Science Dept.
%              University of Utah
% Date:        21 September 1981
% Copyright (c) 1981 Eric Benson
%

on SysLisp;
WConst ChannelClosed = 0, 
       ChannelOpenRead = 1,
       ChannelOpenWrite = 2,
       ChannelOpenSpecial = 3;

internal WConst MaxTokenSize = 5000;

exported WString TokenBuffer[MaxTokenSize];

exported WConst MaxChannels = 31;

exported WArray ReadFunction = ['TerminalInputHandler,
				'WriteOnlyChannel,	
				'WriteOnlyChannel,	
				'CompressReadChar,      
				'WriteOnlyChannel,      
				'WriteOnlyChannel,        
				'WriteOnlyChannel,        
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen],
		WriteFunction = ['ReadOnlyChannel,
				'IndependentWriteChar,
				'ToStringWriteChar,
				'ExplodeWriteChar,
				'FlatSizeWriteChar,
				'IndependentWriteChar,
				'IndependentWriteChar,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen],
		CloseFunction = ['IllegalStandardChannelClose,
				'IllegalStandardChannelClose,
				'IllegalStandardChannelClose,
				'IllegalStandardChannelClose,
				'IllegalStandardChannelClose,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen,
				'ChannelNotOpen],
		UnReadBuffer[MaxChannels],
		LinePosition[MaxChannels],
		MaxLine = [0, 80,80, 10000, 10000,
					  80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
			   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
	        ChannelStatus = [ChannelOpenRead,
		                   ChannelOpenWrite,
				   ChannelOpenSpecial,
				   ChannelOpenSpecial,
				   ChannelOpenSpecial,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed,
				   ChannelClosed],
         MaxBuffer [MaxChannels],
         ChannelTable [MaxChannels],
         NextPosition [MaxChannels],
         BufferLength [MaxChannels];

off SysLisp;


global '(!$EOL!$);
LoadTime(!$EOL!$ := '!
);

END;
