From 533e8712db2b6b49fc6a866f64390c4e865e4f96 Mon Sep 17 00:00:00 2001 From: William McBrine Date: Sat, 12 Aug 2006 02:44:08 +0000 Subject: [PATCH] More stuff that doesn't need to be in SCREEN. --- curses.h | 10 +++------- dos/pdcdisp.c | 16 +++++++-------- dos/pdcdos.h | 8 +++++++- dos/pdcgetsc.c | 54 +++++++++++++++++++++++++------------------------- dos/pdcscrn.c | 38 ++++++++++++++++++++--------------- dos/pdcsetsc.c | 8 ++++---- 6 files changed, 71 insertions(+), 63 deletions(-) diff --git a/curses.h b/curses.h index 0f2e4841..be83f345 100644 --- a/curses.h +++ b/curses.h @@ -15,7 +15,7 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -/* $Id: curses.h,v 1.213 2006/08/11 22:19:45 wmcbrine Exp $ */ +/* $Id: curses.h,v 1.214 2006/08/12 02:44:08 wmcbrine Exp $ */ /*----------------------------------------------------------------------* * PDCurses * @@ -564,7 +564,6 @@ typedef struct int curscol; /* position of physical cursor */ int visibility; /* Visibility of cursor */ int orig_cursor; /* Original cursor size */ - int font; /* default font size */ int lines; /* New value for LINES */ int cols; /* New value for COLS */ unsigned long _trap_mbe; /* trap these mouse button events */ @@ -587,15 +586,12 @@ typedef struct #if defined(OS2) && !defined(EMXVIDEO) VIOMODEINFO scrnmode; /* default screen mode */ + int font; /* default font size */ #endif #ifdef DOS - int adapter; /* Screen type */ int scrnmode; /* default screen mode */ - bool direct_video; /* Allow Direct Screen Memory writes */ - unsigned video_seg; /* video base segment */ - unsigned video_ofs; /* video base offset */ - bool bogus_adapter; /* TRUE if adapter has insane values */ + int font; /* default font size */ #endif #ifdef XCURSES diff --git a/dos/pdcdisp.c b/dos/pdcdisp.c index 0dc4a9c3..dc564462 100644 --- a/dos/pdcdisp.c +++ b/dos/pdcdisp.c @@ -19,7 +19,7 @@ #include -RCSID("$Id: pdcdisp.c,v 1.49 2006/08/11 19:50:51 wmcbrine Exp $"); +RCSID("$Id: pdcdisp.c,v 1.50 2006/08/12 02:44:08 wmcbrine Exp $"); #ifdef __PACIFIC__ void movedata(unsigned sseg, unsigned soff, unsigned dseg, @@ -147,7 +147,7 @@ void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno)); - if (SP->direct_video) + if (pdc_direct_video) { /* this should be enough for the maximum width of a screen */ @@ -163,8 +163,8 @@ void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) #ifdef __DJGPP__ dosmemput(temp_line, len * 2, - (unsigned long)_FAR_POINTER(SP->video_seg, - SP->video_ofs + (lineno * curscr->_maxx + x) * 2)); + (unsigned long)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2)); #else # if SMALL || MEDIUM # ifdef __PACIFIC__ @@ -173,12 +173,12 @@ void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) segread(&segregs); ds = segregs.ds; # endif - movedata(ds, (int)temp_line, SP->video_seg, - SP->video_ofs + (lineno * curscr->_maxx + x) * 2, + movedata(ds, (int)temp_line, pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2, len * 2); # else - memcpy((void *)_FAR_POINTER(SP->video_seg, - SP->video_ofs + (lineno * curscr->_maxx + x) * 2), + memcpy((void *)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2), temp_line, len * 2); # endif #endif diff --git a/dos/pdcdos.h b/dos/pdcdos.h index 3b8faf81..2ba4445f 100644 --- a/dos/pdcdos.h +++ b/dos/pdcdos.h @@ -15,7 +15,7 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -/* $Id: pdcdos.h,v 1.9 2006/08/11 22:19:45 wmcbrine Exp $ */ +/* $Id: pdcdos.h,v 1.10 2006/08/12 02:44:08 wmcbrine Exp $ */ #define CURSES_LIBRARY 1 #include @@ -55,6 +55,12 @@ extern union REGS regs; +extern int pdc_adapter; +extern bool pdc_direct_video; +extern bool pdc_bogus_adapter; +extern unsigned pdc_video_seg; +extern unsigned pdc_video_ofs; + #ifdef __DJGPP__ /* Note: works only in plain DOS... */ # if DJGPP == 2 # define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o))) diff --git a/dos/pdcgetsc.c b/dos/pdcgetsc.c index 594c400b..6b1071b7 100644 --- a/dos/pdcgetsc.c +++ b/dos/pdcgetsc.c @@ -19,7 +19,7 @@ #include -RCSID("$Id: pdcgetsc.c,v 1.29 2006/08/10 07:17:15 wmcbrine Exp $"); +RCSID("$Id: pdcgetsc.c,v 1.30 2006/08/12 02:44:08 wmcbrine Exp $"); /*man-start************************************************************** @@ -144,10 +144,10 @@ int PDC_get_font(void) /* Assume the MDS Genius is in 66 line mode. */ - if ((retval == 0) && (SP->adapter == _MDS_GENIUS)) + if ((retval == 0) && (pdc_adapter == _MDS_GENIUS)) retval = _FONT15; - switch (SP->adapter) + switch (pdc_adapter) { case _MDA: retval = 10; /* POINTS is not certain on MDA/Hercules */ @@ -206,18 +206,18 @@ int PDC_get_rows(void) if (env_rows != (char *)NULL) rows = min(atoi(env_rows), rows); - if ((rows == 1) && (SP->adapter == _MDS_GENIUS)) + if ((rows == 1) && (pdc_adapter == _MDS_GENIUS)) rows = 66; - if ((rows == 1) && (SP->adapter == _MDA)) + if ((rows == 1) && (pdc_adapter == _MDA)) rows = 25; if (rows == 1) { rows = 25; - SP->direct_video = FALSE; + pdc_direct_video = FALSE; } - switch (SP->adapter) + switch (pdc_adapter) { case _EGACOLOR: case _EGAMONO: @@ -305,7 +305,7 @@ static int PDC_sanity_check(int adapter) case 43: break; default: - SP->bogus_adapter = TRUE; + pdc_bogus_adapter = TRUE; } switch (fontsize) @@ -314,7 +314,7 @@ static int PDC_sanity_check(int adapter) case _FONT14: break; default: - SP->bogus_adapter = TRUE; + pdc_bogus_adapter = TRUE; } break; @@ -331,18 +331,18 @@ static int PDC_sanity_check(int adapter) case 25: break; default: - SP->bogus_adapter = TRUE; + pdc_bogus_adapter = TRUE; } break; default: - SP->bogus_adapter = TRUE; + pdc_bogus_adapter = TRUE; } - if (SP->bogus_adapter) + if (pdc_bogus_adapter) { SP->sizeable = FALSE; - SP->direct_video = FALSE; + pdc_direct_video = FALSE; } return adapter; @@ -487,7 +487,7 @@ int PDC_query_adapter_type(void) if (video_base == 0x3d4) { - SP->video_seg = 0xb800; + pdc_video_seg = 0xb800; switch (retval) { case _EGAMONO: @@ -500,7 +500,7 @@ int PDC_query_adapter_type(void) if (video_base == 0x3b4) { - SP->video_seg = 0xb000; + pdc_video_seg = 0xb000; switch (retval) { case _EGACOLOR: @@ -516,9 +516,9 @@ int PDC_query_adapter_type(void) || (retval == _CGA) #endif ) - SP->direct_video = FALSE; + pdc_direct_video = FALSE; - if ((unsigned int) SP->video_seg == 0xb000) + if ((unsigned int) pdc_video_seg == 0xb000) SP->mono = TRUE; else SP->mono = FALSE; @@ -529,24 +529,24 @@ int PDC_query_adapter_type(void) #if defined(__DJGPP__) && defined(NOW_WORKS) dpmi_regs.h.ah = 0xfe; dpmi_regs.h.al = 0; - dpmi_regs.x.di = SP->video_ofs; - dpmi_regs.x.es = SP->video_seg; + dpmi_regs.x.di = pdc_video_ofs; + dpmi_regs.x.es = pdc_video_seg; _go32_dpmi_simulate_int(0x10, &dpmi_regs); - SP->video_ofs = dpmi_regs.x.di; - SP->video_seg = dpmi_regs.x.es; + pdc_video_ofs = dpmi_regs.x.di; + pdc_video_seg = dpmi_regs.x.es; #endif #if !defined(__DJGPP__) && !defined(__WATCOMC__) regs.h.ah = 0xfe; regs.h.al = 0; - regs.x.di = SP->video_ofs; - segs.es = SP->video_seg; + regs.x.di = pdc_video_ofs; + segs.es = pdc_video_seg; int86x(0x10, ®s, ®s, &segs); - SP->video_ofs = regs.x.di; - SP->video_seg = segs.es; + pdc_video_ofs = regs.x.di; + pdc_video_seg = segs.es; #endif - if (!SP->adapter) - SP->adapter = retval; + if (!pdc_adapter) + pdc_adapter = retval; return PDC_sanity_check(retval); } diff --git a/dos/pdcscrn.c b/dos/pdcscrn.c index 2e4dbaa8..adc4de23 100644 --- a/dos/pdcscrn.c +++ b/dos/pdcscrn.c @@ -24,9 +24,15 @@ # include #endif -RCSID("$Id: pdcscrn.c,v 1.44 2006/08/11 22:19:45 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.45 2006/08/12 02:44:08 wmcbrine Exp $"); -union REGS regs; /* used in various other modules */ +union REGS regs; /* used in various other modules */ + +int pdc_adapter; /* screen type */ +bool pdc_direct_video; /* allow direct screen memory writes */ +bool pdc_bogus_adapter; /* TRUE if adapter has insane values */ +unsigned pdc_video_seg; /* video base segment */ +unsigned pdc_video_ofs; /* video base offset */ static unsigned short *saved_screen = NULL; static int saved_lines = 0; @@ -63,8 +69,8 @@ void PDC_scr_close(void) { #ifdef __DJGPP__ dosmemput(saved_screen, saved_lines * saved_cols * 2, - (unsigned long)_FAR_POINTER(SP->video_seg, - SP->video_ofs)); + (unsigned long)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs)); #else # if (SMALL || MEDIUM) # ifdef __PACIFIC__ @@ -73,10 +79,10 @@ void PDC_scr_close(void) segread(&segregs); ds = segregs.ds; # endif - movedata(ds, (int)saved_screen, SP->video_seg, SP->video_ofs, + movedata(ds, (int)saved_screen, pdc_video_seg, pdc_video_ofs, (saved_lines * saved_cols * 2)); # else - memcpy((void *)_FAR_POINTER(SP->video_seg, SP->video_ofs), + memcpy((void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs), (void *)saved_screen, (saved_lines * saved_cols * 2)); # endif #endif @@ -138,11 +144,11 @@ int PDC_scr_open(int argc, char **argv) PDC_get_cursor_pos(&SP->cursrow, &SP->curscol); - SP->direct_video = TRUE; /* Assume that we can */ - SP->video_seg = 0xb000; /* Base screen segment addr */ - SP->video_ofs = 0x0; /* Base screen segment ofs */ + pdc_direct_video = TRUE; /* Assume that we can */ + pdc_video_seg = 0xb000; /* Base screen segment addr */ + pdc_video_ofs = 0x0; /* Base screen segment ofs */ - SP->adapter = PDC_query_adapter_type(); + pdc_adapter = PDC_query_adapter_type(); SP->scrnmode = PDC_get_scrn_mode(); SP->font = PDC_get_font(); @@ -157,7 +163,7 @@ int PDC_scr_open(int argc, char **argv) access. */ if (getenv("PDCURSES_BIOS") != NULL) - SP->direct_video = FALSE; + pdc_direct_video = FALSE; /* This code for preserving the current screen. */ @@ -173,8 +179,8 @@ int PDC_scr_open(int argc, char **argv) return OK; } #ifdef __DJGPP__ - dosmemget ((unsigned long)_FAR_POINTER(SP->video_seg, - SP->video_ofs), saved_lines * saved_cols * 2, + dosmemget ((unsigned long)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs), saved_lines * saved_cols * 2, saved_screen); #else # if SMALL || MEDIUM @@ -184,11 +190,11 @@ int PDC_scr_open(int argc, char **argv) segread(&segregs); ds = segregs.ds; # endif - movedata(SP->video_seg, SP->video_ofs, ds, (int)saved_screen, + movedata(pdc_video_seg, pdc_video_ofs, ds, (int)saved_screen, (saved_lines * saved_cols * 2)); # else memcpy((void *)saved_screen, - (void *)_FAR_POINTER(SP->video_seg, SP->video_ofs), + (void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs), (saved_lines * saved_cols * 2)); # endif #endif @@ -230,7 +236,7 @@ int PDC_resize_screen(int nlines, int ncols) SP->orig_cursor = 0x0607; - switch (SP->adapter) + switch (pdc_adapter) { case _EGACOLOR: if (nlines >= 43) diff --git a/dos/pdcsetsc.c b/dos/pdcsetsc.c index 7c13451f..3b64b205 100644 --- a/dos/pdcsetsc.c +++ b/dos/pdcsetsc.c @@ -17,7 +17,7 @@ #include "pdcdos.h" -RCSID("$Id: pdcsetsc.c,v 1.22 2006/07/23 23:42:23 wmcbrine Exp $"); +RCSID("$Id: pdcsetsc.c,v 1.23 2006/08/12 02:44:08 wmcbrine Exp $"); /*man-start************************************************************** @@ -40,7 +40,7 @@ int PDC_set_80x25(void) { PDC_LOG(("PDC_set_80x25() - called\n")); - switch (SP->adapter) + switch (pdc_adapter) { case _CGA: case _EGACOLOR: @@ -90,10 +90,10 @@ int PDC_set_font(int size) { PDC_LOG(("PDC_set_font() - called\n")); - if (SP->bogus_adapter) + if (pdc_bogus_adapter) return ERR; - switch (SP->adapter) + switch (pdc_adapter) { case _CGA: case _MDA: