diff options
Diffstat (limited to 'private/mvdm/v86/scaffold/i386/xwincon.h')
-rw-r--r-- | private/mvdm/v86/scaffold/i386/xwincon.h | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/private/mvdm/v86/scaffold/i386/xwincon.h b/private/mvdm/v86/scaffold/i386/xwincon.h new file mode 100644 index 000000000..c3880146d --- /dev/null +++ b/private/mvdm/v86/scaffold/i386/xwincon.h @@ -0,0 +1,186 @@ +// +// borrowed for temprorary softpc console support +// + + +/*++ BUILD Version: 0001 + * + * x86 v1.0 + * + * XWINCON.H + * Windows support functions for console windows + * + * History + * Created 27-Dec-90 by Jeff Parsons + * + * COPYRIGHT NOTICE + * This source file may not be distributed, modified or incorporated into + * another product without prior approval from the author, Jeff Parsons. + * This file may be copied to designated servers and machines authorized to + * access those servers, but that does not imply any form of approval. + */ + + +typedef unsigned int UINT; // ints preferred +typedef int INT; // ints preferred +typedef CHAR *NPSZ; +typedef INT (FAR PASCAL *INTPROC)(HWND, UINT, UINT, LONG); + +#define DEF_CCHIN 16 // default input buffer size +#define DEF_CCHXOUT 80 // default output buffer width +#define DEF_CCHYOUT 25 // default output buffer height + +#define CON_SCROLL_LOCK 0x0010 // console has SCROLL-LOCK set +#define CON_NUM_LOCK 0x0020 // console has NUM-LOCK set +#define CON_CAPS_LOCK 0x0040 // console has CAPS-LOCK set +#define CON_LEDS_MASK 0x0070 // +#define CON_FOCUS 0x0100 // console has focus + +#ifndef VK_OEM_SCROLL +#define VK_OEM_SCROLL 0x91 // left out of windows.h for some reason... +#endif + +#define INVALIDATE_SCROLL 2 + +#define IDM_DBBRK 100 +#define IDM_ABOUT 101 + +#define CLR_BLACK 0x00000000 +#define CLR_RED 0x007F0000 +#define CLR_GREEN 0x00007F00 +#define CLR_BROWN 0x007F7F00 +#define CLR_BLUE 0x0000007F +#define CLR_MAGENTA 0x007F007F +#define CLR_CYAN 0x00007F7F +#define CLR_LT_GRAY 0x00BFBFBF + +#define CLR_DK_GRAY 0x007F7F7F +#define CLR_BR_RED 0x00FF0000 +#define CLR_BR_GREEN 0x0000FF00 +#define CLR_YELLOW 0x00FFFF00 +#define CLR_BR_BLUE 0x000000FF +#define CLR_BR_MAGENTA 0x00FF00FF +#define CLR_BR_CYAN 0x0000FFFF +#define CLR_WHITE 0x00FFFFFF + +#define OPT_FONT 0x0004 // use small OEM font if available (/s) +#define OPT_DOUBLE 0x0020 // use 50-line debug window w/small font (/50) +#define OPT_CAPS 0x0002 // map ctrl keys to caps-lock (/c) +#define OPT_TERMINAL 0x0010 // redirect all window output to terminal (/t) +#define OPT_FLUSH 0x0100 // flush prefetch after every jump (/f) +#define OPT_NOXLATE 0x0200 // disable built-in translations (/n) +#define OPT_DEBUG 0x0008 // shadow all log output on debug terminal (/d) +#define OPT_GO 0x0001 // do an initial "go" (/g) + +#define CTRL_A 1 // used by gets to repeat last line +#define CTRL_C 3 // break in debug window +#define CTRL_Q 17 // flow control +#define CTRL_S 19 // flow control +#define BELL 7 // +#define BS 8 // backspace +#define TAB 9 // +#define LF 10 // linefeed +#define CR 13 // return +#define ESCAPE 27 // + +#define SIGNAL_EMULATE 1 +#define ERR_NONE 0x0 + +#define TRUE_IF_WIN32 1 + +/* Per-window information + */ +#ifdef WIN_16 +#define GETPCONSOLE(hwnd) (PCONSOLE)GetWindowWord(hwnd,0) +#define SETPCONSOLE(hwnd,p) (PCONSOLE)SetWindowWord(hwnd,0,(INT)p) +#endif +#ifdef WIN_32 +#define GETPCONSOLE(hwnd) (PCONSOLE)GetWindowLong(hwnd,0) +#define SETPCONSOLE(hwnd,p) (PCONSOLE)SetWindowLong(hwnd,0,(LONG)p) +#endif +#ifdef PM +#define GETPCONSOLE(hwnd) (PCONSOLE)WinQueryWindowUShort(hwnd,0) +#define SETPCONSOLE(hwnd,p) (PCONSOLE)WinSetWindowUShort(hwnd,0,(USHORT)p) +#endif + +#define GETICARET(pcon) (pcon->chyCaret*pcon->cchxOut+pcon->chxCaret) +#define GETPCARET(pcon) (pcon->pchOut+GETICARET(pcon)) +#define GETXCARET(pcon) (pcon->chxCaret*pcon->cxChar) +#ifdef WIN +#define GETYCARET(pcon) (pcon->chyCaret*pcon->cyChar) +#else +#define GETYCARET(pcon) (pcon->cyOut - pcon->chyCaret*pcon->cyChar) +#endif + +#define GETILINE(pcon,chy) ((chy)*pcon->cchxOut) +#define GETPLINE(pcon,chy) (pcon->pchOut+GETILINE(pcon,chy)) + +#define GETICHAR(pcon,chx,chy) ((chy)*pcon->cchxOut+(chx)) +#define GETPCHAR(pcon,chx,chy) (pcon->pchOut+GETICHAR(pcon,chx,chy)) +#define GETXCHAR(pcon,chx) (pcon->cxChar*(chx)) +#ifdef WIN +#define GETYCHAR(pcon,chy) (pcon->cyChar*(chy)) +#else +#define GETYCHAR(pcon,chy) (pcon->cyOut - pcon->cyChar*(chy)) +#endif + +#define WORDOF(i,n) (((PWORD)&(i))[n]) +#define LOW(l) WORDOF(l,0) +#define NPVOID(p) ((VOID *)(p)) + +typedef struct key_s { + INT iKey; + LONG lKeyType; +} KEY, *PKEY; + +typedef struct console_s { + INT flCon; // console flags (see CON_*) + PKEY pkIn; // pointer to input buffer + HANDLE hkEvent; // handle to key event + INT ikHead; // input head (where to store next key) + INT ikTail; // input tail (where to retrieve next key) + INT ikMax; // maximum input index + HFONT hFont; // font identifier + INT cxChar; // character width, in pixels + INT cyChar; // character height, in pixels + INT cxOut; // buffer width, in pixels + INT cyOut; // buffer height, in pixels + INT cchxOut; // buffer width, in chars + INT cchyOut; // buffer height, in chars + UINT cbOut; // buffer size, in bytes + PCHAR pchOut; // pointer to output buffer + INT chxCaret; // caret x location, in char coordinates + INT chyCaret; // caret y location, in char coordinates +} CONSOLE, *PCONSOLE; + + +/* Function prototypes + */ +PCONSOLE initconsole(HWND hwnd, INT cchIn, INT cchxOut, INT cchyOut, INT iFont); +VOID freeconsole(HWND hwnd); +VOID clearconsole(HWND hwnd); +VOID invalidateconsole(HWND hwnd, PRECT prc, BOOL fUpdate); + +INT wprint(HWND hwnd, NPSZ psz, INT n); +INT wgetch(HWND hwnd); +BOOL wkbhit(HWND hwnd); +VOID wyield(HANDLE); +INT wputch(HWND hwnd, INT i); + +VOID setcaret(HWND hwnd, INT x, INT y); +VOID getcaret(HWND hwnd, PINT px, PINT py); +VOID writechar(HWND hwnd, CHAR ch, INT n); +VOID scrollrect(HWND hwndGuest, PRECT prc, INT n); + +extern HWND hwndGuest; +extern HANDLE hHostInstance; +extern INT flOptions; // command-line options (see OPT_*) +extern INT flSignals; // signal flags (see SIGNAL_*) + +LONG FAR PASCAL VDMWndProc(HWND hwnd, UINT wMsg, UINT uParam, LONG lParam); +BOOL FAR PASCAL VDMAbout(HWND hDlg, UINT wMsg, UINT uParam, LONG lParam); + +VOID processmessages(HWND hwnd); +INT getkbdleds(VOID); +VOID setkbdleds(INT flCon); +VOID mapkbdkeys(PCONSOLE pcon, UINT iParam, BOOL fDown); |