curses 1.6.0 → 1.7.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/.devcontainer/Dockerfile +132 -0
- data/.devcontainer/devcontainer.json +58 -0
- data/.devcontainer/init-firewall.sh +139 -0
- data/.github/workflows/gh-pages.yml +4 -4
- data/.github/workflows/macos.yml +5 -2
- data/.github/workflows/push_gem.yml +7 -2
- data/.github/workflows/ubuntu.yml +5 -2
- data/.github/workflows/windows.yml +5 -2
- data/.gitmodules +3 -3
- data/README.md +2 -2
- data/curses.gemspec +1 -1
- data/ext/curses/extconf.rb +5 -2
- data/lib/curses.rb +1 -1
- data/vendor/PDCursesMod/.github/workflows/github_actions_build.yml +42 -0
- data/vendor/PDCursesMod/.gitignore +47 -0
- data/vendor/PDCursesMod/.travis.yml +308 -0
- data/vendor/PDCursesMod/CMakeLists.txt +77 -0
- data/vendor/PDCursesMod/README.md +60 -0
- data/vendor/PDCursesMod/appveyor.yml +300 -0
- data/vendor/PDCursesMod/cmake/README.md +71 -0
- data/vendor/PDCursesMod/cmake/build_dependencies.cmake +186 -0
- data/vendor/PDCursesMod/cmake/build_options.cmake +29 -0
- data/vendor/PDCursesMod/cmake/dll_version.cmake +24 -0
- data/vendor/PDCursesMod/cmake/gen_config_header.cmake +40 -0
- data/vendor/PDCursesMod/cmake/get_version.cmake +17 -0
- data/vendor/PDCursesMod/cmake/project_common.cmake +131 -0
- data/vendor/PDCursesMod/cmake/sdl2_ttf/CMakeLists.txt +95 -0
- data/vendor/PDCursesMod/cmake/version.in.cmake +61 -0
- data/vendor/PDCursesMod/cmake/watcom_open_dos16_toolchain.cmake +90 -0
- data/vendor/PDCursesMod/cmake/watcom_open_dos32_toolchain.cmake +89 -0
- data/vendor/PDCursesMod/cmake/watcom_open_os2v2_toolchain.cmake +88 -0
- data/vendor/PDCursesMod/cmake/watcom_open_win32_toolchain.cmake +12 -0
- data/vendor/PDCursesMod/common/acs_defs.h +288 -0
- data/vendor/PDCursesMod/common/approx.c +163 -0
- data/vendor/PDCursesMod/common/beep.c +70 -0
- data/vendor/PDCursesMod/common/blink.c +90 -0
- data/vendor/PDCursesMod/common/config_curses.c +134 -0
- data/vendor/PDCursesMod/common/dos_key.h +59 -0
- data/vendor/PDCursesMod/common/dosutil.c +136 -0
- data/vendor/PDCursesMod/common/font437.h +386 -0
- data/vendor/PDCursesMod/common/icon32.xpm +42 -0
- data/vendor/PDCursesMod/common/icon64.xpm +74 -0
- data/vendor/PDCursesMod/common/iconbmp.h +24 -0
- data/vendor/PDCursesMod/common/libobjs.mif +32 -0
- data/vendor/PDCursesMod/common/mouse.c +293 -0
- data/vendor/PDCursesMod/common/pdcclip.c +135 -0
- data/vendor/PDCursesMod/common/pdccolor.c +223 -0
- data/vendor/PDCursesMod/common/pdccolor.h +17 -0
- data/vendor/PDCursesMod/common/pdccolor.txt +81 -0
- data/vendor/PDCursesMod/common/pdcurses.rc +35 -0
- data/vendor/PDCursesMod/common/psf.c +250 -0
- data/vendor/PDCursesMod/common/psf.h +13 -0
- data/vendor/PDCursesMod/common/psf_wide.h +584 -0
- data/vendor/PDCursesMod/common/watcom.mif +224 -0
- data/vendor/PDCursesMod/common/winclip.c +151 -0
- data/vendor/PDCursesMod/common/xlates.h +142 -0
- data/vendor/PDCursesMod/curses.h +1972 -0
- data/vendor/PDCursesMod/curspriv.h +295 -0
- data/vendor/PDCursesMod/demos/UTF-8-demo.txt +225 -0
- data/vendor/PDCursesMod/demos/calendar.c +278 -0
- data/vendor/PDCursesMod/demos/curses.priv.h +37 -0
- data/vendor/PDCursesMod/demos/dates.txt +2576 -0
- data/vendor/PDCursesMod/demos/firework.c +149 -0
- data/vendor/PDCursesMod/demos/init_col.c +152 -0
- data/vendor/PDCursesMod/demos/mbrot.c +366 -0
- data/vendor/PDCursesMod/demos/nctests.mif +299 -0
- data/vendor/PDCursesMod/demos/ncurses_cfg.h +100 -0
- data/vendor/PDCursesMod/demos/newtest.c +608 -0
- data/vendor/PDCursesMod/demos/ozdemo.c +444 -0
- data/vendor/PDCursesMod/demos/picsview.c +516 -0
- data/vendor/PDCursesMod/demos/ptest.c +315 -0
- data/vendor/PDCursesMod/demos/rain.c +161 -0
- data/vendor/PDCursesMod/demos/snprintf.c +30 -0
- data/vendor/PDCursesMod/demos/speed.c +124 -0
- data/vendor/PDCursesMod/demos/test_pan.c +372 -0
- data/vendor/PDCursesMod/demos/testcurs.c +1978 -0
- data/vendor/PDCursesMod/demos/tui.c +816 -0
- data/vendor/PDCursesMod/demos/tui.h +65 -0
- data/vendor/PDCursesMod/demos/tuidemo.c +231 -0
- data/vendor/PDCursesMod/demos/version.c +66 -0
- data/vendor/PDCursesMod/demos/widetest.c +130 -0
- data/vendor/PDCursesMod/demos/worm.c +450 -0
- data/vendor/PDCursesMod/demos/xmas.c +955 -0
- data/vendor/PDCursesMod/docs/HISTORY.md +3850 -0
- data/vendor/PDCursesMod/docs/IMPLEMNT.md +321 -0
- data/vendor/PDCursesMod/docs/MANUAL.md +3304 -0
- data/vendor/PDCursesMod/docs/README.md +51 -0
- data/vendor/PDCursesMod/docs/USERS.md +451 -0
- data/vendor/PDCursesMod/docs/manext.awk +15 -0
- data/vendor/PDCursesMod/docs/mkman.sh +7 -0
- data/vendor/PDCursesMod/dos/CMakeLists.txt +54 -0
- data/vendor/PDCursesMod/dos/Makefile +85 -0
- data/vendor/PDCursesMod/dos/Makefile.bcc +81 -0
- data/vendor/PDCursesMod/dos/Makefile.dmc +315 -0
- data/vendor/PDCursesMod/dos/Makefile.wcc +44 -0
- data/vendor/PDCursesMod/dos/README.md +49 -0
- data/vendor/PDCursesMod/dos/pdcclip.c +1 -0
- data/vendor/PDCursesMod/dos/pdcdisp.c +164 -0
- data/vendor/PDCursesMod/dos/pdcdos.h +173 -0
- data/vendor/PDCursesMod/dos/pdcgetsc.c +81 -0
- data/vendor/PDCursesMod/dos/pdckbd.c +428 -0
- data/vendor/PDCursesMod/dos/pdcscrn.c +707 -0
- data/vendor/PDCursesMod/dos/pdcsetsc.c +120 -0
- data/vendor/PDCursesMod/dos/pdcutil.c +11 -0
- data/vendor/PDCursesMod/dosvga/CMakeLists.txt +54 -0
- data/vendor/PDCursesMod/dosvga/Makefile +109 -0
- data/vendor/PDCursesMod/dosvga/Makefile.bcc +82 -0
- data/vendor/PDCursesMod/dosvga/Makefile.dmc +318 -0
- data/vendor/PDCursesMod/dosvga/Makefile.wcc +40 -0
- data/vendor/PDCursesMod/dosvga/README.md +58 -0
- data/vendor/PDCursesMod/dosvga/cp437.h +184 -0
- data/vendor/PDCursesMod/dosvga/font.h +454 -0
- data/vendor/PDCursesMod/dosvga/hexize.c +45 -0
- data/vendor/PDCursesMod/dosvga/mk_font.c +35 -0
- data/vendor/PDCursesMod/dosvga/pdcclip.c +1 -0
- data/vendor/PDCursesMod/dosvga/pdcdisp.c +684 -0
- data/vendor/PDCursesMod/dosvga/pdcdos.h +201 -0
- data/vendor/PDCursesMod/dosvga/pdcgetsc.c +47 -0
- data/vendor/PDCursesMod/dosvga/pdckbd.c +484 -0
- data/vendor/PDCursesMod/dosvga/pdcscrn.c +1693 -0
- data/vendor/PDCursesMod/dosvga/pdcsetsc.c +79 -0
- data/vendor/PDCursesMod/dosvga/pdcutil.c +13 -0
- data/vendor/PDCursesMod/dosvga/pdcvesa.h +88 -0
- data/vendor/PDCursesMod/fb/Makefile +150 -0
- data/vendor/PDCursesMod/fb/README.md +52 -0
- data/vendor/PDCursesMod/fb/cursor.c +111 -0
- data/vendor/PDCursesMod/fb/drm.c +264 -0
- data/vendor/PDCursesMod/fb/pdcclip.c +1 -0
- data/vendor/PDCursesMod/fb/pdcdisp.c +521 -0
- data/vendor/PDCursesMod/fb/pdcfb.h +11 -0
- data/vendor/PDCursesMod/fb/pdcgetsc.c +1 -0
- data/vendor/PDCursesMod/fb/pdckbd.c +114 -0
- data/vendor/PDCursesMod/fb/pdcmouse.c +185 -0
- data/vendor/PDCursesMod/fb/pdcscrn.c +539 -0
- data/vendor/PDCursesMod/fb/pdcsetsc.c +3 -0
- data/vendor/PDCursesMod/fb/pdcutil.c +5 -0
- data/vendor/PDCursesMod/gl/CMakeLists.txt +66 -0
- data/vendor/PDCursesMod/gl/Makefile +188 -0
- data/vendor/PDCursesMod/gl/Makefile.vc +129 -0
- data/vendor/PDCursesMod/gl/README.md +134 -0
- data/vendor/PDCursesMod/gl/glfuncs.h +159 -0
- data/vendor/PDCursesMod/gl/pdcclip.c +93 -0
- data/vendor/PDCursesMod/gl/pdcdisp.c +867 -0
- data/vendor/PDCursesMod/gl/pdcgetsc.c +30 -0
- data/vendor/PDCursesMod/gl/pdcgl.h +51 -0
- data/vendor/PDCursesMod/gl/pdckbd.c +548 -0
- data/vendor/PDCursesMod/gl/pdcscrn.c +700 -0
- data/vendor/PDCursesMod/gl/pdcsetsc.c +99 -0
- data/vendor/PDCursesMod/gl/pdcutil.c +35 -0
- data/vendor/PDCursesMod/ncurses/CMakeLists.txt +76 -0
- data/vendor/PDCursesMod/ncurses/Makefile +38 -0
- data/vendor/PDCursesMod/os2/Makefile +150 -0
- data/vendor/PDCursesMod/os2/Makefile.bcc +85 -0
- data/vendor/PDCursesMod/os2/Makefile.wcc +26 -0
- data/vendor/PDCursesMod/os2/iccos2.lrf +49 -0
- data/vendor/PDCursesMod/os2/iccos2.mak +260 -0
- data/vendor/PDCursesMod/os2/pdcclip.c +172 -0
- data/vendor/PDCursesMod/os2/pdcdisp.c +130 -0
- data/vendor/PDCursesMod/os2/pdcgetsc.c +52 -0
- data/vendor/PDCursesMod/os2/pdckbd.c +435 -0
- data/vendor/PDCursesMod/os2/pdcos2.h +21 -0
- data/vendor/PDCursesMod/os2/pdcscrn.c +231 -0
- data/vendor/PDCursesMod/os2/pdcsetsc.c +110 -0
- data/vendor/PDCursesMod/os2/pdcutil.c +51 -0
- data/vendor/PDCursesMod/os2gui/.gitignore +1 -0
- data/vendor/PDCursesMod/os2gui/CMakeLists.txt +30 -0
- data/vendor/PDCursesMod/os2gui/Makefile +139 -0
- data/vendor/PDCursesMod/os2gui/Makefile.wcc +32 -0
- data/vendor/PDCursesMod/os2gui/README.md +69 -0
- data/vendor/PDCursesMod/os2gui/pdcclip.c +165 -0
- data/vendor/PDCursesMod/os2gui/pdcdisp.c +2021 -0
- data/vendor/PDCursesMod/os2gui/pdcgetsc.c +26 -0
- data/vendor/PDCursesMod/os2gui/pdckbd.c +79 -0
- data/vendor/PDCursesMod/os2gui/pdcscrn.c +2433 -0
- data/vendor/PDCursesMod/os2gui/pdcsetsc.c +115 -0
- data/vendor/PDCursesMod/os2gui/pdcutil.c +42 -0
- data/vendor/PDCursesMod/os2gui/pdcwin.h +106 -0
- data/vendor/PDCursesMod/os2gui/table.py +112 -0
- data/vendor/PDCursesMod/os2gui/unitable.h +3933 -0
- data/vendor/PDCursesMod/panel.h +41 -0
- data/vendor/PDCursesMod/pdcurses/addch.c +838 -0
- data/vendor/PDCursesMod/pdcurses/addchstr.c +232 -0
- data/vendor/PDCursesMod/pdcurses/addstr.c +245 -0
- data/vendor/PDCursesMod/pdcurses/attr.c +430 -0
- data/vendor/PDCursesMod/pdcurses/beep.c +78 -0
- data/vendor/PDCursesMod/pdcurses/bkgd.c +233 -0
- data/vendor/PDCursesMod/pdcurses/border.c +413 -0
- data/vendor/PDCursesMod/pdcurses/clear.c +161 -0
- data/vendor/PDCursesMod/pdcurses/color.c +761 -0
- data/vendor/PDCursesMod/pdcurses/debug.c +157 -0
- data/vendor/PDCursesMod/pdcurses/delch.c +96 -0
- data/vendor/PDCursesMod/pdcurses/deleteln.c +149 -0
- data/vendor/PDCursesMod/pdcurses/getch.c +871 -0
- data/vendor/PDCursesMod/pdcurses/getstr.c +487 -0
- data/vendor/PDCursesMod/pdcurses/getyx.c +152 -0
- data/vendor/PDCursesMod/pdcurses/inch.c +133 -0
- data/vendor/PDCursesMod/pdcurses/inchstr.c +217 -0
- data/vendor/PDCursesMod/pdcurses/initscr.c +524 -0
- data/vendor/PDCursesMod/pdcurses/inopts.c +490 -0
- data/vendor/PDCursesMod/pdcurses/insch.c +273 -0
- data/vendor/PDCursesMod/pdcurses/insstr.c +268 -0
- data/vendor/PDCursesMod/pdcurses/instr.c +253 -0
- data/vendor/PDCursesMod/pdcurses/kernel.c +338 -0
- data/vendor/PDCursesMod/pdcurses/keyname.c +149 -0
- data/vendor/PDCursesMod/pdcurses/mouse.c +469 -0
- data/vendor/PDCursesMod/pdcurses/move.c +84 -0
- data/vendor/PDCursesMod/pdcurses/outopts.c +283 -0
- data/vendor/PDCursesMod/pdcurses/overlay.c +204 -0
- data/vendor/PDCursesMod/pdcurses/pad.c +303 -0
- data/vendor/PDCursesMod/pdcurses/pairs.txt +94 -0
- data/vendor/PDCursesMod/pdcurses/panel.c +551 -0
- data/vendor/PDCursesMod/pdcurses/printw.c +180 -0
- data/vendor/PDCursesMod/pdcurses/refresh.c +372 -0
- data/vendor/PDCursesMod/pdcurses/scanw.c +582 -0
- data/vendor/PDCursesMod/pdcurses/scr_dump.c +311 -0
- data/vendor/PDCursesMod/pdcurses/scroll.c +115 -0
- data/vendor/PDCursesMod/pdcurses/slk.c +660 -0
- data/vendor/PDCursesMod/pdcurses/termattr.c +177 -0
- data/vendor/PDCursesMod/pdcurses/terminfo.c +243 -0
- data/vendor/PDCursesMod/pdcurses/touch.c +255 -0
- data/vendor/PDCursesMod/pdcurses/util.c +502 -0
- data/vendor/PDCursesMod/pdcurses/window.c +708 -0
- data/vendor/PDCursesMod/plan9/README.md +57 -0
- data/vendor/PDCursesMod/plan9/header.patch +11 -0
- data/vendor/PDCursesMod/plan9/mkfile +103 -0
- data/vendor/PDCursesMod/plan9/mkfile_demo +42 -0
- data/vendor/PDCursesMod/plan9/pdcclip.c +1 -0
- data/vendor/PDCursesMod/plan9/pdcdisp.c +62 -0
- data/vendor/PDCursesMod/plan9/pdcgetsc.c +28 -0
- data/vendor/PDCursesMod/plan9/pdckbd.c +53 -0
- data/vendor/PDCursesMod/plan9/pdcplan9.h +10 -0
- data/vendor/PDCursesMod/plan9/pdcscrn.c +103 -0
- data/vendor/PDCursesMod/plan9/pdcsetsc.c +51 -0
- data/vendor/PDCursesMod/plan9/pdcutil.c +370 -0
- data/vendor/PDCursesMod/psffonts/10x20.psf +0 -0
- data/vendor/PDCursesMod/psffonts/18x18.psf +0 -0
- data/vendor/PDCursesMod/psffonts/4x6.psf +0 -0
- data/vendor/PDCursesMod/psffonts/6x12.psf +0 -0
- data/vendor/PDCursesMod/psffonts/8x13.psf +0 -0
- data/vendor/PDCursesMod/psffonts/9x15.psf +0 -0
- data/vendor/PDCursesMod/psffonts/9x18.psf +0 -0
- data/vendor/PDCursesMod/psffonts/README +38 -0
- data/vendor/PDCursesMod/psffonts/README.md +14 -0
- data/vendor/PDCursesMod/psffonts/bmp2psf2.c +130 -0
- data/vendor/PDCursesMod/psffonts/cour11x17.psf +0 -0
- data/vendor/PDCursesMod/psffonts/cour20x29.psf +0 -0
- data/vendor/PDCursesMod/psffonts/default.psf +0 -0
- data/vendor/PDCursesMod/psffonts/dosemu.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/2_hebrew-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/README +285 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/antique-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/apls-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/arabdrft-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/arabic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/arabkufi-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/arabnaf-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/arbnaskh-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/armenian-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/armenian-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/armenian-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/art-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/ascii-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/backward-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bdeclo-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bhexall-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bhexbox-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bhexhi-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bhexlo-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bigserif-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bigserif-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bigsf-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/binaryed-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/blcksnsf-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/block-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bold-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/boxround-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/boxround-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/broadway-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bthin-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/bway2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cafe-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cafe-12.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cntdown-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cntdown-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/computer-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/copyleft.txt +209 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/courier-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp111-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp111-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp111-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp111-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp112-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp112-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp112-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp112-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp113-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp113-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp113-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp113-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437alt-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp437bgr-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp850-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp850-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp850-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp850-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp851-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp851-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp851-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp851-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp852-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp852-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp852-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp852-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp853-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp853-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp853-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp853-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp860-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp860-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp860-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp860-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp861-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp861-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp861-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp861-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp862-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp862-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp862-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp863-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp863-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp863-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp863-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp864-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp864-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp864-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp865-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp865-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp865-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp865-19.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp866-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp866-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp866-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp880-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp880-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp880-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp881-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp881-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp881-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp882-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp882-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp882-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp883-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp883-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp883-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp884-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp884-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp884-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp885-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp885-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cp885-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyril2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyril_b-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/cyrillic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/decorate-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/draw-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/drawhi-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/europe-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-09.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-11.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-12.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-13.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/farsi-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/finnish-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/fontorig.txt +308 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/fractur-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/future-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/gaelic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/gaelic1-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/georgian-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek-06.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek-07.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek1-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/greek2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hack4th-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/handugly-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/handwrit-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/handwrit-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-7bit-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-big-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-bold-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-ktab-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-med-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heb-snsf-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebboldk-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebclrgf-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebktav1-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebktav2-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heblarge-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/heblarge-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebrew-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebugly-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hebyogi-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hercital-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hercules-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hercules-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hercules-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/history.txt +45 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hollow-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hrkgreek-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/hylas-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/icons-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/inverted-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/iso-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/iso2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/iso3-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/iso4-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/italics-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/kana-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/kana-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lb_large-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lb_misc-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lb_ocr-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lb_ocr-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lbarabic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lbitalic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lbitalic-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lbscript-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/lcd-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/mac-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/macntosh-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/macntosh-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/madrid-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/medieval-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/modern-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/norway-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/norway2-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/old-engl-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/old-engl-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/oldeng-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/oldeng-f-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/pc_6-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/pc_7-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/persian-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/persian-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/police-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/polish-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/polish1-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/pp_roman-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/pp_sser-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/readabl7-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/readabl8-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/readable-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/readable-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/reverse-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/rimrock-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/rmrkbold-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/rom8pix-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/roman-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/roman-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/runic-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/russian-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/russian-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/russian-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/russian1-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/sanserif-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/sanserif-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/script-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/scrwl----16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/scrwl~~~-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/security-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/side-10.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/slant-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/smalcaps-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/smcapnum-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/spranto-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/spranto1-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/spranto2-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/square-12.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/standard-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/standard-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/stretch-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/subsup-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/super-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/swiss-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/swiss-av-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/swissav2-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/swissbox-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/swissbx2-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/tex-math-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/tex-math-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thai-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thinasci-07.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thincaps-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thindemo-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/thinscrp-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/turkish-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/urdu-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-08.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/voynich-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/wiggly-16.psf +0 -0
- data/vendor/PDCursesMod/psffonts/fntcol16/yugosla-14.psf +0 -0
- data/vendor/PDCursesMod/psffonts/lc12x20.psf +0 -0
- data/vendor/PDCursesMod/psffonts/makefile +2 -0
- data/vendor/PDCursesMod/psffonts/mappings/8859-3.TXT +285 -0
- data/vendor/PDCursesMod/psffonts/mappings/APL-ISO-IR-68.TXT +273 -0
- data/vendor/PDCursesMod/psffonts/mappings/ATARIST.TXT +320 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1006.TXT +302 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1250.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1251.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1252.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1253.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1254.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1255.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1256.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1257.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP1258.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP424.TXT +304 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP437.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP737.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP775.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP850.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP851.TXT +276 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP852.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP855.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP856.TXT +303 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP857.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP860.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP861.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP862.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP863.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP864.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP865.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP866.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP869.TXT +275 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP874.TXT +274 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP932.TXT +7998 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP936.TXT +22065 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP949.TXT +17322 -0
- data/vendor/PDCursesMod/psffonts/mappings/CP950.TXT +13777 -0
- data/vendor/PDCursesMod/psffonts/mappings/IBMGRAPH.TXT +99 -0
- data/vendor/PDCursesMod/psffonts/mappings/KOI8-R.TXT +294 -0
- data/vendor/PDCursesMod/psffonts/mappings/KOI8-U.TXT +301 -0
- data/vendor/PDCursesMod/psffonts/mappings/KPS9566.TXT +17166 -0
- data/vendor/PDCursesMod/psffonts/mappings/KZ1048.TXT +294 -0
- data/vendor/PDCursesMod/psffonts/mappings/ReadMe.txt +20 -0
- data/vendor/PDCursesMod/psffonts/mappings/SGML.TXT +1041 -0
- data/vendor/PDCursesMod/psffonts/medieval2.psf +0 -0
- data/vendor/PDCursesMod/psffonts/vga11x19.psf +0 -0
- data/vendor/PDCursesMod/sdl1/Makefile +140 -0
- data/vendor/PDCursesMod/sdl1/README.md +200 -0
- data/vendor/PDCursesMod/sdl1/pdcclip.c +1 -0
- data/vendor/PDCursesMod/sdl1/pdcdisp.c +462 -0
- data/vendor/PDCursesMod/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCursesMod/sdl1/pdckbd.c +417 -0
- data/vendor/PDCursesMod/sdl1/pdcscrn.c +396 -0
- data/vendor/PDCursesMod/sdl1/pdcsdl.h +34 -0
- data/vendor/PDCursesMod/sdl1/pdcsetsc.c +99 -0
- data/vendor/PDCursesMod/sdl1/pdcutil.c +34 -0
- data/vendor/PDCursesMod/sdl1/sdltest.c +79 -0
- data/vendor/PDCursesMod/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCursesMod/sdl2/Makefile +207 -0
- data/vendor/PDCursesMod/sdl2/Makefile.vc +132 -0
- data/vendor/PDCursesMod/sdl2/README.md +215 -0
- data/vendor/PDCursesMod/sdl2/pdcclip.c +93 -0
- data/vendor/PDCursesMod/sdl2/pdcdisp.c +536 -0
- data/vendor/PDCursesMod/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCursesMod/sdl2/pdckbd.c +540 -0
- data/vendor/PDCursesMod/sdl2/pdcscrn.c +529 -0
- data/vendor/PDCursesMod/sdl2/pdcsdl.h +46 -0
- data/vendor/PDCursesMod/sdl2/pdcsetsc.c +99 -0
- data/vendor/PDCursesMod/sdl2/pdcutil.c +35 -0
- data/vendor/PDCursesMod/sdl2/sdltest.c +91 -0
- data/vendor/PDCursesMod/sdl2/versions.mif +2 -0
- data/vendor/PDCursesMod/term.h +48 -0
- data/vendor/PDCursesMod/tests/README.md +16 -0
- data/vendor/PDCursesMod/tests/brk_test.c +42 -0
- data/vendor/PDCursesMod/tests/del_test.c +95 -0
- data/vendor/PDCursesMod/tests/focus.c +53 -0
- data/vendor/PDCursesMod/tests/ins_del.c +108 -0
- data/vendor/PDCursesMod/tests/keytest.c +87 -0
- data/vendor/PDCursesMod/tests/naptest.c +43 -0
- data/vendor/PDCursesMod/tests/opaque.c +42 -0
- data/vendor/PDCursesMod/tests/restart.c +60 -0
- data/vendor/PDCursesMod/tests/ripoff.c +141 -0
- data/vendor/PDCursesMod/tests/show_col.c +55 -0
- data/vendor/PDCursesMod/tests/show_uni.c +163 -0
- data/vendor/PDCursesMod/tests/vt0.c +472 -0
- data/vendor/PDCursesMod/vt/CMakeLists.txt +35 -0
- data/vendor/PDCursesMod/vt/Makefile +204 -0
- data/vendor/PDCursesMod/vt/Makefile.bcc +101 -0
- data/vendor/PDCursesMod/vt/Makefile.dmc +313 -0
- data/vendor/PDCursesMod/vt/Makefile.vc +145 -0
- data/vendor/PDCursesMod/vt/Makefile.wcc +48 -0
- data/vendor/PDCursesMod/vt/README.md +82 -0
- data/vendor/PDCursesMod/vt/pdcclip.c +8 -0
- data/vendor/PDCursesMod/vt/pdcdisp.c +424 -0
- data/vendor/PDCursesMod/vt/pdckbd.c +603 -0
- data/vendor/PDCursesMod/vt/pdcscrn.c +492 -0
- data/vendor/PDCursesMod/vt/pdcsetsc.c +158 -0
- data/vendor/PDCursesMod/vt/pdcutil.c +85 -0
- data/vendor/PDCursesMod/vt/pdcvt.h +25 -0
- data/vendor/PDCursesMod/wincon/CMakeLists.txt +29 -0
- data/vendor/PDCursesMod/wincon/Makefile +190 -0
- data/vendor/PDCursesMod/wincon/Makefile.bcc +87 -0
- data/vendor/PDCursesMod/wincon/Makefile.dmc +275 -0
- data/vendor/PDCursesMod/wincon/Makefile.vc +132 -0
- data/vendor/PDCursesMod/wincon/Makefile.wcc +33 -0
- data/vendor/PDCursesMod/wincon/README.md +76 -0
- data/vendor/PDCursesMod/wincon/pdcclip.c +6 -0
- data/vendor/PDCursesMod/wincon/pdcdisp.c +408 -0
- data/vendor/PDCursesMod/wincon/pdcgetsc.c +42 -0
- data/vendor/PDCursesMod/wincon/pdckbd.c +778 -0
- data/vendor/PDCursesMod/wincon/pdcscrn.c +733 -0
- data/vendor/PDCursesMod/wincon/pdcsetsc.c +130 -0
- data/vendor/PDCursesMod/wincon/pdcutil.c +38 -0
- data/vendor/PDCursesMod/wincon/pdcwin.h +35 -0
- data/vendor/PDCursesMod/wingui/CMakeLists.txt +30 -0
- data/vendor/PDCursesMod/wingui/Makefile +186 -0
- data/vendor/PDCursesMod/wingui/Makefile.bcc +80 -0
- data/vendor/PDCursesMod/wingui/Makefile.dmc +314 -0
- data/vendor/PDCursesMod/wingui/Makefile.vc +144 -0
- data/vendor/PDCursesMod/wingui/Makefile.wcc +32 -0
- data/vendor/PDCursesMod/wingui/README.md +92 -0
- data/vendor/PDCursesMod/wingui/pdcclip.c +6 -0
- data/vendor/PDCursesMod/wingui/pdcdisp.c +576 -0
- data/vendor/PDCursesMod/wingui/pdckbd.c +89 -0
- data/vendor/PDCursesMod/wingui/pdcscrn.c +2235 -0
- data/vendor/PDCursesMod/wingui/pdcsetsc.c +124 -0
- data/vendor/PDCursesMod/wingui/pdcutil.c +44 -0
- data/vendor/PDCursesMod/wingui/pdcwin.h +85 -0
- data/vendor/PDCursesMod/x11/Makefile.in +1047 -0
- data/vendor/PDCursesMod/x11/README.md +227 -0
- data/vendor/PDCursesMod/x11/aclocal.m4 +553 -0
- data/vendor/PDCursesMod/x11/config.guess +1774 -0
- data/vendor/PDCursesMod/x11/config.h.in +37 -0
- data/vendor/PDCursesMod/x11/config.sub +1907 -0
- data/vendor/PDCursesMod/x11/configure +5944 -0
- data/vendor/PDCursesMod/x11/configure.ac +175 -0
- data/vendor/PDCursesMod/x11/pdcclip.c +254 -0
- data/vendor/PDCursesMod/x11/pdcdisp.c +418 -0
- data/vendor/PDCursesMod/x11/pdcgetsc.c +28 -0
- data/vendor/PDCursesMod/x11/pdckbd.c +743 -0
- data/vendor/PDCursesMod/x11/pdcscrn.c +848 -0
- data/vendor/PDCursesMod/x11/pdcsetsc.c +108 -0
- data/vendor/PDCursesMod/x11/pdcutil.c +41 -0
- data/vendor/PDCursesMod/x11/pdcx11.h +82 -0
- data/vendor/PDCursesMod/x11/sb.c +331 -0
- data/vendor/PDCursesMod/x11/scrlbox.c +348 -0
- data/vendor/PDCursesMod/x11/scrlbox.h +47 -0
- data/vendor/PDCursesMod/x11/xcurses-config.in +81 -0
- data/vendor/PDCursesMod/x11new/Makefile +151 -0
- data/vendor/PDCursesMod/x11new/README.md +63 -0
- data/vendor/PDCursesMod/x11new/pdcclip.c +221 -0
- data/vendor/PDCursesMod/x11new/pdcdisp.c +195 -0
- data/vendor/PDCursesMod/x11new/pdcgetsc.c +27 -0
- data/vendor/PDCursesMod/x11new/pdckbd.c +722 -0
- data/vendor/PDCursesMod/x11new/pdcscrn.c +277 -0
- data/vendor/PDCursesMod/x11new/pdcsetsc.c +90 -0
- data/vendor/PDCursesMod/x11new/pdcutil.c +38 -0
- data/vendor/PDCursesMod/x11new/pdcx11.h +16 -0
- metadata +692 -246
- data/vendor/PDCurses/.gitignore +0 -47
- data/vendor/PDCurses/.travis.yml +0 -49
- data/vendor/PDCurses/CMakeLists.txt +0 -68
- data/vendor/PDCurses/HISTORY.md +0 -2036
- data/vendor/PDCurses/IMPLEMNT.md +0 -327
- data/vendor/PDCurses/Makefile +0 -27
- data/vendor/PDCurses/README.md +0 -77
- data/vendor/PDCurses/acs_defs.h +0 -265
- data/vendor/PDCurses/appveyor.yml +0 -218
- data/vendor/PDCurses/cmake/README.md +0 -71
- data/vendor/PDCurses/cmake/build_dependencies.cmake +0 -178
- data/vendor/PDCurses/cmake/build_options.cmake +0 -25
- data/vendor/PDCurses/cmake/dll_version.cmake +0 -26
- data/vendor/PDCurses/cmake/gen_config_header.cmake +0 -43
- data/vendor/PDCurses/cmake/get_version.cmake +0 -17
- data/vendor/PDCurses/cmake/project_common.cmake +0 -121
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +0 -83
- data/vendor/PDCurses/cmake/version.in.cmake +0 -73
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +0 -96
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +0 -106
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +0 -105
- data/vendor/PDCurses/curses.h +0 -1846
- data/vendor/PDCurses/curspriv.h +0 -134
- data/vendor/PDCurses/demos/firework.c +0 -144
- data/vendor/PDCurses/demos/newtest.c +0 -581
- data/vendor/PDCurses/demos/ozdemo.c +0 -447
- data/vendor/PDCurses/demos/ptest.c +0 -283
- data/vendor/PDCurses/demos/rain.c +0 -157
- data/vendor/PDCurses/demos/testcurs.c +0 -1607
- data/vendor/PDCurses/demos/tui.c +0 -1048
- data/vendor/PDCurses/demos/tui.h +0 -65
- data/vendor/PDCurses/demos/tuidemo.c +0 -233
- data/vendor/PDCurses/demos/version.c +0 -61
- data/vendor/PDCurses/demos/worm.c +0 -432
- data/vendor/PDCurses/demos/xmas.c +0 -955
- data/vendor/PDCurses/dos/CMakeLists.txt +0 -47
- data/vendor/PDCurses/dos/Makefile +0 -105
- data/vendor/PDCurses/dos/Makefile.bcc +0 -83
- data/vendor/PDCurses/dos/Makefile.dmc +0 -257
- data/vendor/PDCurses/dos/Makefile.msc +0 -113
- data/vendor/PDCurses/dos/Makefile.wcc +0 -107
- data/vendor/PDCurses/dos/README.md +0 -51
- data/vendor/PDCurses/dos/bccdos.lrf +0 -9
- data/vendor/PDCurses/dos/mscdos.lrf +0 -50
- data/vendor/PDCurses/dos/pdcclip.c +0 -132
- data/vendor/PDCurses/dos/pdcdisp.c +0 -135
- data/vendor/PDCurses/dos/pdcdos.h +0 -194
- data/vendor/PDCurses/dos/pdcgetsc.c +0 -98
- data/vendor/PDCurses/dos/pdckbd.c +0 -513
- data/vendor/PDCurses/dos/pdcscrn.c +0 -785
- data/vendor/PDCurses/dos/pdcsetsc.c +0 -101
- data/vendor/PDCurses/dos/pdcutil.c +0 -212
- data/vendor/PDCurses/libobjs.mif +0 -26
- data/vendor/PDCurses/makedist.mif +0 -20
- data/vendor/PDCurses/man/Makefile +0 -37
- data/vendor/PDCurses/man/README.md +0 -21
- data/vendor/PDCurses/man/intro.md +0 -361
- data/vendor/PDCurses/man/manext.c +0 -119
- data/vendor/PDCurses/man/sdl.md +0 -152
- data/vendor/PDCurses/man/sdl2.md +0 -58
- data/vendor/PDCurses/man/x11.md +0 -407
- data/vendor/PDCurses/ncurses/CMakeLists.txt +0 -66
- data/vendor/PDCurses/ncurses/makefile +0 -29
- data/vendor/PDCurses/os2/Makefile +0 -132
- data/vendor/PDCurses/os2/Makefile.bcc +0 -90
- data/vendor/PDCurses/os2/Makefile.wcc +0 -43
- data/vendor/PDCurses/os2/iccos2.lrf +0 -50
- data/vendor/PDCurses/os2/iccos2.mak +0 -256
- data/vendor/PDCurses/os2/pdcclip.c +0 -188
- data/vendor/PDCurses/os2/pdcdisp.c +0 -93
- data/vendor/PDCurses/os2/pdcgetsc.c +0 -89
- data/vendor/PDCurses/os2/pdckbd.c +0 -521
- data/vendor/PDCurses/os2/pdcos2.h +0 -55
- data/vendor/PDCurses/os2/pdcscrn.c +0 -449
- data/vendor/PDCurses/os2/pdcsetsc.c +0 -112
- data/vendor/PDCurses/os2/pdcutil.c +0 -52
- data/vendor/PDCurses/panel.h +0 -56
- data/vendor/PDCurses/pdcurses/addch.c +0 -693
- data/vendor/PDCurses/pdcurses/addchstr.c +0 -245
- data/vendor/PDCurses/pdcurses/addstr.c +0 -240
- data/vendor/PDCurses/pdcurses/attr.c +0 -359
- data/vendor/PDCurses/pdcurses/beep.c +0 -68
- data/vendor/PDCurses/pdcurses/bkgd.c +0 -223
- data/vendor/PDCurses/pdcurses/border.c +0 -411
- data/vendor/PDCurses/pdcurses/clear.c +0 -159
- data/vendor/PDCurses/pdcurses/color.c +0 -298
- data/vendor/PDCurses/pdcurses/debug.c +0 -109
- data/vendor/PDCurses/pdcurses/delch.c +0 -96
- data/vendor/PDCurses/pdcurses/deleteln.c +0 -211
- data/vendor/PDCurses/pdcurses/deprec.c +0 -27
- data/vendor/PDCurses/pdcurses/getch.c +0 -417
- data/vendor/PDCurses/pdcurses/getstr.c +0 -474
- data/vendor/PDCurses/pdcurses/getyx.c +0 -139
- data/vendor/PDCurses/pdcurses/inch.c +0 -127
- data/vendor/PDCurses/pdcurses/inchstr.c +0 -214
- data/vendor/PDCurses/pdcurses/initscr.c +0 -367
- data/vendor/PDCurses/pdcurses/inopts.c +0 -324
- data/vendor/PDCurses/pdcurses/insch.c +0 -271
- data/vendor/PDCurses/pdcurses/insstr.c +0 -264
- data/vendor/PDCurses/pdcurses/instr.c +0 -246
- data/vendor/PDCurses/pdcurses/kernel.c +0 -259
- data/vendor/PDCurses/pdcurses/keyname.c +0 -157
- data/vendor/PDCurses/pdcurses/mouse.c +0 -438
- data/vendor/PDCurses/pdcurses/move.c +0 -57
- data/vendor/PDCurses/pdcurses/outopts.c +0 -159
- data/vendor/PDCurses/pdcurses/overlay.c +0 -214
- data/vendor/PDCurses/pdcurses/pad.c +0 -260
- data/vendor/PDCurses/pdcurses/panel.c +0 -633
- data/vendor/PDCurses/pdcurses/printw.c +0 -126
- data/vendor/PDCurses/pdcurses/refresh.c +0 -279
- data/vendor/PDCurses/pdcurses/scanw.c +0 -578
- data/vendor/PDCurses/pdcurses/scr_dump.c +0 -213
- data/vendor/PDCurses/pdcurses/scroll.c +0 -101
- data/vendor/PDCurses/pdcurses/slk.c +0 -591
- data/vendor/PDCurses/pdcurses/termattr.c +0 -182
- data/vendor/PDCurses/pdcurses/terminfo.c +0 -217
- data/vendor/PDCurses/pdcurses/touch.c +0 -163
- data/vendor/PDCurses/pdcurses/util.c +0 -312
- data/vendor/PDCurses/pdcurses/window.c +0 -569
- data/vendor/PDCurses/sdl1/Makefile +0 -129
- data/vendor/PDCurses/sdl1/Makefile.mng +0 -110
- data/vendor/PDCurses/sdl1/README.md +0 -31
- data/vendor/PDCurses/sdl1/deffont.h +0 -385
- data/vendor/PDCurses/sdl1/deficon.h +0 -23
- data/vendor/PDCurses/sdl1/pdcclip.c +0 -131
- data/vendor/PDCurses/sdl1/pdcdisp.c +0 -373
- data/vendor/PDCurses/sdl1/pdcgetsc.c +0 -30
- data/vendor/PDCurses/sdl1/pdckbd.c +0 -405
- data/vendor/PDCurses/sdl1/pdcscrn.c +0 -414
- data/vendor/PDCurses/sdl1/pdcsdl.h +0 -31
- data/vendor/PDCurses/sdl1/pdcsetsc.c +0 -64
- data/vendor/PDCurses/sdl1/pdcutil.c +0 -40
- data/vendor/PDCurses/sdl1/sdltest.c +0 -79
- data/vendor/PDCurses/sdl2/CMakeLists.txt +0 -76
- data/vendor/PDCurses/sdl2/Makefile +0 -135
- data/vendor/PDCurses/sdl2/Makefile.vc +0 -164
- data/vendor/PDCurses/sdl2/README.md +0 -34
- data/vendor/PDCurses/sdl2/deffont.h +0 -385
- data/vendor/PDCurses/sdl2/deficon.h +0 -23
- data/vendor/PDCurses/sdl2/pdcclip.c +0 -93
- data/vendor/PDCurses/sdl2/pdcdisp.c +0 -534
- data/vendor/PDCurses/sdl2/pdcgetsc.c +0 -30
- data/vendor/PDCurses/sdl2/pdckbd.c +0 -480
- data/vendor/PDCurses/sdl2/pdcscrn.c +0 -443
- data/vendor/PDCurses/sdl2/pdcsdl.h +0 -33
- data/vendor/PDCurses/sdl2/pdcsetsc.c +0 -67
- data/vendor/PDCurses/sdl2/pdcutil.c +0 -39
- data/vendor/PDCurses/sdl2/sdltest.c +0 -81
- data/vendor/PDCurses/term.h +0 -48
- data/vendor/PDCurses/version.mif +0 -7
- data/vendor/PDCurses/vt/CMakeLists.txt +0 -28
- data/vendor/PDCurses/vt/Makefile +0 -135
- data/vendor/PDCurses/vt/Makefile.bcc +0 -111
- data/vendor/PDCurses/vt/Makefile.dmc +0 -258
- data/vendor/PDCurses/vt/Makefile.vc +0 -144
- data/vendor/PDCurses/vt/Makefile.wcc +0 -107
- data/vendor/PDCurses/vt/README.md +0 -64
- data/vendor/PDCurses/vt/pdcclip.c +0 -20
- data/vendor/PDCurses/vt/pdcdisp.c +0 -284
- data/vendor/PDCurses/vt/pdckbd.c +0 -394
- data/vendor/PDCurses/vt/pdcscrn.c +0 -434
- data/vendor/PDCurses/vt/pdcsetsc.c +0 -45
- data/vendor/PDCurses/vt/pdcutil.c +0 -43
- data/vendor/PDCurses/vt/pdcvt.h +0 -16
- data/vendor/PDCurses/watcom.mif +0 -68
- data/vendor/PDCurses/wincon/CMakeLists.txt +0 -27
- data/vendor/PDCurses/wincon/Makefile.bcc +0 -88
- data/vendor/PDCurses/wincon/Makefile.dmc +0 -256
- data/vendor/PDCurses/wincon/Makefile.lcc +0 -273
- data/vendor/PDCurses/wincon/Makefile.mng +0 -176
- data/vendor/PDCurses/wincon/Makefile.vc +0 -144
- data/vendor/PDCurses/wincon/Makefile.wcc +0 -51
- data/vendor/PDCurses/wincon/README.md +0 -85
- data/vendor/PDCurses/wincon/pdcclip.c +0 -174
- data/vendor/PDCurses/wincon/pdcdisp.c +0 -143
- data/vendor/PDCurses/wincon/pdcgetsc.c +0 -55
- data/vendor/PDCurses/wincon/pdckbd.c +0 -786
- data/vendor/PDCurses/wincon/pdcscrn.c +0 -717
- data/vendor/PDCurses/wincon/pdcsetsc.c +0 -91
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +0 -28
- data/vendor/PDCurses/wincon/pdcutil.c +0 -41
- data/vendor/PDCurses/wincon/pdcwin.h +0 -31
- data/vendor/PDCurses/wingui/CMakeLists.txt +0 -27
- data/vendor/PDCurses/wingui/Makefile.bcc +0 -85
- data/vendor/PDCurses/wingui/Makefile.dmc +0 -259
- data/vendor/PDCurses/wingui/Makefile.lcc +0 -273
- data/vendor/PDCurses/wingui/Makefile.mng +0 -171
- data/vendor/PDCurses/wingui/Makefile.vc +0 -144
- data/vendor/PDCurses/wingui/Makefile.wcc +0 -51
- data/vendor/PDCurses/wingui/README.md +0 -93
- data/vendor/PDCurses/wingui/pdcclip.c +0 -174
- data/vendor/PDCurses/wingui/pdcdisp.c +0 -718
- data/vendor/PDCurses/wingui/pdckbd.c +0 -143
- data/vendor/PDCurses/wingui/pdcscrn.c +0 -2797
- data/vendor/PDCurses/wingui/pdcsetsc.c +0 -89
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +0 -28
- data/vendor/PDCurses/wingui/pdcutil.c +0 -61
- data/vendor/PDCurses/wingui/pdcwin.h +0 -122
- data/vendor/PDCurses/x11/Makefile.in +0 -754
- data/vendor/PDCurses/x11/PDCurses.spec +0 -82
- data/vendor/PDCurses/x11/README.md +0 -62
- data/vendor/PDCurses/x11/ScrollBox.c +0 -319
- data/vendor/PDCurses/x11/ScrollBox.h +0 -51
- data/vendor/PDCurses/x11/ScrollBoxP.h +0 -70
- data/vendor/PDCurses/x11/aclocal.m4 +0 -994
- data/vendor/PDCurses/x11/big_icon.xbm +0 -46
- data/vendor/PDCurses/x11/compose.h +0 -201
- data/vendor/PDCurses/x11/config.guess +0 -1500
- data/vendor/PDCurses/x11/config.h.in +0 -100
- data/vendor/PDCurses/x11/config.sub +0 -1616
- data/vendor/PDCurses/x11/configure +0 -6700
- data/vendor/PDCurses/x11/configure.ac +0 -295
- data/vendor/PDCurses/x11/debian/changelog +0 -6
- data/vendor/PDCurses/x11/debian/compat +0 -1
- data/vendor/PDCurses/x11/debian/control +0 -11
- data/vendor/PDCurses/x11/debian/copyright +0 -27
- data/vendor/PDCurses/x11/debian/rules +0 -98
- data/vendor/PDCurses/x11/little_icon.xbm +0 -14
- data/vendor/PDCurses/x11/ncurses_cfg.h +0 -45
- data/vendor/PDCurses/x11/pdcclip.c +0 -173
- data/vendor/PDCurses/x11/pdcdisp.c +0 -85
- data/vendor/PDCurses/x11/pdcgetsc.c +0 -28
- data/vendor/PDCurses/x11/pdckbd.c +0 -104
- data/vendor/PDCurses/x11/pdcscrn.c +0 -258
- data/vendor/PDCurses/x11/pdcsetsc.c +0 -95
- data/vendor/PDCurses/x11/pdcutil.c +0 -52
- data/vendor/PDCurses/x11/pdcx11.c +0 -316
- data/vendor/PDCurses/x11/pdcx11.h +0 -191
- data/vendor/PDCurses/x11/sb.c +0 -155
- data/vendor/PDCurses/x11/x11.c +0 -3686
- data/vendor/PDCurses/x11/xcurses-config.in +0 -81
- /data/vendor/{PDCurses → PDCursesMod}/cmake/make_uninstall.cmake +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/cmake/resource.in.cmake +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/cmake/target_arch.cmake +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/demos/README.md +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/ncurses/README.md +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/os2/CMakeLists.txt +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/os2/README.md +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/pdcurses/README.md +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/vt/pdcgetsc.c +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/wingui/pdcgetsc.c +0 -0
- /data/vendor/{PDCurses → PDCursesMod}/x11/install-sh +0 -0
|
@@ -0,0 +1,1693 @@
|
|
|
1
|
+
/* PDCurses */
|
|
2
|
+
|
|
3
|
+
#include "pdcdos.h"
|
|
4
|
+
#include "pdcvesa.h"
|
|
5
|
+
#include "font.h"
|
|
6
|
+
|
|
7
|
+
#include "../common/pdccolor.h"
|
|
8
|
+
#include "../common/pdccolor.c"
|
|
9
|
+
|
|
10
|
+
#include <stdlib.h>
|
|
11
|
+
#include <string.h>
|
|
12
|
+
|
|
13
|
+
struct PDC_video_state PDC_state;
|
|
14
|
+
|
|
15
|
+
static int saved_scrnmode[3];
|
|
16
|
+
|
|
17
|
+
static void _load_palette(void);
|
|
18
|
+
static int _get_mode_info(unsigned mode, struct ModeInfoBlock *mode_info);
|
|
19
|
+
static unsigned _find_video_mode(int rows, int cols);
|
|
20
|
+
static unsigned _find_mode(
|
|
21
|
+
struct ModeInfoBlock *mode_info,
|
|
22
|
+
unsigned long mode_addr,
|
|
23
|
+
int rows, int cols);
|
|
24
|
+
#ifdef PDC_FLAT
|
|
25
|
+
static unsigned long _map_frame_buffer(unsigned long phys_addr,
|
|
26
|
+
unsigned long size);
|
|
27
|
+
static void _unmap_frame_buffer(unsigned long phys_addr);
|
|
28
|
+
#endif
|
|
29
|
+
#if defined(__WATCOMC__) && defined(__386__)
|
|
30
|
+
static int __dpmi_allocate_dos_memory(int paras, int *sel_or_max);
|
|
31
|
+
static int __dpmi_free_dos_memory(int sel);
|
|
32
|
+
static int __dpmi_allocate_ldt_descriptors(int count);
|
|
33
|
+
static int __dpmi_free_ldt_descriptor(int sel);
|
|
34
|
+
static int __dpmi_set_segment_base_address(int sel, unsigned long addr);
|
|
35
|
+
static int __dpmi_set_segment_limit(int sel, unsigned long limit);
|
|
36
|
+
static void dosmemget(unsigned long addr, size_t size, void *buf);
|
|
37
|
+
static void dosmemput(const void *buf, size_t size, unsigned long addr);
|
|
38
|
+
#endif
|
|
39
|
+
static int _psf_font_open(const char *name, bool bold);
|
|
40
|
+
static int _vgafont_open(void);
|
|
41
|
+
|
|
42
|
+
/* _get_scrn_mode() - Return the current BIOS video mode */
|
|
43
|
+
|
|
44
|
+
static int _get_scrn_mode(void)
|
|
45
|
+
{
|
|
46
|
+
PDCREGS regs;
|
|
47
|
+
|
|
48
|
+
memset(®s, 0, sizeof(regs));
|
|
49
|
+
regs.W.ax = 0x4F03;
|
|
50
|
+
PDCINT(0x10, regs);
|
|
51
|
+
if (regs.h.ah == 0) {
|
|
52
|
+
return (int)regs.W.bx;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
regs.h.ah = 0x0f;
|
|
56
|
+
PDCINT(0x10, regs);
|
|
57
|
+
|
|
58
|
+
return (int)regs.h.al;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* _set_scrn_mode() - Sets the BIOS Video Mode Number */
|
|
62
|
+
|
|
63
|
+
static void _set_scrn_mode(int new_mode)
|
|
64
|
+
{
|
|
65
|
+
PDCREGS regs;
|
|
66
|
+
|
|
67
|
+
memset(®s, 0, sizeof(regs));
|
|
68
|
+
if (new_mode >= 0x100) {
|
|
69
|
+
regs.W.ax = 0x4F02;
|
|
70
|
+
regs.W.bx = new_mode;
|
|
71
|
+
} else {
|
|
72
|
+
regs.h.ah = 0;
|
|
73
|
+
regs.h.al = (unsigned char) new_mode;
|
|
74
|
+
}
|
|
75
|
+
PDCINT(0x10, regs);
|
|
76
|
+
PDC_state.scrn_mode = new_mode;
|
|
77
|
+
|
|
78
|
+
LINES = PDC_get_rows();
|
|
79
|
+
COLS = PDC_get_columns();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* close the physical screen -- may restore the screen to its state
|
|
83
|
+
before PDC_scr_open(); miscellaneous cleanup */
|
|
84
|
+
|
|
85
|
+
void PDC_scr_close(void)
|
|
86
|
+
{
|
|
87
|
+
#ifdef PDC_FLAT
|
|
88
|
+
_unmap_frame_buffer(PDC_state.linear_addr);
|
|
89
|
+
__dpmi_free_ldt_descriptor(PDC_state.linear_sel);
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
_set_scrn_mode(0x03);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void PDC_scr_free(void)
|
|
96
|
+
{
|
|
97
|
+
if (PDC_state.font_close != NULL)
|
|
98
|
+
{
|
|
99
|
+
PDC_state.font_close(FALSE);
|
|
100
|
+
PDC_state.font_close(TRUE);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static int default_lines = 25, default_cols = 80;
|
|
105
|
+
|
|
106
|
+
/* Set the location of the underline */
|
|
107
|
+
static void _set_underline(void)
|
|
108
|
+
{
|
|
109
|
+
unsigned width = (PDC_state.font_width + 7) / 8;
|
|
110
|
+
unsigned height = PDC_state.font_height;
|
|
111
|
+
unsigned size = width * height;
|
|
112
|
+
unsigned i;
|
|
113
|
+
const unsigned char *underscore = PDC_state.font_glyph_data(FALSE, 0x5F);
|
|
114
|
+
|
|
115
|
+
/* Set underscore at first line of U+005F that is not blank */
|
|
116
|
+
for (i = 0; i < size; ++i)
|
|
117
|
+
{
|
|
118
|
+
if (underscore[i] != 0)
|
|
119
|
+
{
|
|
120
|
+
PDC_state.underline = i / width;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* How peculiar; U+005F is blank. Make a guess. */
|
|
126
|
+
PDC_state.underline = PDC_state.font_height * 3 / 4;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* open the physical screen -- miscellaneous initialization, may save
|
|
130
|
+
the existing screen for later restoration */
|
|
131
|
+
|
|
132
|
+
int PDC_scr_open(void)
|
|
133
|
+
{
|
|
134
|
+
const char *normal_font, *bold_font;
|
|
135
|
+
PDCREGS regs;
|
|
136
|
+
|
|
137
|
+
PDC_LOG(("PDC_scr_open() - called\n"));
|
|
138
|
+
|
|
139
|
+
/* Check for VGA and bail out if we don't find one */
|
|
140
|
+
memset(®s, 0, sizeof(regs));
|
|
141
|
+
regs.W.ax = 0x1A00;
|
|
142
|
+
PDCINT(0x10, regs);
|
|
143
|
+
if (regs.h.bl != 8)
|
|
144
|
+
return ERR;
|
|
145
|
+
|
|
146
|
+
SP = calloc(1, sizeof(SCREEN));
|
|
147
|
+
|
|
148
|
+
if (!SP || PDC_init_palette( ))
|
|
149
|
+
return ERR;
|
|
150
|
+
|
|
151
|
+
/* Set up fonts:
|
|
152
|
+
* * first try PDC_FONT and PDC_FONT_BOLD
|
|
153
|
+
* * Fall back to the ROM font if PDC_FONT is not specified
|
|
154
|
+
* * Width must be 8; height must be not greater than 16; the bold font, if
|
|
155
|
+
* specified, must have the same size as the normal font
|
|
156
|
+
*/
|
|
157
|
+
normal_font = getenv("PDC_FONT");
|
|
158
|
+
bold_font = getenv("PDC_FONT_BOLD");
|
|
159
|
+
if (normal_font != NULL && normal_font[0] != '\0')
|
|
160
|
+
{
|
|
161
|
+
if (_psf_font_open(normal_font, FALSE) == 0)
|
|
162
|
+
{
|
|
163
|
+
/* Opened the normal font; try the bold font */
|
|
164
|
+
if (_psf_font_open(bold_font, TRUE) == 0
|
|
165
|
+
&& PDC_state.font_char_width(FALSE) == PDC_state.font_char_width(TRUE)
|
|
166
|
+
&& PDC_state.font_char_height(FALSE) == PDC_state.font_char_height(TRUE))
|
|
167
|
+
PDC_state.have_bold_font = TRUE;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (PDC_state.font_glyph_data == NULL)
|
|
171
|
+
{
|
|
172
|
+
if (_vgafont_open() < 0)
|
|
173
|
+
return ERR;
|
|
174
|
+
PDC_state.have_bold_font = FALSE;
|
|
175
|
+
}
|
|
176
|
+
PDC_state.font_width = PDC_state.font_char_width(FALSE);
|
|
177
|
+
PDC_state.font_height = PDC_state.font_char_height(FALSE);
|
|
178
|
+
_set_underline();
|
|
179
|
+
PDC_resize_screen( default_lines, default_cols);
|
|
180
|
+
|
|
181
|
+
SP->orig_attr = FALSE;
|
|
182
|
+
|
|
183
|
+
SP->mouse_wait = PDC_CLICK_PERIOD;
|
|
184
|
+
SP->audible = TRUE;
|
|
185
|
+
|
|
186
|
+
SP->mono = FALSE;
|
|
187
|
+
SP->termattrs = A_COLOR | A_REVERSE | A_UNDERLINE | A_BLINK;
|
|
188
|
+
|
|
189
|
+
SP->_preserve = FALSE;
|
|
190
|
+
|
|
191
|
+
return OK;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* the core of resize_term() */
|
|
195
|
+
|
|
196
|
+
int PDC_resize_screen(int nlines, int ncols)
|
|
197
|
+
{
|
|
198
|
+
PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
|
|
199
|
+
nlines, ncols));
|
|
200
|
+
|
|
201
|
+
if( !PDC_state.font_width)
|
|
202
|
+
{ /* Specifying an initial screen */
|
|
203
|
+
default_lines = nlines; /* size before calling initscr(). */
|
|
204
|
+
default_cols = ncols;
|
|
205
|
+
return OK;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
_set_scrn_mode(_find_video_mode(nlines, ncols));
|
|
209
|
+
_load_palette();
|
|
210
|
+
SP->orig_cursor = PDC_get_cursor_mode();
|
|
211
|
+
PDC_curs_set(SP->visibility);
|
|
212
|
+
if (PDC_state.bits_per_pixel <= 8)
|
|
213
|
+
COLORS = 1 << PDC_state.bits_per_pixel;
|
|
214
|
+
else
|
|
215
|
+
COLORS = 256 + (256 * 256 * 256);
|
|
216
|
+
|
|
217
|
+
return OK;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
void PDC_reset_prog_mode(void)
|
|
221
|
+
{
|
|
222
|
+
PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
|
|
223
|
+
_load_palette();
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
void PDC_reset_shell_mode(void)
|
|
227
|
+
{
|
|
228
|
+
PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
void PDC_restore_screen_mode(int i)
|
|
232
|
+
{
|
|
233
|
+
if (i >= 0 && i <= 2)
|
|
234
|
+
{
|
|
235
|
+
_set_scrn_mode(saved_scrnmode[i]);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
void PDC_save_screen_mode(int i)
|
|
240
|
+
{
|
|
241
|
+
if (i >= 0 && i <= 2)
|
|
242
|
+
{
|
|
243
|
+
saved_scrnmode[i] = _get_scrn_mode();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* _load_palette -- load the current palette into the DAC */
|
|
248
|
+
|
|
249
|
+
static void _load_palette(void)
|
|
250
|
+
{
|
|
251
|
+
if (PDC_state.bits_per_pixel <= 8)
|
|
252
|
+
{
|
|
253
|
+
PDCREGS regs;
|
|
254
|
+
unsigned i;
|
|
255
|
+
|
|
256
|
+
/* Load EGA palette registers as an identity map */
|
|
257
|
+
for (i = 0; i < 16; i++)
|
|
258
|
+
{
|
|
259
|
+
memset(®s, 0, sizeof(regs));
|
|
260
|
+
regs.W.ax = 0x1000;
|
|
261
|
+
regs.W.bx = i * 0x0101;
|
|
262
|
+
PDCINT(0x10, regs);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* Set 8 bit DACs if available */
|
|
266
|
+
/* This doesn't seem to work with 4 bit color */
|
|
267
|
+
if (PDC_state.bits_per_pixel == 8)
|
|
268
|
+
{
|
|
269
|
+
unsigned dacmax;
|
|
270
|
+
|
|
271
|
+
memset(®s, 0, sizeof(regs));
|
|
272
|
+
regs.W.ax = 0x4F08;
|
|
273
|
+
regs.W.bx = 0x0800;
|
|
274
|
+
PDCINT(0x10, regs);
|
|
275
|
+
dacmax = (regs.W.ax == 0x004F) ? (1 << regs.h.bh) - 1 : 63;
|
|
276
|
+
PDC_state.red_max = dacmax;
|
|
277
|
+
PDC_state.green_max = dacmax;
|
|
278
|
+
PDC_state.blue_max = dacmax;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Load the DAC registers from the current palette */
|
|
282
|
+
for (i = 0; i < 1u << PDC_state.bits_per_pixel; i++)
|
|
283
|
+
{
|
|
284
|
+
int r, g, b;
|
|
285
|
+
|
|
286
|
+
PDC_color_content( i, &r, &g, &b);
|
|
287
|
+
PDC_init_color( i, r, g, b);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
bool PDC_can_change_color(void)
|
|
293
|
+
{
|
|
294
|
+
return TRUE;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
int PDC_color_content( int color, int *red, int *green, int *blue)
|
|
298
|
+
{
|
|
299
|
+
const PACKED_RGB col = PDC_get_palette_entry( color);
|
|
300
|
+
|
|
301
|
+
*red = DIVROUND( (int32_t)Get_RValue(col) * (int32_t)1000, (int32_t)255);
|
|
302
|
+
*green = DIVROUND( (int32_t)Get_GValue(col) * (int32_t)1000, (int32_t)255);
|
|
303
|
+
*blue = DIVROUND( (int32_t)Get_BValue(col) * (int32_t)1000, (int32_t)255);
|
|
304
|
+
|
|
305
|
+
return OK;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
int PDC_init_color(int color, int red, int green, int blue)
|
|
309
|
+
{
|
|
310
|
+
const PACKED_RGB new_rgb = PACK_RGB(DIVROUND((int32_t)red * (int32_t)255, (int32_t)1000),
|
|
311
|
+
DIVROUND((int32_t)green * (int32_t)255, (int32_t)1000),
|
|
312
|
+
DIVROUND((int32_t)blue * (int32_t)255, (int32_t)1000));
|
|
313
|
+
|
|
314
|
+
if( !PDC_set_palette_entry( color, new_rgb))
|
|
315
|
+
curscr->_clear = TRUE;
|
|
316
|
+
|
|
317
|
+
if (PDC_state.bits_per_pixel <= 8)
|
|
318
|
+
{
|
|
319
|
+
/* Scale */
|
|
320
|
+
const unsigned r = DIVROUND((unsigned long)red * PDC_state.red_max, 1000);
|
|
321
|
+
const unsigned g = DIVROUND((unsigned long)green * PDC_state.green_max, 1000);
|
|
322
|
+
const unsigned b = DIVROUND((unsigned long)blue * PDC_state.blue_max, 1000);
|
|
323
|
+
PDCREGS regs;
|
|
324
|
+
#if !defined(PDC_FLAT) && !defined(__WATCOMC__)
|
|
325
|
+
struct SREGS sregs;
|
|
326
|
+
#endif
|
|
327
|
+
|
|
328
|
+
if (PDC_state.scrn_mode >= 0x100)
|
|
329
|
+
{
|
|
330
|
+
/* VESA mode in use; first try the VESA function */
|
|
331
|
+
#ifdef PDC_FLAT
|
|
332
|
+
int seg, sel;
|
|
333
|
+
#endif
|
|
334
|
+
unsigned long table;
|
|
335
|
+
|
|
336
|
+
table = ((unsigned long)b << 0)
|
|
337
|
+
| ((unsigned long)g << 8)
|
|
338
|
+
| ((unsigned long)r << 16);
|
|
339
|
+
#ifdef PDC_FLAT
|
|
340
|
+
seg = __dpmi_allocate_dos_memory(1, &sel);
|
|
341
|
+
if (seg < 0)
|
|
342
|
+
return ERR;
|
|
343
|
+
setdosmemdword(seg * 16L, table);
|
|
344
|
+
#endif
|
|
345
|
+
memset(®s, 0, sizeof(regs));
|
|
346
|
+
regs.W.ax = 0x4F09;
|
|
347
|
+
regs.h.bl = 0;
|
|
348
|
+
regs.W.cx = 1;
|
|
349
|
+
regs.W.dx = color;
|
|
350
|
+
#ifdef PDC_FLAT
|
|
351
|
+
regs.W.di = 0;
|
|
352
|
+
regs.W.es = seg;
|
|
353
|
+
PDCINT(0x10, regs);
|
|
354
|
+
#elif defined(__WATCOMC__)
|
|
355
|
+
regs.W.di = FP_OFF(&table);
|
|
356
|
+
regs.W.es = FP_SEG(&table);
|
|
357
|
+
PDCINT(0x10, regs);
|
|
358
|
+
#else
|
|
359
|
+
regs.W.di = FP_OFF(&table);
|
|
360
|
+
segread(&sregs);
|
|
361
|
+
sregs.es = FP_SEG(&table);
|
|
362
|
+
int86x(0x10, ®s, ®s, &sregs);
|
|
363
|
+
#endif
|
|
364
|
+
#ifdef PDC_FLAT
|
|
365
|
+
__dpmi_free_dos_memory(sel);
|
|
366
|
+
#endif
|
|
367
|
+
if (regs.W.ax == 0x004F)
|
|
368
|
+
return OK;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
regs.h.dh = r;
|
|
372
|
+
regs.h.ch = g;
|
|
373
|
+
regs.h.cl = b;
|
|
374
|
+
|
|
375
|
+
/* Set single DAC register */
|
|
376
|
+
|
|
377
|
+
regs.W.ax = 0x1010;
|
|
378
|
+
regs.W.bx = color;
|
|
379
|
+
|
|
380
|
+
PDCINT(0x10, regs);
|
|
381
|
+
}
|
|
382
|
+
return OK;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
static unsigned _find_video_mode(int rows, int cols)
|
|
386
|
+
{
|
|
387
|
+
#ifdef PDC_FLAT
|
|
388
|
+
int vbe_info_sel = -1; /* custodial */
|
|
389
|
+
int vbe_info_seg;
|
|
390
|
+
#endif
|
|
391
|
+
struct VbeInfoBlock vbe_info;
|
|
392
|
+
PDCREGS regs;
|
|
393
|
+
#if !defined(PDC_FLAT) && !defined(__WATCOMC__)
|
|
394
|
+
struct SREGS sregs;
|
|
395
|
+
#endif
|
|
396
|
+
unsigned long mode_addr;
|
|
397
|
+
struct ModeInfoBlock mode_info;
|
|
398
|
+
unsigned vesa_mode;
|
|
399
|
+
|
|
400
|
+
/* Request VESA BIOS information */
|
|
401
|
+
memset(&vbe_info, 0, sizeof(vbe_info));
|
|
402
|
+
memcpy(vbe_info.VbeSignature, "VBE2", 4);
|
|
403
|
+
|
|
404
|
+
#ifdef PDC_FLAT
|
|
405
|
+
vbe_info_seg = __dpmi_allocate_dos_memory(
|
|
406
|
+
(sizeof(vbe_info) + 15) / 16,
|
|
407
|
+
&vbe_info_sel);
|
|
408
|
+
if (vbe_info_seg < 0)
|
|
409
|
+
goto error;
|
|
410
|
+
dosmemput(&vbe_info, sizeof(vbe_info), vbe_info_seg * 16L);
|
|
411
|
+
#endif
|
|
412
|
+
|
|
413
|
+
memset(®s, 0, sizeof(regs));
|
|
414
|
+
regs.W.ax = 0x4F00;
|
|
415
|
+
#ifdef PDC_FLAT
|
|
416
|
+
regs.W.di = 0;
|
|
417
|
+
regs.W.es = vbe_info_seg;
|
|
418
|
+
PDCINT(0x10, regs);
|
|
419
|
+
#elif defined(__WATCOMC__)
|
|
420
|
+
regs.W.di = FP_OFF(&vbe_info);
|
|
421
|
+
regs.W.es = FP_SEG(&vbe_info);
|
|
422
|
+
PDCINT(0x10, regs);
|
|
423
|
+
#else
|
|
424
|
+
regs.W.di = FP_OFF(&vbe_info);
|
|
425
|
+
segread(&sregs);
|
|
426
|
+
sregs.es = FP_SEG(&vbe_info);
|
|
427
|
+
int86x(0x10, ®s, ®s, &sregs);
|
|
428
|
+
#endif
|
|
429
|
+
|
|
430
|
+
/* Check for successful completion of function: is VESA BIOS present? */
|
|
431
|
+
if (regs.W.ax != 0x004F)
|
|
432
|
+
goto error;
|
|
433
|
+
#ifdef PDC_FLAT
|
|
434
|
+
dosmemget(vbe_info_seg * 16L, sizeof(vbe_info), &vbe_info);
|
|
435
|
+
#endif
|
|
436
|
+
if (memcmp(vbe_info.VbeSignature, "VESA", 4) != 0)
|
|
437
|
+
goto error;
|
|
438
|
+
|
|
439
|
+
/* Get the address of the mode list */
|
|
440
|
+
/* The mode list may be within the DOS memory area allocated above.
|
|
441
|
+
That area must remain allocated and must not be rewritten until
|
|
442
|
+
we're done here. */
|
|
443
|
+
#ifdef PDC_FLAT
|
|
444
|
+
mode_addr = _FAR_POINTER(vbe_info.VideoModePtr >> 16,
|
|
445
|
+
vbe_info.VideoModePtr & 0xFFFF);
|
|
446
|
+
#else
|
|
447
|
+
mode_addr = vbe_info.VideoModePtr;
|
|
448
|
+
#endif
|
|
449
|
+
|
|
450
|
+
/* Look for the best-fitting mode available */
|
|
451
|
+
vesa_mode = _find_mode(&mode_info, mode_addr, rows, cols);
|
|
452
|
+
if (vesa_mode == 0xFFFF)
|
|
453
|
+
vesa_mode = _find_mode(&mode_info, mode_addr, 0, 0);
|
|
454
|
+
if (vesa_mode == 0xFFFF)
|
|
455
|
+
goto error;
|
|
456
|
+
|
|
457
|
+
/* Set up frame buffer window */
|
|
458
|
+
if ((mode_info.WinAAttributes & 0x2) != 0)
|
|
459
|
+
PDC_state.read_win = 0; /* Read through Window A */
|
|
460
|
+
else if ((mode_info.WinBAttributes & 0x2) != 0)
|
|
461
|
+
PDC_state.read_win = 1; /* Read through Window B */
|
|
462
|
+
else
|
|
463
|
+
goto error; /* shouldn't happen */
|
|
464
|
+
if ((mode_info.WinAAttributes & 0x1) != 0)
|
|
465
|
+
PDC_state.write_win = 0; /* Write through Window A */
|
|
466
|
+
else if ((mode_info.WinBAttributes & 0x1) != 0)
|
|
467
|
+
PDC_state.write_win = 1; /* Write through Window B */
|
|
468
|
+
else
|
|
469
|
+
goto error; /* shouldn't happen */
|
|
470
|
+
PDC_state.window[0] = mode_info.WinASegment;
|
|
471
|
+
PDC_state.window[1] = mode_info.WinBSegment;
|
|
472
|
+
if (vesa_mode == 0x12)
|
|
473
|
+
{
|
|
474
|
+
PDC_state.offset[0] = 0;
|
|
475
|
+
PDC_state.offset[1] = 0;
|
|
476
|
+
}
|
|
477
|
+
else
|
|
478
|
+
{
|
|
479
|
+
PDC_state.offset[0] = 0xFFFFFFFF; /* offset is unknown */
|
|
480
|
+
PDC_state.offset[1] = 0xFFFFFFFF;
|
|
481
|
+
}
|
|
482
|
+
PDC_state.window_size = mode_info.WinSize * 1024L;
|
|
483
|
+
PDC_state.window_gran = mode_info.WinGranularity;
|
|
484
|
+
PDC_state.bytes_per_line = mode_info.BytesPerScanLine;
|
|
485
|
+
PDC_state.video_width = mode_info.XResolution;
|
|
486
|
+
PDC_state.video_height = mode_info.YResolution;
|
|
487
|
+
PDC_state.bits_per_pixel = mode_info.BitsPerPixel;
|
|
488
|
+
|
|
489
|
+
#ifdef PDC_FLAT
|
|
490
|
+
/* Enable the linear frame buffer if available */
|
|
491
|
+
if ((mode_info.ModeAttributes & 0x80) != 0)
|
|
492
|
+
{
|
|
493
|
+
do { /* while (FALSE) */
|
|
494
|
+
unsigned win_size;
|
|
495
|
+
unsigned width;
|
|
496
|
+
|
|
497
|
+
width = (vbe_info.VbeVersion >= 0x300)
|
|
498
|
+
? mode_info.LinBytesPerScanLine
|
|
499
|
+
: mode_info.BytesPerScanLine;
|
|
500
|
+
|
|
501
|
+
PDC_state.linear_sel = __dpmi_allocate_ldt_descriptors(1);
|
|
502
|
+
if (PDC_state.linear_sel < 0)
|
|
503
|
+
break;
|
|
504
|
+
win_size = width * mode_info.YResolution;
|
|
505
|
+
PDC_state.linear_addr = _map_frame_buffer(mode_info.PhysBasePtr, win_size);
|
|
506
|
+
if (PDC_state.linear_addr == 0)
|
|
507
|
+
{
|
|
508
|
+
__dpmi_free_ldt_descriptor(PDC_state.linear_sel);
|
|
509
|
+
PDC_state.linear_sel = 0;
|
|
510
|
+
break;
|
|
511
|
+
}
|
|
512
|
+
__dpmi_set_segment_base_address(PDC_state.linear_sel, PDC_state.linear_addr);
|
|
513
|
+
__dpmi_set_segment_limit(PDC_state.linear_sel, (win_size - 1) | 0xFFF);
|
|
514
|
+
vesa_mode |= 0x4000;
|
|
515
|
+
PDC_state.bytes_per_line = width;
|
|
516
|
+
} while (FALSE);
|
|
517
|
+
}
|
|
518
|
+
#else
|
|
519
|
+
PDC_state.linear_sel = 0;
|
|
520
|
+
#endif
|
|
521
|
+
|
|
522
|
+
if (PDC_state.bits_per_pixel <= 8)
|
|
523
|
+
{
|
|
524
|
+
PDC_state.red_max = 63;
|
|
525
|
+
PDC_state.green_max = 63;
|
|
526
|
+
PDC_state.blue_max = 63;
|
|
527
|
+
}
|
|
528
|
+
else
|
|
529
|
+
{
|
|
530
|
+
#ifdef PDC_FLAT
|
|
531
|
+
if (PDC_state.linear_sel && vbe_info.VbeVersion >= 0x300)
|
|
532
|
+
{
|
|
533
|
+
PDC_state.red_max = (1 << mode_info.LinRedMaskSize) - 1;
|
|
534
|
+
PDC_state.red_pos = mode_info.LinRedFieldPosition;
|
|
535
|
+
PDC_state.green_max = (1 << mode_info.LinGreenMaskSize) - 1;
|
|
536
|
+
PDC_state.green_pos = mode_info.LinGreenFieldPosition;
|
|
537
|
+
PDC_state.blue_max = (1 << mode_info.LinBlueMaskSize) - 1;
|
|
538
|
+
PDC_state.blue_pos = mode_info.LinBlueFieldPosition;
|
|
539
|
+
}
|
|
540
|
+
else
|
|
541
|
+
#endif
|
|
542
|
+
if (mode_info.ModeAttributes & 0x2)
|
|
543
|
+
{
|
|
544
|
+
PDC_state.red_max = (1 << mode_info.RedMaskSize) - 1;
|
|
545
|
+
PDC_state.red_pos = mode_info.RedFieldPosition;
|
|
546
|
+
PDC_state.green_max = (1 << mode_info.GreenMaskSize) - 1;
|
|
547
|
+
PDC_state.green_pos = mode_info.GreenFieldPosition;
|
|
548
|
+
PDC_state.blue_max = (1 << mode_info.BlueMaskSize) - 1;
|
|
549
|
+
PDC_state.blue_pos = mode_info.BlueFieldPosition;
|
|
550
|
+
}
|
|
551
|
+
else
|
|
552
|
+
{
|
|
553
|
+
switch (PDC_state.bits_per_pixel)
|
|
554
|
+
{
|
|
555
|
+
case 15:
|
|
556
|
+
PDC_state.red_max = 31;
|
|
557
|
+
PDC_state.red_pos = 10;
|
|
558
|
+
PDC_state.green_max = 31;
|
|
559
|
+
PDC_state.green_pos = 5;
|
|
560
|
+
PDC_state.blue_max = 31;
|
|
561
|
+
PDC_state.blue_pos = 0;
|
|
562
|
+
break;
|
|
563
|
+
|
|
564
|
+
case 16:
|
|
565
|
+
PDC_state.red_max = 31;
|
|
566
|
+
PDC_state.red_pos = 11;
|
|
567
|
+
PDC_state.green_max = 63;
|
|
568
|
+
PDC_state.green_pos = 5;
|
|
569
|
+
PDC_state.blue_max = 31;
|
|
570
|
+
PDC_state.blue_pos = 0;
|
|
571
|
+
break;
|
|
572
|
+
|
|
573
|
+
case 24:
|
|
574
|
+
case 32:
|
|
575
|
+
PDC_state.red_max = 255;
|
|
576
|
+
PDC_state.red_pos = 16;
|
|
577
|
+
PDC_state.green_max = 255;
|
|
578
|
+
PDC_state.green_pos = 8;
|
|
579
|
+
PDC_state.blue_max = 255;
|
|
580
|
+
PDC_state.blue_pos = 0;
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
#ifdef PDC_FLAT
|
|
587
|
+
__dpmi_free_dos_memory(vbe_info_sel);
|
|
588
|
+
#endif
|
|
589
|
+
return vesa_mode;
|
|
590
|
+
|
|
591
|
+
error:
|
|
592
|
+
/* If we can't access the VESA BIOS Extensions for any reason, return the
|
|
593
|
+
640x480 VGA mode */
|
|
594
|
+
#ifdef PDC_FLAT
|
|
595
|
+
if (vbe_info_sel != -1)
|
|
596
|
+
__dpmi_free_dos_memory(vbe_info_sel);
|
|
597
|
+
#endif
|
|
598
|
+
|
|
599
|
+
PDC_state.bits_per_pixel = 4;
|
|
600
|
+
PDC_state.video_width = 640;
|
|
601
|
+
PDC_state.video_height = 480;
|
|
602
|
+
PDC_state.bytes_per_line = 80;
|
|
603
|
+
PDC_state.read_win = 0;
|
|
604
|
+
PDC_state.write_win = 0;
|
|
605
|
+
PDC_state.window[0] = 0xA000;
|
|
606
|
+
PDC_state.window[1] = 0xA000;
|
|
607
|
+
PDC_state.offset[0] = 0;
|
|
608
|
+
PDC_state.offset[1] = 0;
|
|
609
|
+
PDC_state.window_size = (640/8) * 480;
|
|
610
|
+
PDC_state.window_gran = 1;
|
|
611
|
+
PDC_state.red_max = 63;
|
|
612
|
+
PDC_state.green_max = 63;
|
|
613
|
+
PDC_state.blue_max = 63;
|
|
614
|
+
|
|
615
|
+
return 0x12;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
static unsigned _find_mode(
|
|
619
|
+
struct ModeInfoBlock *mode_info,
|
|
620
|
+
unsigned long mode_addr,
|
|
621
|
+
int rows, int cols)
|
|
622
|
+
{
|
|
623
|
+
unsigned selected_mode;
|
|
624
|
+
unsigned long selected_size;
|
|
625
|
+
unsigned selected_bits;
|
|
626
|
+
|
|
627
|
+
selected_mode = 0xFFFF;
|
|
628
|
+
selected_size = (rows == 0 && cols == 0) ? 0 : 0xFFFFFFFF;
|
|
629
|
+
selected_bits = 0;
|
|
630
|
+
|
|
631
|
+
if (rows * PDC_state.font_height <= 480 && cols * PDC_state.font_width <= 640)
|
|
632
|
+
{
|
|
633
|
+
/* Set up a ModeInfoBlock for mode 0x0012 */
|
|
634
|
+
unsigned new_rows = 480 / PDC_state.font_height;
|
|
635
|
+
unsigned new_cols = 640 / PDC_state.font_width;
|
|
636
|
+
selected_mode = 0x0012;
|
|
637
|
+
selected_size = new_rows * new_cols;
|
|
638
|
+
selected_bits = 4;
|
|
639
|
+
memset(mode_info, 0, sizeof(*mode_info));
|
|
640
|
+
mode_info->ModeAttributes = 0x1F;
|
|
641
|
+
mode_info->WinAAttributes = 0x07;
|
|
642
|
+
mode_info->WinBAttributes = 0x00;
|
|
643
|
+
mode_info->WinGranularity = 1;
|
|
644
|
+
mode_info->WinSize = 38;
|
|
645
|
+
mode_info->WinASegment = 0xA000;
|
|
646
|
+
mode_info->WinBSegment = 0;
|
|
647
|
+
mode_info->WinFuncPtr = 0;
|
|
648
|
+
mode_info->BytesPerScanLine = 80;
|
|
649
|
+
mode_info->XResolution = 640;
|
|
650
|
+
mode_info->YResolution = 480;
|
|
651
|
+
mode_info->NumberOfPlanes = 4;
|
|
652
|
+
mode_info->BitsPerPixel = 4;
|
|
653
|
+
mode_info->NumberOfBanks = 1;
|
|
654
|
+
mode_info->MemoryModel = 3;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
while (1)
|
|
658
|
+
{
|
|
659
|
+
unsigned mode;
|
|
660
|
+
struct ModeInfoBlock mode_info0;
|
|
661
|
+
unsigned new_rows, new_cols;
|
|
662
|
+
unsigned long new_size;
|
|
663
|
+
|
|
664
|
+
mode = getdosmemword(mode_addr);
|
|
665
|
+
if (mode == 0xFFFF)
|
|
666
|
+
break;
|
|
667
|
+
mode_addr += 2;
|
|
668
|
+
|
|
669
|
+
/* Query the mode info; skip if not supported */
|
|
670
|
+
if (_get_mode_info(mode, &mode_info0) < 0)
|
|
671
|
+
continue;
|
|
672
|
+
|
|
673
|
+
/* Check that the mode is acceptable: */
|
|
674
|
+
/* Supported, graphics mode, color, VGA compatible */
|
|
675
|
+
if ((mode_info0.ModeAttributes & 0x79) != 0x19)
|
|
676
|
+
continue;
|
|
677
|
+
/* Bits per pixel and memory model are acceptable */
|
|
678
|
+
switch (mode_info0.BitsPerPixel)
|
|
679
|
+
{
|
|
680
|
+
case 4:
|
|
681
|
+
if (mode_info0.MemoryModel != 3) /* Planar */
|
|
682
|
+
continue;
|
|
683
|
+
if (mode_info0.NumberOfPlanes != 4)
|
|
684
|
+
continue;
|
|
685
|
+
break;
|
|
686
|
+
|
|
687
|
+
case 8:
|
|
688
|
+
if (mode_info0.MemoryModel != 4) /* Packed pixel */
|
|
689
|
+
continue;
|
|
690
|
+
if (mode_info0.NumberOfPlanes != 1)
|
|
691
|
+
continue;
|
|
692
|
+
break;
|
|
693
|
+
|
|
694
|
+
case 15:
|
|
695
|
+
case 16:
|
|
696
|
+
case 24:
|
|
697
|
+
case 32:
|
|
698
|
+
if (mode_info0.MemoryModel != 6) /* Direct color */
|
|
699
|
+
continue;
|
|
700
|
+
if (mode_info0.NumberOfPlanes != 1)
|
|
701
|
+
continue;
|
|
702
|
+
break;
|
|
703
|
+
|
|
704
|
+
default:
|
|
705
|
+
continue;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/* At least as many rows and columns as requested */
|
|
709
|
+
new_cols = mode_info0.XResolution / PDC_state.font_width;
|
|
710
|
+
new_rows = mode_info0.YResolution / PDC_state.font_height;
|
|
711
|
+
if (new_cols < (unsigned)cols || new_rows < (unsigned)rows)
|
|
712
|
+
continue;
|
|
713
|
+
|
|
714
|
+
/* Among modes that are large enough for rows and cols, choose one
|
|
715
|
+
with the most bits per pixel. Among modes with the same pixel depth,
|
|
716
|
+
if rows == 0 and cols == 0, select the largest available size;
|
|
717
|
+
otherwise, select the smallest that can hold that many rows and
|
|
718
|
+
columns. */
|
|
719
|
+
if (mode_info0.BitsPerPixel < selected_bits)
|
|
720
|
+
continue;
|
|
721
|
+
new_size = (unsigned long)new_rows * new_cols;
|
|
722
|
+
if (mode_info0.BitsPerPixel == selected_bits)
|
|
723
|
+
{
|
|
724
|
+
if (rows == 0 && cols == 0)
|
|
725
|
+
{
|
|
726
|
+
if (new_size <= selected_size)
|
|
727
|
+
continue;
|
|
728
|
+
}
|
|
729
|
+
else
|
|
730
|
+
{
|
|
731
|
+
if (new_size >= selected_size)
|
|
732
|
+
continue;
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/* Select this mode, pending discovery of a better one */
|
|
737
|
+
selected_mode = mode;
|
|
738
|
+
selected_size = new_size;
|
|
739
|
+
selected_bits = mode_info0.BitsPerPixel;
|
|
740
|
+
*mode_info = mode_info0;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
return selected_mode;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
static int _get_mode_info(unsigned mode, struct ModeInfoBlock *mode_info)
|
|
747
|
+
{
|
|
748
|
+
struct OldModeInfo
|
|
749
|
+
{
|
|
750
|
+
unsigned mode;
|
|
751
|
+
|
|
752
|
+
unsigned short XResolution; /* horizontal resolution in pixels or characters */
|
|
753
|
+
unsigned short YResolution; /* vertical resolution in pixels or characters */
|
|
754
|
+
unsigned char BitsPerPixel; /* bits per pixel */
|
|
755
|
+
};
|
|
756
|
+
static const struct OldModeInfo old_mode_table[] =
|
|
757
|
+
{
|
|
758
|
+
{ 0x0100, 640, 480, 4 },
|
|
759
|
+
{ 0x0101, 640, 480, 8 },
|
|
760
|
+
{ 0x0102, 800, 600, 4 },
|
|
761
|
+
{ 0x0103, 800, 600, 8 },
|
|
762
|
+
{ 0x0104, 1024, 768, 4 },
|
|
763
|
+
{ 0x0105, 1024, 768, 8 },
|
|
764
|
+
{ 0x0106, 1280, 1024, 4 },
|
|
765
|
+
{ 0x0107, 1280, 1024, 8 },
|
|
766
|
+
{ 0x010D, 320, 200, 15 },
|
|
767
|
+
{ 0x010E, 320, 200, 16 },
|
|
768
|
+
{ 0x010F, 320, 200, 24 },
|
|
769
|
+
{ 0x0110, 640, 480, 15 },
|
|
770
|
+
{ 0x0111, 640, 480, 16 },
|
|
771
|
+
{ 0x0112, 640, 480, 24 },
|
|
772
|
+
{ 0x0113, 800, 600, 15 },
|
|
773
|
+
{ 0x0114, 800, 600, 16 },
|
|
774
|
+
{ 0x0115, 800, 600, 24 },
|
|
775
|
+
{ 0x0116, 1024, 768, 15 },
|
|
776
|
+
{ 0x0117, 1024, 768, 16 },
|
|
777
|
+
{ 0x0118, 1024, 768, 24 },
|
|
778
|
+
{ 0x0119, 1280, 1024, 15 },
|
|
779
|
+
{ 0x011A, 1280, 1024, 16 },
|
|
780
|
+
{ 0x011B, 1280, 1024, 24 },
|
|
781
|
+
/* sentinel */
|
|
782
|
+
{ 0, 0, 0, 0 }
|
|
783
|
+
};
|
|
784
|
+
|
|
785
|
+
#ifdef PDC_FLAT
|
|
786
|
+
int mode_info_sel = -1; /* custodial */
|
|
787
|
+
int mode_info_seg;
|
|
788
|
+
#endif
|
|
789
|
+
PDCREGS regs;
|
|
790
|
+
#if !defined(PDC_FLAT) && !defined(__WATCOMC__)
|
|
791
|
+
struct SREGS sregs;
|
|
792
|
+
#endif
|
|
793
|
+
|
|
794
|
+
memset(mode_info, 0, sizeof(*mode_info));
|
|
795
|
+
#ifdef PDC_FLAT
|
|
796
|
+
mode_info_seg = __dpmi_allocate_dos_memory(
|
|
797
|
+
(sizeof(*mode_info) + 15) / 16,
|
|
798
|
+
&mode_info_sel);
|
|
799
|
+
if (mode_info_seg < 0)
|
|
800
|
+
goto error;
|
|
801
|
+
dosmemput(mode_info, sizeof(*mode_info), mode_info_seg * 16L);
|
|
802
|
+
#endif
|
|
803
|
+
|
|
804
|
+
memset(®s, 0, sizeof(regs));
|
|
805
|
+
regs.W.ax = 0x4F01;
|
|
806
|
+
regs.W.cx = mode;
|
|
807
|
+
#ifdef PDC_FLAT
|
|
808
|
+
regs.W.di = 0;
|
|
809
|
+
regs.W.es = mode_info_seg;
|
|
810
|
+
PDCINT(0x10, regs);
|
|
811
|
+
#elif defined(__WATCOMC__)
|
|
812
|
+
regs.W.di = FP_OFF(mode_info);
|
|
813
|
+
regs.W.es = FP_SEG(mode_info);
|
|
814
|
+
PDCINT(0x10, regs);
|
|
815
|
+
#else
|
|
816
|
+
regs.W.di = FP_OFF(mode_info);
|
|
817
|
+
segread(&sregs);
|
|
818
|
+
sregs.es = FP_SEG(mode_info);
|
|
819
|
+
int86x(0x10, ®s, ®s, &sregs);
|
|
820
|
+
#endif
|
|
821
|
+
|
|
822
|
+
if (regs.W.ax != 0x004F)
|
|
823
|
+
goto error;
|
|
824
|
+
#ifdef PDC_FLAT
|
|
825
|
+
dosmemget(mode_info_seg * 16L, sizeof(*mode_info), mode_info);
|
|
826
|
+
#endif
|
|
827
|
+
if (!(mode_info->ModeAttributes & 0x0001))
|
|
828
|
+
goto error;
|
|
829
|
+
|
|
830
|
+
if (!(mode_info->ModeAttributes & 0x0002))
|
|
831
|
+
{
|
|
832
|
+
/* Older VESA BIOS that did not return certain mode properties, but
|
|
833
|
+
that has fixed mode numbers; search the table to find the right
|
|
834
|
+
mode properties */
|
|
835
|
+
|
|
836
|
+
unsigned i;
|
|
837
|
+
|
|
838
|
+
for (i = 0; old_mode_table[i].mode != 0; ++i)
|
|
839
|
+
{
|
|
840
|
+
if (mode == old_mode_table[i].mode)
|
|
841
|
+
break;
|
|
842
|
+
}
|
|
843
|
+
if (old_mode_table[i].mode == 0)
|
|
844
|
+
goto error;
|
|
845
|
+
|
|
846
|
+
mode_info->XResolution = old_mode_table[i].XResolution;
|
|
847
|
+
mode_info->YResolution = old_mode_table[i].YResolution;
|
|
848
|
+
mode_info->BitsPerPixel = old_mode_table[i].BitsPerPixel;
|
|
849
|
+
mode_info->NumberOfBanks = 1;
|
|
850
|
+
switch (mode_info->BitsPerPixel)
|
|
851
|
+
{
|
|
852
|
+
case 4:
|
|
853
|
+
mode_info->NumberOfPlanes = 4;
|
|
854
|
+
mode_info->MemoryModel = 3;
|
|
855
|
+
break;
|
|
856
|
+
|
|
857
|
+
case 8:
|
|
858
|
+
mode_info->NumberOfPlanes = 1;
|
|
859
|
+
mode_info->MemoryModel = 4;
|
|
860
|
+
break;
|
|
861
|
+
|
|
862
|
+
default:
|
|
863
|
+
mode_info->NumberOfPlanes = 1;
|
|
864
|
+
mode_info->MemoryModel = 6;
|
|
865
|
+
break;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
#ifdef PDC_FLAT
|
|
870
|
+
__dpmi_free_dos_memory(mode_info_sel);
|
|
871
|
+
#endif
|
|
872
|
+
return TRUE;
|
|
873
|
+
|
|
874
|
+
error:
|
|
875
|
+
#ifdef PDC_FLAT
|
|
876
|
+
if (mode_info_sel != -1)
|
|
877
|
+
__dpmi_free_dos_memory(mode_info_sel);
|
|
878
|
+
#endif
|
|
879
|
+
return FALSE;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/* Make a physical address mapping, to support the linear frame buffer */
|
|
883
|
+
#ifdef __DJGPP__
|
|
884
|
+
static unsigned long
|
|
885
|
+
_map_frame_buffer(unsigned long phys_addr, unsigned long size)
|
|
886
|
+
{
|
|
887
|
+
__dpmi_meminfo info;
|
|
888
|
+
int rc;
|
|
889
|
+
|
|
890
|
+
info.handle = 0;
|
|
891
|
+
info.address = phys_addr;
|
|
892
|
+
info.size = size;
|
|
893
|
+
rc = __dpmi_physical_address_mapping(&info);
|
|
894
|
+
|
|
895
|
+
return rc == 0 ? info.address : 0;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
static void
|
|
899
|
+
_unmap_frame_buffer(unsigned long phys_addr)
|
|
900
|
+
{
|
|
901
|
+
__dpmi_meminfo info;
|
|
902
|
+
|
|
903
|
+
info.handle = 0;
|
|
904
|
+
info.address = phys_addr;
|
|
905
|
+
info.size = 0;
|
|
906
|
+
__dpmi_free_physical_address_mapping(&info);
|
|
907
|
+
}
|
|
908
|
+
#elif defined(__WATCOMC__) && defined(__386__)
|
|
909
|
+
static unsigned long
|
|
910
|
+
_map_frame_buffer(unsigned long phys_addr, unsigned long size)
|
|
911
|
+
{
|
|
912
|
+
unsigned flags = 0;
|
|
913
|
+
unsigned long r_bxcx = 0;
|
|
914
|
+
|
|
915
|
+
_asm {
|
|
916
|
+
mov ecx, phys_addr;
|
|
917
|
+
mov ebx, ecx;
|
|
918
|
+
shr ebx, 16;
|
|
919
|
+
mov edi, size;
|
|
920
|
+
mov esi, edi;
|
|
921
|
+
shr esi, 16;
|
|
922
|
+
mov eax, 0x0800;
|
|
923
|
+
int 0x31;
|
|
924
|
+
pushfd;
|
|
925
|
+
pop flags;
|
|
926
|
+
shl ebx, 16;
|
|
927
|
+
mov bx, cx;
|
|
928
|
+
mov r_bxcx, ebx;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
return (flags & 1) ? 0 : r_bxcx;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
static void
|
|
935
|
+
_unmap_frame_buffer(unsigned long phys_addr)
|
|
936
|
+
{
|
|
937
|
+
_asm {
|
|
938
|
+
mov ecx, phys_addr;
|
|
939
|
+
mov ebx, ecx;
|
|
940
|
+
shr ebx, 16;
|
|
941
|
+
mov eax, 0x0801;
|
|
942
|
+
int 0x31;
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
#endif
|
|
946
|
+
|
|
947
|
+
/* DOS memory allocation routines as defined by DJGPP, for use by Watcom */
|
|
948
|
+
#if defined(__WATCOMC__) && defined(__386__)
|
|
949
|
+
static int __dpmi_allocate_dos_memory(int paras, int *sel_or_max)
|
|
950
|
+
{
|
|
951
|
+
int flags = 0, r_ax = 0, r_bx = 0, r_dx = 0;
|
|
952
|
+
|
|
953
|
+
_asm {
|
|
954
|
+
mov ebx, paras;
|
|
955
|
+
mov eax, 0x0100;
|
|
956
|
+
int 0x31;
|
|
957
|
+
pushfd;
|
|
958
|
+
pop flags;
|
|
959
|
+
mov r_ax, eax;
|
|
960
|
+
mov r_bx, ebx;
|
|
961
|
+
mov r_dx, edx;
|
|
962
|
+
}
|
|
963
|
+
if (flags & 0x01)
|
|
964
|
+
{
|
|
965
|
+
/* carry set */
|
|
966
|
+
*sel_or_max = r_bx;
|
|
967
|
+
return -1;
|
|
968
|
+
}
|
|
969
|
+
else
|
|
970
|
+
{
|
|
971
|
+
/* carry clear */
|
|
972
|
+
*sel_or_max = r_dx;
|
|
973
|
+
return r_ax;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
static int __dpmi_free_dos_memory(int sel)
|
|
978
|
+
{
|
|
979
|
+
int flags = 0;
|
|
980
|
+
|
|
981
|
+
_asm {
|
|
982
|
+
mov edx, sel;
|
|
983
|
+
mov eax, 0x0101;
|
|
984
|
+
int 0x31;
|
|
985
|
+
pushfd;
|
|
986
|
+
pop flags;
|
|
987
|
+
}
|
|
988
|
+
return (flags & 0x01) ? -1 : 0;
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
static int __dpmi_allocate_ldt_descriptors(int count)
|
|
992
|
+
{
|
|
993
|
+
int flags = 0;
|
|
994
|
+
int r_eax = 0;
|
|
995
|
+
|
|
996
|
+
_asm {
|
|
997
|
+
mov ecx, count;
|
|
998
|
+
mov eax, 0x0000;
|
|
999
|
+
int 0x31;
|
|
1000
|
+
pushfd;
|
|
1001
|
+
pop flags;
|
|
1002
|
+
mov r_eax, eax;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
return (flags & 0x01) ? -1 : r_eax;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
static int __dpmi_free_ldt_descriptor(int sel)
|
|
1009
|
+
{
|
|
1010
|
+
int flags = 0;
|
|
1011
|
+
|
|
1012
|
+
_asm {
|
|
1013
|
+
mov ebx, sel;
|
|
1014
|
+
mov eax, 0x0001;
|
|
1015
|
+
int 0x31;
|
|
1016
|
+
pushfd;
|
|
1017
|
+
pop flags;
|
|
1018
|
+
}
|
|
1019
|
+
return (flags & 0x01) ? -1 : 0;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
static int __dpmi_set_segment_base_address(int sel, unsigned long addr)
|
|
1023
|
+
{
|
|
1024
|
+
int flags = 0;
|
|
1025
|
+
|
|
1026
|
+
_asm {
|
|
1027
|
+
mov ebx, sel;
|
|
1028
|
+
mov edx, addr;
|
|
1029
|
+
mov ecx, edx;
|
|
1030
|
+
shr ecx, 16;
|
|
1031
|
+
mov eax, 0x0007;
|
|
1032
|
+
int 0x31;
|
|
1033
|
+
pushfd;
|
|
1034
|
+
pop flags;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
return (flags & 0x01) ? -1 : 0;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
static int __dpmi_set_segment_limit(int sel, unsigned long limit)
|
|
1041
|
+
{
|
|
1042
|
+
int flags = 0;
|
|
1043
|
+
|
|
1044
|
+
_asm {
|
|
1045
|
+
mov ebx, sel;
|
|
1046
|
+
mov edx, limit;
|
|
1047
|
+
mov ecx, edx;
|
|
1048
|
+
shr ecx, 16;
|
|
1049
|
+
mov eax, 0x0008;
|
|
1050
|
+
int 0x31;
|
|
1051
|
+
pushfd;
|
|
1052
|
+
pop flags;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
return (flags & 0x01) ? -1 : 0;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
static void dosmemget(unsigned long addr, size_t size, void *buf)
|
|
1059
|
+
{
|
|
1060
|
+
memcpy(buf, (const void *)addr, size);
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
static void dosmemput(const void *buf, size_t size, unsigned long addr)
|
|
1064
|
+
{
|
|
1065
|
+
memcpy((void *)addr, buf, size);
|
|
1066
|
+
}
|
|
1067
|
+
#endif
|
|
1068
|
+
|
|
1069
|
+
/*****************************************************************************
|
|
1070
|
+
* Support for a built-in 16 line font *
|
|
1071
|
+
*****************************************************************************/
|
|
1072
|
+
|
|
1073
|
+
static void _vgafont_close(bool bold);
|
|
1074
|
+
static unsigned _vgafont_char_width(bool bold);
|
|
1075
|
+
static unsigned _vgafont_char_height(bool bold);
|
|
1076
|
+
static const unsigned char *_vgafont_glyph_data(bool bold, unsigned long pos);
|
|
1077
|
+
|
|
1078
|
+
#ifdef PDC_WIDE
|
|
1079
|
+
/* This maps Unicode to CP437 */
|
|
1080
|
+
|
|
1081
|
+
static const struct
|
|
1082
|
+
{
|
|
1083
|
+
unsigned short uni;
|
|
1084
|
+
unsigned char pos;
|
|
1085
|
+
} cp437_map[] =
|
|
1086
|
+
{
|
|
1087
|
+
/* Regular mappings */
|
|
1088
|
+
{ 0x0000, 0x00 },
|
|
1089
|
+
{ 0x263A, 0x01 },
|
|
1090
|
+
{ 0x263B, 0x02 },
|
|
1091
|
+
{ 0x2665, 0x03 },
|
|
1092
|
+
{ 0x2666, 0x04 },
|
|
1093
|
+
{ 0x2663, 0x05 },
|
|
1094
|
+
{ 0x2660, 0x06 },
|
|
1095
|
+
{ 0x2022, 0x07 },
|
|
1096
|
+
{ 0x25D8, 0x08 },
|
|
1097
|
+
{ 0x25CB, 0x09 },
|
|
1098
|
+
{ 0x25D9, 0x0A },
|
|
1099
|
+
{ 0x2642, 0x0B },
|
|
1100
|
+
{ 0x2640, 0x0C },
|
|
1101
|
+
{ 0x266A, 0x0D },
|
|
1102
|
+
{ 0x266B, 0x0E },
|
|
1103
|
+
{ 0x263C, 0x0F },
|
|
1104
|
+
{ 0x25BA, 0x10 },
|
|
1105
|
+
{ 0x25C4, 0x11 },
|
|
1106
|
+
{ 0x2195, 0x12 },
|
|
1107
|
+
{ 0x203C, 0x13 },
|
|
1108
|
+
{ 0x00B6, 0x14 },
|
|
1109
|
+
{ 0x00A7, 0x15 },
|
|
1110
|
+
{ 0x25AC, 0x16 },
|
|
1111
|
+
{ 0x21A8, 0x17 },
|
|
1112
|
+
{ 0x2191, 0x18 },
|
|
1113
|
+
{ 0x2193, 0x19 },
|
|
1114
|
+
{ 0x2192, 0x1A },
|
|
1115
|
+
{ 0x2190, 0x1B },
|
|
1116
|
+
{ 0x221F, 0x1C },
|
|
1117
|
+
{ 0x2194, 0x1D },
|
|
1118
|
+
{ 0x25B2, 0x1E },
|
|
1119
|
+
{ 0x25BC, 0x1F },
|
|
1120
|
+
{ 0x2302, 0x7F },
|
|
1121
|
+
{ 0x00C7, 0x80 },
|
|
1122
|
+
{ 0x00FC, 0x81 },
|
|
1123
|
+
{ 0x00E9, 0x82 },
|
|
1124
|
+
{ 0x00E2, 0x83 },
|
|
1125
|
+
{ 0x00E4, 0x84 },
|
|
1126
|
+
{ 0x00E0, 0x85 },
|
|
1127
|
+
{ 0x00E5, 0x86 },
|
|
1128
|
+
{ 0x00E7, 0x87 },
|
|
1129
|
+
{ 0x00EA, 0x88 },
|
|
1130
|
+
{ 0x00EB, 0x89 },
|
|
1131
|
+
{ 0x00E8, 0x8A },
|
|
1132
|
+
{ 0x00EF, 0x8B },
|
|
1133
|
+
{ 0x00EE, 0x8C },
|
|
1134
|
+
{ 0x00EC, 0x8D },
|
|
1135
|
+
{ 0x00C4, 0x8E },
|
|
1136
|
+
{ 0x00C5, 0x8F },
|
|
1137
|
+
{ 0x00C9, 0x90 },
|
|
1138
|
+
{ 0x00E6, 0x91 },
|
|
1139
|
+
{ 0x00C6, 0x92 },
|
|
1140
|
+
{ 0x00F4, 0x93 },
|
|
1141
|
+
{ 0x00F6, 0x94 },
|
|
1142
|
+
{ 0x00F2, 0x95 },
|
|
1143
|
+
{ 0x00FB, 0x96 },
|
|
1144
|
+
{ 0x00F9, 0x97 },
|
|
1145
|
+
{ 0x00FF, 0x98 },
|
|
1146
|
+
{ 0x00D6, 0x99 },
|
|
1147
|
+
{ 0x00DC, 0x9A },
|
|
1148
|
+
{ 0x00A2, 0x9B },
|
|
1149
|
+
{ 0x00A3, 0x9C },
|
|
1150
|
+
{ 0x00A5, 0x9D },
|
|
1151
|
+
{ 0x20A7, 0x9E },
|
|
1152
|
+
{ 0x0192, 0x9F },
|
|
1153
|
+
{ 0x00E1, 0xA0 },
|
|
1154
|
+
{ 0x00ED, 0xA1 },
|
|
1155
|
+
{ 0x00F3, 0xA2 },
|
|
1156
|
+
{ 0x00FA, 0xA3 },
|
|
1157
|
+
{ 0x00F1, 0xA4 },
|
|
1158
|
+
{ 0x00D1, 0xA5 },
|
|
1159
|
+
{ 0x00AA, 0xA6 },
|
|
1160
|
+
{ 0x00BA, 0xA7 },
|
|
1161
|
+
{ 0x00BF, 0xA8 },
|
|
1162
|
+
{ 0x2310, 0xA9 },
|
|
1163
|
+
{ 0x00AC, 0xAA },
|
|
1164
|
+
{ 0x00BD, 0xAB },
|
|
1165
|
+
{ 0x00BC, 0xAC },
|
|
1166
|
+
{ 0x00A1, 0xAD },
|
|
1167
|
+
{ 0x00AB, 0xAE },
|
|
1168
|
+
{ 0x00BB, 0xAF },
|
|
1169
|
+
{ 0x2591, 0xB0 },
|
|
1170
|
+
{ 0x2592, 0xB1 },
|
|
1171
|
+
{ 0x2593, 0xB2 },
|
|
1172
|
+
{ 0x2502, 0xB3 },
|
|
1173
|
+
{ 0x2524, 0xB4 },
|
|
1174
|
+
{ 0x2561, 0xB5 },
|
|
1175
|
+
{ 0x2562, 0xB6 },
|
|
1176
|
+
{ 0x2556, 0xB7 },
|
|
1177
|
+
{ 0x2555, 0xB8 },
|
|
1178
|
+
{ 0x2563, 0xB9 },
|
|
1179
|
+
{ 0x2551, 0xBA },
|
|
1180
|
+
{ 0x2557, 0xBB },
|
|
1181
|
+
{ 0x255D, 0xBC },
|
|
1182
|
+
{ 0x255C, 0xBD },
|
|
1183
|
+
{ 0x255B, 0xBE },
|
|
1184
|
+
{ 0x2510, 0xBF },
|
|
1185
|
+
{ 0x2514, 0xC0 },
|
|
1186
|
+
{ 0x2534, 0xC1 },
|
|
1187
|
+
{ 0x252C, 0xC2 },
|
|
1188
|
+
{ 0x251C, 0xC3 },
|
|
1189
|
+
{ 0x2500, 0xC4 },
|
|
1190
|
+
{ 0x253C, 0xC5 },
|
|
1191
|
+
{ 0x255E, 0xC6 },
|
|
1192
|
+
{ 0x255F, 0xC7 },
|
|
1193
|
+
{ 0x255A, 0xC8 },
|
|
1194
|
+
{ 0x2554, 0xC9 },
|
|
1195
|
+
{ 0x2569, 0xCA },
|
|
1196
|
+
{ 0x2566, 0xCB },
|
|
1197
|
+
{ 0x2560, 0xCC },
|
|
1198
|
+
{ 0x2550, 0xCD },
|
|
1199
|
+
{ 0x256C, 0xCE },
|
|
1200
|
+
{ 0x2567, 0xCF },
|
|
1201
|
+
{ 0x2568, 0xD0 },
|
|
1202
|
+
{ 0x2564, 0xD1 },
|
|
1203
|
+
{ 0x2565, 0xD2 },
|
|
1204
|
+
{ 0x2559, 0xD3 },
|
|
1205
|
+
{ 0x2558, 0xD4 },
|
|
1206
|
+
{ 0x2552, 0xD5 },
|
|
1207
|
+
{ 0x2553, 0xD6 },
|
|
1208
|
+
{ 0x256B, 0xD7 },
|
|
1209
|
+
{ 0x256A, 0xD8 },
|
|
1210
|
+
{ 0x2518, 0xD9 },
|
|
1211
|
+
{ 0x250C, 0xDA },
|
|
1212
|
+
{ 0x2588, 0xDB },
|
|
1213
|
+
{ 0x2584, 0xDC },
|
|
1214
|
+
{ 0x258C, 0xDD },
|
|
1215
|
+
{ 0x2590, 0xDE },
|
|
1216
|
+
{ 0x2580, 0xDF },
|
|
1217
|
+
{ 0x03B1, 0xE0 },
|
|
1218
|
+
{ 0x00DF, 0xE1 },
|
|
1219
|
+
{ 0x0393, 0xE2 },
|
|
1220
|
+
{ 0x03C0, 0xE3 },
|
|
1221
|
+
{ 0x03A3, 0xE4 },
|
|
1222
|
+
{ 0x03C3, 0xE5 },
|
|
1223
|
+
{ 0x00B5, 0xE6 },
|
|
1224
|
+
{ 0x03C4, 0xE7 },
|
|
1225
|
+
{ 0x03A6, 0xE8 },
|
|
1226
|
+
{ 0x0398, 0xE9 },
|
|
1227
|
+
{ 0x03A9, 0xEA },
|
|
1228
|
+
{ 0x03B4, 0xEB },
|
|
1229
|
+
{ 0x221E, 0xEC },
|
|
1230
|
+
{ 0x03C6, 0xED },
|
|
1231
|
+
{ 0x03B5, 0xEE },
|
|
1232
|
+
{ 0x2229, 0xEF },
|
|
1233
|
+
{ 0x2261, 0xF0 },
|
|
1234
|
+
{ 0x00B1, 0xF1 },
|
|
1235
|
+
{ 0x2265, 0xF2 },
|
|
1236
|
+
{ 0x2264, 0xF3 },
|
|
1237
|
+
{ 0x2320, 0xF4 },
|
|
1238
|
+
{ 0x2321, 0xF5 },
|
|
1239
|
+
{ 0x00F7, 0xF6 },
|
|
1240
|
+
{ 0x2248, 0xF7 },
|
|
1241
|
+
{ 0x00B0, 0xF8 },
|
|
1242
|
+
{ 0x2219, 0xF9 },
|
|
1243
|
+
{ 0x00B7, 0xFA },
|
|
1244
|
+
{ 0x221A, 0xFB },
|
|
1245
|
+
{ 0x207F, 0xFC },
|
|
1246
|
+
{ 0x00B2, 0xFD },
|
|
1247
|
+
{ 0x25A0, 0xFE },
|
|
1248
|
+
{ 0x00A0, 0xFF },
|
|
1249
|
+
/* Extra mappings so ACS_* will work */
|
|
1250
|
+
{ 0x00A4, 0x0F },
|
|
1251
|
+
{ 0x2260, 0xD8 },
|
|
1252
|
+
{ 0x23BA, 0x2D },
|
|
1253
|
+
{ 0x23BB, 0x2D },
|
|
1254
|
+
{ 0x23BC, 0x2D },
|
|
1255
|
+
{ 0x23BD, 0x5F }
|
|
1256
|
+
};
|
|
1257
|
+
|
|
1258
|
+
#define NO_CHAR 0xFE
|
|
1259
|
+
static unsigned char pages[10][256];
|
|
1260
|
+
static unsigned char *map[256];
|
|
1261
|
+
|
|
1262
|
+
static void _build_rom_map(void)
|
|
1263
|
+
{
|
|
1264
|
+
unsigned page = 0;
|
|
1265
|
+
unsigned i;
|
|
1266
|
+
|
|
1267
|
+
memset(pages, NO_CHAR, sizeof(pages));
|
|
1268
|
+
for (i = 0; i < 256; ++i)
|
|
1269
|
+
map[i] = NULL;
|
|
1270
|
+
/* Map ASCII as identity */
|
|
1271
|
+
map[0] = pages[page++];
|
|
1272
|
+
for (i = 0x20; i <= 0x7E; ++i)
|
|
1273
|
+
map[0][i] = i;
|
|
1274
|
+
/* Map according to the list */
|
|
1275
|
+
for (i = 0; i < sizeof(cp437_map)/sizeof(cp437_map[0]); ++i)
|
|
1276
|
+
{
|
|
1277
|
+
unsigned cp = cp437_map[i].uni;
|
|
1278
|
+
unsigned t1 = cp >> 8;
|
|
1279
|
+
unsigned t2 = cp & 0xFF;
|
|
1280
|
+
if (map[t1] == NULL)
|
|
1281
|
+
{
|
|
1282
|
+
if (page >= sizeof(pages)/sizeof(pages[0]))
|
|
1283
|
+
{
|
|
1284
|
+
fprintf(stderr, "Need to adjust size of pages array\n)");
|
|
1285
|
+
abort();
|
|
1286
|
+
}
|
|
1287
|
+
map[t1] = pages[page++];
|
|
1288
|
+
}
|
|
1289
|
+
map[t1][t2] = cp437_map[i].pos;
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
static unsigned char _unicode_to_cp437(unsigned long cp)
|
|
1294
|
+
{
|
|
1295
|
+
unsigned t1, t2;
|
|
1296
|
+
|
|
1297
|
+
if (cp > 0xFFFF)
|
|
1298
|
+
return NO_CHAR;
|
|
1299
|
+
t1 = cp >> 8;
|
|
1300
|
+
t2 = cp & 0xFF;
|
|
1301
|
+
if (map[t1] == NULL)
|
|
1302
|
+
return NO_CHAR;
|
|
1303
|
+
return map[t1][t2];
|
|
1304
|
+
}
|
|
1305
|
+
#endif
|
|
1306
|
+
|
|
1307
|
+
static int _vgafont_open(void)
|
|
1308
|
+
{
|
|
1309
|
+
#ifdef PDC_WIDE
|
|
1310
|
+
_build_rom_map();
|
|
1311
|
+
#endif
|
|
1312
|
+
PDC_state.font_close = _vgafont_close;
|
|
1313
|
+
PDC_state.font_char_width = _vgafont_char_width;
|
|
1314
|
+
PDC_state.font_char_height = _vgafont_char_height;
|
|
1315
|
+
PDC_state.font_glyph_data = _vgafont_glyph_data;
|
|
1316
|
+
return 0;
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
static void _vgafont_close(bool bold)
|
|
1320
|
+
{
|
|
1321
|
+
INTENTIONALLY_UNUSED_PARAMETER(bold);
|
|
1322
|
+
/* no operation */
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
static unsigned _vgafont_char_width(bool bold)
|
|
1326
|
+
{
|
|
1327
|
+
INTENTIONALLY_UNUSED_PARAMETER(bold);
|
|
1328
|
+
return 8;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
static unsigned _vgafont_char_height(bool bold)
|
|
1332
|
+
{
|
|
1333
|
+
INTENTIONALLY_UNUSED_PARAMETER(bold);
|
|
1334
|
+
return 14;
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
static const unsigned char *_vgafont_glyph_data(bool bold, unsigned long pos)
|
|
1338
|
+
{
|
|
1339
|
+
unsigned pos437;
|
|
1340
|
+
INTENTIONALLY_UNUSED_PARAMETER(bold);
|
|
1341
|
+
#ifdef PDC_WIDE
|
|
1342
|
+
pos437 = _unicode_to_cp437(pos);
|
|
1343
|
+
#else
|
|
1344
|
+
pos437 = pos & 0xFF;
|
|
1345
|
+
#endif
|
|
1346
|
+
return font_bytes + pos437*14;
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
/*****************************************************************************
|
|
1350
|
+
* Support for PSF fonts *
|
|
1351
|
+
*****************************************************************************/
|
|
1352
|
+
|
|
1353
|
+
/* PSF specification from:
|
|
1354
|
+
https://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html
|
|
1355
|
+
Only PSF version 2 is supported. */
|
|
1356
|
+
|
|
1357
|
+
#define PSF2_MAGIC "\x72\xb5\x4A\x86"
|
|
1358
|
+
|
|
1359
|
+
/* bits used in flags */
|
|
1360
|
+
#define PSF2_HAS_UNICODE_TABLE 0x01
|
|
1361
|
+
|
|
1362
|
+
/* max version recognized so far */
|
|
1363
|
+
#define PSF2_MAXVERSION 0
|
|
1364
|
+
|
|
1365
|
+
/* UTF8 separators */
|
|
1366
|
+
#define PSF2_SEPARATOR 0xFF
|
|
1367
|
+
#define PSF2_STARTSEQ 0xFE
|
|
1368
|
+
|
|
1369
|
+
struct psf2_header
|
|
1370
|
+
{
|
|
1371
|
+
unsigned char magic[4];
|
|
1372
|
+
unsigned long version;
|
|
1373
|
+
unsigned long headersize; /* offset of bitmaps in file */
|
|
1374
|
+
unsigned long flags;
|
|
1375
|
+
unsigned long length; /* number of glyphs */
|
|
1376
|
+
unsigned long charsize; /* number of bytes for each character */
|
|
1377
|
+
unsigned long height, width; /* max dimensions of glyphs */
|
|
1378
|
+
/* charsize = height * ((width + 7) / 8) */
|
|
1379
|
+
};
|
|
1380
|
+
|
|
1381
|
+
/* Information about a single font */
|
|
1382
|
+
struct font_data
|
|
1383
|
+
{
|
|
1384
|
+
struct psf2_header header;
|
|
1385
|
+
unsigned char **glyphs; /* Bits from the font */
|
|
1386
|
+
size_t **map[17]; /* Map code points to font positions */
|
|
1387
|
+
unsigned char *blank; /* Default glyph */
|
|
1388
|
+
};
|
|
1389
|
+
|
|
1390
|
+
static struct font_data psf_fonts[2]; /* normal and bold */
|
|
1391
|
+
|
|
1392
|
+
static void _psf_font_close(bool bold);
|
|
1393
|
+
static unsigned _psf_font_char_width(bool bold);
|
|
1394
|
+
static unsigned _psf_font_char_height(bool bold);
|
|
1395
|
+
static const unsigned char *_psf_font_glyph_data(
|
|
1396
|
+
bool bold, unsigned long codepoint);
|
|
1397
|
+
static void _psf_font_do_close(struct font_data *fdata);
|
|
1398
|
+
static long _psf_font_read_utf8(FILE *fp);
|
|
1399
|
+
static int _psf_font_map_char(struct font_data *fdata, long codepoint,
|
|
1400
|
+
size_t pos);
|
|
1401
|
+
static const unsigned char *_psf_font_do_glyph_data(
|
|
1402
|
+
struct font_data *fdata, long codepoint);
|
|
1403
|
+
|
|
1404
|
+
/* Open the font with the given file name, as the normal or the bold font.
|
|
1405
|
+
* Return 0 if OK, -1 on any error. */
|
|
1406
|
+
static int _psf_font_open(const char *name, bool bold)
|
|
1407
|
+
{
|
|
1408
|
+
struct font_data *fdata = &psf_fonts[bold != 0];
|
|
1409
|
+
FILE *fp;
|
|
1410
|
+
size_t size;
|
|
1411
|
+
size_t pos;
|
|
1412
|
+
|
|
1413
|
+
memset(fdata, 0, sizeof(*fdata));
|
|
1414
|
+
|
|
1415
|
+
fp = fopen(name, "rb");
|
|
1416
|
+
if (fp == NULL)
|
|
1417
|
+
goto error;
|
|
1418
|
+
|
|
1419
|
+
/* Read and check the header */
|
|
1420
|
+
size = fread(&fdata->header, sizeof(fdata->header), 1, fp);
|
|
1421
|
+
if (size != 1)
|
|
1422
|
+
goto error;
|
|
1423
|
+
if (memcmp(fdata->header.magic, PSF2_MAGIC, 4) != 0)
|
|
1424
|
+
goto error;
|
|
1425
|
+
if (fdata->header.charsize < fdata->header.height * ((fdata->header.width + 7) / 8))
|
|
1426
|
+
goto error;
|
|
1427
|
+
|
|
1428
|
+
/* Read the bitmap data */
|
|
1429
|
+
if (fdata->header.length != (size_t)fdata->header.length)
|
|
1430
|
+
goto error; /* only possible if size_t has less than four bytes */
|
|
1431
|
+
fdata->glyphs = calloc(fdata->header.length, sizeof(fdata->glyphs[0]));
|
|
1432
|
+
if (fdata->glyphs == NULL)
|
|
1433
|
+
goto error;
|
|
1434
|
+
for (pos = 0; pos < fdata->header.length; ++pos)
|
|
1435
|
+
{
|
|
1436
|
+
fdata->glyphs[pos] = malloc(fdata->header.charsize);
|
|
1437
|
+
if (fdata->glyphs[pos] == NULL)
|
|
1438
|
+
goto error;
|
|
1439
|
+
size = fread(fdata->glyphs[pos], 1, fdata->header.charsize, fp);
|
|
1440
|
+
if (size != fdata->header.charsize)
|
|
1441
|
+
goto error;
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
/* Read the Unicode mapping if one is indicated */
|
|
1445
|
+
if (fdata->header.flags & PSF2_HAS_UNICODE_TABLE)
|
|
1446
|
+
{
|
|
1447
|
+
pos = 0;
|
|
1448
|
+
while (1)
|
|
1449
|
+
{
|
|
1450
|
+
long codepoint = _psf_font_read_utf8(fp);
|
|
1451
|
+
if (codepoint == -PSF2_STARTSEQ)
|
|
1452
|
+
{
|
|
1453
|
+
/* Introduces a sequence of combining characters; these are
|
|
1454
|
+
* not supported */
|
|
1455
|
+
do
|
|
1456
|
+
{
|
|
1457
|
+
codepoint = _psf_font_read_utf8(fp);
|
|
1458
|
+
} while (codepoint != -1 && codepoint != -PSF2_SEPARATOR);
|
|
1459
|
+
}
|
|
1460
|
+
if (codepoint == -PSF2_SEPARATOR)
|
|
1461
|
+
{
|
|
1462
|
+
++pos; /* next glyph position */
|
|
1463
|
+
}
|
|
1464
|
+
else if (codepoint < 0)
|
|
1465
|
+
{
|
|
1466
|
+
break; /* end of file or error */
|
|
1467
|
+
}
|
|
1468
|
+
else
|
|
1469
|
+
{
|
|
1470
|
+
/* single code point mapped to the current position */
|
|
1471
|
+
if (pos >= fdata->header.length)
|
|
1472
|
+
goto error;
|
|
1473
|
+
if (_psf_font_map_char(fdata, codepoint, pos) < 0)
|
|
1474
|
+
goto error;
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
/* Provide a blank glyph for nonexistent mappings */
|
|
1480
|
+
if (_psf_font_do_glyph_data(fdata, 0xFFFD) == NULL)
|
|
1481
|
+
{
|
|
1482
|
+
fdata->blank = calloc(1, fdata->header.charsize);
|
|
1483
|
+
if (fdata->blank == NULL)
|
|
1484
|
+
goto error;
|
|
1485
|
+
}
|
|
1486
|
+
else
|
|
1487
|
+
{
|
|
1488
|
+
fdata->blank = NULL;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
fclose(fp);
|
|
1492
|
+
PDC_state.font_close = _psf_font_close;
|
|
1493
|
+
PDC_state.font_char_width = _psf_font_char_width;
|
|
1494
|
+
PDC_state.font_char_height = _psf_font_char_height;
|
|
1495
|
+
PDC_state.font_glyph_data = _psf_font_glyph_data;
|
|
1496
|
+
return 0;
|
|
1497
|
+
|
|
1498
|
+
error:
|
|
1499
|
+
if (fp != NULL)
|
|
1500
|
+
fclose(fp);
|
|
1501
|
+
_psf_font_do_close(fdata);
|
|
1502
|
+
return -1;
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
/* Close the normal or the bold font */
|
|
1506
|
+
static void _psf_font_close(bool bold)
|
|
1507
|
+
{
|
|
1508
|
+
_psf_font_do_close(&psf_fonts[bold != 0]);
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
/* Free memory associated with a font */
|
|
1512
|
+
static void _psf_font_do_close(struct font_data *fdata)
|
|
1513
|
+
{
|
|
1514
|
+
size_t pos;
|
|
1515
|
+
unsigned i, j;
|
|
1516
|
+
|
|
1517
|
+
/* Free the glyph data */
|
|
1518
|
+
if (fdata->glyphs != NULL)
|
|
1519
|
+
{
|
|
1520
|
+
for (pos = 0; pos < fdata->header.length; ++pos)
|
|
1521
|
+
free(fdata->glyphs[pos]);
|
|
1522
|
+
free(fdata->glyphs);
|
|
1523
|
+
fdata->glyphs = NULL;
|
|
1524
|
+
}
|
|
1525
|
+
free(fdata->blank);
|
|
1526
|
+
fdata->blank = NULL;
|
|
1527
|
+
|
|
1528
|
+
/* Free the Unicode mapping */
|
|
1529
|
+
for (i = 0; i < 17; ++i)
|
|
1530
|
+
{
|
|
1531
|
+
if (fdata->map[i] != NULL)
|
|
1532
|
+
{
|
|
1533
|
+
for (j = 0; j < 256; ++j)
|
|
1534
|
+
free(fdata->map[i][j]);
|
|
1535
|
+
free(fdata->map[i]);
|
|
1536
|
+
fdata->map[i] = NULL;
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
/* Local function to read a UTF-8 sequence or a separator from the font file */
|
|
1542
|
+
static long _psf_font_read_utf8(FILE *fp)
|
|
1543
|
+
{
|
|
1544
|
+
int byte;
|
|
1545
|
+
long codepoint;
|
|
1546
|
+
long min;
|
|
1547
|
+
unsigned count;
|
|
1548
|
+
|
|
1549
|
+
/* Read first byte */
|
|
1550
|
+
byte = fgetc(fp);
|
|
1551
|
+
if (byte == EOF)
|
|
1552
|
+
return -1;
|
|
1553
|
+
if (byte == PSF2_STARTSEQ || byte == PSF2_SEPARATOR)
|
|
1554
|
+
return -byte; /* markers meaningful to the font format */
|
|
1555
|
+
if (byte < 0x80)
|
|
1556
|
+
{
|
|
1557
|
+
return byte; /* ASCII */
|
|
1558
|
+
}
|
|
1559
|
+
else if (byte < 0xC2)
|
|
1560
|
+
{
|
|
1561
|
+
return -1; /* Not valid as first byte */
|
|
1562
|
+
}
|
|
1563
|
+
else if (byte < 0xE0)
|
|
1564
|
+
{
|
|
1565
|
+
/* Two byte character */
|
|
1566
|
+
codepoint = byte & 0x1F;
|
|
1567
|
+
min = 0x80;
|
|
1568
|
+
count = 1;
|
|
1569
|
+
}
|
|
1570
|
+
else if (byte < 0xF0)
|
|
1571
|
+
{
|
|
1572
|
+
/* Three byte character */
|
|
1573
|
+
codepoint = byte & 0x0F;
|
|
1574
|
+
min = 0x800;
|
|
1575
|
+
count = 2;
|
|
1576
|
+
}
|
|
1577
|
+
else if (byte < 0xF5)
|
|
1578
|
+
{
|
|
1579
|
+
/* Four byte character */
|
|
1580
|
+
codepoint = byte & 0x07;
|
|
1581
|
+
min = 0x10000;
|
|
1582
|
+
count = 3;
|
|
1583
|
+
}
|
|
1584
|
+
else
|
|
1585
|
+
{
|
|
1586
|
+
return -1; /* Not valid as first byte */
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1589
|
+
/* Read continuation bytes */
|
|
1590
|
+
while (count != 0)
|
|
1591
|
+
{
|
|
1592
|
+
byte = fgetc(fp);
|
|
1593
|
+
if (byte < 0x80 || 0xBF < byte)
|
|
1594
|
+
return -1;
|
|
1595
|
+
codepoint = (codepoint << 6) | (byte & 0x3F);
|
|
1596
|
+
--count;
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
/* Check for overlong, surrogate, out of range */
|
|
1600
|
+
if (codepoint < min || codepoint > 0x10FFFF
|
|
1601
|
+
|| (0xD800 <= codepoint && codepoint <= 0xDFFF))
|
|
1602
|
+
return -1;
|
|
1603
|
+
|
|
1604
|
+
return codepoint;
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1607
|
+
/* Local function to establish a mapping from a codepoint to a font position */
|
|
1608
|
+
static int _psf_font_map_char(struct font_data *fdata, long codepoint, size_t pos)
|
|
1609
|
+
{
|
|
1610
|
+
unsigned t1 = codepoint >> 16;
|
|
1611
|
+
unsigned t2 = (codepoint >> 8) & 0xFF;
|
|
1612
|
+
unsigned t3 = codepoint & 0xFF;
|
|
1613
|
+
unsigned i;
|
|
1614
|
+
|
|
1615
|
+
if (fdata->map[t1] == NULL)
|
|
1616
|
+
{
|
|
1617
|
+
fdata->map[t1] = calloc(256, sizeof(fdata->map[0][0]));
|
|
1618
|
+
if (fdata->map[t1] == NULL)
|
|
1619
|
+
return -1;
|
|
1620
|
+
}
|
|
1621
|
+
if (fdata->map[t1][t2] == NULL)
|
|
1622
|
+
{
|
|
1623
|
+
fdata->map[t1][t2] = malloc(256 * sizeof(fdata->map[0][0][0]));
|
|
1624
|
+
if (fdata->map[t1][t2] == NULL)
|
|
1625
|
+
return -1;
|
|
1626
|
+
for (i = 0; i < 256; ++i)
|
|
1627
|
+
fdata->map[t1][t2][i] = (size_t)-1;
|
|
1628
|
+
}
|
|
1629
|
+
fdata->map[t1][t2][t3] = pos;
|
|
1630
|
+
return 0;
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
/* Return the character width in pixels */
|
|
1634
|
+
static unsigned _psf_font_char_width(bool bold)
|
|
1635
|
+
{
|
|
1636
|
+
return psf_fonts[bold != 0].header.width;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
/* Return the character height in pixels */
|
|
1640
|
+
static unsigned _psf_font_char_height(bool bold)
|
|
1641
|
+
{
|
|
1642
|
+
return psf_fonts[bold != 0].header.height;
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
/* Return the glyph data as read from the file */
|
|
1646
|
+
/* Never returns NULL. If the codepoint is not mapped, returns the mapping
|
|
1647
|
+
* for U+FFFD if that exists, or the blank glyph otherwise */
|
|
1648
|
+
static const unsigned char *_psf_font_glyph_data(
|
|
1649
|
+
bool bold, unsigned long codepoint)
|
|
1650
|
+
{
|
|
1651
|
+
struct font_data *fdata = &psf_fonts[bold != 0];
|
|
1652
|
+
const unsigned char *bitmap;
|
|
1653
|
+
|
|
1654
|
+
bitmap = _psf_font_do_glyph_data(fdata, codepoint);
|
|
1655
|
+
if (bitmap == NULL)
|
|
1656
|
+
bitmap = _psf_font_do_glyph_data(fdata, 0xFFFD);
|
|
1657
|
+
if (bitmap == NULL)
|
|
1658
|
+
bitmap = fdata->blank;
|
|
1659
|
+
|
|
1660
|
+
return bitmap;
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
/* Return the glyph data as read from the file */
|
|
1664
|
+
/* Local function used by PDC_psf_glyph_data; can return NULL */
|
|
1665
|
+
static const unsigned char *_psf_font_do_glyph_data(
|
|
1666
|
+
struct font_data *fdata, long codepoint)
|
|
1667
|
+
{
|
|
1668
|
+
unsigned t1 = codepoint >> 16;
|
|
1669
|
+
unsigned t2 = (codepoint >> 8) & 0xFF;
|
|
1670
|
+
unsigned t3 = codepoint & 0xFF;
|
|
1671
|
+
const unsigned char *bitmap = NULL;
|
|
1672
|
+
size_t pos;
|
|
1673
|
+
|
|
1674
|
+
if (t1 <= 17 && fdata->map[t1] != NULL && fdata->map[t1][t2] != NULL)
|
|
1675
|
+
{
|
|
1676
|
+
pos = fdata->map[t1][t2][t3];
|
|
1677
|
+
if (pos != (size_t)-1)
|
|
1678
|
+
bitmap = fdata->glyphs[pos];
|
|
1679
|
+
}
|
|
1680
|
+
return bitmap;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
/* PDC_set_resize_limits( ) has no effect in DOSVGA,
|
|
1684
|
+
and probably never will. */
|
|
1685
|
+
|
|
1686
|
+
void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines,
|
|
1687
|
+
const int new_min_cols, const int new_max_cols)
|
|
1688
|
+
{
|
|
1689
|
+
INTENTIONALLY_UNUSED_PARAMETER(new_min_lines);
|
|
1690
|
+
INTENTIONALLY_UNUSED_PARAMETER(new_max_lines);
|
|
1691
|
+
INTENTIONALLY_UNUSED_PARAMETER(new_min_cols);
|
|
1692
|
+
INTENTIONALLY_UNUSED_PARAMETER(new_max_cols);
|
|
1693
|
+
}
|