diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c index 74ce9726135dbd0a00d4f9ecfc3e3ebb5eb6651e..2d1dc95b76aa36ccde7df963df902062cf9bb21c 100644 --- a/src/conio/bitmap_con.c +++ b/src/conio/bitmap_con.c @@ -1765,6 +1765,8 @@ int bitmap_drv_init_mode(int mode, int *width, int *height, int maxwidth, int ma if(!bitmap_initialized) return(-1); + if (mode == _ORIGMODE) + mode = C80; if(load_vmode(&vstat, mode)) { return(-1); } diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index c5887eec7227051e4798926ae276b4462e1e9637..1724b8a24a642f7a598a70779dccf42a94e8801d 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -1770,6 +1770,9 @@ CIOLIBEXPORT struct ciolib_screen * ciolib_savescreen(void) if (vmode != -1) { ret->pixels = ciolib_getpixels(0, 0, vparams[vmode].xres - 1, vparams[vmode].yres - 1, FALSE); } + else { + ret->pixels = NULL; + } ciolib_vmem_gettext(1, 1, ret->text_info.screenwidth, ret->text_info.screenheight, ret->vmem); ret->fg_colour = ciolib_fg; ret->bg_colour = ciolib_bg; diff --git a/src/conio/vidmodes.c b/src/conio/vidmodes.c index 7738fae586f5d1abc686bb6b05832cc58955bf59..e7d3eb1e4f05ec617549fd98f70f7ec766282821 100644 --- a/src/conio/vidmodes.c +++ b/src/conio/vidmodes.c @@ -286,6 +286,8 @@ int find_vmode(int mode) { unsigned i; + if(mode==_ORIGMODE) + mode=C80; for (i = 0; i < NUMMODES; i++) if (vparams[i].mode == mode) return i; diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c index 66af5578a0ab957d25ce455b9f5edc344d87f807..8f7046fdf73d90fefb98b334ae056dc0b18f6120 100644 --- a/src/conio/win32cio.c +++ b/src/conio/win32cio.c @@ -632,10 +632,9 @@ void win32_textmode(int mode) CONSOLE_SCREEN_BUFFER_INFOEX bi; #endif - for(i=0;i<NUMMODES;i++) { - if(vparams[i].mode==mode) - modeidx=i; - } + modeidx = find_vmode(mode); + if (modeidx == -1) + modeidx = CO80; sz.X = cio_textinfo.screenwidth > vparams[modeidx].cols ? cio_textinfo.screenwidth : vparams[modeidx].cols; sz.Y = cio_textinfo.screenheight > vparams[modeidx].rows ? cio_textinfo.screenheight : vparams[modeidx].rows; rc.Left=0;