curses 1.4.6 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/push_gem.yml +6 -4
- data/README.md +8 -1
- data/curses.gemspec +2 -2
- data/ext/curses/curses.c +188 -12
- data/ext/curses/extconf.rb +3 -2
- data/lib/curses.rb +7 -0
- data/sample/attr_demo.rb +4 -2
- data/sample/screen.rb +9 -0
- data/vendor/PDCurses/.gitignore +47 -0
- data/vendor/PDCurses/.travis.yml +49 -0
- data/vendor/PDCurses/CMakeLists.txt +68 -0
- data/vendor/PDCurses/HISTORY.md +2036 -0
- data/vendor/PDCurses/IMPLEMNT.md +327 -0
- data/vendor/PDCurses/Makefile +27 -0
- data/vendor/PDCurses/README.md +77 -0
- data/vendor/PDCurses/acs_defs.h +265 -0
- data/vendor/PDCurses/appveyor.yml +218 -0
- data/vendor/PDCurses/cmake/README.md +71 -0
- data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
- data/vendor/PDCurses/cmake/build_options.cmake +25 -0
- data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
- data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
- data/vendor/PDCurses/cmake/get_version.cmake +17 -0
- data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
- data/vendor/PDCurses/cmake/project_common.cmake +121 -0
- data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
- data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
- data/vendor/PDCurses/cmake/version.in.cmake +73 -0
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
- data/vendor/PDCurses/curses.h +1846 -0
- data/vendor/PDCurses/curspriv.h +134 -0
- data/vendor/PDCurses/demos/README.md +25 -0
- data/vendor/PDCurses/demos/firework.c +144 -0
- data/vendor/PDCurses/demos/newtest.c +581 -0
- data/vendor/PDCurses/demos/ozdemo.c +447 -0
- data/vendor/PDCurses/demos/ptest.c +283 -0
- data/vendor/PDCurses/demos/rain.c +157 -0
- data/vendor/PDCurses/demos/testcurs.c +1607 -0
- data/vendor/PDCurses/demos/tui.c +1048 -0
- data/vendor/PDCurses/demos/tui.h +65 -0
- data/vendor/PDCurses/demos/tuidemo.c +233 -0
- data/vendor/PDCurses/demos/version.c +61 -0
- data/vendor/PDCurses/demos/worm.c +432 -0
- data/vendor/PDCurses/demos/xmas.c +955 -0
- data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
- data/vendor/PDCurses/dos/Makefile +105 -0
- data/vendor/PDCurses/dos/Makefile.bcc +83 -0
- data/vendor/PDCurses/dos/Makefile.dmc +257 -0
- data/vendor/PDCurses/dos/Makefile.msc +113 -0
- data/vendor/PDCurses/dos/Makefile.wcc +107 -0
- data/vendor/PDCurses/dos/README.md +51 -0
- data/vendor/PDCurses/dos/bccdos.lrf +9 -0
- data/vendor/PDCurses/dos/mscdos.lrf +50 -0
- data/vendor/PDCurses/dos/pdcclip.c +132 -0
- data/vendor/PDCurses/dos/pdcdisp.c +135 -0
- data/vendor/PDCurses/dos/pdcdos.h +194 -0
- data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
- data/vendor/PDCurses/dos/pdckbd.c +513 -0
- data/vendor/PDCurses/dos/pdcscrn.c +785 -0
- data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
- data/vendor/PDCurses/dos/pdcutil.c +212 -0
- data/vendor/PDCurses/libobjs.mif +26 -0
- data/vendor/PDCurses/makedist.mif +20 -0
- data/vendor/PDCurses/man/Makefile +37 -0
- data/vendor/PDCurses/man/README.md +21 -0
- data/vendor/PDCurses/man/intro.md +361 -0
- data/vendor/PDCurses/man/manext.c +119 -0
- data/vendor/PDCurses/man/sdl.md +152 -0
- data/vendor/PDCurses/man/sdl2.md +58 -0
- data/vendor/PDCurses/man/x11.md +407 -0
- data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
- data/vendor/PDCurses/ncurses/README.md +26 -0
- data/vendor/PDCurses/ncurses/makefile +29 -0
- data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
- data/vendor/PDCurses/os2/Makefile +132 -0
- data/vendor/PDCurses/os2/Makefile.bcc +90 -0
- data/vendor/PDCurses/os2/Makefile.wcc +43 -0
- data/vendor/PDCurses/os2/README.md +43 -0
- data/vendor/PDCurses/os2/iccos2.lrf +50 -0
- data/vendor/PDCurses/os2/iccos2.mak +256 -0
- data/vendor/PDCurses/os2/pdcclip.c +188 -0
- data/vendor/PDCurses/os2/pdcdisp.c +93 -0
- data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
- data/vendor/PDCurses/os2/pdckbd.c +521 -0
- data/vendor/PDCurses/os2/pdcos2.h +55 -0
- data/vendor/PDCurses/os2/pdcscrn.c +449 -0
- data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
- data/vendor/PDCurses/os2/pdcutil.c +52 -0
- data/vendor/PDCurses/panel.h +56 -0
- data/vendor/PDCurses/pdcurses/README.md +25 -0
- data/vendor/PDCurses/pdcurses/addch.c +693 -0
- data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
- data/vendor/PDCurses/pdcurses/addstr.c +240 -0
- data/vendor/PDCurses/pdcurses/attr.c +359 -0
- data/vendor/PDCurses/pdcurses/beep.c +68 -0
- data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
- data/vendor/PDCurses/pdcurses/border.c +411 -0
- data/vendor/PDCurses/pdcurses/clear.c +159 -0
- data/vendor/PDCurses/pdcurses/color.c +298 -0
- data/vendor/PDCurses/pdcurses/debug.c +109 -0
- data/vendor/PDCurses/pdcurses/delch.c +96 -0
- data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
- data/vendor/PDCurses/pdcurses/deprec.c +27 -0
- data/vendor/PDCurses/pdcurses/getch.c +417 -0
- data/vendor/PDCurses/pdcurses/getstr.c +474 -0
- data/vendor/PDCurses/pdcurses/getyx.c +139 -0
- data/vendor/PDCurses/pdcurses/inch.c +127 -0
- data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
- data/vendor/PDCurses/pdcurses/initscr.c +367 -0
- data/vendor/PDCurses/pdcurses/inopts.c +324 -0
- data/vendor/PDCurses/pdcurses/insch.c +271 -0
- data/vendor/PDCurses/pdcurses/insstr.c +264 -0
- data/vendor/PDCurses/pdcurses/instr.c +246 -0
- data/vendor/PDCurses/pdcurses/kernel.c +259 -0
- data/vendor/PDCurses/pdcurses/keyname.c +157 -0
- data/vendor/PDCurses/pdcurses/mouse.c +438 -0
- data/vendor/PDCurses/pdcurses/move.c +57 -0
- data/vendor/PDCurses/pdcurses/outopts.c +159 -0
- data/vendor/PDCurses/pdcurses/overlay.c +214 -0
- data/vendor/PDCurses/pdcurses/pad.c +260 -0
- data/vendor/PDCurses/pdcurses/panel.c +633 -0
- data/vendor/PDCurses/pdcurses/printw.c +126 -0
- data/vendor/PDCurses/pdcurses/refresh.c +279 -0
- data/vendor/PDCurses/pdcurses/scanw.c +578 -0
- data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
- data/vendor/PDCurses/pdcurses/scroll.c +101 -0
- data/vendor/PDCurses/pdcurses/slk.c +591 -0
- data/vendor/PDCurses/pdcurses/termattr.c +182 -0
- data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
- data/vendor/PDCurses/pdcurses/touch.c +163 -0
- data/vendor/PDCurses/pdcurses/util.c +312 -0
- data/vendor/PDCurses/pdcurses/window.c +569 -0
- data/vendor/PDCurses/sdl1/Makefile +129 -0
- data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
- data/vendor/PDCurses/sdl1/README.md +31 -0
- data/vendor/PDCurses/sdl1/deffont.h +385 -0
- data/vendor/PDCurses/sdl1/deficon.h +23 -0
- data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
- data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
- data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
- data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
- data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
- data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
- data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
- data/vendor/PDCurses/sdl1/sdltest.c +79 -0
- data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCurses/sdl2/Makefile +135 -0
- data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
- data/vendor/PDCurses/sdl2/README.md +34 -0
- data/vendor/PDCurses/sdl2/deffont.h +385 -0
- data/vendor/PDCurses/sdl2/deficon.h +23 -0
- data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
- data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
- data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
- data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
- data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
- data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
- data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
- data/vendor/PDCurses/sdl2/sdltest.c +81 -0
- data/vendor/PDCurses/term.h +48 -0
- data/vendor/PDCurses/version.mif +7 -0
- data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
- data/vendor/PDCurses/vt/Makefile +135 -0
- data/vendor/PDCurses/vt/Makefile.bcc +111 -0
- data/vendor/PDCurses/vt/Makefile.dmc +258 -0
- data/vendor/PDCurses/vt/Makefile.vc +144 -0
- data/vendor/PDCurses/vt/Makefile.wcc +107 -0
- data/vendor/PDCurses/vt/README.md +64 -0
- data/vendor/PDCurses/vt/pdcclip.c +20 -0
- data/vendor/PDCurses/vt/pdcdisp.c +284 -0
- data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
- data/vendor/PDCurses/vt/pdckbd.c +394 -0
- data/vendor/PDCurses/vt/pdcscrn.c +434 -0
- data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
- data/vendor/PDCurses/vt/pdcutil.c +43 -0
- data/vendor/PDCurses/vt/pdcvt.h +16 -0
- data/vendor/PDCurses/watcom.mif +68 -0
- data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
- data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
- data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
- data/vendor/PDCurses/wincon/Makefile.mng +176 -0
- data/vendor/PDCurses/wincon/Makefile.vc +144 -0
- data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
- data/vendor/PDCurses/wincon/README.md +85 -0
- data/vendor/PDCurses/wincon/pdcclip.c +174 -0
- data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
- data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
- data/vendor/PDCurses/wincon/pdckbd.c +786 -0
- data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
- data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
- data/vendor/PDCurses/wincon/pdcutil.c +41 -0
- data/vendor/PDCurses/wincon/pdcwin.h +31 -0
- data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
- data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
- data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
- data/vendor/PDCurses/wingui/Makefile.mng +171 -0
- data/vendor/PDCurses/wingui/Makefile.vc +144 -0
- data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
- data/vendor/PDCurses/wingui/README.md +93 -0
- data/vendor/PDCurses/wingui/pdcclip.c +174 -0
- data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
- data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
- data/vendor/PDCurses/wingui/pdckbd.c +143 -0
- data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
- data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
- data/vendor/PDCurses/wingui/pdcutil.c +61 -0
- data/vendor/PDCurses/wingui/pdcwin.h +122 -0
- data/vendor/PDCurses/x11/Makefile.in +754 -0
- data/vendor/PDCurses/x11/PDCurses.spec +82 -0
- data/vendor/PDCurses/x11/README.md +62 -0
- data/vendor/PDCurses/x11/ScrollBox.c +319 -0
- data/vendor/PDCurses/x11/ScrollBox.h +51 -0
- data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
- data/vendor/PDCurses/x11/aclocal.m4 +994 -0
- data/vendor/PDCurses/x11/big_icon.xbm +46 -0
- data/vendor/PDCurses/x11/compose.h +201 -0
- data/vendor/PDCurses/x11/config.guess +1500 -0
- data/vendor/PDCurses/x11/config.h.in +100 -0
- data/vendor/PDCurses/x11/config.sub +1616 -0
- data/vendor/PDCurses/x11/configure +6700 -0
- data/vendor/PDCurses/x11/configure.ac +295 -0
- data/vendor/PDCurses/x11/debian/changelog +6 -0
- data/vendor/PDCurses/x11/debian/compat +1 -0
- data/vendor/PDCurses/x11/debian/control +11 -0
- data/vendor/PDCurses/x11/debian/copyright +27 -0
- data/vendor/PDCurses/x11/debian/rules +98 -0
- data/vendor/PDCurses/x11/install-sh +253 -0
- data/vendor/PDCurses/x11/little_icon.xbm +14 -0
- data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
- data/vendor/PDCurses/x11/pdcclip.c +173 -0
- data/vendor/PDCurses/x11/pdcdisp.c +85 -0
- data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
- data/vendor/PDCurses/x11/pdckbd.c +104 -0
- data/vendor/PDCurses/x11/pdcscrn.c +258 -0
- data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
- data/vendor/PDCurses/x11/pdcutil.c +52 -0
- data/vendor/PDCurses/x11/pdcx11.c +316 -0
- data/vendor/PDCurses/x11/pdcx11.h +191 -0
- data/vendor/PDCurses/x11/sb.c +155 -0
- data/vendor/PDCurses/x11/x11.c +3686 -0
- data/vendor/PDCurses/x11/xcurses-config.in +81 -0
- metadata +249 -8
@@ -0,0 +1,101 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcdos.h"
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
pdcsetsc
|
8
|
+
--------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int PDC_set_blink(bool blinkon);
|
13
|
+
void PDC_set_title(const char *title);
|
14
|
+
|
15
|
+
### Description
|
16
|
+
|
17
|
+
PDC_set_blink() toggles whether the A_BLINK attribute sets an
|
18
|
+
actual blink mode (TRUE), or sets the background color to high
|
19
|
+
intensity (FALSE). The default is platform-dependent (FALSE in
|
20
|
+
most cases). It returns OK if it could set the state to match
|
21
|
+
the given parameter, ERR otherwise. Current platforms also
|
22
|
+
adjust the value of COLORS according to this function -- 16 for
|
23
|
+
FALSE, and 8 for TRUE.
|
24
|
+
|
25
|
+
PDC_set_title() sets the title of the window in which the curses
|
26
|
+
program is running. This function may not do anything on some
|
27
|
+
platforms. (Currently it only works in Win32 and X11.)
|
28
|
+
|
29
|
+
### Portability
|
30
|
+
X/Open BSD SYS V
|
31
|
+
PDC_set_blink - - -
|
32
|
+
PDC_set_title - - -
|
33
|
+
|
34
|
+
**man-end****************************************************************/
|
35
|
+
|
36
|
+
int PDC_curs_set(int visibility)
|
37
|
+
{
|
38
|
+
PDCREGS regs;
|
39
|
+
int ret_vis, start, end;
|
40
|
+
|
41
|
+
PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
|
42
|
+
|
43
|
+
ret_vis = SP->visibility;
|
44
|
+
SP->visibility = visibility;
|
45
|
+
|
46
|
+
switch (visibility)
|
47
|
+
{
|
48
|
+
case 0: /* invisible */
|
49
|
+
start = 32;
|
50
|
+
end = 0; /* was 32 */
|
51
|
+
break;
|
52
|
+
case 2: /* highly visible */
|
53
|
+
start = 0; /* full-height block */
|
54
|
+
end = 7;
|
55
|
+
break;
|
56
|
+
default: /* normal visibility */
|
57
|
+
start = (SP->orig_cursor >> 8) & 0xff;
|
58
|
+
end = SP->orig_cursor & 0xff;
|
59
|
+
}
|
60
|
+
|
61
|
+
/* if scrnmode is not set, some BIOSes hang */
|
62
|
+
|
63
|
+
regs.h.ah = 0x01;
|
64
|
+
regs.h.al = (unsigned char)pdc_scrnmode;
|
65
|
+
regs.h.ch = (unsigned char)start;
|
66
|
+
regs.h.cl = (unsigned char)end;
|
67
|
+
PDCINT(0x10, regs);
|
68
|
+
|
69
|
+
return ret_vis;
|
70
|
+
}
|
71
|
+
|
72
|
+
void PDC_set_title(const char *title)
|
73
|
+
{
|
74
|
+
PDC_LOG(("PDC_set_title() - called: <%s>\n", title));
|
75
|
+
}
|
76
|
+
|
77
|
+
int PDC_set_blink(bool blinkon)
|
78
|
+
{
|
79
|
+
PDCREGS regs;
|
80
|
+
|
81
|
+
switch (pdc_adapter)
|
82
|
+
{
|
83
|
+
case _EGACOLOR:
|
84
|
+
case _EGAMONO:
|
85
|
+
case _VGACOLOR:
|
86
|
+
case _VGAMONO:
|
87
|
+
regs.W.ax = 0x1003;
|
88
|
+
regs.W.bx = blinkon;
|
89
|
+
|
90
|
+
PDCINT(0x10, regs);
|
91
|
+
|
92
|
+
if (pdc_color_started)
|
93
|
+
COLORS = blinkon ? 8 : 16;
|
94
|
+
|
95
|
+
break;
|
96
|
+
default:
|
97
|
+
COLORS = 8;
|
98
|
+
}
|
99
|
+
|
100
|
+
return (COLORS - (blinkon * 8) != 8) ? OK : ERR;
|
101
|
+
}
|
@@ -0,0 +1,212 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <limits.h>
|
4
|
+
#include "pdcdos.h"
|
5
|
+
|
6
|
+
void PDC_beep(void)
|
7
|
+
{
|
8
|
+
PDCREGS regs;
|
9
|
+
|
10
|
+
PDC_LOG(("PDC_beep() - called\n"));
|
11
|
+
|
12
|
+
regs.W.ax = 0x0e07; /* Write ^G in TTY fashion */
|
13
|
+
regs.W.bx = 0;
|
14
|
+
PDCINT(0x10, regs);
|
15
|
+
}
|
16
|
+
|
17
|
+
#if UINT_MAX >= 0xfffffffful
|
18
|
+
# define irq0_ticks() (getdosmemdword(0x46c))
|
19
|
+
/* For 16-bit platforms, we expect that the program will need _two_ memory
|
20
|
+
read instructions to read the tick count. Between the two instructions,
|
21
|
+
if we do not turn off interrupts, an IRQ 0 might intervene and update the
|
22
|
+
tick count with a carry over from the lower half to the upper half ---
|
23
|
+
and our read count will be bogus. */
|
24
|
+
#elif defined __TURBOC__
|
25
|
+
static unsigned long irq0_ticks(void)
|
26
|
+
{
|
27
|
+
unsigned long t;
|
28
|
+
disable();
|
29
|
+
t = getdosmemdword(0x46c);
|
30
|
+
enable();
|
31
|
+
return t;
|
32
|
+
}
|
33
|
+
#elif defined __WATCOMC__
|
34
|
+
static unsigned long irq0_ticks(void)
|
35
|
+
{
|
36
|
+
unsigned long t;
|
37
|
+
_disable();
|
38
|
+
t = getdosmemdword(0x46c);
|
39
|
+
_enable();
|
40
|
+
return t;
|
41
|
+
}
|
42
|
+
#else
|
43
|
+
# define irq0_ticks() (getdosmemdword(0x46c)) /* FIXME */
|
44
|
+
#endif
|
45
|
+
|
46
|
+
static void do_idle(void)
|
47
|
+
{
|
48
|
+
PDCREGS regs;
|
49
|
+
|
50
|
+
regs.W.ax = 0x1680;
|
51
|
+
PDCINT(0x2f, regs);
|
52
|
+
PDCINT(0x28, regs);
|
53
|
+
}
|
54
|
+
|
55
|
+
#define MAX_TICK 0x1800b0ul /* no. of IRQ 0 clock ticks per day;
|
56
|
+
BIOS counter (0:0x46c) will go up
|
57
|
+
to MAX_TICK - 1 before wrapping to
|
58
|
+
0 at midnight */
|
59
|
+
#define MS_PER_DAY 86400000ul /* no. of milliseconds in a day */
|
60
|
+
|
61
|
+
void PDC_napms(int ms)
|
62
|
+
{
|
63
|
+
unsigned long goal, start, current;
|
64
|
+
|
65
|
+
PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
|
66
|
+
|
67
|
+
#if INT_MAX > MS_PER_DAY / 2
|
68
|
+
/* If `int' is 32-bit, we might be asked to "nap" for more than one day,
|
69
|
+
in which case the system timer might wrap around at least twice, and
|
70
|
+
that will be tricky to handle as is. Slice the "nap" into half-day
|
71
|
+
portions. */
|
72
|
+
while (ms > MS_PER_DAY / 2)
|
73
|
+
{
|
74
|
+
PDC_napms (MS_PER_DAY / 2);
|
75
|
+
ms -= MS_PER_DAY / 2;
|
76
|
+
}
|
77
|
+
#endif
|
78
|
+
|
79
|
+
if (ms < 0)
|
80
|
+
return;
|
81
|
+
|
82
|
+
/* Scale the millisecond count by MAX_TICK / MS_PER_DAY. The scaling
|
83
|
+
done here is not very precise, but what is more important is
|
84
|
+
preventing integer overflow.
|
85
|
+
|
86
|
+
The approximation 67 / 3680 can be obtained by considering the
|
87
|
+
convergents (mathworld.wolfram.com/Convergent.html) of MAX_TICK /
|
88
|
+
MS_PER_DAY 's continued fraction representation. */
|
89
|
+
#if MS_PER_DAY / 2 <= ULONG_MAX / 67ul
|
90
|
+
# define MS_TO_TICKS(x) ((x) * 67ul / 3680ul)
|
91
|
+
#else
|
92
|
+
# error "unpossible!"
|
93
|
+
#endif
|
94
|
+
goal = MS_TO_TICKS(ms);
|
95
|
+
|
96
|
+
if (!goal)
|
97
|
+
goal++;
|
98
|
+
|
99
|
+
start = irq0_ticks();
|
100
|
+
goal += start;
|
101
|
+
|
102
|
+
if (goal >= MAX_TICK)
|
103
|
+
{
|
104
|
+
/* We expect to cross over midnight! Wait for the clock tick count
|
105
|
+
to wrap around, then wait out the remaining ticks. */
|
106
|
+
goal -= MAX_TICK;
|
107
|
+
|
108
|
+
while (irq0_ticks() == start)
|
109
|
+
do_idle();
|
110
|
+
|
111
|
+
while (irq0_ticks() > start)
|
112
|
+
do_idle();
|
113
|
+
|
114
|
+
start = 0;
|
115
|
+
}
|
116
|
+
|
117
|
+
while (goal > (current = irq0_ticks()))
|
118
|
+
{
|
119
|
+
if (current < start)
|
120
|
+
{
|
121
|
+
/* If the BIOS time somehow gets reset under us (ugh!), then
|
122
|
+
restart (what is left of) the nap with `current' as the new
|
123
|
+
starting time. Remember to adjust the goal time
|
124
|
+
accordingly! */
|
125
|
+
goal -= start - current;
|
126
|
+
start = current;
|
127
|
+
}
|
128
|
+
|
129
|
+
do_idle();
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
const char *PDC_sysname(void)
|
134
|
+
{
|
135
|
+
return "DOS";
|
136
|
+
}
|
137
|
+
|
138
|
+
PDC_version_info PDC_version = { PDC_PORT_DOS,
|
139
|
+
PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE,
|
140
|
+
sizeof( chtype),
|
141
|
+
/* note that thus far, 'wide' and 'UTF8' versions exist */
|
142
|
+
/* only for SDL2, X11, Win32, and Win32a; elsewhere, */
|
143
|
+
/* these will be FALSE */
|
144
|
+
#ifdef PDC_WIDE
|
145
|
+
TRUE,
|
146
|
+
#else
|
147
|
+
FALSE,
|
148
|
+
#endif
|
149
|
+
#ifdef PDC_FORCE_UTF8
|
150
|
+
TRUE,
|
151
|
+
#else
|
152
|
+
FALSE,
|
153
|
+
#endif
|
154
|
+
};
|
155
|
+
|
156
|
+
#ifdef __DJGPP__
|
157
|
+
|
158
|
+
unsigned char getdosmembyte(int offset)
|
159
|
+
{
|
160
|
+
unsigned char b;
|
161
|
+
|
162
|
+
dosmemget(offset, sizeof(unsigned char), &b);
|
163
|
+
return b;
|
164
|
+
}
|
165
|
+
|
166
|
+
unsigned short getdosmemword(int offset)
|
167
|
+
{
|
168
|
+
unsigned short w;
|
169
|
+
|
170
|
+
dosmemget(offset, sizeof(unsigned short), &w);
|
171
|
+
return w;
|
172
|
+
}
|
173
|
+
|
174
|
+
unsigned long getdosmemdword(int offset)
|
175
|
+
{
|
176
|
+
unsigned long dw;
|
177
|
+
|
178
|
+
dosmemget(offset, sizeof(unsigned long), &dw);
|
179
|
+
return dw;
|
180
|
+
}
|
181
|
+
|
182
|
+
void setdosmembyte(int offset, unsigned char b)
|
183
|
+
{
|
184
|
+
dosmemput(&b, sizeof(unsigned char), offset);
|
185
|
+
}
|
186
|
+
|
187
|
+
void setdosmemword(int offset, unsigned short w)
|
188
|
+
{
|
189
|
+
dosmemput(&w, sizeof(unsigned short), offset);
|
190
|
+
}
|
191
|
+
|
192
|
+
#endif
|
193
|
+
|
194
|
+
#if defined(__WATCOMC__) && defined(__386__)
|
195
|
+
|
196
|
+
void PDC_dpmi_int(int vector, pdc_dpmi_regs *rmregs)
|
197
|
+
{
|
198
|
+
union REGPACK regs = {0};
|
199
|
+
|
200
|
+
rmregs->w.ss = 0;
|
201
|
+
rmregs->w.sp = 0;
|
202
|
+
rmregs->w.flags = 0;
|
203
|
+
|
204
|
+
regs.w.ax = 0x300;
|
205
|
+
regs.h.bl = vector;
|
206
|
+
regs.x.edi = FP_OFF(rmregs);
|
207
|
+
regs.x.es = FP_SEG(rmregs);
|
208
|
+
|
209
|
+
intr(0x31, ®s);
|
210
|
+
}
|
211
|
+
|
212
|
+
#endif
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Common elements for most of the DOS, OS/2 and Win32
|
2
|
+
# makefiles (not Watcom or LCC)
|
3
|
+
|
4
|
+
PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)/curses.h
|
5
|
+
PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)/curspriv.h
|
6
|
+
PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
|
7
|
+
PANEL_HEADER = $(PDCURSES_SRCDIR)/panel.h
|
8
|
+
TERM_HEADER = $(PDCURSES_SRCDIR)/term.h
|
9
|
+
|
10
|
+
srcdir = $(PDCURSES_SRCDIR)/pdcurses
|
11
|
+
demodir = $(PDCURSES_SRCDIR)/demos
|
12
|
+
|
13
|
+
LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \
|
14
|
+
bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \
|
15
|
+
deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \
|
16
|
+
initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \
|
17
|
+
keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \
|
18
|
+
panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \
|
19
|
+
slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \
|
20
|
+
debug.$(O)
|
21
|
+
|
22
|
+
PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \
|
23
|
+
pdcsetsc.$(O) pdcutil.$(O)
|
24
|
+
|
25
|
+
DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe firework.exe \
|
26
|
+
newtest.exe ptest.exe rain.exe worm.exe
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Makefile include: build a binary archive with Info-ZIP
|
2
|
+
# under DOS, OS/2 or Win32
|
3
|
+
|
4
|
+
dist: $(PDCLIBS)
|
5
|
+
echo PDCurses $(VERDOT) for $(PLATFORM1) > file_id.diz
|
6
|
+
echo ------------------------------------------ >> file_id.diz
|
7
|
+
echo Public Domain Curses library for >> file_id.diz
|
8
|
+
echo $(PLATFORM2). >> file_id.diz
|
9
|
+
echo Source available in PDCURS$(VER).ZIP >> file_id.diz
|
10
|
+
echo Public Domain. >> file_id.diz
|
11
|
+
echo $(PDCURSES_SRCDIR)\README.md > flist
|
12
|
+
echo $(PDCURSES_SRCDIR)\HISTORY.md >> flist
|
13
|
+
echo $(PDCURSES_SRCDIR)\curses.h >> flist
|
14
|
+
echo $(PDCURSES_SRCDIR)\panel.h >> flist
|
15
|
+
echo $(PDCURSES_SRCDIR)\term.h >> flist
|
16
|
+
echo $(LIBCURSES) >> flist
|
17
|
+
echo file_id.diz >> flist
|
18
|
+
zip -9jX $(ARCNAME) -@ <flist
|
19
|
+
del flist
|
20
|
+
del file_id.diz
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Makefile for PDCurses manext program.
|
2
|
+
|
3
|
+
all: manual
|
4
|
+
|
5
|
+
manual: PDCurses.md
|
6
|
+
|
7
|
+
PDCurses.md: manext intro.md x11.md sdl.md ../curses.h
|
8
|
+
cat intro.md > PDCurses.md
|
9
|
+
echo PDCurses Definitions and Variables >> PDCurses.md
|
10
|
+
echo ================================== >> PDCurses.md
|
11
|
+
./manext ../curses.h >> PDCurses.md
|
12
|
+
echo PDCurses Functions >> PDCurses.md
|
13
|
+
echo ================== >> PDCurses.md
|
14
|
+
./manext ../pdcurses/*.c >> PDCurses.md
|
15
|
+
./manext ../x11/*.c >> PDCurses.md
|
16
|
+
cat x11.md >> PDCurses.md
|
17
|
+
echo >> PDCurses.md
|
18
|
+
echo >> PDCurses.md
|
19
|
+
echo \
|
20
|
+
-------------------------------------------------------------------------- \
|
21
|
+
>> PDCurses.md
|
22
|
+
echo >> PDCurses.md
|
23
|
+
cat sdl.md >> PDCurses.md
|
24
|
+
|
25
|
+
manext: manext.c
|
26
|
+
|
27
|
+
install:
|
28
|
+
echo Does nothing at the moment
|
29
|
+
|
30
|
+
clean:
|
31
|
+
-rm -rf *.o manext PDCurses.md
|
32
|
+
|
33
|
+
distclean: clean
|
34
|
+
|
35
|
+
mostlyclean: clean
|
36
|
+
|
37
|
+
realclean: distclean
|
@@ -0,0 +1,21 @@
|
|
1
|
+
PDCurses Documentation
|
2
|
+
======================
|
3
|
+
|
4
|
+
Some plain text documents to provide a basic overview of PDCurses and
|
5
|
+
details for specific platforms, along with a program to combine them
|
6
|
+
with the "man page" sections from the source code files, into
|
7
|
+
"PDCurses.md".
|
8
|
+
|
9
|
+
|
10
|
+
Building
|
11
|
+
--------
|
12
|
+
|
13
|
+
- Type "make". ("make clean" to remove the built files.) A Unix-like
|
14
|
+
environment is required for the Makefile. This is called automatically
|
15
|
+
when doing a top-level make of the X11 port.
|
16
|
+
|
17
|
+
|
18
|
+
Distribution Status
|
19
|
+
-------------------
|
20
|
+
|
21
|
+
Public Domain, except for manext.c, which is GPL 2+.
|