unit Console;

INTERFACE
uses Exec, Graphics, Input, Intuition, Keymap;


type
	pConUnit = ^tConUnit;
	tConUnit = record
		cu_MP: tMsgPort;
		cu_Window: pWindow;
		cu_XCP: integer;
		cu_YCP: integer;
		cu_XMax: integer;
		cu_YMax: integer;
		cu_XRSize: integer;
		cu_YRSize: integer;
		cu_XROrigin: integer;
		cu_YROrigin: integer;
		cu_XRExtant: integer;
		cu_YRExtant: integer;
		cu_XMinShrink: integer;
		cu_YMinShrink: integer;
		cu_XCCP: integer;
		cu_YCCP: integer;
		cu_KeyMapStruct: tKeyMap;
		cu_TabStops: array [0..79] of word;
		cu_Mask: shortint;
		cu_FgPen: shortint;
		cu_BgPen: shortint;
		cu_AOLPen: shortint;
		cu_DrawMode: shortint;
		cu_Obsolete1: shortint;
		cu_Obsolete2: pointer;
		cu_Minterms: array [0..7] of byte;
		cu_Font: pTextFont;
		cu_AlgoStyle: byte;
		cu_TxFlags: byte;
		cu_TxHeight: word;
		cu_TxWidth: word;
		cu_TxBaseline: word;
		cu_TxSpacing: integer;
		cu_Modes: array [0..2] of byte;
		cu_RawEvents: array [0..2] of byte;
		end;



var
	ConsoleDevice: pLibrary;


const
	SGR_NOTITALIC = $17;
	SGR_CLR2 = $20;
	SGR_CLR3 = $21;
	SGR_CLR4 = $22;
	SGR_CLR5 = $23;
	CONU_CHARMAP = 1;
	SGR_CLR6 = $24;
	SGR_CLR7 = $25;
	CONFLAG_DEFAULT = 0;
	SGR_WHITE = $25;
	SGR_BLACKBG = $28;
	CD_ASKDEFAULTKEYMAP = $B;
	CD_SETKEYMAP = $A;
	TBC_HCLRTABSALL = 3;
	SGR_BOLD = 1;
	CTC_HCLRTABSALL = 5;
	TBC_HCLRTAB = 0;
	SGR_NEGATIVE = 7;
	CTC_HCLRTAB = 2;
	SGR_NOTUNDERSCORE = $18;
	SGR_BLUE = $22;
	MAXTABS = $50;
	CD_SETDEFAULTKEYMAP = $C;
	SGR_CYAN = $24;
	CTC_HSETTAB = 0;
	CONU_LIBRARY = $FFFFFFFF;
	SGR_GREENBG = $2A;
	CONU_SNIPMAP = 3;
	SGR_MAGENTA = $23;
	SGR_CLR0BG = $28;
	SGR_YELLOWBG = $2B;
	SGR_CLR1BG = $29;
	SGR_CLR2BG = $2A;
	SGR_CLR3BG = $2B;
	CONFLAG_NODRAW_ON_NEWSIZE = 1;
	SGR_CLR4BG = $2C;
	PMB_ASM = $15;
	SGR_CLR5BG = $2D;
	SGR_DEFAULT = $27;
	SGR_CLR6BG = $2E;
	SGR_CLR7BG = $2F;
	PMB_AWM = $16;
	SGR_RED = $1F;
	SGR_WHITEBG = $2F;
	SGR_POSITIVE = $1B;
	DSR_CPR = 6;
	SGR_BLUEBG = $2C;
	SGR_CYANBG = $2E;
	SGR_ITALIC = 3;
	SGR_MAGENTABG = $2D;
	SGR_PRIMARY = 0;
	SGR_BLACK = $1E;
	SGR_DEFAULTBG = $31;
	SGR_NORMAL = $16;
	SGR_REDBG = $29;
	SGR_UNDERSCORE = 4;
	CONU_STANDARD = 0;
	SGR_GREEN = $20;
	M_ASM = '>1';
	M_AWM = '?7';
	SGR_CLR0 = $1E;
	CD_ASKKEYMAP = 9;
	SGR_YELLOW = $21;
	SGR_CLR1 = $1F;
	M_LNM = $14;


function CDInputHandler
		(events: pInputEvent;
		consoleDevice: pLibrary): pInputEvent;

function RawKeyConvert
		(events: pInputEvent;
		buffer: STRPTR;
		length: longint;
		keyMap: pKeyMap): longint;



IMPLEMENTATION
function CDInputHandler; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	ConsoleDevice,a6
	jsr		-$2A(a6)
	move.l	d0,$10(sp)
	move.l	(sp)+,a6
end;

function RawKeyConvert; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,d1
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	ConsoleDevice,a6
	jsr		-$30(a6)
	move.l	d0,$1C(sp)
	movem.l	(sp)+,a2/a6
end;

end.
