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.
24 #error This file is for OS/2 operating systems.
33 #define INCL_DOSERRORS
40 #include "cons.saver.h"
42 signed char console_flag
= 1;
43 static unsigned char *scr_buffer
;
44 static unsigned char *pointer
;
46 static int GetScrRows();
47 static int GetScrCols();
49 static int GetScrRows()
51 VIOMODEINFO pvMode
= {80};
52 unsigned int hVio
= 0;
53 VioGetMode(&pvMode
, hVio
);
54 return (pvMode
.row
? pvMode
.row
: 25);
57 static int GetScrCols()
59 VIOMODEINFO pvMode
= {80};
60 unsigned int hVio
= 0;
61 VioGetMode(&pvMode
, hVio
);
62 return (pvMode
.col
? pvMode
.col
: 80);
65 void show_console_contents (int starty
, unsigned char begin_line
, unsigned char end_line
)
67 int col
= GetScrCols();
68 int row
= GetScrRows();
73 for (z
=0; z
<(begin_line
* col
); z
++) {
76 n
= (end_line
- begin_line
+ 1) * col
;
77 VioWrtCellStr((PCH
) pointer
, (USHORT
) n
, begin_line
, 0, 0);
81 void handle_console (unsigned char action
)
88 case CONSOLE_INIT
: /* Initialize */
91 scr_buffer
= (unsigned char *) malloc(col
* row
* 2); /* short values */
93 VioReadCellStr((PCH
) scr_buffer
, (USHORT
*) &n
, 0, 0, 0); /* Just save it */
98 case CONSOLE_SAVE
: /* Save the screen */
100 VioReadCellStr((PCH
) scr_buffer
, (USHORT
*) &n
, 0, 0, 0);
102 case CONSOLE_RESTORE
:
104 VioWrtCellStr ((PCH
) scr_buffer
, (USHORT
) n
, 0, 0, 0); /* Write it back */
107 /* This is not possible, but if we are here, just save the screen */
108 handle_console(CONSOLE_SAVE
);