mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 08:30:54 +02:00
Amunits: console and conunit, fixed alignment and fixes from 3.9 SDK
git-svn-id: trunk@43812 -
This commit is contained in:
parent
4dc84b2a78
commit
25c11a94c4
@ -18,112 +18,103 @@
|
||||
To call the two routines defined below, you'll need to set
|
||||
ConsoleBase to an appropriate value.
|
||||
|
||||
Added the define use_amiga_smartlink.
|
||||
13 Jan 2003.
|
||||
|
||||
nils.sjoholm@mailbox.swipnet.se Nils Sjoholm
|
||||
}
|
||||
|
||||
unit console;
|
||||
|
||||
INTERFACE
|
||||
|
||||
uses exec, inputevent, keymap;
|
||||
interface
|
||||
|
||||
uses
|
||||
exec, inputevent, keymap;
|
||||
|
||||
const
|
||||
|
||||
{***** Console commands *****}
|
||||
|
||||
CD_ASKKEYMAP = CMD_NONSTD + 0;
|
||||
CD_SETKEYMAP = CMD_NONSTD + 1;
|
||||
CD_ASKDEFAULTKEYMAP = CMD_NONSTD + 2;
|
||||
CD_SETDEFAULTKEYMAP = CMD_NONSTD + 3;
|
||||
|
||||
CD_ASKKEYMAP = CMD_NONSTD + 0;
|
||||
CD_SETKEYMAP = CMD_NONSTD + 1;
|
||||
CD_ASKDEFAULTKEYMAP = CMD_NONSTD + 2;
|
||||
CD_SETDEFAULTKEYMAP = CMD_NONSTD + 3;
|
||||
|
||||
{***** SGR parameters *****}
|
||||
|
||||
SGR_PRIMARY = 0;
|
||||
SGR_BOLD = 1;
|
||||
SGR_ITALIC = 3;
|
||||
SGR_UNDERSCORE = 4;
|
||||
SGR_NEGATIVE = 7;
|
||||
SGR_PRIMARY = 0;
|
||||
SGR_BOLD = 1;
|
||||
SGR_ITALIC = 3;
|
||||
SGR_UNDERSCORE = 4;
|
||||
SGR_NEGATIVE = 7;
|
||||
|
||||
SGR_NORMAL = 22; { default foreground color, not bold }
|
||||
SGR_NOTITALIC = 23;
|
||||
SGR_NOTUNDERSCORE = 24;
|
||||
SGR_POSITIVE = 27;
|
||||
SGR_NORMAL = 22; // default foreground color, not bold
|
||||
SGR_NOTITALIC = 23;
|
||||
SGR_NOTUNDERSCORE = 24;
|
||||
SGR_POSITIVE = 27;
|
||||
|
||||
{ these names refer to the ANSI standard, not the implementation }
|
||||
|
||||
SGR_BLACK = 30;
|
||||
SGR_RED = 31;
|
||||
SGR_GREEN = 32;
|
||||
SGR_YELLOW = 33;
|
||||
SGR_BLUE = 34;
|
||||
SGR_MAGENTA = 35;
|
||||
SGR_CYAN = 36;
|
||||
SGR_WHITE = 37;
|
||||
SGR_DEFAULT = 39;
|
||||
SGR_BLACK = 30;
|
||||
SGR_RED = 31;
|
||||
SGR_GREEN = 32;
|
||||
SGR_YELLOW = 33;
|
||||
SGR_BLUE = 34;
|
||||
SGR_MAGENTA = 35;
|
||||
SGR_CYAN = 36;
|
||||
SGR_WHITE = 37;
|
||||
SGR_DEFAULT = 39;
|
||||
|
||||
SGR_BLACKBG = 40;
|
||||
SGR_REDBG = 41;
|
||||
SGR_GREENBG = 42;
|
||||
SGR_YELLOWBG = 43;
|
||||
SGR_BLUEBG = 44;
|
||||
SGR_MAGENTABG = 45;
|
||||
SGR_CYANBG = 46;
|
||||
SGR_WHITEBG = 47;
|
||||
SGR_DEFAULTBG = 49;
|
||||
SGR_BLACKBG = 40;
|
||||
SGR_REDBG = 41;
|
||||
SGR_GREENBG = 42;
|
||||
SGR_YELLOWBG = 43;
|
||||
SGR_BLUEBG = 44;
|
||||
SGR_MAGENTABG = 45;
|
||||
SGR_CYANBG = 46;
|
||||
SGR_WHITEBG = 47;
|
||||
SGR_DEFAULTBG = 49;
|
||||
|
||||
{ these names refer to the implementation, they are the preferred }
|
||||
{ names for use with the Amiga console device. }
|
||||
{ names for use with the Amiga console device. }
|
||||
|
||||
SGR_CLR0 = 30;
|
||||
SGR_CLR1 = 31;
|
||||
SGR_CLR2 = 32;
|
||||
SGR_CLR3 = 33;
|
||||
SGR_CLR4 = 34;
|
||||
SGR_CLR5 = 35;
|
||||
SGR_CLR6 = 36;
|
||||
SGR_CLR7 = 37;
|
||||
|
||||
SGR_CLR0BG = 40;
|
||||
SGR_CLR1BG = 41;
|
||||
SGR_CLR2BG = 42;
|
||||
SGR_CLR3BG = 43;
|
||||
SGR_CLR4BG = 44;
|
||||
SGR_CLR5BG = 45;
|
||||
SGR_CLR6BG = 46;
|
||||
SGR_CLR7BG = 47;
|
||||
SGR_CLR0 = 30;
|
||||
SGR_CLR1 = 31;
|
||||
SGR_CLR2 = 32;
|
||||
SGR_CLR3 = 33;
|
||||
SGR_CLR4 = 34;
|
||||
SGR_CLR5 = 35;
|
||||
SGR_CLR6 = 36;
|
||||
SGR_CLR7 = 37;
|
||||
|
||||
SGR_CLR0BG = 40;
|
||||
SGR_CLR1BG = 41;
|
||||
SGR_CLR2BG = 42;
|
||||
SGR_CLR3BG = 43;
|
||||
SGR_CLR4BG = 44;
|
||||
SGR_CLR5BG = 45;
|
||||
SGR_CLR6BG = 46;
|
||||
SGR_CLR7BG = 47;
|
||||
|
||||
{***** DSR parameters *****}
|
||||
|
||||
DSR_CPR = 6;
|
||||
DSR_CPR = 6;
|
||||
|
||||
{***** CTC parameters *****}
|
||||
|
||||
CTC_HSETTAB = 0;
|
||||
CTC_HCLRTAB = 2;
|
||||
CTC_HCLRTABSALL = 5;
|
||||
CTC_HSETTAB = 0;
|
||||
CTC_HCLRTAB = 2;
|
||||
CTC_HCLRTABSALL = 5;
|
||||
|
||||
{***** TBC parameters *****}
|
||||
|
||||
TBC_HCLRTAB = 0;
|
||||
TBC_HCLRTABSALL = 3;
|
||||
TBC_HCLRTAB = 0;
|
||||
TBC_HCLRTABSALL = 3;
|
||||
|
||||
{***** SM and RM parameters *****}
|
||||
M_LNM = 20; // linefeed newline mode
|
||||
M_ASM = '>1'; // auto scroll mode
|
||||
M_AWM = '?7'; // auto wrap mode
|
||||
|
||||
M_LNM = 20; { linefeed newline mode }
|
||||
M_ASM = '>1'; { auto scroll mode }
|
||||
M_AWM = '?7'; { auto wrap mode }
|
||||
var
|
||||
ConsoleDevice: PDevice = nil;
|
||||
|
||||
VAR ConsoleDevice : pDevice;
|
||||
function CDInputHandler(Events: PInputEvent location 'a0'; ConsoleDev: PLibrary location 'a1'): PInputEvent; syscall ConsoleDevice 042;
|
||||
function RawKeyConvert(Events: PInputEvent location 'a0'; Buffer: PCHAR location 'a1'; Length: LongInt location 'd1'; KeyMap: PKeyMap location 'a2'): LongInt; syscall ConsoleDevice 048;
|
||||
|
||||
FUNCTION CDInputHandler(events : pInputEvent location 'a0'; consoleDev : pLibrary location 'a1') : pInputEvent; syscall ConsoleDevice 042;
|
||||
FUNCTION RawKeyConvert(events : pInputEvent location 'a0'; buffer : pCHAR location 'a1'; length : LONGINT location 'd1'; keyMap : pKeyMap location 'a2') : LONGINT; syscall ConsoleDevice 048;
|
||||
implementation
|
||||
|
||||
IMPLEMENTATION
|
||||
|
||||
END. (* UNIT CONSOLE *)
|
||||
end.
|
||||
|
@ -13,97 +13,82 @@
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
{
|
||||
History:
|
||||
|
||||
Changed integer > smallint.
|
||||
09 Feb 2003.
|
||||
}
|
||||
|
||||
unit conunit;
|
||||
|
||||
INTERFACE
|
||||
interface
|
||||
|
||||
uses exec, console, keymap, inputevent;
|
||||
uses
|
||||
exec, console, keymap, inputevent, intuition, agraphics;
|
||||
|
||||
const
|
||||
{ ---- console unit numbers for OpenDevice() }
|
||||
CONU_LIBRARY = -1; { no unit, just fill in IO_DEVICE field }
|
||||
CONU_STANDARD = 0; { standard unmapped console }
|
||||
CONU_LIBRARY = -1; // no unit, just fill in IO_DEVICE field
|
||||
CONU_STANDARD = 0; // standard unmapped console
|
||||
|
||||
{ ---- New unit numbers for OpenDevice() - (V36) }
|
||||
|
||||
CONU_CHARMAP = 1; { bind character map to console }
|
||||
CONU_SNIPMAP = 3; { bind character map w/ snip to console }
|
||||
CONU_CHARMAP = 1; // bind character map to console
|
||||
CONU_SNIPMAP = 3; // bind character map w/ snip to console
|
||||
|
||||
{ ---- New flag defines for OpenDevice() - (V37) }
|
||||
CONFLAG_DEFAULT = 0;
|
||||
CONFLAG_NODRAW_ON_NEWSIZE = 1;
|
||||
|
||||
CONFLAG_DEFAULT = 0;
|
||||
CONFLAG_NODRAW_ON_NEWSIZE = 1;
|
||||
|
||||
|
||||
PMB_ASM = M_LNM + 1; { internal storage bit for AS flag }
|
||||
PMB_AWM = PMB_ASM + 1; { internal storage bit for AW flag }
|
||||
MAXTABS = 80;
|
||||
PMB_ASM = M_LNM + 1; // internal storage bit for AS flag
|
||||
PMB_AWM = PMB_ASM + 1; // internal storage bit for AW flag
|
||||
MAXTABS = 80;
|
||||
|
||||
|
||||
type
|
||||
{$PACKRECORDS 2}
|
||||
PConUnit = ^TConUnit;
|
||||
TConUnit = record
|
||||
cu_MP: TMsgPort;
|
||||
{ ---- read only variables }
|
||||
cu_Window: PWindow; // Intuition window bound to this unit
|
||||
cu_XCP: SmallInt; // character position
|
||||
cu_YCP: SmallInt;
|
||||
cu_XMax: SmallInt; // max character position
|
||||
cu_YMax: SmallInt;
|
||||
cu_XRSize: SmallInt; // character raster size
|
||||
cu_YRSize: SmallInt;
|
||||
cu_XROrigin: SmallInt; // raster origin
|
||||
cu_YROrigin: SmallInt;
|
||||
cu_XRExtant: SmallInt; // raster maxima
|
||||
cu_YRExtant: SmallInt;
|
||||
cu_XMinShrink: SmallInt; // smallest area intact from resize process
|
||||
cu_YMinShrink: SmallInt;
|
||||
cu_XCCP: SmallInt; // cursor position
|
||||
cu_YCCP: SmallInt;
|
||||
|
||||
pConUnit = ^tConUnit;
|
||||
tConUnit = record
|
||||
cu_MP : tMsgPort;
|
||||
{ ---- read only variables }
|
||||
cu_Window : Pointer; { (WindowPtr) intuition window bound to this unit }
|
||||
cu_XCP : smallint; { character position }
|
||||
cu_YCP : smallint;
|
||||
cu_XMax : smallint; { max character position }
|
||||
cu_YMax : smallint;
|
||||
cu_XRSize : smallint; { character raster size }
|
||||
cu_YRSize : smallint;
|
||||
cu_XROrigin : smallint; { raster origin }
|
||||
cu_YROrigin : smallint;
|
||||
cu_XRExtant : smallint; { raster maxima }
|
||||
cu_YRExtant : smallint;
|
||||
cu_XMinShrink : smallint; { smallest area intact from resize process }
|
||||
cu_YMinShrink : smallint;
|
||||
cu_XCCP : smallint; { cursor position }
|
||||
cu_YCCP : smallint;
|
||||
{ ---- read/write variables (writes must must be protected) }
|
||||
{ ---- storage for AskKeyMap and SetKeyMap }
|
||||
cu_KeyMapStruct: TKeyMap;
|
||||
{ ---- tab stops }
|
||||
cu_TabStops: array[0..MAXTABS - 1] of Word; // 0 at start, 0xFFFF at end of list
|
||||
|
||||
{ ---- read/write variables (writes must must be protected) }
|
||||
{ ---- storage for AskKeyMap and SetKeyMap }
|
||||
// ---- console rastport attributes
|
||||
cu_Mask: ShortInt;
|
||||
cu_FgPen: ShortInt;
|
||||
cu_BgPen: ShortInt;
|
||||
cu_AOLPen: ShortInt;
|
||||
cu_DrawMode: ShortInt;
|
||||
cu_Obsolete1: ShortInt; // was cu_AreaPtSz -- not used in V36
|
||||
cu_Obsolete2: APTR; // was cu_AreaPtrn -- not used in V36
|
||||
cu_Minterms: array[0..7] of Byte; // console minterms
|
||||
cu_Font: PTextFont;
|
||||
cu_AlgoStyle: Byte;
|
||||
cu_TxFlags: Byte;
|
||||
cu_TxHeight: Word;
|
||||
cu_TxWidth: Word;
|
||||
cu_TxBaseline: Word;
|
||||
cu_TxSpacing: Word;
|
||||
|
||||
cu_KeyMapStruct : tKeyMap;
|
||||
{ ---- console MODES and RAW EVENTS switches }
|
||||
cu_Modes: array[0..(PMB_AWM + 7) div 8 - 1] of Byte; // one bit per mode
|
||||
cu_RawEvents: array[0..(IECLASS_MAX + 7) div 8 - 1] of Byte;
|
||||
end;
|
||||
|
||||
{ ---- tab stops }
|
||||
|
||||
cu_TabStops : Array [0..MAXTABS-1] of Word;
|
||||
{ 0 at start, -1 at end of list }
|
||||
|
||||
{ ---- console rastport attributes }
|
||||
|
||||
cu_Mask : Shortint;
|
||||
cu_FgPen : Shortint;
|
||||
cu_BgPen : Shortint;
|
||||
cu_AOLPen : Shortint;
|
||||
cu_DrawMode : Shortint;
|
||||
cu_AreaPtSz : Shortint;
|
||||
cu_AreaPtrn : Pointer; { cursor area pattern }
|
||||
cu_Minterms : Array [0..7] of Byte; { console minterms }
|
||||
cu_Font : Pointer; { (TextFontPtr) }
|
||||
cu_AlgoStyle : Byte;
|
||||
cu_TxFlags : Byte;
|
||||
cu_TxHeight : Word;
|
||||
cu_TxWidth : Word;
|
||||
cu_TxBaseline : Word;
|
||||
cu_TxSpacing : Word;
|
||||
|
||||
{ ---- console MODES and RAW EVENTS switches }
|
||||
|
||||
cu_Modes : Array [0..(PMB_AWM+7) div 8 - 1] of Byte;
|
||||
{ one bit per mode }
|
||||
cu_RawEvents : Array [0..(IECLASS_MAX+7) div 8 - 1] of Byte;
|
||||
end;
|
||||
|
||||
IMPLEMENTATION
|
||||
implementation
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user