0
|
1 #include "config.h"
|
|
2
|
|
3 #ifdef DRIVE_WIN32
|
|
4
|
|
5 #include "pwplib.h"
|
|
6
|
|
7 #include <windows.h>
|
|
8
|
|
9 /******************** vcsa code ********************/
|
|
10
|
|
11 struct{
|
|
12 HANDLE hstdout;
|
|
13 COORD size;
|
|
14
|
|
15 CHAR_INFO*buf;
|
|
16 }pwp_win32;
|
|
17
|
|
18 /********************************************************/
|
|
19
|
|
20 void pwpwrite(char*z)
|
|
21 {
|
|
22 /* fprintf(stderr,"%s\n",z); */
|
|
23 }
|
|
24
|
|
25 void win32con_dump_attr()
|
|
26 {
|
|
27 u8*s=pwplib_buf;
|
|
28 CHAR_INFO*d=pwp_win32.buf;
|
|
29 int i=80*50;
|
|
30
|
|
31 for(;i;i--)
|
|
32 {
|
|
33 d->Char.AsciiChar=*s++;
|
|
34 d->Attributes=*s++;
|
|
35 d++;
|
|
36 }
|
|
37
|
|
38 {
|
|
39 const COORD bufsize = {80,50};
|
|
40 const COORD bufcoord = {0,0};
|
|
41 const SMALL_RECT writerect = { 0,0,79,49 };
|
|
42
|
|
43 WriteConsoleOutput(pwp_win32.hstdout,pwp_win32.buf,
|
|
44 bufsize,bufcoord,&writerect);
|
|
45 }
|
|
46 }
|
|
47
|
|
48 int win32con_probe()
|
|
49 {
|
|
50 if(GetStdHandle(STD_OUTPUT_HANDLE) != INVALID_HANDLE_VALUE)
|
|
51 return 1; else return 0;
|
|
52 }
|
|
53
|
|
54 int win32con_init()
|
|
55 {
|
|
56 AllocConsole();
|
|
57
|
|
58 pwp_win32.hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
|
|
59
|
|
60 { int ret=-1;
|
|
61 const COORD sz = {80,50};
|
|
62 const SMALL_RECT area = { 0,0,79,49 };
|
|
63
|
|
64 ret &= SetConsoleScreenBufferSize(pwp_win32.hstdout,sz);
|
|
65 ret &= SetConsoleWindowInfo(pwp_win32.hstdout,1,&area);
|
|
66
|
|
67 if(!ret)
|
|
68 {
|
|
69 FreeConsole();
|
|
70 AllocConsole();
|
|
71
|
|
72 pwp_win32.hstdout = CreateConsoleScreenBuffer(
|
|
73 GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
|
|
74 CONSOLE_TEXTMODE_BUFFER, NULL);
|
|
75
|
|
76 SetConsoleActiveScreenBuffer(pwp_win32.hstdout);
|
|
77 SetConsoleScreenBufferSize(pwp_win32.hstdout,sz);
|
|
78 SetConsoleWindowInfo(pwp_win32.hstdout,1,&area);
|
|
79 }
|
|
80
|
|
81 SetConsoleTitle("pwp");
|
|
82 }
|
|
83
|
|
84 pwp_win32.buf=malloc(sizeof(CHAR_INFO)*80*50);
|
|
85
|
|
86 pwplib.videobuf.width = 80;
|
|
87 pwplib.videobuf.height = 100;
|
|
88
|
|
89 pwplib.dump_attr=win32con_dump_attr;
|
|
90
|
|
91 conv_init(2,0,0);
|
|
92
|
|
93 // {int i=0;for(;i<20;i++)pwplib.setup[i]=0;}
|
|
94 /*
|
|
95 tty_init();
|
|
96 pwplib.setup[SETUP_TRANS] =
|
|
97 pwplib.setup[SETUP_COLORS] =
|
|
98 pwplib.setup[SETUP_RASTER] = -1;
|
|
99 pwplib.setup[SETUP_HALVE]=1;
|
|
100 conv_init(2,0,0);
|
|
101 */
|
|
102 pwplib.dump_attr=win32con_dump_attr;
|
30
|
103
|
|
104 return 1;
|
0
|
105 }
|
|
106
|
|
107 #endif
|