summaryrefslogtreecommitdiffstats
path: root/private/mvdm/v86/scaffold/i386/xwincon.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/v86/scaffold/i386/xwincon.h')
-rw-r--r--private/mvdm/v86/scaffold/i386/xwincon.h186
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);