1 /* Client interface for General purpose OS/2 console save/restore server.
2 1997 Alexander Dong <ado@software-ag.de>
3 Having the same interface as its Linux counterpart:
4 Copyright (C) 1994 Janne Kukonlehto <jtklehto@stekt.oulu.fi>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 #define INCL_DOSERRORS
35 #include "../src/tty.h"
36 #include "../src/util.h"
37 #include "../src/win.h"
38 #include "../src/cons.saver.h"
40 signed char console_flag
= 1;
41 static unsigned char *scr_buffer
;
42 static unsigned char *pointer
;
44 static int GetScrRows();
45 static int GetScrCols();
47 static int GetScrRows()
49 VIOMODEINFO pvMode
= {80};
50 unsigned int hVio
= 0;
51 VioGetMode(&pvMode
, hVio
);
52 return (pvMode
.row
? pvMode
.row
: 25);
55 static int GetScrCols()
57 VIOMODEINFO pvMode
= {80};
58 unsigned int hVio
= 0;
59 VioGetMode(&pvMode
, hVio
);
60 return (pvMode
.col
? pvMode
.col
: 80);
63 void show_console_contents (int starty
, unsigned char begin_line
, unsigned char end_line
)
65 int col
= GetScrCols();
66 int row
= GetScrRows();
71 for (z
=0; z
<(begin_line
* col
); z
++) {
74 n
= (end_line
- begin_line
+ 1) * col
;
75 VioWrtCellStr((PCH
) pointer
, (USHORT
) n
, begin_line
, 0, 0);
79 void handle_console (unsigned char action
)
86 case CONSOLE_INIT
: /* Initialize */
89 scr_buffer
= (unsigned char *) malloc(col
* row
* 2); /* short values */
91 VioReadCellStr((PCH
) scr_buffer
, (USHORT
*) &n
, 0, 0, 0); /* Just save it */
96 case CONSOLE_SAVE
: /* Save the screen */
98 VioReadCellStr((PCH
) scr_buffer
, (USHORT
*) &n
, 0, 0, 0);
100 case CONSOLE_RESTORE
:
102 VioWrtCellStr ((PCH
) scr_buffer
, (USHORT
) n
, 0, 0, 0); /* Write it back */
105 /* This is not possible, but if we are here, just save the screen */
106 handle_console(CONSOLE_SAVE
);