libpayload: Rename PDCurses-3.4 to PDCurses
Change-Id: If881ec130833c7e7e62caa3d31e350a531f5bc8e Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: http://review.coreboot.org/12398 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
43
payloads/libpayload/curses/PDCurses/os2/README
Normal file
43
payloads/libpayload/curses/PDCurses/os2/README
Normal file
@ -0,0 +1,43 @@
|
||||
PDCurses for OS/2
|
||||
=================
|
||||
|
||||
This directory contains PDCurses source code files specific to OS/2.
|
||||
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
. Choose the appropriate makefile for your compiler:
|
||||
|
||||
bccos2.mak - Borland C++ 2.0
|
||||
gccos2.mak - EMX 0.9b+
|
||||
iccos2.mak - C Set/2
|
||||
wccos2.mak - Watcom 10.6+ (32-bit)
|
||||
|
||||
. Optionally, you can build in a different directory than the platform
|
||||
directory by setting PDCURSES_SRCDIR to point to the directory where
|
||||
you unpacked PDCurses, and changing to your target directory:
|
||||
|
||||
set PDCURSES_SRCDIR=c:\pdcurses
|
||||
|
||||
. Build it:
|
||||
|
||||
make -f makefilename
|
||||
|
||||
(For Watcom, use "wmake" instead of "make"; for MSVC or C Set/2,
|
||||
"nmake".) You'll get the libraries (pdcurses.lib or .a, depending on
|
||||
your compiler; and panel.lib or .a), the demos (*.exe), and a lot of
|
||||
object files. Note that the panel library is just a copy of the main
|
||||
library, provided for convenience; both panel and curses functions are
|
||||
in the main library.
|
||||
|
||||
You can also use the optional parameter "DLL=Y" with EMX, to build the
|
||||
library as a DLL:
|
||||
|
||||
make -f gccos2.mak DLL=Y
|
||||
|
||||
|
||||
Distribution Status
|
||||
-------------------
|
||||
|
||||
The files in this directory are released to the Public Domain.
|
90
payloads/libpayload/curses/PDCurses/os2/bccos2.mak
Normal file
90
payloads/libpayload/curses/PDCurses/os2/bccos2.mak
Normal file
@ -0,0 +1,90 @@
|
||||
# Borland MAKE Makefile for PDCurses library - OS/2 BC++ 1.0+
|
||||
#
|
||||
# Usage: make -f [path\]bccos2.mak [DEBUG=] [target]
|
||||
#
|
||||
# where target can be any of:
|
||||
# [all|demos|pdcurses.lib|testcurs.exe...]
|
||||
|
||||
O = obj
|
||||
|
||||
!ifndef PDCURSES_SRCDIR
|
||||
PDCURSES_SRCDIR = ..
|
||||
!endif
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\version.mif
|
||||
!include $(PDCURSES_SRCDIR)\libobjs.mif
|
||||
|
||||
osdir = $(PDCURSES_SRCDIR)\os2
|
||||
|
||||
CC = bcc
|
||||
|
||||
!ifdef DEBUG
|
||||
CFLAGS = -N -v -y -DPDCDEBUG
|
||||
!else
|
||||
CFLAGS = -O
|
||||
!endif
|
||||
|
||||
CPPFLAGS = -I$(PDCURSES_SRCDIR)
|
||||
|
||||
BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
|
||||
|
||||
LINK = tlink
|
||||
|
||||
LIBEXE = tlib /C /E
|
||||
|
||||
LIBCURSES = pdcurses.lib
|
||||
|
||||
all: $(LIBCURSES) $(DEMOS)
|
||||
|
||||
clean:
|
||||
-del *.obj
|
||||
-del *.lib
|
||||
-del *.exe
|
||||
|
||||
demos: $(DEMOS)
|
||||
|
||||
$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
|
||||
-del $@
|
||||
$(LIBEXE) $@ \
|
||||
+addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj \
|
||||
+border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj \
|
||||
+getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj \
|
||||
+inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj \
|
||||
+mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj \
|
||||
+printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj \
|
||||
+termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj \
|
||||
+pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj \
|
||||
+pdcsetsc.obj +pdcutil.obj ,lib.map
|
||||
-copy $(LIBCURSES) panel.lib
|
||||
|
||||
.autodepend
|
||||
|
||||
{$(srcdir)\}.c.obj:
|
||||
$(BUILD) $<
|
||||
|
||||
{$(osdir)\}.c.obj:
|
||||
$(BUILD) $<
|
||||
|
||||
{$(demodir)\}.c.obj:
|
||||
$(BUILD) $<
|
||||
|
||||
.c.obj:
|
||||
$(BUILD) $<
|
||||
|
||||
.obj.exe:
|
||||
$(CC) -e$@ $** $(LIBCURSES)
|
||||
|
||||
tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
|
||||
$(CC) -e$@ $**
|
||||
|
||||
tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
|
||||
$(BUILD) -I$(demodir) $(demodir)\tui.c
|
||||
|
||||
tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) -I$(demodir) $(demodir)\tuidemo.c
|
||||
|
||||
PLATFORM1 = Borland C++ OS/2 1.0
|
||||
PLATFORM2 = Borland C/C++ OS/2 1.0
|
||||
ARCNAME = pdc$(VER)bcos2
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\makedist.mif
|
148
payloads/libpayload/curses/PDCurses/os2/gccos2.mak
Normal file
148
payloads/libpayload/curses/PDCurses/os2/gccos2.mak
Normal file
@ -0,0 +1,148 @@
|
||||
# GNU MAKE Makefile for PDCurses library - OS/2 emx 0.9c+
|
||||
#
|
||||
# Usage: make -f [path\]gccos2.mak [DEBUG=Y] [EMXVIDEO=Y] [DLL=Y] [target]
|
||||
#
|
||||
# where target can be any of:
|
||||
# [all|demos|pdcurses.a|testcurs.exe...]
|
||||
#
|
||||
# The EMXVIDEO option compiles with the emx video library, which
|
||||
# enables a PDCurses program to run under OS/2 and DOS.
|
||||
|
||||
O = o
|
||||
|
||||
ifndef PDCURSES_SRCDIR
|
||||
PDCURSES_SRCDIR = ..
|
||||
endif
|
||||
|
||||
include $(PDCURSES_SRCDIR)/version.mif
|
||||
include $(PDCURSES_SRCDIR)/libobjs.mif
|
||||
|
||||
osdir = $(PDCURSES_SRCDIR)/os2
|
||||
|
||||
PDCURSES_OS2_H = $(osdir)/pdcos2.h
|
||||
|
||||
CC = gcc
|
||||
|
||||
CFLAGS = -I$(PDCURSES_SRCDIR) -c -Wall
|
||||
|
||||
ifeq ($(EMXVIDEO),Y)
|
||||
CFLAGS += -DEMXVIDEO
|
||||
CCLIBS = -lvideo
|
||||
BINDFLAGS = -acm
|
||||
else
|
||||
CCLIBS =
|
||||
BINDFLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG),Y)
|
||||
CFLAGS += -g -DPDCDEBUG
|
||||
LDFLAGS = -g
|
||||
else
|
||||
CFLAGS += -O2
|
||||
LDFLAGS =
|
||||
endif
|
||||
|
||||
BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
|
||||
|
||||
DEFDEPS = $(BASEDEF)
|
||||
|
||||
DEFFILE = pdcurses.def
|
||||
|
||||
DLLTARGET = pdcurses.dll
|
||||
DLLFLAGS = -Zdll -Zcrtdll -Zomf
|
||||
|
||||
LINK = gcc
|
||||
EMXBIND = emxbind
|
||||
EMXOMF = emxomf
|
||||
|
||||
LIBEXE = ar
|
||||
LIBFLAGS = rcv
|
||||
|
||||
ifeq ($(DLL),Y)
|
||||
CFLAGS += -Zdll -Zcrtdll -Zomf
|
||||
LDFLAGS += -Zlinker /PM:VIO -Zomf -Zcrtdll
|
||||
LIBCURSES = pdcurses.lib
|
||||
LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
|
||||
PDCLIBS = $(DLLTARGET)
|
||||
EXEPOST =
|
||||
TUIPOST =
|
||||
CLEAN = *.dll *.lib $(DEFFILE)
|
||||
else
|
||||
LIBCURSES = pdcurses.a
|
||||
LIBDEPS = $(LIBOBJS) $(PDCOBJS)
|
||||
PDCLIBS = $(LIBCURSES)
|
||||
EXEPOST = $(EMXBIND) $* $(BINDFLAGS)
|
||||
TUIPOST = $(EMXBIND) tuidemo $(BINDFLAGS)
|
||||
CLEAN = *.a testcurs newdemo xmas tuidemo firework ptest rain worm
|
||||
endif
|
||||
|
||||
.PHONY: all libs clean demos dist
|
||||
|
||||
all: libs demos
|
||||
|
||||
libs: $(PDCLIBS)
|
||||
|
||||
clean:
|
||||
-del *.o
|
||||
-del *.exe
|
||||
-del $(CLEAN)
|
||||
|
||||
demos: $(DEMOS)
|
||||
|
||||
DEMOOBJS = testcurs.o newdemo.o xmas.o tui.o tuidemo.o firework.o \
|
||||
ptest.o rain.o worm.o
|
||||
|
||||
$(DEFFILE) : $(DEFDEPS)
|
||||
echo LIBRARY PDCURSES > $@
|
||||
echo DESCRIPTION 'PDCurses 3.4 Dynamic Linking library' >> $@
|
||||
echo PROTMODE >>$@
|
||||
echo DATA MULTIPLE READWRITE LOADONCALL >> $@
|
||||
echo CODE LOADONCALL >> $@
|
||||
echo EXPORTS >> $@
|
||||
type $(BASEDEF) >> $@
|
||||
|
||||
$(LIBCURSES) : $(LIBDEPS)
|
||||
$(LIBEXE) $(LIBFLAGS) $@ $?
|
||||
-copy $(LIBCURSES) panel.a
|
||||
|
||||
$(DLLTARGET) : $(LIBDEPS)
|
||||
$(LINK) $(DLLFLAGS) -o $(DLLTARGET) $? $(DEFFILE)
|
||||
# lxlite $(DLLTARGET)
|
||||
emximp -o $(LIBCURSES) $(DEFFILE)
|
||||
|
||||
$(LIBOBJS) $(PDCOBJS) $(DEMOOBJS) : $(PDCURSES_HEADERS)
|
||||
$(PDCOBJS) : $(PDCURSES_OS2_H)
|
||||
$(DEMOS) : $(LIBCURSES)
|
||||
panel.o ptest.o: $(PANEL_HEADER)
|
||||
terminfo.o: $(TERM_HEADER)
|
||||
|
||||
$(LIBOBJS) : %.o: $(srcdir)/%.c
|
||||
$(CC) -c $(CFLAGS) -o$@ $<
|
||||
|
||||
$(PDCOBJS) : %.o: $(osdir)/%.c
|
||||
$(CC) -c $(CFLAGS) -o$@ $<
|
||||
|
||||
firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
|
||||
ptest.exe: %.exe: %.o
|
||||
$(LINK) $(LDFLAGS) -o $* $< $(LIBCURSES) $(CCLIBS)
|
||||
$(EXEPOST)
|
||||
|
||||
tuidemo.exe: tuidemo.o tui.o
|
||||
$(LINK) $(LDFLAGS) -o tuidemo tuidemo.o tui.o $(LIBCURSES) $(CCLIBS)
|
||||
$(TUIPOST)
|
||||
|
||||
firework.o newdemo.o ptest.o rain.o testcurs.o worm.o xmas.o: %.o: \
|
||||
$(demodir)/%.c
|
||||
$(CC) $(CFLAGS) -o$@ $<
|
||||
|
||||
tui.o: $(demodir)\tui.c $(demodir)\tui.h
|
||||
$(CC) $(CFLAGS) -I$(demodir) -o $@ $<
|
||||
|
||||
tuidemo.o: $(demodir)\tuidemo.c
|
||||
$(CC) $(CFLAGS) -I$(demodir) -o $@ $<
|
||||
|
||||
PLATFORM1 = EMX OS/2
|
||||
PLATFORM2 = EMX 0.9d for OS/2
|
||||
ARCNAME = pdc$(VER)_emx_os2
|
||||
|
||||
include $(PDCURSES_SRCDIR)/makedist.mif
|
50
payloads/libpayload/curses/PDCurses/os2/iccos2.lrf
Normal file
50
payloads/libpayload/curses/PDCurses/os2/iccos2.lrf
Normal file
@ -0,0 +1,50 @@
|
||||
-+addch.obj &
|
||||
-+addchstr.obj &
|
||||
-+addstr.obj &
|
||||
-+attr.obj &
|
||||
-+beep.obj &
|
||||
-+bkgd.obj &
|
||||
-+border.obj &
|
||||
-+clear.obj &
|
||||
-+color.obj &
|
||||
-+delch.obj &
|
||||
-+deleteln.obj &
|
||||
-+deprec.obj &
|
||||
-+getch.obj &
|
||||
-+getstr.obj &
|
||||
-+getyx.obj &
|
||||
-+inch.obj &
|
||||
-+inchstr.obj &
|
||||
-+initscr.obj &
|
||||
-+inopts.obj &
|
||||
-+insch.obj &
|
||||
-+insstr.obj &
|
||||
-+instr.obj &
|
||||
-+kernel.obj &
|
||||
-+keyname.obj &
|
||||
-+mouse.obj &
|
||||
-+move.obj &
|
||||
-+outopts.obj &
|
||||
-+overlay.obj &
|
||||
-+pad.obj &
|
||||
-+panel.obj &
|
||||
-+printw.obj &
|
||||
-+refresh.obj &
|
||||
-+scanw.obj &
|
||||
-+scr_dump.obj &
|
||||
-+scroll.obj &
|
||||
-+slk.obj &
|
||||
-+termattr.obj &
|
||||
-+terminfo.obj &
|
||||
-+touch.obj &
|
||||
-+util.obj &
|
||||
-+window.obj &
|
||||
-+debug.obj &
|
||||
-+pdcclip.obj &
|
||||
-+pdcdisp.obj &
|
||||
-+pdcgetsc.obj &
|
||||
-+pdckbd.obj &
|
||||
-+pdcscrn.obj &
|
||||
-+pdcsetsc.obj &
|
||||
-+pdcutil.obj &
|
||||
,lib.map;
|
256
payloads/libpayload/curses/PDCurses/os2/iccos2.mak
Normal file
256
payloads/libpayload/curses/PDCurses/os2/iccos2.mak
Normal file
@ -0,0 +1,256 @@
|
||||
# NMAKE Makefile for PDCurses library - OS/2 C Set/2
|
||||
#
|
||||
# Usage: nmake -f [path\]iccos2.mak [DEBUG=] [target]
|
||||
#
|
||||
# where target can be any of:
|
||||
# [all|demos|pdcurses.lib|testcurs.exe...]
|
||||
|
||||
O = obj
|
||||
|
||||
!ifndef PDCURSES_SRCDIR
|
||||
PDCURSES_SRCDIR = ..
|
||||
!endif
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\version.mif
|
||||
!include $(PDCURSES_SRCDIR)\libobjs.mif
|
||||
|
||||
osdir = $(PDCURSES_SRCDIR)\os2
|
||||
|
||||
PDCURSES_OS2_H = $(osdir)\pdcos2.h
|
||||
|
||||
CC = icc
|
||||
|
||||
!ifdef DEBUG
|
||||
CFLAGS = /Sm /Ti+ /O- /Q+ /dPDCDEBUG
|
||||
LDFLAGS = /NOLOGO /NOE /SE:160 /DEBUG /PMTYPE:VIO
|
||||
!else
|
||||
CFLAGS = /Sm /Ti- /O+ /Q+
|
||||
LDFLAGS = /NOLOGO /NOE /EXEPACK /PACKCODE /PACKDATA /PMTYPE:VIO
|
||||
!endif
|
||||
|
||||
CPPFLAGS = -I$(PDCURSES_SRCDIR)
|
||||
|
||||
BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
|
||||
|
||||
LINK = link386
|
||||
|
||||
LIBEXE = lib
|
||||
|
||||
LIBCURSES = pdcurses.lib
|
||||
|
||||
all: $(LIBCURSES) $(DEMOS)
|
||||
|
||||
clean:
|
||||
-del *.obj
|
||||
-del *.lib
|
||||
-del *.exe
|
||||
|
||||
demos: $(DEMOS)
|
||||
|
||||
$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
|
||||
$(LIBEXE) $@ @$(osdir)\iccos2.lrf
|
||||
-copy $(LIBCURSES) panel.lib
|
||||
|
||||
addch.obj: $(srcdir)\addch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\addch.c
|
||||
|
||||
addchstr.obj: $(srcdir)\addchstr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\addchstr.c
|
||||
|
||||
addstr.obj: $(srcdir)\addstr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\addstr.c
|
||||
|
||||
attr.obj: $(srcdir)\attr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\attr.c
|
||||
|
||||
beep.obj: $(srcdir)\beep.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\beep.c
|
||||
|
||||
bkgd.obj: $(srcdir)\bkgd.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\bkgd.c
|
||||
|
||||
border.obj: $(srcdir)\border.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\border.c
|
||||
|
||||
clear.obj: $(srcdir)\clear.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\clear.c
|
||||
|
||||
color.obj: $(srcdir)\color.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\color.c
|
||||
|
||||
delch.obj: $(srcdir)\delch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\delch.c
|
||||
|
||||
deleteln.obj: $(srcdir)\deleteln.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\deleteln.c
|
||||
|
||||
deprec.obj: $(srcdir)\deprec.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\deprec.c
|
||||
|
||||
getch.obj: $(srcdir)\getch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\getch.c
|
||||
|
||||
getstr.obj: $(srcdir)\getstr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\getstr.c
|
||||
|
||||
getyx.obj: $(srcdir)\getyx.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\getyx.c
|
||||
|
||||
inch.obj: $(srcdir)\inch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\inch.c
|
||||
|
||||
inchstr.obj: $(srcdir)\inchstr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\inchstr.c
|
||||
|
||||
initscr.obj: $(srcdir)\initscr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\initscr.c
|
||||
|
||||
inopts.obj: $(srcdir)\inopts.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\inopts.c
|
||||
|
||||
insch.obj: $(srcdir)\insch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\insch.c
|
||||
|
||||
insstr.obj: $(srcdir)\insstr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\insstr.c
|
||||
|
||||
instr.obj: $(srcdir)\instr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\instr.c
|
||||
|
||||
kernel.obj: $(srcdir)\kernel.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\kernel.c
|
||||
|
||||
keyname.obj: $(srcdir)\keyname.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\keyname.c
|
||||
|
||||
mouse.obj: $(srcdir)\mouse.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\mouse.c
|
||||
|
||||
move.obj: $(srcdir)\move.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\move.c
|
||||
|
||||
outopts.obj: $(srcdir)\outopts.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\outopts.c
|
||||
|
||||
overlay.obj: $(srcdir)\overlay.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\overlay.c
|
||||
|
||||
pad.obj: $(srcdir)\pad.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\pad.c
|
||||
|
||||
panel.obj: $(srcdir)\panel.c $(PDCURSES_HEADERS) $(PANEL_HEADER)
|
||||
$(BUILD) $(srcdir)\panel.c
|
||||
|
||||
printw.obj: $(srcdir)\printw.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\printw.c
|
||||
|
||||
refresh.obj: $(srcdir)\refresh.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\refresh.c
|
||||
|
||||
scanw.obj: $(srcdir)\scanw.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\scanw.c
|
||||
|
||||
scr_dump.obj: $(srcdir)\scr_dump.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\scr_dump.c
|
||||
|
||||
scroll.obj: $(srcdir)\scroll.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\scroll.c
|
||||
|
||||
slk.obj: $(srcdir)\slk.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\slk.c
|
||||
|
||||
termattr.obj: $(srcdir)\termattr.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\termattr.c
|
||||
|
||||
terminfo.obj: $(srcdir)\terminfo.c $(PDCURSES_HEADERS) $(TERM_HEADER)
|
||||
$(BUILD) $(srcdir)\terminfo.c
|
||||
|
||||
touch.obj: $(srcdir)\touch.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\touch.c
|
||||
|
||||
util.obj: $(srcdir)\util.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\util.c
|
||||
|
||||
window.obj: $(srcdir)\window.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\window.c
|
||||
|
||||
debug.obj: $(srcdir)\debug.c $(PDCURSES_HEADERS)
|
||||
$(BUILD) $(srcdir)\debug.c
|
||||
|
||||
pdcclip.obj: $(osdir)\pdcclip.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcclip.c
|
||||
|
||||
pdcdisp.obj: $(osdir)\pdcdisp.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcdisp.c
|
||||
|
||||
pdcgetsc.obj: $(osdir)\pdcgetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcgetsc.c
|
||||
|
||||
pdckbd.obj: $(osdir)\pdckbd.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdckbd.c
|
||||
|
||||
pdcscrn.obj: $(osdir)\pdcscrn.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcscrn.c
|
||||
|
||||
pdcsetsc.obj: $(osdir)\pdcsetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcsetsc.c
|
||||
|
||||
pdcutil.obj: $(osdir)\pdcutil.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
|
||||
$(BUILD) $(osdir)\pdcutil.c
|
||||
|
||||
firework.exe: firework.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
newdemo.exe: newdemo.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
ptest.exe: ptest.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
rain.exe: rain.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
testcurs.exe: testcurs.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES);
|
||||
|
||||
worm.exe: worm.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
xmas.exe: xmas.obj $(LIBCURSES)
|
||||
$(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
|
||||
|
||||
firework.obj: $(demodir)\firework.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\firework.c
|
||||
|
||||
newdemo.obj: $(demodir)\newdemo.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\newdemo.c
|
||||
|
||||
ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER) $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\ptest.c
|
||||
|
||||
rain.obj: $(demodir)\rain.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\rain.c
|
||||
|
||||
testcurs.obj: $(demodir)\testcurs.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\testcurs.c
|
||||
|
||||
tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\tui.c
|
||||
|
||||
tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\tuidemo.c
|
||||
|
||||
worm.obj: $(demodir)\worm.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\worm.c
|
||||
|
||||
xmas.obj: $(demodir)\xmas.c $(PDCURSES_CURSES_H)
|
||||
$(BUILD) $(demodir)\xmas.c
|
||||
|
||||
PLATFORM1 = C Set/2 OS/2
|
||||
PLATFORM2 = C Set/2 for OS/2
|
||||
ARCNAME = pdc$(VER)_icc_os2
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\makedist.mif
|
185
payloads/libpayload/curses/PDCurses/os2/pdcclip.c
Normal file
185
payloads/libpayload/curses/PDCurses/os2/pdcclip.c
Normal file
@ -0,0 +1,185 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcclip.c,v 1.33 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
/*man-start**************************************************************
|
||||
|
||||
Name: clipboard
|
||||
|
||||
Synopsis:
|
||||
int PDC_getclipboard(char **contents, long *length);
|
||||
int PDC_setclipboard(const char *contents, long length);
|
||||
int PDC_freeclipboard(char *contents);
|
||||
int PDC_clearclipboard(void);
|
||||
|
||||
Description:
|
||||
PDC_getclipboard() gets the textual contents of the system's
|
||||
clipboard. This function returns the contents of the clipboard
|
||||
in the contents argument. It is the responsibilitiy of the
|
||||
caller to free the memory returned, via PDC_freeclipboard().
|
||||
The length of the clipboard contents is returned in the length
|
||||
argument.
|
||||
|
||||
PDC_setclipboard copies the supplied text into the system's
|
||||
clipboard, emptying the clipboard prior to the copy.
|
||||
|
||||
PDC_clearclipboard() clears the internal clipboard.
|
||||
|
||||
Return Values:
|
||||
indicator of success/failure of call.
|
||||
PDC_CLIP_SUCCESS the call was successful
|
||||
PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
|
||||
the clipboard contents
|
||||
PDC_CLIP_EMPTY the clipboard contains no text
|
||||
PDC_CLIP_ACCESS_ERROR no clipboard support
|
||||
|
||||
Portability X/Open BSD SYS V
|
||||
PDC_getclipboard - - -
|
||||
PDC_setclipboard - - -
|
||||
PDC_freeclipboard - - -
|
||||
PDC_clearclipboard - - -
|
||||
|
||||
**man-end****************************************************************/
|
||||
|
||||
int PDC_getclipboard(char **contents, long *length)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
HMQ hmq;
|
||||
HAB hab;
|
||||
PTIB ptib;
|
||||
PPIB ppib;
|
||||
ULONG ulRet;
|
||||
long len;
|
||||
int rc;
|
||||
#endif
|
||||
PDC_LOG(("PDC_getclipboard() - called\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
DosGetInfoBlocks(&ptib, &ppib);
|
||||
ppib->pib_ultype = 3;
|
||||
hab = WinInitialize(0);
|
||||
hmq = WinCreateMsgQueue(hab, 0);
|
||||
|
||||
if (!WinOpenClipbrd(hab))
|
||||
{
|
||||
WinDestroyMsgQueue(hmq);
|
||||
WinTerminate(hab);
|
||||
return PDC_CLIP_ACCESS_ERROR;
|
||||
}
|
||||
|
||||
rc = PDC_CLIP_EMPTY;
|
||||
|
||||
ulRet = WinQueryClipbrdData(hab, CF_TEXT);
|
||||
|
||||
if (ulRet)
|
||||
{
|
||||
len = strlen((char *)ulRet);
|
||||
*contents = malloc(len + 1);
|
||||
|
||||
if (!*contents)
|
||||
rc = PDC_CLIP_MEMORY_ERROR;
|
||||
else
|
||||
{
|
||||
strcpy((char *)*contents, (char *)ulRet);
|
||||
*length = len;
|
||||
rc = PDC_CLIP_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
WinCloseClipbrd(hab);
|
||||
WinDestroyMsgQueue(hmq);
|
||||
WinTerminate(hab);
|
||||
|
||||
return rc;
|
||||
#else
|
||||
return PDC_CLIP_ACCESS_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
int PDC_setclipboard(const char *contents, long length)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
HAB hab;
|
||||
PTIB ptib;
|
||||
PPIB ppib;
|
||||
ULONG ulRC;
|
||||
PSZ szTextOut = NULL;
|
||||
int rc;
|
||||
#endif
|
||||
PDC_LOG(("PDC_setclipboard() - called\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
DosGetInfoBlocks(&ptib, &ppib);
|
||||
ppib->pib_ultype = 3;
|
||||
hab = WinInitialize(0);
|
||||
|
||||
if (!WinOpenClipbrd(hab))
|
||||
{
|
||||
WinTerminate(hab);
|
||||
return PDC_CLIP_ACCESS_ERROR;
|
||||
}
|
||||
|
||||
rc = PDC_CLIP_MEMORY_ERROR;
|
||||
|
||||
ulRC = DosAllocSharedMem((PVOID)&szTextOut, NULL, length + 1,
|
||||
PAG_WRITE | PAG_COMMIT | OBJ_GIVEABLE);
|
||||
|
||||
if (ulRC == 0)
|
||||
{
|
||||
strcpy(szTextOut, contents);
|
||||
WinEmptyClipbrd(hab);
|
||||
|
||||
if (WinSetClipbrdData(hab, (ULONG)szTextOut, CF_TEXT, CFI_POINTER))
|
||||
rc = PDC_CLIP_SUCCESS;
|
||||
else
|
||||
{
|
||||
DosFreeMem(szTextOut);
|
||||
rc = PDC_CLIP_ACCESS_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
WinCloseClipbrd(hab);
|
||||
WinTerminate(hab);
|
||||
|
||||
return rc;
|
||||
#else
|
||||
return PDC_CLIP_ACCESS_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
int PDC_freeclipboard(char *contents)
|
||||
{
|
||||
PDC_LOG(("PDC_freeclipboard() - called\n"));
|
||||
|
||||
if (contents)
|
||||
free(contents);
|
||||
|
||||
return PDC_CLIP_SUCCESS;
|
||||
}
|
||||
|
||||
int PDC_clearclipboard(void)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
HAB hab;
|
||||
PTIB ptib;
|
||||
PPIB ppib;
|
||||
#endif
|
||||
PDC_LOG(("PDC_clearclipboard() - called\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
DosGetInfoBlocks(&ptib, &ppib);
|
||||
ppib->pib_ultype = 3;
|
||||
hab = WinInitialize(0);
|
||||
|
||||
WinEmptyClipbrd(hab);
|
||||
|
||||
WinCloseClipbrd(hab);
|
||||
WinTerminate(hab);
|
||||
|
||||
return PDC_CLIP_SUCCESS;
|
||||
#else
|
||||
return PDC_CLIP_ACCESS_ERROR;
|
||||
#endif
|
||||
}
|
95
payloads/libpayload/curses/PDCurses/os2/pdcdisp.c
Normal file
95
payloads/libpayload/curses/PDCurses/os2/pdcdisp.c
Normal file
@ -0,0 +1,95 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcdisp.c,v 1.49 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
/* ACS definitions originally by jshumate@wrdis01.robins.af.mil -- these
|
||||
match code page 437 and compatible pages (CP850, CP852, etc.) */
|
||||
|
||||
#ifdef CHTYPE_LONG
|
||||
|
||||
# define A(x) ((chtype)x | A_ALTCHARSET)
|
||||
|
||||
chtype acs_map[128] =
|
||||
{
|
||||
A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9),
|
||||
A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18),
|
||||
A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27),
|
||||
A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&',
|
||||
'\'', '(', ')', '*',
|
||||
|
||||
A(0x1a), A(0x1b), A(0x18), A(0x19),
|
||||
|
||||
'/',
|
||||
|
||||
0xdb,
|
||||
|
||||
'1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
|
||||
'>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
|
||||
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
|
||||
'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
|
||||
|
||||
A(0x04), 0xb1,
|
||||
|
||||
'b', 'c', 'd', 'e',
|
||||
|
||||
0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d,
|
||||
0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3,
|
||||
0xf2, 0xe3, 0xd8, 0x9c, 0xf9,
|
||||
|
||||
A(127)
|
||||
};
|
||||
|
||||
# undef A
|
||||
|
||||
#endif
|
||||
|
||||
/* position hardware cursor at (y, x) */
|
||||
|
||||
void PDC_gotoyx(int row, int col)
|
||||
{
|
||||
PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_gotoxy(col, row);
|
||||
#else
|
||||
VioSetCurPos(row, col, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* update the given physical line to look like the corresponding line in
|
||||
curscr */
|
||||
|
||||
void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
|
||||
{
|
||||
/* this should be enough for the maximum width of a screen. */
|
||||
|
||||
struct {unsigned char text, attr;} temp_line[256];
|
||||
int j;
|
||||
|
||||
PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
|
||||
|
||||
/* replace the attribute part of the chtype with the
|
||||
actual color value for each chtype in the line */
|
||||
|
||||
for (j = 0; j < len; j++)
|
||||
{
|
||||
chtype ch = srcp[j];
|
||||
|
||||
temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
|
||||
|
||||
#ifdef CHTYPE_LONG
|
||||
if (ch & A_ALTCHARSET && !(ch & 0xff80))
|
||||
ch = acs_map[ch & 0x7f];
|
||||
#endif
|
||||
temp_line[j].text = ch & 0xff;
|
||||
}
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_putline((char *)temp_line, x, lineno, len);
|
||||
#else
|
||||
VioWrtCellStr((PCH)temp_line, (USHORT)(len * sizeof(unsigned short)),
|
||||
(USHORT)lineno, (USHORT)x, 0);
|
||||
#endif
|
||||
}
|
91
payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c
Normal file
91
payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c
Normal file
@ -0,0 +1,91 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcgetsc.c,v 1.39 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
/* return width of screen/viewport */
|
||||
|
||||
int PDC_get_columns(void)
|
||||
{
|
||||
#ifdef EMXVIDEO
|
||||
int rows = 0;
|
||||
#else
|
||||
VIOMODEINFO modeInfo = {0};
|
||||
#endif
|
||||
int cols = 0;
|
||||
const char *env_cols;
|
||||
|
||||
PDC_LOG(("PDC_get_columns() - called\n"));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_dimen(&cols, &rows);
|
||||
#else
|
||||
modeInfo.cb = sizeof(modeInfo);
|
||||
VioGetMode(&modeInfo, 0);
|
||||
cols = modeInfo.col;
|
||||
#endif
|
||||
env_cols = getenv("COLS");
|
||||
|
||||
if (env_cols)
|
||||
cols = min(atoi(env_cols), cols);
|
||||
|
||||
PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
|
||||
|
||||
return cols;
|
||||
}
|
||||
|
||||
/* get the cursor size/shape */
|
||||
|
||||
int PDC_get_cursor_mode(void)
|
||||
{
|
||||
#ifdef EMXVIDEO
|
||||
int curstart = 0, curend = 0;
|
||||
#else
|
||||
VIOCURSORINFO cursorInfo;
|
||||
#endif
|
||||
PDC_LOG(("PDC_get_cursor_mode() - called\n"));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_getctype(&curstart, &curend);
|
||||
return (curstart << 8) | curend;
|
||||
#else
|
||||
VioGetCurType (&cursorInfo, 0);
|
||||
|
||||
return (cursorInfo.yStart << 8) | cursorInfo.cEnd;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* return number of screen rows */
|
||||
|
||||
int PDC_get_rows(void)
|
||||
{
|
||||
#ifdef EMXVIDEO
|
||||
int cols = 0;
|
||||
#else
|
||||
VIOMODEINFO modeInfo = {0};
|
||||
#endif
|
||||
int rows = 0;
|
||||
const char *env_rows;
|
||||
|
||||
PDC_LOG(("PDC_get_rows() - called\n"));
|
||||
|
||||
/* use the value from LINES environment variable, if set. MH 10-Jun-92 */
|
||||
/* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_dimen(&cols, &rows);
|
||||
#else
|
||||
modeInfo.cb = sizeof(modeInfo);
|
||||
VioGetMode(&modeInfo, 0);
|
||||
rows = modeInfo.row;
|
||||
#endif
|
||||
env_rows = getenv("LINES");
|
||||
|
||||
if (env_rows)
|
||||
rows = min(atoi(env_rows), rows);
|
||||
|
||||
PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
|
||||
|
||||
return rows;
|
||||
}
|
519
payloads/libpayload/curses/PDCurses/os2/pdckbd.c
Normal file
519
payloads/libpayload/curses/PDCurses/os2/pdckbd.c
Normal file
@ -0,0 +1,519 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#if defined(__EMX__) || defined(__WATCOMC__) || defined(__IBMC__) || \
|
||||
defined(__TURBOC__)
|
||||
# define HAVE_SIGNAL
|
||||
# include <signal.h>
|
||||
#endif
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdckbd.c,v 1.89 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
/*man-start**************************************************************
|
||||
|
||||
Name: pdckbd
|
||||
|
||||
Synopsis:
|
||||
unsigned long PDC_get_input_fd(void);
|
||||
|
||||
Description:
|
||||
PDC_get_input_fd() returns the file descriptor that PDCurses
|
||||
reads its input from. It can be used for select().
|
||||
|
||||
Portability X/Open BSD SYS V
|
||||
PDC_get_input_fd - - -
|
||||
|
||||
**man-end****************************************************************/
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
# include <termios.h>
|
||||
static int tahead = -1;
|
||||
#else
|
||||
static KBDINFO kbdinfo; /* default keyboard mode */
|
||||
static HMOU mouse_handle = 0;
|
||||
static MOUSE_STATUS old_mouse_status;
|
||||
static USHORT old_shift = 0;
|
||||
static bool key_pressed = FALSE;
|
||||
static int mouse_events = 0;
|
||||
#endif
|
||||
|
||||
/************************************************************************
|
||||
* Table for key code translation of function keys in keypad mode *
|
||||
* These values are for strict IBM keyboard compatibles only *
|
||||
************************************************************************/
|
||||
|
||||
static short key_table[] =
|
||||
{
|
||||
-1, ALT_ESC, -1, 0,
|
||||
-1, -1, -1, -1,
|
||||
-1, -1, -1, -1,
|
||||
-1, -1, ALT_BKSP, KEY_BTAB,
|
||||
ALT_Q, ALT_W, ALT_E, ALT_R,
|
||||
ALT_T, ALT_Y, ALT_U, ALT_I,
|
||||
ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET,
|
||||
ALT_ENTER, -1, ALT_A, ALT_S,
|
||||
ALT_D, ALT_F, ALT_G, ALT_H,
|
||||
ALT_J, ALT_K, ALT_L, ALT_SEMICOLON,
|
||||
ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH,
|
||||
ALT_Z, ALT_X, ALT_C, ALT_V,
|
||||
ALT_B, ALT_N, ALT_M, ALT_COMMA,
|
||||
ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR,
|
||||
-1, -1, -1, KEY_F(1),
|
||||
KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5),
|
||||
KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9),
|
||||
KEY_F(10), -1, -1, KEY_HOME,
|
||||
KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT,
|
||||
KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END,
|
||||
KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC,
|
||||
KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16),
|
||||
KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20),
|
||||
KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26),
|
||||
KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30),
|
||||
KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34),
|
||||
KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40),
|
||||
KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44),
|
||||
KEY_F(45), KEY_F(46), -1, CTL_LEFT,
|
||||
CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME,
|
||||
ALT_1, ALT_2, ALT_3, ALT_4,
|
||||
ALT_5, ALT_6, ALT_7, ALT_8,
|
||||
ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL,
|
||||
CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23),
|
||||
KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47),
|
||||
KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER,
|
||||
CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL,
|
||||
CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME,
|
||||
ALT_UP, ALT_PGUP, -1, ALT_LEFT,
|
||||
-1, ALT_RIGHT, -1, ALT_END,
|
||||
ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL,
|
||||
ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1
|
||||
};
|
||||
|
||||
unsigned long pdc_key_modifiers = 0L;
|
||||
|
||||
unsigned long PDC_get_input_fd(void)
|
||||
{
|
||||
PDC_LOG(("PDC_get_input_fd() - called\n"));
|
||||
|
||||
return (unsigned long)fileno(stdin);
|
||||
}
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
|
||||
void PDC_get_keyboard_info(void)
|
||||
{
|
||||
kbdinfo.cb = sizeof(kbdinfo);
|
||||
KbdGetStatus(&kbdinfo, 0);
|
||||
}
|
||||
|
||||
void PDC_set_keyboard_default(void)
|
||||
{
|
||||
KbdSetStatus(&kbdinfo, 0);
|
||||
}
|
||||
|
||||
#endif /* ifndef EMXVIDEO */
|
||||
|
||||
void PDC_set_keyboard_binary(bool on)
|
||||
{
|
||||
PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
if (on)
|
||||
{
|
||||
kbdinfo.fsMask &= ~(KEYBOARD_ASCII_MODE);
|
||||
kbdinfo.fsMask |= KEYBOARD_BINARY_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
kbdinfo.fsMask &= ~(KEYBOARD_BINARY_MODE);
|
||||
kbdinfo.fsMask |= KEYBOARD_ASCII_MODE;
|
||||
}
|
||||
|
||||
KbdSetStatus(&kbdinfo, 0);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SIGNAL
|
||||
signal(SIGBREAK, on ? SIG_IGN : SIG_DFL);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* check if a key or mouse event is waiting */
|
||||
|
||||
bool PDC_check_key(void)
|
||||
{
|
||||
#if !defined(_MSC_VER) && !defined(EMXVIDEO)
|
||||
KBDKEYINFO keyInfo = {0};
|
||||
#endif
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
if (tahead == -1) /* Nothing typed yet */
|
||||
{
|
||||
tahead = _read_kbd(0, 0, 0);
|
||||
|
||||
/* Read additional */
|
||||
|
||||
if (tahead == 0)
|
||||
tahead = _read_kbd(0, 1, 0) << 8;
|
||||
}
|
||||
|
||||
return (tahead != -1);
|
||||
#else
|
||||
# ifndef _MSC_VER
|
||||
|
||||
KbdGetStatus(&kbdinfo, 0);
|
||||
|
||||
if (mouse_handle)
|
||||
{
|
||||
MOUQUEINFO queue;
|
||||
|
||||
MouGetNumQueEl(&queue, mouse_handle);
|
||||
mouse_events = queue.cEvents;
|
||||
|
||||
if (mouse_events)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (old_shift && !kbdinfo.fsState) /* modifier released */
|
||||
{
|
||||
if (!key_pressed && SP->return_key_modifiers)
|
||||
return TRUE;
|
||||
}
|
||||
else if (!old_shift && kbdinfo.fsState) /* modifier pressed */
|
||||
key_pressed = FALSE;
|
||||
|
||||
old_shift = kbdinfo.fsState;
|
||||
|
||||
KbdPeek(&keyInfo, 0); /* peek at keyboard */
|
||||
return (keyInfo.fbStatus != 0);
|
||||
# else
|
||||
return kbhit();
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
|
||||
static int _process_mouse_events(void)
|
||||
{
|
||||
MOUEVENTINFO event;
|
||||
static const USHORT button_mask[] = {6, 96, 24},
|
||||
move_mask[] = {2, 32, 8},
|
||||
press_mask[] = {4, 64, 16};
|
||||
USHORT count = 1;
|
||||
short shift_flags = 0;
|
||||
int i;
|
||||
|
||||
MouReadEventQue(&event, &count, mouse_handle);
|
||||
mouse_events--;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
pdc_mouse_status.button[i] =
|
||||
((event.fs & move_mask[i]) ? BUTTON_MOVED : 0) |
|
||||
((event.fs & press_mask[i]) ? BUTTON_PRESSED : 0);
|
||||
|
||||
/* PRESS events are sometimes mistakenly reported as MOVE
|
||||
events. A MOVE should always follow a PRESS, so treat a MOVE
|
||||
immediately after a RELEASE as a PRESS. */
|
||||
|
||||
if ((pdc_mouse_status.button[i] == BUTTON_MOVED) &&
|
||||
(old_mouse_status.button[i] == BUTTON_RELEASED))
|
||||
{
|
||||
pdc_mouse_status.button[i] = BUTTON_PRESSED;
|
||||
}
|
||||
|
||||
if (pdc_mouse_status.button[i] == BUTTON_PRESSED && SP->mouse_wait)
|
||||
{
|
||||
/* Check for a click -- a PRESS followed immediately by a
|
||||
release */
|
||||
|
||||
if (!mouse_events)
|
||||
{
|
||||
MOUQUEINFO queue;
|
||||
|
||||
napms(SP->mouse_wait);
|
||||
|
||||
MouGetNumQueEl(&queue, mouse_handle);
|
||||
mouse_events = queue.cEvents;
|
||||
}
|
||||
|
||||
if (mouse_events)
|
||||
{
|
||||
MouReadEventQue(&event, &count, mouse_handle);
|
||||
|
||||
if (!(event.fs & button_mask[i]))
|
||||
pdc_mouse_status.button[i] = BUTTON_CLICKED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pdc_mouse_status.x = event.col;
|
||||
pdc_mouse_status.y = event.row;
|
||||
|
||||
pdc_mouse_status.changes = 0;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (old_mouse_status.button[i] != pdc_mouse_status.button[i])
|
||||
pdc_mouse_status.changes |= (1 << i);
|
||||
|
||||
if (pdc_mouse_status.button[i] == BUTTON_MOVED)
|
||||
{
|
||||
/* Discard non-moved "moves" */
|
||||
|
||||
if (pdc_mouse_status.x == old_mouse_status.x &&
|
||||
pdc_mouse_status.y == old_mouse_status.y)
|
||||
return -1;
|
||||
|
||||
/* Motion events always flag the button as changed */
|
||||
|
||||
pdc_mouse_status.changes |= (1 << i);
|
||||
pdc_mouse_status.changes |= PDC_MOUSE_MOVED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
old_mouse_status = pdc_mouse_status;
|
||||
|
||||
/* Treat click events as release events for comparison purposes */
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (old_mouse_status.button[i] == BUTTON_CLICKED)
|
||||
old_mouse_status.button[i] = BUTTON_RELEASED;
|
||||
}
|
||||
|
||||
/* Check for SHIFT/CONTROL/ALT */
|
||||
|
||||
if (kbdinfo.fsState & KBDSTF_ALT)
|
||||
shift_flags |= BUTTON_ALT;
|
||||
|
||||
if (kbdinfo.fsState & KBDSTF_CONTROL)
|
||||
shift_flags |= BUTTON_CONTROL;
|
||||
|
||||
if (kbdinfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
|
||||
shift_flags |= BUTTON_SHIFT;
|
||||
|
||||
if (shift_flags)
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (pdc_mouse_status.changes & (1 << i))
|
||||
pdc_mouse_status.button[i] |= shift_flags;
|
||||
}
|
||||
}
|
||||
|
||||
old_shift = kbdinfo.fsState;
|
||||
key_pressed = TRUE;
|
||||
|
||||
SP->key_code = TRUE;
|
||||
return KEY_MOUSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* return the next available key or mouse event */
|
||||
|
||||
int PDC_get_key(void)
|
||||
{
|
||||
int key, scan;
|
||||
#ifndef EMXVIDEO
|
||||
KBDKEYINFO keyInfo = {0};
|
||||
#endif
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
if (tahead == -1)
|
||||
{
|
||||
tahead = _read_kbd(0, 1, 0);
|
||||
|
||||
/* Read additional */
|
||||
|
||||
if (tahead == 0)
|
||||
tahead = _read_kbd(0, 1, 0) << 8;
|
||||
}
|
||||
|
||||
key = tahead & 0xff;
|
||||
scan = tahead >> 8;
|
||||
pdc_key_modifiers = 0L;
|
||||
|
||||
tahead = -1;
|
||||
#else
|
||||
pdc_key_modifiers = 0L;
|
||||
|
||||
if (mouse_handle && mouse_events)
|
||||
return _process_mouse_events();
|
||||
|
||||
if (old_shift && !kbdinfo.fsState)
|
||||
{
|
||||
key = -1;
|
||||
|
||||
if (old_shift & KBDSTF_LEFTALT)
|
||||
{
|
||||
key = KEY_ALT_L;
|
||||
}
|
||||
else if (old_shift & KBDSTF_RIGHTALT)
|
||||
{
|
||||
key = KEY_ALT_R;
|
||||
}
|
||||
else if (old_shift & KBDSTF_LEFTCONTROL)
|
||||
{
|
||||
key = KEY_CONTROL_L;
|
||||
}
|
||||
else if (old_shift & KBDSTF_RIGHTCONTROL)
|
||||
{
|
||||
key = KEY_CONTROL_R;
|
||||
}
|
||||
else if (old_shift & KBDSTF_LEFTSHIFT)
|
||||
{
|
||||
key = KEY_SHIFT_L;
|
||||
}
|
||||
else if (old_shift & KBDSTF_RIGHTSHIFT)
|
||||
{
|
||||
key = KEY_SHIFT_R;
|
||||
}
|
||||
|
||||
key_pressed = FALSE;
|
||||
old_shift = kbdinfo.fsState;
|
||||
|
||||
SP->key_code = TRUE;
|
||||
return key;
|
||||
}
|
||||
|
||||
KbdCharIn(&keyInfo, IO_WAIT, 0); /* get a character */
|
||||
|
||||
key = keyInfo.chChar;
|
||||
scan = keyInfo.chScan;
|
||||
|
||||
if (SP->save_key_modifiers)
|
||||
{
|
||||
if (keyInfo.fsState & KBDSTF_ALT)
|
||||
pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
|
||||
|
||||
if (keyInfo.fsState & KBDSTF_CONTROL)
|
||||
pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
|
||||
|
||||
if (keyInfo.fsState & KBDSTF_NUMLOCK_ON)
|
||||
pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
|
||||
|
||||
if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
|
||||
pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
|
||||
}
|
||||
#endif
|
||||
if (scan == 0x1c && key == 0x0a) /* ^Enter */
|
||||
key = CTL_ENTER;
|
||||
else if (scan == 0xe0 && key == 0x0d) /* PadEnter */
|
||||
key = PADENTER;
|
||||
else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */
|
||||
key = CTL_PADENTER;
|
||||
else if (scan == 0x37 && key == 0x2a) /* Star */
|
||||
key = PADSTAR;
|
||||
else if (scan == 0x4a && key == 0x2d) /* Minus */
|
||||
key = PADMINUS;
|
||||
else if (scan == 0x4e && key == 0x2b) /* Plus */
|
||||
key = PADPLUS;
|
||||
else if (scan == 0xe0 && key == 0x2f) /* Slash */
|
||||
key = PADSLASH;
|
||||
else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86))
|
||||
key = (scan > 0xa7) ? -1 : key_table[scan];
|
||||
|
||||
if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
case KEY_HOME: /* Shift Home */
|
||||
key = KEY_SHOME;
|
||||
break;
|
||||
case KEY_UP: /* Shift Up */
|
||||
key = KEY_SUP;
|
||||
break;
|
||||
case KEY_PPAGE: /* Shift PgUp */
|
||||
key = KEY_SPREVIOUS;
|
||||
break;
|
||||
case KEY_LEFT: /* Shift Left */
|
||||
key = KEY_SLEFT;
|
||||
break;
|
||||
case KEY_RIGHT: /* Shift Right */
|
||||
key = KEY_SRIGHT;
|
||||
break;
|
||||
case KEY_END: /* Shift End */
|
||||
key = KEY_SEND;
|
||||
break;
|
||||
case KEY_DOWN: /* Shift Down */
|
||||
key = KEY_SDOWN;
|
||||
break;
|
||||
case KEY_NPAGE: /* Shift PgDn */
|
||||
key = KEY_SNEXT;
|
||||
break;
|
||||
case KEY_IC: /* Shift Ins */
|
||||
key = KEY_SIC;
|
||||
break;
|
||||
case KEY_DC: /* Shift Del */
|
||||
key = KEY_SDC;
|
||||
}
|
||||
}
|
||||
|
||||
key_pressed = TRUE;
|
||||
SP->key_code = ((unsigned)key >= 256);
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
/* discard any pending keyboard or mouse input -- this is the core
|
||||
routine for flushinp() */
|
||||
|
||||
void PDC_flushinp(void)
|
||||
{
|
||||
PDC_LOG(("PDC_flushinp() - called\n"));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
tcflush(0, TCIFLUSH);
|
||||
#else
|
||||
if (mouse_handle)
|
||||
MouFlushQue(mouse_handle);
|
||||
|
||||
KbdFlushBuffer(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
int PDC_mouse_set(void)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
|
||||
unsigned long mbe = SP->_trap_mbe;
|
||||
|
||||
if (mbe && !mouse_handle)
|
||||
{
|
||||
memset(&old_mouse_status, 0, sizeof(MOUSE_STATUS));
|
||||
MouOpen(NULL, &mouse_handle);
|
||||
if (mouse_handle)
|
||||
MouDrawPtr(mouse_handle);
|
||||
}
|
||||
else if (!mbe && mouse_handle)
|
||||
{
|
||||
MouClose(mouse_handle);
|
||||
mouse_handle = 0;
|
||||
}
|
||||
|
||||
if (mbe && mouse_handle)
|
||||
{
|
||||
USHORT mask = ((mbe & (BUTTON1_PRESSED | BUTTON1_CLICKED |
|
||||
BUTTON1_MOVED)) ? 6 : 0) |
|
||||
|
||||
((mbe & (BUTTON3_PRESSED | BUTTON3_CLICKED |
|
||||
BUTTON3_MOVED)) ? 24 : 0) |
|
||||
|
||||
((mbe & (BUTTON2_PRESSED | BUTTON2_CLICKED |
|
||||
BUTTON2_MOVED)) ? 96 : 0);
|
||||
|
||||
MouSetEventMask(&mask, mouse_handle);
|
||||
}
|
||||
#endif
|
||||
return OK;
|
||||
}
|
||||
|
||||
int PDC_modifiers_set(void)
|
||||
{
|
||||
key_pressed = FALSE;
|
||||
|
||||
return OK;
|
||||
}
|
51
payloads/libpayload/curses/PDCurses/os2/pdcos2.h
Normal file
51
payloads/libpayload/curses/PDCurses/os2/pdcos2.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
/* $Id: pdcos2.h,v 1.9 2008/08/14 06:38:35 wmcbrine Exp $ */
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# define USE_OS2_H 1 /* Use the os2.h for the compiler */
|
||||
# define APIRET USHORT
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
# include <sys/video.h>
|
||||
#else
|
||||
# define INCL_DOS
|
||||
# define INCL_DOSMISC
|
||||
# define INCL_WIN
|
||||
# define INCL_VIO
|
||||
# define INCL_KBD
|
||||
# define INCL_MOU
|
||||
# include <os2.h>
|
||||
#endif
|
||||
|
||||
#include <curspriv.h>
|
||||
|
||||
#ifdef __WATCOMC__
|
||||
# define PDCTHUNK(x) ((ptr_16)(x))
|
||||
# ifdef __386__
|
||||
# define SEG16 _Seg16
|
||||
# else
|
||||
# define SEG16
|
||||
# endif
|
||||
|
||||
typedef void * SEG16 ptr_16;
|
||||
|
||||
#else
|
||||
# ifdef __EMX__
|
||||
# ifdef __INNOTEK_LIBC__
|
||||
# define PDCTHUNK(x) ((PCH)_libc_32to16(x))
|
||||
# else
|
||||
# define PDCTHUNK(x) ((PCH)_emx_32to16(x))
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
extern unsigned char *pdc_atrtab;
|
||||
extern int pdc_font;
|
||||
|
||||
extern void PDC_get_keyboard_info(void);
|
||||
extern void PDC_set_keyboard_default(void);
|
422
payloads/libpayload/curses/PDCurses/os2/pdcscrn.c
Normal file
422
payloads/libpayload/curses/PDCurses/os2/pdcscrn.c
Normal file
@ -0,0 +1,422 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcscrn.c,v 1.76 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
#ifdef CHTYPE_LONG
|
||||
# define PDC_OFFSET 32
|
||||
#else
|
||||
# define PDC_OFFSET 8
|
||||
#endif
|
||||
|
||||
/* COLOR_PAIR to attribute encoding table. */
|
||||
|
||||
unsigned char *pdc_atrtab = (unsigned char *)NULL;
|
||||
|
||||
int pdc_font; /* default font size */
|
||||
|
||||
static short curstoreal[16], realtocurs[16] =
|
||||
{
|
||||
COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
|
||||
COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
|
||||
COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
|
||||
COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
|
||||
};
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
static unsigned char *saved_screen = NULL;
|
||||
static int saved_lines = 0;
|
||||
static int saved_cols = 0;
|
||||
#else
|
||||
# ifdef PDCTHUNK
|
||||
# ifdef __EMX__
|
||||
# define THUNKEDVIO VIOCOLORREG
|
||||
# else
|
||||
|
||||
typedef struct {
|
||||
USHORT cb;
|
||||
USHORT type;
|
||||
USHORT firstcolorreg;
|
||||
USHORT numcolorregs;
|
||||
ptr_16 colorregaddr;
|
||||
} THUNKEDVIO;
|
||||
|
||||
# endif
|
||||
# endif
|
||||
|
||||
static PCH saved_screen = NULL;
|
||||
static USHORT saved_lines = 0;
|
||||
static USHORT saved_cols = 0;
|
||||
static VIOMODEINFO scrnmode; /* default screen mode */
|
||||
static VIOMODEINFO saved_scrnmode[3];
|
||||
static int saved_font[3];
|
||||
static bool can_change = FALSE;
|
||||
|
||||
static int _get_font(void)
|
||||
{
|
||||
VIOMODEINFO modeInfo = {0};
|
||||
|
||||
modeInfo.cb = sizeof(modeInfo);
|
||||
|
||||
VioGetMode(&modeInfo, 0);
|
||||
return (modeInfo.vres / modeInfo.row);
|
||||
}
|
||||
|
||||
static void _set_font(int size)
|
||||
{
|
||||
VIOMODEINFO modeInfo = {0};
|
||||
|
||||
if (pdc_font != size)
|
||||
{
|
||||
modeInfo.cb = sizeof(modeInfo);
|
||||
|
||||
/* set most parameters of modeInfo */
|
||||
|
||||
VioGetMode(&modeInfo, 0);
|
||||
modeInfo.cb = 8; /* ignore horiz an vert resolution */
|
||||
modeInfo.row = modeInfo.vres / size;
|
||||
VioSetMode(&modeInfo, 0);
|
||||
}
|
||||
|
||||
curs_set(SP->visibility);
|
||||
|
||||
pdc_font = _get_font();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* close the physical screen -- may restore the screen to its state
|
||||
before PDC_scr_open(); miscellaneous cleanup */
|
||||
|
||||
void PDC_scr_close(void)
|
||||
{
|
||||
PDC_LOG(("PDC_scr_close() - called\n"));
|
||||
|
||||
if (saved_screen && getenv("PDC_RESTORE_SCREEN"))
|
||||
{
|
||||
#ifdef EMXVIDEO
|
||||
v_putline(saved_screen, 0, 0, saved_lines * saved_cols);
|
||||
#else
|
||||
VioWrtCellStr(saved_screen, saved_lines * saved_cols * 2,
|
||||
0, 0, (HVIO)NULL);
|
||||
#endif
|
||||
free(saved_screen);
|
||||
saved_screen = NULL;
|
||||
}
|
||||
|
||||
reset_shell_mode();
|
||||
|
||||
if (SP->visibility != 1)
|
||||
curs_set(1);
|
||||
|
||||
/* Position cursor to the bottom left of the screen. */
|
||||
|
||||
PDC_gotoyx(PDC_get_rows() - 2, 0);
|
||||
}
|
||||
|
||||
void PDC_scr_free(void)
|
||||
{
|
||||
if (SP)
|
||||
free(SP);
|
||||
if (pdc_atrtab)
|
||||
free(pdc_atrtab);
|
||||
|
||||
pdc_atrtab = (unsigned char *)NULL;
|
||||
}
|
||||
|
||||
/* open the physical screen -- allocate SP, miscellaneous intialization,
|
||||
and may save the existing screen for later restoration */
|
||||
|
||||
int PDC_scr_open(int argc, char **argv)
|
||||
{
|
||||
#ifdef EMXVIDEO
|
||||
int adapter;
|
||||
#else
|
||||
USHORT totchars;
|
||||
#endif
|
||||
int i;
|
||||
short r, g, b;
|
||||
|
||||
PDC_LOG(("PDC_scr_open() - called\n"));
|
||||
|
||||
SP = calloc(1, sizeof(SCREEN));
|
||||
pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
|
||||
|
||||
if (!SP || !pdc_atrtab)
|
||||
return ERR;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
curstoreal[realtocurs[i]] = i;
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
v_init();
|
||||
#endif
|
||||
SP->orig_attr = FALSE;
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
adapter = v_hardware();
|
||||
SP->mono = (adapter == V_MONOCHROME);
|
||||
|
||||
pdc_font = SP->mono ? 14 : (adapter == V_COLOR_8) ? 8 : 12;
|
||||
#else
|
||||
VioGetMode(&scrnmode, 0);
|
||||
PDC_get_keyboard_info();
|
||||
|
||||
pdc_font = _get_font();
|
||||
#endif
|
||||
SP->lines = PDC_get_rows();
|
||||
SP->cols = PDC_get_columns();
|
||||
|
||||
SP->mouse_wait = PDC_CLICK_PERIOD;
|
||||
SP->audible = TRUE;
|
||||
|
||||
/* This code for preserving the current screen */
|
||||
|
||||
if (getenv("PDC_RESTORE_SCREEN"))
|
||||
{
|
||||
saved_lines = SP->lines;
|
||||
saved_cols = SP->cols;
|
||||
|
||||
saved_screen = malloc(2 * saved_lines * saved_cols);
|
||||
|
||||
if (!saved_screen)
|
||||
{
|
||||
SP->_preserve = FALSE;
|
||||
return OK;
|
||||
}
|
||||
#ifdef EMXVIDEO
|
||||
v_getline(saved_screen, 0, 0, saved_lines * saved_cols);
|
||||
#else
|
||||
totchars = saved_lines * saved_cols * 2;
|
||||
VioReadCellStr((PCH)saved_screen, &totchars, 0, 0, (HVIO)NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
|
||||
|
||||
can_change = (PDC_color_content(0, &r, &g, &b) == OK);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* the core of resize_term() */
|
||||
|
||||
int PDC_resize_screen(int nlines, int ncols)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
VIOMODEINFO modeInfo = {0};
|
||||
USHORT result;
|
||||
#endif
|
||||
|
||||
PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
|
||||
nlines, ncols));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
return ERR;
|
||||
#else
|
||||
modeInfo.cb = sizeof(modeInfo);
|
||||
|
||||
/* set most parameters of modeInfo */
|
||||
|
||||
VioGetMode(&modeInfo, 0);
|
||||
modeInfo.fbType = 1;
|
||||
modeInfo.row = nlines;
|
||||
modeInfo.col = ncols;
|
||||
result = VioSetMode(&modeInfo, 0);
|
||||
|
||||
LINES = PDC_get_rows();
|
||||
COLS = PDC_get_columns();
|
||||
|
||||
return (result == 0) ? OK : ERR;
|
||||
#endif
|
||||
}
|
||||
|
||||
void PDC_reset_prog_mode(void)
|
||||
{
|
||||
PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
PDC_set_keyboard_binary(TRUE);
|
||||
#endif
|
||||
}
|
||||
|
||||
void PDC_reset_shell_mode(void)
|
||||
{
|
||||
PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
PDC_set_keyboard_default();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef EMXVIDEO
|
||||
|
||||
static bool _screen_mode_equals(VIOMODEINFO *oldmode)
|
||||
{
|
||||
VIOMODEINFO current = {0};
|
||||
|
||||
VioGetMode(¤t, 0);
|
||||
|
||||
return ((current.cb == oldmode->cb) &&
|
||||
(current.fbType == oldmode->fbType) &&
|
||||
(current.color == oldmode->color) &&
|
||||
(current.col == oldmode->col) &&
|
||||
(current.row == oldmode->row) &&
|
||||
(current.hres == oldmode->vres) &&
|
||||
(current.vres == oldmode->vres));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void PDC_restore_screen_mode(int i)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
if (i >= 0 && i <= 2)
|
||||
{
|
||||
pdc_font = _get_font();
|
||||
_set_font(saved_font[i]);
|
||||
|
||||
if (!_screen_mode_equals(&saved_scrnmode[i]))
|
||||
if (VioSetMode(&saved_scrnmode[i], 0) != 0)
|
||||
{
|
||||
pdc_font = _get_font();
|
||||
scrnmode = saved_scrnmode[i];
|
||||
LINES = PDC_get_rows();
|
||||
COLS = PDC_get_columns();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void PDC_save_screen_mode(int i)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
if (i >= 0 && i <= 2)
|
||||
{
|
||||
saved_font[i] = pdc_font;
|
||||
saved_scrnmode[i] = scrnmode;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void PDC_init_pair(short pair, short fg, short bg)
|
||||
{
|
||||
unsigned char att, temp_bg;
|
||||
chtype i;
|
||||
|
||||
fg = curstoreal[fg];
|
||||
bg = curstoreal[bg];
|
||||
|
||||
for (i = 0; i < PDC_OFFSET; i++)
|
||||
{
|
||||
att = fg | (bg << 4);
|
||||
|
||||
if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
|
||||
att = bg | (fg << 4);
|
||||
if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
|
||||
att = 1;
|
||||
if (i & (A_INVIS >> PDC_ATTR_SHIFT))
|
||||
{
|
||||
temp_bg = att >> 4;
|
||||
att = temp_bg << 4 | temp_bg;
|
||||
}
|
||||
if (i & (A_BOLD >> PDC_ATTR_SHIFT))
|
||||
att |= 8;
|
||||
if (i & (A_BLINK >> PDC_ATTR_SHIFT))
|
||||
att |= 128;
|
||||
|
||||
pdc_atrtab[pair * PDC_OFFSET + i] = att;
|
||||
}
|
||||
}
|
||||
|
||||
int PDC_pair_content(short pair, short *fg, short *bg)
|
||||
{
|
||||
*fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
|
||||
*bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
bool PDC_can_change_color(void)
|
||||
{
|
||||
return can_change;
|
||||
}
|
||||
|
||||
int PDC_color_content(short color, short *red, short *green, short *blue)
|
||||
{
|
||||
#ifdef PDCTHUNK
|
||||
THUNKEDVIO vcr;
|
||||
USHORT palbuf[4];
|
||||
unsigned char pal[3];
|
||||
int rc;
|
||||
|
||||
/* Read single DAC register */
|
||||
|
||||
palbuf[0] = 8;
|
||||
palbuf[1] = 0;
|
||||
palbuf[2] = curstoreal[color];
|
||||
|
||||
rc = VioGetState(&palbuf, 0);
|
||||
if (rc)
|
||||
return ERR;
|
||||
|
||||
vcr.cb = sizeof(vcr);
|
||||
vcr.type = 3;
|
||||
vcr.firstcolorreg = palbuf[3];
|
||||
vcr.numcolorregs = 1;
|
||||
vcr.colorregaddr = PDCTHUNK(pal);
|
||||
|
||||
rc = VioGetState(&vcr, 0);
|
||||
if (rc)
|
||||
return ERR;
|
||||
|
||||
/* Scale and store */
|
||||
|
||||
*red = DIVROUND((unsigned)(pal[0]) * 1000, 63);
|
||||
*green = DIVROUND((unsigned)(pal[1]) * 1000, 63);
|
||||
*blue = DIVROUND((unsigned)(pal[2]) * 1000, 63);
|
||||
|
||||
return OK;
|
||||
#else
|
||||
return ERR;
|
||||
#endif
|
||||
}
|
||||
|
||||
int PDC_init_color(short color, short red, short green, short blue)
|
||||
{
|
||||
#ifdef PDCTHUNK
|
||||
THUNKEDVIO vcr;
|
||||
USHORT palbuf[4];
|
||||
unsigned char pal[3];
|
||||
int rc;
|
||||
|
||||
/* Scale */
|
||||
|
||||
pal[0] = DIVROUND((unsigned)red * 63, 1000);
|
||||
pal[1] = DIVROUND((unsigned)green * 63, 1000);
|
||||
pal[2] = DIVROUND((unsigned)blue * 63, 1000);
|
||||
|
||||
/* Set single DAC register */
|
||||
|
||||
palbuf[0] = 8;
|
||||
palbuf[1] = 0;
|
||||
palbuf[2] = curstoreal[color];
|
||||
|
||||
rc = VioGetState(&palbuf, 0);
|
||||
if (rc)
|
||||
return ERR;
|
||||
|
||||
vcr.cb = sizeof(vcr);
|
||||
vcr.type = 3;
|
||||
vcr.firstcolorreg = palbuf[3];
|
||||
vcr.numcolorregs = 1;
|
||||
vcr.colorregaddr = PDCTHUNK(pal);
|
||||
|
||||
rc = VioSetState(&vcr, 0);
|
||||
|
||||
return rc ? ERR : OK;
|
||||
#else
|
||||
return ERR;
|
||||
#endif
|
||||
}
|
110
payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c
Normal file
110
payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c
Normal file
@ -0,0 +1,110 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcsetsc.c,v 1.44 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
/*man-start**************************************************************
|
||||
|
||||
Name: pdcsetsc
|
||||
|
||||
Synopsis:
|
||||
int PDC_set_blink(bool blinkon);
|
||||
void PDC_set_title(const char *title);
|
||||
|
||||
Description:
|
||||
PDC_set_blink() toggles whether the A_BLINK attribute sets an
|
||||
actual blink mode (TRUE), or sets the background color to high
|
||||
intensity (FALSE). The default is platform-dependent (FALSE in
|
||||
most cases). It returns OK if it could set the state to match
|
||||
the given parameter, ERR otherwise. Current platforms also
|
||||
adjust the value of COLORS according to this function -- 16 for
|
||||
FALSE, and 8 for TRUE.
|
||||
|
||||
PDC_set_title() sets the title of the window in which the curses
|
||||
program is running. This function may not do anything on some
|
||||
platforms. (Currently it only works in Win32 and X11.)
|
||||
|
||||
Portability X/Open BSD SYS V
|
||||
PDC_set_blink - - -
|
||||
PDC_set_title - - -
|
||||
|
||||
**man-end****************************************************************/
|
||||
|
||||
int PDC_curs_set(int visibility)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
VIOCURSORINFO pvioCursorInfo;
|
||||
#endif
|
||||
int ret_vis, hidden = 0, start = 0, end = 0;
|
||||
|
||||
PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
|
||||
|
||||
ret_vis = SP->visibility;
|
||||
SP->visibility = visibility;
|
||||
|
||||
switch(visibility)
|
||||
{
|
||||
case 0: /* invisible */
|
||||
#ifdef EMXVIDEO
|
||||
start = end = 0;
|
||||
#else
|
||||
start = pdc_font / 4;
|
||||
end = pdc_font;
|
||||
hidden = -1;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 2: /* highly visible */
|
||||
start = 2; /* almost full-height block */
|
||||
end = pdc_font - 1;
|
||||
break;
|
||||
|
||||
default: /* normal visibility */
|
||||
start = (SP->orig_cursor >> 8) & 0xff;
|
||||
end = SP->orig_cursor & 0xff;
|
||||
}
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
if (!visibility)
|
||||
v_hidecursor();
|
||||
else
|
||||
v_ctype(start, end);
|
||||
#else
|
||||
pvioCursorInfo.yStart = (USHORT)start;
|
||||
pvioCursorInfo.cEnd = (USHORT)end;
|
||||
pvioCursorInfo.cx = (USHORT)1;
|
||||
pvioCursorInfo.attr = hidden;
|
||||
VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0);
|
||||
#endif
|
||||
return ret_vis;
|
||||
}
|
||||
|
||||
void PDC_set_title(const char *title)
|
||||
{
|
||||
PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
|
||||
}
|
||||
|
||||
int PDC_set_blink(bool blinkon)
|
||||
{
|
||||
#ifndef EMXVIDEO
|
||||
USHORT statebuf[3], result;
|
||||
|
||||
statebuf[0] = 6; /* length */
|
||||
statebuf[1] = 2; /* blink/intensity */
|
||||
statebuf[2] = !blinkon;
|
||||
|
||||
result = VioSetState(&statebuf, 0);
|
||||
VioGetState(&statebuf, 0); /* needed? */
|
||||
|
||||
if (pdc_color_started)
|
||||
COLORS = statebuf[2] ? 16 : 8;
|
||||
|
||||
return (result == 0) ? OK : ERR;
|
||||
#else
|
||||
if (pdc_color_started)
|
||||
COLORS = 16;
|
||||
|
||||
return blinkon ? ERR : OK;
|
||||
#endif
|
||||
}
|
36
payloads/libpayload/curses/PDCurses/os2/pdcutil.c
Normal file
36
payloads/libpayload/curses/PDCurses/os2/pdcutil.c
Normal file
@ -0,0 +1,36 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include "pdcos2.h"
|
||||
|
||||
RCSID("$Id: pdcutil.c,v 1.14 2008/07/14 04:24:51 wmcbrine Exp $")
|
||||
|
||||
#if defined(OS2) && !defined(__EMX__)
|
||||
APIRET APIENTRY DosSleep(ULONG ulTime);
|
||||
#endif
|
||||
|
||||
void PDC_beep(void)
|
||||
{
|
||||
PDC_LOG(("PDC_beep() - called\n"));
|
||||
|
||||
#ifdef EMXVIDEO
|
||||
putchar('\007');
|
||||
#else
|
||||
DosBeep(1380, 100);
|
||||
#endif
|
||||
}
|
||||
|
||||
void PDC_napms(int ms)
|
||||
{
|
||||
PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
|
||||
|
||||
#ifdef __EMX__
|
||||
_sleep2(ms);
|
||||
#else
|
||||
DosSleep(ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *PDC_sysname(void)
|
||||
{
|
||||
return "OS/2";
|
||||
}
|
43
payloads/libpayload/curses/PDCurses/os2/wccos2.mak
Normal file
43
payloads/libpayload/curses/PDCurses/os2/wccos2.mak
Normal file
@ -0,0 +1,43 @@
|
||||
# Watcom WMAKE Makefile for PDCurses library - OS/2 Open Watcom 1.1+
|
||||
#
|
||||
# Usage: wmake -f [path\]wccos2.mak [DEBUG=Y] [target]
|
||||
#
|
||||
# where target can be any of:
|
||||
# [all|demos|pdcurses.lib|testcurs.exe...]
|
||||
|
||||
!ifdef %PDCURSES_SRCDIR
|
||||
PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
|
||||
!else
|
||||
PDCURSES_SRCDIR = ..
|
||||
!endif
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\version.mif
|
||||
|
||||
osdir = $(PDCURSES_SRCDIR)\os2
|
||||
|
||||
CC = wcc386
|
||||
TARGET = os2v2
|
||||
|
||||
CFLAGS = /bt=$(TARGET) /wx /s /zq /i=$(PDCURSES_SRCDIR)
|
||||
|
||||
!ifeq DEBUG Y
|
||||
CFLAGS += /d2 /DPDCDEBUG
|
||||
LDFLAGS = D A op q sys $(TARGET)
|
||||
!else
|
||||
CFLAGS += /oneatx
|
||||
LDFLAGS = op q sys $(TARGET)
|
||||
!endif
|
||||
|
||||
LIBEXE = wlib /q /n /b /c /t
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\watcom.mif
|
||||
|
||||
$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
|
||||
$(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
|
||||
-copy $(LIBCURSES) panel.lib
|
||||
|
||||
PLATFORM1 = Watcom C++ OS/2
|
||||
PLATFORM2 = Open Watcom 1.6 for OS/2
|
||||
ARCNAME = pdc$(VER)_wcc_os2
|
||||
|
||||
!include $(PDCURSES_SRCDIR)\makedist.mif
|
Reference in New Issue
Block a user